unbxd_feedconnector - Version 1.0.22

Version Notes

Unbxd module to integrate the search

Download this release

Release Info

Developer ananthesh
Extension unbxd_feedconnector
Version 1.0.22
Comparing to
See all releases


Code changes from version 1.0.21 to 1.0.22

Files changed (35) hide show
  1. app/code/local/Unbxd/Search/Helper/Catalogsearch.php +5 -5
  2. app/code/local/Unbxd/Search/Helper/Data.php +10 -3
  3. app/code/local/Unbxd/Search/Model/Catalog/Layer.php +1 -2
  4. app/code/local/Unbxd/Search/Model/Resource/Engine/Unbxdsearch.php +1 -1
  5. app/code/local/Unbxd/Search/etc/config.xml +1 -1
  6. app/code/local/Unbxd/Searchcore/Helper/Constants.php +6 -0
  7. app/code/local/Unbxd/Searchcore/Helper/Feedhelper.php +61 -3
  8. app/code/local/Unbxd/Searchcore/Model/Api/Task.php +3 -3
  9. app/code/local/Unbxd/Searchcore/Model/Config.php +1 -1
  10. app/code/local/Unbxd/Searchcore/Model/Feed/Feedcreator.php +1 -5
  11. app/code/local/Unbxd/Searchcore/Model/Feed/Filemanager.php +1 -1
  12. app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Jsonbuilder.php +1 -1
  13. app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Productbuilder.php +160 -26
  14. app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Schemabuilder.php +1 -1
  15. app/code/local/Unbxd/Searchcore/Model/Resource/Config.php +11 -11
  16. app/code/local/Unbxd/Searchcore/Model/Resource/Field.php +14 -0
  17. app/code/local/Unbxd/Searchcore/Model/Resource/Product/Collection.php +4 -7
  18. app/code/local/Unbxd/Searchcore/Model/Resource/Sync.php +1 -1
  19. app/code/local/Unbxd/Searchcore/Model/Sync.php +1 -1
  20. app/code/local/Unbxd/Searchcore/controllers/Adminhtml/{IndexController.php → UnbxdController.php} +1 -1
  21. app/code/local/Unbxd/Searchcore/controllers/CatalogController.php +1 -1
  22. app/code/local/Unbxd/Searchcore/controllers/ConfigController.php +21 -0
  23. app/code/local/Unbxd/Searchcore/etc/adminhtml.xml +2 -1
  24. app/code/local/Unbxd/Searchcore/etc/config.xml +17 -14
  25. app/code/local/Unbxd/Searchcore/sql/unbxd_searchcore_setup/upgrade-1.0.21-1.0.22.php +46 -0
  26. app/design/adminhtml/default/default/layout/unbxd/searchcore.xml +3 -3
  27. app/design/frontend/base/default/template/unbxd/search/autosuggest.phtml +8 -2
  28. app/design/frontend/base/default/template/unbxd/searchcore/tracker.phtml +12 -3
  29. app/etc/modules/Unbxd_Search.xml +1 -1
  30. js/unbxd/recscore/app.js +4 -0
  31. js/unbxd/recscore/embed.js +176 -0
  32. js/unbxd/recscore/jquery.js +4 -0
  33. js/unbxd/recscore/unbxdAnalytics.js +843 -0
  34. lib/Unbxd/Client.php +32 -32
  35. package.xml +10 -10
app/code/local/Unbxd/Search/Helper/Catalogsearch.php CHANGED
@@ -7,10 +7,10 @@
7
  */
8
  class Unbxd_Search_Helper_Catalogsearch extends Mage_CatalogSearch_Helper_Data {
9
  public function getResultUrl($query = null) {
10
- if(Mage::helper('unbxd_search')->isHostedSearchActive()) {
11
- $redirectUrl = Mage::helper('unbxd_search')->getHostedRedirectUrl();
12
- return $redirectUrl . ((!is_null($query) && $query != "")?($this->getQueryParamName()."=".$query):"");
13
- }
14
- return parent::getResultUrl($query);
15
  }
16
  }
7
  */
8
  class Unbxd_Search_Helper_Catalogsearch extends Mage_CatalogSearch_Helper_Data {
9
  public function getResultUrl($query = null) {
10
+ if(Mage::helper('unbxd_search')->isHostedSearchActive()) {
11
+ $redirectUrl = Mage::helper('unbxd_search')->getHostedRedirectUrl();
12
+ return $redirectUrl . ((!is_null($query) && $query != "")?($this->getQueryParamName()."=".$query):"");
13
+ }
14
+ return parent::getResultUrl($query);
15
  }
16
  }
app/code/local/Unbxd/Search/Helper/Data.php CHANGED
@@ -557,9 +557,16 @@ class Unbxd_Search_Helper_Data extends Mage_Core_Helper_Abstract
557
  * This method checks whether hosted search is active or not
558
  * @return boolean
559
  */
560
- public function isHostedSearchActive() {
561
- $siteKey = $this->getSiteName();
562
- $apiKey = $this->getApiKey();
 
 
 
 
 
 
 
563
  $searchConf = $this->getEngineConfigData('search');
564
  $hostedSearchConf = Mage::helper('unbxd_searchcore')->isConfigTrue(Mage::app()->getWebsite(),Unbxd_Searchcore_Helper_Constants::SEARCH_HOSTED_STATUS);
565
  $searchModConf = Mage::helper('unbxd_searchcore')->isConfigTrue(Mage::app()->getWebsite(), Unbxd_Searchcore_Helper_Constants::SEARCH_MOD_STATUS);
557
  * This method checks whether hosted search is active or not
558
  * @return boolean
559
  */
560
+ public function isHostedSearchActive()
561
+ {
562
+ $siteKey = null;
563
+ $apiKey = null;
564
+ try {
565
+ $siteKey = $this->getSiteName();
566
+ $apiKey = $this->getApiKey();
567
+ } catch(Exception $e) {
568
+ //ignoring the exception
569
+ }
570
  $searchConf = $this->getEngineConfigData('search');
571
  $hostedSearchConf = Mage::helper('unbxd_searchcore')->isConfigTrue(Mage::app()->getWebsite(),Unbxd_Searchcore_Helper_Constants::SEARCH_HOSTED_STATUS);
572
  $searchModConf = Mage::helper('unbxd_searchcore')->isConfigTrue(Mage::app()->getWebsite(), Unbxd_Searchcore_Helper_Constants::SEARCH_MOD_STATUS);
app/code/local/Unbxd/Search/Model/Catalog/Layer.php CHANGED
@@ -21,8 +21,7 @@ class Unbxd_Search_Model_Catalog_Layer extends Mage_Catalog_Model_Layer
21
  if (isset($this->_productCollections[$category->getId()])) {
22
  $collection = $this->_productCollections[$category->getId()];
23
  } else {
24
- $collection = Mage::helper('catalogsearch')
25
- ->getEngine()
26
  ->getResultCollection()
27
  ->setStoreId($category->getStoreId())
28
  ->addCategoryId($category->getId())
21
  if (isset($this->_productCollections[$category->getId()])) {
22
  $collection = $this->_productCollections[$category->getId()];
23
  } else {
24
+ $collection = Mage::getResourceModel('unbxd_search/engine_unbxdsearch')
 
25
  ->getResultCollection()
26
  ->setStoreId($category->getStoreId())
27
  ->addCategoryId($category->getId())
app/code/local/Unbxd/Search/Model/Resource/Engine/Unbxdsearch.php CHANGED
@@ -213,7 +213,7 @@ class Unbxd_Search_Model_Resource_Engine_Unbxdsearch extends Unbxd_Search_Model_
213
  'stats' => 'price', 'indent' => 'on',
214
  'uuid' => (isset($_COOKIE['unbxd_userId'])) ? $_COOKIE['unbxd_userId'] : NULL,
215
  'facet.multiselect' => $multiselectValue?"true":"false"))
216
- ->setDebug(true)
217
  ->setSort($this->_prepareSortFields(array_key_exists('sort_by', $params)?$params['sort_by']:array()))
218
  ->search();
219
  if (!$data instanceof Unbxd_ResultSet) {
213
  'stats' => 'price', 'indent' => 'on',
214
  'uuid' => (isset($_COOKIE['unbxd_userId'])) ? $_COOKIE['unbxd_userId'] : NULL,
215
  'facet.multiselect' => $multiselectValue?"true":"false"))
216
+ ->setDebug(false)
217
  ->setSort($this->_prepareSortFields(array_key_exists('sort_by', $params)?$params['sort_by']:array()))
218
  ->search();
219
  if (!$data instanceof Unbxd_ResultSet) {
app/code/local/Unbxd/Search/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Unbxd_Search>
5
- <version>1.0.21</version>
6
  </Unbxd_Search>
7
  </modules>
8
  <frontend>
2
  <config>
3
  <modules>
4
  <Unbxd_Search>
5
+ <version>1.0.22</version>
6
  </Unbxd_Search>
7
  </modules>
8
  <frontend>
app/code/local/Unbxd/Searchcore/Helper/Constants.php CHANGED
@@ -161,6 +161,12 @@ class Unbxd_Searchcore_Helper_Constants extends Mage_Core_Helper_Abstract {
161
 
162
  const INCLUDE_CHILD_PRODUCT = 'include_child_product';
163
 
 
 
 
 
 
 
164
  const FEED_STATUS_UPLOADING = 'UPLOADING';
165
 
166
  const FEED_STATUS_UPLOADED_SUCCESSFULLY = 'UPLOADED SUCCESSFULL';
161
 
162
  const INCLUDE_CHILD_PRODUCT = 'include_child_product';
163
 
164
+ const INCLUDE_ENABLED_CHILD_PRODUCT = 'include_only_enabled_child_product';
165
+
166
+ const INCLUDE_OUT_OF_STOCK_CHILD_PRODUCT = 'include_out_of_stock_child_product';
167
+
168
+ const INCLUDE_OUT_OF_STOCK_FROM_NON_CACHE = "include_out_of_stock_from_non_cache";
169
+
170
  const FEED_STATUS_UPLOADING = 'UPLOADING';
171
 
172
  const FEED_STATUS_UPLOADED_SUCCESSFULLY = 'UPLOADED SUCCESSFULL';
app/code/local/Unbxd/Searchcore/Helper/Feedhelper.php CHANGED
@@ -24,6 +24,45 @@ class Unbxd_Searchcore_Helper_Feedhelper extends Unbxd_Searchcore_Helper_Data {
24
  }
25
  return false;
26
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  /**
28
  * function to get Category from the category id,
29
  * This checks it present in the global array 'categoryMap', if it is not there fetches from db
@@ -122,11 +161,10 @@ class Unbxd_Searchcore_Helper_Feedhelper extends Unbxd_Searchcore_Helper_Data {
122
  * @return bool
123
  */
124
  public function isMultiSelect($attributeName = ""){
125
- if($attributeName == "status" || $attributeName == "visibility" || $attributeName == "entity_id" ){
126
  return false;
127
  }
128
- if($this->getFieldType($attributeName) == "select" ||
129
- $this->getFieldType($attributeName) == "multiselect" ||
130
  $attributeName == Unbxd_Searchcore_Model_Resource_Field::CATEGORY_IDS ||
131
  $attributeName == Unbxd_Searchcore_Model_Resource_Field::CATEGORY_IDS_NAME ||
132
  $attributeName == Unbxd_Searchcore_Model_Resource_Field::CAT_LEVEL_1_NAME ||
@@ -138,6 +176,26 @@ class Unbxd_Searchcore_Helper_Feedhelper extends Unbxd_Searchcore_Helper_Data {
138
  return false;
139
  }
140
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
141
  public function isImage($attributeName = "") {
142
  if($this->getFieldType($attributeName) == "media_image") {
143
  return true;
24
  }
25
  return false;
26
  }
27
+
28
+ public function getAllFilterableAttributes(Mage_Core_Model_Website $website) {
29
+
30
+ $filterableAttributes = array();
31
+ $stores = $website->getStores();
32
+ $this->tempCategoriesScanned = array();
33
+ foreach($stores as $store) {
34
+ Mage::app()->setCurrentStore($store);
35
+ $categoryId = $store->getRootCategoryId();
36
+ $category = Mage::getModel('catalog/category')->load($categoryId);
37
+ $this->tempCategoriesScanned[] = $categoryId;
38
+ $filterableAttributes = array_merge($filterableAttributes, $this->getFilterableAttributesForCategory($category));
39
+ }
40
+ return array_unique($filterableAttributes);
41
+ }
42
+
43
+ public function getFilterableAttributesForCategory($category) {
44
+ if(array_key_exists($category->getId(), $this->tempCategoriesScanned)) {
45
+ return array();
46
+ } else {
47
+ $this->tempCategoriesScanned[] = $category->getId();
48
+ }
49
+ $filterableAttributes = array();
50
+ $layer = Mage::getModel("catalog/layer");
51
+ $layer->setCurrentCategory($category);
52
+ $attributes = $layer->getFilterableAttributes();
53
+ foreach ($attributes as $attribute) {
54
+ $filterableAttributes[] = $attribute->getAttributeCode();
55
+ }
56
+ $childrenCategoryIds = $category->getAllChildren();
57
+ $childrenCategories = Mage::getModel('catalog/category')->getCollection()->addIdFilter($childrenCategoryIds)->load();
58
+ if(!is_null($childrenCategories)) {
59
+ foreach ($childrenCategories as $childrenCategory) {
60
+ $filterableAttributes = array_merge($filterableAttributes, $this->getFilterableAttributesForCategory($childrenCategory));
61
+ }
62
+ }
63
+ return array_unique($filterableAttributes);
64
+ }
65
+
66
  /**
67
  * function to get Category from the category id,
68
  * This checks it present in the global array 'categoryMap', if it is not there fetches from db
161
  * @return bool
162
  */
163
  public function isMultiSelect($attributeName = ""){
164
+ if(!$this->excludeMultiSelectList($attributeName)) {
165
  return false;
166
  }
167
+ if( $this->isMultiSelectDatatype($attributeName)||
 
168
  $attributeName == Unbxd_Searchcore_Model_Resource_Field::CATEGORY_IDS ||
169
  $attributeName == Unbxd_Searchcore_Model_Resource_Field::CATEGORY_IDS_NAME ||
170
  $attributeName == Unbxd_Searchcore_Model_Resource_Field::CAT_LEVEL_1_NAME ||
176
  return false;
177
  }
178
 
179
+ public function excludeMultiSelectList($attributeName = "") {
180
+ if($attributeName == "status" || $attributeName == "visibility" || $attributeName == "entity_id" ){
181
+ return false;
182
+ }
183
+ return true;
184
+ }
185
+
186
+
187
+ public function isMultiSelectDatatype($attributeName = "") {
188
+ if(!$this->excludeMultiSelectList($attributeName)) {
189
+ return false;
190
+ }
191
+
192
+ if($this->getFieldType($attributeName) == "select" ||
193
+ $this->getFieldType($attributeName) == "multiselect") {
194
+ return true;
195
+ }
196
+ return false;
197
+ }
198
+
199
  public function isImage($attributeName = "") {
200
  if($this->getFieldType($attributeName) == "media_image") {
201
  return true;
app/code/local/Unbxd/Searchcore/Model/Api/Task.php CHANGED
@@ -7,11 +7,11 @@
7
  */
8
  abstract class Unbxd_Searchcore_Model_Api_Task extends Varien_Object {
9
 
10
- static $PLATFORM_API_BASE_URL = "http://accounts.unbxdapi.com/admin/";
11
 
12
- static $RECOMMENDATION_SETTINGS_URL = "http://starwreck.unbxdapi.com/";
13
 
14
- static $TRACKER_URL = "http://tracker.unbxdapi.com/";
15
 
16
  const TIMEOUT = 30;
17
 
7
  */
8
  abstract class Unbxd_Searchcore_Model_Api_Task extends Varien_Object {
9
 
10
+ static $PLATFORM_API_BASE_URL = "https://accounts.unbxdapi.com/admin/";
11
 
12
+ static $RECOMMENDATION_SETTINGS_URL = "https://starwreck.unbxd.com/";
13
 
14
+ static $TRACKER_URL = "https://tracker.unbxdapi.com/";
15
 
16
  const TIMEOUT = 30;
17
 
app/code/local/Unbxd/Searchcore/Model/Config.php CHANGED
@@ -9,7 +9,7 @@
9
  */
10
  class Unbxd_Searchcore_Model_Config extends Mage_Core_Model_Abstract {
11
 
12
- const KEY = "key";
13
 
14
  const VALUE = 'value';
15
 
9
  */
10
  class Unbxd_Searchcore_Model_Config extends Mage_Core_Model_Abstract {
11
 
12
+ const KEY = "unbxd_key";
13
 
14
  const VALUE = 'value';
15
 
app/code/local/Unbxd/Searchcore/Model/Feed/Feedcreator.php CHANGED
@@ -257,9 +257,6 @@ class Unbxd_Searchcore_Model_Feed_Feedcreator {
257
  $collection->getSelect()->limit($this->pageSize, ($pageNum) * $this->pageSize);
258
  $collection->load();
259
  }
260
- if($operation == Unbxd_Searchcore_Model_Feed_Tags::ADD) {
261
- Mage::getModel('cataloginventory/stock_status')->addStockStatusToProducts($collection);
262
- }
263
  return $collection;
264
  }
265
 
@@ -416,7 +413,6 @@ class Unbxd_Searchcore_Model_Feed_Feedcreator {
416
  ->isMultiSelect($eachfield->getFieldName());
417
  $this->fields[$eachfield->getFieldName()] = $field;
418
  }
419
- $this->fields["entity_id"] = Mage::getModel('unbxd_searchcore/field')->getField('longText', "false", "false");
420
  $this->_setImageConf($website);
421
 
422
  }
@@ -459,4 +455,4 @@ class Unbxd_Searchcore_Model_Feed_Feedcreator {
459
  }
460
 
461
  }
462
- ?>
257
  $collection->getSelect()->limit($this->pageSize, ($pageNum) * $this->pageSize);
258
  $collection->load();
259
  }
 
 
 
260
  return $collection;
261
  }
262
 
413
  ->isMultiSelect($eachfield->getFieldName());
414
  $this->fields[$eachfield->getFieldName()] = $field;
415
  }
 
416
  $this->_setImageConf($website);
417
 
418
  }
455
  }
456
 
457
  }
458
+ ?>
app/code/local/Unbxd/Searchcore/Model/Feed/Filemanager.php CHANGED
@@ -101,4 +101,4 @@ class Unbxd_Searchcore_Model_Feed_Filemanager {
101
 
102
 
103
  }
104
- ?>
101
 
102
 
103
  }
104
+ ?>
app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Jsonbuilder.php CHANGED
@@ -6,4 +6,4 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Jsonbuilder {
6
 
7
  }
8
 
9
- ?>
6
 
7
  }
8
 
9
+ ?>
app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Productbuilder.php CHANGED
@@ -35,12 +35,14 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends
35
  if($this->skipProduct($website, $product)) {
36
  continue;
37
  }
 
 
 
 
 
38
  if(!$firstLoop) {
39
  $content = $content . ",";
40
  }
41
-
42
- $productArray = $this->getProduct($website, $product, $fields, $copyFields);
43
- $productArray = $this->postProcessProduct($productArray, $fields, false);
44
  $content=$content.json_encode($productArray);
45
  $firstLoop = false;
46
  }
@@ -48,6 +50,15 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends
48
  return rtrim($content, ",");
49
  }
50
 
 
 
 
 
 
 
 
 
 
51
  /**
52
  * Method to check whether the product to be skipped or not depending on the filters
53
  * @param Mage_Core_Model_Website $website
@@ -55,6 +66,12 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends
55
  * @return bool
56
  */
57
  public function skipProduct(Mage_Core_Model_Website $website, $product) {
 
 
 
 
 
 
58
  $filters = $this->_getFeedHelper()->getFilters($website);
59
  foreach($filters as $key=>$filter) {
60
  if($this->_getFeedHelper()->isMultiSelect($key)) {
@@ -104,9 +121,12 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends
104
  if(!is_null($attributeValue)) {
105
  $productArray[$unbxdFieldName] = $attributeValue;
106
  }
107
- } else if( $fields[$unbxdFieldName][Unbxd_Searchcore_Model_Field::multivalued]){
108
  // handling the array/ multiselect attribute
109
  $attributeValue = $this->_getMultiSelectAttribute($columnHeader, $product);
 
 
 
110
  if(!is_null($attributeValue)) {
111
  $productArray[$unbxdFieldName] = $attributeValue;
112
  }
@@ -150,18 +170,32 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends
150
  $productArray = $category + $productArray;
151
 
152
  $productArray[Unbxd_Searchcore_Model_Resource_Field::AVAILABILITY] =
153
- $product->isSalable()? "true": "false";
154
  if(array_key_exists('final_price', $fields)) {
155
  $productArray['final_price'] = $product->getFinalPrice();
156
  }
157
  if(array_key_exists('url_path', $fields)) {
158
  $productArray['url_path'] = $product->getProductUrl();
159
  }
160
-
 
161
  }
162
  return $productArray;
163
  }
164
 
 
 
 
 
 
 
 
 
 
 
 
 
 
165
  /**
166
  * method to get category content in xml given the product object
167
  * @param $product
@@ -275,36 +309,136 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends
275
  return $unbxdFieldName;
276
  }
277
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
278
  /**
279
  * gives the children in form of array
280
  */
281
- public function addChildrens(Mage_Core_Model_Website $website, $product, $fields, $copyFields, $productArray) {
282
 
283
  $type = $product->getData('type_id');
284
- if ($type == "configurable" || $type == "grouped" ) {
285
- $associatedProducts = array();
286
- $conf = Mage::getModel('catalog/product_type_configurable')->setProduct($product);
287
- $childrens = $conf->getUsedProductCollection()
288
- ->addAttributeToSelect('*')
289
- ->addFilterByRequiredOptions()
290
- ->joinField("qtyAssociated", "cataloginventory_stock_item", 'qty', 'product_id=entity_id', null, 'left');
291
- foreach ($childrens as $children)
292
- {
293
- $childProduct = $this->getProduct($website, $children, $fields, $copyFields, true);
294
- if(isset($childProduct) && sizeof($childProduct) > 0 ) {
295
- $childProduct = $this->postProcessProduct($childProduct, $fields, true);
296
- $associatedProducts[] = $childProduct;
297
- }
298
- }
299
- if( sizeof($associatedProducts) > 0) {
300
- $productArray["associatedProducts"] = $associatedProducts;
301
- }
302
- return $productArray;
303
  } else {
304
  return $productArray;
305
  }
306
  }
307
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
308
  /**
309
  * process the prodcut
310
  */
35
  if($this->skipProduct($website, $product)) {
36
  continue;
37
  }
38
+ $productArray = $this->getProduct($website, $product, $fields, $copyFields);
39
+ $productArray = $this->postProcessProduct($productArray, $fields, false);
40
+ if(!$this->whetherOOSproductsToBeIncluded($website, $productArray)) {
41
+ continue;
42
+ }
43
  if(!$firstLoop) {
44
  $content = $content . ",";
45
  }
 
 
 
46
  $content=$content.json_encode($productArray);
47
  $firstLoop = false;
48
  }
50
  return rtrim($content, ",");
51
  }
52
 
53
+ public function whetherOOSproductsToBeIncluded($website, $productArray) {
54
+ if(!Mage::helper('unbxd_searchcore')
55
+ ->isConfigTrue($website, Unbxd_Searchcore_Helper_Constants::INCLUDE_OUT_OF_STOCK) &&
56
+ array_key_exists(Unbxd_Searchcore_Model_Resource_Field::AVAILABILITY, $productArray)) {
57
+ return $productArray[Unbxd_Searchcore_Model_Resource_Field::AVAILABILITY] == "true"?true:false;
58
+ }
59
+ return true;
60
+ }
61
+
62
  /**
63
  * Method to check whether the product to be skipped or not depending on the filters
64
  * @param Mage_Core_Model_Website $website
66
  * @return bool
67
  */
