/** * Note: This file may contain artifacts of previous malicious infection. * However, the dangerous code has been removed, and the file is now safe to use. */ /** * @file * Pathologic text filter for Drupal. * * This input filter attempts to make sure that link and image paths will * always be correct, even when domain names change, content is moved from one * server to another, the Clean URLs feature is toggled, etc. */ /** * Implements hook_filter_info(). */ function pathologic_filter_info() { return array( 'pathologic' => array( 'title' => t('Correct URLs with Pathologic'), 'process callback' => '_pathologic_filter', 'settings callback' => '_pathologic_settings', 'default settings' => array( 'local_paths' => '', 'protocol_style' => 'full', ), // Set weight to 50 so that it will hopefully appear at the bottom of // filter lists by default. 50 is the maximum value of the weight menu // for each row in the filter table (the menu is hidden by JavaScript to // use table row dragging instead when JS is enabled). 'weight' => 50, ) ); } /** * Settings callback for Pathologic. */ function _pathologic_settings($form, &$form_state, $filter, $format, $defaults, $filters) { return array( 'reminder' => array( '#type' => 'item', '#title' => t('In most cases, Pathologic should be the last filter in the “Filter processing order” list.'), '#weight' => -10, ), 'protocol_style' => array( '#type' => 'radios', '#title' => t('Processed URL format'), '#default_value' => isset($filter->settings['protocol_style']) ? $filter->settings['protocol_style'] : $defaults['protocol_style'], '#options' => array( 'full' => t('Full URL (http://example.com/foo/bar)'), 'proto-rel' => t('Protocol relative URL (//example.com/foo/bar)'), 'path' => t('Path relative to server root (/foo/bar)'), ), '#description' => t('The Full URL option is best for stopping broken images and links in syndicated content (such as in RSS feeds), but will likely lead to problems if your site is accessible by both HTTP and HTTPS. Paths output with the Protocol relative URL option will avoid such problems, but feed readers and other software not using up-to-date standards may be confused by the paths. The Path relative to server root option will avoid problems with sites accessible by both HTTP and HTTPS with no compatibility concerns, but will absolutely not fix broken images and links in syndicated content.'), '#weight' => 10, ), 'local_paths' => array( '#type' => 'textarea', '#title' => t('All base paths for this site'), '#default_value' => isset($filter->settings['local_paths']) ? $filter->settings['local_paths'] : $defaults['local_paths'], '#description' => t('If this site is or was available at more than one base path or URL, enter them here, separated by line breaks. For example, if this site is live at http://example.com/ but has a staging version at http://dev.example.org/staging/, you would enter both those URLs here. If confused, please read Pathologic’s documentation for more information about this option and what it affects.', array('!docs' => 'http://drupal.org/node/257026')), '#weight' => 20, ), ); } /** * Pathologic filter callback. * * Previous versions of this module worked (or, rather, failed) under the * assumption that $langcode contained the language code of the node. Sadly, * this isn't the case. * @see http://drupal.org/node/1812264 * However, it turns out that the language of the current node isn't as * important as the language of the node we're linking to, and even then only * if language path prefixing (eg /ja/node/123) is in use. REMEMBER THIS IN THE * FUTURE, ALBRIGHT. * * The below code uses the @ operator before parse_url() calls because in PHP * 5.3.2 and earlier, parse_url() causes a warning of parsing fails. The @ * operator is usually a pretty strong indicator of code smell, but please don't * judge me by it in this case; ordinarily, I despise its use, but I can't find * a cleaner way to avoid this problem (using set_error_handler() could work, * but I wouldn't call that "cleaner"). Fortunately, Drupal 8 will require at * least PHP 5.3.5, so this mess doesn't have to spread into the D8 branch of * Pathologic. * @see https://drupal.org/node/2104849 * * @todo Can we do the parsing of the local path settings somehow when the * settings form is submitted instead of doing it here? */ function _pathologic_filter($text, $filter, $format, $langcode, $cache, $cache_id) { // Get the base URL and explode it into component parts. We add these parts // to the exploded local paths settings later. global $base_url; $base_url_parts = @parse_url($base_url . '/'); // Since we have to do some gnarly processing even before we do the *really* // gnarly processing, let's static save the settings - it'll speed things up // if, for example, we're importing many nodes, and not slow things down too // much if it's just a one-off. But since different input formats will have // different settings, we build an array of settings, keyed by format ID. $cached_settings = &drupal_static(__FUNCTION__, array()); if (!isset($cached_settings[$filter->format])) { $filter->settings['local_paths_exploded'] = array(); if ($filter->settings['local_paths'] !== '') { // Build an array of the exploded local paths for this format's settings. // array_filter() below is filtering out items from the array which equal // FALSE - so empty strings (which were causing problems. // @see http://drupal.org/node/1727492 $local_paths = array_filter(array_map('trim', explode("\n", $filter->settings['local_paths']))); foreach ($local_paths as $local) { $parts = @parse_url($local); // Okay, what the hellish "if" statement is doing below is checking to // make sure we aren't about to add a path to our array of exploded // local paths which matches the current "local" path. We consider it // not a match, if… // @todo: This is pretty horrible. Can this be simplified? if ( ( // If this URI has a host, and… isset($parts['host']) && ( // Either the host is different from the current host… $parts['host'] !== $base_url_parts['host'] // Or, if the hosts are the same, but the paths are different… // @see http://drupal.org/node/1875406 || ( // Noobs (like me): "xor" means "true if one or the other are // true, but not both." (isset($parts['path']) xor isset($base_url_parts['path'])) || (isset($parts['path']) && isset($base_url_parts['path']) && $parts['path'] !== $base_url_parts['path']) ) ) ) || // Or… ( // The URI doesn't have a host… !isset($parts['host']) ) && // And the path parts don't match (if either doesn't have a path // part, they can't match)… ( !isset($parts['path']) || !isset($base_url_parts['path']) || $parts['path'] !== $base_url_parts['path'] ) ) { // Add it to the list. $filter->settings['local_paths_exploded'][] = $parts; } } } // Now add local paths based on "this" server URL. $filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path']); $filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path'], 'host' => $base_url_parts['host']); // We'll also just store the host part separately for easy access. $filter->settings['base_url_host'] = $base_url_parts['host']; $cached_settings[$filter->format] = $filter->settings; } // Get the language code for the text we're about to process. $cached_settings['langcode'] = $langcode; // And also take note of which settings in the settings array should apply. $cached_settings['current_settings'] = &$cached_settings[$filter->format]; // Now that we have all of our settings prepared, attempt to process all // paths in href, src, action or longdesc HTML attributes. The pattern below // is not perfect, but the callback will do more checking to make sure the // paths it receives make sense to operate upon, and just return the original // paths if not. return preg_replace_callback('~ (href|src|action|longdesc)="([^"]+)~i', '_pathologic_replace', $text); } /** * Process and replace paths. preg_replace_callback() callback. */ function _pathologic_replace($matches) { // Get the base path. global $base_path; // Get the settings for the filter. Since we can't pass extra parameters // through to a callback called by preg_replace_callback(), there's basically // three ways to do this that I can determine: use eval() and friends; abuse // globals; or abuse drupal_static(). The latter is the least offensive, I // guess… Note that we don't do the & thing here so that we can modify // $cached_settings later and not have the changes be "permanent." $cached_settings = drupal_static('_pathologic_filter'); // If it appears the path is a scheme-less URL, prepend a scheme to it. // parse_url() cannot properly parse scheme-less URLs. Don't worry; if it // looks like Pathologic can't handle the URL, it will return the scheme-less // original. // @see https://drupal.org/node/1617944 // @see https://drupal.org/node/2030789 if (strpos($matches[2], '//') === 0) { if (isset($_SERVER['https']) && strtolower($_SERVER['https']) === 'on') { $matches[2] = 'https:' . $matches[2]; } else { $matches[2] = 'http:' . $matches[2]; } } // Now parse the URL after reverting HTML character encoding. // @see http://drupal.org/node/1672932 $original_url = htmlspecialchars_decode($matches[2]); // …and parse the URL $parts = @parse_url($original_url); // Do some more early tests to see if we should just give up now. if ( // If parse_url() failed, give up. $parts === FALSE || ( // If there's a scheme part and it doesn't look useful, bail out. isset($parts['scheme']) // We allow for the storage of permitted schemes in a variable, though we // don't actually give the user any way to edit it at this point. This // allows developers to set this array if they have unusual needs where // they don't want Pathologic to trip over a URL with an unusual scheme. // @see http://drupal.org/node/1834308 // "files" and "internal" are for Path Filter compatibility. && !in_array($parts['scheme'], variable_get('pathologic_scheme_whitelist', array('http', 'https', 'files', 'internal'))) ) // Bail out if it looks like there's only a fragment part. || (isset($parts['fragment']) && count($parts) === 1) ) { // Give up by "replacing" the original with the same. return $matches[0]; } if (isset($parts['path'])) { // Undo possible URL encoding in the path. // @see http://drupal.org/node/1672932 $parts['path'] = rawurldecode($parts['path']); } else { $parts['path'] = ''; } // Check to see if we're dealing with a file. // @todo Should we still try to do path correction on these files too? if (isset($parts['scheme']) && $parts['scheme'] === 'files') { // Path Filter "files:" support. What we're basically going to do here is // rebuild $parts from the full URL of the file. $new_parts = @parse_url(file_create_url(file_default_scheme() . '://' . $parts['path'])); // If there were query parts from the original parsing, copy them over. if (!empty($parts['query'])) { $new_parts['query'] = $parts['query']; } $new_parts['path'] = rawurldecode($new_parts['path']); $parts = $new_parts; // Don't do language handling for file paths. $cached_settings['is_file'] = TRUE; } else { $cached_settings['is_file'] = FALSE; } // Let's also bail out of this doesn't look like a local path. $found = FALSE; // Cycle through local paths and find one with a host and a path that matches; // or just a host if that's all we have; or just a starting path if that's // what we have. foreach ($cached_settings['current_settings']['local_paths_exploded'] as $exploded) { // If a path is available in both… if (isset($exploded['path']) && isset($parts['path']) // And the paths match… && strpos($parts['path'], $exploded['path']) === 0 // And either they have the same host, or both have no host… && ( (isset($exploded['host']) && isset($parts['host']) && $exploded['host'] === $parts['host']) || (!isset($exploded['host']) && !isset($parts['host'])) ) ) { // Remove the shared path from the path. This is because the "Also local" // path was something like http://foo/bar and this URL is something like // http://foo/bar/baz; or the "Also local" was something like /bar and // this URL is something like /bar/baz. And we only care about the /baz // part. $parts['path'] = drupal_substr($parts['path'], drupal_strlen($exploded['path'])); $found = TRUE; // Break out of the foreach loop break; } // Okay, we didn't match on path alone, or host and path together. Can we // match on just host? Note that for this one we are looking for paths which // are just hosts; not hosts with paths. elseif ((isset($parts['host']) && !isset($exploded['path']) && isset($exploded['host']) && $exploded['host'] === $parts['host'])) { // No further editing; just continue $found = TRUE; // Break out of foreach loop break; } // Is this is a root-relative url (no host) that didn't match above? // Allow a match if local path has no path, // but don't "break" because we'd prefer to keep checking for a local url // that might more fully match the beginning of our url's path // e.g.: if our url is /foo/bar we'll mark this as a match for // http://example.com but want to keep searching and would prefer a match // to http://example.com/foo if that's configured as a local path elseif (!isset($parts['host']) && (!isset($exploded['path']) || $exploded['path'] === $base_path)) { $found = TRUE; } } // If the path is not within the drupal root return original url, unchanged if (!$found) { return $matches[0]; } // Okay, format the URL. // If there's still a slash lingering at the start of the path, chop it off. $parts['path'] = ltrim($parts['path'],'/'); // Examine the query part of the URL. Break it up and look through it; if it // has a value for "q", we want to use that as our trimmed path, and remove it // from the array. If any of its values are empty strings (that will be the // case for "bar" if a string like "foo=3&bar&baz=4" is passed through // parse_str()), replace them with NULL so that url() (or, more // specifically, drupal_http_build_query()) can still handle it. if (isset($parts['query'])) { parse_str($parts['query'], $parts['qparts']); foreach ($parts['qparts'] as $key => $value) { if ($value === '') { $parts['qparts'][$key] = NULL; } elseif ($key === 'q') { $parts['path'] = $value; unset($parts['qparts']['q']); } } } else { $parts['qparts'] = NULL; } // If we don't have a path yet, bail out. if (!isset($parts['path'])) { return $matches[0]; } // If we didn't previously identify this as a file, check to see if the file // exists now that we have the correct path relative to DRUPAL_ROOT if (!$cached_settings['is_file']) { $cached_settings['is_file'] = !empty($parts['path']) && is_file(DRUPAL_ROOT . '/'. $parts['path']); } // Okay, deal with language stuff. if ($cached_settings['is_file']) { // If we're linking to a file, use a fake LANGUAGE_NONE language object. // Otherwise, the path may get prefixed with the "current" language prefix // (eg, /ja/misc/message-24-ok.png) $parts['language_obj'] = (object) array('language' => LANGUAGE_NONE, 'prefix' => ''); } else { // Let's see if we can split off a language prefix from the path. if (module_exists('locale')) { // Sometimes this file will be require_once-d by the locale module before // this point, and sometimes not. We require_once it ourselves to be sure. require_once DRUPAL_ROOT . '/includes/language.inc'; list($language_obj, $path) = language_url_split_prefix($parts['path'], language_list()); if ($language_obj) { $parts['path'] = $path; $parts['language_obj'] = $language_obj; } } } // If we get to this point and $parts['path'] is now an empty string (which // will be the case if the path was originally just "/"), then we // want to link to . if ($parts['path'] === '') { $parts['path'] = ''; } // Build the parameters we will send to url() $url_params = array( 'path' => $parts['path'], 'options' => array( 'query' => $parts['qparts'], 'fragment' => isset($parts['fragment']) ? $parts['fragment'] : NULL, // Create an absolute URL if protocol_style is 'full' or 'proto-rel', but // not if it's 'path'. 'absolute' => $cached_settings['current_settings']['protocol_style'] !== 'path', // If we seem to have found a language for the path, pass it along to // url(). Otherwise, ignore the 'language' parameter. 'language' => isset($parts['language_obj']) ? $parts['language_obj'] : NULL, // A special parameter not actually used by url(), but we use it to see if // an alter hook implementation wants us to just pass through the original // URL. 'use_original' => FALSE, ), ); // Add the original URL to the parts array $parts['original'] = $original_url; // Now alter! // @see http://drupal.org/node/1762022 drupal_alter('pathologic', $url_params, $parts, $cached_settings); // If any of the alter hooks asked us to just pass along the original URL, // then do so. if ($url_params['options']['use_original']) { return $matches[0]; } // If the path is for a file and clean URLs are disabled, then the path that // url() will create will have a q= query fragment, which won't work for // files. To avoid that, we use this trick to temporarily turn clean URLs on. // This is horrible, but it seems to be the sanest way to do this. // @see http://drupal.org/node/1672430 // @todo Submit core patch allowing clean URLs to be toggled by option sent // to url()? if (!empty($cached_settings['is_file'])) { $cached_settings['orig_clean_url'] = !empty($GLOBALS['conf']['clean_url']); if (!$cached_settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = TRUE; } } // Now for the url() call. Drumroll, please… $url = url($url_params['path'], $url_params['options']); // If we turned clean URLs on before to create a path to a file, turn them // back off. if ($cached_settings['is_file'] && !$cached_settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = FALSE; } // If we need to create a protocol-relative URL, then convert the absolute // URL we have now. if ($cached_settings['current_settings']['protocol_style'] === 'proto-rel') { // Now, what might have happened here is that url() returned a URL which // isn't on "this" server due to a hook_url_outbound_alter() implementation. // We don't want to convert the URL in that case. So what we're going to // do is cycle through the local paths again and see if the host part of // $url matches with the host of one of those, and only alter in that case. $url_parts = @parse_url($url); if (!empty($url_parts['host']) && $url_parts['host'] === $cached_settings['current_settings']['base_url_host']) { $url = _pathologic_url_to_protocol_relative($url); } } // Apply HTML character encoding, as is required for HTML attributes. // @see http://drupal.org/node/1672932 $url = check_plain($url); // $matches[1] will be the tag attribute; src, href, etc. return " {$matches[1]}=\"{$url}"; } /** * Convert a full URL with a protocol to a protocol-relative URL. * * As the Drupal core url() function doesn't support protocol-relative URLs, we * work around it by just creating a full URL and then running it through this * to strip off the protocol. * * Though this is just a one-liner, it's placed in its own function so that it * can be called independently from our test code. */ function _pathologic_url_to_protocol_relative($url) { return preg_replace('~^https?://~', '//', $url); } О судьбах нашей интеграции | КОММУНИСТИЧЕСКАЯ ПАРТИЯ БЕЛАРУСИ

О судьбах нашей интеграции

В ответ на опубликованную в «Известиях» статью Владимира Путина об интеграции на постсоветском пространстве свое мнение о Евразийском союзе высказывает Президент Беларуси Александр Лукашенко:
– Сегодня мы находимся на пороге создания качественно нового интеграционного образования. С 1 января 2012 года появится Единое экономическое пространство Беларуси, России и Казахстана – уже и де-юре, и де-факто.
Поэтому как раз пришло время говорить о главном. О жизни наших народов в завтрашнем дне. О судьбах наших государств и перспективах их взаимодействия. О том, как будет устроен мир вокруг нас, и о нашем месте под солнцем. Именно об этом статья В.В.Путина в «Известиях».
Не в порядке комплимента моему коллеге, бывшему Президенту России и нынешнему премьеру, скажу, что эта публикация – настоящее событие. Россия впервые за многие годы ясно и недвусмысленно заявила о приоритете отношений с государствами, с которыми, перефразируя классика, вышла из общей советской шинели.
Приоритете не лозунговом и поверхностном, а пронизывающем всю глубину жизнедеятельности наших стран и народов.
Более того, по-моему, впервые в новейшей истории России об этом говорит кандидат в президенты. Фактически, как я понимаю, в своей предвыборной внешнеполитической программе.
Понятно, что Россия как крупнейшая держава не может и не будет игнорировать работу с иными союзами. Это естественно. Но приоритеты – принципиально другое.
Это дорогого стоит. За словами статьи – стратегия. Правильная стратегия.
И только недалекие люди могут обвинять публикацию и ее автора в предвыборной конъюнктурности.
Разве это конъюнктурщина – осознание лидером, нацеленным на избрание на высший пост в России, того, что не получится укрепить страну, обустраивая ее только изнутри? Внутренняя национальная консолидация необходима. Но этого недостаточно! Для подлинного успеха России, как и любого другого государства, нужно также выстроить отношения с соседями на прочной основе, то есть взаимовыгодной и равноправной. Только на таких принципах! Без этого не будет стабильности и безопасности ни у России, ни у ее соседей. Иное мы уже проходили и знаем, чем все заканчивается.
Да и говорить о конъюнктурности могут только те, кто не знает фактов. Идея Единого экономического пространства России, Беларуси, Украины и Казахстана принадлежит как раз В.В.Путину. Он озвучил ее еще в начале 2003 года, когда мы собрались на неформальной встрече глав государств в его подмосковной резиденции. Понятное дело, выборов 2012 года тогда не было и на горизонте.
Ни в коей мере не разделяю взгляды скептиков о «декларативности» сделанных в статье заявлений. Ведь изложенная в ста-
тье стратегия интеграции адресована не только электорату и нам, соседям России, но и всем мировым центрам силы. Здесь блеф – себе дороже, потому что, получив этот мощный сигнал, все сделают свои стратегические выводы. Политику и политиков уважают только в случае их серьезности и последовательности. Поэтому не должно быть сомнений в искренности очерченных В.В.Путиным намерений.
Кстати, неудивительно, что ре-
акция части внешних центров на инициативу В.В.Путина лишена энтузиазма. Оно и понятно: какого международного игрока обрадует весть о формировании нового мощного единого рынка с серьезнейшим производственным, ресурсным, интеллектуальным потенциалом – несомненного агрессивного конкурента.
В Беларуси реакция на известинскую публикацию тоже неоднозначна. Об обычных русофобских стенаниях «пятой колонны» нечего даже говорить. Здесь все ясно: их заботы – не о стране.
Но есть часть общества, которая искренне озабочена, поскольку на кону судьба государства. От этого мнения нельзя просто отмахнуться. Людям надо на деле показать, что конкретно им даст этот новый союз. Доказать, что интеграционные устремления – не политические игрища, а реальные предпосылки дальнейшего улучшения благосостояния человека. А это уже наша, политиков, задача.
Размышления о судьбах интеграции тем более не случайны в нынешнее непростое время, которое переживают и Европа, и Азия, да и весь мир.
Ровно двадцать лет назад завершилась эпоха противостояния двух сверхдержав.
Никогда не скрывал своего мнения о том, что считаю развал Советского Союза глубочайшей, трагической ошибкой XX столетия. Его можно и нужно было совершенствовать, изменять, но не разрушать. Когда все цивилизованные страны десятилетиями шли трудными путями к объединительным процессам, мы одним махом уничтожили свое величайшее достояние – единство, общность, кооперацию. В угоду чьим-то амбициям и интересам.
Но даже после этого смена биполярного мира на многополярный, сбалансированный множественностью центров влияния, так и не произошла.
В мире, меняющемся от одной формации к другой, на деле царит хаос. А хаос – всегда в пользу сильнейшего.
Как в таких условиях жить молодым государствам, в том числе нашему, нашим братьям и соседям? Как нам вместе добиться уважения и реализации своих законных интересов? Где наше место в осях координат Восток – Запад, Север – Юг?
Невольно задумываешься, есть ли простые ответы на столь сложные вопросы.
Простых, наверное, нет. Но наверняка есть правильные. Их и надо найти. Потому что цена ошибки слишком велика – судьба государства и народа, и не одного.
Сегодняшний континентальный и даже трансконтинентальный финансовый кризис, только усиливающий мировые неопределенность и хаос, ясно подсказывает: главные «противовесы» кризису – формирование емкого общего рынка и баланс интересов. Создание серьезных объединительных союзов – верный шаг к стабильному миру.
Значит, без интеграции нельзя.
Для Беларуси глубокая, продуктивная интеграция с наиболее близкими соседями была, есть и будет естественным путем развития.
Два референдума, проведенные в нашей стране в первой половине 90-х годов, абсолютным большинством населения дали власти четкий мандат на интеграцию.
На обломках СССР появилась первая интеграционная структура – СНГ – с центром в Минске. На объединительных принципах строились ОДКБ и ЕврАзЭС.
И то, что у нас существует несколько межгосударственных образований, – это тоже нормально. Мы ищем, нащупываем те механизмы, которые удовлетворяли бы интересам всех участников. И главное, реально работали на наших людей.
И база для этого уже есть солидная. Создавая в 90-е годы Союзное государство Беларуси и России, мы выступили первопроходцами в наиболее тесном интегрировании двумя независимыми государствами самого широкого круга сфер жизни.
С его появлением сформулирован и апробирован принцип разноскоростной и разноуровневой интеграции.
Уже в течение полутора десятков лет Союзное государство – катализатор и своего рода масштабная лаборатория глубокой интеграции. Это предмет нашей особой гордости. Ведь мы смогли расширить рамки интеграции от экономики до социальных и даже отчасти политических вопросов.
Нам удалось серьезно продвинуться в обеспечении равных прав граждан, унификации национальных законодательств, координации внешнеполитической деятельности. Реальным стало осуществление масштабных межгосударственных программ, в том числе в сфере научно-технического сотрудничества.
Единая система социальных гарантий, равный доступ к образованию, услугам здравоохранения, беспрепятственное трудоустройство, свобода передвижения и выбора места жительства, ставшие возможными благодаря Союзному государству, являются ориентирами для дальнейшей работы в формате «тройки». По некоторым направлениям мы даже впереди Европейского союза.
Интеграционные наработки в рамках Союзного государства позволили разумно и с уверенностью применять их в более широком, многостороннем формате. Ни для кого не секрет, что белорусско-российское Соглашение о Таможенном союзе 1995 года служит несущим каркасом договорно-правовой базы Таможенного союза Беларуси, Казахстана и России.
Созданная в процессе союзного строительства таможенная и пограничная инфраструктура мирового уровня позволяет эффективно решать задачи, стоящие сейчас перед Таможенным союзом и ЕЭП.
Важно, чтобы и в дальнейшем Союзное государство, Таможенный союз, ЕЭП обогащали и взаимодополняли друг друга. Наша задача – не утратить, а максимально использовать весь имеющийся интеграционный потенциал.
Сейчас мы выходим на воплощение решений, которые принято называть судьбоносными. Именно об этом мои размышления. Об этом статья В.В.Путина. Потому что это заботит наших людей.
Создаваемая нами конструкция продвинутой интеграции должна быть прочной. Иначе нет смысла тратить на нее столько сил.
Надежность и долговечность нового механизма определяются в конечном счете тем, обеспечивает ли он полноценную защиту интересов его участников. Необходимо четко осознавать: любые ущемления их прав, может быть кажущиеся сегодня мелкими, завтра создадут трещины, которые развалят сначала доверие, а затем и созданную неимоверными общими усилиями новую структуру.
Это главное. Весь остальной массив сложнейших юридических, таможенных, финансовых и иных вопросов можно решить. И мы совместно решим все, и в короткое время.
Здесь не должно быть примитивизма. Речь, конечно же, не о том, чтобы собрать и разделить на троих богатства, принадлежащие нашим народам. Белорусам это не нужно.
Но только равенство партнеров, в том числе равенство условий хозяйствования с равным доступом к единой энергетической и транспортной системе, позволит создать надежную основу для нашего союза. Лишь тогда люди, бизнес поверят нам и нашей интеграции и поддержат ее своими делами и помыслами.
На неравной основе союз единомышленников и партнеров не построить. Это аксиома! Верю, что именно такая идеология закладывается в наш новый союз.
На последних переговорах с руководством России мы договорились о необходимости работы предприятий и предпринимателей наших стран в равных условиях. В аналогичном ключе проходят встречи в рамках ЕЭП. Впереди, конечно, еще тернистый путь переговоров, но вместе с нашими партнерами по «тройке» мы его преодолеем в срок и успешно.
Говоря по правде, создание ЕЭП стало для нас нелегким компромиссом. А если еще более прямо: за Единое экономическое пространство Беларусь заплатила дорого. Но есть все основания быть убежденным, что этот «риск» окупится.
Наши ожидания от участия в Таможенном союзе начинают оправдываться. Увеличились объемы торговли между его участниками. Упразднены тарифные и нетарифные барьеры во взаимной торговле. Отменены все виды контроля на внутренних границах. Обеспечивается защита белорусских, казахстанских и российских товаров от недобросовестной конкуренции со стороны третьих стран.
С единых позиций ведутся переговоры с крупнейшими мировыми торговыми партнерами.
Это первые результаты. Но мы ожидаем более значительной для наших граждан отдачи от деятельности Таможенного союза и ЕЭП.
Скажите, зачем, например, на общем интеграционном пространстве выдавливать продукцию партнеров со своих рынков нерыночными методами? Люди и дело от этого только проигрывают. Пусть бизнес свободно конкурирует, борется за рынок.
Зачем искусственно насаждать дублирующие производства там, где спрос может быть удовлетворен с гораздо меньшими затратами и на высоком уровне качества действующими предприятиями? Разве мы не проигрываем от конкуренции друг с другом на внешних рынках? Вместо такого «самоедства» по уму надо бы создать все условия для появления на нашем пространстве мощных конкурентоспособных транснациональных корпораций и их выхода на рынки третьих стран.
Следует заложить основы для дальнейшей модернизации наших экономик и внедрения инноваций.
И мы уже начали подходить к этому через конкретные масштабные и наукоемкие проекты – совместное строительство АЭС в Беларуси, совместное создание и вывод в космос спутников, создание системы управления ими.
Но движение идет медленно, слишком медленно. Если у руководства наших стран есть общая твердая позиция в пользу такой интеграции – а она есть! – пусть и чиновничество на всех уровнях сверху донизу быстрее разворачивается.
И здесь, конечно, максимум зависит от самого крупного партнера в интеграции – России.
Надо добиться принципиального поворота лицом к интеграции в рамках всех интеграционных структур – Союзного государства, Таможенного союза, ЕЭП, ЕврАзЭС, СНГ – не на бумаге, а на деле. Сделать такой подход каждодневной практикой взаимодействия. Люди наших стран ждут этого уже сейчас, без промедления.
Если мы реализуем цели, намеченные ЕЭП, то сможем перейти к созданию Евразийского союза. Беларусь примет в его формировании самое активное участие.
Построить такой союз – дело непростое. Ведь достигнув максимально возможного уровня экономической интеграции, мы вплотную подойдем к необходимости создания прочной социально-политической надстройки – с общими ценностями, правовой системой, жизненными стандартами и ориентирами. Здесь не обойтись без постепенного консенсусного формирования неких наднациональных органов, в том числе, возможно, политических. Допускаем, что в таком случае в практическую плоскость перейдет и вопрос о введении новой единой валюты. Время покажет.
Перспектива мощной и глубокой интеграции, которая открывается сегодня, на самом деле захватывает. Но краеугольный камень всего того, что мы собираемся построить, – суверенитет наших государств, который не отменяет даже самая тесная интеграция.
Вместе с доверием руководить государствами наши народы вручили нам и обязанность сохранить их право самим распоряжаться своей судьбой. Исходя из этого, мы должны строить свои планы.
Успех Единого экономического пространства важен не только для наших народов и экономик. Этот проект может стать притягательным полюсом для других стран, в том числе для нашей ближайшей соседки Украины. Ведь она работала вместе с нами над первым прообразом ЕЭП.
И еще один очень важный внешнеполитический аспект.
Интеграция Беларуси, России и Казахстана – не против кого-то. В создании Евразийского союза не следует усматривать попытку некоего раздела Европы.
Скажу больше: нам нельзя замыкаться в этой интеграции. Евразийский союз я вижу как неотъемлемую часть общеевропейской интеграции. Наш союз призван стать ключевым региональным игроком, который поможет выстраивать отношения с ведущими мировыми экономическими структурами.
Именно отсюда исходит предложение «тройки» о таком взаимодействии с Евросоюзом, которое привело бы в конечном итоге к созданию общего экономического пространства от Лиссабона до Владивостока. Кстати, единственная таможенная граница на этом пути сейчас проходит через Брест.
Мы предлагаем «интеграцию интеграций».
По инициативе Беларуси в декабре прошлого года главы государств ЕврАзЭС подтвердили в своей декларации намерение работать именно в данном направлении. Это не прихоть, а продиктованная реалиями последовательная позиция.
Такая интеграция на постсоветском пространстве быстрее приведет к более тесным и равноправным отношениям с Евросоюзом и построению Большой Европы, чем сепаратные хождения по европейским кабинетам.
Для этого, конечно, нужен соответствующий уровень развития ЕЭП и будущего Евразийского союза. Он должен стать зрелой структурой, серьезным экономическим игроком на евразийском рынке, мощным партнером Евросоюза.
Естественно, в этом деле многое зависит и от европейцев – насколько они готовы сотрудничать на равных.
Беларусь, находясь на стыке двух интеграционных союзов, особо заинтересована в их взаимном сближении. Грандиозный, но вполне реалистичный проект создания Евразийского союза таит огромные выгоды для всего континента. Возможность работы по одинаковым правилам на рынке от Атлантики до Тихого океана укрепит экспортный потенциал наших предприятий и привлекательность наших экономик для иностранного бизнеса.
При этом нашей интеграционной структуре нельзя ограничиваться только западным вектором. Важнейшей задачей должна стать и тесная интеграция с государствами и экономическими объединениями на Востоке, прежде всего с нашим стратегическим партнером Китаем.
Каждая из трех стран уже имеет богатый опыт работы с государствами Азиатско-Тихоокеанского региона. Объединив свои усилия, мы будем гораздо успешнее продвигать наши интересы. Беларусь вплотную приблизится к рынкам АТР, который, вероятнее всего, станет двигателем экономики планеты в этом столетии.
Обнародование сейчас в ведущих СМИ нашего твердого намерения решительно углублять интеграцию – не случайно. Это своего рода манифест, идущий от жизни.
Теперь нужен безотлагательный переход к практическим действиям. Ведь за словом серьезного политика всегда следует дело. И я как президент Беларуси буду тесно взаимодействовать с руководством России и Казахстана, чтобы реализовать на практике эту правильную стратегию глубокой интеграции.

Номер газеты: