A PHP Error was encountered

Severity: 8192

Message: Function create_function() is deprecated

Filename: geshi/geshi.php

Line Number: 4698

Backtrace:

File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/libraries/geshi/geshi.php
Line: 4698
Function: _error_handler

File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/libraries/geshi/geshi.php
Line: 4646
Function: _optimize_regexp_list_tokens_to_string

File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/libraries/geshi/geshi.php
Line: 1655
Function: optimize_regexp_list

File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/libraries/geshi/geshi.php
Line: 2029
Function: optimize_keyword_group

File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/libraries/geshi/geshi.php
Line: 2168
Function: build_parse_cache

File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/libraries/Process.php
Line: 45
Function: parse_code

File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/models/Pastes.php
Line: 517
Function: syntax

File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/controllers/Main.php
Line: 693
Function: getPaste

File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/index.php
Line: 315
Function: require_once

diff - Stikked
From Bitty Lechwe, 9 Years ago, written in Diff-output.
Embed
  1. diff --git a/app/code/community/Shopgo/GTM/Block/Gtm.php b/app/code/community/Shopgo/GTM/Block/Gtm.php
  2. index 0d4b14b..e52683a 100644
  3. --- a/app/code/community/Shopgo/GTM/Block/Gtm.php
  4. +++ b/app/code/community/Shopgo/GTM/Block/Gtm.php
  5. @@ -216,14 +216,6 @@ class Shopgo_GTM_Block_Gtm extends Mage_Core_Block_Template
  6.                 // visitorLoginState
  7.                 $this->data['visitorLoginState'] = ($customer->isLoggedIn()) ? 'Logged in' : 'Logged out';
  8.  
  9. -               $utm_source = $this->getRequest()->getParam('utm_source');
  10. -               if(!empty($utm_source)) {
  11. -                       setcookie('utm_source', $this->getRequest()->getParam('utm_source'));
  12. -                       $this->data['utm_source'] = $utm_source;
  13. -               } elseif(isset($_COOKIE['utm_source']) && !empty($_COOKIE['utm_source'])) {
  14. -                       $this->data['utm_source'] = $_COOKIE['utm_source'];
  15. -               }
  16. -
  17.                 // visitorType
  18.                 /*$this->data['visitorType'] = (string)Mage::getModel('customer/group')->load($customer->getCustomerGroupId())->getCode();
  19.  
  20. @@ -555,12 +547,4 @@ class Shopgo_GTM_Block_Gtm extends Mage_Core_Block_Template
  21.         {
  22.                 return parent::_toHtml();
  23.         }
  24. -      
  25. -       public function getAjaxCartPageData() {
  26. -               $this->_getCartPageData();
  27. -               $this->_getVisitorData();
  28. -               return "<script>setLayerData('AjaxCart', 'Cart Page', 'Cart Page', 'Cart Page'); dataLayer.push(" . json_encode($this->data) . ");</script>\n\n";
  29. -       }
  30. -
  31. -
  32.  }
  33. diff --git a/app/code/community/TM/SuggestPage/etc/config.xml b/app/code/community/TM/SuggestPage/etc/config.xml
  34. index 22e6041..93d5590 100644
  35. --- a/app/code/community/TM/SuggestPage/etc/config.xml
  36. +++ b/app/code/community/TM/SuggestPage/etc/config.xml
  37. @@ -35,6 +35,15 @@
  38.               </updates>
  39.          </layout>
  40.          <events>
  41. +            <checkout_cart_add_product_complete>
  42. +                <observers>
  43. +                    <suggestpage>
  44. +                        <type>model</type>
  45. +                        <class>suggestpage/observer</class>
  46. +                        <method>addToCartComplete</method>
  47. +                    </suggestpage>
  48. +                </observers>
  49. +            </checkout_cart_add_product_complete>
  50.              <ajaxpro_load_layout_before>
  51.                  <observers>
  52.                      <suggestpage>
  53. diff --git a/app/code/local/Biztech/Trackorder/Block/Trackorder.php b/app/code/local/Biztech/Trackorder/Block/Trackorder.php
  54. index 7bba549..b3bb4e0 100644
  55. --- a/app/code/local/Biztech/Trackorder/Block/Trackorder.php
  56. +++ b/app/code/local/Biztech/Trackorder/Block/Trackorder.php
  57. @@ -1,35 +1,34 @@
  58.  <?php
  59.  class Biztech_Trackorder_Block_Trackorder extends Mage_Core_Block_Template
  60.  {
  61. -    public function _prepareLayout()
  62. +       public function _prepareLayout()
  63.      {
  64. -        return parent::_prepareLayout();
  65. +               return parent::_prepareLayout();
  66.      }
  67.      
  68. -    public function getTrackorder()    
  69. -    {
  70. +     public function getTrackorder()    
  71. +     {
  72.          if (!$this->hasData('trackorder')) {
  73.              $this->setData('trackorder', Mage::registry('current_order'));
  74.          }
  75.          return $this->getData('trackorder');
  76. +        
  77.      }
  78. -
  79.      public function getTrackInfo($order)
  80.      {
  81.          $shipTrack = array();
  82.          if ($order) {
  83.              $shipments = $order->getShipmentsCollection();
  84. -
  85. -            foreach ($shipments as $shipment) {
  86. +            foreach ($shipments as $shipment){
  87.                  $increment_id = $shipment->getIncrementId();
  88. -                $tracks = $shipment->getTracksCollection()->getData();
  89. -                $shipTrack[$increment_id] = $tracks;
  90. +                $tracks = $shipment->getTracksCollection();
  91.  
  92. -                foreach($shipment->getAllItems() as $products) {
  93. -                    $shipTrack[$increment_id]['products'][] = $products->getData();
  94. +                $trackingInfos=array();
  95. +                foreach ($tracks as $track){
  96. +                    $trackingInfos[] = $track->getNumberDetail();
  97.                  }
  98. +                $shipTrack[$increment_id] = $trackingInfos;
  99.              }
  100. -
  101.          }
  102.          return $shipTrack;
  103.      }
  104. diff --git a/app/code/local/Biztech/Trackorder/Helper/Data.php b/app/code/local/Biztech/Trackorder/Helper/Data.php
  105. index 1a1bce1..ee9d35e 100644
  106. --- a/app/code/local/Biztech/Trackorder/Helper/Data.php
  107. +++ b/app/code/local/Biztech/Trackorder/Helper/Data.php
  108. @@ -1,74 +1,9 @@
  109.  <?php
  110.  
  111. -class Biztech_Trackorder_Helper_Data extends Mage_Core_Helper_Abstract
  112. -{
  113. -       private $courierUrls = array();
  114. -
  115. -       public function getLoggedInUserEmail() {
  116. -               $customer = Mage::getSingleton('customer/session');
  117. -
  118. -               if($customer->isLoggedIn()) {
  119. -                       return $customer->getCustomer()->getEmail();
  120. -               }
  121. -       }
  122. -
  123. -    public function getTrackorderUrl()
  124. -    {
  125. -        return $this->_getUrl('trackorder/index');
  126. -    }
  127. -
  128. -    public function getViewOrderUrl($orderId = 0)
  129. +    class Biztech_Trackorder_Helper_Data extends Mage_Core_Helper_Abstract
  130.      {
  131. -        return $this->_getUrl('sales/order/view/', array('order_id'=>$orderId));
  132. -    }
  133. -
  134. -    public function getTrackUrl($courierKey=null, $trackNumber = '') {
  135. -       $courierKey = preg_replace('/\s+/', '_', trim(strtolower($courierKey)));
  136. -       $this->courierUrls = array(
  137. -               'delhivery' => "http://track.delhivery.com/p/TRACK_NUMBER",
  138. -                       'delhivery.com' => "http://track.delhivery.com/p/TRACK_NUMBER",
  139. -                       'ecom_express' => "http://billing.ecomexpress.in/track_me/multipleawb_open/?order=&news_go=track+now&awb=TRACK_NUMBER",
  140. -                       'dhl' => "http://www.dhl.co.in/en/express/tracking.html?brand=DHL&AWB=TRACK_NUMBER",
  141. -                       'gojavas' => "http://gojavas.com/docket_details.php?pop=docno&docno=TRACK_NUMBER",
  142. -                       'federal_express' => "https://www.fedex.com/apps/fedextrack/?cntry_code=in&tracknumbers=TRACK_NUMBER",
  143. -                       'fedex_so' => "https://www.fedex.com/apps/fedextrack/?cntry_code=in&tracknumbers=TRACK_NUMBER",
  144. -                       'fedex_po' => "https://www.fedex.com/apps/fedextrack/?cntry_code=in&tracknumbers=TRACK_NUMBER",
  145. -                       'fedex_eco' => "https://www.fedex.com/apps/fedextrack/?cntry_code=in&tracknumbers=TRACK_NUMBER",
  146. -                       'fedex' => "https://www.fedex.com/apps/fedextrack/?cntry_code=in&tracknumbers=TRACK_NUMBER",
  147. -                       'xpressbees' => "http://www.xpressbees.com/ShipmentStatus.aspx",
  148. -                       'blue_dart' => "http://www.bluedart.com/maintracking.html",
  149. -                       'bluedart_surface' => "https://www.bluedart.com/dartsurfaceline.html",
  150. -                       'first_flight' => "http://firstflight.net/",
  151. -                       'bmp' => "http://www.bookmypacket.com/staticpages/tracking",
  152. -                       'bmp_surface' => "http://www.bookmypacket.com/staticpages/tracking",
  153. -                       'gati' => "http://www.gatikwe.com/track-your-shipment",
  154. -                       'dtdc' => "http://dtdc.com/tracking/tracking.asp",
  155. -                       'safeexpress' => "http://www.safexpress.com/faces/TrackShipment.jspx",
  156. -                       'united_states_postal_service' => "https://www.usps.com/",
  157. -                       'swastik_couriers' => "http://swastiklogistics.in/track-status.html",
  158. -                       'eflit' => "http://eflitlogistics.com/",
  159. -               );
  160. -
  161. -               if(in_array($courierKey, array_keys($this->courierUrls))) {
  162. -                       return str_replace("TRACK_NUMBER", $trackNumber, $this->courierUrls[$courierKey]);
  163. -               }
  164. -
  165. -               return false;
  166. -    }
  167. -
  168. -    public function orderStatus($status = null) {
  169. -       $arrStatus = array(
  170. -               'pending' => 'Order Placed',
  171. -                       'processing' => 'Order Confirmed',
  172. -                       'canceled' => 'Order is Cancelled',
  173. -                       'complete' => 'Order is Completed',
  174. -                       'confirm' => 'Order is Confirmed',
  175. -                       'fulfillable' => 'Order Confirmed by Seller',
  176. -                       'partially_fulfillable' => 'Few Items Confirmed by Seller',
  177. -                       'dispatched' => 'Order Shipped',
  178. -                       'delivered' => 'Order Delivered'
  179. -       );
  180. -
  181. -       return isset($arrStatus[$status])?$arrStatus[$status]:'';
  182. -    }
  183. +        public function getTrackorderUrl()
  184. +        {
  185. +            return $this->_getUrl('trackorder/index');
  186. +        }
  187.  }
  188. \ No newline at end of file
  189. diff --git a/app/code/local/Biztech/Trackorder/controllers/IndexController.php b/app/code/local/Biztech/Trackorder/controllers/IndexController.php
  190. index a12b415..5201b0e 100755
  191. --- a/app/code/local/Biztech/Trackorder/controllers/IndexController.php
  192. +++ b/app/code/local/Biztech/Trackorder/controllers/IndexController.php
  193. @@ -4,28 +4,25 @@ class Biztech_Trackorder_IndexController extends Mage_Core_Controller_Front_Acti
  194.      public function indexAction()
  195.      {
  196.          $this->loadLayout();    
  197. -        $this->getLayout()->getBlock('head')->setTitle($this->__('Track Your Order'));
  198. -        $this->_initLayoutMessages('core/session');
  199. -
  200. -        $customer = Mage::getSingleton('customer/session');
  201. -        if($customer->isLoggedIn()) {
  202. -            $this->_redirect('sales/order/history/');
  203. -        }
  204. +       $this->getLayout()->getBlock('head')->setTitle($this->__('Track Your Order'));
  205.          $this->renderLayout();
  206.      }
  207.      public function validate(){
  208.  
  209.      }
  210. -    public function initOrder($data = null) {
  211. -        $orderId = $data["order_id"];
  212. -        $email = $data["email"];
  213. -        $order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
  214. -        $cEmail = $order->getCustomerEmail();
  215. -        if($cEmail == trim($email)) {
  216. -            Mage::register('current_order', $order);    
  217. -        } else {
  218. -            Mage::register('current_order', Mage::getModel("sales/order"));
  219. -        }      
  220. +    public function initOrder(){
  221. +        if ($data = $this->getRequest()->getPost()) {
  222. +            $orderId = $data["order_id"];
  223. +            $email = $data["email"];
  224. +            $order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
  225. +            $cEmail = $order->getCustomerEmail();
  226. +            if($cEmail == trim($email)){
  227. +                Mage::register('current_order',$order);    
  228. +            } else {
  229. +                Mage::register('current_order',Mage::getModel("sales/order"));    
  230. +            }
  231. +            
  232. +        }
  233.      }
  234.      public function trackAction()
  235.      {
  236. @@ -47,7 +44,6 @@ class Biztech_Trackorder_IndexController extends Mage_Core_Controller_Front_Acti
  237.                  }
  238.                  $this->initOrder($post);
  239.                  $order = Mage::registry('current_order');
  240. -                
  241.                  if($order->getId()){
  242.                      
  243.                      $this->getResponse()->setBody($this->getLayout()->getMessagesBlock()->getGroupedHtml().$this->_getGridHtml());
  244. @@ -63,7 +59,7 @@ class Biztech_Trackorder_IndexController extends Mage_Core_Controller_Front_Acti
  245.                                                                             );
  246.  
  247.             Mage::log($info,null,'var2.log');
  248. -            return;
  249. +                       return;
  250.                      /*$this->loadLayout();    
  251.                      $this->renderLayout();    */
  252.                  } else {
  253. @@ -84,7 +80,7 @@ class Biztech_Trackorder_IndexController extends Mage_Core_Controller_Front_Acti
  254.          }
  255.  
  256.      }
  257. -    protected function _getGridHtml()
  258. +     protected function _getGridHtml()
  259.      {
  260.          $layout = $this->getLayout();
  261.          $update = $layout->getUpdate();
  262. @@ -93,108 +89,91 @@ class Biztech_Trackorder_IndexController extends Mage_Core_Controller_Front_Acti
  263.          $layout->generateBlocks();
  264.          $output = $layout->getOutput();
  265.          return $output;
  266. -    }    
  267. +    }
  268.      public function detailAction()
  269.      {
  270. -        $post = array();
  271. -
  272. -        $customer = Mage::getSingleton('customer/session');
  273. -
  274. -        $orderIdParam = $this->getRequest()->getParam('orderId');
  275. -        $emailParam = $this->getRequest()->getParam('email');
  276. -        
  277. -        if($customer->isLoggedIn() || (!empty($orderIdParam) && !empty($emailParam))) {
  278. -            $post['order_id'] = $orderIdParam;
  279. -            if(!empty($emailParam)) {
  280. -                $post['email'] =  $emailParam;
  281. -            } else {
  282. -                $post['email'] = $customer->getCustomer()->getEmail();
  283. -            }
  284. -        } else {
  285. -           $post = $this->getRequest()->getPost();
  286. -        }
  287. -
  288. -        if ( $post ) {
  289. +       $post = $this->getRequest()->getPost();
  290. +       if ( $post ) {
  291.              try {
  292.                  if (!Zend_Validate::is(trim($post['order_id']) , 'NotEmpty')) {
  293.                      $error = true;
  294. -                    $msg = "Please enter Order Id.";
  295.                  }
  296.                  if (!Zend_Validate::is(trim($post['email']), 'NotEmpty')) {
  297.                      $error = true;
  298. -                    $msg = "Please enter email address.";
  299.                  }
  300.                  if (!Zend_Validate::is(trim($post['email']), 'EmailAddress')) {
  301.                      $error = true;
  302. -                    $msg = "Please enter valid email address.";
  303.                  }
  304.                  if ($error) {
  305. -                    throw new Exception($msg);
  306. +                    throw new Exception();
  307.                  }
  308. -                
  309.                  $this->initOrder($post);
  310.                  $order = Mage::registry('current_order');
  311. +               if($order->getId()){
  312. +                       $this->loadLayout();
  313. +                       $this->getLayout()->getBlock('head')->setTitle($this->__('Track Your Order'));
  314. +                       $this->renderLayout();
  315. +               } else {
  316. +                    //Mage::getSingleton('core/session')->addError(Mage::helper('contacts')->__('Order Not Found.Please try again later'));
  317. +                    //$this->getResponse()->setBody($this->getLayout()->getMessagesBlock()->getGroupedHtml());
  318. +                    //$this->getResponse()->setBody($this->getLayout()->getBlock('root')->setTemplate('1column.phtml'));
  319. +                   //$this->getLayout()->getBlock('head')->setTitle($this->__('Track Order Not Found'));
  320. +                    //return;
  321. +                       $this->loadLayout();
  322. +                       $this->getLayout()->getBlock('head')->setTitle($this->__('Track Order Not Found'));
  323. +                       $this->renderLayout();
  324. +                       return;
  325. +               }
  326.  
  327. -                if($order->getId()) {
  328. -                    $this->loadLayout();
  329. -                    $this->getLayout()->getBlock('head')->setTitle(Mage::helper('trackorder')->__('Track Your Order'));
  330. -                    $this->renderLayout();
  331. -                } else {
  332. -                    Mage::getSingleton('core/session')->addError(Mage::helper('trackorder')->__('Sorry, either Order Id or email you have entered is incorrect!'));
  333. -                    $this->_redirect('*/*/');
  334. -                }
  335.  
  336. -            } catch (Exception $e) {
  337. -                Mage::getSingleton('core/session')->addError($e->getMessage());
  338. -                $this->_redirect('*/*/');
  339. +            }catch (Exception $e) {
  340. +                Mage::getSingleton('core/session')->addError(Mage::helper('trackorder')->__('Please Enter Order Detail.'));
  341. +                $this->getResponse()->setBody($this->getLayout()->getMessagesBlock()->getGroupedHtml());
  342. +                    return;
  343. +
  344.              }
  345.          } else {
  346.              $this->_redirect('*/*/');
  347.          }
  348. -    }
  349. -
  350. -    //////// otp validation //////////
  351. -    /*
  352. -     * Send OTP on order success page
  353. -     */
  354. -    public function otpAction() {
  355. -        $orderId = rtrim($this->getRequest()->getPost('od'),".");
  356. -        $otp = $this->getRequest()->getPost('otp');
  357. -        $number = $this->getRequest()->getPost('number');
  358. -        $otpSession = Mage::getSingleton("core/session", array("name" => "frontend"))->getData("codCode");
  359. -        $order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
  360. -        if ($order->getStatus() == 'pending_cod') {
  361. -            if ($otp == $otpSession && ($otpSession != '') && isset($otpSession)) {
  362. -            //define comment
  363. -            $comment = "Customer confirmed COD through OTP";
  364. -            //set state and status
  365.  
  366. -            //$order->setStatus('processing');
  367. -            //$order->setState('processing')->save();
  368. -
  369. -            // for event observer on otps.                                
  370. -            //Mage::dispatchEvent('sales_order_status_change', array('order' => $order, 'state' => $order->getState(), 'status' => $order->getStatus()));
  371. -                            //Get current status and comment with notification flag 'false'
  372. -            //$order->addStatusToHistory($order->getStatus(), $comment, true)->save();
  373. -            $order->addStatusToHistory('processing', $comment, true)->save();
  374. -
  375. -            echo 'success';
  376. -            return;
  377. -            } else {
  378. -            echo 'wrong code';
  379. -            return;
  380. -            }
  381. -        }
  382. -        echo 'order status is not pending';
  383. -        return;
  384.      }
  385.  
  386. -    function sendotpAction(){
  387. -        $otpSession = Mage::getSingleton("core/session", array("name" => "frontend"))->getData("codCode");
  388. -        $url = $this->getRequest()->getParam('url');
  389. -        $url = str_replace('xxxxxx', $otpSession, $url);
  390. -        $out = file_get_contents($url);
  391. -        echo $out;
  392. -    }
  393. +       //////// otp validation //////////
  394. +       public function otpAction() {
  395. +               $orderId = rtrim($this->getRequest()->getPost('od'),".");
  396. +               $otp = $this->getRequest()->getPost('otp');
  397. +               $number = $this->getRequest()->getPost('number');
  398. +               $otpSession = Mage::getSingleton("core/session", array("name" => "frontend"))->getData("codCode");
  399. +               $order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
  400. +               if ($order->getStatus() == 'pending_cod') {
  401. +                   if ($otp == $otpSession && ($otpSession != '') && isset($otpSession)) {
  402. +                       //define comment
  403. +                       $comment = "Customer confirmed COD through OTP";
  404. +                       //set state and status
  405. +                       $order->setStatus('processing');
  406. +                       $order->setState('processing')->save();
  407. +                       // for event observer on otps.                                
  408. +                       //Mage::dispatchEvent('sales_order_status_change', array('order' => $order, 'state' => $order->getState(), 'status' => $order->getStatus()));
  409. +                            //Get current status and comment with notification flag 'false'
  410. +                       //$order->addStatusToHistory($order->getStatus(), $comment, true)->save();
  411. +
  412. +                       echo 'success';
  413. +                       return;
  414. +                   } else {
  415. +                       echo 'wrong code';
  416. +                       return;
  417. +                   }
  418. +               }
  419. +               echo 'order status is not pending';
  420. +               return;
  421. +       }
  422. +
  423. +       function sendotpAction(){
  424. +               $otpSession = Mage::getSingleton("core/session", array("name" => "frontend"))->getData("codCode");
  425. +               $url = $this->getRequest()->getParam('url');
  426. +               $url = str_replace('xxxxxx', $otpSession, $url);
  427. +               $out = file_get_contents($url);
  428. +               echo $out;
  429. +       }
  430.  
  431.  }
  432. diff --git a/app/code/local/Biztech/Trackorder/etc/config.xml b/app/code/local/Biztech/Trackorder/etc/config.xml
  433. index e1f8535..aa63ddf 100644
  434. --- a/app/code/local/Biztech/Trackorder/etc/config.xml
  435. +++ b/app/code/local/Biztech/Trackorder/etc/config.xml
  436. @@ -33,27 +33,27 @@
  437.      </frontend>
  438.      <admin>
  439.          <routers>
  440. -            <trackorder>
  441. -                <use>admin</use>
  442. -                <args>
  443. -                    <module>Biztech_Trackorder</module>
  444. -                    <frontName>trackorder</frontName>
  445. -                </args>
  446. -            </trackorder>
  447. +                       <trackorder>
  448. +                               <use>admin</use>
  449. +                               <args>
  450. +                                       <module>Biztech_Trackorder</module>
  451. +                                       <frontName>trackorder</frontName>
  452. +                               </args>
  453. +                       </trackorder>
  454.          </routers>
  455.      </admin>
  456.      <adminhtml>
  457. -        <acl>
  458. -            <resources>
  459. -                <all>
  460. -                    <title>Allow Everything</title>
  461. -                </all>
  462. -                <admin>
  463. -                    <children>
  464. -                        <Biztech_Trackorder>
  465. -                            <title>Trackorder Module</title>
  466. -                            <sort_order>10</sort_order>
  467. -                        </Biztech_Trackorder>
  468. +               <acl>
  469. +                       <resources>
  470. +                               <all>
  471. +                                       <title>Allow Everything</title>
  472. +                               </all>
  473. +                               <admin>
  474. +                                       <children>
  475. +                                               <Biztech_Trackorder>
  476. +                                                       <title>Trackorder Module</title>
  477. +                                                       <sort_order>10</sort_order>
  478. +                                               </Biztech_Trackorder>
  479.                           <system>
  480.                              <children>
  481.                                  <config>
  482. @@ -65,17 +65,17 @@
  483.                                  </config>
  484.                              </children>
  485.                          </system>
  486. -                    </children>
  487. -                </admin>
  488. -            </resources>
  489. -        </acl>
  490. -        <layout>
  491. -            <updates>
  492. -                <trackorder>
  493. -                    <file>trackorder.xml</file>
  494. -                </trackorder>
  495. -            </updates>
  496. -        </layout>
  497. +                                       </children>
  498. +                               </admin>
  499. +                       </resources>
  500. +               </acl>
  501. +               <layout>
  502. +                       <updates>
  503. +                               <trackorder>
  504. +                                       <file>trackorder.xml</file>
  505. +                               </trackorder>
  506. +                       </updates>
  507. +               </layout>
  508.      </adminhtml>  
  509.      <global>
  510.          <models>
  511. diff --git a/app/code/local/Mage/Adminhtml/Block/Sales/Order/Grid.php b/app/code/local/Mage/Adminhtml/Block/Sales/Order/Grid.php
  512. index 21deb33..388f53b 100755
  513. --- a/app/code/local/Mage/Adminhtml/Block/Sales/Order/Grid.php
  514. +++ b/app/code/local/Mage/Adminhtml/Block/Sales/Order/Grid.php
  515. @@ -67,8 +67,7 @@ class Mage_Adminhtml_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Widget_
  516.              'telephone' => 'soas.telephone',
  517.              'email' => 'email',
  518.              'postcode' => 'postcode',
  519. -            'region' => 'region',
  520. -            'order_tags'=>'main_table.order_tags'
  521. +            'region' => 'region'
  522.          ), null, 'left');
  523.          
  524.          $this->setCollection($collection);
  525. @@ -180,12 +179,6 @@ class Mage_Adminhtml_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Widget_
  526.              'width' => '70px',
  527.              'options' => Mage::getSingleton('sales/order_config')->getStatuses()
  528.          ));
  529. -        
  530. -        $this->addColumn('order_tags', array(
  531. -            'header' => Mage::helper('sales')->__('Order Tag'),
  532. -            'index' => 'order_tags',
  533. -            'width' => '50px',
  534. -        ));
  535.  
  536.          $this->addcolumn('wmsStatus', array(
  537.              'header' => Mage::helper('sales')->__('WMS Status'),
  538. diff --git a/app/code/local/Mage/Adminhtml/controllers/Catalog/ProductController.php b/app/code/local/Mage/Adminhtml/controllers/Catalog/ProductController.php
  539. index 141ed33..1d470f5 100755
  540. --- a/app/code/local/Mage/Adminhtml/controllers/Catalog/ProductController.php
  541. +++ b/app/code/local/Mage/Adminhtml/controllers/Catalog/ProductController.php
  542. @@ -717,6 +717,7 @@ class Mage_Adminhtml_Catalog_ProductController extends Mage_Adminhtml_Controller
  543.          $redirectBack   = $this->getRequest()->getParam('back', false);
  544.          $productId      = $this->getRequest()->getParam('id');
  545.          $isEdit         = (int)($this->getRequest()->getParam('id') != null);
  546. +       $write = Mage::getSingleton('core/resource')->getConnection('core_write');
  547.  
  548.          $data = $this->getRequest()->getPost();
  549.          if ($data) {
  550. @@ -728,6 +729,41 @@ class Mage_Adminhtml_Catalog_ProductController extends Mage_Adminhtml_Controller
  551.                  $product->save();
  552.                  $productId = $product->getId();
  553.  
  554. +                $result=$write->query("SELECT * FROM catalog_product_entity_tier_price WHERE entity_id=".$productId);
  555. +                $row = $result->fetch();
  556. +
  557. +               #Mage::log($productId." ".count($row),null,"tier.log");
  558. +
  559. +               if(count($row) == 1)
  560. +               {
  561. +                   foreach($data['product']['tier_price'] as $tier_price)
  562. +                    {
  563. +                        if(strcmp($tier_price['cust_group'],'32000') == 0)
  564. +                        {
  565. +                                $tier_price['cust_group'] = 1;
  566. +                                $all_groups = 1;
  567. +                        }
  568. +                        else
  569. +                        {
  570. +                                $all_groups = 0;
  571. +                        }
  572. +                       if($tier_price['delete'] != 1)
  573. +                       {
  574. +                            $write->insert(
  575. +                                "catalog_product_entity_tier_price",
  576. +                                array('entity_id'=>$productId,
  577. +                                      'customer_group_id' => $tier_price['cust_group'],
  578. +                                      'all_groups' => $all_groups,
  579. +                                      //'customer_group_id' => '0',
  580. +                                      'qty' => $tier_price['price_qty'],
  581. +                                      'value' => $tier_price['price'],
  582. +                                      'website_id' => '0'
  583. +                                )
  584. +                            );
  585. +                       }
  586. +                    }
  587. +               }
  588. +
  589.                  if (isset($data['copy_to_stores'])) {
  590.                     $this->_copyAttributesBetweenStores($data['copy_to_stores'], $product);
  591.                  }
  592. diff --git a/app/code/local/Mage/Catalog/Block/Category/View.php b/app/code/local/Mage/Catalog/Block/Category/View.php
  593. deleted file mode 100644
  594. index fed5d44..0000000
  595. --- a/app/code/local/Mage/Catalog/Block/Category/View.php
  596. +++ /dev/null
  597. @@ -1,178 +0,0 @@
  598. -<?php
  599. -/**
  600. - * Magento
  601. - *
  602. - * NOTICE OF LICENSE
  603. - *
  604. - * This source file is subject to the Open Software License (OSL 3.0)
  605. - * that is bundled with this package in the file LICENSE.txt.
  606. - * It is also available through the world-wide-web at this URL:
  607. - * http://opensource.org/licenses/osl-3.0.php
  608. - * If you did not receive a copy of the license and are unable to
  609. - * obtain it through the world-wide-web, please send an email
  610. - * to license@magentocommerce.com so we can send you a copy immediately.
  611. - *
  612. - * DISCLAIMER
  613. - *
  614. - * Do not edit or add to this file if you wish to upgrade Magento to newer
  615. - * versions in the future. If you wish to customize Magento for your
  616. - * needs please refer to http://www.magentocommerce.com for more information.
  617. - *
  618. - * @category    Mage
  619. - * @package     Mage_Catalog
  620. - * @copyright   Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
  621. - * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  622. - */
  623. -
  624. -/**
  625. - * Category View block
  626. - *
  627. - * @category   Mage
  628. - * @package    Mage_Catalog
  629. - * @author      Magento Core Team <core@magentocommerce.com>
  630. - */
  631. -class Mage_Catalog_Block_Category_View extends Mage_Core_Block_Template
  632. -{  
  633. -    protected function _prepareLayout()
  634. -    {
  635. -        parent::_prepareLayout();
  636. -        $this->getLayout()->createBlock('catalog/breadcrumbs');
  637. -
  638. -        if ($headBlock = $this->getLayout()->getBlock('head')) {
  639. -            $category = $this->getCurrentCategory();
  640. -            $catagoryName = $category->getName();
  641. -            $newTitle ='Buy '.$catagoryName.' Online at Best Price in India - Tolexo.com';
  642. -            $newDescription ='Buy '.$catagoryName.' online at Tolexo.com. Shop online from multiple categories and various products. ‚úì Cash on Delivery ‚úì Easy Return ‚úì Free Shipping ‚úì Best Price. ';                                            
  643. -
  644. -        /* Default meta title and meta description in catalog page */
  645. -            if ($title = $category->getMetaTitle()) {  
  646. -                $headBlock->setTitle($title);
  647. -            }
  648. -            else{
  649. -                $headBlock->setTitle($newTitle);
  650. -            }
  651. -            
  652. -            if ($description = $category->getMetaDescription()) {
  653. -                $headBlock->setDescription($description);
  654. -            }
  655. -            else{
  656. -               $headBlock->setDescription($newDescription);
  657. -            }
  658. -
  659. -             if ($keywords = $category->getMetaKeywords()) {
  660. -                $headBlock->setKeywords($keywords);
  661. -            }
  662. -            if ($this->helper('catalog/category')->canUseCanonicalTag()) {
  663. -                $headBlock->addLinkRel('canonical', $category->getUrl());
  664. -            }
  665. -            /*
  666. -            want to show rss feed in the url
  667. -            */
  668. -            if ($this->IsRssCatalogEnable() && $this->IsTopCategory()) {
  669. -                $title = $this->helper('rss')->__('%s RSS Feed',$this->getCurrentCategory()->getName());
  670. -                $headBlock->addItem('rss', $this->getRssLink(), 'title="'.$title.'"');
  671. -            }
  672. -        }
  673. -
  674. -        return $this;
  675. -    }
  676. -
  677. -    public function IsRssCatalogEnable()
  678. -    {
  679. -        return Mage::getStoreConfig('rss/catalog/category');
  680. -    }
  681. -
  682. -    public function IsTopCategory()
  683. -    {
  684. -        return $this->getCurrentCategory()->getLevel()==2;
  685. -    }
  686. -
  687. -    public function getRssLink()
  688. -    {
  689. -        return Mage::getUrl('rss/catalog/category',
  690. -            array(
  691. -                'cid' => $this->getCurrentCategory()->getId(),
  692. -                'store_id' => Mage::app()->getStore()->getId()
  693. -            )
  694. -        );
  695. -    }
  696. -
  697. -    public function getProductListHtml()
  698. -    {
  699. -        return $this->getChildHtml('product_list');
  700. -    }
  701. -
  702. -    /**
  703. -     * Retrieve current category model object
  704. -     *
  705. -     * @return Mage_Catalog_Model_Category
  706. -     */
  707. -    public function getCurrentCategory()
  708. -    {
  709. -        if (!$this->hasData('current_category')) {
  710. -            $this->setData('current_category', Mage::registry('current_category'));
  711. -        }
  712. -        return $this->getData('current_category');
  713. -    }
  714. -
  715. -    public function getCmsBlockHtml()
  716. -    {
  717. -        if (!$this->getData('cms_block_html')) {
  718. -            $html = $this->getLayout()->createBlock('cms/block')
  719. -                ->setBlockId($this->getCurrentCategory()->getLandingPage())
  720. -                ->toHtml();
  721. -            $this->setData('cms_block_html', $html);
  722. -        }
  723. -        return $this->getData('cms_block_html');
  724. -    }
  725. -
  726. -    /**
  727. -     * Check if category display mode is "Products Only"
  728. -     * @return bool
  729. -     */
  730. -    public function isProductMode()
  731. -    {
  732. -        return $this->getCurrentCategory()->getDisplayMode()==Mage_Catalog_Model_Category::DM_PRODUCT;
  733. -    }
  734. -
  735. -    /**
  736. -     * Check if category display mode is "Static Block and Products"
  737. -     * @return bool
  738. -     */
  739. -    public function isMixedMode()
  740. -    {
  741. -        return $this->getCurrentCategory()->getDisplayMode()==Mage_Catalog_Model_Category::DM_MIXED;
  742. -    }
  743. -
  744. -    /**
  745. -     * Check if category display mode is "Static Block Only"
  746. -     * For anchor category with applied filter Static Block Only mode not allowed
  747. -     *
  748. -     * @return bool
  749. -     */
  750. -    public function isContentMode()
  751. -    {
  752. -        $category = $this->getCurrentCategory();
  753. -        $res = false;
  754. -        if ($category->getDisplayMode()==Mage_Catalog_Model_Category::DM_PAGE) {
  755. -            $res = true;
  756. -            if ($category->getIsAnchor()) {
  757. -                $state = Mage::getSingleton('catalog/layer')->getState();
  758. -                if ($state && $state->getFilters()) {
  759. -                    $res = false;
  760. -                }
  761. -            }
  762. -        }
  763. -        return $res;
  764. -    }
  765. -
  766. -    /**
  767. -     * Retrieve block cache tags based on category
  768. -     *
  769. -     * @return array
  770. -     */
  771. -    public function getCacheTags()
  772. -    {
  773. -        return array_merge(parent::getCacheTags(), $this->getCurrentCategory()->getCacheIdTags());
  774. -    }
  775. -}
  776. diff --git a/app/code/local/Mage/Catalog/Model/Product.php b/app/code/local/Mage/Catalog/Model/Product.php
  777. deleted file mode 100644
  778. index 5849af9..0000000
  779. --- a/app/code/local/Mage/Catalog/Model/Product.php
  780. +++ /dev/null
  781. @@ -1,2065 +0,0 @@
  782. -<?php
  783. -/**
  784. - * Magento
  785. - *
  786. - * NOTICE OF LICENSE
  787. - *
  788. - * This source file is subject to the Open Software License (OSL 3.0)
  789. - * that is bundled with this package in the file LICENSE.txt.
  790. - * It is also available through the world-wide-web at this URL:
  791. - * http://opensource.org/licenses/osl-3.0.php
  792. - * If you did not receive a copy of the license and are unable to
  793. - * obtain it through the world-wide-web, please send an email
  794. - * to license@magentocommerce.com so we can send you a copy immediately.
  795. - *
  796. - * DISCLAIMER
  797. - *
  798. - * Do not edit or add to this file if you wish to upgrade Magento to newer
  799. - * versions in the future. If you wish to customize Magento for your
  800. - * needs please refer to http://www.magentocommerce.com for more information.
  801. - *
  802. - * @category    Mage
  803. - * @package     Mage_Catalog
  804. - * @copyright   Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
  805. - * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  806. - */
  807. -
  808. -/**
  809. - * Catalog product model
  810. - *
  811. - * @method Mage_Catalog_Model_Resource_Product getResource()
  812. - * @method Mage_Catalog_Model_Product setHasError(bool $value)
  813. - * @method null|bool getHasError()
  814. - *
  815. - * @category    Mage
  816. - * @package     Mage_Catalog
  817. - * @author      Magento Core Team <core@magentocommerce.com>
  818. - */
  819. -class Mage_Catalog_Model_Product extends Mage_Catalog_Model_Abstract
  820. -{
  821. -    /**
  822. -     * Entity code.
  823. -     * Can be used as part of method name for entity processing
  824. -     */
  825. -    const ENTITY                 = 'catalog_product';
  826. -
  827. -    const CACHE_TAG              = 'catalog_product';
  828. -    protected $_cacheTag         = 'catalog_product';
  829. -    protected $_eventPrefix      = 'catalog_product';
  830. -    protected $_eventObject      = 'product';
  831. -    protected $_canAffectOptions = false;
  832. -
  833. -    /**
  834. -     * Product type instance
  835. -     *
  836. -     * @var Mage_Catalog_Model_Product_Type_Abstract
  837. -     */
  838. -    protected $_typeInstance            = null;
  839. -
  840. -    /**
  841. -     * Product type instance as singleton
  842. -     */
  843. -    protected $_typeInstanceSingleton   = null;
  844. -
  845. -    /**
  846. -     * Product link instance
  847. -     *
  848. -     * @var Mage_Catalog_Model_Product_Link
  849. -     */
  850. -    protected $_linkInstance;
  851. -
  852. -    /**
  853. -     * Product object customization (not stored in DB)
  854. -     *
  855. -     * @var array
  856. -     */
  857. -    protected $_customOptions = array();
  858. -
  859. -    /**
  860. -     * Product Url Instance
  861. -     *
  862. -     * @var Mage_Catalog_Model_Product_Url
  863. -     */
  864. -    protected $_urlModel = null;
  865. -
  866. -    protected static $_url;
  867. -    protected static $_urlRewrite;
  868. -
  869. -    protected $_errors = array();
  870. -
  871. -    protected $_optionInstance;
  872. -
  873. -    protected $_options = array();
  874. -
  875. -    /**
  876. -     * Product reserved attribute codes
  877. -     */
  878. -    protected $_reservedAttributes;
  879. -
  880. -    /**
  881. -     * Flag for available duplicate function
  882. -     *
  883. -     * @var boolean
  884. -     */
  885. -    protected $_isDuplicable = true;
  886. -
  887. -    /**
  888. -     * Flag for get Price function
  889. -     *
  890. -     * @var boolean
  891. -     */
  892. -    protected $_calculatePrice = true;
  893. -
  894. -    /**
  895. -     * Initialize resources
  896. -     */
  897. -    protected function _construct()
  898. -    {
  899. -        $this->_init('catalog/product');
  900. -    }
  901. -
  902. -    /**
  903. -     * Init mapping array of short fields to
  904. -     * its full names
  905. -     *
  906. -     * @return Varien_Object
  907. -     */
  908. -    protected function _initOldFieldsMap()
  909. -    {
  910. -        $this->_oldFieldsMap = Mage::helper('catalog')->getOldFieldMap();
  911. -        return $this;
  912. -    }
  913. -
  914. -    /**
  915. -     * Retrieve Store Id
  916. -     *
  917. -     * @return int
  918. -     */
  919. -    public function getStoreId()
  920. -    {
  921. -        if ($this->hasData('store_id')) {
  922. -            return $this->getData('store_id');
  923. -        }
  924. -        return Mage::app()->getStore()->getId();
  925. -    }
  926. -
  927. -    /**
  928. -     * Get collection instance
  929. -     *
  930. -     * @return object
  931. -     */
  932. -    public function getResourceCollection()
  933. -    {
  934. -        if (empty($this->_resourceCollectionName)) {
  935. -            Mage::throwException(Mage::helper('catalog')->__('The model collection resource name is not defined.'));
  936. -        }
  937. -        $collection = Mage::getResourceModel($this->_resourceCollectionName);
  938. -        $collection->setStoreId($this->getStoreId());
  939. -        return $collection;
  940. -    }
  941. -
  942. -    /**
  943. -     * Get product url model
  944. -     *
  945. -     * @return Mage_Catalog_Model_Product_Url
  946. -     */
  947. -    public function getUrlModel()
  948. -    {
  949. -        if ($this->_urlModel === null) {
  950. -            $this->_urlModel = Mage::getSingleton('catalog/factory')->getProductUrlInstance();
  951. -        }
  952. -        return $this->_urlModel;
  953. -    }
  954. -
  955. -    /**
  956. -     * Validate Product Data
  957. -     *
  958. -     * @todo implement full validation process with errors returning which are ignoring now
  959. -     *
  960. -     * @return Mage_Catalog_Model_Product
  961. -     */
  962. -    public function validate()
  963. -    {
  964. -//        $this->getAttributes();
  965. -//        Mage::dispatchEvent($this->_eventPrefix.'_validate_before', array($this->_eventObject=>$this));
  966. -//        $result = $this->_getResource()->validate($this);
  967. -//        Mage::dispatchEvent($this->_eventPrefix.'_validate_after', array($this->_eventObject=>$this));
  968. -//        return $result;
  969. -        Mage::dispatchEvent($this->_eventPrefix.'_validate_before', array($this->_eventObject=>$this));
  970. -        $this->_getResource()->validate($this);
  971. -        Mage::dispatchEvent($this->_eventPrefix.'_validate_after', array($this->_eventObject=>$this));
  972. -        return $this;
  973. -    }
  974. -
  975. -    /**
  976. -     * Get product name
  977. -     *
  978. -     * @return string
  979. -     */
  980. -    public function getName()
  981. -    {
  982. -        return $this->_getData('name');
  983. -    }
  984. -
  985. -    /**
  986. -     * Get product price throught type instance
  987. -     *
  988. -     * @return unknown
  989. -     */
  990. -    public function getPrice()
  991. -    {
  992. -        if ($this->_calculatePrice || !$this->getData('price')) {
  993. -            return $this->getPriceModel()->getPrice($this);
  994. -        } else {
  995. -            return $this->getData('price');
  996. -        }
  997. -    }
  998. -
  999. -    /**
  1000. -     * Set Price calculation flag
  1001. -     *
  1002. -     * @param bool $calculate
  1003. -     * @return void
  1004. -     */
  1005. -    public function setPriceCalculation($calculate = true)
  1006. -    {
  1007. -        $this->_calculatePrice = $calculate;
  1008. -    }
  1009. -
  1010. -    /**
  1011. -     * Get product type identifier
  1012. -     *
  1013. -     * @return string
  1014. -     */
  1015. -    public function getTypeId()
  1016. -    {
  1017. -        return $this->_getData('type_id');
  1018. -    }
  1019. -
  1020. -    /**
  1021. -     * Get product status
  1022. -     *
  1023. -     * @return int
  1024. -     */
  1025. -    public function getStatus()
  1026. -    {
  1027. -        if (is_null($this->_getData('status'))) {
  1028. -            $this->setData('status', Mage_Catalog_Model_Product_Status::STATUS_ENABLED);
  1029. -        }
  1030. -        return $this->_getData('status');
  1031. -    }
  1032. -
  1033. -    /**
  1034. -     * Retrieve type instance
  1035. -     *
  1036. -     * Type instance implement type depended logic
  1037. -     *
  1038. -     * @param  bool $singleton
  1039. -     * @return Mage_Catalog_Model_Product_Type_Abstract
  1040. -     */
  1041. -    public function getTypeInstance($singleton = false)
  1042. -    {
  1043. -        if ($singleton === true) {
  1044. -            if (is_null($this->_typeInstanceSingleton)) {
  1045. -                $this->_typeInstanceSingleton = Mage::getSingleton('catalog/product_type')
  1046. -                    ->factory($this, true);
  1047. -            }
  1048. -            return $this->_typeInstanceSingleton;
  1049. -        }
  1050. -
  1051. -        if ($this->_typeInstance === null) {
  1052. -            $this->_typeInstance = Mage::getSingleton('catalog/product_type')
  1053. -                ->factory($this);
  1054. -        }
  1055. -        return $this->_typeInstance;
  1056. -    }
  1057. -
  1058. -    /**
  1059. -     * Set type instance for external
  1060. -     *
  1061. -     * @param Mage_Catalog_Model_Product_Type_Abstract $instance  Product type instance
  1062. -     * @param bool                                     $singleton Whether instance is singleton
  1063. -     * @return Mage_Catalog_Model_Product
  1064. -     */
  1065. -    public function setTypeInstance($instance, $singleton = false)
  1066. -    {
  1067. -        if ($singleton === true) {
  1068. -            $this->_typeInstanceSingleton = $instance;
  1069. -        } else {
  1070. -            $this->_typeInstance = $instance;
  1071. -        }
  1072. -        return $this;
  1073. -    }
  1074. -
  1075. -    /**
  1076. -     * Retrieve link instance
  1077. -     *
  1078. -     * @return  Mage_Catalog_Model_Product_Link
  1079. -     */
  1080. -    public function getLinkInstance()
  1081. -    {
  1082. -        if (!$this->_linkInstance) {
  1083. -            $this->_linkInstance = Mage::getSingleton('catalog/product_link');
  1084. -        }
  1085. -        return $this->_linkInstance;
  1086. -    }
  1087. -
  1088. -    /**
  1089. -     * Retrive product id by sku
  1090. -     *
  1091. -     * @param   string $sku
  1092. -     * @return  integer
  1093. -     */
  1094. -    public function getIdBySku($sku)
  1095. -    {
  1096. -        return $this->_getResource()->getIdBySku($sku);
  1097. -    }
  1098. -
  1099. -    /**
  1100. -     * Retrieve product category id
  1101. -     *
  1102. -     * @return int
  1103. -     */
  1104. -    public function getCategoryId()
  1105. -    {
  1106. -        if ($category = Mage::registry('current_category')) {
  1107. -            return $category->getId();
  1108. -        }
  1109. -        return false;
  1110. -    }
  1111. -
  1112. -    /**
  1113. -     * Retrieve product category
  1114. -     *
  1115. -     * @return Mage_Catalog_Model_Category
  1116. -     */
  1117. -    public function getCategory()
  1118. -    {
  1119. -        $category = $this->getData('category');
  1120. -        if (is_null($category) && $this->getCategoryId()) {
  1121. -            $category = Mage::getModel('catalog/category')->load($this->getCategoryId());
  1122. -            $this->setCategory($category);
  1123. -        }
  1124. -        return $category;
  1125. -    }
  1126. -
  1127. -    /**
  1128. -     * Set assigned category IDs array to product
  1129. -     *
  1130. -     * @param array|string $ids
  1131. -     * @return Mage_Catalog_Model_Product
  1132. -     */
  1133. -    public function setCategoryIds($ids)
  1134. -    {
  1135. -        if (is_string($ids)) {
  1136. -            $ids = explode(',', $ids);
  1137. -        } elseif (!is_array($ids)) {
  1138. -            Mage::throwException(Mage::helper('catalog')->__('Invalid category IDs.'));
  1139. -        }
  1140. -        foreach ($ids as $i => $v) {
  1141. -            if (empty($v)) {
  1142. -                unset($ids[$i]);
  1143. -            }
  1144. -        }
  1145. -
  1146. -        $this->setData('category_ids', $ids);
  1147. -        return $this;
  1148. -    }
  1149. -
  1150. -    /**
  1151. -     * Retrieve assigned category Ids
  1152. -     *
  1153. -     * @return array
  1154. -     */
  1155. -    public function getCategoryIds()
  1156. -    {
  1157. -        if (! $this->hasData('category_ids')) {
  1158. -            $wasLocked = false;
  1159. -            if ($this->isLockedAttribute('category_ids')) {
  1160. -                $wasLocked = true;
  1161. -                $this->unlockAttribute('category_ids');
  1162. -            }
  1163. -            $ids = $this->_getResource()->getCategoryIds($this);
  1164. -            $this->setData('category_ids', $ids);
  1165. -            if ($wasLocked) {
  1166. -                $this->lockAttribute('category_ids');
  1167. -            }
  1168. -        }
  1169. -
  1170. -        return (array) $this->_getData('category_ids');
  1171. -    }
  1172. -
  1173. -    /**
  1174. -     * Retrieve product categories
  1175. -     *
  1176. -     * @return Varien_Data_Collection
  1177. -     */
  1178. -    public function getCategoryCollection()
  1179. -    {
  1180. -        return $this->_getResource()->getCategoryCollection($this);
  1181. -    }
  1182. -
  1183. -    /**
  1184. -     * Retrieve product websites identifiers
  1185. -     *
  1186. -     * @return array
  1187. -     */
  1188. -    public function getWebsiteIds()
  1189. -    {
  1190. -        if (!$this->hasWebsiteIds()) {
  1191. -            $ids = $this->_getResource()->getWebsiteIds($this);
  1192. -            $this->setWebsiteIds($ids);
  1193. -        }
  1194. -        return $this->getData('website_ids');
  1195. -    }
  1196. -
  1197. -    /**
  1198. -     * Get all sore ids where product is presented
  1199. -     *
  1200. -     * @return array
  1201. -     */
  1202. -    public function getStoreIds()
  1203. -    {
  1204. -        if (!$this->hasStoreIds()) {
  1205. -            $storeIds = array();
  1206. -            if ($websiteIds = $this->getWebsiteIds()) {
  1207. -                foreach ($websiteIds as $websiteId) {
  1208. -                    $websiteStores = Mage::app()->getWebsite($websiteId)->getStoreIds();
  1209. -                    $storeIds = array_merge($storeIds, $websiteStores);
  1210. -                }
  1211. -            }
  1212. -            $this->setStoreIds($storeIds);
  1213. -        }
  1214. -        return $this->getData('store_ids');
  1215. -    }
  1216. -
  1217. -    /**
  1218. -     * Retrieve product attributes
  1219. -     * if $groupId is null - retrieve all product attributes
  1220. -     *
  1221. -     * @param int  $groupId   Retrieve attributes of the specified group
  1222. -     * @param bool $skipSuper Not used
  1223. -     * @return array
  1224. -     */
  1225. -    public function getAttributes($groupId = null, $skipSuper = false)
  1226. -    {
  1227. -        $productAttributes = $this->getTypeInstance(true)->getEditableAttributes($this);
  1228. -        if ($groupId) {
  1229. -            $attributes = array();
  1230. -            foreach ($productAttributes as $attribute) {
  1231. -                if ($attribute->isInGroup($this->getAttributeSetId(), $groupId)) {
  1232. -                    $attributes[] = $attribute;
  1233. -                }
  1234. -            }
  1235. -        } else {
  1236. -            $attributes = $productAttributes;
  1237. -        }
  1238. -
  1239. -        return $attributes;
  1240. -    }
  1241. -
  1242. -    /**
  1243. -     * Check product options and type options and save them, too
  1244. -     */
  1245. -    protected function _beforeSave()
  1246. -    {
  1247. -       $this->getTierPrice();
  1248. -        $this->cleanCache();
  1249. -        $this->setTypeHasOptions(false);
  1250. -        $this->setTypeHasRequiredOptions(false);
  1251. -
  1252. -        $this->getTypeInstance(true)->beforeSave($this);
  1253. -
  1254. -        $hasOptions         = false;
  1255. -        $hasRequiredOptions = false;
  1256. -
  1257. -        /**
  1258. -         * $this->_canAffectOptions - set by type instance only
  1259. -         * $this->getCanSaveCustomOptions() - set either in controller when "Custom Options" ajax tab is loaded,
  1260. -         * or in type instance as well
  1261. -         */
  1262. -        $this->canAffectOptions($this->_canAffectOptions && $this->getCanSaveCustomOptions());
  1263. -        if ($this->getCanSaveCustomOptions()) {
  1264. -            $options = $this->getProductOptions();
  1265. -            if (is_array($options)) {
  1266. -                $this->setIsCustomOptionChanged(true);
  1267. -                foreach ($this->getProductOptions() as $option) {
  1268. -                    $this->getOptionInstance()->addOption($option);
  1269. -                    if ((!isset($option['is_delete'])) || $option['is_delete'] != '1') {
  1270. -                        $hasOptions = true;
  1271. -                    }
  1272. -                }
  1273. -                foreach ($this->getOptionInstance()->getOptions() as $option) {
  1274. -                    if ($option['is_require'] == '1') {
  1275. -                        $hasRequiredOptions = true;
  1276. -                        break;
  1277. -                    }
  1278. -                }
  1279. -            }
  1280. -        }
  1281. -
  1282. -        /**
  1283. -         * Set true, if any
  1284. -         * Set false, ONLY if options have been affected by Options tab and Type instance tab
  1285. -         */
  1286. -        if ($hasOptions || (bool)$this->getTypeHasOptions()) {
  1287. -            $this->setHasOptions(true);
  1288. -            if ($hasRequiredOptions || (bool)$this->getTypeHasRequiredOptions()) {
  1289. -                $this->setRequiredOptions(true);
  1290. -            } elseif ($this->canAffectOptions()) {
  1291. -                $this->setRequiredOptions(false);
  1292. -            }
  1293. -        } elseif ($this->canAffectOptions()) {
  1294. -            $this->setHasOptions(false);
  1295. -            $this->setRequiredOptions(false);
  1296. -        }
  1297. -        parent::_beforeSave();
  1298. -    }
  1299. -
  1300. -    /**
  1301. -     * Check/set if options can be affected when saving product
  1302. -     * If value specified, it will be set.
  1303. -     *
  1304. -     * @param   bool $value
  1305. -     * @return  bool
  1306. -     */
  1307. -    public function canAffectOptions($value = null)
  1308. -    {
  1309. -        if (null !== $value) {
  1310. -            $this->_canAffectOptions = (bool)$value;
  1311. -        }
  1312. -        return $this->_canAffectOptions;
  1313. -    }
  1314. -
  1315. -    /**
  1316. -     * Saving product type related data and init index
  1317. -     *
  1318. -     * @return Mage_Catalog_Model_Product
  1319. -     */
  1320. -    protected function _afterSave()
  1321. -    {
  1322. -        $this->getLinkInstance()->saveProductRelations($this);
  1323. -        $this->getTypeInstance(true)->save($this);
  1324. -
  1325. -        /**
  1326. -         * Product Options
  1327. -         */
  1328. -        $this->getOptionInstance()->setProduct($this)
  1329. -            ->saveOptions();
  1330. -
  1331. -        $result = parent::_afterSave();
  1332. -
  1333. -        Mage::getSingleton('index/indexer')->processEntityAction(
  1334. -            $this, self::ENTITY, Mage_Index_Model_Event::TYPE_SAVE
  1335. -        );
  1336. -        return $result;
  1337. -    }
  1338. -
  1339. -    /**
  1340. -     * Clear chache related with product and protect delete from not admin
  1341. -     * Register indexing event before delete product
  1342. -     *
  1343. -     * @return Mage_Catalog_Model_Product
  1344. -     */
  1345. -    protected function _beforeDelete()
  1346. -    {
  1347. -        $this->_protectFromNonAdmin();
  1348. -        $this->cleanCache();
  1349. -        Mage::getSingleton('index/indexer')->logEvent(
  1350. -            $this, self::ENTITY, Mage_Index_Model_Event::TYPE_DELETE
  1351. -        );
  1352. -        return parent::_beforeDelete();
  1353. -    }
  1354. -
  1355. -    /**
  1356. -     * Init indexing process after product delete commit
  1357. -     *
  1358. -     * @return Mage_Catalog_Model_Product
  1359. -     */
  1360. -    protected function _afterDeleteCommit()
  1361. -    {
  1362. -        parent::_afterDeleteCommit();
  1363. -        Mage::getSingleton('index/indexer')->indexEvents(
  1364. -            self::ENTITY, Mage_Index_Model_Event::TYPE_DELETE
  1365. -        );
  1366. -    }
  1367. -
  1368. -    /**
  1369. -     * Load product options if they exists
  1370. -     *
  1371. -     * @return Mage_Catalog_Model_Product
  1372. -     */
  1373. -    protected function _afterLoad()
  1374. -    {
  1375. -        parent::_afterLoad();
  1376. -        /**
  1377. -         * Load product options
  1378. -         */
  1379. -        if ($this->getHasOptions()) {
  1380. -            foreach ($this->getProductOptionsCollection() as $option) {
  1381. -                $option->setProduct($this);
  1382. -                $this->addOption($option);
  1383. -            }
  1384. -        }
  1385. -        return $this;
  1386. -    }
  1387. -
  1388. -    /**
  1389. -     * Retrieve resource instance wrapper
  1390. -     *
  1391. -     * @return Mage_Catalog_Model_Resource_Eav_Mysql4_Product
  1392. -     */
  1393. -    protected function _getResource()
  1394. -    {
  1395. -        return parent::_getResource();
  1396. -    }
  1397. -
  1398. -    /**
  1399. -     * Clear cache related with product id
  1400. -     *
  1401. -     * @return Mage_Catalog_Model_Product
  1402. -     */
  1403. -    public function cleanCache()
  1404. -    {
  1405. -        Mage::app()->cleanCache('catalog_product_'.$this->getId());
  1406. -        return $this;
  1407. -    }
  1408. -
  1409. -    /**
  1410. -     * Get product price model
  1411. -     *
  1412. -     * @return Mage_Catalog_Model_Product_Type_Price
  1413. -     */
  1414. -    public function getPriceModel()
  1415. -    {
  1416. -        return Mage::getSingleton('catalog/product_type')->priceFactory($this->getTypeId());
  1417. -    }
  1418. -
  1419. -    /**
  1420. -     * Get product group price
  1421. -     *
  1422. -     * @return float
  1423. -     */
  1424. -    public function getGroupPrice()
  1425. -    {
  1426. -        return $this->getPriceModel()->getGroupPrice($this);
  1427. -    }
  1428. -
  1429. -    /**
  1430. -     * Get product tier price by qty
  1431. -     *
  1432. -     * @param   double $qty
  1433. -     * @return  double
  1434. -     */
  1435. -    public function getTierPrice($qty=null)
  1436. -    {
  1437. -        return $this->getPriceModel()->getTierPrice($qty, $this);
  1438. -    }
  1439. -
  1440. -    /**
  1441. -     * Count how many tier prices we have for the product
  1442. -     *
  1443. -     * @return  int
  1444. -     */
  1445. -    public function getTierPriceCount()
  1446. -    {
  1447. -        return $this->getPriceModel()->getTierPriceCount($this);
  1448. -    }
  1449. -
  1450. -    /**
  1451. -     * Get formated by currency tier price
  1452. -     *
  1453. -     * @param   double $qty
  1454. -     * @return  array || double
  1455. -     */
  1456. -    public function getFormatedTierPrice($qty=null)
  1457. -    {
  1458. -        return $this->getPriceModel()->getFormatedTierPrice($qty, $this);
  1459. -    }
  1460. -
  1461. -    /**
  1462. -     * Get formated by currency product price
  1463. -     *
  1464. -     * @return  array || double
  1465. -     */
  1466. -    public function getFormatedPrice()
  1467. -    {
  1468. -        return $this->getPriceModel()->getFormatedPrice($this);
  1469. -    }
  1470. -
  1471. -    /**
  1472. -     * Sets final price of product
  1473. -     *
  1474. -     * This func is equal to magic 'setFinalPrice()', but added as a separate func, because in cart with bundle
  1475. -     * products it's called very often in Item->getProduct(). So removing chain of magic with more cpu consuming
  1476. -     * algorithms gives nice optimization boost.
  1477. -     *
  1478. -     * @param float $price Price amount
  1479. -     * @return Mage_Catalog_Model_Product
  1480. -     */
  1481. -    public function setFinalPrice($price)
  1482. -    {
  1483. -        $this->_data['final_price'] = $price;
  1484. -        return $this;
  1485. -    }
  1486. -
  1487. -    /**
  1488. -     * Get product final price
  1489. -     *
  1490. -     * @param double $qty
  1491. -     * @return double
  1492. -     */
  1493. -    public function getFinalPrice($qty=null)
  1494. -    {
  1495. -        $price = $this->_getData('final_price');
  1496. -        if ($price !== null) {
  1497. -            return $price;
  1498. -        }
  1499. -        return $this->getPriceModel()->getFinalPrice($qty, $this);
  1500. -    }
  1501. -
  1502. -    /**
  1503. -     * Returns calculated final price
  1504. -     *
  1505. -     * @return float
  1506. -     */
  1507. -    public function getCalculatedFinalPrice()
  1508. -    {
  1509. -        return $this->_getData('calculated_final_price');
  1510. -    }
  1511. -
  1512. -    /**
  1513. -     * Returns minimal price
  1514. -     *
  1515. -     * @return float
  1516. -     */
  1517. -    public function getMinimalPrice()
  1518. -    {
  1519. -        return max($this->_getData('minimal_price'), 0);
  1520. -    }
  1521. -
  1522. -    /**
  1523. -     * Returns special price
  1524. -     *
  1525. -     * @return float
  1526. -     */
  1527. -    public function getSpecialPrice()
  1528. -    {
  1529. -        return $this->_getData('special_price');
  1530. -    }
  1531. -
  1532. -    /**
  1533. -     * Returns starting date of the special price
  1534. -     *
  1535. -     * @return mixed
  1536. -     */
  1537. -    public function getSpecialFromDate()
  1538. -    {
  1539. -        return $this->_getData('special_from_date');
  1540. -    }
  1541. -
  1542. -    /**
  1543. -     * Returns end date of the special price
  1544. -     *
  1545. -     * @return mixed
  1546. -     */
  1547. -    public function getSpecialToDate()
  1548. -    {
  1549. -        return $this->_getData('special_to_date');
  1550. -    }
  1551. -
  1552. -
  1553. -/*******************************************************************************
  1554. - ** Linked products API
  1555. - */
  1556. -    /**
  1557. -     * Retrieve array of related roducts
  1558. -     *
  1559. -     * @return array
  1560. -     */
  1561. -    public function getRelatedProducts()
  1562. -    {
  1563. -        if (!$this->hasRelatedProducts()) {
  1564. -            $products = array();
  1565. -            $collection = $this->getRelatedProductCollection();
  1566. -            foreach ($collection as $product) {
  1567. -                $products[] = $product;
  1568. -            }
  1569. -            $this->setRelatedProducts($products);
  1570. -        }
  1571. -        return $this->getData('related_products');
  1572. -    }
  1573. -
  1574. -    /**
  1575. -     * Retrieve related products identifiers
  1576. -     *
  1577. -     * @return array
  1578. -     */
  1579. -    public function getRelatedProductIds()
  1580. -    {
  1581. -        if (!$this->hasRelatedProductIds()) {
  1582. -            $ids = array();
  1583. -            foreach ($this->getRelatedProducts() as $product) {
  1584. -                $ids[] = $product->getId();
  1585. -            }
  1586. -            $this->setRelatedProductIds($ids);
  1587. -        }
  1588. -        return $this->getData('related_product_ids');
  1589. -    }
  1590. -
  1591. -    /**
  1592. -     * Retrieve collection related product
  1593. -     *
  1594. -     * @return Mage_Catalog_Model_Resource_Product_Link_Product_Collection
  1595. -     */
  1596. -    public function getRelatedProductCollection()
  1597. -    {
  1598. -        $collection = $this->getLinkInstance()->useRelatedLinks()
  1599. -            ->getProductCollection()
  1600. -            ->setIsStrongMode();
  1601. -        $collection->setProduct($this);
  1602. -        return $collection;
  1603. -    }
  1604. -
  1605. -    /**
  1606. -     * Retrieve collection related link
  1607. -     *
  1608. -     * @return Mage_Catalog_Model_Resource_Product_Link_Collection
  1609. -     */
  1610. -    public function getRelatedLinkCollection()
  1611. -    {
  1612. -        $collection = $this->getLinkInstance()->useRelatedLinks()
  1613. -            ->getLinkCollection();
  1614. -        $collection->setProduct($this);
  1615. -        $collection->addLinkTypeIdFilter();
  1616. -        $collection->addProductIdFilter();
  1617. -        $collection->joinAttributes();
  1618. -        return $collection;
  1619. -    }
  1620. -
  1621. -    /**
  1622. -     * Retrieve array of up sell products
  1623. -     *
  1624. -     * @return array
  1625. -     */
  1626. -    public function getUpSellProducts()
  1627. -    {
  1628. -        if (!$this->hasUpSellProducts()) {
  1629. -            $products = array();
  1630. -            foreach ($this->getUpSellProductCollection() as $product) {
  1631. -                $products[] = $product;
  1632. -            }
  1633. -            $this->setUpSellProducts($products);
  1634. -        }
  1635. -        return $this->getData('up_sell_products');
  1636. -    }
  1637. -
  1638. -    /**
  1639. -     * Retrieve up sell products identifiers
  1640. -     *
  1641. -     * @return array
  1642. -     */
  1643. -    public function getUpSellProductIds()
  1644. -    {
  1645. -        if (!$this->hasUpSellProductIds()) {
  1646. -            $ids = array();
  1647. -            foreach ($this->getUpSellProducts() as $product) {
  1648. -                $ids[] = $product->getId();
  1649. -            }
  1650. -            $this->setUpSellProductIds($ids);
  1651. -        }
  1652. -        return $this->getData('up_sell_product_ids');
  1653. -    }
  1654. -
  1655. -    /**
  1656. -     * Retrieve collection up sell product
  1657. -     *
  1658. -     * @return Mage_Catalog_Model_Resource_Product_Link_Product_Collection
  1659. -     */
  1660. -    public function getUpSellProductCollection()
  1661. -    {
  1662. -        $collection = $this->getLinkInstance()->useUpSellLinks()
  1663. -            ->getProductCollection()
  1664. -            ->setIsStrongMode();
  1665. -        $collection->setProduct($this);
  1666. -        return $collection;
  1667. -    }
  1668. -
  1669. -    /**
  1670. -     * Retrieve collection up sell link
  1671. -     *
  1672. -     * @return Mage_Catalog_Model_Resource_Product_Link_Collection
  1673. -     */
  1674. -    public function getUpSellLinkCollection()
  1675. -    {
  1676. -        $collection = $this->getLinkInstance()->useUpSellLinks()
  1677. -            ->getLinkCollection();
  1678. -        $collection->setProduct($this);
  1679. -        $collection->addLinkTypeIdFilter();
  1680. -        $collection->addProductIdFilter();
  1681. -        $collection->joinAttributes();
  1682. -        return $collection;
  1683. -    }
  1684. -
  1685. -    /**
  1686. -     * Retrieve array of cross sell products
  1687. -     *
  1688. -     * @return array
  1689. -     */
  1690. -    public function getCrossSellProducts()
  1691. -    {
  1692. -        if (!$this->hasCrossSellProducts()) {
  1693. -            $products = array();
  1694. -            foreach ($this->getCrossSellProductCollection() as $product) {
  1695. -                $products[] = $product;
  1696. -            }
  1697. -            $this->setCrossSellProducts($products);
  1698. -        }
  1699. -        return $this->getData('cross_sell_products');
  1700. -    }
  1701. -
  1702. -    /**
  1703. -     * Retrieve cross sell products identifiers
  1704. -     *
  1705. -     * @return array
  1706. -     */
  1707. -    public function getCrossSellProductIds()
  1708. -    {
  1709. -        if (!$this->hasCrossSellProductIds()) {
  1710. -            $ids = array();
  1711. -            foreach ($this->getCrossSellProducts() as $product) {
  1712. -                $ids[] = $product->getId();
  1713. -            }
  1714. -            $this->setCrossSellProductIds($ids);
  1715. -        }
  1716. -        return $this->getData('cross_sell_product_ids');
  1717. -    }
  1718. -
  1719. -    /**
  1720. -     * Retrieve collection cross sell product
  1721. -     *
  1722. -     * @return Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Link_Product_Collection
  1723. -     */
  1724. -    public function getCrossSellProductCollection()
  1725. -    {
  1726. -        $collection = $this->getLinkInstance()->useCrossSellLinks()
  1727. -            ->getProductCollection()
  1728. -            ->setIsStrongMode();
  1729. -        $collection->setProduct($this);
  1730. -        return $collection;
  1731. -    }
  1732. -
  1733. -    /**
  1734. -     * Retrieve collection cross sell link
  1735. -     *
  1736. -     * @return Mage_Catalog_Model_Resource_Product_Link_Collection
  1737. -     */
  1738. -    public function getCrossSellLinkCollection()
  1739. -    {
  1740. -        $collection = $this->getLinkInstance()->useCrossSellLinks()
  1741. -            ->getLinkCollection();
  1742. -        $collection->setProduct($this);
  1743. -        $collection->addLinkTypeIdFilter();
  1744. -        $collection->addProductIdFilter();
  1745. -        $collection->joinAttributes();
  1746. -        return $collection;
  1747. -    }
  1748. -
  1749. -    /**
  1750. -     * Retrieve collection grouped link
  1751. -     *
  1752. -     * @return Mage_Catalog_Model_Resource_Product_Link_Collection
  1753. -     */
  1754. -    public function getGroupedLinkCollection()
  1755. -    {
  1756. -        $collection = $this->getLinkInstance()->useGroupedLinks()
  1757. -            ->getLinkCollection();
  1758. -        $collection->setProduct($this);
  1759. -        $collection->addLinkTypeIdFilter();
  1760. -        $collection->addProductIdFilter();
  1761. -        $collection->joinAttributes();
  1762. -        return $collection;
  1763. -    }
  1764. -
  1765. -/*******************************************************************************
  1766. - ** Media API
  1767. - */
  1768. -    /**
  1769. -     * Retrive attributes for media gallery
  1770. -     *
  1771. -     * @return array
  1772. -     */
  1773. -    public function getMediaAttributes()
  1774. -    {
  1775. -        if (!$this->hasMediaAttributes()) {
  1776. -            $mediaAttributes = array();
  1777. -            foreach ($this->getAttributes() as $attribute) {
  1778. -                if($attribute->getFrontend()->getInputType() == 'media_image') {
  1779. -                    $mediaAttributes[$attribute->getAttributeCode()] = $attribute;
  1780. -                }
  1781. -            }
  1782. -            $this->setMediaAttributes($mediaAttributes);
  1783. -        }
  1784. -        return $this->getData('media_attributes');
  1785. -    }
  1786. -
  1787. -    /**
  1788. -     * Retrive media gallery images
  1789. -     *
  1790. -     * @return Varien_Data_Collection
  1791. -     */
  1792. -    public function getMediaGalleryImages()
  1793. -    {
  1794. -        if(!$this->hasData('media_gallery_images') && is_array($this->getMediaGallery('images'))) {
  1795. -            $images = new Varien_Data_Collection();
  1796. -            foreach ($this->getMediaGallery('images') as $image) {
  1797. -                if ($image['disabled']) {
  1798. -                    continue;
  1799. -                }
  1800. -                $image['url'] = $this->getMediaConfig()->getMediaUrl($image['file']);
  1801. -                $image['id'] = isset($image['value_id']) ? $image['value_id'] : null;
  1802. -                $image['path'] = $this->getMediaConfig()->getMediaPath($image['file']);
  1803. -                $images->addItem(new Varien_Object($image));
  1804. -            }
  1805. -            $this->setData('media_gallery_images', $images);
  1806. -        }
  1807. -
  1808. -        return $this->getData('media_gallery_images');
  1809. -    }
  1810. -
  1811. -    /**
  1812. -     * Add image to media gallery
  1813. -     *
  1814. -     * @param string        $file              file path of image in file system
  1815. -     * @param string|array  $mediaAttribute    code of attribute with type 'media_image',
  1816. -     *                                          leave blank if image should be only in gallery
  1817. -     * @param boolean       $move              if true, it will move source file
  1818. -     * @param boolean       $exclude           mark image as disabled in product page view
  1819. -     * @return Mage_Catalog_Model_Product
  1820. -     */
  1821. -    public function addImageToMediaGallery($file, $mediaAttribute=null, $move=false, $exclude=true)
  1822. -    {
  1823. -        $attributes = $this->getTypeInstance(true)->getSetAttributes($this);
  1824. -        if (!isset($attributes['media_gallery'])) {
  1825. -            return $this;
  1826. -        }
  1827. -        $mediaGalleryAttribute = $attributes['media_gallery'];
  1828. -        /* @var $mediaGalleryAttribute Mage_Catalog_Model_Resource_Eav_Attribute */
  1829. -        $mediaGalleryAttribute->getBackend()->addImage($this, $file, $mediaAttribute, $move, $exclude);
  1830. -        return $this;
  1831. -    }
  1832. -
  1833. -    /**
  1834. -     * Retrive product media config
  1835. -     *
  1836. -     * @return Mage_Catalog_Model_Product_Media_Config
  1837. -     */
  1838. -    public function getMediaConfig()
  1839. -    {
  1840. -        return Mage::getSingleton('catalog/product_media_config');
  1841. -    }
  1842. -
  1843. -    /**
  1844. -     * Create duplicate
  1845. -     *
  1846. -     * @return Mage_Catalog_Model_Product
  1847. -     */
  1848. -    public function duplicate()
  1849. -    {
  1850. -        $this->getWebsiteIds();
  1851. -        $this->getCategoryIds();
  1852. -
  1853. -        /* @var $newProduct Mage_Catalog_Model_Product */
  1854. -        $newProduct = Mage::getModel('catalog/product')->setData($this->getData())
  1855. -            ->setIsDuplicate(true)
  1856. -            ->setOriginalId($this->getId())
  1857. -            ->setSku(null)
  1858. -            ->setStatus(Mage_Catalog_Model_Product_Status::STATUS_DISABLED)
  1859. -            ->setCreatedAt(null)
  1860. -            ->setUpdatedAt(null)
  1861. -            ->setId(null)
  1862. -            ->setStoreId(Mage::app()->getStore()->getId());
  1863. -
  1864. -        Mage::dispatchEvent(
  1865. -            'catalog_model_product_duplicate',
  1866. -            array('current_product' => $this, 'new_product' => $newProduct)
  1867. -        );
  1868. -
  1869. -        /* Prepare Related*/
  1870. -        $data = array();
  1871. -        $this->getLinkInstance()->useRelatedLinks();
  1872. -        $attributes = array();
  1873. -        foreach ($this->getLinkInstance()->getAttributes() as $_attribute) {
  1874. -            if (isset($_attribute['code'])) {
  1875. -                $attributes[] = $_attribute['code'];
  1876. -            }
  1877. -        }
  1878. -        foreach ($this->getRelatedLinkCollection() as $_link) {
  1879. -            $data[$_link->getLinkedProductId()] = $_link->toArray($attributes);
  1880. -        }
  1881. -        $newProduct->setRelatedLinkData($data);
  1882. -
  1883. -        /* Prepare UpSell*/
  1884. -        $data = array();
  1885. -        $this->getLinkInstance()->useUpSellLinks();
  1886. -        $attributes = array();
  1887. -        foreach ($this->getLinkInstance()->getAttributes() as $_attribute) {
  1888. -            if (isset($_attribute['code'])) {
  1889. -                $attributes[] = $_attribute['code'];
  1890. -            }
  1891. -        }
  1892. -        foreach ($this->getUpSellLinkCollection() as $_link) {
  1893. -            $data[$_link->getLinkedProductId()] = $_link->toArray($attributes);
  1894. -        }
  1895. -        $newProduct->setUpSellLinkData($data);
  1896. -
  1897. -        /* Prepare Cross Sell */
  1898. -        $data = array();
  1899. -        $this->getLinkInstance()->useCrossSellLinks();
  1900. -        $attributes = array();
  1901. -        foreach ($this->getLinkInstance()->getAttributes() as $_attribute) {
  1902. -            if (isset($_attribute['code'])) {
  1903. -                $attributes[] = $_attribute['code'];
  1904. -            }
  1905. -        }
  1906. -        foreach ($this->getCrossSellLinkCollection() as $_link) {
  1907. -            $data[$_link->getLinkedProductId()] = $_link->toArray($attributes);
  1908. -        }
  1909. -        $newProduct->setCrossSellLinkData($data);
  1910. -
  1911. -        /* Prepare Grouped */
  1912. -        $data = array();
  1913. -        $this->getLinkInstance()->useGroupedLinks();
  1914. -        $attributes = array();
  1915. -        foreach ($this->getLinkInstance()->getAttributes() as $_attribute) {
  1916. -            if (isset($_attribute['code'])) {
  1917. -                $attributes[] = $_attribute['code'];
  1918. -            }
  1919. -        }
  1920. -        foreach ($this->getGroupedLinkCollection() as $_link) {
  1921. -            $data[$_link->getLinkedProductId()] = $_link->toArray($attributes);
  1922. -        }
  1923. -        $newProduct->setGroupedLinkData($data);
  1924. -
  1925. -        $newProduct->save();
  1926. -
  1927. -        $this->getOptionInstance()->duplicate($this->getId(), $newProduct->getId());
  1928. -        $this->getResource()->duplicate($this->getId(), $newProduct->getId());
  1929. -
  1930. -        // TODO - duplicate product on all stores of the websites it is associated with
  1931. -        /*if ($storeIds = $this->getWebsiteIds()) {
  1932. -            foreach ($storeIds as $storeId) {
  1933. -                $this->setStoreId($storeId)
  1934. -                   ->load($this->getId());
  1935. -
  1936. -                $newProduct->setData($this->getData())
  1937. -                    ->setSku(null)
  1938. -                    ->setStatus(Mage_Catalog_Model_Product_Status::STATUS_DISABLED)
  1939. -                    ->setId($newId)
  1940. -                    ->save();
  1941. -            }
  1942. -        }*/
  1943. -        return $newProduct;
  1944. -    }
  1945. -
  1946. -    /**
  1947. -     * Is product grouped
  1948. -     *
  1949. -     * @return bool
  1950. -     */
  1951. -    public function isSuperGroup()
  1952. -    {
  1953. -        return $this->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_GROUPED;
  1954. -    }
  1955. -
  1956. -    /**
  1957. -     * Alias for isConfigurable()
  1958. -     *
  1959. -     * @return bool
  1960. -     */
  1961. -    public function isSuperConfig()
  1962. -    {
  1963. -        return $this->isConfigurable();
  1964. -    }
  1965. -    /**
  1966. -     * Check is product grouped
  1967. -     *
  1968. -     * @return bool
  1969. -     */
  1970. -    public function isGrouped()
  1971. -    {
  1972. -        return $this->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_GROUPED;
  1973. -    }
  1974. -
  1975. -    /**
  1976. -     * Check is product configurable
  1977. -     *
  1978. -     * @return bool
  1979. -     */
  1980. -    public function isConfigurable()
  1981. -    {
  1982. -        return $this->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE;
  1983. -    }
  1984. -
  1985. -    /**
  1986. -     * Whether product configurable or grouped
  1987. -     *
  1988. -     * @return bool
  1989. -     */
  1990. -    public function isSuper()
  1991. -    {
  1992. -        return $this->isConfigurable() || $this->isGrouped();
  1993. -    }
  1994. -
  1995. -    /**
  1996. -     * Returns visible status IDs in catalog
  1997. -     *
  1998. -     * @return array
  1999. -     */
  2000. -    public function getVisibleInCatalogStatuses()
  2001. -    {
  2002. -        return Mage::getSingleton('catalog/product_status')->getVisibleStatusIds();
  2003. -    }
  2004. -
  2005. -    /**
  2006. -     * Retrieve visible statuses
  2007. -     *
  2008. -     * @return array
  2009. -     */
  2010. -    public function getVisibleStatuses()
  2011. -    {
  2012. -        return Mage::getSingleton('catalog/product_status')->getVisibleStatusIds();
  2013. -    }
  2014. -
  2015. -    /**
  2016. -     * Check Product visilbe in catalog
  2017. -     *
  2018. -     * @return bool
  2019. -     */
  2020. -    public function isVisibleInCatalog()
  2021. -    {
  2022. -        return in_array($this->getStatus(), $this->getVisibleInCatalogStatuses());
  2023. -    }
  2024. -
  2025. -    /**
  2026. -     * Retrieve visible in site visibilities
  2027. -     *
  2028. -     * @return array
  2029. -     */
  2030. -    public function getVisibleInSiteVisibilities()
  2031. -    {
  2032. -        return Mage::getSingleton('catalog/product_visibility')->getVisibleInSiteIds();
  2033. -    }
  2034. -
  2035. -    /**
  2036. -     * Check Product visible in site
  2037. -     *
  2038. -     * @return bool
  2039. -     */
  2040. -    public function isVisibleInSiteVisibility()
  2041. -    {
  2042. -        return in_array($this->getVisibility(), $this->getVisibleInSiteVisibilities());
  2043. -    }
  2044. -
  2045. -    /**
  2046. -     * Checks product can be duplicated
  2047. -     *
  2048. -     * @return boolean
  2049. -     */
  2050. -    public function isDuplicable()
  2051. -    {
  2052. -        return $this->_isDuplicable;
  2053. -    }
  2054. -
  2055. -    /**
  2056. -     * Set is duplicable flag
  2057. -     *
  2058. -     * @param boolean $value
  2059. -     * @return Mage_Catalog_Model_Product
  2060. -     */
  2061. -    public function setIsDuplicable($value)
  2062. -    {
  2063. -        $this->_isDuplicable = (boolean) $value;
  2064. -        return $this;
  2065. -    }
  2066. -
  2067. -
  2068. -    /**
  2069. -     * Check is product available for sale
  2070. -     *
  2071. -     * @return bool
  2072. -     */
  2073. -    public function isSalable()
  2074. -    {
  2075. -        Mage::dispatchEvent('catalog_product_is_salable_before', array(
  2076. -            'product'   => $this
  2077. -        ));
  2078. -
  2079. -        $salable = $this->isAvailable();
  2080. -
  2081. -        $object = new Varien_Object(array(
  2082. -            'product'    => $this,
  2083. -            'is_salable' => $salable
  2084. -        ));
  2085. -        Mage::dispatchEvent('catalog_product_is_salable_after', array(
  2086. -            'product'   => $this,
  2087. -            'salable'   => $object
  2088. -        ));
  2089. -        return $object->getIsSalable();
  2090. -    }
  2091. -
  2092. -    /**
  2093. -     * Check whether the product type or stock allows to purchase the product
  2094. -     *
  2095. -     * @return bool
  2096. -     */
  2097. -    public function isAvailable()
  2098. -    {
  2099. -        return $this->getTypeInstance(true)->isSalable($this)
  2100. -            || Mage::helper('catalog/product')->getSkipSaleableCheck();
  2101. -    }
  2102. -
  2103. -    /**
  2104. -     * Is product salable detecting by product type
  2105. -     *
  2106. -     * @return bool
  2107. -     */
  2108. -    public function getIsSalable()
  2109. -    {
  2110. -        $productType = $this->getTypeInstance(true);
  2111. -        if (method_exists($productType, 'getIsSalable')) {
  2112. -            return $productType->getIsSalable($this);
  2113. -        }
  2114. -        if ($this->hasData('is_salable')) {
  2115. -            return $this->getData('is_salable');
  2116. -        }
  2117. -
  2118. -        return $this->isSalable();
  2119. -    }
  2120. -
  2121. -    /**
  2122. -     * Check is a virtual product
  2123. -     * Data helper wrapper
  2124. -     *
  2125. -     * @return bool
  2126. -     */
  2127. -    public function isVirtual()
  2128. -    {
  2129. -        return $this->getIsVirtual();
  2130. -    }
  2131. -
  2132. -    /**
  2133. -     * Whether the product is a recurring payment
  2134. -     *
  2135. -     * @return bool
  2136. -     */
  2137. -    public function isRecurring()
  2138. -    {
  2139. -        return $this->getIsRecurring() == '1';
  2140. -    }
  2141. -
  2142. -    /**
  2143. -     * Alias for isSalable()
  2144. -     *
  2145. -     * @return bool
  2146. -     */
  2147. -    public function isSaleable()
  2148. -    {
  2149. -        return $this->isSalable();
  2150. -    }
  2151. -
  2152. -    /**
  2153. -     * Whether product available in stock
  2154. -     *
  2155. -     * @return bool
  2156. -     */
  2157. -    public function isInStock()
  2158. -    {
  2159. -        return $this->getStatus() == Mage_Catalog_Model_Product_Status::STATUS_ENABLED;
  2160. -    }
  2161. -
  2162. -    /**
  2163. -     * Get attribute text by its code
  2164. -     *
  2165. -     * @param $attributeCode Code of the attribute
  2166. -     * @return string
  2167. -     */
  2168. -    public function getAttributeText($attributeCode)
  2169. -    {
  2170. -        return $this->getResource()
  2171. -            ->getAttribute($attributeCode)
  2172. -                ->getSource()
  2173. -                    ->getOptionText($this->getData($attributeCode));
  2174. -    }
  2175. -
  2176. -    /**
  2177. -     * Returns array with dates for custom design
  2178. -     *
  2179. -     * @return array
  2180. -     */
  2181. -    public function getCustomDesignDate()
  2182. -    {
  2183. -        $result = array();
  2184. -        $result['from'] = $this->getData('custom_design_from');
  2185. -        $result['to'] = $this->getData('custom_design_to');
  2186. -
  2187. -        return $result;
  2188. -    }
  2189. -
  2190. -    /**
  2191. -     * Retrieve Product URL
  2192. -     *
  2193. -     * @param  bool $useSid
  2194. -     * @return string
  2195. -     */
  2196. -    public function getProductUrl($useSid = null)
  2197. -    {
  2198. -        return $this->getUrlModel()->getProductUrl($this, $useSid);
  2199. -    }
  2200. -
  2201. -    /**
  2202. -     * Retrieve URL in current store
  2203. -     *
  2204. -     * @param array $params the route params
  2205. -     * @return string
  2206. -     */
  2207. -    public function getUrlInStore($params = array())
  2208. -    {
  2209. -        return $this->getUrlModel()->getUrlInStore($this, $params);
  2210. -    }
  2211. -
  2212. -    /**
  2213. -     * Formats URL key
  2214. -     *
  2215. -     * @param $str URL
  2216. -     * @return string
  2217. -     */
  2218. -    public function formatUrlKey($str)
  2219. -    {
  2220. -        return $this->getUrlModel()->formatUrlKey($str);
  2221. -    }
  2222. -
  2223. -    /**
  2224. -     * Retrieve Product Url Path (include category)
  2225. -     *
  2226. -     * @param Mage_Catalog_Model_Category $category
  2227. -     * @return string
  2228. -     */
  2229. -    public function getUrlPath($category=null)
  2230. -    {
  2231. -        return $this->getUrlModel()->getUrlPath($this, $category);
  2232. -    }
  2233. -
  2234. -    /**
  2235. -     * Save current attribute with code $code and assign new value
  2236. -     *
  2237. -     * @param string $code  Attribute code
  2238. -     * @param mixed  $value New attribute value
  2239. -     * @param int    $store Store ID
  2240. -     * @return void
  2241. -     */
  2242. -    public function addAttributeUpdate($code, $value, $store)
  2243. -    {
  2244. -        $oldValue = $this->getData($code);
  2245. -        $oldStore = $this->getStoreId();
  2246. -
  2247. -        $this->setData($code, $value);
  2248. -        $this->setStoreId($store);
  2249. -        $this->getResource()->saveAttribute($this, $code);
  2250. -
  2251. -        $this->setData($code, $oldValue);
  2252. -        $this->setStoreId($oldStore);
  2253. -    }
  2254. -
  2255. -    /**
  2256. -     * Renders the object to array
  2257. -     *
  2258. -     * @param array $arrAttributes Attribute array
  2259. -     * @return array
  2260. -     */
  2261. -    public function toArray(array $arrAttributes=array())
  2262. -    {
  2263. -        $data = parent::toArray($arrAttributes);
  2264. -        if ($stock = $this->getStockItem()) {
  2265. -            $data['stock_item'] = $stock->toArray();
  2266. -        }
  2267. -        unset($data['stock_item']['product']);
  2268. -        return $data;
  2269. -    }
  2270. -
  2271. -    /**
  2272. -     * Same as setData(), but also initiates the stock item (if it is there)
  2273. -     *
  2274. -     * @param array $data Array to form the object from
  2275. -     * @return Mage_Catalog_Model_Product
  2276. -     */
  2277. -    public function fromArray($data)
  2278. -    {
  2279. -        if (isset($data['stock_item'])) {
  2280. -            if (Mage::helper('catalog')->isModuleEnabled('Mage_CatalogInventory')) {
  2281. -                $stockItem = Mage::getModel('cataloginventory/stock_item')
  2282. -                    ->setData($data['stock_item'])
  2283. -                    ->setProduct($this);
  2284. -                $this->setStockItem($stockItem);
  2285. -            }
  2286. -            unset($data['stock_item']);
  2287. -        }
  2288. -        $this->setData($data);
  2289. -        return $this;
  2290. -    }
  2291. -
  2292. -    /**
  2293. -     * @deprecated after 1.4.2.0
  2294. -     * @return Mage_Catalog_Model_Product
  2295. -     */
  2296. -    public function loadParentProductIds()
  2297. -    {
  2298. -        return $this->setParentProductIds(array());
  2299. -    }
  2300. -
  2301. -    /**
  2302. -     * Delete product
  2303. -     *
  2304. -     * @return Mage_Catalog_Model_Product
  2305. -     */
  2306. -    public function delete()
  2307. -    {
  2308. -        parent::delete();
  2309. -        Mage::dispatchEvent($this->_eventPrefix.'_delete_after_done', array($this->_eventObject=>$this));
  2310. -        return $this;
  2311. -    }
  2312. -
  2313. -    /**
  2314. -     * Returns request path
  2315. -     *
  2316. -     * @return string
  2317. -     */
  2318. -    public function getRequestPath()
  2319. -    {
  2320. -        if (!$this->_getData('request_path')) {
  2321. -            $this->getProductUrl();
  2322. -        }
  2323. -        return $this->_getData('request_path');
  2324. -    }
  2325. -
  2326. -    /**
  2327. -     * Custom function for other modules
  2328. -     * @return string
  2329. -     */
  2330. -
  2331. -    public function getGiftMessageAvailable()
  2332. -    {
  2333. -        return $this->_getData('gift_message_available');
  2334. -    }
  2335. -
  2336. -    /**
  2337. -     * Returns rating summary
  2338. -     *
  2339. -     * @return mixed
  2340. -     */
  2341. -    public function getRatingSummary()
  2342. -    {
  2343. -        return $this->_getData('rating_summary');
  2344. -    }
  2345. -
  2346. -    /**
  2347. -     * Check is product composite
  2348. -     *
  2349. -     * @return bool
  2350. -     */
  2351. -    public function isComposite()
  2352. -    {
  2353. -        return $this->getTypeInstance(true)->isComposite($this);
  2354. -    }
  2355. -
  2356. -    /**
  2357. -     * Check if product can be configured
  2358. -     *
  2359. -     * @return bool
  2360. -     */
  2361. -    public function canConfigure()
  2362. -    {
  2363. -        $options = $this->getOptions();
  2364. -        return !empty($options) || $this->getTypeInstance(true)->canConfigure($this);
  2365. -    }
  2366. -
  2367. -    /**
  2368. -     * Retrieve sku through type instance
  2369. -     *
  2370. -     * @return string
  2371. -     */
  2372. -    public function getSku()
  2373. -    {
  2374. -        return $this->getTypeInstance(true)->getSku($this);
  2375. -    }
  2376. -
  2377. -    /**
  2378. -     * Retrieve weight throught type instance
  2379. -     *
  2380. -     * @return unknown
  2381. -     */
  2382. -    public function getWeight()
  2383. -    {
  2384. -        return $this->getTypeInstance(true)->getWeight($this);
  2385. -    }
  2386. -
  2387. -    /**
  2388. -     * Retrieve option instance
  2389. -     *
  2390. -     * @return Mage_Catalog_Model_Product_Option
  2391. -     */
  2392. -    public function getOptionInstance()
  2393. -    {
  2394. -        if (!$this->_optionInstance) {
  2395. -            $this->_optionInstance = Mage::getSingleton('catalog/product_option');
  2396. -        }
  2397. -        return $this->_optionInstance;
  2398. -    }
  2399. -
  2400. -    /**
  2401. -     * Retrieve options collection of product
  2402. -     *
  2403. -     * @return Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Option_Collection
  2404. -     */
  2405. -    public function getProductOptionsCollection()
  2406. -    {
  2407. -        $collection = $this->getOptionInstance()
  2408. -            ->getProductOptionCollection($this);
  2409. -
  2410. -        return $collection;
  2411. -    }
  2412. -
  2413. -    /**
  2414. -     * Add option to array of product options
  2415. -     *
  2416. -     * @param Mage_Catalog_Model_Product_Option $option
  2417. -     * @return Mage_Catalog_Model_Product
  2418. -     */
  2419. -    public function addOption(Mage_Catalog_Model_Product_Option $option)
  2420. -    {
  2421. -        $this->_options[$option->getId()] = $option;
  2422. -        return $this;
  2423. -    }
  2424. -
  2425. -    /**
  2426. -     * Get option from options array of product by given option id
  2427. -     *
  2428. -     * @param int $optionId
  2429. -     * @return Mage_Catalog_Model_Product_Option | null
  2430. -     */
  2431. -    public function getOptionById($optionId)
  2432. -    {
  2433. -        if (isset($this->_options[$optionId])) {
  2434. -            return $this->_options[$optionId];
  2435. -        }
  2436. -
  2437. -        return null;
  2438. -    }
  2439. -
  2440. -    /**
  2441. -     * Get all options of product
  2442. -     *
  2443. -     * @return array
  2444. -     */
  2445. -    public function getOptions()
  2446. -    {
  2447. -        return $this->_options;
  2448. -    }
  2449. -
  2450. -    /**
  2451. -     * Retrieve is a virtual product
  2452. -     *
  2453. -     * @return bool
  2454. -     */
  2455. -    public function getIsVirtual()
  2456. -    {
  2457. -        return $this->getTypeInstance(true)->isVirtual($this);
  2458. -    }
  2459. -
  2460. -    /**
  2461. -     * Add custom option information to product
  2462. -     *
  2463. -     * @param   string $code    Option code
  2464. -     * @param   mixed  $value   Value of the option
  2465. -     * @param   int    $product Product ID
  2466. -     * @return  Mage_Catalog_Model_Product
  2467. -     */
  2468. -    public function addCustomOption($code, $value, $product=null)
  2469. -    {
  2470. -        $product = $product ? $product : $this;
  2471. -        $option = Mage::getModel('catalog/product_configuration_item_option')
  2472. -            ->addData(array(
  2473. -                'product_id'=> $product->getId(),
  2474. -                'product'   => $product,
  2475. -                'code'      => $code,
  2476. -                'value'     => $value,
  2477. -            ));
  2478. -        $this->_customOptions[$code] = $option;
  2479. -        return $this;
  2480. -    }
  2481. -
  2482. -    /**
  2483. -     * Sets custom options for the product
  2484. -     *
  2485. -     * @param array $options Array of options
  2486. -     * @return void
  2487. -     */
  2488. -    public function setCustomOptions(array $options)
  2489. -    {
  2490. -        $this->_customOptions = $options;
  2491. -    }
  2492. -
  2493. -    /**
  2494. -     * Get all custom options of the product
  2495. -     *
  2496. -     * @return array
  2497. -     */
  2498. -    public function getCustomOptions()
  2499. -    {
  2500. -        return $this->_customOptions;
  2501. -    }
  2502. -
  2503. -    /**
  2504. -     * Get product custom option info
  2505. -     *
  2506. -     * @param   string $code
  2507. -     * @return  array
  2508. -     */
  2509. -    public function getCustomOption($code)
  2510. -    {
  2511. -        if (isset($this->_customOptions[$code])) {
  2512. -            return $this->_customOptions[$code];
  2513. -        }
  2514. -        return null;
  2515. -    }
  2516. -
  2517. -    /**
  2518. -     * Checks if there custom option for this product
  2519. -     *
  2520. -     * @return bool
  2521. -     */
  2522. -    public function hasCustomOptions()
  2523. -    {
  2524. -        if (count($this->_customOptions)) {
  2525. -            return true;
  2526. -        } else {
  2527. -            return false;
  2528. -        }
  2529. -    }
  2530. -
  2531. -    /**
  2532. -     * Check availability display product in category
  2533. -     *
  2534. -     * @param   int $categoryId
  2535. -     * @return  bool
  2536. -     */
  2537. -    public function canBeShowInCategory($categoryId)
  2538. -    {
  2539. -        return $this->_getResource()->canBeShowInCategory($this, $categoryId);
  2540. -    }
  2541. -
  2542. -    /**
  2543. -     * Retrieve category ids where product is available
  2544. -     *
  2545. -     * @return array
  2546. -     */
  2547. -    public function getAvailableInCategories()
  2548. -    {
  2549. -        return $this->_getResource()->getAvailableInCategories($this);
  2550. -    }
  2551. -
  2552. -    /**
  2553. -     * Retrieve default attribute set id
  2554. -     *
  2555. -     * @return int
  2556. -     */
  2557. -    public function getDefaultAttributeSetId()
  2558. -    {
  2559. -        return $this->getResource()->getEntityType()->getDefaultAttributeSetId();
  2560. -    }
  2561. -
  2562. -    /**
  2563. -     * Return Catalog Product Image helper instance
  2564. -     *
  2565. -     * @return Mage_Catalog_Helper_Image
  2566. -     */
  2567. -    protected function _getImageHelper()
  2568. -    {
  2569. -        return Mage::helper('catalog/image');
  2570. -    }
  2571. -
  2572. -    /**
  2573. -     * Return re-sized image URL
  2574. -     *
  2575. -     * @deprecated since 1.1.5
  2576. -     * @return string
  2577. -     */
  2578. -    public function getImageUrl()
  2579. -    {
  2580. -        return (string)$this->_getImageHelper()->init($this, 'image')->resize(265);
  2581. -    }
  2582. -
  2583. -    /**
  2584. -     * Return re-sized small image URL
  2585. -     *
  2586. -     * @deprecated since 1.1.5
  2587. -     * @param int $width
  2588. -     * @param int $height
  2589. -     * @return string
  2590. -     */
  2591. -    public function getSmallImageUrl($width = 88, $height = 77)
  2592. -    {
  2593. -        return (string)$this->_getImageHelper()->init($this, 'small_image')->resize($width, $height);
  2594. -    }
  2595. -
  2596. -    /**
  2597. -     * Return re-sized thumbnail image URL
  2598. -     *
  2599. -     * @deprecated since 1.1.5
  2600. -     * @param int $width
  2601. -     * @param int $height
  2602. -     * @return string
  2603. -     */
  2604. -    public function getThumbnailUrl($width = 75, $height = 75)
  2605. -    {
  2606. -        return (string)$this->_getImageHelper()->init($this, 'thumbnail')->resize($width, $height);
  2607. -    }
  2608. -
  2609. -    /**
  2610. -     *  Returns system reserved attribute codes
  2611. -     *
  2612. -     *  @return array Reserved attribute names
  2613. -     */
  2614. -    public function getReservedAttributes()
  2615. -    {
  2616. -        if ($this->_reservedAttributes === null) {
  2617. -            $_reserved = array('position');
  2618. -            $methods = get_class_methods(__CLASS__);
  2619. -            foreach ($methods as $method) {
  2620. -                if (preg_match('/^get([A-Z]{1}.+)/', $method, $matches)) {
  2621. -                    $method = $matches[1];
  2622. -                    $tmp = strtolower(preg_replace('/(.)([A-Z])/', "$1_$2", $method));
  2623. -                    $_reserved[] = $tmp;
  2624. -                }
  2625. -            }
  2626. -            $_allowed = array(
  2627. -                'type_id','calculated_final_price','request_path','rating_summary'
  2628. -            );
  2629. -            $this->_reservedAttributes = array_diff($_reserved, $_allowed);
  2630. -        }
  2631. -        return $this->_reservedAttributes;
  2632. -    }
  2633. -
  2634. -    /**
  2635. -     *  Check whether attribute reserved or not
  2636. -     *
  2637. -     *  @param Mage_Catalog_Model_Entity_Attribute $attribute Attribute model object
  2638. -     *  @return boolean
  2639. -     */
  2640. -    public function isReservedAttribute ($attribute)
  2641. -    {
  2642. -        return $attribute->getIsUserDefined()
  2643. -            && in_array($attribute->getAttributeCode(), $this->getReservedAttributes());
  2644. -    }
  2645. -
  2646. -    /**
  2647. -     * Set original loaded data if needed
  2648. -     *
  2649. -     * @param string $key
  2650. -     * @param mixed $data
  2651. -     * @return Varien_Object
  2652. -     */
  2653. -    public function setOrigData($key=null, $data=null)
  2654. -    {
  2655. -        if (Mage::app()->getStore()->isAdmin()) {
  2656. -            return parent::setOrigData($key, $data);
  2657. -        }
  2658. -
  2659. -        return $this;
  2660. -    }
  2661. -
  2662. -    /**
  2663. -     * Reset all model data
  2664. -     *
  2665. -     * @return Mage_Catalog_Model_Product
  2666. -     */
  2667. -    public function reset()
  2668. -    {
  2669. -        $this->unlockAttributes();
  2670. -        $this->_clearData();
  2671. -        return $this;
  2672. -    }
  2673. -
  2674. -    /**
  2675. -     * Get cahce tags associated with object id
  2676. -     *
  2677. -     * @return array
  2678. -     */
  2679. -    public function getCacheIdTags()
  2680. -    {
  2681. -        $tags = parent::getCacheIdTags();
  2682. -        $affectedCategoryIds = $this->getAffectedCategoryIds();
  2683. -        if (!$affectedCategoryIds) {
  2684. -            $affectedCategoryIds = $this->getCategoryIds();
  2685. -        }
  2686. -        foreach ($affectedCategoryIds as $categoryId) {
  2687. -            $tags[] = Mage_Catalog_Model_Category::CACHE_TAG.'_'.$categoryId;
  2688. -        }
  2689. -        return $tags;
  2690. -    }
  2691. -
  2692. -    /**
  2693. -     * Check for empty SKU on each product
  2694. -     *
  2695. -     * @param  array $productIds
  2696. -     * @return boolean|null
  2697. -     */
  2698. -    public function isProductsHasSku(array $productIds)
  2699. -    {
  2700. -        $products = $this->_getResource()->getProductsSku($productIds);
  2701. -        if (count($products)) {
  2702. -            foreach ($products as $product) {
  2703. -                if (!strlen($product['sku'])) {
  2704. -                    return false;
  2705. -                }
  2706. -            }
  2707. -            return true;
  2708. -        }
  2709. -        return null;
  2710. -    }
  2711. -
  2712. -    /**
  2713. -     * Parse buyRequest into options values used by product
  2714. -     *
  2715. -     * @param  Varien_Object $buyRequest
  2716. -     * @return Varien_Object
  2717. -     */
  2718. -    public function processBuyRequest(Varien_Object $buyRequest)
  2719. -    {
  2720. -        $options = new Varien_Object();
  2721. -
  2722. -        /* add product custom options data */
  2723. -        $customOptions = $buyRequest->getOptions();
  2724. -        if (is_array($customOptions)) {
  2725. -            $options->setOptions(array_diff($buyRequest->getOptions(), array('')));
  2726. -        }
  2727. -
  2728. -        /* add product type selected options data */
  2729. -        $type = $this->getTypeInstance(true);
  2730. -        $typeSpecificOptions = $type->processBuyRequest($this, $buyRequest);
  2731. -        $options->addData($typeSpecificOptions);
  2732. -
  2733. -        /* check correctness of product's options */
  2734. -        $options->setErrors($type->checkProductConfiguration($this, $buyRequest));
  2735. -
  2736. -        return $options;
  2737. -    }
  2738. -
  2739. -    /**
  2740. -     * Get preconfigured values from product
  2741. -     *
  2742. -     * @return Varien_Object
  2743. -     */
  2744. -    public function getPreconfiguredValues()
  2745. -    {
  2746. -        $preconfiguredValues = $this->getData('preconfigured_values');
  2747. -        if (!$preconfiguredValues) {
  2748. -            $preconfiguredValues = new Varien_Object();
  2749. -        }
  2750. -
  2751. -        return $preconfiguredValues;
  2752. -    }
  2753. -
  2754. -    /**
  2755. -     * Prepare product custom options.
  2756. -     * To be sure that all product custom options does not has ID and has product instance
  2757. -     *
  2758. -     * @return Mage_Catalog_Model_Product
  2759. -     */
  2760. -    public function prepareCustomOptions()
  2761. -    {
  2762. -        foreach ($this->getCustomOptions() as $option) {
  2763. -            if (!is_object($option->getProduct()) || $option->getId()) {
  2764. -                $this->addCustomOption($option->getCode(), $option->getValue());
  2765. -            }
  2766. -        }
  2767. -
  2768. -        return $this;
  2769. -    }
  2770. -
  2771. -    /**
  2772. -     * Clearing references on product
  2773. -     *
  2774. -     * @return Mage_Catalog_Model_Product
  2775. -     */
  2776. -    protected function _clearReferences()
  2777. -    {
  2778. -        $this->_clearOptionReferences();
  2779. -        return $this;
  2780. -    }
  2781. -
  2782. -    /**
  2783. -     * Clearing product's data
  2784. -     *
  2785. -     * @return Mage_Catalog_Model_Product
  2786. -     */
  2787. -    protected function _clearData()
  2788. -    {
  2789. -        foreach ($this->_data as $data){
  2790. -            if (is_object($data) && method_exists($data, 'reset')){
  2791. -                $data->reset();
  2792. -            }
  2793. -        }
  2794. -
  2795. -        $this->setData(array());
  2796. -        $this->setOrigData();
  2797. -        $this->_customOptions       = array();
  2798. -        $this->_optionInstance      = null;
  2799. -        $this->_options             = array();
  2800. -        $this->_canAffectOptions    = false;
  2801. -        $this->_errors              = array();
  2802. -
  2803. -        return $this;
  2804. -    }
  2805. -
  2806. -    /**
  2807. -     * Clearing references to product from product's options
  2808. -     *
  2809. -     * @return Mage_Catalog_Model_Product
  2810. -     */
  2811. -    protected function _clearOptionReferences()
  2812. -    {
  2813. -        /**
  2814. -         * unload product options
  2815. -         */
  2816. -        if (!empty($this->_options)) {
  2817. -            foreach ($this->_options as $key => $option) {
  2818. -                $option->setProduct();
  2819. -                $option->clearInstance();
  2820. -            }
  2821. -        }
  2822. -
  2823. -        return $this;
  2824. -    }
  2825. -
  2826. -    /**
  2827. -     * Retrieve product entities info as array
  2828. -     *
  2829. -     * @param string|array $columns One or several columns
  2830. -     * @return array
  2831. -     */
  2832. -    public function getProductEntitiesInfo($columns = null)
  2833. -    {
  2834. -        return $this->_getResource()->getProductEntitiesInfo($columns);
  2835. -    }
  2836. -
  2837. -    /**
  2838. -     * Checks whether product has disabled status
  2839. -     *
  2840. -     * @return bool
  2841. -     */
  2842. -    public function isDisabled()
  2843. -    {
  2844. -        return $this->getStatus() == Mage_Catalog_Model_Product_Status::STATUS_DISABLED;
  2845. -    }
  2846. -}
  2847. diff --git a/app/code/local/Mage/Checkout/Model/Cart.php b/app/code/local/Mage/Checkout/Model/Cart.php
  2848. deleted file mode 100644
  2849. index fe53507..0000000
  2850. --- a/app/code/local/Mage/Checkout/Model/Cart.php
  2851. +++ /dev/null
  2852. @@ -1,606 +0,0 @@
  2853. -<?php
  2854. -/**
  2855. - * Magento
  2856. - *
  2857. - * NOTICE OF LICENSE
  2858. - *
  2859. - * This source file is subject to the Open Software License (OSL 3.0)
  2860. - * that is bundled with this package in the file LICENSE.txt.
  2861. - * It is also available through the world-wide-web at this URL:
  2862. - * http://opensource.org/licenses/osl-3.0.php
  2863. - * If you did not receive a copy of the license and are unable to
  2864. - * obtain it through the world-wide-web, please send an email
  2865. - * to license@magentocommerce.com so we can send you a copy immediately.
  2866. - *
  2867. - * DISCLAIMER
  2868. - *
  2869. - * Do not edit or add to this file if you wish to upgrade Magento to newer
  2870. - * versions in the future. If you wish to customize Magento for your
  2871. - * needs please refer to http://www.magentocommerce.com for more information.
  2872. - *
  2873. - * @category    Mage
  2874. - * @package     Mage_Checkout
  2875. - * @copyright   Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
  2876. - * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  2877. - */
  2878. -
  2879. -/**
  2880. - * Shopping cart model
  2881. - *
  2882. - * @category    Mage
  2883. - * @package     Mage_Checkout
  2884. - * @author      Magento Core Team <core@magentocommerce.com>
  2885. - */
  2886. -class Mage_Checkout_Model_Cart extends Varien_Object implements Mage_Checkout_Model_Cart_Interface
  2887. -{
  2888. -    /**
  2889. -     * Shopping cart items summary quantity(s)
  2890. -     *
  2891. -     * @var int|null
  2892. -     */
  2893. -    protected $_summaryQty;
  2894. -
  2895. -    /**
  2896. -     * List of product ids in shopping cart
  2897. -     *
  2898. -     * @var array|null
  2899. -     */
  2900. -    protected $_productIds;
  2901. -
  2902. -    /**
  2903. -     * Get shopping cart resource model
  2904. -     *
  2905. -     * @return Mage_Checkout_Model_Resource_Cart
  2906. -     */
  2907. -    protected function _getResource()
  2908. -    {
  2909. -        return Mage::getResourceSingleton('checkout/cart');
  2910. -    }
  2911. -
  2912. -    /**
  2913. -     * Retrieve checkout session model
  2914. -     *
  2915. -     * @return Mage_Checkout_Model_Session
  2916. -     */
  2917. -    public function getCheckoutSession()
  2918. -    {
  2919. -        return Mage::getSingleton('checkout/session');
  2920. -    }
  2921. -
  2922. -    /**
  2923. -     * Retrieve customer session model
  2924. -     *
  2925. -     * @return Mage_Customer_Model_Customer
  2926. -     */
  2927. -    public function getCustomerSession()
  2928. -    {
  2929. -        return Mage::getSingleton('customer/session');
  2930. -    }
  2931. -
  2932. -    /**
  2933. -     * List of shopping cart items
  2934. -     *
  2935. -     * @return Mage_Eav_Model_Entity_Collection_Abstract|array
  2936. -     */
  2937. -    public function getItems()
  2938. -    {
  2939. -        if (!$this->getQuote()->getId()) {
  2940. -            return array();
  2941. -        }
  2942. -        return $this->getQuote()->getItemsCollection();
  2943. -    }
  2944. -
  2945. -    /**
  2946. -     * Retrieve array of cart product ids
  2947. -     *
  2948. -     * @return array
  2949. -     */
  2950. -    public function getQuoteProductIds()
  2951. -    {
  2952. -        $products = $this->getData('product_ids');
  2953. -        if (is_null($products)) {
  2954. -            $products = array();
  2955. -            foreach ($this->getQuote()->getAllItems() as $item) {
  2956. -                $products[$item->getProductId()] = $item->getProductId();
  2957. -            }
  2958. -            $this->setData('product_ids', $products);
  2959. -        }
  2960. -        return $products;
  2961. -    }
  2962. -
  2963. -    /**
  2964. -     * Get quote object associated with cart. By default it is current customer session quote
  2965. -     *
  2966. -     * @return Mage_Sales_Model_Quote
  2967. -     */
  2968. -    public function getQuote()
  2969. -    {
  2970. -        if (!$this->hasData('quote')) {
  2971. -            $this->setData('quote', $this->getCheckoutSession()->getQuote());
  2972. -        }
  2973. -        return $this->_getData('quote');
  2974. -    }
  2975. -
  2976. -    /**
  2977. -     * Set quote object associated with the cart
  2978. -     *
  2979. -     * @param Mage_Sales_Model_Quote $quote
  2980. -     * @return Mage_Checkout_Model_Cart
  2981. -     */
  2982. -    public function setQuote(Mage_Sales_Model_Quote $quote)
  2983. -    {
  2984. -        $this->setData('quote', $quote);
  2985. -        return $this;
  2986. -    }
  2987. -
  2988. -    /**
  2989. -     * Initialize cart quote state to be able use it on cart page
  2990. -     *
  2991. -     * @return Mage_Checkout_Model_Cart
  2992. -     */
  2993. -    public function init()
  2994. -    {
  2995. -        $quote = $this->getQuote()->setCheckoutMethod('');
  2996. -
  2997. -        if ($this->getCheckoutSession()->getCheckoutState() !== Mage_Checkout_Model_Session::CHECKOUT_STATE_BEGIN) {
  2998. -            $quote->removeAllAddresses()->removePayment();
  2999. -            $this->getCheckoutSession()->resetCheckout();
  3000. -        }
  3001. -
  3002. -        if (!$quote->hasItems()) {
  3003. -            $quote->getShippingAddress()->setCollectShippingRates(false)
  3004. -                ->removeAllShippingRates();
  3005. -        }
  3006. -
  3007. -        return $this;
  3008. -    }
  3009. -
  3010. -    /**
  3011. -     * Convert order item to quote item
  3012. -     *
  3013. -     * @param Mage_Sales_Model_Order_Item $orderItem
  3014. -     * @param mixed $qtyFlag if is null set product qty like in order
  3015. -     * @return Mage_Checkout_Model_Cart
  3016. -     */
  3017. -    public function addOrderItem($orderItem, $qtyFlag=null)
  3018. -    {
  3019. -        /* @var $orderItem Mage_Sales_Model_Order_Item */
  3020. -        if (is_null($orderItem->getParentItem())) {
  3021. -            $product = Mage::getModel('catalog/product')
  3022. -                ->setStoreId(Mage::app()->getStore()->getId())
  3023. -                ->load($orderItem->getProductId());
  3024. -            if (!$product->getId()) {
  3025. -                return $this;
  3026. -            }
  3027. -
  3028. -            $info = $orderItem->getProductOptionByCode('info_buyRequest');
  3029. -            $info = new Varien_Object($info);
  3030. -            if (is_null($qtyFlag)) {
  3031. -                $info->setQty($orderItem->getQtyOrdered());
  3032. -            } else {
  3033. -                $info->setQty(1);
  3034. -            }
  3035. -
  3036. -            $this->addProduct($product, $info);
  3037. -        }
  3038. -        return $this;
  3039. -    }
  3040. -
  3041. -    /**
  3042. -     * Get product object based on requested product information
  3043. -     *
  3044. -     * @param   mixed $productInfo
  3045. -     * @return  Mage_Catalog_Model_Product
  3046. -     */
  3047. -    protected function _getProduct($productInfo)
  3048. -    {
  3049. -        $product = null;
  3050. -        if ($productInfo instanceof Mage_Catalog_Model_Product) {
  3051. -            $product = $productInfo;
  3052. -        } elseif (is_int($productInfo) || is_string($productInfo)) {
  3053. -            $product = Mage::getModel('catalog/product')
  3054. -                ->setStoreId(Mage::app()->getStore()->getId())
  3055. -                ->load($productInfo);
  3056. -        }
  3057. -        $currentWebsiteId = Mage::app()->getStore()->getWebsiteId();
  3058. -        if (!$product
  3059. -            || !$product->getId()
  3060. -            || !is_array($product->getWebsiteIds())
  3061. -            || !in_array($currentWebsiteId, $product->getWebsiteIds())
  3062. -        ) {
  3063. -            Mage::throwException(Mage::helper('checkout')->__('The product could not be found.'));
  3064. -        }
  3065. -        return $product;
  3066. -    }
  3067. -
  3068. -    /**
  3069. -     * Get request for product add to cart procedure
  3070. -     *
  3071. -     * @param   mixed $requestInfo
  3072. -     * @return  Varien_Object
  3073. -     */
  3074. -    protected function _getProductRequest($requestInfo)
  3075. -    {
  3076. -        if ($requestInfo instanceof Varien_Object) {
  3077. -            $request = $requestInfo;
  3078. -        } elseif (is_numeric($requestInfo)) {
  3079. -            $request = new Varien_Object(array('qty' => $requestInfo));
  3080. -        } else {
  3081. -            $request = new Varien_Object($requestInfo);
  3082. -        }
  3083. -
  3084. -        if (!$request->hasQty()) {
  3085. -            $request->setQty(1);
  3086. -        }
  3087. -
  3088. -        return $request;
  3089. -    }
  3090. -
  3091. -    /**
  3092. -     * Add product to shopping cart (quote)
  3093. -     *
  3094. -     * @param   int|Mage_Catalog_Model_Product $productInfo
  3095. -     * @param   mixed $requestInfo
  3096. -     * @return  Mage_Checkout_Model_Cart
  3097. -     */
  3098. -    public function addProduct($productInfo, $requestInfo=null)
  3099. -    {
  3100. -        $product = $this->_getProduct($productInfo);
  3101. -        $request = $this->_getProductRequest($requestInfo);
  3102. -
  3103. -        $productId = $product->getId();
  3104. -
  3105. -        if ($product->getStockItem()) {
  3106. -            $minimumQty = $product->getStockItem()->getMinSaleQty();
  3107. -            //If product was not found in cart and there is set minimal qty for it
  3108. -            if ($minimumQty && $minimumQty > 0 && $request->getQty() < $minimumQty
  3109. -                && !$this->getQuote()->hasProductId($productId)
  3110. -            ){
  3111. -                $request->setQty($minimumQty);
  3112. -            }
  3113. -        }
  3114. -
  3115. -        if ($productId) {
  3116. -            try {
  3117. -                $result = $this->getQuote()->addProduct($product, $request);
  3118. -            } catch (Mage_Core_Exception $e) {
  3119. -                $this->getCheckoutSession()->setUseNotice(false);
  3120. -                $result = $e->getMessage();
  3121. -            }
  3122. -            /**
  3123. -             * String we can get if prepare process has error
  3124. -             */
  3125. -            if (is_string($result)) {
  3126. -                // $redirectUrl = ($product->hasOptionsValidationFail())
  3127. -                //     ? $product->getUrlModel()->getUrl(
  3128. -                //         $product,
  3129. -                //         array('_query' => array('startcustomization' => 1))
  3130. -                //     )
  3131. -                //     : $product->getProductUrl();
  3132. -                // $this->getCheckoutSession()->setRedirectUrl($redirectUrl);
  3133. -                // if ($this->getCheckoutSession()->getUseNotice() === null) {
  3134. -                //     $this->getCheckoutSession()->setUseNotice(true);
  3135. -                // }
  3136. -                // Mage::throwException($result);
  3137. -            }
  3138. -        } else {
  3139. -            Mage::throwException(Mage::helper('checkout')->__('The product does not exist.'));
  3140. -        }
  3141. -
  3142. -        Mage::dispatchEvent('checkout_cart_product_add_after', array('quote_item' => $result, 'product' => $product));
  3143. -        $this->getCheckoutSession()->setLastAddedProductId($productId);
  3144. -        return $this;
  3145. -    }
  3146. -
  3147. -    /**
  3148. -     * Adding products to cart by ids
  3149. -     *
  3150. -     * @param   array $productIds
  3151. -     * @return  Mage_Checkout_Model_Cart
  3152. -     */
  3153. -    public function addProductsByIds($productIds)
  3154. -    {
  3155. -        $allAvailable = true;
  3156. -        $allAdded     = true;
  3157. -
  3158. -        if (!empty($productIds)) {
  3159. -            foreach ($productIds as $productId) {
  3160. -                $productId = (int) $productId;
  3161. -                if (!$productId) {
  3162. -                    continue;
  3163. -                }
  3164. -                $product = $this->_getProduct($productId);
  3165. -                if ($product->getId() && $product->isVisibleInCatalog()) {
  3166. -                    try {
  3167. -                        $this->getQuote()->addProduct($product);
  3168. -                    } catch (Exception $e){
  3169. -                        $allAdded = false;
  3170. -                    }
  3171. -                } else {
  3172. -                    $allAvailable = false;
  3173. -                }
  3174. -            }
  3175. -
  3176. -            if (!$allAvailable) {
  3177. -                $this->getCheckoutSession()->addError(
  3178. -                    Mage::helper('checkout')->__('Some of the requested products are unavailable.')
  3179. -                );
  3180. -            }
  3181. -            if (!$allAdded) {
  3182. -                $this->getCheckoutSession()->addError(
  3183. -                    Mage::helper('checkout')->__('Some of the requested products are not available in the desired quantity.')
  3184. -                );
  3185. -            }
  3186. -        }
  3187. -        return $this;
  3188. -    }
  3189. -
  3190. -    /**
  3191. -     * Returns suggested quantities for items.
  3192. -     * Can be used to automatically fix user entered quantities before updating cart
  3193. -     * so that cart contains valid qty values
  3194. -     *
  3195. -     * $data is an array of ($quoteItemId => (item info array with 'qty' key), ...)
  3196. -     *
  3197. -     * @param   array $data
  3198. -     * @return  array
  3199. -     */
  3200. -    public function suggestItemsQty($data)
  3201. -    {
  3202. -        foreach ($data as $itemId => $itemInfo) {
  3203. -            if (!isset($itemInfo['qty'])) {
  3204. -                continue;
  3205. -            }
  3206. -            $qty = (float) $itemInfo['qty'];
  3207. -            if ($qty <= 0) {
  3208. -                continue;
  3209. -            }
  3210. -
  3211. -            $quoteItem = $this->getQuote()->getItemById($itemId);
  3212. -            if (!$quoteItem) {
  3213. -                continue;
  3214. -            }
  3215. -
  3216. -            $product = $quoteItem->getProduct();
  3217. -            if (!$product) {
  3218. -                continue;
  3219. -            }
  3220. -
  3221. -            /* @var $stockItem Mage_CatalogInventory_Model_Stock_Item */
  3222. -            $stockItem = $product->getStockItem();
  3223. -            if (!$stockItem) {
  3224. -                continue;
  3225. -            }
  3226. -
  3227. -            $data[$itemId]['before_suggest_qty'] = $qty;
  3228. -            $data[$itemId]['qty'] = $stockItem->suggestQty($qty);
  3229. -        }
  3230. -
  3231. -        return $data;
  3232. -    }
  3233. -
  3234. -    /**
  3235. -     * Update cart items information
  3236. -     *
  3237. -     * @param   array $data
  3238. -     * @return  Mage_Checkout_Model_Cart
  3239. -     */
  3240. -    public function updateItems($data)
  3241. -    {
  3242. -        Mage::dispatchEvent('checkout_cart_update_items_before', array('cart'=>$this, 'info'=>$data));
  3243. -
  3244. -        /* @var $messageFactory Mage_Core_Model_Message */
  3245. -        $messageFactory = Mage::getSingleton('core/message');
  3246. -        $session = $this->getCheckoutSession();
  3247. -        $qtyRecalculatedFlag = false;
  3248. -        foreach ($data as $itemId => $itemInfo) {
  3249. -            $item = $this->getQuote()->getItemById($itemId);
  3250. -            if (!$item) {
  3251. -                continue;
  3252. -            }
  3253. -
  3254. -            if (!empty($itemInfo['remove']) || (isset($itemInfo['qty']) && $itemInfo['qty']=='0')) {
  3255. -                $this->removeItem($itemId);
  3256. -                continue;
  3257. -            }
  3258. -
  3259. -            $qty = isset($itemInfo['qty']) ? (float) $itemInfo['qty'] : false;
  3260. -            if ($qty > 0) {
  3261. -                $item->setQty($qty);
  3262. -
  3263. -                $itemInQuote = $this->getQuote()->getItemById($item->getId());
  3264. -
  3265. -                if (!$itemInQuote && $item->getHasError()) {
  3266. -                    Mage::throwException($item->getMessage());
  3267. -                }
  3268. -
  3269. -                if (isset($itemInfo['before_suggest_qty']) && ($itemInfo['before_suggest_qty'] != $qty)) {
  3270. -                    $qtyRecalculatedFlag = true;
  3271. -                    $message = $messageFactory->notice(Mage::helper('checkout')->__('Quantity was recalculated from %d to %d', $itemInfo['before_suggest_qty'], $qty));
  3272. -                    $session->addQuoteItemMessage($item->getId(), $message);
  3273. -                }
  3274. -            }
  3275. -        }
  3276. -
  3277. -        if ($qtyRecalculatedFlag) {
  3278. -            $session->addNotice(
  3279. -                Mage::helper('checkout')->__('Some products quantities were recalculated because of quantity increment mismatch')
  3280. -            );
  3281. -        }
  3282. -
  3283. -        Mage::dispatchEvent('checkout_cart_update_items_after', array('cart'=>$this, 'info'=>$data));
  3284. -        return $this;
  3285. -    }
  3286. -
  3287. -    /**
  3288. -     * Remove item from cart
  3289. -     *
  3290. -     * @param   int $itemId
  3291. -     * @return  Mage_Checkout_Model_Cart
  3292. -     */
  3293. -    public function removeItem($itemId)
  3294. -    {
  3295. -        $this->getQuote()->removeItem($itemId);
  3296. -        return $this;
  3297. -    }
  3298. -
  3299. -    /**
  3300. -     * Save cart
  3301. -     *
  3302. -     * @return Mage_Checkout_Model_Cart
  3303. -     */
  3304. -    public function save()
  3305. -    {
  3306. -        Mage::dispatchEvent('checkout_cart_save_before', array('cart'=>$this));
  3307. -
  3308. -        $this->getQuote()->getBillingAddress();
  3309. -        $this->getQuote()->getShippingAddress()->setCollectShippingRates(true);
  3310. -        $this->getQuote()->collectTotals();
  3311. -        $this->getQuote()->save();
  3312. -        $this->getCheckoutSession()->setQuoteId($this->getQuote()->getId());
  3313. -        /**
  3314. -         * Cart save usually called after changes with cart items.
  3315. -         */
  3316. -        Mage::dispatchEvent('checkout_cart_save_after', array('cart'=>$this));
  3317. -        return $this;
  3318. -    }
  3319. -
  3320. -    /**
  3321. -     * Save cart (implement interface method)
  3322. -     */
  3323. -    public function saveQuote()
  3324. -    {
  3325. -        $this->save();
  3326. -    }
  3327. -
  3328. -    /**
  3329. -     * Mark all quote items as deleted (empty shopping cart)
  3330. -     *
  3331. -     * @return Mage_Checkout_Model_Cart
  3332. -     */
  3333. -    public function truncate()
  3334. -    {
  3335. -        $this->getQuote()->removeAllItems();
  3336. -        return $this;
  3337. -    }
  3338. -
  3339. -    public function getProductIds()
  3340. -    {
  3341. -        $quoteId = Mage::getSingleton('checkout/session')->getQuoteId();
  3342. -        if (null === $this->_productIds) {
  3343. -            $this->_productIds = array();
  3344. -            if ($this->getSummaryQty()>0) {
  3345. -               foreach ($this->getQuote()->getAllItems() as $item) {
  3346. -                   $this->_productIds[] = $item->getProductId();
  3347. -               }
  3348. -            }
  3349. -            $this->_productIds = array_unique($this->_productIds);
  3350. -        }
  3351. -        return $this->_productIds;
  3352. -    }
  3353. -
  3354. -    /**
  3355. -     * Get shopping cart items summary (includes config settings)
  3356. -     *
  3357. -     * @return int|float
  3358. -     */
  3359. -    public function getSummaryQty()
  3360. -    {
  3361. -        $quoteId = Mage::getSingleton('checkout/session')->getQuoteId();
  3362. -
  3363. -        //If there is no quote id in session trying to load quote
  3364. -        //and get new quote id. This is done for cases when quote was created
  3365. -        //not by customer (from backend for example).
  3366. -        if (!$quoteId && Mage::getSingleton('customer/session')->isLoggedIn()) {
  3367. -            $quote = Mage::getSingleton('checkout/session')->getQuote();
  3368. -            $quoteId = Mage::getSingleton('checkout/session')->getQuoteId();
  3369. -        }
  3370. -
  3371. -        if ($quoteId && $this->_summaryQty === null) {
  3372. -            if (Mage::getStoreConfig('checkout/cart_link/use_qty')) {
  3373. -                $this->_summaryQty = $this->getItemsQty();
  3374. -            } else {
  3375. -                $this->_summaryQty = $this->getItemsCount();
  3376. -            }
  3377. -        }
  3378. -        return $this->_summaryQty;
  3379. -    }
  3380. -
  3381. -    /**
  3382. -     * Get shopping cart items count
  3383. -     *
  3384. -     * @return int
  3385. -     */
  3386. -    public function getItemsCount()
  3387. -    {
  3388. -        return $this->getQuote()->getItemsCount()*1;
  3389. -    }
  3390. -
  3391. -    /**
  3392. -     * Get shopping cart summary qty
  3393. -     *
  3394. -     * @return int|float
  3395. -     */
  3396. -    public function getItemsQty()
  3397. -    {
  3398. -        return $this->getQuote()->getItemsQty()*1;
  3399. -    }
  3400. -
  3401. -    /**
  3402. -     * Update item in shopping cart (quote)
  3403. -     * $requestInfo - either qty (int) or buyRequest in form of array or Varien_Object
  3404. -     * $updatingParams - information on how to perform update, passed to Quote->updateItem() method
  3405. -     *
  3406. -     * @param int $itemId
  3407. -     * @param int|array|Varien_Object $requestInfo
  3408. -     * @param null|array|Varien_Object $updatingParams
  3409. -     * @return Mage_Sales_Model_Quote_Item|string
  3410. -     *
  3411. -     * @see Mage_Sales_Model_Quote::updateItem()
  3412. -     */
  3413. -    public function updateItem($itemId, $requestInfo = null, $updatingParams = null)
  3414. -    {
  3415. -        try {
  3416. -            $item = $this->getQuote()->getItemById($itemId);
  3417. -            if (!$item) {
  3418. -                Mage::throwException(Mage::helper('checkout')->__('Quote item does not exist.'));
  3419. -            }
  3420. -            $productId = $item->getProduct()->getId();
  3421. -            $product = $this->_getProduct($productId);
  3422. -            $request = $this->_getProductRequest($requestInfo);
  3423. -
  3424. -            if ($product->getStockItem()) {
  3425. -                $minimumQty = $product->getStockItem()->getMinSaleQty();
  3426. -                // If product was not found in cart and there is set minimal qty for it
  3427. -                if ($minimumQty && ($minimumQty > 0)
  3428. -                    && ($request->getQty() < $minimumQty)
  3429. -                    && !$this->getQuote()->hasProductId($productId)
  3430. -                ) {
  3431. -                    $request->setQty($minimumQty);
  3432. -                }
  3433. -            }
  3434. -
  3435. -            $result = $this->getQuote()->updateItem($itemId, $request, $updatingParams);
  3436. -        } catch (Mage_Core_Exception $e) {
  3437. -            $this->getCheckoutSession()->setUseNotice(false);
  3438. -            $result = $e->getMessage();
  3439. -        }
  3440. -
  3441. -        /**
  3442. -         * We can get string if updating process had some errors
  3443. -         */
  3444. -        if (is_string($result)) {
  3445. -            if ($this->getCheckoutSession()->getUseNotice() === null) {
  3446. -                $this->getCheckoutSession()->setUseNotice(true);
  3447. -            }
  3448. -            Mage::throwException($result);
  3449. -        }
  3450. -
  3451. -        Mage::dispatchEvent('checkout_cart_product_update_after', array(
  3452. -            'quote_item' => $result,
  3453. -            'product' => $product
  3454. -        ));
  3455. -        $this->getCheckoutSession()->setLastAddedProductId($productId);
  3456. -        return $result;
  3457. -    }
  3458. -}
  3459. diff --git a/app/code/local/Mage/Sales/Model/Order.php b/app/code/local/Mage/Sales/Model/Order.php
  3460. index 54445c5..030c55f 100755
  3461. --- a/app/code/local/Mage/Sales/Model/Order.php
  3462. +++ b/app/code/local/Mage/Sales/Model/Order.php
  3463. @@ -1400,212 +1400,197 @@ class Mage_Sales_Model_Order extends Mage_Sales_Model_Abstract
  3464.       * @param string $comment
  3465.       * @return Mage_Sales_Model_Order
  3466.       */
  3467. -   public function sendOrderUpdateEmail($notifyCustomer = true, $comment = '') {
  3468. -      $smsApiObject = new J2t_Smsgateway_Model_Smsgateway();
  3469. -      $customer_country_code = "IN";
  3470. -      $orderId = $this->getIncrementId();
  3471. -      $entityId = $this->getId();
  3472. -      $parentId = $this->getRelationParentId();
  3473. -      $emailSent = $this->getEmailSent();
  3474. -      $orderStatus = $this->getStatus();
  3475. -
  3476. -      $write = Mage::getSingleton('core/resource')->getConnection('core_write');
  3477. -      $sql = "SELECT so.entity_id parentId, so.email_sent, so.increment_id parentIncrId, sochild.increment_id childIncrId, sochild.email_sent child_email_sent, sochild.entity_id childId
  3478. -               FROM sales_flat_order so
  3479. -               LEFT JOIN sales_flat_order sochild on sochild.relation_parent_id= so.entity_id
  3480. -               WHERE so.entity_id= $entityId"; // AND sochild.entity_id > 0;
  3481. -      $resultSet = $write->query($sql);
  3482. -      $numRec = 0;
  3483. -      $childOrders = array();
  3484. -      while($result = $resultSet->fetch()) {
  3485. -         $emailSent = $result['email_sent'];
  3486. -         $childEmailSent = $result['child_email_sent'];
  3487. -         if(!empty($result['childId']))
  3488. -            $childOrders[] = $result['childId'];
  3489. -         $numRec ++;
  3490. -      }
  3491. -
  3492. -      if ($numRec && $orderStatus == 'processing' && (($emailSent < 2 && $childEmailSent < 1) || ($emailSent < 1 && empty($childEmailSent)) )) {
  3493. -         Mage::log("Email Sent from " . __FILE__ . ", status : $orderStatus, parent:$parentId, email: $emailSent, orderId: $entityId " . print_r($result, true), null, 'SplitModule.log');
  3494. -         $order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
  3495. -
  3496. -         $smsContent = "";
  3497. -         $thankMsgContent = '';
  3498. -
  3499. -         $alldata = $order->getData();
  3500. -         $grndTotal = money_format('%!.2i', $alldata['grand_total']);
  3501. -
  3502. -         $method = $order->getPayment()->getMethod();
  3503. -
  3504. -         if ($method == 'cashondelivery') {
  3505. -            $paymentMode = 'Placed through COD';
  3506. -         } elseif ($method == 'banktransfer') {
  3507. -            $paymentMode = 'Placed through NEFT';
  3508. -         } elseif ($method == 'payucheckout_shared') {
  3509. -            $paymentMode = 'Paid through PAYU';
  3510. -         } elseif ($method == 'paytm_cc') {
  3511. -            $paymentMode = 'Paid through PAYTM';
  3512. -         }
  3513. -
  3514. -         $thankMsgContent = 'Thank you for confirming your Order # ' . $orderId . ' .';
  3515. -         $thankMsgContent1 = 'Your order has been successfully placed and is being processed.';
  3516. -
  3517. -         $smsContent = "Dear Customer, Thank you for confirming your order # " . $orderId . " on Tolexo.com. Please check your email or Tolexo Account for further information.";
  3518. -
  3519. -         $subject = "Your Order # " . $orderId . " on Tolexo.com has been successfully placed!";
  3520. -
  3521. -         $content = $this->getSplitOrderContent($orderId, $entityId);
  3522. -
  3523. -         $shipping = $order->getShippingAddress();
  3524. -         $billing = $order->getBillingAddress();
  3525. -         $username = $order->getCustomerFirstname() . " " . $order->getCustomerLastname();
  3526. -
  3527. -         $finalDetail = '<table width="100%" cellpadding="0" cellspacing="0">
  3528. -                <tr>
  3529. -                   <td>
  3530. -                     <div style="border-bottom:1px dashed #ccc;margin-bottom:20px;font-weight:bold;text-align:right;">
  3531. -                     <div style="font-size:13px;padding:2px 10px 2px 0;">
  3532. -                     <span style="color:#777777;width:150px;display:inline-block;">Sub Total &nbsp;&nbsp;:</span>
  3533. -                     <span style="color:#222222;width:100px;display:inline-block;">Rs. ' . money_format('%!.2i', $alldata['base_subtotal']) . '</span>
  3534. -                     </div>';
  3535. -         if (!empty($alldata['coupon_code'])) {
  3536. -            $finalDetail .= '<div style="border-bottom:1px dashed #ccc;margin-bottom:20px;font-weight:bold;text-align:right;">
  3537. -                     <div style="font-size:13px;padding:2px 10px 2px 0;">
  3538. -                        <span style="color:#777777;width:150px;display:inline-block;">Discount (' . $alldata['coupon_code'] . ') &nbsp;&nbsp;:</span>
  3539. -                        <span style="color:#222222;width:100px;display:inline-block;">Rs. ' . money_format('%!.2i', $alldata['discount_amount']) . '</span>
  3540. -                     </div>';
  3541. -         }
  3542. -         if ($alldata['shipping_amount'] == 0) {
  3543. -            $shipAmount = "Free Shipping";
  3544. -         } else {
  3545. -            $shipAmount = "Rs. " . money_format('%!.2i', $alldata['shipping_amount']);
  3546. -         }
  3547. -         $finalDetail .= '<div style="font-size:13px;padding:2px 10px 2px 0;">
  3548. +    public function sendOrderUpdateEmail($notifyCustomer = true, $comment = '')
  3549. +    {
  3550. +        $smsApiObject = new J2t_Smsgateway_Model_Smsgateway();
  3551. +        $customer_country_code = "IN";
  3552. +        
  3553. +        $orderId=$this->getIncrementId();
  3554. +        $entityId = $this->getId();
  3555. +        
  3556. +        $write = Mage::getSingleton('core/resource')->getConnection('core_write');
  3557. +            $sql= "SELECT entity_id,increment_id "
  3558. +                . "FROM sales_flat_order  "
  3559. +                . "WHERE relation_parent_id='".$entityId."'";
  3560. +            $resultset= $write->query($sql);
  3561. +            $result=$resultset->fetchAll();
  3562. +            if(count($result)==0)
  3563. +            {
  3564. +                
  3565. +                $order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
  3566. +                $smsContent = "";
  3567. +                $thankMsgContent = '';
  3568. +                
  3569. +                $alldata = $order->getData();
  3570. +                $grndTotal = money_format('%!.2i', $alldata['grand_total']);
  3571. +                
  3572. +                $method = $order->getPayment()->getMethod();
  3573. +        
  3574. +                if($method == 'cashondelivery') {
  3575. +                    $paymentMode = 'Placed through COD';
  3576. +                } elseif($method == 'banktransfer') {
  3577. +                    $paymentMode = 'Placed through NEFT';
  3578. +                } elseif($method == 'payucheckout_shared') {
  3579. +                    $paymentMode = 'Paid through PAYU';
  3580. +                } elseif($method == 'paytm_cc'){
  3581. +                    $paymentMode = 'Paid through PAYTM';
  3582. +                }
  3583. +                
  3584. +                $thankMsgContent = 'Thank you for confirming your Order # '.$orderId.' .';
  3585. +                $thankMsgContent1 = 'Your order has been successfully placed and is being processed.';
  3586. +                
  3587. +                $smsContent = "Dear Customer, Thank you for confirming your order # ". $orderId. " on Tolexo.com. Please check your email or Tolexo Account for further information.";
  3588. +                
  3589. +                $subject = "Your Order # ".$orderId." on Tolexo.com has been successfully placed!";
  3590. +                                
  3591. +                $content = $this->getSplitOrderContent($orderId,$entityId);
  3592. +                
  3593. +                $shipping = $order->getShippingAddress();
  3594. +                $billing = $order->getBillingAddress();
  3595. +                $username = $order->getCustomerFirstname()." ".$order->getCustomerLastname();
  3596. +                
  3597. +                $finalDetail = '<table width="100%" cellpadding="0" cellspacing="0">
  3598. +                            <tr>
  3599. +                               <td>
  3600. +                                    <div style="border-bottom:1px dashed #ccc;margin-bottom:20px;font-weight:bold;text-align:right;">
  3601. +                                    <div style="font-size:13px;padding:2px 10px 2px 0;">
  3602. +                                    <span style="color:#777777;width:150px;display:inline-block;">Sub Total &nbsp;&nbsp;:</span>
  3603. +                                    <span style="color:#222222;width:100px;display:inline-block;">Rs. '.money_format('%!.2i', $alldata['base_subtotal']).'</span>
  3604. +                                    </div>';
  3605. +               if(!empty($alldata['coupon_code'])){
  3606. +                    $finalDetail .= '<div style="border-bottom:1px dashed #ccc;margin-bottom:20px;font-weight:bold;text-align:right;">
  3607. +                                    <div style="font-size:13px;padding:2px 10px 2px 0;">
  3608. +                                    <span style="color:#777777;width:150px;display:inline-block;">Discount ('.$alldata['coupon_code'].') &nbsp;&nbsp;:</span>
  3609. +                                    <span style="color:#222222;width:100px;display:inline-block;">Rs. '.money_format('%!.2i', $alldata['discount_amount']).'</span>
  3610. +                                    </div>';
  3611. +                }
  3612. +                if($alldata['shipping_amount']==0){
  3613. +                    $shipAmount = "Free Shipping";
  3614. +                }
  3615. +                else{
  3616. +                    $shipAmount = "Rs. ".money_format('%!.2i', $alldata['shipping_amount']);
  3617. +                }
  3618. +        $finalDetail .= '<div style="font-size:13px;padding:2px 10px 2px 0;">
  3619.                          <span style="color:#777777;width:150px;display:inline-block;">Shipping & Handling &nbsp;&nbsp;:</span>
  3620. -                        <span style="color:#222222;width:100px;display:inline-block;">' . $shipAmount . '</span>
  3621. +                        <span style="color:#222222;width:100px;display:inline-block;">'.$shipAmount.'</span>
  3622.                          </div>
  3623.                          <div style="font-size:13px;padding:2px 10px 2px 0;">
  3624.                          <span style="color:#777777;width:150px;display:inline-block;">Tax &nbsp;&nbsp;:</span>
  3625. -                        <span style="color:#222222;width:100px;display:inline-block;">Rs. ' . money_format('%!.2i', $alldata['tax_amount']) . '</span>
  3626. +                        <span style="color:#222222;width:100px;display:inline-block;">Rs. '.money_format('%!.2i', $alldata['tax_amount']).'</span>
  3627.                          </div>
  3628.                          <div style="font-size:16px;background-color:#f5f5f5;display:block;margin:10px 0;padding:7px 10px 7px 0;">
  3629.                          <span style="color:#777777;width:150px;display:inline-block;">Grand Total &nbsp;&nbsp;:</span>
  3630. -                        <span style="color:#222222;width:100px;display:inline-block;">Rs. ' . money_format('%!.2i', $alldata['grand_total']) . '</span>
  3631. +                        <span style="color:#222222;width:100px;display:inline-block;">Rs. '.money_format('%!.2i', $alldata['grand_total']).'</span>
  3632.                          </div>
  3633.                          </div>
  3634.                      </td>
  3635.                  </tr>
  3636.              </table>';
  3637. +                
  3638. +                $mobileNo = $shipping->getTelephone();            
  3639. +                $smsApiObject->sendSms($mobileNo, $smsContent, $customer_country_code);
  3640. +        
  3641. +                $billAdd = $billing->getStreet();
  3642. +                $shipAdd = $shipping->getStreet();
  3643. +                $billAdds = '';
  3644. +                $shipAdds = '';
  3645. +                foreach($billAdd as $val){
  3646. +                    $billAdds .= $val." ";
  3647. +                }
  3648. +                foreach($shipAdd as $val){
  3649. +                    $shipAdds .= $val." ";
  3650. +                }
  3651. +                $order_bill = $billing->getFirstname()." ".$billing->getMiddlename()." ".$billing->getLastname()." <br/>".$billing->getCompany()."<br/>".$billing->getTelephone()."<br/>". $billAdds." ".$billing->getCity()." ".$billing->getRegion()." ".$billing->getPostcode();
  3652. +                $order_ship = $shipping->getFirstname()." ".$shipping->getMiddlename()." ".$shipping->getLastname()." <br/>".$shipping->getCompany()."<br/>".$shipping->getTelephone()."<br/>". $shipAdds." ".$shipping->getCity()." ".$shipping->getRegion()." ".$shipping->getPostcode();
  3653. +                $email = array($order->getCustomerEmail());
  3654. +                $emailName = array($username);
  3655. +                $order_created = $order->getCreatedAtFormated('medium');
  3656. +                $templateId = 27;
  3657. +                $bccEmail = array('orders@tolexo.com');
  3658. +                $sender = array('name' => 'Sales', 'email' => 'support@tolexo.com');
  3659. +                $vars = array('order_increment_id' => $orderId, 'item_content' => $content, 'username' => $username, 'order_bill' => $order_bill,'order_ship' => $order_ship,'order_created'=>$order_created,'smsContent'=>$smsContent,'thankMsgContent'=>$thankMsgContent,
  3660. +                    'subject'=>$subject,'paymentMode'=>$paymentMode,'thankMsgContent1'=>$thankMsgContent1,'grndTotal'=>$grndTotal,'finalDetail'=>$finalDetail);
  3661. +                $storeId = Mage::app()->getStore()->getId();
  3662. +                $translate = Mage::getSingleton('core/translate');
  3663. +                Mage::getModel('core/email_template')->addBCC($bccEmail)->sendTransactional($templateId, $sender, $email, $emailName, $vars, $storeId);
  3664. +                $translate->setTranslateInline(true);
  3665. +        
  3666. +                $sql1 = "UPDATE sales_flat_order sfo "
  3667. +                            . "SET sfo.email_sent = sfo.email_sent + 1 "
  3668. +                            . "WHERE sfo.entity_id = '".$entityId."'";
  3669. +                $resultset= $write->query($sql1);
  3670. +                
  3671. +            }  
  3672. +            else{
  3673. +                              
  3674. +                $storeId = $this->getStore()->getId();
  3675.  
  3676. -         $mobileNo = $shipping->getTelephone();
  3677. -         $smsApiObject->sendSms($mobileNo, $smsContent, $customer_country_code);
  3678. -
  3679. -         $items = $order->getAllItems();
  3680. -         if(count($items) == 0) return $this;
  3681. -
  3682. -         $billAdd = $billing->getStreet();
  3683. -         $shipAdd = $shipping->getStreet();
  3684. -         $billAdds = '';
  3685. -         $shipAdds = '';
  3686. -         foreach ($billAdd as $val) {
  3687. -            $billAdds .= $val . " ";
  3688. -         }
  3689. -         foreach ($shipAdd as $val) {
  3690. -            $shipAdds .= $val . " ";
  3691. -         }
  3692. -         $order_bill = $billing->getFirstname() . " " . $billing->getMiddlename() . " " . $billing->getLastname() . " <br/>" . $billing->getCompany() . "<br/>" . $billing->getTelephone() . "<br/>" . $billAdds . " " . $billing->getCity() . " " . $billing->getRegion() . " " . $billing->getPostcode();
  3693. -         $order_ship = $shipping->getFirstname() . " " . $shipping->getMiddlename() . " " . $shipping->getLastname() . " <br/>" . $shipping->getCompany() . "<br/>" . $shipping->getTelephone() . "<br/>" . $shipAdds . " " . $shipping->getCity() . " " . $shipping->getRegion() . " " . $shipping->getPostcode();
  3694. -         $email = array($order->getCustomerEmail());
  3695. -         $emailName = array($username);
  3696. -         $order_created = $order->getCreatedAtFormated('medium');
  3697. -         $templateId = 27;
  3698. -         $bccEmail = array('orders@tolexo.com');
  3699. -         $sender = array('name' => 'Sales', 'email' => 'support@tolexo.com');
  3700. -         $vars = array('order_increment_id' => $orderId, 'item_content' => $content, 'username' => $username, 'order_bill' => $order_bill, 'order_ship' => $order_ship, 'order_created' => $order_created, 'smsContent' => $smsContent, 'thankMsgContent' => $thankMsgContent,
  3701. -            'subject' => $subject, 'paymentMode' => $paymentMode, 'thankMsgContent1' => $thankMsgContent1, 'grndTotal' => $grndTotal, 'finalDetail' => $finalDetail);
  3702. -         $storeId = Mage::app()->getStore()->getId();
  3703. -         $translate = Mage::getSingleton('core/translate');
  3704. -         Mage::getModel('core/email_template')->addBCC($bccEmail)->sendTransactional($templateId, $sender, $email, $emailName, $vars, $storeId);
  3705. -         $translate->setTranslateInline(true);
  3706. -
  3707. -         if($emailSent < 1 && empty($childEmailSent)) {
  3708. -            $sql1 = "UPDATE sales_flat_order sfo "
  3709. -               . "SET sfo.email_sent = sfo.email_sent + 1 "
  3710. -               . "WHERE sfo.entity_id = $entityId";
  3711. -            $write->query($sql1);
  3712. -         } else if(!empty($childOrders)) {
  3713. -            $childOrders[] = $entityId;
  3714. -            $sql1 = "UPDATE sales_flat_order sfo "
  3715. -               . "SET sfo.email_sent = sfo.email_sent + 1 "
  3716. -               . "WHERE sfo.entity_id IN (" . implode(',',$childOrders) . ")";
  3717. -            $write->query($sql1);
  3718. -         }
  3719. -      } else {
  3720. -
  3721. -         $storeId = $this->getStore()->getId();
  3722. -
  3723. -         if (!Mage::helper('sales')->canSendOrderCommentEmail($storeId)) {
  3724. -            return $this;
  3725. -         }
  3726. -         // Get the destination email addresses to send copies to
  3727. -         $copyTo = $this->_getEmails(self::XML_PATH_UPDATE_EMAIL_COPY_TO);
  3728. -         $copyMethod = Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_COPY_METHOD, $storeId);
  3729. -         // Check if at least one recepient is found
  3730. -         if (!$notifyCustomer && !$copyTo) {
  3731. -            return $this;
  3732. -         }
  3733. +                if (!Mage::helper('sales')->canSendOrderCommentEmail($storeId)) {
  3734. +                    return $this;
  3735. +                }
  3736. +                // Get the destination email addresses to send copies to
  3737. +                $copyTo = $this->_getEmails(self::XML_PATH_UPDATE_EMAIL_COPY_TO);
  3738. +                $copyMethod = Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_COPY_METHOD, $storeId);
  3739. +                // Check if at least one recepient is found
  3740. +                if (!$notifyCustomer && !$copyTo) {
  3741. +                    return $this;
  3742. +                }
  3743.  
  3744. -         // Retrieve corresponding email template id and customer name
  3745. -         if ($this->getCustomerIsGuest()) {
  3746. -            $templateId = Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_GUEST_TEMPLATE, $storeId);
  3747. -            $customerName = $this->getBillingAddress()->getName();
  3748. -         } else {
  3749. -            $templateId = Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_TEMPLATE, $storeId);
  3750. -            $customerName = $this->getCustomerName();
  3751. -         }
  3752. -
  3753. -         $mailer = Mage::getModel('core/email_template_mailer');
  3754. -         if ($notifyCustomer) {
  3755. -            $emailInfo = Mage::getModel('core/email_info');
  3756. -            $emailInfo->addTo($this->getCustomerEmail(), $customerName);
  3757. -            if ($copyTo && $copyMethod == 'bcc') {
  3758. -               // Add bcc to customer email
  3759. -               foreach ($copyTo as $email) {
  3760. -                  $emailInfo->addBcc($email);
  3761. -               }
  3762. -            }
  3763. -            $mailer->addEmailInfo($emailInfo);
  3764. -         }
  3765. +                // Retrieve corresponding email template id and customer name
  3766. +                if ($this->getCustomerIsGuest()) {
  3767. +                    $templateId = Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_GUEST_TEMPLATE, $storeId);
  3768. +                    $customerName = $this->getBillingAddress()->getName();
  3769. +                } else {
  3770. +                    $templateId = Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_TEMPLATE, $storeId);
  3771. +                    $customerName = $this->getCustomerName();
  3772. +                }
  3773.  
  3774. -         // Email copies are sent as separated emails if their copy method is
  3775. -         // 'copy' or a customer should not be notified
  3776. -         if ($copyTo && ($copyMethod == 'copy' || !$notifyCustomer)) {
  3777. -            foreach ($copyTo as $email) {
  3778. -               $emailInfo = Mage::getModel('core/email_info');
  3779. -               $emailInfo->addTo($email);
  3780. -               $mailer->addEmailInfo($emailInfo);
  3781. +                $mailer = Mage::getModel('core/email_template_mailer');
  3782. +                if ($notifyCustomer) {
  3783. +                    $emailInfo = Mage::getModel('core/email_info');
  3784. +                    $emailInfo->addTo($this->getCustomerEmail(), $customerName);
  3785. +                    if ($copyTo && $copyMethod == 'bcc') {
  3786. +                        // Add bcc to customer email
  3787. +                        foreach ($copyTo as $email) {
  3788. +                            $emailInfo->addBcc($email);
  3789. +                        }
  3790. +                    }
  3791. +                    $mailer->addEmailInfo($emailInfo);
  3792. +                }
  3793. +
  3794. +                // Email copies are sent as separated emails if their copy method is
  3795. +                // 'copy' or a customer should not be notified
  3796. +                if ($copyTo && ($copyMethod == 'copy' || !$notifyCustomer)) {
  3797. +                    foreach ($copyTo as $email) {
  3798. +                        $emailInfo = Mage::getModel('core/email_info');
  3799. +                        $emailInfo->addTo($email);
  3800. +                        $mailer->addEmailInfo($emailInfo);
  3801. +                    }
  3802. +                }
  3803. +
  3804. +                // Set all required params and send emails
  3805. +                $mailer->setSender(Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_IDENTITY, $storeId));
  3806. +                $mailer->setStoreId($storeId);
  3807. +                $mailer->setTemplateId($templateId);
  3808. +                $mailer->setTemplateParams(array(
  3809. +                        'order'   => $this,
  3810. +                        'comment' => $comment,
  3811. +                        'billing' => $this->getBillingAddress()
  3812. +                    )
  3813. +                );
  3814. +                //$mailer->send();
  3815. +                
  3816.              }
  3817. -         }
  3818. -
  3819. -         // Set all required params and send emails
  3820. -         $mailer->setSender(Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_IDENTITY, $storeId));
  3821. -         $mailer->setStoreId($storeId);
  3822. -         $mailer->setTemplateId($templateId);
  3823. -         $mailer->setTemplateParams(array(
  3824. -               'order' => $this,
  3825. -               'comment' => $comment,
  3826. -               'billing' => $this->getBillingAddress()
  3827. -            )
  3828. -         );
  3829. -         //$mailer->send();
  3830. -      }
  3831. +        
  3832.  
  3833. -      return $this;
  3834. -   }
  3835. +        return $this;
  3836. +    }
  3837.      
  3838.      /**
  3839.       * Send email with order information on COD
  3840.       */
  3841. +    
  3842. +    
  3843.      public function getSplitOrderContent($orderId,$entityId)
  3844.      {
  3845.          
  3846. @@ -1632,11 +1617,11 @@ class Mage_Sales_Model_Order extends Mage_Sales_Model_Abstract
  3847.              if(count($result)==0)
  3848.              {
  3849.                  $content .= '<div style="font-size:12px;margin-bottom:5px;line-height: 18px;">
  3850. -                     <span style="min-width:190px;display:inline-block;padding-left: 5px;box-sizing: border-box;"><strong>Order ID: </strong>'.$orderId.'</span>
  3851. -                     <span style="min-width:260px;max-width:260px;vertical-align:top;display:inline-block;padding-left: 5px;box-sizing: border-box;"><strong>Seller: </strong>'.$vendor_name.'</span>
  3852. -                                           <!--a href="" style="font-weight:bold;color:#ffffff;background-color:#0074a1;border-radius:2px;border:1px solid #0074a1;padding:6px 13px;text-decoration:none;margin-left: 5px;display:inline-block;">Track Your Order</a-->
  3853. -                  </div>
  3854. -                  <div style="border:1px solid #dddddd;font-size:12px;margin-bottom:15px;margin: 0 5px 15px;overflow:auto;" align="center">';
  3855. +                               <span style="min-width:190px;display:inline-block;padding-left: 5px;box-sizing: border-box;"><strong>Order ID: </strong>'.$orderId.'</span>
  3856. +                               <span style="min-width:260px;max-width:260px;vertical-align:top;display:inline-block;padding-left: 5px;box-sizing: border-box;"><strong>Seller: </strong>'.$vendor_name.'</span>
  3857. +                               <!--a href="" style="font-weight:bold;color:#ffffff;background-color:#0074a1;border-radius:2px;border:1px solid #0074a1;padding:6px 13px;text-decoration:none;margin-left: 5px;display:inline-block;">Track Your Order</a-->
  3858. +                       </div>
  3859. +                       <div style="border:1px solid #dddddd;font-size:12px;margin-bottom:15px;margin: 0 5px 15px;overflow:auto;" align="center">';
  3860.  
  3861.                                 $iCnt=1;
  3862.                  foreach ($order->getAllItems() as $item)
  3863. @@ -1672,7 +1657,7 @@ class Mage_Sales_Model_Order extends Mage_Sales_Model_Abstract
  3864.                          $dispatch = $row['value'];
  3865.                      }
  3866.                      
  3867. -                    $orderDate2= $item['created_at'];
  3868. +                    $orderDate2= $orderItem['created_at'];
  3869.          
  3870.                      if (is_numeric($dispatch))
  3871.                      {
  3872. diff --git a/app/code/local/Smartwave/Megamenu/Helper/Data.php b/app/code/local/Smartwave/Megamenu/Helper/Data.php
  3873. index 75b7c69..7b437aa 100644
  3874. --- a/app/code/local/Smartwave/Megamenu/Helper/Data.php
  3875. +++ b/app/code/local/Smartwave/Megamenu/Helper/Data.php
  3876. @@ -183,21 +183,4 @@ HTML;
  3877.              return true;
  3878.          return false;
  3879.      }
  3880. -    
  3881. -    //added by Jasleen Kaur to get only the main categories
  3882. -
  3883. -    public function getMenuCategories()
  3884. -    {
  3885. -        $menuData = Mage::helper('megamenu')->getMenuData();
  3886. -        extract($menuData);
  3887. -        // --- Menu Content ---
  3888. -        $menuContent = '';
  3889. -        $menuContentArray = array();
  3890. -        foreach ($_categories as $_category) {
  3891. -            if ($_category->getIsActive()) {
  3892. -                $menuContentArray[$_category->getName()] = $_category->getRequestPath();
  3893. -            }
  3894. -        }
  3895. -        return $menuContentArray;
  3896. -    }
  3897.  }
  3898. \ No newline at end of file
  3899. diff --git a/app/code/local/Tolexo/Categoryreorder/Block/Categoryblock.php b/app/code/local/Tolexo/Categoryreorder/Block/Categoryblock.php
  3900. deleted file mode 100644
  3901. index 3eeef2d..0000000
  3902. --- a/app/code/local/Tolexo/Categoryreorder/Block/Categoryblock.php
  3903. +++ /dev/null
  3904. @@ -1,14 +0,0 @@
  3905. -<?php
  3906. -
  3907. -class Tolexo_Categoryreorder_Block_Categoryblock extends Mage_Core_Block_Template
  3908. -{
  3909. - /**
  3910. - * prepare block's layout
  3911. - *
  3912. - * @return Tutorialmagento_Helloworld_Block_Helloworld
  3913. - */
  3914. - public function _prepareLayout()
  3915. - {
  3916. - return parent::_prepareLayout();
  3917. - }
  3918. -}
  3919. diff --git a/app/code/local/Tolexo/Categoryreorder/Helper/Data.php b/app/code/local/Tolexo/Categoryreorder/Helper/Data.php
  3920. deleted file mode 100644
  3921. index 29dd714..0000000
  3922. --- a/app/code/local/Tolexo/Categoryreorder/Helper/Data.php
  3923. +++ /dev/null
  3924. @@ -1,5 +0,0 @@
  3925. -<?php
  3926. -class Tolexo_Categoryreorder_Helper_Data extends Mage_Core_Helper_Abstract
  3927. -{
  3928. -
  3929. -}
  3930. diff --git a/app/code/local/Tolexo/Categoryreorder/controllers/IndexController.php b/app/code/local/Tolexo/Categoryreorder/controllers/IndexController.php
  3931. deleted file mode 100644
  3932. index 8cdd530..0000000
  3933. --- a/app/code/local/Tolexo/Categoryreorder/controllers/IndexController.php
  3934. +++ /dev/null
  3935. @@ -1,81 +0,0 @@
  3936. -<?php
  3937. -
  3938. -class Tolexo_Categoryreorder_IndexController extends Mage_Adminhtml_Controller_Action
  3939. -{
  3940. -
  3941. -    public function categoryl1Action()
  3942. -    {
  3943. -        $paramArr = Mage::app()->getRequest()->getParams();
  3944. -        $this->loadLayout();
  3945. -        if(isset($paramArr['update_catlist'])) {
  3946. -            $updatedCatArr = json_decode($paramArr['update_catlist'],true);
  3947. -            $this->updateCategory($updatedCatArr);
  3948. -        }
  3949. -      
  3950. -        $this->renderLayout();
  3951. -    }
  3952. -
  3953. -    protected function updateCategory($categoryListArr)
  3954. -    {
  3955. -        $updatedflag = false;
  3956. -        foreach($categoryListArr as $key => $catList) {
  3957. -            $id = $catList['id'];
  3958. -            $position = $catList['position'];
  3959. -            $data = array('position' => $position);
  3960. -            $model = Mage::getModel('catalog/category')->load($id)->addData($data);
  3961. -            try {
  3962. -                $model->setId($id)->save();
  3963. -                $connObj = Mage::getSingleton('core/resource')->getConnection('core_write');
  3964. -                $result = $connObj->query("update catalog_category_flat_store_1 set position = $position where entity_id = $id");
  3965. -                $updatedflag = 1;
  3966. -            } catch (Exception $e){
  3967. -                $updatedflag = $e->getMessage();
  3968. -                break;
  3969. -            }
  3970. -        }
  3971. -
  3972. -        $block = Mage::app()->getLayout()->getBlock('categoryblock');
  3973. -        $block->assign(array('updatedFlag'=>$updatedflag));
  3974. -     }
  3975. -     public function categoryl2Action()
  3976. -     {
  3977. -        $paramArr = Mage::app()->getRequest()->getParams();
  3978. -        $this->loadLayout();
  3979. -        if(isset($paramArr['l1catlist'])) {
  3980. -            $block = Mage::app()->getLayout()->getBlock('categoryblock');
  3981. -            $block->assign(array('parentId'=>$paramArr['l1catlist']));
  3982. -        }
  3983. -        if(isset($paramArr['update_catlist'])) {
  3984. -            $updatedCatl2Arr = json_decode($paramArr['update_catlist'],true);
  3985. -            $this->updateCategory($updatedCatl2Arr);
  3986. -            $block = Mage::app()->getLayout()->getBlock('categoryblock');
  3987. -            $block->assign(array('parentId'=>$paramArr['parentCatId']));
  3988. -        }
  3989. -      
  3990. -        $this->renderLayout();
  3991. -    }
  3992. -    public function categoryl3Action()
  3993. -     {
  3994. -        $paramArr = Mage::app()->getRequest()->getParams();
  3995. -        $this->loadLayout();
  3996. -        if(isset($paramArr['l1catlist'])) {
  3997. -            $block = Mage::app()->getLayout()->getBlock('categoryblock');
  3998. -            $block->assign(array('parentIdl2'=>$paramArr['l1catlist']));
  3999. -        }
  4000. -        if(isset($paramArr['l2catlist'])) {
  4001. -            $block = Mage::app()->getLayout()->getBlock('categoryblock');
  4002. -            $block->assign(array('parentIdl2'=>$paramArr['parentCatIdl2']));
  4003. -            $block->assign(array('parentIdl3'=>$paramArr['l2catlist']));
  4004. -        }
  4005. -        if(isset($paramArr['update_catlist'])) {
  4006. -            $updatedCatl3Arr = json_decode($paramArr['update_catlist'],true);
  4007. -            $this->updateCategory($updatedCatl3Arr);
  4008. -            $block = Mage::app()->getLayout()->getBlock('categoryblock');
  4009. -            $block->assign(array('parentIdl2'=>$paramArr['parentCatIdl2']));
  4010. -            $block->assign(array('parentIdl3'=>$paramArr['parentCatIdl3']));
  4011. -        }
  4012. -      
  4013. -        $this->renderLayout();
  4014. -    }
  4015. -
  4016. -}
  4017. diff --git a/app/code/local/Tolexo/Categoryreorder/etc/config.xml b/app/code/local/Tolexo/Categoryreorder/etc/config.xml
  4018. deleted file mode 100644
  4019. index 93451d4..0000000
  4020. --- a/app/code/local/Tolexo/Categoryreorder/etc/config.xml
  4021. +++ /dev/null
  4022. @@ -1,89 +0,0 @@
  4023. -<?xml version="1.0"?>
  4024. -
  4025. -<config>
  4026. -    <modules>
  4027. -        <Tolexo_Categoryreorder>
  4028. -            <version>0.1.0</version>
  4029. -        </Tolexo_Categoryreorder>
  4030. -    </modules>
  4031. -        
  4032. -        
  4033. -<global>
  4034. -        <helpers>
  4035. -            <Categoryreorder>
  4036. -                <class>Tolexo_Categoryreorder_Helper</class>
  4037. -            </Categoryreorder>  
  4038. -        </helpers>
  4039. -        <blocks>
  4040. -            <categoryreorder>
  4041. -                <class>Tolexo_Categoryreorder_Block</class>
  4042. -            </categoryreorder>
  4043. -        </blocks>
  4044. -</global>
  4045. -    
  4046. -    <admin>
  4047. -        <routers>
  4048. -            <categoryreorder>
  4049. -                <use>admin</use>
  4050. -                <args>
  4051. -                    <module>Tolexo_Categoryreorder</module>
  4052. -                    <frontName>categoryreorder</frontName>
  4053. -                </args>
  4054. -            </categoryreorder>
  4055. -        </routers>
  4056. -    </admin>
  4057. -    
  4058. -    <adminhtml>
  4059. -        <menu>
  4060. -            <category translate="title" module="Categoryreorder">
  4061. -                <title>Category Reorder</title>
  4062. -                <sort_order>9999</sort_order>
  4063. -                <children>
  4064. -                    <categoryL1 module="Categoryreorder">
  4065. -                        <title>L1 Category</title>
  4066. -                        <action>categoryreorder/index/categoryl1</action>
  4067. -                    </categoryL1>
  4068. -                    <categoryL2 module="Categoryreorder">
  4069. -                        <title>L2 Category</title>
  4070. -                        <action>categoryreorder/index/categoryl2</action>
  4071. -                    </categoryL2>
  4072. -                    <categoryL3 module="Categoryreorder">
  4073. -                        <title>L3 Category</title>
  4074. -                        <action>categoryreorder/index/categoryl3</action>
  4075. -                    </categoryL3>
  4076. -                </children>                
  4077. -            </category>
  4078. -        </menu>
  4079. -        <acl>
  4080. -            <resources>
  4081. -                <admin>
  4082. -                    <children>
  4083. -                        <category translate="title" module="Categoryreorder">
  4084. -                                                       <title>category reorder</title>
  4085. -                                       <sort_order>9999</sort_order>
  4086. -                            <children>
  4087. -                                <categoryL1>
  4088. -                                    <title>categoryL1</title>
  4089. -                                </categoryL1>
  4090. -                                <categoryL2>
  4091. -                                    <title>categoryL2</title>
  4092. -                                </categoryL2>
  4093. -                                <categoryL3>
  4094. -                                    <title>categoryL3</title>
  4095. -                                </categoryL3>
  4096. -                            </children>
  4097. -                       </category>
  4098. -                   </children>
  4099. -               </admin>
  4100. -           </resources>
  4101. -        </acl>
  4102. -        <layout>
  4103. -            <updates>
  4104. -                <categoryreorder>
  4105. -                    <file>categoryreorder.xml</file>
  4106. -                </categoryreorder>
  4107. -            </updates>
  4108. -        </layout>
  4109. -    </adminhtml>    
  4110. -    
  4111. -</config>
  4112. diff --git a/app/code/local/Tolexo/Checkout/controllers/CartController.php b/app/code/local/Tolexo/Checkout/controllers/CartController.php
  4113. index ba80901..284670c 100755
  4114. --- a/app/code/local/Tolexo/Checkout/controllers/CartController.php
  4115. +++ b/app/code/local/Tolexo/Checkout/controllers/CartController.php
  4116. @@ -1,9 +1,5 @@
  4117.  <?php
  4118. -
  4119.  require_once 'Mage/Checkout/controllers/CartController.php';
  4120. -$INTERNAL_FUNCTION_CALL = true;
  4121. -require_once MAGENTO_ROOT.'/mobileapi/api_cart.php';
  4122. -
  4123.  /**
  4124.   * Magento
  4125.   *
  4126. @@ -126,59 +122,48 @@ class Tolexo_Checkout_CartController extends Mage_Core_Controller_Front_Action
  4127.       */
  4128.      public function indexAction()
  4129.      {
  4130. -        $params = $this->getRequest()->getParams();
  4131.          $cart = $this->_getCart();
  4132. -        $cart->init();
  4133. -        $cartQty = $cart->getQuote()->getItemsCount();
  4134. -        if(!empty($params['ajaxCart']) && $cartQty > 0) {
  4135. -            $customerId = $cart->getCustomerSession()->getCustomer()->getId();
  4136. -            $session        = $this->_getSession();
  4137. -            $quoteId       = $session->getQuoteId();
  4138. -            $cartApiArr = CartSKUnfo($customerId, $quoteId);
  4139. -            include_once 'cartLayout.php';
  4140. -            exit();
  4141. -        } else {
  4142. -            if ($cartQty) {
  4143. -                $cart->save();
  4144. +        if ($cart->getQuote()->getItemsCount()) {
  4145. +            $cart->init();
  4146. +            $cart->save();
  4147.  
  4148. -                if (!$this->_getQuote()->validateMinimumAmount()) {
  4149. -                    $minimumAmount = Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())
  4150. -                        ->toCurrency(Mage::getStoreConfig('sales/minimum_order/amount'));
  4151. +            if (!$this->_getQuote()->validateMinimumAmount()) {
  4152. +                $minimumAmount = Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())
  4153. +                    ->toCurrency(Mage::getStoreConfig('sales/minimum_order/amount'));
  4154.  
  4155. -                    $warning = Mage::getStoreConfig('sales/minimum_order/description')
  4156. -                        ? Mage::getStoreConfig('sales/minimum_order/description')
  4157. -                        : Mage::helper('checkout')->__('Minimum order amount is %s', $minimumAmount);
  4158. +                $warning = Mage::getStoreConfig('sales/minimum_order/description')
  4159. +                    ? Mage::getStoreConfig('sales/minimum_order/description')
  4160. +                    : Mage::helper('checkout')->__('Minimum order amount is %s', $minimumAmount);
  4161.  
  4162. -                    $cart->getCheckoutSession()->addNotice($warning);
  4163. -                }
  4164. +                $cart->getCheckoutSession()->addNotice($warning);
  4165.              }
  4166. +        }
  4167.  
  4168. -            // Compose array of messages to add
  4169. -            $messages = array();
  4170. -            foreach ($cart->getQuote()->getMessages() as $message) {
  4171. -                if ($message) {
  4172. -                    // Escape HTML entities in quote message to prevent XSS
  4173. -                    $message->setCode(Mage::helper('core')->escapeHtml($message->getCode()));
  4174. -                    $messages[] = $message;
  4175. -                }
  4176. +        // Compose array of messages to add
  4177. +        $messages = array();
  4178. +        foreach ($cart->getQuote()->getMessages() as $message) {
  4179. +            if ($message) {
  4180. +                // Escape HTML entities in quote message to prevent XSS
  4181. +                $message->setCode(Mage::helper('core')->escapeHtml($message->getCode()));
  4182. +                $messages[] = $message;
  4183.              }
  4184. -            $cart->getCheckoutSession()->addUniqueMessages($messages);
  4185. +        }
  4186. +        $cart->getCheckoutSession()->addUniqueMessages($messages);
  4187.  
  4188. -            /**
  4189. -             * if customer enteres shopping cart we should mark quote
  4190. -             * as modified bc he can has checkout page in another window.
  4191. -             */
  4192. -            $this->_getSession()->setCartWasUpdated(true);
  4193. +        /**
  4194. +         * if customer enteres shopping cart we should mark quote
  4195. +         * as modified bc he can has checkout page in another window.
  4196. +         */
  4197. +        $this->_getSession()->setCartWasUpdated(true);
  4198.  
  4199. -            Varien_Profiler::start(__METHOD__ . 'cart_display');
  4200. -            $this
  4201. +        Varien_Profiler::start(__METHOD__ . 'cart_display');
  4202. +        $this
  4203.              ->loadLayout()
  4204.              ->_initLayoutMessages('checkout/session')
  4205.              ->_initLayoutMessages('catalog/session')
  4206.              ->getLayout()->getBlock('head')->setTitle($this->__('Shopping Cart'));
  4207. -            $this->renderLayout();
  4208. -            Varien_Profiler::stop(__METHOD__ . 'cart_display');
  4209. -        }
  4210. +        $this->renderLayout();
  4211. +        Varien_Profiler::stop(__METHOD__ . 'cart_display');
  4212.      }
  4213.  
  4214.      /**
  4215. @@ -189,10 +174,10 @@ class Tolexo_Checkout_CartController extends Mage_Core_Controller_Front_Action
  4216.       */
  4217.      public function addAction()
  4218.      {
  4219. -        // if (!$this->_validateFormKey()) {
  4220. -        //     $this->_goBack();
  4221. -        //     return;
  4222. -        // }
  4223. +        if (!$this->_validateFormKey()) {
  4224. +            $this->_goBack();
  4225. +            return;
  4226. +        }
  4227.          $cart   = $this->_getCart();
  4228.          $params = $this->getRequest()->getParams();
  4229.          try {
  4230. @@ -205,23 +190,12 @@ class Tolexo_Checkout_CartController extends Mage_Core_Controller_Front_Action
  4231.  
  4232.              $product = $this->_initProduct();
  4233.              $related = $this->getRequest()->getParam('related_product');
  4234. -            $cartQty = $cart->getQuote()->getItemsCount();
  4235. +
  4236.              /**
  4237.               * Check product availability
  4238.               */
  4239.              if (!$product) {
  4240. -                $this->_getSession()->addError($this->__('Product not available.'));
  4241. -                if(!empty($params['ajaxCart']) && $cartQty > 0) {
  4242. -                    $cart = $this->_getCart();
  4243. -                    $customerId = $cart->getCustomerSession()->getCustomer()->getId();
  4244. -                    $session        = $this->_getSession();
  4245. -                    $quoteId       = $session->getQuoteId();
  4246. -                    $cartApiArr = CartSKUnfo($customerId, $quoteId);
  4247. -                    include_once 'cartLayout.php';
  4248. -                    exit();
  4249. -                } else {
  4250. -                    $this->_goBack();
  4251. -                }
  4252. +                $this->_goBack();
  4253.                  return;
  4254.              }
  4255.  
  4256. @@ -242,24 +216,12 @@ class Tolexo_Checkout_CartController extends Mage_Core_Controller_Front_Action
  4257.              );
  4258.  
  4259.              if (!$this->_getSession()->getNoCartRedirect(true)) {
  4260. -                //if (!$cart->getQuote()->getHasError()) {
  4261. +                if (!$cart->getQuote()->getHasError()) {
  4262.                      $message = $this->__('%s was added to your shopping cart.', Mage::helper('core')->escapeHtml($product->getName()));
  4263.                      $this->_getSession()->addSuccess($message);
  4264. -                //}
  4265. -                if(!empty($params['ajaxCart']) && $cartQty > 0) {
  4266. -                    $cart = $this->_getCart();
  4267. -                    $customerId = $cart->getCustomerSession()->getCustomer()->getId();
  4268. -                    $session        = $this->_getSession();
  4269. -                    $quoteId       = $session->getQuoteId();
  4270. -                    $cartApiArr = CartSKUnfo($customerId, $quoteId);
  4271. -                    
  4272. -                    include_once 'cartLayout.php';
  4273. -                    exit();
  4274. -                } else {
  4275. -                    $this->_goBack();
  4276.                  }
  4277. +                $this->_goBack();
  4278.              }
  4279. -
  4280.          } catch (Mage_Core_Exception $e) {
  4281.              if ($this->_getSession()->getUseNotice(true)) {
  4282.                  $this->_getSession()->addNotice(Mage::helper('core')->escapeHtml($e->getMessage()));
  4283. @@ -436,11 +398,11 @@ class Tolexo_Checkout_CartController extends Mage_Core_Controller_Front_Action
  4284.       */
  4285.      public function updatePostAction()
  4286.      {
  4287. -        // if (!$this->_validateFormKey()) {
  4288. -        //     $this->_redirect('*/*/');
  4289. -        //     return;
  4290. -        // }
  4291. -        $params = $this->getRequest()->getParams();
  4292. +        if (!$this->_validateFormKey()) {
  4293. +            $this->_redirect('*/*/');
  4294. +            return;
  4295. +        }
  4296. +
  4297.          $updateAction = (string)$this->getRequest()->getParam('update_cart_action');
  4298.  
  4299.          switch ($updateAction) {
  4300. @@ -454,20 +416,7 @@ class Tolexo_Checkout_CartController extends Mage_Core_Controller_Front_Action
  4301.                  $this->_updateShoppingCart();
  4302.          }
  4303.  
  4304. -        $cartQty = Mage::helper('checkout/cart')->getSummaryCount();
  4305. -        if((!empty($params['ajaxCart'])) && $cartQty > 0) {
  4306. -            $cart = $this->_getCart();
  4307. -            $customerId = $cart->getCustomerSession()->getCustomer()->getId();
  4308. -            $session        = $this->_getSession();
  4309. -            $quoteId       = $session->getQuoteId();
  4310. -            $cartApiArr = CartSKUnfo($customerId, $quoteId);
  4311. -            
  4312. -            include_once 'cartLayout.php';
  4313. -            exit();
  4314. -        } else {
  4315. -            $this->_goBack();
  4316. -        }
  4317. -
  4318. +        $this->_goBack();
  4319.      }
  4320.  
  4321.      /**
  4322. @@ -492,7 +441,8 @@ class Tolexo_Checkout_CartController extends Mage_Core_Controller_Front_Action
  4323.                  }
  4324.  
  4325.                  $cartData = $cart->suggestItemsQty($cartData);
  4326. -                $cart->updateItems($cartData)->save();
  4327. +                $cart->updateItems($cartData)
  4328. +                    ->save();
  4329.              }
  4330.              $this->_getSession()->setCartWasUpdated(true);
  4331.          } catch (Mage_Core_Exception $e) {
  4332. @@ -523,36 +473,17 @@ class Tolexo_Checkout_CartController extends Mage_Core_Controller_Front_Action
  4333.       */
  4334.      public function deleteAction()
  4335.      {
  4336. -        $params = $this->getRequest()->getParams();
  4337.          $id = (int) $this->getRequest()->getParam('id');
  4338.          if ($id) {
  4339.              try {
  4340.                  $this->_getCart()->removeItem($id)
  4341.                    ->save();
  4342. -                $cartQty = Mage::helper('checkout/cart')->getSummaryCount();
  4343. -                if($cartQty > 0) {
  4344. -                    $this->_getSession()->addSuccess(
  4345. -                        $this->__('1 Item removed successfully'));
  4346. -                }
  4347. -                
  4348.              } catch (Exception $e) {
  4349.                  $this->_getSession()->addError($this->__('Cannot remove the item.'));
  4350.                  Mage::logException($e);
  4351.              }
  4352.          }
  4353. -        if(!empty($params['ajaxCart']) && $cartQty > 0) {
  4354. -            $cart = $this->_getCart();
  4355. -            $customerId = $cart->getCustomerSession()->getCustomer()->getId();
  4356. -            $session        = $this->_getSession();
  4357. -            $quoteId       = $session->getQuoteId();
  4358. -            $cartApiArr = CartSKUnfo($customerId, $quoteId);
  4359. -            
  4360. -            include_once 'cartLayout.php';
  4361. -            exit();
  4362. -        } else {
  4363. -            $this->_goBack();
  4364. -        }
  4365. -        //$this->_redirectReferer(Mage::getUrl('*/*'));
  4366. +        $this->_redirectReferer(Mage::getUrl('*/*'));
  4367.      }
  4368.  
  4369.      /**
  4370. @@ -649,20 +580,7 @@ class Tolexo_Checkout_CartController extends Mage_Core_Controller_Front_Action
  4371.              Mage::logException($e);
  4372.          }
  4373.  
  4374. -        $params = $this->getRequest()->getParams();
  4375. -
  4376. -        if(!empty($params['ajaxCart'])) {
  4377. -            $cart = $this->_getCart();
  4378. -            $customerId = $cart->getCustomerSession()->getCustomer()->getId();
  4379. -            $session        = $this->_getSession();
  4380. -            $quoteId       = $session->getQuoteId();
  4381. -            $cartApiArr = CartSKUnfo($customerId, $quoteId);
  4382. -            
  4383. -            include_once 'cartLayout.php';
  4384. -            exit();
  4385. -        } else {
  4386. -            $this->_goBack();
  4387. -        }
  4388. +        $this->_goBack();
  4389.      }
  4390.  
  4391.      /**
  4392. diff --git a/app/code/local/Tolexo/Checkout/controllers/cartLayout.php b/app/code/local/Tolexo/Checkout/controllers/cartLayout.php
  4393. deleted file mode 100644
  4394. index 1ee6b2b..0000000
  4395. --- a/app/code/local/Tolexo/Checkout/controllers/cartLayout.php
  4396. +++ /dev/null
  4397. @@ -1,343 +0,0 @@
  4398. -
  4399. -<?php
  4400. -echo Mage::app()->getLayout()->createBlock('gtm/gtm')->getAjaxCartPageData();
  4401. -$cartArr = $cartApiArr['data'];
  4402. -?>
  4403. -<div class="cart main-cart">
  4404. -    <div class="page-title title-buttons">
  4405. -        <h1>Shopping Cart
  4406. -            <span class="cart-item">
  4407. -            <?php $cartQty = count($cartArr['cart_details']);
  4408. -            echo "(".$cartQty;
  4409. -            echo ($cartQty <=1)? " Item)" : " Items)";
  4410. -            ?>
  4411. -            </span>
  4412. -            <input type = "hidden" id="cart-count" value="<?php echo $cartQty ?>" />
  4413. -        </h1>
  4414. -    </div>
  4415. -
  4416. -    <div class="row">
  4417. -        <div class="col-sm-12">
  4418. -            <div class="cart-table-wrap">
  4419. -                <div class="scroll-tb">
  4420. -                        
  4421. -                </div>
  4422. -
  4423. -                <form action="<?php echo Mage::getBaseUrl().'/checkout/cart/updatePost/' ?>" method="post">                                      
  4424. -                    <fieldset class="cart-popup-scroll">
  4425. -                    <?php
  4426. -                    if(Mage::getStoreConfig('carriers/tolexo_multistepcheckout/include_tax')) {
  4427. -                        $total_amount =  $cartArr['sub_total'] + round($cartArr['tax']);
  4428. -                    } else {
  4429. -                        $total_amount = $cartArr['sub_total'];
  4430. -                    }
  4431. -                    $minimum_order_amount = Mage::getStoreConfig('carriers/tolexo_multistepcheckout/minimum_order_amount');
  4432. -                    $value = $minimum_order_amount - $total_amount;
  4433. -                    if($value > 0) {
  4434. -                    ?>
  4435. -                    <div class="shipping-offer">
  4436. -                          <?php echo "Free Shipping! if total cart value amount is Rs. ".$minimum_order_amount." or above. You can buy products worth Rs. ".$value." or more to avail this discount." ?>
  4437. -                     </div>
  4438. -                    <?php } ?>
  4439. -
  4440. -                        <?php
  4441. -                        $mgshtml = Mage::app()->getLayout()->getMessagesBlock()->getGroupedHtml();
  4442. -                        if(!empty($mgshtml)) {
  4443. -                            echo $mgshtml;
  4444. -                        }                        
  4445. -                        ?>
  4446. -
  4447. -                        <script>
  4448. -                            jQuery(".success-msg").delay(5000).slideUp(400);
  4449. -                        </script>
  4450. -                        <table id="shopping-cart-table" class="data-table cart-table">
  4451. -
  4452. -                        <thead>
  4453. -                            <tr>  
  4454. -                                <th class="frst-wd">&nbsp;<div class="ajaxpro-spinner" style="display: none;"></div></th>
  4455. -                                <th class="wid35 pro-name"><span class="nobr">Item</span></th>
  4456. -                                <th class="wid10">Qty</th>
  4457. -                                <th class="wid10"><span class="nobr">Unit Price</span></th>
  4458. -                                <th class="last wid10">Subtotal</th>
  4459. -                            </tr>
  4460. -                        </thead>
  4461. -                        <tfoot>
  4462. -                                
  4463. -                        </tfoot>
  4464. -                        <tbody>
  4465. -                        <?php
  4466. -                        $itemArrayRev = array_reverse($cartArr['cart_details'],true);
  4467. -                        foreach($itemArrayRev as $itemIndex=>$itemData) {
  4468. -                            $errQty = false;
  4469. -                            ?>
  4470. -                            <tr class="gry-bg">
  4471. -                                <td class="pr-img-td"><a href="<?php echo $itemData['product_details']['url'] ?>" title="<?php echo $itemData['name'] ?>" class="product-image"><img src="<?php echo $itemData['product_details']['image'] ?>" width="38" height="50" alt="<?php echo $itemData['name'] ?>" /></a>        
  4472. -                                <a href="<?php echo Mage::getBaseUrl().'checkout/cart/delete/id/'.$itemData['item_id'].'?ajaxCart=true' ?>" data-pid="<?php echo $itemData['item_id'] ?>" onclick="delCartProductsOption('<?php echo $itemData['item_id'] ?>')" title="Remove item" class="cart-remove">Remove</a>
  4473. -                                </td>
  4474. -                                <td class="product-name-td">
  4475. -                                    <h2 class="product-name">
  4476. -                                        <a href="<?php echo $itemData['product_details']['url'] ?>"><?php echo substr($itemData['name'],0,60)."..."; ?></a>
  4477. -                                    <div class="pack"> <?php echo ($itemData['product_details']['specification']['Number of Items in Pack'] > 1) ? "Pack of ". $itemData['product_details']['specification']['Number of Items in Pack'] : '' ;?> </div>
  4478. -                                    </h2>
  4479. -                                    <?php
  4480. -                                    if ((!empty($itemData['min_qty'])) && $itemData['quantity'] < $itemData['min_qty']) {
  4481. -                                        $errQty = true;
  4482. -                                        $errFlag = true;
  4483. -                                        ?>
  4484. -                                    <p class="item-msg error">* The minimun quantity allowed for purchase is <?php echo $itemData['min_qty'] ?>.</p>
  4485. -                                    <?php }elseif ((!empty($itemData['max_qty'])) && $itemData['quantity'] > $itemData['max_qty']) {
  4486. -                                        $errQty = true;
  4487. -                                        $errFlag = true;
  4488. -                                        ?>
  4489. -                                    <p class="item-msg error">* The maximum quantity allowed for purchase is <?php echo $itemData['max_qty'] ?>.</p>
  4490. -                                    <?php } elseif ($itemData['in_stock'] == 0){
  4491. -                                        $errQty = true;
  4492. -                                        $errFlag = true;
  4493. -                                        ?>
  4494. -                                            <p class="item-msg error">* This product is currently out of stock.</p>
  4495. -                                    <?php } elseif($itemData['manage_stock'] == 1) {
  4496. -                                                if((!empty($itemData['stock_qty'])) && $itemData['stock_qty'] > 0 && $itemData['quantity'] > $itemData['stock_qty']){
  4497. -                                                    $errQty = true;
  4498. -                                                    $errFlag = true;
  4499. -                                        
  4500. -                                        ?>
  4501. -                                            <p class="item-msg error">* The requested quantity for "<?php echo substr($itemData['name'],0,60); ?>" is not available.</p>
  4502. -                                    <?php       }
  4503. -                                            }
  4504. -                                     ?>
  4505. -                                </td>
  4506. -        
  4507. -                                <td>
  4508. -                                    <div class="qty-holder">
  4509. -                                    <a href="javascript:void(0)" class="table_qty_dec">-</a><input name="cart[<?php echo $itemData['item_id'] ?>][qty]" value="<?php echo $itemData['quantity'] ?>" size="4" title="Qty" class="input-text qty <?php if($errQty) echo 'err-qty' ; ?>" maxlength="12" /><a href="javascript:void(0)" class="table_qty_inc">+</a>
  4510. -                                    <a class="edit-qty" href="<?php echo Mage::getBaseUrl().'checkout/cart/configure/id/'.$itemData['item_id'].'/' ?>" title="Edit item parameters"><i class="icon-pencil"></i></a>
  4511. -                                    </div>
  4512. -                                    <button type="submit" name="update_cart_action" value="update_qty" title="Update" class="button btn-update" onclick="setLayerData('CartPage', 'Cart Page', 'Update', 'Update');">
  4513. -                                    <span><span>Update</span></span>
  4514. -                                    </button>
  4515. -          
  4516. -                                </td>
  4517. -                                <td>
  4518. -                                <span class="cart-price">
  4519. -            <span class="price">Rs. <?php echo number_format($itemData['Price']) ?></span>                
  4520. -        </span>
  4521. -
  4522. -
  4523. -    </td>
  4524. -                      
  4525. -    <td class="td-total">
  4526. -        <span class="cart-price">
  4527. -            <span class="price">Rs. <?php echo number_format($itemData['Price'] * $itemData['quantity']) ?></span>                            
  4528. -        </span>
  4529. -    </td>
  4530. -</tr>
  4531. -
  4532. -        <?php } ?>
  4533. -        </tbody>
  4534. -    </table>
  4535. -    <script type="text/javascript">
  4536. -        //<![CDATA[
  4537. -        decorateTable('shopping-cart-table');
  4538. -        jQuery(function($){
  4539. -            $(".cart .discount h2,.cart .shipping h2").click(function(){
  4540. -                if ($(this).hasClass('opened')) {
  4541. -                    $(this).removeClass('opened');
  4542. -                    $(this).next().slideUp();
  4543. -                } else {
  4544. -                    $(this).addClass('opened');
  4545. -                    $(this).next().slideDown();
  4546. -                }
  4547. -            });
  4548. -        })
  4549. -        //]]>
  4550. -    </script>
  4551. -    </fieldset>
  4552. -</form>
  4553. -<div class="cart-collaterals">
  4554. -    <form id="discount-coupon-form" action="<?php echo Mage::getBaseUrl().'checkout/cart/couponPost/' ?>" method="post">
  4555. -        <div class="discount">
  4556. -            <input type="hidden" name="remove" id="remove-coupone" value="0" />
  4557. -            <div class="input-box">
  4558. -                <span class="feature-icn"></span>
  4559. -                <input class="input-text place-icn common-sprite" id="coupon_code" name="coupon_code" value="<?php echo !empty($cartArr['coupon_code']) ? $cartArr['coupon_code']:'' ; ?>" placeholder="Apply Discount coupon" />
  4560. -                <div class="buttons-set">
  4561. -                    <button type="button" title="Apply Coupon" class="button" onclick="discountForm.submit(false)" value="Apply Coupon"><span><span>Apply</span></span></button>
  4562. -                </div>
  4563. -                <?php if (!empty($cartArr['discount_amount'])) { ?>
  4564. -                <button type="button" title="Remove Coupon" class="button rmv-cupn" onclick="discountForm.submit(true)" value="Remove Coupon"><span><span>Remove Coupon</span></span></button>
  4565. -                <?php
  4566. -                }
  4567. -                ?>
  4568. -            </div>
  4569. -            <!-- <div class="login-msg">*Applicable only for logged-in users. <a href="http://tolexo.rep/index.php/customer/account/login/">Login here</a></div> -->
  4570. -        </div>
  4571. -    </form>
  4572. -<script type="text/javascript">
  4573. -//<![CDATA[
  4574. -var discountForm = new VarienForm('discount-coupon-form');
  4575. -discountForm.submit = function (isRemove) {
  4576. -    if (isRemove) {
  4577. -        $('coupon_code').removeClassName('required-entry');
  4578. -        $('remove-coupone').value = "1";
  4579. -    } else {
  4580. -        $('coupon_code').addClassName('required-entry');
  4581. -        $('remove-coupone').value = "0";
  4582. -    }
  4583. -    return VarienForm.prototype.submit.bind(discountForm)();
  4584. -}
  4585. -//]]>
  4586. -</script>
  4587. -                    <div class="shipping">
  4588. -    <h2>Estimate Shipping and Tax</h2>
  4589. -    <div class="shipping-form">
  4590. -       <form action="<?php echo Mage::getBaseUrl().'checkout/cart/estimatePost/' ?>" method="post" id="shipping-zip-form">
  4591. -            <p>Enter your destination to get a shipping estimate.</p>
  4592. -            <ul class="form-list">
  4593. -                <li>
  4594. -                    <label for="country" class="required"><em>*</em>Country</label>
  4595. -                    <div class="input-box">
  4596. -                        <select name="country_id" id="country" class="validate-select" title="Country" >
  4597. -                            <option value="" > </option>
  4598. -                            <option value="IN" selected="selected" >India</option>
  4599. -                        </select>                    
  4600. -                    </div>
  4601. -                </li>
  4602. -                <li>
  4603. -                    <label for="region_id">State/Province</label>
  4604. -                    <div class="input-box">
  4605. -                        <select id="region_id" name="region_id" title="State/Province" style="display:none;">
  4606. -                            <option value="">Please select state</option>
  4607. -                        </select>
  4608. -                       <script type="text/javascript">
  4609. -                       //<![CDATA[
  4610. -                           $('region_id').setAttribute('defaultValue',  "");
  4611. -                       //]]>
  4612. -                       </script>
  4613. -                       <input type="text" id="region" name="region" value=""  title="State/Province" class="input-text" style="display:none;" />
  4614. -                   </div>
  4615. -                </li>
  4616. -                                        <li>
  4617. -                    <label for="postcode">Zip/Postal Code</label>
  4618. -                    <div class="input-box">
  4619. -                        <input class="input-text validate-postcode" type="text" id="postcode" name="estimate_postcode" value="" />
  4620. -                    </div>
  4621. -                </li>
  4622. -            </ul>
  4623. -            <div class="buttons-set">
  4624. -                <button type="button" title="Get a Quote" onclick="coShippingMethodForm.submit()" class="button"><span><span>Get a Quote</span></span></button>
  4625. -            </div>
  4626. -        </form>
  4627. -        <script type="text/javascript">
  4628. -        //<![CDATA[
  4629. -            new RegionUpdater('country', 'region', 'region_id', {"config":{"show_all_regions":true,"regions_required":["IN"]},"IN":{"485":{"code":"Andaman and Nicobar","name":"Andaman and Nicobar"},"486":{"code":"Andhra Pradesh","name":"Andhra Pradesh"},"487":{"code":"Arunachal Pradesh","name":"Arunachal Pradesh"},"488":{"code":"Assam","name":"Assam"},"489":{"code":"Bihar","name":"Bihar"},"490":{"code":"Chandigarh","name":"Chandigarh"},"491":{"code":"Chhattisgarh","name":"Chhattisgarh"},"492":{"code":"Dadra and Nagar Haveli","name":"Dadra and Nagar Haveli"},"493":{"code":"Daman and Diu","name":"Daman and Diu"},"494":{"code":"Delhi","name":"Delhi"},"495":{"code":"Goa","name":"Goa"},"496":{"code":"Gujarat","name":"Gujarat"},"497":{"code":"Haryana","name":"Haryana"},"498":{"code":"Himachal Pradesh","name":"Himachal Pradesh"},"499":{"code":"Jammu and Kashmir","name":"Jammu and Kashmir"},"500":{"code":"Jharkhand","name":"Jharkhand"},"501":{"code":"Karnataka","name":"Karnataka"},"502":{"code":"Kerala","name":"Kerala"},"503":{"code":"Lakshadweep","name":"Lakshadweep"},"504":{"code":"Madhya Pradesh","name":"Madhya Pradesh"},"505":{"code":"Maharashtra","name":"Maharashtra"},"506":{"code":"Manipur","name":"Manipur"},"507":{"code":"Meghalaya","name":"Meghalaya"},"508":{"code":"Mizoram","name":"Mizoram"},"509":{"code":"Nagaland","name":"Nagaland"},"510":{"code":"Orissa","name":"Orissa"},"511":{"code":"Pondicherry","name":"Pondicherry"},"512":{"code":"Punjab","name":"Punjab"},"513":{"code":"Rajasthan","name":"Rajasthan"},"514":{"code":"Sikkim","name":"Sikkim"},"515":{"code":"Tamil Nadu","name":"Tamil Nadu"},"516":{"code":"Tripura","name":"Tripura"},"517":{"code":"Uttar Pradesh","name":"Uttar Pradesh"},"518":{"code":"Uttarakhand","name":"Uttarakhand"},"519":{"code":"West Bengal","name":"West Bengal"}}});
  4630. -        //]]>
  4631. -        //<![CDATA[
  4632. -            var coShippingMethodForm = new VarienForm('shipping-zip-form');
  4633. -            var countriesWithOptionalZip = ["HK","IE","MO","PA"];
  4634. -
  4635. -            coShippingMethodForm.submit = function () {
  4636. -                var country = $F('country');
  4637. -                var optionalZip = false;
  4638. -
  4639. -                for (i=0; i < countriesWithOptionalZip.length; i++) {
  4640. -                    if (countriesWithOptionalZip[i] == country) {
  4641. -                        optionalZip = true;
  4642. -                    }
  4643. -                }
  4644. -                if (optionalZip) {
  4645. -                    $('postcode').removeClassName('required-entry');
  4646. -                }
  4647. -                else {
  4648. -                    $('postcode').addClassName('required-entry');
  4649. -                }
  4650. -                return VarienForm.prototype.submit.bind(coShippingMethodForm)();
  4651. -            }
  4652. -        //]]>
  4653. -        </script>
  4654. -    </div>
  4655. -</div>
  4656. -<div class="totals">
  4657. -<!-- <h2>Cart Totals</h2> -->
  4658. -    <div class="total-inner">
  4659. -        <table id="shopping-cart-totals-table">
  4660. -            <col />
  4661. -            <col width="1" />
  4662. -            <tfoot>
  4663. -                <tr>
  4664. -                    <td style="" class="a-right">
  4665. -                    <strong>Grand Total</strong>
  4666. -                    </td>
  4667. -                    <td style="" class="a-right">
  4668. -                    <strong><span class="price">Rs. <?php echo number_format($cartArr['grand_total']) ?></span></strong>
  4669. -                    </td>
  4670. -                </tr>
  4671. -            </tfoot>
  4672. -            <tbody>
  4673. -                <tr>
  4674. -                    <td style="" class="a-right">
  4675. -                        Subtotal    
  4676. -                    </td>
  4677. -                    <td style="" class="a-right">
  4678. -                        <span class="price">Rs. <?php echo number_format($cartArr['sub_total']) ?></span>    
  4679. -                    </td>
  4680. -                </tr>
  4681. -                <?php if (!empty($cartArr['discount_amount'])) { ?>
  4682. -                <tr>
  4683. -                    <td style="" class="a-right">
  4684. -                    Discount (<?php echo $cartArr['coupon_code'] ?>)            
  4685. -                    </td>
  4686. -                    <td style="" class="a-right">
  4687. -                        <span class="price">-Rs. <?php echo number_format($cartArr['discount_amount']) ?></span>
  4688. -                    </td>
  4689. -                </tr>
  4690. -                <?php } ?>
  4691. -
  4692. -                <?php
  4693. -                if (!empty($cartArr['shipping'])) { ?>
  4694. -                    <tr>
  4695. -                        <td style="" class="a-right">
  4696. -                        Shipping &amp; Handling    
  4697. -                        </td>
  4698. -                        <td style="" class="a-right">
  4699. -                            <span class="price">Rs. <?php echo number_format($cartArr['shipping']) ?></span>    
  4700. -                        </td>
  4701. -                    </tr>
  4702. -                <?php } ?>
  4703. -
  4704. -                <tr >
  4705. -                <td style="" class="a-right">
  4706. -                        Tax            
  4707. -                </td>
  4708. -                <td style="" class="a-right"><span class="price">Rs. <?php echo number_format($cartArr['tax']) ?></span></td>
  4709. -                </tr>
  4710. -            </tbody>
  4711. -        </table>
  4712. -    </div>
  4713. -</div>
  4714. -<div class="checkout-continue-btn">
  4715. -    <ul class="checkout-types">
  4716. -        <li>
  4717. -        <?php if ($errFlag) { ?>
  4718. -            <button type="button" title="Proceed to Checkout" class="button btn-proceed-checkout btn-checkout no-checkout" disabled="disabled">
  4719. -        <?php
  4720. -        }else{ ?>
  4721. -            <button type="button" title="Proceed to Checkout" class="button btn-proceed-checkout btn-checkout" onclick="window.location='<?php echo Mage::getBaseUrl()."checkout/onepage/" ?>'; setLayerData('CartPage', 'Cart Page', 'Proceed To Checkout', 'Proceed To Checkout'); onCheckoutOption(1, 'Proceed To Checkout');">
  4722. -        <?php
  4723. -        }
  4724. -        ?>
  4725. -        
  4726. -        <span><span class="proceed-txt">Proceed to Checkout</span><i class="checkout-loader"></i></span></button>
  4727. -        </li>
  4728. -    </ul>
  4729. -    <button type="button" title="Continue Shopping" class="button continue-btn" onclick="setLayerData('CartPage', 'Cart Page', 'Continue Shopping', 'Continue Shopping');">
  4730. -    <span><span>Continue Shopping</span></span></button>
  4731. -</div>
  4732. -</div>
  4733. -</div>
  4734. -</div>
  4735. -</div>
  4736. -</div>
  4737. -<script>
  4738. -jQuery('ul.messages .error-msg').find('li').prepend('<span class="error-icn common-sprite"></span>');
  4739. -jQuery('ul.messages .success-msg').find('li').prepend('<span class="success-icn common-sprite"></span>');
  4740. -</script>
  4741. \ No newline at end of file
  4742. diff --git a/app/code/local/Tolexo/OrderTags/Helper/Data.php b/app/code/local/Tolexo/OrderTags/Helper/Data.php
  4743. deleted file mode 100644
  4744. index 6181db2..0000000
  4745. --- a/app/code/local/Tolexo/OrderTags/Helper/Data.php
  4746. +++ /dev/null
  4747. @@ -1,12 +0,0 @@
  4748. -<?php
  4749. -
  4750. -/**
  4751. - * Default Helper
  4752. - *
  4753. - * @category   Tolexo
  4754. - * @package    Tolexo_OrderTags
  4755. - * @copyright  Copyright (c) 2014 tolexo.com
  4756. - */
  4757. -
  4758. -class Tolexo_OrderTags_Helper_Data extends Mage_Core_Helper_Abstract
  4759. -{}
  4760. diff --git a/app/code/local/Tolexo/OrderTags/Model/Mysql4/Tagmaster.php b/app/code/local/Tolexo/OrderTags/Model/Mysql4/Tagmaster.php
  4761. deleted file mode 100644
  4762. index 2f9704e..0000000
  4763. --- a/app/code/local/Tolexo/OrderTags/Model/Mysql4/Tagmaster.php
  4764. +++ /dev/null
  4765. @@ -1,8 +0,0 @@
  4766. -<?php
  4767. -class Tolexo_Ordertag_Model_Mysql4_Tagmaster extends Mage_Core_Model_Mysql4_Abstract
  4768. -{
  4769. -    protected function _construct()
  4770. -    {
  4771. -        $this->_init("ordertag/tagmaster", "tag_id");
  4772. -    }
  4773. -}
  4774. \ No newline at end of file
  4775. diff --git a/app/code/local/Tolexo/OrderTags/Model/Observer.php b/app/code/local/Tolexo/OrderTags/Model/Observer.php
  4776. deleted file mode 100644
  4777. index d4e10ef..0000000
  4778. --- a/app/code/local/Tolexo/OrderTags/Model/Observer.php
  4779. +++ /dev/null
  4780. @@ -1,26 +0,0 @@
  4781. -<?php
  4782. -
  4783. -/**
  4784. - * @category   Tolexo
  4785. - * @package    Tolexo_OrderTags
  4786. - * @copyright  Copyright (c) 2014 tolexo.com
  4787. - *
  4788. - */
  4789. -class Tolexo_OrderTags_Model_Observer extends Varien_Event_Observer
  4790. -{
  4791. -
  4792. -    public function updateQuoteOnReorder($observer)
  4793. -    {
  4794. -        $oldOrderId = Mage::app()->getRequest()->getParam('order_id');
  4795. -        $quote = $observer->getEvent()->getQuote();
  4796. -        $quoteId = $quote->getId();
  4797. -        
  4798. -        if (! empty($oldOrderId)) {
  4799. -            $resource = Mage::getSingleton('core/resource');
  4800. -            // get connection objects to execute direct queries
  4801. -            $writeConn = $resource->getConnection('core_write');
  4802. -            $q = "UPDATE sales_flat_quote SET orig_order_id=$oldOrderId WHERE entity_id=$quoteId";
  4803. -            $data = $writeConn->query($q);
  4804. -        }
  4805. -    }
  4806. -}
  4807. \ No newline at end of file
  4808. diff --git a/app/code/local/Tolexo/OrderTags/etc/adminhtml.xml b/app/code/local/Tolexo/OrderTags/etc/adminhtml.xml
  4809. deleted file mode 100644
  4810. index d8c94f9..0000000
  4811. --- a/app/code/local/Tolexo/OrderTags/etc/adminhtml.xml
  4812. +++ /dev/null
  4813. @@ -1,22 +0,0 @@
  4814. -<?xml version="1.0"?>
  4815. -<config>
  4816. -    <acl>
  4817. -        <resources>
  4818. -            <admin>
  4819. -                <children>
  4820. -                    <system>
  4821. -                        <children>
  4822. -                            <config>
  4823. -                                <children>
  4824. -                                    <ordertag translate="title" module="ordertag">
  4825. -                                        <title>Order Tag</title>
  4826. -                                    </ordertag>
  4827. -                                </children>
  4828. -                            </config>
  4829. -                        </children>
  4830. -                    </system>
  4831. -                </children>
  4832. -            </admin>
  4833. -        </resources>
  4834. -    </acl>
  4835. -</config>
  4836. diff --git a/app/code/local/Tolexo/OrderTags/etc/config.xml b/app/code/local/Tolexo/OrderTags/etc/config.xml
  4837. deleted file mode 100644
  4838. index 5ab08bb..0000000
  4839. --- a/app/code/local/Tolexo/OrderTags/etc/config.xml
  4840. +++ /dev/null
  4841. @@ -1,54 +0,0 @@
  4842. -<?xml version="1.0"?>
  4843. -<config>
  4844. -    <modules>
  4845. -        <Tolexo_OrderTags>
  4846. -            <version>0.0.1</version>
  4847. -        </Tolexo_OrderTags>
  4848. -    </modules>
  4849. -    <adminhtml>
  4850. -        <events>
  4851. -            <sales_quote_save_after>
  4852. -                <observers>
  4853. -                    <OrderTags_Observer>
  4854. -                        <type>singleton</type>
  4855. -                        <class>Tolexo_OrderTags_Model_Observer</class>
  4856. -                        <method>updateQuoteOnReorder</method>
  4857. -                    </OrderTags_Observer>
  4858. -                </observers>
  4859. -            </sales_quote_save_after>
  4860. -        </events>
  4861. -    </adminhtml>
  4862. -    <global>
  4863. -        <models>
  4864. -            <ordertag>
  4865. -                <class>Tolexo_Ordertag_Model</class>
  4866. -                <resourceModel>ordertag_mysql4</resourceModel>
  4867. -            </ordertag>
  4868. -            <ordertag_mysql4>
  4869. -                <class>Tolexo_Ordertag_Model_Mysql4</class>
  4870. -                <entities>
  4871. -                    <tagmaster>
  4872. -                       <table>sales_flat_order_tag_master</table>
  4873. -                    </tagmaster>
  4874. -                </entities>
  4875. -            </ordertag_mysql4>
  4876. -       </models>
  4877. -
  4878. -        <helpers>
  4879. -            <ordertag>
  4880. -                <class>Tolexo_OrderTags_Helper</class>
  4881. -            </ordertag>
  4882. -        </helpers>
  4883. -
  4884. -        <resources>
  4885. -            <ordertag_setup>
  4886. -                <setup>
  4887. -                    <module>Tolexo_OrderTags</module>
  4888. -                </setup>
  4889. -                <connection>
  4890. -                    <use>core_setup</use>
  4891. -                </connection>
  4892. -            </ordertag_setup>
  4893. -        </resources>
  4894. -    </global>  
  4895. -</config>
  4896. \ No newline at end of file
  4897. diff --git a/app/code/local/Tolexo/OrderTags/etc/system.xml b/app/code/local/Tolexo/OrderTags/etc/system.xml
  4898. deleted file mode 100644
  4899. index 08afcfb..0000000
  4900. --- a/app/code/local/Tolexo/OrderTags/etc/system.xml
  4901. +++ /dev/null
  4902. @@ -1,45 +0,0 @@
  4903. -<?xml version="1.0"?>
  4904. -<config>
  4905. -    <sections>
  4906. -        <ordertag translate="label" module="ordertag">
  4907. -            <class>separator-top</class>
  4908. -            <label>Order Tag</label>
  4909. -            <tab>sales</tab>
  4910. -            <frontend_type>text</frontend_type>
  4911. -            <sort_order>40</sort_order>
  4912. -            <show_in_default>1</show_in_default>
  4913. -            <show_in_website>0</show_in_website>
  4914. -            <show_in_store>0</show_in_store>
  4915. -            <groups>
  4916. -                <general>
  4917. -                    <label>General</label>
  4918. -                    <frontend_type>text</frontend_type>
  4919. -                    <sort_order>10</sort_order>
  4920. -                    <show_in_default>1</show_in_default>
  4921. -                    <show_in_website>0</show_in_website>
  4922. -                    <show_in_store>0</show_in_store>
  4923. -                    <fields>
  4924. -                        <corporate_users translate="label">
  4925. -                            <label>Corporate admin users</label>
  4926. -                            <frontend_type>text</frontend_type>
  4927. -                            <sort_order>191</sort_order>
  4928. -                            <show_in_default>1</show_in_default>
  4929. -                            <show_in_website>0</show_in_website>
  4930. -                            <show_in_store>0</show_in_store>
  4931. -                            <comment>Please provide comma separated id's of the corporate admin users</comment>
  4932. -                        </corporate_users>
  4933. -                        <telesales_users translate="label">
  4934. -                            <label>Telesales users</label>
  4935. -                            <frontend_type>text</frontend_type>
  4936. -                            <sort_order>192</sort_order>
  4937. -                            <show_in_default>1</show_in_default>
  4938. -                            <show_in_website>0</show_in_website>
  4939. -                            <show_in_store>0</show_in_store>
  4940. -                            <comment>Please provide comma separated id's of the tele sales users</comment>
  4941. -                        </telesales_users>
  4942. -                    </fields>
  4943. -                </general>
  4944. -            </groups>
  4945. -        </ordertag>
  4946. -    </sections>
  4947. -</config>
  4948. \ No newline at end of file
  4949. diff --git a/app/code/local/Tolexo/OrderTags/sql/ordertag_setup/mysql4-install-0.0.1.php b/app/code/local/Tolexo/OrderTags/sql/ordertag_setup/mysql4-install-0.0.1.php
  4950. deleted file mode 100644
  4951. index 4eb9f4a..0000000
  4952. --- a/app/code/local/Tolexo/OrderTags/sql/ordertag_setup/mysql4-install-0.0.1.php
  4953. +++ /dev/null
  4954. @@ -1,64 +0,0 @@
  4955. -<?php
  4956. -$installer = $this;
  4957. -$installer->startSetup();
  4958. -
  4959. -$installer->run("
  4960. -    DROP TABLE IF EXISTS `{$this->getTable('ordertag/tagmaster')}`;
  4961. -    CREATE TABLE `{$installer->getTable('ordertag/tagmaster')}` (
  4962. -        `tag_id` INT(10) NOT NULL AUTO_INCREMENT,
  4963. -        `tag_name` VARCHAR(50) NOT NULL COMMENT 'Backend, Web, App, Edited, Corporate, Alternate, Customer, First, Repeat, Repeat-A (One order delivered), Reorder, Fresh',
  4964. -        `description` VARCHAR(255) NULL,
  4965. -    PRIMARY KEY (`tag_id`)) ENGINE = InnoDB;
  4966. -    
  4967. -            INSERT INTO `sales_flat_order_tag_master`
  4968. -                               ( `tag_name`, `description`) VALUES
  4969. -                               ('Backend', 'Backend'),
  4970. -                               ('Web', 'Web'),
  4971. -                               ('App', 'App'),
  4972. -                               ('Edited', 'Edited'),
  4973. -                               ('Corporate', 'Corporate'),
  4974. -                               ('Alternate', 'Alternate'),
  4975. -                               ('Repeat', 'Repeat'),
  4976. -                               ('Repeat-A', 'Repeat-A(One order delivered)'),
  4977. -                               ('Reorder', 'Reorder'),
  4978. -                               ('Telesales', 'Telesales');
  4979. -    
  4980. -    Alter table `sales_flat_order_info`
  4981. -        ADD `placed_from` INT(10) NULL COMMENT 'Backend \nApp\nWeb' AFTER `utm_source`,
  4982. -        ADD `created_by` INT(10) NULL COMMENT 'Edited - Order created by Customer Care\nCorporate - Order created by a specific Admin\nAlternate - Order created by backend script\nCusomer - Order created by normal customer' AFTER `placed_from`,    
  4983. -        ADD `repeat_sequence` INT(10) NULL COMMENT 'First - First Order of that customer\nRepeat - One order already placed by that customer\nRepat-A - One order already delivered to that customer' AFTER `created_by`,
  4984. -        ADD `fresh_or_reorder` INT(10) NULL COMMENT 'Reorder - By clicking on Reorder button from Admin\nFresh - Without clicking Reorder button by Admin / Customer' AFTER `repeat_sequence`,
  4985. -        ADD `purchase_admin_id` INT(10) NULL COMMENT 'Store NULL or admin_id that are designated as Corporate Admin (defined in core_config_data table)' AFTER `fresh_or_reorder`,
  4986. -        ADD `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `created_at`,
  4987. -        ADD INDEX `fk_placed_from_1_idx` (`placed_from` ASC),
  4988. -        ADD INDEX `fk_created_by_1_idx` (`created_by` ASC),
  4989. -        ADD INDEX `fk_repeat_sequence_1_idx` (`repeat_sequence` ASC),
  4990. -        ADD INDEX `fk_fresh_or_reorder_1_idx` (`fresh_or_reorder` ASC),
  4991. -        ADD CONSTRAINT `fk_placed_from_1`
  4992. -            FOREIGN KEY (`placed_from`)
  4993. -            REFERENCES `sales_flat_order_tag_master` (`tag_id`)
  4994. -            ON DELETE NO ACTION
  4995. -            ON UPDATE NO ACTION,
  4996. -        ADD CONSTRAINT `fk_created_by_1`
  4997. -            FOREIGN KEY (`created_by`)
  4998. -            REFERENCES `sales_flat_order_tag_master` (`tag_id`)
  4999. -            ON DELETE NO ACTION
  5000. -            ON UPDATE NO ACTION,
  5001. -        ADD CONSTRAINT `fk_repeat_sequence_1`
  5002. -            FOREIGN KEY (`repeat_sequence`)
  5003. -            REFERENCES `sales_flat_order_tag_master` (`tag_id`)
  5004. -            ON DELETE NO ACTION
  5005. -            ON UPDATE NO ACTION,
  5006. -        ADD CONSTRAINT `fk_fresh_or_reorder_1`
  5007. -            FOREIGN KEY (`fresh_or_reorder`)
  5008. -            REFERENCES `sales_flat_order_tag_master` (`tag_id`)
  5009. -            ON DELETE NO ACTION
  5010. -            ON UPDATE NO ACTION;    
  5011. -  
  5012. -  Alter table {$this->getTable('sales/order')} ADD `purchase_admin_id` int(10) unsigned DEFAULT NULL After purchase_from;
  5013. -
  5014. -  Alter table {$this->getTable('sales/order_grid')} ADD `order_tags` varchar(255) DEFAULT NULL After billing_name;
  5015. -");
  5016. -
  5017. -$installer->endSetup();
  5018. -?>
  5019. \ No newline at end of file
  5020. diff --git a/app/code/local/Tolexo/Splitorder/Model/Observer.php b/app/code/local/Tolexo/Splitorder/Model/Observer.php
  5021. index ec6eada..4bd7fc1 100644
  5022. --- a/app/code/local/Tolexo/Splitorder/Model/Observer.php
  5023. +++ b/app/code/local/Tolexo/Splitorder/Model/Observer.php
  5024. @@ -317,31 +317,28 @@ class Tolexo_Splitorder_Model_Observer extends Varien_Event_Observer {
  5025.              }
  5026.           }
  5027.        } catch (Exception $e) {
  5028. -         $error = $e->getMessage();
  5029. -         Mage::log("Split Order Code for $oldOrderId, $product, $oldStatus \n $error", null, 'SplitOrder.log', true);
  5030. +         echo $e->getMessage();
  5031.        }
  5032.        return $newOrderId;
  5033.     }
  5034.  
  5035.     function canceledOldOrder($orderId, $entityId) {
  5036.        try {
  5037. +
  5038.           $sql1 = "UPDATE sales_flat_order sfo,sales_flat_order_grid sfog "
  5039.              . "SET sfo.state = 'canceled', sfo.status = 'cancel_split_order', sfog.status = 'cancel_split_order' "
  5040.              . "WHERE sfo.entity_id = sfog.entity_id "
  5041.              . "AND sfo.entity_id = '" . $entityId . "'";
  5042.           $this->writeConnection->query($sql1);
  5043.  
  5044. -         $sql1 = "UPDATE sales_flat_order_item SET qty_canceled = (qty_ordered - qty_invoiced) WHERE order_id = $entityId;";
  5045. -         $this->writeConnection->query($sql1);
  5046. -
  5047.           $currentTime = date('Y-m-d H:i:s');
  5048.           $sql = "INSERT INTO `sales_flat_order_status_history`  "
  5049.              . "(`parent_id`,`is_customer_notified`,`status`,`comment`,`created_at`,`entity_name`,`username`) "
  5050.              . "values( " . $entityId . ",0,'cancel_split_order' ,'Cancel Split Order','" . $currentTime . "','order','System Generated')";
  5051.           $this->writeConnection->query($sql);
  5052.        } catch (Exception $e) {
  5053. -         $error = $e->getMessage();
  5054. -         Mage::log("Split Order Code Error $orderId\n $error", null, 'SplitOrder.log', true);
  5055. +         Mage::logException($e);
  5056. +         echo $e->getMessage();
  5057.        }
  5058.     }
  5059.  
  5060. @@ -349,29 +346,18 @@ class Tolexo_Splitorder_Model_Observer extends Varien_Event_Observer {
  5061.        $smsContent = "";
  5062.        $thankMsgContent = '';
  5063.        $finalDetail = '';
  5064. -      $order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
  5065. -      $order_created = $order->getCreatedAtFormated('medium');
  5066. -
  5067.        $sql = "SELECT entity_id,increment_id "
  5068.           . "FROM sales_flat_order  "
  5069.           . "WHERE relation_parent_id='" . $entityId . "'";
  5070.        $resSet = $this->readConnection->query($sql);
  5071.        $result = $resSet->fetchAll();
  5072.        if (count($result) != 0) {
  5073. -         $thankMsgContent = 'Thank you for confirming your order.';
  5074. +         $thankMsgContent = 'Thank you for confirming your Transaction # ' . $orderId . ' .';
  5075.           $thankMsgContent1 = 'Your order has been successfully placed and is being processed. We have grouped your Order items seller-wise and listed under separate order IDs.';
  5076. -         $boldOrderNumber = '';
  5077. -      } else {
  5078. -         $boldOrderNumber = '<tr>
  5079. -                    <td style="background-color:#f5f5f5;padding:12px 0;text-align:center;color:#222222;">
  5080. -                        <span style="font-weight:bold;font-size:18px;display:inline-block;">Your Transaction # '.$orderId.' </span>
  5081. -                        <span style="font-size:16px;display:inline-block;">(placed on '.$order_created.')</span>
  5082. -                    </td>
  5083. -                </tr>';
  5084.        }
  5085.  
  5086.        $content = $this->getSplitOrderContent($orderId, $entityId);
  5087. -
  5088. +      $order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
  5089.        $shipping = $order->getShippingAddress();
  5090.        $billing = $order->getBillingAddress();
  5091.        $username = $order->getCustomerFirstname() . " " . $order->getCustomerLastname();
  5092. @@ -394,13 +380,25 @@ class Tolexo_Splitorder_Model_Observer extends Varien_Event_Observer {
  5093.           $paymentMode = 'Paid through PAYTM';
  5094.        }
  5095.  
  5096. -      if ($noI > 1) {
  5097. -         $itm = $itemName . "... and " . ($noI - 1) . " other item(s)";
  5098. +
  5099. +      if ($method == 'banktransfer') {
  5100. +         $smsContent = 'Dear Customer, Thank you for confirming your order # ' . $orderId . ' on Tolexo.com. Please check your email or Tolexo Account for further information.';
  5101. +         $subject = 'Your Order # ' . $orderId . ' on Tolexo.com has been successfully placed!';
  5102.        } else {
  5103. -         $itm = $itemName . "... ";
  5104. +         if (Mage::getDesign()->getArea() == 'adminhtml') {
  5105. +            $smsContent = 'Dear Customer, Thank you for confirming your order # ' . $orderId . ' on Tolexo.com. Please check your email or Tolexo Account for further information.';
  5106. +            $subject = 'Your Order # ' . $orderId . ' on Tolexo.com has been successfully placed!';
  5107. +         } else {
  5108. +            if ($noI > 1) {
  5109. +               $itm = $itemName . "... and " . ($noI - 1) . " other item(s)";
  5110. +            } else {
  5111. +               $itm = $itemName . "... ";
  5112. +            }
  5113. +            $smsContent = "Dear Customer, Thank you for placing order for " . $itm . " on Tolexo.com. We will get in touch with you for further communication very soon.";
  5114. +            $subject = 'Your New Order on Tolexo.com has been successfully placed!';
  5115. +         }
  5116. +
  5117.        }
  5118. -      $smsContent = "Dear Customer, Thank you for placing order for " . $itm . " on Tolexo.com. We will get in touch with you for further communication very soon.";
  5119. -      $subject = 'Your New Order on Tolexo.com has been successfully placed!';
  5120.  
  5121.        $finalDetail = '<table width="100%" cellpadding="0" cellspacing="0">
  5122.           <tr>
  5123. @@ -457,21 +455,24 @@ class Tolexo_Splitorder_Model_Observer extends Varien_Event_Observer {
  5124.        $order_ship = $shipping->getFirstname() . " " . $shipping->getMiddlename() . " " . $shipping->getLastname() . " <br/>" . $shipping->getCompany() . "<br/>" . $shipping->getTelephone() . "<br/>" . $shipAdds . " " . $shipping->getCity() . " " . $shipping->getRegion() . " " . $shipping->getPostcode();
  5125.        $email = array($order->getCustomerEmail());
  5126.        $emailName = array($username);
  5127. -
  5128. +      $order_created = $order->getCreatedAtFormated('medium');
  5129.  
  5130.        $templateId = 25;
  5131.        $bccEmail = array('orders@tolexo.com');
  5132.        $sender = array('name' => 'Sales', 'email' => 'support@tolexo.com');
  5133.        $vars = array('order_increment_id' => $orderId, 'item_content' => $content, 'username' => $username, 'order_bill' => $order_bill, 'order_ship' => $order_ship, 'order_created' => $order_created, 'smsContent' => $smsContent, 'thankMsgContent' => $thankMsgContent,
  5134. -         'subject' => $subject, 'paymentMode' => $paymentMode, 'thankMsgContent1' => $thankMsgContent1, 'grndTotal' => $grndTotal, 'finalDetail' => $finalDetail, 'highlight_OrderId'=>$boldOrderNumber);
  5135. +         'subject' => $subject, 'paymentMode' => $paymentMode, 'thankMsgContent1' => $thankMsgContent1, 'grndTotal' => $grndTotal, 'finalDetail' => $finalDetail);
  5136.        $storeId = Mage::app()->getStore()->getId();
  5137.        $translate = Mage::getSingleton('core/translate');
  5138.        Mage::getModel('core/email_template')->addBCC($bccEmail)->sendTransactional($templateId, $sender, $email, $emailName, $vars, $storeId);
  5139.        $translate->setTranslateInline(true);
  5140.  
  5141. -      $sql1 = "UPDATE sales_flat_order sfo SET sfo.email_sent = 2 WHERE sfo.entity_id = '" . $entityId . "'";
  5142. +      $sql1 = "UPDATE sales_flat_order sfo "
  5143. +         . "SET sfo.email_sent = sfo.email_sent + 1 "
  5144. +         . "WHERE sfo.entity_id = '" . $entityId . "'";
  5145.        $this->writeConnection->query($sql1);
  5146.  
  5147. +
  5148.     }
  5149.  
  5150.     function getSplitOrderContent($orderId, $entityId) {
  5151. @@ -584,35 +585,4 @@ class Tolexo_Splitorder_Model_Observer extends Varien_Event_Observer {
  5152.        }
  5153.        return $content;
  5154.     }
  5155. -
  5156. -    // Add Order Data in queue Table
  5157. -    public function pushOrderToQueue($observer)
  5158. -    {
  5159. -        $order = $observer->getEvent()->getOrder();
  5160. -        $orderId = $order->getId();
  5161. -        $orderData = $order->getData();
  5162. -        $orderData['purchase_admin_id'] = NULL;
  5163. -        $adminSession = Mage::getSingleton('admin/session');
  5164. -        
  5165. -        $quoteId = $order->getQuoteId();
  5166. -        $childId = $order->getRelationChildId();
  5167. -        $parentId = $order->getRelationParentId();
  5168. -        if (! empty($childId) || ! empty($parentId)) {
  5169. -            $sql = "UPDATE sales_flat_quote SET orig_order_id = '0' WHERE entity_id=$quoteId";
  5170. -            $this->writeConnection->query($sql);
  5171. -        }
  5172. -        
  5173. -        $sql = "SELECT COUNT(entity_id) AS count FROM sales_flat_order_status_history WHERE parent_id = '" . $orderId . "';";
  5174. -        $result = $this->readConnection->query($sql)->fetch();
  5175. -        $count = intval($result['count']);
  5176. -        
  5177. -        if ($adminSession->isLoggedIn() && $count <= 1) {
  5178. -            $orderData['purchase_admin_id'] = $adminSession->getUser()->getUserId();
  5179. -        }
  5180. -        
  5181. -        $orderData['store_name'] = implode(",", explode("\n", $orderData['store_name']));
  5182. -        $json_order = json_encode($orderData);
  5183. -        $query = "INSERT INTO `sales_order_queue` (`order_id`,`order_data`) VALUES ($orderId,'" . $json_order . "') ";
  5184. -        $this->writeConnection->query($query);
  5185. -    }
  5186.  }
  5187. \ No newline at end of file
  5188. diff --git a/app/code/local/Tolexo/Splitorder/etc/config.xml b/app/code/local/Tolexo/Splitorder/etc/config.xml
  5189. index c4c28f5..e12b2ce 100644
  5190. --- a/app/code/local/Tolexo/Splitorder/etc/config.xml
  5191. +++ b/app/code/local/Tolexo/Splitorder/etc/config.xml
  5192. @@ -14,11 +14,6 @@
  5193.                          <class>Tolexo_Splitorder_Model_Observer</class>
  5194.                          <method>splitMethod</method>
  5195.                      </tolexo_splitorder_model_observer>
  5196. -                    <tolexo_sales_order_queue_observer>
  5197. -                        <type>singleton</type>
  5198. -                        <class>Tolexo_Splitorder_Model_Observer</class>
  5199. -                        <method>pushOrderToQueue</method>
  5200. -                    </tolexo_sales_order_queue_observer>
  5201.                  </observers>
  5202.              </sales_order_save_commit_after>
  5203.          </events>
  5204. diff --git a/app/code/local/Unbxd/Autosuggest/Block/Index.php b/app/code/local/Unbxd/Autosuggest/Block/Index.php
  5205. old mode 100755
  5206. new mode 100644
  5207. diff --git a/app/code/local/Unbxd/Autosuggest/Helper/Data.php b/app/code/local/Unbxd/Autosuggest/Helper/Data.php
  5208. old mode 100755
  5209. new mode 100644
  5210. diff --git a/app/code/local/Unbxd/Autosuggest/controllers/IndexController.php b/app/code/local/Unbxd/Autosuggest/controllers/IndexController.php
  5211. old mode 100755
  5212. new mode 100644
  5213. diff --git a/app/code/local/Unbxd/Autosuggest/etc/config.xml b/app/code/local/Unbxd/Autosuggest/etc/config.xml
  5214. old mode 100755
  5215. new mode 100644
  5216. diff --git a/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Attribute.php b/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Attribute.php
  5217. old mode 100755
  5218. new mode 100644
  5219. diff --git a/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Boolean.php b/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Boolean.php
  5220. old mode 100755
  5221. new mode 100644
  5222. diff --git a/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Category.php b/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Category.php
  5223. old mode 100755
  5224. new mode 100644
  5225. diff --git a/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Decimal.php b/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Decimal.php
  5226. old mode 100755
  5227. new mode 100644
  5228. diff --git a/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Price.php b/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Price.php
  5229. old mode 100755
  5230. new mode 100644
  5231. diff --git a/app/code/local/Unbxd/Search/Block/Catalog/Layer/View.php b/app/code/local/Unbxd/Search/Block/Catalog/Layer/View.php
  5232. old mode 100755
  5233. new mode 100644
  5234. diff --git a/app/code/local/Unbxd/Search/Helper/AnalyticsHelper.php b/app/code/local/Unbxd/Search/Helper/AnalyticsHelper.php
  5235. old mode 100755
  5236. new mode 100644
  5237. diff --git a/app/code/local/Unbxd/Search/Helper/Catalogsearch.php b/app/code/local/Unbxd/Search/Helper/Catalogsearch.php
  5238. old mode 100755
  5239. new mode 100644
  5240. diff --git a/app/code/local/Unbxd/Search/Helper/Data.php b/app/code/local/Unbxd/Search/Helper/Data.php
  5241. old mode 100755
  5242. new mode 100644
  5243. diff --git a/app/code/local/Unbxd/Search/Helper/Unbxdsearch.php b/app/code/local/Unbxd/Search/Helper/Unbxdsearch.php
  5244. old mode 100755
  5245. new mode 100644
  5246. diff --git a/app/code/local/Unbxd/Search/Model/Adminhtml/System/Config/Backend/Engine.php b/app/code/local/Unbxd/Search/Model/Adminhtml/System/Config/Backend/Engine.php
  5247. old mode 100755
  5248. new mode 100644
  5249. diff --git a/app/code/local/Unbxd/Search/Model/Adminhtml/System/Config/Source/Engine.php b/app/code/local/Unbxd/Search/Model/Adminhtml/System/Config/Source/Engine.php
  5250. old mode 100755
  5251. new mode 100644
  5252. diff --git a/app/code/local/Unbxd/Search/Model/Adminhtml/System/Config/Source/Power.php b/app/code/local/Unbxd/Search/Model/Adminhtml/System/Config/Source/Power.php
  5253. old mode 100755
  5254. new mode 100644
  5255. diff --git a/app/code/local/Unbxd/Search/Model/Catalog/Layer.php b/app/code/local/Unbxd/Search/Model/Catalog/Layer.php
  5256. old mode 100755
  5257. new mode 100644
  5258. diff --git a/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Attribute.php b/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Attribute.php
  5259. old mode 100755
  5260. new mode 100644
  5261. diff --git a/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Boolean.php b/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Boolean.php
  5262. old mode 100755
  5263. new mode 100644
  5264. diff --git a/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Category.php b/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Category.php
  5265. old mode 100755
  5266. new mode 100644
  5267. diff --git a/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Decimal.php b/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Decimal.php
  5268. old mode 100755
  5269. new mode 100644
  5270. diff --git a/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Price.php b/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Price.php
  5271. old mode 100755
  5272. new mode 100644
  5273. diff --git a/app/code/local/Unbxd/Search/Model/Catalogsearch/Layer.php b/app/code/local/Unbxd/Search/Model/Catalogsearch/Layer.php
  5274. old mode 100755
  5275. new mode 100644
  5276. diff --git a/app/code/local/Unbxd/Search/Model/Catalogsearch/Layer/Filter/Attribute.php b/app/code/local/Unbxd/Search/Model/Catalogsearch/Layer/Filter/Attribute.php
  5277. old mode 100755
  5278. new mode 100644
  5279. diff --git a/app/code/local/Unbxd/Search/Model/Resource/Catalog/Product/Collection.php b/app/code/local/Unbxd/Search/Model/Resource/Catalog/Product/Collection.php
  5280. old mode 100755
  5281. new mode 100644
  5282. diff --git a/app/code/local/Unbxd/Search/Model/Resource/Engine/Abstract.php b/app/code/local/Unbxd/Search/Model/Resource/Engine/Abstract.php
  5283. old mode 100755
  5284. new mode 100644
  5285. diff --git a/app/code/local/Unbxd/Search/Model/Resource/Engine/Unbxdsearch/Client.php b/app/code/local/Unbxd/Search/Model/Resource/Engine/Unbxdsearch/Client.php
  5286. old mode 100755
  5287. new mode 100644
  5288. diff --git a/app/code/local/Unbxd/Searchcore/Model/Feed/Feedconfig.php b/app/code/local/Unbxd/Searchcore/Model/Feed/Feedconfig.php
  5289. deleted file mode 100644
  5290. index 92bd286..0000000
  5291. --- a/app/code/local/Unbxd/Searchcore/Model/Feed/Feedconfig.php
  5292. +++ /dev/null
  5293. @@ -1,110 +0,0 @@
  5294. -<?php
  5295. -/**
  5296. - * Created by IntelliJ IDEA.
  5297. - * User: antz
  5298. - * Date: 21/07/15
  5299. - * Time: 12:48 AM
  5300. - */
  5301. -
  5302. -class Unbxd_Searchcore_Model_Feed_Feedconfig {
  5303. -    var $page = 0;
  5304. -    var $limit = -1;
  5305. -    var $_includeSchema = true;
  5306. -    var $_includeProduct = true;
  5307. -    var $_includeTaxonomyNodes = false;
  5308. -    var $_includeTaxonomyMapping = false;
  5309. -    var $taxonomyLimit = -1;
  5310. -    var $taxonomyStart = 0;
  5311. -  
  5312. -
  5313. -    
  5314. -
  5315. -    public function setSchemaInclusion($status = true) {
  5316. -        $this->_includeSchema = $status;
  5317. -    }
  5318. -
  5319. -    public function isSchemaToBeIncluded() {
  5320. -        if (array_key_exists("schema", $_GET)){
  5321. -            $this->_includeSchema = ($_GET["schema"] == "true")?true:false;
  5322. -        }
  5323. -        return $this->_includeSchema;
  5324. -    }
  5325. -
  5326. -    public function setProductInclusion($status=true) {
  5327. -        $this->_includeProduct = $status;
  5328. -    }
  5329. -
  5330. -    public function isProductToBeIncluded() {
  5331. -        if (array_key_exists("product", $_GET)){
  5332. -             $this->_includeProduct = ($_GET["product"] == "true")?true:false;
  5333. -        }
  5334. -        return $this->_includeProduct;
  5335. -    }
  5336. -
  5337. -    public function isCatalogIncluded() {
  5338. -        return $this->isSchemaToBeIncluded() || $this->isProductToBeIncluded();
  5339. -    }
  5340. -
  5341. -    public function setTaxonomyNodeInclusion($status=true) {
  5342. -        $this->_includeTaxonomyNodes = $status;
  5343. -    }
  5344. -
  5345. -    public function isTaxonomyNodeToBeIncluded() {
  5346. -        if (array_key_exists("taxonomy-node", $_GET)){
  5347. -           $this->_includeTaxonomyNodes = ($_GET["taxonomy-node"] == "true")?true:false;
  5348. -        }
  5349. -        
  5350. -        return $this->_includeTaxonomyNodes;
  5351. -    }
  5352. -
  5353. -
  5354. -    public function setTaxonomyMappingInclusion($status=true) {
  5355. -        $this->_includeTaxonomyMapping = $status;
  5356. -    }
  5357. -
  5358. -    public function isTaxonomyMappingToBeIncluded() {
  5359. -        if (array_key_exists("taxonomy-mapping", $_GET)){
  5360. -            $this->_includeTaxonomyMapping= ($_GET["taxonomy-mapping"] == "true")?true:false;
  5361. -        }
  5362. -        
  5363. -        return $this->_includeTaxonomyMapping;
  5364. -    }
  5365. -
  5366. -    public function isTaxonomyIncluded() {
  5367. -        return $this->isTaxonomyNodeToBeIncluded() || $this->isTaxonomyMappingToBeIncluded();
  5368. -    }
  5369. -
  5370. -
  5371. -    public function setPage($page = 0) {
  5372. -        $this->page = (int)$page;
  5373. -        return $this;
  5374. -    }
  5375. -
  5376. -    public function setLimit($limit = 500) {
  5377. -        $this->limit = (int)$limit;
  5378. -        if($limit < $this->pageSize) {
  5379. -            $this->pageSize = (int)$limit;
  5380. -        }
  5381. -        return $this;
  5382. -    }
  5383. -  
  5384. -
  5385. -    public function setTaxonomyPage($taxPage) {
  5386. -       $this->taxonomyStart = $taxPage;
  5387. -       return $this;
  5388. -    }
  5389. -
  5390. -    public function getTaxonomyPage() {
  5391. -       return $this->taxonomyStart;
  5392. -    }
  5393. -
  5394. -    public function setTaxonomyLimit($taxLimit) {
  5395. -       $this->taxonomyLimit = $taxLimit;
  5396. -       return $this;
  5397. -    }
  5398. -
  5399. -    public function getTaxonomyLimit() {
  5400. -       return $this->taxonomyLimit;
  5401. -    }
  5402. -
  5403. -}
  5404. diff --git a/app/code/local/Unbxd/Searchcore/Model/Feed/Feedcreator.php b/app/code/local/Unbxd/Searchcore/Model/Feed/Feedcreator.php
  5405. old mode 100644
  5406. new mode 100755
  5407. index 71551f7..c5020e7
  5408. --- a/app/code/local/Unbxd/Searchcore/Model/Feed/Feedcreator.php
  5409. +++ b/app/code/local/Unbxd/Searchcore/Model/Feed/Feedcreator.php
  5410. @@ -1,6 +1,6 @@
  5411.  <?php
  5412.  
  5413. -class Unbxd_Searchcore_Model_Feed_Feedcreator extends Unbxd_Searchcore_Model_Feed_Feedconfig  {
  5414. +class Unbxd_Searchcore_Model_Feed_Feedcreator {
  5415.  
  5416.         var $fileName;
  5417.         var $fields;
  5418. @@ -8,6 +8,8 @@ class Unbxd_Searchcore_Model_Feed_Feedcreator extends Unbxd_Searchcore_Model_Fee
  5419.         var $pageSize = 500;
  5420.      var $_fullupload;
  5421.         var $_copyFields = array();
  5422. +    var $page = 0;
  5423. +    var $limit = -1;
  5424.  
  5425.  
  5426.      public function __construct() {
  5427. @@ -20,6 +22,19 @@ class Unbxd_Searchcore_Model_Feed_Feedcreator extends Unbxd_Searchcore_Model_Fee
  5428.          $this->fileName = $fileName;
  5429.      }
  5430.  
  5431. +    public function setPage($page = 0) {
  5432. +        $this->page = (int)$page;
  5433. +        return $this;
  5434. +    }
  5435. +
  5436. +    public function setLimit($limit = 500) {
  5437. +        $this->limit = (int)$limit;
  5438. +        if($limit < $this->pageSize) {
  5439. +            $this->pageSize = (int)$limit;
  5440. +        }
  5441. +        return $this;
  5442. +    }
  5443. +
  5444.      /**
  5445.       * Method to set the full upload
  5446.       * @param bool $value
  5447. @@ -70,26 +85,17 @@ class Unbxd_Searchcore_Model_Feed_Feedcreator extends Unbxd_Searchcore_Model_Fee
  5448.       * @return bool
  5449.       */
  5450.      protected  function _writeFeedContent(Mage_Core_Model_Website $website, $currentDate) {
  5451. -               if(!$this->_appendTofile('{"feed":{')) {
  5452. +               if(!$this->_appendTofile('{"feed":')) {
  5453.                         $this->log("Error writing feed tag");
  5454.                         return false;
  5455.                 }
  5456.  
  5457. -               if($this->isCatalogIncluded()) {
  5458. -                       if(!$this->_writeCatalogContent($website, $currentDate)) {
  5459. -                               $this->log("Error writing catalog tag");
  5460. -                               return false;
  5461. -                       }
  5462. -               }
  5463. -
  5464. -       if($this->isTaxonomyIncluded()) {
  5465. -            if (!$this->_writeTaxonomyContents($website)) {
  5466. -                return false;
  5467. -            }
  5468. -        }
  5469. -
  5470. -        if(!$this->_appendTofile("}}")) {
  5471. +               if(!$this->_writeCatalogContent($website, $currentDate)) {
  5472. +                       $this->log("Error writing catalog tag");
  5473. +                       return false;
  5474. +               }
  5475.  
  5476. +               if(!$this->_appendTofile("}")) {
  5477.                         $this->log("Error writing closing feed tag");
  5478.                         return false;
  5479.                 }
  5480. @@ -105,38 +111,31 @@ class Unbxd_Searchcore_Model_Feed_Feedcreator extends Unbxd_Searchcore_Model_Fee
  5481.       * @return bool
  5482.       */
  5483.      protected  function _writeCatalogContent(Mage_Core_Model_Website $website, $currentDate) {
  5484. -               if (!$this->_appendTofile('"catalog":{')) {
  5485. +               if(!$this->_appendTofile('{"catalog":{')) {
  5486.                         $this->log("Error writing closing catalog tag");
  5487.                         return false;
  5488.                 }
  5489. -        if($this->isSchemaToBeIncluded()) {
  5490. -            if(!$this->_writeSchemaContent()) {
  5491. -                return false;
  5492. -            }
  5493. -        }     
  5494. +               if(!$this->_writeSchemaContent()) {
  5495. +                       return false;
  5496. +               }
  5497. +
  5498. +               if(!$this->_appendTofile(",")) {
  5499. +                       $this->log("Error while adding comma in catalog");
  5500. +                       return false;
  5501. +               }
  5502.  
  5503. - if($this->isSchemaToBeIncluded() && $this->isProductToBeIncluded()) {
  5504. -            if (!$this->_appendTofile(",")) {
  5505. -                $this->log("Error while adding comma in catalog");
  5506. -                return false;
  5507. -            }
  5508. -        }
  5509.          $fromDate = Mage::getResourceSingleton('unbxd_searchcore/config')
  5510.              ->getValue($website->getWebsiteId(), Unbxd_Searchcore_Model_Config::LAST_UPLOAD_TIME);
  5511.          if(is_null($fromDate)) {
  5512.              $fromDate = "1970-01-01 00:00:00";
  5513.          }
  5514. -      
  5515. -if($this->isProductToBeIncluded()) {
  5516. -            // If both of them are unsuccessful, then tag it as unsuccessful
  5517. -            if (!($this->_writeAddProductsContent($website, $fromDate, $currentDate)
  5518. -                || $this->_writeDeleteProductsContent($website, $fromDate, $currentDate))
  5519. -            ) {
  5520. -                return false;
  5521. -            }
  5522. -            Mage::getModel('unbxd_searchcore/sync')->markItSynced($website->getWebsiteId(), $currentDate);
  5523. -        }
  5524. -      
  5525. +        // If both of them are unsuccessful, then tag it as unsuccessful
  5526. +               if(!($this->_writeAddProductsContent($website, $fromDate, $currentDate)
  5527. +            || $this->_writeDeleteProductsContent($website, $fromDate, $currentDate))) {
  5528. +                       return false;
  5529. +               }
  5530. +
  5531. +        Mage::getModel('unbxd_searchcore/sync')->markItSynced($website->getWebsiteId(), $currentDate);
  5532.  
  5533.  
  5534.                 if(!$this->_appendTofile("}")) {
  5535. @@ -148,6 +147,10 @@ if($this->isProductToBeIncluded()) {
  5536.                         return false;
  5537.                 }*/
  5538.  
  5539. +               if(!$this->_appendTofile("}")) {
  5540. +                       $this->log("Error writing closing feed tag");
  5541. +                       return false;
  5542. +               }
  5543.  
  5544.                 return true;
  5545.         }
  5546. @@ -164,12 +167,7 @@ if($this->isProductToBeIncluded()) {
  5547.      public function getSize(Mage_Core_Model_Website $website, $fromDate, $currentDate) {
  5548.          $collection = $this->_getCatalogCollectionToAdd($website, $fromDate, $currentDate);
  5549.          return $collection->getSize();
  5550. -    }
  5551.  
  5552. -    public function getTaxonomySize(Mage_Core_Model_Website $website) {
  5553. -       $collection = $this->getTaxonomyMappingCollection();
  5554. -       #return sizeof($collection);
  5555. -       return $collection->getSize();
  5556.      }
  5557.  
  5558.      /**
  5559. @@ -329,7 +327,7 @@ if($this->isProductToBeIncluded()) {
  5560.          return true;
  5561.      }
  5562.  
  5563. -       protected  function _writeTaxonomyContents(Mage_Core_Model_Website $website){
  5564. +       protected  function _writeTaxonomyContents($site){
  5565.  
  5566.                 $collection=$this->getTaxonomyMappingCollection();
  5567.             // get total size
  5568. @@ -339,72 +337,44 @@ if($this->isProductToBeIncluded()) {
  5569.                 $pageNum = 0;  
  5570.                 $this->log('started writing taxonomy tree');
  5571.  
  5572. -               if (!$this->_appendTofile($this->isCatalogIncluded()?',':'')) {
  5573. +               if(!$this->_appendTofile(',"'. 'taxonomy' . '":{ "tree":[')) {
  5574.                         $this->log("Error while adding tree tag");
  5575.                         return false;
  5576.                 }
  5577. -       if(!$this->_appendTofile('"'. 'taxonomy' . '":{')) {
  5578. -            $this->log("Error while adding tree tag");
  5579. -            return false;
  5580. -        }
  5581. -        if($this->isTaxonomyNodeToBeIncluded()) {
  5582. -            if (!$this->_appendTofile('"tree":[')) {
  5583. -                $this->log("Error while adding tree tag");
  5584. -                return false;
  5585. -            }
  5586.  
  5587. -            $content = Mage::getSingleton('unbxd_searchcore/feed_jsonbuilder_taxonomybuilder')
  5588. -                ->createTaxonomyFeed($website->getName());
  5589. -            $status = $this->_appendTofile($content);
  5590. +        $content=Mage::getSingleton('unbxd_searchcore/feed_jsonbuilder_taxonomybuilder')
  5591. +            ->createTaxonomyFeed($site);
  5592. +        $status=$this->_appendTofile($content);
  5593.  
  5594. -            if (!$status) {
  5595. -                $this->log("Error while addings taxonomy");
  5596. -                return false;
  5597. -            }
  5598. -
  5599. -            if (!$this->_appendTofile("]")) {
  5600. -                $this->log("Error writing closing tree tag");
  5601. -                return false;
  5602. -            }
  5603. +        if(!$status){
  5604. +            $this->log("Error while addings taxonomy");
  5605. +            return false;
  5606.          }
  5607.  
  5608. -        if($this->isTaxonomyNodeToBeIncluded() && $this->isTaxonomyMappingToBeIncluded()) {
  5609. -            if (!$this->_appendTofile(',')) {
  5610. -                $this->log("Error while adding tree tag");
  5611. -                return false;
  5612. -            }
  5613. -        }
  5614. +        if(!$this->_appendTofile("]")) {
  5615. +            $this->log("Error writing closing tree tag");
  5616. +            return false;
  5617. +               }
  5618.  
  5619. -        if($this->isTaxonomyMappingToBeIncluded()) {
  5620. -            if (!$this->_appendTofile('"mapping":[')) {
  5621. -                $this->log("Error writing opening mapping tag");
  5622. -                return false;
  5623. -            }
  5624. -            $collection=$this->getTaxonomyMappingCollection();
  5625. -           if(is_null($this->getTaxonomyPage()) || $this->getTaxonomyPage() < 0) {
  5626. -               $collection->load();
  5627. -           } else {
  5628. -               $collection->load($this->getTaxonomyPage(), $this->getTaxonomyLimit());
  5629. -           }
  5630. -           $content = Mage::getSingleton('unbxd_searchcore/feed_jsonbuilder_taxonomybuilder')->createMappingFeed($collection);
  5631. -            $status = $this->_appendTofile($content);
  5632. -
  5633. -            if (!$status) {
  5634. -                $this->log("Error while addings taxonomy");
  5635. -                return false;
  5636. -            }
  5637. +               if(!$this->_appendTofile(',"mapping":[')) {
  5638. +                       $this->log("Error writing opening mapping tag");
  5639. +                       return false;
  5640. +               }
  5641.  
  5642. -            if (!$this->_appendTofile(']')) {
  5643. -                $this->log("Error writing closing mapping tag");
  5644. -                return false;
  5645. -            }
  5646. -        }
  5647. -        if(!$this->_appendTofile('}')) {
  5648. -            $this->log("Error writing closing mapping tag");
  5649. +        $content=Mage::getSingleton('unbxd_searchcore/feed_jsonbuilder_taxonomybuilder')->createMappingFeed($collection);
  5650. +        $status=$this->_appendTofile($content);
  5651. +
  5652. +        if(!$status){
  5653. +            $this->log("Error while addings taxonomy");
  5654.              return false;
  5655.          }
  5656. +
  5657. +        if(!$this->appendTofile(']}')) {
  5658. +                       $this->log("Error writing closing mapping tag");
  5659. +                       return false;
  5660. +               }
  5661.          $this->log('Added all categories');
  5662. -        return true;
  5663. +               return true;
  5664.         }
  5665.                
  5666.         protected function _setCopyFields(Mage_Core_Model_Website $website) {
  5667. @@ -572,13 +542,7 @@ $this->fields["tsin"]= Mage::getModel('unbxd_searchcore/field')->getField('sku',
  5668.  $this->fields["tsinAssociated"]= Mage::getModel('unbxd_searchcore/field')->getField('sku', "true", "false");
  5669.  $this->fields["msrp"]= Mage::getModel('unbxd_searchcore/field')->getField('decimal', "true", "false");
  5670.  $this->fields["sizeAssociated"]= Mage::getModel('unbxd_searchcore/field')->getField('text', "true", "false");
  5671. -$this->fields["small_image"]= Mage::getModel('unbxd_searchcore/field')->getField('text', "false", "false");
  5672. -       //mostviewed
  5673. -       $this->fields["most_viewed"]= Mage::getModel('unbxd_searchcore/field')->getField('number', "false", "false");
  5674. -       $this->fields["bestsellers"]= Mage::getModel('unbxd_searchcore/field')->getField('number', "false", "false");
  5675. -       $this->fields["saving"]= Mage::getModel('unbxd_searchcore/field')->getField('decimal', "false", "false");
  5676. -    $this->fields["psku"]= Mage::getModel('unbxd_searchcore/field')->getField('text', "true", "false");
  5677. -      $this->fields["imageLink"]= Mage::getModel('unbxd_searchcore/field')->getField('link', "true", "false");
  5678. +$this->fields["small_image"]= Mage::getModel('unbxd_searchcore/field')->getField('link', "false", "false");
  5679.                 $this->_setImageConf($website);
  5680.  
  5681.         }
  5682. @@ -608,7 +572,17 @@ $this->fields["small_image"]= Mage::getModel('unbxd_searchcore/field')->getField
  5683.         }
  5684.  
  5685.         public function getTaxonomyMappingCollection() {
  5686. -               return Mage::getResourceModel('unbxd_searchcore/taxonomy_collection');
  5687. +               try{
  5688. +            $adapter = Mage::getSingleton('core/resource')->getConnection('core_read');
  5689. +            return $adapter->query("select catalog_category_product_index.product_id as entity_id,GROUP_CONCAT(catalog_category_product_index.category_id SEPARATOR ',') as category_id FROM catalog_category_product_index
  5690. +                join catalog_product_entity where catalog_category_product_index.product_id = catalog_product_entity.entity_id
  5691. +                group by catalog_category_product_index.product_id");
  5692. +        } catch(Exception $e) {
  5693. +                       $this->log($e->getMessage());
  5694. +               }      
  5695. +
  5696. +        
  5697.         }
  5698. +
  5699.  }
  5700.  ?>
  5701. diff --git a/app/code/local/Unbxd/Searchcore/Model/Feed/Feedmanager.php b/app/code/local/Unbxd/Searchcore/Model/Feed/Feedmanager.php
  5702. index 9ab51c4..c459fc2 100755
  5703. --- a/app/code/local/Unbxd/Searchcore/Model/Feed/Feedmanager.php
  5704. +++ b/app/code/local/Unbxd/Searchcore/Model/Feed/Feedmanager.php
  5705. @@ -208,7 +208,7 @@ class Unbxd_Searchcore_Model_Feed_Feedmanager {
  5706.          }
  5707.      }
  5708.  
  5709. -    public function getProducts(Mage_Core_Model_Website $website, $page = 0, $limit = 500, $taxonomyPageNumber = 0, $taxonomyPageLimit = -1) {
  5710. +    public function getProducts(Mage_Core_Model_Website $website, $page = 0, $limit = 500) {
  5711.          $response = $this->init($website, true);
  5712.          if (is_array($response)) {
  5713.              return $response;
  5714. @@ -217,21 +217,19 @@ class Unbxd_Searchcore_Model_Feed_Feedmanager {
  5715.          $this->_triggerSearchComplete($website);
  5716.          Mage::getSingleton('unbxd_searchcore/feed_filemanager')->setNoFile(true);
  5717.  
  5718. -        //try {
  5719. +        try {
  5720.              // create the feed
  5721.              $status = Mage::getSingleton('unbxd_searchcore/feed_feedcreator')
  5722.                  ->setFullUpload(true)
  5723.                  ->setPage($page)
  5724. -               ->setTaxonomyPage($taxonomyPageNumber)
  5725. -               ->setTaxonomyLimit($taxonomyPageLimit)
  5726.                  ->setLimit($limit)
  5727.                  ->createFeed($this->fileName, $website, $currentDate);
  5728.              $this->log('unbxd Datafeeder finished creating file');
  5729. -        /*} catch (Exception $e) {
  5730. +        } catch (Exception $e) {
  5731.              $this->log('Caught exception: ' . $e->getMessage());
  5732.              $status = false;
  5733.              $errorMsg = $e->getMessage();
  5734. -        } */
  5735. +        }
  5736.          if($status) {
  5737.              return Mage::getSingleton('unbxd_searchcore/feed_filemanager')->getContent($this->fileName);
  5738.          } else {
  5739. @@ -250,11 +248,6 @@ class Unbxd_Searchcore_Model_Feed_Feedmanager {
  5740.  
  5741.      }
  5742.  
  5743. -    public function getTaxonomySize(Mage_Core_Model_Website $website) {
  5744. -       return  Mage::getSingleton('unbxd_searchcore/feed_feedcreator')
  5745. -               ->getTaxonomySize($website);
  5746. -    }
  5747. -
  5748.         public function log($message) {
  5749.                 Mage::helper('unbxd_searchcore')->log(Zend_Log::DEBUG, $message);
  5750.         }
  5751. diff --git a/app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Productbuilder.php b/app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Productbuilder.php
  5752. old mode 100644
  5753. new mode 100755
  5754. index d95a06f..4c6422c
  5755. --- a/app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Productbuilder.php
  5756. +++ b/app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Productbuilder.php
  5757. @@ -56,7 +56,6 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends
  5758.          */
  5759.         public function skipProduct(Mage_Core_Model_Website $website, $product) {
  5760.                 $filters = $this->_getFeedHelper()->getFilters($website);
  5761. -
  5762.                 foreach($filters as $key=>$filter) {
  5763.                         if($this->_getFeedHelper()->isMultiSelect($key)) {
  5764.                                 $values = $this->_getMultiSelectAttribute($key, $product);
  5765. @@ -84,18 +83,6 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends
  5766.                                 }
  5767.                         }
  5768.                 }
  5769. -
  5770. -               if($product->getData('type_id') == "simple"){
  5771. -                       /*      if($product->getData('psku')){
  5772. -                               return true;
  5773. -                       }*/
  5774. -                       $parentIds = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($product->getData("entity_id"));
  5775. -                       if(sizeof($parentIds) > 0) {
  5776. -                               return true;
  5777. -                       }
  5778. -               }
  5779. -
  5780. -
  5781.                 return false;
  5782.         }
  5783.  
  5784. @@ -140,7 +127,7 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends
  5785.         public function getProduct(Mage_Core_Model_Website $website, $product, $fields, $copyFields, $childProduct = false) {
  5786.                 $productArray =array();
  5787.  
  5788. -
  5789. +              
  5790.                 foreach($product->getData('') as $columnHeader=>$columndata){
  5791.  
  5792.                         // if($childProduct){
  5793. @@ -158,14 +145,14 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends
  5794.                         }
  5795.                 }
  5796.  
  5797. -
  5798. +                      
  5799.  
  5800.                 if(!$childProduct) {
  5801.  
  5802.                         // if($this->_getFeedHelper()
  5803.                         //      ->isConfigTrue($website, Unbxd_Searchcore_Helper_Constants::INCLUDE_CHILD_PRODUCT)) {
  5804. -
  5805. -                       $productArray = $this->addChildrens($website, $product, $fields, $copyFields, $productArray);
  5806. +                      
  5807. +                               $productArray = $this->addChildrens($website, $product, $fields, $copyFields, $productArray);
  5808.                         // }
  5809.  
  5810.                         $category = $this->_getCategoryAttribute($product);
  5811. @@ -179,14 +166,8 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends
  5812.  
  5813.                         if(!is_null($tsinValue)) {
  5814.                                 $productArray["tsin"] = $tsinValue;
  5815. -                       }
  5816. -
  5817. -                       if(array_key_exists('small_image', $productArray)) {
  5818. -                               $productArray["imageLink"]="http://img.tolexokit.com//media/catalog/product" . $productArray["small_image"] . "?resize=1&q=95&w=135&h=135&zc=2";
  5819. -
  5820. -                       }
  5821. -
  5822. -
  5823. +                       }      
  5824. +                              
  5825.                         if(array_key_exists('final_price', $fields)) {
  5826.                                 $productArray['final_price'] = $product->getFinalPrice();
  5827.                         }
  5828. @@ -197,24 +178,19 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends
  5829.                         $productArray["final_price"]=$product->getFinalPrice();
  5830.                         $productArray["price"]=$product->getPrice();
  5831.                         $productArray["url_path"]=$product->getProductUrl();
  5832. -                       if ($product->getData('msrp') != 0){
  5833. -                               $productArray["saving"] = (($product->getData('msrp') - $product->getFinalPrice())*100/$product->getData('msrp'));
  5834. -                       }
  5835. +
  5836.                         $msrp_value = $product->getData("msrp");
  5837. -                       if($product->getData("visibility") != 4) {
  5838. -                               $productArray[Unbxd_Searchcore_Model_Resource_Field::AVAILABILITY] ="false";
  5839. -                       }
  5840. -                       if(!is_null($msrp_value)) {
  5841. +               if(!is_null($msrp_value)) {
  5842.                                 $productArray["msrp"] = $msrp_value;
  5843.                         }
  5844.  
  5845.                 }
  5846.                 else {
  5847.  
  5848. -                       // echo $product->getData("tsin");
  5849. -                       if($product->getData("tsin")) {
  5850. -                               $productArray["tsinAssociated"]=$product->getData("tsin");
  5851. -                       }
  5852. +                               // echo $product->getData("tsin");
  5853. +                               if($product->getData("tsin")) {
  5854. +                                       $productArray["tsinAssociated"]=$product->getData("tsin");
  5855. +                               }
  5856.  
  5857.                 }
  5858.                 return $productArray;
  5859. @@ -338,10 +314,10 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends
  5860.          */
  5861.         public function addChildrens(Mage_Core_Model_Website $website,  $product, $fields, $copyFields, $productArray) {
  5862.  
  5863. -
  5864. +              
  5865.                 $type = $product->getData('type_id');
  5866.                 if ($type == "configurable" || $type == "grouped" ) {
  5867. -
  5868. +                      
  5869.                         $associatedProducts = array();
  5870.                         $conf = Mage::getModel('catalog/product_type_configurable')->setProduct($product);
  5871.                         $childrens = $conf->getUsedProductCollection()
  5872. @@ -350,20 +326,20 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends
  5873.                                 ->joinField("qtyAssociated", "cataloginventory_stock_item", 'qty', 'product_id=entity_id', null, 'left');
  5874.                         foreach ($childrens as $children)
  5875.                         {
  5876. -                               $childProduct = $this->getProduct($website, $children, $fields, $copyFields, true);
  5877. +                                                               $childProduct = $this->getProduct($website, $children, $fields, $copyFields, true);
  5878.                                 if(isset($childProduct) && sizeof($childProduct) > 0 ) {
  5879. -
  5880. +                                      
  5881.                                         $childProduct = $this->postProcessProduct($childProduct, $fields, true);
  5882.                                         $associatedProducts[] = $childProduct;
  5883.                                 }
  5884.                         }
  5885.                         if( sizeof($associatedProducts) > 0) {
  5886. -
  5887. +                              
  5888.                                 $productArray["associatedProducts"] = $associatedProducts;
  5889.                         }
  5890.                         return $productArray;
  5891.                 } else {
  5892. -
  5893. +                      
  5894.                         return $productArray;
  5895.                 }
  5896.         }
  5897. diff --git a/app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Taxonomybuilder.php b/app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Taxonomybuilder.php
  5898. index aeeb92e..44cf933 100755
  5899. --- a/app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Taxonomybuilder.php
  5900. +++ b/app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Taxonomybuilder.php
  5901. @@ -1,68 +1,65 @@
  5902.  <?php
  5903.  
  5904. -class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Taxonomybuilder  {
  5905. -
  5906. +class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Taxonomybuilder extends Unbxd_Searchcore_Model_Feed_Jsonbuilder_Jsonbuilder {
  5907. +      
  5908.         var $file='unbxdTaxonomy.xml';
  5909. -
  5910. +      
  5911.         public function __construct(){
  5912.                 //$this->file =  Mage::getBaseDir('tmp').DS.'unbxdTaxonomy.xml';
  5913. -       }
  5914. -
  5915. -       /**
  5916. -        * Function to appened the contents to the file
  5917. -        */
  5918. -       private function appendTofile($content){
  5919. -
  5920. -               try{
  5921. -
  5922. -                       file_put_contents($this->file, $content, FILE_APPEND);
  5923. -                       return true;
  5924. -               }catch(Exception $Ex){
  5925. -                       error_log("UNBXD_MODULE:Error while appending the contents to file");
  5926. -                       error_log($Ex->getMessage());
  5927. -                       return false;
  5928. -               }
  5929. -       }
  5930. -
  5931. -       private function log($message){
  5932. -               Mage::helper('unbxd_searchcore')->log(Zend_Log::DEBUG, $message);
  5933. -       }
  5934. -
  5935. -       /**
  5936. -        * Function to delete the file
  5937. -        */
  5938. -       private function deleteFile(){
  5939. -               unlink($this->file);
  5940. -       }
  5941. -
  5942. -
  5943. +       }      
  5944. +      
  5945. +       /**
  5946. +        * Function to appened the contents to the file
  5947. +        */
  5948. +       private function appendTofile($content){
  5949. +
  5950. +               try{
  5951. +                      
  5952. +                       file_put_contents($this->file, $content, FILE_APPEND);
  5953. +                       return true;
  5954. +               }catch(Exception $Ex){
  5955. +                       error_log("UNBXD_MODULE:Error while appending the contents to file");
  5956. +                       error_log($Ex->getMessage());
  5957. +                       return false;
  5958. +               }
  5959. +       }
  5960. +
  5961. +       private function log($content){
  5962. +                try{
  5963. +                        file_put_contents($this->logFile, date('Y-m-d H:i:s').$content."\n", FILE_APPEND);
  5964. +                        return true;
  5965. +                }catch(Exception $Ex){
  5966. +                        error_log("UNBXD_MODULE:Error while appending the contents to file");
  5967. +                        Mage::throwException($Ex->getMessage());
  5968. +                        return false;
  5969. +                }
  5970. +        }
  5971. +      
  5972. +       /**
  5973. +        * Function to delete the file
  5974. +        */
  5975. +       private function deleteFile(){
  5976. +               unlink($this->file);           
  5977. +       }
  5978. +      
  5979. +      
  5980.         private function writeJSONProductsContents($site){
  5981.                 $stores= $this->getStores($site);
  5982. -               $content='';
  5983. -               $categoryIds = array();
  5984.                 foreach( $stores as $store){
  5985. -                       $categories=$this->getStoreCategories($store);
  5986. +                       $categories=$this->getStoreCategories($store);         
  5987. +                       $content='';
  5988. +                       $count=0;
  5989.                         foreach($categories as $category){
  5990. -                               $category_obj =  Mage::getModel('catalog/category')->load($category->getId());
  5991. -                               if(!is_null($category_obj) && $category_obj->getName()== "" ){
  5992. +                               if( $category->getName()== "" ){
  5993.                                         continue;
  5994.                                 }
  5995. -                               if(!array_key_exists($category->getId(), $categoryIds)) {
  5996. -                                       $content =$content.$this->getCategoryContent($category_obj);
  5997. -                                       $categoryIds[] = $category->getId();
  5998. -                               }
  5999. +                               $content =$content.$this->getCategoryContent($category);
  6000. +                               $category_obj =  Mage::getModel('catalog/category')->load($category->getId());
  6001.                                 $childrens = $category_obj->getAllChildren(true);
  6002. -                               $childrenCategories = Mage::getResourceSingleton('catalog/category_collection')
  6003. -                                       ->addIdFilter($childrens)
  6004. -                                       ->addAttributeToSelect('*')
  6005. -                                       ->load();
  6006. -
  6007. +                               $childrenCategories = Mage::getModel('catalog/category')->getCollection()->addIdFilter($childrens)->addAttributeToSelect('*')->load();
  6008. +              
  6009.                                 foreach($childrenCategories as $childCategory){
  6010. -                                       $childCategory = Mage::getModel('catalog/category')->load($childCategory->getId());
  6011. -                                       if(!array_key_exists($childCategory->getId(), $categoryIds)) {
  6012. -                                               $content=$content.$this->getCategoryContent($childCategory);
  6013. -                                               $categoryIds[] = $childCategory->getId();
  6014. -                                       }
  6015. +                                       $content=$content.$this->getCategoryContent($childCategory);
  6016.                                 }
  6017.                         }
  6018.                 }
  6019. @@ -71,118 +68,142 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Taxonomybuilder  {
  6020.  
  6021.         private function getCategoryContent($category){
  6022.                 $content=array();
  6023. -               $content["nodeName"]= $category->getName();
  6024. -               $content["parentNodeId"] = array((string)$category->getParentId());
  6025. -               $content["nodeId"] =(string)$category->getId();
  6026. -               return json_encode($content).',';
  6027. +        $content["nodeName"]= $category->getName();
  6028. +        $content["parentNodeId"] = array((string)$category->getParentId());
  6029. +        $content["nodeId"] =(string)$category->getId();
  6030. +       return json_encode($content).',';
  6031.         }
  6032. -
  6033. +      
  6034. +
  6035. +      
  6036. +       private function getAllCategories($site){
  6037. +               $collection = Mage::getModel('catalog/category')->getCollection()
  6038. +                       ->setStoreId($this->getStores($site))
  6039. +                       ->addAttributeToSelect('name')
  6040. +                        ->addAttributeToSelect('id');
  6041. +              
  6042. +               return $collection->load();
  6043. +              
  6044. +       }
  6045. +      
  6046.         private function getStores($site){
  6047. -               $sites=Mage::app()->getWebsites();
  6048. -               foreach( $sites as $eachSite){
  6049. -                       if(strcasecmp ( $eachSite->getName(), $site ) == 0 ){
  6050. -                               return $eachSite->getStores();
  6051. -                       }
  6052. -               }
  6053. +               $sites=Mage::app()->getWebsites();
  6054. +        foreach( $sites as $eachSite){
  6055. +            if(strcasecmp ( $eachSite->getName(), $site ) == 0 ){
  6056. +                return $eachSite->getStores();
  6057. +            }
  6058. +        }
  6059.         }
  6060. +      
  6061. +      
  6062. +      
  6063. +       private function getAttributesInJSON($columnHeader,$columndata){
  6064. +                
  6065. +               return '"'.$columnHeader.'"'.':'.'"'.$content.'"';
  6066. +       }
  6067. +      
  6068. +       private function _escapeXMLHeader($columnHeader){
  6069. +              
  6070. +               return str_replace(' ','_',$columnHeader);
  6071. +       }
  6072. +      
  6073. +      
  6074. +      
  6075. +       public function createTaxonomyFeed($site){      
  6076.  
  6077. -       public function createTaxonomyFeed($site){
  6078. -
  6079. -               $content=$this->writeJSONProductsContents($site);
  6080. -
  6081. -               if(!$content){
  6082. -                       return false;
  6083. -               }
  6084. -               $this->log('writing content');
  6085. -
  6086. -               return rtrim($content, ",");;
  6087. -       }
  6088. +                       $content=$this->writeJSONProductsContents($site);      
  6089. +              
  6090. +                       if(!$content){
  6091. +                               return false;
  6092. +                       }
  6093. +                       $this->log('writing content');
  6094.  
  6095. -       public function createMappingFeed($collection){
  6096. +               return rtrim($content, ",");;
  6097. +       }
  6098.  
  6099. -               $content=$this->writeJSONMappingContents($collection);
  6100. +       public function createMappingFeed($collection){
  6101.  
  6102. -               if(!$content){
  6103. +               $content=$this->writeJSONMappingContents($collection)
  6104. +              
  6105. +                       if(!$content){
  6106.  
  6107. -                       return false;
  6108. -               }
  6109. +                               return false;
  6110. +                       }
  6111.  
  6112. -               $this->log('writing content');
  6113. +                       $this->log('writing content');
  6114.  
  6115. -               return rtrim($content, ",");
  6116. +               return rtrim($content, ",");
  6117.  
  6118. -       }
  6119. +       }
  6120.  
  6121. -       private function writeJSONMappingContents($collection)
  6122. -       {
  6123. -               $content='';
  6124. -               foreach($collection as $mapping) {
  6125. +       private function writeJSONMappingContents($collection)
  6126. +       {
  6127. +               $content='';
  6128. +               foreach($collection as $mapping) {
  6129.  
  6130. -                       $content =$content.$this->getMappingContent( $mapping);
  6131. -               }
  6132. -               return $content;
  6133. +                       $content =$content.$this->getMappingContent( $mapping);
  6134. +               }
  6135. +               return $content;
  6136.  
  6137. -       }
  6138. +       }
  6139.  
  6140.  
  6141.  
  6142. -       private function getMappingContent($mapping){
  6143. +       private function getMappingContent($mapping){
  6144.  
  6145.                 $content=array();
  6146. -               $content["uniqueId"]= (string)$mapping['entity_id'];
  6147. -               $content["nodeId"] = explode(",", $mapping['category_id']);
  6148. -               return json_encode($content).',';
  6149. -       }
  6150. -
  6151. -       public function validateSite($site){
  6152. -               $sites=Mage::app()->getWebsites();
  6153. -               if( !isset($site) || $site == "") {
  6154. -                       return false;
  6155. -               }
  6156. -               foreach( $sites as $eachSite){
  6157. -                       if(strcasecmp ( $eachSite->getName(), $site ) == 0 ){
  6158. -                               return $eachSite->getWebsiteId();
  6159. -                       }
  6160. -               }
  6161. -               return -1;
  6162. +        $content["uniqueId"]= (string)$mapping['entity_id'];
  6163. +        $content["nodeId"] = explode(",", $mapping['category_id']);
  6164. +       return json_encode($content).',';
  6165.         }
  6166. -
  6167. -       public function getStoreCategories($store, $sorted=false, $asCollection=false, $toLoad=true)
  6168. -       {
  6169. -               $parent     = $store->getRootCategoryId();
  6170. -
  6171. -               /**
  6172. -                * Check if parent node of the store still exists
  6173. -                */
  6174. -               $category = Mage::getModel('catalog/category');
  6175. -               /* @var $category Mage_Catalog_Model_Category */
  6176. -               if (!$category->checkId($parent)) {
  6177. -                       if ($asCollection) {
  6178. -                               return new Varien_Data_Collection();
  6179. -                       }
  6180. -                       return array();
  6181. -               }
  6182. -
  6183. -               $recursionLevel  = max(0, (int) Mage::app()->getStore()->getConfig('catalog/navigation/max_depth'));
  6184. +      
  6185. +    public function validateSite($site){
  6186. +        $sites=Mage::app()->getWebsites();
  6187. +        if( !isset($site) || $site == "") {
  6188. +            return false;
  6189. +        }
  6190. +        foreach( $sites as $eachSite){
  6191. +            if(strcasecmp ( $eachSite->getName(), $site ) == 0 ){
  6192. +                return $eachSite->getWebsiteId();
  6193. +            }
  6194. +        }
  6195. +        return -1;
  6196. +    }
  6197. +
  6198. +       public function getStoreCategories($store, $sorted=false, $asCollection=false, $toLoad=true)
  6199. +    {
  6200. +        $parent     = $store->getRootCategoryId();
  6201. +
  6202. +        /**
  6203. +         * Check if parent node of the store still exists
  6204. +         */
  6205. +        $category = Mage::getModel('catalog/category');
  6206. +        /* @var $category Mage_Catalog_Model_Category */
  6207. +        if (!$category->checkId($parent)) {
  6208. +            if ($asCollection) {
  6209. +                return new Varien_Data_Collection();
  6210. +            }
  6211. +            return array();
  6212. +        }
  6213. +
  6214. +        $recursionLevel  = max(0, (int) Mage::app()->getStore()->getConfig('catalog/navigation/max_depth'));
  6215.                 $tree = Mage::getResourceModel('catalog/category_tree');
  6216. -               /* @var $tree Mage_Catalog_Model_Resource_Category_Tree */
  6217. -               $nodes = $tree->loadNode($parent)
  6218. -                       ->loadChildren($recursionLevel)
  6219. -                       ->getChildren();
  6220. -               //added to fetch non flat data all the time
  6221. -               $emptyResourceModel = Mage::getResourceSingleton('catalog/category_collection');
  6222. -               $tree->addCollectionData($emptyResourceModel, $sorted, $parent, $toLoad, false);
  6223. -               if ($asCollection) {
  6224. -                       return $tree->getCollection();
  6225. -               }
  6226. -               return $nodes;
  6227. -       }
  6228. -
  6229. -
  6230. -
  6231. +               /* @var $tree Mage_Catalog_Model_Resource_Category_Tree */
  6232. +               $nodes = $tree->loadNode($parent)
  6233. +                   ->loadChildren($recursionLevel)
  6234. +                   ->getChildren();
  6235. +        
  6236. +               $tree->addCollectionData(null, $sorted, $parent, $toLoad, false);
  6237. +               if ($asCollection) {
  6238. +               return $tree->getCollection();
  6239. +               }
  6240. +        return $nodes;
  6241. +    }
  6242. +
  6243. +      
  6244. +        
  6245.         public function updateAction($action,$value){
  6246. -               Mage::getResourceSingleton("datafeeder/conf")->updateAction($action, $value);
  6247. -       }
  6248. +               Mage::getResourceSingleton("datafeeder/conf")->updateAction($action, $value);            
  6249. +       }      
  6250.  }
  6251.  ?>
  6252. -
  6253. diff --git a/app/code/local/Unbxd/Searchcore/Model/Resource/Product/Collection.php b/app/code/local/Unbxd/Searchcore/Model/Resource/Product/Collection.php
  6254. index 1faba41..82b997b 100755
  6255. --- a/app/code/local/Unbxd/Searchcore/Model/Resource/Product/Collection.php
  6256. +++ b/app/code/local/Unbxd/Searchcore/Model/Resource/Product/Collection.php
  6257. @@ -81,29 +81,25 @@ class Unbxd_Searchcore_Model_Resource_Product_Collection extends
  6258.      {
  6259.          $adapter = Mage::getSingleton("core/resource");
  6260.          $visiblityCondition = array('in' => array(2,3,4));
  6261. -       $storeId = $website->getDefaultStore()->getId();
  6262.          $_catalogInventoryTable = method_exists($adapter, 'getTableName')
  6263.              ? $adapter->getTableName('cataloginventory_stock_item') : 'catalog_category_product_index';
  6264. -       $adapter   = $this->getConnection();
  6265.  
  6266.          $this
  6267.              ->addWebsiteFilter($website->getWebsiteId())
  6268.              ->joinField("qty", $_catalogInventoryTable, 'qty', 'product_id=entity_id', null, 'left')
  6269. -           ->joinField("bestsellers", $this->getTable('amsorting/bestsellers'),"bestsellers",
  6270. -                    'id=entity_id'/* AND mostviewed.store_id=?',$storeId */
  6271. -                , null, 'left')
  6272. -           -> joinField('most_viewed', $this->getTable('amsorting/most_viewed'), "most_viewed", 'id=entity_id'/* AND store_id=' . $storeId*/, null, 'left')
  6273.              ->addAttributeToSelect('*')
  6274. -            //->addAttributeToFilter('status',1)
  6275. +            ->addAttributeToFilter('status',1)
  6276. +            ->addAttributeToFilter('visibility',4)
  6277.              ->addCategoryIds()
  6278. +            ->addAttributeToFilter('visibility',$visiblityCondition)
  6279.              ->addPriceData(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID, $website->getWebsiteId());
  6280.  
  6281. -        /*if (!Mage::helper('unbxd_searchcore')
  6282. +        if (!Mage::helper('unbxd_searchcore')
  6283.              ->isConfigTrue($website, Unbxd_Searchcore_Helper_Constants::INCLUDE_OUT_OF_STOCK)) {
  6284.              Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($this);
  6285. -        }*/
  6286. +        }
  6287.  
  6288. -        //Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($this);
  6289. +        Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($this);
  6290.          #Mage::getSingleton('catalog/product_visibility')->addVisibleInSiteFilterToCollection($this);
  6291.          return $this;
  6292.      }
  6293. diff --git a/app/code/local/Unbxd/Searchcore/Model/Resource/Taxonomy/Collection.php b/app/code/local/Unbxd/Searchcore/Model/Resource/Taxonomy/Collection.php
  6294. deleted file mode 100755
  6295. index e8d8e13..0000000
  6296. --- a/app/code/local/Unbxd/Searchcore/Model/Resource/Taxonomy/Collection.php
  6297. +++ /dev/null
  6298. @@ -1,97 +0,0 @@
  6299. -<?php
  6300. -/**
  6301. - * Custom catalog product collection model.
  6302. - *
  6303. - * @package Unbxd_Search
  6304. - * @subpackage Unbxd_Search_Model
  6305. - * @author Antz
  6306. - */
  6307. -class Unbxd_Searchcore_Model_Resource_Taxonomy_Collection extends Mage_Catalog_Model_Resource_Category_Collection
  6308. -{
  6309. -    var $rows = array("entity_id","category_id");
  6310. -    public function getData($select=null)
  6311. -    {
  6312. -        if ($this->_data === null) {
  6313. -            $this->_renderFilters()
  6314. -                 ->_renderOrders()
  6315. -                 ->_renderLimit();
  6316. -            if(!is_null($select)){
  6317. -                $this->_select = $select;
  6318. -            }
  6319. -            $this->_data = $this->_fetchAll($this->_select);
  6320. -            $this->_afterLoadData();
  6321. -        }
  6322. -        return $this->_data;
  6323. -    }
  6324. -
  6325. -    public function getTaxonomyQuery($start, $limit) {
  6326. -        return "select catalog_category_product_index.product_id as entity_id,GROUP_CONCAT(catalog_category_product_index.category_id SEPARATOR ',') as category_id FROM catalog_category_product_index
  6327. -                join catalog_product_entity on catalog_category_product_index.product_id = catalog_product_entity.entity_id
  6328. -                group by catalog_category_product_index.product_id ". ((!is_null($limit))?(" LIMIT ".$limit):"")." OFFSET " .$start ;
  6329. -    }
  6330. -
  6331. -    public function load($start = 0, $limit = null,$select=null, $printQuery = false, $logQuery = false){
  6332. -        if ($this->isLoaded()) {
  6333. -            return $this;
  6334. -        }
  6335. -       $this->_idFieldName = "entity_id";
  6336. -        if($select == null) {
  6337. -            $select = $this->getTaxonomyQuery($start, $limit);
  6338. -        }
  6339. -        $this->_beforeLoad();
  6340. -
  6341. -       /* $this->_renderFilters()
  6342. -             ->_renderOrders()
  6343. -             ->_renderLimit();*/
  6344. -
  6345. -        $this->printLogQuery($printQuery, $logQuery);
  6346. -
  6347. -        $data = $this->getData($select);
  6348. -        $this->resetData();
  6349. -        
  6350. -        if (is_array($data)) {
  6351. -        foreach ($data as $row) {
  6352. -                $item = $this->getNewEmptyItem();
  6353. -                $item->setIdFieldName("entity_id");
  6354. -                $item->addData($row);
  6355. -                $this->addItem($item);
  6356. -            }
  6357. -        }
  6358. -
  6359. -        $this->_setIsLoaded();
  6360. -        $this->_afterLoad();
  6361. -        return $this;
  6362. -    }
  6363. -
  6364. -   /**
  6365. -     * Get SQL for get record count
  6366. -     *
  6367. -     * @return Varien_Db_Select
  6368. -     */
  6369. -    public function getSelectCountSql()
  6370. -    {
  6371. -        return "select count(distinct catalog_category_product_index.product_id) FROM catalog_category_product_index
  6372. -               join catalog_product_entity on catalog_category_product_index.product_id = catalog_product_entity.entity_id";
  6373. -    }
  6374. -
  6375. - /**
  6376. -     * Adding item to item array
  6377. -     *
  6378. -     * @param   Varien_Object $item
  6379. -     * @return  Varien_Data_Collection
  6380. -     */
  6381. -    public function addItem(Varien_Object $item)
  6382. -    {
  6383. -        $itemId = $this->_getItemId($item);
  6384. -
  6385. -        if (!is_null($itemId)) {
  6386. -            if (isset($this->_items[$itemId])) {
  6387. -                throw new Exception('Item ('.get_class($item).') with the same id "'.$item->getId().'" already exist');
  6388. -            }
  6389. -            $this->_items[$itemId] = $item;
  6390. -        } else {
  6391. -            $this->_addItem($item);
  6392. -        }
  6393. -        return $this;
  6394. -    }
  6395. -}
  6396. diff --git a/app/code/local/Unbxd/Searchcore/controllers/CatalogController.php b/app/code/local/Unbxd/Searchcore/controllers/CatalogController.php
  6397. index 17dbdfc..6e2b662 100755
  6398. --- a/app/code/local/Unbxd/Searchcore/controllers/CatalogController.php
  6399. +++ b/app/code/local/Unbxd/Searchcore/controllers/CatalogController.php
  6400. @@ -95,15 +95,13 @@ class Unbxd_Searchcore_CatalogController extends Mage_Core_Controller_Front_Acti
  6401.          set_time_limit(0);
  6402.          $page = $this->getRequest()->getParam('start', 0);
  6403.          $limit = $this->getRequest()->getParam('limit', 500);
  6404. -        $taxonomyStart =$this->getRequest()->getParam('tax-start', 0);
  6405. -       $taxonomyLimit = $this->getRequest()->getParam('tax-limit', -1);
  6406.          $isFullUpload = true;
  6407.          $feedMgr = Mage::getSingleton('unbxd_searchcore/feed_feedmanager');
  6408.          if(array_key_exists('incremental', $_REQUEST)) {
  6409.              $isFullUpload = false;
  6410.          }
  6411.  
  6412. -        $response = $feedMgr->getProducts($website, $page, $limit, $taxonomyStart, $taxonomyLimit);
  6413. +        $response = $feedMgr->getProducts($website, $page, $limit);
  6414.          $this->getResponse()->setBody($response);
  6415.          return;
  6416.      }
  6417. @@ -116,12 +114,7 @@ class Unbxd_Searchcore_CatalogController extends Mage_Core_Controller_Front_Acti
  6418.          }
  6419.          $feedMgr = Mage::getSingleton('unbxd_searchcore/feed_feedmanager');
  6420.          $size = $feedMgr->getSize($website);
  6421. -       $responseArray = array('size'=> $size);
  6422. -       if(array_key_exists("taxonomy", $_GET) && $_GET["taxonomy"] == true) {
  6423. -               $taxonomySize = $feedMgr->getTaxonomySize($website);
  6424. -               $responseArray["taxonomySize"] = $taxonomySize;
  6425. -       }
  6426. -        $response = json_encode($responseArray);
  6427. +        $response = json_encode(array('size'=> $size));
  6428.          $this->getResponse()->setBody($response);
  6429.          return;
  6430.      }
  6431. diff --git a/app/code/local/nodeapp/home.php b/app/code/local/nodeapp/home.php
  6432. index 091a1ef..cc298d4 100644
  6433. --- a/app/code/local/nodeapp/home.php
  6434. +++ b/app/code/local/nodeapp/home.php
  6435. @@ -1,10 +1,9 @@
  6436.  <?php
  6437.  
  6438. -//In case you want to serve everything from magento, make this flag false
  6439. +//In case you want to serve everything from magento make this flag false
  6440.  $dowithNode = true;
  6441.  //$dowithNode = false;
  6442.  
  6443. -//In case you want to serve only the product pages from Magento, make this flag false
  6444.  $doProductWithNode = true;
  6445.  //$doProductWithNode = false;
  6446.  
  6447. diff --git a/app/design/adminhtml/default/default/layout/categoryreorder.xml b/app/design/adminhtml/default/default/layout/categoryreorder.xml
  6448. deleted file mode 100644
  6449. index a0d8aa5..0000000
  6450. --- a/app/design/adminhtml/default/default/layout/categoryreorder.xml
  6451. +++ /dev/null
  6452. @@ -1,33 +0,0 @@
  6453. -<?xml version="1.0"?>
  6454. -<layout version="0.1.0">
  6455. -       <categoryreorder_index_categoryl1>
  6456. -        <reference name="head">
  6457. -            <action method = "addJs">
  6458. -                <script>categoryreorder/js/catreorder-common.js</script>
  6459. -            </action>
  6460. -        </reference>
  6461. -               <reference name="content">
  6462. -                       <block type="categoryreorder/categoryblock" name="categoryblock" template="categoryreorder/categoryL1.phtml" />
  6463. -               </reference>
  6464. -       </categoryreorder_index_categoryl1>
  6465. -    <categoryreorder_index_categoryl2>
  6466. -        <reference name="head">
  6467. -            <action method = "addJs">
  6468. -                <script>categoryreorder/js/catreorder-common.js</script>
  6469. -            </action>
  6470. -        </reference>
  6471. -        <reference name="content">
  6472. -            <block type="categoryreorder/categoryblock" name="categoryblock" template="categoryreorder/categoryL2.phtml" />
  6473. -        </reference>
  6474. -    </categoryreorder_index_categoryl2>
  6475. -    <categoryreorder_index_categoryl3>
  6476. -        <reference name="head">
  6477. -            <action method = "addJs">
  6478. -                <script>categoryreorder/js/catreorder-common.js</script>
  6479. -            </action>
  6480. -        </reference>
  6481. -        <reference name="content">
  6482. -            <block type="categoryreorder/categoryblock" name="categoryblock" template="categoryreorder/categoryL3.phtml" />
  6483. -        </reference>
  6484. -    </categoryreorder_index_categoryl3>
  6485. -</layout>
  6486. diff --git a/app/design/adminhtml/default/default/layout/main.xml b/app/design/adminhtml/default/default/layout/main.xml
  6487. index 1689181..5b4f9f0 100644
  6488. --- a/app/design/adminhtml/default/default/layout/main.xml
  6489. +++ b/app/design/adminhtml/default/default/layout/main.xml
  6490. @@ -55,8 +55,6 @@ Default layout, loads most of the pages
  6491.          <block type="adminhtml/page" name="root" output="toHtml" template="page.phtml">
  6492.             <block type="adminhtml/page_head" name="head" as="head" template="page/head.phtml">
  6493.                  <action method="setTitle" translate="title"><title>Magento Admin</title></action>
  6494. -                <action method="addJs"><script>smartwave/jquery/jquery-1.10.2.min.js</script></action>
  6495. -                <action method="addJs"><script>smartwave/jquery/jquery-ui-1.11.4.min.js</script></action>
  6496.                  <action method="addJs"><script>prototype/prototype.js</script></action>
  6497.                  <action method="addItem"><type>js</type><name>extjs/fix-defer-before.js</name><params/><if/><condition>can_load_ext_js</condition></action>
  6498.                  <action method="addJs"><script>prototype/window.js</script></action>
  6499. @@ -80,9 +78,7 @@ Default layout, loads most of the pages
  6500.                  <action method="addJs"><script>mage/adminhtml/tools.js</script></action>
  6501.                  <action method="addJs"><script>mage/adminhtml/uploader.js</script></action>
  6502.                  <action method="addJs"><script>mage/adminhtml/product.js</script></action>
  6503. -                <action method="addCss">
  6504. -                <stylesheet>../../../../js/categoryreorder/css/style.css</stylesheet>
  6505. -                </action>
  6506. +
  6507.                  <action method="addCss"><name>reset.css</name></action>
  6508.                  <action method="addCss"><name>boxes.css</name></action>
  6509.                  <action method="addCss"><name>custom.css</name></action>
  6510. diff --git a/app/design/adminhtml/default/default/template/categoryreorder/categoryL1.phtml b/app/design/adminhtml/default/default/template/categoryreorder/categoryL1.phtml
  6511. deleted file mode 100644
  6512. index 8f8e361..0000000
  6513. --- a/app/design/adminhtml/default/default/template/categoryreorder/categoryL1.phtml
  6514. +++ /dev/null
  6515. @@ -1,46 +0,0 @@
  6516. -<div class="catgry-heading">Re-order L1 Category</div>
  6517. -
  6518. -<?php
  6519. -if(!empty($updatedFlag)) {
  6520. -    if($updatedFlag == 1) {
  6521. -        $divid = 'update_msg_success';
  6522. -        $updateMsg = "SUCCESSFULLY UPDATED!!!!!!!";
  6523. -    } else {
  6524. -        $divid = 'update_msg_error';
  6525. -        $updateMsg = "UPDATION FAILED!!!!!!!"."<br/>".$updatedFlag;
  6526. -    }
  6527. -    ?>
  6528. -    <div id="<?php echo $divid ?>">
  6529. -        <?php echo $updateMsg; ?>
  6530. -    </div>
  6531. -<?php
  6532. -}
  6533. -
  6534. -$model_category = Mage::getModel('catalog/category')
  6535. -                    ->getCollection()
  6536. -                    ->addAttributeToSelect('*')
  6537. -                    ->addAttributeToFilter('is_active',array('eq' => 1))
  6538. -                    ->addAttributeToFilter('level',array('eq' => 2))
  6539. -                    ->addOrderField('position');
  6540. -?>
  6541. -
  6542. -<form id='category_list' action='#' method='POST'>
  6543. -<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />
  6544. -<lable class="blnk-spc"></lable>
  6545. -<ul id="sortable">
  6546. -<?php
  6547. -foreach ($model_category as $category) {
  6548. -    if($category->getName() != "View All Categories" && $category->getName() != "Root Catalog") {
  6549. -?>
  6550. -<li id = "<?php echo $category->getEntityId(); ?>" class="ui-state-default"><?php echo $category->getName(); ?></li>
  6551. -<?php
  6552. -    }
  6553. -}
  6554. -?>
  6555. -
  6556. -</ul>
  6557. -<div class="update-btn">
  6558. -    <a href="javascript:void(0)" onclick="prepareCatArr();" >Update</a>
  6559. -</div>
  6560. -<input type="hidden" id='update_catlist' name='update_catlist' />
  6561. -</form>
  6562. diff --git a/app/design/adminhtml/default/default/template/categoryreorder/categoryL2.phtml b/app/design/adminhtml/default/default/template/categoryreorder/categoryL2.phtml
  6563. deleted file mode 100644
  6564. index 0de2028..0000000
  6565. --- a/app/design/adminhtml/default/default/template/categoryreorder/categoryL2.phtml
  6566. +++ /dev/null
  6567. @@ -1,92 +0,0 @@
  6568. -<script>
  6569. -jQuery(function() {
  6570. -    jQuery("#l1catlist").change(function () {
  6571. -        if(jQuery('#l1catlist').val != '') {
  6572. -            jQuery('#category_listl1').submit();
  6573. -        }
  6574. -    });
  6575. -});
  6576. -</script>
  6577. -
  6578. -<div class="catgry-heading">Re-order L2 Category</div>
  6579. -
  6580. -<?php
  6581. -if(!empty($updatedFlag)) {
  6582. -    if($updatedFlag == 1) {
  6583. -        $divid = 'update_msg_success';
  6584. -        $updateMsg = "SUCCESSFULLY UPDATED!!!!!!!";
  6585. -    } else {
  6586. -        $divid = 'update_msg_error';
  6587. -        $updateMsg = "UPDATION FAILED!!!!!!!"."<br/>".$updatedFlag;
  6588. -    }
  6589. -    ?>
  6590. -    <div id="<?php echo $divid ?>">
  6591. -        <?php echo $updateMsg; ?>
  6592. -    </div>
  6593. -<?php
  6594. -}
  6595. -
  6596. -$model_category = Mage::getModel('catalog/category')
  6597. -                    ->getCollection()
  6598. -                    ->addAttributeToSelect('*')
  6599. -                    ->addAttributeToFilter('is_active',array('eq' => 1))
  6600. -                    ->addAttributeToFilter('level',array('eq' => 2))
  6601. -                    ->addOrderField('position');
  6602. -?>
  6603. -<form id='category_listl1' action='#' method='POST'>
  6604. -    <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />
  6605. -    <lable>Category L1</lable>
  6606. -    <select id='l1catlist' name='l1catlist'>
  6607. -    <option value=''>---Select L1 Category---</option>
  6608. -    <?php
  6609. -    foreach ($model_category as $category) {
  6610. -        if($category->getName() != "View All Categories" && $category->getName() != "Root Catalog") {
  6611. -            $entityId = $category->getEntityId();
  6612. -            $entityName = $category->getName();
  6613. -
  6614. -
  6615. -    ?>
  6616. -    <option value="<?php echo $entityId; ?>" <?php echo (!empty($parentId) && ($parentId == $entityId)) ? 'selected' : '' ;?> ><?php echo $entityName; ?></option>
  6617. -    <?php
  6618. -    }
  6619. -    }
  6620. -    ?>
  6621. -    </select>
  6622. -</form>
  6623. -<?php if(!empty($parentId)) { ?>
  6624. -    <div id='l2catlist'>
  6625. -
  6626. -        <?php
  6627. -        $model_category = Mage::getModel('catalog/category')
  6628. -                        ->getCollection()
  6629. -                        ->addAttributeToSelect('*')
  6630. -                        ->addAttributeToFilter('is_active',array('eq' => 1))
  6631. -                        ->addAttributeToFilter('level',array('eq' => 3))
  6632. -                        ->addAttributeToFilter('parent_id',array('eq' => $parentId))
  6633. -                        ->addOrderField('position');
  6634. -        ?>
  6635. -        <form id='category_list' action='#' method='POST'>
  6636. -            <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />
  6637. -            <lable class="blnk-spc"></lable>
  6638. -            <ul id="sortable">
  6639. -            <?php
  6640. -            foreach ($model_category as $category) {
  6641. -            ?>
  6642. -            <li id = "<?php echo $category->getEntityId(); ?>" class="ui-state-default"><?php echo $category->getName(); ?></li>
  6643. -            <?php
  6644. -            }
  6645. -            ?>
  6646. -
  6647. -            </ul>
  6648. -            <div class="update-btn">
  6649. -                <a href="javascript:void(0)" onclick="prepareCatArr();">Update</a>
  6650. -            </div>
  6651. -            <input type="hidden" id='update_catlist' name='update_catlist' />
  6652. -            <input type="hidden" id='parentCatId' name='parentCatId' value="<?php echo $parentId ?>" />
  6653. -        </form>
  6654. -
  6655. -    </div>
  6656. -<?php
  6657. -}
  6658. -?>
  6659. -
  6660. diff --git a/app/design/adminhtml/default/default/template/categoryreorder/categoryL3.phtml b/app/design/adminhtml/default/default/template/categoryreorder/categoryL3.phtml
  6661. deleted file mode 100644
  6662. index f2c40dd..0000000
  6663. --- a/app/design/adminhtml/default/default/template/categoryreorder/categoryL3.phtml
  6664. +++ /dev/null
  6665. @@ -1,148 +0,0 @@
  6666. -<script>
  6667. -jQuery(function() {
  6668. -    jQuery("#l1catlist").change(function () {
  6669. -        if(jQuery('#l1catlist').val != '') {
  6670. -            jQuery('#category_listl1').submit();
  6671. -        }
  6672. -    });
  6673. -    jQuery("#l2catlist").change(function () {
  6674. -        if(jQuery('#l2catlist').val != '') {
  6675. -            jQuery('#category_listl2').submit();
  6676. -        }
  6677. -    });
  6678. -});
  6679. -
  6680. -</script>
  6681. -
  6682. -<div class="catgry-heading">Re-order L3 Category</div>
  6683. -
  6684. -<?php
  6685. -if(!empty($updatedFlag)) {
  6686. -    if($updatedFlag == 1) {
  6687. -        $divid = 'update_msg_success';
  6688. -        $updateMsg = "SUCCESSFULLY UPDATED!!!!!!!";
  6689. -    } else {
  6690. -        $divid = 'update_msg_error';
  6691. -        $updateMsg = "UPDATION FAILED!!!!!!!"."<br/>".$updatedFlag;
  6692. -    }
  6693. -    ?>
  6694. -    <div id="<?php echo $divid ?>">
  6695. -        <?php echo $updateMsg; ?>
  6696. -    </div>
  6697. -<?php
  6698. -}
  6699. -
  6700. -$model_category = Mage::getModel('catalog/category')
  6701. -                    ->getCollection()
  6702. -                    ->addAttributeToSelect('*')
  6703. -                    ->addAttributeToFilter('is_active',array('eq' => 1))
  6704. -                    ->addAttributeToFilter('level',array('eq' => 2))
  6705. -                    ->addOrderField('position');
  6706. -?>
  6707. -
  6708. -<div id='l1catlist' class="categary-list">
  6709. -    <form id='category_listl1' action='#' method='POST'>
  6710. -        <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />
  6711. -        <lable>Category L1</lable>
  6712. -        <select id='l1catlist' name='l1catlist'>
  6713. -        <option value=''>---Select L1 Category---</option>
  6714. -        <?php
  6715. -        foreach ($model_category as $category) {
  6716. -            if($category->getName() != "View All Categories" && $category->getName() != "Root Catalog") {
  6717. -                $entityId = $category->getEntityId();
  6718. -                $entityName = $category->getName();
  6719. -
  6720. -
  6721. -        ?>
  6722. -        <option value="<?php echo $entityId; ?>" <?php echo (!empty($parentIdl2) && ($parentIdl2 == $entityId)) ? 'selected' : '' ;?> ><?php echo $entityName; ?></option>
  6723. -        <?php
  6724. -        }
  6725. -        }
  6726. -        ?>
  6727. -        </select>
  6728. -    </form>
  6729. -</div>
  6730. -<?php
  6731. -    if(!empty($parentIdl2)) { ?>
  6732. -        <div id='l2catlist'>
  6733. -
  6734. -        <?php
  6735. -        $model_category = Mage::getModel('catalog/category')
  6736. -                        ->getCollection()
  6737. -                        ->addAttributeToSelect('*')
  6738. -                        ->addAttributeToFilter('is_active',array('eq' => 1))
  6739. -                        ->addAttributeToFilter('level',array('eq' => 3))
  6740. -                        ->addAttributeToFilter('parent_id',array('eq' => $parentIdl2))
  6741. -                        ->addOrderField('position');
  6742. -        ?>
  6743. -        <form id='category_listl2' action='#' method='POST'>
  6744. -            <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />
  6745. -            <lable>Category L2</lable>
  6746. -            <select id='l2catlist' name='l2catlist'>
  6747. -            <option value=''>---Select L2 Category---</option>
  6748. -            <?php
  6749. -            foreach ($model_category as $category) {
  6750. -                if($category->getName() != "View All Categories" && $category->getName() != "Root Catalog") {
  6751. -                    $entityId = $category->getEntityId();
  6752. -                    $entityName = $category->getName();
  6753. -            ?>
  6754. -            <option value="<?php echo $entityId; ?>" <?php echo (!empty($parentIdl3) && ($parentIdl3 == $entityId)) ? 'selected' : '' ;?> ><?php echo $entityName; ?></option>
  6755. -        <?php
  6756. -                }
  6757. -            }
  6758. -        ?>
  6759. -            </select>
  6760. -            <input type="hidden" id='parentCatIdl2' name='parentCatIdl2' value="<?php echo $parentIdl2 ?>" />
  6761. -        </form>
  6762. -    </div>
  6763. -<?php
  6764. -    }
  6765. -?>
  6766. -<?php if(!empty($parentIdl3)) { ?>
  6767. -    <div id='l3catlist'>
  6768. -
  6769. -        <?php
  6770. -        $model_category = Mage::getModel('catalog/category')
  6771. -                        ->getCollection()
  6772. -                        ->addAttributeToSelect('*')
  6773. -                        ->addAttributeToFilter('is_active',array('eq' => 1))
  6774. -                        ->addAttributeToFilter('level',array('eq' => 4))
  6775. -                        ->addAttributeToFilter('parent_id',array('eq' => $parentIdl3))
  6776. -                        ->addOrderField('position');
  6777. -        ?>
  6778. -        <form id='category_list' action='#' method='POST'>
  6779. -            <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />
  6780. -            <lable class="blnk-spc"></lable>
  6781. -            <ul id="sortable">
  6782. -                <?php
  6783. -                $count = 0;
  6784. -                foreach ($model_category as $category) {
  6785. -                ?>
  6786. -                <li id = "<?php echo $category->getEntityId(); ?>" class="ui-state-default"><?php echo $category->getName(); ?></li>
  6787. -                <?php
  6788. -                $count++;
  6789. -                }
  6790. -                ?>
  6791. -            </ul>
  6792. -            <?php
  6793. -            if($count > 0) {
  6794. -            ?>
  6795. -                <div class="update-btn">
  6796. -                    <a href="javascript:void(0)" onclick="prepareCatArr();">Update</a>
  6797. -                </div>
  6798. -                <input type="hidden" id='update_catlist' name='update_catlist' />
  6799. -                <input type="hidden" id='parentCatIdl2' name='parentCatIdl2' value="<?php echo $parentIdl2 ?>" />
  6800. -                <input type="hidden" id='parentCatIdl3' name='parentCatIdl3' value="<?php echo $parentIdl3 ?>" />
  6801. -            <?php
  6802. -            } else { ?>
  6803. -                <p><?php echo "No records found";?></p>
  6804. -            <?php
  6805. -            }
  6806. -            ?>
  6807. -            
  6808. -        </form>
  6809. -    </div>
  6810. -<?php
  6811. -}
  6812. -?>
  6813. -
  6814. diff --git a/app/design/adminhtml/default/default/template/sales/items/column/name.phtml b/app/design/adminhtml/default/default/template/sales/items/column/name.phtml
  6815. index ce7ac31..61bb88b 100644
  6816. --- a/app/design/adminhtml/default/default/template/sales/items/column/name.phtml
  6817. +++ b/app/design/adminhtml/default/default/template/sales/items/column/name.phtml
  6818. @@ -34,8 +34,7 @@
  6819.      <h5 class="title"><span id="order_item_<?php echo $_item->getId() ?>_title"><?php echo $this->escapeHtml($_item->getName()) ?></span></h5>
  6820.      <div><strong><?php echo $this->helper('sales')->__('SKU') ?>:</strong> <?php echo implode('<br />', Mage::helper('catalog')->splitSku($this->escapeHtml($this->getSku()))).'<br/>'; ?>
  6821.  <?php
  6822. -//$prdt= Mage::getModel('catalog/product')->loadByAttribute('sku',$this->getSku());
  6823. -$prdt= Mage::getModel('catalog/product')->load($_item->getProductId());
  6824. +$prdt= Mage::getModel('catalog/product')->loadByAttribute('sku',$this->getSku());
  6825.  $delivery_details = $prdt->getDeliveryDetails();
  6826.  $ds= Mage::getModel('catalog/product')->getResource()->getAttribute("delivery_details");
  6827.  $basePrice = $_item->getTolexoBasePrice();
  6828. diff --git a/app/design/adminhtml/default/default/template/sales/order/view/info.phtml b/app/design/adminhtml/default/default/template/sales/order/view/info.phtml
  6829. index 2040ddb..e53af3d 100644
  6830. --- a/app/design/adminhtml/default/default/template/sales/order/view/info.phtml
  6831. +++ b/app/design/adminhtml/default/default/template/sales/order/view/info.phtml
  6832. @@ -65,10 +65,6 @@ $orderStoreDate = $this->formatDate($_order->getCreatedAtStoreDate(), 'medium',
  6833.                  <td class="label"><label><?php echo Mage::helper('sales')->__('Purchased From') ?></label></td>
  6834.                  <td class="value"><strong><?php echo $this->getOrderStoreName() ?></strong></td>
  6835.              </tr>
  6836. -            <tr>
  6837. -                <td class="label"><label><?php echo Mage::helper('sales')->__('Order Tags') ?></label></td>
  6838. -                <td class="value"><strong><?php echo $this->getOrderTags() ?></strong></td>
  6839. -            </tr>
  6840.              <?php if($_order->getRelationChildId()): ?>
  6841.              <tr>
  6842.                  <td class="label"><label><?php echo Mage::helper('sales')->__('Link to the New Order') ?></label></td>
  6843. diff --git a/app/design/adminhtml/default/mageworks/template/export/export.phtml b/app/design/adminhtml/default/mageworks/template/export/export.phtml
  6844. index db37244..a518b6f 100644
  6845. --- a/app/design/adminhtml/default/mageworks/template/export/export.phtml
  6846. +++ b/app/design/adminhtml/default/mageworks/template/export/export.phtml
  6847. @@ -21,7 +21,11 @@ $downLoadCommentCsv = $parts[0] . '/' . $parts[1] . '/' . $parts[2] .'/download.
  6848.  $downLoadFullCancel = $parts[0] . '/' . $parts[1] . '/' . $parts[2] .'/download.php?q=sampleFullCancel';
  6849.  $cancelPartialOrderurl = $parts[0] . '/' . $parts[1] . '/' . $parts[2] .'/cancelPartialOrder.php';
  6850.  $downLoadPartialCancel = $parts[0] . '/' . $parts[1] . '/' . $parts[2] .'/download.php?q=samplePartialCancel';
  6851. -
  6852. +//$key1 = 'http://localhost/magento/miniOrderReport.php';
  6853. +//$reorderurl = 'http://localhost/magento/creatOrder.php';
  6854. +//$cancelFullOrderurl = 'http://localhost/magento/cancelBulkOrder.php';
  6855. +//$bulkCommentOrderurl = 'http://localhost/magento/bulkOrderComment.php';
  6856. +//$partialReorderurl = 'http://localhost/magento/createPartialOrder.php';
  6857.  ?>
  6858.                 <script type="text/javascript">
  6859.  //  jQuery.noConflict();
  6860. @@ -161,6 +165,7 @@ function Test1()
  6861.                         <button name="submit" onclick="Test()" value="submit" class="scalable add">
  6862.                                 Export Orders
  6863.                         </button>
  6864. +               <!--    <input type="button" name="submit" onclick="Test()" value="submit" class="scalable add">-->
  6865.                         <a href='<?php echo $down?>' style="visibility:hidden;" id="abc">Download</a>
  6866.                 </li>
  6867.                  <li><p style="margin-top: 5px;">Click <a href="<?php echo $down2?>">here</a> to download last one month report directly.</p></li>
  6868. @@ -215,6 +220,7 @@ function Test1()
  6869.                  <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
  6870.                  <input type="file" name="fileToUpload" id="fileToUpload" />
  6871.                  <input type="submit" value="Upload & Reorder" />
  6872. +                <!--<button name="uploadReorderCSV" id="uploadReorderCSV" value="" class="scalable add">Upload & Reorder</button>-->
  6873.              </form>
  6874.          </li><br/>
  6875.          <span>4.3 &nbsp;<?php echo $this->__('Upload & Partial Reorder In Case Of Vendor Change'); ?></span>
  6876. @@ -223,28 +229,9 @@ function Test1()
  6877.                  <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
  6878.                  <input type="file" name="fileToUploadPartial" id="fileToUploadPartial" />
  6879.                  <input type="submit" value="Upload & Partial Reorder" />
  6880. +                <!--<button name="uploadReorderCSV" id="uploadReorderCSV" value="" class="scalable add">Upload & Reorder</button>-->
  6881.              </form>
  6882.          </li><br/>
  6883. -        
  6884. -        <span>4.4 &nbsp;<?php echo $this->__('Upload & Reorder In Case Of Multi Vendor Change'); ?></span>
  6885. -        <li>
  6886. -            <form method="post" id="uploadFormMultiSeller" action="<?php echo $reorderurl;?>" enctype="multipart/form-data">
  6887. -                <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
  6888. -                <input type="hidden" name="multi_seller" value="1" />
  6889. -                <input type="file" name="fileToUpload" id="fileToUpload" />
  6890. -                <input type="submit" value="Upload & Reorder" />
  6891. -            </form>
  6892. -        </li><br/>
  6893. -        <span>4.5 &nbsp;<?php echo $this->__('Upload & Partial Reorder In Case Of Multi Vendor Change'); ?></span>
  6894. -        <li>
  6895. -            <form method="post" id="uploadFormPartialMultiSeller" action="<?php echo $partialReorderurl;?>" enctype="multipart/form-data">
  6896. -                <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
  6897. -                <input type="hidden" name="multi_seller" value="1" />
  6898. -                <input type="file" name="fileToUploadPartial" id="fileToUploadPartial" />
  6899. -                <input type="submit" value="Upload & Partial Reorder" />
  6900. -            </form>
  6901. -        </li><br/>
  6902. -        
  6903.          <li>
  6904.              <b>Steps and checks for order update:</b><br>
  6905.  
  6906. diff --git a/app/design/frontend/base/default/template/catalog/msrp/popup.phtml b/app/design/frontend/base/default/template/catalog/msrp/popup.phtml
  6907. index 8cd7a52..e09fffe 100644
  6908. --- a/app/design/frontend/base/default/template/catalog/msrp/popup.phtml
  6909. +++ b/app/design/frontend/base/default/template/catalog/msrp/popup.phtml
  6910. @@ -49,10 +49,7 @@
  6911.          <div class="map-popup-price" id="map-popup-price-box"><strong><?php echo $this->__('Actual Price'); ?>:</strong> <span id="map-popup-price"></span></div>
  6912.          <script type="text/javascript">
  6913.          //<![CDATA[
  6914. -            if(typeof(Catalog) != "undefined" && Catalog !== null) {
  6915. -                document.observe("dom:loaded", Catalog.Map.bindProductForm);
  6916. -            }
  6917. -            
  6918. +            document.observe("dom:loaded", Catalog.Map.bindProductForm);
  6919.          //]]>
  6920.          </script>
  6921.      </div>
  6922. diff --git a/app/design/frontend/base/default/template/checkout/cart/coupon.phtml b/app/design/frontend/base/default/template/checkout/cart/coupon.phtml
  6923. index a3be465..12399ee 100644
  6924. --- a/app/design/frontend/base/default/template/checkout/cart/coupon.phtml
  6925. +++ b/app/design/frontend/base/default/template/checkout/cart/coupon.phtml
  6926. @@ -26,27 +26,8 @@
  6927.  ?>
  6928.  <form id="discount-coupon-form" action="<?php echo $this->getUrl('checkout/cart/couponPost') ?>" method="post">
  6929.      <div class="discount">
  6930. -        <!-- <h2><?php echo $this->__('Coupon Code') ?></h2> -->
  6931. -
  6932. -
  6933. -            <input type="hidden" name="remove" id="remove-coupone" value="0" />
  6934. -            <div class="input-box">
  6935. -                <span class="feature-icn"></span>
  6936. -                <input class="input-text place-icn common-sprite" id="coupon_code" name="coupon_code" value="<?php echo $this->escapeHtml($this->getCouponCode()) ?>" placeholder="Apply Discount coupon" />
  6937. -                <div class="buttons-set">
  6938. -                <button type="button" title="<?php echo $this->__('Apply Coupon') ?>" class="button" onclick="discountForm.submit(false)" value="<?php echo $this->__('Apply Coupon') ?>"><span><span><?php echo $this->__('Apply') ?></span></span></button>
  6939. -              
  6940. -            </div>
  6941. -             <?php if(strlen($this->getCouponCode())): ?>
  6942. -                    <button type="button" title="<?php echo $this->__('Remove Coupon') ?>" class="button rmv-cupn" onclick="discountForm.submit(true)" value="<?php echo $this->__('Remove Coupon') ?>"><span><span><?php echo $this->__('Remove Coupon') ?></span></span></button>
  6943. -                <?php endif;?>
  6944. -            </div>
  6945. -            <!-- <div class="rmv-cupn"><a href="javascript:void(0);">Remove Coupon</a></div> -->
  6946. -            
  6947. -             <!-- <label for="coupon_code"><?php echo $this->__('Enter your coupon code here') ?></label> -->
  6948. -           <!--  <div class="login-msg">*Applicable only for logged-in users. <a href="<?php echo $this->getUrl('customer/account/login'); ?>">Login here</a></div> -->
  6949. -
  6950. -        <!-- <div class="discount-form" style="display:block">
  6951. +        <h2><?php echo $this->__('Coupon Code') ?></h2>
  6952. +        <div class="discount-form" style="display:block">
  6953.              <label for="coupon_code"><?php echo $this->__('Enter your coupon code here') ?></label>
  6954.              <span style="margin-top: 5px;display: inline-block;font-size: 12px;">(Applicable only for logged-in users)</span>
  6955.              <input type="hidden" name="remove" id="remove-coupone" value="0" />
  6956. @@ -59,9 +40,7 @@
  6957.                      <button type="button" title="<?php echo $this->__('Cancel Coupon') ?>" class="button" onclick="discountForm.submit(true)" value="<?php echo $this->__('Cancel Coupon') ?>"><span><span><?php echo $this->__('Cancel Coupon') ?></span></span></button>
  6958.                  <?php endif;?>
  6959.              </div>
  6960. -
  6961. -
  6962. -        </div> -->
  6963. +        </div>
  6964.      </div>
  6965.  </form>
  6966.  <script type="text/javascript">
  6967. diff --git a/app/design/frontend/base/default/template/checkout/multishipping/overview.phtml b/app/design/frontend/base/default/template/checkout/multishipping/overview.phtml
  6968. index 1695c74..be11aff 100644
  6969. --- a/app/design/frontend/base/default/template/checkout/multishipping/overview.phtml
  6970. +++ b/app/design/frontend/base/default/template/checkout/multishipping/overview.phtml
  6971. @@ -195,13 +195,12 @@
  6972.                  <div class="place-order">
  6973.                      <div class="grand-total">
  6974.                          <div class="inner">
  6975. -                              <big><?php echo $this->__('Grand Total:') ?> <?php echo $this->helper('checkout')->formatPrice($this->getTotal()) ?></big>
  6976. -                          
  6977. -                        </div>
  6978. -                    </div>
  6979. -                     <div id="review-buttons-container">
  6980. +                            <big><?php echo $this->__('Grand Total:') ?> <?php echo $this->helper('checkout')->formatPrice($this->getTotal()) ?></big>
  6981. +                            <div id="review-buttons-container">
  6982.                                  <button type="submit" title="<?php echo $this->__('Place Order') ?>" class="button btn-checkout" id="review-button"><span><span><?php echo $this->__('Place Order') ?></span></span></button>
  6983.                              </div>
  6984. +                        </div>
  6985. +                    </div>
  6986.                      <span class="please-wait" id="review-please-wait" style="display:none;">
  6987.                          <img src="<?php echo $this->getSkinUrl('images/opc-ajax-loader.gif') ?>" alt="<?php echo $this->__('Submitting order information...') ?>" title="<?php echo $this->__('Submitting order information...') ?>" class="v-middle" /> <?php echo $this->__('Submitting order information...') ?>
  6988.                      </span>
  6989. diff --git a/app/design/frontend/base/default/template/checkout/onepage/link.phtml b/app/design/frontend/base/default/template/checkout/onepage/link.phtml
  6990. index cca3429..fc6beb6 100644
  6991. --- a/app/design/frontend/base/default/template/checkout/onepage/link.phtml
  6992. +++ b/app/design/frontend/base/default/template/checkout/onepage/link.phtml
  6993. @@ -24,15 +24,6 @@
  6994.   * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  6995.   */
  6996.  ?>
  6997. -<script>
  6998. -jQuery(document).ready(function(){
  6999. -       jQuery('.btn-proceed-checkout').click(function() {
  7000. -        jQuery('.proceed-txt').hide();
  7001. -        jQuery('.checkout-loader').css('display', 'block');      
  7002. -    });
  7003. -});   
  7004. -</script>
  7005.  <?php if ($this->isPossibleOnepageCheckout()):?>
  7006. -    <button type="button" title="<?php echo $this->__('Proceed to Checkout') ?>" class="button btn-proceed-checkout btn-checkout<?php if ($this->isDisabled()):?> no-checkout<?php endif; ?>"<?php if ($this->isDisabled()):?> disabled="disabled"<?php endif; ?> onclick="window.location='<?php echo $this->getCheckoutUrl() ?>'; setLayerData('CartPage', 'Cart Page', 'Proceed To Checkout', 'Proceed To Checkout'); onCheckoutOption(1, 'Proceed To Checkout');"><span><span class="proceed-txt"><?php echo $this->__('Proceed to Checkout') ?></span> <i class="checkout-loader"></i></span></button>
  7007. +    <button type="button" title="<?php echo $this->__('Proceed to Checkout') ?>" class="button btn-proceed-checkout btn-checkout<?php if ($this->isDisabled()):?> no-checkout<?php endif; ?>"<?php if ($this->isDisabled()):?> disabled="disabled"<?php endif; ?> onclick="window.location='<?php echo $this->getCheckoutUrl() ?>'; setLayerData('CartPage', 'Cart Page', 'Proceed To Checkout', 'Proceed To Checkout'); onCheckoutOption(1, 'Proceed To Checkout');"><span><span><?php echo $this->__('Proceed to Checkout') ?></span></span></button>
  7008.  <?php endif?>
  7009. -
  7010. diff --git a/app/design/frontend/base/default/template/sales/order/history.phtml b/app/design/frontend/base/default/template/sales/order/history.phtml
  7011. index 0d3f921..da28770 100755
  7012. --- a/app/design/frontend/base/default/template/sales/order/history.phtml
  7013. +++ b/app/design/frontend/base/default/template/sales/order/history.phtml
  7014. @@ -61,7 +61,7 @@
  7015.              <td><em><?php echo $_order->getStatusLabel() ?></em></td>
  7016.              <td class="a-center">
  7017.                  <span class="nobr"><a href="<?php echo $this->getViewUrl($_order) ?>"><?php echo $this->__('View Order') ?></a>
  7018. -                    <span class="separator">| </span> <a href="<?php echo Mage::getUrl('trackorder/index/detail/').'orderId/'.$_order->getRealOrderId(); ?>"><?php echo $this->__('Track Order') ?></a>
  7019. +                    <?php /*<span class="separator">|</span><a href="<?php echo $this->getTrackUrl($_order) ?>"><?php echo $this->__('Track Order') ?></a>&nbsp;*/ ?>
  7020.                      <?php if ($this->helper('sales/reorder')->canReorder($_order)) : ?>
  7021.                      <span class="separator">|</span> <a href="<?php echo $this->getReorderUrl($_order) ?>" class="link-reorder"><?php echo $this->__('Reorder') ?></a>
  7022.                  <?php endif ?>
  7023. @@ -79,7 +79,7 @@
  7024.              <td><em><?php echo $_order->getStatusLabel() ?></em></td>
  7025.              <td class="a-center">
  7026.                  <span class="nobr"><a href="<?php echo $this->getViewUrl($_order) ?>"><?php echo $this->__('View Order') ?></a>
  7027. -                    <span class="separator">| </span> <a href="<?php echo Mage::getUrl('trackorder/index/detail/').'orderId/'.$_order->getRealOrderId(); ?>"><?php echo $this->__('Track Order') ?></a>
  7028. +                    <?php /*<span class="separator">|</span><a href="<?php echo $this->getTrackUrl($_order) ?>"><?php echo $this->__('Track Order') ?></a>&nbsp;*/ ?>
  7029.                      <?php if ($this->helper('sales/reorder')->canReorder($_order)) : ?>
  7030.                      <span class="separator">|</span> <a href="<?php echo $this->getReorderUrl($_order) ?>" class="link-reorder"><?php echo $this->__('Reorder') ?></a>
  7031.                  <?php endif ?>
  7032. diff --git a/app/design/frontend/base/default/template/sales/order/recent.phtml b/app/design/frontend/base/default/template/sales/order/recent.phtml
  7033. index 4134ed2..015f43b 100755
  7034. --- a/app/design/frontend/base/default/template/sales/order/recent.phtml
  7035. +++ b/app/design/frontend/base/default/template/sales/order/recent.phtml
  7036. @@ -61,7 +61,6 @@
  7037.                      <td class="a-center">
  7038.                          <span class="nobr">
  7039.                          <a href="<?php echo $this->getViewUrl($_order) ?>"><?php echo $this->__('View Order') ?></a>
  7040. -                        <span class="separator">| </span> <a href="<?php echo Mage::getUrl('trackorder/index/detail/').'orderId/'.$_order->getRealOrderId(); ?>"><?php echo $this->__('Track Order') ?></a>
  7041.                          <?php if ($this->helper('sales/reorder')->canReorder($_order)) : ?>
  7042.                              <span class="separator">|</span> <a href="<?php echo $this->getReorderUrl($_order) ?>" class="link-reorder"><?php echo $this->__('Reorder') ?></a>
  7043.                          <?php endif ?>
  7044. @@ -80,7 +79,6 @@
  7045.                      <td class="a-center">
  7046.                          <span class="nobr">
  7047.                          <a href="<?php echo $this->getViewUrl($_order) ?>"><?php echo $this->__('View Order') ?></a>
  7048. -                        <span class="separator">| </span> <a href="<?php echo Mage::getUrl('trackorder/index/detail/').'orderId/'.$_order->getRealOrderId(); ?>"><?php echo $this->__('Track Order') ?></a>
  7049.                          <?php if ($this->helper('sales/reorder')->canReorder($_order)) : ?>
  7050.                              <span class="separator">|</span> <a href="<?php echo $this->getReorderUrl($_order) ?>" class="link-reorder"><?php echo $this->__('Reorder') ?></a>
  7051.                          <?php endif ?>
  7052. diff --git a/app/design/frontend/smartwave/default/template/smartwave/megamenu/html/mobilemenu.phtml b/app/design/frontend/smartwave/default/template/smartwave/megamenu/html/mobilemenu.phtml
  7053. index c2b2b72..21d3b66 100644
  7054. --- a/app/design/frontend/smartwave/default/template/smartwave/megamenu/html/mobilemenu.phtml
  7055. +++ b/app/design/frontend/smartwave/default/template/smartwave/megamenu/html/mobilemenu.phtml
  7056. @@ -1,4 +1,5 @@
  7057.  <?php
  7058. +
  7059.  /*
  7060.  <?php $menuHelper = Mage::helper('megamenu'); ?>
  7061.  <div class="mobile-nav side-block container">
  7062. @@ -10,4 +11,4 @@
  7063.      </div>
  7064.  </div>
  7065.  */
  7066. -?>
  7067. +?>
  7068. \ No newline at end of file
  7069. diff --git a/app/design/frontend/smartwave/default/template/smartwave/megamenu/html/topmenu.phtml b/app/design/frontend/smartwave/default/template/smartwave/megamenu/html/topmenu.phtml
  7070. index 2e4f37f..059b467 100644
  7071. --- a/app/design/frontend/smartwave/default/template/smartwave/megamenu/html/topmenu.phtml
  7072. +++ b/app/design/frontend/smartwave/default/template/smartwave/megamenu/html/topmenu.phtml
  7073. @@ -1,4 +1,5 @@
  7074.  <?php
  7075. +
  7076.  if( $_SERVER['SERVER_NAME'] == "localhost" || $_SERVER['SERVER_NAME'] == "tolexo.cb.local" ){
  7077.    $navigationUrl = "http://localhost:1337/v2/sails-navigation"; // For localhost
  7078.    $navigationFileLocation = ""; // For localhost
  7079. @@ -11,6 +12,7 @@ if( $_SERVER['SERVER_NAME'] == "localhost" || $_SERVER['SERVER_NAME'] == "tolexo
  7080.  }
  7081.  $navigationFileName = $navigationFileLocation."navigation.txt";
  7082.  $cacheLife = '21600'; //caching time, in seconds
  7083. +
  7084.  $nav_ch = curl_init();
  7085.  curl_setopt($nav_ch, CURLOPT_URL, $navigationUrl);
  7086.  curl_setopt($nav_ch, CURLOPT_RETURNTRANSFER, 1);
  7087. @@ -18,6 +20,7 @@ curl_setopt($nav_ch, CURLOPT_CONNECTTIMEOUT_MS ,80);
  7088.  curl_setopt($nav_ch, CURLOPT_TIMEOUT_MS, 100);
  7089.  $naviagtionBlock = curl_exec($nav_ch);
  7090.  $code = curl_getinfo($nav_ch, CURLINFO_HTTP_CODE);
  7091. +
  7092.  if($code == 200 && !curl_errno($nav_ch))
  7093.  {
  7094.    $filemtime = @filemtime($navigationFileName);
  7095. @@ -29,4 +32,6 @@ if($code == 200 && !curl_errno($nav_ch))
  7096.  }
  7097.  curl_close($nav_ch);
  7098.  echo $naviagtionBlock;
  7099. +
  7100. +
  7101.  ?>
  7102. diff --git a/app/design/frontend/smartwave/porto/layout/trackorder.xml b/app/design/frontend/smartwave/porto/layout/trackorder.xml
  7103. index 34d51f5..06b61f9 100644
  7104. --- a/app/design/frontend/smartwave/porto/layout/trackorder.xml
  7105. +++ b/app/design/frontend/smartwave/porto/layout/trackorder.xml
  7106. @@ -6,20 +6,32 @@
  7107.          </reference>
  7108.      </default>
  7109.      <trackorder_index_index>
  7110. +        <reference name="head">
  7111. +            <action method="addCss" ><stylesheet>trackorder/css/trackorder.css</stylesheet></action>
  7112. +        </reference>
  7113.          <reference name="root">
  7114. +            <!--<action method="setTemplate"><template>page/2columns-left.phtml</template></action>-->
  7115.              <action method="setTemplate"><template>page/1column.phtml</template></action>
  7116.              <action method="setHeaderTitle" translate="title" module="trackorder"><title>Track Your Order</title></action>
  7117.          </reference>
  7118.          <reference name="content">
  7119.              <block type="trackorder/trackorder" name="trackorder" template="trackorder/trackorder.phtml" />
  7120. +            <!--<block type="trackorder/trackorder" name="customer_login" template="trackorder/login.phtml"/>-->
  7121.          </reference>
  7122.      </trackorder_index_index>
  7123. -    <trackorder_index_detail>
  7124. -        <reference name="root">
  7125. -            <action method="setTemplate"><template>page/1column.phtml</template></action>
  7126. -        </reference>
  7127. +    <!--<trackorder_index_track>
  7128.          <reference name="content">
  7129. -            <block type="trackorder/trackorder" name="trackdetail" template="trackorder/trackdetail.phtml"/>        
  7130. +            <block type="trackorder/trackorder" name="root" output="toHtml" template="trackorder/trackdetail.phtml">
  7131. +
  7132. +            </block>
  7133.          </reference>
  7134. +    </trackorder_index_track>-->
  7135. +    <trackorder_index_detail>
  7136. +       <reference name="root">
  7137. +           <action method="setTemplate"><template>page/1column.phtml</template></action>
  7138. +       </reference>
  7139. +       <reference name="content">
  7140. +           <block type="trackorder/trackorder" name="trackdetail" template="trackorder/trackdetail.phtml"/>           
  7141. +       </reference>
  7142.      </trackorder_index_detail>
  7143.  </layout>
  7144. diff --git a/app/design/frontend/smartwave/porto/template/catalog/product/list/toolbar.phtml b/app/design/frontend/smartwave/porto/template/catalog/product/list/toolbar.phtml
  7145. index b64caf4..b3643f4 100644
  7146. --- a/app/design/frontend/smartwave/porto/template/catalog/product/list/toolbar.phtml
  7147. +++ b/app/design/frontend/smartwave/porto/template/catalog/product/list/toolbar.phtml
  7148. @@ -39,7 +39,7 @@
  7149.              <?php echo $this->getPagerHtml() ?>
  7150.          </div>
  7151.          <div class="limiter">
  7152. -            <label><?php echo $this-> getTotalNum().''. $this->__(' Items | Show') ?>:</label>
  7153. +            <label><?php echo $this->__('Show') ?>:</label>
  7154.              <select onchange="setLayerData('CategoryPage', 'Category Page', this, 'No of Products Displayed'); setLocation(this.value)">
  7155.              <?php foreach ($this->getAvailableLimit() as  $_key=>$_limit): ?>
  7156.                  <option value="<?php echo $this->getLimitUrl($_key) ?>"<?php if($this->isLimitCurrent($_key)): ?> selected="selected"<?php endif ?>>
  7157. diff --git a/app/design/frontend/smartwave/porto/template/catalog/product/view.phtml b/app/design/frontend/smartwave/porto/template/catalog/product/view.phtml
  7158. index 086081b..79d7f71 100644
  7159. --- a/app/design/frontend/smartwave/porto/template/catalog/product/view.phtml
  7160. +++ b/app/design/frontend/smartwave/porto/template/catalog/product/view.phtml
  7161. @@ -501,24 +501,10 @@
  7162.          </td>
  7163.          <td>
  7164.            <?php if($product->isInStock()): ?>
  7165. -       <script>
  7166. -                if(mobileDevice) {
  7167. -                  document.write("<form action='<?php echo $this->getAddToCartUrl($product); ?>' method='post'>");
  7168. -                } else {
  7169. -                  document.write("<form action='javascript:void(0)' method='post'>");
  7170. -                }
  7171. -                </script>
  7172. -            
  7173. -                <input type="text"  value="1" name="qty" id="add_qty_<?php echo $_product->getId();?>" />
  7174. -
  7175. -                <script>
  7176. -                if(mobileDevice) {
  7177. -                document.write("<button class='button btn-cart' onclick=\"return buyProduct('<?php echo $_product->getSku(); ?>', 'CSKU_BUY', 'add_qty_<?php echo $_product->getId();?>'); \" ><span><span><?php echo $this->__('BUY')?></span></span></button>");
  7178. -                } else {
  7179. -                  document.write("<input type = 'button' id = 'simple_prod_buy' class='button btn-cart' value=\"<?php echo $this->__('BUY');?>\" onclick=\"return ajaxCartAdd('<?php echo $_product->getSku(); ?>', 'CSKU_BUY', 'add_qty_<?php echo $_product->getId();?>','<?php echo $this->getAddToCartUrl($product); ?>',this); \" />");
  7180. -                }
  7181. -        </script>
  7182. -
  7183. +        
  7184. +      <form action="<?php echo $this->getAddToCartUrl($product); ?>" method="post">
  7185. +        <input type="text"  value="1" name="qty" id="add_qty"/>
  7186. +                   <button class="button btn-cart" onclick="return buyProduct('<?php echo $_product->getSku(); ?>', 'CSKU_BUY', 'add_qty');" ><span><span><?php echo $this->__('BUY')?></span></span></button>
  7187.          <span class="button btn-loader">
  7188.            <img src="<?php echo $this->getSkinUrl('images/loader.gif') ?>" data-src="<?php echo $this->getSkinUrl('images/loader.gif') ?>" alt="<?php echo $this->__('Please wait...') ?>" title="<?php echo $this->__('Please wait...') ?>" class="v-middle" />
  7189.          </span>
  7190. diff --git a/app/design/frontend/smartwave/porto/template/catalog/product/view/type/options/configurable.phtml b/app/design/frontend/smartwave/porto/template/catalog/product/view/type/options/configurable.phtml
  7191. index c624ffc..13d79bf 100644
  7192. --- a/app/design/frontend/smartwave/porto/template/catalog/product/view/type/options/configurable.phtml
  7193. +++ b/app/design/frontend/smartwave/porto/template/catalog/product/view/type/options/configurable.phtml
  7194. @@ -158,23 +158,11 @@ $c = 0;
  7195.              </div>
  7196.              <?php if(round($_allowed_product->getStockItem()->getQty())>0 && $_allowed_product->isSaleable()){?>
  7197.              <div class="left qty-buy">
  7198. -            <script>
  7199. -                if(mobileDevice) {
  7200. -                  document.write("<form action='<?php echo $this->getAddToCartUrl($_allowed_product); ?>' method='post'>");
  7201. -                } else {
  7202. -                  document.write("<form action='javascript:void(0)' method='post'>");
  7203. -                }
  7204. -                </script>
  7205. -            
  7206. -                <input type="text"  value="1" name="qty" id="add_to_qty_<?php echo $_allowed_product->getId();?>" />
  7207. -                
  7208. -                <script>
  7209. -                if(mobileDevice) {
  7210. -                document.write("<button class='button btn-cart' target='vizury_iframe' onclick=\"return buyProduct('<?php echo $_allowed_product->getResource()->getAttribute('tsin')->getFrontend()->getValue($_allowed_product); ?>', 'PSKU_BUY', 'add_to_qty_<?php echo $_allowed_product->getId();?>'); \" ><span><span><?php echo $this->__('BUY')?></span></span></button>");
  7211. -                } else {
  7212. -                  document.write("<input type = 'button' class='button btn-cart' target='vizury_iframe' value=\"<?php echo $this->__('BUY');?>\" onclick=\"return ajaxCartAdd('<?php echo $_allowed_product->getResource()->getAttribute('tsin')->getFrontend()->getValue($_allowed_product); ?>', 'PSKU_BUY', 'add_to_qty_<?php echo $_allowed_product->getId();?>','<?php echo $this->getAddToCartUrl($_allowed_product); ?>',this); \" />");
  7213. -                }
  7214. -                </script>
  7215. +            <form action="<?php echo $this->getAddToCartUrl($_allowed_product); ?>" method="post">
  7216. +                <input type="text"  value="1" name="qty" id="add_to_qty" />
  7217. +                <button class="button btn-cart" target="vizury_iframe" onclick="return buyProduct('<?php echo $_allowed_product->getResource()->getAttribute('tsin')->getFrontend()->getValue($_allowed_product); ?>', 'PSKU_BUY', 'add_to_qty');">
  7218. +                    <span><span><?php echo $this->__('BUY')?></span></span>
  7219. +                </button>
  7220.                  <span class="button btn-loader">
  7221.                      <img src="<?php echo $this->getSkinUrl('images/loader.gif') ?>" data-src="<?php echo $this->getSkinUrl('images/loader.gif') ?>" alt="<?php echo $this->__('Please wait...') ?>" title="<?php echo $this->__('Please wait...') ?>" class="v-middle" />
  7222.                  </span>
  7223. @@ -227,6 +215,7 @@ $c = 0;
  7224.          var spConfig = new Product.Config(<?php echo $this->getJsonConfig() ?>);
  7225.      </script>
  7226.  <?php endif;?>
  7227. +
  7228.  <script type="text/javascript">
  7229.      var google_tag_params = {
  7230.      ecomm_prodid: '<?php echo $_product->getSku(); ?>',
  7231. @@ -266,7 +255,6 @@ function buyProduct(skutsin, ptype, elem) {
  7232.        return false;
  7233.    }
  7234.    gtmBuyProduct(skutsin, ptype, myqty);
  7235. -  return true;
  7236.  }
  7237.  </script>
  7238.  
  7239. diff --git a/app/design/frontend/smartwave/porto/template/checkout/cart.phtml b/app/design/frontend/smartwave/porto/template/checkout/cart.phtml
  7240. index 94a96f9..0970f7d 100644
  7241. --- a/app/design/frontend/smartwave/porto/template/checkout/cart.phtml
  7242. +++ b/app/design/frontend/smartwave/porto/template/checkout/cart.phtml
  7243. @@ -5,21 +5,11 @@
  7244.   * @see Mage_Checkout_Block_Cart
  7245.   */
  7246.  ?>
  7247. -<div class="cart main-cart">
  7248. +<div class="cart">
  7249.      <div class="page-title title-buttons">
  7250. -    <?php $cart = Mage::getSingleton('checkout/cart');
  7251. -    ?>
  7252. -        <h1><?php echo $this->__('Shopping Cart') ?>
  7253. -    
  7254. -        <span class="cart-item">
  7255. -            <?php $cartCount = $cart->getQuote()->getItemsCount();
  7256. -            echo "(".$cartCount;
  7257. -            echo ($cartCount <=1)? " Item)" : " Items)";?>
  7258. -        </span>
  7259. -        <input type = "hidden" id="cart-count" value="<?php echo $cartCount; ?>" />
  7260. -        </h1>
  7261. +        <h1><?php echo $this->__('Shopping Cart') ?></h1>
  7262.          <?php if(!$this->hasError()): ?>
  7263. -            <ul class="checkout-types close-check">
  7264. +            <ul class="checkout-types">
  7265.                  <?php foreach ($this->getMethods('top_methods') as $method): ?>
  7266.                      <?php if ($methodHtml = $this->getMethodHtml($method)): ?>
  7267.                          <li><?php echo $methodHtml; ?></li>
  7268. @@ -28,58 +18,50 @@
  7269.              </ul>
  7270.          <?php endif; ?>
  7271.      </div>
  7272. -
  7273. +    <?php echo $this->getMessagesBlock()->getGroupedHtml() ?>
  7274.      <div class="row">
  7275. -        <div class="col-sm-12">
  7276. +        <div class="col-sm-12 col-md-8 col-lg-9">
  7277.              <div class="cart-table-wrap">
  7278. -                <div class="scroll-tb">
  7279.                  <?php echo $this->getChildHtml('form_before') ?>
  7280. -        
  7281. -        <?php
  7282. -            $totals = $this->getQuote()->getTotals();
  7283. -            #Mage::log($totals["subtotal"]->getValue().' '.$totals["tax"]->getValue(),null,'tax.log');
  7284. -            if(Mage::getStoreConfig('carriers/tolexo_multistepcheckout/include_tax'))
  7285. -            {
  7286. -                    #$total_amount = $this->getQuote()->getSubtotalInclTax();
  7287. -                    $total_amount = $totals["subtotal"]->getValue() + round($totals["tax"]->getValue());
  7288. -            }
  7289. -            else
  7290. -            {
  7291. -                    #$total_amount = $this->getQuote()->getSubtotal();
  7292. -                    $total_amount = $totals["subtotal"]->getValue();
  7293. -            }
  7294. -            $minimum_order_amount = Mage::getStoreConfig('carriers/tolexo_multistepcheckout/minimum_order_amount');
  7295. -            $value = $minimum_order_amount - $total_amount;
  7296. -            ?>
  7297. -                </div>
  7298. -            
  7299. +              
  7300. +               <?php
  7301. +               $totals = $this->getQuote()->getTotals();
  7302. +               #Mage::log($totals["subtotal"]->getValue().' '.$totals["tax"]->getValue(),null,'tax.log');
  7303. +               if(Mage::getStoreConfig('carriers/tolexo_multistepcheckout/include_tax'))
  7304. +               {
  7305. +                       #$total_amount = $this->getQuote()->getSubtotalInclTax();
  7306. +                       $total_amount = $totals["subtotal"]->getValue() + round($totals["tax"]->getValue());
  7307. +               }
  7308. +               else
  7309. +               {
  7310. +                       #$total_amount = $this->getQuote()->getSubtotal();
  7311. +                       $total_amount = $totals["subtotal"]->getValue();
  7312. +               }
  7313. +               $minimum_order_amount = Mage::getStoreConfig('carriers/tolexo_multistepcheckout/minimum_order_amount');
  7314. +               $value = $minimum_order_amount - $total_amount;
  7315. +               ?>
  7316. +               <?php if($value > 0): ?>
  7317. +                       <div class="shipping-offer">
  7318. +                       <?php echo "Free Shipping! if total cart value amount is Rs. ".$minimum_order_amount." or above. You can buy products worth Rs. ".$value." or more to avail this discount." ?>
  7319. +                       </div>
  7320. +               <?php endif; ?>
  7321.  
  7322. -                    <form action="<?php echo $this->getUrl('checkout/cart/updatePost') ?>" method="post">
  7323. +                <form action="<?php echo $this->getUrl('checkout/cart/updatePost') ?>" method="post">
  7324.                      <?php echo $this->getBlockHtml('formkey'); ?>
  7325. -                    <fieldset class="cart-popup-scroll">
  7326. -                     <?php if($value > 0): ?>
  7327. -                    <div class="shipping-offer">
  7328. -                          <?php echo "Free Shipping! if total cart value amount is Rs. ".$minimum_order_amount." or above. You can buy products worth Rs. ".$value." or more to avail this discount." ?>
  7329. -                     </div>
  7330. -                    <?php endif; ?>
  7331. -                    <?php echo $this->getMessagesBlock()->getGroupedHtml() ?>
  7332. -                    <script>
  7333. -                    jQuery(".success-msg").delay(5000).slideUp(400);
  7334. -                    </script>
  7335. +                    <fieldset>
  7336.                          <table id="shopping-cart-table" class="data-table cart-table">
  7337. -
  7338.                              <?php $mergedCells = ($this->helper('tax')->displayCartBothPrices() ? 2 : 1); ?>
  7339.                              <thead>
  7340.                              <tr>
  7341. -                               <!--  <th rowspan="<?php echo $mergedCells; ?>">&nbsp;</th> -->
  7342. -                                <th rowspan="<?php echo $mergedCells; ?>" class="frst-wd">&nbsp;<div class="ajaxpro-spinner" style="display: none;"></div></th>
  7343. -                                <th rowspan="<?php echo $mergedCells; ?> " class="wid35 pro-name"><span class="nobr"><?php echo $this->__('Item') ?></span></th>
  7344. +                                <th rowspan="<?php echo $mergedCells; ?>">&nbsp;</th>
  7345. +                                <th rowspan="<?php echo $mergedCells; ?>">&nbsp;</th>
  7346. +                                <th rowspan="<?php echo $mergedCells; ?>"><span class="nobr"><?php echo $this->__('Product Name') ?></span></th>
  7347.                                  <?php if ($this->helper('wishlist')->isAllowInCart()) : ?>
  7348. -                                    <th rowspan="<?php echo $mergedCells; ?>" class="wid10"><span class="nobr"><?php echo $this->__('Move to Wishlist') ?></span></th>
  7349. +                                    <th rowspan="<?php echo $mergedCells; ?>"><span class="nobr"><?php echo $this->__('Move to Wishlist') ?></span></th>
  7350.                                  <?php endif ?>
  7351. -                                 <th rowspan="<?php echo $mergedCells; ?>" class="wid10"><?php echo $this->__('Qty') ?></th>
  7352. -                                <th colspan="<?php echo $mergedCells; ?>" class="wid10"><span class="nobr"><?php echo $this->__('Unit Price') ?></span></th>
  7353. -                                <th class="last wid10" colspan="<?php echo $mergedCells; ?>"><?php echo $this->__('Subtotal') ?></th>
  7354. +                                <th colspan="<?php echo $mergedCells; ?>"><span class="nobr"><?php echo $this->__('Unit Price') ?></span></th>
  7355. +                                <th rowspan="<?php echo $mergedCells; ?>"><?php echo $this->__('Qty') ?></th>
  7356. +                                <th class="last" colspan="<?php echo $mergedCells; ?>"><?php echo $this->__('Subtotal') ?></th>
  7357.                              </tr>
  7358.                              <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
  7359.                                  <tr>
  7360. @@ -91,13 +73,40 @@
  7361.                              <?php endif; ?>
  7362.                              </thead>
  7363.                              <tfoot>
  7364. -                                
  7365. +                            <tr>
  7366. +                                <td colspan="50" class="a-right">
  7367. +                                    <?php if($this->getContinueShoppingUrl()): ?>
  7368. +                                        <button type="button" title="<?php echo $this->__('Continue Shopping') ?>" class="button btn-continue" onclick="setLayerData('CartPage', 'Cart Page', 'Continue Shopping', 'Continue Shopping'); setLocation('<?php echo $this->getUrl('') ?>');"><span><span><?php echo $this->__('Continue Shopping') ?></span></span></button>
  7369. +                                    <?php endif; ?>
  7370. +                                    <button type="submit" name="update_cart_action" value="update_qty" title="<?php echo $this->__('Update Shopping Cart'); ?>" class="button btn-update" onclick="setLayerData('CartPage', 'Cart Page', 'Update Shopping Cart', 'Update Shopping Cart');"><span><span><?php echo $this->__('Update Shopping Cart'); ?></span></span></button>
  7371. +                                    <button type="submit" name="update_cart_action" value="empty_cart" title="<?php echo $this->__('Clear Shopping Cart'); ?>" class="button btn-empty" id="empty_cart_button"><span><span><?php echo $this->__('Clear Shopping Cart'); ?></span></span></button>
  7372. +                                    <!--[if lt IE 8]>
  7373. +                                    <input type="hidden" id="update_cart_action_container" />
  7374. +                                    <script type="text/javascript">
  7375. +                                        //<![CDATA[
  7376. +                                        Event.observe(window, 'load', function()
  7377. +                                        {
  7378. +                                            // Internet Explorer (lt 8) does not support value attribute in button elements
  7379. +                                            $emptyCartButton = $('empty_cart_button');
  7380. +                                            $cartActionContainer = $('update_cart_action_container');
  7381. +                                            if ($emptyCartButton && $cartActionContainer) {
  7382. +                                                Event.observe($emptyCartButton, 'click', function()
  7383. +                                                {
  7384. +                                                    $emptyCartButton.setAttribute('name', 'update_cart_action_temp');
  7385. +                                                    $cartActionContainer.setAttribute('name', 'update_cart_action');
  7386. +                                                    $cartActionContainer.setValue('empty_cart');
  7387. +                                                });
  7388. +                                            }
  7389. +
  7390. +                                        });
  7391. +                                    //]]>
  7392. +                                    </script>
  7393. +                                    <![endif]-->
  7394. +                                </td>
  7395. +                            </tr>
  7396.                              </tfoot>
  7397.                              <tbody>
  7398. -                            <?php
  7399. -                            $itemArray = $this->getItems();
  7400. -                            $itemArrayRev = array_reverse($itemArray,true);
  7401. -                            foreach($itemArrayRev as $_item): ?>
  7402. +                            <?php foreach($this->getItems() as $_item): ?>
  7403.                                  <?php echo $this->getItemHtml($_item) ?>
  7404.                              <?php endforeach ?>
  7405.                              </tbody>
  7406. @@ -120,45 +129,31 @@
  7407.                          </script>
  7408.                      </fieldset>
  7409.                  </form>
  7410. -                <div class="cart-collaterals">
  7411. -                    <?php /* Extensions placeholder */ ?>
  7412. -                    <?php echo $this->getChildHtml('checkout.cart.extra') ?>
  7413. -                    <?php echo $this->getChildHtml('coupon') ?>
  7414. -                    <?php if (!$this->getIsVirtual()): echo $this->getChildHtml('shipping'); endif; ?>
  7415. -                    <div class="totals">
  7416. -                        <!-- <h2><?php echo $this->__('Cart Totals') ?></h2> -->
  7417. -                        <div class="total-inner">
  7418. -                            <?php echo $this->getChildHtml('totals'); ?>
  7419. -                            
  7420. -                        </div>
  7421. +            </div>
  7422. +        </div>
  7423. +        <div class="col-sm-12 col-md-4 col-lg-3">
  7424. +            <div class="cart-collaterals">
  7425. +                <?php /* Extensions placeholder */ ?>
  7426. +                <?php echo $this->getChildHtml('checkout.cart.extra') ?>
  7427. +                <?php echo $this->getChildHtml('coupon') ?>
  7428. +                <?php if (!$this->getIsVirtual()): echo $this->getChildHtml('shipping'); endif; ?>
  7429. +                <div class="totals">
  7430. +                    <h2><?php echo $this->__('Cart Totals') ?></h2>
  7431. +                    <div>
  7432. +                        <?php echo $this->getChildHtml('totals'); ?>
  7433. +                        <?php if(!$this->hasError()): ?>
  7434. +                            <ul class="checkout-types">
  7435. +                                <?php foreach ($this->getMethods('methods') as $method): ?>
  7436. +                                    <?php if ($methodHtml = $this->getMethodHtml($method)): ?>
  7437. +                                        <li><?php echo $methodHtml; ?></li>
  7438. +                                    <?php endif; ?>
  7439. +                                <?php endforeach; ?>
  7440. +                            </ul>
  7441. +                        <?php endif; ?>
  7442.                      </div>
  7443. -                        <div class="checkout-continue-btn">
  7444. -                <ul class="checkout-types">
  7445. -                <?php if(!$this->hasError()) { ?>
  7446. -                        <?php foreach ($this->getMethods('methods') as $method): ?>
  7447. -                            <?php if ($methodHtml = $this->getMethodHtml($method)): ?>
  7448. -                                <li><?php echo $methodHtml; ?></li>
  7449. -                            <?php endif; ?>
  7450. -                        <?php endforeach; ?>
  7451. -                <?php } else { ?>
  7452. -                        <button type="button" title="<?php echo $this->__('Proceed to Checkout') ?>" class="button btn-proceed-checkout btn-checkout no-checkout" disabled="disabled"><span><span><?php echo $this->__('Proceed to Checkout') ?></span>
  7453. -                        </span>
  7454. -                        </button>
  7455. -                <?php } ?>
  7456. -                </ul>
  7457. -            <?php if($this->getContinueShoppingUrl()): ?>
  7458. -                <button type="button" title="<?php echo $this->__('Continue Shopping') ?>" class="button continue-btn" onclick="setLayerData('CartPage', 'Cart Page', 'Continue Shopping', 'Continue Shopping'); setLocation('<?php echo $this->getUrl('') ?>');"><span><span><?php echo $this->__('Continue Shopping') ?></span></span></button>
  7459. -            <?php endif; ?>
  7460. -
  7461. -                </div>
  7462.                  </div>
  7463. -                
  7464.              </div>
  7465.          </div>
  7466.      </div>
  7467.      <?php echo $this->getChildHtml('crosssell') ?>
  7468.  </div>
  7469. -<script>
  7470. -jQuery('ul.messages .error-msg').find('li').prepend('<span class="error-icn common-sprite"></span>');
  7471. -jQuery('ul.messages .success-msg').find('li').prepend('<span class="success-icn common-sprite"></span>');
  7472. -</script>
  7473. \ No newline at end of file
  7474. diff --git a/app/design/frontend/smartwave/porto/template/checkout/cart/item/default.phtml b/app/design/frontend/smartwave/porto/template/checkout/cart/item/default.phtml
  7475. index 57b99a0..c6d9dda 100644
  7476. --- a/app/design/frontend/smartwave/porto/template/checkout/cart/item/default.phtml
  7477. +++ b/app/design/frontend/smartwave/porto/template/checkout/cart/item/default.phtml
  7478. @@ -26,7 +26,6 @@
  7479.  ?>
  7480.  <?php
  7481.  $_item = $this->getItem();
  7482. -$item_id = $_item->getId();
  7483.  $isVisibleProduct = $_item->getProduct()->isVisibleInSiteVisibility();
  7484.  $canApplyMsrp = Mage::helper('catalog')->canApplyMsrp($_item->getProduct(), Mage_Catalog_Model_Product_Attribute_Source_Msrp_Type::TYPE_BEFORE_ORDER_CONFIRM);
  7485.  
  7486. @@ -35,42 +34,16 @@ $code  = $store->getCode();
  7487.  $aspect_ratio = Mage::getStoreConfig("porto_settings/category/aspect_ratio",$code);
  7488.  $ratio = ($aspect_ratio || (!$aspect_ratio && Mage::getStoreConfig("porto_settings/category/ratio_width",$code) == 0))?1:(Mage::getStoreConfig("porto_settings/category/ratio_height",$code)/Mage::getStoreConfig("porto_settings/category/ratio_width",$code));
  7489.  ?>
  7490. -<tr class="gry-bg">
  7491. -    <td class="pr-img-td"><?php if ($this->hasProductUrl()):?><a href="<?php echo $this->getProductUrl() ?>" title="<?php echo $this->htmlEscape($this->getProductName()) ?>" class="product-image"><?php endif;?><img src="//img.tolexokit.com/media/catalog/product<?php echo $_item->getProduct()->getSmallImage(); ?>?resize=1&q=95&w=38&h=50&zc=2" width="38" height="50" alt="<?php echo $this->htmlEscape($this->getProductName()) ?>" /><?php if ($this->hasProductUrl()):?></a><?php endif;?>
  7492. -        <a href="<?php echo $this->getDeleteUrl()?>" data-pid="<?php echo $_item->getId(); ?>" onclick="delCartProductsOption('<?php echo $_item->getId(); ?>')" title="<?php echo $this->__('Remove item')?>" class="cart-remove">Remove</a>
  7493. -    </td>
  7494. +<tr>
  7495. +    <td class="action-td"><a href="<?php echo $this->getDeleteUrl()?>" data-pid="<?php echo $_item->getId(); ?>" onclick="delCartProductsOption('<?php echo $_item->getId(); ?>')" title="<?php echo $this->__('Remove item')?>" class="btn-remove btn-remove2"></a></td>
  7496. +    <td class="pr-img-td"><?php if ($this->hasProductUrl()):?><a href="<?php echo $this->getProductUrl() ?>" title="<?php echo $this->htmlEscape($this->getProductName()) ?>" class="product-image"><?php endif;?><img src="//img.tolexokit.com/media/catalog/product<?php echo $_item->getProduct()->getSmallImage(); ?>?resize=1&q=95&w=38&h=50&zc=2" width="38" height="50" alt="<?php echo $this->htmlEscape($this->getProductName()) ?>" /><?php if ($this->hasProductUrl()):?></a><?php endif;?></td>
  7497.      <td class="product-name-td">
  7498.          <h2 class="product-name">
  7499. -        <?php
  7500. -        $pro = $this->getProduct();
  7501. -        $p = Mage::getModel('catalog/product')->load($pro->getId());
  7502. -        /**
  7503. -        * @added by Jasleen Kaur
  7504. -        * @Desc: Display vendor name
  7505. -        **/
  7506. -        $vendor_id = $p->getData('vendor_id');
  7507. -        $vendor = Mage::getModel('vendor_vendordirectory/vendors')->load($vendor_id);
  7508. -        
  7509. -        if($p->getTypeId()=='simple' && $p->getData('number_of_items') && $p->getAttributeText('number_of_items') > 1):
  7510. -            $attr_details = Mage::getModel('eav/entity_attribute')->loadByCode(Mage_Catalog_Model_Product::ENTITY, 'number_of_items');
  7511. -            if ($this->hasProductUrl()):?>
  7512. -                <a href="<?php echo $this->getProductUrl() ?>"><?php echo $this->htmlEscape(substr($this->getProductName(),0,100))."...".' </a>
  7513. -                <div class="pack">  Pack of '.$attr_details->getSource()->getOptionText($p->getData('number_of_items')).' </div>' ?>
  7514. -            <?php else:
  7515. -                echo $this->htmlEscape(substr($this->getProductName(),0,100))."...".'<div class="pack"> Pack of '.$attr_details->getSource()->getOptionText($_product->getData('number_of_items')).'</div>';
  7516. -            endif;
  7517. -        else:
  7518. -            if ($this->hasProductUrl()):?>
  7519. -                <a href="<?php echo $this->getProductUrl() ?>"><?php echo $this->htmlEscape(substr($this->getProductName(),0,100))."..." ?></a>
  7520. -            <?php else:
  7521. -            echo $this->htmlEscape(substr($this->getProductName(),0,100))."...";
  7522. -            endif;
  7523. -        endif; ?>
  7524. -        <?php
  7525. -        $vendorName = $vendor->getDisplayName();
  7526. -        if(!empty($vendorName)) { ?>
  7527. -        <div class="sold">Sold by: <strong><?php echo $vendorName; ?> </strong></div>
  7528. -        <?php } ?>
  7529. +        <?php if ($this->hasProductUrl()):?>
  7530. +            <a href="<?php echo $this->getProductUrl() ?>"><?php echo $this->htmlEscape($this->getProductName()) ?></a>
  7531. +        <?php else: ?>
  7532. +            <?php echo $this->htmlEscape($this->getProductName()) ?>
  7533. +        <?php endif; ?>
  7534.          </h2>
  7535.          <?php if ($_options = $this->getOptionList()):?>
  7536.          <dl class="item-options">
  7537. @@ -91,14 +64,9 @@ $ratio = ($aspect_ratio || (!$aspect_ratio && Mage::getStoreConfig("porto_settin
  7538.          </dl>
  7539.          <?php endif;?>
  7540.          <?php if ($messages = $this->getMessages()): ?>
  7541. -        <?php foreach ($messages as $message) {
  7542. -            if($message['type'] == "error") {
  7543. -                $error_qty[$item_id] = true;
  7544. -            }
  7545. -        ?>
  7546. +        <?php foreach ($messages as $message): ?>
  7547.              <p class="item-msg <?php echo $message['type'] ?>">* <?php echo $this->escapeHtml($message['text']) ?></p>
  7548. -
  7549. -        <?php } ?>
  7550. +        <?php endforeach; ?>
  7551.          <?php endif; ?>
  7552.          <?php $addInfoBlock = $this->getProductAdditionalInformationBlock(); ?>
  7553.          <?php if ($addInfoBlock): ?>
  7554. @@ -114,8 +82,8 @@ $ratio = ($aspect_ratio || (!$aspect_ratio && Mage::getStoreConfig("porto_settin
  7555.      <?php endif ?>
  7556.  
  7557.      <?php if ($canApplyMsrp): ?>
  7558. -        <td <?php if ($this->helper('tax')->displayCartBothPrices()): ?> colspan="2"<?php endif; ?>>
  7559. -            <span class="cart-price dark-gry-bg">
  7560. +        <td<?php if ($this->helper('tax')->displayCartBothPrices()): ?> colspan="2"<?php endif; ?>>
  7561. +            <span class="cart-price">
  7562.                  <span class="cart-msrp-unit"><?php echo $this->__('See price before order confirmation.'); ?></span>
  7563.                  <?php $helpLinkId = 'cart-msrp-help-' . $_item->getId(); ?>
  7564.                  <a id="<?php echo $helpLinkId ?>" href="#" class="map-help-link"><?php echo $this->__("What's this?"); ?></a>
  7565. @@ -127,19 +95,6 @@ $ratio = ($aspect_ratio || (!$aspect_ratio && Mage::getStoreConfig("porto_settin
  7566.      <?php else: ?>
  7567.  
  7568.          <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
  7569. -
  7570. -        <td>
  7571. -        <div class="qty-holder">
  7572. -            <a href="javascript:void(0)" class="table_qty_dec">-</a><input name="cart[<?php echo $_item->getId() ?>][qty]" value="<?php echo $this->getQty() ?>" size="4" title="<?php echo $this->__('Qty') ?>" class="input-text qty <?php echo !empty($error_qty[$item_id]) ? 'err-qty' : ''; ?>" maxlength="12" /><a href="javascript:void(0)" class="table_qty_inc">+</a>
  7573. -            <?php if ($isVisibleProduct): ?>
  7574. -                <a class="edit-qty" href="<?php echo $this->getConfigureUrl() ?>" title="<?php echo $this->__('Edit item parameters') ?>"><i class="icon-pencil"></i></a>
  7575. -            <?php endif ?>
  7576. -        </div>
  7577. -            <button type="submit" name="update_cart_action" value="update_qty" title="<?php echo $this->__('Update'); ?>" class="button btn-update" onclick="setLayerData('CartPage', 'Cart Page', 'Update', 'Update');"><span><span><?php echo $this->__('Update'); ?>
  7578. -            </span></span>
  7579. -            </button>
  7580. -          
  7581. -    </td>
  7582.          <td>
  7583.              <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
  7584.                  <span class="cart-tax-total" onclick="taxToggle('eunit-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');">
  7585. @@ -224,14 +179,14 @@ $ratio = ($aspect_ratio || (!$aspect_ratio && Mage::getStoreConfig("porto_settin
  7586.          </td>
  7587.          <?php endif; ?>
  7588.      <?php endif; ?>
  7589. -  <!-- <td>
  7590. +    <td>
  7591.          <div class="qty-holder">
  7592.              <a href="javascript:void(0)" class="table_qty_dec">-</a><input name="cart[<?php echo $_item->getId() ?>][qty]" value="<?php echo $this->getQty() ?>" size="4" title="<?php echo $this->__('Qty') ?>" class="input-text qty" maxlength="12" /><a href="javascript:void(0)" class="table_qty_inc">+</a>
  7593.              <?php if ($isVisibleProduct): ?>
  7594.                  <a class="edit-qty" href="<?php echo $this->getConfigureUrl() ?>" title="<?php echo $this->__('Edit item parameters') ?>"><i class="icon-pencil"></i></a>
  7595.              <?php endif ?>
  7596.          </div>
  7597. -    </td>-->
  7598. +    </td>
  7599.      <?php if (($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()) && !$_item->getNoSubtotal()): ?>
  7600.      <td class="td-total">
  7601.          <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?>
  7602. diff --git a/app/design/frontend/smartwave/porto/template/checkout/cart/minicart.phtml b/app/design/frontend/smartwave/porto/template/checkout/cart/minicart.phtml
  7603. index f230324..22e6651 100644
  7604. --- a/app/design/frontend/smartwave/porto/template/checkout/cart/minicart.phtml
  7605. +++ b/app/design/frontend/smartwave/porto/template/checkout/cart/minicart.phtml
  7606. @@ -1,10 +1,3 @@
  7607. -<div class="cart-overlay"></div>
  7608. -  <div class="cart-popUp">
  7609. -    <div id="cart-popup" class="cart-popup-ui"></div>
  7610. -        <small class="cart-close-bg">    
  7611. -            <span class="popUp-closexa  close-btn cart-popUp-close" title="Close"> X </span>
  7612. -        </small>
  7613. -</div>
  7614.  <div class="mini-cart">
  7615.      <?php
  7616.          $store = Mage::app()->getStore();
  7617. @@ -17,28 +10,7 @@
  7618.          $_subtotal = $this->helper('checkout')->formatPrice(Mage::getSingleton('checkout/cart')->getQuote()->getGrandTotal())
  7619.      ?>
  7620.      <?php $_items = $this->getRecentItems() ?>
  7621. -    <?php $cartUrl = $this->getUrl('checkout/cart'); ?>
  7622. -    <?php $currentUrl = Mage::helper('core/url')->getCurrentUrl(); ?>
  7623. -    <?php
  7624. -    if(!(strpos($currentUrl,"checkout/cart"))){
  7625. -    ?>
  7626. -    
  7627. -          <a id = "bag-icon" class="mybag-link" onclick="setLayerData('MiniCart', 'Top Links', 'Mini Cart Value - <?php echo $_cartQty ?>', 'Mini Cart');return viewCartItems('<?php echo $cartUrl ?>')">
  7628. -
  7629. -            <i class="icon-mini-cart"></i>
  7630. -            <span class="cart-info">
  7631. -                <span class="cart-qty">
  7632. -                    <?php echo $_cartQty ?>
  7633. -                </span>
  7634. -                <span>
  7635. -                    <?php echo $this->__('item(s)') ?>
  7636. -                </span>
  7637. -            </span>
  7638. -        </a>
  7639. -
  7640. -    <?php
  7641. -    }
  7642. -    ?>
  7643. +    <a href="<?php echo $this->getUrl('checkout/cart'); ?>" class="mybag-link" onclick="setLayerData('MiniCart', 'Top Links', 'Mini Cart Value - <?php echo $_cartQty ?>', 'Mini Cart');"><i class="icon-mini-cart"></i><span class="cart-info"><span class="cart-qty"><?php echo $_cartQty ?></span><span><?php echo $this->__('item(s)') ?></span></span></a>
  7644.          <div class="topCartContent block-content theme-border-color">
  7645.              <div class="inner-wrapper"><?php /*extra div to smooth slideUp and slideDown*/ ?>
  7646.                  <?php $_items = $this->getRecentItems() ?>
  7647. diff --git a/app/design/frontend/smartwave/porto/template/checkout/cart/noItems.phtml b/app/design/frontend/smartwave/porto/template/checkout/cart/noItems.phtml
  7648. index 9b4024d..4b5b8d3 100644
  7649. --- a/app/design/frontend/smartwave/porto/template/checkout/cart/noItems.phtml
  7650. +++ b/app/design/frontend/smartwave/porto/template/checkout/cart/noItems.phtml
  7651. @@ -24,45 +24,13 @@
  7652.   * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  7653.   */
  7654.  ?>
  7655. -<script>
  7656. -    jQuery(document).ready(function(){
  7657. -        jQuery('.col1-layout .continue-btn').on('click', function(){
  7658. -            setLocation('<?php echo $this->getUrl();?>');
  7659. -        });
  7660. -    });
  7661. -</script>
  7662. -
  7663. -<?php $menuHelper = Mage::helper('megamenu'); ?>
  7664. -<?php $categories = $menuHelper->getMenuCategories(); ?>
  7665. -
  7666. -<div class="page-title cart-empty-title">
  7667. -    <h1><?php echo $this->__('Shopping Cart') ?></h1>
  7668. +<div class="page-title">
  7669. +    <h1><?php echo $this->__('Shopping Cart is Empty') ?></h1>
  7670.  </div>
  7671. -<?php
  7672. -$cart = Mage::getSingleton('checkout/cart');
  7673. -$cartCount = $cart->getItemsCount();
  7674. -?>
  7675. -<input type = "hidden" id="cart-count" value="<?php echo $cartCount; ?>" />
  7676. -<div class="cart-empty cart-blank-pg">
  7677. -<div class="shoping-empty">Your Shopping Cart is empty!</div>
  7678. -<div class="pop-categary"> - POPULAR CATEGORIES - </div>
  7679. -<ul class="category-nm">
  7680. -    <?php
  7681. -    foreach($categories as $cname =>$cpath) {
  7682. -       if($cname == "View All Categories") {
  7683. -               continue;
  7684. -       }
  7685. -    ?>
  7686. -        <li>
  7687. -            <a href = "<?php echo Mage::getBaseUrl().$cpath ?>"><?php echo $this->__($cname); ?></a>
  7688. -       </li>
  7689. -
  7690. -    <?php
  7691. -    }
  7692. -    ?>
  7693. -</ul>  
  7694. -<?php if($this->getContinueShoppingUrl()): ?>
  7695. -                <button type="button" title="<?php echo $this->__('Continue Shopping') ?>" class="button continue-btn" onclick="setLayerData('CartPage', 'Cart Page', 'Continue Shopping', 'Continue Shopping');"><span><span><?php echo $this->__('Continue Shopping') ?></span></span></button>
  7696. -            <?php endif; ?>
  7697. +<div class="cart-empty">
  7698. +    <?php echo $this->getMessagesBlock()->getGroupedHtml() ?>
  7699. +    <?php echo $this->getChildHtml('checkout_cart_empty_widget'); ?>
  7700. +    <p><?php echo $this->__('You have no items in your shopping cart.') ?></p>
  7701. +    <p><?php echo $this->__('Click <a href="%s">here</a> to continue shopping.', $this->getUrl('')) ?></p>
  7702. +    <?php echo $this->getChildHtml('shopping.cart.table.after'); ?>
  7703.  </div>
  7704. -
  7705. diff --git a/app/design/frontend/smartwave/porto/template/checkout/onepage/review/info.phtml b/app/design/frontend/smartwave/porto/template/checkout/onepage/review/info.phtml
  7706. index ce70e9e..79eaa0b 100644
  7707. --- a/app/design/frontend/smartwave/porto/template/checkout/onepage/review/info.phtml
  7708. +++ b/app/design/frontend/smartwave/porto/template/checkout/onepage/review/info.phtml
  7709. @@ -59,10 +59,7 @@
  7710.          </thead>
  7711.          <?php echo $this->getChildHtml('totals'); ?>
  7712.          <tbody>
  7713. -        <?php
  7714. -        $itemArray = $this->getItems();
  7715. -        $itemArrayRev = array_reverse($itemArray,true);
  7716. -        foreach($itemArrayRev as $_item): ?>
  7717. +        <?php foreach($this->getItems() as $_item): ?>
  7718.              <?php echo $this->getItemHtml($_item)?>
  7719.          <?php endforeach ?>
  7720.          </tbody>
  7721. diff --git a/app/design/frontend/smartwave/porto/template/page/1column.phtml b/app/design/frontend/smartwave/porto/template/page/1column.phtml
  7722. index 8505fcc..1e5d636 100644
  7723. --- a/app/design/frontend/smartwave/porto/template/page/1column.phtml
  7724. +++ b/app/design/frontend/smartwave/porto/template/page/1column.phtml
  7725. @@ -29,7 +29,6 @@
  7726.   * Template for Mage_Page_Block_Html
  7727.   */
  7728.  ?>
  7729. -<?php if(!($this->getRequest()->isXmlHttpRequest())){?>
  7730.  <!DOCTYPE html>
  7731.  <!--[if lt IE 7 ]>
  7732.  <html lang="<?php echo $this->getLang() ?>" class="ie6 ie oldie">
  7733. @@ -64,9 +63,7 @@ html lang="<?php echo $this->getLang() ?>" class="ie-latest ie">
  7734.              <div class="main container">
  7735.                  <div class="col-main">
  7736.                      <?php echo $this->getChildHtml('global_messages') ?>
  7737. -                    <?php } ?>
  7738.                      <?php echo $this->getChildHtml('content') ?>
  7739. -<?php if(!($this->getRequest()->isXmlHttpRequest())){ ?>
  7740.                  </div>
  7741.              </div>
  7742.          </div>
  7743. @@ -78,4 +75,3 @@ html lang="<?php echo $this->getLang() ?>" class="ie-latest ie">
  7744.  <?php echo $this->getAbsoluteFooter() ?>
  7745.  </body>
  7746.  </html>
  7747. -<?php } ?>
  7748. diff --git a/app/design/frontend/smartwave/porto/template/page/2columns-left.phtml b/app/design/frontend/smartwave/porto/template/page/2columns-left.phtml
  7749. index 80c85c6..06d0e9e 100644
  7750. --- a/app/design/frontend/smartwave/porto/template/page/2columns-left.phtml
  7751. +++ b/app/design/frontend/smartwave/porto/template/page/2columns-left.phtml
  7752. @@ -33,18 +33,21 @@
  7753.      
  7754.      $labelH1    = "";
  7755.      $categoryDescription    = "";
  7756. -    $pageVal  = Mage::app()->getRequest()->getParam('p');
  7757. +    $categoryDescriptionFirst    = "";
  7758. +    $categoryDescriptionremain    = "";    
  7759.      $_category  = Mage::registry('current_category');
  7760. -    
  7761.      if($_category){
  7762.          if($_description=$_category->getDescription()){
  7763.              $categoryDescription    = strip_tags($_description);
  7764.          }
  7765.          if($_category->getName()){
  7766.              $labelH1                = $_category->getName();
  7767. -        }      
  7768. +        }
  7769. +        if($categoryDescription){
  7770. +            $categoryDescriptionFirst = substr($categoryDescription, 0, 200);
  7771. +            $categoryDescriptionremain = substr($categoryDescription, 200);
  7772. +        }
  7773.      }
  7774. -  
  7775.  ?>
  7776.  <!DOCTYPE html>
  7777.  <html lang="<?php echo $this->getLang() ?>">
  7778. @@ -102,17 +105,16 @@ html lang="en" class="ie-latest ie">
  7779.                  <div class="row">
  7780.                      <div class="col-main col-sm-9 f-right main-heading">
  7781.                          <?php if($labelH1){?>
  7782. -                            <h1><?php echo $labelH1 ?></h1>
  7783. +                            <h1><?php echo $labelH1; ?></h1>
  7784. +                             <div id="example" class="more-btn" >
  7785. +                                 <?php if($categoryDescriptionFirst){?>
  7786. +                                 <span><?php echo $categoryDescriptionFirst;?><?php if($categoryDescriptionremain){?><span id="spacer">&nbsp;</span><span id="example-show" class="showLink" onclick="showHide('example');return false;">more...</span></span><span id="remainContent" style="display:none"><?php echo $categoryDescriptionremain;?> <span  id="example-hide" class="showLink" onclick="showHide('example');return false;">less</span><?php }?></span>
  7787. +                                 <?php }?>
  7788. +                            </div>
  7789.                          <?php } ?>
  7790. -                        <div class="comment more"> </div>
  7791. +                        <div class="comment more"> </div>
  7792.                          <?php echo $this->getChildHtml('global_messages') ?>
  7793.                          <?php echo $this->getChildHtml('content') ?>
  7794. -                        <?php if($pageVal <= 1) {?>
  7795. -                            <div id="example" class="more-btn" >
  7796. -                                  <?php echo $categoryDescription ?>
  7797. -                            </div>
  7798. -                        <?php } ?>
  7799. -                          
  7800.                      </div>
  7801.                      <div class="col-left sidebar f-left col-sm-3">
  7802.                          <div class="filter-header">
  7803. diff --git a/app/design/frontend/smartwave/porto/template/trackorder/login.phtml b/app/design/frontend/smartwave/porto/template/trackorder/login.phtml
  7804. index ded1ab1..8c161bc 100644
  7805. --- a/app/design/frontend/smartwave/porto/template/trackorder/login.phtml
  7806. +++ b/app/design/frontend/smartwave/porto/template/trackorder/login.phtml
  7807. @@ -80,4 +80,4 @@
  7808.          var dataForm = new VarienForm('login-form', true);
  7809.      //]]>
  7810.      </script>
  7811. -</div>
  7812. \ No newline at end of file
  7813. +</div>
  7814. diff --git a/app/design/frontend/smartwave/porto/template/trackorder/trackdetail.phtml b/app/design/frontend/smartwave/porto/template/trackorder/trackdetail.phtml
  7815. index 8bfd229..af90362 100644
  7816. --- a/app/design/frontend/smartwave/porto/template/trackorder/trackdetail.phtml
  7817. +++ b/app/design/frontend/smartwave/porto/template/trackorder/trackdetail.phtml
  7818. @@ -1,256 +1,228 @@
  7819. -<style>
  7820. -.track_order {
  7821. -    border:1px solid #ddd; padding: 0px;
  7822. -}
  7823. -.mt20 {
  7824. -    margin-bottom: 20px;
  7825. -}
  7826. -.ptb5 {
  7827. -    padding-top: 5px;
  7828. -    padding-bottom: 5px;
  7829. -}
  7830. -.pt15 {
  7831. -    padding-top: 15px;
  7832. -}
  7833. -.orderDetails {
  7834. -    min-width:80px; display:inline-block; font-weight: bold;
  7835. -}
  7836. -.customerDetails {
  7837. -    background-color:#f5f5f5; padding: 10px;  border-left: 1px solid #ddd;
  7838. -}
  7839. -.customerDetails .header {
  7840. -    border-bottom: 1px solid #ddd; display: inline-block; width: 100%; padding: 5px; font-weight: bold;
  7841. -}
  7842. -tr.sub-header {
  7843. -    background-color:#fafafa;
  7844. -}
  7845. -.p5 {
  7846. -    padding:5px;
  7847. -}
  7848. -.order_complete {
  7849. -    color: #3c763d;
  7850. -}
  7851. -.order_pending {
  7852. -    color: #f00;
  7853. -}
  7854. -.customerDetails .header {
  7855. -    z-index:0;
  7856. -}
  7857. -.track-data-table thead th, .track-data-table tbody td {
  7858. -    padding:10px;
  7859. -}
  7860. -.track-data-table .col-sm-12, .col-sm-3, .col-sm-7, .col-sm-2 {
  7861. -    padding-left: 0;
  7862. -    padding-right: 0;
  7863. -}
  7864. -.track-products {
  7865. -    background-color:#fcfcfc;
  7866. -    font-weight:bold;
  7867. -}
  7868. -</style>
  7869. -
  7870. -
  7871.  <?php
  7872.  $order = $this->getTrackOrder();
  7873.  $shipTrack = array();
  7874. -
  7875. -$helper = Mage::helper('trackorder');
  7876. -
  7877. -if ($order) {
  7878. -    $shipTrack = $this->getTrackInfo($order);
  7879. -}
  7880. -
  7881. -if ($order->getStatusLabel()) { ?>
  7882. -    <div class="page-title title-buttons">
  7883. -        <h1><?php echo $this->__('Track Order'); ?></h1>
  7884. -    </div>
  7885. -
  7886. -    <div class="clearfix col-md-12 mt20 track_order">
  7887. -        <div class="col-md-8 pt15">
  7888. -            <div class="p5">
  7889. -                <span class="orderDetails">Order No</span>
  7890. -                <span> : </span>
  7891. -                <span><strong><?php echo $order->getIncrementId(); ?></strong></span>
  7892. -            </div>
  7893. -            <div class="p5">
  7894. -                <span class="orderDetails">Date</span>
  7895. -                <span> : </span>
  7896. -                <span><?php echo $order->getCreatedAtDate(); ?></span>
  7897. -            </div>
  7898. -            <div class="p5">
  7899. -                <span class="orderDetails">Order Status</span>
  7900. -                <span> : </span>
  7901. -                <span>
  7902. -                    <strong><?php
  7903. -                        if(preg_match('/pending_/i', $order->getStatus())) {
  7904. -                            $ordStatus = $helper->orderStatus('pending');
  7905. -                        } else {    
  7906. -                            $ordStatus = $helper->orderStatus(strtolower($order->getStatus()));
  7907. -                        }
  7908. -
  7909. -                        if(empty($ordStatus)) {
  7910. -                            $ordStatus = $order->getStatus();
  7911. -                        }
  7912. -                        echo $ordStatus;
  7913. -                     ?></strong>
  7914. -                </span>
  7915. -            </div>
  7916. -        </div>
  7917. -        <div class="col-md-4 customerDetails">
  7918. -            <div class="header">
  7919. -                Customer Details
  7920. -            </div>
  7921. -            <div class="fs12">
  7922. -                <div class="p5">
  7923. -                    <span class="orderDetails">Customer Name : </span>
  7924. -                    <span><?php echo $order->getCustomerFirstname()." ".$order->getCustomerLastname(); ?></span>
  7925. -                </div>
  7926. -                <div class="p5">
  7927. -                    <span class="orderDetails">Customer Email : </span>
  7928. -                    <span><?php echo $order->getCustomerEmail() ;?></span>
  7929. -                </div>
  7930. -            </div>
  7931. -        </div>
  7932. -    </div>
  7933. -
  7934. -
  7935. -    <div class="clearfix">
  7936. -    <?php
  7937. -    if(sizeof($shipTrack) > 0) {
  7938. -        $shipStr = '';
  7939. -        
  7940. -        foreach($shipTrack as $shipid => $_result) {
  7941. -
  7942. -            if(sizeof($_result) > 0) {
  7943. -                $shipRowStr = '';
  7944. -                
  7945. -                foreach($_result as $track) {
  7946. -
  7947. -                    if(isset($track['title']) && isset($track['track_number']) && $track['track_number'])
  7948. -                    {
  7949. -                        if($trackUrl = $helper->getTrackUrl($track['title'], $track['track_number'])) {
  7950. -                            $tUrl = '<a href="'.$trackUrl.'" onclick="this.target=\'_blank\'"><button class="btn btn-default">'.$this->__('Track Shipment').'</button></a>';
  7951. -                        } else {
  7952. -                            $tUrl = '<div class="order_pending ptb5">No tracking url found.</div>';
  7953. -                        }
  7954. -
  7955. -                        $shipRowStr .= '
  7956. -
  7957. -                        <table class="data-table track-data-table mt20">
  7958. -                        <thead>
  7959. -                            <tr class="sub-header">
  7960. -                                <td colspan="3">
  7961. -                                    <div class="col-sm-12">
  7962. -                                        <div class="col-sm-3 ptb5">
  7963. -                                            <h3>'.$this->__('AWB No: ').' <strong>'.$this->escapeHtml($track['track_number']).'</strong></h3>
  7964. -                                        </div>
  7965. -                                        <div class="col-sm-7 ptb5">
  7966. -                                            <h3>'.$this->__('Shipping Provider: ').' <strong> '.($track['title'] ? $this->escapeHtml($track['title']) : $this->__('N/A')).'</strong></h3>
  7967. -                                        </div>                                    
  7968. -                                        <div class="col-sm-2 text-right">'.$tUrl.'</div>
  7969. -                                    </div>
  7970. -                                </td>
  7971. -                            </tr>
  7972. -                        </thead>
  7973. -                        </tr>';
  7974. -
  7975. -                        if(isset($track['track_number']['products']) && count($track['track_number']['products']) > 0) {
  7976. -                            $shipRowStr .= '
  7977. -                            <tr class="track-products">
  7978. -                                <th>#</th>
  7979. -                                <th>Product Name</th>
  7980. -                                <th class="text-center">Qty</th>
  7981. -                            </tr>';
  7982. -                            $pCnt = 1;
  7983. -                            foreach($_result['products'] as $val) {
  7984. -                                $shipRowStr .= '   <tr>
  7985. -                                    <td>'.$pCnt++.'</td>
  7986. -                                    <td>'.$val['name'].'</td>
  7987. -                                    <td class="text-center">'.number_format($val['qty']).'</td>
  7988. -                                </tr>';
  7989. -                            }
  7990. -                        }
  7991. -
  7992. -                        $shipRowStr .= '</table>';
  7993. -                    }
  7994. -
  7995. -                } // end of foreach tracking information
  7996. -
  7997. -                $shipStr .= $shipRowStr;
  7998. -            } else {
  7999. -                //$shipStr .= '<tr><td colspan="3"><div class="col-md-12 error-msg">'.$this->__('There is no tracking available for this shipment.').'</div></td></tr>';
  8000. +        if ($order) {
  8001. +            $shipments = $order->getShipmentsCollection();
  8002. +            foreach ($shipments as $shipment){
  8003. +                $increment_id = $shipment->getIncrementId();
  8004. +                $tracks = $shipment->getTracksCollection();
  8005. +
  8006. +                $trackingInfos=array();
  8007. +                foreach ($tracks as $track){
  8008. +                    $trackingInfos[] = $track->getNumberDetail();
  8009. +                }
  8010. +                $shipTrack[$increment_id] = $trackingInfos;
  8011.              }
  8012. -
  8013. -        } // end of shipment loop
  8014. -
  8015. -        echo $shipStr.'';
  8016. -    } else {
  8017. -        echo '<div class="col-md-12 error-msg">'.$this->__('Your Order is not yet Dispatched.').'</div>';
  8018. -    }
  8019. -    ?>
  8020. -    </div>
  8021. -
  8022. -
  8023. -
  8024. -    <?php
  8025. -    // Display Order History
  8026. -
  8027. -    $orderHistoryAll = $order->getAllStatusHistory();    
  8028. -    ?>
  8029. -    <div class="clearfix mt20">
  8030. +        }
  8031. +?>
  8032. +<?php if ($order->getStatusLabel()): ?>
  8033. +<?php  $_results = $shipTrack; ?>
  8034. +<div class="page-title title-buttons">
  8035. +    <h1><?php echo $this->__('Tracking Information'); ?></h1>
  8036. +</div>
  8037. +
  8038. +<p><?php echo $this->__("Your Order Status is :")?> <strong><?php echo $order->getStatusLabel() ?></strong></p>
  8039. +
  8040. +<?php if(sizeof($_results)>0): ?>
  8041. +<?php foreach($_results as $shipid => $_result): ?>
  8042. +    <?php if($shipid): ?>
  8043. +    <h4><?php echo $this->__('Shipment #').$shipid; ?></h4>
  8044. +    <?php endif; ?>
  8045. +    <?php if(sizeof($_result)>0): ?>
  8046. +        <?php $rowCount = sizeof($_result); $counter = 1; ?>
  8047. +        <?php foreach($_result as $track): ?>
  8048.          <table class="data-table track-data-table">
  8049.              <thead>
  8050. +                                            <tr>
  8051. +                                                                               <th colspan=2><?php echo $this->__('Shipping Details: ' ) ?></th>
  8052. +                                                                                                               </tr>
  8053. +                                                                                                                                          </thead>
  8054. +                                                                                                                                          
  8055. +            <col width="70%" />
  8056. +            <col />
  8057. +            <tbody>
  8058. +                <?php if(is_object($track)): ?>
  8059.                  <tr>
  8060. -                    <th colspan="2"><?php echo $this->__('Order Status History' ) ?></th>
  8061. +                    <th><?php echo $this->__('Tracking Number:'); ?></th>
  8062. +                    <td><?php echo $track->getTracking(); ?></td>
  8063.                  </tr>
  8064. -            </thead>
  8065. -            <tbody>
  8066. -                <tr class="sub-header">
  8067. -                    <th class="col-sm-3">Status</th><th class="col-sm-3">Date</th>
  8068. +                <?php if ($track->getCarrierTitle()): ?>
  8069. +                <tr>
  8070. +                    <th><?php echo $this->__('Carrier:'); ?></th>
  8071. +                    <td><?php echo $track->getCarrierTitle(); ?></td>
  8072.                  </tr>
  8073. -                <?php
  8074. -                $historyStr = '';
  8075. -                $prevStatus = '';
  8076. -                array_reverse($orderHistoryAll);
  8077. -                foreach($orderHistoryAll as $stat) {
  8078. -                    if($prevStatus != $stat->getStatus()) {
  8079. -                        if(preg_match('/pending_/i', $stat->getStatus())) {
  8080. -                            $ordStatus = $helper->orderStatus('pending');
  8081. -                        } else {    
  8082. -                            $ordStatus = $helper->orderStatus(strtolower($stat->getStatus()));
  8083. -                        }
  8084. -
  8085. -                        if(empty($ordStatus)) {
  8086. -                            $ordStatus = $stat->getStatusLabel();
  8087. -                        }
  8088. -                        $historyStr .= '
  8089. +                <?php endif; ?>
  8090. +                <?php if($track->getErrorMessage()): ?>
  8091. +                <tr>
  8092. +                    <th><?php echo $this->__('Error:'); ?></th>
  8093. +                    <td class="error"><?php if ((bool) Mage::getStoreConfig('contacts/contacts/enabled')) : ?><a href="<?php echo $this->getUrl('contacts') ?>" onclick="this.target='_blank'"><?php echo $this->__('Click here') ?></a><?php echo $this->__('  to get details or '); endif; echo $this->__('email us at '); ?><a href="mailto:<?php echo Mage::getStoreConfig('trans_email/ident_support/email'); ?>"><?php echo Mage::getStoreConfig('trans_email/ident_support/email') ?></a>
  8094. +                    
  8095. +                    </td>
  8096. +                </tr>
  8097. +                <?php elseif($track->getTrackSummary()): ?>
  8098. +                <tr>
  8099. +                    <th><?php echo $this->__('Info:'); ?></th>
  8100. +                    <td><?php echo $track->getTrackSummary(); ?></td>
  8101. +                </tr>
  8102. +                <?php elseif($track->getUrl()): ?>
  8103. +                <tr>
  8104. +                    <th><?php echo $this->__('Track:'); ?></th>
  8105. +                    <td><a href="<?php echo $track->getUrl(); ?>" onclick="this.target='_blank'"><?php echo $this->__('Click here to get details'); ?></a></td>
  8106. +                </tr>
  8107. +                <?php else: ?>
  8108. +                    <?php if ($track->getStatus()): ?>
  8109. +                    <tr>
  8110. +                        <th><?php echo $this->__('Status:'); ?></th>
  8111. +                        <td><?php echo $track->getStatus(); ?></td>
  8112. +                    </tr>
  8113. +                    <?php endif; ?>
  8114. +
  8115. +                    <?php if ($track->getDeliverydate()): ?>
  8116. +                    <tr>
  8117. +                        <th><?php echo $this->__('Delivered on:'); ?></th>
  8118. +                        <td><?php echo $this->formatDeliveryDateTime($track->getDeliverydate(),$track->getDeliverytime()); ?></td>
  8119. +                    </tr>
  8120. +                    <?php endif; ?>
  8121. +
  8122. +                    <?php if ($track->getSignedby()): ?>
  8123. +                    <tr>
  8124. +                        <th><?php echo $this->__('Signed by:'); ?></th>
  8125. +                        <td><?php echo $track->getSignedby(); ?></td>
  8126. +                    </tr>
  8127. +                    <?php endif; ?>
  8128. +
  8129. +                    <?php if ($track->getDeliveryLocation()): ?>
  8130. +                    <tr>
  8131. +                        <th><?php echo $this->__('Delivered to:'); ?></th>
  8132. +                        <td><?php echo $track->getDeliveryLocation(); ?></td>
  8133. +                    </tr>
  8134. +                    <?php endif; ?>
  8135. +
  8136. +                    <?php if ($track->getShippedDate()): ?>
  8137. +                    <tr>
  8138. +                        <th><?php echo $this->__('Shipped or billed on:'); ?></th>
  8139. +                        <td><?php echo $track->getShippedDate(); ?></td>
  8140. +                    </tr>
  8141. +                    <?php endif; ?>
  8142. +
  8143. +                    <?php if ($track->getService()): ?>
  8144. +                    <tr>
  8145. +                        <th><?php echo $this->__('Service Type:'); ?></th>
  8146. +                        <td><?php echo $track->getService(); ?></td>
  8147. +                    </tr>
  8148. +                    <?php endif; ?>
  8149. +
  8150. +                    <?php if ($track->getWeight()): ?>
  8151. +                    <tr>
  8152. +                        <th><?php echo $this->__('Weight:'); ?></th>
  8153. +                        <td><?php echo $track->getWeight(); ?></td>
  8154. +                    </tr>
  8155. +                    <?php endif; ?>
  8156. +
  8157. +                    <?php endif; ?>
  8158. +                    <?php elseif(isset($track['title']) && isset($track['number']) && $track['number']): ?>
  8159. +                    <!--if the tracking is custom value-->
  8160. +                    <tr>
  8161. +                        <th><?php echo $this->__('Shipping Carrier'); ?>:</th>
  8162. +                        <td><?php echo ($track['title'] ? $this->escapeHtml($track['title']) : $this->__('N/A')); ?></td>
  8163. +                    </tr>
  8164. +                    <tr>
  8165. +                        <th><?php echo $this->__('AWB Number'); ?>:</th>
  8166. +                        <td><?php echo (isset($track['number']) ? $this->escapeHtml($track['number']) : ''); ?></td>
  8167. +                    </tr>
  8168. +                    <?php endif; ?>
  8169. +                    </tbody>
  8170. +                </table>
  8171. +
  8172. +                <?php if (is_object($track) && sizeof($track->getProgressdetail())>0): ?>
  8173. +                <table class="data-table" id="track-history-table-<?php echo $track->getTracking(); ?>">
  8174. +                    <col />
  8175. +                    <col width="1" />
  8176. +                    <col width="1" />
  8177. +                    <col />
  8178. +                    <thead>
  8179.                          <tr>
  8180. -                            <td>'.$ordStatus.'</td>
  8181. -                            <td>'.$stat->getCreatedAtDate().'</td>                            
  8182. -                        </tr>';
  8183. -                    }
  8184. -                    $prevStatus = $stat->getStatus();
  8185. -                }
  8186. -                echo $historyStr;
  8187. -                ?>
  8188. -            </tbody>
  8189. +                            <th><?php echo $this->__('Location') ?></th>
  8190. +                            <th><?php echo $this->__('Date') ?></th>
  8191. +                            <th><?php echo $this->__('Local Time') ?></th>
  8192. +                            <th><?php echo $this->__('Description') ?></th>
  8193. +                        </tr>
  8194. +                   </thead>
  8195. +                   <tbody>
  8196. +                   <?php foreach($track->getProgressdetail() as $_detail): ?>
  8197. +                    <?php $_detailDate = (isset($_detail['deliverydate']) ? $this->formatDeliveryDate($_detail['deliverydate']) : '') ?>
  8198. +                    <?php $_detailTime = (isset($_detail['deliverytime']) ? $this->formatDeliveryTime($_detail['deliverytime'], $_detailDate) : '') ?>
  8199. +                        <tr>
  8200. +                            <td><?php echo (isset($_detail['deliverylocation']) ? $_detail['deliverylocation'] : ''); ?></td>
  8201. +                            <td><?php echo $_detailDate ?></td>
  8202. +                            <td><?php echo $_detailTime ?></td>
  8203. +                            <td><?php echo (isset($_detail['activity']) ? $_detail['activity'] : '') ?></td>
  8204. +                        </tr>
  8205. +                   <?php endforeach; ?>
  8206. +                   </tbody>
  8207. +                </table>
  8208. +
  8209. +                <script type="text/javascript">decorateTable('track-history-table-<?php echo $track->getTracking(); ?>');</script>
  8210. +                <?php endif; ?>
  8211. +            <?php if($counter!=$rowCount): ?>
  8212. +            <?php endif; ?>
  8213. +            <?php $counter++; ?>
  8214. +        
  8215. +        <?php endforeach; ?>
  8216. +        <!--end for each tracking information-->
  8217. +    <?php else: ?>
  8218. +        <p><?php echo $this->__('There is no tracking available for this shipment.'); ?></p>
  8219. +    <?php endif; ?>
  8220. +
  8221. +<?php endforeach; ?>
  8222. +<?php else: ?>
  8223. +    <div><?php echo $this->__('There is no tracking available.'); ?></div>
  8224. +<?php endif; ?>
  8225. +<div class="order-history">
  8226. +    <?php $orderHistoryAll = $order->getAllStatusHistory(); ?>
  8227. +    <?php $orderHistory = array_reverse($orderHistoryAll); ?>
  8228. +    <?php $check = array('Processing'=>0,'Pending'=>0,'Pending Payment'=>0,'Suspected Fraud'=>0,'Payment Review'=>0,'On Hold'=>0,'Complete'=>0,'Closed'=>0,'Canceled'=>0,'PayPal Canceled Reversal'=>0,'Dispatched'=>0,'Pending PayPal'=>0,'Partially Dispatched'=>0,'PayPal Reversed'=>0,'Partially Fulfillable'=>0,'Confirm'=>0,'Fulfillable'=>0,'Delivered'=>0); ?>
  8229. +    <?php $orderHistoryUnique = array(); ?>
  8230. +    <?php $orderHistoryUniqueIndividual = array(); ?>
  8231. +       <table class="order-status">
  8232. +        <thead>
  8233. +        <tr>
  8234. +            <td colspan=2>Status History</td>
  8235. +            <!--<th>Status</th>-->
  8236. +        <tr>
  8237. +        </thead>
  8238. +       <col width="70%" />
  8239. +            <col />
  8240. +        <tbody>
  8241. +            <?php foreach($orderHistory as $stat): ?>
  8242. +           <?php if($check[$stat->getStatusLabel()] == 0): ?>
  8243. +   <!--         <tr> -->
  8244. +          <!--      <td> --><?php $cd = $stat->getCreatedAtDate(); ?> <!-- </td> -->
  8245. +          <!--      <td> --><?php $gsl = $stat->getStatusLabel(); ?> <!-- </td> -->
  8246. +               <?php $check[$stat->getStatusLabel()] = 1; ?>
  8247. +               <?php $orderHistoryUniqueIndividual = array($cd,$gsl); ?>
  8248. +               <?php array_push($orderHistoryUnique,$orderHistoryUniqueIndividual); ?>
  8249. +   <!--         </tr> -->
  8250. +           <?php endif; ?>
  8251. +            <?php endforeach; ?>
  8252. +<!--        </tbody>
  8253. +      
  8254. +       <tbody> -->
  8255. +           <?php $orderHistoryUniqueReverse = array_reverse($orderHistoryUnique); ?>
  8256. +            <?php foreach($orderHistoryUniqueReverse as $date): ?>
  8257. +            <tr>
  8258. +                <td><?php echo $date[0]; ?></td>
  8259. +                <td><?php echo $date[1]; ?></td>
  8260. +            </tr>
  8261. +            <?php endforeach;  ?>
  8262. +        </tbody>
  8263. +      
  8264.          </table>
  8265. -    </div>
  8266. -
  8267. -<?php } else { ?>
  8268. -    <div class="page-title title-buttons">
  8269. -        <h1><?php echo $this->__('No Order or Tracking Information Available'); ?></h1>
  8270. -    </div>
  8271. -<?php } ?>
  8272. -
  8273. -<div class="clearfix mt20">
  8274. -    <button class="button pull-left" onclick="history.back();"><span>Back</span></button>
  8275. -    <?php
  8276. -    $getLoggedInUserEmail = $helper->getLoggedInUserEmail();
  8277. -    if(!empty($getLoggedInUserEmail)) {
  8278. -    ?>
  8279. -    <a href="<?php echo $helper->getViewOrderUrl($order->getId()); ?>"><button class="button pull-right"><span>View Order Details</span></button></a>
  8280. -    <?php
  8281. -    }
  8282. -    ?>
  8283. -</div>
  8284. \ No newline at end of file
  8285. +      
  8286. +</div>
  8287. +<?php else: ?>
  8288. +<div class="page-title title-buttons">
  8289. +    <h1><?php echo $this->__('No Order or Tracking Information Available'); ?></h1>
  8290. +</div>
  8291. +<?php endif; ?>
  8292. +<div><button class="button" onclick="history.back();"><span>Back</span></button></div>
  8293. diff --git a/app/design/frontend/smartwave/porto/template/trackorder/trackorder.phtml b/app/design/frontend/smartwave/porto/template/trackorder/trackorder.phtml
  8294. index 5731313..4729b4e 100644
  8295. --- a/app/design/frontend/smartwave/porto/template/trackorder/trackorder.phtml
  8296. +++ b/app/design/frontend/smartwave/porto/template/trackorder/trackorder.phtml
  8297. @@ -1,75 +1,76 @@
  8298.  <?php
  8299. -if(Mage::getStoreConfig('trackorder/trackorder_general/enabled')) {
  8300. +    if(Mage::getStoreConfig('trackorder/trackorder_general/enabled')):
  8301. +    ?>
  8302. +    <div class="page-title"><h1><?php echo $this->__('Track Your Order ') ?></h1></div>
  8303. +    <div class="form-list">
  8304. +        <form name="track_order" id="track_order" action="detail" method="post">            
  8305. +            <ul class="form-list">
  8306. +                <li>
  8307. +                    <label for="order_id" class="required"><em>*</em><?php echo $this->__('Order Id') ?></label>
  8308. +                    <div class="input-box">
  8309. +                        <input type="text" name="order_id" id="order_id" value="" title="" class="input-text required-entry" />
  8310. +                    </div>    
  8311. +                </li>
  8312. +                <li>
  8313. +                    <label for="email_address" class="required"><em>*</em><?php echo $this->__('Email Address') ?></label>
  8314. +                    <div class="input-box" >
  8315. +                        <input type="text" name="email" id="email_address" value="" title="<?php echo $this->__('Email Address') ?>" class="input-text validate-email required-entry" />
  8316. +                    </div>    
  8317. +                </li>
  8318. +            </ul>
  8319. +            <div class="buttons-set">
  8320. +                <button type="submit" class="button" title="<?php echo $this->__('Track Order') ?>" name="track" id="track"><span><span><?php echo $this->__('Track Order') ?></span></span></button>
  8321. +            </div>
  8322.  
  8323. -$trackHelper = Mage::helper('trackorder');
  8324. +        </form>
  8325. +        <div id="loading-details" class="loading-details" style="display:none">
  8326. +            <div id="loading-mask" >
  8327. +                <p class="loader" id="loading_mask_loader"><img src="<?php echo $this->getSkinUrl('trackorder/images/ajax-loader-tr.gif') ?>" alt="<?php echo Mage::helper('adminhtml')->__('Loading...') ?>"/><br/><?php echo $this->__('Please wait...') ?></p>
  8328. +            </div>
  8329. +        </div>
  8330. +    </div>
  8331.  
  8332. -?>
  8333.  
  8334. -<style type="text/css">
  8335. -@media (min-width: 981px) {
  8336. -    .track_order_index {
  8337. -        width: 700px;
  8338. -        margin: 0 auto;
  8339. -    }
  8340. -}
  8341.  
  8342. -.track-data-table em {
  8343. -    color:red;
  8344. -}
  8345. -</style>
  8346. +    <div id="oderinfo" class="order-info-message"></div>
  8347.  
  8348. -<div class="track_order_index">
  8349. -    <div class="col-md-12">
  8350. -        <div><?php echo $this->getMessagesBlock()->getGroupedHtml() ?></div>
  8351. -        <div class="page-title"><h1><?php echo $this->__('Track Your Order ') ?></h1></div>
  8352. -        <div class="form-list">
  8353. -            <form name="track_order" id="track_order" action="<?php echo $trackHelper->getTrackorderUrl(); ?>detail" method="post">
  8354.  
  8355. -                <table class="data-table track-data-table">
  8356. -                    <thead>
  8357. -                        <tr>
  8358. -                            <th colspan="2"><h4><?php echo $this->__('Order Details') ?></h4></th>
  8359. -                        </tr>
  8360. -                        <tr>
  8361. -                            <td colspan="2"><?php echo $this->__('Please enter below details') ?></td>
  8362. -                        </tr>
  8363. -                    </thead>
  8364. -                    <tbody>
  8365. -                        <tr>
  8366. -                            <td><em>* </em> <?php echo $this->__('Order Id') ?></td>
  8367. -                            <td>
  8368. -                                <input type="text" name="order_id" id="order_id" value="" title="" class="input-text required-entry" />
  8369. -                            </td>
  8370. -                        </tr>
  8371. -                        <tr>
  8372. -                            <td><em>* </em> <?php echo $this->__('Email Address') ?></td>
  8373. -                            <td><input type="text" name="email" id="email_address" value="<?php echo $trackHelper->getLoggedInUserEmail(); ?>" title="<?php echo $this->__('Email Address') ?>" class="input-text validate-email required-entry" /></td>
  8374. -                        </tr>
  8375. -                        <tr>
  8376. -                            <td class="text-right" colspan="2">
  8377. -                                <div class="buttons-set"><button type="submit" class="button" title="<?php echo $this->__('Track Order') ?>" name="track" id="track"><span><span><?php echo $this->__('Track Order') ?></span></span></button></div>
  8378. -                            </td>
  8379. -                        </tr>
  8380. -                    </tbody>
  8381. -                </table>
  8382. -
  8383. -            </form>
  8384. -            <div id="loading-details" class="loading-details" style="display:">
  8385. -                <div id="loading-mask" >
  8386. -                    <p class="loader" id="loading_mask_loader"><img src="<?php echo $this->getSkinUrl('trackorder/images/ajax-loader-tr.gif') ?>" alt="<?php echo Mage::helper('adminhtml')->__('Loading...') ?>"/><br/><?php echo $this->__('Please wait...') ?></p>
  8387. -                </div>
  8388. -            </div>
  8389. -        </div>
  8390. -    </div>
  8391.  
  8392.      <script type="text/javascript">
  8393.          var validateForm = new VarienForm('track_order', true);
  8394. +    </script>          
  8395. +    <script type="text/javascript">
  8396. +
  8397. +        function sendAjax(frmId,url){
  8398. +            if (!validateForm.validator.validate()) {
  8399. +                return;
  8400. +            }
  8401. +            var data = $(frmId).serialize(this);
  8402. +            $("loading-details").show();
  8403. +            new Ajax.Updater(
  8404. +                {
  8405. +                    success:"oderinfo"
  8406. +                },
  8407. +                url,
  8408. +                {
  8409. +                    asynchronous:true,
  8410. +                    evalScripts:false,
  8411. +                    onComplete:function(request, json){
  8412. +                        $("loading-details").hide();
  8413. +                        return false;
  8414. +                    },
  8415. +                    onLoading:function(request, json){},
  8416. +                    parameters:data
  8417. +                }
  8418. +            );
  8419. +            return false;
  8420. +        }
  8421. +
  8422.      </script>
  8423. -</div>
  8424. -<?php
  8425. -} else {
  8426. -    $url = Mage::getBaseUrl();
  8427. -    Mage::app()->getFrontController()->getResponse()->setRedirect($url);
  8428. -}
  8429. -?>
  8430. +    <?php else: ?>
  8431. +    <?php
  8432. +        $url = Mage::getBaseUrl();
  8433. +        Mage::app()->getFrontController()->getResponse()->setRedirect($url);
  8434. +    ?>
  8435. +    <?php endif; ?>
  8436.  
  8437. diff --git a/app/etc/modules/Tolexo_Categoryreorder.xml b/app/etc/modules/Tolexo_Categoryreorder.xml
  8438. deleted file mode 100644
  8439. index 0a402c3..0000000
  8440. --- a/app/etc/modules/Tolexo_Categoryreorder.xml
  8441. +++ /dev/null
  8442. @@ -1,10 +0,0 @@
  8443. -<?xml version="1.0"?>
  8444. -
  8445. -<config>
  8446. -    <modules>
  8447. -        <Tolexo_Categoryreorder>
  8448. -            <active>true</active>
  8449. -            <codePool>local</codePool>
  8450. -        </Tolexo_Categoryreorder>
  8451. -    </modules>
  8452. -</config>
  8453. diff --git a/app/etc/modules/Tolexo_OrderTags.xml b/app/etc/modules/Tolexo_OrderTags.xml
  8454. deleted file mode 100644
  8455. index e279867..0000000
  8456. --- a/app/etc/modules/Tolexo_OrderTags.xml
  8457. +++ /dev/null
  8458. @@ -1,10 +0,0 @@
  8459. -<?xml version="1.0"?>
  8460. -<config>
  8461. -    <modules>
  8462. -        <Tolexo_OrderTags>
  8463. -            <active>true</active>
  8464. -            <codePool>local</codePool>
  8465. -            <version>0.0.1</version>
  8466. -        </Tolexo_OrderTags>
  8467. -    </modules>
  8468. -</config>
  8469. \ No newline at end of file
  8470. diff --git a/cancelorder/cancelBulkOrderApi.php b/cancelorder/cancelBulkOrderApi.php
  8471. deleted file mode 100755
  8472. index dea4121..0000000
  8473. --- a/cancelorder/cancelBulkOrderApi.php
  8474. +++ /dev/null
  8475. @@ -1,171 +0,0 @@
  8476. -<?php
  8477. -
  8478. -error_reporting(E_ALL);
  8479. -ini_set('display_errors', '1');
  8480. -$config = parse_ini_file("conf.ini");
  8481. -$csv_path = !empty($argv[1]) ? $argv[1] : '';
  8482. -$apiHost = !empty($config) ? $config['protocol'] . "://" . $config['host'] . ":" . $config['port'] : '';
  8483. -
  8484. -if (!empty($csv_path) && !empty($apiHost)) {
  8485. -    $csv_data = csv_to_array($csv_path);
  8486. -    if (empty($csv_data)) {
  8487. -        echo "\n Invalid CSV format or file is inaccessible\n";
  8488. -    } else {
  8489. -        $successCount = 0;
  8490. -        foreach ($csv_data as $row) {
  8491. -            $response = cancelFullOrder($row, $apiHost);
  8492. -            if (!empty($response['FullResponse']['Data']['TotalCancel']) && $response['FullResponse']['Data']['TotalCancel'] > 0) {
  8493. -                $successCount++;
  8494. -                echo "\n" . $row['order_id'] . "-Order successfully cancelled.";
  8495. -                if (count($response['FullResponse']['Status']['Errors']) > 0) {
  8496. -                    echo "\n\t Still there are some errors during processing: ";
  8497. -                    foreach ($response['FullResponse']['Status']['Errors'] as $error) {
  8498. -                        echo "\n\t * " . $error['Msg'];
  8499. -                    }
  8500. -                }
  8501. -                echo "\n\n";
  8502. -                if (!empty($response['FullResponse']['WmsData'])) {
  8503. -                    foreach ($response['FullResponse']['WmsData'] as $wmsData) {
  8504. -                        if (empty($wmsData['Vendor_Facility'])) {
  8505. -                            echo "Vendor unavailable for WMS\n";
  8506. -                        } else {
  8507. -                            $wmsResponse = cancelWmsOrder(
  8508. -                                    $apiHost,
  8509. -                                    $wmsData['Item_Id'],
  8510. -                                    $wmsData['Order_Id'],
  8511. -                                    $wmsData['Qty_Ordered'] - ($wmsData['Qty_Invoiced'] + $wmsData['Qty_Canceled']),
  8512. -                                    $wmsData['Vendor_Facility']
  8513. -                            );
  8514. -
  8515. -                            if ($wmsResponse['wmsServiceResponse']['Status']['HttpStatusCode'] == "500") {
  8516. -                                echo "\n\t * WMS update unsuccessfull for ".$wmsData['Sku'];
  8517. -                                if (count($wmsResponse['wmsServiceResponse']['Status']['Errors']) > 0) {
  8518. -                                    foreach ($wmsResponse['wmsServiceResponse']['Status']['Errors'] as $wms_error) {
  8519. -                                        echo "\n\t\t # " . $wms_error['Msg'];
  8520. -                                    }
  8521. -                                    echo "\n\n";
  8522. -                                }
  8523. -                            }
  8524. -                        }
  8525. -                    }
  8526. -                } else {
  8527. -                    echo "\n\t * WMS Data unavailable for WMS update\n\n";
  8528. -                }
  8529. -            } else {
  8530. -                echo "\n" . $row['order_id'] . "-Order not cancelled successfully due to below errors:";
  8531. -                if (count($response['FullResponse']['Status']['Errors']) > 0) {
  8532. -                    foreach ($response['FullResponse']['Status']['Errors'] as $error) {
  8533. -                        echo "\n\t * " . $error['Msg'];
  8534. -                    }
  8535. -                    echo "\n\n";
  8536. -                } else {
  8537. -                    echo "\n\t * Api not working\n\n";
  8538. -                }
  8539. -            }
  8540. -        }
  8541. -        echo "Total Cancel request: " . count($csv_data) . "\n";
  8542. -        echo "Total Cancel success: " . $successCount . "\n\n";
  8543. -    }
  8544. -} else {
  8545. -    echo "\n Please provide CSV path & Api Url\n";
  8546. -}
  8547. -
  8548. -/*
  8549. - * Function for cancel of single order
  8550. - *
  8551. - * @author Archana Singh<archana.singh@tolexo.com>
  8552. - * @param $canclOrderDataRow Array
  8553. - * @param $apiHost String
  8554. - *
  8555. - * @return Array
  8556. - */
  8557. -
  8558. -function cancelFullOrder($canclOrderDataRow, $apiHost) {
  8559. -    $orderId = trim($canclOrderDataRow['order_id']); // Order Need To Cancel
  8560. -    $orderCancelStatus = trim($canclOrderDataRow['cancel_status']); // Status Need To update of Cancel Order
  8561. -    $orderCancelReason = trim($canclOrderDataRow['cancelled_order_reason']); //Reasone For Order Cancel
  8562. -    $notify = true;
  8563. -    
  8564. -    $request = array("RequestData" =>
  8565. -        array(
  8566. -            array(
  8567. -                "order_id" => $orderId,
  8568. -                "cancel_status" => $orderCancelStatus,
  8569. -                "cancelled_order_reason" => $orderCancelReason,
  8570. -                "notify" => $notify
  8571. -            )
  8572. -        )
  8573. -    );
  8574. -    $requestJson = json_encode($request);
  8575. -
  8576. -    $url = $apiHost . "/order/v1/cancel/full";
  8577. -    $ch = curl_init();
  8578. -    curl_setopt($ch, CURLOPT_URL, $url);
  8579. -    curl_setopt($ch, CURLOPT_POSTFIELDS, $requestJson);
  8580. -    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  8581. -    curl_setopt($ch, CURLOPT_ENCODING, 'utf-8');
  8582. -    curl_setopt($ch, CURLOPT_POST, 1);
  8583. -    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  8584. -        'Content-Type: application/json;
  8585. -                   charset=utf-8',
  8586. -    ));
  8587. -    $responseJson = curl_exec($ch);
  8588. -    curl_close($ch);
  8589. -    $response = json_decode($responseJson, true);
  8590. -    return $response;
  8591. -}
  8592. -
  8593. -/*
  8594. - * Formats CSV into Array
  8595. - *
  8596. - * @author Archana Singh<archana.singh@tolexo.com>
  8597. - * @param $filename String
  8598. - * @param $delimiter String
  8599. - *
  8600. - * @return Array
  8601. - */
  8602. -
  8603. -function csv_to_array($filename = '', $delimiter = ',') {
  8604. -    if (!file_exists($filename) || !is_readable($filename))
  8605. -        return FALSE;
  8606. -    $header = NULL;
  8607. -    $data = array();
  8608. -    if (($handle = fopen($filename, 'r')) !== FALSE) {
  8609. -        while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
  8610. -            if (!$header)
  8611. -                $header = $row;
  8612. -            else
  8613. -                $data[] = array_combine($header, $row);
  8614. -        }
  8615. -        fclose($handle);
  8616. -    }
  8617. -    return $data;
  8618. -}
  8619. -
  8620. -function cancelWmsOrder($apiHost, $itemId, $orderId, $qtyToCancel, $vendor_facility) {
  8621. -    $request = array(
  8622. -        "ItemId" => $itemId,
  8623. -        "OrderId" => $orderId,
  8624. -        "QtyToCancel" => $qtyToCancel,
  8625. -        "VendorFacility" => $vendor_facility
  8626. -    );
  8627. -    $requestJson = json_encode($request);
  8628. -
  8629. -    $url = $apiHost . "/order/v1/cancel/wmsupdate";
  8630. -    $ch = curl_init();
  8631. -    curl_setopt($ch, CURLOPT_URL, $url);
  8632. -    curl_setopt($ch, CURLOPT_POSTFIELDS, $requestJson);
  8633. -    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  8634. -    curl_setopt($ch, CURLOPT_ENCODING, 'utf-8');
  8635. -    curl_setopt($ch, CURLOPT_POST, 1);
  8636. -    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  8637. -        'Content-Type: application/json;
  8638. -                   charset=utf-8',
  8639. -    ));
  8640. -    $responseJson = curl_exec($ch);
  8641. -    curl_close($ch);
  8642. -    $response = json_decode($responseJson, true);
  8643. -    return $response;
  8644. -}
  8645. -
  8646. -?>
  8647. diff --git a/cancelorder/cancelPartialOrderApi.php b/cancelorder/cancelPartialOrderApi.php
  8648. deleted file mode 100755
  8649. index 9c64394..0000000
  8650. --- a/cancelorder/cancelPartialOrderApi.php
  8651. +++ /dev/null
  8652. @@ -1,171 +0,0 @@
  8653. -<?php
  8654. -
  8655. -error_reporting(E_ALL);
  8656. -ini_set('display_errors', '1');
  8657. -$config = parse_ini_file("conf.ini");
  8658. -$csv_path = !empty($argv[1]) ? $argv[1] : '';
  8659. -$apiHost = !empty($config) ? $config['protocol'] . "://" . $config['host'] . ":" . $config['port'] : '';
  8660. -
  8661. -if (!empty($csv_path) && !empty($apiHost)) {
  8662. -    $csv_data = csv_to_array($csv_path);
  8663. -    if (empty($csv_data)) {
  8664. -        echo "\n Invalid CSV format or file is inaccessible\n";
  8665. -    } else {
  8666. -        $successCount = 0;
  8667. -        foreach ($csv_data as $row) {
  8668. -            $response = cancelFullOrder($row, $apiHost);
  8669. -            if (!empty($response['FullResponse']['Data']['TotalCancel']) && $response['FullResponse']['Data']['TotalCancel'] > 0) {
  8670. -                $successCount++;
  8671. -                echo "\n" . $row['sku'] . "-Item successfully cancelled.";
  8672. -                if (count($response['FullResponse']['Status']['Errors']) > 0) {
  8673. -                    echo "\n\t Still there are some errors during processing: ";
  8674. -                    foreach ($response['FullResponse']['Status']['Errors'] as $error) {
  8675. -                        echo "\n\t * " . $error['Msg'];
  8676. -                    }
  8677. -                }
  8678. -                echo "\n\n";
  8679. -                if (!empty($response['FullResponse']['WmsData'])) {
  8680. -                    foreach ($response['FullResponse']['WmsData'] as $wmsData) {
  8681. -                        if (empty($wmsData['Vendor_Facility'])) {
  8682. -                            echo "Vendor unavailable for WMS\n";
  8683. -                        } else {
  8684. -                            $wmsResponse = cancelWmsOrder(
  8685. -                                    $apiHost,
  8686. -                                    $wmsData['Item_Id'],
  8687. -                                    $wmsData['Order_Id'],
  8688. -                                    $wmsData['Qty_Ordered'] - ($wmsData['Qty_Invoiced'] + $wmsData['Qty_Canceled']),
  8689. -                                    $wmsData['Vendor_Facility']
  8690. -                            );
  8691. -
  8692. -                            if ($wmsResponse['wmsServiceResponse']['Status']['HttpStatusCode'] == "500") {
  8693. -                                echo "\n\t * WMS update unsuccessfull for " . $wmsData['Sku'];
  8694. -                                if (count($wmsResponse['wmsServiceResponse']['Status']['Errors']) > 0) {
  8695. -                                    foreach ($wmsResponse['wmsServiceResponse']['Status']['Errors'] as $wms_error) {
  8696. -                                        echo "\n\t\t # " . $wms_error['Msg'];
  8697. -                                    }
  8698. -                                    echo "\n\n";
  8699. -                                }
  8700. -                            }
  8701. -                        }
  8702. -                    }
  8703. -                } else {
  8704. -                    echo "\n\t * WMS Data unavailable for WMS update\n\n";
  8705. -                }
  8706. -            } else {
  8707. -                echo "\n" . $row['sku'] . "-Item not cancelled successfully due to below errors:";
  8708. -                if (count($response['FullResponse']['Status']['Errors']) > 0) {
  8709. -                    foreach ($response['FullResponse']['Status']['Errors'] as $error) {
  8710. -                        echo "\n\t * " . $error['Msg'];
  8711. -                    }
  8712. -                    echo "\n\n";
  8713. -                } else {
  8714. -                    echo "\n\t * Api not working\n\n";
  8715. -                }
  8716. -            }
  8717. -        }
  8718. -        echo "Total Cancel request: " . count($csv_data) . "\n";
  8719. -        echo "Total Cancel success: " . $successCount . "\n\n";
  8720. -    }
  8721. -} else {
  8722. -    echo "\n Please provide CSV path & Api Url\n";
  8723. -}
  8724. -
  8725. -/*
  8726. - * Function for cancel of single order
  8727. - *
  8728. - * @author Archana Singh<archana.singh@tolexo.com>
  8729. - * @param $canclOrderDataRow Array
  8730. - * @param $apiHost String
  8731. - *
  8732. - * @return Array
  8733. - */
  8734. -
  8735. -function cancelFullOrder($canclOrderDataRow, $apiHost) {
  8736. -    $orderId = trim($canclOrderDataRow['order_id']); // Order Need To Cancel
  8737. -    $orderCancelReason = trim($canclOrderDataRow['cancelled_order_reason']); //Reasone For Order Cancel
  8738. -    $orderCancelSku = trim($canclOrderDataRow['sku']);
  8739. -    $notify = true;
  8740. -    
  8741. -    $request = array("RequestData" =>
  8742. -        array(
  8743. -            array(
  8744. -                "order_id" => $orderId,
  8745. -                "cancelled_order_reason" => $orderCancelReason,
  8746. -                "sku" => $orderCancelSku,
  8747. -                "notify" => $notify
  8748. -            )
  8749. -        )
  8750. -    );
  8751. -    $requestJson = json_encode($request);
  8752. -
  8753. -    $url = $apiHost . "/order/v1/cancel/partial";
  8754. -    $ch = curl_init();
  8755. -    curl_setopt($ch, CURLOPT_URL, $url);
  8756. -    curl_setopt($ch, CURLOPT_POSTFIELDS, $requestJson);
  8757. -    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  8758. -    curl_setopt($ch, CURLOPT_ENCODING, 'utf-8');
  8759. -    curl_setopt($ch, CURLOPT_POST, 1);
  8760. -    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  8761. -        'Content-Type: application/json;
  8762. -                   charset=utf-8',
  8763. -    ));
  8764. -    $responseJson = curl_exec($ch);
  8765. -    curl_close($ch);
  8766. -    $response = json_decode($responseJson, true);
  8767. -    return $response;
  8768. -}
  8769. -
  8770. -/*
  8771. - * Formats CSV into Array
  8772. - *
  8773. - * @author Archana Singh<archana.singh@tolexo.com>
  8774. - * @param $filename String
  8775. - * @param $delimiter String
  8776. - *
  8777. - * @return Array
  8778. - */
  8779. -
  8780. -function csv_to_array($filename = '', $delimiter = ',') {
  8781. -    if (!file_exists($filename) || !is_readable($filename))
  8782. -        return FALSE;
  8783. -    $header = NULL;
  8784. -    $data = array();
  8785. -    if (($handle = fopen($filename, 'r')) !== FALSE) {
  8786. -        while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
  8787. -            if (!$header)
  8788. -                $header = $row;
  8789. -            else
  8790. -                $data[] = array_combine($header, $row);
  8791. -        }
  8792. -        fclose($handle);
  8793. -    }
  8794. -    return $data;
  8795. -}
  8796. -
  8797. -function cancelWmsOrder($apiHost, $itemId, $orderId, $qtyToCancel, $vendor_facility) {
  8798. -    $request = array(
  8799. -        "ItemId" => $itemId,
  8800. -        "OrderId" => $orderId,
  8801. -        "QtyToCancel" => $qtyToCancel,
  8802. -        "VendorFacility" => $vendor_facility
  8803. -    );
  8804. -    $requestJson = json_encode($request);
  8805. -
  8806. -    $url = $apiHost . "/order/v1/cancel/wmsupdate";
  8807. -    $ch = curl_init();
  8808. -    curl_setopt($ch, CURLOPT_URL, $url);
  8809. -    curl_setopt($ch, CURLOPT_POSTFIELDS, $requestJson);
  8810. -    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  8811. -    curl_setopt($ch, CURLOPT_ENCODING, 'utf-8');
  8812. -    curl_setopt($ch, CURLOPT_POST, 1);
  8813. -    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  8814. -        'Content-Type: application/json;
  8815. -                   charset=utf-8',
  8816. -    ));
  8817. -    $responseJson = curl_exec($ch);
  8818. -    curl_close($ch);
  8819. -    $response = json_decode($responseJson, true);
  8820. -    return $response;
  8821. -}
  8822. -
  8823. -?>
  8824. diff --git a/cancelorder/conf.ini b/cancelorder/conf.ini
  8825. deleted file mode 100755
  8826. index 06b142f..0000000
  8827. --- a/cancelorder/conf.ini
  8828. +++ /dev/null
  8829. @@ -1,4 +0,0 @@
  8830. -protocol = http
  8831. -host = localhost
  8832. -port = 8090
  8833. -
  8834. diff --git a/creatOrder.php b/creatOrder.php
  8835. index 6ab07be..da7117b 100644
  8836. --- a/creatOrder.php
  8837. +++ b/creatOrder.php
  8838. @@ -1,96 +1,64 @@
  8839.  <?php
  8840. -error_reporting(E_ALL);
  8841. -ini_set('display_errors', '1');
  8842. +//error_reporting(E_ALL);
  8843. +//ini_set('display_errors', '1');
  8844.  require_once('app/Mage.php');
  8845.  Mage::app();
  8846. +$resource = Mage::getSingleton('core/resource');
  8847. +$readConnection = $resource->getConnection('core_read');
  8848.  
  8849. -class Tolexo_Utils_Reorder {
  8850. + // Set path to CSV file
  8851.  
  8852. -    private $readConnection;
  8853. -    private $parameters;
  8854. -    private $seprator;
  8855. -    private $orderSuffix;
  8856. -
  8857. -    function __construct($listParam = array()) {
  8858. -
  8859. -        $this->parameters = $listParam;
  8860. -        $resource = Mage::getSingleton('core/resource');
  8861. -        $this->readConnection = $resource->getConnection('core_read');
  8862. -        $this->seprator = "<br/>";
  8863. -        $this->orderSuffix = "R";
  8864. +//$csvFile = '/home/vivek/miniOrderReport.csv';
  8865. +//$orderCsvDataNew = csv_to_array($csvFile);
  8866. +if(!$_FILES['fileToUpload']['tmp_name']){
  8867. +    echo "file upload error";exit;
  8868. +}
  8869. +$orderCsvDataNew = csv_to_array($_FILES['fileToUpload']['tmp_name']);
  8870. +
  8871. +$finalArr = _group_by($orderCsvDataNew,"order_no");
  8872. +$successCount = 0;
  8873. +foreach($finalArr as $row){
  8874. +    
  8875. +    
  8876. +    $tmp = array();
  8877. +    $orderIncrementId =$row[0]['order_no'];  
  8878. +    foreach($row as $k => $item){ //print_r($row);exit;
  8879. +        $tmp[$item['product_id']] = $row[$k];
  8880.      }
  8881. -
  8882. -    public function run() {
  8883. -        $params = $this->parameters;      
  8884. -        if (isset($params) && $params[0] != "") {
  8885. -            $this->seprator = "\n";
  8886. -            $csvFile = $params[0];
  8887. -            if (file_exists($csvFile)) {
  8888. -                $orderCsvDataNew = $this->csv_to_array($csvFile);
  8889. -            } else {
  8890. -                echo "File Path incorrect";
  8891. -                exit;
  8892. -            }
  8893. -        } else {
  8894. -            if (!$_FILES['fileToUpload']['tmp_name']) {
  8895. -                echo "File upload error";
  8896. -                exit;
  8897. -            } else {
  8898. -                $orderCsvDataNew = $this->csv_to_array($_FILES['fileToUpload']['tmp_name']);
  8899. -            }
  8900. -        }
  8901. -
  8902. -
  8903. -        if (!empty($orderCsvDataNew)) {
  8904. -            $finalArr = $this->_group_by($orderCsvDataNew, "order_no");
  8905. -            $successCount = 0;
  8906. -            
  8907. -            if (isset($_POST['multi_seller']) && $_POST['multi_seller'] > 0) {
  8908. -                $this->orderSuffix = "M";
  8909. -            }
  8910. -            foreach ($finalArr as $row) {
  8911. -                $tmp = array();
  8912. -                $orderIncrementId = $row[0]['order_no'];
  8913. -                foreach ($row as $k => $item) {
  8914. -                    $tmp[$item['product_id']] = $row[$k];
  8915. -                }
  8916. -                if ($this->reOrderOld($tmp, $orderIncrementId)) {
  8917. -                    $successCount++;
  8918. -                }
  8919. -            }
  8920. -            echo "Total reorder request: " . count($finalArr) . $this->seprator;
  8921. -            echo "Total reorder success: " . $successCount . $this->seprator;
  8922. -        }
  8923. +    if(reOrderOld($tmp,$orderIncrementId, $readConnection)){
  8924. +        $successCount++;
  8925.      }
  8926. +    
  8927. +}
  8928. +echo "Total reorder request: ".count($finalArr)."<br/>";
  8929. +echo "Total reorder success: ".$successCount."<br/>";
  8930.  
  8931. -    private function reOrderOld($orderCsvData, $oldOrderId) {
  8932. -        $flag = 0;
  8933. -        $wrongSku = 0;
  8934. +function reOrderOld($orderCsvData,$oldOrderId,$readConnection){        
  8935. +        $flag = 0;  
  8936. +        $wrongSku =0;
  8937.          $rowTotalNotMatch = 0;
  8938. -        $isFullOrderReorderEligible = 1;
  8939. -        $originalIncId = $oldOrderId;
  8940. -        try {
  8941. -            $transaction = Mage::getModel('core/resource_transaction');
  8942. +        $originalIncId = $oldOrderId ;
  8943. +        try{
  8944. +            $transaction = Mage::getModel('core/resource_transaction');            
  8945.              $oldOrder = Mage::getModel("sales/order")->loadByIncrementId($oldOrderId);
  8946. -            $orderItems = $oldOrder->getAllItems();
  8947. -            $customerId = $oldOrder->getCustomerId();
  8948. -            $shipping = $oldOrder->getShippingAddress();
  8949. -            $billing = $oldOrder->getBillingAddress();
  8950. -            $payment = $oldOrder->getPayment();
  8951. +            $orderItems = $oldOrder->getAllItems();//print_r(count($orderItems));exit;
  8952. +            $customerId = $oldOrder->getCustomerId();//print_r($customerId);exit;
  8953. +            $shipping = $oldOrder->getShippingAddress();//print_r($shipping->getData());exit;
  8954. +            $billing = $oldOrder->getBillingAddress();//print_r($billing->getData());exit;
  8955. +            $payment = $oldOrder->getPayment();//print_r($payment->getData());exit;
  8956.              $storeId = 1;
  8957. -
  8958. -            if ($oldOrder->canCancel() && ($oldOrder->getState() == "new" || $oldOrder->getState() == "processing")) {
  8959. +            
  8960. +            if($oldOrder->canCancel() && ($oldOrder->getState()=="new" || $oldOrder->getState()=="processing")){
  8961.                  //relation_child_real_id relation_child_id
  8962. -
  8963. -                $newOrderIdReplace = $oldOrderId . "-" . $this->orderSuffix;
  8964. -                if ($oldOrderId) {
  8965. +                $newOrderIdReplace =$oldOrderId."-R";
  8966. +                if($oldOrderId){
  8967.                      $orignalIdArr = explode('-', $oldOrderId);
  8968.                      $originalIncId = $orignalIdArr[0];
  8969.                  }
  8970. -
  8971. -                $order = Mage::getModel('sales/order')
  8972. +                
  8973. +                $order = Mage::getModel('sales/order')    
  8974.                          ->setIncrementId($newOrderIdReplace)
  8975. -                        ->setRelationParentId($oldOrder->getId())
  8976. +                        ->setRelationParentId($oldOrder->getId())
  8977.                          ->setRelationParentRealId($oldOrderId)
  8978.                          ->setOriginalIncrementId($originalIncId)
  8979.                          ->setStoreId(1)
  8980. @@ -100,7 +68,10 @@ class Tolexo_Utils_Reorder {
  8981.                          ->setStore_currency_code('INR')
  8982.                          ->setOrder_currency_code('INR');
  8983.  
  8984. -                if ($customerId) {
  8985. +
  8986. +
  8987. +
  8988. +                if($customerId){
  8989.                      $customer = Mage::getModel('customer/customer')->load($customerId);
  8990.                      // set Customer data
  8991.                      $order->setCustomerEmail($customer->getEmail())
  8992. @@ -112,307 +83,330 @@ class Tolexo_Utils_Reorder {
  8993.                  }
  8994.  
  8995.                  // set Billing Address
  8996. -                //    $billing = $customer->getDefaultBillingAddress();
  8997. +            //    $billing = $customer->getDefaultBillingAddress();
  8998.                  $billingAddress = Mage::getModel('sales/order_address')
  8999. -                        ->setStoreId($storeId)
  9000. -                        ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_BILLING)
  9001. -                        /* ->setCustomerId($customer->getId()) */
  9002. -                        ->setCustomer_address_id($billing->getEntityId())
  9003. -                        ->setPrefix($billing->getPrefix())
  9004. -                        ->setFirstname($billing->getFirstname())
  9005. -                        ->setMiddlename($billing->getMiddlename())
  9006. -                        ->setLastname($billing->getLastname())
  9007. -                        ->setSuffix($billing->getSuffix())
  9008. -                        ->setCompany($billing->getCompany())
  9009. -                        ->setStreet($billing->getStreet())
  9010. -                        ->setCity($billing->getCity())
  9011. -                        ->setCountry_id($billing->getCountryId())
  9012. -                        ->setRegion($billing->getRegion())
  9013. -                        ->setRegion_id($billing->getRegionId())
  9014. -                        ->setPostcode($billing->getPostcode())
  9015. -                        ->setTelephone($billing->getTelephone())
  9016. -                        ->setEmail($billing->getEmail())
  9017. -                        ->setFax($billing->getFax());
  9018. +                                    ->setStoreId($storeId)
  9019. +                                    ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_BILLING)
  9020. +                                    /*->setCustomerId($customer->getId())*/
  9021. +                                    ->setCustomer_address_id($billing->getEntityId())
  9022. +                                    ->setPrefix($billing->getPrefix())
  9023. +                                    ->setFirstname($billing->getFirstname())
  9024. +                                    ->setMiddlename($billing->getMiddlename())
  9025. +                                    ->setLastname($billing->getLastname())
  9026. +                                    ->setSuffix($billing->getSuffix())
  9027. +                                    ->setCompany($billing->getCompany())
  9028. +                                    ->setStreet($billing->getStreet())
  9029. +                                    ->setCity($billing->getCity())
  9030. +                                    ->setCountry_id($billing->getCountryId())
  9031. +                                    ->setRegion($billing->getRegion())
  9032. +                                    ->setRegion_id($billing->getRegionId())
  9033. +                                    ->setPostcode($billing->getPostcode())
  9034. +                                    ->setTelephone($billing->getTelephone())
  9035. +                                    ->setEmail($billing->getEmail())
  9036. +                                    ->setFax($billing->getFax());
  9037.                  $order->setBillingAddress($billingAddress);
  9038.  
  9039. -                //$shipping = $customer->getDefaultShippingAddress();
  9040. -                $shippingAddress = Mage::getModel('sales/order_address')
  9041. -                        ->setStoreId($storeId)
  9042. -                        ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING)
  9043. +            //$shipping = $customer->getDefaultShippingAddress();
  9044. +            $shippingAddress = Mage::getModel('sales/order_address')
  9045. +                                ->setStoreId($storeId)
  9046. +                                ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING)
  9047.  //                                ->setCustomerId($customer->getId())
  9048.  //                                ->setCustomerAddressId($customer->getDefaultShipping())
  9049. -                        ->setCustomer_address_id($shipping->getEntityId())
  9050. -                        ->setPrefix($shipping->getPrefix())
  9051. -                        ->setFirstname($shipping->getFirstname())
  9052. -                        ->setMiddlename($shipping->getMiddlename())
  9053. -                        ->setLastname($shipping->getLastname())
  9054. -                        ->setSuffix($shipping->getSuffix())
  9055. -                        ->setCompany($shipping->getCompany())
  9056. -                        ->setStreet($shipping->getStreet())
  9057. -                        ->setCity($shipping->getCity())
  9058. -                        ->setCountry_id($shipping->getCountryId())
  9059. -                        ->setRegion($shipping->getRegion())
  9060. -                        ->setRegion_id($shipping->getRegionId())
  9061. -                        ->setPostcode($shipping->getPostcode())
  9062. -                        ->setTelephone($shipping->getTelephone())
  9063. -                        ->setEmail($shipping->getEmail())
  9064. -                        ->setFax($shipping->getFax());
  9065. -                if ($customerId) {
  9066. -                    $shippingAddress->setCustomerId($customer->getId())
  9067. -                            ->setCustomerAddressId($customer->getDefaultShipping());
  9068. -                }
  9069. -
  9070. -
  9071. -                $order->setShippingAddress($shippingAddress)
  9072. -                        ->setShipping_method('freeshipping_freeshipping');
  9073. -
  9074. -                $orderPayment = Mage::getModel('sales/order_payment')
  9075. -                        ->setStoreId($storeId)
  9076. -                        ->setCustomerPaymentId(0)
  9077. -                        ->setMethod($payment->getMethod());
  9078. -                //->setPo_number(' - ');
  9079. -                $order->setPayment($orderPayment);
  9080. -
  9081. -                foreach ($orderItems as $orderItem) {
  9082. -                    $item_status = $orderItem->getStatus();
  9083. -                    if ($item_status != "Ordered") {
  9084. -                        $isFullOrderReorderEligible = 0;
  9085. -                        break;
  9086. -                    }
  9087. -                    $productId = $orderItem->getProductId();
  9088. -                    $stockStatus = 1;
  9089. -                    //$customPrice = $orderItem->getCustomPrice();//CSV
  9090. -                    $rowTotal = $orderItem->getPrice() * $orderItem->getQtyOrdered();
  9091. -                    $rowTotalIncludeTax = $rowTotal + $orderItem->getTaxAmount();
  9092. -                    $rowTax = $orderItem->getTaxAmount();
  9093. -                    $discountAmount = $orderItem->getDiscountAmount();
  9094. -                    $orderedRowTotal = $rowTotalIncludeTax - $discountAmount;
  9095. -                    $newOrderedRowTotal = 0;
  9096. -                    $orderItemNew = Mage::getModel('sales/order_item')
  9097. -                            ->setStoreId($storeId)
  9098. -                            ->setQuoteItemId(0)
  9099. -                            ->setQuoteParentItemId(NULL)
  9100. -                            ->setProductId($productId)
  9101. -                            ->setProductType($orderItem->getProductType())
  9102. -                            ->setQtyBackordered(NULL)
  9103. -                            ->setQtyOrdered($orderItem->getQtyOrdered())//CSV
  9104. -                            ->setName($orderItem->getName())
  9105. -                            ->setSku($orderItem->getSku())//CSV
  9106. -                            ->setPrice($orderItem->getPrice())//CSV
  9107. -                            ->setBasePrice($orderItem->getBasePrice())//CSV
  9108. -                            ->setOriginalPrice($orderItem->getOriginalPrice())//CSV
  9109. -                            ->setBaseOriginalPrice($orderItem->getBaseOriginalPrice())//CSV
  9110. -                            ->setTaxPercent($orderItem->getTaxPercent())//CSV
  9111. -                            ->setTaxAmount($orderItem->getTaxAmount())//CSV
  9112. -                            ->setBaseTaxAmount($orderItem->getBaseTaxAmount())//CSV
  9113. -                            ->setPriceInclTax($orderItem->getPriceInclTax())//CSV
  9114. -                            ->setBasePriceInclTax($orderItem->getBasePriceInclTax())
  9115. -                            ->setRowTotal($rowTotal)//CSV
  9116. -                            ->setRowTotalInclTax($orderItem->getRowTotalInclTax())//CSV
  9117. -                            ->setBaseRowTotalInclTax($orderItem->getBaseRowTotalInclTax())//CSV
  9118. -                            ->setTolexoBasePrice($orderItem->getTolexoBasePrice())//CSV
  9119. -                            ->setTolexoDeliveryDetails($orderItem->getTolexoDeliveryDetails())
  9120. -                            ->setBaseRowTotal($rowTotal)
  9121. -                            ->setRowWeight($orderItem->getRowWeight())
  9122. -                            ->setDiscountAmount($discountAmount)//CSV
  9123. -                            ->setDiscountPercent($orderItem->getDiscountPercent())
  9124. -                            ->setBaseDiscountAmount($orderItem->getBaseDiscountAmount())//CSV
  9125. -                            ->setAppliedRuleIds($orderItem->getAppliedRuleIds())
  9126. -                            ->setRowWeight($orderItem->getRowWeight());
  9127. -                    // Overwritten in case of sku updation
  9128. -                    if (isSet($orderCsvData[$productId])) {
  9129. -
  9130. -
  9131. -                        //$orderCsvData[order_status] Order Current Status
  9132. -                        //price = base_price
  9133. -                        //original_price = base_original_price
  9134. -                        $csvItemData = $orderCsvData[$productId];
  9135. -                        if ($csvItemData['new_sku'] != '') {
  9136. -                            if ($orderItem->getSku() != $csvItemData['new_sku']) {
  9137. -                                $flag = 1;
  9138. -                            }
  9139. -                        } else {
  9140. -                            $csvItemData['new_sku'] = $orderItem->getSku();
  9141. -                        }
  9142. -                        // Product Id
  9143. -                        $queryProduct = "SELECT entity_id as product_id  FROM catalog_product_entity where sku = '" . $csvItemData['new_sku'] . "'";
  9144. -                        $row = $this->readConnection->fetchRow($queryProduct);
  9145. -                        $product_id = $row['product_id'];
  9146. -                        
  9147. -                        $wrongSku = (!$product_id)?1:0;
  9148. -
  9149. -                        if ($csvItemData['custom_price_per_unit'] != "") {
  9150. -                            $price = $csvItemData['custom_price_per_unit'];
  9151. -                            $basePrice = $csvItemData['custom_price_per_unit'];
  9152. -                        } else {
  9153. -                            //Price excluding tax of a unit
  9154. -                            $price = $orderItem->getPrice();
  9155. -
  9156. -                            $basePrice = $orderItem->getBasePrice();
  9157. -                            //$csvItemData['price'] contain tax
  9158. -                        }
  9159. -
  9160. -
  9161. -                        $rowTotal = $price * $orderItem->getQtyOrdered();
  9162. -                        $rowTotalIncludeTax = $rowTotal + $csvItemData['tax_amount'];
  9163. -                        $rowTax = $csvItemData['tax_amount'];
  9164. -                        
  9165. -                        $newOrderedRowTotal = $rowTotalIncludeTax;
  9166. -                        $discountAmount = 0;
  9167. -                        
  9168. -                        $orderItemNew->setSku($csvItemData['new_sku'])
  9169. -                                ->setPrice($price)
  9170. -                                ->setQty($orderItem->getQtyOrdered())
  9171. -//                                    ->setTolexoBasePrice($csvItemData['tolexo_base_price'])  
  9172. -                                ->setDiscountAmount($discountAmount)
  9173. -//                                    ->setTaxPercent($csvItemData['tax_percent'])  
  9174. -                                ->setTaxAmount($csvItemData['tax_amount'])
  9175. +                                ->setCustomer_address_id($shipping->getEntityId())
  9176. +                                ->setPrefix($shipping->getPrefix())
  9177. +                                ->setFirstname($shipping->getFirstname())
  9178. +                                ->setMiddlename($shipping->getMiddlename())
  9179. +                                ->setLastname($shipping->getLastname())
  9180. +                                ->setSuffix($shipping->getSuffix())
  9181. +                                ->setCompany($shipping->getCompany())
  9182. +                                ->setStreet($shipping->getStreet())
  9183. +                                ->setCity($shipping->getCity())
  9184. +                                ->setCountry_id($shipping->getCountryId())
  9185. +                                ->setRegion($shipping->getRegion())
  9186. +                                ->setRegion_id($shipping->getRegionId())
  9187. +                                ->setPostcode($shipping->getPostcode())
  9188. +                                ->setTelephone($shipping->getTelephone())
  9189. +                                ->setEmail($shipping->getEmail())
  9190. +                                ->setFax($shipping->getFax());
  9191. +                              if($customerId){
  9192. +                                $shippingAddress->setCustomerId($customer->getId())
  9193. +                                ->setCustomerAddressId($customer->getDefaultShipping());
  9194. +                              }
  9195. +            
  9196. +            
  9197. +            $order->setShippingAddress($shippingAddress)
  9198. +              ->setShipping_method('freeshipping_freeshipping');
  9199. +
  9200. +            $orderPayment = Mage::getModel('sales/order_payment')
  9201. +                                ->setStoreId($storeId)
  9202. +                                ->setCustomerPaymentId(0)
  9203. +                                ->setMethod($payment->getMethod());
  9204. +                                //->setPo_number(' - ');
  9205. +            $order->setPayment($orderPayment);
  9206. +
  9207. +            foreach ($orderItems as $orderItem) {
  9208. +                $productId = $orderItem->getProductId();
  9209. +                $stockStatus = 1;
  9210. +                //$customPrice = $orderItem->getCustomPrice();//CSV
  9211. +                $rowTotal = $orderItem->getPrice() * $orderItem->getQtyOrdered();
  9212. +                $rowTotalIncludeTax = $rowTotal + $orderItem->getTaxAmount() ;
  9213. +                $rowTax = $orderItem->getTaxAmount();
  9214. +                $discountAmount = $orderItem->getDiscountAmount();
  9215. +                $orderedRowTotal = $rowTotalIncludeTax -$discountAmount;
  9216. +                $newOrderedRowTotal =0;
  9217. +                $orderItemNew = Mage::getModel('sales/order_item')
  9218. +                                ->setStoreId($storeId)
  9219. +                                ->setQuoteItemId(0)
  9220. +                                ->setQuoteParentItemId(NULL)
  9221. +                                ->setProductId($productId)
  9222. +                                ->setProductType($orderItem->getProductType())
  9223. +                                ->setQtyBackordered(NULL)
  9224.                                  ->setQtyOrdered($orderItem->getQtyOrdered())//CSV
  9225. -                                ->setBaseRowTotal($rowTotal)
  9226. -                                ->setBaseRowTotalInclTax()
  9227. -                                ->setRowTotal($rowTotal)//CSV
  9228.                                  ->setName($orderItem->getName())
  9229. -                                ->setRowTotalInclTax($rowTotalIncludeTax)//CSV
  9230. -                                ->setProductId($product_id)
  9231. -                                ->setBasePrice($basePrice)
  9232. -                                ->setPrice($price);
  9233. +                                ->setSku($orderItem->getSku())//CSV
  9234. +                                ->setPrice($orderItem->getPrice())//CSV
  9235. +                                ->setBasePrice($orderItem->getBasePrice())//CSV
  9236. +                                ->setOriginalPrice($orderItem->getOriginalPrice())//CSV
  9237. +                                ->setBaseOriginalPrice($orderItem->getBaseOriginalPrice())//CSV
  9238. +                                ->setTaxPercent($orderItem->getTaxPercent())//CSV
  9239. +                                ->setTaxAmount($orderItem->getTaxAmount())//CSV
  9240. +                                ->setBaseTaxAmount($orderItem->getBaseTaxAmount())//CSV
  9241. +                                ->setPriceInclTax($orderItem->getPriceInclTax())//CSV
  9242. +                                ->setBasePriceInclTax($orderItem->getBasePriceInclTax())
  9243. +                                ->setRowTotal($rowTotal)//CSV
  9244. +                                ->setRowTotalInclTax($orderItem->getRowTotalInclTax())//CSV
  9245. +                                ->setBaseRowTotalInclTax($orderItem->getBaseRowTotalInclTax())//CSV
  9246. +                                ->setTolexoBasePrice($orderItem->getTolexoBasePrice())//CSV
  9247. +                                ->setTolexoDeliveryDetails($orderItem->getTolexoDeliveryDetails())
  9248. +                                ->setBaseRowTotal($rowTotal)
  9249. +                                ->setRowWeight($orderItem->getRowWeight())
  9250. +                                ->setDiscountAmount($discountAmount)//CSV
  9251. +                                ->setDiscountPercent($orderItem->getDiscountPercent())
  9252. +                                ->setBaseDiscountAmount($orderItem->getBaseDiscountAmount())//CSV
  9253. +                                ->setAppliedRuleIds($orderItem->getAppliedRuleIds())
  9254. +                                ->setRowWeight($orderItem->getRowWeight());
  9255. +                // Overwritten in case of sku updation
  9256. +                if(isSet($orderCsvData[$productId]) ){                    
  9257. +                    
  9258. +                    
  9259. +                    //$orderCsvData[order_status] Order Current Status
  9260. +                    //price = base_price
  9261. +                    //original_price = base_original_price
  9262. +                    $csvItemData = $orderCsvData[$productId];
  9263. +                    if($csvItemData['new_sku'] !=''){
  9264. +                        if($orderItem->getSku() != $csvItemData['new_sku']){
  9265. +                            $flag = 1;
  9266. +                        }
  9267. +                    }else{
  9268. +                        $csvItemData['new_sku'] = $orderItem->getSku();                        
  9269. +                    }
  9270. +                    // Product Id
  9271. +                    $queryProduct = "SELECT entity_id as product_id  FROM catalog_product_entity where sku = '".$csvItemData['new_sku']."'";
  9272. +                    $row = $readConnection->fetchRow($queryProduct);
  9273. +                    $product_id = $row['product_id'];
  9274. +                    if(!$product_id){
  9275. +                        //echo "Wrong new_sku provided for order ".$oldOrderId."<br/>";
  9276. +                        $wrongSku =1;
  9277. +                        //break;
  9278.                      }
  9279. -                    $orderedRowTotal = round($orderedRowTotal, 2);
  9280. -                    $newOrderedRowTotal = round($newOrderedRowTotal, 2);
  9281.                      
  9282. -                    $rowTotalNotMatch = ($orderedRowTotal != $newOrderedRowTotal)?1:0;
  9283. -
  9284. -                    $subTotal += $rowTotal;
  9285. -                    $subTotalWTax += $rowTotalIncludeTax;
  9286. -                    $totalTax += $rowTax;
  9287. -                    $totalDiscount += $discountAmount;
  9288. -                    $order->addItem($orderItemNew);
  9289. +                    if($csvItemData['custom_price_per_unit']!=""){
  9290. +                        $price = $csvItemData['custom_price_per_unit'];
  9291. +                        $basePrice = $csvItemData['custom_price_per_unit'];
  9292. +                    }else{
  9293. +                        //Price excluding tax of a unit
  9294. +                        $price = $orderItem->getPrice();
  9295. +                        
  9296. +                        $basePrice = $orderItem->getBasePrice();
  9297. +                        //$csvItemData['price'] contain tax
  9298. +                    }
  9299. +                  
  9300. +//                    $orignalPrice = $csvItemData['original_price'];
  9301. +//                    $baseOrignalPrice = $csvItemData['original_price'];
  9302. +                    
  9303. +                    $rowTotal = $price * $orderItem->getQtyOrdered();
  9304. +                    $rowTotalIncludeTax = $rowTotal + $csvItemData['tax_amount'];
  9305. +                    $rowTax = $csvItemData['tax_amount'];
  9306. +                    //$discountAmount = $csvItemData['discount_amount'];
  9307. +                    $newOrderedRowTotal = $rowTotalIncludeTax ;
  9308. +                    $discountAmount =0;
  9309. +                    //$csvItemData = $orderCsvData[$orderItemNew->getSku()];
  9310. +                    $orderItemNew   ->setSku($csvItemData['new_sku'])
  9311. +                                    ->setPrice($price)
  9312. +                                    ->setQty($orderItem->getQtyOrdered())  
  9313. +//                                    ->setTolexoBasePrice($csvItemData['tolexo_base_price'])  
  9314. +                                    ->setDiscountAmount($discountAmount)
  9315. +//                                    ->setTaxPercent($csvItemData['tax_percent'])  
  9316. +                                    ->setTaxAmount($csvItemData['tax_amount'])
  9317. +                                    ->setQtyOrdered($orderItem->getQtyOrdered())//CSV
  9318. +                                    ->setBaseRowTotal($rowTotal)
  9319. +                                    ->setBaseRowTotalInclTax()
  9320. +                                    ->setRowTotal($rowTotal)//CSV
  9321. +                                    ->setName($orderItem->getName())
  9322. +                                    ->setRowTotalInclTax($rowTotalIncludeTax)//CSV
  9323. +                                    ->setProductId($product_id)
  9324. +                                    ->setBasePrice($basePrice)
  9325. +                                    ->setPrice($price);
  9326. +                                
  9327. +                                /*
  9328. +                                ->setOriginalPrice($orderItem->getOriginalPrice())//CSV
  9329. +                                ->setBaseOriginalPrice($orderItem->getBaseOriginalPrice())//CSV
  9330. +                                ->setBaseTaxAmount($orderItem->getBaseTaxAmount())//CSV
  9331. +                                ->setPriceInclTax($orderItem->getPriceInclTax())//CSV
  9332. +                                ->setBasePriceInclTax($orderItem->getBasePriceInclTax())  
  9333. +                                ->setBaseRowTotalInclTax($orderItem->getBaseRowTotalInclTax())//CSV
  9334. +//                                ->setDiscountPercent($orderItem->getDiscountPercent())
  9335. +                                ->setBaseDiscountAmount($orderItem->getBaseDiscountAmount())//CSV
  9336. +                                ->setAppliedRuleIds($orderItem->getAppliedRuleIds());
  9337. +                                */
  9338.                  }
  9339. +                $orderedRowTotal = round($orderedRowTotal, 2);
  9340. +                $newOrderedRowTotal = round($newOrderedRowTotal, 2);
  9341. +               if($orderedRowTotal != $newOrderedRowTotal) {
  9342. +                    //echo "Row Total does not match for order ".$oldOrderId."<br/>";
  9343. +                    $rowTotalNotMatch =1;
  9344. +                  
  9345. +               }
  9346. +                
  9347. +                
  9348. +                
  9349. +                $subTotal += $rowTotal;
  9350. +                $subTotalWTax += $rowTotalIncludeTax;
  9351. +                $totalTax += $rowTax;
  9352. +                $totalDiscount += $discountAmount;
  9353. +                $order->addItem($orderItemNew);
  9354. +            }
  9355.  //End Of Item Update
  9356. -                if (!$isFullOrderReorderEligible) {
  9357. -                    echo "Unable To reOrder " . $oldOrderId . " This is partial Reorder case ." . $this->seprator;
  9358. -                    return false;
  9359. -                }
  9360. -
  9361.  // Adding Shipping Information to Order    
  9362. -                $order->setBaseShippingInclTax($oldOrder->getBaseShippingInclTax())
  9363. -                        ->setShippingInclTax($oldOrder->getShippingInclTax())
  9364. -                        ->setBaseShippingHiddenTaxAmnt($oldOrder->getBaseShippingHiddenTaxAmnt())
  9365. -                        ->setHiddenTaxAmount($oldOrder->getHiddenTaxAmount())
  9366. -                        ->setShippingHiddenTaxAmount($oldOrder->getShippingHiddenTaxAmount())
  9367. -                        ->setBaseShippingDiscountAmount($oldOrder->getBaseShippingDiscountAmount())
  9368. -                        ->setShippingDiscountAmount($oldOrder->getShippingDiscountAmount())
  9369. -                        ->setShippingAmount($oldOrder->getShippingAmount())
  9370. -                        ->setStoreToBaseRate($oldOrder->getStoreToBaseRate())
  9371. -                        ->setShippingDescription($oldOrder->getShippingDescription())
  9372. -                        ->setStoreToOrderRate($oldOrder->getStoreToOrderRate())
  9373. -                        ->setBaseToGlobalRate($oldOrder->getBaseToGlobalRate())
  9374. -                        ->setBaseToOrderRate($oldOrder->getBaseToOrderRate())
  9375. -                        ->setTotalQtyOrdered($oldOrder->getTotalQtyOrdered()); // Total Item Ordered
  9376. -//Adding Price information to Order
  9377. -                $grandTotal = $subTotalWTax + $oldOrder->getShippingAmount() - $totalDiscount;
  9378. -                $order->setSubtotal($subTotal)
  9379. -                        ->setBaseSubtotal($subTotal)
  9380. -                        ->setWeight($oldOrder->getWeight())
  9381. -                        ->setGrandTotal($grandTotal)
  9382. -                        ->setTaxAmount($totalTax)
  9383. -                        ->setBaseTaxAmount($totalTax)
  9384. -                        ->setBaseTotalDue($subTotal)
  9385. -                        //        ->setTotalDue($subTotalWTax)
  9386. -                        ->setBaseSubtotalInclTax($subTotalWTax)
  9387. -                        ->setSubtotalInclTax($subTotalWTax)
  9388. -                        ->setBaseGrandTotal($subTotalWTax)
  9389. -                        ->setDiscountAmount(-$totalDiscount)
  9390. -                        ->setStatus("processing")
  9391. -                        ->setState("processing")
  9392. -                        ->setCustomerEmail($oldOrder->getCustomerEmail())
  9393. -                        ->setCustomerFirstname($oldOrder->getCustomerFirstname())
  9394. -                        ->setCustomerLastname($oldOrder->getCustomerLastname())
  9395. -                        ->setCustomerGroupId($oldOrder->getCustomerGroupId())
  9396. -                        ->setCoupanRuleName($oldOrder->getCoupanRuleName());
  9397. +            $order->setBaseShippingInclTax($oldOrder->getBaseShippingInclTax())
  9398. +                    ->setShippingInclTax($oldOrder->getShippingInclTax())
  9399. +                    ->setBaseShippingHiddenTaxAmnt($oldOrder->getBaseShippingHiddenTaxAmnt())
  9400. +                    ->setHiddenTaxAmount($oldOrder->getHiddenTaxAmount())
  9401. +                    ->setShippingHiddenTaxAmount($oldOrder->getShippingHiddenTaxAmount())
  9402. +                    ->setBaseShippingDiscountAmount($oldOrder->getBaseShippingDiscountAmount())
  9403. +                    ->setShippingDiscountAmount($oldOrder->getShippingDiscountAmount())
  9404. +                    ->setShippingAmount($oldOrder->getShippingAmount())
  9405. +                    ->setStoreToBaseRate($oldOrder->getStoreToBaseRate())
  9406. +                    ->setShippingDescription($oldOrder->getShippingDescription())
  9407. +                    ->setStoreToOrderRate($oldOrder->getStoreToOrderRate())
  9408. +                    ->setBaseToGlobalRate($oldOrder->getBaseToGlobalRate())
  9409. +                    ->setBaseToOrderRate($oldOrder->getBaseToOrderRate())
  9410. +                    ->setTotalQtyOrdered($oldOrder->getTotalQtyOrdered()); // Total Item Ordered
  9411.  
  9412. -
  9413. -                if ($flag && !$wrongSku && !$rowTotalNotMatch) {
  9414. -                    $transaction->addObject($order);
  9415. -                    $transaction->addCommitCallback(array($order, 'place'));
  9416. -                    $transaction->addCommitCallback(array($order, 'save'));
  9417. -                    $transaction->save();
  9418. -
  9419. -                    $newOrderObj = Mage::getModel("sales/order")->loadByIncrementId($newOrderIdReplace);
  9420. -                    $newOrderId = $newOrderObj->getId();
  9421. -                    $newOrderObj->setStatus("processing")
  9422. +//Adding Price information to Order
  9423. +            $grandTotal = $subTotalWTax+$oldOrder->getShippingAmount()-$totalDiscount;
  9424. +            $order->setSubtotal($subTotal)
  9425. +                ->setBaseSubtotal($subTotal)
  9426. +                ->setWeight($oldOrder->getWeight())
  9427. +                ->setGrandTotal($grandTotal)
  9428. +                ->setTaxAmount($totalTax)
  9429. +                ->setBaseTaxAmount($totalTax)
  9430. +                ->setBaseTotalDue($subTotal)
  9431. +        //        ->setTotalDue($subTotalWTax)
  9432. +                ->setBaseSubtotalInclTax($subTotalWTax)
  9433. +                ->setSubtotalInclTax($subTotalWTax)
  9434. +                ->setBaseGrandTotal($subTotalWTax)
  9435. +                ->setDiscountAmount(-$totalDiscount)
  9436. +                ->setStatus("processing")
  9437. +                ->setState("processing")
  9438. +                ->setCustomerEmail($oldOrder->getCustomerEmail())
  9439. +                ->setCustomerFirstname($oldOrder->getCustomerFirstname())
  9440. +                ->setCustomerLastname($oldOrder->getCustomerLastname())                    
  9441. +                ->setCustomerGroupId($oldOrder->getCustomerGroupId())                    
  9442. +                ->setCoupanRuleName($oldOrder->getCoupanRuleName());
  9443. +
  9444. +
  9445. +            if($flag && !$wrongSku && !$rowTotalNotMatch){
  9446. +                $transaction->addObject($order);
  9447. +                $transaction->addCommitCallback(array($order, 'place'));
  9448. +                $transaction->addCommitCallback(array($order, 'save'));
  9449. +                $transaction->save();
  9450. +
  9451. +                $newOrderObj =  Mage::getModel("sales/order")->loadByIncrementId($newOrderIdReplace);
  9452. +                $newOrderId= $newOrderObj->getId();
  9453. +                $newOrderObj->setStatus("processing")
  9454.                              ->setState("processing");
  9455. -                    $newOrderObj->save();
  9456. -
  9457. -
  9458. -                    //Update Old Order - Parent order
  9459. -                    $oldOrder->setRelationChildId($newOrderId)
  9460. -                            ->setRelationChildRealId($newOrderIdReplace);
  9461. -
  9462. -                    if ($oldOrder->canCancel()) {
  9463. -                        try {
  9464. -                            $oldOrder->cancel();
  9465. -                            $oldOrder->setStatus("cancellation_new_order_created");
  9466. -                            $history = $order->addStatusHistoryComment('Order marked as cancelled.', false);
  9467. -                            $history->setIsCustomerNotified(false);
  9468. -
  9469. -                            $oldOrder->save();
  9470. -                            echo "Place a new order for " . $oldOrderId . " and Successfully Cancel order. " . $this->seprator;
  9471. -                            return true;
  9472. -                        } catch (Exception $e) {
  9473. -                            Mage::logException($e);
  9474. -                            echo $e->getMessage();
  9475. -                        }
  9476. -                    } else {
  9477. -                        echo "Already Canceled order. " . $this->seprator;
  9478. +                $newOrderObj->save();  
  9479. +                
  9480. +                
  9481. +//                $getOrderIdQuery="SELECT entity_id FROM sales_flat_order WHERE increment_id = '".$newOrderIdReplace."' ";
  9482. +//                $rowResult = $readConnection->fetchRow($getOrderIdQuery);
  9483. +//                $newOrderId=  $rowResult['entity_id'];
  9484. +                //print_r($transaction);
  9485. +                //Update Old Order - Parent order
  9486. +                $oldOrder->setRelationChildId($newOrderId)
  9487. +                        ->setRelationChildRealId($newOrderIdReplace);
  9488. +
  9489. +                if ($oldOrder->canCancel()) {
  9490. +                    try {
  9491. +                        $oldOrder->cancel();
  9492. +                        //$order->setState('complete', true, $this->__('Order cancel and New order created'));
  9493. +                        
  9494. +                        $oldOrder->setStatus("cancellation_new_order_created");      
  9495. +                        $history = $order->addStatusHistoryComment('Order marked as cancelled.', false);
  9496. +                        $history->setIsCustomerNotified(false);
  9497. +                        // ...
  9498. +                        $oldOrder->save();                        
  9499. +                        echo "Place a new order for ". $oldOrderId." and Successfully Cancel order<br/>";
  9500. +                        return true;
  9501. +
  9502. +                    } catch (Exception $e) {
  9503. +                        Mage::logException($e);
  9504. +                        echo $e->getMessage();
  9505.                      }
  9506. -                } else {
  9507. -                    echo "No Sku are updated for order " . $oldOrderId . " Or Provided new_sku is wrong, or row total is not match. " . $this->seprator;
  9508. +                }else{
  9509. +                    echo "Already Canceled order <br/>";
  9510.                  }
  9511. -            } else {
  9512. -                echo $exception = "Can not cancel Order " . $oldOrderId . $this->seprator;
  9513. +            
  9514. +            }else{
  9515. +                echo "No Sku are updated for order ".$oldOrderId." Or Provided new_sku is wrong, or row total is not match.<br/>";
  9516. +                
  9517.              }
  9518. -        } catch (Exception $e) {
  9519. +               // echo 'DoneDanaDone';
  9520. +            }else{
  9521. +                echo $exception = "Can not cancel Order ".$oldOrderId.".<br/>";
  9522. +            }
  9523. +        }  catch (Exception $e){
  9524.              echo $e->getMessage();
  9525.          }
  9526. -    }
  9527.  
  9528. +}
  9529.  // End reorder Function
  9530.  //exit;
  9531. -//function to read csv file
  9532.  
  9533. -    private function csv_to_array($filename = '', $delimiter = ',') {
  9534. -        if (!file_exists($filename) || !is_readable($filename))
  9535. -            return FALSE;
  9536. +//function to read csv file
  9537.  
  9538. -        $header = NULL;
  9539. -        $data = array();
  9540. -        if (($handle = fopen($filename, 'r')) !== FALSE) {
  9541. -            while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
  9542. -                if (!$header)
  9543. -                    $header = $row;
  9544. -                else
  9545. -                    $data[] = array_combine($header, $row);
  9546. -            }
  9547. -            fclose($handle);
  9548. +function csv_to_array($filename='', $delimiter=',')
  9549. +{
  9550. +    if(!file_exists($filename) || !is_readable($filename))
  9551. +        return FALSE;
  9552. +
  9553. +    $header = NULL;
  9554. +    $data = array();
  9555. +    if (($handle = fopen($filename, 'r')) !== FALSE)
  9556. +    {
  9557. +        while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
  9558. +        {
  9559. +            if(!$header)
  9560. +                $header = $row;
  9561. +            else
  9562. +                $data[] = array_combine($header, $row);
  9563.          }
  9564. -        return $data;
  9565. +        fclose($handle);
  9566.      }
  9567. +    return $data;
  9568. +}
  9569.  
  9570. -    private function _group_by($array, $key) {
  9571. -        $return = array();
  9572. -        $returnA = array();
  9573. -        foreach ($array as $val) {
  9574. -            $return[$val[$key]][] = $val;
  9575. -            //$returnA = array_push($returnA, $return);
  9576. -        }
  9577. -        return $return;
  9578. +function _group_by($array, $key) {
  9579. +    $return = array();
  9580. +    $returnA = array();
  9581. +    foreach($array as $val) {
  9582. +        $return[$val[$key]][] = $val;
  9583. +        //$returnA = array_push($returnA, $return);
  9584.      }
  9585. -
  9586. +    return $return;
  9587.  }
  9588.  
  9589.  
  9590. -$params = array_slice($argv, 1);
  9591. -$shell = new Tolexo_Utils_Reorder($params);
  9592. -$shell->run();
  9593. +
  9594.  ?>
  9595. diff --git a/createPartialOrder.php b/createPartialOrder.php
  9596. index e3e6914..c2a134f 100644
  9597. --- a/createPartialOrder.php
  9598. +++ b/createPartialOrder.php
  9599. @@ -1,109 +1,82 @@
  9600.  <?php
  9601. -error_reporting(E_ALL);
  9602. -ini_set('display_errors', '1');
  9603. +//error_reporting(E_ALL);
  9604. +//ini_set('display_errors', '1');
  9605.  require_once('app/Mage.php');
  9606.  Mage::app();
  9607. +$resource = Mage::getSingleton('core/resource');
  9608. +$readConnection = $resource->getConnection('core_read');
  9609.  
  9610. -class Tolexo_Utils_Partial_Reorder {
  9611. + // Set path to CSV file
  9612.  
  9613. -    private $readConnection;
  9614. -    private $parameters;
  9615. -    private $seprator;
  9616. -    private $orderSuffix;
  9617. -
  9618. -    function __construct($listParam = array()) {
  9619. -        
  9620. -        $this->parameters = $listParam;
  9621. -        $resource = Mage::getSingleton('core/resource');
  9622. -        $this->readConnection = $resource->getConnection('core_read');
  9623. -        $this->seprator = "<br/>";
  9624. -        $this->orderSuffix = "R";
  9625. +//$csvFile = '/home/vivek/miniOrderReport.csv';
  9626. +//$orderCsvDataNew = csv_to_array($csvFile);
  9627. +if(!$_FILES['fileToUploadPartial']['tmp_name']){
  9628. +    echo "file upload error";exit;
  9629. +}
  9630. +$orderCsvDataNew = csv_to_array($_FILES['fileToUploadPartial']['tmp_name']);
  9631. +
  9632. +$finalArr = _group_by($orderCsvDataNew,"order_no");
  9633. +$successCount = 0;
  9634. +foreach($finalArr as $row){
  9635. +    
  9636. +    
  9637. +    $tmp = array();
  9638. +    $orderIncrementId =$row[0]['order_no'];  
  9639. +    foreach($row as $k => $item){ //print_r($row);exit;
  9640. +        $tmp[$item['product_id']] = $row[$k];
  9641.      }
  9642. -
  9643. -    public function run() {
  9644. -        $params = $this->parameters;
  9645. -        if (isset($params) && $params[0] != "") {
  9646. -            $csvFile = $params[0];
  9647. -            $this->seprator = "\n";
  9648. -            if (file_exists($csvFile)) {
  9649. -                $orderCsvDataNew = $this->csv_to_array($csvFile);
  9650. -            } else {
  9651. -                echo "File Path incorrect";
  9652. -                exit;
  9653. -            }
  9654. -        } else {
  9655. -            if (!$_FILES['fileToUploadPartial']['tmp_name']) {
  9656. -                echo "File upload error";
  9657. -                exit;
  9658. -            } else {
  9659. -                $orderCsvDataNew = $this->csv_to_array($_FILES['fileToUploadPartial']['tmp_name']);
  9660. -            }
  9661. -        }
  9662. -
  9663. -        if (!empty($orderCsvDataNew)) {
  9664. -            $finalArr = $this->_group_by($orderCsvDataNew, "order_no");
  9665. -            $successCount = 0;
  9666. -            if (isset($_POST['multi_seller']) && $_POST['multi_seller'] > 0) {
  9667. -                $this->orderSuffix = "M";
  9668. -            }
  9669. -            foreach ($finalArr as $row) {
  9670. -                $tmp = array();
  9671. -                $orderIncrementId = $row[0]['order_no'];
  9672. -                foreach ($row as $k => $item) { //print_r($row);exit;
  9673. -                    $tmp[$item['product_id']] = $row[$k];
  9674. -                }
  9675. -                if ($this->reOrderOld($tmp, $orderIncrementId)) {
  9676. -                    $successCount++;
  9677. -                }
  9678. -            }
  9679. -            echo "Total reorder request: " . count($finalArr) . $this->seprator;
  9680. -            echo "Total reorder success: " . $successCount . $this->seprator;
  9681. -        }
  9682. +    if(reOrderOld($tmp,$orderIncrementId, $readConnection)){
  9683. +        $successCount++;
  9684.      }
  9685. -
  9686. -    private function reOrderOld($orderCsvData, $oldOrderId) {
  9687. -        // Define Variables
  9688. -        $flag = 0;
  9689. -        $wrongSku = 0;
  9690. -        $rowTotalNotMatch = 0;
  9691. -        $rowTax = 0;
  9692. -        $item_price = 0;
  9693. -        $discountAmount = 0;
  9694. -        $cancelTaxAmount = 0;
  9695. -        $totalItemInOrder = 0;
  9696. -        $totalCancelItem = 0;
  9697. -        $qtyAvailForCancel = 0;
  9698. -        $orderStausCancel = 0;
  9699. -
  9700. -        try {
  9701. -            $transaction = Mage::getModel('core/resource_transaction');
  9702. +    
  9703. +}
  9704. +echo "Total reorder request: ".count($finalArr)."<br/>";
  9705. +echo "Total reorder success: ".$successCount."<br/>";
  9706. +
  9707. +function reOrderOld($orderCsvData,$oldOrderId,$readConnection){
  9708. +         // Define Variables
  9709. +        $flag = 0;  
  9710. +        $wrongSku =0;
  9711. +        $rowTotalNotMatch = 0;      
  9712. +        $rowTax             =0;
  9713. +        $item_price         =0;
  9714. +        $discountAmount     =0;
  9715. +        $cancelTaxAmount    =0;
  9716. +        $totalItemInOrder   =0;
  9717. +        $totalCancelItem    =0;
  9718. +        $qtyAvailForCancel  =0;
  9719. +        $orderStausCancel   =0;
  9720. +        
  9721. +        try{
  9722. +            $transaction = Mage::getModel('core/resource_transaction');            
  9723.              $oldOrder = Mage::getModel("sales/order")->loadByIncrementId($oldOrderId);
  9724. -            $orderItems = $oldOrder->getAllItems();
  9725. -            $customerId = $oldOrder->getCustomerId();
  9726. -            $shipping = $oldOrder->getShippingAddress();
  9727. -            $billing = $oldOrder->getBillingAddress();
  9728. -            $payment = $oldOrder->getPayment();
  9729. +            $orderItems = $oldOrder->getAllItems();//print_r(count($orderItems));exit;
  9730. +            $customerId = $oldOrder->getCustomerId();//print_r($customerId);exit;
  9731. +            $shipping = $oldOrder->getShippingAddress();//print_r($shipping->getData());exit;
  9732. +            $billing = $oldOrder->getBillingAddress();//print_r($billing->getData());exit;
  9733. +            $payment = $oldOrder->getPayment();//print_r($payment->getData());exit;
  9734.              $storeId = 1;
  9735.              $totalItemInOrder = count($orderItems);
  9736.              $totalCancelItem = 0;
  9737. -            $originalIncId = $oldOrderId;
  9738. -
  9739. -            if ($oldOrder->canCancel() && ($oldOrder->getState() == "new" || $oldOrder->getState() == "processing")) {
  9740. +            $originalIncId = $oldOrderId ;
  9741. +              
  9742. +            if($oldOrder->canCancel() && ($oldOrder->getState()=="new" || $oldOrder->getState()=="processing")){
  9743.                  //relation_child_real_id relation_child_id
  9744. +                
  9745.                  //New Increment Id
  9746.                  $tmp = $oldOrderId;
  9747. -                $queryIncId = "SELECT COUNT(increment_id) AS total FROM sales_flat_order WHERE increment_id LIKE '" . $oldOrderId . "-%'";
  9748. -                $row = $this->readConnection->fetchRow($queryIncId);
  9749. -                $incSuffix = $row['total'] + 1;
  9750. -                $newOrderIdReplace = $oldOrderId . "-" . $this->orderSuffix . "-" . $incSuffix;
  9751. +                $queryIncId = "SELECT COUNT(increment_id) AS total FROM sales_flat_order WHERE increment_id LIKE '".$oldOrderId."-%'";
  9752. +                $row = $readConnection->fetchRow($queryIncId);
  9753. +                $incSuffix = $row['total']+1;
  9754. +                $newOrderIdReplace =$oldOrderId."-R-".$incSuffix;
  9755.                  // Get Original Increment Id
  9756. -                if ($oldOrderId) {
  9757. +                if($oldOrderId){
  9758.                      $orignalIdArr = explode('-', $oldOrderId);
  9759.                      $originalIncId = $orignalIdArr[0];
  9760.                  }
  9761. -                $order = Mage::getModel('sales/order')
  9762. +                $order = Mage::getModel('sales/order')    
  9763.                          ->setIncrementId($newOrderIdReplace)
  9764. -                        ->setRelationParentId($oldOrder->getId())
  9765. +                        ->setRelationParentId($oldOrder->getId())
  9766.                          ->setRelationParentRealId($oldOrderId)
  9767.                          ->setOriginalIncrementId($originalIncId)
  9768.                          ->setStoreId(1)
  9769. @@ -113,7 +86,10 @@ class Tolexo_Utils_Partial_Reorder {
  9770.                          ->setStore_currency_code('INR')
  9771.                          ->setOrder_currency_code('INR');
  9772.  
  9773. -                if ($customerId) {
  9774. +
  9775. +
  9776. +
  9777. +                if($customerId){
  9778.                      $customer = Mage::getModel('customer/customer')->load($customerId);
  9779.                      // set Customer data
  9780.                      $order->setCustomerEmail($customer->getEmail())
  9781. @@ -125,376 +101,401 @@ class Tolexo_Utils_Partial_Reorder {
  9782.                  }
  9783.  
  9784.                  // set Billing Address
  9785. -                //    $billing = $customer->getDefaultBillingAddress();
  9786. +            //    $billing = $customer->getDefaultBillingAddress();
  9787.                  $billingAddress = Mage::getModel('sales/order_address')
  9788. -                        ->setStoreId($storeId)
  9789. -                        ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_BILLING)
  9790. -                        /* ->setCustomerId($customer->getId()) */
  9791. -                        ->setCustomer_address_id($billing->getEntityId())
  9792. -                        ->setPrefix($billing->getPrefix())
  9793. -                        ->setFirstname($billing->getFirstname())
  9794. -                        ->setMiddlename($billing->getMiddlename())
  9795. -                        ->setLastname($billing->getLastname())
  9796. -                        ->setSuffix($billing->getSuffix())
  9797. -                        ->setCompany($billing->getCompany())
  9798. -                        ->setStreet($billing->getStreet())
  9799. -                        ->setCity($billing->getCity())
  9800. -                        ->setCountry_id($billing->getCountryId())
  9801. -                        ->setRegion($billing->getRegion())
  9802. -                        ->setRegion_id($billing->getRegionId())
  9803. -                        ->setPostcode($billing->getPostcode())
  9804. -                        ->setTelephone($billing->getTelephone())
  9805. -                        ->setEmail($billing->getEmail())
  9806. -                        ->setFax($billing->getFax());
  9807. +                                    ->setStoreId($storeId)
  9808. +                                    ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_BILLING)
  9809. +                                    /*->setCustomerId($customer->getId())*/
  9810. +                                    ->setCustomer_address_id($billing->getEntityId())
  9811. +                                    ->setPrefix($billing->getPrefix())
  9812. +                                    ->setFirstname($billing->getFirstname())
  9813. +                                    ->setMiddlename($billing->getMiddlename())
  9814. +                                    ->setLastname($billing->getLastname())
  9815. +                                    ->setSuffix($billing->getSuffix())
  9816. +                                    ->setCompany($billing->getCompany())
  9817. +                                    ->setStreet($billing->getStreet())
  9818. +                                    ->setCity($billing->getCity())
  9819. +                                    ->setCountry_id($billing->getCountryId())
  9820. +                                    ->setRegion($billing->getRegion())
  9821. +                                    ->setRegion_id($billing->getRegionId())
  9822. +                                    ->setPostcode($billing->getPostcode())
  9823. +                                    ->setTelephone($billing->getTelephone())
  9824. +                                    ->setEmail($billing->getEmail())
  9825. +                                    ->setFax($billing->getFax());
  9826.                  $order->setBillingAddress($billingAddress);
  9827.  
  9828. -                //$shipping = $customer->getDefaultShippingAddress();
  9829. -                $shippingAddress = Mage::getModel('sales/order_address')
  9830. -                        ->setStoreId($storeId)
  9831. -                        ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING)
  9832. +            //$shipping = $customer->getDefaultShippingAddress();
  9833. +            $shippingAddress = Mage::getModel('sales/order_address')
  9834. +                                ->setStoreId($storeId)
  9835. +                                ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING)
  9836.  //                                ->setCustomerId($customer->getId())
  9837.  //                                ->setCustomerAddressId($customer->getDefaultShipping())
  9838. -                        ->setCustomer_address_id($shipping->getEntityId())
  9839. -                        ->setPrefix($shipping->getPrefix())
  9840. -                        ->setFirstname($shipping->getFirstname())
  9841. -                        ->setMiddlename($shipping->getMiddlename())
  9842. -                        ->setLastname($shipping->getLastname())
  9843. -                        ->setSuffix($shipping->getSuffix())
  9844. -                        ->setCompany($shipping->getCompany())
  9845. -                        ->setStreet($shipping->getStreet())
  9846. -                        ->setCity($shipping->getCity())
  9847. -                        ->setCountry_id($shipping->getCountryId())
  9848. -                        ->setRegion($shipping->getRegion())
  9849. -                        ->setRegion_id($shipping->getRegionId())
  9850. -                        ->setPostcode($shipping->getPostcode())
  9851. -                        ->setTelephone($shipping->getTelephone())
  9852. -                        ->setEmail($shipping->getEmail())
  9853. -                        ->setFax($shipping->getFax());
  9854. -                if ($customerId) {
  9855. -                    $shippingAddress->setCustomerId($customer->getId())
  9856. -                            ->setCustomerAddressId($customer->getDefaultShipping());
  9857. -                }
  9858. -
  9859. -
  9860. -                $order->setShippingAddress($shippingAddress)
  9861. -                        ->setShipping_method('freeshipping_freeshipping');
  9862. -
  9863. -                $orderPayment = Mage::getModel('sales/order_payment')
  9864. -                        ->setStoreId($storeId)
  9865. -                        ->setCustomerPaymentId(0)
  9866. -                        ->setMethod($payment->getMethod());
  9867. -                //->setPo_number(' - ');
  9868. -                $order->setPayment($orderPayment);
  9869. -
  9870. -                foreach ($orderItems as $orderItem) {
  9871. -
  9872. -                    $productId = $orderItem->getProductId();
  9873. -                    $item_status = $orderItem->getStatus();
  9874. -
  9875. -                    //Check Status For item Cancel              
  9876. -                    $qtyAvailForCancel = $orderItem->getQtyToCancel();
  9877. -                    $orderedQantity = $orderItem->getQtyOrdered();
  9878. -                    $csvItemData = $orderCsvData[$productId];
  9879. -
  9880. -                    //$qtyReorder = $csvItemData['qty_reorder'];
  9881. -                    $qtyReorder = $qtyAvailForCancel;
  9882. +                                ->setCustomer_address_id($shipping->getEntityId())
  9883. +                                ->setPrefix($shipping->getPrefix())
  9884. +                                ->setFirstname($shipping->getFirstname())
  9885. +                                ->setMiddlename($shipping->getMiddlename())
  9886. +                                ->setLastname($shipping->getLastname())
  9887. +                                ->setSuffix($shipping->getSuffix())
  9888. +                                ->setCompany($shipping->getCompany())
  9889. +                                ->setStreet($shipping->getStreet())
  9890. +                                ->setCity($shipping->getCity())
  9891. +                                ->setCountry_id($shipping->getCountryId())
  9892. +                                ->setRegion($shipping->getRegion())
  9893. +                                ->setRegion_id($shipping->getRegionId())
  9894. +                                ->setPostcode($shipping->getPostcode())
  9895. +                                ->setTelephone($shipping->getTelephone())
  9896. +                                ->setEmail($shipping->getEmail())
  9897. +                                ->setFax($shipping->getFax());
  9898. +                              if($customerId){
  9899. +                                $shippingAddress->setCustomerId($customer->getId())
  9900. +                                ->setCustomerAddressId($customer->getDefaultShipping());
  9901. +                              }
  9902. +            
  9903. +            
  9904. +            $order->setShippingAddress($shippingAddress)
  9905. +              ->setShipping_method('freeshipping_freeshipping');
  9906. +
  9907. +            $orderPayment = Mage::getModel('sales/order_payment')
  9908. +                                ->setStoreId($storeId)
  9909. +                                ->setCustomerPaymentId(0)
  9910. +                                ->setMethod($payment->getMethod());
  9911. +                                //->setPo_number(' - ');
  9912. +            $order->setPayment($orderPayment);
  9913. +
  9914. +            foreach ($orderItems as $orderItem) {
  9915. +                
  9916. +                $productId = $orderItem->getProductId();
  9917. +                $item_status = $orderItem->getStatus();
  9918. +//                if($item_status =="Canceled"){
  9919. +//                    $totalCancelItem++;
  9920. +//                }
  9921. +                //Check Status For item Cancel              
  9922. +                $qtyAvailForCancel = $orderItem->getQtyToCancel();                                
  9923. +                // Cancel if ordered quantity is equal to quantity available to cancel
  9924. +                $totalOrderedQuantity =  $orderItem->getQtyOrdered();
  9925. +                
  9926. +                
  9927. +                if(isSet($orderCsvData[$productId]) && $item_status =="Ordered"){
  9928. +                    $stockStatus = 1;
  9929.                      
  9930. -                    //if(isSet($orderCsvData[$productId]) && $item_status =="Ordered"){
  9931. -                    if (isSet($csvItemData) && $qtyAvailForCancel > 0 && $qtyReorder > 0) {
  9932. -                        $stockStatus = 1;
  9933. -
  9934. -                        // Overwritten in case of sku updation
  9935. -                        if ($csvItemData['new_sku'] != '') {
  9936. -                            if ($orderItem->getSku() != $csvItemData['new_sku']) {
  9937. -                                $flag = 1;
  9938. -                            }
  9939. -                        } else {
  9940. -                            $csvItemData['new_sku'] = $orderItem->getSku();
  9941. -                        }
  9942. -                        // Product Id
  9943. -                        $queryProduct = "SELECT entity_id as product_id  FROM catalog_product_entity where sku = '" . $csvItemData['new_sku'] . "'";
  9944. -                        $row = $this->readConnection->fetchRow($queryProduct);
  9945. -                        $product_id = $row['product_id'];
  9946. -                        if (!$product_id) {
  9947. -                            $wrongSku = 1;
  9948. -                        }
  9949. -
  9950. -                        if ($csvItemData['custom_price_per_unit'] != "") {
  9951. -                            $price = $csvItemData['custom_price_per_unit'];
  9952. -                            $basePrice = $csvItemData['custom_price_per_unit'];
  9953. -                        } else {
  9954. -                            //Price excluding tax of a unit
  9955. -                            $price = $orderItem->getPrice();
  9956. -                            $basePrice = $orderItem->getBasePrice();
  9957. -                        }
  9958. -
  9959. -                        $rowTotal = $price * $qtyReorder;
  9960. -
  9961. -                        $unitTax = $csvItemData['tax_amount'] / $orderItem->getQtyOrdered();
  9962. -                        $rowTax = $unitTax * $qtyReorder;
  9963. -                        $rowTotalIncludeTax = $rowTotal + $rowTax;
  9964. -
  9965. -                        //$discountAmount = $csvItemData['discount_amount'];
  9966. -                        $newOrderedRowTotal = $rowTotalIncludeTax;
  9967. -                        //$discountAmount =0;
  9968. -                        //$csvItemData = $orderCsvData[$orderItemNew->getSku()];
  9969. -                        //$rowTotal = $orderItem->getPrice() * $qtyReorder;                    
  9970. -                        //$unitTax    =   $orderItem->getTaxAmount() / $orderedQantity;
  9971. -                        //$rowTax = $unitTax * $qtyReorder;
  9972. -                        //$rowTotalIncludeTax = $rowTotal + $rowTax ;
  9973. -
  9974. -                        $unitDiscount = $orderItem->getDiscountAmount() / $orderedQantity;
  9975. -                        $discountAmount = $unitDiscount * $qtyReorder;
  9976. -                        $orderedRowTotal = $rowTotalIncludeTax - $discountAmount;
  9977. -
  9978. -                        $newOrderedRowTotal = 0;
  9979. -                        $orderItemNew = Mage::getModel('sales/order_item')
  9980. +                    //$customPrice = $orderItem->getCustomPrice();//CSV
  9981. +                    $rowTotal = $orderItem->getPrice() * $orderItem->getQtyOrdered();
  9982. +                    $rowTotalIncludeTax = $rowTotal + $orderItem->getTaxAmount() ;
  9983. +                    $rowTax = $orderItem->getTaxAmount();
  9984. +                    $discountAmount = $orderItem->getDiscountAmount();
  9985. +                    $orderedRowTotal = $rowTotalIncludeTax -$discountAmount;
  9986. +                    $newOrderedRowTotal =0;
  9987. +                    $orderItemNew = Mage::getModel('sales/order_item')
  9988.                                  ->setStoreId($storeId)
  9989.                                  ->setQuoteItemId(0)
  9990.                                  ->setQuoteParentItemId(NULL)
  9991.                                  ->setProductId($productId)
  9992.                                  ->setProductType($orderItem->getProductType())
  9993.                                  ->setQtyBackordered(NULL)
  9994. -                                ->setQtyOrdered($qtyReorder)
  9995. +                                ->setQtyOrdered($orderItem->getQtyOrdered())//CSV
  9996.                                  ->setName($orderItem->getName())
  9997. -                                ->setPrice($orderItem->getPrice())
  9998. -                                ->setBasePrice($orderItem->getBasePrice())
  9999. -                                ->setOriginalPrice($orderItem->getOriginalPrice())
  10000. -                                ->setBaseOriginalPrice($orderItem->getBaseOriginalPrice())
  10001. -                                ->setTaxAmount($rowTax)
  10002. -                                ->setBaseTaxAmount($rowTax)
  10003. -                                ->setPriceInclTax($orderItem->getPriceInclTax())
  10004. +                                ->setSku($orderItem->getSku())//CSV
  10005. +                                ->setPrice($orderItem->getPrice())//CSV
  10006. +                                ->setBasePrice($orderItem->getBasePrice())//CSV
  10007. +                                ->setOriginalPrice($orderItem->getOriginalPrice())//CSV
  10008. +                                ->setBaseOriginalPrice($orderItem->getBaseOriginalPrice())//CSV
  10009. +                                ->setTaxPercent($orderItem->getTaxPercent())//CSV
  10010. +                                ->setTaxAmount($orderItem->getTaxAmount())//CSV
  10011. +                                ->setBaseTaxAmount($orderItem->getBaseTaxAmount())//CSV
  10012. +                                ->setPriceInclTax($orderItem->getPriceInclTax())//CSV
  10013.                                  ->setBasePriceInclTax($orderItem->getBasePriceInclTax())
  10014. -                                ->setRowTotal($rowTotal)
  10015. -                                ->setTolexoBasePrice($orderItem->getTolexoBasePrice())
  10016. +                                ->setRowTotal($rowTotal)//CSV
  10017. +                                ->setRowTotalInclTax($orderItem->getRowTotalInclTax())//CSV
  10018. +                                ->setBaseRowTotalInclTax($orderItem->getBaseRowTotalInclTax())//CSV
  10019. +                                ->setTolexoBasePrice($orderItem->getTolexoBasePrice())//CSV
  10020.                                  ->setTolexoDeliveryDetails($orderItem->getTolexoDeliveryDetails())
  10021.                                  ->setBaseRowTotal($rowTotal)
  10022. -                                ->setDiscountAmount($discountAmount)
  10023. +                                ->setRowWeight($orderItem->getRowWeight())
  10024. +                                ->setDiscountAmount($discountAmount)//CSV
  10025.                                  ->setDiscountPercent($orderItem->getDiscountPercent())
  10026. -                                ->setBaseDiscountAmount($discountAmount)
  10027. +                                ->setBaseDiscountAmount($orderItem->getBaseDiscountAmount())//CSV
  10028.                                  ->setAppliedRuleIds($orderItem->getAppliedRuleIds())
  10029. -                                ->setRowWeight($orderItem->getRowWeight())
  10030. -                                ->setPrice($price)
  10031. -                                ->setQty($qtyReorder)
  10032. -                                ->setTaxPercent($csvItemData['tax_percent'])
  10033. -                                ->setTaxAmount($rowTax)
  10034. -                                ->setBaseRowTotal($rowTotal)
  10035. -                                ->setBaseRowTotalInclTax()
  10036. -                                ->setRowTotal($rowTotal)
  10037. -                                ->setName($orderItem->getName())
  10038. -                                ->setRowTotalInclTax($rowTotalIncludeTax)
  10039. -                                ->setBaseRowTotalInclTax($rowTotalIncludeTax)
  10040. -                                ->setProductId($product_id)
  10041. -                                ->setBasePrice($basePrice)
  10042. -                                ->setSku($csvItemData['new_sku']);
  10043. -
  10044. -                        $orderedRowTotal = round($orderedRowTotal, 2);
  10045. -                        $newOrderedRowTotal = round($newOrderedRowTotal, 2);
  10046. -
  10047. -                        if ($orderedRowTotal != $newOrderedRowTotal) {
  10048. -                            $rowTotalNotMatch = 0;
  10049. -                        }
  10050. -                        $subTotal += $rowTotal;
  10051. -                        $subTotalWTax += $rowTotalIncludeTax;
  10052. -
  10053. -                        $totalTax += $rowTax;
  10054. -                        $totalDiscount += $discountAmount;
  10055. -                        $order->addItem($orderItemNew);
  10056. -
  10057. -                        // Collect information for cancel Item $oldOrder
  10058. -                        //if($orderItem->getSku()==$csvItemData['old_sku'] && $qtyAvailForCancel == $orderedQantity ){
  10059. -                        if ($orderItem->getSku() == $csvItemData['old_sku']) {
  10060. -
  10061. -                            Mage::dispatchEvent('sales_order_item_cancel', array('item' => $orderItem));
  10062. -                            $orderItem->setQtyCanceled($qtyAvailForCancel);
  10063. -                            $cancelTaxItem = $orderItem->getTaxCanceled() +
  10064. -                                    $orderItem->getBaseTaxAmount() * $orderItem->getQtyCanceled() / $orderItem->getQtyOrdered();
  10065. -                            $orderItem->setTaxCanceled($cancelTaxItem);
  10066. -                            $orderItem->setHiddenTaxCanceled(
  10067. -                                    $orderItem->getHiddenTaxCanceled() +
  10068. -                                    $orderItem->getHiddenTaxAmount() * $orderItem->getQtyCanceled() / $orderItem->getQtyOrdered()
  10069. -                            );
  10070. -
  10071. -                            $cancelItemPrice += $orderItem->getPrice() * $orderItem->getQtyCanceled();
  10072. -                            $cancelDiscountAmount += $orderItem->getDiscountAmount() * $orderItem->getQtyCanceled() / $orderItem->getQtyOrdered();
  10073. -                            $cancelTaxAmount += $cancelTaxItem;
  10074. -                            if ($qtyReorder == $orderItem->getQtyOrdered()) {
  10075. -                                $totalCancelItem++;
  10076. -                            }
  10077. -                        }
  10078. -                        // End cancel Item
  10079. -                    } else {
  10080. -                        if ($item_status == "Canceled") {
  10081. -                            //Adding cancled Items  
  10082. -                            $totalCancelItem++;
  10083. +                                ->setRowWeight($orderItem->getRowWeight());
  10084. +                // Overwritten in case of sku updation
  10085. +                //if(isSet($orderCsvData[$productId]) ){  
  10086. +                    //$orderCsvData[order_status] Order Current Status
  10087. +                
  10088. +                    $csvItemData = $orderCsvData[$productId];
  10089. +                    if($csvItemData['new_sku'] !=''){
  10090. +                        if($orderItem->getSku() != $csvItemData['new_sku']){
  10091. +                            $flag = 1;
  10092.                          }
  10093. +                    }else{
  10094. +                        $csvItemData['new_sku'] = $orderItem->getSku();                        
  10095. +                    }
  10096. +                    // Product Id
  10097. +                    $queryProduct = "SELECT entity_id as product_id  FROM catalog_product_entity where sku = '".$csvItemData['new_sku']."'";
  10098. +                    $row = $readConnection->fetchRow($queryProduct);
  10099. +                    $product_id = $row['product_id'];
  10100. +                    if(!$product_id){
  10101. +                        //echo "Wrong new_sku provided for order ".$oldOrderId."<br/>";
  10102. +                        $wrongSku =1;
  10103. +                        //break;
  10104. +                    }
  10105. +                    
  10106. +                    if($csvItemData['custom_price_per_unit']!=""){
  10107. +                        $price = $csvItemData['custom_price_per_unit'];
  10108. +                        $basePrice = $csvItemData['custom_price_per_unit'];
  10109. +                      
  10110. +                    }else{
  10111. +                        //Price excluding tax of a unit
  10112. +                        $price = $orderItem->getPrice();                        
  10113. +                        $basePrice = $orderItem->getBasePrice();
  10114. +                        //$csvItemData['price'] contain tax
  10115. +                        
  10116.                      }
  10117. +                  
  10118. +
  10119. +                    
  10120. +                    $rowTotal = $price * $orderItem->getQtyOrdered();
  10121. +                    $rowTotalIncludeTax = $rowTotal + $csvItemData['tax_amount'];
  10122. +                    $rowTax = $csvItemData['tax_amount'];
  10123. +                    //$discountAmount = $csvItemData['discount_amount'];
  10124. +                    $newOrderedRowTotal = $rowTotalIncludeTax ;
  10125. +                    $discountAmount =0;
  10126. +                    //$csvItemData = $orderCsvData[$orderItemNew->getSku()];
  10127. +                    $orderItemNew   ->setSku($csvItemData['new_sku'])
  10128. +                                    ->setPrice($price)
  10129. +                                    ->setQty($orderItem->getQtyOrdered())  
  10130. +//                                    ->setTolexoBasePrice($csvItemData['tolexo_base_price'])  
  10131. +                                    ->setDiscountAmount($discountAmount)
  10132. +//                                    ->setTaxPercent($csvItemData['tax_percent'])  
  10133. +                                    ->setTaxAmount($csvItemData['tax_amount'])
  10134. +                                    ->setQtyOrdered($orderItem->getQtyOrdered())//CSV
  10135. +                                    ->setBaseRowTotal($rowTotal)
  10136. +                                    ->setBaseRowTotalInclTax()
  10137. +                                    ->setRowTotal($rowTotal)//CSV
  10138. +                                    ->setName($orderItem->getName())
  10139. +                                    ->setRowTotalInclTax($rowTotalIncludeTax)//CSV
  10140. +                                    ->setProductId($product_id)
  10141. +                                    ->setBasePrice($basePrice)
  10142. +                                    ->setPrice($price);
  10143. +                                
  10144. +                              
  10145. +              
  10146. +                $orderedRowTotal = round($orderedRowTotal, 2);
  10147. +                $newOrderedRowTotal = round($newOrderedRowTotal, 2);
  10148. +                
  10149. +                
  10150. +               if($orderedRowTotal != $newOrderedRowTotal) {
  10151. +                    //echo "Row Total does not match for order ".$oldOrderId."<br/>";
  10152. +                    $rowTotalNotMatch =1;
  10153. +                  
  10154. +               }
  10155. +                
  10156. +                
  10157. +                
  10158. +                $subTotal += $rowTotal;
  10159. +                $subTotalWTax += $rowTotalIncludeTax;
  10160. +                //$subTotalWTax = $rowTotalIncludeTax;
  10161. +                $totalTax += $rowTax;
  10162. +                $totalDiscount += $discountAmount;
  10163. +                $order->addItem($orderItemNew);
  10164. +                
  10165. +                // Collect information for cancel Item $oldOrder
  10166. +                if($orderItem->getSku()==$csvItemData['old_sku'] && $qtyAvailForCancel == $totalOrderedQuantity ){
  10167. +                      
  10168. +                       Mage::dispatchEvent('sales_order_item_cancel', array('item'=>$orderItem));
  10169. +                       $orderItem->setQtyCanceled($qtyAvailForCancel);
  10170. +                       $cancelTaxItem = $orderItem->getTaxCanceled() +
  10171. +                       $orderItem->getBaseTaxAmount() * $orderItem->getQtyCanceled() / $orderItem->getQtyOrdered();
  10172. +                       $orderItem->setTaxCanceled($cancelTaxItem);
  10173. +                       $orderItem->setHiddenTaxCanceled(
  10174. +                           $orderItem->getHiddenTaxCanceled() +
  10175. +                           $orderItem->getHiddenTaxAmount() * $orderItem->getQtyCanceled() / $orderItem->getQtyOrdered()
  10176. +                       );
  10177. +
  10178. +                       $cancelItemPrice += $orderItem->getPrice()*$orderItem->getQtyCanceled();                      
  10179. +                       $cancelDiscountAmount += $orderItem->getDiscountAmount()* $orderItem->getQtyCanceled()/$orderItem->getQtyOrdered();                      
  10180. +                       $cancelTaxAmount += $cancelTaxItem;
  10181. +                       $totalCancelItem++;
  10182.                  }
  10183. +                
  10184. +                
  10185. +                
  10186. +                
  10187. +                
  10188. +                // End cancel Item
  10189. +                
  10190. +               }
  10191. +               else{
  10192. +                   if($item_status == "Canceled"){
  10193. +                       //Adding cancled Items  
  10194. +                       $totalCancelItem++;
  10195. +                   }
  10196. +               }
  10197. +            }
  10198.  //End Of Item Update
  10199.  // Adding Shipping Information to Order    
  10200. -                $order->setHiddenTaxAmount($oldOrder->getHiddenTaxAmount())
  10201. -                        ->setStoreToBaseRate($oldOrder->getStoreToBaseRate())
  10202. -                        ->setShippingDescription($oldOrder->getShippingDescription())
  10203. -                        ->setStoreToOrderRate($oldOrder->getStoreToOrderRate())
  10204. -                        ->setBaseToGlobalRate($oldOrder->getBaseToGlobalRate())
  10205. -                        ->setBaseToOrderRate($oldOrder->getBaseToOrderRate())
  10206. -                        ->setTotalQtyOrdered($oldOrder->getTotalQtyOrdered()); // Total Item Ordered
  10207. -
  10208. -                if ($totalItemInOrder == $totalCancelItem) {
  10209. -                    $order->setBaseShippingInclTax($oldOrder->getBaseShippingInclTax())
  10210. -                            ->setShippingInclTax($oldOrder->getShippingInclTax())
  10211. -                            ->setBaseShippingHiddenTaxAmnt($oldOrder->getBaseShippingHiddenTaxAmnt())
  10212. -                            ->setShippingHiddenTaxAmount($oldOrder->getShippingHiddenTaxAmount())
  10213. -                            ->setBaseShippingDiscountAmount($oldOrder->getBaseShippingDiscountAmount())
  10214. -                            ->setShippingDiscountAmount($oldOrder->getShippingDiscountAmount())
  10215. -                            ->setShippingAmount($oldOrder->getShippingAmount());
  10216. -                    $grandTotal = $subTotalWTax + $oldOrder->getShippingAmount() - $totalDiscount;
  10217. -                } else {
  10218. -                    $grandTotal = $subTotalWTax - $totalDiscount;
  10219. -                }
  10220. +            $order->setBaseShippingInclTax($oldOrder->getBaseShippingInclTax())
  10221. +                    ->setShippingInclTax($oldOrder->getShippingInclTax())
  10222. +                    ->setBaseShippingHiddenTaxAmnt($oldOrder->getBaseShippingHiddenTaxAmnt())
  10223. +                    ->setHiddenTaxAmount($oldOrder->getHiddenTaxAmount())
  10224. +                    ->setShippingHiddenTaxAmount($oldOrder->getShippingHiddenTaxAmount())
  10225. +                    ->setBaseShippingDiscountAmount($oldOrder->getBaseShippingDiscountAmount())
  10226. +                    ->setShippingDiscountAmount($oldOrder->getShippingDiscountAmount())
  10227. +                    ->setShippingAmount($oldOrder->getShippingAmount())
  10228. +                    ->setStoreToBaseRate($oldOrder->getStoreToBaseRate())
  10229. +                    ->setShippingDescription($oldOrder->getShippingDescription())
  10230. +                    ->setStoreToOrderRate($oldOrder->getStoreToOrderRate())
  10231. +                    ->setBaseToGlobalRate($oldOrder->getBaseToGlobalRate())
  10232. +                    ->setBaseToOrderRate($oldOrder->getBaseToOrderRate())
  10233. +                    ->setTotalQtyOrdered($oldOrder->getTotalQtyOrdered()); // Total Item Ordered
  10234.  
  10235.  //Adding Price information to Order
  10236. -
  10237. -                $order->setSubtotal($subTotal)
  10238. -                        ->setBaseSubtotal($subTotal)
  10239. -                        ->setWeight($oldOrder->getWeight())
  10240. -                        ->setGrandTotal($grandTotal)
  10241. -                        ->setTaxAmount($totalTax)
  10242. -                        ->setBaseTaxAmount($totalTax)
  10243. -                        ->setBaseTotalDue($subTotal)
  10244. -                        //        ->setTotalDue($subTotalWTax)
  10245. -                        ->setBaseSubtotalInclTax($subTotalWTax)
  10246. -                        ->setSubtotalInclTax($subTotalWTax)
  10247. -                        ->setBaseGrandTotal($subTotalWTax)
  10248. -                        ->setDiscountAmount(-$totalDiscount)
  10249. -                        ->setStatus("processing")
  10250. -                        ->setState("processing")
  10251. -                        ->setCustomerEmail($oldOrder->getCustomerEmail())
  10252. -                        ->setCustomerFirstname($oldOrder->getCustomerFirstname())
  10253. -                        ->setCustomerLastname($oldOrder->getCustomerLastname())
  10254. -                        ->setCustomerGroupId($oldOrder->getCustomerGroupId())
  10255. -                        ->setCoupanRuleName($oldOrder->getCoupanRuleName());
  10256. -
  10257. -
  10258. -                if (!$wrongSku && !$rowTotalNotMatch && $subTotalWTax > 0) {
  10259. -                    $transaction->addObject($order);
  10260. -                    $transaction->addCommitCallback(array($order, 'place'));
  10261. -                    $transaction->addCommitCallback(array($order, 'save'));
  10262. -                    $transaction->save();
  10263. -
  10264. -                    $newOrderObj = Mage::getModel("sales/order")->loadByIncrementId($newOrderIdReplace);
  10265. -                    $newOrderId = $newOrderObj->getId();
  10266. -                    $newOrderObj->setStatus("processing")
  10267. +            $grandTotal = $subTotalWTax+$oldOrder->getShippingAmount()-$totalDiscount;
  10268. +            $order->setSubtotal($subTotal)
  10269. +                ->setBaseSubtotal($subTotal)
  10270. +                ->setWeight($oldOrder->getWeight())
  10271. +                ->setGrandTotal($grandTotal)
  10272. +                ->setTaxAmount($totalTax)
  10273. +                ->setBaseTaxAmount($totalTax)
  10274. +                ->setBaseTotalDue($subTotal)
  10275. +        //        ->setTotalDue($subTotalWTax)
  10276. +                ->setBaseSubtotalInclTax($subTotalWTax)
  10277. +                ->setSubtotalInclTax($subTotalWTax)
  10278. +                ->setBaseGrandTotal($subTotalWTax)
  10279. +                ->setDiscountAmount(-$totalDiscount)
  10280. +                ->setStatus("processing")
  10281. +                ->setState("processing")
  10282. +                ->setCustomerEmail($oldOrder->getCustomerEmail())
  10283. +                ->setCustomerFirstname($oldOrder->getCustomerFirstname())
  10284. +                ->setCustomerLastname($oldOrder->getCustomerLastname())                    
  10285. +                ->setCustomerGroupId($oldOrder->getCustomerGroupId())                    
  10286. +                ->setCoupanRuleName($oldOrder->getCoupanRuleName());
  10287. +
  10288. +            
  10289. +            if( !$wrongSku && !$rowTotalNotMatch && $subTotalWTax >0){
  10290. +                $transaction->addObject($order);
  10291. +                $transaction->addCommitCallback(array($order, 'place'));
  10292. +                $transaction->addCommitCallback(array($order, 'save'));
  10293. +                $transaction->save();
  10294. +
  10295. +                $newOrderObj =  Mage::getModel("sales/order")->loadByIncrementId($newOrderIdReplace);
  10296. +                $newOrderId= $newOrderObj->getId();
  10297. +                $newOrderObj->setStatus("processing")
  10298.                              ->setState("processing");
  10299. -                    $newOrderObj->save();
  10300. -
  10301. -
  10302. -                    // Update Main Order
  10303. -                    $oldOrder->setRelationChildId($newOrderId)
  10304. -                            ->setRelationChildRealId($newOrderIdReplace);
  10305. -                    //Ite$oldOrderm Cancel
  10306. -                    // item Remain to cancel
  10307. -                    $availableItemToCancel = $totalItemInOrder - $totalCancelItem;
  10308. -
  10309. -                    if ($availableItemToCancel >= 0) {
  10310. -                        // Set Sub Total Cancelled
  10311. -                        $oldOrder->setSubtotalCanceled($oldOrder->getSubtotalCanceled() + $cancelItemPrice);
  10312. -                        // Set Base Sub Total Cancelled
  10313. -                        $oldOrder->setBaseSubtotalCanceled($oldOrder->getBaseSubtotalCanceled() + $cancelItemPrice);
  10314. -
  10315. -                        // Set Tax Cancelled
  10316. -                        $oldOrder->setTaxCanceled($oldOrder->getTaxCanceled() + $cancelTaxAmount);
  10317. -                        // Set Base tax cancelled
  10318. -                        $oldOrder->setBaseTaxCanceled($oldOrder->getBaseTaxCanceled() + $cancelTaxAmount);
  10319. -                        // Set Total Canceled
  10320. -                        $oldOrder->setTotalCanceled($oldOrder->getTotalCanceled() + $cancelItemPrice + $cancelTaxAmount);
  10321. -                        $oldOrder->setSubTotalCanceled($oldOrder->getSubTotalCanceled() + $cancelItemPrice);
  10322. -                        $oldOrder->setBaseSubTotalCanceled($oldOrder->getBaseSubTotalCanceled() + $cancelItemPrice);
  10323. -
  10324. -                        // Set Base Total Cancelled
  10325. -                        $oldOrder->setBaseTotalCanceled($oldOrder->gettBaseTotalCanceled() + $cancelItemPrice + $cancelTaxAmount);
  10326. -
  10327. -                        // Set Discount Cancelled
  10328. -                        $oldOrder->setDiscountCanceled(abs($oldOrder->getDiscountCanceled()) + $cancelDiscountAmount);
  10329. -                        // Set base Discount Cancel
  10330. -                        $oldOrder->setBaseDiscountCanceled(abs($oldOrder->getDiscountCanceled()) + $cancelDiscountAmount);
  10331. -                    } else {
  10332. -                        // Order Can Not Cancelled
  10333. -                        echo $orderId . "- " . $sku . "-Not canceled, Already canceled or sku is mismatched or order partially invoice/shiped ." . $this->seprator;
  10334. -                        return false;
  10335. -                    }
  10336. -
  10337. -                    //Item cancel End
  10338. -
  10339. -                    if ($availableItemToCancel >= 0) {
  10340. -                        try {
  10341. -                            if ($totalItemInOrder == $totalCancelItem) {
  10342. -                                // Mark order as cancellation_new_order_created  if all items are cancel
  10343. -                                $oldOrder->cancel();
  10344. -
  10345. -                                $oldOrder->setStatus("cancellation_new_order_created");
  10346. -                                $history = $order->addStatusHistoryComment('Order marked as cancelled.', false);
  10347. -                                $history->setIsCustomerNotified(false);
  10348. -                            }
  10349. -
  10350. -                            // ...
  10351. -                            $oldOrder->save();
  10352. -                            echo "Place a new order for " . $oldOrderId . " and Successfully Cancel order. " . $this->seprator;
  10353. -                            return true;
  10354. -                        } catch (Exception $e) {
  10355. -                            Mage::logException($e);
  10356. -                            echo $e->getMessage();
  10357. -                        }
  10358. -                    } else {
  10359. -                        echo "Already Canceled order. " . $this->seprator;
  10360. +                $newOrderObj->save();  
  10361. +                
  10362. +                
  10363. +                // Update Main Order
  10364. +                $oldOrder->setRelationChildId($newOrderId)
  10365. +                        ->setRelationChildRealId($newOrderIdReplace);
  10366. +                //Ite$oldOrderm Cancel
  10367. +                // item Remain to cancel
  10368. +                $availableItemToCancel = $totalItemInOrder - $totalCancelItem;
  10369. +              
  10370. +                if($availableItemToCancel >=0 ){                    
  10371. +                    // Set Sub Total Cancelled
  10372. +                    $oldOrder->setSubtotalCanceled($oldOrder->getSubtotalCanceled() + $cancelItemPrice);            
  10373. +                    // Set Base Sub Total Cancelled
  10374. +                    $oldOrder->setBaseSubtotalCanceled($oldOrder->getBaseSubtotalCanceled() + $cancelItemPrice);
  10375. +
  10376. +                    // Set Tax Cancelled
  10377. +                    $oldOrder->setTaxCanceled($oldOrder->getTaxCanceled() + $cancelTaxAmount);
  10378. +                    // Set Base tax cancelled
  10379. +                    $oldOrder->setBaseTaxCanceled($oldOrder->getBaseTaxCanceled() + $cancelTaxAmount);
  10380. +                    // Set Total Canceled
  10381. +                    $oldOrder->setTotalCanceled($oldOrder->getTotalCanceled()+$cancelItemPrice + $cancelTaxAmount );            
  10382. +                    $oldOrder->setSubTotalCanceled($oldOrder->getSubTotalCanceled() +$cancelItemPrice  );
  10383. +                    $oldOrder->setBaseSubTotalCanceled($oldOrder->getBaseSubTotalCanceled() +$cancelItemPrice  );
  10384. +
  10385. +                    // Set Base Total Cancelled
  10386. +                    $oldOrder->setBaseTotalCanceled($oldOrder->gettBaseTotalCanceled() + $cancelItemPrice +$cancelTaxAmount);
  10387. +
  10388. +                    // Set Discount Cancelled
  10389. +                    $oldOrder->setDiscountCanceled(abs($oldOrder->getDiscountCanceled()) + $cancelDiscountAmount);
  10390. +                    // Set base Discount Cancel
  10391. +                    $oldOrder->setBaseDiscountCanceled(abs($oldOrder->getDiscountCanceled()) + $cancelDiscountAmount);
  10392. +                    
  10393. +                  
  10394. +                }else{
  10395. +                    // Order Can Not Cancelled
  10396. +                    echo $orderId."- ".$sku."-Not canceled, Already canceled or sku is mismatched or order partially invoice/shiped .<br/>";
  10397. +                    return false;
  10398. +                }
  10399. +                
  10400. +                //Item cancel End
  10401. +                //if ($oldOrder->canCancel()) {
  10402. +                if ($availableItemToCancel >=0) {
  10403. +                    try {
  10404. +                        if($totalItemInOrder == $totalCancelItem){
  10405. +                            // Mark order as cancellation_new_order_created  if all items are cancel
  10406. +                            $oldOrder->cancel();
  10407. +                            echo "Inside Cancel";
  10408. +                            $oldOrder->setStatus("cancellation_new_order_created");
  10409. +                            $history = $order->addStatusHistoryComment('Order marked as cancelled.', false);
  10410. +                            $history->setIsCustomerNotified(false);
  10411. +                            
  10412. +                        }      
  10413. +                        
  10414. +                        // ...
  10415. +                        $oldOrder->save();                        
  10416. +                        echo "Place a new order for ". $oldOrderId." and Successfully Cancel order<br/>";
  10417. +                        return true;
  10418. +
  10419. +                    } catch (Exception $e) {
  10420. +                        Mage::logException($e);
  10421. +                        echo $e->getMessage();
  10422.                      }
  10423. -                } else {
  10424. -                    echo "Provided new_sku is wrong for  " . $oldOrderId . " or , row total is not match. " . $this->seprator;
  10425. +                }else{
  10426. +                    echo "Already Canceled order <br/>";
  10427.                  }
  10428. -                // echo 'DoneDanaDone';
  10429. -            } else {
  10430. -                echo $exception = "Can not cancel Order " . $oldOrderId . $this->seprator;
  10431. +            
  10432. +            }else{
  10433. +                echo "Provided new_sku is wrong for  ".$oldOrderId." or , row total is not match.<br/>";
  10434. +                
  10435.              }
  10436. -        } catch (Exception $e) {
  10437. +               // echo 'DoneDanaDone';
  10438. +            }else{
  10439. +                echo $exception = "Can not cancel Order ".$oldOrderId.".<br/>";
  10440. +            }
  10441. +        }  catch (Exception $e){
  10442.              echo $e->getMessage();
  10443.          }
  10444. -    }
  10445.  
  10446. +}
  10447.  // End reorder Function
  10448.  //exit;
  10449. -//function to read csv file
  10450.  
  10451. -    private function csv_to_array($filename = '', $delimiter = ',') {
  10452. -        if (!file_exists($filename) || !is_readable($filename))
  10453. -            return FALSE;
  10454. +//function to read csv file
  10455.  
  10456. -        $header = NULL;
  10457. -        $data = array();
  10458. -        if (($handle = fopen($filename, 'r')) !== FALSE) {
  10459. -            while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
  10460. -                if (!$header)
  10461. -                    $header = $row;
  10462. -                else
  10463. -                    $data[] = array_combine($header, $row);
  10464. -            }
  10465. -            fclose($handle);
  10466. +function csv_to_array($filename='', $delimiter=',')
  10467. +{
  10468. +    if(!file_exists($filename) || !is_readable($filename))
  10469. +        return FALSE;
  10470. +
  10471. +    $header = NULL;
  10472. +    $data = array();
  10473. +    if (($handle = fopen($filename, 'r')) !== FALSE)
  10474. +    {
  10475. +        while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
  10476. +        {
  10477. +            if(!$header)
  10478. +                $header = $row;
  10479. +            else
  10480. +                $data[] = array_combine($header, $row);
  10481.          }
  10482. -        return $data;
  10483. +        fclose($handle);
  10484.      }
  10485. +    return $data;
  10486. +}
  10487.  
  10488. -    private function _group_by($array, $key) {
  10489. -        $return = array();
  10490. -        $returnA = array();
  10491. -        foreach ($array as $val) {
  10492. -            $return[$val[$key]][] = $val;
  10493. -            //$returnA = array_push($returnA, $return);
  10494. -        }
  10495. -        return $return;
  10496. +function _group_by($array, $key) {
  10497. +    $return = array();
  10498. +    $returnA = array();
  10499. +    foreach($array as $val) {
  10500. +        $return[$val[$key]][] = $val;
  10501. +        //$returnA = array_push($returnA, $return);
  10502.      }
  10503. -
  10504. +    return $return;
  10505.  }
  10506.  
  10507. -$params = array_slice($argv, 1);
  10508. -$shell = new Tolexo_Utils_Partial_Reorder($params);
  10509. -$shell->run();
  10510. +
  10511. +
  10512.  ?>
  10513. diff --git a/js/categoryreorder/css/font/FontAwesome.otf b/js/categoryreorder/css/font/FontAwesome.otf
  10514. deleted file mode 100644
  10515. index f7936cc..0000000
  10516. Binary files a/js/categoryreorder/css/font/FontAwesome.otf and /dev/null differ
  10517. diff --git a/js/categoryreorder/css/font/fontawesome-webfont.eot b/js/categoryreorder/css/font/fontawesome-webfont.eot
  10518. deleted file mode 100644
  10519. index 33b2bb8..0000000
  10520. Binary files a/js/categoryreorder/css/font/fontawesome-webfont.eot and /dev/null differ
  10521. diff --git a/js/categoryreorder/css/font/fontawesome-webfont.svg b/js/categoryreorder/css/font/fontawesome-webfont.svg
  10522. deleted file mode 100644
  10523. index 1ee89d4..0000000
  10524. --- a/js/categoryreorder/css/font/fontawesome-webfont.svg
  10525. +++ /dev/null
  10526. @@ -1,565 +0,0 @@
  10527. -<?xml version="1.0" standalone="no"?>
  10528. -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
  10529. -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
  10530. -<metadata></metadata>
  10531. -<defs>
  10532. -<font id="fontawesomeregular" horiz-adv-x="1536" >
  10533. -<font-face units-per-em="1792" ascent="1536" descent="-256" />
  10534. -<missing-glyph horiz-adv-x="448" />
  10535. -<glyph unicode=" "  horiz-adv-x="448" />
  10536. -<glyph unicode="&#x09;" horiz-adv-x="448" />
  10537. -<glyph unicode="&#xa0;" horiz-adv-x="448" />
  10538. -<glyph unicode="&#xa8;" horiz-adv-x="1792" />
  10539. -<glyph unicode="&#xa9;" horiz-adv-x="1792" />
  10540. -<glyph unicode="&#xae;" horiz-adv-x="1792" />
  10541. -<glyph unicode="&#xb4;" horiz-adv-x="1792" />
  10542. -<glyph unicode="&#xc6;" horiz-adv-x="1792" />
  10543. -<glyph unicode="&#xd8;" horiz-adv-x="1792" />
  10544. -<glyph unicode="&#x2000;" horiz-adv-x="768" />
  10545. -<glyph unicode="&#x2001;" horiz-adv-x="1537" />
  10546. -<glyph unicode="&#x2002;" horiz-adv-x="768" />
  10547. -<glyph unicode="&#x2003;" horiz-adv-x="1537" />
  10548. -<glyph unicode="&#x2004;" horiz-adv-x="512" />
  10549. -<glyph unicode="&#x2005;" horiz-adv-x="384" />
  10550. -<glyph unicode="&#x2006;" horiz-adv-x="256" />
  10551. -<glyph unicode="&#x2007;" horiz-adv-x="256" />
  10552. -<glyph unicode="&#x2008;" horiz-adv-x="192" />
  10553. -<glyph unicode="&#x2009;" horiz-adv-x="307" />
  10554. -<glyph unicode="&#x200a;" horiz-adv-x="85" />
  10555. -<glyph unicode="&#x202f;" horiz-adv-x="307" />
  10556. -<glyph unicode="&#x205f;" horiz-adv-x="384" />
  10557. -<glyph unicode="&#x2122;" horiz-adv-x="1792" />
  10558. -<glyph unicode="&#x221e;" horiz-adv-x="1792" />
  10559. -<glyph unicode="&#x2260;" horiz-adv-x="1792" />
  10560. -<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
  10561. -<glyph unicode="&#xf000;" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
  10562. -<glyph unicode="&#xf001;" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
  10563. -<glyph unicode="&#xf002;" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
  10564. -<glyph unicode="&#xf003;" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
  10565. -<glyph unicode="&#xf004;" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" />
  10566. -<glyph unicode="&#xf005;" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" />
  10567. -<glyph unicode="&#xf006;" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
  10568. -<glyph unicode="&#xf007;" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
  10569. -<glyph unicode="&#xf008;" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
  10570. -<glyph unicode="&#xf009;" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
  10571. -<glyph unicode="&#xf00a;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
  10572. -<glyph unicode="&#xf00b;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
  10573. -<glyph unicode="&#xf00c;" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
  10574. -<glyph unicode="&#xf00d;" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
  10575. -<glyph unicode="&#xf00e;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
  10576. -<glyph unicode="&#xf010;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " />
  10577. -<glyph unicode="&#xf011;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
  10578. -<glyph unicode="&#xf012;" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
  10579. -<glyph unicode="&#xf013;" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
  10580. -<glyph unicode="&#xf014;" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
  10581. -<glyph unicode="&#xf015;" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
  10582. -<glyph unicode="&#xf016;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z " />
  10583. -<glyph unicode="&#xf017;" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10584. -<glyph unicode="&#xf018;" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
  10585. -<glyph unicode="&#xf019;" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
  10586. -<glyph unicode="&#xf01a;" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10587. -<glyph unicode="&#xf01b;" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10588. -<glyph unicode="&#xf01c;" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" />
  10589. -<glyph unicode="&#xf01d;" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10590. -<glyph unicode="&#xf01e;" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
  10591. -<glyph unicode="&#xf021;" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
  10592. -<glyph unicode="&#xf022;" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" />
  10593. -<glyph unicode="&#xf023;" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
  10594. -<glyph unicode="&#xf024;" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
  10595. -<glyph unicode="&#xf025;" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
  10596. -<glyph unicode="&#xf026;" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
  10597. -<glyph unicode="&#xf027;" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
  10598. -<glyph unicode="&#xf028;" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
  10599. -<glyph unicode="&#xf029;" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
  10600. -<glyph unicode="&#xf02a;" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
  10601. -<glyph unicode="&#xf02b;" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" />
  10602. -<glyph unicode="&#xf02c;" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
  10603. -<glyph unicode="&#xf02d;" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
  10604. -<glyph unicode="&#xf02e;" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
  10605. -<glyph unicode="&#xf02f;" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
  10606. -<glyph unicode="&#xf030;" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
  10607. -<glyph unicode="&#xf031;" horiz-adv-x="1664" d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57 q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -4 -0.5 -13t-0.5 -13q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5 q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" />
  10608. -<glyph unicode="&#xf032;" horiz-adv-x="1408" d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142 q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5 t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68.5 -0.5t67.5 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5 t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" />
  10609. -<glyph unicode="&#xf033;" horiz-adv-x="1024" d="M0 -126l17 85q6 2 81.5 21.5t111.5 37.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" />
  10610. -<glyph unicode="&#xf034;" horiz-adv-x="1792" d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2 t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5 q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" />
  10611. -<glyph unicode="&#xf035;" d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1 t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5 t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49 t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" />
  10612. -<glyph unicode="&#xf036;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
  10613. -<glyph unicode="&#xf037;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
  10614. -<glyph unicode="&#xf038;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
  10615. -<glyph unicode="&#xf039;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
  10616. -<glyph unicode="&#xf03a;" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
  10617. -<glyph unicode="&#xf03b;" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
  10618. -<glyph unicode="&#xf03c;" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
  10619. -<glyph unicode="&#xf03d;" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" />
  10620. -<glyph unicode="&#xf03e;" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
  10621. -<glyph unicode="&#xf040;" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" />
  10622. -<glyph unicode="&#xf041;" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
  10623. -<glyph unicode="&#xf042;" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10624. -<glyph unicode="&#xf043;" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
  10625. -<glyph unicode="&#xf044;" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
  10626. -<glyph unicode="&#xf045;" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
  10627. -<glyph unicode="&#xf046;" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" />
  10628. -<glyph unicode="&#xf047;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
  10629. -<glyph unicode="&#xf048;" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" />
  10630. -<glyph unicode="&#xf049;" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" />
  10631. -<glyph unicode="&#xf04a;" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" />
  10632. -<glyph unicode="&#xf04b;" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
  10633. -<glyph unicode="&#xf04c;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
  10634. -<glyph unicode="&#xf04d;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
  10635. -<glyph unicode="&#xf04e;" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
  10636. -<glyph unicode="&#xf050;" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
  10637. -<glyph unicode="&#xf051;" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" />
  10638. -<glyph unicode="&#xf052;" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
  10639. -<glyph unicode="&#xf053;" horiz-adv-x="1280" d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" />
  10640. -<glyph unicode="&#xf054;" horiz-adv-x="1280" d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" />
  10641. -<glyph unicode="&#xf055;" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10642. -<glyph unicode="&#xf056;" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
  10643. -<glyph unicode="&#xf057;" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10644. -<glyph unicode="&#xf058;" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10645. -<glyph unicode="&#xf059;" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10646. -<glyph unicode="&#xf05a;" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10647. -<glyph unicode="&#xf05b;" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
  10648. -<glyph unicode="&#xf05c;" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10649. -<glyph unicode="&#xf05d;" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10650. -<glyph unicode="&#xf05e;" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
  10651. -<glyph unicode="&#xf060;" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" />
  10652. -<glyph unicode="&#xf061;" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
  10653. -<glyph unicode="&#xf062;" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" />
  10654. -<glyph unicode="&#xf063;" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
  10655. -<glyph unicode="&#xf064;" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
  10656. -<glyph unicode="&#xf065;" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
  10657. -<glyph unicode="&#xf066;" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
  10658. -<glyph unicode="&#xf067;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
  10659. -<glyph unicode="&#xf068;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
  10660. -<glyph unicode="&#xf069;" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
  10661. -<glyph unicode="&#xf06a;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
  10662. -<glyph unicode="&#xf06b;" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
  10663. -<glyph unicode="&#xf06c;" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
  10664. -<glyph unicode="&#xf06d;" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
  10665. -<glyph unicode="&#xf06e;" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
  10666. -<glyph unicode="&#xf070;" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " />
  10667. -<glyph unicode="&#xf071;" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
  10668. -<glyph unicode="&#xf072;" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
  10669. -<glyph unicode="&#xf073;" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
  10670. -<glyph unicode="&#xf074;" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
  10671. -<glyph unicode="&#xf075;" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
  10672. -<glyph unicode="&#xf076;" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
  10673. -<glyph unicode="&#xf077;" horiz-adv-x="1792" d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" />
  10674. -<glyph unicode="&#xf078;" horiz-adv-x="1792" d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" />
  10675. -<glyph unicode="&#xf079;" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " />
  10676. -<glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45 t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" />
  10677. -<glyph unicode="&#xf07b;" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
  10678. -<glyph unicode="&#xf07c;" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
  10679. -<glyph unicode="&#xf07d;" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
  10680. -<glyph unicode="&#xf07e;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
  10681. -<glyph unicode="&#xf080;" horiz-adv-x="2048" d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
  10682. -<glyph unicode="&#xf081;" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10683. -<glyph unicode="&#xf082;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960z" />
  10684. -<glyph unicode="&#xf083;" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
  10685. -<glyph unicode="&#xf084;" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
  10686. -<glyph unicode="&#xf085;" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
  10687. -<glyph unicode="&#xf086;" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
  10688. -<glyph unicode="&#xf087;" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
  10689. -<glyph unicode="&#xf088;" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" />
  10690. -<glyph unicode="&#xf089;" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
  10691. -<glyph unicode="&#xf08a;" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" />
  10692. -<glyph unicode="&#xf08b;" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
  10693. -<glyph unicode="&#xf08c;" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10694. -<glyph unicode="&#xf08d;" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
  10695. -<glyph unicode="&#xf08e;" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
  10696. -<glyph unicode="&#xf090;" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
  10697. -<glyph unicode="&#xf091;" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
  10698. -<glyph unicode="&#xf092;" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10699. -<glyph unicode="&#xf093;" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
  10700. -<glyph unicode="&#xf094;" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" />
  10701. -<glyph unicode="&#xf095;" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
  10702. -<glyph unicode="&#xf096;" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" />
  10703. -<glyph unicode="&#xf097;" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
  10704. -<glyph unicode="&#xf098;" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10705. -<glyph unicode="&#xf099;" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
  10706. -<glyph unicode="&#xf09a;" horiz-adv-x="1024" d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" />
  10707. -<glyph unicode="&#xf09b;" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10708. -<glyph unicode="&#xf09c;" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" />
  10709. -<glyph unicode="&#xf09d;" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
  10710. -<glyph unicode="&#xf09e;" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" />
  10711. -<glyph unicode="&#xf0a0;" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
  10712. -<glyph unicode="&#xf0a1;" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
  10713. -<glyph unicode="&#xf0a2;" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5 t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
  10714. -<glyph unicode="&#xf0a3;" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
  10715. -<glyph unicode="&#xf0a4;" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
  10716. -<glyph unicode="&#xf0a5;" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
  10717. -<glyph unicode="&#xf0a6;" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
  10718. -<glyph unicode="&#xf0a7;" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
  10719. -<glyph unicode="&#xf0a8;" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10720. -<glyph unicode="&#xf0a9;" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10721. -<glyph unicode="&#xf0aa;" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10722. -<glyph unicode="&#xf0ab;" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10723. -<glyph unicode="&#xf0ac;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
  10724. -<glyph unicode="&#xf0ad;" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
  10725. -<glyph unicode="&#xf0ae;" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
  10726. -<glyph unicode="&#xf0b0;" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
  10727. -<glyph unicode="&#xf0b1;" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
  10728. -<glyph unicode="&#xf0b2;" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " />
  10729. -<glyph unicode="&#xf0c0;" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
  10730. -<glyph unicode="&#xf0c1;" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
  10731. -<glyph unicode="&#xf0c2;" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " />
  10732. -<glyph unicode="&#xf0c3;" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
  10733. -<glyph unicode="&#xf0c4;" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
  10734. -<glyph unicode="&#xf0c5;" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
  10735. -<glyph unicode="&#xf0c6;" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" />
  10736. -<glyph unicode="&#xf0c7;" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
  10737. -<glyph unicode="&#xf0c8;" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10738. -<glyph unicode="&#xf0c9;" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
  10739. -<glyph unicode="&#xf0ca;" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
  10740. -<glyph unicode="&#xf0cb;" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
  10741. -<glyph unicode="&#xf0cc;" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
  10742. -<glyph unicode="&#xf0cd;" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
  10743. -<glyph unicode="&#xf0ce;" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" />
  10744. -<glyph unicode="&#xf0d0;" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
  10745. -<glyph unicode="&#xf0d1;" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
  10746. -<glyph unicode="&#xf0d2;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10747. -<glyph unicode="&#xf0d3;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
  10748. -<glyph unicode="&#xf0d4;" d="M829 318q0 -76 -58.5 -112.5t-139.5 -36.5q-41 0 -80.5 9.5t-75.5 28.5t-58 53t-22 78q0 46 25 80t65.5 51.5t82 25t84.5 7.5q20 0 31 -2q2 -1 23 -16.5t26 -19t23 -18t24.5 -22t19 -22.5t17 -26t9 -26.5t4.5 -31.5zM755 863q0 -60 -33 -99.5t-92 -39.5q-53 0 -93 42.5 t-57.5 96.5t-17.5 106q0 61 32 104t92 43q53 0 93.5 -45t58 -101t17.5 -107zM861 1120l88 64h-265q-85 0 -161 -32t-127.5 -98t-51.5 -153q0 -93 64.5 -154.5t158.5 -61.5q22 0 43 3q-13 -29 -13 -54q0 -44 40 -94q-175 -12 -257 -63q-47 -29 -75.5 -73t-28.5 -95 q0 -43 18.5 -77.5t48.5 -56.5t69 -37t77.5 -21t76.5 -6q60 0 120.5 15.5t113.5 46t86 82.5t33 117q0 49 -20 89.5t-49 66.5t-58 47.5t-49 44t-20 44.5t15.5 42.5t37.5 39.5t44 42t37.5 59.5t15.5 82.5q0 60 -22.5 99.5t-72.5 90.5h83zM1152 672h128v64h-128v128h-64v-128 h-128v-64h128v-160h64v160zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10749. -<glyph unicode="&#xf0d5;" horiz-adv-x="1664" d="M735 740q0 -36 32 -70.5t77.5 -68t90.5 -73.5t77 -104t32 -142q0 -90 -48 -173q-72 -122 -211 -179.5t-298 -57.5q-132 0 -246.5 41.5t-171.5 137.5q-37 60 -37 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 42 -47.5 74t-15.5 73q0 36 21 85q-46 -4 -68 -4 q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q77 66 182.5 98t217.5 32h418l-138 -88h-131q74 -63 112 -133t38 -160q0 -72 -24.5 -129.5t-59 -93t-69.5 -65t-59.5 -61.5t-24.5 -66zM589 836q38 0 78 16.5t66 43.5q53 57 53 159q0 58 -17 125t-48.5 129.5 t-84.5 103.5t-117 41q-42 0 -82.5 -19.5t-65.5 -52.5q-47 -59 -47 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26zM591 -37q58 0 111.5 13t99 39t73 73t27.5 109q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -48 2 q-53 0 -105 -7t-107.5 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -70 35 -123.5t91.5 -83t119 -44t127.5 -14.5zM1401 839h213v-108h-213v-219h-105v219h-212v108h212v217h105v-217z" />
  10750. -<glyph unicode="&#xf0d6;" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
  10751. -<glyph unicode="&#xf0d7;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
  10752. -<glyph unicode="&#xf0d8;" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
  10753. -<glyph unicode="&#xf0d9;" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
  10754. -<glyph unicode="&#xf0da;" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
  10755. -<glyph unicode="&#xf0db;" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
  10756. -<glyph unicode="&#xf0dc;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
  10757. -<glyph unicode="&#xf0dd;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
  10758. -<glyph unicode="&#xf0de;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
  10759. -<glyph unicode="&#xf0e0;" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
  10760. -<glyph unicode="&#xf0e1;" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
  10761. -<glyph unicode="&#xf0e2;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
  10762. -<glyph unicode="&#xf0e3;" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
  10763. -<glyph unicode="&#xf0e4;" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
  10764. -<glyph unicode="&#xf0e5;" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
  10765. -<glyph unicode="&#xf0e6;" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
  10766. -<glyph unicode="&#xf0e7;" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
  10767. -<glyph unicode="&#xf0e8;" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" />
  10768. -<glyph unicode="&#xf0e9;" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
  10769. -<glyph unicode="&#xf0ea;" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
  10770. -<glyph unicode="&#xf0eb;" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
  10771. -<glyph unicode="&#xf0ec;" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
  10772. -<glyph unicode="&#xf0ed;" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
  10773. -<glyph unicode="&#xf0ee;" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
  10774. -<glyph unicode="&#xf0f0;" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
  10775. -<glyph unicode="&#xf0f1;" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
  10776. -<glyph unicode="&#xf0f2;" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" />
  10777. -<glyph unicode="&#xf0f3;" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5 t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
  10778. -<glyph unicode="&#xf0f4;" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
  10779. -<glyph unicode="&#xf0f5;" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
  10780. -<glyph unicode="&#xf0f6;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704 q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" />
  10781. -<glyph unicode="&#xf0f7;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
  10782. -<glyph unicode="&#xf0f8;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
  10783. -<glyph unicode="&#xf0f9;" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
  10784. -<glyph unicode="&#xf0fa;" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
  10785. -<glyph unicode="&#xf0fb;" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" />
  10786. -<glyph unicode="&#xf0fc;" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
  10787. -<glyph unicode="&#xf0fd;" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10788. -<glyph unicode="&#xf0fe;" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10789. -<glyph unicode="&#xf100;" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
  10790. -<glyph unicode="&#xf101;" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
  10791. -<glyph unicode="&#xf102;" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
  10792. -<glyph unicode="&#xf103;" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
  10793. -<glyph unicode="&#xf104;" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
  10794. -<glyph unicode="&#xf105;" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
  10795. -<glyph unicode="&#xf106;" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
  10796. -<glyph unicode="&#xf107;" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
  10797. -<glyph unicode="&#xf108;" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
  10798. -<glyph unicode="&#xf109;" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
  10799. -<glyph unicode="&#xf10a;" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
  10800. -<glyph unicode="&#xf10b;" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
  10801. -<glyph unicode="&#xf10c;" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" />
  10802. -<glyph unicode="&#xf10d;" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
  10803. -<glyph unicode="&#xf10e;" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
  10804. -<glyph unicode="&#xf110;" horiz-adv-x="1792" d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5 q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" />
  10805. -<glyph unicode="&#xf111;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10806. -<glyph unicode="&#xf112;" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
  10807. -<glyph unicode="&#xf113;" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" />
  10808. -<glyph unicode="&#xf114;" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
  10809. -<glyph unicode="&#xf115;" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " />
  10810. -<glyph unicode="&#xf116;" horiz-adv-x="1792" />
  10811. -<glyph unicode="&#xf117;" horiz-adv-x="1792" />
  10812. -<glyph unicode="&#xf118;" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10813. -<glyph unicode="&#xf119;" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10814. -<glyph unicode="&#xf11a;" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10815. -<glyph unicode="&#xf11b;" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
  10816. -<glyph unicode="&#xf11c;" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
  10817. -<glyph unicode="&#xf11d;" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
  10818. -<glyph unicode="&#xf11e;" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
  10819. -<glyph unicode="&#xf120;" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" />
  10820. -<glyph unicode="&#xf121;" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
  10821. -<glyph unicode="&#xf122;" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
  10822. -<glyph unicode="&#xf123;" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
  10823. -<glyph unicode="&#xf124;" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
  10824. -<glyph unicode="&#xf125;" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
  10825. -<glyph unicode="&#xf126;" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
  10826. -<glyph unicode="&#xf127;" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
  10827. -<glyph unicode="&#xf128;" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
  10828. -<glyph unicode="&#xf129;" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
  10829. -<glyph unicode="&#xf12a;" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
  10830. -<glyph unicode="&#xf12b;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" />
  10831. -<glyph unicode="&#xf12c;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" />
  10832. -<glyph unicode="&#xf12d;" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
  10833. -<glyph unicode="&#xf12e;" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
  10834. -<glyph unicode="&#xf130;" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
  10835. -<glyph unicode="&#xf131;" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
  10836. -<glyph unicode="&#xf132;" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
  10837. -<glyph unicode="&#xf133;" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
  10838. -<glyph unicode="&#xf134;" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
  10839. -<glyph unicode="&#xf135;" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
  10840. -<glyph unicode="&#xf136;" horiz-adv-x="1792" d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" />
  10841. -<glyph unicode="&#xf137;" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10842. -<glyph unicode="&#xf138;" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10843. -<glyph unicode="&#xf139;" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10844. -<glyph unicode="&#xf13a;" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10845. -<glyph unicode="&#xf13b;" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
  10846. -<glyph unicode="&#xf13c;" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
  10847. -<glyph unicode="&#xf13d;" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
  10848. -<glyph unicode="&#xf13e;" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" />
  10849. -<glyph unicode="&#xf140;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10850. -<glyph unicode="&#xf141;" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
  10851. -<glyph unicode="&#xf142;" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
  10852. -<glyph unicode="&#xf143;" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10853. -<glyph unicode="&#xf144;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" />
  10854. -<glyph unicode="&#xf145;" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
  10855. -<glyph unicode="&#xf146;" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
  10856. -<glyph unicode="&#xf147;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
  10857. -<glyph unicode="&#xf148;" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
  10858. -<glyph unicode="&#xf149;" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
  10859. -<glyph unicode="&#xf14a;" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10860. -<glyph unicode="&#xf14b;" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10861. -<glyph unicode="&#xf14c;" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10862. -<glyph unicode="&#xf14d;" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10863. -<glyph unicode="&#xf14e;" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10864. -<glyph unicode="&#xf150;" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10865. -<glyph unicode="&#xf151;" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10866. -<glyph unicode="&#xf152;" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10867. -<glyph unicode="&#xf153;" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
  10868. -<glyph unicode="&#xf154;" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
  10869. -<glyph unicode="&#xf155;" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" />
  10870. -<glyph unicode="&#xf156;" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
  10871. -<glyph unicode="&#xf157;" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
  10872. -<glyph unicode="&#xf158;" horiz-adv-x="1280" d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128 q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" />
  10873. -<glyph unicode="&#xf159;" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
  10874. -<glyph unicode="&#xf15a;" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
  10875. -<glyph unicode="&#xf15b;" d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" />
  10876. -<glyph unicode="&#xf15c;" d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" />
  10877. -<glyph unicode="&#xf15d;" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" />
  10878. -<glyph unicode="&#xf15e;" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" />
  10879. -<glyph unicode="&#xf160;" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
  10880. -<glyph unicode="&#xf161;" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
  10881. -<glyph unicode="&#xf162;" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
  10882. -<glyph unicode="&#xf163;" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
  10883. -<glyph unicode="&#xf164;" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
  10884. -<glyph unicode="&#xf165;" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
  10885. -<glyph unicode="&#xf166;" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10886. -<glyph unicode="&#xf167;" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
  10887. -<glyph unicode="&#xf168;" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" />
  10888. -<glyph unicode="&#xf169;" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10889. -<glyph unicode="&#xf16a;" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" />
  10890. -<glyph unicode="&#xf16b;" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
  10891. -<glyph unicode="&#xf16c;" horiz-adv-x="1408" d="M928 135v-151l-707 -1v151zM1169 481v-701l-1 -35v-1h-1132l-35 1h-1v736h121v-618h928v618h120zM241 393l704 -65l-13 -150l-705 65zM309 709l683 -183l-39 -146l-683 183zM472 1058l609 -360l-77 -130l-609 360zM832 1389l398 -585l-124 -85l-399 584zM1285 1536 l121 -697l-149 -26l-121 697z" />
  10892. -<glyph unicode="&#xf16d;" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" />
  10893. -<glyph unicode="&#xf16e;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
  10894. -<glyph unicode="&#xf170;" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10895. -<glyph unicode="&#xf171;" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
  10896. -<glyph unicode="&#xf172;" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10897. -<glyph unicode="&#xf173;" horiz-adv-x="1024" d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14 q78 2 134 29z" />
  10898. -<glyph unicode="&#xf174;" d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10899. -<glyph unicode="&#xf175;" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
  10900. -<glyph unicode="&#xf176;" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
  10901. -<glyph unicode="&#xf177;" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
  10902. -<glyph unicode="&#xf178;" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
  10903. -<glyph unicode="&#xf179;" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
  10904. -<glyph unicode="&#xf17a;" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
  10905. -<glyph unicode="&#xf17b;" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
  10906. -<glyph unicode="&#xf17c;" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
  10907. -<glyph unicode="&#xf17d;" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10908. -<glyph unicode="&#xf17e;" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
  10909. -<glyph unicode="&#xf180;" horiz-adv-x="1280" d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324 l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" />
  10910. -<glyph unicode="&#xf181;" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
  10911. -<glyph unicode="&#xf182;" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
  10912. -<glyph unicode="&#xf183;" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
  10913. -<glyph unicode="&#xf184;" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10914. -<glyph unicode="&#xf185;" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
  10915. -<glyph unicode="&#xf186;" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
  10916. -<glyph unicode="&#xf187;" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
  10917. -<glyph unicode="&#xf188;" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
  10918. -<glyph unicode="&#xf189;" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" />
  10919. -<glyph unicode="&#xf18a;" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
  10920. -<glyph unicode="&#xf18b;" d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495 q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" />
  10921. -<glyph unicode="&#xf18c;" horiz-adv-x="1408" d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5 t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56 t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5 t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" />
  10922. -<glyph unicode="&#xf18d;" horiz-adv-x="1280" d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z " />
  10923. -<glyph unicode="&#xf18e;" d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10924. -<glyph unicode="&#xf190;" d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10925. -<glyph unicode="&#xf191;" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10926. -<glyph unicode="&#xf192;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10927. -<glyph unicode="&#xf193;" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
  10928. -<glyph unicode="&#xf194;" d="M1254 899q16 85 -21 132q-52 65 -187 45q-17 -3 -41 -12.5t-57.5 -30.5t-64.5 -48.5t-59.5 -70t-44.5 -91.5q80 7 113.5 -16t26.5 -99q-5 -52 -52 -143q-43 -78 -71 -99q-44 -32 -87 14q-23 24 -37.5 64.5t-19 73t-10 84t-8.5 71.5q-23 129 -34 164q-12 37 -35.5 69 t-50.5 40q-57 16 -127 -25q-54 -32 -136.5 -106t-122.5 -102v-7q16 -8 25.5 -26t21.5 -20q21 -3 54.5 8.5t58 10.5t41.5 -30q11 -18 18.5 -38.5t15 -48t12.5 -40.5q17 -46 53 -187q36 -146 57 -197q42 -99 103 -125q43 -12 85 -1.5t76 31.5q131 77 250 237 q104 139 172.5 292.5t82.5 226.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10929. -<glyph unicode="&#xf195;" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
  10930. -<glyph unicode="&#xf196;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
  10931. -<glyph unicode="&#xf197;" horiz-adv-x="2176" d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40 t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29 q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" />
  10932. -<glyph unicode="&#xf198;" horiz-adv-x="1664" d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9 q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102 t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" />
  10933. -<glyph unicode="&#xf199;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69 q-46 32 -141.5 92.5t-142.5 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13 t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" />
  10934. -<glyph unicode="&#xf19a;" horiz-adv-x="1792" d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5 t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21 t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286 t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273 t273 -182.5t331.5 -68z" />
  10935. -<glyph unicode="&#xf19b;" horiz-adv-x="1792" d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" />
  10936. -<glyph unicode="&#xf19c;" horiz-adv-x="2048" d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64 q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" />
  10937. -<glyph unicode="&#xf19d;" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
  10938. -<glyph unicode="&#xf19e;" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" />
  10939. -<glyph unicode="&#xf1a0;" horiz-adv-x="1280" d="M981 197q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -49 2q-53 0 -104.5 -7t-107 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -56 23.5 -102t61 -75.5t87 -50t100 -29t101.5 -8.5q58 0 111.5 13t99 39t73 73t27.5 109zM864 1055 q0 59 -17 125.5t-48 129t-84 103.5t-117 41q-42 0 -82.5 -19.5t-66.5 -52.5q-46 -59 -46 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26q37 0 77.5 16.5t65.5 43.5q53 56 53 159zM752 1536h417l-137 -88h-132q75 -63 113 -133t38 -160q0 -72 -24.5 -129.5 t-59.5 -93t-69.5 -65t-59 -61.5t-24.5 -66q0 -36 32 -70.5t77 -68t90.5 -73.5t77.5 -104t32 -142q0 -91 -49 -173q-71 -122 -209.5 -179.5t-298.5 -57.5q-132 0 -246.5 41.5t-172.5 137.5q-36 59 -36 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 41 -47.5 73.5 t-15.5 73.5q0 40 21 85q-46 -4 -68 -4q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q76 66 182 98t218 32z" />
  10940. -<glyph unicode="&#xf1a1;" horiz-adv-x="2304" d="M1509 107q0 -14 -12 -29q-52 -59 -147.5 -83t-196.5 -24q-252 0 -346 107q-12 15 -12 29q0 17 12 29.5t29 12.5q15 0 30 -12q58 -49 125.5 -66t159.5 -17t160 17t127 66q15 12 30 12q17 0 29 -12.5t12 -29.5zM978 498q0 -61 -43 -104t-104 -43q-60 0 -104.5 43.5 t-44.5 103.5q0 61 44 105t105 44t104 -44t43 -105zM1622 498q0 -61 -43 -104t-104 -43q-60 0 -104.5 43.5t-44.5 103.5q0 61 44 105t105 44t104 -44t43 -105zM415 793q-39 27 -88 27q-66 0 -113 -47t-47 -113q0 -72 54 -121q53 141 194 254zM2020 382q0 222 -249 387 q-128 85 -291.5 126.5t-331.5 41.5t-331.5 -41.5t-292.5 -126.5q-249 -165 -249 -387t249 -387q129 -85 292.5 -126.5t331.5 -41.5t331.5 41.5t291.5 126.5q249 165 249 387zM2137 660q0 66 -47 113t-113 47q-50 0 -93 -30q140 -114 192 -256q61 48 61 126zM1993 1335 q0 49 -34.5 83.5t-82.5 34.5q-49 0 -83.5 -34.5t-34.5 -83.5q0 -48 34.5 -82.5t83.5 -34.5q48 0 82.5 34.5t34.5 82.5zM2220 660q0 -65 -33 -122t-89 -90q5 -35 5 -66q0 -139 -79 -255.5t-208 -201.5q-140 -92 -313.5 -136.5t-354.5 -44.5t-355 44.5t-314 136.5 q-129 85 -208 201.5t-79 255.5q0 36 6 71q-53 33 -83.5 88.5t-30.5 118.5q0 100 71 171.5t172 71.5q91 0 159 -60q265 170 638 177l144 456q10 29 40 29q24 0 384 -90q24 55 74 88t110 33q82 0 141 -59t59 -142t-59 -141.5t-141 -58.5q-83 0 -141.5 58.5t-59.5 140.5 l-339 80l-125 -395q349 -15 603 -179q71 63 163 63q101 0 172 -71.5t71 -171.5z" />
  10941. -<glyph unicode="&#xf1a2;" d="M950 393q7 7 17.5 7t17.5 -7t7 -18t-7 -18q-65 -64 -208 -64h-1h-1q-143 0 -207 64q-8 7 -8 18t8 18q7 7 17.5 7t17.5 -7q49 -51 172 -51h1h1q122 0 173 51zM671 613q0 -37 -26 -64t-63 -27t-63 27t-26 64t26 63t63 26t63 -26t26 -63zM1214 1049q-29 0 -50 21t-21 50 q0 30 21 51t50 21q30 0 51 -21t21 -51q0 -29 -21 -50t-51 -21zM1216 1408q132 0 226 -94t94 -227v-894q0 -133 -94 -227t-226 -94h-896q-132 0 -226 94t-94 227v894q0 133 94 227t226 94h896zM1321 596q35 14 57 45.5t22 70.5q0 51 -36 87.5t-87 36.5q-60 0 -98 -48 q-151 107 -375 115l83 265l206 -49q1 -50 36.5 -85t84.5 -35q50 0 86 35.5t36 85.5t-36 86t-86 36q-36 0 -66 -20.5t-45 -53.5l-227 54q-9 2 -17.5 -2.5t-11.5 -14.5l-95 -302q-224 -4 -381 -113q-36 43 -93 43q-51 0 -87 -36.5t-36 -87.5q0 -37 19.5 -67.5t52.5 -45.5 q-7 -25 -7 -54q0 -98 74 -181.5t201.5 -132t278.5 -48.5q150 0 277.5 48.5t201.5 132t74 181.5q0 27 -6 54zM971 702q37 0 63 -26t26 -63t-26 -64t-63 -27t-63 27t-26 64t26 63t63 26z" />
  10942. -<glyph unicode="&#xf1a3;" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" />
  10943. -<glyph unicode="&#xf1a4;" horiz-adv-x="1920" d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328 v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" />
  10944. -<glyph unicode="&#xf1a5;" d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
  10945. -<glyph unicode="&#xf1a6;" horiz-adv-x="2048" d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123 v-369h123z" />
  10946. -<glyph unicode="&#xf1a7;" d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101 v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10947. -<glyph unicode="&#xf1a8;" horiz-adv-x="2038" d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14 q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24 q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33 q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5 t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43 q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5 t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13 t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" />
  10948. -<glyph unicode="&#xf1a9;" d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10 q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14 q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14 t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44 q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" />
  10949. -<glyph unicode="&#xf1aa;" d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5 t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5 q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126 t135.5 51q85 0 145 -60.5t60 -145.5z" />
  10950. -<glyph unicode="&#xf1ab;" d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5 q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28 q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11 q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q106 35 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5 q20 0 20 -21v-418z" />
  10951. -<glyph unicode="&#xf1ac;" horiz-adv-x="1792" d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48 l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23 t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128 q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128 q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" />
  10952. -<glyph unicode="&#xf1ad;" d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9 t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9 t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9 t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" />
  10953. -<glyph unicode="&#xf1ae;" horiz-adv-x="1280" d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68t68 28t68 -28l228 -228h368l228 228q28 28 68 28t68 -28t28 -68t-28 -68zM864 1152q0 -93 -65.5 -158.5 t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
  10954. -<glyph unicode="&#xf1b0;" horiz-adv-x="1664" d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5 q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819 q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5 t100.5 134t141.5 55.5z" />
  10955. -<glyph unicode="&#xf1b1;" horiz-adv-x="768" d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" />
  10956. -<glyph unicode="&#xf1b2;" horiz-adv-x="1792" d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z " />
  10957. -<glyph unicode="&#xf1b3;" horiz-adv-x="2304" d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67 t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-5 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70 v-400l434 -186q36 -16 57 -48t21 -70z" />
  10958. -<glyph unicode="&#xf1b4;" horiz-adv-x="2048" d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658 q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204 q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" />
  10959. -<glyph unicode="&#xf1b5;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5 t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217 t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" />
  10960. -<glyph unicode="&#xf1b6;" horiz-adv-x="1792" d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5 q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89 q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" />
  10961. -<glyph unicode="&#xf1b7;" d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5 q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5 q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z " />
  10962. -<glyph unicode="&#xf1b8;" horiz-adv-x="1792" d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188 l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5 t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1 q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" />
  10963. -<glyph unicode="&#xf1b9;" horiz-adv-x="2048" d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384 q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5 l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" />
  10964. -<glyph unicode="&#xf1ba;" horiz-adv-x="2048" d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5 t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" />
  10965. -<glyph unicode="&#xf1bb;" d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384 q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" />
  10966. -<glyph unicode="&#xf1bc;" d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64 q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37 q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10967. -<glyph unicode="&#xf1bd;" horiz-adv-x="1024" d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" />
  10968. -<glyph unicode="&#xf1be;" horiz-adv-x="2304" d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11 q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245 q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785 l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242 q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236q0 -11 -8 -19 t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786q-13 2 -22 11t-9 22v899 q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" />
  10969. -<glyph unicode="&#xf1c0;" d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127 t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 t-103 128v128q0 69 103 128t280 93.5t385 34.5z" />
  10970. -<glyph unicode="&#xf1c1;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197 q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8 q-1 1 -1 2t-0.5 1.5t-0.5 1.5q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" />
  10971. -<glyph unicode="&#xf1c2;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4l-3 21q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5t-3.5 -21.5l-4 -21h-4l-2 21 q-2 26 -7 46l-99 438h90v107h-300z" />
  10972. -<glyph unicode="&#xf1c3;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107 h-290v-107h68l189 -272l-194 -283h-68z" />
  10973. -<glyph unicode="&#xf1c4;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" />
  10974. -<glyph unicode="&#xf1c5;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" />
  10975. -<glyph unicode="&#xf1c6;" d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400 v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79 q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" />
  10976. -<glyph unicode="&#xf1c7;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5 q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" />
  10977. -<glyph unicode="&#xf1c8;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" />
  10978. -<glyph unicode="&#xf1c9;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243 l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" />
  10979. -<glyph unicode="&#xf1ca;" d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406 q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" />
  10980. -<glyph unicode="&#xf1cb;" horiz-adv-x="1792" d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546 q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" />
  10981. -<glyph unicode="&#xf1cc;" horiz-adv-x="2048" d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94 q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55 t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97q14 -16 29.5 -34t34.5 -40t29 -34q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5 t-85 -189.5z" />
  10982. -<glyph unicode="&#xf1cd;" horiz-adv-x="1792" d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194 q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5 t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" />
  10983. -<glyph unicode="&#xf1ce;" horiz-adv-x="1792" d="M1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348q0 222 101 414.5t276.5 317t390.5 155.5v-260q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 q0 230 -145.5 406t-366.5 221v260q215 -31 390.5 -155.5t276.5 -317t101 -414.5z" />
  10984. -<glyph unicode="&#xf1d0;" horiz-adv-x="1792" d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" />
  10985. -<glyph unicode="&#xf1d1;" horiz-adv-x="1792" d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251 l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162 q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33 q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5 t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
  10986. -<glyph unicode="&#xf1d2;" d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85 q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392 q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072 q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10987. -<glyph unicode="&#xf1d3;" horiz-adv-x="1792" d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58 q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47 q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171 v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" />
  10988. -<glyph unicode="&#xf1d4;" d="M825 547l343 588h-150q-21 -39 -63.5 -118.5t-68 -128.5t-59.5 -118.5t-60 -128.5h-3q-21 48 -44.5 97t-52 105.5t-46.5 92t-54 104.5t-49 95h-150l323 -589v-435h134v436zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  10989. -<glyph unicode="&#xf1d5;" horiz-adv-x="1280" d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5 t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153 t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" />
  10990. -<glyph unicode="&#xf1d6;" horiz-adv-x="1792" d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5 q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20 t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5 t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" />
  10991. -<glyph unicode="&#xf1d7;" horiz-adv-x="2048" d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25 q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5 q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109 q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" />
  10992. -<glyph unicode="&#xf1d8;" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" />
  10993. -<glyph unicode="&#xf1d9;" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137 l863 639l-478 -797z" />
  10994. -<glyph unicode="&#xf1da;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23 t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" />
  10995. -<glyph unicode="&#xf1db;" d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  10996. -<glyph unicode="&#xf1dc;" horiz-adv-x="1792" d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15 t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2 t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160 q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5 q0 -26 -12 -48t-36 -22z" />
  10997. -<glyph unicode="&#xf1dd;" horiz-adv-x="1280" d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179 q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" />
  10998. -<glyph unicode="&#xf1de;" d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256 q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" />
  10999. -<glyph unicode="&#xf1e0;" d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5 t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" />
  11000. -<glyph unicode="&#xf1e1;" d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5 t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  11001. -<glyph unicode="&#xf1e2;" horiz-adv-x="1792" d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5 t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91 q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9 t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
  11002. -<glyph unicode="&#xf1e3;" horiz-adv-x="1792" d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323 l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" />
  11003. -<glyph unicode="&#xf1e4;" horiz-adv-x="1792" d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23 zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5 t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" />
  11004. -<glyph unicode="&#xf1e5;" horiz-adv-x="1792" d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" />
  11005. -<glyph unicode="&#xf1e6;" horiz-adv-x="1792" d="M1755 1083q37 -37 37 -90t-37 -91l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234l401 400 q38 37 91 37t90 -37z" />
  11006. -<glyph unicode="&#xf1e7;" horiz-adv-x="1792" d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5 t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q3 -2 11 -7 t11 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" />
  11007. -<glyph unicode="&#xf1e8;" horiz-adv-x="1792" d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" />
  11008. -<glyph unicode="&#xf1e9;" d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36 q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q70 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5 t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87 q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" />
  11009. -<glyph unicode="&#xf1ea;" horiz-adv-x="2048" d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19 t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" />
  11010. -<glyph unicode="&#xf1eb;" horiz-adv-x="2048" d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121 q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" />
  11011. -<glyph unicode="&#xf1ec;" horiz-adv-x="1792" d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38 h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" />
  11012. -<glyph unicode="&#xf1ed;" horiz-adv-x="1792" d="M1112 1090q0 159 -237 159h-70q-32 0 -59.5 -21.5t-34.5 -52.5l-63 -276q-2 -5 -2 -16q0 -24 17 -39.5t41 -15.5h53q69 0 128.5 13t112.5 41t83.5 81.5t30.5 126.5zM1716 938q0 -265 -220 -428q-219 -161 -612 -161h-61q-32 0 -59 -21.5t-34 -52.5l-73 -316 q-8 -36 -40.5 -61.5t-69.5 -25.5h-213q-31 0 -53 20t-22 51q0 10 13 65h151q34 0 64 23.5t38 56.5l73 316q8 33 37.5 57t63.5 24h61q390 0 607 160t217 421q0 129 -51 207q183 -92 183 -335zM1533 1123q0 -264 -221 -428q-218 -161 -612 -161h-60q-32 0 -59.5 -22t-34.5 -53 l-73 -315q-8 -36 -40 -61.5t-69 -25.5h-214q-31 0 -52.5 19.5t-21.5 51.5q0 8 2 20l300 1301q8 36 40.5 61.5t69.5 25.5h444q68 0 125 -4t120.5 -15t113.5 -30t96.5 -50.5t77.5 -74t49.5 -103.5t18.5 -136z" />
  11013. -<glyph unicode="&#xf1ee;" horiz-adv-x="1792" d="M602 949q19 -61 31 -123.5t17 -141.5t-14 -159t-62 -145q-21 81 -67 157t-95.5 127t-99 90.5t-78.5 57.5t-33 19q-62 34 -81.5 100t14.5 128t101 81.5t129 -14.5q138 -83 238 -177zM927 1236q11 -25 20.5 -46t36.5 -100.5t42.5 -150.5t25.5 -179.5t0 -205.5t-47.5 -209.5 t-105.5 -208.5q-51 -72 -138 -72q-54 0 -98 31q-57 40 -69 109t28 127q60 85 81 195t13 199.5t-32 180.5t-39 128t-22 52q-31 63 -8.5 129.5t85.5 97.5q34 17 75 17q47 0 88.5 -25t63.5 -69zM1248 567q-17 -160 -72 -311q-17 131 -63 246q25 174 -5 361q-27 178 -94 342 q114 -90 212 -211q9 -37 15 -80q26 -179 7 -347zM1520 1440q9 -17 23.5 -49.5t43.5 -117.5t50.5 -178t34 -227.5t5 -269t-47 -300t-112.5 -323.5q-22 -48 -66 -75.5t-95 -27.5q-39 0 -74 16q-67 31 -92.5 100t4.5 136q58 126 90 257.5t37.5 239.5t-3.5 213.5t-26.5 180.5 t-38.5 138.5t-32.5 90t-15.5 32.5q-34 65 -11.5 135.5t87.5 104.5q37 20 81 20q49 0 91.5 -25.5t66.5 -70.5z" />
  11014. -<glyph unicode="&#xf1f0;" horiz-adv-x="2304" d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27 q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128 q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
  11015. -<glyph unicode="&#xf1f1;" horiz-adv-x="2304" d="M671 603h-13q-47 0 -47 -32q0 -22 20 -22q17 0 28 15t12 39zM1066 639h62v3q1 4 0.5 6.5t-1 7t-2 8t-4.5 6.5t-7.5 5t-11.5 2q-28 0 -36 -38zM1606 603h-12q-48 0 -48 -32q0 -22 20 -22q17 0 28 15t12 39zM1925 629q0 41 -30 41q-19 0 -31 -20t-12 -51q0 -42 28 -42 q20 0 32.5 20t12.5 52zM480 770h87l-44 -262h-56l32 201l-71 -201h-39l-4 200l-34 -200h-53l44 262h81l2 -163zM733 663q0 -6 -4 -42q-16 -101 -17 -113h-47l1 22q-20 -26 -58 -26q-23 0 -37.5 16t-14.5 42q0 39 26 60.5t73 21.5q14 0 23 -1q0 3 0.5 5.5t1 4.5t0.5 3 q0 20 -36 20q-29 0 -59 -10q0 4 7 48q38 11 67 11q74 0 74 -62zM889 721l-8 -49q-22 3 -41 3q-27 0 -27 -17q0 -8 4.5 -12t21.5 -11q40 -19 40 -60q0 -72 -87 -71q-34 0 -58 6q0 2 7 49q29 -8 51 -8q32 0 32 19q0 7 -4.5 11.5t-21.5 12.5q-43 20 -43 59q0 72 84 72 q30 0 50 -4zM977 721h28l-7 -52h-29q-2 -17 -6.5 -40.5t-7 -38.5t-2.5 -18q0 -16 19 -16q8 0 16 2l-8 -47q-21 -7 -40 -7q-43 0 -45 47q0 12 8 56q3 20 25 146h55zM1180 648q0 -23 -7 -52h-111q-3 -22 10 -33t38 -11q30 0 58 14l-9 -54q-30 -8 -57 -8q-95 0 -95 95 q0 55 27.5 90.5t69.5 35.5q35 0 55.5 -21t20.5 -56zM1319 722q-13 -23 -22 -62q-22 2 -31 -24t-25 -128h-56l3 14q22 130 29 199h51l-3 -33q14 21 25.5 29.5t28.5 4.5zM1506 763l-9 -57q-28 14 -50 14q-31 0 -51 -27.5t-20 -70.5q0 -30 13.5 -47t38.5 -17q21 0 48 13 l-10 -59q-28 -8 -50 -8q-45 0 -71.5 30.5t-26.5 82.5q0 70 35.5 114.5t91.5 44.5q26 0 61 -13zM1668 663q0 -18 -4 -42q-13 -79 -17 -113h-46l1 22q-20 -26 -59 -26q-23 0 -37 16t-14 42q0 39 25.5 60.5t72.5 21.5q15 0 23 -1q2 7 2 13q0 20 -36 20q-29 0 -59 -10q0 4 8 48 q38 11 67 11q73 0 73 -62zM1809 722q-14 -24 -21 -62q-23 2 -31.5 -23t-25.5 -129h-56l3 14q19 104 29 199h52q0 -11 -4 -33q15 21 26.5 29.5t27.5 4.5zM1950 770h56l-43 -262h-53l3 19q-23 -23 -52 -23q-31 0 -49.5 24t-18.5 64q0 53 27.5 92t64.5 39q31 0 53 -29z M2061 640q0 148 -72.5 273t-198 198t-273.5 73q-181 0 -328 -110q127 -116 171 -284h-50q-44 150 -158 253q-114 -103 -158 -253h-50q44 168 171 284q-147 110 -328 110q-148 0 -273.5 -73t-198 -198t-72.5 -273t72.5 -273t198 -198t273.5 -73q181 0 328 110 q-120 111 -165 264h50q46 -138 152 -233q106 95 152 233h50q-45 -153 -165 -264q147 -110 328 -110q148 0 273.5 73t198 198t72.5 273zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
  11016. -<glyph unicode="&#xf1f2;" horiz-adv-x="2304" d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42 q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604 v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569 q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73 t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" />
  11017. -<glyph unicode="&#xf1f3;" horiz-adv-x="2304" d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260 l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279 v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040 q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168 q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5 t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21 h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5 t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" />
  11018. -<glyph unicode="&#xf1f4;" horiz-adv-x="2304" d="M322 689h-15q-19 0 -19 18q0 28 19 85q5 15 15 19.5t28 4.5q77 0 77 -49q0 -41 -30.5 -59.5t-74.5 -18.5zM664 528q-47 0 -47 29q0 62 123 62l3 -3q-5 -88 -79 -88zM1438 687h-15q-19 0 -19 19q0 28 19 85q5 15 14.5 19t28.5 4q77 0 77 -49q0 -41 -30.5 -59.5 t-74.5 -18.5zM1780 527q-47 0 -47 30q0 62 123 62l3 -3q-5 -89 -79 -89zM373 894h-128q-8 0 -14.5 -4t-8.5 -7.5t-7 -12.5q-3 -7 -45 -190t-42 -192q0 -7 5.5 -12.5t13.5 -5.5h62q25 0 32.5 34.5l15 69t32.5 34.5q47 0 87.5 7.5t80.5 24.5t63.5 52.5t23.5 84.5 q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM719 798q-38 0 -74 -6q-2 0 -8.5 -1t-9 -1.5l-7.5 -1.5t-7.5 -2t-6.5 -3t-6.5 -4t-5 -5t-4.5 -7t-4 -9q-9 -29 -9 -39t9 -10q5 0 21.5 5t19.5 6q30 8 58 8q74 0 74 -36q0 -11 -10 -14q-8 -2 -18 -3t-21.5 -1.5t-17.5 -1.5 q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5q0 -38 26 -59.5t64 -21.5q24 0 45.5 6.5t33 13t38.5 23.5q-3 -7 -3 -15t5.5 -13.5t12.5 -5.5h56q1 1 7 3.5t7.5 3.5t5 3.5t5 5.5t2.5 8l45 194q4 13 4 30q0 81 -145 81zM1247 793h-74q-22 0 -39 -23q-5 -7 -29.5 -51 t-46.5 -81.5t-26 -38.5l-5 4q0 77 -27 166q-1 5 -3.5 8.5t-6 6.5t-6.5 5t-8.5 3t-8.5 1.5t-9.5 1t-9 0.5h-10h-8.5q-38 0 -38 -21l1 -5q5 -53 25 -151t25 -143q2 -16 2 -24q0 -19 -30.5 -61.5t-30.5 -58.5q0 -13 40 -13q61 0 76 25l245 415q10 20 10 26q0 9 -8 9zM1489 892 h-129q-18 0 -29 -23q-6 -13 -46.5 -191.5t-40.5 -190.5q0 -20 43 -20h7.5h9h9t9.5 1t8.5 2t8.5 3t6.5 4.5t5.5 6t3 8.5l21 91q2 10 10.5 17t19.5 7q47 0 87.5 7t80.5 24.5t63.5 52.5t23.5 84q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM1835 798q-26 0 -74 -6 q-38 -6 -48 -16q-7 -8 -11 -19q-8 -24 -8 -39q0 -10 8 -10q1 0 41 12q30 8 58 8q74 0 74 -36q0 -12 -10 -14q-4 -1 -57 -7q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5t26 -58.5t64 -21.5q24 0 45 6t34 13t38 24q-3 -15 -3 -16q0 -5 2 -8.5t6.5 -5.5t8 -3.5 t10.5 -2t9.5 -0.5h9.5h8q42 0 48 25l45 194q3 15 3 31q0 81 -145 81zM2157 889h-55q-25 0 -33 -40q-10 -44 -36.5 -167t-42.5 -190v-5q0 -16 16 -18h1h57q10 0 18.5 6.5t10.5 16.5l83 374h-1l1 5q0 7 -5.5 12.5t-13.5 5.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048 q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
  11019. -<glyph unicode="&#xf1f5;" horiz-adv-x="2304" d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109 q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118 q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151 q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31 q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
  11020. -<glyph unicode="&#xf1f6;" horiz-adv-x="2048" d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5 l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5 l418 363q10 8 23.5 7t21.5 -11z" />
  11021. -<glyph unicode="&#xf1f7;" horiz-adv-x="2048" d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128 q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161 q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" />
  11022. -<glyph unicode="&#xf1f8;" horiz-adv-x="1408" d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167 q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
  11023. -<glyph unicode="&#xf1f9;" d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5 t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
  11024. -<glyph unicode="&#xf1fa;" d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53 q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24 t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61 t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" />
  11025. -<glyph unicode="&#xf1fb;" horiz-adv-x="1792" d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10 t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" />
  11026. -<glyph unicode="&#xf1fc;" horiz-adv-x="1792" d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5 t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" />
  11027. -<glyph unicode="&#xf1fd;" horiz-adv-x="1792" d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11t55.5 -11t52.5 -38q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5t47 37.5 q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-35 0 -55.5 11t-52.5 38q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38t-58 27 t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448h256v448 h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51 t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" />
  11028. -<glyph unicode="&#xf1fe;" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" />
  11029. -<glyph unicode="&#xf200;" horiz-adv-x="1792" d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" />
  11030. -<glyph unicode="&#xf201;" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9 t9 -23z" />
  11031. -<glyph unicode="&#xf202;" horiz-adv-x="1792" d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20 q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50 t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1 q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" />
  11032. -<glyph unicode="&#xf203;" d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73 q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110 q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
  11033. -<glyph unicode="&#xf204;" horiz-adv-x="2048" d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5 t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5 t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" />
  11034. -<glyph unicode="&#xf205;" horiz-adv-x="2048" d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5 t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
  11035. -<glyph unicode="&#xf206;" horiz-adv-x="2304" d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94 q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469 q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400 q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" />
  11036. -<glyph unicode="&#xf207;" d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5 h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" />
  11037. -<glyph unicode="&#xf208;" horiz-adv-x="2048" d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327 q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5 q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" />
  11038. -<glyph unicode="&#xf209;" horiz-adv-x="1280" d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q18 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119 t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5 t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14 q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88 q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5 t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" />
  11039. -<glyph unicode="&#xf20a;" horiz-adv-x="2048" d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206 q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307 t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14 t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" />
  11040. -<glyph unicode="&#xf20b;" d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5 t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
  11041. -<glyph unicode="&#xf20c;" d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55 q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410 q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" />
  11042. -<glyph unicode="&#xf20d;" d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" />
  11043. -<glyph unicode="&#xf20e;" horiz-adv-x="2048" d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335 q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5 q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360q2 0 4.5 -1t5.5 -2.5l5 -2.5l188 199v347l-187 194 q-13 -8 -29 -10zM986 1438h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13 zM552 226h402l64 66l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224 l213 -225zM1023 946l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196 l-48 -227l130 227h-82zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" />
  11044. -<glyph unicode="&#xf210;" d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" />
  11045. -<glyph unicode="&#xf211;" d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384 q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" />
  11046. -<glyph unicode="&#xf212;" horiz-adv-x="2048" d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021 q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25 q209 0 374 -102q172 107 374 102z" />
  11047. -<glyph unicode="&#xf213;" horiz-adv-x="2048" d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101 q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284 q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" />
  11048. -<glyph unicode="&#xf214;" d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34 l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114 v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378 v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51 h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5 t-43 -34t-16.5 -53.5z" />
  11049. -<glyph unicode="&#xf215;" horiz-adv-x="2048" d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832 q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" />
  11050. -<glyph unicode="&#xf216;" horiz-adv-x="2048" d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126.5t-103.5 132.5t-108.5 126t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5 t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113 t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5 q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" />
  11051. -<glyph unicode="&#xf217;" horiz-adv-x="1664" d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
  11052. -<glyph unicode="&#xf218;" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
  11053. -<glyph unicode="&#xf219;" horiz-adv-x="2048" d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20 l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" />
  11054. -<glyph unicode="&#xf21a;" horiz-adv-x="2048" d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83 q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314 v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" />
  11055. -<glyph unicode="&#xf21b;" d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14 t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5 q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31 t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" />
  11056. -<glyph unicode="&#xf21c;" horiz-adv-x="2304" d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5 t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105 l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226 t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" />
  11057. -<glyph unicode="&#xf21d;" d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12 q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384 q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5 t158.5 -65.5t65.5 -158.5z" />
  11058. -<glyph unicode="&#xf21e;" horiz-adv-x="1792" d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221 q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124 t127 -344z" />
  11059. -<glyph unicode="&#xf221;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292 q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
  11060. -<glyph unicode="&#xf222;" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h416q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-419 -420q87 -104 129.5 -236.5t30.5 -276.5q-22 -250 -200.5 -431t-428.5 -206q-163 -17 -314 39.5t-256.5 162t-162 256.5t-39.5 314q25 250 206 428.5 t431 200.5q144 12 276.5 -30.5t236.5 -129.5l419 419h-261q-14 0 -23 9t-9 23v64zM704 -128q117 0 223.5 45.5t184 123t123 184t45.5 223.5t-45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123 t223.5 -45.5z" />
  11061. -<glyph unicode="&#xf223;" horiz-adv-x="1280" d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5 t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
  11062. -<glyph unicode="&#xf224;" d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
  11063. -<glyph unicode="&#xf225;" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9 t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
  11064. -<glyph unicode="&#xf226;" horiz-adv-x="1792" d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23 t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391 q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391 q0 -226 -154 -391q103 -57 218 -57z" />
  11065. -<glyph unicode="&#xf227;" horiz-adv-x="1920" d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230 q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9 t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128 q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -29 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" />
  11066. -<glyph unicode="&#xf228;" horiz-adv-x="2048" d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23 t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9 t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5 t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" />
  11067. -<glyph unicode="&#xf229;" horiz-adv-x="1792" d="M1728 1536q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-229 -230l156 -156q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-156 157l-99 -100q87 -104 129.5 -236.5t30.5 -276.5q-22 -250 -200.5 -431t-428.5 -206q-163 -17 -314 39.5 t-256.5 162t-162 256.5t-39.5 314q25 250 206 428.5t431 200.5q144 12 276.5 -30.5t236.5 -129.5l99 99l-156 156q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l156 -156l229 229h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM1280 448q0 117 -45.5 223.5t-123 184t-184 123 t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5z" />
  11068. -<glyph unicode="&#xf22a;" horiz-adv-x="1280" d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22 t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5 t131.5 -316.5t316.5 -131.5z" />
  11069. -<glyph unicode="&#xf22b;" horiz-adv-x="2048" d="M2029 685q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-131q-12 -119 -67 -226t-139 -183.5t-196.5 -121.5t-234.5 -45q-180 0 -330.5 91t-234.5 247 t-74 337q8 162 94 300t226.5 219.5t302.5 85.5q166 4 310.5 -71.5t235.5 -208.5t107 -296h131v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM640 128q104 0 198.5 40.5t163.5 109.5t109.5 163.5 t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
  11070. -<glyph unicode="&#xf22c;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
  11071. -<glyph unicode="&#xf22d;" horiz-adv-x="1792" />
  11072. -<glyph unicode="&#xf22e;" horiz-adv-x="1792" />
  11073. -<glyph unicode="&#xf22f;" horiz-adv-x="1792" />
  11074. -<glyph unicode="&#xf230;" d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" />
  11075. -<glyph unicode="&#xf231;" horiz-adv-x="1280" d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5 l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5 q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" />
  11076. -<glyph unicode="&#xf232;" d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5 t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233 l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" />
  11077. -<glyph unicode="&#xf233;" horiz-adv-x="1792" d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216 q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" />
  11078. -<glyph unicode="&#xf234;" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5 t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" />
  11079. -<glyph unicode="&#xf235;" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136 q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69 t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" />
  11080. -<glyph unicode="&#xf236;" horiz-adv-x="2048" d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704 q-26 0 -45 -19t-19 -45v-384h1152z" />
  11081. -<glyph unicode="&#xf237;" d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
  11082. -<glyph unicode="&#xf238;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56 t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" />
  11083. -<glyph unicode="&#xf239;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47 t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" />
  11084. -<glyph unicode="&#xf23a;" horiz-adv-x="1792" d="M1792 204v-209h-642v209h134v926h-6l-314 -1135h-243l-310 1135h-8v-926h135v-209h-538v209h69q21 0 43 19.5t22 37.5v881q0 18 -22 40t-43 22h-69v209h672l221 -821h6l223 821h670v-209h-71q-19 0 -41 -22t-22 -40v-881q0 -18 21.5 -37.5t41.5 -19.5h71z" />
  11085. -<glyph unicode="&#xf23b;" horiz-adv-x="1792" />
  11086. -<glyph unicode="&#xf23c;" horiz-adv-x="1792" />
  11087. -<glyph unicode="&#xf23d;" horiz-adv-x="1792" />
  11088. -<glyph unicode="&#xf23e;" horiz-adv-x="1792" />
  11089. -<glyph unicode="&#xf500;" horiz-adv-x="1792" />
  11090. -</font>
  11091. -</defs></svg>
  11092. \ No newline at end of file
  11093. diff --git a/js/categoryreorder/css/font/fontawesome-webfont.ttf b/js/categoryreorder/css/font/fontawesome-webfont.ttf
  11094. deleted file mode 100644
  11095. index ed9372f..0000000
  11096. Binary files a/js/categoryreorder/css/font/fontawesome-webfont.ttf and /dev/null differ
  11097. diff --git a/js/categoryreorder/css/font/fontawesome-webfont.woff b/js/categoryreorder/css/font/fontawesome-webfont.woff
  11098. deleted file mode 100644
  11099. index 8b280b9..0000000
  11100. Binary files a/js/categoryreorder/css/font/fontawesome-webfont.woff and /dev/null differ
  11101. diff --git a/js/categoryreorder/css/font/fontawesome-webfont.woff2 b/js/categoryreorder/css/font/fontawesome-webfont.woff2
  11102. deleted file mode 100644
  11103. index 3311d58..0000000
  11104. Binary files a/js/categoryreorder/css/font/fontawesome-webfont.woff2 and /dev/null differ
  11105. diff --git a/js/categoryreorder/css/style.css b/js/categoryreorder/css/style.css
  11106. deleted file mode 100644
  11107. index 9b0988e..0000000
  11108. --- a/js/categoryreorder/css/style.css
  11109. +++ /dev/null
  11110. @@ -1,131 +0,0 @@
  11111. -@font-face {
  11112. -  font-family: "FontAwesome";
  11113. -  src: url('font/fontawesome-webfont.eot');
  11114. -  src: url('font/fontawesome-webfont.eot?#iefix') format('eot'),
  11115. -       url('font/fontawesome-webfont.woff') format('woff'),
  11116. -       url('font/fontawesome-webfont.ttf') format('truetype'),
  11117. -       url('font/fontawesome-webfont.svg#FontAwesome') format('svg');
  11118. -  font-weight: normal;
  11119. -  font-style: normal;
  11120. -}
  11121. -body {
  11122. -    background-color: #333;
  11123. -}
  11124. -.ui-sortable {
  11125. -    width: 350px;
  11126. -    margin: 0px auto 40px auto;
  11127. -    background-color: #ccc;
  11128. -    -webkit-box-shadow:  0px 0px 10px 1px rgba(0, 0, 0, .1);
  11129. -  box-shadow:  0px 0px 10px 1px rgba(0, 0, 0, .1);
  11130. -  list-style-type: none;
  11131. -  padding: 0;
  11132. -}
  11133. -.ui-sortable li.ui-state-default {
  11134. -    margin: 0;
  11135. -    font-size: 14px;
  11136. -    color: #fff;
  11137. -    outline: 0;
  11138. -    text-indent: 15px;
  11139. -    background: rgb(78,82,91);
  11140. -    background: -moz-linear-gradient(top,  rgb(78,82,91) 0%, rgb(57,61,68) 100%);
  11141. -    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgb(78,82,91)), color-stop(100%,rgb(57,61,68)));
  11142. -    background: -webkit-linear-gradient(top,  rgb(78,82,91) 0%,rgb(57,61,68) 100%);
  11143. -    background: -o-linear-gradient(top,  rgb(78,82,91) 0%,rgb(57,61,68) 100%);
  11144. -    background: -ms-linear-gradient(top,  rgb(78,82,91) 0%,rgb(57,61,68) 100%);
  11145. -    background: linear-gradient(to bottom,  rgb(78,82,91) 0%,rgb(57,61,68) 100%);
  11146. -    border-top: 1px solid rgba(255,255,255,.2);
  11147. -    border-bottom: 1px solid rgba(0,0,0,.5);
  11148. -    text-shadow: -1px -1px 0px rgba(0,0,0,.5);
  11149. -    font-size: 1.1em;
  11150. -    position: relative;
  11151. -    cursor: pointer;
  11152. -    padding: 9px;
  11153. -    text-align: left;
  11154. -}
  11155. -.ui-sortable li.ui-state-default:first-child {
  11156. -    border-top: 0;
  11157. -}
  11158. -.ui-sortable li.ui-state-default:last-child {
  11159. -    border-bottom: 0;
  11160. -}
  11161. -.ui-sortable-placeholder {
  11162. -    border: 3px dashed #aaa;
  11163. -    height: 45px;
  11164. -    width: 344px;
  11165. -    background: #ccc;
  11166. -}
  11167. -.ui-sortable li.ui-state-default:after {
  11168. -    content: "\f0c9";
  11169. -    display: inline-block;
  11170. -    font-family: "FontAwesome";
  11171. -    position: absolute;
  11172. -    right: 18px;
  11173. -    top: 9px;
  11174. -    text-align: center;
  11175. -    color: rgba(255,255,255,.2);
  11176. -    text-shadow: 0px 0px 0px rgba(0,0,0,0);
  11177. -    cursor: move;
  11178. -}
  11179. -#l1catlist, #l2catlist{
  11180. -    width: 100%;
  11181. -    margin-bottom: 5px;
  11182. -}
  11183. -#anchor-content{
  11184. -    text-align: center;
  11185. -}
  11186. -#category_listl1 select, #category_listl2 select {
  11187. -    width: 27%;
  11188. -    padding: 7px;
  11189. -    font-size: 13px;
  11190. -    color: #333;
  11191. -    border: 1px solid #ccc;
  11192. -}
  11193. -.update-btn a{
  11194. -    font-size: 15px;
  11195. -    color: #fff;
  11196. -    cursor: pointer;
  11197. -    padding: 10px 40px;
  11198. -    text-decoration:none;
  11199. -    text-transform: uppercase;
  11200. -    background: #f77d00;
  11201. -    border-radius: 3px;
  11202. -}
  11203. -.update-btn a:hover{
  11204. -    color: #fff;
  11205. -    text-decoration: none;
  11206. -}
  11207. -#category_listl3 p {
  11208. -    font-size: 14px;
  11209. -    color: #f00;
  11210. -    border: 1px solid #f00;
  11211. -    padding: 10px 0;
  11212. -    width: 27%;
  11213. -    margin:-40px auto;
  11214. -}
  11215. -#update_msg_success {
  11216. -    color: #27ae03;
  11217. -    font-size: 14px;
  11218. -    padding: 0 0 10px 0;
  11219. -}
  11220. -#update_msg_error {
  11221. -    color: red;
  11222. -    font-size: 14px;
  11223. -    padding: 0 0 10px 0;
  11224. -}
  11225. -#category_listl1 lable, #category_listl2 lable {
  11226. -    font-size: 14px;
  11227. -    font-weight: bold;
  11228. -    color: #3c3c3c;
  11229. -    padding: 0 20px 0 0;
  11230. -    margin-left: -105px;
  11231. -}
  11232. -lable.blnk-spc{
  11233. -    width: 10%;
  11234. -    display: inline-block;
  11235. -}
  11236. -.catgry-heading{
  11237. -    font-size: 16px;
  11238. -    font-weight: bold;
  11239. -    color: #3c3c3c;  
  11240. -    text-align: left;  
  11241. -}
  11242. \ No newline at end of file
  11243. diff --git a/js/categoryreorder/js/catreorder-common.js b/js/categoryreorder/js/catreorder-common.js
  11244. deleted file mode 100644
  11245. index 8085529..0000000
  11246. --- a/js/categoryreorder/js/catreorder-common.js
  11247. +++ /dev/null
  11248. @@ -1,21 +0,0 @@
  11249. -jQuery(function() {
  11250. -        jQuery("#sortable").sortable({
  11251. -            placeholder: "ui-sortable-placeholder"
  11252. -        });
  11253. -        jQuery('#update_msg_success').fadeOut(5000);
  11254. -    });
  11255. -
  11256. -function prepareCatArr(){
  11257. -    var i = 0;
  11258. -    var finalArr = [];
  11259. -    jQuery("#sortable li").each(function(){
  11260. -        key = jQuery(this).attr('id');
  11261. -        finalArr[i] = {};
  11262. -        finalArr[i]['position'] = i+1;
  11263. -        finalArr[i]['id'] = key;
  11264. -        i++;
  11265. -    });
  11266. -    var outputArr = JSON.stringify(finalArr);
  11267. -    jQuery("#update_catlist").val(outputArr);
  11268. -    jQuery('#category_list').submit();      
  11269. -}
  11270. \ No newline at end of file
  11271. diff --git a/js/smartwave/jquery/jquery-1.10.2.min.js b/js/smartwave/jquery/jquery-1.10.2.min.js
  11272. index 692f5b3..da41706 100644
  11273. --- a/js/smartwave/jquery/jquery-1.10.2.min.js
  11274. +++ b/js/smartwave/jquery/jquery-1.10.2.min.js
  11275. @@ -4,5 +4,3 @@
  11276.  (function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
  11277.  }({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
  11278.  u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
  11279. -
  11280. -jQuery.noConflict();
  11281. \ No newline at end of file
  11282. diff --git a/js/smartwave/jquery/jquery-ui-1.11.4.min.js b/js/smartwave/jquery/jquery-ui-1.11.4.min.js
  11283. deleted file mode 100644
  11284. index 0245f83..0000000
  11285. --- a/js/smartwave/jquery/jquery-ui-1.11.4.min.js
  11286. +++ /dev/null
  11287. @@ -1,13 +0,0 @@
  11288. -/*! jQuery UI - v1.11.4 - 2015-03-11
  11289. -* http://jqueryui.com
  11290. -* Includes: core.js, widget.js, mouse.js, position.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, draggable.js, droppable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js, menu.js, progressbar.js, resizable.js, selectable.js, selectmenu.js, slider.js, sortable.js, spinner.js, tabs.js, tooltip.js
  11291. -* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */
  11292. -
  11293. -(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return"area"===r?(n=t.parentNode,a=n.name,t.href&&a&&"map"===n.nodeName.toLowerCase()?(o=e("img[usemap='#"+a+"']")[0],!!o&&i(o)):!1):(/^(input|select|textarea|button|object)$/.test(r)?!t.disabled:"a"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function s(e){for(var t,i;e.length&&e[0]!==document;){if(t=e.css("position"),("absolute"===t||"relative"===t||"fixed"===t)&&(i=parseInt(e.css("zIndex"),10),!isNaN(i)&&0!==i))return i;e=e.parent()}return 0}function n(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.regional.en=e.extend(!0,{},this.regional[""]),this.regional["en-US"]=e.extend(!0,{},this.regional.en),this.dpDiv=a(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",o)}function o(){e.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent()[0]:v.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function r(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}function h(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var l=0,u=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,n=u.call(arguments,1),a=0,o=n.length;o>a;a++)for(i in n[a])s=n[a][i],n[a].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(n){var a="string"==typeof n,o=u.call(arguments,1),r=this;return a?this.each(function(){var i,a=e.data(this,s);return"instance"===n?(r=a,!1):a?e.isFunction(a[n])&&"_"!==n.charAt(0)?(i=a[n].apply(a,o),i!==a&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+n+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+n+"'")}):(o.length&&(n=e.widget.extend.apply(null,[n].concat(o))),this.each(function(){var t=e.data(this,s);t?(t.option(n||{}),t._init&&t._init()):e.data(this,s,new i(n,this))})),r}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),d=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),a=s.children()[0];return e("body").append(s),t=a.offsetWidth,s.css("overflow","scroll"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,a="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:a?e.position.scrollbarWidth():0,height:n?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s||n?i.width():i.outerWidth(),height:s||n?i.height():i.outerHeight()}}},e.fn.position=function(n){if(!n||!n.of)return f.apply(this,arguments);n=e.extend({},n);var p,m,g,v,y,b,_=e(n.of),x=e.position.getWithinInfo(n.within),w=e.position.getScrollInfo(x),k=(n.collision||"flip").split(" "),T={};return b=s(_),_[0].preventDefault&&(n.at="left top"),m=b.width,g=b.height,v=b.offset,y=e.extend({},v),e.each(["my","at"],function(){var e,t,i=(n[this]||"").split(" ");1===i.length&&(i=l.test(i[0])?i.concat(["center"]):u.test(i[0])?["center"].concat(i):["center","center"]),i[0]=l.test(i[0])?i[0]:"center",i[1]=u.test(i[1])?i[1]:"center",e=d.exec(i[0]),t=d.exec(i[1]),T[this]=[e?e[0]:0,t?t[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===n.at[0]?y.left+=m:"center"===n.at[0]&&(y.left+=m/2),"bottom"===n.at[1]?y.top+=g:"center"===n.at[1]&&(y.top+=g/2),p=t(T.at,m,g),y.left+=p[0],y.top+=p[1],this.each(function(){var s,l,u=e(this),d=u.outerWidth(),c=u.outerHeight(),f=i(this,"marginLeft"),b=i(this,"marginTop"),D=d+f+i(this,"marginRight")+w.width,S=c+b+i(this,"marginBottom")+w.height,M=e.extend({},y),C=t(T.my,u.outerWidth(),u.outerHeight());"right"===n.my[0]?M.left-=d:"center"===n.my[0]&&(M.left-=d/2),"bottom"===n.my[1]?M.top-=c:"center"===n.my[1]&&(M.top-=c/2),M.left+=C[0],M.top+=C[1],a||(M.left=h(M.left),M.top=h(M.top)),s={marginLeft:f,marginTop:b},e.each(["left","top"],function(t,i){e.ui.position[k[t]]&&e.ui.position[k[t]][i](M,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:c,collisionPosition:s,collisionWidth:D,collisionHeight:S,offset:[p[0]+C[0],p[1]+C[1]],my:n.my,at:n.at,within:x,elem:u})}),n.using&&(l=function(e){var t=v.left-M.left,i=t+m-d,s=v.top-M.top,a=s+g-c,h={target:{element:_,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:M.left,top:M.top,width:d,height:c},horizontal:0>i?"left":t>0?"right":"center",vertical:0>a?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+a)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(a))?"horizontal":"vertical",n.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-a,(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,(i>0||d>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,n,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.accordion",{version:"1.11.4",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,s=this.headers.length,n=this.headers.index(t.target),a=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:a=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:a=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(e(t.target).attr("tabIndex",-1),e(a).attr("tabIndex",0),a.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.panels=this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide(),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var t,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var t=e(this),i=t.uniqueId().attr("id"),s=t.next(),n=s.uniqueId().attr("id");t.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(t=n.height(),this.element.siblings(":visible").each(function(){var i=e(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(t-=i.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?e():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?e():n,newPanel:r};t.preventDefault(),a&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?e():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),a||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,s=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,t):(s.hide(),i.show(),this._toggleComplete(t)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(e(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,t,i){var s,n,a,o=this,r=0,h=e.css("box-sizing"),l=e.length&&(!t.length||e.index()<t.index()),u=this.options.animate||{},d=l&&u.down||u,c=function(){o._toggleComplete(i)};return"number"==typeof d&&(a=d),"string"==typeof d&&(n=d),n=n||d.easing||u.easing,a=a||d.duration||u.duration,t.length?e.length?(s=e.show().outerHeight(),t.animate(this.hideProps,{duration:a,easing:n,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(this.showProps,{duration:a,easing:n,complete:c,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?"content-box"===h&&(r+=i.now):"content"!==o.options.heightStyle&&(i.now=Math.round(s-t.outerHeight()-r),r=0)}}),void 0):t.animate(this.hideProps,a,n,c):e.animate(this.showProps,a,n,c)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.widget("ui.menu",{version:"1.11.4",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var i=e(t.target);!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&e(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var i=e(t.currentTarget);
  11294. -i.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){var i,s,n,a,o=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:o=!1,s=this.previousFilter||"",n=String.fromCharCode(t.keyCode),a=!1,clearTimeout(this.filterTimer),n===s?a=!0:n=s+n,i=this._filterMenuItems(n),i=a&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(t.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(t,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t,i,s=this,n=this.options.icons.submenu,a=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),a.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),i=t.parent(),s=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);i.attr("aria-haspopup","true").prepend(s),t.attr("aria-labelledby",i.attr("id"))}),t=a.add(this.element),i=t.find(this.options.items),i.not(".ui-menu-item").each(function(){var t=e(this);s._isDivider(t)&&t.addClass("ui-widget-content ui-menu-divider")}),i.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,n=t.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=t.outerHeight(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-n}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+n>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,i)},_filterMenuItems:function(t){var i=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(e.trim(e(this).text()))})}}),e.widget("ui.autocomplete",{version:"1.11.4",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:n})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&e.trim(s).length&&(this.liveRegion.children().hide(),e("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){n(e)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),i=this.menu.element.is(":visible"),s=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!i&&!s)&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):void 0},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").text(i.label).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(i).appendTo(this.liveRegion))}}),e.ui.autocomplete;var c,p="ui-button ui-widget ui-state-default ui-corner-all",f="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",m=function(){var t=e(this);setTimeout(function(){t.find(":ui-button").button("refresh")},1)},g=function(t){var i=t.name,s=t.form,n=e([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?e(s).find("[name='"+i+"'][type=radio]"):e("[name='"+i+"'][type=radio]",t.ownerDocument).filter(function(){return!this.form})),n};e.widget("ui.button",{version:"1.11.4",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,m),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,i=this.options,s="checkbox"===this.type||"radio"===this.type,n=s?"":"ui-state-active";null===i.label&&(i.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(p).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){i.disabled||this===c&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){i.disabled||e(this).removeClass(n)}).bind("click"+this.eventNamespace,function(e){i.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),s&&this.element.bind("change"+this.eventNamespace,function(){t.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return i.disabled?!1:void 0}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(i.disabled)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var s=t.element[0];g(s).not(s).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return i.disabled?!1:(e(this).addClass("ui-state-active"),c=this,t.document.one("mouseup",function(){c=null}),void 0)}).bind("mouseup"+this.eventNamespace,function(){return i.disabled?!1:(e(this).removeClass("ui-state-active"),void 0)}).bind("keydown"+this.eventNamespace,function(t){return i.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),void 0)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",i.disabled),this._resetButton()},_determineButtonType:function(){var e,t,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(p+" ui-state-active "+f).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),t&&("checkbox"===this.type||"radio"===this.type?this.buttonElement.removeClass("ui-state-focus"):this.buttonElement.removeClass("ui-state-focus ui-state-active")),void 0):(this._resetButton(),void 0)},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),"radio"===this.type?g(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),void 0;var t=this.buttonElement.removeClass(f),i=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),s=this.options.icons,n=s.primary&&s.secondary,a=[];s.primary||s.secondary?(this.options.text&&a.push("ui-button-text-icon"+(n?"s":s.primary?"-primary":"-secondary")),s.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+s.secondary+"'></span>"),this.options.text||(a.push(n?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(i)))):a.push("ui-button-text-only"),t.addClass(a.join(" "))}}),e.widget("ui.buttonset",{version:"1.11.4",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t="rtl"===this.element.css("direction"),i=this.element.find(this.options.items),s=i.filter(":ui-button");i.not(":ui-button").button(),s.button("refresh"),this.buttons=i.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}}),e.ui.button,e.extend(e.ui,{datepicker:{version:"1.11.4"}});var v;e.extend(n.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return r(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var s,n,a;s=t.nodeName.toLowerCase(),n="div"===s||"span"===s,t.id||(this.uuid+=1,t.id="dp"+this.uuid),a=this._newInst(e(t),n),a.settings=e.extend({},i||{}),"input"===s?this._connectDatepicker(t,a):n&&this._inlineDatepicker(t,a)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,i){var s=e(t);i.append=e([]),i.trigger=e([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,"datepicker",i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var s,n,a,o=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),o&&(i.append=e("<span class='"+this._appendClass+"'>"+o+"</span>"),t[r?"before":"after"](i.append)),t.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&t.focus(this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),a=this._get(i,"buttonImage"),i.trigger=e(this._get(i,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:a,alt:n,title:n}):e("<button type='button'></button>").addClass(this._triggerClass).html(a?e("<img/>").attr({src:a,alt:n,title:n}):n)),t[r?"before":"after"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,i,s,n,a=new Date(2009,11,20),o=this._get(e,"dateFormat");o.match(/[DM]/)&&(t=function(e){for(i=0,s=0,n=0;e.length>n;n++)e[n].length>i&&(i=e[n].length,s=n);return s},a.setMonth(t(this._get(e,o.match(/MM/)?"monthNames":"monthNamesShort"))),a.setDate(t(this._get(e,o.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())),e.input.attr("size",this._formatDate(e,a).length)}},_inlineDatepicker:function(t,i){var s=e(t);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),e.data(t,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,s,n,a){var o,h,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),c=this._dialogInst=this._newInst(this._dialogInput,!1),c.settings={},e.data(this._dialogInput[0],"datepicker",c)),r(c.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(c,i):i,this._dialogInput.val(i),this._pos=a?a.length?a:[a.pageX,a.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],"datepicker",c),this},_destroyDatepicker:function(t){var i,s=e(t),n=e.data(t,"datepicker");s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),v===n&&(v=null))},_enableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!1,a.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!0,a.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,i,s){var n,a,o,h,l=this._getInst(t);return 2===arguments.length&&"string"==typeof i?"defaults"===i?e.extend({},e.datepicker._defaults):l?"all"===i?e.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),a=this._getDateDatepicker(t,!0),o=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),r(l.settings,n),null!==o&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,o)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,a),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,s,n,a=e.datepicker._getInst(t.target),o=!0,r=a.dpDiv.is(".ui-datepicker-rtl");if(a._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return n=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",a.dpDiv),n[0]&&e.datepicker._selectDay(t.target,a.selectedMonth,a.selectedYear,n[0]),i=e.datepicker._get(a,"onSelect"),i?(s=e.datepicker._formatDate(a),i.apply(a.input?a.input[0]:null,[s,a])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var i,s,n=e.datepicker._getInst(t.target);
  11295. -return e.datepicker._get(n,"constrainInput")?(i=e.datepicker._possibleChars(e.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(t){var i,s=e.datepicker._getInst(t.target);if(s.input.val()!==s.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,e.datepicker._getFormatConfig(s)),i&&(e.datepicker._setDateFromField(s),e.datepicker._updateAlternate(s),e.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,n,a,o,h,l,u;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),n=e.datepicker._get(i,"beforeShow"),a=n?n.apply(t,[t,i]):{},a!==!1&&(r(i.settings,a),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),o=!1,e(t).parents().each(function(){return o|="fixed"===e(this).css("position"),!o}),h={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),h=e.datepicker._checkOffset(i,h,o),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":o?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),i.inline||(l=e.datepicker._get(i,"showAnim"),u=e.datepicker._get(i,"duration"),i.dpDiv.css("z-index",s(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[l]?i.dpDiv.show(l,e.datepicker._get(i,"showOptions"),u):i.dpDiv[l||"show"](l?u:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,v=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var i,s=this._getNumberOfMonths(t),n=s[1],a=17,r=t.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&t.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),t.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,i,s){var n=t.dpDiv.outerWidth(),a=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,r=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?n-o:0,i.left-=s&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=s&&i.top===t.input.offset().top+r?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+a>l&&l>a?Math.abs(a+r):0),i},_findPos:function(t){for(var i,s=this._getInst(t),n=this._get(s,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[n?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,s,n,a,o=this._curInst;!o||t&&o!==e.data(t,"datepicker")||this._datepickerShowing&&(i=this._get(o,"showAnim"),s=this._get(o,"duration"),n=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.datepicker._get(o,"showOptions"),s,n):o.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,a=this._get(o,"onClose"),a&&a.apply(o.input?o.input[0]:null,[o.input?o.input.val():"",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),s=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==s)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,s){var n=e(t),a=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(a,i+("M"===s?this._get(a,"showCurrentAtPos"):0),s),this._updateDatepicker(a))},_gotoToday:function(t){var i,s=e(t),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(t,i,s){var n=e(t),a=this._getInst(n[0]);a["selected"+("M"===s?"Month":"Year")]=a["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(a),this._adjustDate(n)},_selectDay:function(t,i,s,n){var a,o=e(t);e(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||(a=this._getInst(o[0]),a.selectedDay=a.currentDay=e("a",n).html(),a.selectedMonth=a.currentMonth=i,a.selectedYear=a.currentYear=s,this._selectDate(t,this._formatDate(a,a.currentDay,a.currentMonth,a.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var s,n=e(t),a=this._getInst(n[0]);i=null!=i?i:this._formatDate(a),a.input&&a.input.val(i),this._updateAlternate(a),s=this._get(a,"onSelect"),s?s.apply(a.input?a.input[0]:null,[i,a]):a.input&&a.input.trigger("change"),a.inline?this._updateDatepicker(a):(this._hideDatepicker(),this._lastInput=a.input[0],"object"!=typeof a.input[0]&&a.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,s,n,a=this._get(t,"altField");a&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),s=this._getDate(t),n=this.formatDate(i,s,this._getFormatConfig(t)),e(a).each(function(){e(this).val(n)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(t,i,s){if(null==t||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,a,o,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,c=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,m=-1,g=-1,v=-1,y=-1,b=!1,_=function(e){var i=t.length>n+1&&t.charAt(n+1)===e;return i&&n++,i},x=function(e){var t=_(e),s="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,n="y"===e?s:1,a=RegExp("^\\d{"+n+","+s+"}"),o=i.substring(h).match(a);if(!o)throw"Missing number at position "+h;return h+=o[0].length,parseInt(o[0],10)},w=function(t,s,n){var a=-1,o=e.map(_(t)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,t){var s=t[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(a=t[0],h+=s.length,!1):void 0}),-1!==a)return a+1;throw"Unknown name at position "+h},k=function(){if(i.charAt(h)!==t.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;t.length>n;n++)if(b)"'"!==t.charAt(n)||_("'")?k():b=!1;else switch(t.charAt(n)){case"d":v=x("d");break;case"D":w("D",d,c);break;case"o":y=x("o");break;case"m":g=x("m");break;case"M":g=w("M",p,f);break;case"y":m=x("y");break;case"@":r=new Date(x("@")),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"!":r=new Date((x("!")-this._ticksTo1970)/1e4),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"'":_("'")?k():b=!0;break;default:k()}if(i.length>h&&(o=i.substr(h),!/^\s+/.test(o)))throw"Extra/unparsed characters found in date: "+o;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),y>-1)for(g=1,v=y;;){if(a=this._getDaysInMonth(m,g-1),a>=v)break;g++,v-=a}if(r=this._daylightSavingAdjust(new Date(m,g-1,v)),r.getFullYear()!==m||r.getMonth()+1!==g||r.getDate()!==v)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,a=(i?i.dayNames:null)||this._defaults.dayNames,o=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(t){var i=e.length>s+1&&e.charAt(s+1)===t;return i&&s++,i},l=function(e,t,i){var s=""+t;if(h(e))for(;i>s.length;)s="0"+s;return s},u=function(e,t,i,s){return h(e)?s[t]:i[t]},d="",c=!1;if(t)for(s=0;e.length>s;s++)if(c)"'"!==e.charAt(s)||h("'")?d+=e.charAt(s):c=!1;else switch(e.charAt(s)){case"d":d+=l("d",t.getDate(),2);break;case"D":d+=u("D",t.getDay(),n,a);break;case"o":d+=l("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":d+=l("m",t.getMonth()+1,2);break;case"M":d+=u("M",t.getMonth(),o,r);break;case"y":d+=h("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":d+=t.getTime();break;case"!":d+=1e4*t.getTime()+this._ticksTo1970;break;case"'":h("'")?d+="'":c=!0;break;default:d+=e.charAt(s)}return d},_possibleChars:function(e){var t,i="",s=!1,n=function(i){var s=e.length>t+1&&e.charAt(t+1)===i;return s&&t++,s};for(t=0;e.length>t;t++)if(s)"'"!==e.charAt(t)||n("'")?i+=e.charAt(t):s=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,"dateFormat"),s=e.lastVal=e.input?e.input.val():null,n=this._getDefaultDate(e),a=n,o=this._getFormatConfig(e);try{a=this.parseDate(i,s,o)||n}catch(r){s=t?"":s}e.selectedDay=a.getDate(),e.drawMonth=e.selectedMonth=a.getMonth(),e.drawYear=e.selectedYear=a.getFullYear(),e.currentDay=s?a.getDate():0,e.currentMonth=s?a.getMonth():0,e.currentYear=s?a.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,s){var n=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},a=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,a=n.getFullYear(),o=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":o+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o));break;case"y":case"Y":a+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o))}l=h.exec(i)}return new Date(a,o,r)},o=null==i||""===i?s:"string"==typeof i?a(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return o=o&&"Invalid Date"==""+o?s:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var s=!t,n=e.selectedMonth,a=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),n===e.selectedMonth&&a===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(s?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,"stepMonths"),s="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(s,-i,"M")},next:function(){e.datepicker._adjustDate(s,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(s)},selectDay:function(){return e.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(s,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,s,n,a,o,r,h,l,u,d,c,p,f,m,g,v,y,b,_,x,w,k,T,D,S,M,C,N,A,P,I,H,z,F,E,O,j,W,L=new Date,R=this._daylightSavingAdjust(new Date(L.getFullYear(),L.getMonth(),L.getDate())),Y=this._get(e,"isRTL"),B=this._get(e,"showButtonPanel"),J=this._get(e,"hideIfNoPrevNext"),q=this._get(e,"navigationAsDateFormat"),K=this._getNumberOfMonths(e),V=this._get(e,"showCurrentAtPos"),U=this._get(e,"stepMonths"),Q=1!==K[0]||1!==K[1],G=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),X=this._getMinMaxDate(e,"min"),$=this._getMinMaxDate(e,"max"),Z=e.drawMonth-V,et=e.drawYear;if(0>Z&&(Z+=12,et--),$)for(t=this._daylightSavingAdjust(new Date($.getFullYear(),$.getMonth()-K[0]*K[1]+1,$.getDate())),t=X&&X>t?X:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=q?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-U,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":J?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(e,"nextText"),n=q?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z+U,1)),this._getFormatConfig(e)):n,a=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":J?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",o=this._get(e,"currentText"),r=this._get(e,"gotoCurrent")&&e.currentDay?G:R,o=q?this.formatDate(o,r,this._getFormatConfig(e)):o,h=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",l=B?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(e,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+o+"</button>":"")+(Y?"":h)+"</div>":"",u=parseInt(this._get(e,"firstDay"),10),u=isNaN(u)?0:u,d=this._get(e,"showWeek"),c=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),f=this._get(e,"monthNames"),m=this._get(e,"monthNamesShort"),g=this._get(e,"beforeShowDay"),v=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),_="",w=0;K[0]>w;w++){for(k="",this.maxRows=4,T=0;K[1]>T;T++){if(D=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),S=" ui-corner-all",M="",Q){if(M+="<div class='ui-datepicker-group",K[1]>1)switch(T){case 0:M+=" ui-datepicker-group-first",S=" ui-corner-"+(Y?"right":"left");break;case K[1]-1:M+=" ui-datepicker-group-last",S=" ui-corner-"+(Y?"left":"right");break;default:M+=" ui-datepicker-group-middle",S=""}M+="'>"}for(M+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+S+"'>"+(/all|left/.test(S)&&0===w?Y?a:s:"")+(/all|right/.test(S)&&0===w?Y?s:a:"")+this._generateMonthYearHeader(e,Z,et,X,$,w>0||T>0,f,m)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",C=d?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",x=0;7>x;x++)N=(x+u)%7,C+="<th scope='col'"+((x+u+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+c[N]+"'>"+p[N]+"</span></th>";for(M+=C+"</tr></thead><tbody>",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),P=(this._getFirstDayOfMonth(et,Z)-u+7)%7,I=Math.ceil((P+A)/7),H=Q?this.maxRows>I?this.maxRows:I:I,this.maxRows=H,z=this._daylightSavingAdjust(new Date(et,Z,1-P)),F=0;H>F;F++){for(M+="<tr>",E=d?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(z)+"</td>":"",x=0;7>x;x++)O=g?g.apply(e.input?e.input[0]:null,[z]):[!0,""],j=z.getMonth()!==Z,W=j&&!y||!O[0]||X&&X>z||$&&z>$,E+="<td class='"+((x+u+6)%7>=5?" ui-datepicker-week-end":"")+(j?" ui-datepicker-other-month":"")+(z.getTime()===D.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===z.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(W?" "+this._unselectableClass+" ui-state-disabled":"")+(j&&!v?"":" "+O[1]+(z.getTime()===G.getTime()?" "+this._currentClass:"")+(z.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+(j&&!v||!O[2]?"":" title='"+O[2].replace(/'/g,"&#39;")+"'")+(W?"":" data-handler='selectDay' data-event='click' data-month='"+z.getMonth()+"' data-year='"+z.getFullYear()+"'")+">"+(j&&!v?"&#xa0;":W?"<span class='ui-state-default'>"+z.getDate()+"</span>":"<a class='ui-state-default"+(z.getTime()===R.getTime()?" ui-state-highlight":"")+(z.getTime()===G.getTime()?" ui-state-active":"")+(j?" ui-priority-secondary":"")+"' href='#'>"+z.getDate()+"</a>")+"</td>",z.setDate(z.getDate()+1),z=this._daylightSavingAdjust(z);M+=E+"</tr>"}Z++,Z>11&&(Z=0,et++),M+="</tbody></table>"+(Q?"</div>"+(K[0]>0&&T===K[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),k+=M}_+=k}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,s,n,a,o,r){var h,l,u,d,c,p,f,m,g=this._get(e,"changeMonth"),v=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",_="";if(a||!g)_+="<span class='ui-datepicker-month'>"+o[t]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,_+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",u=0;12>u;u++)(!h||u>=s.getMonth())&&(!l||n.getMonth()>=u)&&(_+="<option value='"+u+"'"+(u===t?" selected='selected'":"")+">"+r[u]+"</option>");_+="</select>"}if(y||(b+=_+(!a&&g&&v?"":"&#xa0;")),!e.yearshtml)if(e.yearshtml="",a||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(d=this._get(e,"yearRange").split(":"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?c+parseInt(e,10):parseInt(e,10);return isNaN(t)?c:t},f=p(d[0]),m=Math.max(f,p(d[1]||"")),f=s?Math.max(f,s.getFullYear()):f,m=n?Math.min(m,n.getFullYear()):m,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";m>=f;f++)e.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),y&&(b+=(!a&&g&&v?"":"&#xa0;")+_),b+="</div>"},_adjustInstDate:function(e,t,i){var s=e.drawYear+("Y"===i?t:0),n=e.drawMonth+("M"===i?t:0),a=Math.min(e.selectedDay,this._getDaysInMonth(s,n))+("D"===i?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(s,n,a)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),n=i&&i>t?i:t;return s&&n>s?s:n},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,s){var n=this._getNumberOfMonths(e),a=this._daylightSavingAdjust(new Date(i,s+(0>t?t:n[0]*n[1]),1));return 0>t&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(e,a)},_isInRange:function(e,t){var i,s,n=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max"),o=null,r=null,h=this._get(e,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),o=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(o+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||t.getTime()>=n.getTime())&&(!a||t.getTime()<=a.getTime())&&(!o||t.getFullYear()>=o)&&(!r||r>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,i,s){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var n=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(s,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),n,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new n,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.11.4",e.datepicker,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),n=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(a).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=e(n.containment),s=i[0],s&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)
  11296. -},_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a),"y"===o.axis&&(h=this.originalPageX),"x"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var n=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,n))})},drag:function(t,i,s){e.each(s.sortables,function(){var n=!1,a=this;a.positionAbs=s.positionAbs,a.helperProportions=s.helperProportions,a.offset.click=s.offset.click,a._intersectsWith(a.containerCache)&&(n=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==a&&this._intersectsWith(this.containerCache)&&e.contains(a.element[0],this.element[0])&&(n=!1),n})),n?(a.isOver||(a.isOver=1,s._parent=i.helper.parent(),a.currentItem=i.helper.appendTo(a.element).data("ui-sortable-item",!0),a.options._helper=a.options.helper,a.options.helper=function(){return i.helper[0]},t.target=a.currentItem[0],a._mouseCapture(t,!0),a._mouseStart(t,!0,!0),a.offset.click.top=s.offset.click.top,a.offset.click.left=s.offset.click.left,a.offset.parent.left-=s.offset.parent.left-a.offset.parent.left,a.offset.parent.top-=s.offset.parent.top-a.offset.parent.top,s._trigger("toSortable",t),s.dropped=a.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(t),i.position=a.position)):a.isOver&&(a.isOver=0,a.cancelHelperRemoval=!0,a.options._revert=a.options.revert,a.options.revert=!1,a._trigger("out",t,a._uiHash(a)),a._mouseStop(t,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var n=s.options,a=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&"HTML"!==o.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+o.offsetHeight-t.pageY<n.scrollSensitivity?o.scrollTop=a=o.scrollTop+n.scrollSpeed:t.pageY-s.overflowOffset.top<n.scrollSensitivity&&(o.scrollTop=a=o.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+o.offsetWidth-t.pageX<n.scrollSensitivity?o.scrollLeft=a=o.scrollLeft+n.scrollSpeed:t.pageX-s.overflowOffset.left<n.scrollSensitivity&&(o.scrollLeft=a=o.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(t.pageY-e(r).scrollTop()<n.scrollSensitivity?a=e(r).scrollTop(e(r).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(r).scrollTop())<n.scrollSensitivity&&(a=e(r).scrollTop(e(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(t.pageX-e(r).scrollLeft()<n.scrollSensitivity?a=e(r).scrollLeft(e(r).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(r).scrollLeft())<n.scrollSensitivity&&(a=e(r).scrollLeft(e(r).scrollLeft()+n.scrollSpeed)))),a!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var n=s.options;s.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var n,a,o,r,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(d-y),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||a||o||r,"outer"!==f.snapMode&&(n=m>=Math.abs(u-y),a=m>=Math.abs(d-b),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),n&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return t[s]>0?!0:(t[s]=1,n=t[s]>0,t[s]=0,n)},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=e(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("<div class='ui-resizable-handle "+a+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=e(this.handles[i]),this._on(this.handles[i],{mousedown:o._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=e(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(n,a),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var i,s,n,a=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),a.containment&&(i+=e(a.containment).scrollLeft()||0,s+=e(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===n?this.axis+"-resize":n),o.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,n=this.originalMousePosition,a=this.axis,o=t.pageX-n.left||0,r=t.pageY-n.top||0,h=this._change[a];return this._updatePrevProperties(),h?(i=h.apply(this,[t,o,r]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,i,s,n,a,o=this.options;a={minWidth:this._isNumber(o.minWidth)?o.minWidth:0,maxWidth:this._isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:this._isNumber(o.minHeight)?o.minHeight:0,maxHeight:this._isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=a.minHeight*this.aspectRatio,s=a.minWidth/this.aspectRatio,i=a.maxHeight*this.aspectRatio,n=a.maxWidth/this.aspectRatio,t>a.minWidth&&(a.minWidth=t),s>a.minHeight&&(a.minHeight=s),a.maxWidth>i&&(a.maxWidth=i),a.maxHeight>n&&(a.maxHeight=n)),this._vBoundaries=a},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,a=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,r=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return a&&(e.width=t.minWidth),o&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),a&&l&&(e.left=r-t.minWidth),s&&l&&(e.left=r-t.maxWidth),o&&u&&(e.top=h-t.minHeight),n&&u&&(e.top=h-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,i=[],s=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],n=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(n[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,n,a,o,r,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,a=h.containerSize.width,o=h._hasScroll(c,"left")?c.scrollWidth:a,r=h._hasScroll(c)?c.scrollHeight:n,h.parentData={element:c,left:s.left,top:s.top,width:o,height:r}))},resize:function(t){var i,s,n,a,o=e(this).resizable("instance"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,d={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-d.left),u&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?h.top:0),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),i=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-d.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-d.top:o.offset.top-h.top)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options;e(i.alsoResize).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})},resize:function(t,i){var s=e(this).resizable("instance"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0};e(n.alsoResize).each(function(){var t=e(this),s=e(this).data("ui-resizable-alsoresize"),n={},a=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(a,function(e,t){var i=(s[t]||0)+(r[t]||0);i&&i>=0&&(n[t]=i||null)}),t.css(n)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,i=e(this).resizable("instance"),s=i.options,n=i.size,a=i.originalSize,o=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,d=Math.round((n.width-a.width)/l)*l,c=Math.round((n.height-a.height)/u)*u,p=a.width+d,f=a.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=o.top-c):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-c):(f=u-t.height,i.size.height=f,i.position.top=o.top+a.height-f),p-l>0?(i.size.width=p,i.position.left=o.left-d):(p=l-t.width,i.size.width=p,i.position.left=o.left+a.width-p))}}),e.ui.resizable,e.widget("ui.dialog",{version:"1.11.4",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"Close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var i,s=this;if(this._isOpen&&this._trigger("beforeClose",t)!==!1){if(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),!this.opener.filter(":focusable").focus().length)try{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&e(i).blur()}catch(n){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(this).css("z-index")}).get(),a=Math.max.apply(null,n);return a>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",a+1),s=!0),s&&!i&&this._trigger("focus",t),s},open:function(){var t=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var e=this._focusedElement;e||(e=this.element.find("[autofocus]")),e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function i(){var t=this.document[0].activeElement,i=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);i||this._focusTabbable()}t.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),this.close(t),void 0;
  11297. -if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");t.target!==n[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==s[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){n.focus()}),t.preventDefault()):(this._delay(function(){s.focus()}),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html("&#160;"),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(i)||e.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),void 0):(e.each(i,function(i,s){var n,a;s=e.isFunction(s)?{click:s,text:i}:s,s=e.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(t.element[0],arguments)},a={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,e("<button></button>",s).button(a).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){e(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,t(n))},drag:function(e,s){i._trigger("drag",e,t(s))},stop:function(n,a){var o=a.offset.left-i.document.scrollLeft(),r=a.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(o>=0?"+":"")+o+" "+"top"+(r>=0?"+":"")+r,of:i.window},e(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,t(a))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var i=this,s=this.options,n=s.resizable,a=this.uiDialog.css("position"),o="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:o,start:function(s,n){e(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,t(n))},resize:function(e,s){i._trigger("resize",e,t(s))},stop:function(n,a){var o=i.uiDialog.offset(),r=o.left-i.document.scrollLeft(),h=o.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},e(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,t(a))}}).css("position",a)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=e(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),i=e.inArray(this,t);-1!==i&&t.splice(i,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||(e=[],this.document.data("ui-dialog-instances",e)),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};e.each(t,function(e,t){i._setOption(e,t),e in i.sizeRelatedOptions&&(s=!0),e in i.resizableRelatedOptions&&(n[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,t){var i,s,n=this.uiDialog;"dialogClass"===e&&n.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&(i=n.is(":data(ui-draggable)"),i&&!t&&n.draggable("destroy"),!i&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(s=n.is(":data(ui-resizable)"),s&&!t&&n.resizable("destroy"),s&&"string"==typeof t&&n.resizable("option","handles",t),s||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),e=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),t=Math.max(0,s.minHeight-e),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-e):"none","auto"===s.height?this.element.css({minHeight:t,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=!0;this._delay(function(){t=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var e=this.document.data("ui-dialog-overlays")-1;e?this.document.data("ui-dialog-overlays",e):this.document.unbind("focusin").removeData("ui-dialog-overlays"),this.overlay.remove(),this.overlay=null}}}),e.widget("ui.droppable",{version:"1.11.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=e(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,i){return e>=t&&t+i>e}return function(t,i,s,n){if(!i.offset)return!1;var a=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,r=a+t.helperProportions.width,h=o+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return a>=l&&d>=r&&o>=u&&c>=h;case"intersect":return a+t.helperProportions.width/2>l&&d>r-t.helperProportions.width/2&&o+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(n.pageY,u,i.proportions().height)&&e(n.pageX,l,i.proportions().width);case"touch":return(o>=u&&c>=o||h>=u&&c>=h||u>o&&h>c)&&(a>=l&&d>=a||r>=l&&d>=r||l>a&&r>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue e}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions({width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight}))}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,this,this.options.tolerance,i),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===n}),a.length&&(s=e(a[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable;var y="ui-effects-",b=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,a){var o,r=a.re.exec(i),h=r&&a.parse(r),l=a.space||"rgba";return h?(o=s[l](h),s[u[l].cache]=o[u[l].cache],n=s._rgba=o._rgba,!1):t}),n.length?("0,0,0,0"===n.join()&&e.extend(n,a.transparent),s):a[i]}function n(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,n){return new e.Color.fn.parse(t,i,s,n)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(n,o,r,h){if(n===t)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=e(n).css(o),o=t);var d=this,c=e.type(n),p=this._rgba=[];return o!==t&&(n=[n,o,r,h],c="array"),"string"===c?this.parse(s(n)||a._default):"array"===c?(f(u.rgba.props,function(e,t){p[t.idx]=i(n[t.idx],t)}),this):"object"===c?(n instanceof l?f(u,function(e,t){n[t.cache]&&(d[t.cache]=n[t.cache].slice())}):f(u,function(t,s){var a=s.cache;f(s.props,function(e,t){if(!d[a]&&s.to){if("alpha"===e||null==n[e])return;d[a]=s.to(d._rgba)}d[a][t.idx]=i(n[e],t,!0)}),d[a]&&0>e.inArray(null,d[a].slice(0,3))&&(d[a][3]=1,s.from&&(d._rgba=s.from(d[a])))}),this):t},is:function(e){var i=l(e),s=!0,n=this;return f(u,function(e,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(e,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),n=s._space(),a=u[n],o=0===this.alpha()?l("transparent"):this,r=o[a.cache]||a.to(o._rgba),h=r.slice();return s=s[a.cache],f(a.props,function(e,n){var a=n.idx,o=r[a],l=s[a],u=d[n.type]||{};null!==l&&(null===o?h[a]=l:(u.mod&&(l-o>u.mod/2?o+=u.mod:o-l>u.mod/2&&(o-=u.mod)),h[a]=i((l-o)*t+o,n)))}),this[n](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*n[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,n=e[1]/255,a=e[2]/255,o=e[3],r=Math.max(s,n,a),h=Math.min(s,n,a),l=r-h,u=r+h,d=.5*u;return t=h===r?0:s===r?60*(n-a)/l+360:n===r?60*(a-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==o?1:o]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],a=e[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,t+1/3)),Math.round(255*n(r,o,t)),Math.round(255*n(r,o,t-1/3)),a]},f(u,function(s,n){var a=n.props,o=n.cache,h=n.to,u=n.from;l.fn[s]=function(s){if(h&&!this[o]&&(this[o]=h(this._rgba)),s===t)return this[o].slice();var n,r=e.type(s),d="array"===r||"object"===r?s:arguments,c=this[o].slice();return f(a,function(e,t){var s=d["object"===r?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(n=l(u(c)),n[o]=c,n):l(c)},f(a,function(t,i){l.fn[t]||(l.fn[t]=function(n){var a,o=e.type(n),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===o?u:("function"===o&&(n=n.call(this,u),o=e.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=u+parseFloat(a[2])*("+"===a[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,n){var a,o,r="";if("transparent"!==n&&("string"!==e.type(n)||(a=s(n)))){if(n=l(a||n),!c.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?t.parentNode:t;(""===r||"transparent"===r)&&o&&o.style;)try{r=e.css(o,"backgroundColor"),o=o.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{t.style[i]=n}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(o),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},a=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(b),function(){function t(t){var i,s,n=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[e.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function i(t,i){var s,a,o={};for(s in i)a=i[s],t[s]!==a&&(n[s]||(e.fx.step[s]||!isNaN(parseFloat(a)))&&(o[s]=a));return o}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(b.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(n,a,o,r){var h=e.speed(a,o,r);return this.queue(function(){var a,o=e(this),r=o.attr("class")||"",l=h.children?o.find("*").addBack():o;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),a=function(){e.each(s,function(e,t){n[t]&&o[t+"Class"](n[t])})},a(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),o.attr("class",r),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){a(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(o[0])})})},e.fn.extend({addClass:function(t){return function(i,s,n,a){return s?e.effects.animateClass.call(this,{add:i},s,n,a):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,n,a){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,n,a):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,n,a,o){return"boolean"==typeof s||void 0===s?n?e.effects.animateClass.call(this,s?{add:i}:{remove:i},n,a,o):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,n,a)}}(e.fn.toggleClass),switchClass:function(t,i,s,n,a){return e.effects.animateClass.call(this,{add:i,remove:t},s,n,a)}})}(),function(){function t(t,i,s,n){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(n=s,s=i,i={}),e.isFunction(s)&&(n=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=n||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.4",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(y+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(y+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:t.width(),height:t.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return t.wrap(s),(t[0]===a||e.contains(t[0],a))&&e(a).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(n),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,n){return n=n||{},e.each(i,function(e,i){var a=t.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(a)&&a.call(n[0]),e.isFunction(t)&&t()}var n=e(this),a=s.complete,r=s.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),i()):o.call(n[0],s,i)}var s=t.apply(this,arguments),n=s.mode,a=s.queue,o=e.effects.effect[s.effect];return e.fx.off||!o?n?this[n](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):a===!1?this.each(i):this.queue(a||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,i){var s,n,a,o=e(this),r=/up|down|vertical/,h=/up|left|vertical|horizontal/,l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(o,t.mode||"hide"),d=t.direction||"up",c=r.test(d),p=c?"height":"width",f=c?"top":"left",m=h.test(d),g={},v="show"===u;o.parent().is(".ui-effects-wrapper")?e.effects.save(o.parent(),l):e.effects.save(o,l),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n=s[p](),a=parseFloat(s.css(f))||0,g[p]=v?n:0,m||(o.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?a:n+a),v&&(s.css(p,0),m||s.css(f,a+n)),s.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===u&&o.hide(),e.effects.restore(o,l),e.effects.removeWrapper(o),i()}})},e.effects.effect.bounce=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||l?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=o.queue(),_=b.length;for((u||l)&&r.push("opacity"),e.effects.save(o,r),o.show(),e.effects.createWrapper(o),c||(c=o["top"===v?"outerHeight":"outerWidth"]()/3),u&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,y?2*-c:2*c).animate(a,m,g)),l&&(c/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g).animate(a,m,g),c=l?2*c:c/2;l&&(n={opacity:0},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g)),o.queue(function(){l&&o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),o.dequeue()},e.effects.effect.clip=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(o,r),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[c](),l&&(n.css(c,0),n.css(p,a/2)),f[c]=l?a:0,f[p]=l?0:a/2,n.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}})},e.effects.effect.drop=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","opacity","height","width"],o=e.effects.setMode(n,t.mode||"hide"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:r?1:0};e.effects.save(n,a),n.show(),e.effects.createWrapper(n),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===u?-s:s),d[l]=(r?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&n()}function n(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var a,o,r,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(a=0;d>a;a++)for(h=g.top+a*y,u=a-(d-1)/2,o=0;c>o;o++)r=g.left+o*v,l=o-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:r+(m?l*v:0),top:h+(m?u*y:0),opacity:m?0:1}).animate({left:r+(m?0:l*v),top:h+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)},e.effects.effect.fade=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:t.duration,easing:t.easing,complete:i})},e.effects.effect.fold=function(t,i){var s,n,a=e(this),o=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"hide"),h="show"===r,l="hide"===r,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(a,o),a.show(),s=e.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*n[l?0:1]),h&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=h?n[0]:u,v[f[1]]=h?n[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){l&&a.hide(),e.effects.restore(a,o),e.effects.removeWrapper(a),i()})},e.effects.effect.highlight=function(t,i){var s=e(this),n=["backgroundImage","backgroundColor","opacity"],a=e.effects.setMode(s,t.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),e.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===a&&s.hide(),e.effects.restore(s,n),i()}})},e.effects.effect.size=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=o.css("position"),y=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===t.mode&&"show"===p?(o.from=t.to||b,o.to=t.from||s):(o.from=t.from||("show"===p?b:s),o.to=t.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===m||"both"===m)&&(a.from.y!==a.to.y&&(y=y.concat(d),o.from=e.effects.setTransition(o,d,a.from.y,o.from),o.to=e.effects.setTransition(o,d,a.to.y,o.to)),a.from.x!==a.to.x&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,a.from.x,o.from),o.to=e.effects.setTransition(o,c,a.to.x,o.to))),("content"===m||"both"===m)&&a.from.y!==a.to.y&&(y=y.concat(u).concat(l),o.from=e.effects.setTransition(o,u,a.from.y,o.from),o.to=e.effects.setTransition(o,u,a.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),g&&(n=e.effects.getBaseline(g,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=r.concat(d).concat(c),o.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};
  11298. -f&&e.effects.save(i,l),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=e.effects.setTransition(i,d,a.from.y,i.from),i.to=e.effects.setTransition(i,d,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=e.effects.setTransition(i,c,a.from.x,i.from),i.to=e.effects.setTransition(i,c,a.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),e.effects.restore(o,y),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,i){var s=parseInt(i,10),n=e?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),e.effects.removeWrapper(o),i()}})},e.effects.effect.scale=function(t,i){var s=e(this),n=e.extend(!0,{},t),a=e.effects.setMode(s,t.mode||"effect"),o=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===a?0:100),r=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=h||["middle","center"],n.restore=!0),n.from=t.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},e.effects.effect.puff=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"hide"),a="hide"===n,o=parseInt(t.percent,10)||150,r=o/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(t)},e.effects.effect.pulsate=function(t,i){var s,n=e(this),a=e.effects.setMode(n,t.mode||"show"),o="show"===a,r="hide"===a,h=o||"hide"===a,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=n.queue(),p=c.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),d=1),s=1;l>s;s++)n.animate({opacity:d},u,t.easing),d=1-d;n.animate({opacity:d},u,t.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),n.dequeue()},e.effects.effect.shake=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"effect"),r=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},m={},g={},v=n.queue(),y=v.length;for(e.effects.save(n,a),n.show(),e.effects.createWrapper(n),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,n.animate(f,d,t.easing),s=1;l>s;s++)n.animate(m,d,t.easing).animate(g,d,t.easing);n.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),n.dequeue()},e.effects.effect.slide=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","width","height"],o=e.effects.setMode(n,t.mode||"show"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(n,a),n.show(),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(r?u?"+=":"-=":u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.transfer=function(t,i){var s=e(this),n=e(t.to),a="fixed"===n.css("position"),o=e("body"),r=a?o.scrollTop():0,h=a?o.scrollLeft():0,l=n.offset(),u={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-r,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})},e.widget("ui.progressbar",{version:"1.11.4",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return void 0===e?this.options.value:(this.options.value=this._constrainedValue(e),this._refreshValue(),void 0)},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=e===!1,"number"!=typeof e&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),e.widget("ui.selectable",e.ui.mouse,{version:"1.11.4",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,n=e.data(this,"selectable-item");return n?(s=!t.metaKey&&!t.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",t,{selecting:n.element}):i._trigger("unselecting",t,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=t.pageX,h=t.pageY;return a>r&&(i=r,r=a,a=i),o>h&&(i=h,h=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:h-o}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||a>i.right||i.top>h||o>i.bottom):"fit"===n.tolerance&&(l=i.left>a&&r>i.right&&i.top>o&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.selectmenu",{version:"1.11.4",defaultElement:"<select>",options:{appendTo:null,disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:null,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this.options.disabled&&this.disable()},_drawButton:function(){var t=this;this.label=e("label[for='"+this.ids.element+"']").attr("for",this.ids.button),this._on(this.label,{click:function(e){this.button.focus(),e.preventDefault()}}),this.element.hide(),this.button=e("<span>",{"class":"ui-selectmenu-button ui-widget ui-state-default ui-corner-all",tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true"}).insertAfter(this.element),e("<span>",{"class":"ui-icon "+this.options.icons.button}).prependTo(this.button),this.buttonText=e("<span>",{"class":"ui-selectmenu-text"}).appendTo(this.button),this._setText(this.buttonText,this.element.find("option:selected").text()),this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){t.menuItems||t._refreshMenu()}),this._hoverable(this.button),this._focusable(this.button)},_drawMenu:function(){var t=this;this.menu=e("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=e("<div>",{"class":"ui-selectmenu-menu ui-front"}).append(this.menu).appendTo(this._appendTo()),this.menuInstance=this.menu.menu({role:"listbox",select:function(e,i){e.preventDefault(),t._setSelection(),t._select(i.item.data("ui-selectmenu-item"),e)},focus:function(e,i){var s=i.item.data("ui-selectmenu-item");null!=t.focusIndex&&s.index!==t.focusIndex&&(t._trigger("focus",e,{item:s}),t.isOpen||t._select(s,e)),t.focusIndex=s.index,t.button.attr("aria-activedescendant",t.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menu.addClass("ui-corner-bottom").removeClass("ui-corner-all"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this._setText(this.buttonText,this._getSelectedItem().text()),this.options.width||this._resizeButton()},_refreshMenu:function(){this.menu.empty();var e,t=this.element.find("option");t.length&&(this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup"),e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this.menuItems?(this.menu.find(".ui-state-focus").removeClass("ui-state-focus"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e))},_position:function(){this.menuWrap.position(e.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderMenu:function(t,i){var s=this,n="";e.each(i,function(i,a){a.optgroup!==n&&(e("<li>",{"class":"ui-selectmenu-optgroup ui-menu-divider"+(a.element.parent("optgroup").prop("disabled")?" ui-state-disabled":""),text:a.optgroup}).appendTo(t),n=a.optgroup),s._renderItemData(t,a)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,i){var s=e("<li>");return i.disabled&&s.addClass("ui-state-disabled"),this._setText(s,i.label),s.appendTo(t)},_setText:function(e,t){t?e.text(t):e.html("&#160;")},_move:function(e,t){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex):(i=this.menuItems.eq(this.element[0].selectedIndex),n+=":not(.ui-state-disabled)"),s="first"===e||"last"===e?i["first"===e?"prevAll":"nextAll"](n).eq(-1):i[e+"All"](n).eq(0),s.length&&this.menuInstance.focus(t,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex)},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_setSelection:function(){var e;this.range&&(window.getSelection?(e=window.getSelection(),e.removeAllRanges(),e.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(e(t.target).closest(".ui-selectmenu-menu, #"+this.ids.button).length||this.close(t))}},_buttonEvents:{mousedown:function(){var e;window.getSelection?(e=window.getSelection(),e.rangeCount&&(this.range=e.getRangeAt(0))):this.range=document.selection.createRange()},click:function(e){this._setSelection(),this._toggle(e)},keydown:function(t){var i=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),i=!1;break;case e.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case e.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case e.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case e.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case e.ui.keyCode.LEFT:this._move("prev",t);break;case e.ui.keyCode.RIGHT:this._move("next",t);break;case e.ui.keyCode.HOME:case e.ui.keyCode.PAGE_UP:this._move("first",t);break;case e.ui.keyCode.END:case e.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),i=!1}i&&t.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex);t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this._setText(this.buttonText,e.label),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==i&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){var t=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(e,t){"icons"===e&&this.button.find("span.ui-icon").removeClass(this.options.icons.button).addClass(t.button),this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"disabled"===e&&(this.menuInstance.option("disabled",t),this.button.toggleClass("ui-state-disabled",t).attr("aria-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)),"width"===e&&this._resizeButton()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.toggleClass("ui-corner-top",this.isOpen).toggleClass("ui-corner-all",!this.isOpen).attr("aria-expanded",this.isOpen),this.menuWrap.toggleClass("ui-selectmenu-open",this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var e=this.options.width;e||(e=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(e)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){return{disabled:this.element.prop("disabled")}},_parseOptions:function(t){var i=[];t.each(function(t,s){var n=e(s),a=n.parent("optgroup");i.push({element:n,index:t,value:n.val(),label:n.text(),optgroup:a.attr("label")||"",disabled:a.prop("disabled")||n.prop("disabled")})}),this.items=i},_destroy:function(){this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.label.attr("for",this.ids.element)}}),e.widget("ui.slider",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),a="<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",o=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),t=n.length;i>t;t++)o.push(a);this.handles=n.add(e(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options,i="";t.range?(t.range===!0&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=e("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===t.range||"max"===t.range?" ui-slider-range-"+t.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,a,o,r,h,l,u=this,d=this.options;return d.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:t.pageX,y:t.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var i=Math.abs(s-u.values(t));(n>i||n===i&&(t===u._lastChangedValue||u.values(t)===d.min))&&(n=i,a=e(this),o=t)}),r=this._start(t,o),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,a.addClass("ui-state-active").focus(),h=a.offset(),l=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-h.left-a.width()/2,top:t.pageY-h.top-a.height()/2-(parseInt(a.css("borderTopWidth"),10)||0)-(parseInt(a.css("borderBottomWidth"),10)||0)+(parseInt(a.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,i),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,i,s,n,a;return"horizontal"===this.orientation?(t=this.elementSize.width,i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/t,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),a=this._valueMin()+s*n,this._trimAlignValue(a)},_start:function(e,t){var i={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("start",e,i)},_slide:function(e,t,i){var s,n,a;this.options.values&&this.options.values.length?(s=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&i>s||1===t&&s>i)&&(i=s),i!==this.values(t)&&(n=this.values(),n[t]=i,a=this._trigger("slide",e,{handle:this.handles[t],value:i,values:n}),s=this.values(t?0:1),a!==!1&&this.values(t,i))):i!==this.value()&&(a=this._trigger("slide",e,{handle:this.handles[t],value:i}),a!==!1&&this.value(i))},_stop:function(e,t){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("stop",e,i)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,i)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(t,i){var s,n,a;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(i),this._refreshValue(),this._change(null,t),void 0;if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();for(s=this.options.values,n=arguments[0],a=0;s.length>a;a+=1)s[a]=this._trimAlignValue(n[a]),this._change(null,a);this._refreshValue()},_setOption:function(t,i){var s,n=0;switch("range"===t&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(n=this.options.values.length),"disabled"===t&&this.element.toggleClass("ui-state-disabled",!!i),this._super(t,i),t){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue(),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,i,s;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,i=(e-this._valueMin())%t,s=e-i;return 2*Math.abs(i)>=t&&(s+=i>0?t:-t),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var e=this.options.max,t=this._valueMin(),i=this.options.step,s=Math.floor(+(e-t).toFixed(this._precision())/i)*i;e=s+t,this.max=parseFloat(e.toFixed(this._precision()))},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshValue:function(){var t,i,s,n,a,o=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),u["horizontal"===h.orientation?"left":"bottom"]=i+"%",e(this).stop(1,1)[l?"animate":"css"](u,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-t+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-t+"%"},{queue:!1,duration:r.animate}))),t=i}):(s=this.value(),n=this._valueMin(),a=this._valueMax(),i=a!==n?100*((s-n)/(a-n)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](u,r.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===o&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===o&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(t){var i,s,n,a,o=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,e(t.target).addClass("ui-state-active"),i=this._start(t,o),i===!1))return}switch(a=this.options.step,s=n=this.options.values&&this.options.values.length?this.values(o):this.value(),t.keyCode){case e.ui.keyCode.HOME:n=this._valueMin();break;case e.ui.keyCode.END:n=this._valueMax();break;case e.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+a);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-a)}this._slide(t,o,n)},keyup:function(t){var i=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,i),this._change(t,i),e(t.target).removeClass("ui-state-active"))}}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,i){var s=null,n=!1,a=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,a.widgetName+"-item")===a?(s=e(this),!1):void 0}),e.data(t.target,a.widgetName+"-item")===a&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var n,a,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(a=this.document.find("body"),this.storedCursor=a.css("cursor"),a.css("cursor",o.cursor),this.storedStylesheet=e("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(a)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",t,this._uiHash(this));
  11299. -return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,n,a,o=this.options,r=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-this.document.scrollTop()<o.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-o.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<o.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+o.scrollSpeed)),t.pageX-this.document.scrollLeft()<o.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-o.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<o.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+o.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],a=this._intersectsWithPointer(s),a&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===a?"next":"prev"]()[0]!==n&&!e.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,n=this.placeholder.offset(),a=this.options.axis,o={};a&&"x"!==a||(o.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),a&&"y"!==a||(o.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=e.left,o=a+e.width,r=e.top,h=r+e.height,l=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||s+l>r&&h>s+l,c="y"===this.options.axis||t+u>a&&o>t+u,p=d&&c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&i,n=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return s?this.floating?a&&"right"===a||"down"===n?2:1:n&&("down"===n?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&t||"up"===s&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function i(){r.push(this)}var s,n,a,o,r=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(a=e(l[s],this.document[0]),n=a.length-1;n>=0;n--)o=e.data(a[n],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([e.isFunction(o.options.items)?o.options.items.call(o.element):e(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(h.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,u=this.items,d=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],c=this._connectWith();if(c&&this.ready)for(i=c.length-1;i>=0;i--)for(n=e(c[i],this.document[0]),s=n.length-1;s>=0;s--)a=e.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(d.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a));for(i=d.length-1;i>=0;i--)for(o=d[i][1],r=d[i][0],s=0,l=r.length;l>s;s++)h=e(r[s]),h.data(this.widgetName+"-item",o),u.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,a;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=n.outerWidth(),s.height=n.outerHeight()),a=n.offset(),s.left=a.left,s.top=a.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)a=this.containers[i].element.offset(),this.containers[i].containerCache.left=a.left,this.containers[i].containerCache.top=a.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),n=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tbody"===s?t._createTrPlaceholder(t.currentItem.find("tr").eq(0),e("<tr>",t.document[0]).appendTo(n)):"tr"===s?t._createTrPlaceholder(t.currentItem,n):"img"===s&&n.attr("src",t.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(e,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_createTrPlaceholder:function(t,i){var s=this;t.children().each(function(){e("<td>&#160;</td>",s.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(t){var i,s,n,a,o,r,h,l,u,d,c=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(c&&e.contains(this.containers[i].element[0],c.element[0]))continue;c=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(c)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,a=null,u=c.floating||this._isFloating(this.currentItem),o=u?"left":"top",r=u?"width":"height",d=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[o],l=!1,t[d]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(t[d]-h)&&(n=Math.abs(t[d]-h),a=this.items[s],this.direction=l?"up":"down"));if(!a&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;a?this._rearrange(t,a,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.width():this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(t=e(n.containment)[0],i=e(n.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(t){var i,s,n=this.options,a=t.pageX,o=t.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(a=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(a=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((a-this.originalPageX)/n.grid[0])*n.grid[0],a=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&n.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||n.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(n.push(function(e){this._trigger("remove",e,this._uiHash())}),n.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)t||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(s=0;n.length>s;s++)n[s].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}}),e.widget("ui.spinner",{version:"1.11.4",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},i=this.element;return e.each(["min","max","step"],function(e,s){var n=i.attr(s);void 0!==n&&n.length&&(t[s]=n)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){function i(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(t)!==!1&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){return e(t.currentTarget).hasClass("ui-state-active")?this._start(t)===!1?!1:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*e.height())&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var i=this.options,s=e.ui.keyCode;switch(t.keyCode){case s.UP:return this._repeat(null,1,t),!0;case s.DOWN:return this._repeat(null,-1,t),!0;case s.PAGE_UP:return this._repeat(null,i.page,t),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>&#9660;</span>"+"</a>"},_start:function(e){return this.spinning||this._trigger("start",e)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(e,t,i){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,i)},e),this._spin(t*this.options.step,i)},_spin:function(e,t){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(t){var i=this.options.incremental;return i?e.isFunction(i)?i(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_adjustValue:function(e){var t,i,s=this.options;return t=null!==s.min?s.min:0,i=e-t,i=Math.round(i/s.step)*s.step,e=t+i,e=parseFloat(e.toFixed(this._precision())),null!==s.max&&e>s.max?s.max:null!==s.min&&s.min>e?s.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){if("culture"===e||"numberFormat"===e){var i=this._parse(this.element.val());return this.options[e]=t,this.element.val(this._format(i)),void 0}("max"===e||"min"===e||"step"===e)&&"string"==typeof t&&(t=this._parse(t)),"icons"===e&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),"disabled"===e&&(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable"))},_setOptions:h(function(e){this._super(e)}),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var e=this.value();return null===e?!1:e===this._adjustValue(e)},_value:function(e,t){var i;""!==e&&(i=this._parse(e),null!==i&&(t||(i=this._adjustValue(i)),e=this._format(i))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:h(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:h(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:h(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:h(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(h(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.widget("ui.tabs",{version:"1.11.4",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var e=/#.*$/;return function(t){var i,s;t=t.cloneNode(!1),i=t.href.replace(e,""),s=location.href.replace(e,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return t.hash.length>1&&i===s}}(),_create:function(){var t=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible),this._processTabs(),i.active=this._initialActive(),e.isArray(i.disabled)&&(i.disabled=e.unique(i.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):e(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var t=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===t&&(s&&this.tabs.each(function(i,n){return e(n).attr("aria-controls")===s?(t=i,!1):void 0}),null===t&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===t||-1===t)&&(t=this.tabs.length?0:!1)),t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),-1===t&&(t=i?!1:0)),!i&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var i=e(this.document[0].activeElement).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:s++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:n=!1,s--;break;case e.ui.keyCode.END:s=this.anchors.length-1;break;case e.ui.keyCode.HOME:s=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}t.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),t.ctrlKey||t.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){return t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,i){function s(){return t>n&&(t=0),0>t&&(t=n),t}for(var n=this.tabs.length-1;-1!==e.inArray(s(),this.options.disabled);)t=i?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):"disabled"===e?(this._setupDisabled(t),void 0):(this._super(e,t),"collapsible"===e&&(this.element.toggleClass("ui-tabs-collapsible",t),t||this.options.active!==!1||this._activate(0)),"event"===e&&this._setupEvents(t),"heightStyle"===e&&this._setupHeightStyle(t),void 0)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,i=this.tablist.children(":has(a[href])");t.disabled=e.map(i.filter(".ui-state-disabled"),function(e){return i.index(e)}),this._processTabs(),t.active!==!1&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this,i=this.tabs,s=this.anchors,n=this.panels;
  11300. -this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist").delegate("> li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(i,s){var n,a,o,r=e(s).uniqueId().attr("id"),h=e(s).closest("li"),l=h.attr("aria-controls");t._isLocal(s)?(n=s.hash,o=n.substring(1),a=t.element.find(t._sanitizeSelector(n))):(o=h.attr("aria-controls")||e({}).uniqueId()[0].id,n="#"+o,a=t.element.find(n),a.length||(a=t._createPanel(o),a.insertAfter(t.panels[i-1]||t.tablist)),a.attr("aria-live","polite")),a.length&&(t.panels=t.panels.add(a)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":o,"aria-labelledby":r}),a.attr("aria-labelledby",r)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var i,s=0;i=this.tabs[s];s++)t===!0||-1!==e.inArray(s,t)?e(i).addClass("ui-state-disabled").attr("aria-disabled","true"):e(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var i={};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,s=this.element.parent();"fill"===t?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),s=t.css("position");"absolute"!==s&&"fixed"!==s&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,e(this).height("").height())}).height(i))},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n.closest("li"),o=a[0]===s[0],r=o&&i.collapsible,h=r?e():this._getPanelForTab(a),l=s.length?this._getPanelForTab(s):e(),u={oldTab:s,oldPanel:l,newTab:r?e():a,newPanel:h};t.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||this._trigger("beforeActivate",t,u)===!1||(i.active=r?!1:this.tabs.index(a),this.active=o?e():a,this.xhr&&this.xhr.abort(),l.length||h.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),t),this._toggle(t,u))},_toggle:function(t,i){function s(){a.running=!1,a._trigger("activate",t,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),o.length&&a.options.show?a._show(o,a.options.show,s):(o.show(),s())}var a=this,o=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),o.length&&r.length?i.oldTab.attr("tabIndex",-1):o.length&&this.tabs.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),o.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var i,s=this._findActive(t);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tablist.unbind(this.eventNamespace),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),i=t.data("ui-tabs-aria-controls");i?t.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var i=this.options.disabled;i!==!1&&(void 0===t?i=!1:(t=this._getIndex(t),i=e.isArray(i)?e.map(i,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,i){return i!==t?i:null})),this._setupDisabled(i))},disable:function(t){var i=this.options.disabled;if(i!==!0){if(void 0===t)i=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,i))return;i=e.isArray(i)?e.merge([t],i).sort():[t]}this._setupDisabled(i)}},load:function(t,i){t=this._getIndex(t);var s=this,n=this.tabs.eq(t),a=n.find(".ui-tabs-anchor"),o=this._getPanelForTab(n),r={tab:n,panel:o},h=function(e,t){"abort"===t&&s.panels.stop(!1,!0),n.removeClass("ui-tabs-loading"),o.removeAttr("aria-busy"),e===s.xhr&&delete s.xhr};this._isLocal(a[0])||(this.xhr=e.ajax(this._ajaxSettings(a,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(n.addClass("ui-tabs-loading"),o.attr("aria-busy","true"),this.xhr.done(function(e,t,n){setTimeout(function(){o.html(e),s._trigger("load",i,r),h(n,t)},1)}).fail(function(e,t){setTimeout(function(){h(e,t)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href"),beforeSend:function(t,a){return n._trigger("beforeLoad",i,e.extend({jqXHR:t,ajaxSettings:a},s))}}},_getPanelForTab:function(t){var i=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),e.widget("ui.tooltip",{version:"1.11.4",options:{content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_addDescribedBy:function(t,i){var s=(t.attr("aria-describedby")||"").split(/\s+/);s.push(i),t.data("ui-tooltip-id",i).attr("aria-describedby",e.trim(s.join(" ")))},_removeDescribedBy:function(t){var i=t.data("ui-tooltip-id"),s=(t.attr("aria-describedby")||"").split(/\s+/),n=e.inArray(i,s);-1!==n&&s.splice(n,1),t.removeData("ui-tooltip-id"),s=e.trim(s.join(" ")),s?t.attr("aria-describedby",s):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable(),this.liveRegion=e("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body)},_setOption:function(t,i){var s=this;return"disabled"===t?(this[i?"_disable":"_enable"](),this.options[t]=i,void 0):(this._super(t,i),"content"===t&&e.each(this.tooltips,function(e,t){s._updateContent(t.element)}),void 0)},_disable:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur");n.target=n.currentTarget=s.element[0],t.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var i=this,s=e(t?t.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&s.parents().each(function(){var t,s=e(this);s.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,i.close(t,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(t,s),this._updateContent(s,t))},_updateContent:function(e,t){var i,s=this.options.content,n=this,a=t?t.type:null;return"string"==typeof s?this._open(t,e,s):(i=s.call(e[0],function(i){n._delay(function(){e.data("ui-tooltip-open")&&(t&&(t.type=a),this._open(t,e,i))})}),i&&this._open(t,e,i),void 0)},_open:function(t,i,s){function n(e){l.of=e,o.is(":hidden")||o.position(l)}var a,o,r,h,l=e.extend({},this.options.position);if(s){if(a=this._find(i))return a.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(t&&"mouseover"===t.type?i.attr("title",""):i.removeAttr("title")),a=this._tooltip(i),o=a.tooltip,this._addDescribedBy(i,o.attr("id")),o.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),s.clone?(h=s.clone(),h.removeAttr("id").find("[id]").removeAttr("id")):h=s,e("<div>").html(h).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:n}),n(t)):o.position(e.extend({of:i},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){o.is(":visible")&&(n(l.of),clearInterval(r))},e.fx.interval)),this._trigger("open",t,{tooltip:o})}},_registerCloseHandlers:function(t,i){var s={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var s=e.Event(t);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),t&&"mouseover"!==t.type||(s.mouseleave="close"),t&&"focusin"!==t.type||(s.focusout="close"),this._on(!0,i,s)},close:function(t){var i,s=this,n=e(t?t.currentTarget:this.element),a=this._find(n);return a?(i=a.tooltip,a.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),a.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(e(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,i){e(i.element).attr("title",i.title),delete s.parents[t]}),a.closing=!0,this._trigger("close",t,{tooltip:i}),a.hiding||(a.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(t){var i=e("<div>").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),s=i.uniqueId().attr("id");return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[s]={element:t,tooltip:i}},_find:function(e){var t=e.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur"),a=s.element;n.target=n.currentTarget=a[0],t.close(n,!0),e("#"+i).remove(),a.data("ui-tooltip-title")&&(a.attr("title")||a.attr("title",a.data("ui-tooltip-title")),a.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}})});
  11301. diff --git a/lib/Sails/Routing.php b/lib/Sails/Routing.php
  11302. index 4c4759e..64f196b 100644
  11303. --- a/lib/Sails/Routing.php
  11304. +++ b/lib/Sails/Routing.php
  11305. @@ -157,33 +157,59 @@ class Sails_Routing  {
  11306.                         $pageId = (!empty($p)) ? implode('/', $p) : false;
  11307.                         if (!$pageId) handleSailsError(404, "Page Not Found");
  11308.                 } elseif ($module == 'catalog' && $controller == 'product' && $action == 'view' && $doProductWithNode && $version != 'mage') {
  11309. +               //} elseif ($module == 'catalog' && $controller == 'product' && $action == 'view' && $doProductWithNode && $version == '2') {
  11310. +
  11311.                         $page = 'product';
  11312.                         $productId = $productId = (isset($p[4]) && $p[4] != '')?$p[4]:false;
  11313.                         $productId = (isset($p[4]) && $p[4] != '')?$p[4]:false;
  11314.                         if(!$productId) handleSailsError(404, "Product Not Found");
  11315.                 }
  11316. -              
  11317. +
  11318. +
  11319. +               // AB testing code starts;
  11320. +               $abTestValues = array(0,1,0,2,0,1,0,2,0,1,0,0,0,2,0,2,0,1,0,0);
  11321. +               $abTestValue = 0;
  11322. +               $abTestCurrentValue = $abTestValues[$abTestValue];
  11323. +               $cookieName = 'ab_product_29-07-2015';
  11324. +               $cookieLifeTime = time() + (86400 * 30);
  11325. +               $abTestCookieValue = $_COOKIE[$cookieName];
  11326. +               if(trim($abTestCookieValue) != '' && $abTestCookieValue != null){
  11327. +                       $abTestCurrentValue = $abTestCookieValue;
  11328. +               }else{
  11329. +                       $abTestFile = 'abtestvalue.txt';
  11330. +                       if(is_file($abTestFile)){
  11331. +                               $abTestLastValue = file_get_contents($abTestFile);
  11332. +                               if( ($abTestLastValue + 1) == sizeof($abTestValues) ){
  11333. +                                       $abTestValue = 0;
  11334. +                               }else{
  11335. +                                       $abTestValue = $abTestLastValue+1;
  11336. +                               }
  11337. +                               $abTestCurrentValue = $abTestValues[$abTestValue];
  11338. +                       }
  11339. +                       file_put_contents($abTestFile , $abTestValue);
  11340. +                       setcookie($cookieName,$abTestCurrentValue,$cookieLifeTime); //cookie set for 30 day
  11341. +               }
  11342. +               // AB testing code ends;
  11343. +
  11344.                 $url = null;
  11345.                 switch ($page) {
  11346.                         case 'homepage':
  11347.                                 $url = $sailsUrl;
  11348.                                 break;
  11349.                         case 'product':
  11350. -                               $url = $sailsUrl . '/product/' . $productId;
  11351. +                               $url = $sailsUrl . '/product/' . $productId."?abvariant=".$abTestCurrentValue;
  11352.                                 break;
  11353.                         case 'cmspage':
  11354.                                 $url = $sailsUrl . '/' . $pageId;
  11355.                                 break;
  11356. -                       case 'catalogsearch':
  11357. -                               $url = $sailsUrl . '/catalogsearch/?' . $queryParams;
  11358. -                               break;
  11359. -                       case 'catalogcategory':
  11360. -                               $url = $sailsUrl . '/catalogcategory/' . $catId . '/?' . $catQueryParams;
  11361.                         default:
  11362.                 }
  11363.                
  11364.                 //Mage::log('Sails URL : ' . $url, Zend_Log::CRIT, 'sailsapp.log');
  11365.                 if ($page != 'none') {
  11366. +
  11367. +
  11368. +
  11369.                         //Create Magento Session
  11370.                         //Mage::getSingleton('core/session', array('name' => 'frontend'));
  11371.                         Mage::getSingleton('core/session', array('name' => 'frontend'))->setData('re_link', Mage::helper('core/url')->getCurrentUrl());
  11372. @@ -194,20 +220,11 @@ class Sails_Routing  {
  11373.                         Mage::log('Sails URL after Session: ' . $url, Zend_Log::INFO, 'sailsapp.log');
  11374.                
  11375.                         $cookie_data= '';
  11376. -                       $cookie_data_array = array();
  11377.                         if(isset($_COOKIE['frontend'])) {
  11378. -                               $cookie_data_array[] = "frontend=".$_COOKIE['frontend'];
  11379. +                               $cookie_data = "frontend=".$_COOKIE['frontend'];
  11380.                         } else {
  11381.                                 Mage::log('Frontend Cookie not found. All Cookies: ' . print_r($_COOKIE,true), Zend_Log::ERR, 'sailsapp.log');
  11382.                         }
  11383. -                       // PLEASE NOTE :  we have replace dot(.) with underscore(_) in the cookie "unbxd.userId" as PHP replaces dot(.) with underscore(_)  in cookie name
  11384. -                       if(isset($_COOKIE['unbxd_userId']) ) {
  11385. -                               $cookie_data_array[] = "unbxd.userId=".$_COOKIE['unbxd_userId'];
  11386. -                       } else {
  11387. -                               Mage::log('unbxd.userId Cookie not found. All Cookies: ' . print_r($_COOKIE,true), Zend_Log::ERR, 'sailsapp.log');
  11388. -                       }
  11389. -                       $cookie_data = implode(";", $cookie_data_array);
  11390. -
  11391.                         // create curl resource
  11392.                         $ch = curl_init();
  11393.                        
  11394. diff --git a/miniOrderReport.php b/miniOrderReport.php
  11395. index 6ce6efe..a38c10b 100755
  11396. --- a/miniOrderReport.php
  11397. +++ b/miniOrderReport.php
  11398. @@ -26,7 +26,7 @@ $orders->addAttributeToFilter('state', array('new', 'processing'));
  11399.  $outputFile = Mage::getBaseDir('var').'/export/miniOrderReport.csv';
  11400.  $write = fopen($outputFile,"w");
  11401.  
  11402. -$heads = array("order_date","order_time","order_status","Item_no","order_no","item_status","old_sku","qty","tolexo_base_price","tax_percent","tax_amount","shipping_amount","final_selling_price_per_unit","grand_total","product_id","qty_reorder","new_sku","custom_price_per_unit");
  11403. +$heads = array("order_date","order_time","order_status","Item_no","order_no","item_status","old_sku","qty","tolexo_base_price","tax_percent","tax_amount","shipping_amount","final_selling_price_per_unit","grand_total","product_id","new_sku","custom_price_per_unit");
  11404.  fputcsv($write,$heads);
  11405.  
  11406.  foreach($orders as $order) {
  11407. @@ -66,7 +66,6 @@ foreach($orders as $order) {
  11408.              
  11409.              $product_p = $item->getName();
  11410.              $qty = $item->getQtyOrdered();
  11411. -            $qty_to_reorder = $item->getQtyToCancel();
  11412.  //            $purchase_price = $item->getBasePrice();
  11413.              //base_price
  11414.              $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '".$productId."' and attribute_id = '501'";
  11415. @@ -89,7 +88,7 @@ foreach($orders as $order) {
  11416.              $row = $readConnection->fetchRow($sql);
  11417.              $tolexo_base_price = $row['tolexo_base_price'];
  11418.              
  11419. -            $productInfo = array($orderDate,$orderTime,$order_status,$ItemId,$orderNo,$item_status,$product_num,$qty,$tolexo_base_price,$taxpercent,$tax,$shipping_charges,$finalSellingPricePerUnit,$grand_total,$productId,$qty_to_reorder,'','');
  11420. +            $productInfo = array($orderDate,$orderTime,$order_status,$ItemId,$orderNo,$item_status,$product_num,$qty,$tolexo_base_price,$taxpercent,$tax,$shipping_charges,$finalSellingPricePerUnit,$grand_total,$productId,'','');
  11421.  
  11422.              fputcsv($write,$productInfo);
  11423.          }
  11424. diff --git a/mobileapi/api_app_session.php b/mobileapi/api_app_session.php
  11425. index 2088469..81ba16c 100644
  11426. --- a/mobileapi/api_app_session.php
  11427. +++ b/mobileapi/api_app_session.php
  11428. @@ -19,18 +19,6 @@ if(Mage::app()->getRequest()->getParam('route') == "rest/web_api/getappsession")
  11429.          echo json_encode($response);
  11430.          exit();
  11431.      }
  11432. -} else if(Mage::app()->getRequest()->getParam('route') == "rest/web_api/checksession") {
  11433. -    $appSession = (isset($_GET['app_session'])) ? $_GET['app_session'] : $_POST['app_session'];
  11434. -    $timestamp = (isset($_GET['timestamp'])) ? $_GET['timestamp'] : $_POST['timestamp'];
  11435. -    $hash = (isset($_GET['hash'])) ? $_GET['hash'] : $_POST['hash'];
  11436. -
  11437. -    $authCustomer = new AuthCustomer($appSession, null, null);
  11438. -    $isValid = $authCustomer->isAppSessionValid();
  11439. -
  11440. -    $response['status'] = 200;
  11441. -    $response['session'] = $isValid;
  11442. -    echo json_encode($response);
  11443. -    exit();
  11444.  }
  11445.  else{
  11446.      
  11447. diff --git a/mobileapi/api_cart.php b/mobileapi/api_cart.php
  11448. index b6b3230..bf5f06f 100644
  11449. --- a/mobileapi/api_cart.php
  11450. +++ b/mobileapi/api_cart.php
  11451. @@ -5,7 +5,7 @@ require_once("auth.php");
  11452.  
  11453.  Mage::app();
  11454.  
  11455. -if (!$BY_PASS_AUTHENTICATION && !isset($_APP_SESSION_INFO))
  11456. +if (!isset($_APP_SESSION_INFO))
  11457.      exit();
  11458.  
  11459.  $customerid = (isset($_APP_SESSION_INFO['customer_id'])) ? $_APP_SESSION_INFO['customer_id'] : 0;
  11460. @@ -16,10 +16,7 @@ if ($quote_id != "")
  11461.      $quote_id = decryptQuoteId($quote_id);
  11462.  
  11463.  //die;
  11464. -if($INTERNAL_FUNCTION_CALL) {
  11465. -
  11466. -    //do nothing for internal function calls
  11467. -}else if (Mage::app()->getRequest()->getParam('route') == "rest/web_api/updatecart") {
  11468. +if (Mage::app()->getRequest()->getParam('route') == "rest/web_api/updatecart") {
  11469.  
  11470.      $productid = Mage::app()->getRequest()->getParam('productid');
  11471.      $qty = Mage::app()->getRequest()->getParam('qty');
  11472. @@ -46,7 +43,9 @@ if($INTERNAL_FUNCTION_CALL) {
  11473.      
  11474.  } elseif (Mage::app()->getRequest()->getParam('route') == "rest/web_api/cartskuinfo") {
  11475.  
  11476. -    print_r(json_encode(CartSKUnfo($customerid, $quote_id, false)));
  11477. +    $infoskucart = json_decode(Mage::app()->getRequest()->getParam('infoskucart'));
  11478. +    print_r(json_encode(CartSKUnfo($customerid, $infoskucart, $quote_id)));
  11479. +
  11480.      
  11481.  } elseif (Mage::app()->getRequest()->getParam('route') == "rest/web_api/removecartitem") {
  11482.  
  11483. @@ -93,6 +92,7 @@ if($INTERNAL_FUNCTION_CALL) {
  11484.  
  11485.      
  11486.  } else {
  11487. +
  11488.      header("HTTP/1.0 404 Not Found");
  11489.  }
  11490.  
  11491. @@ -409,7 +409,8 @@ function whishListProductDetails($product_id) {
  11492.      return $json;
  11493.  }
  11494.  
  11495. -function CartSKUnfo($customer_id, $quote_id, $showGuestShippingCharges = true) {
  11496. +function CartSKUnfo($customer_id, $infoskucart, $quote_id) {
  11497. +
  11498.  
  11499.      $shipping = 0;
  11500.      #$customer_email = $email;
  11501. @@ -450,10 +451,7 @@ function CartSKUnfo($customer_id, $quote_id, $showGuestShippingCharges = true) {
  11502.                  $product = Mage::getModel('catalog/product')->load($product->getId());
  11503.                  $stock = $product->getStockItem()->getIsInStock();
  11504.                  $is_active = $product->getStatus();
  11505. -                $maxQty = $product->getStockItem()->getMaxSaleQty();
  11506. -                $stockQty = (int)$product->getStockItem()->getQty();
  11507. -                $manageStock = (int)$product->getStockItem()->getManageStock();
  11508. -                $minQty = (int)$product->getStockItem()->getMinSaleQty();
  11509. +
  11510.  
  11511.                  if ($product->isAvailable()):
  11512.                      if (intval($stock) > 0) {
  11513. @@ -473,13 +471,11 @@ function CartSKUnfo($customer_id, $quote_id, $showGuestShippingCharges = true) {
  11514.                      'in_stock' => (int) $in_stock,
  11515.                      'is_active' => $is_active,
  11516.                      'available_qty' => $qty,
  11517. -                    'product_details' => $productDetails,
  11518. -                    'max_qty' => $maxQty,
  11519. -                    'stock_qty' => $stockQty,
  11520. -                    'manage_stock' => $manageStock,
  11521. -                    'min_qty' => $minQty
  11522. +                    'product_details' => $productDetails
  11523.                  );
  11524.  
  11525. +
  11526. +
  11527.                  $i++;
  11528.              }
  11529.                        
  11530. @@ -530,10 +526,6 @@ function CartSKUnfo($customer_id, $quote_id, $showGuestShippingCharges = true) {
  11531.                  $stock = $product->getStockItem()->getIsInStock();
  11532.                  $is_active = $product->getStatus();
  11533.                  $productDetails = whishListProductDetails($item->getProductId());
  11534. -                $maxQty = $product->getStockItem()->getMaxSaleQty();
  11535. -                $stockQty = (int)$product->getStockItem()->getQty();
  11536. -                $manageStock = (int)$product->getStockItem()->getManageStock();
  11537. -                $minQty = (int)$product->getStockItem()->getMinSaleQty();
  11538.  
  11539.                  if ($product->isAvailable()):
  11540.                      if (intval($stock) > 0) {
  11541. @@ -554,11 +546,7 @@ function CartSKUnfo($customer_id, $quote_id, $showGuestShippingCharges = true) {
  11542.                      'in_stock' => (int) $in_stock,
  11543.                      'is_active' => $is_active,
  11544.                      'available_qty' => $qty,
  11545. -                    'product_details' => $productDetails,
  11546. -                    'max_qty' => $maxQty,
  11547. -                    'stock_qty' => $stockQty,
  11548. -                    'manage_stock' => $manageStock,
  11549. -                    'min_qty' => $minQty
  11550. +                    'product_details' => $productDetails
  11551.                  );
  11552.  
  11553.                  $i++;
  11554. @@ -570,9 +558,6 @@ function CartSKUnfo($customer_id, $quote_id, $showGuestShippingCharges = true) {
  11555.              $productsResult['discount_amount'] = $discountAmount;
  11556.              $productsResult['coupon_code'] = $coupon_code;
  11557.  
  11558. -            if($showGuestShippingCharges)   //show shipping charges for guest user
  11559. -                $shipping = round($quote->getShippingAddress()->getData('shipping_amount'));
  11560. -        
  11561.              $productsResult['shipping'] = round($shipping);
  11562.              $productsResult['sub_total'] = round($quote->getSubtotal());
  11563.              $productsResult['tax'] = round($totalTax);
  11564. diff --git a/mobileapi/api_order_tag.php b/mobileapi/api_order_tag.php
  11565. deleted file mode 100644
  11566. index 1ddb74b..0000000
  11567. --- a/mobileapi/api_order_tag.php
  11568. +++ /dev/null
  11569. @@ -1,340 +0,0 @@
  11570. -<?php
  11571. -// require_once ("common.php");
  11572. -// require_once ("auth.php");
  11573. -require_once ('../app/Mage.php');
  11574. -
  11575. -Mage::app();
  11576. -
  11577. -class Tolexo_OrderTag
  11578. -{
  11579. -
  11580. -    private $writeConnection;
  11581. -
  11582. -    private $readConnection;
  11583. -
  11584. -    private $parameters;
  11585. -
  11586. -    private $listGetPara;
  11587. -
  11588. -    private $listPostPara;
  11589. -
  11590. -    private $orderData;
  11591. -
  11592. -    function __construct($listParam = array())
  11593. -    {
  11594. -        $this->parameters = $listParam;
  11595. -        $resource = Mage::getSingleton('core/resource');
  11596. -        $this->readConnection = $resource->getConnection('core_read');
  11597. -        $this->writeConnection = $resource->getConnection('core_write');
  11598. -        $this->listGetPara = $_GET;
  11599. -        $this->listPostPara = $_POST;
  11600. -        $this->orderData = file_get_contents("php://input");
  11601. -    }
  11602. -
  11603. -    public function fetchGetParams($key, $default = '')
  11604. -    {
  11605. -        return isset($this->listGetPara[$key]) ? $this->listGetPara[$key] : $default;
  11606. -    }
  11607. -
  11608. -    public function fetchPostParams($key, $default = '')
  11609. -    {
  11610. -        return isset($this->listPostPara[$key]) ? $this->listPostPara[$key] : $default;
  11611. -    }
  11612. -
  11613. -    public function run()
  11614. -    {
  11615. -        $route = $this->fetchGetParams('route');
  11616. -        switch ($route) {
  11617. -            case "rest/web_api/updateOrderTags":
  11618. -                
  11619. -                $tagableOrders = array();
  11620. -                $updatedIds = array();
  11621. -                $succes = false;
  11622. -                
  11623. -                $orders = $this->orderData;
  11624. -                $orders = json_decode($orders, true);
  11625. -                
  11626. -                if (! empty($orders)) {
  11627. -                    $tagableOrders = $this->fetchOrdersForTag($orders);
  11628. -                    $succes = $this->updateOrderTags($tagableOrders);
  11629. -                    if ($succes) {
  11630. -                        $updatedQueueIds = $this->updateOrdersInQueue($orders);
  11631. -                    }
  11632. -                }
  11633. -                echo json_encode($updatedQueueIds);
  11634. -                break;
  11635. -        }
  11636. -        
  11637. -        return true;
  11638. -    }
  11639. -
  11640. -    public function fetchOrdersForTag($orders)
  11641. -    {
  11642. -        $tagableOrders = array();
  11643. -        foreach ($orders as $order) {
  11644. -            $orderData = json_decode($order['order_data'], true);
  11645. -            if ($orderData['state'] == 'new') {
  11646. -                $tagableOrders[$orderData['entity_id']] = $orderData;
  11647. -            }
  11648. -        }
  11649. -        
  11650. -        return $tagableOrders;
  11651. -    }
  11652. -
  11653. -    public function updateOrdersInQueue($orders)
  11654. -    {
  11655. -        foreach ($orders as $order) {
  11656. -            $queueIds[] = (int) $order['id'];
  11657. -        }
  11658. -        $queueIdsString = implode(',', $queueIds);
  11659. -        
  11660. -        $sql = "UPDATE sales_order_queue SET tag_order = '1'
  11661. -                WHERE id IN ($queueIdsString);";
  11662. -        $this->writeConnection->query($sql);
  11663. -        
  11664. -        return $queueIds;
  11665. -    }
  11666. -
  11667. -    public function updateOrderTags($orders)
  11668. -    {
  11669. -        $startTime = new DateTime(date("Y:m:d h:i:s"));
  11670. -        $startTime->setTimezone(new DateTimeZone('Asia/Calcutta'));
  11671. -        $logArray = array(
  11672. -            'functionName' => __FUNCTION__,
  11673. -            'startTime' => $startTime->format('Y-m-d H:i:s'),
  11674. -            'startTimeObj' => $startTime,
  11675. -            'ordersUpdatedCount' => 0
  11676. -        );
  11677. -        
  11678. -        try {
  11679. -            $ordersString = implode(',', array_keys($orders));
  11680. -            $utmSource = array();
  11681. -            
  11682. -            $sql = "SELECT sfo_1.`status` as parent_status, sfo.entity_id, sfo.relation_parent_id
  11683. -                      FROM sales_flat_order sfo
  11684. -                      LEFT JOIN sales_flat_order sfo_1
  11685. -                            ON sfo_1.entity_id = sfo.relation_parent_id
  11686. -                       WHERE sfo.entity_id IN ($ordersString);";
  11687. -            
  11688. -            $orderRows = $this->readConnection->fetchAll($sql);
  11689. -            
  11690. -            $splittedOrderArr = array();
  11691. -            $normalOrderArr = array();
  11692. -            $tagArr = array();
  11693. -            foreach ($orderRows as $orderRow) {
  11694. -                if ($orderRow['parent_status'] == 'cancel_split_order') {
  11695. -                    $splittedOrderArr[$orderRow['entity_id']] = $orderRow['relation_parent_id'];
  11696. -                    $normalOrderArr[$orderRow['relation_parent_id']] = $orderRow['relation_parent_id'];
  11697. -                } else {
  11698. -                    $normalOrderArr[$orderRow['entity_id']] = $orderRow['entity_id'];
  11699. -                }
  11700. -            }
  11701. -            
  11702. -            // **************************************PROCESSING FOR NORMAL ORDERS***************************************//
  11703. -            
  11704. -            if (! empty($normalOrderArr)) {
  11705. -                $normalOrdersString = implode(',', $normalOrderArr);
  11706. -                
  11707. -                // Corporate User Ids
  11708. -                $adminUserIds = Mage::getStoreConfig('ordertag/general/corporate_users');
  11709. -                $adminUserIds = array_map('intval', explode(',', $adminUserIds));
  11710. -                
  11711. -                // Telesales User Ids
  11712. -                $telesalesUserIds = Mage::getStoreConfig('ordertag/general/telesales_users');
  11713. -                $telesalesUserIds = array_map('intval', explode(',', $telesalesUserIds));
  11714. -                
  11715. -                // Telesales User's Ipaddresses
  11716. -                $telesalesUserIpAddrs = Mage::getStoreConfig('ordertag/general/telesales_users_ip');
  11717. -                $telesalesUserIpAddrs = explode(',', $telesalesUserIpAddrs);
  11718. -                
  11719. -                // Get Ids from sales_flat_order_tag_master
  11720. -                
  11721. -                $sql = "SELECT tag_id, tag_name FROM sales_flat_order_tag_master";
  11722. -                
  11723. -                $tagRows = $this->readConnection->fetchAll($sql);
  11724. -                foreach ($tagRows as $tag) {
  11725. -                    $tagArr[$tag['tag_name']] = $tag['tag_id'];
  11726. -                }
  11727. -                
  11728. -                // Get orders, which are not processed for order tagging
  11729. -                $q = "SELECT sfo.entity_id AS order_id,
  11730. -                             CASE  
  11731. -                                    WHEN  LOCATE('delivered', GROUP_CONCAT(sfo_1.status)) THEN 'repeat-a'
  11732. -                                    WHEN  GROUP_CONCAT(sfo_1.status) <> '' THEN 'repeat'
  11733. -                             END AS `repeat`,
  11734. -                             IF(LOCATE('-R', sfo.increment_id), 'alternate', NULL) AS alternate,
  11735. -                             sfq.orig_order_id,
  11736. -                             sfo.purchase_from,
  11737. -                             sfo.customer_email,
  11738. -                             sfo.status,
  11739. -                             sfoa.telephone,
  11740. -                             sfo.relation_parent_id,
  11741. -                             sfo.increment_id,
  11742. -                             sfoi.utm_source    
  11743. -                             FROM sales_flat_order sfo
  11744. -                             INNER JOIN sales_flat_order_address sfoa
  11745. -                                ON sfo.entity_id=sfoa.parent_id
  11746. -                             LEFT JOIN sales_flat_order_address sfoa_1
  11747. -                         ON (sfoa.email=sfoa_1.email OR sfoa.telephone=sfoa_1.telephone)  AND sfoa_1.parent_id < sfo.entity_id
  11748. -                         AND sfoa_1.address_type = 'billing'
  11749. -                             LEFT JOIN sales_flat_quote sfq
  11750. -                            ON sfo.quote_id=sfq.entity_id
  11751. -                         LEFT JOIN sales_flat_order AS sfo_1
  11752. -                            ON sfoa_1.parent_id = sfo_1.entity_id
  11753. -                             LEFT JOIN sales_flat_order_info AS sfoi
  11754. -                            ON sfo.entity_id = sfoi.order_id
  11755. -                             WHERE sfoa.address_type='billing'
  11756. -                         AND sfo.entity_id IN ($normalOrdersString)
  11757. -                                GROUP BY sfo.entity_id;";
  11758. -                
  11759. -                $orderIds = $this->readConnection->fetchAll($q);
  11760. -                if (! empty($orderIds)) {
  11761. -                    foreach ($orderIds as $row) {
  11762. -                        $tagOrderId = $row['order_id'];
  11763. -                        $logArray['ordersUpdatedCount'] ++;
  11764. -                        $orderTagArray[$tagOrderId] = array(
  11765. -                            'order_id' => 'NULL',
  11766. -                            'placed_from' => 'NULL',
  11767. -                            'created_by' => 'NULL',
  11768. -                            'repeat_sequence' => 'NULL',
  11769. -                            'fresh_or_reorder' => 'NULL',
  11770. -                            'purchase_admin_id' => 'NULL'
  11771. -                        );
  11772. -                        
  11773. -                        $orderTagArray[$tagOrderId]['order_id'] = $tagOrderId;
  11774. -                        
  11775. -                        // WEB: Order Placed Using Website & APP: Order placed using Mobile APP
  11776. -                        if ($row['purchase_from'] == 'Main Website') {
  11777. -                            $orderTagArray[$tagOrderId]['placed_from'] = 'Web';
  11778. -                        } else {
  11779. -                            $orderTagArray[$tagOrderId]['placed_from'] = 'App';
  11780. -                        }
  11781. -                        
  11782. -                        // Edit by CustomerCare: Orders which are edited by CC through admin panel "Edit" order option
  11783. -                        if (! empty($row['relation_parent_id'])) {
  11784. -                            $orderTagArray[$tagOrderId]['created_by'] = 'Edited';
  11785. -                        }
  11786. -                        
  11787. -                        // Corporate: Orders created using specific user IDs in the system from admin panel
  11788. -                        if (! empty($orders[$tagOrderId]['purchase_admin_id'])) {
  11789. -                            $orderTagArray[$tagOrderId]['placed_from'] = 'Backend';
  11790. -                            $orderTagArray[$tagOrderId]['purchase_admin_id'] = $orders[$tagOrderId]['purchase_admin_id'];
  11791. -                            if (in_array($orders[$tagOrderId]['purchase_admin_id'], $adminUserIds)) {
  11792. -                                $orderTagArray[$tagOrderId]['created_by'] = 'Corporate';
  11793. -                            } elseif (in_array($orders[$tagOrderId]['purchase_admin_id'], $telesalesUserIds)) {
  11794. -                                $orderTagArray[$tagOrderId]['created_by'] = 'Telesales';
  11795. -                            }
  11796. -                        }
  11797. -                        
  11798. -                        if (! empty($row['alternate'])) {
  11799. -                            $orderTagArray[$tagOrderId]['placed_from'] = 'Backend';
  11800. -                            $orderTagArray[$tagOrderId]['created_by'] = 'Alternate';
  11801. -                        }
  11802. -                        
  11803. -                        // Repeat: Orders placed by the email ids which have placed order before( guest and logged in )
  11804. -                        if (! empty($row['repeat'])) {
  11805. -                            if ($row['repeat'] == 'repeat') {
  11806. -                                $orderTagArray[$tagOrderId]['repeat_sequence'] = 'Repeat';
  11807. -                            } elseif ($row['repeat'] == 'repeat-a') {
  11808. -                                $orderTagArray[$tagOrderId]['repeat_sequence'] = 'Repeat-A';
  11809. -                            }
  11810. -                        }
  11811. -                        
  11812. -                        // ReOrder: Orders placed by reorder button at backend
  11813. -                        if (! empty($row['orig_order_id'])) {
  11814. -                            $orderTagArray[$tagOrderId]['fresh_or_reorder'] = 'Reorder';
  11815. -                        }
  11816. -                        
  11817. -                        $utmSource[$tagOrderId] = ucfirst($row['utm_source']);
  11818. -                    }
  11819. -                }
  11820. -            }
  11821. -            
  11822. -            // **************************************PROCESSING FOR SPLITTED ORDERS***************************************//
  11823. -            
  11824. -            if (! empty($splittedOrderArr)) {
  11825. -                foreach ($splittedOrderArr as $splittedOrderId => $splittedOrderParentId) {
  11826. -                    $orderTagArray[$splittedOrderId] = $orderTagArray[$splittedOrderParentId];
  11827. -                }
  11828. -            }
  11829. -            
  11830. -            // Insert each tag in seperate row so that DB filter queries can be made in future
  11831. -            if (! empty($orderTagArray)) {
  11832. -                foreach ($orderTagArray as $orderId => $tagArray) {
  11833. -                    $i = 0;
  11834. -                    $taggedMasterArr = array();
  11835. -                    $taggedArr = array();
  11836. -                    
  11837. -                    if (! empty($utmSource[$orderId])) {
  11838. -                        $taggedMasterArr['utm_sorce'] = $utmSource[$orderId];
  11839. -                    }
  11840. -                    
  11841. -                    foreach ($tagArray as $tag) {
  11842. -                        if ($tagArr[$tag]) {
  11843. -                            $taggedArr[] = $tagArr[$tag];
  11844. -                            $taggedMasterArr[$tagArr[$tag]] = $tag;
  11845. -                        } else {
  11846. -                            $taggedArr[] = $tag;
  11847. -                        }
  11848. -                    }
  11849. -                    
  11850. -                    $taggedMasterString = implode(",", $taggedMasterArr);
  11851. -                    $tagString = implode(",", $taggedArr);
  11852. -                    
  11853. -                    $infoQurey = "INSERT INTO `sales_flat_order_info`
  11854. -                            ( `order_id`, `placed_from`, `created_by`, `repeat_sequence`, `fresh_or_reorder`,`purchase_admin_id`)
  11855. -                            VALUES (" . $tagString . ") ON DUPLICATE KEY
  11856. -                            UPDATE `placed_from` = IF('" . $tagArr[$tagArray['placed_from']] . "', '" . $tagArr[$tagArray['placed_from']] . "', NULL),
  11857. -                                   `created_by` =  IF('" . $tagArr[$tagArray['created_by']] . "', '" . $tagArr[$tagArray['created_by']] . "', NULL),
  11858. -                                   `repeat_sequence` = IF('" . $tagArr[$tagArray['repeat_sequence']] . "', '" . $tagArr[$tagArray['repeat_sequence']] . "', NULL),
  11859. -                                   `fresh_or_reorder` = IF('" . $tagArr[$tagArray['fresh_or_reorder']] . "', '" . $tagArr[$tagArray['fresh_or_reorder']] . "', NULL),
  11860. -                                   `purchase_admin_id` = IF('" . $tagArr[$tagArray['purchase_admin_id']] . "', '" . $tagArr[$tagArray['purchase_admin_id']] . "', NULL)";
  11861. -                    $this->writeConnection->query($infoQurey);
  11862. -                    
  11863. -                    // Update sales_flat_order_grid table with applicable Order
  11864. -                    $gridQurey = "UPDATE sales_flat_order_grid
  11865. -                    SET order_tags = '$taggedMasterString'
  11866. -                    WHERE entity_id = '$orderId';";
  11867. -                    $this->writeConnection->query($gridQurey);
  11868. -                }
  11869. -            }
  11870. -            // Log Execution Details in Summary Log File
  11871. -            $logArray['status'] = 'Orders Tagged successfully';
  11872. -            $this->doLogging($logArray);
  11873. -            return true;
  11874. -        } catch (Exception $e) {
  11875. -            $logArray['status'] = $e->getMessage();
  11876. -            $this->doLogging($logArray);
  11877. -            return false;
  11878. -        }
  11879. -    }
  11880. -
  11881. -    public function doLogging($logArray)
  11882. -    {
  11883. -        $endTime = new DateTime(date("Y:m:d h:i:s"));
  11884. -        $endTime->setTimezone(new DateTimeZone('Asia/Calcutta'));
  11885. -        $logArray['completionTime'] = $endTime->format('Y-m-d H:i:s');
  11886. -        
  11887. -        // Time Taken by the script (in secods)
  11888. -        $diffTime = $logArray['startTimeObj']->diff($endTime);
  11889. -        $hours = $diffTime->format('%h');
  11890. -        $minutes = $diffTime->format('%i');
  11891. -        $seconds = $diffTime->format('%s');
  11892. -        
  11893. -        $logArray['executionTime'] = "$hours hours $minutes minutes $seconds seconds";
  11894. -        
  11895. -        // Print Summary Log
  11896. -        $fp = fopen("../var/log/summary_log_file.txt", "a") or die("Unable to open file!");
  11897. -        fprintf($fp, "\n\n*************************** %s ***********************", $logArray['functionName']);
  11898. -        fprintf($fp, "\nFunction Name    - %s", $logArray['functionName']);
  11899. -        fprintf($fp, "\nStart Time     - %s", $logArray['startTime']);
  11900. -        fprintf($fp, "\nCompetion Time - %s", $logArray['completionTime']);
  11901. -        fprintf($fp, "\nExecution Time - %s", $logArray['executionTime']);
  11902. -        fprintf($fp, "\nOrders Checked/Impacted   - %d", $logArray['ordersUpdatedCount']);
  11903. -        fprintf($fp, "\nStatus   - %s", $logArray['status']);
  11904. -    }
  11905. -}
  11906. -
  11907. -$params = array_slice($argv, 1);
  11908. -$shell = new Tolexo_OrderTag($params);
  11909. -$shell->run();
  11910. \ No newline at end of file
  11911. diff --git a/mobileapi/auth.php b/mobileapi/auth.php
  11912. index 9c12ce1..73e6c90 100644
  11913. --- a/mobileapi/auth.php
  11914. +++ b/mobileapi/auth.php
  11915. @@ -12,63 +12,24 @@ include_once('AuthCustomer.php');
  11916.  *   - If no then use reguar authentication model
  11917.  *       to verify the authenticity of the call
  11918.  */
  11919. -if ($INTERNAL_FUNCTION_CALL || hasElementInCollection($_SERVER['REMOTE_ADDR'],$INTERNAL_WEBADMIN01_SERVER)) {
  11920. +if (hasElementInCollection($_SERVER['REMOTE_ADDR'],$INTERNAL_WEBADMIN01_SERVER)) {
  11921.      //get customer_id from _GET / _POST
  11922.      $customerid = isset($_GET['customer_id']) ? $_GET['customer_id'] : (isset($_POST['customer_id']) ? $_POST['customer_id'] : null);
  11923.      $BY_PASS_AUTHENTICATION = true;
  11924.      $_APP_SESSION_INFO = $customerid;
  11925.      
  11926.  }else{
  11927. -    
  11928. -    $authParams = getAuthenticationParams();
  11929. -    $authCustomer = new AuthCustomer($authParams['app_session'], $authParams['timestamp'], $authParams['hash']);
  11930. +    $appSession = (isset($_GET['app_session'])) ? $_GET['app_session'] : $_POST['app_session'];
  11931. +    $timestamp = (isset($_GET['timestamp'])) ? $_GET['timestamp'] : $_POST['timestamp'];
  11932. +    $hash = (isset($_GET['hash'])) ? $_GET['hash'] : $_POST['hash'];
  11933. +
  11934. +    $authCustomer = new AuthCustomer($appSession, $timestamp, $hash);
  11935.  
  11936.      $_APP_SESSION_INFO = $authCustomer->getSessionInfo();
  11937. -    if( $_APP_SESSION_INFO == null ){
  11938. +
  11939. +    if( $_APP_SESSION_INFO == null )
  11940. +    {
  11941.          echo getAuthenticationError();
  11942.          exit();
  11943.      }
  11944. -}
  11945. -
  11946. -function getAuthenticationParams() {
  11947. -
  11948. -    if(getApiVersion() == "v1") {
  11949. -    
  11950. -        $authParams['app_session'] = (isset($_GET['app_session'])) ?
  11951. -                                     $_GET['app_session'] :
  11952. -                                     ( (isset($_POST['app_session'])) ? $_POST['app_session']: null);
  11953. -        
  11954. -        $authParams['timestamp'] = (isset($_GET['timestamp'])) ?
  11955. -                                    $_GET['timestamp'] :
  11956. -                                    ( (isset($_POST['timestamp'])) ? $_POST['timestamp']: null);
  11957. -        
  11958. -        $authParams['hash'] = (isset($_GET['hash'])) ?
  11959. -                                    $_GET['hash'] :
  11960. -                                    ( (isset($_POST['hash'])) ? $_POST['hash']: null);
  11961. -        
  11962. -    } else {
  11963. -        
  11964. -        $authParams['app_session'] = isset($_SERVER['HTTP_XAPPSESSION']) ? $_SERVER['HTTP_XAPPSESSION'] : null;
  11965. -        $authParams['timestamp'] = isset($_SERVER['HTTP_XTIMESTAMP']) ? $_SERVER['HTTP_XTIMESTAMP'] : null;
  11966. -        $authParams['hash'] = isset($_SERVER['HTTP_XHASH']) ? $_SERVER['HTTP_XHASH'] : null;
  11967. -        
  11968. -    }
  11969. -    return $authParams;
  11970. -}
  11971. -
  11972. -function getApiVersion(){
  11973. -    
  11974. -    $route = Mage::app()->getRequest()->getParam('route');
  11975. -    $tmpArr = explode("/", $route);
  11976. -    if(count($tmpArr) > 3) {
  11977. -        
  11978. -        $version = $tmpArr[0];
  11979. -        //remove version information from route
  11980. -        $newRoute = substr( $route, strpos($route, "/")+1 );
  11981. -        Mage::app()->getRequest()->setParam('route', $newRoute);
  11982. -        
  11983. -    } else {    //if version information is missing then return default version v1
  11984. -        $version = "v1";
  11985. -    }
  11986. -    return $version;
  11987. -}
  11988. +}
  11989. \ No newline at end of file
  11990. diff --git a/mobileapi/category_icon/others.png b/mobileapi/category_icon/others.png
  11991. deleted file mode 100644
  11992. index 7614d28..0000000
  11993. Binary files a/mobileapi/category_icon/others.png and /dev/null differ
  11994. diff --git a/mobileapi/common.php b/mobileapi/common.php
  11995. index d00df47..1113353 100644
  11996. --- a/mobileapi/common.php
  11997. +++ b/mobileapi/common.php
  11998. @@ -2,13 +2,9 @@
  11999.  include_once('config.php');
  12000.  include_once('Logger.php');
  12001.  
  12002. -if(!isset($INTERNAL_FUNCTION_CALL))
  12003. -    $INTERNAL_FUNCTION_CALL = false;
  12004. -
  12005. -Logger::logRequest();
  12006. -
  12007. +$BY_PASS_AUTHENTICATION = false;
  12008.  $conn = connectDb();
  12009. -rewriteJsonRequestParams();
  12010. +
  12011.  
  12012.  function connectDb(){
  12013.      $conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die('Error connecting to mysql');
  12014. @@ -117,17 +113,4 @@ function hasElementInCollection($element,$arr_collection){
  12015.          next($arr_collection);
  12016.      }
  12017.      return false;
  12018. -}
  12019. -
  12020. -//this function writes json input to post params
  12021. -function rewriteJsonRequestParams(){
  12022. -    $input = json_decode(file_get_contents('php://input'), true);
  12023. -    if($input) {
  12024. -        foreach($input as $key => $value) {
  12025. -            if(is_array($value))
  12026. -                $_POST[$key] = json_encode($value);
  12027. -            else
  12028. -                $_POST[$key] = $value;
  12029. -        }
  12030. -    }
  12031. -}
  12032. +}
  12033. \ No newline at end of file
  12034. diff --git a/mobileapi/config_production.php b/mobileapi/config_production.php
  12035. index da78cdf..c43dfc8 100644
  12036. --- a/mobileapi/config_production.php
  12037. +++ b/mobileapi/config_production.php
  12038. @@ -2,10 +2,8 @@
  12039.  //error_reporting(E_ALL);
  12040.  ini_set('display_errors',0);
  12041.  
  12042. -define('API_ROOT', dirname(__FILE__)); //api directory
  12043. -
  12044.  define('WEB_API_KEY', 'c5d92aa397c1b8f7448b3950d4ddc0a6');
  12045. -define('ORDER_BY_PHONE','082-8282-8282');
  12046. +define('ORDER_BY_PHONE','+91 8282 8282 82');
  12047.  define('REVIEW_LIMIT','5');
  12048.  define('EMAIL','support@tolexo.com');
  12049.  define('OTP_CLIENT_URL','http://push.rstvas.com/SendSMS/sendmsg.php?uname=tolexo&pass=tol%40123');
  12050. @@ -47,15 +45,15 @@ define('LISTING_IMAGE_RESIZE', '?resize=1&q=98&w=200&h=200&zc=2');
  12051.  define('WISHLIST_IMAGE_RESIZE', '?resize=1&q=98&w=70&h=70&zc=2');
  12052.  define('IMAGE_BASE_URL', 'http://img.tolexokit.com/media/catalog/product');
  12053.  
  12054. -//GO API
  12055. -define("PRODUCT_GO_API", true);
  12056. -define("GO_API_TIMEOUT", 30);
  12057. -define("GO_API_URL", "http://spare01:8090/p/v1");
  12058. -
  12059.  define('SHIPPING', '99');
  12060.  
  12061.  define('IMAGE_BASE_URL', 'http://img.tolexokit.com/media/catalog/product');
  12062.  
  12063. +//GO API
  12064. +define("PRODUCT_GO_API", true);
  12065. +define("GO_API_TIMEOUT", 30);
  12066. +define("GO_API_URL", "http://localhost:2022/p/v1");
  12067. +
  12068.  define('SERVER_NAME',$_SERVER['SERVER_ADDR']);
  12069.  if($_SERVER['SERVER_ADDR'] =="127.0.0.1"){
  12070.         define('CATEGORY_ICON_PATH',"http://".$_SERVER['SERVER_NAME']."/mobileapi/category_icon/");
  12071. @@ -70,14 +68,16 @@ define('APP_SESSION_VALID_TIMESTAMP', 100000);  //in minutes
  12072.  
  12073.  define('ENCRYPTION_KEY', 'cFs1!R@20O%O#S$2*!iH');  
  12074.  define('AES_256_CBC', 'aes-256-cbc');
  12075. -$INTERNAL_WEBADMIN01_SERVER = array('172.16.50.181');
  12076. +
  12077. +//Define the list of webadmin servers collection
  12078. +$INTERNAL_WEBADMIN01_SERVER = array('172.16.50.116', '127.0.0.1');
  12079.  $categoryIcon   =       array(  '1193'=>'saftey.png','1187'=>'abrasives.png','1672'=>'adhhesive.png','1188'=>'cutting_tolls.png','1189'=>'fastners.png','1190'=>'hand_tools.png','1192'=>'powertools.png','1194'=>'security.png','1191'=>'test_measures.png','1637'=>'bike-car-acc.png','2154'=>'cleaning.png','1938'=>'electrical.png','2162'=>'hardwares.png','2165'=>'lab-supplies.png','2167'=>'lubrications.png','2168'=>'material-hendeling.png','2170'=>'office-supplies.png','2173'=>'plumbings.png','2174'=>'pneumatics.png','2177'=>'pumps.png','2183'=>'welding.png','1906'=>'power_transmission.png','1760'=>'others.png');
  12080.  
  12081.  global $categoryIcon;
  12082.  
  12083.  
  12084.  
  12085. -require_once(API_ROOT.'/../app/Mage.php');
  12086. +require_once('./../app/Mage.php');
  12087.  //require_once('memcache.php');
  12088.        
  12089.  function pr($data){
  12090. @@ -87,4 +87,8 @@ function pr($data){
  12091.         return true;
  12092.  }     
  12093.  
  12094. +
  12095. +Logger::logRequest();
  12096. +
  12097. +
  12098.  ?>
  12099. diff --git a/orderSplit.php b/orderSplit.php
  12100. index 14e536c..3fb5528 100755
  12101. --- a/orderSplit.php
  12102. +++ b/orderSplit.php
  12103. @@ -522,7 +522,6 @@ if(isset($_POST['entity_id']) && isset($_POST['increment_id'])){
  12104.                         <div style="border:1px solid #dddddd;font-size:12px;margin-bottom:15px;margin: 0 5px 15px;overflow:auto;" align="center">';
  12105.  
  12106.                                 $iCnt=1;
  12107. -               $orderDate2= $order->getCreatedAt();
  12108.                  foreach ($order->getAllItems() as $item)
  12109.                  {
  12110.                      if($iCnt==count($order->getAllItems()))
  12111. @@ -557,11 +556,12 @@ if(isset($_POST['entity_id']) && isset($_POST['increment_id'])){
  12112.                          $row = $write->fetchRow($sql);
  12113.                          $dispatch = $row['value'];
  12114.                      }
  12115. -
  12116. +                    
  12117. +                    $orderDate2= $orderItem['created_at'];
  12118.          
  12119.                      if(is_numeric($dispatch))
  12120.                      {
  12121. -                        $expecteddispatch =date('d-m-Y', strtotime($orderDate2.' +'.$dispatch.' days'));
  12122. +                        $expecteddispatch =date('d-m-Y', strtotime($orderDate2 . ' + '.$dispatch.' days'));
  12123.                      }
  12124.                      else
  12125.                      {
  12126. diff --git a/qlp/css/custom.css b/qlp/css/custom.css
  12127. index daa28b9..ded8a53 100755
  12128. --- a/qlp/css/custom.css
  12129. +++ b/qlp/css/custom.css
  12130. @@ -5,7 +5,7 @@
  12131.  .lp {
  12132.      font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
  12133.  }
  12134. -.jq-brand-content ul,
  12135. +.jq-brand-content ul{display: none;}
  12136.  .jq-tab-content div.clearfix{
  12137.      display: none;
  12138.  }
  12139. @@ -361,6 +361,7 @@
  12140.  }
  12141.  @media (min-width : 960px) and (max-width : 1169px) {
  12142.      .lp {
  12143. +        /*width: 100%;*/
  12144.          margin: 0 auto;
  12145.      }
  12146.      .lp .products li {
  12147. @@ -390,6 +391,7 @@
  12148.  
  12149.  @media (min-width : 1170px) {
  12150.      .lp {
  12151. +        /*width: 100%;*/
  12152.          margin: 0 auto;
  12153.      }
  12154.      .lp .tabs a {
  12155. diff --git a/qlp/css/style.css b/qlp/css/style.css
  12156. index ce9629b..60a27bb 100755
  12157. --- a/qlp/css/style.css
  12158. +++ b/qlp/css/style.css
  12159. @@ -7,14 +7,6 @@ body {
  12160.  ul li {
  12161.      line-height: 20px;
  12162.  }
  12163. -.fs12 {
  12164. -  font-size: 12px;
  12165. -}
  12166. -a, a:visited {
  12167. -  color:#ff5f5c;
  12168. -  text-decoration: none;
  12169. -  font-size: 12px;
  12170. -}
  12171.  .container {
  12172.      margin-left: auto;
  12173.      margin-right: auto;
  12174. @@ -29,7 +21,7 @@ a, a:visited {
  12175.  .clp {
  12176.    left: 50%;
  12177.    background: #fff;
  12178. -  padding:0 15px;
  12179. +  padding: 15px;
  12180.    border-bottom: 1px solid #aaa;
  12181.  }
  12182.  .clp h2 {
  12183. @@ -63,7 +55,7 @@ a, a:visited {
  12184.    border: 1px solid #56006b;
  12185.  }
  12186.  .clp textarea {
  12187. -    height:260px;
  12188. +    height:360px;
  12189.      clear:both;
  12190.      width: 99%;
  12191.  }
  12192. @@ -79,9 +71,6 @@ a, a:visited {
  12193.    color:#444;
  12194.    display: block;
  12195.  }
  12196. -.clp label.lbl_is_deleted {
  12197. -  display: inline;  
  12198. -}
  12199.  .clear {
  12200.    clear: both;
  12201.  }
  12202. @@ -107,7 +96,7 @@ a, a:visited {
  12203.    background: #56006b;
  12204.    color:#fff;
  12205.  }
  12206. -.clp #btn_save, .clp #download_csv {
  12207. +.clp #save {
  12208.      display:none;
  12209.  }
  12210.  .clp_overlay {
  12211. diff --git a/qlp/default.json b/qlp/default.json
  12212. index fca6d43..0c1d68d 100644
  12213. --- a/qlp/default.json
  12214. +++ b/qlp/default.json
  12215. @@ -10,11 +10,11 @@
  12216.      "type": "products",
  12217.      "morelink": "http://www.tolexo.com/",  
  12218.      "tab": "Best Seller",
  12219. -    "tsin": "T06IND0001, T06BND0029",
  12220. -    "tier": "Y"
  12221. +    "tsin": "T06IND0001, T06BND0029"
  12222.  },
  12223.  {
  12224. -    "type": "disclaimer",
  12225. -    "title": "* Disclaimer: Subject to stock availability | Price subject to change without notice"
  12226. +    "type": "products",  
  12227. +    "tab": "UPTO 63% OFF",
  12228. +    "tsin": "T06JKF0011, T06TRN0004, T04BND0021"
  12229.  }
  12230.  ]
  12231. \ No newline at end of file
  12232. diff --git a/qlp/js/custom.js b/qlp/js/custom.js
  12233. index 5392e3a..86a01a2 100755
  12234. --- a/qlp/js/custom.js
  12235. +++ b/qlp/js/custom.js
  12236. @@ -1,7 +1,5 @@
  12237.  jQuery.noConflict();
  12238. -var saveProcess = false;
  12239. -var scrFunc = {iSave:function(s){if(s == undefined){return saveProcess;}saveProcess=s;return s;},IsJsonString:function(s){try{JSON.parse(s);}catch(e){return false;}return true;},smoothscroll:function(){jQuery('html,body').animate({scrollTop:jQuery('#clp_output').offset().top},1000);return false;}};
  12240. -var dataLayer = [];
  12241. +var scrFunc = {IsJsonString:function(s){try{JSON.parse(s);}catch(e){return false;}return true;},smoothscroll:function(){jQuery('html,body').animate({scrollTop:jQuery('#clp_output').offset().top},1000);return false;}};
  12242.  
  12243.  function dhtmlData(page) {
  12244.      if(!scrFunc.IsJsonString(jQuery('#jsondata_txt').val()) && page!='find_cms') {
  12245. @@ -15,19 +13,14 @@ function dhtmlData(page) {
  12246.          type: "POST",
  12247.          beforeSend: function() {
  12248.              jQuery('.clp_overlay').show().css('height', jQuery(window).height()+'px');
  12249. -            jQuery('#download_csv').hide();
  12250.          },
  12251.          //contentType: "application/json;charset=utf-8",
  12252.          data: jQuery('#frmclp').serialize(),
  12253.          success: function (r) {
  12254. -            jQuery('#is_deleted').attr('checked', false);
  12255.              if(page == 'process') {
  12256.                  jQuery('#clp_output').html(r);
  12257.                  jQuery('#btn_save').show();
  12258. -                jQuery('#download_csv').show();
  12259. -                scrFunc.iSave(true);
  12260.                  scrFunc.smoothscroll();                
  12261. -            } else if(page == 'download_csv') {
  12262.              } else {
  12263.                  var d = jQuery.parseJSON(r);
  12264.                  var m = '';
  12265. @@ -42,20 +35,13 @@ function dhtmlData(page) {
  12266.                  if(page === 'find_cms' && d.error === 0) {
  12267.                      jQuery('#jsondata_txt').val(d.data.jsondata);
  12268.                      jQuery('#css_txt').val(d.data.css);
  12269. -                    jQuery('#javascript_txt').val(d.data.javascript);
  12270. -                    if(d.data.is_deleted == 1) {
  12271. -                        jQuery('#is_deleted').attr('checked', true);
  12272. -                    } else {
  12273. -                        jQuery('#is_deleted').attr('checked', false);
  12274. -                    }
  12275.                  }
  12276.              }
  12277.              jQuery('.clp_overlay').hide();
  12278.              
  12279.          },
  12280.          error: function (e) {
  12281. -            alert("Something happening wrong, Please try again later.");
  12282. -            jQuery('.clp_overlay').hide();
  12283. +            alert("error");
  12284.          }
  12285.      });
  12286.  }
  12287. @@ -65,30 +51,13 @@ jQuery(document).ready(function() {
  12288.          dhtmlData('find_cms');
  12289.      });
  12290.  
  12291. -    jQuery("#btn_process").click(function () {
  12292. +    jQuery("#btn_submit").click(function () {
  12293.          dhtmlData('process');
  12294.      });
  12295.  
  12296.      jQuery("#btn_save").click(function () {
  12297. -        if(scrFunc.iSave() === false) {
  12298. -            alert('Please click on preview button before save.');
  12299. -            return false;
  12300. -        }
  12301. -        if(scrFunc.iSave() === true) {
  12302. -            if(confirm('Are you sure you want to save this page?')) {
  12303. -                dhtmlData('save');
  12304. -                scrFunc.iSave(false);
  12305. -                jQuery('#btn_save').hide();
  12306. -                jQuery('#download_csv').hide();
  12307. -            }
  12308. +        if(confirm('Are you sure you want to save this page?')) {
  12309. +            dhtmlData('save');
  12310.          }
  12311. -    });
  12312. -
  12313. -    jQuery('.txt_changed').on('focus', function() {
  12314. -        scrFunc.iSave(false);
  12315. -        jQuery("#btn_save").hide();
  12316. -        jQuery('#download_csv').hide();
  12317. -    });
  12318. -
  12319. -    jQuery("#btn_save").hide();
  12320. +    });    
  12321.  });
  12322. \ No newline at end of file
  12323. diff --git a/qlp/process.php b/qlp/process.php
  12324. index 9b086a1..4f2ea05 100755
  12325. --- a/qlp/process.php
  12326. +++ b/qlp/process.php
  12327. @@ -29,23 +29,21 @@ class Dhtml {
  12328.         private $tabSel = false;
  12329.         private $tabCnt = 0;
  12330.         private $apiUrl = array();
  12331. -       private $list = array();
  12332. -       private $showTierPrice = 'N';
  12333.         private $disclaimer = "* Disclaimer: Subject to stock availability | Price subject to change without notice";
  12334.         private $siteUrl = array(
  12335. -               "staging1.tolx.net:2020" => "http://staging1.tolx.net/",
  12336. +               "beta.tolexo.com:2020" => "http://beta.tolexo.com/",
  12337.                 "tolexo.com:4040" => "http://www.tolexo.com/",
  12338.                 "43.252.89.107:4040" => "http://www.tolexo.com/",
  12339. -               "localhost"=> "http://www.tolexo.com/"
  12340. +               "localhost"=> "http://beta.tolexo.com/"
  12341.         );
  12342.         private $hosts = array(
  12343. -               "staging1.tolx.net:2020" => "http://localhost:9090",
  12344. +               "beta.tolexo.com:2020" => "http://localhost:2022",
  12345.                 "tolexo.com:4040" => "http://spare01:8090",
  12346.                 "43.252.89.107:4040" => "http://spare01:8090",
  12347. -               "localhost"=> "http://staging1.tolx.net:9090"//http://172.16.50.168:8090"
  12348. +               "localhost"=> "http://beta.tolexo.com:2022"
  12349.         );
  12350.         private $mageInc = array(
  12351. -               "staging1.tolx.net:2020" => "../app/Mage.php",  
  12352. +               "beta.tolexo.com:2020" => "../app/Mage.php",  
  12353.                 "tolexo.com:4040" => "../../magento/magento/app/Mage.php",
  12354.                 "43.252.89.107:4040" => "../../magento/magento/app/Mage.php",
  12355.                 "localhost"=> "../../tolexo_magento_sandeep/app/Mage.php"
  12356. @@ -61,10 +59,6 @@ class Dhtml {
  12357.                         "tsin" => "/p/v1/products/tsin-to-id/",
  12358.                         "product" => "/p/v1/product/"
  12359.                 );
  12360. -
  12361. -               $this->list[] = array(
  12362. -                       'TAB', 'ID', 'TSIN', 'NAME', 'MRP', 'SP', 'DISCOUNT', 'IN STOCK', 'URL', 'IMAGE'
  12363. -               );
  12364.         }
  12365.  
  12366.         private function __sleep() {
  12367. @@ -90,7 +84,7 @@ class Dhtml {
  12368.          *
  12369.          */
  12370.         private function setDb() {
  12371. -               include_once $this->mageInc[(isset($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:'43.252.89.107:4040')];
  12372. +               include_once $this->mageInc[$_SERVER['HTTP_HOST']];
  12373.                 umask(0);
  12374.                 Mage::app('admin')->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
  12375.  
  12376. @@ -112,22 +106,20 @@ class Dhtml {
  12377.                 $this->setDb();
  12378.  
  12379.                 if(isset($this->postData['identifier']) && !empty($this->postData['identifier'])) {
  12380. -                       //$sel_query = "SELECT page_id FROM `{$this->db['cms_page']}` WHERE identifier = '".mysql_escape_string($this->postData['identifier'])."' ";
  12381. -                       //$query_data = $this->db['read_conn']->fetchAll($sel_query);
  12382. -                       $this->getCmsPageJson(true);
  12383. -
  12384. -                       if(isset($this->return_data['error']) && $this->return_data['error'] == 0) {
  12385. -                               $is_deleted = 0;
  12386. -                               if(isset($this->postData['remove_from_qlp']) && (int)$this->postData['remove_from_qlp'] === 1) {
  12387. -                                       $is_deleted = 1;
  12388. -                               }
  12389. -                               $ins_query = "INSERT INTO `{$this->db['cms_page_dynamic']}` (`page_id`, `identifier`, `jsondata`, `css`, `javascript`, `is_deleted`) VALUES ('".$this->return_data['data']['page_id']."', '".$this->postData['identifier']."', '".addslashes($this->postData['jsondata'])."', '".addslashes($this->postData['css'])."', '".addslashes($this->postData['javascript'])."', '".(int)$is_deleted."')  ON DUPLICATE KEY UPDATE jsondata='".addslashes($this->postData['jsondata'])."', css='".addslashes($this->postData['css'])."', javascript='".addslashes($this->postData['javascript'])."', is_deleted='".(int)$is_deleted."'";
  12390. +                       $sel_query = "SELECT page_id FROM `{$this->db['cms_page']}` WHERE identifier = '".mysql_escape_string($this->postData['identifier'])."'";
  12391. +                       $query_data = $this->db['read_conn']->fetchAll($sel_query);
  12392. +
  12393. +                       if(isset($query_data[0])) {
  12394. +
  12395. +                               $ins_query = "INSERT INTO `{$this->db['cms_page_dynamic']}` (`page_id`, `identifier`, `jsondata`, `css`) VALUES ('".$query_data[0]['page_id']."', '".$this->postData['identifier']."', '".addslashes($this->postData['jsondata'])."', '".addslashes($this->postData['css'])."') ON DUPLICATE KEY UPDATE jsondata='".addslashes($this->postData['jsondata'])."', css='".addslashes($this->postData['css'])."'";
  12396.  
  12397.                                 if(true === $this->executeQueries($ins_query)) {
  12398. -                                       $this->updateCmsPage(true, $this->return_data['data']['page_id']); // update the cms page content
  12399. +                                       $this->updateCmsPage(true, $query_data[0]['page_id']); // update the cms page content
  12400.                                 } else {
  12401.                                         $this->return_data = array('error'=>1, 'msg'=>'Something happening wrong, Please try again later.');
  12402.                                 }
  12403. +                       } else {
  12404. +                               $this->return_data = array('error'=>1, 'msg'=>"CMS Page identifier doesn't exists.");
  12405.                         }
  12406.  
  12407.                 } else {
  12408. @@ -141,7 +133,6 @@ class Dhtml {
  12409.          * @param - integer page id
  12410.          */
  12411.         public function updateCmsPage($is_manual = true, $page_id = 0) {
  12412. -               global $argv;
  12413.                
  12414.                 if(true === $is_manual) { // manual submit
  12415.                         $htmlpageContent = isset($_SESSION['page_content'])?$_SESSION['page_content']:$this->pageStructure;
  12416. @@ -150,18 +141,14 @@ class Dhtml {
  12417.                         $upd_query = "UPDATE `{$this->db['cms_page']}` SET content = '".addslashes($htmlpageContent)."' WHERE page_id = ".(int)$page_id;
  12418.  
  12419.                         if(true === $this->executeQueries($upd_query)) {
  12420. -                               //$this->db['write_conn']->commit();
  12421. +                               $this->db['write_conn']->commit();
  12422.                                 $this->return_data = array('error'=>0, 'msg'=>'CMS Page successfully updated.');
  12423.                         } else {
  12424.                                 $this->return_data = array('error'=>1, 'msg'=>'CMS Page not update due to some technical errors.');
  12425.                         }
  12426. -
  12427. -                       if(isset($argv[1])) {
  12428. -                               pr("Page: ".$page_id);
  12429. -                       }
  12430.                 } else { // cron
  12431.                         $this->setDb();
  12432. -                       $sel_query = "SELECT cmsd.* FROM `{$this->db['cms_page']}` as cms INNER JOIN `{$this->db['cms_page_dynamic']}` as cmsd ON cms.page_id = cmsd.page_id AND cms.is_active = 1 AND cmsd.is_deleted = 0";
  12433. +                       $sel_query = "SELECT cmsd.* FROM `{$this->db['cms_page']}` as cms INNER JOIN `{$this->db['cms_page_dynamic']}` as cmsd ON cms.page_id = cmsd.page_id AND cms.is_active = 1";
  12434.                         $query_data = $this->db['read_conn']->fetchAll($sel_query);
  12435.  
  12436.                         if($query_data && count($query_data) > 0) {
  12437. @@ -170,7 +157,6 @@ class Dhtml {
  12438.                                         $this->pageStructure = '';
  12439.                                         $this->tabSel = false;
  12440.                                         $this->tabCnt = 0;
  12441. -                                       $this->list = array();
  12442.                                         $this->getProductData(false);
  12443.                                         $this->updateCmsPage(true, $data['page_id']);
  12444.                                 }
  12445. @@ -186,15 +172,11 @@ class Dhtml {
  12446.         public function getCmsPageJson() {
  12447.                 if(isset($this->postData['identifier']) && !empty($this->postData['identifier'])) {
  12448.                         $this->setDb();
  12449. -                       $sel_query = "SELECT cmsd.page_id, cmsd.jsondata, cmsd.css, cmsd.is_deleted, cmsd.javascript FROM `{$this->db['cms_page']}` as cms INNER JOIN `{$this->db['cms_page_dynamic']}` as cmsd ON cms.page_id = cmsd.page_id AND cms.is_active = 1 WHERE cmsd.identifier = '".mysql_escape_string($this->postData['identifier'])."'";
  12450. +                       $sel_query = "SELECT cmsd.jsondata, cmsd.css FROM `{$this->db['cms_page']}` as cms INNER JOIN `{$this->db['cms_page_dynamic']}` as cmsd ON cms.page_id = cmsd.page_id AND cms.is_active = 1 WHERE cmsd.identifier = '".mysql_escape_string($this->postData['identifier'])."'";
  12451.                         $query_data = $this->db['read_conn']->fetchAll($sel_query);
  12452.  
  12453.                         if(isset($query_data[0]) && count($query_data) > 0) {
  12454. -                               if($query_data[0]['is_deleted'] == 0) {
  12455. -                                       $this->return_data = array('error'=>0, 'msg'=>'Previous data is populated.', 'data'=>array('page_id'=>$query_data[0]['page_id'], 'identifier'=>$query_data[0]['identifier'], 'jsondata'=>$query_data[0]['jsondata'], 'css'=>$query_data[0]['css'], 'javascript'=>$query_data[0]['javascript']));
  12456. -                               } else {
  12457. -                                       $this->return_data = array('error'=>1, 'msg'=>"This CMS Page is already removed from QLP. You cannot update it.");     
  12458. -                               }
  12459. +                               $this->return_data = array('error'=>0, 'msg'=>'Previous data is populated.', 'data'=>array('jsondata'=>$query_data[0]['jsondata'], 'css'=>$query_data[0]['css']));
  12460.                         } else {
  12461.                                 $this->return_data = array('error'=>1, 'msg'=>"Previous data for this CMS Page doesn't exists.");
  12462.                         }
  12463. @@ -231,7 +213,8 @@ class Dhtml {
  12464.          * @param - values pass to api
  12465.          */
  12466.         private function getData($t = 'curl', $url_code = '', $params = '') {
  12467. -               $url = $this->hosts[(isset($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:'43.252.89.107:4040')].$this->apiUrl[$url_code].$params;
  12468. +               $url = $this->hosts[$_SERVER['HTTP_HOST']].$this->apiUrl[$url_code].$params;
  12469. +               //$url = "http://localhost/html/sandeep/qlp/jsondata.php?type=".$url_code."&id=".$params;
  12470.  
  12471.                 try {
  12472.                         if($t === 'curl') {
  12473. @@ -322,8 +305,6 @@ class Dhtml {
  12474.                                                 // get products by TSIN
  12475.                                                 $productIds = $this->getProductByTsin($product->tsin);
  12476.  
  12477. -                                               $this->showTierPrice = isset($product->tier)?$product->tier:'N';
  12478. -
  12479.                                                 if($productIds && count($productIds) > 0) {
  12480.                                                         foreach($productIds as $tsin=>$pid) {
  12481.                                                                 if(!empty($pid)) {
  12482. @@ -380,7 +361,6 @@ class Dhtml {
  12483.                 $this->prodArr = array();
  12484.                 $lowestPriceMrpArr = array();
  12485.                 $lowestPriceArrRev = array();
  12486. -               $lowestPriceDataArr = array();
  12487.                 $this->prodArr['enabled'] = false;
  12488.  
  12489.                 if(count($data->variations) > 0) {
  12490. @@ -391,15 +371,18 @@ class Dhtml {
  12491.  
  12492.                                 if(true == $v->is_enabled) // check variations enabled/disabled
  12493.                                 {
  12494. -                                       $this->prodArr['id'] = $data->_id;                                     
  12495. -                                       $this->prodArr['name'] = $data->name;
  12496. -                                       $this->prodArr['url'] =  $this->siteUrl[(isset($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:'43.252.89.107:4040')].$data->url->path;
  12497. +                                       $this->prodArr['id'] = $data->_id;
  12498. +                                       $noOfItems = '';
  12499. +                                       if(isset($data->attributes->number_of_items) && $data->attributes->number_of_items > 1) {
  12500. +                                               $noOfItems = " (Pack of ".$data->attributes->number_of_items.")";
  12501. +                                       }
  12502. +                                       $this->prodArr['name'] = $data->name.$noOfItems;
  12503. +                                       $this->prodArr['url'] =  $this->siteUrl[$_SERVER['HTTP_HOST']].$data->url->path;
  12504.  
  12505.                                         if(isset($data->media) && count($data->media) > 0) {
  12506.                                                 $p_img = array('img'=>'', 'title'=>'');
  12507. -                                               $mediaCnt = count($data->media);
  12508.                                                 foreach($data->media as $img) {
  12509. -                                                       if(1 == $img->is_primary || $mediaCnt == 1) {
  12510. +                                                       if(1 == $img->is_primary) {
  12511.                                                                 $p_img['img'] = $img->value;
  12512.                                                                 $p_img['title'] = $img->label;
  12513.                                                                 break;
  12514. @@ -427,9 +410,7 @@ class Dhtml {
  12515.                                                         {
  12516.                                                                 $this->prodArr['enabled'] = true;
  12517.                                                                 if(isset($article->price)) {
  12518. -                                                                       if($this->showTierPrice == 'Y' && isset($article->recommended_price) && !empty($article->recommended_price)) {
  12519. -                                                                               $price = $article->recommended_price;
  12520. -                                                                       } elseif(isset($article->price->special)) {
  12521. +                                                                       if(isset($article->price->special)) {
  12522.                                                                                 if(isset($article->price->special->value) && ((isset($article->price->special->from) && isset($article->price->special->to) && strtotime(date('Y-m-d H:i:s')) >= strtotime($article->price->special->from) && strtotime(date('Y-m-d H:i:s')) <= strtotime($article->price->special->to)) || (isset($article->price->special->from) && !isset($article->price->special->to) && strtotime(date('Y-m-d H:i:s')) >= strtotime($article->price->special->from)))) {
  12523.                                                                                         $price = $article->price->special->value;
  12524.                                                                                 } else {
  12525. @@ -450,7 +431,7 @@ class Dhtml {
  12526.                                                                                 }
  12527.                                                                         }
  12528.  
  12529. -                                                                       $lowestPriceMrpArr[$this->price($price)] = array('mrp' => $msrp, 'noofitems' => (isset($v->attributes->number_of_items)?$v->attributes->number_of_items:''));
  12530. +                                                                       $lowestPriceMrpArr[$this->price($price)] = $msrp;
  12531.                                                                 }
  12532.                                                         }
  12533.                                                 }
  12534. @@ -474,12 +455,7 @@ class Dhtml {
  12535.                                         $lprice[current($lowestPriceArrRev)] = key($lowestPriceArrRev);
  12536.                                 }
  12537.  
  12538. -                               $this->prodArr['mrp'] = $lowestPriceMrpArr[current($lprice)]['mrp'];
  12539. -                               $noOfItems = $lowestPriceMrpArr[current($lprice)]['noofitems'];
  12540. -
  12541. -                               if(!empty($noOfItems) && $noOfItems != 1) {
  12542. -                                       $this->prodArr['name'] .= " (Pack of ".$noOfItems.")";
  12543. -                               }
  12544. +                               $this->prodArr['mrp'] = $lowestPriceMrpArr[current($lprice)];
  12545.  
  12546.                                 $this->prodArr[key($lprice)] = array(
  12547.                                         'sp' => current($lprice),
  12548. @@ -550,7 +526,6 @@ class Dhtml {
  12549.          *
  12550.          */
  12551.         private function createProductHtml($data = null) {
  12552. -
  12553.                 $prod = '
  12554.                 <div class="clearfix products jq-'.$this->tabIdData($data->tab).'">';
  12555.                         if(isset($data->morelink)) {
  12556. @@ -577,13 +552,10 @@ class Dhtml {
  12557.                                         }
  12558.  
  12559.                                         $stock = '';
  12560. -                                       $is_in_stock = '';
  12561.                                         if(isset($val->stock)) {
  12562.                                                 $stock = $val->stock;
  12563. -                                               $is_in_stock = 'Y';
  12564.                                         } else if(isset($val->outofstock)) {
  12565.                                                 $stock = $val->outofstock;
  12566. -                                               $is_in_stock = 'N';
  12567.                                         }
  12568.  
  12569.                                         $ajaxLoader = '';
  12570. @@ -604,18 +576,12 @@ class Dhtml {
  12571.                                                         $products .= $ajaxLoader.' <img '.$lazyLoad.' width="135" height="135" border="0" alt="'.$val->name.'" src="http://d2ulloqlm1pj3b.cloudfront.net/mailer/images/spacer.gif" title="'.$val->name.'">';
  12572.                                                 }
  12573.  
  12574. -                                               $selling_price = 0;
  12575. -                                               $discount_price = 0;
  12576. -                                               $mrp_price = 0;
  12577.                                                 if(isset($val->mrp)) {
  12578.                                                         if(empty($stock['discount'])) {
  12579.                                                                 $products .= '<p class="main-price"> '.$stock['sp'].'</p>';
  12580.                                                         } else {
  12581.                                                                 $products .= '<span class="discount rotate">'.$stock['discount'].'% OFF </span> <p class="main-price"><span class="old-price">Rs. '.$val->mrp.'</span><span class="price-pipe">|</span>Rs. '.$stock['sp'].'</p> ';
  12582.                                                         }
  12583. -                                                       $selling_price = $stock['sp'];
  12584. -                                                       $discount_price = $stock['discount'];
  12585. -                                                       $mrp_price = $val->mrp;
  12586.                                                 }
  12587.  
  12588.                                                 if(isset($val->stock)) {
  12589. @@ -626,13 +592,7 @@ class Dhtml {
  12590.  
  12591.                                         $products .= '
  12592.                                         </li>';
  12593. -
  12594. -                                       $this->list[] = array(
  12595. -                                               $data->tab, $val->id, $val->tsin_id, $val->name, $mrp_price, $selling_price, $discount_price, $is_in_stock, $val->url, $val->image
  12596. -                                       );
  12597. -      
  12598.                                 }
  12599. -
  12600.                                 $prod .= $products;
  12601.                         } else {
  12602.                                 //error_data
  12603. @@ -650,7 +610,6 @@ class Dhtml {
  12604.          *
  12605.          */
  12606.         private function getStructure($output = false) {
  12607. -               $disclaimer = '';
  12608.                 $prod = '';
  12609.                 $tab = '';
  12610.                 $str = '
  12611. @@ -660,9 +619,6 @@ class Dhtml {
  12612.                 foreach($this->allProducts as $data) {
  12613.                         if(isset($data->type)) {                
  12614.                                 switch($data->type) {
  12615. -                                       case 'disclaimer':
  12616. -                                               $disclaimer = isset($data->title)?$data->title:$this->disclaimer;
  12617. -                                       break;
  12618.                                         case 'banner':
  12619.                                                 $str .= $this->createBannerHtml($data);
  12620.                                         break;
  12621. @@ -680,58 +636,26 @@ class Dhtml {
  12622.                 }
  12623.                 $str .= '<div id="jq-tabs" class="p0 tabs" '.$tabHideShow.'>'.$tab.'</div>';
  12624.                 $str .= '<div class="p0 tab-content jq-tab-content">'.$prod.'</div>';
  12625. -               $str .= '<div class="fs13">'.(!empty($disclaimer)?$disclaimer:$this->disclaimer).'</div>';
  12626. +               $str .= '<div class="fs13">'.$this->disclaimer.'</div>';
  12627.                 $str .= '<script type="text/javascript">'.file_get_contents('js/landing-page.js').'</script>';
  12628. -               $str .= $this->postData['javascript'];
  12629.  
  12630.                 $this->displayError();
  12631.                        
  12632.                 if($output === true) {
  12633. -                       $this->downloadCsv(false);
  12634.                         $_SESSION['page_content'] = $str;
  12635.                         echo $str;
  12636.                 }
  12637.  
  12638. -               $this->pageStructure = $str;  
  12639. -
  12640. -              
  12641. +               $this->pageStructure = $str;        
  12642.         } // End of function - getStructure
  12643.  
  12644. -       /*
  12645. -        * Function is used to download csv
  12646. -        *
  12647. -        */
  12648. -       public function downloadCsv($download = false) {
  12649. -               $filename = "session/landingpage.csv";
  12650. -
  12651. -               if(false === $download) {
  12652. -                       $handle = fopen($filename, 'w');
  12653. -                       foreach ($this->list as $val) {
  12654. -                               fputcsv($handle, $val);
  12655. -                       }
  12656. -                       fclose($handle);
  12657. -               } elseif(true === $download) {
  12658. -                       try {
  12659. -                               // output headers so that the file is downloaded rather than displayed
  12660. -                               header("Pragma: public");
  12661. -                               header("Expires: 0");
  12662. -                               header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  12663. -                               //header('Content-Type: text/x-csv; charset=utf-8');
  12664. -                               header('Content-Type: application/csv');
  12665. -                               header('Content-Disposition: attachment; filename="landingpage.csv"');
  12666. -                       readfile($filename);
  12667. -                       exit;
  12668. -                   } catch (Expression $e) {
  12669. -                   }
  12670. -           }
  12671. -       } // End of function - downloadCsv
  12672.  
  12673.  } //End of Class
  12674.  
  12675.  
  12676.  $obj = Dhtml::getInstance();
  12677.  
  12678. -$params = isset($_REQUEST['type'])?$_REQUEST['type']:'';
  12679. +$params = isset($_POST['type'])?$_POST['type']:'';
  12680.  
  12681.  $obj->postData = isset($_POST)?$_POST:'';
  12682.  
  12683. @@ -752,11 +676,6 @@ switch($params) {
  12684.                 exit;
  12685.         break;
  12686.  
  12687. -       case 'download_csv':
  12688. -               $obj->downloadCsv(true);
  12689. -               exit;
  12690. -       break;
  12691. -
  12692.         default:
  12693.                 $obj->updateCmsPage(false);
  12694.         break;
  12695. diff --git a/qlp/qlp.php b/qlp/qlp.php
  12696. index 76eb030..5aaca2d 100755
  12697. --- a/qlp/qlp.php
  12698. +++ b/qlp/qlp.php
  12699. @@ -12,30 +12,25 @@
  12700.    <h2>Custom Landing Page - Data Input</h2>
  12701.    <form id="frmclp" method="post" action="">
  12702.      <label for="identifier_txt">CMS Page Identifier</label>
  12703. -    <input name="identifier" placeholder='CMS Page Identifier' type='text' id="identifier_txt" class="txt_changed" />
  12704. -    <input type="button" id="btn_find" class="button txt_changed" value="Find!" />
  12705. +    <input name="identifier" placeholder='CMS Page Identifier' type='text' id="identifier_txt" />
  12706. +    <input type="button" id="btn_find" class="button" value="Find!" />
  12707.      <input name="type" type='hidden' value="" id="page_type" />
  12708.      <div style="width:100%;">
  12709.        <div class="lbl_txtarea">
  12710. -        <label for="jsondata_txt">Place your JSON Data here</label>
  12711. -        <textarea name="jsondata" placeholder='Place your JSON Data here' class="txt_changed" id="jsondata_txt"><?php echo file_get_contents('default.json'); ?></textarea>
  12712. +        <label for="jsondata_txt">Place you JSON Data here</label>
  12713. +        <textarea name="jsondata" placeholder='Place you JSON Data here' id="jsondata_txt"><?php echo file_get_contents('default.json'); ?></textarea>
  12714.        </div>
  12715.  
  12716.        <div class="lbl_txt">
  12717. -        <label for="css_txt">Place your CSS here</label>
  12718. -        <textarea name="css" placeholder='Place your CSS here' class="txt_changed" id="css_txt"><?php echo file_get_contents('css/custom.css'); ?></textarea>
  12719. +        <label for="css_txt">Place you CSS here</label>
  12720. +        <textarea name="css" placeholder='Place you CSS here' id="css_txt"><?php echo file_get_contents('css/custom.css'); ?></textarea>
  12721.        </div>
  12722.        <div class="clear"></div>
  12723. -
  12724. -      <div>
  12725. -        <label for="javascript_txt">Place your GTM javascript here</label>
  12726. -        <textarea name="javascript" placeholder='Place your GTM javascript here' class="txt_changed" id="javascript_txt" style="height:100px;"></textarea>
  12727. -      </div>
  12728. +      
  12729. +      
  12730.      </div>
  12731. -    <input type="button" id="btn_process" class="button" value="Preview" />
  12732. +    <input type="button" id="btn_submit" class="button" value="Preview" />
  12733.      <input type="button" id="btn_save" class="button" value="Save" />
  12734. -    <a href="process.php?type=download_csv" target="_blank" id="download_csv">Download CSV</a>
  12735. -    <div class="fs12"><input type="checkbox" name="remove_from_qlp" value="1" style="width:0;" id="is_deleted" /> <label for="is_deleted" class="lbl_is_deleted">Remove from QLP</label></div>
  12736.    </form>
  12737.  </div>
  12738.  
  12739. diff --git a/robots.txt b/robots.txt
  12740. index 18c17a2..1d3ac7a 100644
  12741. --- a/robots.txt
  12742. +++ b/robots.txt
  12743. @@ -134,16 +134,6 @@ Disallow: /sendfriend/
  12744.  Disallow: /tag/
  12745.  Disallow: /wishlist/
  12746.  Disallow: /catalog/product/gallery/
  12747. -Disallow: /recommendation/
  12748. -Disallow: /1*.html
  12749. -Disallow: /2*.html
  12750. -Disallow: /3*.html
  12751. -Disallow: /4*.html
  12752. -Disallow: /5*.html
  12753. -Disallow: /6*.html
  12754. -Disallow: /7*.html
  12755. -Disallow: /8*.html
  12756. -Disallow: /9*.html
  12757.  
  12758.  # Files
  12759.  Disallow: /cron.php
  12760. @@ -164,4 +154,4 @@ Disallow: /*?SID=
  12761.  
  12762.  
  12763.  
  12764. -#robots-r-us
  12765. +#robots-r-us
  12766. \ No newline at end of file
  12767. diff --git a/skin/frontend/base/default/js/tm/ajaxpro/catalog/product/compare.js b/skin/frontend/base/default/js/tm/ajaxpro/catalog/product/compare.js
  12768. index fa64828..3bc6a0a 100644
  12769. --- a/skin/frontend/base/default/js/tm/ajaxpro/catalog/product/compare.js
  12770. +++ b/skin/frontend/base/default/js/tm/ajaxpro/catalog/product/compare.js
  12771. @@ -228,21 +228,6 @@
  12772.          };
  12773.      };
  12774.  
  12775. -    /*
  12776. -    @author: Jasleen Kaur
  12777. -    @desc: To check whether device is mobile or not
  12778. -    */
  12779. -
  12780. -    var checkMobileDevice = function () {
  12781. -        var width = jQuery(window).width();
  12782. -        if (width <= 991) {
  12783. -            $mobileDevice = true;;
  12784. -        } else {
  12785. -            $mobileDevice = false;
  12786. -        }
  12787. -        return $mobileDevice;
  12788. -    }
  12789. -
  12790.      var imageOnLoad = function(action) { // assign data-src-onload value to src of image
  12791.  
  12792.          getDeviceWidth();
  12793. @@ -542,11 +527,5 @@
  12794.      });
  12795.  
  12796.      window.imageOnLoad = imageOnLoad; //assign 'imageOnLoad' function to a global variable 'imageOnLoad'.
  12797. -    /*
  12798. -    @author: Jasleen Kaur
  12799. -    @desc: set device is mobile or not
  12800. -    */
  12801. -    $mobileDevice = checkMobileDevice();
  12802. -    window.mobileDevice = $mobileDevice;
  12803.  
  12804.  }(window, document, jQuery));
  12805. diff --git a/skin/frontend/base/default/js/tm/ajaxpro/checkout/cart.js b/skin/frontend/base/default/js/tm/ajaxpro/checkout/cart.js
  12806. index 8d45fc9..b49d9a5 100644
  12807. --- a/skin/frontend/base/default/js/tm/ajaxpro/checkout/cart.js
  12808. +++ b/skin/frontend/base/default/js/tm/ajaxpro/checkout/cart.js
  12809. @@ -1,91 +1,5 @@
  12810. -/**
  12811. -@author: Bijomon Varghese
  12812. -@desc : Cart Popup Function
  12813. -**/
  12814. -//Cart PopUp Script Starts
  12815. -(function(window, document, $) {
  12816. -    function cartPop(action,showloader) {
  12817. -        /*var $height = $('.cart-popUp').outerHeight(),
  12818. -            $windowHeight = $(window).height() - 20;*/
  12819. -
  12820. -        if (action === 'reset') {
  12821. -            // Popup reset
  12822. -            /*var $contentAdded = $('.cart-popup-ui').height(),
  12823. -              var $scrollHeight = $('.cart-popup-scroll').height();
  12824. -          
  12825. -           $scrollHeight = $height - ($contentAdded - $scrollHeight);
  12826. -           $('.cart-popup-scroll').css('height', $scrollHeight);*/
  12827. -            var $windowWidth  = $(window).outerWidth(),
  12828. -                $windowHeight = $(window).outerHeight(),
  12829. -                $width        = $('.cart-popUp').outerWidth(),
  12830. -                $height       = $('.cart-popUp').outerHeight(),
  12831. -                topMargin     = ($windowHeight - $height) / 2,
  12832. -                leftMargin    = ($windowWidth - $width) / 2;
  12833. -
  12834. -            $('.cart-popUp').css({'top' : topMargin , 'left' : leftMargin});
  12835. -        }
  12836. -
  12837. -        if (action === 'show') {
  12838. -            
  12839. -            cartPop('reset',false);
  12840. -            
  12841. -            // Show popup.
  12842. -            /*if ($windowHeight > $height) {          
  12843. -
  12844. -                $height = $windowHeight;
  12845. -            };*/
  12846. -
  12847. -            //$('#cart-popup').html('<div class="page-title cart-empty-title"><h1>Shopping Cart</h1></div><span class="ajax-cart-loader"></span>');
  12848. -            if(showloader){
  12849. -                $('#cart-popup').html('<span class="ajax-cart-loader">Loading Your Shopping Cart</span>');
  12850. -            }
  12851. -            
  12852. -            $('.cart-popUp').css({
  12853. -                //'height': $height
  12854. -            }).show();
  12855. -
  12856. -            $('.cart-overlay').show();
  12857. -            $('.cart-popUp').addClass('cart-popUp-show');
  12858. -        }
  12859. -
  12860. -        if (action === 'hide') {
  12861. -            // Hide popup.
  12862. -            $('.cart-popUp').removeClass('cart-popUp-show');
  12863. -            $('.cart-overlay').delay(300).hide(0);
  12864. -
  12865. -        }
  12866. -    };
  12867. -
  12868. -    var keyDown; // on escape
  12869. -    window.onkeydown = function() {
  12870. -        keyDown = true;
  12871. -    };
  12872. -
  12873. -    window.onkeyup = function(e) {
  12874. -        if (e.keyCode === 27 && keyDown) {
  12875. -            cartPop('hide',false);
  12876. -            keyDown = false;
  12877. -        }
  12878. -    };
  12879. -
  12880. -    $(document).on('click', '.cart-popUp-close, .continue-btn, .cart-overlay', function() {
  12881. -        cartPop('hide',false);
  12882. -        jQuery('body, html').removeClass('scroll-hide');
  12883. -        jQuery('.cart-close-bg, .cart-popUp-close').hide();
  12884. -    });
  12885. -    $(document).on('keypress', '#coupon_code', function(e) {
  12886. -        if (e.keyCode === 13) {
  12887. -            $(this).next('div').find('button').click();
  12888. -            return false;
  12889. -        };
  12890. -    });
  12891. -
  12892. -    window.cartPop = cartPop;
  12893. -}(window, document, jQuery));
  12894. -//PopUp Script Ends
  12895. -
  12896.  document.observe("dom:loaded", function (){
  12897. -jQuery.noConflict();
  12898. +
  12899.      AjaxPro.observe('addObservers', function() {
  12900.  
  12901.          setLocation = setLocation.wrap(function(callOriginal, url) {
  12902. @@ -228,13 +142,14 @@ jQuery.noConflict();
  12903.                      var url = el.action;
  12904.  
  12905.                      if(url.search('checkout/cart/updatePost') != -1) {
  12906. -                     setLayerData('CartPage', 'Cart Page', 'Update Shopping Cart', 'Update Shopping Cart');
  12907. +                      setLayerData('CartPage', 'Cart Page', 'Update Shopping Cart', 'Update Shopping Cart');
  12908.                      }
  12909.  
  12910.                      AjaxPro.request({
  12911.                          'url'      : url,
  12912.                          parameters : params
  12913.                      });
  12914. +
  12915.                      return false;
  12916.                  });
  12917.              }
  12918. @@ -269,7 +184,7 @@ jQuery.noConflict();
  12919.                      // set data layer value for eCommerce remove product
  12920.                      var pid = element.getAttribute("data-pid");
  12921.                      delCartProductsOption(pid);
  12922. -                     setLayerData('CartPage', 'Cart Page', 'Remove from cart', 'Remove from cart');
  12923. +                    setLayerData('CartPage', 'Cart Page', 'Remove from cart', 'Remove from cart');
  12924.  
  12925.                      if (AjaxPro.config.get('checkoutCart/enabledDeleteConfirm')) {
  12926.                          if(!confirm(Translator.translate('Are you sure you would like to remove this item from the shopping cart?'))) {
  12927. @@ -394,456 +309,3 @@ jQuery.noConflict();
  12928.      });
  12929.  
  12930.  });
  12931. -
  12932. -/**
  12933. -@author: Jasleen Kaur
  12934. -@desc: Observer for handling js executed on ajax cart popup
  12935. -**/
  12936. -    AjaxPro.observe('addObserversCart', function() {
  12937. -        
  12938. -        var submit = function() {
  12939. -            var url = this.form.action;
  12940. -            var isUploadFile = false;//$(this.form).select('input[type=file]').length;
  12941. -            $(this.form).select('input[type=file]').each(function(el){
  12942. -                if ('' !== el.getValue()) {
  12943. -                    isUploadFile = true;
  12944. -                }
  12945. -            });
  12946. -            if (isUploadFile) {
  12947. -                if(this.validator && !this.validator.validate()){
  12948. -                   return false;
  12949. -                }
  12950. -                var template = '<iframe id="product_addtocart_form_frame" name="product_addtocart_form_frame" style="width:0; height:0; border:0;display:none;"><\/iframe>';
  12951. -                Element.insert($('product_addtocart_form'), {after: template});
  12952. -                this.form.setAttribute('target', 'product_addtocart_form_frame');
  12953. -                //add product
  12954. -                this.form.submit();
  12955. -
  12956. -                var interval = window.setInterval(function() {
  12957. -
  12958. -                    var iframe = $('product_addtocart_form_frame');
  12959. -                    if ('undefined' == typeof iframe) {
  12960. -                        window.clearInterval(interval);
  12961. -                        return;
  12962. -                    }
  12963. -
  12964. -                    var isAfterSubmit = false;
  12965. -                    try {
  12966. -
  12967. -                        if (iframe.contentDocument) {
  12968. -                             isAfterSubmit = iframe.contentDocument.body.innerHTML.length > 1 ? true : false;
  12969. -                        } else if (iframe.contentWindow) {
  12970. -                             isAfterSubmit = iframe.contentWindow.document.body.innerHTML.length > 1 ? true : false;
  12971. -                        } else if (iframe.document) {
  12972. -                             isAfterSubmit = iframe.document.body.innerHTML.length > 1 ? true : false;
  12973. -                        }
  12974. -
  12975. -                    } catch (exception) {
  12976. -                        console.log(exception);
  12977. -                    }
  12978. -
  12979. -                    if(!isAfterSubmit) {
  12980. -                        return;
  12981. -                    }
  12982. -                    AjaxPro.request({
  12983. -                        'url'      : url.replace('/product', ''),
  12984. -                        parameters : {'onlyblocks': 1}
  12985. -                    });
  12986. -                    Element.remove(iframe);
  12987. -                    window.clearInterval(interval);
  12988. -                }, 1000);
  12989. -                this.form.removeAttribute('target');
  12990. -                return false;
  12991. -            }
  12992. -            var params = this.form.serialize(true);
  12993. -            if(this.validator && this.validator.validate()){
  12994. -                AjaxPro.request({
  12995. -                    'url'      : url,
  12996. -                    parameters : params
  12997. -                });
  12998. -            }
  12999. -
  13000. -            return false;
  13001. -        };
  13002. -
  13003. -        if (typeof productAddToCartFormOld != 'undefined') {
  13004. -
  13005. -            productAddToCartForm.submit = submit.bind(productAddToCartFormOld);
  13006. -
  13007. -        } else if(typeof productAddToCartForm != 'undefined') {
  13008. -
  13009. -            productAddToCartForm.submit = submit;
  13010. -            //
  13011. -            if($('qty')){
  13012. -                $('qty').observe('keypress', function(e){
  13013. -                    if (13 === e.keyCode) {
  13014. -                        Event.stop(e);
  13015. -                        productAddToCartForm.submit();
  13016. -                    }
  13017. -                });
  13018. -            }
  13019. -        }
  13020. -
  13021. -//        redeclare submit form function on shopping cart page
  13022. -//        update action checkout/cart/updatePost
  13023. -        var shoppingCartTable = $('shopping-cart-table');
  13024. -        if (shoppingCartTable) {
  13025. -            var shoppingCartForm = shoppingCartTable.up('form');
  13026. -            if(typeof shoppingCartForm != 'undefined'){
  13027. -
  13028. -                //prototype  multiple submit bugfix
  13029. -                //http://www.developpez.net/forums/d577369/webmasters-developpement-web/javascript/bibliotheques-frameworks/prototype-script-aculo-us/prototype-serialize-multiple-submit/
  13030. -                shoppingCartForm.select(':submit').each(function(submitInput){
  13031. -                    submitInput._submitted = false;
  13032. -                    submitInput.onclick = function(){
  13033. -                        if (jQuery('.cart-overlay').is(':visible')) {
  13034. -                            var position = jQuery(submitInput).position();
  13035. -                            jQuery('.ajaxpro-spinner').eq(0).css({
  13036. -                                'top': position.top,
  13037. -                                'left': position.left
  13038. -                            }).show();
  13039. -                        };
  13040. -                        submitInput._submitted = true;
  13041. -                    }.bind(this);
  13042. -                }.bind(this));
  13043. -
  13044. -                shoppingCartForm.observe('submit', function(e) {
  13045. -                    var el = Event.element(e);
  13046. -                    el.stopObserving('submit');
  13047. -                    Event.stop(e);
  13048. -                    var params = el.serialize(true);
  13049. -
  13050. -                    shoppingCartForm.select(':submit').each(function(_el){
  13051. -                        if (_el._submitted === true){
  13052. -                            params[_el.name] = _el.value;
  13053. -                        }
  13054. -                        _el._submitted = false;
  13055. -                    }.bind(this));
  13056. -
  13057. -                    var url = el.action;
  13058. -
  13059. -                    if(url.search('checkout/cart/updatePost') != -1) {
  13060. -                      setLayerData('CartPage', 'Cart Page', 'Update Shopping Cart', 'Update Shopping Cart');
  13061. -                    }
  13062. -            params['ajaxCart'] = true;
  13063. -            setTimeout(function(){
  13064. -            jQuery.ajax({
  13065. -                url: url,
  13066. -                data: params,
  13067. -                timeout:30000,
  13068. -                async:true,
  13069. -                success: function(data) {
  13070. -                    jQuery('#cart-popup').html(data);
  13071. -                    jQuery('.cart-qty').html(jQuery("#cart-count").val());
  13072. -                    jQuery(".cart").removeClass("main-cart");
  13073. -                    AjaxPro.fire('addObserversCart');
  13074. -                    if (jQuery('.cart-overlay').is(':visible')) {
  13075. -                        cartPop('reset',false);
  13076. -                    };
  13077. -                },
  13078. -                error: function() {
  13079. -                    console.log("error");
  13080. -                    jQuery('#cart-popup').html("SOMETHING WENT WRONG!! PLEASE TRY AGAIN LATER");
  13081. -                    jQuery(".cart").removeClass("main-cart");
  13082. -                    if (jQuery('.cart-overlay').is(':visible')) {
  13083. -                        cartPop('reset',false);
  13084. -                    };
  13085. -                }
  13086. -            });
  13087. -                    return false;
  13088. -                });
  13089. -            },1000);
  13090. -            }
  13091. -        }
  13092. -
  13093. -        $$('a').each(function(element){
  13094. -            var url = element.getAttribute('href');
  13095. -
  13096. -            if (url == '#') {
  13097. -                var onclickHandler = element.getAttribute('onclick');
  13098. -                if (
  13099. -                    onclickHandler
  13100. -                    && typeof onclickHandler == 'string'
  13101. -                    && onclickHandler != ''
  13102. -                    && onclickHandler.search('setLocation') != -1
  13103. -                    && onclickHandler.search('checkout/cart/add') != -1
  13104. -                ) {
  13105. -
  13106. -                    element.stopObserving('click');
  13107. -                    element.observe('click', function(e) {
  13108. -                        Event.stop(e);
  13109. -                    });
  13110. -                }
  13111. -            }
  13112. -            if (url && url.search('checkout/cart/delete') != -1) {
  13113. -                element.stopObserving('click');
  13114. -                element.setAttribute('onclick', '');
  13115. -                element.observe('click', function(e) {
  13116. -                    if (jQuery('.cart-overlay').is(':visible')) {
  13117. -                        var position = jQuery(element).position();
  13118. -                        jQuery('.ajaxpro-spinner').eq(0).css({
  13119. -                            'top': position.top,
  13120. -                            'left': position.left
  13121. -                        }).show();
  13122. -                    };
  13123. -                    AjaxPro.fire('click:stop', e);
  13124. -                    Event.stop(e);
  13125. -                    // set data layer value for eCommerce remove product
  13126. -                    var pid = element.getAttribute("data-pid");
  13127. -                    
  13128. -                    setLayerData('CartPage', 'Cart Page', 'Remove from cart', 'Remove from cart');
  13129. -
  13130. -                    if (AjaxPro.config.get('checkoutCart/enabledDeleteConfirm')) {
  13131. -                        if(!confirm(Translator.translate('Are you sure you would like to remove this item from the shopping cart?'))) {
  13132. -                            jQuery('.ajaxpro-spinner').hide();
  13133. -                            return false;
  13134. -                        }
  13135. -                    }
  13136. -                    setTimeout(function(){
  13137. -                    jQuery.ajax({
  13138. -                        url: url,
  13139. -                        timeout:30000,
  13140. -                        async:true,
  13141. -                        success: function(data) {
  13142. -                            jQuery('#cart-popup').html(data);
  13143. -                            jQuery('.cart-qty').html(jQuery("#cart-count").val());
  13144. -                            jQuery(".cart").removeClass("main-cart");
  13145. -                            AjaxPro.fire('addObserversCart');
  13146. -                            cartPop('reset',false);
  13147. -                        },
  13148. -                        error: function() {
  13149. -                            console.log("error");
  13150. -                            jQuery('#cart-popup').html("SOMETHING WENT WRONG!! PLEASE TRY AGAIN LATER");
  13151. -                            jQuery(".cart").removeClass("main-cart");
  13152. -                            if (jQuery('.cart-overlay').is(':visible')) {
  13153. -                                cartPop('reset',false);
  13154. -                            };
  13155. -                        }
  13156. -                    });
  13157. -                    },1000);
  13158. -
  13159. -                    return false;
  13160. -                });
  13161. -                return false;
  13162. -            }
  13163. -        });
  13164. -        
  13165. -        var discountCartForm = $('discount-coupon-form');
  13166. -        if(discountCartForm){
  13167. -//            discountForm.oldSubmit = discountForm.submit;
  13168. -            discountForm.submit = function(isRemove){
  13169. -                var url = this.form.action;
  13170. -                if (isRemove) {
  13171. -                    $('coupon_code').removeClassName('required-entry');
  13172. -                    $('remove-coupone').value = "1";
  13173. -                   setLayerData('CartPage', 'Cart Page', 'Cancel Coupon', 'Coupon');
  13174. -                   if (jQuery('.cart-overlay').is(':visible')) {
  13175. -                            var position = jQuery('.rmv-cupn').offset();
  13176. -                            jQuery('.ajaxpro-spinner').eq(1).css({
  13177. -                                'top': position.top + 20,
  13178. -                                'left': position.left
  13179. -                            }).show();
  13180. -                        };
  13181. -                } else {
  13182. -                    $('coupon_code').addClassName('required-entry');
  13183. -                    $('remove-coupone').value = "0";
  13184. -                    setLayerData('CartPage', 'Cart Page', 'Apply Coupon', 'Coupon');
  13185. -                }
  13186. -                var params = this.form.serialize(true);
  13187. -                if(this.validator && this.validator.validate()){
  13188. -                    params['ajaxCart'] = true;
  13189. -                    if (jQuery('.cart-overlay').is(':visible') && !jQuery('.ajaxpro-spinner').is(':visible')) {
  13190. -                            var position = jQuery('.discount button.button').offset();
  13191. -                            jQuery('.ajaxpro-spinner').eq(1).css({
  13192. -                                'top': position.top,
  13193. -                                'left': position.left
  13194. -                            }).show();
  13195. -                        };
  13196. -                    setTimeout(function(){
  13197. -                    jQuery.ajax({
  13198. -                        url: url,
  13199. -                        data: params,
  13200. -                        timeout:30000,
  13201. -                        async:true,
  13202. -                        success: function(data) {
  13203. -                            jQuery('#cart-popup').html(data);                          
  13204. -                            jQuery('.cart-qty').html(jQuery("#cart-count").val());
  13205. -                            jQuery(".cart").removeClass("main-cart");
  13206. -                            AjaxPro.fire('addObserversCart');
  13207. -                            cartPop('reset',false);
  13208. -                            jQuery('.ajaxpro-spinner').hide();
  13209. -                        },
  13210. -                        error: function() {
  13211. -                            console.log("error");
  13212. -                            jQuery('#cart-popup').html("SOMETHING WENT WRONG!! PLEASE TRY AGAIN LATER");
  13213. -                            jQuery(".cart").removeClass("main-cart");
  13214. -                            if (jQuery('.cart-overlay').is(':visible')) {
  13215. -                                cartPop('reset',false);
  13216. -                            };
  13217. -                        }
  13218. -                    });
  13219. -                },1000);
  13220. -                    
  13221. -                }
  13222. -            }
  13223. -        }
  13224. -
  13225. -        var shippingZipForm = $('shipping-zip-form');
  13226. -        if(shippingZipForm){
  13227. -//            coShippingMethodForm.oldSubmit = coShippingMethodForm.submit;
  13228. -            coShippingMethodForm.submit = function(){
  13229. -                var country = $F('country');
  13230. -                var optionalZip = false;
  13231. -                for (i=0; i < countriesWithOptionalZip.length; i++) {
  13232. -                    if (countriesWithOptionalZip[i] == country) {
  13233. -                        optionalZip = true;
  13234. -                    }
  13235. -                }
  13236. -                if (optionalZip) {
  13237. -                    $('postcode').removeClassName('required-entry');
  13238. -                }
  13239. -                else {
  13240. -                    $('postcode').addClassName('required-entry');
  13241. -                }
  13242. -
  13243. -                var url = this.form.action, params = this.form.serialize(true);
  13244. -                if(this.validator && this.validator.validate()){
  13245. -                    AjaxPro.request({
  13246. -                        'url'      : url,
  13247. -                        parameters : params
  13248. -                    });
  13249. -                }
  13250. -            }
  13251. -        }
  13252. -
  13253. -        var elCoShippingMethodForm = $('co-shipping-method-form');
  13254. -        if(elCoShippingMethodForm){
  13255. -            //prototype  multiple submit bugfix
  13256. -            //http://www.developpez.net/forums/d577369/webmasters-developpement-web/javascript/bibliotheques-frameworks/prototype-script-aculo-us/prototype-serialize-multiple-submit/
  13257. -            elCoShippingMethodForm.select(':submit').each(function(submitInput){
  13258. -                submitInput._submitted = false;
  13259. -                submitInput.onclick = function(){
  13260. -                    submitInput._submitted = true;
  13261. -                }.bind(this);
  13262. -            }.bind(this));
  13263. -
  13264. -            elCoShippingMethodForm.observe('submit', function(e) {
  13265. -                var el = Event.element(e);
  13266. -                el.stopObserving('submit');
  13267. -                Event.stop(e);
  13268. -                var params = el.serialize(true);
  13269. -
  13270. -                elCoShippingMethodForm.select(':submit').each(function(_el){
  13271. -                    if (_el._submitted === true){
  13272. -                        params[_el.name] = _el.value;
  13273. -                    }
  13274. -                    _el._submitted = false;
  13275. -                }.bind(this));
  13276. -
  13277. -                var url = el.action;
  13278. -
  13279. -                AjaxPro.request({
  13280. -                    'url'      : url,
  13281. -                    parameters : params
  13282. -                });
  13283. -
  13284. -                return false;
  13285. -            });
  13286. -        }
  13287. -    });
  13288. -
  13289. -
  13290. -/**
  13291. -@author: Jasleen Kaur
  13292. -@desc : calling ajax on buy button click to add item in cart
  13293. -**/
  13294. -
  13295. -function ajaxCartAdd(ptsin,ptype,qtyId,itemUrl,btnobj){
  13296. -returnParam = buyProduct(ptsin,ptype,qtyId);
  13297. -if(returnParam){
  13298. -    jQuery(btnobj).next("span").css('display', 'block');
  13299. -    setTimeout(function(){
  13300. -        jQuery.ajax({
  13301. -          url: itemUrl,
  13302. -          data: {
  13303. -            'qty' : jQuery("#"+qtyId).val(),
  13304. -            'ajaxCart' : true,
  13305. -          },
  13306. -          timeout:30000,
  13307. -          async:true,
  13308. -           success: function(data) {
  13309. -            cartPop('show',false);
  13310. -            jQuery('body, html').addClass('scroll-hide');
  13311. -            jQuery('#cart-popup').html(data);
  13312. -            jQuery(btnobj).next("span").css('display', 'none');
  13313. -            jQuery('.btn-proceed-checkout').click(function() {
  13314. -                jQuery('.proceed-txt').hide();
  13315. -                jQuery('.checkout-loader').css('display', 'block');      
  13316. -            });
  13317. -            jQuery('.cart-close-bg, .cart-popUp-close').show();
  13318. -            jQuery('.cart-qty').html(jQuery("#cart-count").val());
  13319. -            jQuery(".cart").removeClass("main-cart");
  13320. -            AjaxPro.fire('addObserversCart');
  13321. -            cartPop('reset',false);
  13322. -          },
  13323. -          error: function() {
  13324. -            console.log("error");
  13325. -            cartPop('show',false);
  13326. -            jQuery('body, html').addClass('scroll-hide');
  13327. -            jQuery('#cart-popup').html("SOMETHING WENT WRONG!! PLEASE TRY AGAIN LATER");
  13328. -            jQuery(btnobj).next("span").css('display', 'none');
  13329. -            jQuery('.cart-close-bg, .cart-popUp-close').show();
  13330. -            jQuery(".cart").removeClass("main-cart");
  13331. -            cartPop('reset',false);
  13332. -          }
  13333. -        });
  13334. -    },1000);
  13335. -}
  13336. -}
  13337. -
  13338. -/**
  13339. -@author: Jasleen Kaur
  13340. -@desc : calling ajax on cart button click to view items in cart
  13341. -**/
  13342. -function viewCartItems(cartUrl) {
  13343. -    if(mobileDevice) {
  13344. -        jQuery("#bag-icon").attr('href',cartUrl);
  13345. -    } else {
  13346. -        cartPop('show',true);
  13347. -        jQuery('body, html').addClass('scroll-hide');
  13348. -        jQuery("#bag-icon").attr('href','#');
  13349. -        setTimeout(function(){
  13350. -        jQuery.ajax({
  13351. -            url: cartUrl,
  13352. -            data: {
  13353. -                'ajaxCart' : true,
  13354. -            },
  13355. -            timeout:30000,
  13356. -            async:true,  
  13357. -            success: function(data) {
  13358. -                jQuery('#cart-popup').html(data);
  13359. -                jQuery('.btn-proceed-checkout').click(function() {
  13360. -                    jQuery('.proceed-txt').hide();
  13361. -                    jQuery('.checkout-loader').css('display', 'block');      
  13362. -                });
  13363. -                jQuery('.cart-close-bg, .cart-popUp-close').show();
  13364. -                jQuery('.cart-qty').html(jQuery("#cart-count").val());
  13365. -                jQuery(".cart").removeClass("main-cart");
  13366. -                AjaxPro.fire('addObserversCart');    
  13367. -                cartPop('reset',false);
  13368. -            },
  13369. -            error: function() {
  13370. -                console.log("error");
  13371. -                jQuery('#cart-popup').html("SOMETHING WENT WRONG!! PLEASE TRY AGAIN LATER");
  13372. -                jQuery('.cart-close-bg, .cart-popUp-close').show();
  13373. -                jQuery(".cart").removeClass("main-cart");
  13374. -                cartPop('reset',false);
  13375. -            }
  13376. -        });
  13377. -    }, 1000);
  13378. -
  13379. -    }  
  13380. -    
  13381. -}
  13382. -
  13383. -
  13384. diff --git a/skin/frontend/smartwave/porto/css/local.css b/skin/frontend/smartwave/porto/css/local.css
  13385. index ff9883d..ef6fd0e 100644
  13386. --- a/skin/frontend/smartwave/porto/css/local.css
  13387. +++ b/skin/frontend/smartwave/porto/css/local.css
  13388. @@ -11,7 +11,7 @@ a:hover{color:#08c;text-decoration:underline}
  13389.  
  13390.  /* Sprite Images */
  13391.  .common-sprite {
  13392. -    background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png');
  13393. +    background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png');
  13394.      background-repeat: no-repeat;
  13395.  }
  13396.  
  13397. @@ -129,7 +129,7 @@ select.multiselect option:last-child{border-bottom:0}
  13398.  textarea{overflow:auto;padding:8px}
  13399.  input.radio{display:inline-block;margin:0 5px 0 0;vertical-align:middle}
  13400.  input.checkbox{margin-right:10px;display:inline-block}
  13401. -input.qty{display:inline-block;vertical-align:middle;height:38px;width:35px !important;font-size:14px;text-align:center;color:#08c;border-color:#e1e1e1}
  13402. +input.qty{margin-right:2px;display:inline-block;vertical-align:middle;height:38px;width:35px !important;font-size:14px;text-align:center;color:#08c;border-color:#e1e1e1}
  13403.  button.button::-moz-focus-inner{padding:0;border:0}
  13404.  
  13405.  button.button{-webkit-border-fit:lines}
  13406. @@ -280,15 +280,15 @@ p.required{font-size:11px;text-align:right;color:#EB340A}
  13407.  
  13408.  .messages,
  13409.  .messages ul{list-style:none;margin:0;padding:0}
  13410. -.messages{width:100%;overflow:hidden;}
  13411. -.messages li{margin:0 0 5px}
  13412. +.messages{width:100%;overflow:hidden;margin-bottom:15px}
  13413. +.messages li{margin:0 0 10px}
  13414.  .messages li li{margin:0 0 3px}
  13415.  .error-msg,
  13416.  .success-msg,
  13417.  .note-msg,
  13418. -.notice-msg{min-height:24px; font-size:14px;font-weight:400;margin-bottom:20px}
  13419. -.error-msg li{border:1px solid #ebccd1;background-color:#f2dede;color:#a94442}
  13420. -.success-msg li{border:1px solid #d6e9c6;background-color:#dff0d8;color:#3c763d}
  13421. +.notice-msg{border-style:solid;border-width:1px;min-height:24px;padding:15px;font-size:14px;font-weight:400;border-radius:4px;margin-bottom:20px}
  13422. +.error-msg{border-color:#ebccd1;background-color:#f2dede;color:#a94442}
  13423. +.success-msg{border-color:#d6e9c6;background-color:#dff0d8;color:#3c763d}
  13424.  .note-msg,
  13425.  .notice-msg{border-color:#faebcc;background-color:#fcf8e3;color:#8a6d3b}
  13426.  
  13427. @@ -386,7 +386,7 @@ p.required{font-size:11px;text-align:right;color:#EB340A}
  13428.  .data-table .qty-holder,.data-table .add-to-cart-alt{position:relative;text-align:left;margin-right:0}
  13429.  .data-table .add-to-cart-alt{margin:10px 0;width:93px}
  13430.  .data-table .edit-qty{margin-left:5px}
  13431. -.data-table input.qty{color:#000;height:30px;border-radius:0;border-color:#ccc;}
  13432. +.data-table input.qty{color:#777;height:30px;border-radius:0;border-color:#ccc;margin:0 -1px}
  13433.  .data-table .table_qty_inc,.data-table .table_qty_dec{display:inline-block;width:30px;height:30px;background:#f4f4f4;border:1px solid #ccc;color:#777;line-height:30px;border-radius:0;margin:0;font-size:14px;font-weight:bold;text-decoration:none;text-align:center;vertical-align:top}
  13434.  .data-table button.button > span{background:#fff;border:1px solid #ccc;color:#777;line-height:32px;padding:0 12px}
  13435.  .data-table button.button:hover > span{background:#08c;border:1px solid #08c;color:#fff}
  13436. @@ -495,7 +495,7 @@ tr.summary-details-excluded{font-style:italic}
  13437.  
  13438.  /* Header ================================================================================ */
  13439.  .header-container{background-color:#fff;border-top-width:4px;border-top-style:solid}
  13440. -.top-links-container{padding:5px 0;position:relative;z-index:99; background: #f0f0ed}
  13441. +.top-links-container{padding:5px 0;position:relative;z-index:200; background: #f0f0ed}
  13442.  .mobile-nav-shown .header-container{position: relative;z-index: 9999;}
  13443.  .header{position:relative;z-index:99;text-align:left}
  13444.  .header>.logo{ float:left;margin:30px 40px 30px 0;text-decoration:none !important;max-width:100%;display:inline-block;vertical-align:middle;max-width:170px;position:relative;z-index:2}
  13445. @@ -539,7 +539,7 @@ tr.summary-details-excluded{font-style:italic}
  13446.  .topCartContent{display:none;position:absolute;right:0;top:40px;width:300px;background-color:#fff;border-width:6px 0 0 0;border-style:solid;z-index:1;border-radius:8px 8px 5px 5px;color:#777;box-shadow:0 2px 8px rgba(0,0,0,0.5);margin-top:10px}
  13447.  .topCartContent:before{content:"";position:absolute;border:10px solid transparent;display:block;right:15px;top:-25px;border-bottom-color:#08c}
  13448.  .mini-cart .topCartContent:after{content:"";position:absolute;left:0;top:-30px;height:30px;width:100%;display:block}
  13449. -.mybag-link{line-height:1; cursor:pointer;display:inline-block;color:#fff;border-radius:5px;height:40px;text-transform:uppercase;text-align:center;max-width:120px}
  13450. +.mybag-link{line-height:1;display:inline-block;color:#fff;border-radius:5px;height:40px;text-transform:uppercase;text-align:center;max-width:120px}
  13451.  .mybag-link i{color:#fff;font-size:27px;display:inline-block;vertical-align:middle}
  13452.  .mybag-link:hover{color:#fff;text-decoration:none}
  13453.  .mybag-link .cart-info{display:inline-block;vertical-align:middle;text-align:left;padding:3px}
  13454. @@ -570,7 +570,7 @@ tr.summary-details-excluded{font-style:italic}
  13455.  .header-container .selectbox .dropdown{border-radius:3px}
  13456.  .header-container .selectbox .dropdown ul{background-color:#fff !important}
  13457.  .header-container .top-links-container span.split{float:left;display:block;height:14px;width:1px;border-right:1px solid #ccc;margin:6px 3px 6px 0}
  13458. -.header-container .main-nav ul.menu >li.menu-full-width >a,.header-container .main-nav ul.menu >li.menu-item-has-children >a,.header-container .main-nav ul.menu >li.menu-static-width >a{padding-right:27px}
  13459. +.header-container .main-nav ul.menu >li.menu-full-width >a,.header-container .main-nav ul.menu >li.menu-item-has-children >a,.header-container .main-nav ul.menu >li.menu-static-width >a{padding-right:30px}
  13460.  .custom-block .icon-group:first-child{margin:0}
  13461.  .icon-group{display:inline-block;vertical-align:middle;text-align:left;margin-left:30px}
  13462.  .icon-group i{font-size:20px;color:#fff;float:left;border-radius:50%;width:40px;height:40px;text-align:center;line-height:40px;background-color:#000}
  13463. @@ -855,7 +855,7 @@ tr.summary-details-excluded{font-style:italic}
  13464.  /********** <Navigation */
  13465.  .header-wrapper{}
  13466.  .main-nav{background-color:transparent;font-size:12px;border:0;padding:0;text-align:left}
  13467. -.main-nav .menu-wrapper{background-color:#f0f0ed;border-radius:5px 5px 0 0;position: relative; z-index: 70;}
  13468. +.main-nav .menu-wrapper{background-color:#f0f0ed;border-radius:5px 5px 0 0;position: relative;}
  13469.  .mega-columns.row{margin-right:-10px;margin-left:-10px}
  13470.  .menu_thumb_img{padding:15px 0 0}
  13471.  .fixed-header-area .menu >li{padding:0 !important}
  13472. @@ -886,7 +886,7 @@ tr.summary-details-excluded{font-style:italic}
  13473.  .fixed-header a:hover,.main-nav a:hover{color:#fff}
  13474.  .fixed-header .menu >li .nav-sublist-dropdown .container ul >li a,.main-nav .menu >li .nav-sublist-dropdown .container ul >li a{padding:6px 10px;border:none;line-height: 16px;color: #333;text-overflow: ellipsis;width:220px;overflow: hidden;white-space: nowrap;border-top: 1px solid transparent;border-bottom: 1px solid transparent;}
  13475.  .fixed-header .menu >li.view-all .nav-sublist-dropdown .container ul >li a,.main-nav .menu >li.view-all .nav-sublist-dropdown .container ul >li a{line-height: 1;margin: 0 8px;color:#777;}
  13476. -.fixed-header .menu >li .nav-sublist-dropdown .container ul >li a:before,.main-nav .menu >li .nav-sublist-dropdown .container ul >li a:before{background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png') -162px 0px no-repeat;display: inline-block;height: 9px;width: 7px;content: '';opacity: 0.7;margin-right: 1px;-ms-transform: rotate(7deg);-webkit-transform: rotate(7deg);transform: rotate(-90deg);}
  13477. +.fixed-header .menu >li .nav-sublist-dropdown .container ul >li a:before,.main-nav .menu >li .nav-sublist-dropdown .container ul >li a:before{background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png') -162px 0px no-repeat;display: inline-block;height: 9px;width: 7px;content: '';opacity: 0.7;margin-right: 1px;-ms-transform: rotate(7deg);-webkit-transform: rotate(7deg);transform: rotate(-90deg);}
  13478.  .fixed-header .menu >li.view-all .nav-sublist-dropdown .container ul >li a:before,.main-nav .menu >li.view-all .nav-sublist-dropdown .container ul >li a:before{display: none;}
  13479.  .fixed-header .menu >li.view-all .nav-sublist-dropdown .container ul ul >li a:hover,.main-nav .menu >li.view-all .nav-sublist-dropdown .container ul ul >li a:hover{color:#777;font-weight: normal;}
  13480.  .fixed-header .menu > li:nth-last-child(1) .nav-sublist-dropdown .container > ul .menu-item-has-children .nav-sublist, .fixed-header .menu > li:nth-last-child(2) .nav-sublist-dropdown .container > ul .menu-item-has-children .nav-sublist, .main-nav .menu > li:nth-last-child(1) .nav-sublist-dropdown .container > ul .menu-item-has-children .nav-sublist, .main-nav .menu > li:nth-last-child(2) .nav-sublist-dropdown .container > ul .menu-item-has-children .nav-sublist{right:100%}
  13481. @@ -1050,13 +1050,13 @@ tr.summary-details-excluded{font-style:italic}
  13482.  .block.block-layered-nav .block-content{background-color:transparent}
  13483.  .block.block-layered-nav .block-content ol{margin:0}
  13484.  dl#narrow-by-list{margin:0}
  13485. -.block-layered-nav dt,.block-layered-nav .currently .block-subtitle,.block-category-nav .block-title{padding:8px 37px 6px 10px; font-size:13px;font-weight:bold;text-transform:uppercase;border:1px solid #ddd;background-color:#f5f5f5;color:#777;position:relative;cursor:pointer;border-radius:7px 7px 0 0;margin-top:7px}
  13486. +.block-layered-nav dt,.block-layered-nav .currently .block-subtitle,.block-category-nav .block-title{padding:10px 15px;font-size:13px;font-weight:bold;text-transform:uppercase;border:1px solid #ddd;background-color:#f5f5f5;color:#777;position:relative;cursor:pointer;border-radius:7px 7px 0 0;margin-top:14px}
  13487.  .catalog-category-view .block-category-nav .block-title{margin-top:0;margin-bottom:0}
  13488.  .block-layered-nav dt.closed,.block-category-nav .block-title.closed{border-radius:7px}
  13489.  .block-layered-nav dt:before,.block-category-nav .block-title:before{content:"\e80d";width:26px;height:26px;display:block;border:1px solid #ccc;position:absolute;right:15px;top:50%;margin-top:-13px;border-radius:3px;color:#ccc;text-align:center;line-height:24px;background-color:#fff;font-size:10px}
  13490.  .block-layered-nav dt.closed:before,.block-category-nav .block-title.closed:before{content:"\e80b"}
  13491. -.block-layered-nav dt:hover:before,.block-category-nav .block-title:hover:before{background-color:#08c;color:#fff;border-color: #56006b;}
  13492. -.block-layered-nav dd,.block-category-nav .block-content{padding:10px 15px 10px 10px;font-size:13px;border:1px solid #ddd;border-top:0;border-radius:0 0 7px 7px;background-color:#fbfbfb}
  13493. +.block-layered-nav dt:hover:before,.block-category-nav .block-title:hover:before{background-color:#08c;color:#fff}
  13494. +.block-layered-nav dd,.block-category-nav .block-content{padding:10px 15px;font-size:13px;border:1px solid #ddd;border-top:0;border-radius:0 0 7px 7px;background-color:#fbfbfb}
  13495.  .block-layered-nav dd a{color:#777;font-size:13px;line-height:2.5}
  13496.  .block-layered-nav .currently ol{border:1px solid #ddd;border-width:0 1px;background-color:#fbfbfb;padding:10px 0;margin:0}
  13497.  .block-layered-nav .currently li{padding:5px 15px;position:relative;z-index:1;line-height:1.5}
  13498. @@ -1079,9 +1079,9 @@ dl#narrow-by-list{margin:0}
  13499.  .block-category-nav{border-radius:7px;border-color:#ddd;overflow:hidden;margin-bottom:28px;line-height:1.42857143}
  13500.  .block-category-nav .block-title{cursor:pointer;margin:0}
  13501.  .block-category-nav .block-title strong{padding:0}
  13502. -.block-category-nav .block-content{padding:10px 15px 10px 10px;}
  13503. +.block-category-nav .block-content{padding:10px 15px}
  13504.  .block-category-nav .category-list{list-style:none;padding:0;margin:0}
  13505. -.block-category-nav .category-list li{position:relative; margin-bottom: 5px;}
  13506. +.block-category-nav .category-list li{position:relative; margin-bottom: 11px;}
  13507.  .block-category-nav .category-list a{color:#777;font-size:13px;line-height:1.5;display: inline-block;padding-right: 30px;}
  13508.  .block-category-nav .category-list ul{padding-left:15px;margin:0;list-style:none}
  13509.  .block-category-nav .category-list ul{display:none}
  13510. @@ -1584,7 +1584,7 @@ li.etalage_small_thumbs{margin-top:8px;top:100%}
  13511.  .send-friend .form-list li.wide textarea{width:609px}
  13512.  .send-friend .buttons-set .limit{float:right;margin:0 7px 0 0;font-size:11px;line-height:21px}
  13513.  /* Content Styles ================================================================= */
  13514. -.product-name{margin:10px 0;font-size:1em;font-weight:normal}
  13515. +.product-name{margin:10px 0;font-size:1em;font-weight:normal;}
  13516.  .product-name a{color:#777}
  13517.  .product-name a:hover{text-decoration:none}
  13518.  
  13519. @@ -1620,7 +1620,8 @@ li.etalage_small_thumbs{margin-top:8px;top:100%}
  13520.  .rss-title h1{background:url(//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/i_rss-big.png) 0 4px no-repeat;padding-left:27px}
  13521.  .rss-table .link-rss{display:block;line-height:1.55;background-position:0 4px}
  13522.  /* Shopping Cart ========================================================================= */
  13523. -.cart .page-title{border-bottom:0;}
  13524. +.cart .page-title{border-bottom:0;margin:0 0 12px}
  13525. +.cart .page-title h1{margin:0 0 20px}
  13526.  
  13527.  /* Checkout Types */
  13528.  .cart .page-title .checkout-types li{margin:0 0 5px}
  13529. @@ -1646,7 +1647,7 @@ li.etalage_small_thumbs{margin-top:8px;top:100%}
  13530.  .cart-table .product-name{margin:0}
  13531.  .cart-table .cart-price{}
  13532.  .cart-table td.td-total .cart-price{color:#08c}
  13533. -.cart-table .item-msg{margin:5px 0;font-size:11px;font-weight:normal;display: block;clear: both;color:#df280a}
  13534. +.cart-table .item-msg{margin:5px 0;font-size:11px;font-weight:bold;color:#df280a}
  13535.  .cart-table tfoot td{padding:15px 5px 0}
  13536.  .cart-table .btn-continue{float:left}
  13537.  .cart-table .btn-empty span,
  13538. @@ -1692,11 +1693,11 @@ li.etalage_small_thumbs{margin-top:8px;top:100%}
  13539.  .cart .discount .form-list label,.cart .shipping .form-list label{}
  13540.  .cart .discount button span,
  13541.  .cart .shipping button span{}
  13542. -.cart .discount button > span {background-color: #e2e2e2 !important;color: #666; border: 1px solid #ccc !important; border-left: none !important;}
  13543. +.cart .discount button > span {background-color: #e2e2e2 !important;color: #666; border: 1px solid #ccc !important;}
  13544.  .cart .discount .buttons-set,
  13545.  .cart .shipping .buttons-set{margin:10px 0 0;border:0;padding:0;text-align:left}
  13546.  .cart .discount .buttons-set button.button,
  13547. -.cart .shipping .buttons-set button.button{float:right;margin-left:0;}
  13548. +.cart .shipping .buttons-set button.button{float:none;margin-left:0;width:100%}
  13549.  .cart .discount .buttons-set button.button + button {margin-top: 10px;}
  13550.  
  13551.  .cart .discount h2{}
  13552. @@ -2631,24 +2632,8 @@ h2.sidebar-title{margin-bottom:20px;font-size:16px;font-weight:bold;text-transfo
  13553.  .slide .product .add_to_cart_button{display:inline-block;margin:15px 0}
  13554.  div.filter-title,h2.filter-title{background:url(http://d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/slider-bar-v1.png) right no-repeat;font-size:16px;font-weight:300;line-height:42px;margin:0;color:#313131;text-transform:uppercase;text-align:left}
  13555.  div.filter-title .content,h2.filter-title .content{background-color:#fff;padding-right:20px;display:inline}
  13556. -p.filter-title {
  13557. -    background:url(http://d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/slider-bar-v1.png) right no-repeat;
  13558. -    font-size:1.7em;
  13559. -    font-weight:400;
  13560. -    line-height:24px;
  13561. -    margin:0 0 32px 0;
  13562. -    color:#08c;
  13563. -}
  13564. -h3.filter-title {
  13565. -    background:url(http://d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/slider-bar-v1.png) right no-repeat;
  13566. -    font-size:16px;
  13567. -    font-weight:300;
  13568. -    line-height:42px;
  13569. -    margin:0;
  13570. -    color:#313131 !important;
  13571. -    text-transform:uppercase;
  13572. -    text-align:left;
  13573. -}
  13574. +p.filter-title{background:url(http://d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/slider-bar-v1.png) right no-repeat;font-size:1.7em;font-weight:400;line-height:24px;margin:0 0 32px 0;color:#08c}
  13575. +h3.filter-title{background:url(http://d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/slider-bar-v1.png) right no-repeat;font-size:16px;font-weight:300;line-height:42px;margin:0;color:#313131 !important;text-transform:uppercase;text-align:left}
  13576.  p.filter-title .content,h3.filter-title .content{background-color:#fff;padding-right:20px}
  13577.  
  13578.  .filterproducts-tab .filter-title ul{list-style:none;padding:0;padding-right:20px}
  13579. @@ -3063,7 +3048,7 @@ div.mobile-nav .sw-mobile-menu li>a span.cat-label,.menu.side-menu li>a span.cat
  13580.  i.ajax-loader{display:inline-block;vertical-align:middle;border:1px solid #08c;border-radius:20px;border-bottom-color:transparent!important}
  13581.  i.ajax-loader.small{width:16px;height:16px;border-width:2px 3px 1px 0}
  13582.  i.ajax-loader.large{width:32px;height:32px;border-width:3px 5px 2px 0}
  13583. -#fullajax_loader i.    {position:absolute;left:50%;top:50%;margin-left:-16px;margin-top:-16px}
  13584. +#fullajax_loader i.ajax-loader{position:absolute;left:50%;top:50%;margin-left:-16px;margin-top:-16px}
  13585.  .add-to-cart #ajax_loader{margin:0 10px}
  13586.  .fixed-header .cart-area{right:0}
  13587.  
  13588. @@ -3369,7 +3354,6 @@ iframe[name='google_conversion_frame'] {
  13589.         text-align: left;
  13590.         width: 130px;
  13591.         margin: -3px 0 0 0;
  13592. -       position: relative;
  13593.  }
  13594.  .product-optns-content input[type=button] {
  13595.         border: 0;
  13596. @@ -3613,20 +3597,21 @@ script + img, script + iframe {
  13597.  button.button.btn-cart {
  13598.      vertical-align: top;
  13599.  }
  13600. -
  13601.  span.btn-loader {
  13602. -    background: none repeat #56006b;
  13603. +    width: 48px;
  13604. +    height: 27px;
  13605. +    background: #56006b;
  13606.      border-radius: 5px;
  13607. -    cursor: default;
  13608.      display: none;
  13609. -    height: 27px;
  13610. -    line-height: 23px;
  13611. +    cursor: default;
  13612.      text-align: center;
  13613. +    line-height: 23px;
  13614.      vertical-align: top;
  13615. -    width: 48px;
  13616. -    position: absolute;
  13617. -    top: 0;
  13618. -   }
  13619. +}
  13620. +span.btn-loader img {
  13621. +    width: 16px;
  13622. +    height: 16px;
  13623. +}
  13624.  .main-heading h1{
  13625.      font-size: 16px;
  13626.      color: #333;
  13627. @@ -3641,8 +3626,8 @@ span.btn-loader {
  13628.      margin-bottom: 10px;
  13629.  }
  13630.  .more-btn{
  13631. -    margin-top: 25px;
  13632. -    line-height: 1.5;
  13633. +    margin-bottom: 20px;
  13634. +    text-align: justify;
  13635.  }
  13636.  .more-btn span{
  13637.      line-height: 20px;
  13638. @@ -4039,7 +4024,7 @@ ul.product-cont li{
  13639.      width: 12%;
  13640.      float: left;
  13641.      text-align: center;
  13642. -    padding: 5px 0;
  13643. +    padding: 5px 0;ghjhk
  13644.  }
  13645.  ul.product-cont li:first-child{
  13646.      width: 25%;
  13647. @@ -4079,7 +4064,7 @@ ul.product-cont li p{
  13648.  }
  13649.  .product-sec{
  13650.      float: left;
  13651. -    width: 100%;
  13652. +    width: 100%;ghjhk
  13653.  }
  13654.  .grnad-totl-sec{
  13655.      width: 100%;
  13656. @@ -4162,32 +4147,6 @@ ul.grnad-totl li span{
  13657.      padding:4px 0;
  13658.      margin:0;
  13659.  }
  13660. -/*tolexo information in bottom container css*/
  13661. -.bottom-container-info {
  13662. -       border: 1px solid #d8d8d8;
  13663. -       text-align: justify;
  13664. -       padding: 10px;
  13665. -       margin: 0 0 25px;
  13666. -       height: 150px;
  13667. -    overflow: auto;
  13668. -}
  13669. -.bottom-container-info h1.bottom-info-h1 {
  13670. -       color:#777;
  13671. -       margin-bottom: 8px;
  13672. -       font-size: 18px;
  13673. -}
  13674. -.bottom-container-info .common-bottom-container-info{
  13675. -       margin-bottom: 15px;
  13676. -       line-height: 1.3;
  13677. -}
  13678. -.bottom-container-info h2.bottom-info-h2 {
  13679. -       color:#777;
  13680. -       margin-bottom: 5px;
  13681. -       font-size: 16px;
  13682. -}
  13683. -.bottom-container-info a {
  13684. -       color: #777 !important;
  13685. -}
  13686.  
  13687.  /*Responsive css*/
  13688.  @media (max-width: 980px) {
  13689. @@ -4638,583 +4597,88 @@ html, body{
  13690.  
  13691.    }
  13692.  
  13693. -/* Cart popup css */
  13694. -.cart-popUp {
  13695. -    background: #fff;
  13696. -    position: relative ;
  13697. -    min-height: 475px;
  13698. -}
  13699. -.cart-popUp .page-title h1 {
  13700. -       color: #fff;
  13701. -       text-align: left;
  13702. -       font-size: 16px;
  13703. -       font-weight: 100;
  13704. -       margin: 0;
  13705. -       padding: 10px;
  13706. -       text-transform: uppercase;
  13707. -       width: 100%;
  13708. -       position: relative;
  13709. -       background: #7c5685;
  13710. -}
  13711. -.cart-popup-ui .page-title span {
  13712. -       font-size: 12px;
  13713. -       text-transform: lowercase;
  13714. -       margin: 0 5px;
  13715. -       font-weight: 600;
  13716. -}
  13717. -.cart-popup-ui .cart-table-wrap {
  13718. -       border-radius: 0px;
  13719. -       padding: 0;
  13720. -       box-shadow: none;
  13721. -       border: none;
  13722. -       margin: 0;
  13723. -       float: left;
  13724. -       width: 100%;
  13725. -}
  13726. -.cart-popup-ui .discount {
  13727. -       width: 48% ;
  13728. -       float: left;
  13729. -       text-align: left;
  13730. -       margin-left: 15px !important;
  13731. -}
  13732. -.cart-popup-ui .discount h2 {
  13733. -       border: 1px dashed #d7cbdb;
  13734. -       border-radius: 0;
  13735. -}
  13736. -.cart-popup-ui .totals {
  13737. -       width: 48%;
  13738. -       float: right;
  13739. -}
  13740. -.cart-popup-ui .data-table thead th,
  13741. -.main-cart .data-table thead th {
  13742. -       text-transform: uppercase;
  13743. -       font-weight: normal;
  13744. -       font-size: 12px;
  13745. -       color: #737373;
  13746. -       padding: 15px 10px 10px 10px;
  13747. -}
  13748. -.main-cart .data-table thead th {
  13749. -       font-weight: 600;
  13750. -       padding: 13px 10px;
  13751. -}
  13752. -.cart-popup-ui .totals .price, .main-cart .totals .price {
  13753. -       color: #404040;
  13754. -       text-align: right;
  13755. -}
  13756. -.cart-popup-ui .totals td {
  13757. -       color: #7f7f7f;
  13758. -       font-size: 14px;
  13759. -       padding: 5px 15px;
  13760. -       text-align: right !important;
  13761. -}
  13762. -.main-cart .totals td {
  13763. -       padding: 8px 10px;
  13764. -}
  13765. -.cart-popup-ui .totals tfoot td strong,
  13766. -.main-cart .totals tfoot td strong {
  13767. -       font-weight: bold;
  13768. -}
  13769. -.cart-popup-ui .totals tr {
  13770. -       border-bottom: none;
  13771. -}
  13772. -.cart-popup-ui  .wid20, .main-cart .wid20 {
  13773. -       width: 20%;
  13774. -}
  13775. -/*.cart-popup-ui  .frst-wd, .main-cart .frst-wd {
  13776. -       width:120px;
  13777. -}*/
  13778. -.cart-popup-ui  .wid15 {
  13779. -       width: 15%;
  13780. -}
  13781. -.cart-popup-ui .wid35, .main-cart .wid35 {
  13782. -       width: 35%;
  13783. -}
  13784. -.cart-popup-ui .data-table td.product-name-td,
  13785. -.main-cart .data-table td.product-name-td {
  13786. -       text-align: left;
  13787. -       color: #616161 !important;
  13788. -}
  13789. -.cart-popup-ui .data-table td.product-name-td a,
  13790. -.main-cart .data-table td.product-name-td a {
  13791. -       color: #000;
  13792. -       font-size: 13px;
  13793. -       display: block;
  13794. -       line-height: 18px;
  13795. -       margin-left: -2px;
  13796. -}
  13797. -.cart-popup-ui .data-table td.product-name-td a:hover,
  13798. -.main-cart .data-table td.product-name-td a:hover {
  13799. -       color: #56006b;
  13800. -}
  13801. -.cart-popup-ui .product-image img,
  13802. -.main-cart .product-image img {
  13803. -       max-width: 48px;
  13804. -       width: auto;
  13805. -}
  13806. -.main-cart .data-table thead tr:nth-child(odd) {
  13807. -       background:#f7f7f7;
  13808. -       border-radius: 5px 5px 0 0;
  13809. -}
  13810. -.cart-popup-ui .data-table tr th {
  13811. -       background: #fff !important;
  13812. -}
  13813. -.cart-popup-ui .data-table tr:nth-child(odd),
  13814. -.main-cart .data-table tr:nth-child(odd) {
  13815. -       background: #fcfcfc
  13816. -}
  13817. -.cart-popup-ui .data-table tr:nth-child(even),
  13818. -.main-cart .data-table tr:nth-child(even) {
  13819. -       background: #fff
  13820. -}
  13821. -
  13822. -/*.cart-popup-ui .dark-gry-bg, .main-cart .dark-gry-bg{
  13823. -background:#f7f7f7
  13824. -}*/
  13825. -.cart-popup-ui .data-table button.button,
  13826. -.main-cart .data-table button.button {
  13827. -       float: none;
  13828. -       display: block;
  13829. -       margin: 0;
  13830. -}
  13831. -.cart-popup-ui .data-table button.button > span,
  13832. -.main-cart .data-table button.button > span {
  13833. -       float: none;
  13834. -       display: block;
  13835. -       background: none;
  13836. -       border: none;
  13837. -       color: #1865b4;
  13838. -       text-decoration: none;
  13839. -       text-transform: uppercase;
  13840. -       margin: 0 7px;
  13841. -       padding: 0;
  13842. -       font-size: 10px;
  13843. -       line-height: 18px;
  13844. -}
  13845. -.cart-popup-ui .data-table button.button > span span,
  13846. -.main-cart .data-table button.button > span span {
  13847. -       font-size: 10px;
  13848. -}
  13849. -.cart-popup-ui .data-table button.button:hover span,
  13850. -.main-cart .data-table button.button:hover span {
  13851. -       background: none;
  13852. -       color: #1865b4;
  13853. -       text-decoration: underline;
  13854. -}
  13855. -.cart-popup-ui a.cart-remove, .main-cart a.cart-remove {
  13856. -       text-decoration: none;
  13857. -       text-transform: uppercase;
  13858. -       font-size: 10px;
  13859. -       color: #1865b4;
  13860. -}
  13861. -.cart-popup-ui a.cart-remove:hover,
  13862. -.main-cart a.cart-remove:hover {
  13863. -       text-decoration: underline;
  13864. -}
  13865. -.cart-popup-ui .dark-gry-bg span,
  13866. -.main-cart .dark-gry-bg span{
  13867. -       color: #000;
  13868. -       font-size: 13px;
  13869. -}
  13870. -.cart-popup-ui .data-table .td-total span,
  13871. -.main-cart .data-table .td-total span {
  13872. -       font-size: 13px;
  13873. -       color: #000;
  13874. -       font-weight: bold;
  13875. -}
  13876. -.cart-popup-ui .data-table tbody th, .data-table tbody td,
  13877. -.main-cart .data-table tbody th, .data-table tbody td {
  13878. -       border-bottom: 1px solid #ececec;
  13879. -}
  13880. -.cart-popup-ui .cart-collaterals {
  13881. -       position: relative;
  13882. -       padding-bottom: 50px;
  13883. -       border-top: 2px solid #9b8a9f;
  13884. -       margin: 0 0 15px 0;
  13885. -       padding: 20px 0 50px 0;
  13886. -}
  13887. -.cart-popup-ui .cart-collaterals .checkout-continue-btn {
  13888. -       position: absolute;
  13889. -       bottom: 0;
  13890. -       left: 0;
  13891. -}
  13892. -.cart-popup-ui .cart-collaterals,
  13893. -.main-cart .cart-collaterals {
  13894. -       float: left;
  13895. -       width: 100%;
  13896. -       margin: 0;
  13897. -}
  13898. -.cart-popup-ui .cart-collaterals .input-box,
  13899. -.main-cart .cart-collaterals .input-box {
  13900. -       width: 100%;
  13901. -       position: relative;
  13902. -}
  13903. -.cart-popup-ui .cart-collaterals .input-box input.input-text,
  13904. -.main-cart .cart-collaterals .input-box input.input-text {
  13905. -       border: 1px solid #d7cbdb;
  13906. -       border-radius: 0;
  13907. -       padding: 6px 5px 5px 30px;
  13908. -       height: 32px;
  13909. -       position: relative;
  13910. -       color: #737373;
  13911. -       text-transform: uppercase;
  13912. -       float: left;
  13913. -       width: 76%;
  13914. -       float: left;
  13915. -}
  13916. -.main-cart .cart-collaterals .input-box input.input-text {
  13917. -       width: 75%;
  13918. -       float: left;
  13919. -}
  13920. -.cart-popup-ui .discount button,
  13921. -.main-cart .discount button {
  13922. -       margin:0 !important;
  13923. -       float: left;
  13924. -}
  13925. -.cart-popup-ui .discount button > span,
  13926. -.main-cart .discount button > span {
  13927. -       height: 0;
  13928. -       line-height: 0;
  13929. -       padding: 15px 17px;
  13930. -       color: #666;
  13931. -       background: #e2e2e2;
  13932. -       border:1px solid #ccc;
  13933. -       border-radius: 0;
  13934. -       border-left: none;
  13935. -}
  13936.  .filterOpen,.filter-header{
  13937.    display: none;
  13938.  }
  13939. -.cart-popup-ui .discount button.rmv-cupn > span,
  13940. -.main-cart .discount button.rmv-cupn > span {
  13941. -       background: none !important;
  13942. -       border: none !important;
  13943. -       padding: 15px 0 8px 0;
  13944. -       color: #1865b4;
  13945. -       line-height: 1;
  13946. -       height: auto;
  13947. -}
  13948. -.cart-popup-ui .discount button.rmv-cupn > span > span,
  13949. -.main-cart .discount button.rmv-cupn > span > span {
  13950. -       text-align: left;
  13951. -       white-space: normal;
  13952. -}
  13953. -.cart-popup-ui .close-check,
  13954. -.main-cart .close-check {
  13955. -       display: none;
  13956. -}
  13957. -.main-cart .discount button > span {
  13958. -       padding: 15px 17px 15px 16px;
  13959. -}
  13960. -.cart-popup-ui .messages {
  13961. -       margin: 8px auto 0;
  13962. -    width: 97%;
  13963. -       clear: both;
  13964. -}
  13965. -.cart-popup-ui .error-msg li,
  13966. -.main-cart .error-msg li,
  13967. -.cart-popup-ui .success-msg li,
  13968. -.main-cart .success-msg li {
  13969. -       border-radius: 0;
  13970. -       margin: 0;
  13971. -       text-align: left;
  13972. -       line-height: 18px;
  13973. -       padding:5px 8px;               
  13974. -       font-size: 12px;
  13975. -       margin:0 0 5px 0 !important;
  13976. -}
  13977. -.cart-popup-ui .discount .buttons-set,
  13978. -.main-cart .discount .buttons-set {
  13979. -       width: 17%;
  13980. -       float: left;
  13981. -       clear: none;
  13982. -       margin: 0 !important;
  13983. -}
  13984. -.main-cart .discount .buttons-set {
  13985. -       width: 25%;
  13986. -}
  13987. -.cart-popup-ui .discount .buttons-set button.button {
  13988. -       float: none;
  13989. -}
  13990. -.cart-popup-ui .validation-advice,
  13991. -.main-cart .validation-advice {
  13992. -       display: none !important;
  13993. -       width: 100%;
  13994. -}
  13995. -.cart-popup-ui .validation-failed,
  13996. -.main-cart .validation-failed {
  13997. -       border: 1px solid #f00 !important;
  13998. -}
  13999. -.cart-popup-ui .login-msg,
  14000. -.main-cart .login-msg {
  14001. -       display: inline-block;
  14002. -       font-size: 11px;
  14003. -       color: #737373;
  14004. -       margin: 10px 0 0 0;
  14005. -}
  14006. -.cart-popup-ui .login-msg a,
  14007. -.main-cart .login-msg a {
  14008. -       color: #1865b4;
  14009. -       text-decoration: none;
  14010. -}
  14011. -.cart-popup-ui .login-msg a:hover,
  14012. -.main-cart .login-msg a:hover {
  14013. -       color: #1865b4;
  14014. -       text-decoration: underline;
  14015. -}
  14016. -.cart-popup-ui .input-box,
  14017. -.main-cart .input-box {
  14018. -       position: relative;
  14019. -}
  14020. -.cart-popup-ui .rmv-cupn,
  14021. -.main-cart .rmv-cupn
  14022. -{
  14023. -       display: block; width: 100%; margin: 10px 0;
  14024. -}
  14025. -.cart-popup-ui .rmv-cupn a:hover,
  14026. -.main-cart .rmv-cupn a:hover {
  14027. -       text-decoration: none;
  14028. -}
  14029. -.cart-popup-ui .validation-advice,
  14030. -.main-cart .validation-advice {
  14031. -       position: relative;
  14032. -}
  14033. -.cart-popup-ui .input-box span.feature-icn,
  14034. -.main-cart .input-box span.feature-icn {
  14035. -       width: 25px;
  14036. -       height: 25px;
  14037. -       background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png') -73px -176px;
  14038. -       position: absolute;
  14039. -       display: inline-block;
  14040. -       z-index:50;
  14041. -       left: 4px;
  14042. -}
  14043. -.main-cart .input-box input {
  14044. -       font-size: 12px;
  14045. -}
  14046. -.main-cart .continue-btn span span {
  14047. -       font-size: 16px;
  14048. -}
  14049. -.cart-popup-ui .continue-btn {
  14050. -       width: 50%;
  14051. -       float: left;
  14052. -}
  14053. -.cart-popup-ui .continue-btn span {
  14054. -       background: #ededed none repeat scroll 0 0;
  14055. -       border-radius: 0;
  14056. -       color: #737373;
  14057. -       font-size: 18px;
  14058. -       font-weight: 100;
  14059. -       text-transform: uppercase;
  14060. -       position: relative;
  14061. -       padding: 3px 0;
  14062. -}
  14063. -.cart-popup-ui .continue-btn span span:before {
  14064. -       background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png') 0px -250px no-repeat;
  14065. -       content: '';
  14066. -       position: absolute;
  14067. -       width: 20px;
  14068. -       height: 35px;
  14069. -       left: 60px;
  14070. -       transform:scale(0.6);
  14071. -       -webkit-transform:scale(0.6);
  14072. -       -ms-transform:scale(0.6);
  14073. -       -moz-transform:scale(0.6);
  14074. -}
  14075. -.cart-popup-ui .cart-empty .continue-btn {
  14076. -       float: none;
  14077. -       text-align: center;
  14078. -       margin: 30px 0 40px 0;
  14079. -       width: 370px;
  14080. -}
  14081. -.cart-popup-ui .cart-empty .continue-btn span {
  14082. -       background: #f67d00;
  14083. -       color: #fff;
  14084. -       font-weight: 600;
  14085. -}
  14086. -.cart-popup-ui .cart-empty .continue-btn span span:before {
  14087. -       background: none;
  14088. -}
  14089. -.cart-popup-ui .btn-checkout:hover span span {
  14090. -       background-position: 0px -251px;
  14091. -}
  14092. -.cart-popup-ui .btn-checkout {
  14093. -       float: right;
  14094. -       width: 50%;
  14095. -}
  14096. -.cart-popup-ui .btn-checkout {
  14097. -       background: #f4482c !important;
  14098. -       border-radius: 0;      
  14099. -}
  14100. -.cart-popup-ui .btn-checkout span {
  14101. -       width: 100%;
  14102. -       background: #ff9212;
  14103. -       text-transform: uppercase;
  14104. -       font-weight: 100;
  14105. -       position: relative;
  14106. -       padding: 3px 0;
  14107. -       font-size: 18px;
  14108. -       border-radius: 0;
  14109. -}
  14110. -.cart-popup-ui .btn-checkout span span:before {
  14111. -       background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png') -37px -250px no-repeat;
  14112. -       content: '';
  14113. -       position: absolute;
  14114. -       width: 20px;
  14115. -       height: 35px;
  14116. -       right:44px;
  14117. -       transform:scale(0.6);
  14118. -       -webkit-transform:scale(0.6);
  14119. -       -ms-transform:scale(0.6);
  14120. -       -moz-transform:scale(0.6);
  14121. -}
  14122. -.cart-popup-ui .btn-checkout:hover span span {
  14123. -       background-position: -37px -251px;
  14124. -}
  14125. -.cart-popup-ui .title-buttons .checkout-types button,
  14126. -.main-cart .title-buttons .checkout-types button {
  14127. -       display: none;
  14128. -}
  14129. -.cart-popup-ui .cart-table {
  14130. -       display: block;
  14131. -       position: relative;
  14132. -}
  14133. -.cart-popup-ui .cart-table thead {
  14134. -       display: inline-block;
  14135. -       width: 100%;
  14136. -       margin-top: 0;
  14137. -}
  14138. -.cart-popup-ui .cart-table th,
  14139. -.main-cart .cart-table th  {
  14140. -       width: 100px;
  14141. -}
  14142. -.cart-popup-ui .cart-table th + th,
  14143. -.main-cart .cart-table th + th {
  14144. -       width: 255px;
  14145. -}
  14146. -.cart-popup-ui .cart-table th + th + th,
  14147. -.main-cart .cart-table th + th + th {
  14148. -       width: 80px;
  14149. -       text-align: left;
  14150. -}
  14151. -.cart-popup-ui .cart-table th + th + th + th,
  14152. -.main-cart .cart-table th + th + th + th{
  14153. -       text-align: right;
  14154. -       width: 140px;
  14155. -       padding-right: 20px;
  14156. -       }
  14157. -.cart-popup-ui .cart-table td,
  14158. -.main-cart .cart-table td {
  14159. -       width: 100px;
  14160. -       vertical-align: top;
  14161. -}
  14162. -.cart-popup-ui .cart-table td + td,
  14163. -.main-cart .cart-table td + td {
  14164. -       width: 255px;
  14165. -}
  14166. -.cart-popup-ui .cart-table td + td +td,
  14167. -.main-cart .cart-table td + td + td {
  14168. -       width: 80px;
  14169. -       text-align: left;
  14170. -}
  14171. -.cart-popup-ui .cart-table td + td + td + td,
  14172. -.main-cart .cart-table td + td + td + td {
  14173. -       text-align: right;
  14174. -       width: 140px;
  14175. -       padding-right: 20px;
  14176. -       }
  14177. -.cart-popup-ui .total-inner {
  14178. -       width: 95%;
  14179. -       display: block;
  14180. -}
  14181. -.cart-popup-ui .cart-popup-scroll {
  14182. -       display: inline-block;
  14183. -       width: 100%;
  14184. -       height: 250px;
  14185. -       overflow-y:auto;
  14186. -}
  14187. -.data-table .item-msg.error{
  14188. -       border: none !important;
  14189. -}
  14190. -/* search result css */
  14191.  
  14192. +
  14193. +/* search result css */
  14194.  .block-layered-nav dt:first-child{
  14195.  margin-top:5px;
  14196.  }
  14197.  .showing-result{
  14198. -       font-size: 16px;
  14199. -       float: left;
  14200. -       color: #444;
  14201. -       font-weight: bold;
  14202. -       margin-bottom: 2px;
  14203. -}
  14204. -.showing-total {
  14205. -       font-size: 13px;
  14206. -       float: right;
  14207. -       color: #777;
  14208. -       margin-bottom: 2px;
  14209. +  font-size: 16px;
  14210. +  float: left;
  14211. +  color: #444;
  14212. +  font-weight: bold;
  14213. +  margin-bottom: 2px;
  14214.  }
  14215. -.rad-link {
  14216. -       color: #cc0000;
  14217. +.showing-total{
  14218. +  font-size: 13px;
  14219. +  float: right;
  14220. +  color: #777;
  14221. +  margin-bottom: 2px;
  14222.  }
  14223. -.showing-discrip {
  14224. -       font-size: 13px;
  14225. -       color: #777;
  14226. -       float: left;
  14227. -       width: 100%;
  14228. -       padding: 0px 0 5px 0;
  14229. +.rad-link{
  14230. +  color:#cc0000;
  14231.  }
  14232. -.showing-discrip a {
  14233. -       text-decoration: underline;
  14234. +.showing-discrip{
  14235. +  font-size: 13px;
  14236. +  color: #777;
  14237. +  float: left;
  14238. +  width: 100%;
  14239. +  padding: 0px 0 5px 0;
  14240.  }
  14241. -.showing-discrip a:hover {
  14242. -       text-decoration: none;
  14243. +.showing-discrip a{
  14244. +  text-decoration: underline;
  14245.  }
  14246. -.catalogsearch-result-index .page-title > h2 {
  14247. -       width: 100%;
  14248. -       display: block;
  14249. -       margin: -12px 0 0 0 !important;
  14250. +.showing-discrip a:hover{
  14251. +  text-decoration: none;
  14252.  }
  14253. -.cart-item{
  14254. -       font-size: 14px;
  14255. +.catalogsearch-result-index .page-title > h2{
  14256. +width:100%;
  14257. +display:block;
  14258. +margin:-12px 0 0 0 !important;
  14259.  }
  14260. +
  14261.  /* Newsletter popup design css */
  14262. -.newsletter-bg h2 {
  14263. -       margin: 0 !important;
  14264. +.newsletter-bg h2{
  14265. +       margin:0 0 0 0 !important;
  14266.  }
  14267. -.newsletter-bg p {
  14268. -       padding: 5px 0;
  14269. +.newsletter-bg p{
  14270. +       padding:5px 0;
  14271.         margin: 0 !important;
  14272.         color: #000;
  14273.  }
  14274. -.newsletter-bg .bdr-btm {
  14275. +.newsletter-bg .bdr-btm{
  14276.         border-bottom: 1px solid #bcbabd;
  14277.  }
  14278. -.newsletter-bg .top-cont {
  14279. +.newsletter-bg .top-cont{
  14280.         color: #f34242;
  14281.         text-transform: uppercase;
  14282.         position: relative;
  14283.         font-size: 16px;
  14284.  }
  14285. -.top-cont span {
  14286. +.top-cont span{
  14287.         color: #bcbabd;
  14288.  }
  14289. -.news-discrip {
  14290. +.news-discrip{
  14291.         font-size: 28px;
  14292.         text-transform: uppercase;
  14293.         padding: 12px 0 20px 0;
  14294.         color: #1d1b1e;
  14295.  }
  14296. -.btm-cont {
  14297. +.btm-cont{
  14298.         color: #f34242;
  14299.         font-size: 16px;
  14300.         position: relative;
  14301.         height: 1px;
  14302.         background:#bdbdbd;
  14303.  }
  14304. -.note-cont strong {
  14305. +.note-cont strong{
  14306.         color: #818181;
  14307.  }
  14308. -.btm-cont span {
  14309. +.btm-cont span{
  14310.         background: #fbf9fc;
  14311.         padding: 0 15px;
  14312.         position: relative;
  14313. @@ -5223,331 +4687,34 @@ margin-top:5px;
  14314.  .coupon-bg{
  14315.         margin: 30px auto;
  14316.  }
  14317. -.newsletter-bg .input-box input.input-text {
  14318. +.newsletter-bg .input-box input.input-text{
  14319.         font-size: 14px;
  14320.         color: #5a5a5a;
  14321.  }
  14322. -.newsletter-bg p.note-cont {
  14323. +.newsletter-bg p.note-cont{
  14324.         text-align: left;
  14325.         font-size: 11px !important;
  14326.         color: #adadad !important;
  14327.         margin: 16px 0 0px 30px !important;
  14328.  }
  14329.  .newsletter-bg ::-webkit-input-placeholder {
  14330. -       color: #5a5a5a;
  14331. -       opacity: 1;
  14332. +   color: #5a5a5a;
  14333. +   opacity: 1;
  14334.  }
  14335.  .newsletter-bg :-moz-placeholder { /* Firefox 18- */
  14336. -       color: #5a5a5a;
  14337. -       opacity: 1;
  14338. +   color: #5a5a5a;
  14339. +   opacity: 1;
  14340.  }
  14341.  .newsletter-bg ::-moz-placeholder {  /* Firefox 19+ */
  14342. -       color: #5a5a5a;
  14343. -       opacity: 1;
  14344. +   color: #5a5a5a;
  14345. +   opacity: 1;
  14346.  }
  14347.  .newsletter-bg :-ms-input-placeholder {  
  14348. -       color: #5a5a5a;
  14349. -       opacity: 1;
  14350. -}
  14351. -
  14352. -/* desktop css */
  14353. -.main-cart {
  14354. -       width: 100%;
  14355. -       float: left;
  14356. -}
  14357. -.main-cart .cart-table-wrap {
  14358. -       border: none;
  14359. -       box-shadow: none;
  14360. -       display: inline-block;
  14361. -       padding: 0;
  14362. -       width: 100%;
  14363. -}
  14364. -.main-cart form {
  14365. -       float: left;
  14366. -       width: 72%;
  14367. -}
  14368. -.main-cart form .cart-table {
  14369. -       width: 100%;
  14370. -       float: left;
  14371. -       border:1px solid #ececec;
  14372. -       border-radius: 5px 5px 0 0;
  14373. -}
  14374. -.main-cart .cart-collaterals {
  14375. -       width: 26%;
  14376. -       float: right;
  14377. -       margin: 0;
  14378. -}
  14379. -.main-cart .discount {
  14380. -       padding:0 0 10px 0;
  14381. -       border-bottom:1px solid #ececec;
  14382. -}
  14383. -.main-cart .cart-collaterals form,
  14384. -.main-cart .totals {
  14385. -       width:100%;
  14386. -       float: right;
  14387. -}
  14388. -.main-cart .checkout-types, .main-cart .continue-btn {
  14389. -       width: 100%;
  14390. -}
  14391. -.main-cart .checkout-types button{
  14392. -       width: 100%;
  14393. -       margin: 0 0 10px 0;
  14394. -}
  14395. -.main-cart .checkout-types span span{
  14396. -       font-size: 16px;
  14397. -}
  14398. -.main-cart .page-title h1 {
  14399. -       margin: 0 0 15px 0 !important;
  14400. -       background: transparent;
  14401. -       font-weight: normal;
  14402. -       padding: 0;
  14403. -       text-transform:unset;
  14404. -}
  14405. -.main-cart .cart-collaterals {
  14406. -       border:1px solid #ececec;
  14407. -       padding: 10px;
  14408. -}
  14409. -
  14410. -.cart-popup-ui .checkout-continue-btn {
  14411. -       width: 100%;
  14412. -       margin: 0;
  14413. -}
  14414. -.cart-popup-ui .pack,
  14415. -.main-cart .pack {
  14416. -       font-size: 12px;
  14417. -       color: #989696;
  14418. -       float: left;
  14419. -       margin: 8px 0;
  14420. -       line-height: 12px;
  14421. -       padding: 0 10px 0 0;
  14422. -}
  14423. -.cart-popup-ui .sold,
  14424. -.main-cart .sold {
  14425. -       color: #8f8f8f;
  14426. -       font-size: 12px;
  14427. -       float: left;
  14428. -       margin: 8px 0;
  14429. -       line-height: 12px;
  14430. -       display: none;
  14431. -}
  14432. -.cart-popup-ui .pack + .sold {
  14433. -       border-left: 1px solid #8f8f8f;
  14434. -       padding: 0 10px;
  14435. -}
  14436. -.main-cart .checkout-continue-btn button.continue-btn span {
  14437. -       background: #e2e2e2;
  14438. -       color: #666;
  14439. -       height: 42px;
  14440. -       line-height: 42px;
  14441. -}
  14442. -/* blank cart page popup css */
  14443. -.cart-empty {
  14444. -       text-align: center;
  14445. -       width: 100%;
  14446. -       display: inline-block;
  14447. -}
  14448. -.shoping-empty {
  14449. -       font-size: 22px;
  14450. -       color: #343434;
  14451. -       padding: 25px 0;
  14452. -       background: #fffff7;
  14453. -       border:1px dashed #ccc;
  14454. -       text-align: center;
  14455. -       width: 530px;
  14456. -       margin: 80px auto 0 auto;
  14457. -}
  14458. -.pop-categary {
  14459. -       font-size: 14px;
  14460. -       color: #343434;
  14461. -       text-align: center;
  14462. -       width: 100%;
  14463. -       font-weight: bold;
  14464. -       text-transform: uppercase;
  14465. -       margin: 20px 0 20px 0;
  14466. -}
  14467. -.category-nm {
  14468. -       display: inline-block;
  14469. -       max-width: 675px;
  14470. -       text-align: center;
  14471. -       width: 100%;
  14472. -}
  14473. -.category-nm li {
  14474. -       display: block;
  14475. -       float: left;
  14476. -       line-height: 25px;
  14477. -}
  14478. -.category-nm li a {
  14479. -       font-size: 12px;
  14480. -       color: #56006b;
  14481. -       border-right: 1px solid #ccc;
  14482. -       padding: 0 12px;
  14483. -}
  14484. -.category-nm li:last-child a {
  14485. -       border-right: 0;
  14486. -}
  14487. -.col1-layout .pop-categary, .col1-layout .category-nm {
  14488. -       display: none;
  14489. -}
  14490. -.col1-layout .shoping-empty {
  14491. -       margin: 0 auto;
  14492. -}
  14493. -.cart-blank-pg  .continue-btn {
  14494. -       width: 370px;
  14495. -       margin: 30px 0 20px 0;
  14496. -}
  14497. -.cart-blank-pg .continue-btn span {
  14498. -       background: #f67d00;
  14499. -       border-radius: 0;
  14500. -       color: #fff;
  14501. -       font-size: 18px;
  14502. -       font-weight: 600;
  14503. -       text-transform: uppercase;
  14504. -       position: relative;
  14505. -       padding: 3px 0;
  14506. -}
  14507. -.cart-blank-pg  .continue-btn span span:before {
  14508. -       background: none;
  14509. -}
  14510. -.cart-popup-ui .cart-empty-title h1 {
  14511. -       padding: 10px !important;
  14512. -}
  14513. -/*popup css*/
  14514. -/*.popup-innerxa{
  14515. -    margin:0px auto ;
  14516. -    background: #ffffff ;
  14517. -    position: relative ;
  14518. -    overflow: hidden ;
  14519. -    padding:0px ;
  14520. -}*/
  14521. -.cart-overlay{
  14522. -    background: rgba(51, 51, 51, 0.8) ;
  14523. -    display: none ;
  14524. -    height: 100% ;
  14525. -    left: 0 ;
  14526. -    position: fixed ;
  14527. -    top: 0 ;
  14528. -    width: 100% ;
  14529. -    z-index: 200 ;
  14530. -  }
  14531. -  .cart-popUp{
  14532. -    position: fixed ;
  14533. -    z-index: 201 ;
  14534. -    width: 720px;
  14535. -    padding: 1px;
  14536. -     box-sizing: border-box;
  14537. -    -webkit-transform: translate(0, -1000px);
  14538. -    -webkit-transition: transform ease-in 0.3s;
  14539. -    -moz-transform: translate(0, -1000px);
  14540. -    -moz-transition: transform ease-in 0.3s;
  14541. -    -o-transform: translate(0, -1000px);
  14542. -    -o-transition: transform ease-in 0.3s;
  14543. -    -ms-transform: translate(0, -1000px);
  14544. -    -ms-transition: transform ease-in 0.3s;
  14545. -    transform: translate(0, -1000px);
  14546. -    transition: transform ease-in 0.3s;
  14547. -  }
  14548. -.cart-popUp-show {
  14549. -    -webkit-transform: translate(0);
  14550. -    -webkit-transition: transform ease-in 0.3s;
  14551. -    -moz-transform: translate(0);
  14552. -    -moz-transition: transform ease-in 0.3s;
  14553. -    -o-transform: translate(0);
  14554. -    -o-transition: transform ease-in 0.3s;
  14555. -    -ms-transform: translate(0);
  14556. -    -ms-transition: transform ease-in 0.3s;
  14557. -    transform: translate(0);
  14558. -    transition: transform ease-in 0.3s;
  14559. -}
  14560. -small.cart-close-bg {
  14561. -    display: none;
  14562. -    float:right;
  14563. -    cursor: pointer;
  14564. -    /*background:#56006b;*/
  14565. -    padding: 12px 15px;
  14566. -    position: absolute;
  14567. -    right: 0;
  14568. -    top: 0px;
  14569. -  }
  14570. -.cart-popUp-close {
  14571. -    color: #fff;
  14572. -    cursor: pointer;
  14573. -    display: none;
  14574. -    font-size: 18px;
  14575. -    height: 26px;
  14576. -    margin: 3px 0 0;
  14577. -    width: 16px;
  14578. -}
  14579. -.cart-popUp-close:hover {
  14580. -       color: #ccc;
  14581. +   color: #5a5a5a;
  14582. +   opacity: 1;
  14583.  }
  14584.  
  14585. -.cart-popup-ui .btn-checkout.no-checkout,
  14586. -.main-cart .btn-checkout.no-checkout {
  14587. -    opacity: 0.4;
  14588. -    cursor:default;
  14589. -}
  14590. -.cart-popup-ui .btn-checkout.no-checkout span,
  14591. -.main-cart .btn-checkout.no-checkout span {
  14592. -       color:#fff !important;
  14593. -       opacity: 0.8;
  14594. -}
  14595. -.cart-popup-ui .btn-checkout.no-checkout span:hover,
  14596. -.main-cart .btn-checkout.no-checkout span:hover {
  14597. -       color:#fff !important;
  14598. -       opacity: 0.8;
  14599. -}
  14600. -.cart-loader{
  14601. -       width: 100%;
  14602. -       height: 100%;
  14603. -}
  14604. -.ajax-cart-loader {
  14605. -       position: absolute;
  14606. -       display: block;
  14607. -       top: 50%;
  14608. -       left: 50%;
  14609. -       margin-left: -146px;
  14610. -       margin-top: -16px;
  14611. -       text-align: center;
  14612. -       font-size: 20px;
  14613. -       color: #333;
  14614. -}
  14615. -.ajax-cart-loader:after {
  14616. -       background: url("http://d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/ajax_loader.gif")  no-repeat;
  14617. -       content: '';
  14618. -       position: absolute;
  14619. -       display: inline-block;
  14620. -       width: 32px;
  14621. -       height: 32px;
  14622. -       top: -4px;
  14623. -       right: -40px;
  14624. -}
  14625. -.main-cart .checkout-continue-btn {
  14626. -       float: left;
  14627. -       width: 100%;
  14628. -}
  14629. -.error-msg span.error-icn, .success-msg span.success-icn{
  14630. -       background-position: -141px -254px;
  14631. -       height: 32px;
  14632. -       vertical-align: middle;
  14633. -       display: inline-block;
  14634. -       width: 5% !important;
  14635. -}
  14636. -.success-msg span.success-icn{
  14637. -       background-position: -100px -254px;
  14638. -}
  14639. -.error-msg span, .success-msg span{
  14640. -       vertical-align: middle;
  14641. -       display: inline-block;
  14642. -       width: 94% !important;
  14643. -}
  14644. -.err-qty{
  14645. -       border: 1px solid #df280a !important;
  14646. -}
  14647. -.cart-popup-scroll .cart-price {
  14648. -       color: #000;
  14649. -       font-size: 13px;
  14650. -}
  14651. -/* deal btn css */
  14652. +/* deal btn  css */
  14653.  .header-container .menu-all-pages-container ul.menu > li:last-child {
  14654.         display: inline-block !important;
  14655.         float: right;
  14656. @@ -5596,86 +4763,3 @@ small.cart-close-bg {
  14657.  .payment-discount{
  14658.    color: #f67d00;
  14659.  }
  14660. -
  14661. -.cart-popup-scroll .ajaxpro-spinner {
  14662. -       margin: 25px 0 0 -40px;
  14663. -}
  14664. -.main-cart .btn-proceed-checkout span {
  14665. -       height: 42px;
  14666. -       line-height: 42px;
  14667. -       background:#ff9212;
  14668. -}
  14669. -.cart-popup-ui  span i.checkout-loader,
  14670. -.main-cart .btn-proceed-checkout span i.checkout-loader {
  14671. -       background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/buynow-loader.gif') no-repeat center center;
  14672. -       content: '';
  14673. -       height: 44px;
  14674. -       display: none;
  14675. -       width: 100%;
  14676. -}
  14677. -.cart-popup-ui span i.checkout-loader:before {
  14678. -       background: none !important;
  14679. -}
  14680. -
  14681. -/* Unbox css home and product page*/
  14682. -.unbxd-widget-header {
  14683. -       position: relative;
  14684. -}
  14685. -.unbxd-class1.unbxd-head-recommendations > span {
  14686. -    background: #fff;
  14687. -    padding-right: 20px;
  14688. -    font-weight: bold;
  14689. -}
  14690. -.unbxd-control.unbxd-control-right,
  14691. -.unbxd-control-left {
  14692. -    position: absolute !important;
  14693. -    top: 15px !important;
  14694. -}
  14695. -.unbxd-control.unbxd-control-right {
  14696. -    right: 20px;
  14697. -}
  14698. -.unbxd-control-left{
  14699. -    right: 30px !important;
  14700. -    top: 15px !important;
  14701. -}
  14702. -.unbxd-head-recommendations {
  14703. -    background-position: right center !important;
  14704. -}
  14705. -.unbxd-headLeftHz {
  14706. -    width: 100% !important;
  14707. -}
  14708. -.unbxd-view-details {
  14709. -    font-weight: normal;
  14710. - }
  14711. -.unbxd-currency-symbol, .unbxd-currency-value{
  14712. -       margin:0 0 10px 0;
  14713. - }
  14714. -.unbxd-currency-value {
  14715. -    margin-left: 2px;
  14716. -}
  14717. -.unbxd-width-x a:first-child{
  14718. -       color: #444 !important;
  14719. -       font-size:12.5px !important
  14720. -}
  14721. -.unbxd-product-description{
  14722. -       overflow: hidden !important ;
  14723. -       height: 34px !important;
  14724. -       color: #777 !important;
  14725. -       line-height:17px !important;
  14726. -}
  14727. -.unbxd-field-price a strike {
  14728. -       color: #444 !important;
  14729. -       font-size:12.5px !important;
  14730. -}
  14731. -.unbxd-contHz {
  14732. -       margin:10px 0 !important;
  14733. -}
  14734. -/* saf3+, chrome1+ */
  14735. -@media screen and (-webkit-min-device-pixel-ratio:0) {
  14736. - .cart-popup-ui .cart-collaterals .checkout-continue-btn {
  14737. -       bottom: -2px;
  14738. - }
  14739. -}
  14740. -.scroll-hide {
  14741. -       overflow: hidden;
  14742. -}
  14743. diff --git a/skin/frontend/smartwave/porto/css/responsive.css b/skin/frontend/smartwave/porto/css/responsive.css
  14744. index 6e0f70b..d93e31d 100644
  14745. --- a/skin/frontend/smartwave/porto/css/responsive.css
  14746. +++ b/skin/frontend/smartwave/porto/css/responsive.css
  14747. @@ -294,8 +294,8 @@
  14748.      .data-table.cart-table tbody tr.first td.action-td {
  14749.          top: -5px
  14750.      }*/
  14751. -    .cart-popUp-show .cart .cart-table-wrap {
  14752. -        padding: 0px;
  14753. +    .cart .cart-table-wrap {
  14754. +        padding: 15px;
  14755.      }
  14756.      .data-table.cart-table tbody td.action-td .btn-remove2 {
  14757.          float: right;
  14758. @@ -621,12 +621,6 @@
  14759.          font-weight:600;
  14760.          text-transform: uppercase;
  14761.      }
  14762. -    .main-cart .input-box input{
  14763. -        font-size: 11px;
  14764. -    }
  14765. -    .main-cart .discount button > span{
  14766. -        padding: 15px 11px;
  14767. -    }
  14768.  }
  14769.  @media (min-width: 768px) and (max-width: 991px) {
  14770.      #banner-slider-demo-5, .homepage-bar {
  14771. @@ -653,19 +647,8 @@
  14772.      .add-to-cart button.button {
  14773.          width: 140px
  14774.      }
  14775. -    .cart-popUp{
  14776. -        width: 780px;
  14777. -        left: 55%;
  14778. -    }
  14779. -
  14780.  }
  14781.  @media (max-width: 991px) {
  14782. -    .main-cart .discount button > span {
  14783. -        padding: 15px 17px;
  14784. -    }
  14785. -    .buy-button-box {
  14786. -        height: 44px;
  14787. -    }
  14788.      .submenu-rightbox{
  14789.          display: none;
  14790.      }
  14791. @@ -1487,34 +1470,31 @@
  14792.      .cart-table thead {
  14793.          display: none
  14794.      }
  14795. -    .data-table.cart-table .product-image,
  14796. -    .main-cart .data-table.cart-table .product-image {
  14797. +    .data-table.cart-table .product-image {
  14798.          z-index: 0
  14799.      }
  14800. -    .data-table.cart-table tbody tr,
  14801. -    .main-cart .data-table.cart-table tbody tr{
  14802. +    .data-table.cart-table tbody tr {
  14803.          position: relative;
  14804.          display: block;
  14805.          clear: both;
  14806.          padding: 25px 0;
  14807.          border-bottom: 1px solid #dcdcdc
  14808.      }
  14809. -    .data-table.cart-table tbody tr.first,
  14810. -    .main-cart .data-table.cart-table tbody tr.first{
  14811. +    .data-table.cart-table tbody tr.first {
  14812.          padding-top: 0
  14813.      }
  14814. -    .data-table.cart-table tbody td{
  14815. +    .data-table.cart-table tbody td {
  14816.          display: block;
  14817.          padding: 5px;
  14818.          width: 100%;
  14819.          border-width: 0;
  14820.          text-align: center!important
  14821.      }
  14822. -    .data-table.cart-table tbody td.pr-img-td{
  14823. +    .data-table.cart-table tbody td.pr-img-td {
  14824.          clear: both;
  14825.          padding: 0 0 15px
  14826.      }
  14827. -    .data-table.cart-table tbody td.action-td{
  14828. +    .data-table.cart-table tbody td.action-td {
  14829.          top: 20px;
  14830.          z-index: 1
  14831.      }
  14832. @@ -1524,9 +1504,8 @@
  14833.      .feedbackUser{
  14834.         clear: left;
  14835.      }
  14836. -
  14837.      /* Checkout Page Mobile Optimization */
  14838. -.main-cart #discount-coupon-form .discount-form{
  14839. +    #discount-coupon-form .discount-form{
  14840.          display: inline-block !important;
  14841.          width: 100%;
  14842.          background: transparent;
  14843. @@ -1534,31 +1513,50 @@
  14844.          position: relative;
  14845.          padding: 10px 0 22px;
  14846.      }
  14847. -    .main-cart #discount-coupon-form .discount {
  14848. +   #discount-coupon-form .discount {
  14849.          margin: 0 auto 30px;
  14850.          max-width: 292px;
  14851.      }
  14852. -    .main-cart  #discount-coupon-form .discount h2,
  14853. -     .main-cart #discount-coupon-form .discount-form label,
  14854. +     #discount-coupon-form .discount h2,
  14855. +     #discount-coupon-form .discount-form label,
  14856.       .footer-bottom .custom-block{
  14857.          display: none;
  14858.       }
  14859. -    .main-cart  #discount-coupon-form .discount-form label+span{
  14860. +     #discount-coupon-form .discount-form label+span{
  14861.          position: absolute;
  14862.          left: 42px;
  14863.          bottom: 0;
  14864.       }
  14865. -    .main-cart #discount-coupon-form .discount-form .input-box{
  14866. +    #discount-coupon-form .discount-form .input-box{
  14867.        float: left;
  14868.        width: 195px;
  14869.      }
  14870. -    .main-cart #discount-coupon-form .discount-form .buttons-set{
  14871. +    #discount-coupon-form input.input-text{
  14872. +        border-radius:3px 0 0 3px;
  14873. +        padding: 0 10px;
  14874. +        margin: 0;
  14875. +        height: 32px !important;
  14876. +        border-color: #bbb;
  14877. +        border-right: none;
  14878. +    }
  14879. +    #discount-coupon-form .discount-form .buttons-set{
  14880.        float: left;
  14881.        width: 95px;
  14882.        clear: none;
  14883.      }
  14884. -
  14885. -    .main-cart  #discount-coupon-form button.button + button.button span{
  14886. +    #discount-coupon-form .buttons-set,
  14887. +     #discount-coupon-form .buttons-set .button{
  14888. +        margin-top: 0;
  14889. +    }
  14890. +    #discount-coupon-form button.button span{
  14891. +        line-height: 28px;
  14892. +        padding: 0 0 1px 0;
  14893. +        border-radius: 0 3px 3px 0;
  14894. +        font-size: 13px;
  14895. +        color: #666;
  14896. +        border-color: #bbb !important;
  14897. +    }
  14898. +    #discount-coupon-form button.button + button.button span{
  14899.          background: transparent !important;
  14900.          border: none !important;
  14901.          line-height: 1;
  14902. @@ -1567,60 +1565,60 @@
  14903.          color: #e82f2c;
  14904.          margin-bottom: -2px;
  14905.      }
  14906. -    .main-cart .data-table.cart-table tbody td{
  14907. +    .data-table.cart-table tbody td{
  14908.          display: inline-block;
  14909.          width: auto;
  14910.          padding: 5px;
  14911.      }
  14912. -    .main-cart .data-table.cart-table tbody td.action-td {
  14913. +   .data-table.cart-table tbody td.action-td {
  14914.      position: absolute;
  14915.      top: 18px;
  14916.      right: -5px;
  14917.      z-index: 1;
  14918.      }
  14919. -    .main-cart td.action-td .btn-remove2 {
  14920. +    td.action-td .btn-remove2 {
  14921.      height: 14px;
  14922.      line-height: 15px;
  14923.      margin: 0 !important;
  14924.      padding: 0;
  14925.      width: 14px;
  14926.      }
  14927. -     .main-cart .product-name-td {
  14928. +    .product-name-td {
  14929.          vertical-align: top !important;
  14930.          padding-right: 18px !important;
  14931.          width: calc(100% - 42px) !important;
  14932.      }
  14933. -     .main-cart .product-name-td .product-name{
  14934. +    .product-name-td .product-name{
  14935.          text-align: left;
  14936.      }
  14937. -     .main-cart .cart .cart-table-wrap{
  14938. +    .cart .cart-table-wrap{
  14939.          padding: 10px;
  14940.          margin-bottom: 30px;
  14941.      }
  14942. -     .main-cart .totals .checkout-types.posiStatic{
  14943. +    .totals .checkout-types.posiStatic{
  14944.          background: transparent;
  14945.          margin-bottom: -20px;
  14946.          position: static;
  14947.      }
  14948. -     .main-cart .data-table.cart-table tbody td.pr-img-td{
  14949. +    .data-table.cart-table tbody td.pr-img-td{
  14950.          padding: 0;
  14951.      }
  14952. -     .main-cart .cart-table .qty-holder, .cart-table .qty-holder > input.qty {
  14953. +    .cart-table .qty-holder, .cart-table .qty-holder > input.qty {
  14954.          padding: 0;
  14955.          width: 50px !important;
  14956.        }
  14957. -     .main-cart .data-table.cart-table tbody tr{
  14958. +    .data-table.cart-table tbody tr{
  14959.          padding: 15px 0;
  14960.      }
  14961. -     .main-cart .cart-table button.button{
  14962. +    .cart-table button.button{
  14963.          margin-left: auto !important;
  14964.          margin-right: auto;
  14965.          max-width: 200px;
  14966.      }
  14967. -   .main-cart   .title-buttons .checkout-types, .cart-table .btn-continue {
  14968. +    .title-buttons .checkout-types, .cart-table .btn-continue {
  14969.      display: none;
  14970.      }
  14971. -     .main-cart .cart-table .btn-update {
  14972. +    .cart-table .btn-update {
  14973.          display: block;
  14974.          float: none;
  14975.          margin-left: auto;
  14976. @@ -1628,27 +1626,23 @@
  14977.          width: 100%;
  14978.          max-width: 200px;
  14979.     }
  14980. -    .main-cart .cart-table td.product-name-td + td {
  14981. +   .cart-table td.product-name-td + td {
  14982.          margin-left: 45px;
  14983.          color: #555;
  14984.      }
  14985. -     .main-cart .cart-table .product-name a {
  14986. +    .cart-table .product-name a {
  14987.          color: #555 !important;
  14988.      }
  14989. -     .main-cart .error-msg, .success-msg, .note-msg, .notice-msg {
  14990. -        margin: 5px 0;
  14991. -        padding: 0;
  14992. -    }
  14993. -    .main-cart .shipping-offer {
  14994. -        background: #f8eeda;
  14995. +    .error-msg, .success-msg, .note-msg, .notice-msg{padding: 7px;}
  14996. +    .shipping-offer {
  14997. +        background: none repeat scroll 0 0 #f8eeda;
  14998.          border: 1px solid #f9e0ab;
  14999. -        line-height: 15px;
  15000. -        padding: 8px 10px;
  15001. -        text-align: left;
  15002. -        width: 100%;
  15003. -        margin: 10px 0 4px 0;
  15004. +        border-radius: 3px;
  15005. +        line-height: 18px;
  15006. +        padding: 4px 5px;
  15007. +        text-align: center;
  15008.      }
  15009. -     .main-cart #coupon_code + .validation-advice{
  15010. +    #coupon_code + .validation-advice{
  15011.          position: static;
  15012.      }
  15013.      /****   Drawer Nav for Mobile Site  ****/
  15014. @@ -1899,142 +1893,7 @@ a.Safety:before{
  15015.     a.Power_Transmission:before{
  15016.         background-position: -196px -329px;
  15017.     }
  15018. -  /* Header Search for Mobile */
  15019. -    .header-container.type4 .header #search_mini_form{
  15020. -        display: block;
  15021. -    }
  15022. -    .header-container.type4 .header .form-search{
  15023. -        left: auto;
  15024. -        min-width: 0;
  15025. -        right: 0 !important;
  15026. -        top: -5px;
  15027. -        width: 250px;
  15028. -        display: block;
  15029. -        padding-right: 32px !important;
  15030. -   }
  15031. -   .header-container.type4 .header .form-search::before{
  15032. -    display: none;
  15033. -   }
  15034. -   .header .form-search #search{
  15035. -      padding: 10px 7px;
  15036. -      height: 35px;
  15037. -   }
  15038. -   .header .form-search button.button{
  15039. -      width: 32px;
  15040. -      height: 35px;
  15041. -      background-color: transparent;
  15042. -      border: 1px solid #ccc;
  15043. -      border-left: none;
  15044. -   }
  15045. -   #search_mini_form .icon-search:before{
  15046. -    background-position:-72px -53px;
  15047. -  }
  15048. -  .header-container.type4 .menu-icon{
  15049. -    margin-left: -10px;
  15050. -  }
  15051.      
  15052. -   .main-cart .data-table.cart-table tbody td.pr-img-td{
  15053. -    margin-left: 10px;
  15054. -    width: 50px;
  15055. -    text-align: left;
  15056. -    display: inline-block;
  15057. -   }
  15058. -   .main-cart .data-table.cart-table tbody td.product-name-td {
  15059. -    padding-right: 18px !important;
  15060. -    vertical-align: top !important;
  15061. -    text-align: left !important;
  15062. -    display: inline-block;
  15063. -    width: calc(100% - 64px) !important;
  15064. -}
  15065. -    .main-cart  .data-table.cart-table tbody td{
  15066. -    text-align: left;
  15067. -    display:inline-block;
  15068. -    width: auto;
  15069. -    vertical-align: top;
  15070. -   }
  15071. -  .main-cart .data-table.cart-table tbody td + td + td +td {
  15072. -    display: inline-block;
  15073. -    margin-left: 0;
  15074. -   }
  15075. -.main-cart .data-table.cart-table tbody td + td + td{
  15076. -   display: inline-block;
  15077. -    margin-left: 66px;
  15078. -}
  15079. -.main-cart form, .main-cart .cart-collaterals,
  15080. -.main-cart .cart-collaterals form{
  15081. -    width: 100%;
  15082. -    float: none;
  15083. -}
  15084. - .main-cart .continue-btn{
  15085. -    display: none;
  15086. -}
  15087. - .main-cart .main-cart .checkout-types{
  15088. -    float: none;
  15089. -    width: 100%;
  15090. -}
  15091. - .main-cart #discount-coupon-form{
  15092. -    display: block;
  15093. -    margin: 0 auto;
  15094. -    width: 300px;
  15095. -}
  15096. - .main-cart #discount-coupon-form .discount{
  15097. -    border: none;
  15098. -}
  15099. -.main-cart .cart-collaterals .input-box input.input-text{
  15100. -      width: 64%;
  15101. -}
  15102. -
  15103. -.cart-popup-ui{
  15104. -    width:100%;
  15105. -}
  15106. -.cart-popup-ui .cart-popup-scroll {
  15107. -    display: inline-block;
  15108. -    width: 100%;
  15109. -    height: 150px;
  15110. -    overflow-y:auto;
  15111. -}
  15112. -
  15113. -.cart-popup-ui .cart-table-wrap{
  15114. -    padding: 2px 0;
  15115. -}
  15116. -.cart-popup-ui .data-table.cart-table th,
  15117. -.cart-popup-ui .data-table.cart-table td{
  15118. -    width: 100px;
  15119. -    display: inline-block;
  15120. -}
  15121. -.cart-popup-ui .data-table.cart-table th + th,
  15122. -.cart-popup-ui .data-table.cart-table td + td{
  15123. -    width: 392px;
  15124. -    text-align: left !important;
  15125. -    padding-left: 10px;
  15126. -}
  15127. -.cart-popup-ui .data-table.cart-table th + th + th,
  15128. -.cart-popup-ui .data-table.cart-table td + td + td{
  15129. -    width: 120px;
  15130. -}
  15131. -.cart-popup-ui .data-table.cart-table .button.btn-update span {
  15132. -    padding: 0 2px;
  15133. -}
  15134. -.cart-popup-ui .continue-btn span span::before{
  15135. -    left: 55px;
  15136. -}
  15137. -.cart-popup-ui .btn-checkout span span::before{
  15138. -   right: 45px;
  15139. -}
  15140. -.cart-popup-ui .title-buttons h1{
  15141. -    padding: 10px;
  15142. -}
  15143. -.category-nm{
  15144. -    max-width: 705px;
  15145. -}
  15146. -.category-nm li a{
  15147. -    padding: 0 9px;
  15148. -}
  15149. -.main-cart .discount .buttons-set{
  15150. -     width: 24%;
  15151. -}
  15152. -
  15153. -
  15154.  }
  15155.  @media all and (max-width: 767px) {
  15156.      #banner-slider-demo-5, .homepage-bar {
  15157. @@ -2708,7 +2567,8 @@ ul.sw-mobile-menu > li:first-child:hover a {
  15158.      .footer-middle .block .block-title strong{
  15159.          font-size: 14px;
  15160.      }
  15161. - .contact-info {
  15162. +
  15163. +     .contact-info {
  15164.      display: inline-block;
  15165.      width: 100%;
  15166.       }
  15167. @@ -2794,9 +2654,7 @@ ul.sw-mobile-menu > li:first-child:hover a {
  15168.      .fancybox-overlay, .fancybox-mobile{
  15169.          display: none !important;
  15170.      }
  15171. -    .main-cart form{
  15172. -        width: 100%;
  15173. -    }
  15174. +
  15175.     .filterIcon .header-container.type4,
  15176.      .filterIcon .mobile-nav.side-block,
  15177.      .filterIcon .top-container,
  15178. @@ -2886,9 +2744,6 @@ body:not(.customer-account-index) .col2-left-layout .col-left.sidebar{
  15179.      body.boxed .page {
  15180.          width: 480px
  15181.      }
  15182. -    .main-cart .page-title h1 {
  15183. -        margin: 15px 0 !important;
  15184. -    }  
  15185.      .owl-middle-narrow .owl-controls {
  15186.          display: none!important
  15187.      }
  15188. @@ -3123,8 +2978,7 @@ body:not(.customer-account-index) .col2-left-layout .col-left.sidebar{
  15189.      display: block;
  15190.      width: 100%;
  15191.      }
  15192. -    .totals .checkout-types,
  15193. -    .main-cart .checkout-types  {
  15194. +    .totals .checkout-types {
  15195.      background: none repeat scroll 0 0 rgba(0, 0, 0, 0.7);
  15196.      bottom: 0;
  15197.      height: 55px;
  15198. @@ -3134,28 +2988,13 @@ body:not(.customer-account-index) .col2-left-layout .col-left.sidebar{
  15199.      width: 100%;
  15200.      z-index: 99999;
  15201.     }
  15202. -   .main-cart .checkout-types li{
  15203. -    margin:10px 0;
  15204. -    clear: both;
  15205. -   }
  15206.     body.checkout-cart-index {
  15207.      padding-bottom: 55px;
  15208.     }
  15209.     body.checkout-cart-index #totop {
  15210.      display: none !important;
  15211.     }
  15212. -   .col1-layout .shoping-empty{
  15213. -    width: 80%;
  15214. -   }
  15215. -   .cart-blank-pg .continue-btn{
  15216. -    width: 60%;
  15217. -   }
  15218. -   .error-msg span.error-icn, .success-msg span.success-icn {
  15219. -    width: 8% !important
  15220. -   }
  15221. -   .error-msg span, .success-msg span {
  15222. -    width: 90% !important;
  15223. -   }
  15224. +
  15225.  }
  15226.  @media all and (max-width: 620px){
  15227.     /* Filter Section CSS*/
  15228. @@ -3367,7 +3206,7 @@ body:not(.customer-account-index) .col2-left-layout .col-left.sidebar{
  15229.      .header-container.type1 .header-right-area>div:first-child {
  15230.          margin: 30px 0
  15231.      }
  15232. -    .header-container.type1 .header .form-search, .header-container.type2 .header .form-search, .header-container.type3 .header .form-search, .header-container.type5 .header .form-search, .header-container.type6 .header .form-search, .header-container.type7 .header .form-search, .header-container.type8 .header .form-search {
  15233. +    .header-container.type1 .header .form-search, .header-container.type2 .header .form-search, .header-container.type3 .header .form-search, .header-container.type4 .header .form-search, .header-container.type5 .header .form-search, .header-container.type6 .header .form-search, .header-container.type7 .header .form-search, .header-container.type8 .header .form-search {
  15234.          width: 300px
  15235.      }
  15236.      .header-container.type2 .mybag-link .cart-info span {
  15237. @@ -3484,53 +3323,15 @@ body:not(.customer-account-index) .col2-left-layout .col-left.sidebar{
  15238.      .catalogsearch-result-index .category-products {
  15239.          margin: 5px 0 0;
  15240.      }
  15241. -    .col1-layout .shoping-empty{
  15242. -        width: 100%;
  15243. -        font-size: 18px;
  15244. -        margin: 10px 0 0 0;
  15245. -    }
  15246. -    .cart-blank-pg .continue-btn{
  15247. -        width: 100%;
  15248. -    }
  15249.      .payment-info-msg{
  15250.          margin: 0;
  15251.       }
  15252. -  
  15253. -}
  15254. -@media (max-width: 460px) {
  15255. -  .header-container.type4 .header .form-search{
  15256. -        width: 120px;
  15257. -        background-color: rgba(255, 255, 255, 0.98);
  15258. -   }
  15259. -
  15260. -
  15261. -    .main-cart form .cart-table{
  15262. -        margin-top: 20px;
  15263. -    }
  15264. -    .cart-area .mini-cart{
  15265. -        display: block !important;
  15266. -    }
  15267. -    .error-msg span.error-icn, .success-msg span.success-icn {
  15268. -    width: 10% !important
  15269. -   }
  15270. -   .error-msg span, .success-msg span {
  15271. -    width: 85% !important;
  15272. -   }
  15273. -   .main-cart form .cart-table{
  15274. -    margin-top:0;
  15275. -   }
  15276. -
  15277.  }
  15278.  @media (min-width: 400px) {
  15279. -    .cart-area div[id^=turpentine] {
  15280. +    .cart-area div {
  15281.          display: inline-block;
  15282.      }
  15283. -
  15284.  }
  15285. -@media all and (min-width: 400px) and (min-height: 270px) {
  15286. -  
  15287. -}
  15288. -
  15289.  @media (max-width: 400px) {
  15290.     /* .top-links-container {
  15291.          display: none;
  15292. @@ -3538,11 +3339,6 @@ body:not(.customer-account-index) .col2-left-layout .col-left.sidebar{
  15293.      .block-subscribe #advice-validate-email-newsletter_footer{
  15294.          margin-top: 31px;
  15295.      }
  15296. -  
  15297. -  .header-container.type4 .header .logo img{
  15298. -    width: 95px;
  15299. -  }
  15300. -
  15301.  }
  15302.  @media screen and(-ms-high-contrast: active), (-ms-high-contrast: none) {
  15303.      .rating-box {
  15304. @@ -3584,14 +3380,11 @@ body:not(.customer-account-index) .col2-left-layout .col-left.sidebar{
  15305.          line-height: 12px;
  15306.          white-space: nowrap
  15307.      }
  15308. -.main-cart .page-title{
  15309. -    margin: 0px 0 20px 0;
  15310.  }
  15311.  
  15312.  .header .form-search #search{
  15313.      color: #777;
  15314.  }
  15315. -}
  15316.  
  15317.  
  15318.  /* For Product Recommandation sections*/
  15319. @@ -3617,7 +3410,6 @@ body:not(.customer-account-index) .col2-left-layout .col-left.sidebar{
  15320.  .block-soldtogether-order .products-grid li.item:nth-child(3n+4){clear: left;}
  15321.  
  15322.  }
  15323. -
  15324.  @media all and (max-width: 568px) and (min-width: 480px){
  15325.      .block-soldtogether-order .products-grid li.item{
  15326.          width: 50%;
  15327. @@ -3672,23 +3464,6 @@ body:not(.customer-account-index) .col2-left-layout .col-left.sidebar{
  15328.  }
  15329.  
  15330.  @media all and (max-width: 360px){
  15331. -.mobile-nav.side-block .sw-mobile-menu li:hover > a::before{
  15332. -    background-position: -150px -160px !important;
  15333. -}
  15334. -.error-msg span.error-icn, .success-msg span.success-icn {
  15335. -    width: 12% !important
  15336. -   }
  15337. -   .error-msg span, .success-msg span {
  15338. -    width: 80% !important;
  15339. -   }
  15340. -   .main-cart .cart-collaterals .input-box input.input-text {
  15341. -    font-size: 11px;
  15342. -   }
  15343. -}
  15344. -@media all and (max-width: 320px){
  15345. -    .main-cart .cart-collaterals .input-box input.input-text{
  15346. -          width: 64%;
  15347. -    }
  15348.      .mobile-nav.side-block .sw-mobile-menu li:hover:not(.menu-item-has-children) > a:before {
  15349.          background-position: -150px -160px !important;
  15350.      }
  15351. diff --git a/skin/frontend/smartwave/porto/icons/css/porto.css b/skin/frontend/smartwave/porto/icons/css/porto.css
  15352. index b73ba57..65c5457 100644
  15353. --- a/skin/frontend/smartwave/porto/icons/css/porto.css
  15354. +++ b/skin/frontend/smartwave/porto/icons/css/porto.css
  15355. @@ -3,7 +3,7 @@
  15356.    font-style: normal;
  15357.    font-weight: normal;
  15358.    speak: none;
  15359. -  background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png');
  15360. +  background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png');
  15361.    background-repeat: no-repeat;
  15362.  
  15363.    display: inline-block;
  15364. @@ -566,9 +566,9 @@ display: none;
  15365.  .top-links-area ul.links .first {
  15366.    border-left: 0px !important;
  15367.  }
  15368. -/*.top-links-area ul.links li:nth-child(2) {
  15369. +.top-links-area ul.links li:nth-child(2) {
  15370.    display: none;
  15371. -}*/
  15372. +}
  15373.  .header-container.type4 .header {
  15374.    padding: 20px 15px !important;
  15375.  }
  15376. @@ -736,7 +736,7 @@ table.csku-sellers thead tr th {
  15377.    display: inline-block !important;
  15378.  }
  15379.  .cart-table .qty-holder, .cart-table .qty-holder > input.qty {
  15380. -width: 55px !important;
  15381. +width: 65px !important;
  15382.  }
  15383.  .filter-products .products div.item .product-image img {
  15384.    width: 155px !important;
  15385. @@ -787,6 +787,7 @@ width: 55px !important;
  15386.    margin: 0 5px 0 0;
  15387.    color: #444 !important;
  15388.  }
  15389. +
  15390.  @media (max-width:992px){
  15391.  .product-view .product-img-box {
  15392.      width: 100% !important;
  15393. @@ -881,6 +882,7 @@ width: 55px !important;
  15394.        width: 180px !important;
  15395.        margin-right: 15px !important;
  15396.      }
  15397. +
  15398.  }
  15399.  @media (max-width:640px){
  15400.  .qty-buy {
  15401. @@ -892,6 +894,7 @@ width: 55px !important;
  15402.    background: #e5e5e5;
  15403.    margin-top: 12px !important;
  15404.    padding: 5px !important;
  15405. +
  15406.  }
  15407.  .product-optns-content {
  15408.    padding-right: 15px 0 0 !important;
  15409. @@ -1016,23 +1019,12 @@ width: 55px !important;
  15410.        width: 177px !important;
  15411.      }
  15412.  }
  15413. -.cart-popup-ui .shipping-offer {
  15414. -    background: #f8eeda;
  15415. -    border: 1px solid #f9e0ab;
  15416. -    padding: 8px 10px;
  15417. -    text-align: left;
  15418. -    width: 97%;
  15419. -    line-height: 15px;
  15420. -    margin: 8px auto 0px auto;
  15421. -}
  15422. -.main-cart .shipping-offer {
  15423. -    background: #f8eeda;
  15424. -    border: 1px solid #f9e0ab;
  15425. -    padding: 8px 10px;
  15426. -    text-align: left;
  15427. -    width: 100%;
  15428. -    line-height: 15px;
  15429. -    margin: 8px auto 4px auto;
  15430. +
  15431. +.shipping-offer {
  15432. +  border: 1px solid #f9e0ab;
  15433. +  border-radius: 3px;
  15434. +  padding: 11px;
  15435. +  background: #f8eeda;
  15436.  }
  15437.  #inover {
  15438.    width: 600px;
  15439. @@ -1114,7 +1106,7 @@ a.fancybox-close:before {
  15440.      content:'';
  15441.      width: 10px;
  15442.      height: 10px;
  15443. -    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png');
  15444. +    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png');
  15445.      background-position: -199px -90px;
  15446.      background-repeat: no-repeat;
  15447.      display: inline-block;
  15448. @@ -1124,7 +1116,7 @@ a.fancybox-close:before {
  15449.      background-position: -162px 4px;
  15450.      width: 8px;
  15451.      height: 4px;
  15452. -    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png');
  15453. +    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png');
  15454.      background-repeat: no-repeat;
  15455.  }
  15456.  .header-container.type4 .main-nav ul.menu>li:hover>a:after, .header-container.type4 .main-nav ul.menu>li.act>a:after, .header-container.type4 .main-nav ul.menu>li:first-child > a:after {
  15457. @@ -1138,7 +1130,7 @@ a.fancybox-close:before {
  15458.      background-position: -198px -90px;
  15459.      width: 10px;
  15460.      height: 10px;
  15461. -    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png');
  15462. +    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png');
  15463.      background-repeat: no-repeat;
  15464.  }
  15465.  .btn-remove2:before {
  15466. @@ -1154,47 +1146,47 @@ a.fancybox-close:before {
  15467.  }
  15468.  .pager li >a.next {
  15469.      background-position: -81px -155px;
  15470. -    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png');
  15471. +    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png');
  15472.      background-repeat: no-repeat;
  15473.      transition: none;
  15474.  }
  15475.  .pager li >a.next:hover, .pager li >a.next:focus {
  15476.      background-position: -99px -155px;
  15477. -    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png');
  15478. +    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png');
  15479.      background-repeat: no-repeat;
  15480.  }
  15481.  .pager li >a.previous {
  15482.      background-position: -117px -155px;
  15483. -    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png');
  15484. +    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png');
  15485.      background-repeat: no-repeat;
  15486.      transition: none;
  15487.  }
  15488.  .pager li >a.previous:hover, .pager li >a.previous:focus {
  15489.      background-position: -135px -155px;
  15490. -    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png');
  15491. +    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png');
  15492.      background-repeat: no-repeat;
  15493.  }
  15494.  
  15495.  /* default.css classes */
  15496.  .sorter .view-mode strong .icon-mode-list:before, .sorter .view-mode a:hover .icon-mode-list:before{
  15497. -    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png');
  15498. +    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png');
  15499.      background-position: -145px -91px !important;
  15500.      background-repeat: no-repeat;
  15501.  }
  15502.  .sorter .view-mode strong .icon-mode-grid:before, .sorter .view-mode a:hover .icon-mode-grid:before{
  15503. -    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png');
  15504. +    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png');
  15505.      background-position: -73px -91px;
  15506.      background-repeat: no-repeat;
  15507.  }
  15508.  .block-layered-nav dt:before, .block-category-nav .block-title:before {
  15509.      content: '' !important;
  15510.      background-position: -67px -120px;
  15511. -    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png');
  15512. +    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png');
  15513.      background-repeat: no-repeat;
  15514.  }
  15515.  .block-layered-nav dt:hover:before, .block-category-nav .block-title:hover:before {
  15516.      background-position: -85px -120px;
  15517. -    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png');
  15518. +    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png');
  15519.      background-repeat: no-repeat;
  15520.  }
  15521.  .block-layered-nav dt.closed:before, .block-category-nav .block-title.closed:before {
  15522. @@ -1205,7 +1197,7 @@ a.fancybox-close:before {
  15523.  }
  15524.  .fa-bars:before {
  15525.      content: '';
  15526. -    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png');
  15527. +    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png');
  15528.      background-position: -126px -54px;
  15529.      background-repeat: no-repeat;
  15530.      display: inline-block;
  15531. @@ -1215,7 +1207,7 @@ a.fancybox-close:before {
  15532.  .mobile-nav.side-block .sw-mobile-menu li .open-child:after {
  15533.      content: '';
  15534.      background-position: 0 -52px !important;
  15535. -    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png') !important;
  15536. +    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png') !important;
  15537.      background-repeat: no-repeat;
  15538.      width: 18px;
  15539.      height: 18px;
  15540. @@ -1229,7 +1221,7 @@ a.fancybox-close:before {
  15541.  .mobile-nav .sw-mobile-menu > li > ul > li a:before {
  15542.      content: '';
  15543.      background-position: -160px -162px;
  15544. -    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png');
  15545. +    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png');
  15546.      background-repeat: no-repeat;
  15547.      width: 7px;
  15548.      height: 10px;
  15549. @@ -1245,7 +1237,7 @@ a.fancybox-close:before {
  15550.  .cart .discount h2:before, .cart .shipping h2:before {
  15551.      content: '' !important;
  15552.      background-position: -100px -116px;
  15553. -    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png');
  15554. +    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png');
  15555.      background-repeat: no-repeat;
  15556.      width: 7px;
  15557.      height: 5px;
  15558. @@ -1253,17 +1245,18 @@ a.fancybox-close:before {
  15559.  .cart .discount h2:hover:before,.cart .shipping h2:hover:before {
  15560.      content: '' !important;
  15561.      background-position: -118px -116px !important;
  15562. -    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png') !important;
  15563. +    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png') !important;
  15564.      background-repeat: no-repeat;
  15565.  }
  15566.  .header-container .top-links-icon:before {
  15567.      content: '';
  15568.      background-position: -108px -52px;
  15569. -    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png') !important;
  15570. +    background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png') !important;
  15571.      background-repeat: no-repeat;
  15572.      width: 8px;
  15573.      height: 6px;
  15574.  }
  15575. +
  15576.  /* media query for mobile site */
  15577.  @media only screen and (min-device-width : 320px) and (max-device-width : 480px) and (orientation : landscape) {
  15578.  .icon-search:before {
  15579. @@ -1276,6 +1269,7 @@ a.fancybox-close:before {
  15580.      background-position: -71px 0;
  15581.  }
  15582.  }
  15583. +
  15584.  @media only screen and (min-device-width : 320px) and (max-device-width : 480px) and (orientation : portrait) {
  15585.  .icon-search:before {
  15586.      content: '';
  15587. @@ -1482,7 +1476,7 @@ button.button.notify-btn{width: auto;}
  15588.    padding: 2px 0 0 0;
  15589.  }
  15590.  .free-shiphing-sec .shiping-icn{
  15591. -  background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png') 0 -184px;
  15592. +  background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png') 0 -184px;
  15593.    width: 34px;
  15594.    height: 20px;
  15595.    display: inline-block;
  15596. @@ -1667,7 +1661,6 @@ button.button.notify-btn{width: auto;}
  15597.  }
  15598.  .parallax {
  15599.      padding: 30px 0 !important;
  15600. -    margin: 0;
  15601.  }
  15602.  .parallax-slider .owl-carousel p {
  15603.      font-size: 20px !important;
  15604. diff --git a/skin/frontend/smartwave/porto/js/porto.js b/skin/frontend/smartwave/porto/js/porto.js
  15605. index 082399e..416dcb7 100644
  15606. --- a/skin/frontend/smartwave/porto/js/porto.js
  15607. +++ b/skin/frontend/smartwave/porto/js/porto.js
  15608. @@ -306,7 +306,7 @@ if($(window).width() < 768){
  15609.         }
  15610.          /* Checkout Page */
  15611.        if($(window).width() > 991){
  15612. -       // $('#discount-coupon-form input.input-text').removeAttr('placeholder');
  15613. +        $('#discount-coupon-form input.input-text').removeAttr('placeholder');
  15614.         }
  15615.       });
  15616.  /**** Footer JS End here for New Design  ****/
  15617. @@ -335,9 +335,7 @@ if($(window).width() < 768){
  15618.             $('.logIn_link').prepend(myAcc.html());    
  15619.      }
  15620.    }
  15621. -    if($width <= 460){
  15622. -          searchFld(); //For Mobile Search field.
  15623. -    }
  15624. +
  15625.  /*Cart Page Placeholder attribute JS End*/
  15626.      $(document).ready(function(){
  15627.          subcatexpand();
  15628. @@ -347,37 +345,28 @@ if($(window).width() < 768){
  15629.          }
  15630.          $(document).on('click','.filterOpen', function(){
  15631.              $(this).parents('.wrapper').addClass('filterIcon');
  15632. -            var screenHt = $(window).height(),
  15633. -                scrollTopBtn = $(this).parents('.main-container').siblings('#totop');
  15634. -              $(this).parents('body, html').css({
  15635. +            var screenHt = $(window).height();
  15636. +              $(this).parents('body').css({
  15637.                    height: screenHt,
  15638.                    overflow: "hidden"
  15639.                });
  15640.            $('.filterIcon .col2-left-layout .col-left.sidebar').fadeIn(400).css('max-height',screenHt);
  15641. -          if(scrollTopBtn.css('display') == 'block'){
  15642. -            scrollTopBtn.css('display','none');
  15643. -          }
  15644.          });
  15645.          
  15646.          $(document).on('click','.filter-cancel, .filter-apply', function(){
  15647.                       $(this).parents('.wrapper ').removeClass('filterIcon');
  15648.                       $('.col2-left-layout .col-left.sidebar').fadeOut(500);
  15649. -                     $('body, html').removeAttr('style');
  15650. -               var scrollTopBtn = $(this).parents('.main-container').siblings('#totop');
  15651. -                     if(scrollTopBtn.css('display') == 'none'){
  15652. -                         scrollTopBtn.removeAttr('style');
  15653. -                       }
  15654. +                     $('body').removeAttr('style');
  15655.                      return false;
  15656.                  });
  15657.    /**** Fliter on catalog page script Ends Here  ****/
  15658.          $(window).resize(function(){
  15659.              subcatexpand();
  15660. -            var $width = $(window).width();
  15661. -            if($width > 767){
  15662. +            if($(window).width() > 767){
  15663.                  $('.col2-left-layout .col-left.sidebar').removeAttr('style');
  15664.              }
  15665.  
  15666. -            if ($width < 992 && $width >= 768) {
  15667. +            if ($(window).width() < 992 && $(window).width() >= 768) {
  15668.  
  15669.                  if($('body').hasClass('mobile-nav-shown')){
  15670.                     $('body').removeClass('mobile-nav-shown');
  15671. @@ -419,32 +408,10 @@ if($(window).width() < 768){
  15672.                      });
  15673.                  }
  15674.              }
  15675. -            //For Seach Field Animation for mobile Device
  15676. -             if($width <= 460){
  15677. -                searchFld();
  15678. -             }
  15679. -             if ($width > 460) {
  15680. -                   $('.header .form-search #search').parent('.form-search').removeAttr('style');
  15681. -                   $('.header .form-search #search').on('focus', function(){
  15682. -                     $(this).parent('.form-search').stop().animate().removeAttr('style');
  15683. -                  }).on('blur', function(){
  15684. -                     $(this).parent('.form-search').stop().animate().removeAttr('style');
  15685. -                  });
  15686. -               }
  15687. -            });
  15688.  
  15689. +        });
  15690.  
  15691. -       //For Disable Zooming on Input focus
  15692. -        function zoomDisable() {
  15693. -            $('head meta[name=viewport]').remove();
  15694. -            $('head').prepend('<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0" />');
  15695. -        }
  15696. -
  15697. -        function zoomEnable() {
  15698. -            $('head meta[name=viewport]').remove();
  15699. -            $('head').prepend('<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=1" />');
  15700. -        }
  15701. -          $("input[type=text], textarea").mouseover(zoomDisable).mousedown(zoomEnable);
  15702. +      
  15703.  
  15704.          function subcatexpand(){
  15705.              var subcatwrap =  $('ul.subcategories'),
  15706. @@ -491,7 +458,6 @@ if($(window).width() < 768){
  15707.          
  15708.      
  15709.      })
  15710. -
  15711.  });
  15712.  
  15713.  /*
  15714. @@ -557,13 +523,3 @@ function setNewsletterCookies(type) {
  15715.      }
  15716.  }
  15717.  // Newsletter Popup Functionality - End
  15718. -// For Search Field Animation
  15719. -function searchFld(){
  15720. -        var animateWidth = jQuery('.header-container.type4 .header').width() - 65;
  15721. -                  jQuery('.header .form-search #search').on('focus', function(){
  15722. -                     jQuery(this).parent('.form-search').animate({width: animateWidth})
  15723. -                  }).on('blur', function(){
  15724. -                     jQuery(this).parent('.form-search').animate({width: '120px'})
  15725. -                  });
  15726. -                }
  15727. -
  15728. diff --git a/utils/PLAfeedCSV.php b/utils/PLAfeedCSV.php
  15729. index 541fe23..c7e6d26 100755
  15730. --- a/utils/PLAfeedCSV.php
  15731. +++ b/utils/PLAfeedCSV.php
  15732. @@ -1,14 +1,12 @@
  15733.  <?php
  15734. -$outputFile = '/var/www/magento/var/export/exportPLA_' . date('m_d_Y_His') . '.csv';
  15735. -$write = fopen($outputFile, "w");
  15736. +$rustart = getrusage();
  15737. +$time_start = microtime(true);
  15738.  
  15739. -$heads = array("id", "SKU", "Visibility", "Status", "Type", "Vendor Code", "SKU Name", "In Stock", "Manage Stock",
  15740. -                "Use Config Manage Stock", "Qty", "Category Id", "Category", "PSKU Name", "URL", "Image URL",
  15741. -                "Price", "MSRP", "Base price", "Tax", "No of Items", "Description", "Brand Name", "Delivery Details",
  15742. -                "Volumetric weight", "Shipping weight", "Vendor code", "Part Number", "Key Feature 1","Key Feature 2",
  15743. -                "Key Feature 3", "Key Feature 4", "Key Feature 5", "Special_Price", "Special_Base_Price", "Special_Price_from_date",
  15744. -                "Special_Price_to_date", "Special_Base_Price_from_date", "Special_Base_Price_to_date", " PSKU ID");
  15745. -fputcsv($write, $heads);
  15746. +$outputFile = '/var/www/magento/var/export/exportPLA_'.date('m_d_Y_His').'.csv';
  15747. +$write = fopen($outputFile,"w");
  15748. +
  15749. +$heads = array("id","SKU","Visibility","Status","Type","Vendor Code","SKU Name","In Stock","Manage Stock","Use Config Manage Stock","Qty","Category Id","Category","PSKU Name","URL","Image URL","Price","MSRP","Base price","Tax","No of Items","Description","Brand Name","Delivery Details","Volumetric weight","Shipping weight","Vendor code","Part Number","Key Feature 1","Key Feature 2","Key Feature 3","Key Feature 4","Key Feature 5","Special_Price","Special_Base_Price","Special_Price_from_date","Special_Price_to_date","Special_Base_Price_from_date","Special_Base_Price_to_date");
  15750. +fputcsv($write,$heads);
  15751.  
  15752.  require_once 'connection.php';
  15753.  
  15754. @@ -16,134 +14,294 @@ $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mys
  15755.  $dbname = 'magento';
  15756.  mysql_select_db($dbname);
  15757.  
  15758. -$sql = "SELECT DISTINCT(cpe.entity_id), cpev_8.value AS psku_id, eaov_4.value AS part_num, eaov_3.value AS num_items,
  15759. -        cpedt_4.value AS spc_base_price_todate, cpedt_3.value AS spc_base_price_fromdate, cpedt_2.value AS special_price_todate,
  15760. -        cpedt_1.value AS special_price_fromdate, cped_4.value AS special_base_price, cped_3.value AS special_price,
  15761. -        cpet_6.value AS key_feature_5, cpet_5.value AS key_feature_4, cpet_4.value AS key_feature_3, cpet_3.value AS key_feature_2,
  15762. -        cpet_2.value AS key_feature_1, vvv.display_name AS vendor_name, cpev_7.value AS ship_weight, cpev_6.value AS vol_weight,
  15763. -        eaov_2.value AS delivery_time, eaov_1.value AS brand_name, cpet_1.value AS short_desc, tc.class_name,
  15764. -        cpev_5.value AS base_price, cped_2.value AS msrp_price, cped_1.value AS cost_price, cpev_4.value AS image,
  15765. -        cpev_3.value AS url_path, cpev_2.value AS psku_name, csi.is_in_stock, csi.manage_stock,
  15766. -        csi.use_config_manage_stock, csi.qty, cpev_1.value AS name, vvv.vendor_code, cpe.sku, cpe.type_id,
  15767. -        cpei_1.value AS visible, cpei_2.value AS status
  15768. -        FROM catalog_product_entity AS cpe
  15769. -        LEFT JOIN catalog_product_entity_int AS cpei_1 ON cpei_1.entity_id = cpe.entity_id AND cpei_1.attribute_id = '102'
  15770. -        AND (cpei_1.value = '1' OR cpei_1.value = '3' OR cpei_1.value = '4')
  15771. -        LEFT JOIN catalog_product_entity_int AS cpei_2 ON cpei_2.entity_id = cpe.entity_id AND cpei_2.attribute_id = '96'
  15772. -        LEFT JOIN catalog_product_entity_int AS cpei_3 ON cpei_3.entity_id = cpe.entity_id AND cpei_3.attribute_id = '133'
  15773. -        LEFT JOIN vendor_vendordirectory_vendors AS vvv ON cpei_3.value = vvv.vendor_id  
  15774. -        LEFT JOIN catalog_product_entity_varchar AS cpev_1 ON cpev_1.entity_id = cpe.entity_id AND cpev_1.attribute_id = '71'
  15775. -        LEFT JOIN cataloginventory_stock_item AS csi ON csi.product_id = cpe.entity_id
  15776. -        LEFT JOIN catalog_product_entity_varchar AS cpev_2 ON cpev_2.entity_id = cpe.entity_id AND cpev_2.attribute_id = '511'
  15777. -        LEFT JOIN catalog_product_entity_varchar AS cpev_3 ON cpev_3.entity_id = cpe.entity_id AND cpev_3.attribute_id = '98'
  15778. -        LEFT JOIN catalog_product_entity_varchar AS cpev_4 ON cpev_4.entity_id = cpe.entity_id AND cpev_4.attribute_id = '85'
  15779. -        LEFT JOIN catalog_product_entity_decimal AS cped_1 ON cped_1.entity_id = cpe.entity_id AND cped_1.attribute_id = '75'
  15780. -        LEFT JOIN catalog_product_entity_decimal AS cped_2 ON cped_2.entity_id = cpe.entity_id AND cped_2.attribute_id = '120'
  15781. -        LEFT JOIN catalog_product_entity_varchar AS cpev_5 ON cpev_5.entity_id = cpe.entity_id AND cpev_5.attribute_id = '501'
  15782. -        LEFT JOIN catalog_product_entity_int AS cpei_4 ON cpei_4.entity_id = cpe.entity_id AND cpei_4.attribute_id = '121'
  15783. -        LEFT JOIN tax_class AS tc ON tc.class_id = cpei_4.value
  15784. -        LEFT JOIN catalog_product_entity_text AS cpet_1 ON cpet_1.entity_id = cpe.entity_id AND cpet_1.attribute_id = '73'
  15785. -        LEFT JOIN catalog_product_entity_int AS cpei_5 ON cpei_5.entity_id = cpe.entity_id AND cpei_5.attribute_id = '268'
  15786. -        LEFT JOIN eav_attribute_option_value AS eaov_1 ON eaov_1.option_id = cpei_5.value
  15787. -        LEFT JOIN catalog_product_entity_int AS cpei_6 ON cpei_6.entity_id = cpe.entity_id AND cpei_6.attribute_id = '563'
  15788. -        LEFT JOIN eav_attribute_option_value AS eaov_2 ON eaov_2.option_id = cpei_6.value
  15789. -        LEFT JOIN catalog_product_entity_varchar AS cpev_6 ON cpev_6.entity_id = cpe.entity_id AND cpev_6.attribute_id = '565'
  15790. -        LEFT JOIN catalog_product_entity_varchar AS cpev_7 ON cpev_7.entity_id = cpe.entity_id AND cpev_7.attribute_id = '271'
  15791. -        LEFT JOIN catalog_product_entity_text AS cpet_2 ON cpet_2.entity_id = cpe.entity_id AND cpet_2.attribute_id = '536'
  15792. -        LEFT JOIN catalog_product_entity_text AS cpet_3 ON cpet_3.entity_id = cpe.entity_id AND cpet_3.attribute_id = '537'
  15793. -        LEFT JOIN catalog_product_entity_text AS cpet_4 ON cpet_4.entity_id = cpe.entity_id AND cpet_4.attribute_id = '538'
  15794. -        LEFT JOIN catalog_product_entity_text AS cpet_5 ON cpet_5.entity_id = cpe.entity_id AND cpet_5.attribute_id = '539'
  15795. -        LEFT JOIN catalog_product_entity_text AS cpet_6 ON cpet_6.entity_id = cpe.entity_id AND cpet_6.attribute_id = '540'
  15796. -        LEFT JOIN catalog_product_entity_decimal AS cped_3 ON cped_3.entity_id = cpe.entity_id AND cped_3.attribute_id = '76'
  15797. -        LEFT JOIN catalog_product_entity_decimal AS cped_4 ON cped_4.entity_id = cpe.entity_id AND cped_4.attribute_id = '1648'
  15798. -        LEFT JOIN catalog_product_entity_datetime AS cpedt_1 ON cpedt_1.entity_id = cpe.entity_id AND cpedt_1.attribute_id = '77'
  15799. -        LEFT JOIN catalog_product_entity_datetime AS cpedt_2 ON cpedt_2.entity_id = cpe.entity_id AND cpedt_2.attribute_id = '78'
  15800. -        LEFT JOIN catalog_product_entity_datetime AS cpedt_3 ON cpedt_3.entity_id = cpe.entity_id AND cpedt_3.attribute_id = '1650'
  15801. -        LEFT JOIN catalog_product_entity_datetime AS cpedt_4 ON cpedt_4.entity_id = cpe.entity_id AND cpedt_4.attribute_id = '1651'
  15802. -        LEFT JOIN catalog_product_entity_int AS cpei_7 ON cpei_7.entity_id = cpe.entity_id AND cpei_7.attribute_id = '517'
  15803. -        LEFT JOIN eav_attribute_option_value AS eaov_3 ON eaov_3.option_id = cpei_7.value
  15804. -        LEFT JOIN catalog_product_entity_int AS cpei_8 ON cpei_8.entity_id = cpe.entity_id AND cpei_8.attribute_id = '413'
  15805. -        LEFT JOIN eav_attribute_option_value AS eaov_4 ON eaov_4.option_id = cpei_8.value
  15806. -        LEFT JOIN catalog_product_relation AS cpr ON cpe.entity_id = cpr.child_id
  15807. -        LEFT JOIN catalog_product_entity_varchar AS cpev_8 ON cpr.parent_id = cpev_8.entity_id AND cpev_8.attribute_id = '141'";
  15808. +$sql = "select entity_id, sku, type_id from catalog_product_entity";
  15809.  $result = mysql_query($sql);
  15810. -
  15811. -while ($row = mysql_fetch_array($result)) {
  15812. +while($row1 =mysql_fetch_array($result)){
  15813.      $data = array();
  15814. -    $prod = $row['entity_id'];
  15815. -    $sku = $row['sku'];
  15816. -    $type = $row['type_id'];
  15817. -    
  15818. -    if ($row['visible'] == '4') {
  15819. -        $visible = 'Catalog Search';
  15820. -    } else {
  15821. -        if ($row['visible'] == '3') {
  15822. -            $visible = 'Search';
  15823. -        } else {
  15824. -            $visible = 'Not Visible Individually';
  15825. -        }
  15826. -    }
  15827. -    $row1 = mysql_fetch_array(mysql_query("SELECT cce.path, ccp.category_id FROM catalog_category_product AS ccp
  15828. -                                          LEFT JOIN  catalog_category_entity AS cce ON cce.entity_id = ccp.category_id
  15829. -                                          WHERE product_id = '" . $prod . "';"));
  15830. -    $categoryId = $row1['category_id'];
  15831. -    $categoryIds = str_replace('/', ',', $row1['path']);
  15832. -    $query = mysql_query("SELECT value from catalog_category_entity_varchar where entity_id in (" . $categoryIds . ") and attribute_id = '41';");
  15833. +    $prod = $row1['entity_id'];
  15834. +    $sku = $row1['sku'];
  15835. +    $type = $row1['type_id'];
  15836. +    // visibility check
  15837. +    $sql = "SELECT value from catalog_product_entity_int where entity_id = '". $prod ."' and attribute_id = '102'";
  15838. +    $query = mysql_query($sql);
  15839. +    $row2=mysql_fetch_array($query);
  15840. +    if($row2['value'] == '4' || $row2['value'] == '3' || $row2['value'] == '1')
  15841. +    {
  15842. +        // status check
  15843. +        $sql = "SELECT value from catalog_product_entity_int where entity_id = '".$prod."' and attribute_id = '96'";
  15844. +        $query = mysql_query($sql);
  15845. +        $row=mysql_fetch_array($query);
  15846. +        //if($row['value'] == 1)
  15847. +        //{
  15848. +            //id
  15849. +            $data[] = $prod;
  15850. +            //sku
  15851. +            $data[] = $sku;
  15852. +            //visibility
  15853. +           if($row2['value'] == '4')
  15854. +               $data[] = 'Catalog Search';
  15855. +           else if($row2['value'] == '3')
  15856. +               $data[] = 'Search';
  15857. +           else
  15858. +               $data[] = 'Not Visible Individually';
  15859. +            //$data[] = ($row2['value'] == '4')?'Catalog Search':'Search';
  15860. +          
  15861. +           //status
  15862. +           $data[] = $row['value'];
  15863. +            //Type
  15864. +            $data[] = $type;
  15865. +           //vendor
  15866. +           $sql = "SELECT vendor_code from vendor_vendordirectory_vendors,catalog_product_entity_int where entity_id = '".$prod."' and attribute_id = '133' and value=vendor_id";
  15867. +            $query = mysql_query($sql);
  15868. +            $row=mysql_fetch_array($query);
  15869. +           $data[] = $row['vendor_code'];
  15870. +            //name
  15871. +            $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '".$prod."' and attribute_id = '71'";
  15872. +            $query = mysql_query($sql);
  15873. +            $row=mysql_fetch_array($query);
  15874. +            $name = $row['value'];
  15875. +            $name =str_replace(","," ",$name);
  15876. +            $name =str_replace("\n"," ",$name);
  15877. +            $name =str_replace("\r"," ",$name);
  15878. +            $name =str_replace("."," ",$name);
  15879. +            $data[] = $name;
  15880. +            
  15881. +           //In stock
  15882. +           $sql = "SELECT is_in_stock,manage_stock,use_config_manage_stock,qty from cataloginventory_stock_item where product_id = '".$prod."'";
  15883. +            $query = mysql_query($sql);
  15884. +            $row=mysql_fetch_array($query);
  15885. +           $data[] = $row['is_in_stock'];
  15886. +
  15887. +           //Manage Stock
  15888. +           $data[] = $row['manage_stock'];
  15889. +
  15890. +           //Use Config Manage Stock
  15891. +           $data[] = $row['use_config_manage_stock'];
  15892. +      
  15893. +           //Quantity
  15894. +           $data[] = $row['qty'];
  15895.  
  15896. -    $c3 = array();
  15897. -    if ($query) {
  15898. -        while ($row1 = mysql_fetch_array($query)) {
  15899. -            $c3[] = $row1['value'];
  15900. -        }
  15901. -        unset($c3[0], $c3[1], $c3[2]);
  15902. +            //category
  15903. +            $sql = "SELECT category_id from catalog_category_product where product_id = '".$prod."'";
  15904. +            $query = mysql_query($sql);
  15905. +            $row=mysql_fetch_array($query);
  15906. +            $categoryId = $row['category_id'];
  15907. +            $data[] = $categoryId;
  15908. +            
  15909. +            //categoryPath
  15910. +            $sql = "SELECT path from catalog_category_entity where entity_id = '".$categoryId."'";
  15911. +            $query = mysql_query($sql);
  15912. +            $row=mysql_fetch_array($query);
  15913. +            $categoryIds = $row['path'];
  15914. +            $c1 = explode("/",$categoryIds);
  15915. +            $categoryIds = str_replace('/', ',', $categoryIds);
  15916. +            $c3 = array();
  15917. +            $sql = "SELECT value from catalog_category_entity_varchar where entity_id in (". $categoryIds .") and attribute_id = '41'";
  15918. +            $query = mysql_query($sql);
  15919. +            while($row =mysql_fetch_array($query)){
  15920. +                $c3[] = $row['value'];
  15921. +            }
  15922. +            unset($c3[0]);unset($c3[1]);unset($c3[2]);
  15923. +            $categoryPath = implode(" > ",$c3);
  15924. +            $categoryPath =str_replace(","," ",$categoryPath);
  15925. +            $categoryPath =str_replace("\n"," ",$categoryPath);
  15926. +            $categoryPath =str_replace("\r"," ",$categoryPath);
  15927. +            $categoryPath =str_replace("."," ",$categoryPath);
  15928. +            $data[] = $categoryPath;
  15929. +            
  15930. +            //psku name
  15931. +            $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '".$prod."' and attribute_id = '511'";
  15932. +            $query = mysql_query($sql);
  15933. +            $row=mysql_fetch_array($query);
  15934. +            $name = $row['value'];
  15935. +            $name =str_replace(","," ",$name);
  15936. +            $name =str_replace("\n"," ",$name);
  15937. +            $name =str_replace("\r"," ",$name);
  15938. +            $name =str_replace("."," ",$name);
  15939. +            $data[] = $name;
  15940. +            
  15941. +            //url_path
  15942. +            $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '".$prod."' and attribute_id = '98'";
  15943. +            $query = mysql_query($sql);
  15944. +            $row=mysql_fetch_array($query);
  15945. +            $data[] = "http://www.tolexo.com/".$row['value'];
  15946. +            
  15947. +            //Image
  15948. +            $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '".$prod."' and attribute_id = '85'";
  15949. +            $query = mysql_query($sql);
  15950. +            $row=mysql_fetch_array($query);
  15951. +            $data[] = "http://img.tolexokit.com/media/catalog/product".$row['value'];
  15952. +            
  15953. +            //cost_price
  15954. +            $sql = "SELECT value from catalog_product_entity_decimal where entity_id = '".$prod."' and attribute_id = '75'";
  15955. +            $query = mysql_query($sql);
  15956. +            $row=mysql_fetch_array($query);
  15957. +            $price = $row['value'];
  15958. +//            if($price==''){
  15959. +//                $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '".$prod."' and attribute_id = '172'";
  15960. +//                $query = mysql_query($sql);
  15961. +//                $row=mysql_fetch_array($query);
  15962. +//                $price = $row['value'];
  15963. +//            }
  15964. +            $data[] = $price;
  15965. +            
  15966. +            //msrp_price
  15967. +            $sql = "SELECT value from catalog_product_entity_decimal where entity_id = '".$prod."' and attribute_id = '120'";
  15968. +            $query = mysql_query($sql);
  15969. +            $row=mysql_fetch_array($query);
  15970. +            $price = $row['value'];
  15971. +            $data[] = $price;
  15972. +            
  15973. +            //base_price
  15974. +            $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '".$prod."' and attribute_id = '501'";
  15975. +            $query = mysql_query($sql);
  15976. +            $row=mysql_fetch_array($query);
  15977. +            $data[] = $row['value'];
  15978. +            
  15979. +            //tax
  15980. +            $sql = "SELECT tax_class.class_name from tax_class LEFT JOIN catalog_product_entity_int ON tax_class.class_id = catalog_product_entity_int.value where catalog_product_entity_int.attribute_id=121 AND catalog_product_entity_int.entity_id='".$prod."'";
  15981. +            $query = mysql_query($sql);
  15982. +            $row=mysql_fetch_array($query);
  15983. +            $data[] = $row['class_name'];
  15984. +            
  15985. +            //number_of_items
  15986. +            $sql = "SELECT eav_attribute_option_value.value from eav_attribute_option_value LEFT JOIN catalog_product_entity_int ON eav_attribute_option_value.option_id = catalog_product_entity_int.value where catalog_product_entity_int.attribute_id=517 AND catalog_product_entity_int.entity_id='".$prod."'";
  15987. +            $query = mysql_query($sql);
  15988. +            $row=mysql_fetch_array($query);
  15989. +            $data[] = $row['value'];
  15990. +            
  15991. +            //short_description
  15992. +            $sql = "SELECT value from catalog_product_entity_text where entity_id = '".$prod."' and attribute_id = '73'";
  15993. +            $query = mysql_query($sql);
  15994. +            $row=mysql_fetch_array($query);
  15995. +            $name = $row['value'];
  15996. +            $name =str_replace(","," ",$name);
  15997. +            $name =str_replace("\n"," ",$name);
  15998. +            $name =str_replace("\r"," ",$name);
  15999. +            $name =str_replace("."," ",$name);
  16000. +            $data[] = $name;
  16001. +            
  16002. +            //brand_name
  16003. +            $sql = "SELECT eav_attribute_option_value.value from eav_attribute_option_value LEFT JOIN catalog_product_entity_int ON eav_attribute_option_value.option_id = catalog_product_entity_int.value where catalog_product_entity_int.attribute_id=268 AND catalog_product_entity_int.entity_id='".$prod."'";
  16004. +            $query = mysql_query($sql);
  16005. +            $row=mysql_fetch_array($query);
  16006. +            $data[] = $row['value'];
  16007. +            
  16008. +            //delivery_time
  16009. +            $sql = "SELECT eav_attribute_option_value.value from eav_attribute_option_value LEFT JOIN catalog_product_entity_int ON eav_attribute_option_value.option_id = catalog_product_entity_int.value where catalog_product_entity_int.attribute_id=563 AND catalog_product_entity_int.entity_id='".$prod."'";
  16010. +            $query = mysql_query($sql);
  16011. +            $row=mysql_fetch_array($query);
  16012. +            $data[] = $row['value'];
  16013. +            
  16014. +            //volumetric_weight
  16015. +            $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '".$prod."' and attribute_id = '565'";
  16016. +            $query = mysql_query($sql);
  16017. +            $row=mysql_fetch_array($query);
  16018. +            $data[] = $row['value'];
  16019. +            
  16020. +            //shipping_weight
  16021. +            $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '".$prod."' and attribute_id = '271'";
  16022. +            $query = mysql_query($sql);
  16023. +            $row=mysql_fetch_array($query);
  16024. +            $data[] = $row['value'];
  16025. +            
  16026. +            //vendor_id
  16027. +            $sql = "SELECT vendor_vendordirectory_vendors.display_name from vendor_vendordirectory_vendors LEFT JOIN catalog_product_entity_int ON vendor_vendordirectory_vendors.vendor_id = catalog_product_entity_int.value where catalog_product_entity_int.attribute_id=133 AND catalog_product_entity_int.entity_id='".$prod."'";
  16028. +            $query = mysql_query($sql);
  16029. +            $row=mysql_fetch_array($query);
  16030. +            $data[] = $row['display_name'];
  16031. +            
  16032. +            //part_number
  16033. +            $sql = "SELECT eav_attribute_option_value.value from eav_attribute_option_value LEFT JOIN catalog_product_entity_int ON eav_attribute_option_value.option_id = catalog_product_entity_int.value where catalog_product_entity_int.attribute_id=413 AND catalog_product_entity_int.entity_id='".$prod."'";
  16034. +            $query = mysql_query($sql);
  16035. +            $row=mysql_fetch_array($query);
  16036. +            $data[] = $row['value'];
  16037. +            
  16038. +            //key_features_1
  16039. +            $sql = "SELECT value from catalog_product_entity_text where entity_id = '".$prod."' and attribute_id = '536'";
  16040. +            $query = mysql_query($sql);
  16041. +            $row=mysql_fetch_array($query);
  16042. +            $data[] = $row['value'];
  16043. +            
  16044. +            //key_features_2
  16045. +            $sql = "SELECT value from catalog_product_entity_text where entity_id = '".$prod."' and attribute_id = '537'";
  16046. +            $query = mysql_query($sql);
  16047. +            $row=mysql_fetch_array($query);
  16048. +            $data[] = $row['value'];
  16049. +            
  16050. +            //key_features_3
  16051. +            $sql = "SELECT value from catalog_product_entity_text where entity_id = '".$prod."' and attribute_id = '538'";
  16052. +            $query = mysql_query($sql);
  16053. +            $row=mysql_fetch_array($query);
  16054. +            $data[] = $row['value'];
  16055. +            
  16056. +            //key_features_4
  16057. +            $sql = "SELECT value from catalog_product_entity_text where entity_id = '".$prod."' and attribute_id = '539'";
  16058. +            $query = mysql_query($sql);
  16059. +            $row=mysql_fetch_array($query);
  16060. +            $data[] = $row['value'];
  16061. +            
  16062. +            //key_features_5
  16063. +            $sql = "SELECT value from catalog_product_entity_text where entity_id = '".$prod."' and attribute_id = '540'";
  16064. +            $query = mysql_query($sql);
  16065. +            $row=mysql_fetch_array($query);
  16066. +            $data[] = $row['value'];
  16067. +            
  16068. +            //Special_Price
  16069. +            $sql = "SELECT value from catalog_product_entity_decimal where entity_id = '".$prod."' and attribute_id = '76'";
  16070. +            $query = mysql_query($sql);
  16071. +            $row=mysql_fetch_array($query);
  16072. +            $data[] = $row['value'];
  16073. +            
  16074. +            //Special_Base_Price
  16075. +            $sql = "SELECT value from catalog_product_entity_decimal where entity_id = '".$prod."' and attribute_id = '1648'";
  16076. +            $query = mysql_query($sql);
  16077. +            $row=mysql_fetch_array($query);
  16078. +            $data[] = $row['value'];
  16079. +            
  16080. +            //Special_Price_from_date
  16081. +            $sql = "SELECT value from catalog_product_entity_datetime where entity_id = '".$prod."' and attribute_id = '77'";
  16082. +            $query = mysql_query($sql);
  16083. +            $row=mysql_fetch_array($query);
  16084. +            $data[] = $row['value'];
  16085. +            
  16086. +            //Special_Price_to_date
  16087. +            $sql = "SELECT value from catalog_product_entity_datetime where entity_id = '".$prod."' and attribute_id = '78'";
  16088. +            $query = mysql_query($sql);
  16089. +            $row=mysql_fetch_array($query);
  16090. +            $data[] = $row['value'];
  16091. +            
  16092. +            //Special_Base_Price_from_date
  16093. +            $sql = "SELECT value from catalog_product_entity_datetime where entity_id = '".$prod."' and attribute_id = '1650'";
  16094. +            $query = mysql_query($sql);
  16095. +            $row=mysql_fetch_array($query);
  16096. +            $data[] = $row['value'];
  16097. +            
  16098. +            //Special_Base_Price_to_date
  16099. +            $sql = "SELECT value from catalog_product_entity_datetime where entity_id = '".$prod."' and attribute_id = '1651'";
  16100. +            $query = mysql_query($sql);
  16101. +            $row=mysql_fetch_array($query);
  16102. +            $data[] = $row['value'];
  16103. +            
  16104. +            
  16105. +            fputcsv($write,$data);
  16106. +      //  }
  16107. +        
  16108.      }
  16109. -    
  16110. -    $data[] = $prod;
  16111. -    $data[] = $sku;
  16112. -    $data[] = $visible;
  16113. -    $data[] = $row['status'];
  16114. -    $data[] = $type;
  16115. -    $data[] = $row['vendor_code'];
  16116. -    $data[] = processString($row['name']);
  16117. -    $data[] = $row['is_in_stock'];
  16118. -    $data[] = $row['manage_stock'];
  16119. -    $data[] = $row['use_config_manage_stock'];
  16120. -    $data[] = $row['qty'];
  16121. -    $data[] = $categoryId;
  16122. -    $data[] = processString(implode(" > ", $c3));
  16123. -    $data[] = processString($row['psku_name']);
  16124. -    $data[] = "http://www.tolexo.com/" . $row['url_path'];
  16125. -    $data[] = "http://img.tolexokit.com/media/catalog/product" . $row['image'];
  16126. -    $data[] = $row['cost_price'];
  16127. -    $data[] = $row['msrp_price'];
  16128. -    $data[] = $row['base_price'];
  16129. -    $data[] = $row['class_name'];
  16130. -    $data[] = $row['num_items'];
  16131. -    $data[] = processString($row['short_desc']);
  16132. -    $data[] = $row['brand_name'];
  16133. -    $data[] = $row['delivery_time'];
  16134. -    $data[] = $row['vol_weight'];
  16135. -    $data[] = $row['ship_weight'];
  16136. -    $data[] = $row['vendor_name'];
  16137. -    $data[] = $row['part_num'];
  16138. -    $data[] = $row['key_feature_1'];
  16139. -    $data[] = $row['key_feature_2'];
  16140. -    $data[] = $row['key_feature_3'];
  16141. -    $data[] = $row['key_feature_4'];
  16142. -    $data[] = $row['key_feature_5'];
  16143. -    $data[] = $row['special_price'];
  16144. -    $data[] = $row['special_base_price'];
  16145. -    $data[] = $row['special_price_fromdate'];
  16146. -    $data[] = $row['special_price_todate'];
  16147. -    $data[] = $row['spc_base_price_fromdate'];
  16148. -    $data[] = $row['spc_base_price_todate'];
  16149. -    $data[] = $row['psku_id'];
  16150. -    fputcsv($write, $data);
  16151.  }
  16152. -
  16153.  fclose($write);
  16154.  
  16155. -function processString($str)
  16156. -{
  16157. -    return str_replace(array(",", "\n", "\r", "."), " ", $str);
  16158. -}
  16159. \ No newline at end of file
  16160. +$time_end = microtime(true);
  16161. +$execution_time = ($time_end - $time_start)/60;
  16162. +$ru = getrusage();
  16163. +echo 'Total clock Time: '.$execution_time." Mins\n";
  16164. +echo "This process used " . rutime($ru, $rustart, "utime") . " ms for its computations\n";
  16165. +echo "It spent " . rutime($ru, $rustart, "stime") . " ms in system calls\n";
  16166. +echo 'PLA export Done.'."\n\n";
  16167. +
  16168. +
  16169. +function rutime($ru, $rus, $index) {
  16170. +    return ($ru["ru_$index.tv_sec"]*1000 + intval($ru["ru_$index.tv_usec"]/1000))
  16171. +     -  ($rus["ru_$index.tv_sec"]*1000 + intval($rus["ru_$index.tv_usec"]/1000));
  16172. +}
  16173. +?>
  16174. diff --git a/utils/PLAfeedXML.php b/utils/PLAfeedXML.php
  16175. index 7b25982..ee19786 100755
  16176. --- a/utils/PLAfeedXML.php
  16177. +++ b/utils/PLAfeedXML.php
  16178. @@ -1,19 +1,6 @@
  16179.  <?php
  16180.  $data = '<?xml version="1.0"?>';
  16181. -$data .= '<rss xmlns:g="http://base.google.com/ns/1.0" xmlns:c="http://base.google.com/cns/1.0" version="2.0">'
  16182. -      . '<channel>'
  16183. -      . '<title>Online Shopping of Industrial Goods, Fasteners,Power Tools, Safety Equipments and More. | Tolexo.com</title>'
  16184. -      . '<description>Buy over 50,000+ industrial products at lowest price and best quality on Tolexo.com. Shop online for fasteners, measuring Instruments,testing instruments, occupational health &amp; safety products,power tools, hand tools,cutting tools and more!</description>'
  16185. -      . '<link>http://www.tolexo.com</link>'
  16186. -      . '<language>en-us</language>'
  16187. -      . '<ttl>60</ttl>'
  16188. -      . '<copyright>2014 Tolexo. All Rights Reserved.</copyright>'
  16189. -      . '<image>'
  16190. -      . '<url>http://d2ulloqlm1pj3b.cloudfront.net/skin/frontend/argento/argento/images/tolexo-logo.gif</url>'
  16191. -      . '<title>Tolexo.com</title>'
  16192. -      . '<link>http://www.tolexo.com</link>'
  16193. -      . '<description>One stop shop for all Industrial Goods</description>'
  16194. -      . '</image>';
  16195. +$data .= '<rss xmlns:g="http://base.google.com/ns/1.0" xmlns:c="http://base.google.com/cns/1.0" version="2.0">' . '<channel>' . '<title>Online Shopping of Industrial Goods, Fasteners,Power Tools, Safety Equipments and More. | Tolexo.com</title>' . '<description>Buy over 50,000+ industrial products at lowest price and best quality on Tolexo.com. Shop online for fasteners, measuring Instruments,testing instruments, occupational health &amp; safety products,power tools, hand tools,cutting tools and more!</description>' . '<link>http://www.tolexo.com</link>' . '<language>en-us</language>' . '<ttl>60</ttl>' . '<copyright>2014 Tolexo. All Rights Reserved.</copyright>' . '<image>' . '<url>http://d2ulloqlm1pj3b.cloudfront.net/skin/frontend/argento/argento/images/tolexo-logo.gif</url>' . '<title>Tolexo.com</title>' . '<link>http://www.tolexo.com</link>' . '<description>One stop shop for all Industrial Goods</description>' . '</image>';
  16196.  
  16197.  require_once 'connection.php';
  16198.  
  16199. @@ -21,106 +8,419 @@ $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mys
  16200.  $dbname = 'magento';
  16201.  mysql_select_db($dbname);
  16202.  
  16203. -$sql = "SELECT DISTINCT(cpe.entity_id), cpet_6.value AS description, csi.qty, csi.is_in_stock, csi.manage_stock, csi.use_config_manage_stock,  
  16204. -       cpei_7.value AS top_shopping_nw, cpev_4.value AS product_promo, cpei_6.value AS shopping_nw, eaov_3.value AS part_num,
  16205. -       cpet_5.value AS key_feature_5, cpet_4.value AS key_feature_4, cpet_3.value AS key_feature_3, cpet_2.value AS key_feature_2,
  16206. -       cpet_1.value AS key_feature_1, eaov_2.value AS brand_name, eaov_1.value AS num_items, cped_2.value AS spl_price, type_id,
  16207. -       cpev_3.value AS image_url, cpev_2.value AS name, cpev_1.value AS landingurl, cped_1.value AS price, cpe.sku
  16208. -       FROM catalog_product_entity AS cpe
  16209. -       INNER JOIN catalog_product_entity_int AS cpei_1 ON cpei_1.entity_id = cpe.entity_id AND cpei_1.attribute_id = '102'
  16210. -       AND cpei_1.value = '4'
  16211. -       INNER JOIN catalog_product_entity_int AS cpei_2 ON cpei_2.entity_id = cpe.entity_id AND cpei_2.attribute_id = '96'
  16212. -       AND cpei_2.value = '1'
  16213. -       INNER JOIN catalog_product_entity_decimal AS cped_1 ON cped_1.entity_id = cpe.entity_id AND cped_1.attribute_id = '75'
  16214. -       AND cped_1.value > '0'
  16215. -       INNER JOIN catalog_product_entity_varchar AS cpev_1 ON cpev_1.entity_id = cpe.entity_id AND cpev_1.attribute_id = '98'
  16216. -       AND cpev_1.value IS NOT NULL
  16217. -       LEFT JOIN catalog_product_entity_varchar AS cpev_2 ON cpev_2.entity_id = cpe.entity_id AND cpev_2.attribute_id = '71'
  16218. -       AND cpev_2.value IS NOT NULL
  16219. -       LEFT JOIN catalog_product_entity_varchar AS cpev_3 ON cpev_3.entity_id = cpe.entity_id AND cpev_3.attribute_id = '85'
  16220. -       AND cpev_3.value IS NOT NULL
  16221. -       LEFT JOIN catalog_product_entity_decimal AS cped_2 ON cped_2.entity_id = cpe.entity_id AND cped_2.attribute_id = '120   '
  16222. -       AND cped_2.value > '0'
  16223. -       LEFT JOIN catalog_product_entity_int AS cpei_3 ON cpei_3.entity_id = cpe.entity_id AND cpei_3.attribute_id = '517'
  16224. -       LEFT JOIN eav_attribute_option_value AS eaov_1 ON eaov_1.option_id = cpei_3.value
  16225. -       LEFT JOIN catalog_product_entity_int AS cpei_4 ON cpei_4.entity_id = cpe.entity_id AND cpei_4.attribute_id = '268'
  16226. -       LEFT JOIN eav_attribute_option_value AS eaov_2 ON eaov_2.option_id = cpei_4.value
  16227. -       LEFT JOIN catalog_product_entity_text AS cpet_1 ON cpet_1.entity_id = cpe.entity_id AND cpet_1.attribute_id = '536'
  16228. -       LEFT JOIN catalog_product_entity_text AS cpet_2 ON cpet_2.entity_id = cpe.entity_id AND cpet_2.attribute_id = '537'
  16229. -       LEFT JOIN catalog_product_entity_text AS cpet_3 ON cpet_3.entity_id = cpe.entity_id AND cpet_3.attribute_id = '538'
  16230. -       LEFT JOIN catalog_product_entity_text AS cpet_4 ON cpet_4.entity_id = cpe.entity_id AND cpet_4.attribute_id = '539'
  16231. -       LEFT JOIN catalog_product_entity_text AS cpet_5 ON cpet_5.entity_id = cpe.entity_id AND cpet_5.attribute_id = '540'
  16232. -       LEFT JOIN catalog_product_entity_int AS cpei_5 ON cpei_5.entity_id = cpe.entity_id AND cpei_5.attribute_id = '413'
  16233. -        LEFT JOIN catalog_product_entity_text AS cpet_6 ON cpet_6.entity_id = cpe.entity_id AND cpet_6.attribute_id = '73'
  16234. -       LEFT JOIN eav_attribute_option_value AS eaov_3 ON eaov_3.option_id = cpei_5.value
  16235. -       LEFT JOIN catalog_product_entity_int AS cpei_6 ON cpei_6.entity_id = cpe.entity_id AND cpei_6.attribute_id = ''
  16236. -       LEFT JOIN catalog_product_entity_varchar AS cpev_4 ON cpev_4.entity_id = cpe.entity_id AND cpev_4.attribute_id = ''
  16237. -       LEFT JOIN catalog_product_entity_int AS cpei_7 ON cpei_7.entity_id = cpe.entity_id AND cpei_7.attribute_id = '774'
  16238. -       LEFT JOIN cataloginventory_stock_item AS csi ON csi.product_id = cpe.entity_id";
  16239. +// code for getting attribute code for show in shopping network attribute
  16240. +$sqlattribute = "SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'show_in_shopping_network'";
  16241. +$resultattribute = mysql_query($sqlattribute);
  16242. +$rowattribute = mysql_fetch_array($resultattribute);
  16243. +$shop_attr_id = $rowattribute['attribute_id'];
  16244. +
  16245. +// code for getting attribute code for Product Promo
  16246. +$sqlattribute = "SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'product_promo'";
  16247. +$resultattribute = mysql_query($sqlattribute);
  16248. +$rowattribute = mysql_fetch_array($resultattribute);
  16249. +$product_promo_attr_id = $rowattribute['attribute_id'];
  16250. +
  16251. +// code for getting attribute code for Top Products in Shopping Nw
  16252. +$sqlattribute = "SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'top_prod_shop_nw'";
  16253. +$resultattribute = mysql_query($sqlattribute);
  16254. +$rowattribute = mysql_fetch_array($resultattribute);
  16255. +$top_prod_shop_nw_attr_id = $rowattribute['attribute_id'];
  16256. +
  16257. +$sql = "select entity_id, sku from catalog_product_entity";
  16258.  $result = mysql_query($sql);
  16259.  
  16260. -while ($row = mysql_fetch_array($result)) {
  16261. -    $prod = $row['entity_id'];
  16262. -    $price = $row['price'];
  16263. -    $landingUrl = $row['landingurl'];
  16264. -    $splprice = $row['spl_price'];
  16265. -    $brandName = processString($row['brand_name']);
  16266. -    $top_prod_shop_nw = $row['top_shopping_nw'];
  16267. +while ($row1 = mysql_fetch_array($result)) {
  16268. +    $prod = $row1['entity_id'];
  16269.      
  16270. -    $row1 = mysql_fetch_array(mysql_query("SELECT cce.path FROM catalog_category_product AS ccp
  16271. -                                          LEFT JOIN  catalog_category_entity AS cce ON cce.entity_id = ccp.category_id
  16272. -                                          WHERE product_id = '" . $prod . "';"));
  16273. -    $categoryIds = $row1['path'];
  16274. -    $categoryIds = str_replace('/', ',', $categoryIds);
  16275. -    $c3 = array();
  16276. -    $query = mysql_query("SELECT value from catalog_category_entity_varchar where entity_id in (" . $categoryIds . ") and attribute_id = '41'");
  16277. -    if ($query) {
  16278. -        while ($row1 = mysql_fetch_array($query)) {
  16279. -            $c3[] = $row1['value'];
  16280. +    // visibility check
  16281. +    $sql = "SELECT value from catalog_product_entity_int where entity_id = '" . $prod . "' and attribute_id = '102'";
  16282. +    $query = mysql_query($sql);
  16283. +    $row2 = mysql_fetch_array($query);
  16284. +    if ($row2['value'] == '4') {
  16285. +        // status check
  16286. +        $sql = "SELECT value from catalog_product_entity_int where entity_id = '" . $prod . "' and attribute_id = '96'";
  16287. +        $query = mysql_query($sql);
  16288. +        $row = mysql_fetch_array($query);
  16289. +        if ($row['value'] == 1) {
  16290. +            // price check
  16291. +            $sql = "SELECT value from catalog_product_entity_decimal where entity_id = '" . $prod . "' and attribute_id = '75'";
  16292. +            $query = mysql_query($sql);
  16293. +            $row = mysql_fetch_array($query);
  16294. +            $price = $row['value'];
  16295. +            
  16296. +            if ($price > 0) {
  16297. +                // url check
  16298. +                $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '" . $prod . "' and attribute_id = '98'";
  16299. +                $query = mysql_query($sql);
  16300. +                $row = mysql_fetch_array($query);
  16301. +                $landingUrl = $row['value'];
  16302. +                
  16303. +                if ($landingUrl) {
  16304. +                    $data .= '<item>';
  16305. +                    // id
  16306. +                    $data .= '<g:id>';
  16307. +                    $data .= $row1['sku'];
  16308. +                    $data .= '</g:id>';
  16309. +                    
  16310. +                    // name
  16311. +                    $data .= '<title><![CDATA[';
  16312. +                    $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '" . $prod . "' and attribute_id = '71'";
  16313. +                    $query = mysql_query($sql);
  16314. +                    $row = mysql_fetch_array($query);
  16315. +                    $name = $row['value'];
  16316. +                    $name = str_replace(",", " ", $name);
  16317. +                    $name = str_replace("\n", " ", $name);
  16318. +                    $name = str_replace("\r", " ", $name);
  16319. +                    $name = str_replace(".", " ", $name);
  16320. +                    $name = preg_replace('/\x{00B0}/u', " degrees ", $name);
  16321. +                    if (strlen($name) > 150)
  16322. +                        $name = substr($name, 0, 149);
  16323. +                    $skuName = $name;
  16324. +                    $data .= $name;
  16325. +                    $data .= ']]></title>';
  16326. +                    
  16327. +                    // category
  16328. +                    // $data .='<categoryId><![CDATA[';
  16329. +                    $sql = "SELECT category_id from catalog_category_product where product_id = '" . $prod . "'";
  16330. +                    $query = mysql_query($sql);
  16331. +                    $row = mysql_fetch_array($query);
  16332. +                    $categoryId = $row['category_id'];
  16333. +                    // $data .= $categoryId;
  16334. +                    // $data .=']]></categoryId>';
  16335. +                    
  16336. +                    // categoryPath
  16337. +                    $data .= '<g:product_type><![CDATA[';
  16338. +                    $sql = "SELECT path from catalog_category_entity where entity_id = '" . $categoryId . "'";
  16339. +                    $query = mysql_query($sql);
  16340. +                    $row = mysql_fetch_array($query);
  16341. +                    $categoryIds = $row['path'];
  16342. +                    $c1 = explode("/", $categoryIds);
  16343. +                    $categoryIds = str_replace('/', ',', $categoryIds);
  16344. +                    $c3 = array();
  16345. +                    $sql = "SELECT value from catalog_category_entity_varchar where entity_id in (" . $categoryIds . ") and attribute_id = '41'";
  16346. +                    $query = mysql_query($sql);
  16347. +                    while ($row = mysql_fetch_array($query)) {
  16348. +                        $c3[] = $row['value'];
  16349. +                    }
  16350. +                    unset($c3[0]);
  16351. +                    unset($c3[1]);
  16352. +                    unset($c3[2]);
  16353. +                    $categoryPath = implode(" &gt; ", $c3);
  16354. +                    $categoryPath = str_replace(",", " ", $categoryPath);
  16355. +                    $categoryPath = str_replace("\n", " ", $categoryPath);
  16356. +                    $categoryPath = str_replace("\r", " ", $categoryPath);
  16357. +                    $categoryPath = str_replace(".", " ", $categoryPath);
  16358. +                    $data .= $categoryPath;
  16359. +                    $data .= ']]></g:product_type>';
  16360. +                    
  16361. +                    $data .= '<g:google_product_category></g:google_product_category>';
  16362. +                    
  16363. +                    // url_path
  16364. +                    $data .= '<link><![CDATA[';
  16365. +                    $data .= "http://www.tolexo.com/" . $landingUrl;
  16366. +                    $data .= ']]></link>';
  16367. +                    
  16368. +                    $data .= '<mobile_link>' . "http://www.tolexo.com/" . $landingUrl . '</mobile_link>' . '<g:adwords_redirect/>' . '<c:drlp type="url">' . "http://www.tolexo.com/" . $landingUrl . '</c:drlp>';
  16369. +                    
  16370. +                    // Image
  16371. +                    $data .= '<g:image_link><![CDATA[';
  16372. +                    $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '" . $prod . "' and attribute_id = '85'";
  16373. +                    $query = mysql_query($sql);
  16374. +                    $row = mysql_fetch_array($query);
  16375. +                    $data .= "http://img.tolexokit.com/media/catalog/product" . $row['value'];
  16376. +                    $data .= ']]></g:image_link>';
  16377. +                    
  16378. +                    // condition
  16379. +                    $data .= '<g:condition>New</g:condition>';
  16380. +                    
  16381. +                    // availability
  16382. +                    // $data .='<g:availability>In stock</g:availability>';
  16383. +                    $data .= '<g:availability>';
  16384. +                    $sql = "select type_id from catalog_product_entity where entity_id = '" . $prod . "'";
  16385. +                    $res = mysql_query($sql);
  16386. +                    $res = mysql_fetch_array($res);
  16387. +                    
  16388. +                    $sql = "SELECT csi.qty,csi.is_in_stock,csi.manage_stock, csi.use_config_manage_stock from cataloginventory_stock_item as csi where csi.product_id = '" . $prod . "'";
  16389. +                    $query = mysql_query($sql);
  16390. +                    $row = mysql_fetch_array($query);
  16391. +                    if ($res['type_id'] == 'simple') {
  16392. +                        if ($row['use_config_manage_stock'] == 1) {
  16393. +                            $data .= 'In Stock';
  16394. +                        } else {
  16395. +                            if ($row['manage_stock'] == 1) {
  16396. +                                if ($row['qty'] <= 0 || $row['is_in_stock'] == 0) {
  16397. +                                    $data .= 'Out of Stock';
  16398. +                                } else {
  16399. +                                    $data .= 'In Stock';
  16400. +                                }
  16401. +                            } else {
  16402. +                                $data .= 'In Stock';
  16403. +                            }
  16404. +                        }
  16405. +                    } else {
  16406. +                        // configureable products
  16407. +                        $sql = "SELECT child_id FROM catalog_product_relation where parent_id = '" . $prod . "'";
  16408. +                        $query = mysql_query($sql);
  16409. +                        $childArr = array();
  16410. +                        while ($row = mysql_fetch_array($query)) {
  16411. +                            $childArr[] = $row['child_id'];
  16412. +                        }
  16413. +                        if (! empty($childArr)) {
  16414. +                            $flag = false;
  16415. +                            foreach ($childArr as $key => $value) {
  16416. +                                $sql = "SELECT value from catalog_product_entity_int where entity_id ='" . $value . "'and attribute_id = '96'";
  16417. +                                $query = mysql_query($sql);
  16418. +                                $row3 = mysql_fetch_array($query);
  16419. +                                if ($row3['value'] == 1) {
  16420. +                                    $sql = "SELECT csi.qty,csi.is_in_stock,csi.manage_stock, csi.use_config_manage_stock from cataloginventory_stock_item as csi where csi.product_id = '" . $value . "'";
  16421. +                                    $query = mysql_query($sql);
  16422. +                                    $row = mysql_fetch_array($query);
  16423. +                                    if ($row['use_config_manage_stock'] == 1) {
  16424. +                                        $flag = true;
  16425. +                                    } else {
  16426. +                                        if ($row['manage_stock'] == 1) {
  16427. +                                            if ($row['qty'] <= 0 || $row['is_in_stock'] == 0) {
  16428. +                                                $flag = false;
  16429. +                                            } else {
  16430. +                                                $flag = true;
  16431. +                                            }
  16432. +                                        } else {
  16433. +                                            $flag = true;
  16434. +                                        }
  16435. +                                    }
  16436. +                                } else {
  16437. +                                    $flag = false;
  16438. +                                }
  16439. +                                if ($flag)
  16440. +                                    break;
  16441. +                            }
  16442. +                            if ($flag) {
  16443. +                                $data .= 'In Stock';
  16444. +                            } else {
  16445. +                                $data .= 'Out of Stock';
  16446. +                            }
  16447. +                        } else {
  16448. +                            $data .= 'Out of Stock';
  16449. +                        }
  16450. +                    }
  16451. +                    $data .= '</g:availability>';
  16452. +                    
  16453. +                    // cost_price
  16454. +                    $data .= '<g:sale_price>';
  16455. +                    $data .= $price;
  16456. +                    $data .= '</g:sale_price>';
  16457. +                    
  16458. +                    // Tag For MSRP
  16459. +                    
  16460. +                    $data .= '<g:price>';
  16461. +                    
  16462. +                    $sql = "SELECT value from catalog_product_entity_decimal where entity_id = '" . $prod . "' and attribute_id = '120'";
  16463. +                    $query = mysql_query($sql);
  16464. +                    $row = mysql_fetch_array($query);
  16465. +                    $splprice = $row['value'];
  16466. +                    
  16467. +                    $data .= $splprice;
  16468. +                    $data .= '</g:price>';
  16469. +                    
  16470. +                    // Tag For Number of Items
  16471. +                    
  16472. +                    $data .= '<g:multipack>';
  16473. +                    
  16474. +                    $sql = "SELECT value from catalog_product_entity_int where entity_id = '" . $prod . "' and attribute_id = '517'";
  16475. +                    $query = mysql_query($sql);
  16476. +                    $row = mysql_fetch_array($query);
  16477. +                    $atrvalue = $row['value'];
  16478. +                    
  16479. +                    $sql = "SELECT value from eav_attribute_option_value where option_id = '" . $atrvalue . "'";
  16480. +                    $query = mysql_query($sql);
  16481. +                    $row = mysql_fetch_array($query);
  16482. +                    $num_items = $row['value'];
  16483. +                    
  16484. +                    $data .= $num_items;
  16485. +                    $data .= '</g:multipack>';
  16486. +                    
  16487. +                    $data .= '<g:expiration_date></g:expiration_date>' . '<g:adwords_labels>Warranty:Seller Warranty</g:adwords_labels>' . '<g:adwords_labels></g:adwords_labels>' . '<g:adwords_labels></g:adwords_labels>' . '<g:adwords_labels></g:adwords_labels>';
  16488. +                    
  16489. +                    // brand_name
  16490. +                    $data .= '<g:brand>';
  16491. +                    $sql = "SELECT eav_attribute_option_value.value from eav_attribute_option_value LEFT JOIN catalog_product_entity_int ON eav_attribute_option_value.option_id = catalog_product_entity_int.value where catalog_product_entity_int.attribute_id=268 AND catalog_product_entity_int.entity_id='" . $prod . "'";
  16492. +                    $query = mysql_query($sql);
  16493. +                    $row = mysql_fetch_array($query);
  16494. +                    $name = $row['value'];
  16495. +                    $name = str_replace(",", " ", $name);
  16496. +                    $name = str_replace("\n", " ", $name);
  16497. +                    $name = str_replace("\r", " ", $name);
  16498. +                    $name = str_replace(".", " ", $name);
  16499. +                    $name = str_replace("&", "&amp;", $name);
  16500. +                    $name = preg_replace('/\x{00B0}/u', " degrees ", $name);
  16501. +                    $brandName = $name;
  16502. +                    $data .= $name;
  16503. +                    $data .= '</g:brand>';
  16504. +                    
  16505. +                    // Description - start
  16506. +                    $data .= '<g:description><![CDATA[';
  16507. +                    $data .= "Buy " . $skuName . " from Brand: " . $brandName . " having features ";
  16508. +                    
  16509. +                    // short_description
  16510. +                    $sql = "SELECT value from catalog_product_entity_text where entity_id = '" . $prod . "' and attribute_id = '73'";
  16511. +                    $query = mysql_query($sql);
  16512. +                    $row = mysql_fetch_array($query);
  16513. +                    $name = $row['value'];
  16514. +                    $name = str_replace(",", " ", $name);
  16515. +                    $name = str_replace("\n", " ", $name);
  16516. +                    $name = str_replace("\r", " ", $name);
  16517. +                    $name = str_replace(".", " ", $name);
  16518. +                    $name = str_replace("&", "&amp;", $name);
  16519. +                    $name = preg_replace('/\x{00B0}/u', " degrees ", $name);
  16520. +                    $data .= $name;
  16521. +                    
  16522. +                    // key_features_1
  16523. +                    $sql = "SELECT value from catalog_product_entity_text where entity_id = '" . $prod . "' and attribute_id = '536'";
  16524. +                    $query = mysql_query($sql);
  16525. +                    $row = mysql_fetch_array($query);
  16526. +                    $name = $row['value'];
  16527. +                    $name = str_replace(",", " ", $name);
  16528. +                    $name = str_replace("\n", " ", $name);
  16529. +                    $name = str_replace("\r", " ", $name);
  16530. +                    $name = str_replace(".", " ", $name);
  16531. +                    $name = str_replace("&", "&amp;", $name);
  16532. +                    $name = preg_replace('/\x{00B0}/u', " degrees ", $name);
  16533. +                    if ($name) {
  16534. +                        $data .= " and ";
  16535. +                        $data .= $name . " ";
  16536. +                    }
  16537. +                    
  16538. +                    // key_features_2
  16539. +                    $sql = "SELECT value from catalog_product_entity_text where entity_id = '" . $prod . "' and attribute_id = '537'";
  16540. +                    $query = mysql_query($sql);
  16541. +                    $row = mysql_fetch_array($query);
  16542. +                    $name = $row['value'];
  16543. +                    $name = str_replace(",", " ", $name);
  16544. +                    $name = str_replace("\n", " ", $name);
  16545. +                    $name = str_replace("\r", " ", $name);
  16546. +                    $name = str_replace(".", " ", $name);
  16547. +                    $name = str_replace("&", "&amp;", $name);
  16548. +                    $name = preg_replace('/\x{00B0}/u', " degrees ", $name);
  16549. +                    if ($name) {
  16550. +                        $data .= $name . " ";
  16551. +                    }
  16552. +                    
  16553. +                    // key_features_3
  16554. +                    $sql = "SELECT value from catalog_product_entity_text where entity_id = '" . $prod . "' and attribute_id = '538'";
  16555. +                    $query = mysql_query($sql);
  16556. +                    $row = mysql_fetch_array($query);
  16557. +                    $name = $row['value'];
  16558. +                    $name = str_replace(",", " ", $name);
  16559. +                    $name = str_replace("\n", " ", $name);
  16560. +                    $name = str_replace("\r", " ", $name);
  16561. +                    $name = str_replace(".", " ", $name);
  16562. +                    $name = str_replace("&", "&amp;", $name);
  16563. +                    $name = preg_replace('/\x{00B0}/u', " degrees ", $name);
  16564. +                    if ($name) {
  16565. +                        $data .= $name . " ";
  16566. +                    }
  16567. +                    
  16568. +                    // key_features_4
  16569. +                    $sql = "SELECT value from catalog_product_entity_text where entity_id = '" . $prod . "' and attribute_id = '539'";
  16570. +                    $query = mysql_query($sql);
  16571. +                    $row = mysql_fetch_array($query);
  16572. +                    $name = $row['value'];
  16573. +                    $name = str_replace(",", " ", $name);
  16574. +                    $name = str_replace("\n", " ", $name);
  16575. +                    $name = str_replace("\r", " ", $name);
  16576. +                    $name = str_replace(".", " ", $name);
  16577. +                    $name = str_replace("&", "&amp;", $name);
  16578. +                    $name = preg_replace('/\x{00B0}/u', " degrees ", $name);
  16579. +                    if ($name) {
  16580. +                        $data .= $name . " ";
  16581. +                    }
  16582. +                    
  16583. +                    // key_features_5
  16584. +                    $sql = "SELECT value from catalog_product_entity_text where entity_id = '" . $prod . "' and attribute_id = '540'";
  16585. +                    $query = mysql_query($sql);
  16586. +                    $row = mysql_fetch_array($query);
  16587. +                    $name = $row['value'];
  16588. +                    $name = str_replace(",", " ", $name);
  16589. +                    $name = str_replace("\n", " ", $name);
  16590. +                    $name = str_replace("\r", " ", $name);
  16591. +                    $name = str_replace(".", " ", $name);
  16592. +                    $name = str_replace("&", "&amp;", $name);
  16593. +                    $name = preg_replace('/\x{00B0}/u', " degrees ", $name);
  16594. +                    if ($name) {
  16595. +                        $data .= $name . " ";
  16596. +                    }
  16597. +                    
  16598. +                    // part_number
  16599. +                    $sql = "SELECT eav_attribute_option_value.value from eav_attribute_option_value LEFT JOIN catalog_product_entity_int ON eav_attribute_option_value.option_id = catalog_product_entity_int.value where catalog_product_entity_int.attribute_id=413 AND catalog_product_entity_int.entity_id='" . $prod . "'";
  16600. +                    $query = mysql_query($sql);
  16601. +                    $row = mysql_fetch_array($query);
  16602. +                    if ($row['value']) {
  16603. +                        $data .= "with part number " . $row['value'] . ". ";
  16604. +                    }
  16605. +                    
  16606. +                    $data .= "The " . $skuName . " is a " . $c3[3] . " with features of " . $c3[4];
  16607. +                    if (isset($c3[5]))
  16608. +                        $data .= " and " . $c3[5];
  16609. +                    $data .= " in category " . $categoryPath;
  16610. +                    $data .= ']]></g:description>';
  16611. +                    // Description - end
  16612. +                    
  16613. +                    // show in shopping network
  16614. +                    $data .= '<g:excluded_destination>';
  16615. +                    $sql = "SELECT value from catalog_product_entity_int where entity_id = '" . $prod . "' and attribute_id = '" . $shop_attr_id . "'";
  16616. +                    $query = mysql_query($sql);
  16617. +                    $row = mysql_fetch_array($query);
  16618. +                    if (isset($row['value'])) {
  16619. +                        if ($row['value'] == 0) {
  16620. +                            $data .= 'Shopping,Display Ads';
  16621. +                        } else {
  16622. +                            $data .= '';
  16623. +                        }
  16624. +                    } else {
  16625. +                        $data .= '';
  16626. +                    }
  16627. +                    
  16628. +                    $data .= '</g:excluded_destination>';
  16629. +                    
  16630. +                    // Product Promo
  16631. +                    $data .= '<g:custom_label_1>';
  16632. +                    $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '" . $prod . "' and attribute_id = '" . $product_promo_attr_id . "'";
  16633. +                    $query = mysql_query($sql);
  16634. +                    $row = mysql_fetch_array($query);
  16635. +                    $promo = $row['value'];
  16636. +                    
  16637. +                    $data .= $promo;
  16638. +                    $data .= '</g:custom_label_1>';
  16639. +                    
  16640. +                    
  16641. +                    // Top Products in Shopping Nw
  16642. +                    $data .= '<g:custom_label_2>';
  16643. +                    $sql = "SELECT value from catalog_product_entity_int where entity_id = '" . $prod . "' and attribute_id = '" . $top_prod_shop_nw_attr_id . "'";
  16644. +                    $query = mysql_query($sql);
  16645. +                    $row = mysql_fetch_array($query);
  16646. +                    $atrvalue = $row['value'];
  16647. +                    
  16648. +                    $sql = "SELECT value from eav_attribute_option_value where option_id = '" . $atrvalue . "'";
  16649. +                    $query = mysql_query($sql);
  16650. +                    $row = mysql_fetch_array($query);
  16651. +                    $top_prod_shop_nw = $row['value'];
  16652. +                    
  16653. +                    if (isset($top_prod_shop_nw)) {
  16654. +                       $data .= $top_prod_shop_nw;
  16655. +                    }
  16656. +                    else {
  16657. +                        $data .= 'Non-Top';
  16658. +                    }
  16659. +                    
  16660. +                    $data .= '</g:custom_label_2>';
  16661. +                    
  16662. +                    
  16663. +                    $data .= '</item>';
  16664. +                    $data .= "\n";
  16665. +                }
  16666. +            }
  16667.          }
  16668. -        unset($c3[0], $c3[1], $c3[2]);
  16669.      }
  16670. -    
  16671. -    $categoryPath = implode(" &gt; ", $c3);
  16672. -    $categoryPath = str_replace(array(",", "\n", "\r", "."), " ", $categoryPath);
  16673. -    
  16674. -    $flag = $row['type_id'] == 'simple' ? getStockInformation($row) : getChildStockInformation($prod);
  16675. -    
  16676. -    $name = preg_replace('/\x{00B0}/u', " degrees ", str_replace(array(",", "\n", "\r", "."), " ", $row['name']));
  16677. -    if (strlen($name) > 150)
  16678. -        $name = substr($name, 0, 149);
  16679. -    $skuName = $name;
  16680. -    
  16681. -    $data .= '<item>';
  16682. -    $data .= '<g:id>' . $row['sku'] . '</g:id>';
  16683. -    $data .= '<title><![CDATA[' . $name . ']]></title>';
  16684. -    $data .= '<g:product_type><![CDATA[' . $categoryPath . ']]></g:product_type>';
  16685. -    $data .= '<g:google_product_category></g:google_product_category>';
  16686. -    $data .= '<link><![CDATA[' . 'http://www.tolexo.com/' . $landingUrl . ']]></link>';
  16687. -    $data .= '<mobile_link>' . "http://www.tolexo.com/" . $landingUrl . '</mobile_link>' . '<g:adwords_redirect/>' . '<c:drlp type="url">' . "http://www.tolexo.com/" . $landingUrl . '</c:drlp>';
  16688. -    $data .= '<g:image_link><![CDATA[' . "http://img.tolexokit.com/media/catalog/product" . $row['image_url'] . ']]></g:image_link>';
  16689. -    $data .= '<g:condition>New</g:condition>';
  16690. -    $data .= '<g:availability>';
  16691. -    $data .= $flag ? "In Stock" : "Out of Stock";
  16692. -    $data .= '</g:availability>';
  16693. -    $data .= '<g:sale_price>' . $price . '</g:sale_price>';
  16694. -    $data .= '<g:price>' . $splprice . '</g:price>';
  16695. -    $data .= '<g:multipack>' . $row['num_items'] . '</g:multipack>';
  16696. -    $data .= '<g:expiration_date></g:expiration_date>' . '<g:adwords_labels>Warranty:Seller Warranty</g:adwords_labels>' . '<g:adwords_labels></g:adwords_labels>' . '<g:adwords_labels></g:adwords_labels>' . '<g:adwords_labels></g:adwords_labels>';
  16697. -    $data .= '<g:brand>' . $brandName . '</g:brand>';
  16698. -    $data .= '<g:description><![CDATA[' . "Buy " . $skuName . " from Brand: " . $brandName . " having features ";
  16699. -    $data .= getFeaturesString($row);
  16700. -    $data .= "The " . $skuName . " is a " . $c3[3] . " with features of " . $c3[4];
  16701. -    $data .= ! empty($c3[5]) ? " and " . $c3[5] : "";
  16702. -    $data .= " in category " . $categoryPath . ']]></g:description>';
  16703. -    $data .= '<g:excluded_destination>';
  16704. -    $data .= (! empty($row['shopping_nw']) && $row['shopping_nw'] == 0) ? 'Shopping,Display Ads' : "";
  16705. -    $data .= '</g:excluded_destination>';
  16706. -    $data .= '<g:custom_label_1>' . $row['product_promo'] . '</g:custom_label_1>';
  16707. -    $data .= '<g:custom_label_2>';
  16708. -    $data .= ! empty($top_prod_shop_nw) ? $top_prod_shop_nw : 'Non-Top';
  16709. -    $data .= '</g:custom_label_2>';
  16710. -    $data .= '</item>' . "\n";
  16711.  }
  16712.  
  16713.  $data .= '</channel>' . '</rss>';
  16714. @@ -130,64 +430,6 @@ $write = fopen($outputFile, "w") or die('Cannot open file:  ' . $outputFile);
  16715.  fputs($write, $data);
  16716.  fclose($write);
  16717.  
  16718. -function processString($name)
  16719. -{
  16720. -    $name = str_replace(array(",", "\n", "\r", "."), " ", $name);
  16721. -    return preg_replace('/\x{00B0}/u', " degrees ", str_replace("&", "&amp;", $name));
  16722. -}
  16723. -
  16724. -function getStockInformation($row)
  16725. -{
  16726. -    $flag = false;
  16727. -    if ($row['use_config_manage_stock'] == 1) {
  16728. -        $flag = true;
  16729. -    } else {
  16730. -        $flag = $row['manage_stock'] == 1 ? (($row['qty'] <= 0 || $row['is_in_stock'] == 0) ? false : true) : true;
  16731. -    }
  16732. -    
  16733. -    return $flag;
  16734. -}
  16735. -
  16736. -function getChildStockInformation($prod)
  16737. -{
  16738. -    $flag = false;
  16739. -    $sql = "SELECT csi.qty,csi.is_in_stock,csi.manage_stock, csi.use_config_manage_stock
  16740. -                FROM catalog_product_relation AS cpr
  16741. -                INNER JOIN catalog_product_entity_int AS cpei ON cpei.entity_id = cpr.child_id AND attribute_id = '96'
  16742. -                AND cpei.value = '1'
  16743. -                LEFT JOIN cataloginventory_stock_item AS csi ON csi.product_id = cpr.child_id
  16744. -                WHERE cpr.parent_id = '" . $prod . "';";
  16745. -    $query = mysql_query($sql);
  16746. -    $childRows = array();
  16747. -    
  16748. -    while ($row1 = mysql_fetch_array($query)) {
  16749. -        $flag = getStockInformation($row1);
  16750. -        if ($flag)
  16751. -            break;
  16752. -    }
  16753. -    
  16754. -    return $flag;
  16755. -}
  16756. -
  16757. -function getFeaturesString($row)
  16758. -{
  16759. -    $returnStr = "";
  16760. -    $str = processString($row['description']);
  16761. -    $returnStr .= $str;
  16762. -    $str = processString($row['key_feature_1']);
  16763. -    $returnStr .= ! empty($str) ? " and " . $str . " " : "";
  16764. -    $str = processString($row['key_feature_2']);
  16765. -    $returnStr .= ! empty($str) ? $str . " " : "";
  16766. -    $str = processString($row['key_feature_3']);
  16767. -    $returnStr .= ! empty($str) ? $str . " " : "";
  16768. -    $str = processString($row['key_feature_4']);
  16769. -    $returnStr .= ! empty($str) ? $str . " " : "";
  16770. -    $str = processString($row['key_feature_5']);
  16771. -    $returnStr .= ! empty($str) ? $str . " " : "";
  16772. -    $returnStr .= ! empty($row['part_num']) ? "with part number " . $row['part_num'] . ". " : "";
  16773. -    return $returnStr;
  16774. -}
  16775. -
  16776.  // Please Uncomment Below Code for live deployment
  16777.  
  16778.  // set up basic connection
  16779. @@ -204,4 +446,5 @@ if (ftp_put($conn_id, 'tolexo_pla_rpc.xml', $outputFile, FTP_ASCII)) {
  16780.  }
  16781.  
  16782.  // close the connection
  16783. -ftp_close($conn_id);
  16784. \ No newline at end of file
  16785. +ftp_close($conn_id);
  16786. +
  16787. diff --git a/utils/README.txt b/utils/README.txt
  16788. index e889cf5..fb70486 100644
  16789. --- a/utils/README.txt
  16790. +++ b/utils/README.txt
  16791. @@ -65,14 +65,3 @@ CSV should look like:
  16792.  vendor_id,tsin,sku,mrp,msrp,price,base_price,number_of_items,special_from_date,special_to_date,special_base_price_from_date,special_base_price_to_date
  16793.  DEL00013,T05REL0096,1247119,200,300,300,300,12346,2015-07-11,2015-07-22,2015-07-10,2015-07-22
  16794.  DEL00013,T05REL0097,1247120,100,200,200,200,12346,2015-07-11,2015-07-20,2015-07-11,2015-07-22
  16795. -
  16796. -14. updateInventory.php - Responsible for updating product inventory. Execution Syntax:
  16797. -php updateInventory.php ../var/import/update_product_inventory.csv
  16798. -
  16799. -CSV should look like:
  16800. -sku,manage_stock,qty
  16801. -T0RC102345-01,no,100
  16802. -T0RC102345-02,yes,10
  16803. -
  16804. -15. php add_attribute_top_prod_shop_nw.php Responsible for adding the attribute "Top Products in Shopping Nw"
  16805. -in all attribute sets.
  16806. \ No newline at end of file
  16807. diff --git a/utils/WmsGetSalesStatus.php b/utils/WmsGetSalesStatus.php
  16808. index 5c81960..fb4afe6 100755
  16809. --- a/utils/WmsGetSalesStatus.php
  16810. +++ b/utils/WmsGetSalesStatus.php
  16811. @@ -92,13 +92,11 @@ class Tolexo_Utils_Uniwareorder extends Mage_Shell_Abstract {
  16812.        $sql = "SELECT `entity_id`,`status`,`state`,`increment_id` FROM `sales_flat_order` WHERE " . $subsql;
  16813.        $value = $this->readConnection->query($sql);
  16814.        $orderCollection = $value->fetchAll();
  16815. -      $ordersNotFound = array();
  16816.        foreach ($orderCollection as $order) {
  16817.           $date = date('Y-m-d H:i:s');
  16818.           $orderId = $order['entity_id'];
  16819.           $orderStatus = $order['status'];
  16820.           $orderIncId = $order['increment_id'];
  16821. -
  16822.           $uniwareSaleOrderRequest = new UniwareStructGetSaleOrderRequest($orderIncId);
  16823.           $result = $this->packageService->GetSaleOrder($uniwareSaleOrderRequest);
  16824.           if ($result) {
  16825. @@ -321,38 +319,33 @@ class Tolexo_Utils_Uniwareorder extends Mage_Shell_Abstract {
  16826.                    );
  16827.                 }
  16828.  
  16829. -               if($orderStatus != $status) {
  16830. -                  if ($status == 'dispatched' || $status == 'partially_dispatched' || $status == 'delivered' || $status == 'partially_delivered') {
  16831. -                     $updateOrder = Mage::getModel('sales/order')->loadByIncrementId($orderIncId);
  16832. -                     $this->createShipment($shipment, $updateOrder, $itemDetail, $shipInvoiceMap, $status);
  16833. -                  } else {
  16834. -                     $this->updateFullFillStatus($itemDetail, $orderId);
  16835. -                  }
  16836. +               if ($status == 'dispatched' || $status == 'partially_dispatched' || $status == 'delivered' || $status == 'partially_delivered') {
  16837. +                  $updateOrder = Mage::getModel('sales/order')->loadByIncrementId($orderIncId);
  16838. +                  $this->createShipment($shipment, $updateOrder, $itemDetail, $shipInvoiceMap, $status);
  16839. +               } else {
  16840. +                  $this->updateFullFillStatus($itemDetail, $orderId);
  16841. +               }
  16842.  
  16843. -                  if ($flag === 1) {
  16844. -                     try {
  16845. -                        $sql1 = "UPDATE `sales_flat_order` set state= '$state', status= '$status' where entity_id=" . $orderId;
  16846. -                        $this->writeConnection->query($sql1);
  16847. -                        $sql2 = "UPDATE `sales_flat_order_grid` set status= '$status' where entity_id=" . $orderId;
  16848. -                        $this->writeConnection->query($sql2);
  16849. -                        $this->updateCommentStatus($orderId, $status, $comment);
  16850. -                        echo "\n $orderIncId Update Status: $orderStatus to $status \n";
  16851. -                     } catch (exception $ex) {
  16852. -                        echo "\nCaught Exception while saving order: " . $ex->getMessage();
  16853. -                     }
  16854. +               if ($flag === 1) {
  16855. +                  try {
  16856. +                     $sql1 = "UPDATE `sales_flat_order` set state= '$state', status= '$status' where entity_id=" . $orderId;
  16857. +                     $this->writeConnection->query($sql1);
  16858. +                     $sql2 = "UPDATE `sales_flat_order_grid` set status= '$status' where entity_id=" . $orderId;
  16859. +                     $this->writeConnection->query($sql2);
  16860. +                     $this->updateCommentStatus($orderId, $status, $comment);
  16861. +                     echo "\n Update Status: " . $orderStatus;
  16862. +                  } catch (exception $ex) {
  16863. +                     echo "\nCaught Exception while saving order: " . $ex->getMessage();
  16864.                    }
  16865.                 }
  16866. -               echo $orderIncId." ";
  16867.              } else {
  16868. -               echo "\nOrder Not found : " . $orderIncId."\n";
  16869. -               $ordersNotFound[] = $orderIncId;
  16870. +               echo "\nOrder Not found : " . $orderIncId;
  16871.              }
  16872.           } else {
  16873.              $this->apiLog('Get Order Status', $orderIncId, 1,
  16874.                 $this->packageService->getLastRequest(), $this->packageService->getLastResponse(), $date);
  16875.           }
  16876.        }
  16877. -      echo "\n\n==========================================\n\n".implode(' ',$ordersNotFound);
  16878.     }
  16879.  
  16880.     function createShipment($Itemarray, $order, $itemDetail, $shipInvoiceMap, $status) {
  16881. @@ -442,7 +435,6 @@ class Tolexo_Utils_Uniwareorder extends Mage_Shell_Abstract {
  16882.  
  16883.     function updateDiscreteItem ($orderId, $itemId, $itemCode, $shipmentId, $shipmentStatus, $statusCode, $shipCode, $invoiceId) {
  16884.        $wmsStatus = $this->allWmsStatus[$statusCode];
  16885. -      if(empty($wmsStatus['id_wms_state'])) $wmsStatus['id_wms_state'] = 1;
  16886.        $this->writeConnection->query("UPDATE `sales_order_single_item`
  16887.              SET `id_wms_state` = '{$wmsStatus['id_wms_state']}', `id_shipment`= '$shipmentId',`id_invoice`= '$invoiceId',
  16888.                 `shipment_status` = '{$statusCode}:{$shipCode}:{$shipmentStatus}', `updated_at` = NOW()
  16889. @@ -577,7 +569,7 @@ class Tolexo_Utils_Uniwareorder extends Mage_Shell_Abstract {
  16890.  
  16891.     function getEmailContent() {
  16892.        $content = '';
  16893. -      $toDate = date('Y-m-d');
  16894. +      $toDate = date('Y-m-d', strtotime('-1 day'));
  16895.        $sql = "SELECT * FROM cron_log WHERE `date`='" . $toDate . "'";
  16896.        $resultSet = $this->readConnection->query($sql);
  16897.        $content .= '<table cellspacing="1" border="0" cellpadding="1" style="border: 1px solid black" bgcolor="white">';
  16898. diff --git a/utils/WmsPushOrder.php b/utils/WmsPushOrder.php
  16899. index 232d1b3..875b967 100644
  16900. --- a/utils/WmsPushOrder.php
  16901. +++ b/utils/WmsPushOrder.php
  16902. @@ -239,12 +239,11 @@ class Tolexo_Utils_PushSalesOrder extends Mage_Shell_Abstract
  16903.        $orderDetails = $order->getData();
  16904.        $couponCode = $orderDetails['coupon_code'];
  16905.  
  16906. -      $customerName = trim($shippingAddress->getFirstname()). ' ' . trim($shippingAddress->getMiddlename()) . ' ' . trim($shippingAddress->getLastname());
  16907.        $orderInfo = array(
  16908.           'order_id' => $order->getIncrementId(),
  16909.           'order_date'=> date('Y-m-d\TH:i:s', strtotime($order->getCreatedAt())),
  16910.           'consignee' => array(
  16911. -               'shipping_name' => htmlspecialchars($customerName),
  16912. +               'shipping_name' => htmlspecialchars($shippingAddress->getFirstname() . ' ' . $shippingAddress->getMiddlename() . ' ' . $shippingAddress->getLastname()),
  16913.                 'shipping_add1' => htmlspecialchars($street[0]),
  16914.                 'shipping_add2' => htmlspecialchars($street[1]),
  16915.                 'shipping_city' => htmlspecialchars($shippingAddress->getCity()),
  16916. @@ -366,11 +365,10 @@ class Tolexo_Utils_PushSalesOrder extends Mage_Shell_Abstract
  16917.        if(strpos(strtolower($street[0]), strtolower($addressCompany)) === false) {
  16918.           $street[0] = $addressCompany.', '.$street[0];
  16919.        }
  16920. -      $customerName = trim($shippingAddress->getFirstname()). ' ' . trim($shippingAddress->getMiddlename()) . ' ' . trim($shippingAddress->getLastname());
  16921.        $address = array();
  16922.        $address[] = array(
  16923.              'Id' => $shippingAddressId,
  16924. -            'Name' => htmlspecialchars($customerName),
  16925. +            'Name' => htmlspecialchars($shippingAddress->getFirstname() . ' ' . $shippingAddress->getMiddlename() . ' ' . $shippingAddress->getLastname()),
  16926.              'AddressLine1' => htmlspecialchars($street[0]),
  16927.              'AddressLine2' => htmlspecialchars($street[1]),
  16928.              'City' => htmlspecialchars($shippingAddress->getCity()),
  16929. @@ -388,10 +386,9 @@ class Tolexo_Utils_PushSalesOrder extends Mage_Shell_Abstract
  16930.           if(strpos(strtolower($street[0]), strtolower($addressCompany)) === false) {
  16931.              $street[0] = $addressCompany.', '.$street[0];
  16932.           }
  16933. -         $customerName = trim($billingAddress->getFirstname()). ' ' . trim($billingAddress->getMiddlename()) . ' ' . trim($billingAddress->getLastname());
  16934.           $address[] = array(
  16935.                 'Id' => $billingAddressId,
  16936. -               'Name' => htmlspecialchars($customerName),
  16937. +               'Name' => htmlspecialchars($billingAddress->getFirstname() . ' ' . $billingAddress->getMiddlename() . ' ' . $billingAddress->getLastname()),
  16938.                 'AddressLine1' => htmlspecialchars($street[0]),
  16939.                 'AddressLine2' => htmlspecialchars($street[1]),
  16940.                 'City' => htmlspecialchars($billingAddress->getCity()),
  16941. @@ -992,7 +989,7 @@ class Tolexo_Utils_PushSalesOrder extends Mage_Shell_Abstract
  16942.        foreach ($orderStatusCollection as $status) {
  16943.           $orderStatus[$status['status']] = $status['label'];
  16944.        }
  16945. -      $toGroupStatus = array('processing', 'fulfillable', 'partially_fulfillable', 'dispatched', 'partially_dispatched', 'delivered', 'partially_delivered');
  16946. +      $toGroupStatus = array('processing', 'fulfillable', 'partially_fulfillable', 'dispatched', 'partially_dispatched', 'delivered');
  16947.        $summary = array('day' => array('orders' => 0, 'amount' => 0), 'month' => array('orders' => 0, 'amount' => 0));
  16948.        foreach ($orderStatus as $status => $detail) {
  16949.           if (in_array($status, $toGroupStatus)) {
  16950. diff --git a/utils/associateProducts.php b/utils/associateProducts.php
  16951. index f4a2f25..944b1c4 100755
  16952. --- a/utils/associateProducts.php
  16953. +++ b/utils/associateProducts.php
  16954. @@ -81,4 +81,36 @@ function associateProduct($cSku, $sSku,$count,$totalcount,$logArray)
  16955.      }
  16956.      return array('logArray'=>$logArray);
  16957.  }
  16958. +
  16959. +function do_logging($logArray) {
  16960. +
  16961. +    $endTime = new DateTime(date("Y:m:d h:i:s"));
  16962. +    $logArray['Completion_Time']=$endTime->format('Y-m-d H:i:s');
  16963. +    echo "End Time: ".$endTime->format('Y-m-d H:i:s')."\n";
  16964. +    
  16965. +    //Time Taken by the script (in secods)
  16966. +    $diffTime = $logArray['startTimeObj']->diff($endTime);
  16967. +    $hours   = $diffTime->format('%h');
  16968. +    $minutes = $diffTime->format('%i');
  16969. +    $seconds = $diffTime->format('%s');
  16970. +
  16971. +    $logArray['Execution_Time'] = "$hours hours $minutes minutes $seconds seconds";
  16972. +    print $logArray['Execution_Time']." in completing the job\n";
  16973. +
  16974. +    //Print Detailed Log
  16975. +    $fp = fopen("../var/log/detail_log_file.txt", "a") or die("Unable to open file!");
  16976. +    fprintf($fp,"\n\n*************************** %s ***********************\n",$logArray['Script_Name']);
  16977. +    fwrite($fp, serialize($logArray));
  16978. +    fclose($fp);
  16979. +
  16980. +    //Print Summary Log
  16981. +    $fp = fopen("../var/log/summary_log_file.txt", "a") or die("Unable to open file!");
  16982. +    fprintf($fp,"\n\n*************************** %s ***********************",$logArray['Script_Name']);
  16983. +    fprintf($fp,"\nScript Name    - %s",$logArray['Script_Name']);
  16984. +    fprintf($fp,"\nCSV File       - %s",$logArray['CSV_Name']);
  16985. +    fprintf($fp,"\nStart Time     - %s",$logArray['Start_Time']);
  16986. +    fprintf($fp,"\nCompetion Time - %s",$logArray['Completion_Time']);
  16987. +    fprintf($fp,"\nExecution Time - %s",$logArray['Execution_Time']);
  16988. +    fprintf($fp,"\nSKUs Checked/Impacted   - %d",$logArray['skuImpacted']);
  16989. +}
  16990.  ?>
  16991. diff --git a/utils/categoryMetaDescription.php b/utils/categoryMetaDescription.php
  16992. deleted file mode 100755
  16993. index f540a61..0000000
  16994. --- a/utils/categoryMetaDescription.php
  16995. +++ /dev/null
  16996. @@ -1,18 +0,0 @@
  16997. -<?php
  16998. -$mageFilename = '../app/Mage.php';
  16999. -require_once $mageFilename;
  17000. -Mage::app();
  17001. -
  17002. -$resource = Mage::getSingleton('core/resource');
  17003. -//get connection objects to execute direct queries
  17004. -$WriteConn = $resource->getConnection('core_write');
  17005. -
  17006. -//Clean Category Meta Description
  17007. -$q = "UPDATE catalog_category_entity_text SET value='' WHERE attribute_id=48";
  17008. -$WriteConn->query($q);
  17009. -
  17010. -//Clean Category Meta Ttile
  17011. -$q = "UPDATE catalog_category_entity_varchar SET value='' WHERE attribute_id=46";
  17012. -$WriteConn->query($q);
  17013. -
  17014. -  echo "All categories Meta Description and Meta Title have been set blank. ";
  17015. \ No newline at end of file
  17016. diff --git a/utils/checkOptions.php b/utils/checkOptions.php
  17017. index 5bc5551..b316380 100755
  17018. --- a/utils/checkOptions.php
  17019. +++ b/utils/checkOptions.php
  17020. @@ -18,12 +18,12 @@ if(!empty($fileName))
  17021.  {
  17022.      echo "\nReading File : $fileName\n";    
  17023.      $response = getTypeCsv($scriptName,$fileName,$logArray);
  17024. -    do_logging($response['logArray'],'selectAttribCount');
  17025. +    do_logging($response['logArray']);
  17026.  }
  17027.  else
  17028.      echo "\nNo file found. Please provide file name.\n";
  17029.  
  17030. -/*function do_logging($logArray) {
  17031. +function do_logging($logArray) {
  17032.  
  17033.      $endTime = new DateTime(date("Y:m:d h:i:s"));
  17034.      $logArray['Completion_Time']=$endTime->format('Y-m-d H:i:s');
  17035. @@ -54,7 +54,7 @@ else
  17036.      fprintf($fp,"\nExecution Time - %s",$logArray['Execution_Time']);
  17037.      fprintf($fp,"\nImpacted Select Type Attributes  - %d",$logArray['selectAttribCount']);
  17038.  }
  17039. -*/
  17040. +
  17041.  function getTypeCsv($scriptName,$fileName,$logArray) {
  17042.      $file = fopen($fileName, "r");
  17043.      while(!feof($file)) {
  17044. diff --git a/utils/commonFunctions.php b/utils/commonFunctions.php
  17045. index be67ed8..4a80332 100644
  17046. --- a/utils/commonFunctions.php
  17047. +++ b/utils/commonFunctions.php
  17048. @@ -29,7 +29,7 @@ function backupCSV($startTimeObj, $CSVFile,$processName) {
  17049.   *
  17050.   * @return void as writes output in log files
  17051.   */
  17052. -function do_logging($logArray, $countIndexName='skuImpacted') {
  17053. +function do_logging($logArray) {
  17054.      $endTime = new DateTime(date("Y:m:d h:i:s"));
  17055.      $logArray['Completion_Time'] = $endTime->format('Y-m-d H:i:s');
  17056.      echo "End Time: ".$endTime->format('Y-m-d H:i:s')."\n";
  17057. @@ -57,7 +57,7 @@ function do_logging($logArray, $countIndexName='skuImpacted') {
  17058.      fprintf($fp,"\nStart Time     - %s",$logArray['Start_Time']);
  17059.      fprintf($fp,"\nCompetion Time - %s",$logArray['Completion_Time']);
  17060.      fprintf($fp,"\nExecution Time - %s",$logArray['Execution_Time']);
  17061. -    fprintf($fp,"\nItems Checked/Impacted   - %d",$logArray[$countIndexName]);
  17062. +    fprintf($fp,"\nSKUs Checked/Impacted   - %d",$logArray['skuImpacted']);
  17063.  }
  17064.  
  17065.  /**
  17066. @@ -120,6 +120,7 @@ function validateMsrp(&$data,&$error,$tsinArray) {
  17067.          }
  17068.  }
  17069.  
  17070. +
  17071.  /**
  17072.   * Validate  that all required attributes are there in input CSV file
  17073.   *
  17074. @@ -136,7 +137,7 @@ function checkMandatoryAttributes($mandatoryAttributes,$csvHeader,&$error,$isCol
  17075.      } else {
  17076.          $missingAttributes = array_diff($mandatoryAttributes, $csvHeader);
  17077.      }
  17078. -
  17079. +    
  17080.      foreach($missingAttributes as $attribute) {
  17081.          $attributeMissingFlag = 1;
  17082.          $error['Missing Attributes'][] = "$attribute";
  17083. @@ -148,6 +149,7 @@ function checkMandatoryAttributes($mandatoryAttributes,$csvHeader,&$error,$isCol
  17084.     return $attributeMissingFlag;
  17085.  }
  17086.  
  17087. +
  17088.  /**
  17089.   * Validate for date
  17090.   *
  17091. @@ -159,4 +161,4 @@ function validateDate($date, $format = 'Y-m-d')
  17092.  {
  17093.      $d = DateTime::createFromFormat($format, $date);
  17094.      return $d && $d->format($format) == $date;
  17095. -}
  17096. +}
  17097. \ No newline at end of file
  17098. diff --git a/utils/export_vendor_data.php b/utils/export_vendor_data.php
  17099. index 51a686c..0f658f1 100755
  17100. --- a/utils/export_vendor_data.php
  17101. +++ b/utils/export_vendor_data.php
  17102. @@ -13,7 +13,7 @@ $gluser       =       $argv[1];
  17103.  if(isset($gluser)){
  17104.          $sql                   =       "Select SQL_CACHE vendor_id,vendor_code,company_name,first_name,last_name,email,address,bill_address,contact_number,city,gluser_id from vendor_vendordirectory_vendors WHERE gluser_id IS NOT NULL";
  17105.  }else{
  17106. -        $sql                   =       "Select SQL_CACHE vendor_id,vendor_code,company_name,first_name,last_name,email,address,bill_address,contact_number,city,gluser_id from vendor_vendordirectory_vendors WHERE gluser_id IS NULL AND vendor_code !='' AND  vendor_code IS NOT NULL ";
  17107. +        $sql                   =       "Select SQL_CACHE vendor_id,vendor_code,company_name,first_name,last_name,email,address,bill_address,contact_number,city,gluser_id from vendor_vendordirectory_vendors WHERE gluser_id IS NULL";
  17108.  }
  17109.  $value                 =   $read->query($sql);
  17110.  $rows                  =       $value->fetchAll();    
  17111. diff --git a/utils/fetchOrderQueue.php b/utils/fetchOrderQueue.php
  17112. deleted file mode 100644
  17113. index 447f52a..0000000
  17114. --- a/utils/fetchOrderQueue.php
  17115. +++ /dev/null
  17116. @@ -1,130 +0,0 @@
  17117. -<?php
  17118. -
  17119. -require_once '../app/Mage.php';
  17120. -
  17121. -Mage::app();
  17122. -
  17123. -class OrderQueueProcessor {
  17124. -
  17125. -    private $readConnection;
  17126. -    private $writeConnection;
  17127. -    private $rootUrl;
  17128. -
  17129. -    public function __construct() {
  17130. -        $resource = Mage::getSingleton('core/resource');
  17131. -        $this->readConnection = $resource->getConnection('core_read');
  17132. -        $this->writeConnection = $resource->getConnection('core_write');
  17133. -        $this->rootUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
  17134. -    }
  17135. -
  17136. -    // Execution
  17137. -    public function run() {
  17138. -        $queueIds = $this->getPossibleOrdersInformation();
  17139. -        if (!empty($queueIds)) {
  17140. -            $this->deleteOrdersFromQueue($queueIds);
  17141. -        } else {
  17142. -            Mage::log("No record to Delete", null, 'orderQueueProcesss.log');
  17143. -        }
  17144. -    }
  17145. -
  17146. -    // Get all information from orderQue Table , Record which can be elegible of refund
  17147. -    public function getPossibleOrdersInformation() {
  17148. -
  17149. -        $sqlTotal = "SELECT COUNT(id) as total FROM sales_order_queue where tag_order = 0 LIMIT 1 ";
  17150. -        $ordercount = $this->readConnection->query($sqlTotal)->fetchColumn();
  17151. -        $recordLimit = 20;
  17152. -        Mage::log("Total Record = " . $ordercount, null, 'orderQueueProcesss.log');
  17153. -        if ($ordercount) {
  17154. -            $totalLoop = ($ordercount - ($ordercount % $recordLimit)) / $recordLimit + 1;
  17155. -            for ($i = 0; $i <= $totalLoop; $i++) {
  17156. -                $orderAll = array();
  17157. -                $taggedIds = array();
  17158. -                $refundedIds = array();
  17159. -                $queueIds = array();
  17160. -                $sqlOrder = "SELECT id,order_data,order_id FROM sales_order_queue where tag_order = 0 order by id ASC LIMIT  ".$recordLimit;
  17161. -                try {
  17162. -                    $orderData = $this->readConnection->query($sqlOrder);
  17163. -                    $rowOrder = $orderData->fetchAll(PDO::FETCH_ASSOC);
  17164. -
  17165. -                    $orderIdArr = array();
  17166. -                    if (count($rowOrder)) {
  17167. -                        $orderJson = json_encode($rowOrder);
  17168. -                        
  17169. -                        // Supply Json to Refund process
  17170. -                       // $refundedIds = $this->refineEligibleRefundOrders($orderJson);
  17171. -                        
  17172. -                        // Supply Json to Order Tag process
  17173. -                        $taggedIds = $this->updateOrderTags($orderJson);
  17174. -
  17175. -                        
  17176. -                        if (json_last_error() == JSON_ERROR_NONE && is_array($taggedIds) && is_array($refundedIds)) {
  17177. -                             $queueIds = array_unique(array_merge($refundedIds, $taggedIds));
  17178. -                        }
  17179. -                        
  17180. -                        Mage::log($queueIds, null, 'orderQueueProcesss.log');
  17181. -                        
  17182. -                        return $queueIds;
  17183. -                    } else {
  17184. -                        Mage::log("No data found for queue process.", null, 'orderQueueProcesss.log');
  17185. -                        return false;
  17186. -                    }
  17187. -                } catch (PDOException $ex) {
  17188. -                    Mage::log($ex, null, 'exception.log');
  17189. -                    Mage::log("error in Order Queue Process", null, 'orderQueueProcesss.log');
  17190. -
  17191. -                    return false;
  17192. -                }
  17193. -            }
  17194. -        }
  17195. -    }
  17196. -
  17197. -    public function httpPost($url, $jsonData) {
  17198. -        $ch = curl_init();
  17199. -        curl_setopt($ch, CURLOPT_URL, $url);
  17200. -        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
  17201. -        curl_setopt($ch, CURLOPT_POST, 1);
  17202. -        curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
  17203. -        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  17204. -        $output = curl_exec($ch);
  17205. -        curl_close($ch);
  17206. -        return $output;
  17207. -    }
  17208. -    
  17209. -    public function refineEligibleRefundOrders($orderJson) {
  17210. -        $refundedIds = array();
  17211. -        if(isset($orderJson) && $orderJson !=""){
  17212. -            $url = $this->rootUrl . "mobileapi/api_refund_process.php?route=rest/web_api/refine-elegible";
  17213. -            $refundedIdJson = $this->httpPost($url, $orderJson);
  17214. -    
  17215. -            $refundedIds = json_decode($refundedIdJson, true);
  17216. -        }
  17217. -        return $refundedIds;
  17218. -    }
  17219. -    
  17220. -    public function updateOrderTags($orderJson) {
  17221. -        $taggedIds = array();
  17222. -        if(isset($orderJson) && $orderJson !=""){
  17223. -            $url = $this->rootUrl . "mobileapi/api_order_tag.php?route=rest/web_api/updateOrderTags";
  17224. -            $taggedIdJson = $this->httpPost($url, $orderJson);
  17225. -            
  17226. -            $taggedIds = json_decode($taggedIdJson, true);
  17227. -        }
  17228. -        return $taggedIds;
  17229. -    }
  17230. -
  17231. -    public function deleteOrdersFromQueue($queueIds) {
  17232. -        $queueIdsString = implode(',', $queueIds);
  17233. -
  17234. -        $sql = "DELETE FROM sales_order_queue
  17235. -                WHERE id IN ($queueIdsString) AND refund = '1' ;";
  17236. -
  17237. -        $this->writeConnection->query($sql);
  17238. -        return true;
  17239. -    }
  17240. -
  17241. -}
  17242. -
  17243. -$params = array_slice($argv, 1);
  17244. -$refundO = new OrderQueueProcessor($params);
  17245. -$refundO->run();
  17246. -?>
  17247. \ No newline at end of file
  17248. diff --git a/utils/getBrandDetail.php b/utils/getBrandDetail.php
  17249. index dfd3e68..c80d67d 100644
  17250. --- a/utils/getBrandDetail.php
  17251. +++ b/utils/getBrandDetail.php
  17252. @@ -33,12 +33,7 @@ while($row = mysql_fetch_assoc($result))
  17253.         $row["_id"] = toInt($row["id_brand"]);
  17254.         $row["id_brand"] = $row["_id"];
  17255.  
  17256. -       try {
  17257. -               $MongoDBCollection->save($row,array("w"=>1));
  17258. -       }
  17259. -       catch(Exception $e){
  17260. -               echo $e->getMessage();
  17261. -       }
  17262. +       $MongoDBCollection->save($row);
  17263.  
  17264.         $c++;
  17265.  }
  17266. diff --git a/utils/getBrandDetailIncl.php b/utils/getBrandDetailIncl.php
  17267. index bb433af..91d8d0a 100644
  17268. --- a/utils/getBrandDetailIncl.php
  17269. +++ b/utils/getBrandDetailIncl.php
  17270. @@ -33,12 +33,7 @@ while($row = mysql_fetch_assoc($result))
  17271.         $row["_id"] = toInt($row["id_brand"]);
  17272.         $row["id_brand"] = $row["_id"];
  17273.  
  17274. -       try {
  17275. -               $MongoDBCollection->save($row,array("w"=>1));
  17276. -       }
  17277. -       catch(Exception $e){
  17278. -               echo $e->getMessage();
  17279. -       }
  17280. +       $MongoDBCollection->save($row);
  17281.  
  17282.         $c++;
  17283.  }
  17284. diff --git a/utils/getCategoryDetail.php b/utils/getCategoryDetail.php
  17285. index 90f2263..720425c 100644
  17286. --- a/utils/getCategoryDetail.php
  17287. +++ b/utils/getCategoryDetail.php
  17288. @@ -82,7 +82,6 @@ while($row = mysql_fetch_assoc($result))
  17289.         $row["is_active"] = toInt($row["is_active"]);
  17290.         $row["is_anchor"] = toInt($row["is_anchor"]);
  17291.         $row["do_uniware_sync"] = toInt($row["do_uniware_sync"]);
  17292. -       $row["description"] = toUtf8($row["description"]);
  17293.  
  17294.         $row["created_at"] = toDate($row["created_at"]);
  17295.         $row["updated_at"] = toDate($row["updated_at"]);
  17296. @@ -139,12 +138,7 @@ while($row = mysql_fetch_assoc($result))
  17297.         }
  17298.                 unset($row["thumbnail"]);
  17299.        
  17300. -       try {
  17301. -               $MongoDBCollection->save($row,array("w"=>1));
  17302. -       }
  17303. -       catch(Exception $e){
  17304. -               echo $e->getMessage();
  17305. -       }
  17306. +       $MongoDBCollection->save($row);
  17307.  
  17308.         $c++;
  17309.  }
  17310. diff --git a/utils/getCategoryDetailIncl.php b/utils/getCategoryDetailIncl.php
  17311. index 5f870e3..f90cf0e 100644
  17312. --- a/utils/getCategoryDetailIncl.php
  17313. +++ b/utils/getCategoryDetailIncl.php
  17314. @@ -138,12 +138,7 @@ while($row = mysql_fetch_assoc($result))
  17315.         }
  17316.                 unset($row["thumbnail"]);
  17317.        
  17318. -       try {
  17319. -               $MongoDBCollection->save($row,array("w"=>1));
  17320. -       }
  17321. -       catch(Exception $e){
  17322. -               echo $e->getMessage();
  17323. -       }
  17324. +       $MongoDBCollection->save($row);
  17325.  
  17326.         $c++;
  17327.  }
  17328. diff --git a/utils/getMediaDetail.php b/utils/getMediaDetail.php
  17329. index ccf0121..2f466a0 100644
  17330. --- a/utils/getMediaDetail.php
  17331. +++ b/utils/getMediaDetail.php
  17332. @@ -48,12 +48,7 @@ while($row = mysql_fetch_assoc($result))
  17333.          //$row["is_primary"] = $primary_image["value"].' '.$row["value"];     
  17334.          $row["is_primary"] = false;   
  17335.      }
  17336. -    try {
  17337. -               $MongoDBCollection->save($row,array("w"=>1));
  17338. -    }
  17339. -    catch(Exception $e){
  17340. -               echo $e->getMessage();
  17341. -       }
  17342. +       $MongoDBCollection->save($row);
  17343.         unset($row);
  17344.         $c++;
  17345.  }
  17346. diff --git a/utils/getMediaDetailIncl.php b/utils/getMediaDetailIncl.php
  17347. index f79f712..40fd598 100755
  17348. --- a/utils/getMediaDetailIncl.php
  17349. +++ b/utils/getMediaDetailIncl.php
  17350. @@ -48,12 +48,7 @@ while($row = mysql_fetch_assoc($result))
  17351.          //$row["is_primary"] = $primary_image["value"].' '.$row["value"];     
  17352.          $row["is_primary"] = false;   
  17353.      }
  17354. -    try {
  17355. -               $MongoDBCollection->save($row,array("w"=>1));
  17356. -    }
  17357. -    catch(Exception $e){
  17358. -               echo $e->getMessage();
  17359. -       }
  17360. +       $MongoDBCollection->save($row);
  17361.         unset($row);
  17362.         $c++;
  17363.  }
  17364. diff --git a/utils/getProductDetailArticle.php b/utils/getProductDetailArticle.php
  17365. index 54c1731..fc54a0b 100644
  17366. --- a/utils/getProductDetailArticle.php
  17367. +++ b/utils/getProductDetailArticle.php
  17368. @@ -217,12 +217,7 @@ while($row = mysql_fetch_array($result))
  17369.    
  17370.         //$MongoDBDocument = json_encode($output);
  17371.         //$MongoDBDocumentVariation = json_decode(utf8_encode(json_encode($output)));
  17372. -       try {
  17373. -               $MongoDBCollectionVariation->save($output,array("w"=>1));
  17374. -       }
  17375. -       catch(Exception $e){
  17376. -               echo $e->getMessage();
  17377. -       }
  17378. +       $MongoDBCollectionVariation->save($output);
  17379.         //print_r($MongoDBDocument."\n");
  17380.         //print_r($output);
  17381.         $c++;
  17382. diff --git a/utils/getProductDetailArticleIncl.php b/utils/getProductDetailArticleIncl.php
  17383. index f4fa6f7..e47295a 100755
  17384. --- a/utils/getProductDetailArticleIncl.php
  17385. +++ b/utils/getProductDetailArticleIncl.php
  17386. @@ -217,12 +217,7 @@ while($row = mysql_fetch_array($result))
  17387.    
  17388.         //$MongoDBDocument = json_encode($output);
  17389.         //$MongoDBDocumentVariation = json_decode(utf8_encode(json_encode($output)));
  17390. -       try {
  17391. -               $MongoDBCollectionVariation->save($output,array("w"=>1));
  17392. -       }
  17393. -       catch(Exception $e){
  17394. -               echo $e->getMessage();
  17395. -       }
  17396. +       $MongoDBCollectionVariation->save($output);
  17397.         //print_r($MongoDBDocument."\n");
  17398.         //print_r($output);
  17399.         $c++;
  17400. diff --git a/utils/getProductDetailCopy.php b/utils/getProductDetailCopy.php
  17401. index 268b9b6..2801372 100644
  17402. --- a/utils/getProductDetailCopy.php
  17403. +++ b/utils/getProductDetailCopy.php
  17404. @@ -274,12 +274,7 @@ while($row = mysql_fetch_array($result))
  17405.         //$MongoDBCollection->insert($MongoDBDocument);
  17406.  
  17407.         //print_r($output);
  17408. -       try {
  17409. -               $MongoDBCollection->save($output,array("w"=>1));
  17410. -       }
  17411. -       catch(Exception $e){
  17412. -               echo $e->getMessage();
  17413. -       }
  17414. +       $MongoDBCollection->save($output);
  17415.         $c++;
  17416.  }
  17417.  //End time
  17418. diff --git a/utils/getProductDetailCopyIncl.php b/utils/getProductDetailCopyIncl.php
  17419. index ab08f8e..a011b03 100755
  17420. --- a/utils/getProductDetailCopyIncl.php
  17421. +++ b/utils/getProductDetailCopyIncl.php
  17422. @@ -274,13 +274,7 @@ while($row = mysql_fetch_array($result))
  17423.         //$MongoDBCollection->insert($MongoDBDocument);
  17424.  
  17425.         //print_r($output);
  17426. -       try {
  17427. -               $MongoDBCollection->save($output,array("w"=>1));       
  17428. -       }
  17429. -       catch(Exception $e){
  17430. -               echo $e->getMessage();
  17431. -       }
  17432. -      
  17433. +       $MongoDBCollection->save($output);
  17434.         $c++;
  17435.  }
  17436.  //End time
  17437. diff --git a/utils/getProductDetailVariation.php b/utils/getProductDetailVariation.php
  17438. index 13b792e..7c7489d 100644
  17439. --- a/utils/getProductDetailVariation.php
  17440. +++ b/utils/getProductDetailVariation.php
  17441. @@ -414,13 +414,7 @@ while($row = mysql_fetch_array($result))
  17442.         //$MongoDBDocument = json_encode($output);
  17443.         //$MongoDBDocumentVariation = json_decode(utf8_encode(json_encode($output)));
  17444.         //$MongoDBCollectionVariation->save($MongoDBDocumentVariation);
  17445. -       try {
  17446. -               $MongoDBCollectionVariation->save($output,array("w"=>1));
  17447. -       }
  17448. -       catch(Exception $e){
  17449. -               echo $e->getMessage();
  17450. -       }
  17451. -
  17452. +       $MongoDBCollectionVariation->save($output);
  17453.         //print_r($MongoDBDocument."\n");
  17454.         //print_r($output);
  17455.         $c++;
  17456. diff --git a/utils/getProductDetailVariationIncl.php b/utils/getProductDetailVariationIncl.php
  17457. index 39f04da..5262513 100755
  17458. --- a/utils/getProductDetailVariationIncl.php
  17459. +++ b/utils/getProductDetailVariationIncl.php
  17460. @@ -438,12 +438,7 @@ while($row = mysql_fetch_array($result))
  17461.         //$MongoDBDocument = json_encode($output);
  17462.         //$MongoDBDocumentVariation = json_decode(utf8_encode(json_encode($output)));
  17463.         //$MongoDBCollectionVariation->save($MongoDBDocumentVariation);
  17464. -       try {
  17465. -               $MongoDBCollectionVariation->save($output,array("w"=>1));
  17466. -       }
  17467. -       catch(Exception $e){
  17468. -               echo $e->getMessage();
  17469. -       }
  17470. +       $MongoDBCollectionVariation->save($output);
  17471.         //print_r($MongoDBDocument."\n");
  17472.         //print_r($output);
  17473.         $c++;
  17474. diff --git a/utils/importTierPrice.php b/utils/importTierPrice.php
  17475. deleted file mode 100644
  17476. index 4fd49f4..0000000
  17477. --- a/utils/importTierPrice.php
  17478. +++ /dev/null
  17479. @@ -1,68 +0,0 @@
  17480. -<?php
  17481. -
  17482. -require_once 'connection.php';
  17483. -date_default_timezone_set('Asia/Calcutta');
  17484. -//Measure start time
  17485. -$time_start = microtime(true);
  17486. -
  17487. -//Read File
  17488. -$fileTier = fopen("../var/import/".$argv[1], "r") or die("Unable to open file!");
  17489. -$headers = fgets($fileTier);
  17490. -//MySQL Connection
  17491. -$dbname = 'magento';
  17492. -$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql');
  17493. -mysql_select_db($dbname, $conn);
  17494. -
  17495. -$info = array();
  17496. -$deleted = array();
  17497. -
  17498. -while(!feof($fileTier)) {
  17499. -       $info = explode(",",fgets($fileTier));
  17500. -       //echo $info[0]." ".$info[1]." ".$info[2];
  17501. -       $sku = $info[0];
  17502. -       $sql = "select entity_id from catalog_product_entity where sku='".$sku."'";
  17503. -       //echo $sql."\n";
  17504. -       $result = mysql_query($sql);
  17505. -       $row = mysql_fetch_array($result);
  17506. -       if($row['entity_id']!=null) {
  17507. -               $sql_check = "select * from catalog_product_entity_tier_price where entity_id=".$row['entity_id'];
  17508. -               $check_result = mysql_query($sql_check);
  17509. -               $check_row = mysql_fetch_array($check_result);
  17510. -               if(count($check_row) > 0)
  17511. -               {
  17512. -                       if(!in_array($sku, $deleted)) {
  17513. -                               $sql_delete = "delete from catalog_product_entity_tier_price where entity_id=".$row['entity_id'];
  17514. -                               if (mysql_query($sql_delete) === TRUE) {
  17515. -                               echo "\nRecord deleted successfully for ".$sku;
  17516. -                               array_push($deleted, $sku);
  17517. -                               } else {
  17518. -                                       echo "\nRecord not deleted for ".$sku;
  17519. -                               }
  17520. -                       }
  17521. -                       if(in_array($sku,$deleted)) {
  17522. -                               $sql_insert = "insert into catalog_product_entity_tier_price(customer_group_id,all_groups,website_id,entity_id,qty,value) values(1,1,0,'".$row['entity_id']."','".$info[1]."','".$info[2]."')";
  17523. -                               if (mysql_query($sql_insert) === TRUE) {
  17524. -                               echo "\nNew record created successfully for ".$sku." with Qty ".$info[1]." and Tier Price ".$info[2];
  17525. -                                       $sql_update = "update catalog_product_entity set updated_at=now() where sku='".$sku."'";
  17526. -                                       if (mysql_query($sql_update) === TRUE) {
  17527. -                                               echo "updated_at time updated";
  17528. -                                       }
  17529. -                               } else {
  17530. -                                       echo "\nRecord not Pushed for ".$sku." with Qty ".$info[1]." and Tier Price ".$info[2];
  17531. -                           }
  17532. -                   }  
  17533. -               }
  17534. -       }
  17535. -}
  17536. -
  17537. -//closing the file
  17538. -fclose($fileTier);
  17539. -//closing mysql connection
  17540. -//$conn->close();
  17541. -
  17542. -//End time
  17543. -$time_end = microtime(true);
  17544. -echo "\nUploaded in ".($time_end-$time_start)." secs.";
  17545. -
  17546. -?>
  17547. -
  17548. diff --git a/utils/mapConfigProductAttrib.php b/utils/mapConfigProductAttrib.php
  17549. index 9aacd48..edc0785 100755
  17550. --- a/utils/mapConfigProductAttrib.php
  17551. +++ b/utils/mapConfigProductAttrib.php
  17552. @@ -84,4 +84,36 @@ function mapProductAttrib($sku,$attribCodes,$count,$totalcount,$logArray)
  17553.      return array('logArray'=>$logArray);
  17554.  }
  17555.  
  17556. +function do_logging($logArray) {
  17557. +
  17558. +    $endTime = new DateTime(date("Y:m:d h:i:s"));
  17559. +    $logArray['Completion_Time']=$endTime->format('Y-m-d H:i:s');
  17560. +    echo "End Time: ".$endTime->format('Y-m-d H:i:s')."\n";
  17561. +    
  17562. +    //Time Taken by the script (in secods)
  17563. +    $diffTime = $logArray['startTimeObj']->diff($endTime);
  17564. +    $hours   = $diffTime->format('%h');
  17565. +    $minutes = $diffTime->format('%i');
  17566. +    $seconds = $diffTime->format('%s');
  17567. +
  17568. +    $logArray['Execution_Time'] = "$hours hours $minutes minutes $seconds seconds";
  17569. +    print $logArray['Execution_Time']." in completing the job\n";
  17570. +
  17571. +    //Print Detailed Log
  17572. +    $fp = fopen("../var/log/detail_log_file.txt", "a") or die("Unable to open file!");
  17573. +    fprintf($fp,"\n\n*************************** %s ***********************\n",$logArray['Script_Name']);
  17574. +    fwrite($fp, serialize($logArray));
  17575. +    fclose($fp);
  17576. +
  17577. +    //Print Summary Log
  17578. +    $fp = fopen("../var/log/summary_log_file.txt", "a") or die("Unable to open file!");
  17579. +    fprintf($fp,"\n\n*************************** %s ***********************",$logArray['Script_Name']);
  17580. +    fprintf($fp,"\nScript Name    - %s",$logArray['Script_Name']);
  17581. +    fprintf($fp,"\nCSV File       - %s",$logArray['CSV_Name']);
  17582. +    fprintf($fp,"\nStart Time     - %s",$logArray['Start_Time']);
  17583. +    fprintf($fp,"\nCompetion Time - %s",$logArray['Completion_Time']);
  17584. +    fprintf($fp,"\nExecution Time - %s",$logArray['Execution_Time']);
  17585. +    fprintf($fp,"\nSKUs Checked/Impacted   - %d",$logArray['skuImpacted']);
  17586. +}
  17587. +
  17588.  ?>
  17589. diff --git a/utils/updateInventory.php b/utils/updateInventory.php
  17590. deleted file mode 100644
  17591. index b355d5d..0000000
  17592. --- a/utils/updateInventory.php
  17593. +++ /dev/null
  17594. @@ -1,248 +0,0 @@
  17595. -<?php
  17596. -require_once ('../app/Mage.php');
  17597. -require_once('commonFunctions.php');
  17598. -
  17599. -Mage::app();
  17600. -
  17601. -$scriptName = $argv[0];
  17602. -$fileName = $argv[1];
  17603. -
  17604. -$startTime = new DateTime(date("Y:m:d h:i:s"));
  17605. -$logArray = array ('Script_Name'=>$scriptName,'CSV_Name'=>$fileName,'Start_Time' => $startTime->format('Y-m-d H:i:s'),'startTimeObj'=>$startTime);
  17606. -echo "Start Time: ".$startTime->format('Y-m-d H:i:s')."\n";
  17607. -
  17608. -//Read The CSV file and convert into array
  17609. -$responseArray = csv_to_array($fileName);
  17610. -$dataArray = $responseArray['dataArray'];
  17611. -$attributeHeader = $responseArray['attributeHeader'];
  17612. -
  17613. -$errorArray = $responseArray['errorArray'];
  17614. -$attributeSetArray = $responseArray['attributeSetArray'];
  17615. -
  17616. -//We shall use this to restrict attributes cache limited to attribute set received in CSV
  17617. -Mage::register('attributeSetArray', array_keys($attributeSetArray));
  17618. -
  17619. -//We shall use this to restrict attribute cache limited to header attribute_code received in CSV
  17620. -Mage::register('attributeArray', $attributeHeader);
  17621. -
  17622. -
  17623. -$logArray['skuImpacted'] = count($dataArray);
  17624. -$logArray['errorArray'] = $errorArray;
  17625. -
  17626. -/** @var $import AvS_FastSimpleImport_Model_Import */
  17627. -$import = Mage::getModel('fastsimpleimport/import');
  17628. -try {
  17629. -    $import->processProductImport($dataArray, $attributeHeader);
  17630. -    $errorArray['FinalResult'] = $logArray['skuImpacted']." Products Updated Successfully";
  17631. -} catch (Exception $e) {
  17632. -    $errorArray['FinalResult'][] = "Entire Import Failed Due to the following Errors";
  17633. -    if (count($import->getErrorMessages()) == 0) {
  17634. -        if ($e->getMessage() == 'Can not find required columns: sku') {
  17635. -            $errorArray['FinalResult'][] = 'No row is qualified to import';
  17636. -        }
  17637. -    } else {
  17638. -        $errorArray['FinalResult'][] = $import->getErrorMessages();
  17639. -    }
  17640. -}
  17641. -//Print Error array on screen
  17642. -print_r($errorArray);
  17643. -
  17644. -$logArray['errorArray'] = $errorArray;
  17645. -//Log execution summary
  17646. -do_logging($logArray);
  17647. -
  17648. -/**
  17649. - * Read csv file, have validations and skip rows violating and
  17650. - * and finally prepare good rows array
  17651. - *
  17652. - * @param string $filename
  17653. - * @return Array()
  17654. - */  
  17655. -function csv_to_array($filename='', $delimiter=',')
  17656. -{
  17657. -    if(!file_exists($filename) || !is_readable($filename)) {
  17658. -        echo 'File is not available / readable';
  17659. -        return FALSE;
  17660. -    }
  17661. -
  17662. -    $header = NULL;
  17663. -    $data = array();
  17664. -    $error = array();
  17665. -    $attributeSetArray = array();
  17666. -    $isInStockIndexSet = 0;
  17667. -    $useConfigManageStockIndexSet = 0;
  17668. -    $attributeMissingFlag = 0;
  17669. -    $isColumnCountStrict = 1;
  17670. -    $mandatoryAttributes = array('sku','qty','manage_stock');
  17671. -
  17672. -    if (($handle = fopen($filename, 'r')) !== FALSE)
  17673. -    {
  17674. -        while (($row = fgetcsv($handle, 0, $delimiter)) !== FALSE)
  17675. -        {
  17676. -            if(!$header) {
  17677. -               $orgCsvHeader = $header = $row;
  17678. -
  17679. -                //Check if mandatory attributes are in input CSV
  17680. -               $attributeMissingFlag = checkMandatoryAttributes($mandatoryAttributes, $header,$error,$isColumnCountStrict);
  17681. -
  17682. -                //If mandatory attributes are missing then do not iterate for each row of CSV
  17683. -               if ($attributeMissingFlag ==1) {
  17684. -                    break;
  17685. -               }
  17686. -                
  17687. -                $filteredHeader = array();
  17688. -                //store websites    is_in_stock manage_stock    use_config_manage_stock sku qty
  17689. -                //admin base    1   1   1   1248224 10
  17690. -
  17691. -                $updateColumns = array('sku','qty','manage_stock');
  17692. -                foreach($updateColumns as $column) {
  17693. -                        if(in_array($column,$header)) {
  17694. -                                switch($column) {
  17695. -                                        case 'sku':
  17696. -                                                $skuIndex = array_search($column,$header);
  17697. -                                                $filteredHeader[$skuIndex] = $column;
  17698. -                                        break;
  17699. -                                        case 'qty':
  17700. -                                                $qtyIndex = array_search($column,$header);
  17701. -                                                $filteredHeader[$qtyIndex] = $column;
  17702. -                                        break;
  17703. -                                        case 'manage_stock':
  17704. -                                                $manageStockIndex = array_search($column,$header);
  17705. -                                                $filteredHeader[$manageStockIndex] = $column;
  17706. -                                        break;
  17707. -                                }
  17708. -                        
  17709. -                        }
  17710. -                }
  17711. -                ksort($filteredHeader);
  17712. -
  17713. -            } else {
  17714. -
  17715. -                               $filteredData = array();
  17716. -                if (isset($skuIndex)) {
  17717. -                        $filteredData[$skuIndex] = $row[$skuIndex];
  17718. -                }
  17719. -                if (isset($qtyIndex)) {
  17720. -                        $filteredData[$qtyIndex] = (int)$row[$qtyIndex];
  17721. -                }
  17722. -                if (isset($manageStockIndex)) {
  17723. -                        $manageStock = strtolower(trim($row[$manageStockIndex]));
  17724. -                        if($manageStock == 'yes') {
  17725. -                            $filteredData[$manageStockIndex] = 1;
  17726. -                        } else if($manageStock == 'no') {
  17727. -                            $filteredData[$manageStockIndex] = 0;
  17728. -                        } else {
  17729. -                           $filteredData[$manageStockIndex] = $manageStock;
  17730. -                        }
  17731. -                }
  17732. -
  17733. -                //Business Rule -  if quantity=0 and manage_stock=yes then product is out of stock (is_in_stock=0)
  17734. -                if ((isset($qtyIndex) && isset($manageStockIndex)) && $filteredData[$qtyIndex]==0 && $filteredData[$manageStockIndex]==1) {
  17735. -                    if(!in_array('is_in_stock', $filteredHeader)) {
  17736. -                        $filteredHeader[] = 'is_in_stock';
  17737. -                    }
  17738. -                    $index = array_search('is_in_stock',$filteredHeader);
  17739. -                    $filteredData[$index] = 0;
  17740. -                    $isInStockIndexSet = 1;
  17741. -                } else if (isset($qtyIndex) && isset($manageStockIndex) && in_array('is_in_stock', $filteredHeader)) {
  17742. -                    $index = array_search('is_in_stock',$filteredHeader);
  17743. -                    $filteredData[$index] = '';
  17744. -                }
  17745. -
  17746. -                //Business Rule -  If manage stock is yes, use config manage stock will automatically be unchecked (use_config_manage_stock = 0)
  17747. -                if (isset($manageStockIndex) && $filteredData[$manageStockIndex]== 1) {
  17748. -                    if(!in_array('use_config_manage_stock', $filteredHeader)) {
  17749. -                        $filteredHeader[] = 'use_config_manage_stock';
  17750. -                    }
  17751. -                    $index = array_search('use_config_manage_stock',$filteredHeader);
  17752. -                    $filteredData[$index] = 0;
  17753. -                    $useConfigManageStockIndexSet = 1;
  17754. -                }  else if (isset($manageStockIndex) && in_array('use_config_manage_stock', $filteredHeader)) {
  17755. -                    $index = array_search('use_config_manage_stock',$filteredHeader);
  17756. -                    if(!isset($filteredData[$index])) {
  17757. -                        $filteredData[$index] = '';    
  17758. -                    }
  17759. -                }
  17760. -
  17761. -                //Business Rule -  if quantity>=1 and manage_stock=yes then product should be in stock (is_in_stock=1)
  17762. -                if ((isset($qtyIndex) && isset($manageStockIndex)) && $filteredData[$qtyIndex]>=1 && $filteredData[$manageStockIndex]==1) {
  17763. -                    if(!in_array('is_in_stock', $filteredHeader)) {
  17764. -                        $filteredHeader[] = 'is_in_stock';
  17765. -                    }
  17766. -                    $index = array_search('is_in_stock',$filteredHeader);
  17767. -                    $filteredData[$index] = 1;
  17768. -                    $isInStockIndexSet = 1;
  17769. -                } else if (isset($qtyIndex) && isset($manageStockIndex) && in_array('is_in_stock', $filteredHeader)) {
  17770. -                    $index = array_search('is_in_stock',$filteredHeader);
  17771. -                    $filteredData[$index] = '';
  17772. -                }
  17773. -
  17774. -                ksort($filteredData);
  17775. -
  17776. -                $associativeArray = array_combine($filteredHeader, $filteredData);
  17777. -
  17778. -                //Have script specific validations
  17779. -                $validationResponse = validate($associativeArray);
  17780. -
  17781. -                $sku = $associativeArray['sku'];
  17782. -                if(count($validationResponse) > 0) {
  17783. -                        $error[$sku] = $validationResponse;
  17784. -                }
  17785. -                $data[$sku] = $associativeArray;
  17786. -            }
  17787. -
  17788. -        }
  17789. -
  17790. -        //Ensure that use_config_manage_stock and is_in_stock items are available for all rows or none
  17791. -        if($useConfigManageStockIndexSet == 1 || $isInStockIndexSet == 1 ) {
  17792. -            foreach($data as $sku => &$itemArray) {
  17793. -                if($isInStockIndexSet == 1 && !isset($itemArray['is_in_stock'])) {
  17794. -                       $itemArray['is_in_stock'] = '';
  17795. -                }
  17796. -
  17797. -                if($useConfigManageStockIndexSet == 1 && !isset($itemArray['use_config_manage_stock'])) {
  17798. -                       $itemArray['use_config_manage_stock'] = '';
  17799. -                }
  17800. -            }
  17801. -        }
  17802. -
  17803. -        if ($attributeMissingFlag !=1) {
  17804. -            // No Insert only Update SKUs
  17805. -            // Set errors to skip rows corresponding to SKUs that do not exist in magento database
  17806. -            checkSkusExist($data,$error,$attributeSetArray);
  17807. -
  17808. -            //Unset all the items that have any error
  17809. -            $errorSkuArray = array_keys($error);
  17810. -            foreach($errorSkuArray as $sku) {
  17811. -                unset($data[$sku]);
  17812. -            }
  17813. -
  17814. -            $data = array_values($data); //Convert sku indexed array into integer indexed array
  17815. -        }
  17816. -
  17817. -        fclose($handle);
  17818. -    }
  17819. -    return array('dataArray'=>$data, 'errorArray' =>$error, 'attributeSetArray' => $attributeSetArray, 'attributeHeader' => $orgCsvHeader);
  17820. -}
  17821. -
  17822. -/**
  17823. - * Validate product array item
  17824. - *
  17825. - * @return Array()
  17826. - */
  17827. -function validate($productArray) {
  17828. -        $errorArray = array();
  17829. -print_r($productArray);        
  17830. -        //Quantity cannot be less than zero
  17831. -        if (isset($productArray['qty']) && (int)$productArray['qty'] < 0 ) {
  17832. -                $errorArray[] = 'qty cannot be less than 0';    
  17833. -        }
  17834. -        //manage_stock should be yes/no
  17835. -        if (isset($productArray['manage_stock']) && !in_array($productArray['manage_stock'],array(1,0),TRUE)) {
  17836. -                $errorArray[] = 'manage_stock should be yes or no';    
  17837. -        } else {
  17838. -               echo 'Manage Stock passed';
  17839. -       }
  17840. -
  17841. -        return $errorArray;
  17842. -}
  17843. diff --git a/wms/api/index.php b/wms/api/index.php
  17844. index cd34502..7be24df 100644
  17845. --- a/wms/api/index.php
  17846. +++ b/wms/api/index.php
  17847. @@ -32,7 +32,7 @@ if (!empty($_GET) && isset($_GET['module'])) {
  17848.                       $insertedId = Log::logApiRequest($_SERVER['REQUEST_URI'], $module, $method, $object_code, $requestId, addslashes($HTTP_RAW_POST_DATA));
  17849.                    }
  17850.  
  17851. -                  if(($requestId && $insertedId) || !$requestId || $post['regenerate']) {
  17852. +                  if(($requestId && $insertedId) || !$requestId) {
  17853.                       $module = ucfirst($module);
  17854.                       require_once(WMS_API_PATH . '/module/'.$module.'.php');
  17855.                       $objModule = new $module();
  17856. diff --git a/wms/module/Log.php b/wms/module/Log.php
  17857. index a8f1135..fa4a6f3 100644
  17858. --- a/wms/module/Log.php
  17859. +++ b/wms/module/Log.php
  17860. @@ -3,16 +3,10 @@
  17861.  class Log
  17862.  {
  17863.     static function logApiRequest($url, $module, $method, $object_code, $requestId, $request) {
  17864. -      global $mageWrite, $mageRead, $post;
  17865. +      global $mageWrite;
  17866.        $logged = true;
  17867.        $respTxt = '{"error":true, "message":"Duplicate Request and Last Request unprocessed"}';
  17868.  
  17869. -      $lastRec = $mageRead->query("SELECT id, is_processed, created_at FROM wms_api_request_log WHERE request_id = '$requestId';")->fetch();
  17870. -      if($lastRec && $lastRec['is_processed'] == 0 && strtotime($lastRec['created_at']) < strtotime('+5 hours +20 minutes')) {
  17871. -         $post['regenerate'] = true;
  17872. -         return $lastRec['id'];
  17873. -      }
  17874. -
  17875.        $effectedRows = $mageWrite->exec("INSERT IGNORE INTO wms_api_request_log(url, module, method, request_id,
  17876.              object_code, request, is_processed, created_at)
  17877.            VALUES ('$url','$module','$method','$requestId','$object_code','$request',0, NOW());");
  17878.