68
  public function skipProduct(Mage_Core_Model_Website $website, $product) {
69
+ if (!Mage::helper('unbxd_searchcore')
70
+ ->isConfigTrue($website, Unbxd_Searchcore_Helper_Constants::INCLUDE_OUT_OF_STOCK)
71
+ && !is_null($this->isSalableWithBasicAttr($product))) {
72
+ return $this->isSalableWithBasicAttr($product);
73
+ }
74
+
75
  $filters = $this->_getFeedHelper()->getFilters($website);
76
  foreach($filters as $key=>$filter) {
77
  if($this->_getFeedHelper()->isMultiSelect($key)) {
121
  if(!is_null($attributeValue)) {
122
  $productArray[$unbxdFieldName] = $attributeValue;
123
  }
124
+ } else if( Mage::helper('unbxd_searchcore/feedhelper')->isMultiSelectDatatype($columnHeader)){
125
  // handling the array/ multiselect attribute
126
  $attributeValue = $this->_getMultiSelectAttribute($columnHeader, $product);
127
+ if(sizeof($attributeValue) == 1) {
128
+ $attributeValue = $attributeValue[0];
129
+ }
130
  if(!is_null($attributeValue)) {
131
  $productArray[$unbxdFieldName] = $attributeValue;
132
  }
170
  $productArray = $category + $productArray;
171
 
172
  $productArray[Unbxd_Searchcore_Model_Resource_Field::AVAILABILITY] =
173
+ $this->isSalable($product, $productArray)? "true": "false";
174
  if(array_key_exists('final_price', $fields)) {
175
  $productArray['final_price'] = $product->getFinalPrice();
176
  }
177
  if(array_key_exists('url_path', $fields)) {
178
  $productArray['url_path'] = $product->getProductUrl();
179
  }
180
+ } else {
181
+ $productArray[Unbxd_Searchcore_Model_Resource_Field::AVAILABILITY_ASSOCIATED] = $this->isSalable($product,array())?"true":"false";
182
  }
183
  return $productArray;
184
  }
185
 
186
+ /**
187
+ * Retrieve Manage Stock data wrapper
188
+ *
189
+ * @return int
190
+ */
191
+ private function isManageStockEnabled($product)
192
+ {
193
+ if ($product->getUseConfigManageStock()) {
194
+ return (int) Mage::getStoreConfigFlag(Mage_CatalogInventory_Model_Stock_Item::XML_PATH_MANAGE_STOCK);
195
+ }
196
+ return $product->getData('manage_stock') == "0"?false:true;
197
+ }
198
+
199
  /**
200
  * method to get category content in xml given the product object
201
  * @param $product
309
  return $unbxdFieldName;
310
  }
311
 
312
+ private function isSalableWithBasicAttr($product) {
313
+ if($product->getData("status") != 1) {
314
+ return false;
315
+ }
316
+ if($product->getTypeId() == "simple" ||
317
+ $product->getTypeId() == "downloadable" ||
318
+ $product->getTypeId() == "virtual") {
319
+ if (!$this->isManageStockEnabled($product)) {
320
+ return true;
321
+ }
322
+ return $product->getData('is_in_stock')?true:false;
323
+ }
324
+ if(!$product->getData('is_in_stock')) {
325
+ return false;
326
+ }
327
+ return null;
328
+ }
329
+
330
+ private function isSalable($product, $productArray) {
331
+ if(is_null($this->isSalableWithBasicAttr($product))) {
332
+ return $this->isSalableChildProducts($productArray);
333
+ }
334
+ return $this->isSalableWithBasicAttr($product);
335
+ }
336
+
337
+ private function isSalableChildProducts($productArray) {
338
+ if(array_key_exists("associatedProducts", $productArray)) {
339
+ foreach( $productArray["associatedProducts"] as $childProduct) {
340
+ if($childProduct["availabilityAssociated"][0] == "true"){
341
+ return true;
342
+ }
343
+ }
344
+ }
345
+ return false;
346
+ }
347
+
348
  /**
349
  * gives the children in form of array
350
  */
351
+ private function addChildrens(Mage_Core_Model_Website $website, $product, $fields, $copyFields, $productArray) {
352
 
353
  $type = $product->getData('type_id');
354
+ if($type == "configurable") {
355
+ return $this->getConfigurableChildProduct($website, $product, $fields, $copyFields, $productArray);
356
+ } else if( $type == "grouped") {
357
+ return $this->getGroupedChildProduct($website, $product, $fields, $copyFields, $productArray);
358
+ } else if( $type == "bundle") {
359
+ return $this->getBundledChildProduct($website, $product, $fields, $copyFields, $productArray);
 
 
 
 
 
 
 
 
 
 
 
 
 
360
  } else {
361
  return $productArray;
362
  }
363
  }
364
 
365
+ private function getBundledChildProduct(Mage_Core_Model_Website $website, Mage_Catalog_Model_Product $product,
366
+ $fields, $copyFields, $productArray) {
367
+ $adapter = Mage::getSingleton("core/resource");
368
+ $_catalogInventoryTable = method_exists($adapter, 'getTableName')
369
+ ? $adapter->getTableName('cataloginventory_stock_item') : 'cataloginventory_stock_item';
370
+ $stockfields = array("qty" => "qty", "manage_stock" => "manage_stock",
371
+ "use_config_manage_stock" => "use_config_manage_stock", "is_in_stock" => "is_in_stock");
372
+ $associatedProducts = $product->getTypeInstance(true)
373
+ ->getSelectionsCollection($product->getTypeInstance(true)->getOptionsIds($product), $product)
374
+ ->addAttributeToSelect('*')
375
+ ->joinTable($_catalogInventoryTable, 'product_id=entity_id', $stockfields, null, 'left');
376
+ if($this->_getFeedHelper()->isConfigTrue($website, Unbxd_Searchcore_Helper_Constants::INCLUDE_ENABLED_CHILD_PRODUCT)) {
377
+ $associatedProducts->addAttributeToFilter('status', 1);
378
+ }
379
+ if(!$this->_getFeedHelper()->isConfigTrue($website, Unbxd_Searchcore_Helper_Constants::INCLUDE_OUT_OF_STOCK_CHILD_PRODUCT)) {
380
+ $associatedProducts->addAttributeToFilter('qty',array('gt' => 1));
381
+ }
382
+ return $this->processAssociatedProducts($website, $associatedProducts, $fields, $copyFields, $productArray);
383
+ }
384
+
385
+ private function getGroupedChildProduct(Mage_Core_Model_Website $website, Mage_Catalog_Model_Product $product,
386
+ $fields, $copyFields, $productArray) {
387
+ $adapter = Mage::getSingleton("core/resource");
388
+ $_catalogInventoryTable = method_exists($adapter, 'getTableName')
389
+ ? $adapter->getTableName('cataloginventory_stock_item') : 'cataloginventory_stock_item';
390
+ $stockfields = array("qty" => "qty", "manage_stock" => "manage_stock",
391
+ "use_config_manage_stock" => "use_config_manage_stock", "is_in_stock" => "is_in_stock");
392
+ $associatedProducts = $product->getTypeInstance(true)
393
+ ->getAssociatedProductCollection($product)
394
+ ->addAttributeToSelect('*')
395
+ ->joinTable($_catalogInventoryTable, 'product_id=entity_id', $stockfields, null, 'left');
396
+ if($this->_getFeedHelper()->isConfigTrue($website, Unbxd_Searchcore_Helper_Constants::INCLUDE_ENABLED_CHILD_PRODUCT)) {
397
+ $associatedProducts->addAttributeToFilter('status', 1);
398
+ }
399
+ if(!$this->_getFeedHelper()->isConfigTrue($website, Unbxd_Searchcore_Helper_Constants::INCLUDE_OUT_OF_STOCK_CHILD_PRODUCT)) {
400
+ $associatedProducts->addAttributeToFilter('qty',array('gt' => 1));
401
+ }
402
+ return $this->processAssociatedProducts($website, $associatedProducts, $fields, $copyFields, $productArray);
403
+ }
404
+
405
+ private function getConfigurableChildProduct(Mage_Core_Model_Website $website, $product, $fields,
406
+ $copyFields, $productArray) {
407
+ $conf = Mage::getModel('catalog/product_type_configurable')->setProduct($product);
408
+ $stockfields = array("qty" => "qty", "manage_stock" => "manage_stock",
409
+ "use_config_manage_stock" => "use_config_manage_stock", "is_in_stock" => "is_in_stock");
410
+ $adapter = Mage::getSingleton("core/resource");
411
+ $_catalogInventoryTable = method_exists($adapter, 'getTableName')
412
+ ? $adapter->getTableName('cataloginventory_stock_item') : 'catalog_category_product_index';
413
+ $childrens = $conf->getUsedProductCollection()
414
+ ->addAttributeToSelect('*')
415
+ ->addFilterByRequiredOptions()
416
+ ->joinTable($_catalogInventoryTable, 'product_id=entity_id', $stockfields, null, 'left');
417
+ if($this->_getFeedHelper()->isConfigTrue($website, Unbxd_Searchcore_Helper_Constants::INCLUDE_ENABLED_CHILD_PRODUCT)) {
418
+ $childrens->addAttributeToFilter('status', 1);
419
+ }
420
+ if(!$this->_getFeedHelper()->isConfigTrue($website, Unbxd_Searchcore_Helper_Constants::INCLUDE_OUT_OF_STOCK_CHILD_PRODUCT)) {
421
+ $childrens->addAttributeToFilter('qty', array('gt' => 1));
422
+ }
423
+ return $this->processAssociatedProducts($website, $childrens, $fields, $copyFields, $productArray);
424
+ }
425
+
426
+ private function processAssociatedProducts(Mage_Core_Model_Website $website, $childProducts,
427
+ $fields, $copyFields, $productArray) {
428
+ $associatedProducts = array();
429
+ foreach ($childProducts as $children) {
430
+ $childProduct = $this->getProduct($website, $children, $fields, $copyFields, true);
431
+ if(isset($childProduct) && sizeof($childProduct) > 0 ) {
432
+ $childProduct = $this->postProcessProduct($childProduct, $fields, true);
433
+ $associatedProducts[] = $childProduct;
434
+ }
435
+ }
436
+ if( sizeof($associatedProducts) > 0) {
437
+ $productArray["associatedProducts"] = $associatedProducts;
438
+ }
439
+ return $productArray;
440
+ }
441
+
442
  /**
443
  * process the prodcut
444
  */
app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Schemabuilder.php CHANGED
@@ -26,4 +26,4 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Schemabuilder extends Unbxd_Search
26
  }
27
  }
28
 
29
- ?>
26
  }
27
  }
28
 
29
+ ?>
app/code/local/Unbxd/Searchcore/Model/Resource/Config.php CHANGED
@@ -34,8 +34,8 @@ class Unbxd_Searchcore_Model_Resource_Config extends Mage_Core_Model_Mysql4_Abst
34
  $adapter = $this->_getReadAdapter();
35
  $select = $adapter->select()
36
  ->from($this->_unbxdConfigTable, Unbxd_Searchcore_Model_Config::VALUE)
37
- ->where('`'.Unbxd_Searchcore_Model_Config::WEBSITE_ID.'` = ?', (int)$websiteId)
38
- ->where('`'.Unbxd_Searchcore_Model_Config::KEY.'` = ?', $key);
39
  $rows = $adapter->fetchAll($select);
40
  $values = array();
41
  foreach($rows as $row) {
@@ -91,12 +91,12 @@ class Unbxd_Searchcore_Model_Resource_Config extends Mage_Core_Model_Mysql4_Abst
91
  }
92
 
93
  $config = Mage::getModel('unbxd_searchcore/config')->getCollection()
94
- ->addFieldToFilter('`'.Unbxd_Searchcore_Model_Config::KEY.'`', $key)
95
- ->addFieldToFilter('`'.Unbxd_Searchcore_Model_Config::WEBSITE_ID.'`', (int)$website_id)
96
  ->getFirstItem();
97
 
98
  $config->setWebsiteId($website_id)
99
- ->setKey($key)
100
  ->setValue($value)
101
  ->save();
102
  }
@@ -107,7 +107,7 @@ class Unbxd_Searchcore_Model_Resource_Config extends Mage_Core_Model_Mysql4_Abst
107
  foreach($values as $eachValue) {
108
  Mage::getModel('unbxd_searchcore/config')
109
  ->setWebsiteId($websiteId)
110
- ->setKey($key)
111
  ->setValue($eachValue)
112
  ->save();
113
  }
@@ -116,11 +116,11 @@ class Unbxd_Searchcore_Model_Resource_Config extends Mage_Core_Model_Mysql4_Abst
116
 
