Example #1
1
	$arResult["SET_ITEMS"]["DEFAULT"] = array();
	$arResult["SET_ITEMS"]["OTHER"] = array();
	$arResult["SET_ITEMS"]["PRICE"] = 0;
	$arResult["SET_ITEMS"]["OLD_PRICE"] = 0;
	$arResult["SET_ITEMS"]["PRICE_DISCOUNT_DIFFERENCE"] = 0;

	$arSetItemsRatio = array();
	foreach ($arSetItemsID as $key=>$itemID)
	{
		$arSetItemsRatio[$itemID] = 1;
	}
	$rsRatios = CCatalogMeasureRatio::getList(
		array(),
		array('PRODUCT_ID' => $arSetItemsID),
		false,
		false,
		array('PRODUCT_ID', 'RATIO')
	);
	while ($arRatio = $rsRatios->Fetch())
	{
		if (in_array($arRatio['PRODUCT_ID'], $arSetItemsID))
		{
			$intRatio = (int)$arRatio['RATIO'];
			$dblRatio = (float)($arRatio['RATIO']);
			$arSetItemsRatio[$arRatio['PRODUCT_ID']] = ($dblRatio > $intRatio ? $dblRatio : $intRatio);
			$arSetItemsRatio[$arRatio['PRODUCT_ID']] = ($arSetItemsRatio[$arRatio['PRODUCT_ID']] > 0) ? $arSetItemsRatio[$arRatio['PRODUCT_ID']] : 1;
		}
	}
	$arResult["ITEMS_RATIO"] = $arSetItemsRatio;