117
  public function deleteKey($websiteId, $key) {
118
  $write = Mage::getSingleton("core/resource")->getConnection("core_write");
119
- $query = "DELETE FROM `unbxd_recommendation_conf` WHERE `" . Unbxd_Searchcore_Model_Config::KEY . "` = :key"
120
- . " and `" . Unbxd_Searchcore_Model_Config::WEBSITE_ID . "` = :website_id";
121
  $binds = array(
122
- 'key' => $key,
123
- 'website_id' => $websiteId
124
  );
125
  $write->query($query, $binds);
126
 
@@ -198,7 +198,7 @@ class Unbxd_Searchcore_Model_Resource_Config extends Mage_Core_Model_Mysql4_Abst
198
 
199
  public function deleteAll($websiteId) {
200
  $write = Mage::getSingleton("core/resource")->getConnection("core_write");
201
- $query = "DELETE FROM `unbxd_recommendation_conf` WHERE `" . Unbxd_Searchcore_Model_Config::WEBSITE_ID . "` = :website_id";
202
  $binds = array(
203
  'website_id' => $websiteId
204
  );
34
  $adapter = $this->_getReadAdapter();
35
  $select = $adapter->select()
36
  ->from($this->_unbxdConfigTable, Unbxd_Searchcore_Model_Config::VALUE)
37
+ ->where(Unbxd_Searchcore_Model_Config::WEBSITE_ID.' = ?', (int)$websiteId)
38
+ ->where(Unbxd_Searchcore_Model_Config::KEY.' = ?', $key);
39
  $rows = $adapter->fetchAll($select);
40
  $values = array();
41
  foreach($rows as $row) {
91
  }
92
 
93
  $config = Mage::getModel('unbxd_searchcore/config')->getCollection()
94
+ ->addFieldToFilter(Unbxd_Searchcore_Model_Config::KEY, $key)
95
+ ->addFieldToFilter(Unbxd_Searchcore_Model_Config::WEBSITE_ID, (int)$website_id)
96
  ->getFirstItem();
97
 
98
  $config->setWebsiteId($website_id)
99
+ ->setUnbxdKey($key)
100
  ->setValue($value)
101
  ->save();
102
  }
107
  foreach($values as $eachValue) {
108
  Mage::getModel('unbxd_searchcore/config')
109
  ->setWebsiteId($websiteId)
110
+ ->setUnbxdKey($key)
111
  ->setValue($eachValue)
112
  ->save();
113
  }
116
 
117
  public function deleteKey($websiteId, $key) {
118
  $write = Mage::getSingleton("core/resource")->getConnection("core_write");
119
+ $query = "DELETE FROM unbxd_recommendation_conf WHERE " . Unbxd_Searchcore_Model_Config::KEY . " = :key"
120
+ . " and " . Unbxd_Searchcore_Model_Config::WEBSITE_ID . " = :website_id";
121
  $binds = array(
122
+ Unbxd_Searchcore_Model_Config::KEY => $key,
123
+ Unbxd_Searchcore_Model_Config::WEBSITE_ID => $websiteId
124
  );
125
  $write->query($query, $binds);
126
 
198
 
199
  public function deleteAll($websiteId) {
200
  $write = Mage::getSingleton("core/resource")->getConnection("core_write");
201
+ $query = "DELETE FROM unbxd_recommendation_conf WHERE " . Unbxd_Searchcore_Model_Config::WEBSITE_ID . " = :website_id";
202
  $binds = array(
203
  'website_id' => $websiteId
204
  );
app/code/local/Unbxd/Searchcore/Model/Resource/Field.php CHANGED
@@ -31,6 +31,20 @@ class Unbxd_Searchcore_Model_Resource_Field extends Mage_Core_Model_Mysql4_Abstr
31
  const CATEGORY_NAME = "category";
32
 
33
  const AVAILABILITY = 'availability';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  /**
35
  * Unbxd Field Config table Name
36
  *
31
  const CATEGORY_NAME = "category";
32
 
33
  const AVAILABILITY = 'availability';
34
+
35
+ const QTY_ASSOCIATED = "qtyAssociated";
36
+
37
+ const AVAILABILITY_ASSOCIATED = "availabilityAssociated";
38
+
39
+ const QTY_MANAGE_ASSOCIATED = "manage_stockAssociated";
40
+
41
+ const QTY_CONFIG_USE_MANAGE_STOCK = "use_config_manage_stock";
42
+
43
+ const QTY_CONFIG_USE_MANAGE_STOCK_ASSOCIATED = "use_config_manage_stockAssociated";
44
+
45
+ const QTY = "qty";
46
+
47
+ const QTY_MANAGE = "manage_stock";
48
  /**
49
  * Unbxd Field Config table Name
50
  *
app/code/local/Unbxd/Searchcore/Model/Resource/Product/Collection.php CHANGED
@@ -72,22 +72,19 @@ class Unbxd_Searchcore_Model_Resource_Product_Collection extends
72
  $adapter = Mage::getSingleton("core/resource");
73
  $visiblityCondition = array('in' => array(2,3,4));
74
  $_catalogInventoryTable = method_exists($adapter, 'getTableName')
75
- ? $adapter->getTableName('cataloginventory_stock_item') : 'catalog_category_product_index';
 
 
76
 
77
  $this
78
  ->addWebsiteFilter($website->getWebsiteId())
79
- ->joinField("qty", $_catalogInventoryTable, 'qty', 'product_id=entity_id', null, 'left')
80
  ->addAttributeToSelect('*')
 
81
  ->addAttributeToFilter('status',1)
82
  ->addCategoryIds()
83
  ->addAttributeToFilter('visibility',$visiblityCondition)
84
  ->addPriceData(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID, $website->getWebsiteId());
85
 
86
- if (!Mage::helper('unbxd_searchcore')
87
- ->isConfigTrue($website, Unbxd_Searchcore_Helper_Constants::INCLUDE_OUT_OF_STOCK)) {
88
- Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($this);
89
- }
90
-
91
  Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($this);
92
  #Mage::getSingleton('catalog/product_visibility')->addVisibleInSiteFilterToCollection($this);
93
  return $this;
72
  $adapter = Mage::getSingleton("core/resource");
73
  $visiblityCondition = array('in' => array(2,3,4));
74
  $_catalogInventoryTable = method_exists($adapter, 'getTableName')
75
+ ? $adapter->getTableName('cataloginventory_stock_item') : 'cataloginventory_stock_item';
76
+ $stockfields = array("qty" => "qty", "manage_stock" => "manage_stock",
77
+ "use_config_manage_stock" => "use_config_manage_stock", "is_in_stock" => "is_in_stock");
78
 
79
  $this
80
  ->addWebsiteFilter($website->getWebsiteId())
 
81
  ->addAttributeToSelect('*')
82
+ ->joinTable($_catalogInventoryTable, 'product_id=entity_id', $stockfields, null, 'left')
83
  ->addAttributeToFilter('status',1)
84
  ->addCategoryIds()
85
  ->addAttributeToFilter('visibility',$visiblityCondition)
86
  ->addPriceData(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID, $website->getWebsiteId());
87
 
 
 
 
 
 
88
  Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($this);
89
  #Mage::getSingleton('catalog/product_visibility')->addVisibleInSiteFilterToCollection($this);
90
  return $this;
app/code/local/Unbxd/Searchcore/Model/Resource/Sync.php CHANGED
@@ -14,4 +14,4 @@ class Unbxd_Searchcore_Model_Resource_Sync extends Mage_Core_Model_Mysql4_Abstra
14
  {
15
  $this->_init('unbxd_searchcore/sync', 'id');
16
  }
17
- }
14
  {
15
  $this->_init('unbxd_searchcore/sync', 'id');
16
  }
17
+ }
app/code/local/Unbxd/Searchcore/Model/Sync.php CHANGED
@@ -108,4 +108,4 @@ class Unbxd_Searchcore_Model_Sync extends Mage_Core_Model_Abstract {
108
  );
109
  $write->query($query, $binds);
110
  }
111
- }
108
  );
109
  $write->query($query, $binds);
110
  }
111
+ }
app/code/local/Unbxd/Searchcore/controllers/Adminhtml/{IndexController.php → UnbxdController.php} RENAMED
@@ -5,7 +5,7 @@
5
  * @package Unbxd_Searchcore
6
  * @author Unbxd Software Pvt. Ltd {
7
  */
8
- class Unbxd_Searchcore_Adminhtml_IndexController extends Mage_Adminhtml_Controller_Action {
9
 
10
  /**
11
  * @return void
5
  * @package Unbxd_Searchcore
6
  * @author Unbxd Software Pvt. Ltd {
7
  */
8
+ class Unbxd_Searchcore_Adminhtml_UnbxdController extends Mage_Adminhtml_Controller_Action {
9
 
10
  /**
11
  * @return void
app/code/local/Unbxd/Searchcore/controllers/CatalogController.php CHANGED
@@ -118,4 +118,4 @@ class Unbxd_Searchcore_CatalogController extends Mage_Core_Controller_Front_Acti
118
  $this->getResponse()->setBody($response);
119
  return;
120
  }
121
- }
118
  $this->getResponse()->setBody($response);
119
  return;
120
  }
121
+ }
app/code/local/Unbxd/Searchcore/controllers/ConfigController.php CHANGED
@@ -299,6 +299,27 @@ class Unbxd_Searchcore_ConfigController extends Mage_Core_Controller_Front_Actio
299
  }
300
  }
301
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
302
 
303
 
304
  public function dimensionmapAction()
299
  }
300
  }
301
 
302
+ public function filterablesAction() {
303
+ $website = $this->_prepare();
304
+ if (is_null($website)) {
305
+ return;
306
+ }
307
+ if ($this->getRequest()->getMethod() == Zend_Http_Client::GET) {
308
+ $filterablAttributes = Mage::helper("unbxd_searchcore/feedhelper")->getAllFilterableAttributes($website);
309
+ if(is_array($filterablAttributes)) {
310
+ $this->getResponse()->setBody(json_encode(array('success' => false, "fields"=>$filterablAttributes)));
311
+ return;
312
+ }
313
+ $this->getResponse()->setBody(json_encode(array('success' => true)));
314
+ return;
315
+ } else {
316
+ $this->getResponse()->setBody(json_encode(array('success' => false,
317
+ 'errors' => array('message' => 'Invalid method'))));
318
+
319
+ }
320
+
321
+ }
322
+
323
 
324
 
325
  public function dimensionmapAction()
app/code/local/Unbxd/Searchcore/etc/adminhtml.xml CHANGED
@@ -3,7 +3,8 @@
3
  <menu>
4
  <unbxd translate="title" module="unbxd_searchcore">
5
  <title>Unbxd</title>
6
- <action>unbxdadmin/index</action>
 
7
  </unbxd>
8
  </menu>
9
  </config>
3
  <menu>
4
  <unbxd translate="title" module="unbxd_searchcore">
5
  <title>Unbxd</title>
6
+ <sort_order>99</sort_order>
7
+ <action>adminhtml/unbxd/</action>
8
  </unbxd>
9
  </menu>
10
  </config>
app/code/local/Unbxd/Searchcore/etc/config.xml CHANGED
@@ -1,18 +1,18 @@
1
  <config>
2
  <modules>
3
  <Unbxd_Searchcore>
4
- <version>1.0.21</version>
5
  </Unbxd_Searchcore>
6
  </modules>
7
  <admin>
8
  <routers>
9
- <unbxd_searchcore_router>
10
- <use>admin</use>
11
  <args>
12
- <module>Unbxd_Searchcore_Adminhtml</module>
13
- <frontName>unbxdadmin</frontName>
 
14
  </args>
15
- </unbxd_searchcore_router>
16
  </routers>
17
  </admin>
18
  <frontend>
@@ -148,11 +148,11 @@
148
  <acl>
149
  <resources>
150
  <admin>
151
- <children>
152
  <unbxd module="unbxd_searchcore">
153
  <title>Unbxd</title>
154
  </unbxd>
155
- </children>
156
  </admin>
157
  </resources>
158
  </acl>
@@ -176,13 +176,16 @@
176
  <productUrl>url_path</productUrl>
177
  <max_feed_lock_feed>2</max_feed_lock_feed>
178
  <include_out_of_stock>true</include_out_of_stock>
179
- <include_child_product>false</include_child_product>
 
 
 
180
  <field_conf>{}</field_conf>
181
- <exclude_category>[]</exclude_category>
182
- <tracker_url>http://tracker.unbxdapi.com/</tracker_url>
183
- <platform_url>http://accounts.unbxdapi.com/admin/</platform_url>
184
- <service_url>http://starwreck.unbxdapi.com/</service_url>
185
- <feed_url>http://feed.unbxdapi.com/</feed_url>
186
  </general>
187
  </unbxd>
188
  </default>
1
  <config>
2
  <modules>
3
  <Unbxd_Searchcore>
4
+ <version>1.0.22</version>
5
  </Unbxd_Searchcore>
6
  </modules>
7
  <admin>
8
  <routers>
9
+ <adminhtml>
 
10
  <args>
11
+ <modules>
12
+ <unbxd after="Mage_Adminhtml">Unbxd_Searchcore_Adminhtml</unbxd>
13
+ </modules>
14
  </args>
15
+ </adminhtml>
16
  </routers>
17
  </admin>
18
  <frontend>
148
  <acl>
149
  <resources>
150
  <admin>
151
+ <children>
152
  <unbxd module="unbxd_searchcore">
153
  <title>Unbxd</title>
154
  </unbxd>
155
+ </children>
156
  </admin>
157
  </resources>
158
  </acl>
176
  <productUrl>url_path</productUrl>
177
  <max_feed_lock_feed>2</max_feed_lock_feed>
178
  <include_out_of_stock>true</include_out_of_stock>
179
+ <include_child_product>true</include_child_product>
180
+ <include_out_of_stock_from_non_cache>false</include_out_of_stock_from_non_cache>
181
+ <include_only_enabled_child_product>true</include_only_enabled_child_product>
182
+ <include_out_of_stock_child_product>false</include_out_of_stock_child_product>
183
  <field_conf>{}</field_conf>
184
+ <exclude_category>[]</exclude_category>
185
+ <tracker_url>https://tracker.unbxdapi.com/</tracker_url>
186
+ <platform_url>https://accounts.unbxdapi.com/admin/</platform_url>
187
+ <service_url>https://starwreck.unbxd.com/</service_url>
188
+ <feed_url>https://feed.unbxdapi.com/</feed_url>
189
  </general>
190
  </unbxd>
191
  </default>
app/code/local/Unbxd/Searchcore/sql/unbxd_searchcore_setup/upgrade-1.0.21-1.0.22.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $installer = $this;
3
+ /* @var $installer Mage_Searchcore_Model_Resource_Setup */
4
+
5
+ $installer->startSetup();
6
+ $fieldTable = $installer->getTable('unbxd_field_conf');
7
+ $configTable = $installer->getTable('unbxd_recommendation_conf');
8
+ try {
9
+ $installer->run("ALTER TABLE `{$configTable}` CHANGE `key` `unbxd_key` VARCHAR(50)");
10
+ } catch (Exception $e) {
11
+ //ignore the exceptions
12
+ }
13
+
14
+ $websiteCollection = Mage::getModel('core/website')->getCollection()->load();
15
+ foreach($websiteCollection as $website) {
16
+ $websiteId = $website->getWebsiteId();
17
+ if (is_null($websiteId)) {
18
+ continue;
19
+ }
20
+ $fieldTable = Mage::getResourceModel('unbxd_searchcore/field')->getTableName();
21
+ $insertQuery = "
22
+ INSERT INTO `{$fieldTable}` (`website_id`, `field_name`, `datatype`, `autosuggest`, `featured_field`, `multivalued`, `displayed`)
23
+ VALUES
24
+ ({$websiteId}, '" . Unbxd_Searchcore_Model_Resource_Field::QTY_MANAGE_ASSOCIATED . "',
25
+ '" .Unbxd_Searchcore_Helper_Constants::UNBXD_DATATYPE_NUMBER . "', 0, NULL, 1, 0),
26
+ ({$websiteId}, '" .Unbxd_Searchcore_Model_Resource_Field::QTY_ASSOCIATED . "',
27
+ '" .Unbxd_Searchcore_Helper_Constants::UNBXD_DATATYPE_NUMBER . "', 0, NULL, 1, 0),
28
+ ({$websiteId}, '" .Unbxd_Searchcore_Model_Resource_Field::QTY_CONFIG_USE_MANAGE_STOCK_ASSOCIATED. "',
29
+ '" .Unbxd_Searchcore_Helper_Constants::UNBXD_DATATYPE_NUMBER . "', 0, NULL, 1, 0),
30
+ ({$websiteId}, 'statusAssociated',
31
+ '" .Unbxd_Searchcore_Helper_Constants::UNBXD_DATATYPE_NUMBER . "', 0, NULL, 1, 0),
32
+ ({$websiteId}, '" .Unbxd_Searchcore_Model_Resource_Field::AVAILABILITY_ASSOCIATED . "',
33
+ '" .Unbxd_Searchcore_Helper_Constants::UNBXD_DATATYPE_BOOL . "', 0, NULL, 1, 0),
34
+ ({$websiteId}, '" .Unbxd_Searchcore_Model_Resource_Field::QTY_MANAGE . "',
35
+ '" .Unbxd_Searchcore_Helper_Constants::UNBXD_DATATYPE_NUMBER . "', 0, NULL, 0, 0),
36
+ ({$websiteId}, '" .Unbxd_Searchcore_Model_Resource_Field::QTY_CONFIG_USE_MANAGE_STOCK . "',
37
+ '" .Unbxd_Searchcore_Helper_Constants::UNBXD_DATATYPE_NUMBER . "', 0, NULL, 0, 0),
38
+ ({$websiteId}, '" .Unbxd_Searchcore_Model_Resource_Field::QTY . "',
39
+ '" .Unbxd_Searchcore_Helper_Constants::UNBXD_DATATYPE_NUMBER . "', 0, NULL, 0, 0),
40
+ ({$websiteId}, 'type_id',
41
+ '" .Unbxd_Searchcore_Helper_Constants::UNBXD_DATATYPE_LONGTEXT . "', 0, NULL, 0, 1)
42
+ ON DUPLICATE KEY UPDATE `field_name`=`field_name`;";
43
+ $installer->run($insertQuery);
44
+ }
45
+
46
+ ?>
app/design/adminhtml/default/default/layout/unbxd/searchcore.xml CHANGED
@@ -1,11 +1,11 @@
1
  <?xml version="1.0"?>
2
  <layout version="0.1.0">
3
- <unbxd_searchcore_router_index_index>
4
  <reference name="menu">
5
  <action method="setActive"><menupath>unbxd_recommendation</menupath></action>
6
  </reference>
7
  <reference name="content">
8
  <block type="core/template" name="unbxd.conf" template="unbxd/search.phtml" />
9
  </reference>
10
- </unbxd_searchcore_router_index_index>
11
- </layout>
1
  <?xml version="1.0"?>
2
  <layout version="0.1.0">
3
+ <adminhtml_unbxd_index>
4
  <reference name="menu">
5
  <action method="setActive"><menupath>unbxd_recommendation</menupath></action>
6
  </reference>
7
  <reference name="content">
8
  <block type="core/template" name="unbxd.conf" template="unbxd/search.phtml" />
9
  </reference>
10
+ </adminhtml_unbxd_index>
11
+ </layout>
app/design/frontend/base/default/template/unbxd/search/autosuggest.phtml CHANGED
@@ -2,8 +2,14 @@
2
  <?php
3
  $website = Mage::app()->getWebsite();
4
  $config = Mage::helper('unbxd_search')->getEngineConfigData('autosuggest');
5
- $siteKey = Mage::helper('unbxd_search')->getSiteName();
6
- $apiKey = Mage::helper('unbxd_search')->getApiKey();
 
 
 
 
 
 
7
  $isAutosuggestActive = !is_null($siteKey) && !is_null($apiKey)
8
  && Mage::helper('unbxd_searchcore')->isConfigTrue($website,
9
  Unbxd_Searchcore_Helper_Constants::AUTOSUGGEST_STATUS);
2
  <?php
3
  $website = Mage::app()->getWebsite();
4
  $config = Mage::helper('unbxd_search')->getEngineConfigData('autosuggest');
5
+ $siteKey = "";
6
+ $apiKey = "";
7
+ try {
8
+ $siteKey = Mage::helper('unbxd_search')->getSiteName();
9
+ $apiKey = Mage::helper('unbxd_search')->getApiKey();
10
+ } catch(Exception $e) {
11
+ //ignoring the exception
12
+ }
13
  $isAutosuggestActive = !is_null($siteKey) && !is_null($apiKey)
14
  && Mage::helper('unbxd_searchcore')->isConfigTrue($website,
15
  Unbxd_Searchcore_Helper_Constants::AUTOSUGGEST_STATUS);
app/design/frontend/base/default/template/unbxd/searchcore/tracker.phtml CHANGED
@@ -1,10 +1,19 @@
1
- <?php if(Mage::helper('unbxd_searchcore')->isExecutable()) {?>
 
 
 
 
 
 
 
 
 
2
  <input type="hidden" id="jQueryBaseUrl" value="<?php echo Mage::getBaseUrl('js',
3
  Mage::app()->getFrontController()->getRequest()->isSecure()) ?>unbxd/jquery.js"/>
4
  <script type="text/javascript">
5
  /* * * CONFIGURATION * * */
6
- var UnbxdSiteName = "<?php echo Mage::helper('unbxd_searchcore')->getSiteName(); ?>";
7
- var UnbxdApiKey = "<?php echo Mage::helper('unbxd_searchcore')->getApiKey(); ?>";
8
 
9
  <?php $category = Mage::registry("current_category");
10
  if (isset($category)) { ?>
1
+ <?php if(Mage::helper('unbxd_searchcore')->isExecutable()) {
2
+ $siteKey = "";
3
+ $apiKey = "";
4
+ try {
5
+ $siteKey = Mage::helper('unbxd_recscore')->getSiteName();
6
+ $apiKey = Mage::helper('unbxd_recscore')->getApiKey();
7
+ } catch(Exception $e) {
8
+ //ignore the exception
9
+ }
10
+ ?>?>
11
  <input type="hidden" id="jQueryBaseUrl" value="<?php echo Mage::getBaseUrl('js',
12
  Mage::app()->getFrontController()->getRequest()->isSecure()) ?>unbxd/jquery.js"/>
13
  <script type="text/javascript">
14
  /* * * CONFIGURATION * * */
15
+ var UnbxdSiteName = "<?php echo $siteKey ?>";
16
+ var UnbxdApiKey = "<?php echo $apiKey ?>";
17
 
18
  <?php $category = Mage::registry("current_category");
19
  if (isset($category)) { ?>
app/etc/modules/Unbxd_Search.xml CHANGED
@@ -9,4 +9,4 @@
9
  <codePool>local</codePool>
10
  </Unbxd_Search>
11
  </modules>
12
- </config>
9
  <codePool>local</codePool>
10
  </Unbxd_Search>
11
  </modules>
12
+ </config>
js/unbxd/recscore/app.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /**
2
+ UNBXD SCRIPT ADDED
3
+
4
+ **/
js/unbxd/recscore/embed.js ADDED
@@ -0,0 +1,176 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ if (typeof Unbxd === "undefined")
2
+ window.Unbxd = {};
3
+
4
+ Unbxd.loadJScript = function(library, url, callback){
5
+ if( typeof window[library] !== "undefined"){
6
+ callback(window[library]);
7
+ return false;
8
+ }
9
+
10
+ var script = document.createElement("script")
11
+ script.type = "text/javascript";
12
+ if (script.readyState){ //IE
13
+ script.onreadystatechange = function(){
14
+ if (script.readyState == "loaded" ||
15
+ script.readyState == "complete"){
16
+ script.onreadystatechange = null;
17
+ callback(window[library]);
18
+ }
19
+ };
20
+ } else { //Others
21
+ script.onload = function(){
22
+ callback(window[library]);
23
+ };
24
+ }
25
+ script.src = url;
26
+ document.getElementsByTagName("head")[0].appendChild(script);
27
+ };
28
+
29
+
30
+ var widgetRendrer = function ($) {
31
+ jQuery.noConflict();
32
+ var key = function () {
33
+ if (typeof UnbxdKey != "undefined" && UnbxdKey != "") {
34
+ return UnbxdKey
35
+ }
36
+ if (typeof UnbxdSiteName != "undefined" && UnbxdSiteName != "") {
37
+ return UnbxdSiteName
38
+ }
39
+ return false
40
+ };
41
+
42
+ function decode(s) {
43
+ return decodeURIComponent(s.replace(/\+/g, " "))
44
+ }
45
+
46
+ function decodeAndParse(s) {
47
+ if (s.indexOf('"') === 0) {
48
+ s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, "\\")
49
+ }
50
+ s = decode(s);
51
+ return s
52
+ }
53
+
54
+ var readCookie = function (key) {
55
+ var cookies = document.cookie.split("; ");
56
+ var result = key ? undefined : {};
57
+ for (var i = 0, l = cookies.length; i < l; i++) {
58
+ var parts = cookies[i].split("=");
59
+ var name = decode(parts.shift());
60
+ var cookie = parts.join("=");
61
+ if (key && key === name) {
62
+ try {
63
+ result = decodeAndParse(cookie);
64
+ break
65
+ } catch (e) {
66
+ }
67
+ }
68
+ }
69
+ return result
70
+ };
71
+ var widgetsLoaded = false;
72
+ var render = function () {
73
+ if (key() == false)
74
+ return;
75
+ var uid = readCookie("unbxd.userId");
76
+ var unbxd_recommender_url = "//apac-recommendations.unbxdapi.com/";
77
+ if (window.UnbxdMode && window.UnbxdMode == "local") {
78
+ var unbxd_recommender_url = "/"
79
+ }
80
+ var appendCurrency = function (path) {
81
+ if (typeof UnbxdWidgetsConf != "undefined" && UnbxdWidgetsConf.currency) {
82
+ path = path + "&currency=" + UnbxdWidgetsConf.currency
83
+ }
84
+ return path
85
+ };
86
+ var appendUid = function (path) {
87
+ if (uid && uid != "") {
88
+ path = path + "&uid=" + uid
89
+ }
90
+ return path
91
+ };
92
+ var getWidth = function () {
93
+ if (typeof window.innerWidth == "number") {
94
+ return window.innerWidth
95
+ } else if (document.documentElement && document.documentElement.clientWidth) {
96
+ return document.documentElement.clientWidth
97
+ }
98
+ return screen.width
99
+ };
100
+ var load = function (id, path) {
101
+ path = appendCurrency(path);
102
+ path = appendUid(path);
103
+ path = path + "&screenWidth=" + getWidth();
104
+ urlpath = getBaseUrl() + 'unbxd/widget' + path;
105
+ $.ajax({
106
+ async:true,
107
+ url: urlpath,
108
+ type: "GET",
109
+ dataType: "html",
110
+ success: function(data) {
111
+ $(id).html(data);
112
+ },
113
+ error: function (xhr, status) {
114
+ }
115
+ });
116
+ };
117
+ var tryToRender = function (id, url) {
118
+ if (typeof jQuery != "undefined" && jQuery(id).length > 0) {
119
+ load(id, url);
120
+ widgetsLoaded = true
121
+ } else {
122
+ setTimeout(function () {
123
+ tryToRender(id, url)
124
+ }, 100)
125
+ }
126
+ };
127
+ if (uid && uid != "") {
128
+ tryToRender("#unbxd_recently_viewed", "?widgetType=recently-viewed&uid=" + uid + "&cont=unbxd_recently_viewed");
129
+ tryToRender("#unbxd_recommended_for_you", "?widgetType=recommend&uid=" + uid + "&cont=unbxd_recommended_for_you");
130
+ tryToRender("#unbxd_cart_recommendations", "?widgetType=cart-recommend&uid" + uid + "&cont=unbxd_cart_recommendations")
131
+ } else {
132
+ tryToRender("#unbxd_recommended_for_you", "?widgetType=recommend&cont=unbxd_recommended_for_you")
133
+ }
134
+ if (typeof UnbxdWidgetsConf != "undefined" && UnbxdWidgetsConf.pid) {
135
+ var pid = UnbxdWidgetsConf.pid;
136
+ tryToRender("#unbxd_also_viewed", "?widgetType=also-viewed&pid=" + pid + "&cont=unbxd_also_viewed");
137
+ tryToRender("#unbxd_also_bought", "?widgetType=also-bought&pid=" + pid + "&cont=unbxd_also_bought");
138
+ tryToRender("#unbxd_more_like_these", "?widgetType=more-like-these&pid=" + pid + "&cont=unbxd_more_like_these");
139
+ tryToRender("#unbxd_pdp_top_sellers", "?widgetType=pdp-top-sellers&pid=" + pid + "&cont=unbxd_pdp_top_sellers")
140
+ }
141
+ tryToRender("#unbxd_top_sellers", "?widgetType=top-sellers&cont=unbxd_top_sellers");
142
+ if (typeof UnbxdWidgetsConf != "undefined" && UnbxdWidgetsConf.category) {
143
+ var category = UnbxdWidgetsConf.category;
144
+ tryToRender("#unbxd_category_top_sellers", "?widgetType=category-top-sellers&category=" + category + "&cont=unbxd_category_top_sellers")
145
+ }
146
+ if (typeof UnbxdWidgetsConf != "undefined" && UnbxdWidgetsConf.brand) {
147
+ var brand = UnbxdWidgetsConf.brand;
148
+ tryToRender("#unbxd_brand_top_sellers", "?widgetType=brand-top-sellers&brand=" + brand + "&cont=unbxd_brand_top_sellers")
149
+ }
150
+ };
151
+ render();
152
+ Unbxd.refreshWidgets = function () {
153
+ if (!widgetsLoaded)
154
+ return;
155
+ render()
156
+ };
157
+ setInterval(function () {
158
+ if (Unbxd.gatherImpressions != undefined && Unbxd.bootState == 4)
159
+ Unbxd.gatherImpressions()
160
+ }, 1e3)
161
+ };
162
+
163
+ function unbxdOnLoad() {
164
+ jQueryBaseUrlElement = document.getElementById('jQueryBaseUrl');
165
+ if(jQueryBaseUrlElement != null) {
166
+ jQueryBaseUrl = jQueryBaseUrlElement.value;
167
+ } else{
168
+ jQueryBaseUrl = "//code.jquery.com/jquery-1.8.0.min.js";
169
+ }
170
+ Unbxd.loadJScript('jQuery', jQueryBaseUrl, widgetRendrer)
171
+ }
172
+ if (window.addEventListener) {
173
+ window.addEventListener('load', unbxdOnLoad, false);
174
+ } else {
175
+ window.attachEvent('onload', unbxdOnLoad);
176
+ }
js/unbxd/recscore/jquery.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
2
+ !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="<select t=''><option selected=''></option></select>",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=jb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=kb(b);function nb(){}nb.prototype=d.filters=d.pseudos,d.setFilters=new nb;function ob(a,b){var c,e,f,g,h,i,j,k=x[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=Q.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?db.error(a):x(a,i).slice(0)}function pb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f
3
+ }}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},W=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a>",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=$.test(e)?this.mouseHooks:Z.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||z),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},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(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||z,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==db()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===db()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=z.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===L&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&(a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault())?bb:cb):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:cb,isPropagationStopped:cb,isImmediatePropagationStopped:cb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=bb,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=bb,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submitBubbles||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?b.form:void 0;c&&!n._data(c,"submitBubbles")&&(n.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),n._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.changeBubbles||(n.event.special.change={setup:function(){return Y.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),n.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),n.event.simulate("change",this,a,!0)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;Y.test(b.nodeName)&&!n._data(b,"changeBubbles")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a,!0)}),n._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!Y.test(this.nodeName)}}),l.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=cb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return n().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=cb),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});function eb(a){var b=fb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var fb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gb=/ jQuery\d+="(?:null|\d+)"/g,hb=new RegExp("<(?:"+fb+")[\\s/>]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/<tbody/i,mb=/<|&#?\w+;/,nb=/<(?:script|style|link)/i,ob=/checked\s*(?:[^=]|=\s*.checked.)/i,pb=/^$|\/(?:java|ecma)script/i,qb=/^true\/(.*)/,rb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,sb={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:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1></$2>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?"<table>"!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Db[0].contentWindow||Db[0].contentDocument).document,b.write(),b.close(),c=Fb(a,b),Db.detach()),Eb[a]=c),c}!function(){var a,b,c=z.createElement("div"),d="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],a.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(a.style.opacity),l.cssFloat=!!a.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===c.style.backgroundClip,a=c=null,l.shrinkWrapBlocks=function(){var a,c,e,f;if(null==b){if(a=z.getElementsByTagName("body")[0],!a)return;f="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",c=z.createElement("div"),e=z.createElement("div"),a.appendChild(c).appendChild(e),b=!1,typeof e.style.zoom!==L&&(e.style.cssText=d+";width:1px;padding:1px;zoom:1",e.innerHTML="<div></div>",e.firstChild.style.width="5px",b=3!==e.offsetWidth),a.removeChild(c),a=c=e=null}return b}}();var Hb=/^margin/,Ib=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Jb,Kb,Lb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Jb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),Ib.test(g)&&Hb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):z.documentElement.currentStyle&&(Jb=function(a){return a.currentStyle},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ib.test(g)&&!Lb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Mb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h=z.createElement("div"),i="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",j="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";h.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",b=h.getElementsByTagName("a")[0],b.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(b.style.opacity),l.cssFloat=!!b.style.cssFloat,h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,b=h=null,n.extend(l,{reliableHiddenOffsets:function(){if(null!=c)return c;var a,b,d,e=z.createElement("div"),f=z.getElementsByTagName("body")[0];if(f)return e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=z.createElement("div"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML="<table><tr><td></td><td>t</td></tr></table>",b=e.getElementsByTagName("td"),b[0].style.cssText="padding:0;margin:0;border:0;display:none",d=0===b[0].offsetHeight,b[0].style.display="",b[1].style.display="none",c=d&&0===b[0].offsetHeight,f.removeChild(a),e=f=null,c},boxSizing:function(){return null==d&&k(),d},boxSizingReliable:function(){return null==e&&k(),e},pixelPosition:function(){return null==f&&k(),f},reliableMarginRight:function(){var b,c,d,e;if(null==g&&a.getComputedStyle){if(b=z.getElementsByTagName("body")[0],!b)return;c=z.createElement("div"),d=z.createElement("div"),c.style.cssText=i,b.appendChild(c).appendChild(d),e=d.appendChild(z.createElement("div")),e.style.cssText=d.style.cssText=j,e.style.marginRight=e.style.width="0",d.style.width="1px",g=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight),b.removeChild(c)}return g}});function k(){var b,c,h=z.getElementsByTagName("body")[0];h&&(b=z.createElement("div"),c=z.createElement("div"),b.style.cssText=i,h.appendChild(b).appendChild(c),c.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",n.swap(h,null!=h.style.zoom?{zoom:1}:{},function(){d=4===c.offsetWidth}),e=!0,f=!1,g=!0,a.getComputedStyle&&(f="1%"!==(a.getComputedStyle(c,null)||{}).top,e="4px"===(a.getComputedStyle(c,null)||{width:"4px"}).width),h.removeChild(b),c=h=null)}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Nb=/alpha\([^)]*\)/i,Ob=/opacity\s*=\s*([^)]*)/,Pb=/^(none|table(?!-c[ea]).+)/,Qb=new RegExp("^("+T+")(.*)$","i"),Rb=new RegExp("^([+-])=("+T+")","i"),Sb={position:"absolute",visibility:"hidden",display:"block"},Tb={letterSpacing:0,fontWeight:400},Ub=["Webkit","O","Moz","ms"];function Vb(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ub.length;while(e--)if(b=Ub[e]+c,b in a)return b;return d}function Wb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=n._data(d,"olddisplay",Gb(d.nodeName)))):f[g]||(e=V(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Xb(a,b,c){var d=Qb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Yb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Zb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Jb(a),g=l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Kb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ib.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Yb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Kb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=Vb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Rb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]="",i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Vb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Kb(a,b,d)),"normal"===f&&b in Tb&&(f=Tb[b]),""===c||c?(e=parseFloat(f),c===!0||n.isNumeric(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&Pb.test(n.css(a,"display"))?n.swap(a,Sb,function(){return Zb(a,b,d)}):Zb(a,b,d):void 0},set:function(a,c,d){var e=d&&Jb(a);return Xb(a,c,d?Yb(a,b,d,l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Ob.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Nb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Nb.test(f)?f.replace(Nb,e):f+" "+e)}}),n.cssHooks.marginRight=Mb(l.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},Kb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Hb.test(a)||(n.cssHooks[a+b].set=Xb)}),n.fn.extend({css:function(a,b){return W(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Jb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)
4
+ },a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),dc=/queueHooks$/,ec=[jc],fc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k=Gb(a.nodeName),"none"===j&&(j=k),"inline"===j&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==k?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc("show"),slideUp:hc("hide"),slideToggle:hc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),_b=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ac||(ac=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(ac),ac=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e=z.createElement("div");e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=e.getElementsByTagName("a")[0],c=z.createElement("select"),d=c.appendChild(z.createElement("option")),b=e.getElementsByTagName("input")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==e.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement("form").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value,a=b=c=d=e=null}();var mc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(mc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var vc=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||"boolean"===c)&&(this.className&&n._data(this,"__className__",this.className),this.className=this.className||a===!1?"":n._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(vc," ").indexOf(b)>=0)return!0;return!1}}),n.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(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var wc=n.now(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\/\//,Hc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ic={},Jc={},Kc="*/".concat("*");try{Ac=location.href}catch(Lc){Ac=z.createElement("a"),Ac.href="",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:"GET",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kc,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":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+"").replace(Bc,"").replace(Gc,zc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(F)||[""],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(zc[3]||("http:"===zc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,"$1_="+wc++):e+(xc.test(e)?"&":"?")+"_="+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader("If-Modified-Since",n.lastModified[e]),n.etag[e]&&v.setRequestHeader("If-None-Match",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Kc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(n.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||n.css(a,"display"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\[\]$/,Tc=/\r?\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Wc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join("&").replace(Rc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,"\r\n")}}):{name:b.name,value:c.replace(Tc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&"withCredentials"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||n("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||n.expando+"_"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&n.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n});
js/unbxd/recscore/unbxdAnalytics.js ADDED
@@ -0,0 +1,843 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ if(typeof(Unbxd) === 'undefined')
2
+ window.Unbxd = {};
3
+
4
+ Unbxd.version = "2.8.22.1";
5
+
6
+ // set UnbxdMode to manage tracker_url
7
+ Unbxd.local = typeof UnbxdMode !== 'undefined' && UnbxdMode == 'local'
8
+
9
+ // Setting tracker URL
10
+ Unbxd.tracker_url = Unbxd.local === true ? '/v2/1p.jpg' : '//tracker.unbxdapi.com/v2/1p.jpg';
11
+
12
+ // Initialize an empty config object
13
+ Unbxd.conf = Unbxd.conf || {};
14
+
15
+ /**
16
+ * Cookies
17
+ */
18
+ Unbxd.cookies = {
19
+ uid : "userId",
20
+ visitor : "visit",
21
+ pending : "pen", // Pending
22
+ debug : "debug", // enables Debugging
23
+ disabled : "disabled" // A/B
24
+ };
25
+
26
+ Unbxd.extend = function(){
27
+ for(var i=1; i<arguments.length; i++)
28
+ for(var key in arguments[i])
29
+ if(arguments[i].hasOwnProperty(key))
30
+ arguments[0][key] = arguments[i][key];
31
+ return arguments[0];
32
+ }
33
+
34
+ ; // Do not remove
35
+ (function (u) {
36
+ var pluses = /\+/g;
37
+
38
+ function decode(s) {
39
+ if (config.raw) {
40
+ return s;
41
+ }
42
+ return decodeURIComponent(s.replace(pluses, ' '));
43
+ }
44
+
45
+ function decodeAndParse(s) {
46
+ if (s.indexOf('"') === 0) {
47
+ // This is a quoted cookie as according to RFC2068, unescape...
48
+ s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
49
+ }
50
+
51
+ s = decode(s);
52
+
53
+ try {
54
+ return config.json ? JSON.parse(s) : s;
55
+ } catch(e) {}
56
+ }
57
+
58
+ var config = u.cookie = function (key, value, options) {
59
+
60
+ // Write
61
+ if (value !== undefined) {
62
+ options = Unbxd.extend({}, config.defaults, options);
63
+
64
+ if (typeof options.expires === 'number') {
65
+ var days = options.expires, t = options.expires = new Date();
66
+ t.setDate(t.getDate() + days);
67
+ }
68
+
69
+ value = config.json ? JSON.stringify(value) : String(value);
70
+
71
+ return (document.cookie = [
72
+ config.raw ? key : encodeURIComponent(key),
73
+ '=',
74
+ config.raw ? value : encodeURIComponent(value),
75
+ options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
76
+ options.path ? '; path=' + options.path : '',
77
+ options.domain ? '; domain=' + options.domain : '',
78
+ options.secure ? '; secure' : ''
79
+ ].join(''));
80
+ }
81
+
82
+ // Read
83
+ var cookies = document.cookie.split('; ');
84
+ var result = key ? undefined : {};
85
+ for (var i = 0, l = cookies.length; i < l; i++) {
86
+ var parts = cookies[i].split('=');
87
+ var name = decode(parts.shift());
88
+ var cookie = parts.join('=');
89
+
90
+ if (key && key === name) {
91
+ try{
92
+ result = decodeAndParse(cookie);
93
+ break;
94
+ }catch(e){}
95
+ }
96
+
97
+ if (!key) {
98
+ try{
99
+ result[name] = decodeAndParse(cookie);
100
+ }catch(e){}
101
+ }
102
+ }
103
+
104
+ return result;
105
+ };
106
+
107
+ config.defaults = {};
108
+
109
+ u.deleteCookie = function (key, options) {
110
+ if (u.cookie(key) !== undefined) {
111
+ // Must not alter options, thus extending a fresh object...
112
+ u.cookie(key, '', Unbxd.extend({}, options, { expires: -1 }));
113
+ return true;
114
+ }
115
+ return false;
116
+ };
117
+
118
+ })(Unbxd);
119
+
120
+ Unbxd.key = function(){
121
+ if(typeof(UnbxdKey) != 'undefined' && UnbxdKey != ""){
122
+ return UnbxdKey;
123
+ }
124
+
125
+ if(typeof(UnbxdSiteName) != 'undefined' && UnbxdSiteName != ""){
126
+ return UnbxdSiteName;
127
+ }
128
+
129
+ return false;
130
+ }
131
+
132
+ Unbxd.setCookie = function(name, value, expires){
133
+ try{
134
+ var params = {path : '/'};
135
+ if(expires){
136
+ params.expires = expires;
137
+ }
138
+
139
+ // Explicitly set domain for cookies
140
+ var domain = Unbxd.getRootDomain(document.URL);
141
+ if(domain != undefined){
142
+ params.domain = domain;
143
+ }
144
+
145
+ return this.cookie('unbxd.' + name, value, params);
146
+ }catch(e){
147
+ Unbxd.log(e);
148
+ }
149
+ }
150
+
151
+ Unbxd.readCookie = function(name){
152
+ try{
153
+ return this.cookie('unbxd.' + name, undefined, { path: '/'});
154
+ }catch(e){
155
+ // Unbxd.log(e);
156
+ }
157
+
158
+ return undefined;
159
+ }
160
+
161
+ Unbxd.removeCookie = function(name){
162
+ var domain = Unbxd.getRootDomain(document.URL);
163
+ this.deleteCookie('unbxd.' + name, {path : '/', domain : domain});
164
+ this.deleteCookie('unbxd.' + name, {path : '/', domain : 'www' + domain});
165
+ }
166
+
167
+ Unbxd.getCookiesStartsWith = function(prefix){
168
+ try{
169
+ var cookies = this.cookie();
170
+ var keys = _.keys(cookies);
171
+
172
+ keys = _.filter(keys, function(key){
173
+ return key.indexOf('unbxd.' + prefix) == 0;
174
+ });
175
+
176
+ var filtered = {};
177
+ _.each(keys, function(key){
178
+ filtered[key] = cookies[key];
179
+ });
180
+
181
+ return filtered;
182
+ }catch(e){
183
+ Unbxd.log(e);
184
+ }
185
+
186
+ return {};
187
+ }
188
+
189
+ Unbxd.setCookieIfNotSet = function(name, value, expires){
190
+ var v = Unbxd.readCookie(name);
191
+ if(_.isUndefined(v) || v == ''){
192
+ Unbxd.log("Cookie : " + name + " not found. Will set to : " + value);
193
+ Unbxd.setCookie(name, value, expires);
194
+ return true;
195
+ }
196
+
197
+ return false;
198
+ }
199
+
200
+ Unbxd.log = function(str){
201
+ if(Unbxd.readCookie(Unbxd.cookies.debug) === '1'){
202
+ console.log("Unbxd : " + str);
203
+
204
+ if(window.jQuery)
205
+ jQuery('#ubx-console').append("<div style='padding:2px;'>" + str + "</div>");
206
+ }
207
+ }
208
+
209
+ Unbxd.getPathName = function(url){
210
+ if(url == undefined) return null;
211
+
212
+ var a = document.createElement('a'); // Create a dummy <a> element
213
+ a.href = url; // Assign link, let the browser parse it
214
+ return a.pathname;
215
+ }
216
+
217
+ Unbxd.getHostName = function(url){
218
+ if(url == undefined) return null;
219
+
220
+ var a = document.createElement('a'); // Create a dummy <a> element
221
+ a.href = url; // Assign link, let the browser parse it
222
+ return a.hostname;
223
+ }
224
+
225
+ Unbxd.getRootDomain = function(url){
226
+ var hostname = Unbxd.getHostName(url);
227
+ try{
228
+ var checkIP = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;
229
+ if(checkIP.test(hostname)){
230
+ return hostname;
231
+ }
232
+
233
+ var parts = hostname.split('.').reverse();
234
+ if(parts.length > 1){
235
+ var domain = '.' + parts[1] + '.' + parts[0];
236
+
237
+ if(parts.length > 2){ // Handling SLDs
238
+ var slds = [".co.uk", ".co.in", ".com.au", ".com.my", ".co.nz"]; // :( This will need to be updated from time to time.
239
+ if(slds.indexOf(domain) != -1){
240
+ domain = '.' + parts[2] + domain;
241
+ }
242
+ }
243
+
244
+ return domain;
245
+ }
246
+ }catch(e){}
247
+ }
248
+
249
+ Unbxd.getParameterByName = function(name) {
250
+ name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
251
+ var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
252
+ results = regex.exec(location.search);
253
+ return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
254
+ }
255
+
256
+ Unbxd.getPendingBeacons = function(){
257
+ return Unbxd.getCookiesStartsWith(Unbxd.cookies.pending);
258
+ }
259
+
260
+ Unbxd.fire = function(action, beacon, success){
261
+ var key = Unbxd.key();
262
+ if(key == false) return;
263
+
264
+ var uid = Unbxd.readCookie(Unbxd.cookies.uid);
265
+
266
+ try{
267
+ var url = Unbxd.tracker_url
268
+ + '?data=' + encodeURIComponent(beacon)
269
+ + '&UnbxdKey=' + key
270
+ + '&action=' + action
271
+ + '&uid=' + uid
272
+ + '&t=' + (new Date().getTime()) + "|" + Math.random();
273
+
274
+ var img = new Image();
275
+ img.src = url;
276
+
277
+ Unbxd.log("Beaconing --> Action : " + action + ", uid : " + uid + ", " + beacon);
278
+ }catch(e){
279
+ Unbxd.log(e);
280
+ }
281
+ }
282
+
283
+ Unbxd.beaconCount = 0;
284
+ Unbxd.send = function(){
285
+ if(Unbxd.beaconCount >= 100){
286
+ Unbxd.log("Too many beacons. Something might be wrong")
287
+ return;
288
+ }
289
+
290
+ Unbxd.beaconCount++;
291
+
292
+ // Get oldest pending beacon;
293
+ var pendingBeacons = Unbxd.getPendingBeacons();
294
+
295
+ if(_.size(pendingBeacons) > 0){
296
+ var oldest = _.min(_.keys(pendingBeacons), function(key){
297
+ return key.substr(key.lastIndexOf('.') + 1);
298
+ });
299
+
300
+ var tokens = oldest.split(".");
301
+
302
+ if(tokens.length < 4){
303
+ // Fatal. Do something!
304
+ // Will try to delete the cookie.
305
+ Unbxd.removeCookie(oldest.substr(oldest.indexOf('.') + 1));
306
+ }else{
307
+ var action = tokens[2];
308
+ var time = tokens[3];
309
+
310
+ var beacon = pendingBeacons[oldest];
311
+
312
+ try{
313
+ Unbxd.removeCookie(Unbxd.cookies.pending + "." + action + "." + time);
314
+ Unbxd.fire(action, beacon);
315
+ if(_.size(pendingBeacons) > 1){
316
+ Unbxd.send();
317
+ }
318
+
319
+ // Unbxd.fire(action, beacon, function(){
320
+ // // Remove the cookie if image is loaded
321
+ // Unbxd.removeCookie(Unbxd.cookies.pending + "." + action + "." + time);
322
+ // });
323
+
324
+ // setTimeout(function(){
325
+ // Unbxd.removeCookie(Unbxd.cookies.pending + "." + action + "." + time);
326
+ // }, 500); // Delete anyway after 1 sec
327
+
328
+ // if(_.size(pendingBeacons) > 1){
329
+ // setTimeout(Unbxd.send, 1000); // Send others after 1.5 sec
330
+ // }
331
+ }catch(e){
332
+ Unbxd.log(e);
333
+ }
334
+ }
335
+ }
336
+ }
337
+
338
+ Unbxd.push = function(action, options, immediate){
339
+ if(Unbxd.key() == false){
340
+ Unbxd.log("Key not found. Abort");
341
+ return;
342
+ }
343
+
344
+ if(Unbxd.conf && Unbxd.conf.off != undefined && Unbxd.conf.off == true){
345
+ Unbxd.log("Tracking is off. Abort");
346
+ return;
347
+ }
348
+
349
+ options = options || {};
350
+ options["url"] = document.URL;
351
+ options["referrer"] = document.referrer;
352
+ options['visit_type'] = Unbxd.readCookie(Unbxd.cookies.visitor);
353
+ options['ver'] = Unbxd.version
354
+
355
+ // If A/B test is on, push the disabled field
356
+ var disabled = Unbxd.readCookie(Unbxd.cookies.disabled);
357
+ if(!_.isUndefined(disabled) && disabled !== ''){
358
+ var tokens = disabled.split('-');
359
+ if(tokens.length == 2){
360
+ options['disabled'] = tokens[0];
361
+ }
362
+ }
363
+
364
+ // Override immediate behavior
365
+ if(Unbxd.conf && Unbxd.conf.immediate && Unbxd.conf.immediate[action] != undefined){
366
+ immediate = Unbxd.conf.immediate[action];
367
+ }
368
+
369
+ if(immediate){
370
+ Unbxd.fire(action, JSON.u_stringify(options));
371
+ }else{
372
+ var cookieName = Unbxd.cookies.pending + "." + action + "." + new Date().getTime();
373
+ Unbxd.setCookie(cookieName, JSON.u_stringify(options));
374
+ Unbxd.log("Pending cookie : " + cookieName);
375
+
376
+ setTimeout(Unbxd.send, 10000); // Send anyway after 10 secs
377
+ }
378
+ }
379
+
380
+ Unbxd.ab = function(){
381
+ // If only a certain percentage of users have to be shown Unbxd results.
382
+ if(!_.isUndefined(Unbxd.conf)
383
+ && !_.isUndefined(Unbxd.conf.disabled)
384
+ && !_.isUndefined(Unbxd.conf.disabled.percentage)
385
+ && !_.isUndefined(Unbxd.conf.disabled.version)){
386
+ var date = new Date();
387
+
388
+ var percentageDisabled = Unbxd.conf.disabled.percentage;
389
+ var version = Unbxd.conf.disabled.version;
390
+
391
+ var deleteDisabledCookie = true;
392
+
393
+ // If the version of setting is newer than what cookie says, delete the visitor and disabled cookie
394
+ var disabled = Unbxd.readCookie(Unbxd.cookies.disabled);
395
+ if(!_.isUndefined(disabled) && disabled !== ''){
396
+ var tokens = disabled.split('-');
397
+ if(tokens.length == 2){
398
+ oldVersion = tokens[1];
399
+
400
+ if(version == oldVersion){
401
+ deleteDisabledCookie = false;
402
+ }
403
+ }
404
+ }
405
+
406
+ if(deleteDisabledCookie){
407
+ Unbxd.removeCookie(Unbxd.cookies.disabled);
408
+ }
409
+
410
+ // Figure out is the user has to be disabled
411
+ var rand = Math.floor((Math.random() * 100) + 1);
412
+ Unbxd.log("Random number : " + rand);
413
+ if(rand <= percentageDisabled){
414
+ // Disable
415
+ Unbxd.setCookieIfNotSet(Unbxd.cookies.disabled, "1-" + version, new Date(date.getFullYear() + 10, 1, 1));
416
+ }else{
417
+ Unbxd.setCookieIfNotSet(Unbxd.cookies.disabled, "0-" + version, new Date(date.getFullYear() + 10, 1, 1));
418
+ }
419
+ }else{
420
+ var disabled = Unbxd.readCookie(Unbxd.cookies.disabled);
421
+ if(!_.isUndefined(disabled) && disabled !== ''){
422
+ // Will reach here if there were A/B tests running before but not now.
423
+ Unbxd.removeCookie(Unbxd.cookies.disabled);
424
+ }
425
+ }
426
+ }
427
+
428
+ /**
429
+ * Sets a user id
430
+ */
431
+ Unbxd.user = function(){
432
+ var visitType = undefined;
433
+
434
+ var date = new Date();
435
+ var uid = 'uid-' + date.getTime() + "-" + Math.floor(Math.random() * 100000);
436
+ if(Unbxd.setCookieIfNotSet(Unbxd.cookies.uid, uid, new Date(date.getFullYear() + 10, 1, 1))){
437
+ visitType = 'first_time';
438
+ }else{
439
+ visitType = 'repeat';
440
+ }
441
+
442
+ Unbxd.ab(); // Do whatever to be done when running ab test
443
+
444
+ var now = date.getTime();
445
+ var expire = new Date(now + 30 * 60000); // 30 mins
446
+ if(Unbxd.setCookieIfNotSet(Unbxd.cookies.visitor, visitType, expire)){
447
+ Unbxd.push("visitor", {});
448
+ Unbxd.log("Pushed Visitor Event");
449
+ }
450
+ }
451
+
452
+ Unbxd.init = function(){
453
+ Unbxd.log("Initializing...");
454
+
455
+ Unbxd.user(); // Initialize uid
456
+
457
+ Unbxd.send(); // Dispatch pending beacons
458
+ // setInterval(Unbxd.send, 3 * 1000); // Start a timer interval to send beacons periodically
459
+
460
+ // Injecting UnbxdKey in dom
461
+ // jQuery('body').append("<div style='display:none;' id='unbxd-site-name'>" + Unbxd.key() + "</div>");
462
+ }
463
+
464
+ // <meta name="unbxd:type" content="category">
465
+ // Requires jQuery
466
+ if(Unbxd.resolveCategory == undefined){
467
+ Unbxd.resolveCategory = function(){
468
+ var content = jQuery("meta[name='unbxd:type']").attr('content');
469
+ if(content != undefined && (content == "landing" || content == "category")){
470
+ return Unbxd.getPathName(document.URL);
471
+ }
472
+
473
+ return false;
474
+ }
475
+ }
476
+
477
+ // Requires jQuery
478
+ Unbxd.gatherImpressions = function(){
479
+ var boxElems = jQuery('[unbxdAttr="product"]');
480
+ _.each(boxElems, function(elem){
481
+ var boxType = jQuery(elem).attr("unbxdParam_boxtype");
482
+
483
+ identifier = jQuery(elem).attr("unbxdParam_source_pid")
484
+ || jQuery(elem).attr("unbxdParam_category")
485
+ || jQuery(elem).attr("unbxdParam_brand");
486
+
487
+ Unbxd.addImpression(boxType, identifier);
488
+ });
489
+
490
+ boxElems = jQuery('[data-unbxdAttr="product"]');
491
+ _.each(boxElems, function(elem){
492
+ var boxType = jQuery(elem).attr("data-unbxdParam_boxtype");
493
+
494
+ identifier = jQuery(elem).attr("data-unbxdParam_source_pid")
495
+ || jQuery(elem).attr("data-unbxdParam_category")
496
+ || jQuery(elem).attr("data-unbxdParam_brand");
497
+
498
+ Unbxd.addImpression(boxType, identifier);
499
+ });
500
+ }
501
+
502
+ /*
503
+ * APIs
504
+ */
505
+ Unbxd.track = function(type, params){
506
+ if(type == 'search'){
507
+ Unbxd.addSearch(params.query,params.autosuggestParams);
508
+ }else if(type == 'browse'){
509
+ Unbxd.addBrowse(params.category);
510
+ }else if(type == 'widgetImpression'){
511
+ Unbxd.addImpression(params.boxType, params.identifier);
512
+ }else if(type == 'click'){
513
+ Unbxd.addClick(params.pid, params.prank, params.boxType);
514
+ }else if(type == 'addToCart'){
515
+ Unbxd.addCart(params.pid);
516
+ }else if(type == 'order'){
517
+ Unbxd.addOrder(params.pid, params.qty, params.price);
518
+ }else if(type == 'map_token'){
519
+ Unbxd.mapToken(params.token);
520
+ }
521
+ }
522
+ // ===================================
523
+
524
+ /*
525
+ * Register a new search query.
526
+ */
527
+ Unbxd.addSearch = function(query, autosuggest_data){
528
+ if(autosuggest_data != undefined){
529
+ Unbxd.push("search", {query : query, autosuggest_data : autosuggest_data});
530
+ Unbxd.log("Pushed Autosuggest Hit");
531
+ }
532
+ else{
533
+ Unbxd.push("search", {query: query});
534
+ }
535
+ Unbxd.log("Pushed Search Hit for query : " + query);
536
+ }
537
+
538
+ /*
539
+ * Register a new browse query.
540
+ */
541
+ Unbxd.addBrowse = function(path){
542
+ Unbxd.push("browse", {query : path}, true);
543
+ Unbxd.log("Pushed Browse Hit");
544
+ }
545
+
546
+ /*
547
+ * Register a new product click. if query or queryType is null. it will go as anon click
548
+ */
549
+ Unbxd.addClick = function(pid, prank, boxType){
550
+ Unbxd.push("click", {pid : pid, pr : prank, box_type : boxType});
551
+ Unbxd.log("Pushed Click");
552
+ }
553
+
554
+ /*
555
+ * Register a new product cart. if query or queryType is null. it will go as anon cart
556
+ */
557
+ Unbxd.addCart = function(pid){
558
+ Unbxd.push("cart", {pid : pid});
559
+ Unbxd.log("Pushed Add to Cart");
560
+ }
561
+
562
+ /*
563
+ * Register a new order. if query or queryType is null. it will go as anon order
564
+ */
565
+ Unbxd.addOrder = function(pid, qty, price){
566
+ var ordersStr = Unbxd.readCookie('orders') || "";
567
+ try{
568
+ var orders = ordersStr.split(',');
569
+ if(orders != null && orders.length > 0 && _.indexOf(orders, pid) != -1){
570
+ return;
571
+ }
572
+ }catch (e){}
573
+
574
+ ordersStr = ordersStr + "," + pid;
575
+ Unbxd.setCookie('orders', ordersStr);
576
+
577
+ Unbxd.push("order", {pid : pid, qty : qty, price : price}, true);
578
+ Unbxd.log("Pushed Order");
579
+ }
580
+
581
+ /*
582
+ * Maps a token with the uid
583
+ */
584
+ Unbxd.mapToken = function(token){
585
+ Unbxd.push("user_external_token", {external_token : token}, true);
586
+ Unbxd.log("Mapped uid with : " + token);
587
+ }
588
+
589
+ /*
590
+ * Register a Recommender Box Impression
591
+ */
592
+ Unbxd.addImpression = function(boxType, identifier){
593
+ Unbxd.boxes = Unbxd.boxes || [];
594
+
595
+ if(boxType && Unbxd.boxes.indexOf(boxType) == -1){
596
+ Unbxd.boxes.push(boxType);
597
+ Unbxd.log("Found box : " + boxType);
598
+
599
+ var path = Unbxd.getPathName(document.URL);
600
+ Unbxd.push("impression", {box_type : boxType, path : path, identifier : identifier}, true);
601
+ Unbxd.log("Pushed recommender impression");
602
+ }
603
+ }
604
+
605
+ ; // The Trailing semicolon is necessary. And there is a prize if you guess why :D
606
+ (new function(){
607
+ // Prototype bug.
608
+ var _array_tojson = Array.prototype.toJSON;
609
+ JSON.u_stringify = function(value) {
610
+ try{
611
+ if(typeof Prototype !== 'undefined' && parseFloat(Prototype.Version.substr(0,3)) < 1.7 && typeof _array_tojson !== 'undefined'){
612
+ delete Array.prototype.toJSON;
613
+ var r = JSON.stringify(value);
614
+ Array.prototype.toJSON = _array_tojson;
615
+ return r;
616
+ }
617
+ }catch(ex){}
618
+
619
+ return JSON.stringify(value);
620
+ };
621
+
622
+ var debugInfo = function(){
623
+ if(window.jQuery){
624
+ var category = Unbxd.resolveCategory();
625
+
626
+ var searchBox = jQuery('[unbxdAttr="sq"]').size() || jQuery('[data-unbxdAttr="sq"]').size() == 1;
627
+ var searchBtn = jQuery('[unbxdAttr="sq_bt"]').size() || jQuery('[data-unbxdAttr="sq_bt"]').size() == 1;
628
+ var categoryPage = category != undefined && category != false;
629
+ var products = jQuery('[unbxdAttr="product"]').size() || jQuery('[data-unbxdAttr="product"]').size();
630
+ var addToCarts = jQuery('[unbxdAttr="AddToCart"]').size() || jQuery('[data-unbxdAttr="AddToCart"]').size();
631
+ var orders = jQuery('[unbxdAttr="order"]').size() || jQuery('[data-unbxdAttr="order"]').size();
632
+
633
+ var key = Unbxd.key();
634
+ if(key == false) return;
635
+
636
+ jQuery('body')
637
+ .append(
638
+ "<div id='ubx-debug' style='position:fixed; right:0; top:10px; max-width:300px; background-color:rgba(69, 181, 193, 1); padding : 10px; z-index:99999999; color:#fff; font-size:13px;'>"
639
+ + "Unbxd Info : <a href='#' id='ubx-close'>Close</a>"
640
+ + "<ul style='padding:0 0 0 10px; margin:5px;'>"
641
+ + "<li>Site name : " + key + "</li>"
642
+ + "<li>Search Box present : " + searchBox + "</li>"
643
+ + "<li>Search Btn present : " + searchBtn + "</li>"
644
+ + "<li>Category Page : " + categoryPage + "</li>"
645
+ + "<li>Products : " + products + "</li>"
646
+ + "<li>Add To Cart buttons : " + addToCarts + "</li>"
647
+ + "<li>Orders : " + orders + "</li>"
648
+ + "</ul>"
649
+ + "<hr>"
650
+ + "<div id='ubx-console'></div>"
651
+ + "</div>");
652
+
653
+ jQuery('#ubx-close').click(function(){
654
+ jQuery('#ubx-debug').hide();
655
+ })
656
+ }
657
+ }
658
+
659
+ // Requires jQuery
660
+ var attachListener = function(selector, event, fn){
661
+ if(window.jQuery){
662
+ if(jQuery(document).delegate){
663
+ jQuery(document).delegate(selector, event, fn);
664
+ }else{
665
+ jQuery(selector).live(event, fn);
666
+ }
667
+ }
668
+ }
669
+
670
+ // Requires jQuery
671
+ var attachListeners = function(){
672
+ /**
673
+ * Event listeners. They are delegates put on document object.
674
+ */
675
+
676
+ // EventListener for Search Query tracking
677
+ attachListener('[unbxdAttr="sq"]', "keydown", function(event) {
678
+ if (event.which == 13) { // Enter key
679
+ query = jQuery(this).val();
680
+ Unbxd.addSearch(query);
681
+ }
682
+ });
683
+
684
+ attachListener('[data-unbxdAttr="sq"]', "keydown", function(event) {
685
+ if (event.which == 13) { // Enter key
686
+ query = jQuery(this).val();
687
+ Unbxd.addSearch(query);
688
+ }
689
+ });
690
+
691
+ // Event Listener for Search Query (pressing search button)
692
+ attachListener('[unbxdAttr="sq_bt"]', "mouseup", function() {
693
+ query = jQuery('[unbxdAttr="sq"]').val();
694
+ Unbxd.addSearch(query);
695
+ });
696
+
697
+ attachListener('[data-unbxdAttr="sq_bt"]', "mouseup", function() {
698
+ query = jQuery('[data-unbxdAttr="sq"]').val();
699
+ Unbxd.addSearch(query);
700
+ });
701
+
702
+ // Event Listener for Search Query (pressing search button)
703
+ // <a href='' unbxdAttr="sq_link" unbxdParam_q="Sale">Sale</a>
704
+ attachListener('[unbxdAttr="sq_link"]', "mouseup", function() {
705
+ query = jQuery(this).attr('unbxdParam_q');
706
+ Unbxd.addSearch(query);
707
+
708
+ e.stopPropagation();
709
+ });
710
+
711
+ attachListener('[data-unbxdAttr="sq_link"]', "mouseup", function() {
712
+ query = jQuery(this).attr('data-unbxdParam_q');
713
+ Unbxd.addSearch(query);
714
+
715
+ e.stopPropagation();
716
+ });
717
+
718
+
719
+ // Event Listener for Browse Hits
720
+ var category = Unbxd.resolveCategory();
721
+ if(category != undefined && category != false){
722
+ Unbxd.addBrowse(category);
723
+ }
724
+
725
+ attachListener('[unbxdAttr="product"]', "mouseup", function() {
726
+ var boxType = jQuery(this).attr("unbxdParam_boxtype");
727
+ var pr = jQuery(this).attr("unbxdParam_pRank");
728
+ var pid = jQuery(this).attr("unbxdParam_sku") || jQuery(this).attr("unbxdParam_pid");
729
+
730
+ Unbxd.addClick(pid, pr, boxType);
731
+ });
732
+
733
+ attachListener('[data-unbxdAttr="product"]', "mouseup", function() {
734
+ var boxType = jQuery(this).attr("data-unbxdParam_boxtype");
735
+ var pr = jQuery(this).attr("data-unbxdParam_pRank");
736
+ var pid = jQuery(this).attr("data-unbxdParam_sku") || jQuery(this).attr("data-unbxdParam_pid");
737
+
738
+ Unbxd.addClick(pid, pr, boxType);
739
+ });
740
+
741
+ // EventListener for Add to Cart Metric
742
+ attachListener('[unbxdAttr="AddToCart"]', "mouseup", function() {
743
+ var pid = jQuery(this).attr("unbxdParam_sku") || jQuery(this).attr("unbxdParam_pid");
744
+ Unbxd.addCart(pid);
745
+ });
746
+
747
+ attachListener('[data-unbxdAttr="AddToCart"]', "mouseup", function() {
748
+ var pid = jQuery(this).attr("data-unbxdParam_sku") || jQuery(this).attr("data-unbxdParam_pid");
749
+ Unbxd.addCart(pid);
750
+ });
751
+
752
+ var orderElems = jQuery('[unbxdAttr="order"]');
753
+ _.each(orderElems, function(elem){
754
+ var pid = jQuery(elem).attr("unbxdParam_sku") || jQuery(elem).attr("unbxdParam_pid");
755
+ Unbxd.addOrder(pid);
756
+ });
757
+
758
+ var orderElems = jQuery('[data-unbxdAttr="order"]');
759
+ _.each(orderElems, function(elem){
760
+ var pid = jQuery(elem).attr("data-unbxdParam_sku") || jQuery(elem).attr("data-unbxdParam_pid");
761
+ var qty = jQuery(elem).attr("data-unbxdParam_qty") || jQuery(elem).attr("data-unbxdParam_qty");
762
+ var price = jQuery(elem).attr("data-unbxdParam_price") || jQuery(elem).attr("data-unbxdParam_price");
763
+ Unbxd.addOrder(pid, qty, price);
764
+ });
765
+ }
766
+
767
+ // Requires jQuery
768
+ var init = function(){
769
+ if(Unbxd.readCookie('info') === '1'){
770
+ debugInfo(); // Requires jQuery
771
+ }
772
+
773
+ Unbxd.bootState = 3; //
774
+
775
+ attachListeners(); // Requires jQuery
776
+
777
+ Unbxd.bootState = 4; // Listeners attached. Complete
778
+
779
+ Unbxd.gatherImpressions(); // Requires jQuery
780
+
781
+ setInterval(function(){
782
+ Unbxd.gatherImpressions(); // Requires jQuery
783
+ }, 1000);
784
+ }
785
+
786
+ // ========================================================
787
+ // Start booting
788
+
789
+ if(Unbxd.bootState){
790
+ Unbxd.log("Already initialized");
791
+ return;
792
+ }
793
+
794
+ Unbxd.bootState = 1; // Just inside init
795
+
796
+ /**
797
+ * Init.
798
+ */
799
+ Unbxd.init();
800
+
801
+ Unbxd.bootState = 2; // Cookies initialized
802
+
803
+ // ===========================================================
804
+ // Do Stuff which requires jQuery
805
+
806
+ var fn = function(){
807
+ if(typeof(jQuery) != 'undefined'){
808
+ init();
809
+ }else{
810
+ setTimeout(function(){
811
+ fn();
812
+ }, 100);
813
+ }
814
+ }
815
+
816
+ fn();
817
+
818
+ // ============================================================
819
+ // Do stuff which required full page load
820
+
821
+ var runPostLoad = function(){
822
+ Unbxd.log("Running post load");
823
+
824
+ // Post load hooks. Some functionalities depend on this. Don't move.
825
+ try{
826
+ if(Unbxd.postLoad != undefined && typeof(Unbxd.postLoad) == 'function'){
827
+ Unbxd.postLoad();
828
+ }
829
+ }catch(e){
830
+ Unbxd.log(e);
831
+ }
832
+ }
833
+
834
+ if(document && document.readyState && document.readyState === "complete"){
835
+ runPostLoad();
836
+ }else if (window.addEventListener) {
837
+ window.addEventListener('load', runPostLoad, false); // modern browsers
838
+ } else if (window.attachEvent) {
839
+ window.attachEvent("onload", runPostLoad); // older versions of IE
840
+ } else {
841
+ // What the heck. We won't support it. Abort.
842
+ }
843
+ });
lib/Unbxd/Client.php CHANGED
@@ -7,14 +7,14 @@
7
  You may obtain a copy of the License at
8
 
9
  http://www.apache.org/licenses/LICENSE-2.0
10
-
11
  Unless required by applicable law or agreed to in writing, software
12
  distributed under the License is distributed on an "AS IS" BASIS,
13
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
  See the License for the specific language governing permissions and
15
  limitations under the License.
16
  *
17
- *
18
  * Created on 19-Mar-2013
19
  * author:antz
20
  * company:unbxd
@@ -25,15 +25,15 @@ class Unbxd_Client {
25
  /**
26
  * Default Unbxdsearch ruleset
27
  */
28
- const DEFAULT_RULESET = 'search';
29
 
30
  /**
31
  * Default transport
32
  *
33
  * @var string
34
  */
35
- const DEFAULT_TRANSPORT = 'http';
36
-
37
  protected $params = array(
38
  'ruleset' => self::DEFAULT_RULESET,
39
  'multiSelectFacet' => false,
@@ -43,9 +43,9 @@ class Unbxd_Client {
43
  'query' => '',
44
  'category-id' => ''
45
  );
46
-
47
  protected $address = '';
48
-
49
  /**
50
  * Number of seconds after a timeout occurs for every request
51
  * If using indexing of file large value necessary.
@@ -59,12 +59,12 @@ class Unbxd_Client {
59
  */
60
  protected $_config = array(
61
  'ruleset' => self::DEFAULT_RULESET,
62
- 'transport' => self::DEFAULT_TRANSPORT,
63
  'timeout' => self::TIMEOUT,
64
- 'headers' => array()
65
  );
66
-
67
-
68
 
69
  /**
70
  * Creates a new Unbxd client
@@ -147,20 +147,20 @@ class Unbxd_Client {
147
  public function getTransport() {
148
  return $this->getConfig('transport');
149
  }
150
-
151
 
152
  /**
153
  * sets the attribute filter
154
  * @param mixed $filter array
155
  * @return Unbxd_Client Client object
156
- */
157
  public function setFilters($filter =array()){
158
  if(isset($filter) && is_array($filter)){
159
  $this->params['filter'] = $filter;
160
  }
161
  return $this;
162
  }
163
-
164
  /**
165
  * sets the range filter
166
  * @param mixed $rangeFilter array
@@ -171,8 +171,8 @@ class Unbxd_Client {
171
  $this->params['rangeFilter'] = $rangeFilter;
172
  }
173
  return $this;
174
- }
175
-
176
  /**
177
  * sets the offset
178
  * @param mixed $pg integer
@@ -186,7 +186,7 @@ class Unbxd_Client {
186
  }
187
  return $this;
188
  }
189
-
190
  /**
191
  * sets the limit
192
  * @param mixed $limit integer
@@ -198,10 +198,10 @@ class Unbxd_Client {
198
  }else{
199
  $this->params['limit'] = 20;
200
  }
201
-
202
  return $this;
203
  }
204
-
205
  /**
206
  * sets the ruleset
207
  * @param mixed $ruleset string
@@ -215,7 +215,7 @@ class Unbxd_Client {
215
  }
216
  return $this;
217
  }
218
-
219
  /**
220
  * sets the sort
221
  * @param mixed $sorts array
@@ -224,12 +224,12 @@ class Unbxd_Client {
224
  public function setSort($sorts = array()){
225
  if(isset($sorts) && is_array($sorts)){
226
  $this->params['sort'] = $sorts;
227
- }
228
  return $this;
229
  }
230
-
231
  /**
232
- * sets the facet fields, This is mainly used for
233
  * @param mixed $sorts array
234
  * @return Unbxd_Client Client object
235
  */
@@ -239,7 +239,7 @@ class Unbxd_Client {
239
  }
240
  return $this;
241
  }
242
-
243
  /**
244
  * sets the other options which can be used
245
  * @param mixed $options array
@@ -251,7 +251,7 @@ class Unbxd_Client {
251
  }
252
  return $this;
253
  }
254
-
255
  /**
256
  * sets the search query
257
  * @param mixed $query search
@@ -263,7 +263,7 @@ class Unbxd_Client {
263
  }
264
  return $this;
265
  }
266
-
267
  /**
268
  * sets the Category Id
269
  * @param mixed $query search
@@ -312,20 +312,20 @@ class Unbxd_Client {
312
  return $this;
313
 
314
  }
315
-
316
-
317
  /**
318
  *
319
  * Search through Unbxd api
320
  *
321
  * @return Unbxd_ResultSet object
322
- */
323
  public function search(){
324
  $service = new Unbxd_Service();
325
-
326
  return $service->search($this->params,$this->address);
327
-
328
  }
329
 
330
-
331
  }
7
  You may obtain a copy of the License at
8
 
9
  http://www.apache.org/licenses/LICENSE-2.0
10
+
11
  Unless required by applicable law or agreed to in writing, software
12
  distributed under the License is distributed on an "AS IS" BASIS,
13
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
  See the License for the specific language governing permissions and
15
  limitations under the License.
16
  *
17
+ *
18
  * Created on 19-Mar-2013
19
  * author:antz
20
  * company:unbxd
25
  /**
26
  * Default Unbxdsearch ruleset
27
  */
28
+ const DEFAULT_RULESET = 'search';
29
 
30
  /**
31
  * Default transport
32
  *
33
  * @var string
34
  */
35
+ const DEFAULT_TRANSPORT = 'https';
36
+
37
  protected $params = array(
38
  'ruleset' => self::DEFAULT_RULESET,
39
  'multiSelectFacet' => false,
43
  'query' => '',
44
  'category-id' => ''
45
  );
46
+
47
  protected $address = '';
48
+
49
  /**
50
  * Number of seconds after a timeout occurs for every request
51
  * If using indexing of file large value necessary.
59
  */
60
  protected $_config = array(
61
  'ruleset' => self::DEFAULT_RULESET,
62
+ 'transport' => self::DEFAULT_TRANSPORT,
63
  'timeout' => self::TIMEOUT,
64
+ 'headers' => array()
65
  );
66
+
67
+
68
 
69
  /**
70
  * Creates a new Unbxd client
147
  public function getTransport() {
148
  return $this->getConfig('transport');
149
  }
150
+
151
 
152
  /**
153
  * sets the attribute filter
154
  * @param mixed $filter array
155
  * @return Unbxd_Client Client object
156
+ */
157
  public function setFilters($filter =array()){
158
  if(isset($filter) && is_array($filter)){
159
  $this->params['filter'] = $filter;
160
  }
161
  return $this;
162
  }
163
+
164
  /**
165
  * sets the range filter
166
  * @param mixed $rangeFilter array
171
  $this->params['rangeFilter'] = $rangeFilter;
172
  }
173
  return $this;
174
+ }
175
+
176
  /**
177
  * sets the offset
178
  * @param mixed $pg integer
186
  }
187
  return $this;
188
  }
189
+
190
  /**
191
  * sets the limit
192
  * @param mixed $limit integer
198
  }else{
199
  $this->params['limit'] = 20;
200
  }
201
+
202
  return $this;
203
  }
204
+
205
  /**
206
  * sets the ruleset
207
  * @param mixed $ruleset string
215
  }
216
  return $this;
217
  }
218
+
219
  /**
220
  * sets the sort
221
  * @param mixed $sorts array
224
  public function setSort($sorts = array()){
225
  if(isset($sorts) && is_array($sorts)){
226
  $this->params['sort'] = $sorts;
227
+ }
228
  return $this;
229
  }
230
+
231
  /**
232
+ * sets the facet fields, This is mainly used for
233
  * @param mixed $sorts array
234
  * @return Unbxd_Client Client object
235
  */
239
  }
240
  return $this;
241
  }
242
+
243
  /**
244
  * sets the other options which can be used
245
  * @param mixed $options array
251
  }
252
  return $this;
253
  }
254
+
255
  /**
256
  * sets the search query
257
  * @param mixed $query search
263
  }
264
  return $this;
265
  }
266
+
267
  /**
268
  * sets the Category Id
269
  * @param mixed $query search
312
  return $this;
313
 
314
  }
315
+
316
+
317
  /**
318
  *
319
  * Search through Unbxd api
320
  *
321
  * @return Unbxd_ResultSet object
322
+ */
323
  public function search(){
324
  $service = new Unbxd_Service();
325
+
326
  return $service->search($this->params,$this->address);
327
+
328
  }
329
 
330
+
331
  }
package.xml CHANGED
@@ -1,18 +1,18 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>unbxd_feedconnector</name>
4
- <version>1.0.21</version>
5
  <stability>stable</stability>
6
- <license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
8
  <extends/>
9
- <summary>search module</summary>
10
- <description>search module</description>
11
- <notes>Unbxd Search</notes>
12
- <authors><author><name>ananthesh</name><user>ananthesh</user><email>ananthesh@unbxd.com</email></author><author><name>praveen</name><user>praveen</user><email>praveen@unbxd.com</email></author></authors>
13
- <date>2015-09-10</date>
14
- <time>12:24:37</time>
15
- <contents><target name="magelocal"><dir name="Unbxd"><dir name="Search"><dir name="Block"><file name="Autocomplete.php" hash="6182fb17f50f00f6bd618e07ca117253"/><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="c1057dd0533713a59dc5cb606f2b6d79"/><file name="Boolean.php" hash="55059567d8f72a50c15742d21191ebf4"/><file name="Category.php" hash="0d7cd0ae6dd9efca0ef52b6dbeece65b"/><file name="Decimal.php" hash="c4caa9c24b1a869a5f3a6bec3abaf6f4"/><file name="Price.php" hash="706d8b3c0cdc2b2335cd05822c4ecebd"/></dir><file name="View.php" hash="12210e66e64c109996f2f030e88c8122"/></dir></dir><dir name="Catalogsearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="0f7bfdb50efef7c0a069824b96719330"/></dir></dir><file name="Layer.php" hash="73b3e3384a2b9169f728ae76395d3da4"/><dir name="enterprise"><file name="Layer.php" hash="2be6e6ccb45dc7207130d6f48da73ec9"/></dir></dir></dir><dir name="Helper"><file name="AnalyticsHelper.php" hash="58c1b954ce2a08bdaa965addc63bc0b5"/><file name="Catalogsearch.php" hash="8a13af86c97b665173be992cbb6cc123"/><file name="Data.php" hash="6344745e7a5dc5560ac9c8388774f9e6"/><file name="Unbxdsearch.php" hash="7fda09b3f6df3cd15fde6c6511bab2f5"/></dir><dir name="Model"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Backend"><file name="Engine.php" hash="9ce624fbd175ce42e321c03bd6eee426"/></dir><dir name="Source"><file name="Engine.php" hash="937eeadb8c671385d662cc8644a1b517"/><file name="Power.php" hash="5c5ff991c220e5a6e38c107d64741950"/></dir></dir></dir></dir><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="2c64ffe3a3f7361f5cd6447457d3ef44"/><file name="Boolean.php" hash="c4a4c3988aed039b1c305ced9fe98e5c"/><file name="Category.php" hash="2523d2a4d33c20aad99de0dd22d3f15c"/><file name="Decimal.php" hash="94baa9375d889ac1b9e358794f9da557"/><file name="Price.php" hash="42d0d75c4321541cfdc28a2811d01afc"/></dir></dir><file name="Layer.php" hash="7cc5774e76809e37ea23621d03463111"/></dir><dir name="Catalogsearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="88bf07f335f1f176677212ebaa7c7e0b"/></dir></dir><file name="Layer.php" hash="d6e9228219d23a8c553583ea41ab02bd"/></dir><dir name="Resource"><dir name="Catalog"><dir name="Product"><file name="Collection.php" hash="6b5b8f94a2af6f80fdc657f13385a85e"/></dir></dir><dir name="Engine"><file name="Abstract.php" hash="b4c48822a35a2d658bff16e39e551f2b"/><dir name="Unbxdsearch"><file name="Client.php" hash="82e4d23d48c61ea78718b14f05c74450"/></dir><file name="Unbxdsearch.php" hash="36d1b678f718c3bcaa099917cf3e7e13"/></dir></dir></dir><dir name="etc"><file name="config.xml" hash="16d7124e98604908ca2a404e09d2424c"/></dir></dir><dir name="Searchcore"><dir name="Helper"><file name="Analyticshelper.php" hash="543e3c4c49a852f1cc27e266a7be63cb"/><file name="Confighelper.php" hash="21ea72734f77f0bae6a2c1388b8fdce9"/><file name="Constants.php" hash="290e7a06f3dcb4ef5e988d4dedba2128"/><file name="Data.php" hash="120614639ff3d56fa1de2857291cbfb4"/><file name="Feedhelper.php" hash="4ce9977b12ccc93294984e6d1c9d8189"/></dir><dir name="Model"><dir name="Api"><file name="Request.php" hash="7fa07faeb9bee7942d51a190feaa61c1"/><file name="Response.php" hash="c3d239a7ea88e9d622da5a421deb41a7"/><dir name="Task"><file name="Analyticsimpression.php" hash="47eed14bc63d68994f69f336b6f71ae4"/><file name="Autosuggestindex.php" hash="a154585bd7f00d0d2679c3167dec182d"/><file name="Feeddetails.php" hash="42a61074c8360b5a36ad956519a0b13d"/><file name="Searchimpression.php" hash="9fffec91fe0f226546ac0b3e98d16fb7"/><file name="Searchsetup.php" hash="d68fba4807bb795659140a4763358f17"/><file name="Supportmail.php" hash="6aa66ca5a7878dfa0f721d2b31e5e190"/><file name="Trackcart.php" hash="cf1b7cdb586968b5dcb5e2a827ad86ef"/><file name="Trackorder.php" hash="aa519704da8b34dc701747b44b5093f5"/><file name="Triggerfeedupload.php" hash="29b5e8f9e3aac61b1f04369c657506f4"/><file name="Updatefeaturefields.php" hash="e304d87da8798a46203c817176ee35e0"/><file name="Validatekeys.php" hash="15685ed7f281f189cfcd8031b63941cb"/></dir><file name="Task.php" hash="5f17e801c921448a92ab34728c489e70"/></dir><file name="Auth.php" hash="c98cff679abe68d00333eada58f5dc36"/><file name="Config.php" hash="b27de0d32ea695f4ded20d1890cb2114"/><dir name="Feed"><file name="Feedcreator.php" hash="52fe65b96eb80153d9dfa319d7ed1717"/><file name="Feedmanager.php" hash="06d385c7428844e3ef63b6ad5cf9d95f"/><file name="Filemanager.php" hash="56318e69ec0a3a3d2c24c65d341a1854"/><dir name="Jsonbuilder"><file name="Jsonbuilder.php" hash="326c2fca2456bbb440c8bd30247da585"/><file name="Productbuilder.php" hash="0e529588ef862ea5766df5413ed1d377"/><file name="Schemabuilder.php" hash="0606342fe02faaa08a9b731a6f804b7b"/><file name="Taxonomybuilder.php" hash="9b9f7d1e7bb04dcbb07d4d7ddb99da34"/></dir><file name="Tags.php" hash="4d433a41c8b227de24a92fe42066eef2"/></dir><file name="Field.php" hash="b2f18aaf4db2399dbd34daffc48a14bc"/><file name="Observer.php" hash="6fcea4e7cf52709d29ce515e80f16a97"/><dir name="Resource"><file name="Attribute.php" hash="9391ee234ed73049d62dc25267658953"/><dir name="Config"><file name="Collection.php" hash="3ee60dcd823ecd3fc241beccea004b68"/></dir><file name="Config.php" hash="52dc3869a040c753a323a9df1b5498c4"/><dir name="Field"><file name="Collection.php" hash="67de518bcadea14db52d2954f20a0566"/></dir><file name="Field.php" hash="76811ad344b149c3449284c66f6e586b"/><dir name="Product"><file name="Collection.php" hash="a9e508ee0d7bed717e174c1b33f2ff1d"/></dir><dir name="Sync"><file name="Collection.php" hash="7b28bf07ffa82c1693df4816df216b9b"/></dir><file name="Sync.php" hash="e0c8ff1e6dbdab4064e7bb5bd53c7170"/></dir><dir name="State"><file name="Analytics.php" hash="a04688d453ee074626e295ed404fa1a8"/><file name="Catalog.php" hash="66012290d3094dde1ceff8a11026730a"/><file name="Credentials.php" hash="ef0693fe4240fa336fea75c65762a91d"/><file name="Response.php" hash="2b77b7e818aa08d843f4740a28f15114"/></dir><file name="State.php" hash="13c715807c98816270940dcf158b5908"/><file name="Statemgr.php" hash="26be7b13ae90f3298b413965d7f4e3ea"/><file name="Sync.php" hash="e25dc7b1e2bb79f0de1524c19cff6ad3"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="IndexController.php" hash="b4ed7c046b6daae60f76bfa58895a04d"/></dir><file name="CatalogController.php" hash="b14561f82085ccd81877d641973ac035"/><file name="ConfigController.php" hash="b154977605fa446d0c4ac474b1f5be5f"/></dir><dir name="etc"><file name="adminhtml.xml" hash="567a99e8232ec05a8832c366cd8626ef"/><file name="config.xml" hash="05a2d43f62124a9318c3876faaa5020a"/></dir><dir name="sql"><dir name="unbxd_searchcore_setup"><file name="mysql4-install-1.0.0.php" hash="be44cb93d756e650c5ee4377f3300c51"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Unbxd_Search.xml" hash="b3ce0f4b28b3abe0985858996428894b"/></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="unbxd"><file name="searchcore.xml" hash="c653e99817baea1f1f9960a4b016b6d2"/><file name="search.xml" hash="0fe48274849d8e8625569c7c61ed060d"/></dir></dir><dir name="template"><dir name="unbxd"><dir name="searchcore"><file name="tracker.phtml" hash="6ae370472953ea6576ad0f4bbfccfa4d"/><dir name="tracking"><file name="product.phtml" hash="55ab8d6a966d39f35beace0130605ef1"/></dir></dir><dir name="search"><file name="autosuggest.phtml" hash="5d83e48766b4b946b7e7d6faf0eb15e7"/><file name="tracking.phtml" hash="770845f802d91490090b7d9dac52c78d"/></dir></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="unbxd"><file name="searchcore.xml" hash="357c70cebd7766ec2ff09f90c5747e7d"/></dir></dir><dir name="template"><dir name="unbxd"><file name="search.phtml" hash="781fbe75dd21c2823bd1f6980ddb16cc"/></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="js"><dir name="unbxd"><dir name="searchcore"><file name="app.js" hash="5790870aa32c641bbad8d064fd41b610"/><file name="embed.js" hash="927b57b04cea8f575afcea6099a0b44d"/><file name="jquery.js" hash="52d16e147b5346147d0f3269cd4d0f80"/><file name="unbxdAnalytics.js" hash="98738dccf6a9e9378e79ca6931d9d3c1"/></dir></dir></dir><dir name="skin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="unbxd"><dir name="searchcore"><dir name="css"><file name="app.css" hash="b2e6cac84e88747ed286e719d1a45e99"/><file name="app1.css" hash="52fa5f05ae08ae49afe408e94ddd4fb6"/><file name="bootstrap-switch.css" hash="b97cfbfa50ef0ef787261b5f925e506a"/><file name="bootstrap-them.css" hash="df854606e8bfb38abe58305c389301ae"/><file name="bootstrap.css" hash="92a3eb9b3fb1137b16bf8dca5907ffd6"/><file name="chosen.css" hash="2329f7f776c2b97a80a134c34c9eebd5"/><file name="colpick.css" hash="84eb0f762c33ede63bb4ed417b011a9d"/><file name="magento-app.css" hash="33b7d3e29d3906d21e882f8706ff7c7c"/><file name="unbxd-magento.css" hash="c4e7a73872d829f6915ced755dbba70a"/></dir><dir name="img"><file name="Custom-platform.png" hash="5290665e9ca24170ed6b4923bd635377"/><file name="DONE.png" hash="82ea09757c6f6ba582b2089a166686ec"/><file name="HEXAGON-Only.png" hash="cc44d0bcef0cbc24e00d08e3a76552c5"/><file name="Magento-small.png" hash="7a528e2dd969bec618acd410ae660727"/><file name="Magento.png" hash="a1006f3044d6cfe6dd6f4e982344ab4f"/><file name="Powered_by_unbxd copy.png" hash="b29f1ac74821c62af18ef2dea3a22265"/><file name="X-popup-hover.png" hash="f74653bfca79cbc1c262752b5f44d4c3"/><file name="X-popup.png" hash="63c9f5c8256e8ecfe76db8ddb8d9aaa0"/><file name="X-pricing.png" hash="979c2c9456732a8935d8e77f502de58e"/><file name="active.png" hash="ce09792133584f533c7a0a2227ff05c9"/><file name="add-actv.png" hash="f990f99e6c3bc5819087e02621e71a2d"/><file name="add-icon.png" hash="7add622ec65c42898fab1fb5e2e64533"/><file name="add-inactv.png" hash="9fb163e67fc1271534dbede05bd75d31"/><file name="add-raw-hover.png" hash="4a44e58502e00e8d73fc00b7988e8621"/><file name="add-raw.png" hash="442cc58d8176e0b580f409df4f18c89e"/><file name="add-rule.png" hash="de395f293ed3bd1f5e3e79ee80e0296e"/><file name="add.png" hash="317559b8877b4ab171c92e253fbae814"/><file name="api_int_info.png" hash="62efde0dc39f78b8d36ac140e4922fa8"/><file name="arrow-2.png" hash="6eb510a6c6753812d1c0b7ad3792c68d"/><file name="arrow-calendar-down.png" hash="cfcc798220b0655588b1ebc92bb2cd9e"/><file name="arrow-calendar-down1.png" hash="e1d78aa977aefd3dbd0d077265465a53"/><file name="arrow-down-disabled.jpg" hash="728761548b495cac219d9497f8d6bc88"/><file name="arrow-down-enabled.jpg" hash="79bf179fb24de528068cc34e0112bc5d"/><file name="arrow-down-white.jpg" hash="556e356570a1e9ed97b13fcbd028997e"/><file name="arrow-down-white1.jpg" hash="c1b42e8d9d6c79265085d0c297e215c0"/><file name="arrow-down-white2.jpg" hash="c1b42e8d9d6c79265085d0c297e215c0"/><file name="arrow-down.png" hash="13794ac6416e435d6b2fa0b54f48b488"/><file name="arrow-gray.png" hash="ef922786b71b9e8c7206dc3a3e55ec30"/><file name="arrow-inactive.png" hash="ea8df964b3bb238c34e2a92ac3819b1b"/><file name="arrow-left-inactive.png" hash="02dceab03c4629eda64caa32f76dd21f"/><file name="arrow-left-white.jpg" hash="99c322cfc458b3d9545335084263f7c0"/><file name="arrow-left.jpg" hash="d9c30f6cd57f2cdd382a1bcdbfa38507"/><file name="arrow-left.png" hash="2259b06fca6ea640c26d2208afd02fb5"/><file name="arrow-mail-developer).png" hash="6dd3f45435f140731481878b80a54e59"/><file name="arrow-right-blue.png" hash="33ad361548417c181dfbc05a7fbb78a9"/><file name="arrow-right-gray.jpg" hash="829ba35fb3b3598fcab2dd03dfd8bcaa"/><file name="arrow-right-inactive.png" hash="a8adf91679f6fcc1fcbbfebd87212bf7"/><file name="arrow-right-white.jpg" hash="fafacf3d7bc94986a26024565621b509"/><file name="arrow-right.jpg" hash="96af89ff4e0ebf1134361573b6a431b3"/><file name="arrow-right.png" hash="055276cac55edeb3eb4281f15a7ee404"/><file name="arrow-up-black.png" hash="668b1a36fb27af19739b0de2ee804bfc"/><file name="arrow-up-disabled.jpg" hash="d15535c2924f1e9ae570da0fc61d2e14"/><file name="arrow-up-enabled.jpg" hash="820c6e3175bf1774077cbf2ef0f00a5a"/><file name="arrow-up-red.png" hash="9e4fa614690acba2402e8fb774c1760a"/><file name="arrow-up-white.jpg" hash="6f4804c59bdfd728095e0d2c86c486e4"/><file name="arrow-up-white1.jpg" hash="017b0d2695a4d6b9534cae7af5883464"/><file name="arrow-up.png" hash="b4380ef5bdaad86d2eddeb69bfc51e5c"/><file name="arrow-white.png" hash="a62374550e967153b2f5f6c782770175"/><file name="arrow.png" hash="2dfdf0abf10326d73b8c39bd3f6da413"/><file name="arrow_grey.png" hash="9a4fc1c1022f8ecfeadf8e25da0f8240"/><file name="arrow_white.png" hash="794ff95721a9586ae3b9290a4a53ebbe"/><file name="authenticated.png" hash="9eac2025c82fcf60c822d7d4690ca98c"/><file name="back.png" hash="72f60077f20dc52553e069f641b42099"/><file name="bg.jpg" hash="4a2f6fda25f44f7009e9a22ccf90e330"/><file name="big-arrow-gray.jpg" hash="efb30594788c366bf9b007945b197071"/><file name="bigcommerce.png" hash="bb6801e63d1198f8ec1458e69d9d4eff"/><file name="black-right-small.jpg" hash="699a5af08c69fd5c3b57aaa9fed7cfaa"/><file name="black-right-thick.jpg" hash="707c1a0806947351564de4391e9ef885"/><file name="blue-selected.png" hash="e4246debbabc085b10572bd5aa4b0982"/><file name="breadcrumb_arrow.png" hash="631196f2801711df3ff31557c8287290"/><file name="btn-arrow-top.png" hash="75d77e80995b2b3b42043db3fe7e152b"/><file name="btn-arrow.png" hash="ee2543a2011a57b2b58db30cf62d0219"/><file name="button-arrow-blue.png" hash="b82160ad78e789b5702c7eb9a2dd3c7b"/><file name="button-arrow-grey.png" hash="cb339368b9409741e28dc31f6400f5f0"/><file name="button-arrow-red.png" hash="499819820395cfbcf03318107049a634"/><file name="cancel.png" hash="dea3ab86b5f6980886b8148b6dbc0804"/><file name="card-image.jpg" hash="543c66027f8d3718ab2f6930454c5324"/><file name="card-image1.jpg" hash="6469c85cb7133c89c514b5d932ec61d3"/><file name="card-image2.jpg" hash="816ceb38837684da077e08132d95aa08"/><file name="card-image3.jpg" hash="b65e704ae1cd2e88da5237e5e72e8ca8"/><file name="checkmark.png" hash="76c700530ee10b42763c1df6f85279b1"/><file name="chosen-sprite.png" hash="25b9acb1b504c95c6b95c33986b7317e"/><file name="close-analytics.png" hash="421ee870c5e070a6a03819eb2716fd1f"/><file name="close-round.png" hash="adafdcb7fde56b8af0e9b843ff7e19bb"/><file name="close.png" hash="fe130e3473e31d6f73127fed8d693539"/><file name="color-pic-black.png" hash="b9c18ff6fab0fc8bd1112b13a94d2477"/><file name="color-pic.png" hash="5ac6b53fdd57080a2df5a171bdb03aae"/><file name="congrats-magento.png" hash="2c02d7b82e1c5a8e2491f7892929b0fd"/><file name="congrats.png" hash="2c02d7b82e1c5a8e2491f7892929b0fd"/><file name="copy-black.png" hash="11abed4721d04c70531356777e828e0f"/><file name="copy-white.png" hash="6f188394d6619b61b51a7ede4c29ec0e"/><file name="cros.png" hash="25dee21cf8d50963fa3cf9300d0b93c0"/><file name="cross-2.png" hash="027fa6cdc450c378984376924003ca88"/><file name="custom-color-selected.png" hash="41b299f7d3d6964b45ced6c0b2209bfe"/><file name="custom-color.png" hash="4638d52f8ae7c8db0463500abeda4126"/><file name="custom-temp-1.png" hash="1e74a0ab64f7bce768e864a8ac43c1b8"/><file name="custom-temp-2.png" hash="456b7998744c5b272bc05f981ab79d73"/><file name="custom-temp-3.png" hash="3606aede791d32c3c9481d5bbc82847e"/><file name="custom-temp-4.png" hash="89d45791dfff0ca4f1ad94a4b1ec2661"/><file name="cvv-number.jpg" hash="3c3e97a31a009afcd3c26f7529db5cf1"/><file name="delete-raw-hover.png" hash="7bd9eeb7059b5946e2686415797417c7"/><file name="delete-raw.png" hash="43a13c96e2a261c309c151eb4ef975fc"/><file name="delete-red.png" hash="73386fe1e477b0a30c2ab9f9f11df94b"/><file name="delete.png" hash="55019546183a6d4bf7fce6ecc6a00b36"/><file name="detect.png" hash="b74ba51e28f7a15e8214c18cbdd4e407"/><file name="dot-border.png" hash="208feb3ba398f27536213749e1e621a3"/><file name="down-arrow.png" hash="25ce0545a9cc87f1d9e1b7b80be93876"/><file name="down-black.png" hash="d99de4c90283294c30f1670cf1a52f40"/><file name="down-gray.png" hash="3a75b2ef9452e1e3dd8e06ffab68456b"/><file name="drop-down.png" hash="3674841edf7320d3d84c708f50df1741"/><file name="dropdown-arrow.png" hash="e78ccea5d0bda5dbebcd5bbee4b93f64"/><file name="edit-magento.png" hash="efa37bbf88091ce8d7b68e8115d1fdde"/><file name="edit.png" hash="15f83e074edf79a9da13fbe74f47dfbd"/><file name="eye-hover.png" hash="b52a441b87c99d5cda61125669b33724"/><file name="eye.png" hash="8b7a3637232dad5710a8b36f69e2ad5d"/><file name="favicon.png" hash="1e52374b5ed35864d8fa9f15e2cd30c2"/><file name="fill.png" hash="ae2fd7902f99b1efc9531b006cdca186"/><file name="green-selected.png" hash="ef1ab5c6209c8e5293b2ce4867fd023d"/><file name="grey-selected.png" hash="b6a83c93171b89a6f7f466aa47ac4717"/><file name="group-arrow.png" hash="579edf9c51115a4c74061af86620edb7"/><file name="help.png" hash="4ef8bda62d42054e27218cfcd958c577"/><file name="icon-analytics.png" hash="c4b7b57118d1c912207ac8d34e3e6d5f"/><file name="icon-info.png" hash="cfa3beb50e89263c2da97d40f64da177"/><file name="icon-widget.png" hash="89fbad7748cb956a65896ddeda18a57c"/><file name="info-icon-big.png" hash="8b881f8b5950131b96f337247fe59b4f"/><file name="info-small.png" hash="a47a6287c9af33f42cd78762c9d5862f"/><file name="install.png" hash="6b378698d96ab32f89efc23fc24333da"/><file name="integration-gray.png" hash="e1428587806c6e90872cb8e325e1bb0f"/><file name="introduction-gray.png" hash="003c564c948c374ade90bfcef89088e9"/><file name="left-black.png" hash="ac4d88a6ddfefcdf75dcef4384bdf90e"/><file name="left-gray.png" hash="b229e9f7144f1d80f73f1dac6f689401"/><file name="level-arrow-active.png" hash="8905e738238c090bed0c259266159374"/><file name="level-arrow.png" hash="9a4fc1c1022f8ecfeadf8e25da0f8240"/><file name="link-arrow.png" hash="61fb4c9e922c3c6427fea1484eab2474"/><file name="list_bullet.png" hash="a6dda6a7e38ced1ea368d2265434e53f"/><file name="loader-16x16.gif" hash="778e6b9e73274330dae0dab8104948a0"/><file name="loader-24x24.gif" hash="e403534956d055d636b3a5fa813b82b7"/><file name="loader-32x32.gif" hash="510f6441c74b9f098ea99cc11d0c4e89"/><file name="loader.gif" hash="fd1345456c4a685afb42b67c25354ca2"/><file name="loader_black.gif" hash="5bfd8de3193a5fc2e5b472f57df1408f"/><file name="lock-image.jpg" hash="6081155d7fcbb5d8c4d34a344f0bbd97"/><file name="logo-unbxd.png" hash="82024b1f5e10ac130489103e8bf08d2b"/><file name="logo.png" hash="1c0087551ac1c41493868b5d409b7dda"/><file name="mail-box.png" hash="25dae3efa5200ee176dd0aa825fa1d5b"/><file name="mail-id-sprite.png" hash="3a06a0e11e74c7a66f7f0f1aae082fcf"/><file name="mail-new.png" hash="8a3fe01ecd87ea7e93b239f2add8a52a"/><file name="mail.png" hash="f1a1039b5ebdc17cb40b2d79ca3937e9"/><file name="minus.jpg" hash="0fd79f174562ffa46348b445c85c930c"/><file name="minus.png" hash="bc691a8f2761f1d1c4a379f665d03480"/><file name="nav-highlight-arrow.png" hash="9806317c711b22c08a6247960c10fb26"/><file name="not-detected.png" hash="2e63b320f3f8a6c004c71bc1b02c1473"/><file name="oops.png" hash="03eca8b24324df38fd4c734843a2abbb"/><file name="or.png" hash="e6e8b2d42f8dedf2078e3d9f38e6070d"/><file name="orange-selected.png" hash="296963f455ad925de437581fa07be306"/><file name="orange.png" hash="2e2089e5c3e867f00728cf2cf2de3811"/><file name="other-gray.png" hash="58f19f3578f063ff1ccd8b8ef2890195"/><file name="overview-gray.png" hash="0c3501dd6469f90a61a8367a3bdc3340"/><file name="plus.png" hash="2cbfab4d57d7083650b5bbf8be7ee84c"/><file name="preview.png" hash="d56d8e0b3eb221a714ed0e2474ed38ac"/><file name="question-mark2.jpg" hash="50392a77ea59fc9c1e4709834cc7ae2d"/><file name="red-cross.png" hash="368e01e53564574eea66c850829a243f"/><file name="red-loading.gif" hash="510327b63304d4c58bb9445c7343498f"/><file name="remove.png" hash="aea65d50ad060b90e8f7e76624f20c4b"/><file name="right-black.png" hash="cdc63a865ca9717d3d315fc3bcbc64ca"/><file name="right-gray.png" hash="cc72c1c3416e2ce5750e4db92de093fd"/><file name="rules.png" hash="004dced224b5250f4f033cffb44cca14"/><file name="save.png" hash="20eb685cc7a58ea1ea2065a8c2d10e81"/><file name="saved.png" hash="df9ab88cb96c3de503816171f35b1254"/><file name="search.png" hash="5acdafa5337d7702948a4015eeb8f0f6"/><file name="settings.png" hash="36fc3060fa0d0e5bb2e3dd57c51b1edf"/><file name="shopify.png" hash="ff1163b008f933c7e71cd5a4d77de878"/><file name="site-dropdownarrow-down.png" hash="e83075515419fa29658df010a6982023"/><file name="site-dropdownarrow-up.png" hash="fbd66dc69e51085161a2e28c519e2dc8"/><file name="skin1-trans.png" hash="0264c245ba712d19d5b0d308e71e77b4"/><file name="skin1.png" hash="2e2089e5c3e867f00728cf2cf2de3811"/><file name="skin2.png" hash="fe5935399ab1a8d78ecaebaba6c7d176"/><file name="skin3.png" hash="9bfccdd71c71d7f03b5f2fe1cd394118"/><file name="skin4.png" hash="1002cadb9ce2bdaea9e820d0f324113d"/><file name="slider-bg.png" hash="0f310e78f27110b13cf699ed7d4b97e4"/><file name="slider-button.png" hash="4b8c133577ba9022b97ac82420e88166"/><file name="sort-arrow-blue-down.png" hash="22fab361e19b80e12b1279921f123656"/><file name="sort-arrow-blue-up.png" hash="7731f17d465b7dd6cde7eafebe2248b7"/><file name="sort-arrow-grey-down.png" hash="82cfe186b77d97dd0d961303bd53ad40"/><file name="sort-arrow-grey-up.png" hash="dbd67d69cb4ddab64cf9bed760251adb"/><file name="spinner_down.png" hash="afdbf1537511400bc1278cf761cedb12"/><file name="spinner_up.png" hash="f1032905f72b96eb8ee8f5ddb995e559"/><file name="spree.png" hash="d30a2489564230c317f9c873277567e9"/><file name="start-gray.png" hash="b6425ce659a1da4316a144a5a66b72bd"/><file name="step-arrow.png" hash="1bb6bed612dd45b5e49b2a70a952a7a7"/><file name="success-icon-big.png" hash="9d4e0c51400d6039220a5301797e01a1"/><file name="success.png" hash="74d3fa654373b5c128699c80cf218053"/><file name="temp-1-blue.png" hash="e62450283d4e38467c6920a8474c139d"/><file name="temp-1-green.png" hash="ba66a0aa6cae5edf940ceddb51c11f12"/><file name="temp-1-grey.png" hash="a2736bce441ee5b0a98cc7090b31918d"/><file name="temp-1-orange.png" hash="ab3c96985183414aec3d5affe33094fe"/><file name="temp-1-preview-blue.png" hash="eb3d6e4fe3473d6a69239c6e6da815ea"/><file name="temp-1-preview-green.png" hash="4f126d02eae9679d88a1e411319c5d4c"/><file name="temp-1-preview-grey.png" hash="ef8c62f98c94b550c488650aa2a1bbbf"/><file name="temp-1-preview-orange.png" hash="1aa2170d326403a87f119341622503d3"/><file name="temp-1.png" hash="e5c1f8718fec6d570a2eef8110b1da3c"/><file name="temp-2-blue.png" hash="35c176f6bfb28e7f603dae4e08ab2b08"/><file name="temp-2-green.png" hash="d9c9f88f66cb0e96f67384ed46e164b2"/><file name="temp-2-grey.png" hash="97e1c2d6b09ae812891768193825c24c"/><file name="temp-2-orange.png" hash="bd5c1d83b734cc78f3d6684ea39cdbb2"/><file name="temp-2-preview-blue.png" hash="65b394b1b7ba85c8f6557b56a01956f0"/><file name="temp-2-preview-green.png" hash="2ffeb59926e5d02d618b1e27c6ec8f3f"/><file name="temp-2-preview-grey.png" hash="0b5a3c138cbf5d7aa6d6c2f2fd546a12"/><file name="temp-2-preview-orange.png" hash="899dc8507574ce64382757b32ae2e534"/><file name="temp-2.png" hash="35ee735575579755f23b9be31eac64d6"/><file name="temp-3-blue.png" hash="3f33a385a0588c159459640ba50a6e68"/><file name="temp-3-green.png" hash="8fa49ff3af61230af4352a5c30b62a9f"/><file name="temp-3-grey.png" hash="a98c1d46adf4d091c1ee0b8e4affef60"/><file name="temp-3-orange.png" hash="7bca6c527be688c8609ff21b8f2a1d74"/><file name="temp-3-preview-blue.png" hash="636b0e1eeef3577338cdcfb735c99e15"/><file name="temp-3-preview-green.png" hash="ebc8bae1360c48fe346292840f954021"/><file name="temp-3-preview-grey.png" hash="5684634e2988a5b25a02de8d48644db6"/><file name="temp-3-preview-orange.png" hash="d788a099b7af1328a716639391469213"/><file name="temp-3.png" hash="9b6c874b939adff6f507d1f2754fc2c9"/><file name="temp-4-blue.png" hash="a97c6420edeb9d0e95bb8a67770af70c"/><file name="temp-4-green.png" hash="02f1e2f9b2541ba27ae9562dc4d7401d"/><file name="temp-4-grey.png" hash="8644e3016a22f011c2637deca0a0ac17"/><file name="temp-4-orange.png" hash="8649ad362dd918cb43a85feea9963daf"/><file name="temp-4-preview-blue.png" hash="6578e5606be7e7cda9c3a6a5c0e545b9"/><file name="temp-4-preview-green.png" hash="fb264203a4541ccd74f03b29a9142da4"/><file name="temp-4-preview-grey.png" hash="f26ffe3252713190c6a795e11b816cf2"/><file name="temp-4-preview-orange.png" hash="d1fc0e64b8c50c63b46ebff25665d330"/><file name="temp-5-blue.png" hash="e8656a96324a6bcdf8929e01591f7503"/><file name="temp-5-green.png" hash="040ea3f18c03189cff35e0583d5b6c04"/><file name="temp-5-orange.png" hash="f1a011d6401615da7624d610eb4d92f5"/><file name="temp-5-preview-blue.png" hash="beb849914a4a0338c2186bd61cc5e928"/><file name="temp-5-preview-gray.png" hash="bf0af858702b7d5af7d90b4ad7d424a2"/><file name="temp-5-preview-green.png" hash="23b9d70528280829d62b75fe1b2f4583"/><file name="temp-5-preview-orange.png" hash="4c44988fb1d0188f11db8fca38e4d9be"/><file name="temp-5.png" hash="2ba4c85707f885f69348e30acc87dcce"/><file name="temp-6.png" hash="ba25e257bfb2f05b5520c18fc4b1aaf0"/><file name="templates.png" hash="e70640fb9b1c78b43dccc3a0dd2e5b8d"/><file name="tick-analytics.png" hash="4ec2b80058957d5a0e4981293ddf6457"/><file name="tick-green.png" hash="49e5425fa6c0486b2be5d39d441a4cf9"/><file name="tick-orange.png" hash="c340278b24a4c92293b4db3832ff8329"/><file name="tick-pricing.png" hash="3a3f49be2bdbc3b9774321c53db50787"/><file name="tick.png" hash="cf2f6cecb363f8e6e2d64671467e1141"/><file name="tooltip-arrow.png" hash="5156649110cf1cb7cdbdc6512c47dc81"/><file name="tooltip-left-arrow.jpg" hash="92371e2d982257d136c5f46baeb513e6"/><file name="tooltip.png" hash="6a3b15fc7de518b27c63c7beda436204"/><file name="up-arrow.png" hash="452fa52e6d4b247dfca05f1996ffe318"/><file name="up-black.png" hash="7cd935e00c14d8c846b3e11f6b340a84"/><file name="up-gray.png" hash="f732268fd825a21e46346ba06deed750"/><file name="user.png" hash="f97a8fc7500ae31b18ed548897e05638"/><file name="view-hover.png" hash="b8f7826a09d5b8ee3f1beb6ade24a8a4"/><file name="view.png" hash="560fb2ea9e2717bd9aaa4bb3d258adc5"/><file name="warning.png" hash="4437ce9cf87d3d52abaea20ba9233d25"/><file name="x-widget.png" hash="0c75b723e7f543ff9da9627a3212a7a9"/><file name="x.png" hash="a0fdfbf2804612fc9b54abb64ec73731"/></dir><dir name="js"><dir name="app"><file name="analytics.js" hash="fd04c5b0c0424e161eb6d239800f0761"/><file name="autosuggest.js" hash="c6150187d86530d734a0d893d56eca84"/><file name="catalog.js" hash="20533109e38ecb7e17c029d7bec79726"/><file name="config.js" hash="075e03868e18b0ac998bf42706746a87"/><file name="credentials.js" hash="1f983ff5ff632026f130b3cffc1d79a7"/><file name="filter-catalogue.js" hash="120b8b0150ac1aab04d19216febff66d"/><dir name="search"><file name="api.js" hash="6e39ca0b9990c675ab29315952164814"/><file name="hosted.js" hash="80adf11bc58b21ba81e1e78c9fa32bc6"/><file name="landing.js" hash="4c487f74677cd88c7e9d67dd2213d030"/></dir><file name="utils.js" hash="f50ecabcbad2df4f319c9a6b6df15d4c"/><file name="widgets.js" hash="228d99b869bb0ab989522efa5e0261c5"/></dir><file name="app.js" hash="57b262277d9ada1fbec7eb5935190f8c"/><dir name="lib"><file name="backbone.js" hash="88fee57a12be8ea719ed85fe29f062d3"/><file name="bootstrap-modal.js" hash="04265b3f540e5af4d5eeeb6c3e0d813d"/><file name="bootstrap-tooltip.js" hash="304bf569ee1a25e8fae5532d90661662"/><file name="chosen.js" hash="4fabe14fb10d99c4b432db5ce9847c06"/><file name="colpick.js" hash="668c1d24c70d09b099a37cb7c158e092"/><file name="ractive-backbone.js" hash="afeac03a42a51483a7389f2b26a3e3d7"/><file name="ractive-chosen.js" hash="837381e6e428a7fa2b9f8f67c974d195"/><file name="ractive.js" hash="4887bb0d23f93ca78c46d2a7420cd360"/><file name="require.js" hash="177879fbe7dd333386711389ffa44d21"/><file name="routie.js" hash="bae94f674236d2d0a02d14624eb98713"/><file name="rv.js" hash="59d80aee6eb83f4f14596784fd57252a"/><file name="underscore.js" hash="f809a744b7a4fe79a94749a569aa17f9"/></dir><file name="main.js" hash="7fe76495f44eb0a5d00080bf47e5c256"/></dir><dir name="templates"><file name="analytics.html" hash="0ba72fbc28e2998bb6261553ad93a616"/><file name="auto-suggest.html" hash="0d87aa15f51a636a505bdee043e6af6e"/><file name="catalog.html" hash="15f22fb70c14bd5d72c4f87df8795145"/><file name="credentails.html" hash="b0d89e42bf3d8606042ea5673c3260c7"/><file name="custom.html" hash="d41d8cd98f00b204e9800998ecf8427e"/><file name="index.html" hash="f2053de86b827b0536f3730e5bd47fb2"/><dir name="partials"><file name="catalogue.html" hash="edba8e597c3694d4ba490d20fff6b052"/><file name="contact-form.html" hash="782cad00f5846b8feaaee123a3250a29"/><file name="custom-attr.html" hash="0a53a466f8d580145a60077756deba34"/><file name="filters.html" hash="b1982a5b3282fd82e360be25cb90eb2c"/><file name="preview-modal.html" hash="fc4a97401265fe2d3748d4742fddd674"/><file name="row.html" hash="fed8568b62d58b78d61a92dd987f1c8f"/><file name="switch-off.html" hash="ff23402a616d9e5af17c003cba7216f1"/><file name="switch-on.html" hash="49ed70ac50fb66803133313c8a470e52"/></dir><dir name="search"><file name="api.html" hash="fb9a23101c71c2de35162fe789ffed46"/><file name="hosted.html" hash="3e6f96b266e20b46401b29338b860c6e"/><file name="landing.html" hash="46928ca03f00d946d9e2b12272828752"/></dir><file name="widgets.html" hash="a06e1116fe06e610f7299c101bf8ba14"/></dir></dir></dir></dir></dir></dir></dir><dir name="lib"><dir name="Unbxd"><file name="Client.php" hash="60ee01dce8ae50b218422c6556edea5b"/><file name="Response.php" hash="30a0fb57242d079e295c30d23c175ef3"/><file name="Result.php" hash="df3ce20b629f723d51b0005fba45cbcc"/><file name="ResultSet.php" hash="de2f61baa2611b433cc1c4741e0f3094"/><file name="Service.php" hash="152ac0dd45544b235e9b062af0514b66"/><file name="test.php" hash="501006c089c31ddee66de541ae104432"/><file name=".project" hash="edac4ef5305a49516a99512aa70b9037"/></dir></dir></target></contents>
16
  <compatible/>