Example #2
0
             }
             if ($bGetProductProperties) {
                 $arItem["PRODUCT_PROPERTIES"] = CIBlockPriceTools::GetProductProperties($arParams["IBLOCK_ID"], $arItem["ID"], $arParams["PRODUCT_PROPERTIES"], $arItem["PROPERTIES"]);
                 if (!empty($arItem["PRODUCT_PROPERTIES"])) {
                     $arItem['PRODUCT_PROPERTIES_FILL'] = CIBlockPriceTools::getFillProductProperties($arItem['PRODUCT_PROPERTIES']);
                 }
             }
         }
     }
     if (isset($arItem)) {
         unset($arItem);
     }
 }
 if ($bIBlockCatalog) {
     if (!empty($arResult["ELEMENTS"])) {
         $rsRatios = CCatalogMeasureRatio::getList(array(), array('PRODUCT_ID' => $arResult["ELEMENTS"]), false, false, array('PRODUCT_ID', 'RATIO'));
         while ($arRatio = $rsRatios->Fetch()) {
             $arRatio['PRODUCT_ID'] = (int) $arRatio['PRODUCT_ID'];
             if (isset($arElementLink[$arRatio['PRODUCT_ID']])) {
                 $intRatio = (int) $arRatio['RATIO'];
                 $dblRatio = doubleval($arRatio['RATIO']);
                 $mxRatio = $dblRatio > $intRatio ? $dblRatio : $intRatio;
                 if (CATALOG_VALUE_EPSILON > abs($mxRatio)) {
                     $mxRatio = 1;
                 } elseif (0 > $mxRatio) {
                     $mxRatio = 1;
                 }
                 $arElementLink[$arRatio['PRODUCT_ID']]['CATALOG_MEASURE_RATIO'] = $mxRatio;
             }
         }
     }
Example #3
0
        }
        ?>
			</td>
		</tr>
	<?php 
        if (!empty($arAllMeasure)) {
            ?>
		<tr>
			<td width="40%"><?php 
            echo GetMessage("C2IT_MEASURE_RATIO");
            ?>
:</td>
			<td width="60%"><?php 
            $str_CAT_MEASURE_RATIO = 1;
            $CAT_MEASURE_RATIO_ID = 0;
            $db_CAT_MEASURE_RATIO = CCatalogMeasureRatio::getList(array(), array("PRODUCT_ID" => $PRODUCT_ID));
            if ($ar_CAT_MEASURE_RATIO = $db_CAT_MEASURE_RATIO->Fetch()) {
                $str_CAT_MEASURE_RATIO = $ar_CAT_MEASURE_RATIO["RATIO"];
                $CAT_MEASURE_RATIO_ID = $ar_CAT_MEASURE_RATIO["ID"];
            }
            if ($bVarsFromForm) {
                $str_CAT_MEASURE_RATIO = $CAT_MEASURE_RATIO;
            }
            ?>
				<input type="text" <?php 
            if ($bReadOnly || $productIsSet) {
                echo "disabled readonly";
            }
            ?>
 id="CAT_MEASURE_RATIO" name="CAT_MEASURE_RATIO" value="<?php 
            echo htmlspecialcharsbx($str_CAT_MEASURE_RATIO);
Example #4
0
function getProductDataToFillBasket($productId, $quantity, $userId, $LID, $userColumns, $tmpId = "")
{
	if (!\Bitrix\Main\Loader::includeModule("catalog"))
		return array();

	$arParams = array();

	$productId = (int)$productId;
	if ($productId <= 0)
	{
		return $arParams;
	}
	$iblockId = (int)CIBlockElement::GetIBlockByID($productId);
	if ($iblockId <= 0)
	{
		return $arParams;
	}

	$arSku2Parent = array();
	$arElementId = array();

	$arElementId[] = $productId;
	$arParent = CCatalogSku::GetProductInfo($productId, $iblockId);
	if ($arParent)
	{
		$arElementId[] = $arParent["ID"];
		$arSku2Parent[$productId] = $arParent["ID"];
	}

	$arPropertyInfo = array();
	$userColumns = (string)$userColumns;
	$arUserColumns = ($userColumns != '') ? explode(",", $userColumns) : array();
	foreach ($arUserColumns as $key => $column)
	{
		if (strncmp($column, 'PROPERTY_', 9) != 0)
		{
			unset($arUserColumns[$key]);
		}
		else
		{
			$propertyCode = substr($column, 9);
			if ($propertyCode == '')
			{
				unset($arUserColumns[$key]);
				continue;
			}
			$dbres = CIBlockProperty::GetList(array(), array("CODE" => $propertyCode));
			if ($arPropData = $dbres->GetNext())
				$arPropertyInfo[$column] = $arPropData;
		}
	}

	$arSelect = array_merge(
		array("ID", "NAME", "LID", "IBLOCK_ID", "IBLOCK_SECTION_ID", "DETAIL_PICTURE", "PREVIEW_PICTURE", "DETAIL_PAGE_URL", "XML_ID", "IBLOCK_XML_ID"),
		$arUserColumns
	);

	$arProductData = getProductProps($arElementId, $arSelect);

	$defaultMeasure = CCatalogMeasure::getDefaultMeasure(true, true);

	if (!empty($arProductData))
	{
		$arElementInfo = array();
		foreach ($arProductData as $elemId => &$arElement)
		{
			foreach ($arElement as $key => $value)
			{
				if (strncmp($key, 'PROPERTY_', 9) == 0 && substr($key, -6) == "_VALUE")
				{
					$columnCode = str_replace("_VALUE", "", $key);
					$arElement[$key] = getIblockPropInfo($value, $arPropertyInfo[$columnCode], array("WIDTH" => 90, "HEIGHT" => 90));
				}
			}
		}
		unset($arElement);

		if (isset($arProductData[$productId]))
			$arElementInfo = $arProductData[$productId];

		if (isset( $arSku2Parent[$productId]))
			$arParent = $arProductData[$arSku2Parent[$productId]];

		if (!empty($arSku2Parent)) // if sku element doesn't have value of some property - we'll show parent element value instead
		{
			foreach ($arUserColumns as $field)
			{
				$fieldVal = $field."_VALUE";
				$parentId = $arSku2Parent[$productId];

				if ((!isset($arElementInfo[$fieldVal]) || (isset($arElementInfo[$fieldVal]) && strlen($arElementInfo[$fieldVal]) == 0))
					&& (isset($arProductData[$parentId][$fieldVal]) && !empty($arProductData[$parentId][$fieldVal]))) // can be array or string
				{
					$arElementInfo[$fieldVal] = $arProductData[$parentId][$fieldVal];
				}
			}
			if (strpos($arElementInfo["~XML_ID"], '#') === false)
			{
				$arElementInfo["~XML_ID"] = $arParent['~XML_ID'].'#'.$arElementInfo["~XML_ID"];
			}
		}

		$arElementInfo["MODULE"] = "catalog";
		$arElementInfo["PRODUCT_PROVIDER_CLASS"] = "CCatalogProductProvider";

		$arElementInfo["PRODUCT_ID"] = $arElementInfo["ID"];

		if ($arElementInfo["IBLOCK_ID"] > 0)
		{
			$arElementInfo["EDIT_PAGE_URL"] = CIBlock::GetAdminElementEditLink($arElementInfo["IBLOCK_ID"], $arElementInfo["PRODUCT_ID"], array(
				"find_section_section" => $arElementInfo["IBLOCK_SECTION_ID"],
				'WF' => 'Y',
			));
		}

		$arBuyerGroups = CUser::GetUserGroup($userId);

		// price
		$arPrice = CCatalogProduct::GetOptimalPrice($arElementInfo["ID"], 1, $arBuyerGroups, "N", array(), $LID);
		$currentPrice = $arPrice["DISCOUNT_PRICE"];
		$arElementInfo["PRICE"] = $currentPrice;
		$arElementInfo["CURRENCY"] = $arPrice["PRICE"]["CURRENCY"];
		$arElementInfo["DISCOUNT_PRICE"] = $arPrice["PRICE"]["PRICE"] - $arPrice["DISCOUNT_PRICE"];
		$currentTotalPrice = ($arElementInfo["PRICE"] + $arElementInfo["DISCOUNT_PRICE"]);
		$discountPercent = 0;
		if ($arElementInfo["DISCOUNT_PRICE"] > 0)
			$discountPercent = intval(($arElementInfo["DISCOUNT_PRICE"] * 100) / $currentTotalPrice);

		$rsProducts = CCatalogProduct::GetList(
			array(),
			array('ID' => $productId),
			false,
			false,
			array('ID', 'QUANTITY', 'WEIGHT', 'MEASURE', 'TYPE', 'BARCODE_MULTI')
		);
		if (!($arProduct = $rsProducts->Fetch()))
		{
			return array();
		}
		$balance = floatval($arProduct["QUANTITY"]);

		// sku props
		$arSkuData = array();
		$arProps[] = array(
			"NAME" => "Catalog XML_ID",
			"CODE" => "CATALOG.XML_ID",
			"VALUE" => $arElementInfo['~IBLOCK_XML_ID']
		);
		$arSkuProperty = CSaleProduct::GetProductSkuProps($productId, '', true);
		if (!empty($arSkuProperty))
		{
			foreach ($arSkuProperty as &$val)
			{
				$arSkuData[] = array(
					'NAME' => $val['NAME'],
					'VALUE' => $val['VALUE'],
					'CODE' => $val['CODE']
				);
			}
			unset($val);
		}
		$arSkuData[] = array(
			"NAME" => "Product XML_ID",
			"CODE" => "PRODUCT.XML_ID",
			"VALUE" => $arElementInfo["~XML_ID"]
		);

		// currency
		$arCurFormat = CCurrencyLang::GetCurrencyFormat($arElementInfo["CURRENCY"]);
		$priceValutaFormat = str_replace("#", "", $arCurFormat["FORMAT_STRING"]);

		$arElementInfo["WEIGHT"] = $arProduct["WEIGHT"];

		// measure
		$arElementInfo["MEASURE_TEXT"] = "";
		if ((int)$arProduct["MEASURE"] > 0)
		{
			$dbMeasure = CCatalogMeasure::GetList(array(), array("ID" => intval($arProduct["MEASURE"])), false, false, array("ID", "SYMBOL_RUS", "SYMBOL_INTL"));
			if ($arMeasure = $dbMeasure->Fetch())
				$arElementInfo["MEASURE_TEXT"] = ($arMeasure["SYMBOL_RUS"] != '' ? $arMeasure["SYMBOL_RUS"] : $arMeasure["SYMBOL_INTL"]);
		}
		if ($arElementInfo["MEASURE_TEXT"] == '')
		{
			$arElementInfo["MEASURE_TEXT"] = ($defaultMeasure["SYMBOL_RUS"] != '' ? $defaultMeasure["SYMBOL_RUS"] : $defaultMeasure["SYMBOL_INTL"]);
		}


		// ratio
		$arElementInfo["RATIO"] = 1;
		$dbratio = CCatalogMeasureRatio::GetList(array(), array("PRODUCT_ID" => $productId));
		if ($arRatio = $dbratio->Fetch())
			$arElementInfo["RATIO"] = $arRatio["RATIO"];

		// image
		if ($arElementInfo["PREVIEW_PICTURE"] > 0)
			$imgCode = $arElementInfo["PREVIEW_PICTURE"];
		elseif ($arElementInfo["DETAIL_PICTURE"] > 0)
			$imgCode = $arElementInfo["DETAIL_PICTURE"];

		if ($imgCode == "" && count($arParent) > 0)
		{
			if ($arParent["PREVIEW_PICTURE"] > 0)
				$imgCode = $arParent["PREVIEW_PICTURE"];
			elseif ($arParent["DETAIL_PICTURE"] > 0)
				$imgCode = $arParent["DETAIL_PICTURE"];
		}

		if ($imgCode > 0)
		{
			$arFile = CFile::GetFileArray($imgCode);
			$arImgProduct = CFile::ResizeImageGet($arFile, array('width'=>80, 'height'=>80), BX_RESIZE_IMAGE_PROPORTIONAL, false, false);
			if (is_array($arImgProduct))
				$imgUrl = $arImgProduct["src"];
		}

		$arSetInfo = array();
		$arStores = array();

		/** @var $productProvider IBXSaleProductProvider */
		if ($productProvider = CSaleBasket::GetProductProvider(array("MODULE" => $arElementInfo["MODULE"], "PRODUCT_PROVIDER_CLASS" => $arElementInfo["PRODUCT_PROVIDER_CLASS"])))
		{
			// get set items if it is set
			if ($arProduct["TYPE"] == CCatalogProduct::TYPE_SET)
			{
				if (method_exists($productProvider, "GetSetItems"))
				{
					$arSets = $productProvider::GetSetItems($productId, CSaleBasket::TYPE_SET);

					if ($tmpId == "")
						$tmpId = randString(7);

					if (!empty($arSets))
					{
						foreach ($arSets as $arSetData)
						{
							foreach ($arSetData["ITEMS"] as $setItem)
							{
								$arSetItemParams = getProductDataToFillBasket($setItem["PRODUCT_ID"], $setItem["QUANTITY"], $userId, $LID, $userColumns, $tmpId); // recursive call

								// re-define some fields with set data values
								$arSetItemParams["id"] = $setItem["PRODUCT_ID"];
								$arSetItemParams["name"] = $setItem["NAME"];
								$arSetItemParams["module"] = $setItem["MODULE"];
								$arSetItemParams["productProviderClass"] = $setItem["PRODUCT_PROVIDER_CLASS"];
								$arSetItemParams["url"] = $setItem["DETAIL_PAGE_URL"];
								$arSetItemParams["quantity"] = $setItem["QUANTITY"] * $quantity;
								$arSetItemParams["barcodeMulti"] = $setItem["BARCODE_MULTI"];
								$arSetItemParams["productType"] = $setItem["TYPE"];
								$arSetItemParams["weight"] = $setItem["WEIGHT"];
								$arSetItemParams["vatRate"] = $setItem["VAT_RATE"];
								$arSetItemParams["setItems"] = "";

								$arSetItemParams["setParentId"] = $productId."_tmp".$tmpId;
								$arSetItemParams["isSetItem"] = "Y";
								$arSetItemParams["isSetParent"] = "N";

								$arSetInfo[] = $arSetItemParams;
							}
						}
					}
				}
			}

			// get stores
			$storeCount = $productProvider::GetStoresCount(array("SITE_ID" => $LID)); // with exact SITE_ID or SITE_ID = NULL

			if ($storeCount > 0)
			{
				if ($arProductStore = $productProvider::GetProductStores(array("PRODUCT_ID" => $productId, "SITE_ID" => $LID)))
					$arStores = $arProductStore;
			}
		}

		$currentTotalPrice = (float)$currentTotalPrice;
		// params array
		$arParams["id"] = $productId;
		$arParams["name"] = $arElementInfo["~NAME"];
		$arParams["url"] = htmlspecialcharsex($arElementInfo["~DETAIL_PAGE_URL"]);
		$arParams["urlEdit"] = $arElementInfo["EDIT_PAGE_URL"];
		$arParams["urlImg"] = $imgUrl;
		$arParams["price"] = floatval($arElementInfo["PRICE"]);
		$arParams["priceBase"] = $currentTotalPrice;
		$arParams["priceBaseFormat"] = CCurrencyLang::CurrencyFormat($currentTotalPrice, $arElementInfo["CURRENCY"], false);
		$arParams["priceFormated"] = CCurrencyLang::CurrencyFormat(floatval($arElementInfo["PRICE"]), $arElementInfo["CURRENCY"], false);
		$arParams["valutaFormat"] = $priceValutaFormat;
		$arParams["dimensions"] = serialize(array("WIDTH" => $arElementInfo["WIDTH"], "HEIGHT" => $arElementInfo["HEIGHT"], "LENGTH" => $arElementInfo["LENGTH"]));
		$arParams["priceDiscount"] = floatval($arElementInfo["DISCOUNT_PRICE"]);
		$arParams["priceTotalFormated"] = CCurrencyLang::CurrencyFormat($currentTotalPrice, $arElementInfo["CURRENCY"], true);
		$arParams["discountPercent"] = $discountPercent;
		$arParams["summaFormated"] = CCurrencyLang::CurrencyFormat($arElementInfo["PRICE"], $arElementInfo["CURRENCY"], false);
		$arParams["quantity"] = $quantity;
		$arParams["module"] = $arElementInfo["MODULE"];
		$arParams["currency"] = $arElementInfo["CURRENCY"];
		$arParams["weight"] = $arElementInfo["WEIGHT"];
		$arParams["vatRate"] = $arPrice["PRICE"]["VAT_RATE"];
		$arParams["priceType"] = $arPrice["PRICE"]["CATALOG_GROUP_NAME"];
		$arParams["balance"] = $balance;
		$arParams["notes"] = (is_array($arPrice["PRICE"]) && array_key_exists("CATALOG_GROUP_NAME", $arPrice["PRICE"])) ? $arPrice["PRICE"]["CATALOG_GROUP_NAME"] : "";
		$arParams["catalogXmlID"] = $arElementInfo["~IBLOCK_XML_ID"];
		$arParams["productXmlID"] = $arElementInfo["~XML_ID"];
		$arParams["callback"] = "";
		$arParams["orderCallback"] = "";
		$arParams["cancelCallback"] = "";
		$arParams["payCallback"] = "";
		$arParams["productProviderClass"] = $arElementInfo["PRODUCT_PROVIDER_CLASS"];
		$arParams["skuProps"] = $arSkuData;
		$arParams["measureText"] = $arElementInfo["MEASURE_TEXT"];
		$arParams["ratio"] = $arElementInfo["RATIO"];
		$arParams["barcodeMulti"] = $arProduct["BARCODE_MULTI"];

		$arParams["productType"] = empty($arSetInfo) ? "" : CSaleBasket::TYPE_SET;
		$arParams["setParentId"] = empty($arSetInfo) ? "" : $productId."_tmp".$tmpId;

		$arParams["setItems"] = $arSetInfo;
		$arParams["isSetItem"] = "N";
		$arParams["isSetParent"] = empty($arSetInfo) ? "N" : "Y";

		$arParams["stores"] = empty($arSetInfo) ? $arStores : array();
		$arParams["productPropsValues"] = $arElementInfo; // along with other information also contains values of properties with correct keys (after getProductProps)
	}

	return $arParams;
}
Example #5
0
				{
					if ($showCatalogWithOffers || $arRows['E'.$intID]->arRes['CATALOG_TYPE'] != CCatalogProduct::TYPE_SKU)
						$arRows['E'.$intID]->AddViewField('CATALOG_MEASURE', $strMeasure);
					else
						$arRows['E'.$intID]->AddViewField('CATALOG_MEASURE', ' ');
				}
			}
		}
	}
	if (isset($arVisibleColumnsMap['CATALOG_MEASURE_RATIO']))
	{
		$arRatioList = array();
		$rsRatios = CCatalogMeasureRatio::getList(
			array(),
			array('@PRODUCT_ID' => $arElemID),
			false,
			false,
			array('ID', 'PRODUCT_ID', 'RATIO')
		);
		while ($arRatio = $rsRatios->Fetch())
		{
			$arRatio['PRODUCT_ID'] = (int)$arRatio['PRODUCT_ID'];
			$arRatioList[$arRatio['PRODUCT_ID']] = $arRatio['RATIO'];
		}
		if (!empty($arRatioList))
		{
			foreach ($arElemID as &$intOneElemID)
			{
				$arRows['E'.$intOneElemID]->arRes['CATALOG_MEASURE_RATIO'] = (isset($arRatioList[$intOneElemID]) ? $arRatioList[$intOneElemID] : 1);
				if ($showCatalogWithOffers || $arRows['E'.$intOneElemID]->arRes['CATALOG_TYPE'] != CCatalogProduct::TYPE_SKU)
				{
Example #6
0
                        $strError = "Не все модификаторы товара, добавляемые в корзину, заполнены";
                        $successfulAdd = false;
                    }
                }

                if (isset($_REQUEST[$arParams["PRODUCT_QUANTITY_VARIABLE"]]))
                {
                    $QUANTITY = doubleval($_REQUEST[$arParams["PRODUCT_QUANTITY_VARIABLE"]]);
                }

                if (!$QUANTITY)
                {
                    $rsRatios = CCatalogMeasureRatio::getList(
                        array(),
                        array('PRODUCT_ID' => $productID),
                        false,
                        false,
                        array('PRODUCT_ID', 'RATIO')
                    );
                    if ($arRatio = $rsRatios->Fetch())
                    {
                        $intRatio = (int) $arRatio['RATIO'];
                        $dblRatio = doubleval($arRatio['RATIO']);
                        $QUANTITY = ($dblRatio > $intRatio ? $dblRatio : $intRatio);
                    }
                }

                if (!$QUANTITY)
                {
                    $QUANTITY = 1;
                }
Example #7
0
 $newRatio = true;
 $currentRatioID = 0;
 if (isset($_POST['CAT_MEASURE_RATIO_ID'])) {
     $currentRatioID = (int) $_POST['CAT_MEASURE_RATIO_ID'];
     if ($currentRatioID > 0) {
         $ratioIterator = CCatalogMeasureRatio::getList(array(), array('ID' => $currentRatioID, 'PRODUCT_ID' => $PRODUCT_ID), false, false, array('ID', 'PRODUCT_ID'));
         if ($currentRatio = $ratioIterator->Fetch()) {
             $newRatio = false;
         }
         unset($currentRatio, $ratioIterator);
     }
 }
 if ($newRatio) {
     CCatalogMeasureRatio::add($arMeasureRatio);
 } else {
     CCatalogMeasureRatio::update($currentRatioID, $arMeasureRatio);
 }
 unset($currentRatioID, $newRatio, $arMeasureRatio);
 $intCountBasePrice = count($arCatalogBasePrices);
 for ($i = 0; $i < $intCountBasePrice; $i++) {
     if (strlen($arCatalogBasePrices[$i]["PRICE"]) > 0) {
         $arCatalogFields = array("EXTRA_ID" => false, "PRODUCT_ID" => $PRODUCT_ID, "CATALOG_GROUP_ID" => $arCatalogBaseGroup["ID"], "PRICE" => DoubleVal($arCatalogBasePrices[$i]["PRICE"]), "CURRENCY" => $arCatalogBasePrices[$i]["CURRENCY"], "QUANTITY_FROM" => $arCatalogBasePrices[$i]["QUANTITY_FROM"] > 0 ? $arCatalogBasePrices[$i]["QUANTITY_FROM"] : false, "QUANTITY_TO" => $arCatalogBasePrices[$i]["QUANTITY_TO"] > 0 ? $arCatalogBasePrices[$i]["QUANTITY_TO"] : false);
         if ($arCatalogBasePrices[$i]["ID"] > 0) {
             $arCatalogPrice = CPrice::GetByID($arCatalogBasePrices[$i]["ID"]);
             if ($arCatalogPrice && $arCatalogPrice["PRODUCT_ID"] == $PRODUCT_ID) {
                 $arUpdatedIDs[] = $arCatalogBasePrices[$i]["ID"];
                 if (!CPrice::Update($arCatalogBasePrices[$i]["ID"], $arCatalogFields)) {
                     $strWarning .= str_replace("#ID#", $arCatalogBasePrices[$i]["ID"], GetMessage("C2IT_ERROR_PRPARAMS")) . "<br>";
                 }
             } else {
                 $ID_tmp = CPrice::Add($arCatalogFields);
Example #8
0
	public static function GetOffersArray($arFilter, $arElementID, $arOrder, $arSelectFields, $arSelectProperties, $limit, $arPrices, $vat_include, $arCurrencyParams = array(), $USER_ID = 0, $LID = SITE_ID)
	{
		$arResult = array();

		$boolCheckPermissions = false;
		$boolHideNotAvailable = false;
		$IBLOCK_ID = 0;
		if (!empty($arFilter) && is_array($arFilter))
		{
			if (isset($arFilter['IBLOCK_ID']))
				$IBLOCK_ID = $arFilter['IBLOCK_ID'];
			if (isset($arFilter['HIDE_NOT_AVAILABLE']))
				$boolHideNotAvailable = 'Y' === $arFilter['HIDE_NOT_AVAILABLE'];
			if (isset($arFilter['CHECK_PERMISSIONS']))
				$boolCheckPermissions = 'Y' === $arFilter['CHECK_PERMISSIONS'];
		}
		else
		{
			$IBLOCK_ID = $arFilter;
		}

		$arOffersIBlock = CIBlockPriceTools::GetOffersIBlock($IBLOCK_ID);
		if($arOffersIBlock)
		{
			$arDefaultMeasure = CCatalogMeasure::getDefaultMeasure(true, true);

			$limit = intval($limit);
			if (0 > $limit)
				$limit = 0;

			if(!isset($arOrder["ID"]))
				$arOrder["ID"] = "DESC";

			$intOfferIBlockID = $arOffersIBlock["OFFERS_IBLOCK_ID"];

			$arFilter = array(
				"IBLOCK_ID" => $intOfferIBlockID,
				"PROPERTY_".$arOffersIBlock["OFFERS_PROPERTY_ID"] => $arElementID,
				"ACTIVE" => "Y",
				"ACTIVE_DATE" => "Y",
			);
			if ($boolHideNotAvailable)
				$arFilter['CATALOG_AVAILABLE'] = 'Y';
			if ($boolCheckPermissions)
			{
				$arFilter['CHECK_PERMISSIONS'] = "Y";
				$arFilter['MIN_PERMISSION'] = "R";
			}

			$arSelect = array(
				"ID" => 1,
				"IBLOCK_ID" => 1,
				"PROPERTY_".$arOffersIBlock["OFFERS_PROPERTY_ID"] => 1,
				"CATALOG_QUANTITY" => 1
			);
			//if(!$arParams["USE_PRICE_COUNT"])
			{
				foreach($arPrices as $value)
				{
					if (!$value['CAN_VIEW'] && !$value['CAN_BUY'])
						continue;
					$arSelect[$value["SELECT"]] = 1;
				}
			}

			foreach($arSelectFields as $code)
				$arSelect[$code] = 1; //mark to select
			if (!isset($arSelect['PREVIEW_PICTURE']))
				$arSelect['PREVIEW_PICTURE'] = 1;
			if (!isset($arSelect['DETAIL_PICTURE']))
				$arSelect['DETAIL_PICTURE'] = 1;

			$arOfferIDs = array();
			$arMeasureMap = array();
			$intKey = 0;
			$arOffersPerElement = array();
			$arOffersLink = array();
			$rsOffers = CIBlockElement::GetList($arOrder, $arFilter, false, false, array_keys($arSelect));
			while($arOffer = $rsOffers->GetNext())
			{
				$arOffer['ID'] = intval($arOffer['ID']);
				$element_id = $arOffer["PROPERTY_".$arOffersIBlock["OFFERS_PROPERTY_ID"]."_VALUE"];
				//No more than limit offers per element
				if($limit > 0)
				{
					$arOffersPerElement[$element_id]++;
					if($arOffersPerElement[$element_id] > $limit)
						continue;
				}

				if($element_id > 0)
				{
					$arOffer["LINK_ELEMENT_ID"] = intval($element_id);
					$arOffer["PROPERTIES"] = array();
					$arOffer["DISPLAY_PROPERTIES"] = array();

					$arOffer['CHECK_QUANTITY'] = ('Y' == $arOffer['CATALOG_QUANTITY_TRACE'] && 'N' == $arOffer['CATALOG_CAN_BUY_ZERO']);
					$arOffer['CATALOG_TYPE'] = CCatalogProduct::TYPE_OFFER;
					$arOffer['CATALOG_MEASURE_NAME'] = $arDefaultMeasure['SYMBOL_RUS'];
					$arOffer['~CATALOG_MEASURE_NAME'] = $arDefaultMeasure['SYMBOL_RUS'];
					$arOffer["CATALOG_MEASURE_RATIO"] = 1;
					if (!isset($arOffer['CATALOG_MEASURE']))
						$arOffer['CATALOG_MEASURE'] = 0;
					$arOffer['CATALOG_MEASURE'] = intval($arOffer['CATALOG_MEASURE']);
					if (0 > $arOffer['CATALOG_MEASURE'])
						$arOffer['CATALOG_MEASURE'] = 0;
					if (0 < $arOffer['CATALOG_MEASURE'])
					{
						if (!isset($arMeasureMap[$arOffer['CATALOG_MEASURE']]))
							$arMeasureMap[$arOffer['CATALOG_MEASURE']] = array();
						$arMeasureMap[$arOffer['CATALOG_MEASURE']][] = $intKey;
					}

					$arOfferIDs[] = $arOffer['ID'];
					$arResult[$intKey] = $arOffer;
					$arOffersLink[$arOffer['ID']] = &$arResult[$intKey];
					$intKey++;
				}
			}
			if (!empty($arOfferIDs))
			{
				$rsRatios = CCatalogMeasureRatio::getList(
					array(),
					array('PRODUCT_ID' => $arOfferIDs),
					false,
					false,
					array('PRODUCT_ID', 'RATIO')
				);
				while ($arRatio = $rsRatios->Fetch())
				{
					$arRatio['PRODUCT_ID'] = intval($arRatio['PRODUCT_ID']);
					if (isset($arOffersLink[$arRatio['PRODUCT_ID']]))
					{
						$intRatio = intval($arRatio['RATIO']);
						$dblRatio = doubleval($arRatio['RATIO']);
						$mxRatio = ($dblRatio > $intRatio ? $dblRatio : $intRatio);
						if (CATALOG_VALUE_EPSILON > abs($mxRatio))
							$mxRatio = 1;
						elseif (0 > $mxRatio)
							$mxRatio = 1;
						$arOffersLink[$arRatio['PRODUCT_ID']]['CATALOG_MEASURE_RATIO'] = $mxRatio;
					}
				}

				if (!empty($arSelectProperties))
				{
					CIBlockElement::GetPropertyValuesArray($arOffersLink, $intOfferIBlockID, $arFilter);
					foreach ($arResult as &$arOffer)
					{
						CCatalogDiscount::SetProductPropertiesCache($arOffer['ID'], $arOffer["PROPERTIES"]);
						foreach ($arSelectProperties as $pid)
						{
							if (!isset($arOffer["PROPERTIES"][$pid]))
								continue;
							$prop = &$arOffer["PROPERTIES"][$pid];
							$boolArr = is_array($prop["VALUE"]);
							if(
								($boolArr && !empty($prop["VALUE"])) ||
								(!$boolArr && strlen($prop["VALUE"])>0))
							{
								$arOffer["DISPLAY_PROPERTIES"][$pid] = CIBlockFormatProperties::GetDisplayValue($arOffer, $prop, "catalog_out");
							}
						}
						if (isset($arOffer))
							unset($arOffer);
					}
				}

				CCatalogDiscount::SetProductSectionsCache($arOfferIDs);
				CCatalogDiscount::SetDiscountProductCache($arOfferIDs, array('IBLOCK_ID' => $intOfferIBlockID, 'GET_BY_ID' => 'Y'));
				foreach ($arResult as &$arOffer)
				{
					$arOffer['CATALOG_QUANTITY'] = (
						0 < $arOffer['CATALOG_QUANTITY'] && is_float($arOffer['CATALOG_MEASURE_RATIO'])
						? floatval($arOffer['CATALOG_QUANTITY'])
						: intval($arOffer['CATALOG_QUANTITY'])
					);
					$arOffer['MIN_PRICE'] = false;
					$arOffer["PRICES"] = CIBlockPriceTools::GetItemPrices($arOffersIBlock["OFFERS_IBLOCK_ID"], $arPrices, $arOffer, $vat_include, $arCurrencyParams, $USER_ID, $LID);
					if (!empty($arOffer["PRICES"]))
					{
						foreach ($arOffer['PRICES'] as &$arOnePrice)
						{
							if ('Y' == $arOnePrice['MIN_PRICE'])
							{
								$arOffer['MIN_PRICE'] = $arOnePrice;
								break;
							}
						}
						unset($arOnePrice);
					}
					$arOffer["CAN_BUY"] = CIBlockPriceTools::CanBuy($arOffersIBlock["OFFERS_IBLOCK_ID"], $arPrices, $arOffer);
				}
				if (isset($arOffer))
					unset($arOffer);
			}
			if (!empty($arMeasureMap))
			{
				$rsMeasures = CCatalogMeasure::getList(
					array(),
					array('@ID' => array_keys($arMeasureMap)),
					false,
					false,
					array('ID', 'SYMBOL_RUS')
				);
				while ($arMeasure = $rsMeasures->GetNext())
				{
					$arMeasure['ID'] = intval($arMeasure['ID']);
					if (isset($arMeasureMap[$arMeasure['ID']]) && !empty($arMeasureMap[$arMeasure['ID']]))
					{
						foreach ($arMeasureMap[$arMeasure['ID']] as &$intOneKey)
						{
							$arResult[$intOneKey]['CATALOG_MEASURE_NAME'] = $arMeasure['SYMBOL_RUS'];
							$arResult[$intOneKey]['~CATALOG_MEASURE_NAME'] = $arMeasure['~SYMBOL_RUS'];
						}
						unset($intOneKey);
					}
				}
			}
		}

		return $arResult;
	}
Example #9
0
function getRatio($arBasketItems)
{
    if (Loader::includeModule('catalog')) {
        $map = array();
        $arElementId = array();
        foreach ($arBasketItems as $key => $arItem) {
            $arElementId[$arItem["PRODUCT_ID"]] = $arItem["PRODUCT_ID"];
            if (!isset($map[$arItem["PRODUCT_ID"]])) {
                $map[$arItem["PRODUCT_ID"]] = array();
            }
            $map[$arItem["PRODUCT_ID"]][] = $key;
        }
        if (!empty($arElementId)) {
            $dbRatio = CCatalogMeasureRatio::getList(array(), array('PRODUCT_ID' => $arElementId), false, false, array('PRODUCT_ID', 'RATIO'));
            while ($arRatio = $dbRatio->Fetch()) {
                if (empty($map[$arRatio["PRODUCT_ID"]])) {
                    continue;
                }
                foreach ($map[$arRatio["PRODUCT_ID"]] as $key) {
                    $arBasketItems[$key]["MEASURE_RATIO"] = $arRatio["RATIO"];
                }
            }
        }
        unset($arElementId, $map);
    }
    return $arBasketItems;
}
Example #10
0
 /**
  * @param $productId
  * @param $quantity
  * @param $userId
  * @param $LID
  * @param $userColumns
  * @param string $tmpId we can suggest that this mean the set_item
  * @return array
  * @throws Main\LoaderException
  */
 protected function getProductDataToFillBasket($productId, $quantity, $userId, $LID, $userColumns, $tmpId = "")
 {
     $isSetItem = $tmpId != "";
     if (self::$catalogIncluded === null) {
         self::$catalogIncluded = Main\Loader::includeModule('catalog');
     }
     if (!self::$catalogIncluded) {
         return array();
     }
     $arParams = array();
     static $proxyIblockElement = array();
     static $proxyCatalogMeasure = array();
     static $proxyParent = array();
     static $proxyIblockProperty = array();
     static $proxyProductData = array();
     static $proxyCatalogProduct = array();
     static $proxyCatalogMeasureRatio = array();
     $productId = (int) $productId;
     if ($productId <= 0) {
         return $arParams;
     }
     if (!empty($proxyIblockElement[$productId])) {
         $iblockId = $proxyIblockElement[$productId];
     } else {
         $iblockId = (int) \CIBlockElement::getIBlockByID($productId);
         if ($iblockId > 0) {
             $proxyIblockElement[$productId] = $iblockId;
         }
     }
     if ($iblockId <= 0) {
         return $arParams;
     }
     $arSku2Parent = array();
     $arElementId = array();
     $arElementId[] = $productId;
     $proxyParentKey = $productId . "|" . $iblockId;
     if (!empty($proxyParent[$proxyParentKey]) && is_array($proxyParent[$proxyParentKey])) {
         $arParent = $proxyParent[$proxyParentKey];
     } else {
         $arParent = \CCatalogSku::getProductInfo($productId, $iblockId);
         $proxyParent[$proxyParentKey] = $arParent;
     }
     if ($arParent) {
         $arElementId[] = $arParent["ID"];
         $arSku2Parent[$productId] = $arParent["ID"];
     }
     $arPropertyInfo = array();
     $userColumns = (string) $userColumns;
     $arUserColumns = $userColumns != '' ? explode(",", $userColumns) : array();
     foreach ($arUserColumns as $key => $column) {
         if (strncmp($column, 'PROPERTY_', 9) != 0) {
             unset($arUserColumns[$key]);
         } else {
             $propertyCode = substr($column, 9);
             if ($propertyCode == '') {
                 unset($arUserColumns[$key]);
                 continue;
             }
             if (!empty($proxyIblockProperty[$propertyCode]) && is_array($proxyIblockProperty[$propertyCode])) {
                 $arPropertyInfo[$column] = $proxyIblockProperty[$propertyCode];
             } else {
                 $dbres = \CIBlockProperty::GetList(array(), array("CODE" => $propertyCode));
                 if ($arPropData = $dbres->GetNext()) {
                     $arPropertyInfo[$column] = $arPropData;
                     $proxyIblockProperty[$propertyCode] = $arPropData;
                 }
             }
         }
     }
     $arSelect = array_merge(array("ID", "NAME", "IBLOCK_ID", "IBLOCK_SECTION_ID", "DETAIL_PICTURE", "PREVIEW_PICTURE", "XML_ID", "IBLOCK_XML_ID"), $arUserColumns);
     $proxyProductDataKey = md5(join('|', $arElementId) . "_" . join('|', $arSelect));
     if (!empty($proxyProductData[$proxyProductDataKey]) && is_array($proxyProductData[$proxyProductDataKey])) {
         $arProductData = $proxyProductData[$proxyProductDataKey];
     } else {
         $arProductData = getProductProps($arElementId, $arSelect);
         $proxyProductData[$proxyProductDataKey] = $arProductData;
     }
     $defaultMeasure = \CCatalogMeasure::getDefaultMeasure(true, true);
     if (!empty($arProductData)) {
         $arElementInfo = array();
         foreach ($arProductData as $elemId => &$arElement) {
             foreach ($arElement as $key => $value) {
                 if (strncmp($key, 'PROPERTY_', 9) == 0 && substr($key, -6) == "_VALUE") {
                     $columnCode = str_replace("_VALUE", "", $key);
                     $arElement[$key] = getIblockPropInfo($value, $arPropertyInfo[$columnCode], array("WIDTH" => 90, "HEIGHT" => 90));
                 }
             }
         }
         unset($arElement);
         if (isset($arProductData[$productId])) {
             $arElementInfo = $arProductData[$productId];
         }
         if (isset($arSku2Parent[$productId])) {
             $arParent = $arProductData[$arSku2Parent[$productId]];
         }
         if (!empty($arSku2Parent)) {
             foreach ($arUserColumns as $field) {
                 $fieldVal = $field . "_VALUE";
                 $parentId = $arSku2Parent[$productId];
                 if ((!isset($arElementInfo[$fieldVal]) || isset($arElementInfo[$fieldVal]) && strlen($arElementInfo[$fieldVal]) == 0) && (isset($arProductData[$parentId][$fieldVal]) && !empty($arProductData[$parentId][$fieldVal]))) {
                     $arElementInfo[$fieldVal] = $arProductData[$parentId][$fieldVal];
                 }
             }
             if (strpos($arElementInfo["~XML_ID"], '#') === false) {
                 $arElementInfo["~XML_ID"] = $arParent['~XML_ID'] . '#' . $arElementInfo["~XML_ID"];
             }
         }
         $arElementInfo["MODULE"] = "catalog";
         $arElementInfo["PRODUCT_PROVIDER_CLASS"] = "CCatalogProductProvider";
         $arElementInfo["PRODUCT_ID"] = $arElementInfo["ID"];
         if ($arElementInfo["IBLOCK_ID"] > 0) {
             $arElementInfo["EDIT_PAGE_URL"] = \CIBlock::GetAdminElementEditLink($arElementInfo["IBLOCK_ID"], $arElementInfo["PRODUCT_ID"], array("find_section_section" => $arElementInfo["IBLOCK_SECTION_ID"], 'WF' => 'Y'));
         }
         static $buyersGroups = array();
         if (empty($buyersGroups[$userId])) {
             $buyersGroups[$userId] = \CUser::getUserGroup($userId);
         }
         $arBuyerGroups = $buyersGroups[$userId];
         // price
         $currentVatMode = \CCatalogProduct::getPriceVatIncludeMode();
         $currentUseDiscount = \CCatalogProduct::getUseDiscount();
         \CCatalogProduct::setUseDiscount(!$isSetItem);
         \CCatalogProduct::setPriceVatIncludeMode(true);
         \CCatalogProduct::setUsedCurrency(Sale\Internals\SiteCurrencyTable::getSiteCurrency($LID));
         $arPrice = \CCatalogProduct::getOptimalPrice($arElementInfo["ID"], 1, $arBuyerGroups, "N", array(), $LID);
         \CCatalogProduct::clearUsedCurrency();
         \CCatalogProduct::setPriceVatIncludeMode($currentVatMode);
         \CCatalogProduct::setUseDiscount($currentUseDiscount);
         unset($currentUseDiscount, $currentVatMode);
         $currentPrice = $arPrice['RESULT_PRICE']['DISCOUNT_PRICE'];
         $arElementInfo['PRICE'] = $currentPrice;
         $arElementInfo['CURRENCY'] = $arPrice['RESULT_PRICE']['CURRENCY'];
         $currentTotalPrice = $arPrice['RESULT_PRICE']['BASE_PRICE'];
         $arProduct = array();
         if (!empty($proxyCatalogProduct[$productId]) && is_array($proxyCatalogProduct[$productId])) {
             $arProduct = $proxyCatalogProduct[$productId];
         } else {
             $rsProducts = \CCatalogProduct::getList(array(), array('ID' => $productId), false, false, array('ID', 'QUANTITY', 'WEIGHT', 'MEASURE', 'TYPE', 'BARCODE_MULTI'));
             if ($arProduct = $rsProducts->Fetch()) {
                 $proxyCatalogProduct[$productId] = $arProduct;
             }
         }
         if (empty($arProduct) || !is_array($arProduct)) {
             return array();
         }
         $balance = floatval($arProduct["QUANTITY"]);
         // sku props
         $arSkuData = array();
         $arProps[] = array("NAME" => "Catalog XML_ID", "CODE" => "CATALOG.XML_ID", "VALUE" => $arElementInfo['~IBLOCK_XML_ID']);
         static $proxySkuProperty = array();
         if (!empty($proxySkuProperty[$productId]) && is_array($proxySkuProperty[$productId])) {
             $arSkuProperty = $proxySkuProperty[$productId];
         } else {
             $arSkuProperty = \CSaleProduct::GetProductSkuProps($productId, '', true);
             $proxySkuProperty[$productId] = $arSkuProperty;
         }
         if (!empty($arSkuProperty)) {
             foreach ($arSkuProperty as &$val) {
                 $arSkuData[] = array('NAME' => $val['NAME'], 'VALUE' => $val['VALUE'], 'CODE' => $val['CODE']);
             }
             unset($val);
         }
         $arSkuData[] = array("NAME" => "Product XML_ID", "CODE" => "PRODUCT.XML_ID", "VALUE" => $arElementInfo["~XML_ID"]);
         $arElementInfo["WEIGHT"] = $arProduct["WEIGHT"];
         // measure
         $arElementInfo["MEASURE_TEXT"] = "";
         $arElementInfo["MEASURE_CODE"] = 0;
         if ((int) $arProduct["MEASURE"] > 0) {
             if (!empty($proxyCatalogMeasure[$arProduct["MEASURE"]]) && is_array($proxyCatalogMeasure[$arProduct["MEASURE"]])) {
                 $arMeasure = $proxyCatalogMeasure[$arProduct["MEASURE"]];
             } else {
                 $dbMeasure = \CCatalogMeasure::GetList(array(), array("ID" => intval($arProduct["MEASURE"])), false, false, array("ID", "SYMBOL_RUS", "SYMBOL_INTL"));
                 if ($arMeasure = $dbMeasure->Fetch()) {
                     $proxyCatalogMeasure[$arProduct["MEASURE"]] = $arMeasure;
                 }
             }
             if (!empty($arMeasure) && is_array($arMeasure)) {
                 $arElementInfo["MEASURE_TEXT"] = $arMeasure["SYMBOL_RUS"] != '' ? $arMeasure["SYMBOL_RUS"] : $arMeasure["SYMBOL_INTL"];
                 $arElementInfo["MEASURE_CODE"] = $arMeasure["CODE"];
             }
         }
         if ($arElementInfo["MEASURE_TEXT"] == '') {
             $arElementInfo["MEASURE_TEXT"] = $defaultMeasure["SYMBOL_RUS"] != '' ? $defaultMeasure["SYMBOL_RUS"] : $defaultMeasure["SYMBOL_INTL"];
         }
         // ratio
         $arElementInfo["RATIO"] = 1;
         if (!empty($proxyCatalogMeasureRatio[$productId]) && is_array($proxyCatalogMeasureRatio[$productId])) {
             $arRatio = $proxyCatalogMeasureRatio[$productId];
         } else {
             $dbratio = \CCatalogMeasureRatio::GetList(array(), array("PRODUCT_ID" => $productId));
             if ($arRatio = $dbratio->Fetch()) {
                 $proxyCatalogMeasureRatio[$productId] = $arRatio;
             }
         }
         if (!empty($arRatio) && is_array($arRatio)) {
             $arElementInfo["RATIO"] = $arRatio["RATIO"];
         }
         // image
         $imgCode = '';
         $imgUrl = '';
         if ($arElementInfo["PREVIEW_PICTURE"] > 0) {
             $imgCode = $arElementInfo["PREVIEW_PICTURE"];
         } elseif ($arElementInfo["DETAIL_PICTURE"] > 0) {
             $imgCode = $arElementInfo["DETAIL_PICTURE"];
         }
         if ($imgCode == "" && count($arParent) > 0) {
             if ($arParent["PREVIEW_PICTURE"] > 0) {
                 $imgCode = $arParent["PREVIEW_PICTURE"];
             } elseif ($arParent["DETAIL_PICTURE"] > 0) {
                 $imgCode = $arParent["DETAIL_PICTURE"];
             }
         }
         if ($imgCode > 0) {
             $arFile = \CFile::GetFileArray($imgCode);
             $arImgProduct = \CFile::ResizeImageGet($arFile, array('width' => 80, 'height' => 80), BX_RESIZE_IMAGE_PROPORTIONAL, false, false);
             if (is_array($arImgProduct)) {
                 $imgUrl = $arImgProduct["src"];
             }
         }
         $arSetInfo = array();
         $arStores = array();
         /** @var $productProvider IBXSaleProductProvider */
         if ($productProvider = \CSaleBasket::GetProductProvider(array("MODULE" => $arElementInfo["MODULE"], "PRODUCT_PROVIDER_CLASS" => $arElementInfo["PRODUCT_PROVIDER_CLASS"]))) {
             // get set items if it is set
             if ($arProduct["TYPE"] == \CCatalogProduct::TYPE_SET) {
                 if (method_exists($productProvider, "GetSetItems")) {
                     $arSets = $productProvider::GetSetItems($productId, \CSaleBasket::TYPE_SET);
                     if ($tmpId == "") {
                         $tmpId = randString(7);
                     }
                     if (!empty($arSets)) {
                         foreach ($arSets as $arSetData) {
                             foreach ($arSetData["ITEMS"] as $setItem) {
                                 $arSetItemParams = self::getProductDataToFillBasket($setItem["PRODUCT_ID"], $setItem["QUANTITY"], $userId, $LID, $userColumns, $tmpId);
                                 // recursive call
                                 // re-define some fields with set data values
                                 $arSetItemParams["PARENT_OFFER_ID"] = $productId;
                                 $arSetItemParams["OFFER_ID"] = $setItem["PRODUCT_ID"];
                                 $arSetItemParams["NAME"] = $setItem["NAME"];
                                 $arSetItemParams["MODULE"] = $setItem["MODULE"];
                                 $arSetItemParams["PRODUCT_PROVIDER_CLASS"] = $setItem["PRODUCT_PROVIDER_CLASS"];
                                 $arSetItemParams["QUANTITY"] = $setItem["QUANTITY"] * $quantity;
                                 $arSetItemParams["BARCODE_MULTI"] = $setItem["BARCODE_MULTI"];
                                 $arSetItemParams["PRODUCT_TYPE"] = $setItem["TYPE"];
                                 $arSetItemParams["WEIGHT"] = $setItem["WEIGHT"];
                                 $arSetItemParams["VAT_RATE"] = $setItem["VAT_RATE"];
                                 $arSetItemParams["SET_ITEMS"] = "";
                                 $arSetItemParams["OLD_PARENT_ID"] = $productId . "_tmp" . $tmpId;
                                 $arSetItemParams["IS_SET_ITEM"] = "Y";
                                 $arSetItemParams["IS_SET_PARENT"] = "N";
                                 $arSetItemParams["PROVIDER_DATA"] = serialize($setItem);
                                 $arSetInfo[] = $arSetItemParams;
                             }
                         }
                     }
                 }
             }
             // get stores
             $storeCount = $productProvider::GetStoresCount(array("SITE_ID" => $LID));
             // with exact SITE_ID or SITE_ID = NULL
             if ($storeCount > 0) {
                 if ($arProductStore = $productProvider::GetProductStores(array("PRODUCT_ID" => $productId, "SITE_ID" => $LID))) {
                     $arStores = $arProductStore;
                 }
             }
         }
         $currentTotalPrice = (double) $currentTotalPrice;
         // params array
         $arParams["OFFER_ID"] = $productId;
         $arParams["NAME"] = $arElementInfo["~NAME"];
         $arParams["EDIT_PAGE_URL"] = $arElementInfo["EDIT_PAGE_URL"];
         $arParams["DETAIL_PAGE_URL"] = htmlspecialcharsex($arElementInfo["~DETAIL_PAGE_URL"]);
         $arParams["PICTURE_URL"] = $imgUrl;
         $arParams["PRICE"] = floatval($arElementInfo["PRICE"]);
         $arParams["PRICE_BASE"] = $currentTotalPrice;
         $arParams["DIMENSIONS"] = serialize(array("WIDTH" => $arElementInfo["WIDTH"], "HEIGHT" => $arElementInfo["HEIGHT"], "LENGTH" => $arElementInfo["LENGTH"]));
         $arParams["QUANTITY"] = $quantity;
         $arParams["MODULE"] = $arElementInfo["MODULE"];
         $arParams["CURRENCY"] = $arElementInfo["CURRENCY"];
         $arParams["WEIGHT"] = $arElementInfo["WEIGHT"];
         $arParams["VAT_RATE"] = $arPrice["PRICE"]["VAT_RATE"];
         $arParams["PRICE_TYPE"] = $arPrice["PRICE"]["CATALOG_GROUP_NAME"];
         $arParams["AVAILABLE"] = $balance;
         $arParams["NOTES"] = !empty($arPrice["PRICE"]["CATALOG_GROUP_NAME"]) ? $arPrice["PRICE"]["CATALOG_GROUP_NAME"] : "";
         $arParams["CATALOG_XML_ID"] = $arElementInfo["~IBLOCK_XML_ID"];
         $arParams["PRODUCT_XML_ID"] = $arElementInfo["~XML_ID"];
         $arParams["PRODUCT_PROVIDER_CLASS"] = $arElementInfo["PRODUCT_PROVIDER_CLASS"];
         $arParams["PROPS"] = $arSkuData;
         $arParams["MEASURE_TEXT"] = $arElementInfo["MEASURE_TEXT"];
         $arParams["MEASURE_CODE"] = $arElementInfo["MEASURE_CODE"];
         $arParams["MEASURE_RATIO"] = $arElementInfo["RATIO"];
         $arParams["BARCODE_MULTI"] = $arProduct["BARCODE_MULTI"];
         $arParams["PRODUCT_TYPE"] = empty($arSetInfo) ? "" : \CSaleBasket::TYPE_SET;
         $arParams["OLD_PARENT_ID"] = empty($arSetInfo) ? "" : $productId . "_tmp" . $tmpId;
         $arParams["SET_ITEMS"] = $arSetInfo;
         $arParams["IS_SET_ITEM"] = "N";
         $arParams["IS_SET_PARENT"] = empty($arSetInfo) ? "N" : "Y";
         $arParams["STORES"] = empty($arSetInfo) ? $arStores : array();
         $arParams["PRODUCT_PROPS_VALUES"] = $arElementInfo;
         // along with other information also contains values of properties with correct keys (after getProductProps)
     }
     return $arParams;
 }
Example #11
0
 /**
  * Sets measure for all viewed products.
  * @return void
  */
 protected function setItemsMeasure()
 {
     if (!count($this->productIdsMap)) {
         return;
     }
     $measures = $this->data['MEASURE'];
     foreach ($this->items as &$item) {
         if (array_key_exists($item['CATALOG_MEASURE'], $measures)) {
             $measure = $measures[$item['CATALOG_MEASURE']];
             $item['~CATALOG_MEASURE_NAME'] = LANGUAGE_ID == "ru" ? $measure["SYMBOL_RUS"] : $measure["SYMBOL_INTL"];
             $item['CATALOG_MEASURE_NAME'] = String::htmlEncode($item['~CATALOG_MEASURE_NAME']);
         }
     }
     // Ratios
     $ratioIterator = CCatalogMeasureRatio::getList(array(), array('@PRODUCT_ID' => array_values($this->productIdsMap)), false, false, array('PRODUCT_ID', 'RATIO'));
     while ($ratio = $ratioIterator->fetch()) {
         if (isset($this->items[$ratio['PRODUCT_ID']])) {
             $intRatio = intval($ratio['RATIO']);
             $dblRatio = doubleval($ratio['RATIO']);
             $mxRatio = $dblRatio > $intRatio ? $dblRatio : $intRatio;
             if (CATALOG_VALUE_EPSILON > abs($mxRatio)) {
                 $mxRatio = 1;
             } elseif (0 > $mxRatio) {
                 $mxRatio = 1;
             }
             $this->items[$ratio['PRODUCT_ID']]['CATALOG_MEASURE_RATIO'] = $mxRatio;
         }
     }
 }
Example #12
0
 public static function GetOffersArray($arFilter, $arElementID, $arOrder, $arSelectFields, $arSelectProperties, $limit, $arPrices, $vat_include, $arCurrencyParams = array(), $USER_ID = 0, $LID = SITE_ID)
 {
     global $USER;
     $arResult = array();
     $boolCheckPermissions = false;
     $boolHideNotAvailable = false;
     $showPriceCount = false;
     $IBLOCK_ID = 0;
     if (!empty($arFilter) && is_array($arFilter)) {
         if (isset($arFilter['IBLOCK_ID'])) {
             $IBLOCK_ID = $arFilter['IBLOCK_ID'];
         }
         if (isset($arFilter['HIDE_NOT_AVAILABLE'])) {
             $boolHideNotAvailable = $arFilter['HIDE_NOT_AVAILABLE'] === 'Y';
         }
         if (isset($arFilter['CHECK_PERMISSIONS'])) {
             $boolCheckPermissions = $arFilter['CHECK_PERMISSIONS'] === 'Y';
         }
         if (isset($arFilter['SHOW_PRICE_COUNT'])) {
             $showPriceCount = (int) $arFilter['SHOW_PRICE_COUNT'];
             if ($showPriceCount <= 0) {
                 $showPriceCount = false;
             }
         }
     } else {
         $IBLOCK_ID = $arFilter;
     }
     if (self::$needDiscountCache === null) {
         $pricesAllow = CIBlockPriceTools::GetAllowCatalogPrices($arPrices);
         if (empty($pricesAllow)) {
             self::$needDiscountCache = false;
         } else {
             $USER_ID = (int) $USER_ID;
             $userGroups = $USER_ID > 0 ? CUser::GetUserGroup($USER_ID) : $USER->GetUserGroupArray();
             self::$needDiscountCache = CIBlockPriceTools::SetCatalogDiscountCache($pricesAllow, $userGroups);
             unset($userGroups);
         }
         unset($pricesAllow);
     }
     $arOffersIBlock = CIBlockPriceTools::GetOffersIBlock($IBLOCK_ID);
     if ($arOffersIBlock) {
         $arDefaultMeasure = CCatalogMeasure::getDefaultMeasure(true, true);
         $limit = (int) $limit;
         if (0 > $limit) {
             $limit = 0;
         }
         if (!isset($arOrder["ID"])) {
             $arOrder["ID"] = "DESC";
         }
         $intOfferIBlockID = $arOffersIBlock["OFFERS_IBLOCK_ID"];
         $productProperty = 'PROPERTY_' . $arOffersIBlock['OFFERS_PROPERTY_ID'];
         $productPropertyValue = $productProperty . '_VALUE';
         $arFilter = array("IBLOCK_ID" => $intOfferIBlockID, $productProperty => $arElementID, "ACTIVE" => "Y", "ACTIVE_DATE" => "Y");
         if ($boolHideNotAvailable) {
             $arFilter['CATALOG_AVAILABLE'] = 'Y';
         }
         if ($boolCheckPermissions) {
             $arFilter['CHECK_PERMISSIONS'] = "Y";
             $arFilter['MIN_PERMISSION'] = "R";
         }
         $arSelect = array("ID" => 1, "IBLOCK_ID" => 1, $productProperty => 1, "CATALOG_QUANTITY" => 1);
         foreach ($arPrices as $value) {
             if (!$value['CAN_VIEW'] && !$value['CAN_BUY']) {
                 continue;
             }
             $arSelect[$value["SELECT"]] = 1;
             if ($showPriceCount !== false) {
                 $arFilter['CATALOG_SHOP_QUANTITY_' . $value['ID']] = $showPriceCount;
             }
         }
         foreach ($arSelectFields as $code) {
             $arSelect[$code] = 1;
         }
         //mark to select
         if (!isset($arSelect['PREVIEW_PICTURE'])) {
             $arSelect['PREVIEW_PICTURE'] = 1;
         }
         if (!isset($arSelect['DETAIL_PICTURE'])) {
             $arSelect['DETAIL_PICTURE'] = 1;
         }
         $arOfferIDs = array();
         $arMeasureMap = array();
         $intKey = 0;
         $arOffersPerElement = array();
         $arOffersLink = array();
         $extPrices = array();
         $rsOffers = CIBlockElement::GetList($arOrder, $arFilter, false, false, array_keys($arSelect));
         while ($arOffer = $rsOffers->GetNext()) {
             $arOffer['ID'] = (int) $arOffer['ID'];
             $element_id = (int) $arOffer[$productPropertyValue];
             //No more than limit offers per element
             if ($limit > 0) {
                 $arOffersPerElement[$element_id]++;
                 if ($arOffersPerElement[$element_id] > $limit) {
                     continue;
                 }
             }
             if ($element_id > 0) {
                 $arOffer["LINK_ELEMENT_ID"] = $element_id;
                 $arOffer["PROPERTIES"] = array();
                 $arOffer["DISPLAY_PROPERTIES"] = array();
                 $arOffer['CHECK_QUANTITY'] = 'Y' == $arOffer['CATALOG_QUANTITY_TRACE'] && 'N' == $arOffer['CATALOG_CAN_BUY_ZERO'];
                 $arOffer['CATALOG_TYPE'] = CCatalogProduct::TYPE_OFFER;
                 $arOffer['CATALOG_MEASURE_NAME'] = $arDefaultMeasure['SYMBOL_RUS'];
                 $arOffer['~CATALOG_MEASURE_NAME'] = $arDefaultMeasure['SYMBOL_RUS'];
                 $arOffer["CATALOG_MEASURE_RATIO"] = 1;
                 if (!isset($arOffer['CATALOG_MEASURE'])) {
                     $arOffer['CATALOG_MEASURE'] = 0;
                 }
                 $arOffer['CATALOG_MEASURE'] = (int) $arOffer['CATALOG_MEASURE'];
                 if (0 > $arOffer['CATALOG_MEASURE']) {
                     $arOffer['CATALOG_MEASURE'] = 0;
                 }
                 if (0 < $arOffer['CATALOG_MEASURE']) {
                     if (!isset($arMeasureMap[$arOffer['CATALOG_MEASURE']])) {
                         $arMeasureMap[$arOffer['CATALOG_MEASURE']] = array();
                     }
                     $arMeasureMap[$arOffer['CATALOG_MEASURE']][] = $intKey;
                 }
                 $arOfferIDs[] = $arOffer['ID'];
                 $arResult[$intKey] = $arOffer;
                 if (!isset($arOffersLink[$arOffer['ID']])) {
                     $arOffersLink[$arOffer['ID']] =& $arResult[$intKey];
                 } else {
                     if (!isset($extPrices[$arOffer['ID']])) {
                         $extPrices[$arOffer['ID']] = array();
                     }
                     $extPrices[$arOffer['ID']][] =& $arResult[$intKey];
                 }
                 $intKey++;
             }
         }
         if (!empty($arOfferIDs)) {
             $rsRatios = CCatalogMeasureRatio::getList(array(), array('@PRODUCT_ID' => $arOfferIDs), false, false, array('PRODUCT_ID', 'RATIO'));
             while ($arRatio = $rsRatios->Fetch()) {
                 $arRatio['PRODUCT_ID'] = (int) $arRatio['PRODUCT_ID'];
                 if (isset($arOffersLink[$arRatio['PRODUCT_ID']])) {
                     $intRatio = (int) $arRatio['RATIO'];
                     $dblRatio = (double) $arRatio['RATIO'];
                     $mxRatio = $dblRatio > $intRatio ? $dblRatio : $intRatio;
                     if (CATALOG_VALUE_EPSILON > abs($mxRatio)) {
                         $mxRatio = 1;
                     } elseif (0 > $mxRatio) {
                         $mxRatio = 1;
                     }
                     $arOffersLink[$arRatio['PRODUCT_ID']]['CATALOG_MEASURE_RATIO'] = $mxRatio;
                 }
             }
             if (!empty($arSelectProperties)) {
                 CIBlockElement::GetPropertyValuesArray($arOffersLink, $intOfferIBlockID, $arFilter);
                 foreach ($arResult as &$arOffer) {
                     if (self::$needDiscountCache) {
                         CCatalogDiscount::SetProductPropertiesCache($arOffer['ID'], $arOffer["PROPERTIES"]);
                     }
                     foreach ($arSelectProperties as $pid) {
                         if (!isset($arOffer["PROPERTIES"][$pid])) {
                             continue;
                         }
                         $prop =& $arOffer["PROPERTIES"][$pid];
                         $boolArr = is_array($prop["VALUE"]);
                         if ($boolArr && !empty($prop["VALUE"]) || !$boolArr && strlen($prop["VALUE"]) > 0) {
                             $arOffer["DISPLAY_PROPERTIES"][$pid] = CIBlockFormatProperties::GetDisplayValue($arOffer, $prop, "catalog_out");
                         }
                         unset($prop);
                     }
                 }
                 unset($arOffer);
             }
             if (!empty($extPrices)) {
                 foreach ($extPrices as $origID => $prices) {
                     foreach ($prices as $oneRow) {
                         $oneRow['PROPERTIES'] = $arOffersLink[$origID]['PROPERTIES'];
                         $oneRow['DISPLAY_PROPERTIES'] = $arOffersLink[$origID]['DISPLAY_PROPERTIES'];
                         $oneRow['CATALOG_MEASURE_RATIO'] = $arOffersLink[$origID]['CATALOG_MEASURE_RATIO'];
                     }
                 }
             }
             if (self::$needDiscountCache) {
                 CCatalogDiscount::SetProductSectionsCache($arOfferIDs);
                 CCatalogDiscount::SetDiscountProductCache($arOfferIDs, array('IBLOCK_ID' => $intOfferIBlockID, 'GET_BY_ID' => 'Y'));
             }
             foreach ($arResult as &$arOffer) {
                 $arOffer['CATALOG_QUANTITY'] = 0 < $arOffer['CATALOG_QUANTITY'] && is_float($arOffer['CATALOG_MEASURE_RATIO']) ? (double) $arOffer['CATALOG_QUANTITY'] : (int) $arOffer['CATALOG_QUANTITY'];
                 $arOffer['MIN_PRICE'] = false;
                 $arOffer["PRICES"] = CIBlockPriceTools::GetItemPrices($arOffersIBlock["OFFERS_IBLOCK_ID"], $arPrices, $arOffer, $vat_include, $arCurrencyParams, $USER_ID, $LID);
                 if (!empty($arOffer["PRICES"])) {
                     foreach ($arOffer['PRICES'] as &$arOnePrice) {
                         if ($arOnePrice['MIN_PRICE'] == 'Y') {
                             $arOffer['MIN_PRICE'] = $arOnePrice;
                             break;
                         }
                     }
                     unset($arOnePrice);
                 }
                 $arOffer["CAN_BUY"] = CIBlockPriceTools::CanBuy($arOffersIBlock["OFFERS_IBLOCK_ID"], $arPrices, $arOffer);
             }
             if (isset($arOffer)) {
                 unset($arOffer);
             }
         }
         if (!empty($arMeasureMap)) {
             $rsMeasures = CCatalogMeasure::getList(array(), array('@ID' => array_keys($arMeasureMap)), false, false, array('ID', 'SYMBOL_RUS'));
             while ($arMeasure = $rsMeasures->GetNext()) {
                 $arMeasure['ID'] = (int) $arMeasure['ID'];
                 if (isset($arMeasureMap[$arMeasure['ID']]) && !empty($arMeasureMap[$arMeasure['ID']])) {
                     foreach ($arMeasureMap[$arMeasure['ID']] as &$intOneKey) {
                         $arResult[$intOneKey]['CATALOG_MEASURE_NAME'] = $arMeasure['SYMBOL_RUS'];
                         $arResult[$intOneKey]['~CATALOG_MEASURE_NAME'] = $arMeasure['~SYMBOL_RUS'];
                     }
                     unset($intOneKey);
                 }
             }
         }
     }
     return $arResult;
 }
Example #13
0
function getRatio($arBasketItems)
{
	if (CModule::IncludeModule("catalog"))
	{
		$arElementId = array();
		foreach ($arBasketItems as $arItem)
			$arElementId[] = $arItem["PRODUCT_ID"];

		if (!empty($arElementId))
		{
			$dbRatio = CCatalogMeasureRatio::GetList(array(), array_unique($arElementId));
			while ($arRatio = $dbRatio->GetNext())
			{
				foreach ($arBasketItems as &$basketItem)
				{
					if ($arRatio["PRODUCT_ID"] == $basketItem["PRODUCT_ID"])
						$basketItem["MEASURE_RATIO"] = $arRatio["RATIO"];
				}
			}
			unset($basketItem);

			return $arBasketItems;
		}
	}
}
Example #14
0
<? $GLOBALS['_____2095551865']= array(base64_decode('SW5jbHV'.'kZU1vZH'.'VsZUxh'.'bmd'.'GaWxl'),base64_decode('QWRkQXV0b2xv'.'YWRDbGFzc2Vz'),base64_decode('R'.'2V0'.'T'.'Gl'.'zdA=='),base64_decode('R2V'.'0TGl'.'zdA='.'='),base64_decode('R2V'.'0TmV4d'.'A=='),base64_decode('R2V0'.'QnlJRA=='),base64_decode('R2V0Q'.'nlJRA'.'=='),base64_decode('V'.'G'.'hy'.'b3dFeGNl'.'cHR'.'p'.'b2'.'4='),base64_decode('R2V'.'0QnlJRA=='),base64_decode(''.'R'.'2'.'V0T'.'3B0a'.'W9u'.'U'.'3Rya'.'W5n'),base64_decode('R2V'.'0Q'.'nl'.'J'.'R'.'A='.'='),base64_decode('RmV0'.'Y2g='),base64_decode(''.'R'.'2V'.'0TG'.'lzdA='.'='),base64_decode('RmV0Y2'.'g='),base64_decode('R2'.'V0TGlz'.'dA='.'='),base64_decode('RmV0Y2g='),base64_decode('Rm'.'V0Y2g'.'='),base64_decode('R2V0TGlzd'.'A='.'='),base64_decode('RmV0Y'.'2g='),base64_decode('R2V0'.'TGlzdA=='),base64_decode('R2V'.'0T'.'mV4dA=='));?><? $GLOBALS['____1996017285']= array(base64_decode('ZGVm'.'aW5l'),base64_decode('ZGV'.'maW5l'),base64_decode(''.'Z'.'GV'.'m'.'aW'.'5l'),base64_decode('ZGVm'.'aW5'.'l'),base64_decode('ZGV'.'maW5l'),base64_decode('ZGVmaW'.'5'.'l'),base64_decode(''.'ZGV'.'maW5l'),base64_decode('ZGVmaW5'.'l'),base64_decode('ZGVmaW'.'5l'),base64_decode('ZGVma'.'W5l'),base64_decode('c'.'3Ry'.'bG'.'Vu'),base64_decode(''.'c3RybGV'.'u'),base64_decode('Zml'.'sZV9leG'.'lzdHM='),base64_decode('dW5'.'z'.'ZXJpYW'.'x'.'p'.'emU='),base64_decode('Y'.'XJyYXlf'.'a2V'.'5X2V4aXN0c'.'w=='),base64_decode('a'.'XNfYXJyYX'.'k='),base64_decode(''.'Y'.'XJy'.'YX'.'lfa'.'2V5'.'cw=='),base64_decode('YXJyY'.'XlfZml'.'sd'.'GVy'),base64_decode('YX'.'JyYXlfd'.'W'.'5pcXVl'),base64_decode('aXN'.'fYXJy'.'YXk='),base64_decode('a'.'W5f'.'YXJy'.'YXk='),base64_decode(''.'ZXhwbG9kZQ=='),base64_decode('aXNfYX'.'JyYX'.'k='),base64_decode(''.'aXNfYX'.'JyY'.'X'.'k'.'='));?><? function ___1962356472($_171521712){static $_1188527770= false; if($_1188527770 == false) $_1188527770=array('U0F'.'MRV'.'9'.'ERUJVR'.'w'.'==','U0FMR'.'V9G'.'SUVMR'.'F'.'9'.'U'.'WVBFUw='.'=','Q0hFQ'.'0'.'tCT1g=','U'.'0'.'F'.'MR'.'V9U'.'WVBFX0N'.'I'.'RUN'.'LQk9Y','VEVYVA'.'==','U0FMRV'.'9UWVBFX1RFWFQ=','U0'.'VMRUNU','U0FM'.'RV9UWVBFX1NFTEVDVA==',''.'TV'.'VMVElTRU'.'x'.'F'.'Q1Q=','U0FMRV9'.'U'.'WV'.'BFX01'.'VTFRJU0V'.'MRU'.'N'.'U','VEVYVEFS'.'RUE'.'=','U0FMRV9UWVBFX1RFWF'.'RB'.'U'.'kV'.'B',''.'TE9DQVRJT04=','U'.'0F'.'MRV'.'9UWV'.'B'.'FX'.'0xPQ'.'0'.'FUSU9O','Uk'.'FESU8=','U'.'0F'.'MRV9UWVB'.'FX1JBREl'.'P','RklMRQ==','U'.'0FMR'.'V'.'9'.'UWVBFX0Z'.'JTEU=','Y3'.'Vy'.'cmV'.'uY3k=','U0FMRV9QU'.'k9DX1JFQ19OVU'.'0=','U0FMRV9Q'.'Uk9DX1JFQ'.'19BV'.'FRFT'.'VBU'.'Uw==',''.'U0FMRV9Q'.'Uk9D'.'X1'.'JF'.'Q19'.'USU'.'1F','U0'.'FMRV9QUk9DX1'.'JFQ19GUkVRVUVOQ1k=','U0FMRV'.'9SR'.'VBPUlRfT1d'.'ORVJ'.'f'.'SUQ'.'=','c2F'.'sZQ==','Q0FDSEVEX'.'2Jf'.'c2'.'FsZV9v'.'cmRlcg'.'==','SA==','SV'.'9QRVJJT0Rf'.'S'.'E9VUg'.'==',''.'RA==','SV9QR'.'VJJ'.'T'.'0Rf'.'RE'.'FZ','Vw==','SV9QR'.'VJJT0'.'RfV0V'.'FSw==','TQ==','SV9QRVJJ'.'T0RfT'.'U9OVEg=','UQ==',''.'SV9'.'QRVJJT0'.'RfUVVBUlQ=','U'.'w==','S'.'V9QRVJJT0RfU'.'0VNSVlFQV'.'I=','WQ'.'==','SV9QRVJJT0Rf'.'W'.'UV'.'BUg==','U0F'.'M'.'RV9WQUxV'.'R'.'V9QUkVDS'.'VNJT04'.'=','U'.'0'.'FMRV9X'.'RU'.'lHS'.'F'.'RfUFJ'.'F'.'Q0lTSU9O','Ql'.'h'.'fU0FM'.'R'.'V9NRU5VX'.'0NB'.'VEFMT'.'0dfQ0xFQV'.'I=','WQ==','QVZBSUxBQ'.'kxF'.'X'.'09S'.'REVSX0'.'ZJRUxEUw'.'==','S'.'UQ=','Q09MV'.'U1'.'OX0'.'5BTU'.'U=','SUQ=','TkFNRQ'.'==','U0'.'lfT1JER'.'VJfSUQ=','U'.'0VMRUNU',''.'SUQsREF'.'U'.'RV9'.'J'.'TlNFUlQ=','Q1VTV'.'E9N','WQ==','U'.'09S'.'VA='.'=','S'.'UQ=','TE'.'lE','Q09MVU'.'1OX0'.'5'.'BT'.'UU=',''.'U0lfU'.'0lURQ==','Tk'.'FNRQ==','U0lfU0lU'.'R'.'Q==','U0VMR'.'U'.'NU','T'.'ElE',''.'Q1V'.'TVE9'.'N','T'.'g==','U09SVA'.'==','TElE',''.'UEVSU'.'09O'.'X1'.'RZ'.'U'.'EU=',''.'Q09MV'.'U1OX05BT'.'UU=',''.'U0l'.'fUEFZRVJfVFlQRQ==','TkFNRQ==','U0lfUEFZRVJf'.'VFlQ'.'RQ==','U0VMRUNU','UEVS'.'U09OX'.'1RZUEVf'.'SUQ=','Q1VTV'.'E9N',''.'W'.'Q==','U09SVA'.'==','UEVSU'.'09'.'OX'.'1R'.'Z'.'UEVfSU'.'Q'.'=','UE'.'FZRUQ=',''.'Q09M'.'V'.'U1'.'OX0'.'5BTU'.'U=','U0'.'lfU'.'E'.'FJ'.'RA==','TkFNRQ'.'='.'=','U0lfUEFJ'.'RF'.'9PUkRF'.'Ug==','U0VMRUNU','UEFZRUQs'.'REF'.'URV'.'9QQVlF'.'RCxF'.'TVBfUEFZR'.'UR'.'fS'.'UQ=',''.'Q1VT'.'V'.'E9'.'N',''.'WQ==','U09SVA==','UEFZR'.'UQ=','UEFZX'.'1ZPVU'.'NI'.'R'.'VJ'.'fTlVN','Q09MVU1'.'OX'.'05BTUU'.'=','U0lf'.'Tk9f'.'UFA=','TkFN'.'RQ==','U0lfTk9'.'fUFBf'.'RE9'.'D','U0VMRU'.'NU','UE'.'FZX1ZPVUNIRVJf'.'TlV'.'N','Q1'.'VTVE9N',''.'Tg==',''.'U0'.'9SVA==','UEF'.'ZX1ZPVU'.'NIRV'.'JfTlVN','UEFZX1'.'ZPVU'.'NI'.'R'.'VJf'.'R'.'E'.'FURQ'.'==','Q09'.'MVU1OX'.'0'.'5BT'.'UU=','U0l'.'fREF'.'U'.'RV9QU'.'A='.'=','TkFNR'.'Q==','U0lfRE'.'F'.'UR'.'V9Q'.'UF9ET0M=','U0'.'VMRUNU','UE'.'FZX1ZPVUN'.'IRVJfREFURQ='.'=','Q1VTV'.'E9N','Tg==','U09'.'SVA==','UEFZ'.'X1ZPVUNIRV'.'JfREFURQ==','REV'.'MSV'.'ZFU'.'llfRE9DX05VT'.'Q='.'=',''.'Q'.'0'.'9'.'MV'.'U1OX05BT'.'UU=',''.'U0'.'lfRE'.'FURV9QUF9ERUx'.'J'.'VkVSWV9'.'ET0'.'NfTlV'.'N','TkFNRQ==','U0'.'lfREFU'.'RV9Q'.'UF9E'.'T'.'0NfRE'.'VMSVZF'.'Ullf'.'RE9DX05VTQ==','U0'.'VMR'.'UNU','REVMSVZFUllfR'.'E'.'9DX05V'.'TQ='.'=','Q1VTVE9N','Tg'.'==','U09SVA==','REVMSVZ'.'FUll'.'fRE9DX05V'.'TQ==','REVMS'.'VZFUllf'.'RE'.'9DX0RBVEU'.'=',''.'Q09MVU1OX'.'05B'.'TUU=','U'.'0l'.'fREFU'.'RV9'.'QUF9ER'.'UxJ'.'VkV'.'SW'.'V9ET0NfR'.'EFU'.'R'.'Q==','Tk'.'F'.'NRQ'.'==',''.'U0lfREFUR'.'V'.'9QUF'.'9'.'E'.'T0N'.'fRE'.'V'.'MSVZ'.'F'.'Ul'.'lfRE9DX0'.'RBVEU=',''.'U0VM'.'R'.'U'.'NU',''.'REVMSVZF'.'U'.'l'.'lfR'.'E9DX0R'.'BVEU=',''.'Q1'.'VT'.'V'.'E9N','Tg==','U'.'09'.'SVA==','REVMSVZ'.'FUllfRE'.'9DX'.'0R'.'BVEU'.'=','Q0'.'FOQ0VMR'.'U'.'Q=','Q'.'09MVU1OX05'.'BTU'.'U=',''.'U0'.'l'.'fQ0FOQ'.'0VMRUQ'.'=','T'.'kFNRQ='.'=',''.'U0lfQ0F'.'OQ0VM'.'RU'.'RfT1JE','U0'.'VMR'.'U'.'NU','Q0FOQ0VMRUQsREF'.'URV9DQU'.'5'.'D'.'RUx'.'FRCxFTV'.'BfQ0FOQ0VMRU'.'RfSUQ=','Q1'.'VTVE9N',''.'WQ==','U09SVA==','Q0FO'.'Q0V'.'MRUQ=','U'.'1RBVFVT','Q09'.'MVU1OX05B'.'TUU=','U0l'.'fU1RBVFVT','TkFNRQ'.'==','U0l'.'fU1RBV'.'FVTX09SR'.'A='.'=','U0VM'.'RUNU','U'.'1RBV'.'FV'.'TX0lE'.'LERBVEVfU1RB'.'VF'.'VTLEVNUF9TV'.'EFUVVNf'.'S'.'UQ=','Q1V'.'TVE'.'9N','W'.'Q==','U0'.'9SVA'.'==','U'.'1R'.'BVFV'.'TX0lE','U'.'FJJQ0'.'V'.'fR'.'E'.'VMSVZFUlk=',''.'Q09MVU1OX'.'05'.'BTUU=',''.'U0lf'.'R'.'EVMS'.'VZF'.'Ulk=','TkFNRQ==','U0lfREVM'.'SV'.'Z'.'FUlk=','U0VM'.'RUNU','UFJJQ0VfREVMSVZFUlksQ'.'1V'.'SUkVOQ1k=','Q1VTVE9'.'N','W'.'Q='.'=','U09SVA==','UFJJQ0Vf'.'R'.'EVMSVZFU'.'lk=',''.'Q'.'UxMT'.'1d'.'f'.'REV'.'MS'.'VZF'.'Ulk'.'=','Q09M'.'VU1OX0'.'5B'.'TUU=','U0lfQUxMT1df'.'R'.'EVMSVZFUl'.'k'.'=','T'.'kFNRQ'.'='.'=','U0l'.'f'.'QU'.'x'.'MT1d'.'fREVM'.'SVZFUlkx','U0V'.'MRUN'.'U','QUxMT1d'.'fRE'.'V'.'MSV'.'ZFUlksREF'.'URV9BT'.'ExPV19E'.'RUxJVkV'.'S'.'WSxFT'.'VBf'.'Q'.'UxMT1'.'d'.'f'.'RE'.'VMS'.'VZFUl'.'lfSUQ=','Q1VTVE9N',''.'WQ==','U09SVA='.'=','QUx'.'MT1'.'df'.'REVMSVZFUlk=','UF'.'JJQ0U'.'=',''.'Q09MV'.'U1O'.'X05BT'.'UU=','U0lfU1VN','TkF'.'NRQ='.'=','U'.'0'.'lfU1'.'V'.'N'.'X09S'.'RA'.'==','U0VMR'.'UNU','UF'.'JJQ0UsQ'.'1VS'.'U'.'kVO'.'Q'.'1k=',''.'Q'.'1V'.'TVE9'.'N','WQ==','U'.'0'.'9'.'SVA='.'=','UFJJQ0U=','U1VNX1BB'.'SU'.'Q=','Q09MVU1OX05'.'BTUU=','U'.'0l'.'f'.'U'.'1VNX1BBSU'.'Q=','TkFNRQ==','U0'.'lf'.'U1VNX1BBS'.'U'.'Qx','U'.'0VMR'.'UNU',''.'U1'.'V'.'NX1BBSUQsQ1V'.'S'.'UkVOQ1k=','Q1VTVE9'.'N','W'.'Q==',''.'U0'.'9SVA==','U1'.'VN'.'X1BBSUQ=','VVN'.'FUg==','Q'.'09MV'.'U1OX05BTUU=','U0lfQlVZ'.'R'.'VI=','TkF'.'NRQ'.'==','U'.'0'.'lfQlVZRVI=','U0'.'VMR'.'UNU',''.'VVNFUl9JRA'.'='.'=','Q'.'1V'.'TVE9N','WQ==','U0'.'9SVA==',''.'VV'.'NFUl'.'9JRA==','UEFZ'.'X'.'1N'.'ZU1RFTQ==','Q09MVU1OX05BTUU'.'=','U'.'0lfUEFZX1'.'N'.'ZUw='.'=','TkFNRQ='.'=',''.'U0lfUEFZ'.'X1N'.'ZUw==','U0VMR'.'UN'.'U',''.'UEFZX'.'1N'.'ZU'.'1RFTV9JRA='.'=','Q1V'.'TVE9N',''.'WQ==','U09SVA==','UE'.'FZX1NZ'.'U1RFTV9JRA==','RE'.'VMS'.'V'.'Z'.'FUlk'.'=','Q09MV'.'U'.'1'.'OX05BTUU'.'=','U'.'0lfR'.'E'.'V'.'MSVZF'.'UllfU1lT','TkFNRQ==','U'.'0lf'.'REVMSVZFU'.'l'.'lfU'.'1l'.'T','U'.'0VMRUN'.'U',''.'REVMS'.'V'.'ZFUllfSUQ=','Q1VTVE9N',''.'W'.'Q'.'==',''.'U'.'09SVA'.'==','REVMSVZ'.'F'.'UllfS'.'U'.'Q'.'=','R'.'E'.'FURV'.'9VUERBVEU=','Q0'.'9M'.'VU1'.'OX05BTU'.'U'.'=','U0lfREFURV9VU'.'ER'.'BVEU=','Tk'.'FN'.'RQ==','U'.'0lfREFURV9VUE'.'RBV'.'EU'.'=','U0VMRUN'.'U',''.'R'.'EFURV9VUE'.'RBVE'.'U=','Q1VTV'.'E9N',''.'Tg==','U'.'0'.'9SVA==','REF'.'URV'.'9VUERBVE'.'U=',''.'UFNfU1RB'.'VFVT','Q09MVU1OX05BT'.'UU=',''.'U'.'0lfUE'.'F'.'ZTUVOVF9Q'.'Uw==','TkF'.'NR'.'Q'.'==','U'.'0lfUFN'.'fU'.'1RBVFV'.'T','U0V'.'MRUN'.'U',''.'UF'.'NfU1'.'RBV'.'FV'.'TLFBTX1JFU1BPTlN'.'FX0R'.'BV'.'EU=','Q1'.'V'.'TVE9N','Tg==','U09SVA==',''.'U'.'FNf'.'U1'.'RBVFVT','U'.'F'.'NfU1'.'V'.'N','Q09MVU'.'1OX05'.'BT'.'UU=','U0'.'lfU'.'FNfU'.'1V'.'N',''.'Tk'.'FN'.'RQ'.'==','U'.'0l'.'fU'.'FNfU1'.'VNMQ'.'==','U'.'0V'.'MRUNU',''.'UF'.'N'.'fU1VNLF'.'B'.'TX0NVUl'.'JFTk'.'NZ','Q1VTVE'.'9N','WQ==','U09SV'.'A==','UFNfU1VN','VEFYX1ZB'.'TFVF',''.'Q0'.'9M'.'VU'.'1OX'.'05'.'B'.'TUU=','U0lf'.'VEFY','TkFNRQ==',''.'U0lfVEFYX1NVTQ==',''.'U0V'.'MRUNU',''.'V'.'EFYX1'.'ZBTFV'.'FLE'.'NVUlJ'.'FTkN'.'Z','Q1'.'VT'.'VE9N','WQ==','U09S'.'VA'.'==',''.'VEF'.'YX1ZBTFVF','QkFT'.'S0'.'VU','Q09MVU1'.'OX'.'05BTUU=','U0l'.'fSVRFTVM=','Tk'.'FNR'.'Q='.'=','U0l'.'fSV'.'RFTV'.'NfT1JE','U0'.'VMRUNU','','Q1VTVE9N',''.'W'.'Q='.'=','U09'.'SV'.'A'.'='.'=','','c2FsZQ==',''.'Q1NhbGVEZWxpdmVyeQ==','L2RlbGl2ZXJ5Ln'.'BocA==','Q'.'1Nh'.'bGVEZWxpdmV'.'yeUhhbmRsZXI=','L2'.'RlbGl2ZXJ5X2h'.'h'.'bm'.'RsZX'.'IucGhw','Q1N'.'hb'.'GVE'.'Z'.'WxpdmVy'.'eUhlbH'.'B'.'lcg==',''.'Z2VuZ'.'XJhbC'.'9k'.'ZWxpdmVye'.'V'.'9oZWxw'.'ZXIuc'.'Ghw',''.'Q1'.'Nh'.'bGVEZWx'.'pd'.'mVy'.'eTJQYX'.'lTeXN0ZW0=','Z2VuZX'.'Jhb'.'C'.'9k'.'ZWxpdmVyeV8yX3BheV9zeXN0ZW0ucGhw','Q1NhbGVMb2NhdGlvb'.'g==','L2xvY2'.'F0aW9uLnBo'.'c'.'A==',''.'Q1Nhb'.'GVMb2NhdGlvbkdyb3Vw','L'.'2'.'x'.'vY2F0aW9'.'uX'.'2dyb3Vw'.'L'.'nBoc'.'A==','Q1Nhb'.'GVCYXN'.'rZXQ=','L'.'2Jhc2tld'.'C5'.'waHA=','Q1NhbG'.'VCYXNrZXRIZWxwZXI=','Z2VuZ'.'XJhbC9iY'.'XNr'.'ZX'.'Rf'.'a'.'GV'.'scGVyLnBocA==','Q1NhbGVVc2Vy',''.'L'.'2Jhc2tldC5waHA=','Q1Nhb'.'GVP'.'cmRlcg'.'==','L2'.'9yZG'.'VyL'.'nBoc'.'A==','Q1N'.'h'.'bGVPc'.'m'.'R'.'lc'.'lB'.'yb'.'3'.'Bz','L29y'.'ZG'.'VyX3Byb3Bz'.'LnBocA='.'=','Q1Nh'.'bGVPcmRlcl'.'By'.'b'.'3B'.'zR3JvdXA=',''.'L'.'2'.'9yZ'.'GVyX'.'3'.'Byb3B'.'zX2dyb3VwLnBocA'.'==','Q'.'1N'.'hbGVPcmRl'.'c'.'lBy'.'b3B'.'z'.'VmFsdWU'.'=','L29yZG'.'VyX3Byb'.'3BzX3'.'ZhbHV'.'lcy5waH'.'A=','Q1'.'NhbG'.'VPcmRlclByb3'.'B'.'zVmFyaWFu'.'dA==','L29yZGVyX3'.'By'.'b'.'3Bz'.'X3Z'.'hc'.'mlhbnQu'.'cGhw','Q'.'1N'.'hb'.'GV'.'Pc'.'mRlclVz'.'ZXJQcm9wcw'.'==',''.'L2'.'9yZGVyX3'.'V'.'z'.'ZXJfcHJvcHMucGhw',''.'Q1'.'NhbGVP'.'c'.'mR'.'lcl'.'VzZX'.'JQcm9wc1'.'Z'.'hbHVl','L29y'.'ZGVyX3VzZXJf'.'cHJ'.'v'.'cHNfd'.'m'.'FsdWUucGhw',''.'Q1'.'NhbG'.'VPcm'.'Rl'.'cl'.'RheA==','L29y'.'ZGVyX3RheC5wa'.'HA'.'=','Q1NhbGVP'.'c'.'mRlc'.'khlbH'.'Bl'.'cg==','Z'.'2VuZ'.'XJhbC9vcmR'.'l'.'cl9oZWxwZ'.'XIucGhw','Q'.'1NhbGVQYXlTe'.'XN0ZW0'.'=','L3Bhe'.'V9z'.'eX'.'N0ZW'.'0ucGh'.'w','Q1NhbGV'.'QYXlTeXN'.'0Z'.'W'.'1BY3Rp'.'b24=','L3BheV9zeXN0'.'Z'.'W1fYWN0aW'.'9uLnBocA==','Q1Nhb'.'GVQYXl'.'T'.'eX'.'N'.'0Z'.'W1'.'z'.'S'.'G'.'Vs'.'c'.'GVy','Z2VuZ'.'X'.'JhbC9wYXlf'.'c'.'3lzdGVtX2'.'h'.'l'.'bHBlc'.'i5waHA=','Q1Nhb'.'GVQYX'.'lTeXN'.'0ZW1UYXJpZg==',''.'Z'.'2'.'VuZXJ'.'hbC'.'9wYXl'.'f'.'c3lzd'.'G'.'VtX3Rhcm'.'lmLn'.'BocA==','Q1NhbGVUYXg=',''.'L3RheC5waHA'.'=','Q'.'1Nh'.'bGVUY'.'XhSYXRl','L3'.'Rhe'.'F'.'9y'.'YXRl'.'LnBoc'.'A='.'=','Q1NhbG'.'VQZXJzb'.'25'.'U'.'eXBl','L3'.'Bl'.'cnNvbl90eXBlLnB'.'ocA'.'==','Q1Nhb'.'GV'.'E'.'aXN'.'jb3VudA'.'==',''.'L2Rpc2Nvd'.'W'.'50LnBocA==','Q1NhbG'.'VV'.'c'.'2V'.'yQW'.'N'.'jb'.'3V'.'u'.'dA==','L3Vz'.'ZXIucG'.'hw','Q'.'1NhbGV'.'V'.'c2V'.'yVHJhbnN'.'h'.'Y3Q=','L3VzZX'.'JfdHJh'.'bnNhY3QucGhw',''.'Q1'.'NhbGVVc2VyQ2FyZHM=',''.'L3VzZXJf'.'Y2FyZH'.'MucG'.'hw',''.'Q1'.'NhbGV'.'SZWN1'.'c'.'nJpbmc'.'=','L3JlY3'.'VycmluZ'.'y5'.'waHA=','Q1Nh'.'bGVTdGF0dX'.'M=','L'.'3N0Y'.'X'.'R'.'1'.'c'.'y5'.'waHA=',''.'Q1N'.'hbGV'.'MYW'.'5n','L3Nl'.'dHRp'.'bmdzLnBocA==','Q'.'1N'.'hbGVHcm91cEFjY'.'2Vzc1RvU2l0ZQ==','L3NldHRpbmdzLnBocA'.'==','Q1Nh'.'bGVHcm'.'9'.'1cEFjY2Vzc'.'1R'.'vRm'.'xhZw==','L3'.'NldH'.'RpbmdzLnBocA==','Q'.'1NhbGVB'.'d'.'Xhpb'.'Gl'.'hcnk=','L'.'2F1eGlsaWF'.'yeS5wa'.'HA=',''.'Q1NhbGVBZmZpbGl'.'hdGU'.'=','L2'.'Fm'.'Zm'.'lsaWF'.'0ZS5waH'.'A=','Q1'.'N'.'h'.'bGVBZ'.'m'.'ZpbGlhdGVQbGFu','L2FmZmlsa'.'W'.'F0'.'ZV9w'.'b'.'G'.'Fu'.'Ln'.'Bo'.'cA==','Q1'.'N'.'h'.'b'.'G'.'VBZ'.'m'.'ZpbGlhd'.'G'.'V'.'QbG'.'FuU'.'2VjdGlvb'.'g==','L'.'2FmZmlsaWF0ZV9'.'wbGFuX3'.'N'.'lY3'.'Rpb24uc'.'Gh'.'w','Q1'.'N'.'hb'.'GVBZmZpb'.'G'.'lhdGV'.'UaWVy',''.'L2'.'FmZmlsaWF0ZV90aWVy'.'L'.'n'.'BocA==','Q1NhbGVBZ'.'mZp'.'bGlhdGVUcmFu'.'c2F'.'jdA==','L'.'2FmZm'.'lsaWF0ZV9'.'0cmFuc2Fjd'.'C5waH'.'A=','Q1Nh'.'bGVF'.'eHBvcnQ=','L2'.'V4cG'.'9y'.'dC5'.'wa'.'HA=','Q1Nh'.'bGVPcmR'.'lckxvYWRl'.'cg='.'=','Z'.'2Vu'.'ZXJ'.'hb'.'C9vcmRlcl9s'.'b'.'2FkZX'.'IucGhw',''.'Q1NhbGV'.'NZ'.'WFz'.'dXJl',''.'Z2V'.'u'.'ZXJhbC9tZWFzdXJ'.'lb'.'WVud'.'C5waHA=','Q'.'1'.'N'.'hbG'.'VQc'.'m9k'.'d'.'WN0','L'.'3'.'By'.'b2R'.'1Y3QucGhw','Q1NhbGVWaWV3Z'.'WRQc'.'m9kdW'.'N0','L3Byb2R1Y3'.'Quc'.'Ghw','Q1'.'Nh'.'b'.'GVIZWxwZXI=','Z2VuZ'.'X'.'Jhb'.'C9o'.'ZW'.'x'.'w'.'ZX'.'IucGhw','Q'.'1NhbGVNb2JpbG'.'VPc'.'mRlc'.'lV0aWxz','Z2'.'VuZXJh'.'b'.'C9tb2J'.'pbGVfb3'.'J'.'kZXIucGhw',''.'Q1N'.'hbGVNb2Jpb'.'G'.'VP'.'cmRlclB'.'1'.'bGw=','Z2VuZXJhbC9tb'.'2JpbG'.'Vfb3JkZX'.'IucGhw','Q1NhbGVN'.'b2Jpb'.'GVPcmRlc'.'lB1c2g=','Z'.'2V'.'uZXJh'.'bC9tb2'.'JpbGVfb3Jk'.'Z'.'X'.'IucG'.'hw','Q'.'1NhbGVNb'.'2J'.'pbGVPcmR'.'lckZpbH'.'Rlcg==','Z2'.'VuZXJhbC9tb2Jp'.'bG'.'Vfb3JkZXIucG'.'hw','Q'.'0Jhc2VTYWxlU'.'mV'.'wb3J0'.'SG'.'VscG'.'V'.'y','Z'.'2VuZXJhbC9z'.'YWxlX3JlcG'.'9ydF'.'9oZWxwZX'.'IucGhw','Q1NhbGV'.'SZXBvc'.'nR'.'TYWxlT3Jk'.'ZXJI'.'ZWxwZXI=','Z2V'.'u'.'Z'.'XJhbC9'.'zY'.'WxlX3'.'J'.'lcG9ydF9oZW'.'xwZ'.'XIuc'.'Ghw',''.'Q1NhbGVSZXBvcnRVc2'.'VySGVscGVy','Z2VuZ'.'XJ'.'hbC'.'9zYWx'.'lX3'.'J'.'lcG'.'9ydF9oZWxwZXIucG'.'hw','Q1Nhb'.'GVSZ'.'XBvcnRT'.'Y'.'WxlRnVzZ'.'XJ'.'I'.'ZWxwZXI=','Z'.'2VuZXJ'.'hbC'.'9zYWxlX3J'.'l'.'cG9'.'y'.'dF'.'9oZ'.'WxwZXIucG'.'hw','SUJ'.'YU2FsZVByb'.'2R1Y3RQcm92aWRlcg'.'==','Z2VuZXJhbC'.'9wcm9kdWN'.'0'.'X3Byb3Z'.'pZGVyLnB'.'o'.'cA'.'==','Q1N'.'hbG'.'VTdG9y'.'ZUJhcmNvZGU=','L3N0b3JlX2'.'Jhc'.'mNvZG'.'Uu'.'cGhw','Q1N'.'hb'.'GV'.'PcmR'.'lc'.'kNoYW'.'5'.'nZQ==','L29yZGV'.'y'.'X'.'2NoYW5nZS'.'5waHA=','Q1Nh'.'bG'.'VPcm'.'Rl'.'ckNoYW5'.'nZ'.'UZvc'.'m1hd'.'A'.'==','Z2VuZ'.'X'.'JhbC9v'.'cmRlcl9j'.'a'.'G'.'Fu'.'Z2'.'Uu'.'cGhw',''.'Q'.'ml0c'.'m'.'l'.'4'.'XFNhb'.'G'.'Vc'.'T3JkZXJU'.'YW'.'JsZQ==','bGli'.'L2'.'9yZGV'.'y'.'LnBocA'.'==','Qm'.'l0'.'c'.'ml4'.'XF'.'NhbGVc'.'Qm'.'Fza2'.'V0VGFibGU'.'=','bGl'.'iL2Jhc'.'2tldC5w'.'aHA'.'=','Qml0cm'.'l4XFNhbG'.'VcRnV'.'zZXJUYWJsZQ==','bGliL2Z1'.'c2VyLn'.'BocA==',''.'Qml'.'0'.'cml'.'4'.'XF'.'NhbG'.'V'.'c'.'U3Rhd'.'HV'.'zTGF'.'uZ1RhYm'.'xl','bG'.'l'.'iL3N0YXR1c2xhbmcu'.'c'.'G'.'hw','Q'.'ml0cm'.'l4X'.'FNhbGVcUGF5'.'U3'.'l'.'z'.'d'.'G'.'VtVGFi'.'bGU=','b'.'G'.'l'.'iL3Bhe'.'XN5c3Rl'.'bS5wa'.'HA=','Qml'.'0c'.'ml'.'4X'.'FN'.'hbG'.'VcRGV'.'saX'.'Zlcn'.'lUYWJ'.'s'.'ZQ==',''.'bGli'.'L2RlbGl2Z'.'XJ5'.'LnBocA==','Qml0'.'c'.'ml4XF'.'Nhb'.'GVcRGVsaXZlcnlIYW5kbG'.'VyVG'.'Fib'.'GU=','b'.'GliL2RlbGl2ZXJ5aGFuZ'.'Gxl'.'ci5waH'.'A=','Qml'.'0cml4XFNhbGVcUGVy'.'c29uVH'.'l'.'wZV'.'RhYmxl','b'.'GliL3BlcnN'.'vbnR5'.'cGU'.'uc'.'Ghw','XEJpdHJpeFxTYW'.'xlXE9y'.'ZGVyVG'.'FibGU=','bGliL29yZGVyLnB'.'o'.'cA==','XEJpdHJ'.'peFxTY'.'W'.'xlXEJhc2tl'.'dFRhYmxl',''.'bGliL'.'2Jhc2t'.'ldC5waH'.'A=','XE'.'J'.'pdHJpeFxTYWx'.'lXEZ1c2VyVGFibGU=',''.'bGl'.'iL2Z'.'1c2VyLnBocA==','XE'.'Jpd'.'HJpeF'.'x'.'T'.'YWxlXFN0YXR'.'1c'.'0xhbmdUY'.'WJsZQ'.'==','b'.'GliL3N0YXR'.'1c2xhbmcuc'.'Ghw',''.'XE'.'Jp'.'dHJp'.'eFxTY'.'W'.'x'.'l'.'XFBh'.'eVN5c3RlbV'.'R'.'hY'.'mxl',''.'bG'.'l'.'iL3B'.'heXN'.'5c3'.'RlbS5waHA=','XEJpdHJpeFxT'.'YW'.'xlXERlbG'.'l2'.'Z'.'XJ'.'5VGFibGU=','bGl'.'iL2Rl'.'b'.'Gl2Z'.'XJ5LnBocA'.'==','XEJpdHJpe'.'F'.'xTYWxl'.'XERl'.'bGl2ZXJ'.'5'.'SGFuZGx'.'lclRhYmxl','bGliL2'.'RlbGl2'.'ZXJ5aG'.'F'.'uZGxlc'.'i5'.'wa'.'HA'.'=','XE'.'JpdHJpeFxTYW'.'xlXF'.'Blc'.'nNvblR5cGVUY'.'WJsZQ==','bGliL3'.'BlcnNvbnR5cG'.'UucGhw','Q1'.'NhbGVSZXBvc'.'n'.'R'.'TYWx'.'lR2'.'9vZH'.'NIZWxwZXI=','Z2'.'Vu'.'ZXJhbC9zYWxl'.'X'.'3'.'JlcG9ydF9'.'oZ'.'W'.'xw'.'Z'.'X'.'IucGh'.'w','Q1NhbGV'.'S'.'Z'.'XBv'.'c'.'nR'.'T'.'YWx'.'lU'.'H'.'JvZHVjdE'.'hlbHBlcg==','Z2Vu'.'ZXJhbC9z'.'Y'.'WxlX'.'3JlcG9y'.'dF9o'.'ZWxw'.'ZX'.'I'.'u'.'c'.'Ghw','Q'.'ml0cm'.'l4XFNhbGVcUHJvZHVjdFRhYmxl',''.'bGliL3B'.'yb2R1Y3QucGhw',''.'Qm'.'l0cml4XFNhb'.'GVcR29vZHNTZWN0aW9uV'.'GF'.'ibGU=','bGliL2dvb2Rzc2VjdGlvbi'.'5wa'.'HA=','Qml'.'0'.'cm'.'l4XFNhbGVcU'.'2VjdGl'.'vb'.'lRhY'.'mx'.'l','bGli'.'L'.'3NlY3Rp'.'b24'.'uc'.'Ghw','Qml0'.'c'.'ml4'.'X'.'FNhbG'.'VcU'.'3Rv'.'cmVQ'.'cm9kd'.'W'.'N0V'.'GFibGU'.'=',''.'bGliL3N0b'.'3'.'JlcHJvZHVjdC5'.'waHA=','XEJp'.'d'.'H'.'JpeF'.'x'.'T'.'Y'.'Wxl'.'XFB'.'y'.'b2R'.'1Y3RUYWJsZQ==','b'.'GliL3Byb'.'2R1Y3'.'Q'.'ucG'.'hw',''.'XEJpdHJpeFxTYWxlX'.'Edvb2'.'Rz'.'U2'.'Vjd'.'G'.'lvb'.'l'.'RhYmx'.'l','bGli'.'L2dv'.'b2'.'Rzc2VjdG'.'lvbi'.'5waHA=','XEJpd'.'HJpe'.'FxTYWxlXFNl'.'Y3Rpb'.'25UYW'.'Js'.'ZQ='.'=','b'.'GliL'.'3NlY3Rpb24'.'uc'.'G'.'hw','XEJpdHJpeFxTYW'.'xlXFN0b3JlUHJv'.'ZHVjd'.'FR'.'hYmxl','bG'.'l'.'iL3N0b3Jl'.'cHJvZHVjdC'.'5wa'.'HA=','X'.'E'.'Jp'.'dHJ'.'peFx'.'TY'.'W'.'xlX'.'F'.'NhbGV'.'zWm'.'9uZQ==','bGliL3NhbGV'.'zem9uZS5waHA=',''.'Qml'.'0cml4X'.'FNhbGVcRGVs'.'a'.'XZlc'.'nlc'.'T3'.'Jk'.'ZXJ'.'EZWxpdmVyeVRh'.'Ymxl','bGliL2'.'Rl'.'bGl2ZX'.'J'.'5L29y'.'ZGVy'.'Z'.'GVsaXZ'.'l'.'cnkucGhw',''.'Qml0c'.'ml4XFNh'.'bGV'.'c'.'U2'.'V'.'u'.'ZGVyR'.'X'.'Zl'.'bnRI'.'YW5kb'.'GV'.'y','bGliL3'.'N'.'lbmRlcmN'.'v'.'bm5l'.'Y'.'3Rvci5'.'w'.'aHA=',''.'Qm'.'l0c'.'ml4X'.'FNhbGVcU2VuZGV'.'yQ2'.'9ubm'.'VjdG'.'9yQn'.'V'.'5ZX'.'I=','bG'.'l'.'iL3NlbmRlcmNvbm'.'5lY3Rvci'.'5waHA=','Q'.'ml0c'.'ml4XFNhbGVcU'.'HJ'.'vZHVjdDJ'.'Qcm9kdW'.'N'.'0V'.'GFibGU=',''.'bGliL3B'.'yb2R1Y3Qyc'.'HJvZHVj'.'dC'.'5wa'.'HA=',''.'Qml0c'.'ml4'.'XFN'.'hb'.'GVc'.'T3'.'JkZ'.'XJQcm9jZ'.'XNzaW5nVGFibG'.'U=','bGliL29'.'yZ'.'GVycHJvY'.'2Vzc2'.'l'.'uZy'.'5waHA'.'=','Qm'.'l'.'0'.'cml4X'.'FNhbGVcVGF4XFJh'.'d'.'GVU'.'YWJsZQ==',''.'b'.'Gl'.'iL3'.'R'.'he'.'C9yY'.'XRlLn'.'BocA'.'==','Q'.'ml0'.'cml4XFN'.'hbGV'.'cTG'.'9jYX'.'Rpb25'.'cTG9jY'.'X'.'Rp'.'b'.'25UYWJsZQ'.'==','bGl'.'i'.'L2xvY2F0aW'.'9u'.'L2x'.'vY2F'.'0aW'.'9uLnBocA'.'='.'=','Qm'.'l0c'.'ml4XFNhb'.'G'.'V'.'c'.'TG9jYX'.'Rpb2'.'5cVHlwZ'.'V'.'RhY'.'mxl',''.'bG'.'liL2xvY2F0'.'aW9uL3R5'.'cGUucGhw','Qml'.'0cm'.'l4'.'X'.'F'.'NhbGVc'.'TG9jYXR'.'pb2'.'5'.'c'.'R3J'.'vdXBUYW'.'J'.'s'.'ZQ==','bG'.'liL2xvY2F0aW9u'.'L2d'.'yb3VwLnBoc'.'A==','Qm'.'l0cml'.'4X'.'FNh'.'bGVcTG9jYX'.'Rpb25cRXh0ZXJuYWx'.'U'.'Y'.'WJs'.'ZQ==','bGliL2xv'.'Y2F0aW9uL2V'.'4dGVy'.'bm'.'F'.'sLnB'.'ocA='.'=',''.'Qml0cm'.'l4XFN'.'hbGVcT'.'G9jY'.'XRpb25cRXh'.'0ZXJuYWxTZ'.'XJ2aWNlV'.'GFibG'.'U=','bGliL'.'2xvY2F0'.'aW9uL2V'.'4'.'dGV'.'y'.'bmFsc'.'2Vyd'.'m'.'ljZ'.'S5'.'waHA=',''.'Qm'.'l0'.'cml4XFNhbGV'.'cT'.'G9j'.'YXRpb25cT'.'m'.'FtZVx'.'O'.'YW1lRW50aX'.'R5','bG'.'liL'.'2xvY2F0aW9uL25hbWUv'.'bmFtZWV'.'udG'.'l'.'0eS5'.'waHA=','Qml'.'0'.'cm'.'l'.'4XFNh'.'bGVcT'.'G9jYXRpb25cTmFtZVxMb2N'.'hdG'.'lvblRhYmx'.'l','bG'.'li'.'L2xvY2F0'.'aW9u'.'L25hbWUvbG9jYXRp'.'b24ucGh'.'w','Qml0cml4X'.'FNhbGVcTG9jY'.'X'.'Rpb2'.'5cTm'.'Ft'.'ZVxU'.'e'.'X'.'BlVG'.'F'.'ibGU=','bGli'.'L2x'.'vY2'.'F0a'.'W9uL'.'25'.'h'.'bWUvdHl'.'wZS5waHA=','Qm'.'l'.'0'.'cml'.'4'.'XFNhbGVcTG'.'9j'.'YXRpb25c'.'T'.'m'.'FtZVxHcm'.'91cFRhYmxl','b'.'GliL2xvY2'.'F0'.'aW9uL25h'.'bW'.'UvZ'.'3J'.'vdXA'.'uc'.'Ghw','Qm'.'l0c'.'ml4XFN'.'hbGVcTG9jY'.'XR'.'pb25cQ29u'.'b'.'mVjdG9y','bG'.'liL'.'2xvY2F0'.'aW'.'9'.'uL'.'2N'.'v'.'b'.'m5lY'.'3'.'Rvc'.'i5waHA'.'=',''.'Qml0cml4X'.'FNhb'.'G'.'V'.'cTG9jYXRpb2'.'5cR3JvdXB'.'M'.'b2Nh'.'dG'.'lvbl'.'R'.'hYmxl','bGl'.'iL'.'2x'.'vY2'.'F0'.'aW9uL2dyb3V'.'w'.'bG9jYXRpb24ucGhw',''.'Qml0cml4X'.'FNhbGVcTG'.'9j'.'YXR'.'pb'.'25cU2l0Z'.'Ux'.'vY'.'2F0aW9uV'.'G'.'FibG'.'U=','bGli'.'L2xvY2F0aW'.'9uL3NpdGVsb'.'2'.'NhdGl'.'vbi5waHA=',''.'Qml'.'0cml4XFNhbGV'.'cTG9'.'jYXRp'.'b'.'25cR'.'GVm'.'YX'.'VsdFN'.'pdGVUYWJs'.'Z'.'Q==','bGl'.'iL'.'2xvY2F0a'.'W9'.'uL2RlZmF'.'1bHRzaXRlLnBocA'.'='.'=','Q'.'ml0'.'c'.'ml4XF'.'Nhb'.'GVcT'.'G9'.'j'.'YXRpb25c'.'VH'.'JlZUVudG'.'l'.'0e'.'Q==','bGliL2'.'x'.'vY2F0'.'aW9u'.'L3RyZW'.'Vlb'.'nRpdHkucGhw','Q'.'ml0c'.'m'.'l4'.'XFNh'.'b'.'GVcTG9jYXRpb25c'.'REJ'.'C'.'bG9ja0'.'l'.'uc2Vy'.'d'.'G'.'V'.'y',''.'b'.'Gl'.'iL'.'2xvY2F0aW'.'9uL'.'2'.'Ri'.'Y'.'mxvY2t'.'pb'.'nN'.'lcnRl'.'ci5waHA=','Qml'.'0c'.'ml'.'4'.'XFNhbGV'.'c'.'TG'.'9jYX'.'Rpb25cQXNz'.'ZX'.'J0',''.'bGliL2xvY2F0'.'aW9'.'uL2Fzc'.'2'.'VydC'.'5'.'waHA=',''.'Qml0c'.'ml4XFN'.'hbGV'.'cTG9jYXRpb25cR'.'EJc'.'Q2'.'9t'.'bW9uSGVscGVy','bGli'.'L2xvY2F0'.'aW9u'.'L2R'.'iL'.'2'.'Nvb'.'W'.'1v'.'b'.'mhl'.'b'.'HBlci5waHA=','Qm'.'l0'.'cml4XFN'.'hb'.'GVcTG9jY'.'X'.'Rpb'.'25c'.'REJ'.'cS'.'GV'.'scGVy','b'.'GliL2xvY2F0'.'aW9uL2RiL'.'w==','L'.'2hlbHBlci'.'5waHA=','Qml0c'.'ml4X'.'FNhbGVcTG9'.'jYXRpb25c'.'R'.'EJcQmxvY'.'2'.'tJbnN'.'lcn'.'R'.'l'.'c'.'g==','b'.'G'.'l'.'iL2xv'.'Y2F0aW9uL2RiL2'.'Js'.'b2NraW5zZXJ0ZXIucGhw','Qml0cm'.'l'.'4X'.'FNhbGVcTG9jYXRpb'.'25c'.'QWRtaW5cSGVscGVy','b'.'GliL2x'.'vY'.'2F0aW9uL'.'2'.'FkbWluL2h'.'lbHBl'.'ci5'.'waHA=','Qml'.'0c'.'ml4XFNhbGVcTG9jY'.'XRp'.'b25cQ'.'WR'.'taW5'.'cTmFtZUhl'.'bHB'.'lc'.'g'.'==','bGliL'.'2xvY2F'.'0a'.'W9uL2FkbWluL'.'25hbW'.'Vo'.'ZWxw'.'ZXIucGhw','Qml'.'0cml4XFNh'.'bG'.'VcTG9j'.'Y'.'XRpb'.'25cQWRtaW5cTG'.'9j'.'Y'.'XRpb25IZWx'.'wZXI'.'=','bGl'.'iL2xvY'.'2F0aW9uL2FkbWlu'.'L2xv'.'Y2F0aW9uaGVs'.'cGVyLnBocA==',''.'Qml0cml4XFNhbGVcTG9'.'jYXRpb25cQWRt'.'aW5cVHl'.'wZUhlbHBlcg==','bGli'.'L2xvY2F0aW9u'.'L2Fkb'.'W'.'luL3R5cG'.'VoZ'.'WxwZX'.'I'.'ucG'.'hw','Qm'.'l0c'.'m'.'l4'.'XFNhbGV'.'cTG9jY'.'XRp'.'b25cQWRtaW'.'5cR3J'.'v'.'dXBIZWx'.'wZ'.'XI=',''.'bGliL2xv'.'Y2'.'F'.'0aW9uL2'.'FkbW'.'l'.'uL2dy'.'b'.'3VwaGVs'.'c'.'G'.'VyLnBocA==','Qm'.'l0cm'.'l'.'4'.'XF'.'NhbGVcTG'.'9jY'.'XRpb25c'.'QWRt'.'aW'.'5cRGVm'.'YXVsdFNpdGVIZWxw'.'ZX'.'I=',''.'bG'.'liL2xvY2F'.'0aW'.'9'.'uL2FkbWluL'.'2RlZ'.'mF1bHRza'.'XRlaG'.'VscGVyLnBocA'.'==','Qml0cml4XFNhbGV'.'cT'.'G9jYXR'.'pb25cQWRtaW5cU'.'2l0ZUxv'.'Y'.'2F0'.'aW'.'9uSGV'.'sc'.'GVy','bGliL2xv'.'Y'.'2F'.'0'.'aW9'.'u'.'L2FkbWl'.'uL3NpdGVsb'.'2NhdGl'.'vbmhlbHB'.'lci5'.'waH'.'A=','Q'.'ml0c'.'ml4XF'.'Nh'.'bG'.'VcTG9'.'jYXRpb25c'.'Q'.'WRta'.'W5cRXh'.'0'.'ZXJu'.'Y'.'WxT'.'ZXJ2'.'aWN'.'lS'.'GVscGVy','bGliL'.'2xvY'.'2F'.'0aW9uL'.'2F'.'kbWl'.'uL'.'2V4'.'dGVybmF'.'s'.'c2Vyd'.'m'.'ljZWh'.'lbHBlci'.'5w'.'aHA=','Qml'.'0c'.'ml4XFN'.'hbG'.'VcTG9jYXRpb25cS'.'W1w'.'b3J'.'0XFByb'.'2Nlc3M=','bGliL2xvY2F'.'0aW9uL2ltcG9y'.'dC'.'9wcm9jZ'.'X'.'NzLn'.'B'.'ocA'.'='.'=','Qml0'.'cml4X'.'FNhbGVcTG'.'9jYXRp'.'b25cSW1wb3'.'J0XENTVlJ'.'lYWRlcg==',''.'bGliL2x'.'vY'.'2F0aW9uL2ltcG9yd'.'C9jc3ZyZW'.'Fk'.'ZXIuc'.'G'.'hw','Q'.'ml0cml'.'4XFN'.'h'.'bGVcTG9jYX'.'Rpb2'.'5cSW1w'.'b'.'3J0XEltcG9ydF'.'Byb2Nl'.'c3M=','bGliL2xvY'.'2'.'F0aW9'.'uL2ltcG9ydC9pbXBvcn'.'R'.'wcm9jZX'.'NzL'.'nBocA==',''.'Q'.'1Nh'.'bGV'.'Qcm94eUFkbWluU'.'mVzd'.'Wx0','Z2VuZ'.'XJhbC9wcm'.'9'.'4e'.'WFkb'.'W'.'luc'.'m'.'V'.'zdWx0LnBocA'.'==','Q1Nh'.'bGVQcm'.'94eV'.'Jl'.'c3Vs'.'d'.'A'.'==','Z2Vu'.'Z'.'XJhbC9w'.'cm'.'94eX'.'Jlc3V'.'sdC5waHA=','Qml0cml4XFNhb'.'G'.'VcTG9j'.'YXRpb25cT'.'WlncmF0'.'aW'.'9uXENVcGR'.'hdGVyTG9jYXRpb'.'25Qc'.'m8=','b'.'GliL2x'.'vY2F0'.'aW9u'.'L21pZ3Jh'.'dGlvbi9taWd'.'yYXR'.'lLnBo'.'cA'.'='.'=','Qml0cml4'.'XFNhbGVcRG'.'VsaXZlcnlcRGVs'.'aXZl'.'cnlUYWJsZQ'.'='.'=','bGliL2'.'Rl'.'bGl'.'2Z'.'XJ5L2Rlb'.'Gl2ZXJ5LnB'.'ocA='.'=',''.'Qml0'.'cml4XFNhb'.'GVcRG'.'Vs'.'aXZlcnl'.'cR'.'GV'.'saXZlc'.'n'.'lMb2NhdGlvblR'.'hYm'.'xl',''.'bGl'.'iL2Rlb'.'G'.'l2ZX'.'J'.'5L2RlbGl2Z'.'X'.'J5b'.'G'.'9jYXR'.'pb24ucGhw',''.'Qm'.'l'.'0c'.'ml4XF'.'Nhb'.'G'.'Vc'.'VGF4XF'.'J'.'hdGVM'.'b2NhdGl'.'vblRhYmxl','bGl'.'iL3R'.'he'.'C9yYXRl'.'bG9'.'jYXRp'.'b'.'24'.'ucGhw','Q1Nhb'.'G'.'VCY'.'XN'.'rZXRGaWx0ZXI=','Z'.'2VuZXJ'.'hbC9'.'zY'.'W'.'xl'.'X2NvbmQucGh'.'w','Q1N'.'hbGV'.'Db25kQ'.'3RybEdyb3'.'Vw',''.'Z2'.'Vu'.'ZXJhbC9zYWx'.'lX2'.'NvbmQucGh'.'w','Q'.'1'.'Nhb'.'GVDb2'.'5kQ'.'3R'.'ybEJhc2tl'.'dEdyb3V'.'w','Z2VuZXJhbC9zYWxlX'.'2Nv'.'bm'.'QucGhw','Q1Nhb'.'GVDb'.'25kQ3Ryb'.'EJh'.'c2tldE'.'ZpZW'.'xkcw==','Z2'.'V'.'uZXJhbC'.'9zYWxl'.'X'.'2Nvbm'.'QucGhw',''.'Q1NhbGV'.'Db2'.'5'.'kQ3RybEJh'.'c2'.'t'.'ldFB'.'yb3Bz','Z2VuZXJhb'.'C9zYWxlX2N'.'vbmQucGhw','Q1N'.'h'.'bGVDb25kQ3Ry'.'bE9yZGVyRml'.'lb'.'GR'.'z','Z2VuZ'.'XJh'.'bC9'.'zYWxlX2'.'NvbmQucGhw','Q1'.'N'.'h'.'bGVDb25kQ'.'3RybEN'.'v'.'bW'.'1vb'.'g==','Z2VuZXJhb'.'C9z'.'YWxlX2N'.'vbmQuc'.'Ghw','Q1NhbGVDb2'.'5k'.'VHJlZQ==','Z2VuZXJhbC9zYWx'.'lX2Nvb'.'mQucG'.'h'.'w',''.'Q'.'1Nhb'.'G'.'VEaX'.'Njb3'.'Vu'.'d'.'EFj'.'dGlv'.'b'.'kFwcGx5','Z2VuZXJhbC9z'.'YW'.'xlX2FjdC5waHA=','Q1Nhb'.'GVBY3Rpb2'.'5Dd'.'HJsR3JvdXA=',''.'Z2VuZ'.'X'.'Jh'.'b'.'C9zYWx'.'l'.'X2FjdC5w'.'aH'.'A=','Q1Nh'.'bGV'.'BY3Rpb25Dd'.'H'.'Js'.'R'.'GVsaXZ'.'lcnk'.'=','Z2VuZ'.'XJ'.'hbC9'.'zYWxlX2Fjd'.'C'.'5'.'waHA=','Q1NhbGVBY'.'3Rpb'.'25D'.'dHJsQmFza2'.'V0R'.'3JvdX'.'A=','Z'.'2Vu'.'ZX'.'JhbC9zYWxlX2Fj'.'d'.'C5waHA=','Q1NhbG'.'V'.'BY3Rpb25'.'Dd'.'H'.'JsU3V'.'i'.'R3JvdXA=',''.'Z'.'2Vu'.'ZXJhb'.'C'.'9zYWxlX2FjdC5w'.'aHA=',''.'Q1NhbGVBY3'.'Rpb2'.'5Db25kQ3'.'Ry'.'b'.'E'.'J'.'h'.'c2tl'.'d'.'EZpZWxkcw'.'==','Z2'.'VuZXJhbC9zYWxlX2'.'FjdC5waH'.'A=',''.'Q1NhbGVBY3Rp'.'b'.'25Uc'.'mV'.'l','Z2'.'VuZXJhbC9zYWxlX2Fj'.'dC5w'.'aHA=','Q1NhbGVEaXNjb3'.'V'.'u'.'dENvbn'.'Z'.'l'.'cnQ=','Z2VuZ'.'XJhbC9'.'kaX'.'N'.'jb3'.'Vu'.'d'.'F9'.'jb252ZXJ0'.'L'.'n'.'Boc'.'A='.'=','Q1NhbGVQ'.'ZGY'.'=','Z2VuZ'.'XJhbC9wZGY'.'ucGh'.'w','Q1Nh'.'b'.'GVZ'.'TUh'.'hbmRsZXI=','Z'.'2VuZXJhb'.'C95bV9oYW'.'5kbGVyLnBocA'.'==','Qml'.'0'.'cml4XFNhb'.'GVc'.'VHJhZGl'.'uZ1Bs'.'YXR'.'mb3JtVGFibG'.'U=','b'.'Gl'.'iL3RyY'.'WRpb'.'m'.'dwbG'.'F0Zm9ybS5w'.'aHA'.'=','Q1'.'NhbG'.'VZTUx'.'vY2F0aW'.'9u',''.'Z2VuZ'.'XJhbC'.'95bV9sb2Nh'.'dGlvbi5waH'.'A=','XE'.'JpdHJpeFx'.'TYWxlXEl'.'ud'.'GVybm'.'Fsc1'.'xEaXNjb'.'3VudFRhYm'.'xl','b'.'Gl'.'i'.'L2lud'.'GVybmFsc'.'y9ka'.'XNjb3Vud'.'C5'.'waHA'.'=','XEJpdHJpeFxTYWxlXEludGVybmFsc'.'1'.'xEaXNj'.'b3V'.'u'.'d'.'EN'.'v'.'dX'.'BvblR'.'hYmxl','bGl'.'iL2ludG'.'VybmFs'.'cy9kaXNjb3VudGNvdXBvbi'.'5w'.'aHA=','XEJ'.'pdHJpeFxTYW'.'xlXElud'.'GV'.'ybmFsc1'.'x'.'EaX'.'Njb'.'3VudEVu'.'dGl0'.'a'.'WVzVGFibGU=','b'.'Gli'.'L2ludGVybmFscy9kaXN'.'j'.'b3Vu'.'dG'.'VudGl0aWVz'.'LnBoc'.'A='.'=','XEJpdH'.'JpeFx'.'TYW'.'xlXElud'.'GVybmFsc1'.'xEaX'.'Njb3V'.'u'.'dE'.'dyb3Vw'.'VGFibGU=',''.'bGliL2lu'.'dGVybmFscy9kaX'.'N'.'j'.'b3Vu'.'dGd'.'yb3VwLn'.'BocA'.'==','XEJpdHJp'.'eFxTYWxlXE'.'ludG'.'Vyb'.'mFs'.'c1x'.'EaXNjb'.'3V'.'u'.'d'.'E1'.'vZH'.'Vs'.'ZVR'.'hYmxl','bGliL2ludGVybmFs'.'cy9kaXNjb3V'.'udG1vZ'.'HVsZ'.'S5w'.'aHA=','XEJpdHJ'.'peF'.'xT'.'YWxlXERpc2NvdW50Q291cG9uc01hbmFnZXI=','bGliL'.'2Rpc'.'2NvdW50'.'Y'.'291cG9uLnBoc'.'A==',''.'TkF'.'N'.'R'.'Q==',''.'QVND',''.'R'.'lVTRVJfSUQ=','TE'.'lE','T1JERV'.'J'.'fSUQ=','TlVMTA==',''.'TkFNR'.'Q==','QVND','Rl'.'VTRVJf'.'SUQ=','TEl'.'E','T'.'1JERV'.'JfSUQ=','T'.'l'.'VMTA'.'==','Q0F'.'MTEJ'.'BQ0tf'.'Rl'.'VOQw='.'=','U'.'F'.'JPRFVDVF9QUk9WSUR'.'FUl'.'9DTEFTU'.'w'.'==','SUQ=','Q0FMT'.'E'.'JB'.'Q'.'0t'.'f'.'R'.'lVOQw'.'='.'=',''.'TU9EVUxF','U'.'FJPRFVDVF9JR'.'A'.'==','UVVB'.'TlRJVFk=',''.'UFJPR'.'F'.'V'.'DVF9QU'.'k9WSURFUl9'.'DTEFT'.'Uw==','SUQ=','U'.'F'.'NfU1'.'R'.'BVFVT',''.'WQ==','UEFZRUQ=',''.'T'.'g==','Q1VSUkVOQ1k=',''.'U'.'FNfQ'.'1VSUk'.'V'.'OQ1k=',''.'UFJ'.'J'.'Q0U'.'=','UF'.'N'.'fU1'.'V'.'N','S'.'UQ=','WQ'.'==','Q'.'V'.'B'.'QTElDQVR'.'JT04=','U0FMRV9JTkN'.'MV'.'U'.'RFX0NVUl'.'JFTkNZ','U0'.'FMRV9ERVBF'.'TkRFU'.'19DV'.'VJSRU5DWQ==',''.'RE9D'.'VU1FTl'.'RfUk9PVA'.'==','L2JpdHJp'.'e'.'C9t'.'b'.'2R1bG'.'V'.'zL3Nhb'.'GUvcnUvaW5j'.'bHV'.'kZ'.'S5wa'.'HA=',''.'RE9DVU1FTl'.'R'.'fUk9PVA==','L2JpdHJpeC9t'.'b2R1bGVzL3N'.'hbGUvcnUvaW'.'5j'.'bHV'.'kZS'.'5waHA=','TElE',''.'c'.'2'.'FsZQ'.'='.'=',''.'cGF5X2F'.'tb3V'.'udA==',''.'YTo'.'0On'.'tpOjE7YToyOntzOj'.'Y'.'6'.'IkFNT1'.'VOVCI7czoy'.'O'.'iI'.'xMCI7cz'.'o4OiJDV'.'VJ'.'SR'.'U5DWSI7cz'.'ozOiJFVVIiO31pOjI7YT'.'oyOntzOjY6IkFN'.'T1VOV'.'CI7czoy'.'OiI'.'yMCI7czo4OiJDVVJSRU'.'5DWSI7'.'czo'.'zOiJFVVIiO3'.'1pOjM7YT'.'oyOnt'.'zO'.'jY'.'6IkFNT1VOV'.'CI'.'7cz'.'oyOi'.'IzMC'.'I'.'7cz'.'o'.'4O'.'iJD'.'V'.'VJSRU5DWSI7czozOiJ'.'FVV'.'IiO31p'.'O'.'jQ'.'7YToyO'.'ntz'.'OjY6I'.'kFNT'.'1V'.'OV'.'C'.'I7c'.'zo'.'yO'.'iI0MCI7czo'.'4'.'OiJDVVJSRU5'.'DWSI7czozOiJFVV'.'I'.'iO319','QU1PVU5U','Q1VS'.'UkVO'.'Q1k=','Q'.'1'.'VSUkV'.'O'.'Q1k=',''.'QU1'.'PVU5U',''.'Q1VSUkVOQ1'.'k=','T'.'UF'.'OVU'.'FM','UGF5'.'bW'.'VudCB'.'0'.'byB1'.'c2'.'V'.'yIGF'.'jY29'.'1'.'bnQ=','','TkFN'.'RQ='.'=','TkFNRQ='.'=','TEFTVF9OQU1F',''.'TEFT'.'VF9OQU1F','U'.'0V'.'D'.'T05EX05BTUU=','U0VD'.'T05'.'EX05BTUU=','TE9HSU4'.'=','TE'.'9HSU'.'4=','Wzxh'.'IGhyZW'.'Y9Ii9iaX'.'R'.'yaXgvYWRt'.'aW4vdXN'.'lc'.'l'.'9lZ'.'Gl0LnBocD9JRD0=','J'.'m'.'xhbmc'.'9','Ij4'.'=','PC9hPl'.'0g','U2'.'FsZ'.'UFjY'.'291bn'.'R'.'z','P'.'GEgaHJlZj0iL2J'.'pdHJpeC9hZ'.'G'.'1'.'pbi9zY'.'Wx'.'lX2J1eWVyc'.'1'.'9'.'w'.'cm9maWxlLnBo'.'cD9'.'VU0VSX0lEPQ==',''.'Jmxh'.'bmc9','Ij4=','PGEgaHJ'.'lZj0i'.'L2JpdHJpeC9hZG1pbi9'.'1c2'.'Vy'.'X2Vk'.'aX'.'Q'.'ucGhwP0lEP'.'Q==',''.'Jm'.'xhbmc9','Ij4=','PC9h'.'Pg==','Y2F0YWxv'.'Zw==','UFJPRF'.'VDVF9'.'JRA='.'=','TUVBU1VSRV'.'9URVhU','flNZ'.'TUJPTF9SVVM=','TU'.'VBU'.'1VSRQ==','SU'.'Q'.'=','SUQ'.'=','TUV'.'B'.'U1VSRQ==','SUQ=',''.'S'.'UQ=','TUVBU1VSRQ='.'=','TUVBU1'.'VSRQ==','TUV'.'BU1'.'VSR'.'Q==','TUVBU1'.'VSRQ='.'=','TUVBU1V'.'SRQ'.'==','SUQ'.'=','SUQ=','SUQ=','U1lN'.'Qk9MX1J'.'VUw==','SUQ=','SUQ=','SUQ'.'=','S'.'UQ=','SUQ=','TU'.'VBU'.'1VSRV9'.'URVh'.'U','U1lNQk9MX1JVU'.'w==','TU'.'VBU1V'.'SRQ'.'='.'=','SUQ=','Y2F0Y'.'WxvZw==','UFJ'.'P'.'R'.'FVD'.'VF9JRA='.'=','UFJ'.'PR'.'FV'.'DVF9'.'JR'.'A='.'=','UF'.'JPR'.'F'.'VDVF9JRA==',''.'UFJPR'.'FVDV'.'F9JRA==','UFJPRFVD'.'VF9JRA='.'=',''.'UFJ'.'PRFVDVF9'.'JRA==','UkFUSU8=','UFJPRF'.'V'.'DVF'.'9'.'J'.'RA==','UFJP'.'RFVDVF9JRA==','TUV'.'BU'.'1VSRV9'.'SQV'.'RJ'.'Tw==','UkF'.'USU8=','aW'.'J'.'sb2Nr','Y2hl'.'Y2tQcm9kd'.'W'.'N0UHJvcE'.'NvZG'.'U=','PUlE','SUQ=','SUJ'.'M'.'T0NLX'.'0l'.'E','SUJMT0'.'NLX0lE','SUQ=','SUJMT0NLX'.'0'.'lE','P'.'U'.'lE','SUQ=','LCA=','LC'.'A=','','UF'.'JPU'.'EVS'.'V'.'Fl'.'f','Q09'.'ERQ==','Q'.'09ER'.'Q='.'=','','Og==','T'.'k'.'F'.'NRQ==','Q09ERQ==','Q0'.'9ERQ==','','Og'.'==','TkFN'.'RQ==','V'.'k'.'F'.'MV'.'UU=',''.'VkFMVUU=');return base64_decode($_1188527770[$_171521712]);}?><?  use Bitrix\Main\Loader; $GLOBALS['____1996017285'][0](___1962356472(0), false);  global $DBType; $GLOBALS['_____2095551865'][0](__FILE__); $GLOBALS[___1962356472(1)]= array( ___1962356472(2) => GetMessage(___1962356472(3)), ___1962356472(4) => GetMessage(___1962356472(5)), ___1962356472(6) => GetMessage(___1962356472(7)), ___1962356472(8) => GetMessage(___1962356472(9)), ___1962356472(10) => GetMessage(___1962356472(11)), ___1962356472(12) => GetMessage(___1962356472(13)), ___1962356472(14) => GetMessage(___1962356472(15)), ___1962356472(16) => GetMessage(___1962356472(17))); if(!Loader::includeModule(___1962356472(18))) return false; $GLOBALS['____1996017285'][1](___1962356472(19), round(0+3)); $GLOBALS['____1996017285'][2](___1962356472(20), round(0+1.5+1.5)); $GLOBALS['____1996017285'][3](___1962356472(21), round(0+8640+8640+8640+8640+8640)); $GLOBALS['____1996017285'][4](___1962356472(22), round(0+1800+1800+1800+1800)); $GLOBALS['____1996017285'][5](___1962356472(23), ___1962356472(24)); $GLOBALS['____1996017285'][6](___1962356472(25), round(0+1800+1800)*round(0+8+8+8)); global $SALE_TIME_PERIOD_TYPES; $SALE_TIME_PERIOD_TYPES= array( ___1962356472(26) => GetMessage(___1962356472(27)), ___1962356472(28) => GetMessage(___1962356472(29)), ___1962356472(30) => GetMessage(___1962356472(31)), ___1962356472(32) => GetMessage(___1962356472(33)), ___1962356472(34) => GetMessage(___1962356472(35)), ___1962356472(36) => GetMessage(___1962356472(37)), ___1962356472(38) => GetMessage(___1962356472(39))); $GLOBALS['____1996017285'][7](___1962356472(40), round(0+0.66666666666667+0.66666666666667+0.66666666666667)); $GLOBALS['____1996017285'][8](___1962356472(41), round(0+1+1+1)); $GLOBALS['____1996017285'][9](___1962356472(42), ___1962356472(43)); $GLOBALS[___1962356472(44)]= array( ___1962356472(45) => array(___1962356472(46) => ___1962356472(47), ___1962356472(48) => GetMessage(___1962356472(49)), ___1962356472(50) => ___1962356472(51), ___1962356472(52) => ___1962356472(53), ___1962356472(54) => ___1962356472(55)), ___1962356472(56) => array(___1962356472(57) => GetMessage(___1962356472(58)), ___1962356472(59) => GetMessage(___1962356472(60)), ___1962356472(61) => ___1962356472(62), ___1962356472(63) => ___1962356472(64), ___1962356472(65) => ___1962356472(66)), ___1962356472(67) => array(___1962356472(68) => GetMessage(___1962356472(69)), ___1962356472(70) => GetMessage(___1962356472(71)), ___1962356472(72) => ___1962356472(73), ___1962356472(74) => ___1962356472(75), ___1962356472(76) => ___1962356472(77)), ___1962356472(78) => array(___1962356472(79) => GetMessage(___1962356472(80)), ___1962356472(81) => GetMessage(___1962356472(82)), ___1962356472(83) => ___1962356472(84), ___1962356472(85) => ___1962356472(86), ___1962356472(87) => ___1962356472(88)), ___1962356472(89) => array(___1962356472(90) => GetMessage(___1962356472(91)), ___1962356472(92) => GetMessage(___1962356472(93)), ___1962356472(94) => ___1962356472(95), ___1962356472(96) => ___1962356472(97), ___1962356472(98) => ___1962356472(99)), ___1962356472(100) => array(___1962356472(101) => GetMessage(___1962356472(102)), ___1962356472(103) => GetMessage(___1962356472(104)), ___1962356472(105) => ___1962356472(106), ___1962356472(107) => ___1962356472(108), ___1962356472(109) => ___1962356472(110)), ___1962356472(111) => array(___1962356472(112) => GetMessage(___1962356472(113)), ___1962356472(114) => GetMessage(___1962356472(115)), ___1962356472(116) => ___1962356472(117), ___1962356472(118) => ___1962356472(119), ___1962356472(120) => ___1962356472(121)), ___1962356472(122) => array(___1962356472(123) => GetMessage(___1962356472(124)), ___1962356472(125) => GetMessage(___1962356472(126)), ___1962356472(127) => ___1962356472(128), ___1962356472(129) => ___1962356472(130), ___1962356472(131) => ___1962356472(132)), ___1962356472(133) => array(___1962356472(134) => GetMessage(___1962356472(135)), ___1962356472(136) => GetMessage(___1962356472(137)), ___1962356472(138) => ___1962356472(139), ___1962356472(140) => ___1962356472(141), ___1962356472(142) => ___1962356472(143)), ___1962356472(144) => array(___1962356472(145) => GetMessage(___1962356472(146)), ___1962356472(147) => GetMessage(___1962356472(148)), ___1962356472(149) => ___1962356472(150), ___1962356472(151) => ___1962356472(152), ___1962356472(153) => ___1962356472(154)), ___1962356472(155) => array(___1962356472(156) => GetMessage(___1962356472(157)), ___1962356472(158) => GetMessage(___1962356472(159)), ___1962356472(160) => ___1962356472(161), ___1962356472(162) => ___1962356472(163), ___1962356472(164) => ___1962356472(165)), ___1962356472(166) => array(___1962356472(167) => GetMessage(___1962356472(168)), ___1962356472(169) => GetMessage(___1962356472(170)), ___1962356472(171) => ___1962356472(172), ___1962356472(173) => ___1962356472(174), ___1962356472(175) => ___1962356472(176)), ___1962356472(177) => array(___1962356472(178) => GetMessage(___1962356472(179)), ___1962356472(180) => GetMessage(___1962356472(181)), ___1962356472(182) => ___1962356472(183), ___1962356472(184) => ___1962356472(185), ___1962356472(186) => ___1962356472(187)), ___1962356472(188) => array(___1962356472(189) => GetMessage(___1962356472(190)), ___1962356472(191) => GetMessage(___1962356472(192)), ___1962356472(193) => ___1962356472(194), ___1962356472(195) => ___1962356472(196), ___1962356472(197) => ___1962356472(198)), ___1962356472(199) => array(___1962356472(200) => GetMessage(___1962356472(201)), ___1962356472(202) => GetMessage(___1962356472(203)), ___1962356472(204) => ___1962356472(205), ___1962356472(206) => ___1962356472(207), ___1962356472(208) => ___1962356472(209)), ___1962356472(210) => array(___1962356472(211) => GetMessage(___1962356472(212)), ___1962356472(213) => GetMessage(___1962356472(214)), ___1962356472(215) => ___1962356472(216), ___1962356472(217) => ___1962356472(218), ___1962356472(219) => ___1962356472(220)), ___1962356472(221) => array(___1962356472(222) => GetMessage(___1962356472(223)), ___1962356472(224) => GetMessage(___1962356472(225)), ___1962356472(226) => ___1962356472(227), ___1962356472(228) => ___1962356472(229), ___1962356472(230) => ___1962356472(231)), ___1962356472(232) => array(___1962356472(233) => GetMessage(___1962356472(234)), ___1962356472(235) => GetMessage(___1962356472(236)), ___1962356472(237) => ___1962356472(238), ___1962356472(239) => ___1962356472(240), ___1962356472(241) => ___1962356472(242)), ___1962356472(243) => array(___1962356472(244) => GetMessage(___1962356472(245)), ___1962356472(246) => GetMessage(___1962356472(247)), ___1962356472(248) => ___1962356472(249), ___1962356472(250) => ___1962356472(251), ___1962356472(252) => ___1962356472(253)), ___1962356472(254) => array(___1962356472(255) => GetMessage(___1962356472(256)), ___1962356472(257) => GetMessage(___1962356472(258)), ___1962356472(259) => ___1962356472(260), ___1962356472(261) => ___1962356472(262), ___1962356472(263) => ___1962356472(264)), ___1962356472(265) => array(___1962356472(266) => GetMessage(___1962356472(267)), ___1962356472(268) => GetMessage(___1962356472(269)), ___1962356472(270) => ___1962356472(271), ___1962356472(272) => ___1962356472(273), ___1962356472(274) => ___1962356472(275)), ___1962356472(276) => array(___1962356472(277) => GetMessage(___1962356472(278)), ___1962356472(279) => GetMessage(___1962356472(280)), ___1962356472(281) => ___1962356472(282), ___1962356472(283) => ___1962356472(284), ___1962356472(285) => ___1962356472(286))); CModule::$GLOBALS['_____2095551865'][1]( ___1962356472(287), array( ___1962356472(288) => $DBType.___1962356472(289), ___1962356472(290) => $DBType.___1962356472(291), ___1962356472(292) => ___1962356472(293), ___1962356472(294) => ___1962356472(295), ___1962356472(296) => $DBType.___1962356472(297), ___1962356472(298) => $DBType.___1962356472(299), ___1962356472(300) => $DBType.___1962356472(301), ___1962356472(302) => ___1962356472(303), ___1962356472(304) => $DBType.___1962356472(305), ___1962356472(306) => $DBType.___1962356472(307), ___1962356472(308) => $DBType.___1962356472(309), ___1962356472(310) => $DBType.___1962356472(311), ___1962356472(312) => $DBType.___1962356472(313), ___1962356472(314) => $DBType.___1962356472(315), ___1962356472(316) => $DBType.___1962356472(317), ___1962356472(318) => $DBType.___1962356472(319), ___1962356472(320) => $DBType.___1962356472(321), ___1962356472(322) => ___1962356472(323), ___1962356472(324) => $DBType.___1962356472(325), ___1962356472(326) => $DBType.___1962356472(327), ___1962356472(328) => ___1962356472(329), ___1962356472(330) => ___1962356472(331), ___1962356472(332) => $DBType.___1962356472(333), ___1962356472(334) => $DBType.___1962356472(335), ___1962356472(336) => $DBType.___1962356472(337), ___1962356472(338) => $DBType.___1962356472(339), ___1962356472(340) => $DBType.___1962356472(341), ___1962356472(342) => $DBType.___1962356472(343), ___1962356472(344) => $DBType.___1962356472(345), ___1962356472(346) => $DBType.___1962356472(347), ___1962356472(348) => $DBType.___1962356472(349), ___1962356472(350) => $DBType.___1962356472(351), ___1962356472(352) => $DBType.___1962356472(353), ___1962356472(354) => $DBType.___1962356472(355), ___1962356472(356) => $DBType.___1962356472(357), ___1962356472(358) => $DBType.___1962356472(359), ___1962356472(360) => $DBType.___1962356472(361), ___1962356472(362) => $DBType.___1962356472(363), ___1962356472(364) => $DBType.___1962356472(365), ___1962356472(366) => $DBType.___1962356472(367), ___1962356472(368) => $DBType.___1962356472(369), ___1962356472(370) => ___1962356472(371), ___1962356472(372) => ___1962356472(373), ___1962356472(374) => $DBType.___1962356472(375), ___1962356472(376) => $DBType.___1962356472(377), ___1962356472(378) => ___1962356472(379), ___1962356472(380) => ___1962356472(381), ___1962356472(382) => ___1962356472(383), ___1962356472(384) => ___1962356472(385), ___1962356472(386) => ___1962356472(387), ___1962356472(388) => ___1962356472(389), ___1962356472(390) => ___1962356472(391), ___1962356472(392) => ___1962356472(393), ___1962356472(394) => ___1962356472(395), ___1962356472(396) => ___1962356472(397), ___1962356472(398) => $DBType.___1962356472(399), ___1962356472(400) => $DBType.___1962356472(401), ___1962356472(402) => ___1962356472(403), ___1962356472(404) => ___1962356472(405), ___1962356472(406) => ___1962356472(407), ___1962356472(408) => ___1962356472(409), ___1962356472(410) => ___1962356472(411), ___1962356472(412) => ___1962356472(413), ___1962356472(414) => ___1962356472(415), ___1962356472(416) => ___1962356472(417), ___1962356472(418) => ___1962356472(419), ___1962356472(420) => ___1962356472(421), ___1962356472(422) => ___1962356472(423), ___1962356472(424) => ___1962356472(425), ___1962356472(426) => ___1962356472(427), ___1962356472(428) => ___1962356472(429), ___1962356472(430) => ___1962356472(431), ___1962356472(432) => ___1962356472(433), ___1962356472(434) => ___1962356472(435), ___1962356472(436) => ___1962356472(437), ___1962356472(438) => ___1962356472(439), ___1962356472(440) => ___1962356472(441), ___1962356472(442) => ___1962356472(443), ___1962356472(444) => ___1962356472(445), ___1962356472(446) => ___1962356472(447), ___1962356472(448) => ___1962356472(449), ___1962356472(450) => ___1962356472(451), ___1962356472(452) => ___1962356472(453), ___1962356472(454) => ___1962356472(455), ___1962356472(456) => ___1962356472(457), ___1962356472(458) => ___1962356472(459), ___1962356472(460) => ___1962356472(461), ___1962356472(462) => ___1962356472(463), ___1962356472(464) => ___1962356472(465), ___1962356472(466) => ___1962356472(467), ___1962356472(468) => ___1962356472(469),     ___1962356472(470) => ___1962356472(471), ___1962356472(472) => ___1962356472(473), ___1962356472(474) => ___1962356472(475), ___1962356472(476) => ___1962356472(477), ___1962356472(478) => ___1962356472(479),  ___1962356472(480) => ___1962356472(481), ___1962356472(482) => ___1962356472(483), ___1962356472(484) => ___1962356472(485), ___1962356472(486) => ___1962356472(487),  ___1962356472(488) => ___1962356472(489),  ___1962356472(490) => ___1962356472(491), ___1962356472(492) => ___1962356472(493), ___1962356472(494) => ___1962356472(495),  ___1962356472(496) => ___1962356472(497), ___1962356472(498) => ___1962356472(499), ___1962356472(500) => ___1962356472(501),  ___1962356472(502) => ___1962356472(503), ___1962356472(504) => ___1962356472(505).ToLower($DBType).___1962356472(506), ___1962356472(507) => ___1962356472(508),  ___1962356472(509) => ___1962356472(510), ___1962356472(511) => ___1962356472(512), ___1962356472(513) => ___1962356472(514), ___1962356472(515) => ___1962356472(516), ___1962356472(517) => ___1962356472(518), ___1962356472(519) => ___1962356472(520), ___1962356472(521) => ___1962356472(522), ___1962356472(523) => ___1962356472(524),  ___1962356472(525) => ___1962356472(526), ___1962356472(527) => ___1962356472(528), ___1962356472(529) => ___1962356472(530),  ___1962356472(531) => ___1962356472(532),  ___1962356472(533) => ___1962356472(534),   ___1962356472(535) => ___1962356472(536),     ___1962356472(537) => ___1962356472(538),  ___1962356472(539) => ___1962356472(540), ___1962356472(541) => ___1962356472(542),  ___1962356472(543) => ___1962356472(544), ___1962356472(545) => ___1962356472(546), ___1962356472(547) => ___1962356472(548), ___1962356472(549) => ___1962356472(550), ___1962356472(551) => ___1962356472(552), ___1962356472(553) => ___1962356472(554), ___1962356472(555) => ___1962356472(556), ___1962356472(557) => ___1962356472(558), ___1962356472(559) => ___1962356472(560), ___1962356472(561) => ___1962356472(562), ___1962356472(563) => ___1962356472(564), ___1962356472(565) => ___1962356472(566), ___1962356472(567) => ___1962356472(568), ___1962356472(569) => ___1962356472(570), ___1962356472(571) => ___1962356472(572), ___1962356472(573) => ___1962356472(574), ___1962356472(575) => ___1962356472(576), ___1962356472(577) => ___1962356472(578), ___1962356472(579) => ___1962356472(580), ___1962356472(581) => ___1962356472(582), ___1962356472(583) => ___1962356472(584), ___1962356472(585) => ___1962356472(586), ___1962356472(587) => ___1962356472(588), ___1962356472(589) => ___1962356472(590), ___1962356472(591) => ___1962356472(592), ___1962356472(593) => ___1962356472(594))); function GetBasketListSimple($_964419114= False){ $_1231452589= CSaleBasket::GetBasketUserID($_964419114); if($_1231452589>(153*2-306)) return CSaleBasket::$GLOBALS['_____2095551865'][2]( array(___1962356472(595) => ___1962356472(596)), array(___1962356472(597) => $_1231452589, ___1962356472(598) => SITE_ID, ___1962356472(599) => ___1962356472(600))); else return False;} function GetBasketList($_964419114= False){ $_1231452589= CSaleBasket::GetBasketUserID($_964419114); $_1080999282= array(); if($_1231452589> min(18,0,6)){ $_2124417791= CSaleBasket::$GLOBALS['_____2095551865'][3]( array(___1962356472(601) => ___1962356472(602)), array(___1962356472(603) => $_1231452589, ___1962356472(604) => SITE_ID, ___1962356472(605) => ___1962356472(606))); while($_1250759135= $_2124417791->$GLOBALS['_____2095551865'][4]()){ if($GLOBALS['____1996017285'][10]($_1250759135[___1962356472(607)])>(1444/2-722) || $GLOBALS['____1996017285'][11]($_1250759135[___1962356472(608)])>(1196/2-598)){ CSaleBasket::UpdatePrice($_1250759135[___1962356472(609)], $_1250759135[___1962356472(610)], $_1250759135[___1962356472(611)], $_1250759135[___1962356472(612)], $_1250759135[___1962356472(613)], $_1250759135[___1962356472(614)]); $_1250759135= CSaleBasket::$GLOBALS['_____2095551865'][5]($_1250759135[___1962356472(615)]);} $_1080999282[]= $_1250759135;}} return $_1080999282;} function SaleFormatCurrency($_1416527814, $_1774976032, $_1734376193= false){ return CCurrencyLang::CurrencyFormat($_1416527814, $_1774976032,!($_1734376193 === true));} function AutoPayOrder($_1145000245){ $_1145000245= (int)$_1145000245; if($_1145000245 <= min(122,0,40.666666666667)) return false; $_1836888656= CSaleOrder::$GLOBALS['_____2095551865'][6]($_1145000245); if(!$_1836888656) return false; if($_1836888656[___1962356472(616)] != ___1962356472(617)) return false; if($_1836888656[___1962356472(618)] != ___1962356472(619)) return false; if($_1836888656[___1962356472(620)] == $_1836888656[___1962356472(621)] && DoubleVal($_1836888656[___1962356472(622)]) == DoubleVal($_1836888656[___1962356472(623)])){ if(CSaleOrder::PayOrder($_1836888656[___1962356472(624)], ___1962356472(625), true, false)) return true;} return false;} function CurrencyModuleUnInstallSale(){ $GLOBALS[___1962356472(626)]->$GLOBALS['_____2095551865'][7](GetMessage(___1962356472(627)), ___1962356472(628)); return false;} if($GLOBALS['____1996017285'][12]($_SERVER[___1962356472(629)].___1962356472(630))) include($_SERVER[___1962356472(631)].___1962356472(632)); function PayUserAccountDeliveryOrderCallback($_847869859, $_1820454280, $_1672223728, $_1779241238, $_575003548= 1){ global $DB; $_847869859= IntVal($_847869859); $_1820454280= IntVal($_1820454280); $_1672223728=($_1672223728? True: False); $_1779241238= IntVal($_1779241238); if($_1820454280 <= min(6,0,2)) return False; if($_1779241238 <=(1008/2-504)) return False; if(!($_1836888656= CSaleOrder::$GLOBALS['_____2095551865'][8]($_1779241238))) return False; $_1941580263= CSaleLang::GetLangCurrency($_1836888656[___1962356472(633)]); $_2023542296= $GLOBALS['____1996017285'][13](COption::$GLOBALS['_____2095551865'][9](___1962356472(634), ___1962356472(635), ___1962356472(636))); if(!$GLOBALS['____1996017285'][14]($_847869859, $_2023542296)) return False; $_348088051= $_2023542296[$_847869859][___1962356472(637)]* $_575003548; $_98170867= $_2023542296[$_847869859][___1962356472(638)]; if($_2023542296[$_847869859][___1962356472(639)] != $_1941580263){ $_348088051= CCurrencyRates::ConvertCurrency($_2023542296[$_847869859][___1962356472(640)], $_2023542296[$_847869859][___1962356472(641)], $_1941580263)* $_575003548; $_98170867= $_1941580263;} if(!CSaleUserAccount::UpdateAccount($_1820454280,($_1672223728? $_348088051:-$_348088051), $_98170867, ___1962356472(642), $_1779241238, ___1962356472(643))) return False; return True;}  function GetFormatedUserName($_1159666574, $_2030349288= true){ $_1802484492= ___1962356472(644); $_1159666574= IntVal($_1159666574); if($_1159666574>(1352/2-676)){ if(!isset($_450674153[$_1159666574]) ||!$GLOBALS['____1996017285'][15]($_450674153[$_1159666574])){ $_1609471389= CUser::$GLOBALS['_____2095551865'][10]($_1159666574); if($_989219743= $_1609471389->$GLOBALS['_____2095551865'][11]()){ $_450674153[$_1159666574]= CUser::FormatName( CSite::GetNameFormat(false), array( ___1962356472(645) => $_989219743[___1962356472(646)], ___1962356472(647) => $_989219743[___1962356472(648)], ___1962356472(649) => $_989219743[___1962356472(650)], ___1962356472(651) => $_989219743[___1962356472(652)]), true, true);}} if($_2030349288) $_1802484492 .= ___1962356472(653).$_1159666574.___1962356472(654).LANGUAGE_ID.___1962356472(655).$_1159666574.___1962356472(656); if(CBXFeatures::IsFeatureEnabled(___1962356472(657))) $_1802484492 .= ___1962356472(658).$_1159666574.___1962356472(659).LANGUAGE_ID.___1962356472(660); else $_1802484492 .= ___1962356472(661).$_1159666574.___1962356472(662).LANGUAGE_ID.___1962356472(663); $_1802484492 .= $_450674153[$_1159666574]; $_1802484492 .= ___1962356472(664);} return $_1802484492;}  function getMeasures($_983801972){ if(Loader::includeModule(___1962356472(665))){ $_1425030598= CCatalogMeasure::getDefaultMeasure(true, true); $_1946484845= array(); $_74254952= array(); foreach($_983801972 as $_1796920750 => $_2080684764){ $_847869859= (int)$_2080684764[___1962356472(666)]; if(!isset($_74254952[$_847869859])) $_74254952[$_847869859]= array(); $_74254952[$_847869859][]= $_1796920750; $_1946484845[]= $_847869859; $_983801972[$_1796920750][___1962356472(667)]= $_1425030598[___1962356472(668)]; $_983801972[$_1796920750][___1962356472(669)]= min(34,0,11.333333333333);} unset($_847869859, $_1796920750, $_2080684764); if(!empty($_1946484845)){ $_344448868= array(); $_1672352462= CCatalogProduct::$GLOBALS['_____2095551865'][12]( array(), array(___1962356472(670) => $_1946484845), false, false, array(___1962356472(671), ___1962356472(672))); while($_1080999282= $_1672352462->$GLOBALS['_____2095551865'][13]()){ $_1080999282[___1962356472(673)]= (int)$_1080999282[___1962356472(674)]; $_1080999282[___1962356472(675)]= (int)$_1080999282[___1962356472(676)]; if(!isset($_344448868[$_1080999282[___1962356472(677)]])) $_344448868[$_1080999282[___1962356472(678)]]= array(); $_344448868[$_1080999282[___1962356472(679)]][]= $_1080999282[___1962356472(680)];} unset($_1080999282, $_1672352462); if(!empty($_344448868)){ $_1443659060= CCatalogMeasure::$GLOBALS['_____2095551865'][14]( array(), array(___1962356472(681) => $GLOBALS['____1996017285'][16]($_344448868)), false, false, array(___1962356472(682), ___1962356472(683))); while($_1111531262= $_1443659060->$GLOBALS['_____2095551865'][15]()){ $_1111531262[___1962356472(684)]= (int)$_1111531262[___1962356472(685)]; if(isset($_344448868[$_1111531262[___1962356472(686)]]) &&!empty($_344448868[$_1111531262[___1962356472(687)]])){ foreach($_344448868[$_1111531262[___1962356472(688)]] as&$_847869859){ if(isset($_74254952[$_847869859]) &&!empty($_74254952[$_847869859])){ foreach($_74254952[$_847869859] as&$_1796920750){ $_983801972[$_1796920750][___1962356472(689)]= $_1111531262[___1962356472(690)]; $_983801972[$_1796920750][___1962356472(691)]= $_1111531262[___1962356472(692)];} unset($_1796920750);}} unset($_847869859);}}}}} return $_983801972;}  function getRatio($_983801972){ if(Loader::includeModule(___1962356472(693))){ $_1656383693= array(); $_1946484845= array(); foreach($_983801972 as $_100855462 => $_2080684764){ $_1946484845[$_2080684764[___1962356472(694)]]= $_2080684764[___1962356472(695)]; if(!isset($_1656383693[$_2080684764[___1962356472(696)]])) $_1656383693[$_2080684764[___1962356472(697)]]= array(); $_1656383693[$_2080684764[___1962356472(698)]][]= $_100855462;} if(!empty($_1946484845)){ $_641315522= CCatalogMeasureRatio::getList(array(), $_1946484845, false, false, array(___1962356472(699), ___1962356472(700))); while($_1943061120= $_641315522->$GLOBALS['_____2095551865'][16]()){ if(empty($_1656383693[$_1943061120[___1962356472(701)]])) continue; foreach($_1656383693[$_1943061120[___1962356472(702)]] as $_100855462){ $_983801972[$_100855462][___1962356472(703)]= $_1943061120[___1962356472(704)];}}} unset($_1946484845, $_1656383693);} return $_983801972;}  function getProductProps($_1946484845, $_1158035868){ if(!Loader::includeModule(___1962356472(705))) return array(); if(empty($_1946484845)) return array(); $_1158035868= $GLOBALS['____1996017285'][17]($_1158035868, ___1962356472(706)); $_66588294= array(); $_1633272055= array(); $_1250759135= CIBlockElement::$GLOBALS['_____2095551865'][17]( array(), array(___1962356472(707) => $GLOBALS['____1996017285'][18]($_1946484845)), false, false, array(___1962356472(708), ___1962356472(709))); while($_304559119= $_1250759135->$GLOBALS['_____2095551865'][18]()) $_1633272055[$_304559119[___1962356472(710)]][]= $_304559119[___1962356472(711)];  foreach($_1633272055 as $_2055436778 => $_1867147990) { $_1250759135= CIBlockElement::$GLOBALS['_____2095551865'][19]( array(), array(___1962356472(712) => $_2055436778, ___1962356472(713) => $_1867147990), false, false, $_1158035868); while($_304559119= $_1250759135->$GLOBALS['_____2095551865'][20]()){ $_1208306768= $_304559119[___1962356472(714)]; foreach($_304559119 as $_100855462 => $_524804540){ if(!isset($_66588294[$_1208306768])) $_66588294[$_1208306768]= array(); if(isset($_66588294[$_1208306768][$_100855462]) &&!$GLOBALS['____1996017285'][19]($_66588294[$_1208306768][$_100855462]) &&!$GLOBALS['____1996017285'][20]($_524804540, $GLOBALS['____1996017285'][21](___1962356472(715), $_66588294[$_1208306768][$_100855462]))) { $_66588294[$_1208306768][$_100855462] .= ___1962356472(716).$_524804540;} elseif(empty($_66588294[$_1208306768][$_100855462])){ $_66588294[$_1208306768][$_100855462]= $_524804540;}}}} return $_66588294;} function checkProductPropCode($_1979280081){ return($_1979280081 !== null && $_1979280081 !== ___1962356472(717) && $_1979280081 !== ___1962356472(718));} function updateBasketOffersProps($_981484295, $_1306176016){ if(!$GLOBALS['____1996017285'][22]($_981484295) ||!$GLOBALS['____1996017285'][23]($_1306176016)) return false; $_1802484492= array(); if(empty($_1306176016)) return $_981484295; if(empty($_981484295)) return $_1306176016; foreach($_981484295 as&$_2079194686){ $_51211162= false; $_100855462= false; $_1913408178=(isset($_2079194686[___1962356472(719)])? (string)$_2079194686[___1962356472(720)]: ___1962356472(721)).___1962356472(722).$_2079194686[___1962356472(723)]; foreach($_1306176016 as $_1634551628 => $_1268795707){ $_397492218=(isset($_1268795707[___1962356472(724)])? (string)$_1268795707[___1962356472(725)]: ___1962356472(726)).___1962356472(727).$_1268795707[___1962356472(728)]; if($_397492218 == $_1913408178){ $_100855462= $_1634551628; $_51211162= true; break;}} if($_51211162){ $_2079194686[___1962356472(729)]= $_1306176016[$_100855462][___1962356472(730)]; unset($_1306176016[$_100855462]);} $_1802484492[]= $_2079194686;} unset($_2079194686); if(!empty($_1306176016)){ foreach($_1306176016 as&$_1268795707){ $_1802484492[]= $_1268795707;} unset($_1268795707);} return $_1802484492;} ?>
Example #15
0
				if ($arCatalog["SUBSCRIPTION"] == "Y")
				{
					$arFields["PRICE_TYPE"] = $CAT_PRICE_TYPE;
					$arFields["RECUR_SCHEME_TYPE"] = $CAT_RECUR_SCHEME_TYPE;
					$arFields["RECUR_SCHEME_LENGTH"] = $CAT_RECUR_SCHEME_LENGTH;
					$arFields["TRIAL_PRICE_ID"] = $CAT_TRIAL_PRICE_ID;
					$arFields["WITHOUT_ORDER"] = $CAT_WITHOUT_ORDER;
				}
				CCatalogProduct::Add($arFields);

				$arMeasureRatio = array("PRODUCT_ID" => $PRODUCT_ID, "RATIO" => $CAT_MEASURE_RATIO);
				if(isset($CAT_MEASURE_RATIO_ID) && intval($CAT_MEASURE_RATIO_ID) > 0)
					CCatalogMeasureRatio::update($CAT_MEASURE_RATIO_ID, $arMeasureRatio);
				else
					CCatalogMeasureRatio::add($arMeasureRatio);

				$intCountBasePrice = count($arCatalogBasePrices);
				for ($i = 0; $i < $intCountBasePrice; $i++)
				{
					if (strlen($arCatalogBasePrices[$i]["PRICE"]) > 0)
					{
						$arCatalogFields = array(
							"EXTRA_ID" => false,
							"PRODUCT_ID" => $PRODUCT_ID,
							"CATALOG_GROUP_ID" => $arCatalogBaseGroup["ID"],
							"PRICE" => DoubleVal($arCatalogBasePrices[$i]["PRICE"]),
							"CURRENCY" => $arCatalogBasePrices[$i]["CURRENCY"],
							"QUANTITY_FROM" => ($arCatalogBasePrices[$i]["QUANTITY_FROM"] > 0 ? $arCatalogBasePrices[$i]["QUANTITY_FROM"] : False),
							"QUANTITY_TO" => ($arCatalogBasePrices[$i]["QUANTITY_TO"] > 0 ? $arCatalogBasePrices[$i]["QUANTITY_TO"] : False)
						);
Example #16
0
function getRatio($arBasketItems)
{
    if (Loader::includeModule('catalog')) {
        static $cacheRatio = array();
        $map = array();
        $arElementId = array();
        foreach ($arBasketItems as $key => $arItem) {
            $hash = md5((!empty($arItem['PRODUCT_PROVIDER_CLASS']) ? $arItem['PRODUCT_PROVIDER_CLASS'] : "") . "|" . (!empty($arItem['MODULE']) ? $arItem['MODULE'] : "") . "|" . $arItem["PRODUCT_ID"]);
            if (array_key_exists($hash, $cacheRatio)) {
                $arBasketItems[$key]["MEASURE_RATIO"] = $cacheRatio[$hash];
            } else {
                $arElementId[$arItem["PRODUCT_ID"]] = $arItem["PRODUCT_ID"];
            }
            if (!isset($map[$arItem["PRODUCT_ID"]])) {
                $map[$arItem["PRODUCT_ID"]] = array();
            }
            $map[$arItem["PRODUCT_ID"]][] = $key;
        }
        if (!empty($arElementId)) {
            $dbRatio = CCatalogMeasureRatio::getList(array(), array('@PRODUCT_ID' => $arElementId), false, false, array('PRODUCT_ID', 'RATIO'));
            while ($arRatio = $dbRatio->Fetch()) {
                if (empty($map[$arRatio["PRODUCT_ID"]])) {
                    continue;
                }
                foreach ($map[$arRatio["PRODUCT_ID"]] as $key) {
                    $arBasketItems[$key]["MEASURE_RATIO"] = $arRatio["RATIO"];
                    $itemData = $arBasketItems[$key];
                    $hash = md5((!empty($itemData['PRODUCT_PROVIDER_CLASS']) ? $itemData['PRODUCT_PROVIDER_CLASS'] : "") . "|" . (!empty($itemData['MODULE']) ? $itemData['MODULE'] : "") . "|" . $itemData["PRODUCT_ID"]);
                    $cacheRatio[$hash] = $arRatio["RATIO"];
                }
                unset($key);
            }
            unset($arRatio, $dbRatio);
        }
        unset($arElementId, $map);
    }
    return $arBasketItems;
}