17
- <dependencies><required><php><min>5.0.0</min><max>6.0.0</max></php><package><name/><channel>connect.magentocommerce.com/core</channel><min/><max/></package></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>unbxd_feedconnector</name>
4
+ <version>1.0.22</version>
5
  <stability>stable</stability>
6
+ <license uri="http://opensource.org/licenses/OSL-3.0">OSL</license>
7
  <channel>community</channel>
8
  <extends/>
9
+ <summary>Unbxd module to integrate the search</summary>
10
+ <description>Unbxd module to integrate the search</description>
11
+ <notes>Unbxd module to integrate the search</notes>
12
+ <authors><author><name>ananthesh</name><user>Ananthesh</user><email>ananthesh@unbxd.com</email></author></authors>
13
+ <date>2015-12-28</date>
14
+ <time>08:43:26</time>
15
+ <contents><target name="magelocal"><dir name="Unbxd"><dir><dir name="Search"><dir name="Block"><file name="Autocomplete.php" hash="6182fb17f50f00f6bd618e07ca117253"/><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="c1057dd0533713a59dc5cb606f2b6d79"/><file name="Boolean.php" hash="55059567d8f72a50c15742d21191ebf4"/><file name="Category.php" hash="0d7cd0ae6dd9efca0ef52b6dbeece65b"/><file name="Decimal.php" hash="c4caa9c24b1a869a5f3a6bec3abaf6f4"/><file name="Price.php" hash="706d8b3c0cdc2b2335cd05822c4ecebd"/></dir><file name="View.php" hash="12210e66e64c109996f2f030e88c8122"/></dir></dir><dir name="Catalogsearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="0f7bfdb50efef7c0a069824b96719330"/></dir></dir><file name="Layer.php" hash="73b3e3384a2b9169f728ae76395d3da4"/><dir name="enterprise"><file name="Layer.php" hash="2be6e6ccb45dc7207130d6f48da73ec9"/></dir></dir></dir><dir name="Helper"><file name="AnalyticsHelper.php" hash="58c1b954ce2a08bdaa965addc63bc0b5"/><file name="Catalogsearch.php" hash="a725ab258560ec9801ce7264ea70345c"/><file name="Data.php" hash="6e0a744fd721fb0ae8b89b03637e8d51"/><file name="Unbxdsearch.php" hash="7fda09b3f6df3cd15fde6c6511bab2f5"/></dir><dir name="Model"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Backend"><file name="Engine.php" hash="9ce624fbd175ce42e321c03bd6eee426"/></dir><dir name="Source"><file name="Engine.php" hash="937eeadb8c671385d662cc8644a1b517"/><file name="Power.php" hash="5c5ff991c220e5a6e38c107d64741950"/></dir></dir></dir></dir><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="2c64ffe3a3f7361f5cd6447457d3ef44"/><file name="Boolean.php" hash="c4a4c3988aed039b1c305ced9fe98e5c"/><file name="Category.php" hash="2523d2a4d33c20aad99de0dd22d3f15c"/><file name="Decimal.php" hash="94baa9375d889ac1b9e358794f9da557"/><file name="Price.php" hash="42d0d75c4321541cfdc28a2811d01afc"/></dir></dir><file name="Layer.php" hash="ba2705be3aca4a5927902aa6c5523120"/></dir><dir name="Catalogsearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="88bf07f335f1f176677212ebaa7c7e0b"/></dir></dir><file name="Layer.php" hash="d6e9228219d23a8c553583ea41ab02bd"/></dir><dir name="Resource"><dir name="Catalog"><dir name="Product"><file name="Collection.php" hash="6b5b8f94a2af6f80fdc657f13385a85e"/></dir></dir><dir name="Engine"><file name="Abstract.php" hash="b4c48822a35a2d658bff16e39e551f2b"/><dir name="Unbxdsearch"><file name="Client.php" hash="82e4d23d48c61ea78718b14f05c74450"/></dir><file name="Unbxdsearch.php" hash="47cd37361bf204e9bfe2df3d0612d594"/></dir></dir></dir><dir name="etc"><file name="config.xml" hash="a8c532d7e39fcdd3f5e6f69daf0bd1c5"/></dir></dir><dir name="Searchcore"><dir name="Helper"><file name="Analyticshelper.php" hash="543e3c4c49a852f1cc27e266a7be63cb"/><file name="Confighelper.php" hash="21ea72734f77f0bae6a2c1388b8fdce9"/><file name="Constants.php" hash="af41dd671fb43d3cbbed65a7a59d94e6"/><file name="Data.php" hash="120614639ff3d56fa1de2857291cbfb4"/><file name="Feedhelper.php" hash="5fd8d3f2757629b6bafbaef7013c8fd8"/></dir><dir name="Model"><dir name="Api"><file name="Request.php" hash="7fa07faeb9bee7942d51a190feaa61c1"/><file name="Response.php" hash="c3d239a7ea88e9d622da5a421deb41a7"/><dir name="Task"><file name="Analyticsimpression.php" hash="47eed14bc63d68994f69f336b6f71ae4"/><file name="Autosuggestindex.php" hash="a154585bd7f00d0d2679c3167dec182d"/><file name="Feeddetails.php" hash="42a61074c8360b5a36ad956519a0b13d"/><file name="Searchimpression.php" hash="9fffec91fe0f226546ac0b3e98d16fb7"/><file name="Searchsetup.php" hash="d68fba4807bb795659140a4763358f17"/><file name="Supportmail.php" hash="6aa66ca5a7878dfa0f721d2b31e5e190"/><file name="Trackcart.php" hash="cf1b7cdb586968b5dcb5e2a827ad86ef"/><file name="Trackorder.php" hash="aa519704da8b34dc701747b44b5093f5"/><file name="Triggerfeedupload.php" hash="29b5e8f9e3aac61b1f04369c657506f4"/><file name="Updatefeaturefields.php" hash="e304d87da8798a46203c817176ee35e0"/><file name="Validatekeys.php" hash="15685ed7f281f189cfcd8031b63941cb"/></dir><file name="Task.php" hash="d33df4a2c321d949f277e27045c34a21"/></dir><file name="Auth.php" hash="c98cff679abe68d00333eada58f5dc36"/><file name="Config.php" hash="528c25502ca7f989b78c11c8889785bd"/><dir name="Feed"><file name="Feedcreator.php" hash="e923625c67a343c162ae8ccd0bc80a8a"/><file name="Feedmanager.php" hash="06d385c7428844e3ef63b6ad5cf9d95f"/><file name="Filemanager.php" hash="737f7c6575f1a8b0af89d4b7ef6d98ed"/><dir name="Jsonbuilder"><file name="Jsonbuilder.php" hash="6ae2cbb9ec82a612d27b3422753bb11f"/><file name="Productbuilder.php" hash="8cbb18ffbd72ec897862eda3ddec4c9a"/><file name="Schemabuilder.php" hash="bb093fb657de7d345138482dd74fdb2e"/><file name="Taxonomybuilder.php" hash="9b9f7d1e7bb04dcbb07d4d7ddb99da34"/></dir><file name="Tags.php" hash="4d433a41c8b227de24a92fe42066eef2"/></dir><file name="Field.php" hash="b2f18aaf4db2399dbd34daffc48a14bc"/><file name="Observer.php" hash="6fcea4e7cf52709d29ce515e80f16a97"/><dir name="Resource"><file name="Attribute.php" hash="9391ee234ed73049d62dc25267658953"/><dir name="Config"><file name="Collection.php" hash="3ee60dcd823ecd3fc241beccea004b68"/></dir><file name="Config.php" hash="6fd9c4e14324044bd3452fe578cb6336"/><dir name="Field"><file name="Collection.php" hash="67de518bcadea14db52d2954f20a0566"/></dir><file name="Field.php" hash="0548c39c9f55296c233ac0f41f1c2f88"/><dir name="Product"><file name="Collection.php" hash="9c8aa9fd3d11cb618a39a2f0e59ab278"/></dir><dir name="Sync"><file name="Collection.php" hash="7b28bf07ffa82c1693df4816df216b9b"/></dir><file name="Sync.php" hash="c287dc89e83f2846c28e2161f4b29b10"/></dir><dir name="State"><file name="Analytics.php" hash="a04688d453ee074626e295ed404fa1a8"/><file name="Catalog.php" hash="66012290d3094dde1ceff8a11026730a"/><file name="Credentials.php" hash="ef0693fe4240fa336fea75c65762a91d"/><file name="Response.php" hash="2b77b7e818aa08d843f4740a28f15114"/></dir><file name="State.php" hash="13c715807c98816270940dcf158b5908"/><file name="Statemgr.php" hash="26be7b13ae90f3298b413965d7f4e3ea"/><file name="Sync.php" hash="ce5d75b809146408c85467291db39a09"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="UnbxdController.php" hash="efa1a8debc44f383c4eeb0e8b2605637"/></dir><file name="CatalogController.php" hash="51c7347dfd603badd65082b982a5b741"/><file name="ConfigController.php" hash="ce1e18fe00e2264a8f9f772042d2c2a9"/></dir><dir name="etc"><file name="adminhtml.xml" hash="0817741414fdcbc2b805eb22f150ace8"/><file name="config.xml" hash="e2a48bc4562b5f06d91ced220f4b8999"/></dir><dir name="sql"><dir name="unbxd_searchcore_setup"><file name="mysql4-install-1.0.0.php" hash="be44cb93d756e650c5ee4377f3300c51"/><file name="upgrade-1.0.21-1.0.22.php" hash="aac4aa33c23d7610738937bed57b19fc"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Unbxd_Search.xml" hash="e91e2286be7377077bd1887a426dfc74"/></dir></target><target name="mageweb"><dir name="js"><dir name="unbxd"><dir name="recscore"><file name="app.js" hash="5790870aa32c641bbad8d064fd41b610"/><file name="embed.js" hash="ae0665e583a2579a2609f27f07f36551"/><file name="jquery.js" hash="52d16e147b5346147d0f3269cd4d0f80"/><file name="unbxdAnalytics.js" hash="98738dccf6a9e9378e79ca6931d9d3c1"/></dir><dir name="searchcore"><file name="app.js" hash="5790870aa32c641bbad8d064fd41b610"/><file name="embed.js" hash="927b57b04cea8f575afcea6099a0b44d"/><file name="jquery.js" hash="52d16e147b5346147d0f3269cd4d0f80"/><file name="unbxdAnalytics.js" hash="98738dccf6a9e9378e79ca6931d9d3c1"/></dir></dir></dir><dir name="skin"><dir name="adminhtml"><dir><dir name="default"><dir name="default"><dir name="unbxd"><dir name="searchcore"><dir name="css"><file name="app.css" hash="b2e6cac84e88747ed286e719d1a45e99"/><file name="app1.css" hash="52fa5f05ae08ae49afe408e94ddd4fb6"/><file name="bootstrap-switch.css" hash="b97cfbfa50ef0ef787261b5f925e506a"/><file name="bootstrap-them.css" hash="df854606e8bfb38abe58305c389301ae"/><file name="bootstrap.css" hash="92a3eb9b3fb1137b16bf8dca5907ffd6"/><file name="chosen.css" hash="2329f7f776c2b97a80a134c34c9eebd5"/><file name="colpick.css" hash="84eb0f762c33ede63bb4ed417b011a9d"/><file name="magento-app.css" hash="33b7d3e29d3906d21e882f8706ff7c7c"/><file name="unbxd-magento.css" hash="c4e7a73872d829f6915ced755dbba70a"/></dir><dir name="img"><file name="Custom-platform.png" hash="5290665e9ca24170ed6b4923bd635377"/><file name="DONE.png" hash="82ea09757c6f6ba582b2089a166686ec"/><file name="HEXAGON-Only.png" hash="cc44d0bcef0cbc24e00d08e3a76552c5"/><file name="Magento-small.png" hash="7a528e2dd969bec618acd410ae660727"/><file name="Magento.png" hash="a1006f3044d6cfe6dd6f4e982344ab4f"/><file name="Powered_by_unbxd copy.png" hash="b29f1ac74821c62af18ef2dea3a22265"/><file name="X-popup-hover.png" hash="f74653bfca79cbc1c262752b5f44d4c3"/><file name="X-popup.png" hash="63c9f5c8256e8ecfe76db8ddb8d9aaa0"/><file name="X-pricing.png" hash="979c2c9456732a8935d8e77f502de58e"/><file name="active.png" hash="ce09792133584f533c7a0a2227ff05c9"/><file name="add-actv.png" hash="f990f99e6c3bc5819087e02621e71a2d"/><file name="add-icon.png" hash="7add622ec65c42898fab1fb5e2e64533"/><file name="add-inactv.png" hash="9fb163e67fc1271534dbede05bd75d31"/><file name="add-raw-hover.png" hash="4a44e58502e00e8d73fc00b7988e8621"/><file name="add-raw.png" hash="442cc58d8176e0b580f409df4f18c89e"/><file name="add-rule.png" hash="de395f293ed3bd1f5e3e79ee80e0296e"/><file name="add.png" hash="317559b8877b4ab171c92e253fbae814"/><file name="api_int_info.png" hash="62efde0dc39f78b8d36ac140e4922fa8"/><file name="arrow-2.png" hash="6eb510a6c6753812d1c0b7ad3792c68d"/><file name="arrow-calendar-down.png" hash="cfcc798220b0655588b1ebc92bb2cd9e"/><file name="arrow-calendar-down1.png" hash="e1d78aa977aefd3dbd0d077265465a53"/><file name="arrow-down-disabled.jpg" hash="728761548b495cac219d9497f8d6bc88"/><file name="arrow-down-enabled.jpg" hash="79bf179fb24de528068cc34e0112bc5d"/><file name="arrow-down-white.jpg" hash="556e356570a1e9ed97b13fcbd028997e"/><file name="arrow-down-white1.jpg" hash="c1b42e8d9d6c79265085d0c297e215c0"/><file name="arrow-down-white2.jpg" hash="c1b42e8d9d6c79265085d0c297e215c0"/><file name="arrow-down.png" hash="13794ac6416e435d6b2fa0b54f48b488"/><file name="arrow-gray.png" hash="ef922786b71b9e8c7206dc3a3e55ec30"/><file name="arrow-inactive.png" hash="ea8df964b3bb238c34e2a92ac3819b1b"/><file name="arrow-left-inactive.png" hash="02dceab03c4629eda64caa32f76dd21f"/><file name="arrow-left-white.jpg" hash="99c322cfc458b3d9545335084263f7c0"/><file name="arrow-left.jpg" hash="d9c30f6cd57f2cdd382a1bcdbfa38507"/><file name="arrow-left.png" hash="2259b06fca6ea640c26d2208afd02fb5"/><file name="arrow-mail-developer).png" hash="6dd3f45435f140731481878b80a54e59"/><file name="arrow-right-blue.png" hash="33ad361548417c181dfbc05a7fbb78a9"/><file name="arrow-right-gray.jpg" hash="829ba35fb3b3598fcab2dd03dfd8bcaa"/><file name="arrow-right-inactive.png" hash="a8adf91679f6fcc1fcbbfebd87212bf7"/><file name="arrow-right-white.jpg" hash="fafacf3d7bc94986a26024565621b509"/><file name="arrow-right.jpg" hash="96af89ff4e0ebf1134361573b6a431b3"/><file name="arrow-right.png" hash="055276cac55edeb3eb4281f15a7ee404"/><file name="arrow-up-black.png" hash="668b1a36fb27af19739b0de2ee804bfc"/><file name="arrow-up-disabled.jpg" hash="d15535c2924f1e9ae570da0fc61d2e14"/><file name="arrow-up-enabled.jpg" hash="820c6e3175bf1774077cbf2ef0f00a5a"/><file name="arrow-up-red.png" hash="9e4fa614690acba2402e8fb774c1760a"/><file name="arrow-up-white.jpg" hash="6f4804c59bdfd728095e0d2c86c486e4"/><file name="arrow-up-white1.jpg" hash="017b0d2695a4d6b9534cae7af5883464"/><file name="arrow-up.png" hash="b4380ef5bdaad86d2eddeb69bfc51e5c"/><file name="arrow-white.png" hash="a62374550e967153b2f5f6c782770175"/><file name="arrow.png" hash="2dfdf0abf10326d73b8c39bd3f6da413"/><file name="arrow_grey.png" hash="9a4fc1c1022f8ecfeadf8e25da0f8240"/><file name="arrow_white.png" hash="794ff95721a9586ae3b9290a4a53ebbe"/><file name="authenticated.png" hash="9eac2025c82fcf60c822d7d4690ca98c"/><file name="back.png" hash="72f60077f20dc52553e069f641b42099"/><file name="bg.jpg" hash="4a2f6fda25f44f7009e9a22ccf90e330"/><file name="big-arrow-gray.jpg" hash="efb30594788c366bf9b007945b197071"/><file name="bigcommerce.png" hash="bb6801e63d1198f8ec1458e69d9d4eff"/><file name="black-right-small.jpg" hash="699a5af08c69fd5c3b57aaa9fed7cfaa"/><file name="black-right-thick.jpg" hash="707c1a0806947351564de4391e9ef885"/><file name="blue-selected.png" hash="e4246debbabc085b10572bd5aa4b0982"/><file name="breadcrumb_arrow.png" hash="631196f2801711df3ff31557c8287290"/><file name="btn-arrow-top.png" hash="75d77e80995b2b3b42043db3fe7e152b"/><file name="btn-arrow.png" hash="ee2543a2011a57b2b58db30cf62d0219"/><file name="button-arrow-blue.png" hash="b82160ad78e789b5702c7eb9a2dd3c7b"/><file name="button-arrow-grey.png" hash="cb339368b9409741e28dc31f6400f5f0"/><file name="button-arrow-red.png" hash="499819820395cfbcf03318107049a634"/><file name="cancel.png" hash="dea3ab86b5f6980886b8148b6dbc0804"/><file name="card-image.jpg" hash="543c66027f8d3718ab2f6930454c5324"/><file name="card-image1.jpg" hash="6469c85cb7133c89c514b5d932ec61d3"/><file name="card-image2.jpg" hash="816ceb38837684da077e08132d95aa08"/><file name="card-image3.jpg" hash="b65e704ae1cd2e88da5237e5e72e8ca8"/><file name="checkmark.png" hash="76c700530ee10b42763c1df6f85279b1"/><file name="chosen-sprite.png" hash="25b9acb1b504c95c6b95c33986b7317e"/><file name="close-analytics.png" hash="421ee870c5e070a6a03819eb2716fd1f"/><file name="close-round.png" hash="adafdcb7fde56b8af0e9b843ff7e19bb"/><file name="close.png" hash="fe130e3473e31d6f73127fed8d693539"/><file name="color-pic-black.png" hash="b9c18ff6fab0fc8bd1112b13a94d2477"/><file name="color-pic.png" hash="5ac6b53fdd57080a2df5a171bdb03aae"/><file name="congrats-magento.png" hash="2c02d7b82e1c5a8e2491f7892929b0fd"/><file name="congrats.png" hash="2c02d7b82e1c5a8e2491f7892929b0fd"/><file name="copy-black.png" hash="11abed4721d04c70531356777e828e0f"/><file name="copy-white.png" hash="6f188394d6619b61b51a7ede4c29ec0e"/><file name="cros.png" hash="25dee21cf8d50963fa3cf9300d0b93c0"/><file name="cross-2.png" hash="027fa6cdc450c378984376924003ca88"/><file name="custom-color-selected.png" hash="41b299f7d3d6964b45ced6c0b2209bfe"/><file name="custom-color.png" hash="4638d52f8ae7c8db0463500abeda4126"/><file name="custom-temp-1.png" hash="1e74a0ab64f7bce768e864a8ac43c1b8"/><file name="custom-temp-2.png" hash="456b7998744c5b272bc05f981ab79d73"/><file name="custom-temp-3.png" hash="3606aede791d32c3c9481d5bbc82847e"/><file name="custom-temp-4.png" hash="89d45791dfff0ca4f1ad94a4b1ec2661"/><file name="cvv-number.jpg" hash="3c3e97a31a009afcd3c26f7529db5cf1"/><file name="delete-raw-hover.png" hash="7bd9eeb7059b5946e2686415797417c7"/><file name="delete-raw.png" hash="43a13c96e2a261c309c151eb4ef975fc"/><file name="delete-red.png" hash="73386fe1e477b0a30c2ab9f9f11df94b"/><file name="delete.png" hash="55019546183a6d4bf7fce6ecc6a00b36"/><file name="detect.png" hash="b74ba51e28f7a15e8214c18cbdd4e407"/><file name="dot-border.png" hash="208feb3ba398f27536213749e1e621a3"/><file name="down-arrow.png" hash="25ce0545a9cc87f1d9e1b7b80be93876"/><file name="down-black.png" hash="d99de4c90283294c30f1670cf1a52f40"/><file name="down-gray.png" hash="3a75b2ef9452e1e3dd8e06ffab68456b"/><file name="drop-down.png" hash="3674841edf7320d3d84c708f50df1741"/><file name="dropdown-arrow.png" hash="e78ccea5d0bda5dbebcd5bbee4b93f64"/><file name="edit-magento.png" hash="efa37bbf88091ce8d7b68e8115d1fdde"/><file name="edit.png" hash="15f83e074edf79a9da13fbe74f47dfbd"/><file name="eye-hover.png" hash="b52a441b87c99d5cda61125669b33724"/><file name="eye.png" hash="8b7a3637232dad5710a8b36f69e2ad5d"/><file name="favicon.png" hash="1e52374b5ed35864d8fa9f15e2cd30c2"/><file name="fill.png" hash="ae2fd7902f99b1efc9531b006cdca186"/><file name="green-selected.png" hash="ef1ab5c6209c8e5293b2ce4867fd023d"/><file name="grey-selected.png" hash="b6a83c93171b89a6f7f466aa47ac4717"/><file name="group-arrow.png" hash="579edf9c51115a4c74061af86620edb7"/><file name="help.png" hash="4ef8bda62d42054e27218cfcd958c577"/><file name="icon-analytics.png" hash="c4b7b57118d1c912207ac8d34e3e6d5f"/><file name="icon-info.png" hash="cfa3beb50e89263c2da97d40f64da177"/><file name="icon-widget.png" hash="89fbad7748cb956a65896ddeda18a57c"/><file name="info-icon-big.png" hash="8b881f8b5950131b96f337247fe59b4f"/><file name="info-small.png" hash="a47a6287c9af33f42cd78762c9d5862f"/><file name="install.png" hash="6b378698d96ab32f89efc23fc24333da"/><file name="integration-gray.png" hash="e1428587806c6e90872cb8e325e1bb0f"/><file name="introduction-gray.png" hash="003c564c948c374ade90bfcef89088e9"/><file name="left-black.png" hash="ac4d88a6ddfefcdf75dcef4384bdf90e"/><file name="left-gray.png" hash="b229e9f7144f1d80f73f1dac6f689401"/><file name="level-arrow-active.png" hash="8905e738238c090bed0c259266159374"/><file name="level-arrow.png" hash="9a4fc1c1022f8ecfeadf8e25da0f8240"/><file name="link-arrow.png" hash="61fb4c9e922c3c6427fea1484eab2474"/><file name="list_bullet.png" hash="a6dda6a7e38ced1ea368d2265434e53f"/><file name="loader-16x16.gif" hash="778e6b9e73274330dae0dab8104948a0"/><file name="loader-24x24.gif" hash="e403534956d055d636b3a5fa813b82b7"/><file name="loader-32x32.gif" hash="510f6441c74b9f098ea99cc11d0c4e89"/><file name="loader.gif" hash="fd1345456c4a685afb42b67c25354ca2"/><file name="loader_black.gif" hash="5bfd8de3193a5fc2e5b472f57df1408f"/><file name="lock-image.jpg" hash="6081155d7fcbb5d8c4d34a344f0bbd97"/><file name="logo-unbxd.png" hash="82024b1f5e10ac130489103e8bf08d2b"/><file name="logo.png" hash="1c0087551ac1c41493868b5d409b7dda"/><file name="mail-box.png" hash="25dae3efa5200ee176dd0aa825fa1d5b"/><file name="mail-id-sprite.png" hash="3a06a0e11e74c7a66f7f0f1aae082fcf"/><file name="mail-new.png" hash="8a3fe01ecd87ea7e93b239f2add8a52a"/><file name="mail.png" hash="f1a1039b5ebdc17cb40b2d79ca3937e9"/><file name="minus.jpg" hash="0fd79f174562ffa46348b445c85c930c"/><file name="minus.png" hash="bc691a8f2761f1d1c4a379f665d03480"/><file name="nav-highlight-arrow.png" hash="9806317c711b22c08a6247960c10fb26"/><file name="not-detected.png" hash="2e63b320f3f8a6c004c71bc1b02c1473"/><file name="oops.png" hash="03eca8b24324df38fd4c734843a2abbb"/><file name="or.png" hash="e6e8b2d42f8dedf2078e3d9f38e6070d"/><file name="orange-selected.png" hash="296963f455ad925de437581fa07be306"/><file name="orange.png" hash="2e2089e5c3e867f00728cf2cf2de3811"/><file name="other-gray.png" hash="58f19f3578f063ff1ccd8b8ef2890195"/><file name="overview-gray.png" hash="0c3501dd6469f90a61a8367a3bdc3340"/><file name="plus.png" hash="2cbfab4d57d7083650b5bbf8be7ee84c"/><file name="preview.png" hash="d56d8e0b3eb221a714ed0e2474ed38ac"/><file name="question-mark2.jpg" hash="50392a77ea59fc9c1e4709834cc7ae2d"/><file name="red-cross.png" hash="368e01e53564574eea66c850829a243f"/><file name="red-loading.gif" hash="510327b63304d4c58bb9445c7343498f"/><file name="remove.png" hash="aea65d50ad060b90e8f7e76624f20c4b"/><file name="right-black.png" hash="cdc63a865ca9717d3d315fc3bcbc64ca"/><file name="right-gray.png" hash="cc72c1c3416e2ce5750e4db92de093fd"/><file name="rules.png" hash="004dced224b5250f4f033cffb44cca14"/><file name="save.png" hash="20eb685cc7a58ea1ea2065a8c2d10e81"/><file name="saved.png" hash="df9ab88cb96c3de503816171f35b1254"/><file name="search.png" hash="5acdafa5337d7702948a4015eeb8f0f6"/><file name="settings.png" hash="36fc3060fa0d0e5bb2e3dd57c51b1edf"/><file name="shopify.png" hash="ff1163b008f933c7e71cd5a4d77de878"/><file name="site-dropdownarrow-down.png" hash="e83075515419fa29658df010a6982023"/><file name="site-dropdownarrow-up.png" hash="fbd66dc69e51085161a2e28c519e2dc8"/><file name="skin1-trans.png" hash="0264c245ba712d19d5b0d308e71e77b4"/><file name="skin1.png" hash="2e2089e5c3e867f00728cf2cf2de3811"/><file name="skin2.png" hash="fe5935399ab1a8d78ecaebaba6c7d176"/><file name="skin3.png" hash="9bfccdd71c71d7f03b5f2fe1cd394118"/><file name="skin4.png" hash="1002cadb9ce2bdaea9e820d0f324113d"/><file name="slider-bg.png" hash="0f310e78f27110b13cf699ed7d4b97e4"/><file name="slider-button.png" hash="4b8c133577ba9022b97ac82420e88166"/><file name="sort-arrow-blue-down.png" hash="22fab361e19b80e12b1279921f123656"/><file name="sort-arrow-blue-up.png" hash="7731f17d465b7dd6cde7eafebe2248b7"/><file name="sort-arrow-grey-down.png" hash="82cfe186b77d97dd0d961303bd53ad40"/><file name="sort-arrow-grey-up.png" hash="dbd67d69cb4ddab64cf9bed760251adb"/><file name="spinner_down.png" hash="afdbf1537511400bc1278cf761cedb12"/><file name="spinner_up.png" hash="f1032905f72b96eb8ee8f5ddb995e559"/><file name="spree.png" hash="d30a2489564230c317f9c873277567e9"/><file name="start-gray.png" hash="b6425ce659a1da4316a144a5a66b72bd"/><file name="step-arrow.png" hash="1bb6bed612dd45b5e49b2a70a952a7a7"/><file name="success-icon-big.png" hash="9d4e0c51400d6039220a5301797e01a1"/><file name="success.png" hash="74d3fa654373b5c128699c80cf218053"/><file name="temp-1-blue.png" hash="e62450283d4e38467c6920a8474c139d"/><file name="temp-1-green.png" hash="ba66a0aa6cae5edf940ceddb51c11f12"/><file name="temp-1-grey.png" hash="a2736bce441ee5b0a98cc7090b31918d"/><file name="temp-1-orange.png" hash="ab3c96985183414aec3d5affe33094fe"/><file name="temp-1-preview-blue.png" hash="eb3d6e4fe3473d6a69239c6e6da815ea"/><file name="temp-1-preview-green.png" hash="4f126d02eae9679d88a1e411319c5d4c"/><file name="temp-1-preview-grey.png" hash="ef8c62f98c94b550c488650aa2a1bbbf"/><file name="temp-1-preview-orange.png" hash="1aa2170d326403a87f119341622503d3"/><file name="temp-1.png" hash="e5c1f8718fec6d570a2eef8110b1da3c"/><file name="temp-2-blue.png" hash="35c176f6bfb28e7f603dae4e08ab2b08"/><file name="temp-2-green.png" hash="d9c9f88f66cb0e96f67384ed46e164b2"/><file name="temp-2-grey.png" hash="97e1c2d6b09ae812891768193825c24c"/><file name="temp-2-orange.png" hash="bd5c1d83b734cc78f3d6684ea39cdbb2"/><file name="temp-2-preview-blue.png" hash="65b394b1b7ba85c8f6557b56a01956f0"/><file name="temp-2-preview-green.png" hash="2ffeb59926e5d02d618b1e27c6ec8f3f"/><file name="temp-2-preview-grey.png" hash="0b5a3c138cbf5d7aa6d6c2f2fd546a12"/><file name="temp-2-preview-orange.png" hash="899dc8507574ce64382757b32ae2e534"/><file name="temp-2.png" hash="35ee735575579755f23b9be31eac64d6"/><file name="temp-3-blue.png" hash="3f33a385a0588c159459640ba50a6e68"/><file name="temp-3-green.png" hash="8fa49ff3af61230af4352a5c30b62a9f"/><file name="temp-3-grey.png" hash="a98c1d46adf4d091c1ee0b8e4affef60"/><file name="temp-3-orange.png" hash="7bca6c527be688c8609ff21b8f2a1d74"/><file name="temp-3-preview-blue.png" hash="636b0e1eeef3577338cdcfb735c99e15"/><file name="temp-3-preview-green.png" hash="ebc8bae1360c48fe346292840f954021"/><file name="temp-3-preview-grey.png" hash="5684634e2988a5b25a02de8d48644db6"/><file name="temp-3-preview-orange.png" hash="d788a099b7af1328a716639391469213"/><file name="temp-3.png" hash="9b6c874b939adff6f507d1f2754fc2c9"/><file name="temp-4-blue.png" hash="a97c6420edeb9d0e95bb8a67770af70c"/><file name="temp-4-green.png" hash="02f1e2f9b2541ba27ae9562dc4d7401d"/><file name="temp-4-grey.png" hash="8644e3016a22f011c2637deca0a0ac17"/><file name="temp-4-orange.png" hash="8649ad362dd918cb43a85feea9963daf"/><file name="temp-4-preview-blue.png" hash="6578e5606be7e7cda9c3a6a5c0e545b9"/><file name="temp-4-preview-green.png" hash="fb264203a4541ccd74f03b29a9142da4"/><file name="temp-4-preview-grey.png" hash="f26ffe3252713190c6a795e11b816cf2"/><file name="temp-4-preview-orange.png" hash="d1fc0e64b8c50c63b46ebff25665d330"/><file name="temp-5-blue.png" hash="e8656a96324a6bcdf8929e01591f7503"/><file name="temp-5-green.png" hash="040ea3f18c03189cff35e0583d5b6c04"/><file name="temp-5-orange.png" hash="f1a011d6401615da7624d610eb4d92f5"/><file name="temp-5-preview-blue.png" hash="beb849914a4a0338c2186bd61cc5e928"/><file name="temp-5-preview-gray.png" hash="bf0af858702b7d5af7d90b4ad7d424a2"/><file name="temp-5-preview-green.png" hash="23b9d70528280829d62b75fe1b2f4583"/><file name="temp-5-preview-orange.png" hash="4c44988fb1d0188f11db8fca38e4d9be"/><file name="temp-5.png" hash="2ba4c85707f885f69348e30acc87dcce"/><file name="temp-6.png" hash="ba25e257bfb2f05b5520c18fc4b1aaf0"/><file name="templates.png" hash="e70640fb9b1c78b43dccc3a0dd2e5b8d"/><file name="tick-analytics.png" hash="4ec2b80058957d5a0e4981293ddf6457"/><file name="tick-green.png" hash="49e5425fa6c0486b2be5d39d441a4cf9"/><file name="tick-orange.png" hash="c340278b24a4c92293b4db3832ff8329"/><file name="tick-pricing.png" hash="3a3f49be2bdbc3b9774321c53db50787"/><file name="tick.png" hash="cf2f6cecb363f8e6e2d64671467e1141"/><file name="tooltip-arrow.png" hash="5156649110cf1cb7cdbdc6512c47dc81"/><file name="tooltip-left-arrow.jpg" hash="92371e2d982257d136c5f46baeb513e6"/><file name="tooltip.png" hash="6a3b15fc7de518b27c63c7beda436204"/><file name="up-arrow.png" hash="452fa52e6d4b247dfca05f1996ffe318"/><file name="up-black.png" hash="7cd935e00c14d8c846b3e11f6b340a84"/><file name="up-gray.png" hash="f732268fd825a21e46346ba06deed750"/><file name="user.png" hash="f97a8fc7500ae31b18ed548897e05638"/><file name="view-hover.png" hash="b8f7826a09d5b8ee3f1beb6ade24a8a4"/><file name="view.png" hash="560fb2ea9e2717bd9aaa4bb3d258adc5"/><file name="warning.png" hash="4437ce9cf87d3d52abaea20ba9233d25"/><file name="x-widget.png" hash="0c75b723e7f543ff9da9627a3212a7a9"/><file name="x.png" hash="a0fdfbf2804612fc9b54abb64ec73731"/></dir><dir name="js"><dir name="app"><file name="analytics.js" hash="fd04c5b0c0424e161eb6d239800f0761"/><file name="autosuggest.js" hash="c6150187d86530d734a0d893d56eca84"/><file name="catalog.js" hash="20533109e38ecb7e17c029d7bec79726"/><file name="config.js" hash="075e03868e18b0ac998bf42706746a87"/><file name="credentials.js" hash="1f983ff5ff632026f130b3cffc1d79a7"/><file name="filter-catalogue.js" hash="120b8b0150ac1aab04d19216febff66d"/><dir name="search"><file name="api.js" hash="6e39ca0b9990c675ab29315952164814"/><file name="hosted.js" hash="80adf11bc58b21ba81e1e78c9fa32bc6"/><file name="landing.js" hash="4c487f74677cd88c7e9d67dd2213d030"/></dir><file name="utils.js" hash="f50ecabcbad2df4f319c9a6b6df15d4c"/><file name="widgets.js" hash="228d99b869bb0ab989522efa5e0261c5"/></dir><file name="app.js" hash="57b262277d9ada1fbec7eb5935190f8c"/><dir name="lib"><file name="backbone.js" hash="88fee57a12be8ea719ed85fe29f062d3"/><file name="bootstrap-modal.js" hash="04265b3f540e5af4d5eeeb6c3e0d813d"/><file name="bootstrap-tooltip.js" hash="304bf569ee1a25e8fae5532d90661662"/><file name="chosen.js" hash="4fabe14fb10d99c4b432db5ce9847c06"/><file name="colpick.js" hash="668c1d24c70d09b099a37cb7c158e092"/><file name="ractive-backbone.js" hash="afeac03a42a51483a7389f2b26a3e3d7"/><file name="ractive-chosen.js" hash="837381e6e428a7fa2b9f8f67c974d195"/><file name="ractive.js" hash="4887bb0d23f93ca78c46d2a7420cd360"/><file name="require.js" hash="177879fbe7dd333386711389ffa44d21"/><file name="routie.js" hash="bae94f674236d2d0a02d14624eb98713"/><file name="rv.js" hash="59d80aee6eb83f4f14596784fd57252a"/><file name="underscore.js" hash="f809a744b7a4fe79a94749a569aa17f9"/></dir><file name="main.js" hash="7fe76495f44eb0a5d00080bf47e5c256"/></dir><dir name="templates"><file name="analytics.html" hash="0ba72fbc28e2998bb6261553ad93a616"/><file name="auto-suggest.html" hash="0d87aa15f51a636a505bdee043e6af6e"/><file name="catalog.html" hash="15f22fb70c14bd5d72c4f87df8795145"/><file name="credentails.html" hash="b0d89e42bf3d8606042ea5673c3260c7"/><file name="custom.html" hash="d41d8cd98f00b204e9800998ecf8427e"/><file name="index.html" hash="f2053de86b827b0536f3730e5bd47fb2"/><dir name="partials"><file name="catalogue.html" hash="edba8e597c3694d4ba490d20fff6b052"/><file name="contact-form.html" hash="782cad00f5846b8feaaee123a3250a29"/><file name="custom-attr.html" hash="0a53a466f8d580145a60077756deba34"/><file name="filters.html" hash="b1982a5b3282fd82e360be25cb90eb2c"/><file name="preview-modal.html" hash="fc4a97401265fe2d3748d4742fddd674"/><file name="row.html" hash="fed8568b62d58b78d61a92dd987f1c8f"/><file name="switch-off.html" hash="ff23402a616d9e5af17c003cba7216f1"/><file name="switch-on.html" hash="49ed70ac50fb66803133313c8a470e52"/></dir><dir name="search"><file name="api.html" hash="fb9a23101c71c2de35162fe789ffed46"/><file name="hosted.html" hash="3e6f96b266e20b46401b29338b860c6e"/><file name="landing.html" hash="46928ca03f00d946d9e2b12272828752"/></dir><file name="widgets.html" hash="a06e1116fe06e610f7299c101bf8ba14"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="unbxd"><file name="searchcore.xml" hash="1a4e0ac66ad74dfcbd2d7fe9122b6df7"/></dir></dir><dir name="template"><dir name="unbxd"><file name="search.phtml" hash="781fbe75dd21c2823bd1f6980ddb16cc"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="unbxd"><file name="search.xml" hash="0fe48274849d8e8625569c7c61ed060d"/><file name="searchcore.xml" hash="c653e99817baea1f1f9960a4b016b6d2"/></dir></dir><dir name="template"><dir name="unbxd"><dir name="search"><file name="autosuggest.phtml" hash="700d37cf15b27e10bf40f4ef051c11d3"/><file name="tracking.phtml" hash="770845f802d91490090b7d9dac52c78d"/></dir><dir name="searchcore"><file name="tracker.phtml" hash="51f3827a5df9ed6265662e26c3dfdf33"/><dir name="tracking"><file name="product.phtml" hash="55ab8d6a966d39f35beace0130605ef1"/></dir></dir></dir></dir></dir></dir></dir></target><target name="magelib"><dir name="Unbxd"><file name="Client.php" hash="10153bedf1906be544262fbc27737acd"/><file name="Response.php" hash="30a0fb57242d079e295c30d23c175ef3"/><file name="Result.php" hash="df3ce20b629f723d51b0005fba45cbcc"/><file name="ResultSet.php" hash="de2f61baa2611b433cc1c4741e0f3094"/><file name="Service.php" hash="152ac0dd45544b235e9b062af0514b66"/><file name="test.php" hash="501006c089c31ddee66de541ae104432"/><file name=".project" hash="edac4ef5305a49516a99512aa70b9037"/></dir></target></contents>
16
  <compatible/>
17
+ <dependencies><required><php><min>5.1.1</min><max>5.6.15</max></php></required></dependencies>
18
  </package>