<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Записки о Flash &#187; AS2</title>
	<atom:link href="http://etcs.ru/blog/category/as2/feed/" rel="self" type="application/rss+xml" />
	<link>http://etcs.ru</link>
	<description></description>
	<lastBuildDate>Tue, 20 Apr 2010 07:55:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>FontManager</title>
		<link>http://etcs.ru/blog/as2/fontmanager_return/</link>
		<comments>http://etcs.ru/blog/as2/fontmanager_return/#comments</comments>
		<pubDate>Wed, 05 Dec 2007 13:28:08 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[AS2]]></category>
		<category><![CDATA[Мысли вслух]]></category>

		<guid isPermaLink="false">http://etcs.ru/blog/think/fontmanager-2/</guid>
		<description><![CDATA[AS2 класс FontManager (позволяет загружать шрифты из внешних swf) вновь доступен в моем фреймворке. Документация, примеры и запланированные когда-то модификации будут позже.]]></description>
			<content:encoded><![CDATA[<p>AS2 класс FontManager (позволяет загружать шрифты из внешних swf) вновь доступен в моем <a href="http://etcs.ru/framework.zip">фреймворке</a>.<br />
Документация, примеры и запланированные когда-то модификации будут позже.</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/as2/fontmanager_return/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AS2 магия</title>
		<link>http://etcs.ru/blog/as2/as2_magic/</link>
		<comments>http://etcs.ru/blog/as2/as2_magic/#comments</comments>
		<pubDate>Mon, 24 Sep 2007 18:48:59 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[AS2]]></category>

		<guid isPermaLink="false">http://etcs.ru/blog/as2/as2_magic/</guid>
		<description><![CDATA[Сегодня ко мне в аську обратился Алексей «Vooparker» Аникутин с проблемой подгрузки swf-роликов, скомпиленных через mtasc. Дело в том, что mtasc вызывает статический метод main() основого класса приложения, не передавая никаких параметров, содержащих ссылку на таймлайн клипа, в котором, собственно, и содержатся сами классы. Т.е. единственный вариант аттача клипа — в _root. Тут же возникает [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня ко мне в аську обратился <noindex><a href="http://yarovoy.com" target="_blank">Алексей «Vooparker» Аникутин</a></noindex> с проблемой подгрузки swf-роликов, скомпиленных через mtasc. Дело в том, что mtasc вызывает статический метод main() основого класса приложения, не передавая никаких параметров, содержащих ссылку на таймлайн клипа, в котором, собственно, и содержатся сами классы. Т.е. единственный вариант аттача клипа — в _root. Тут же возникает проблема подгрузки таких роликов: _root ссылается на таймлайн родительского клипа, а не загруженного. В итоге работоспособность флешки нарушается.</p>
<p>А как же _lockroot, скажете вы? Да, его можно использовать, но только непосредственно в клипе-загрузчике, что не подходит под условия задачи. Необходимо включить _lockroot изнутри загруженного клипа. Как это сделать? Читайте далее.<br />
<span id="more-118"></span><br />
Решение оказалось неочевидным, нетривиальным и совершенно не поддающиеся никакой логике:<br />
<div><pre>/**
 * @author Denis Kolyako
 */
class TestClass {
	public static function main():Void {
		var targetString:String = '_target';
		var target:MovieClip = eval(eval(targetString));
		target._lockroot = true;
		trace(_root);
	}
}
</pre></div><br />
Типичный входной класс для mtasc. Будучи загруженным, такой ролик верно определяет свой _root.</p>
<p>Как работает?<br />
Точного ответа я дать не могу. Начнем с того, что eval(eval('_target')); не заработает, будет ошибка there is no property with the name '_target'.</p>
<p>eval(targetString) возвращает строку (!) "/". Но при этом, если мы захотим использовать что-то вроде:</p>
<p><code><br />
var root:String = '/';<br />
var target:MovieClip = eval(root);<br />
</code></p>
<p>То это не будет работать, вернется ссылка на _root родительского клипа, он же _level0. Именно здесь проявляется магия eval(targetString), который возвращает магический String, eval которого дает нам ссылку на таймлайн загруженного клипа, а не _root родительского.<br />
Далее просто включаем _lockroot, либо используем полученный target в своих целях.</p>
<p>Каким образом было получено данное решение?<br />
Методом тыка. В основе сего действа лежит знание того, что инициализация классов происходит в клипах. В результате экспериментов получился сей работающий код. Да, это грязный хак, но работать оно не перестанет.</p>
<p>Буду рад, если кто-нибудь расскажет с научной точки зрения, почему это работает.</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/as2/as2_magic/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>ru.etcs.utils.FontManager</title>
		<link>http://etcs.ru/blog/as2/ru/etcs/utils/fontmanager/</link>
		<comments>http://etcs.ru/blog/as2/ru/etcs/utils/fontmanager/#comments</comments>
		<pubDate>Mon, 19 Mar 2007 18:29:29 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[ru.etcs.utils]]></category>

		<guid isPermaLink="false">http://etcs.ru/blog/as2/ru/etcs/utils/temp/</guid>
		<description><![CDATA[Класс ru.etcs.utils.FontManager от 19.03.07 v1.0.1 Данный класс позволяет вам использовать внешние шрифты для загрузки их в клип и использования в текстовых полях. (FontManаger написан на AS2. Для AS3 существует FontLoader) Преимущества FontManager: Чистый инкапсулированный AS2-класс Минимальное вмешательство в жизнь проекта Не подключает дополнительных классов (кроме стандартного EventDispatcher) Не требует кода в shared-библиотеках Выполняет предзагрузку shared-библиотеки [...]]]></description>
			<content:encoded><![CDATA[<p>Класс <strong>ru.etcs.utils.FontManager</strong> от 19.03.07 v1.0.1<br />
<span id="more-90"></span><br />
Данный класс позволяет вам использовать внешние шрифты для загрузки их в клип и использования в текстовых полях.</p>
<p><font color="#FF0000">(FontManаger написан на AS2. <a href="http://etcs.ru/blog/as3/fontloader_2/">Для AS3 существует FontLoader</a>)</font></p>
<p>Преимущества FontManager:</p>
<ul>
<li>Чистый инкапсулированный AS2-класс</li>
<li>Минимальное вмешательство в жизнь проекта</li>
<li>Не подключает дополнительных классов (кроме стандартного EventDispatcher)</li>
<li>Не требует кода в shared-библиотеках</li>
<li>Выполняет предзагрузку shared-библиотеки для отображения процесса загрузки шрифта</li>
<li>Не имеет ошибок в FDT (при Strict-настройке отлова ошибок в FDT, т.е. все опции в позиции Error)</li>
</ul>
<p>Создание swf-файла со шрифтом (на примере Arial) для FontManager:</p>
<p>ВНИМАНИЕ! Описание создания библиотек описано для восьмой версии Flash. Работа в версиях ниже и выше не гарантируется (в седьмой версии допускается, но не проверялось).</p>
<p>1) Создаем новый fla проект, называем arial_shared.fla.</p>
<p>2) Создаем новый клип, заполняем поля:<br />
<img src="http://etcs.ru/flash/shared/screen1.jpg" width="480" height="358" border="0"></p>
<div align="center" style="font-weight:bold">Рис. 1</div>
<p>Name: <strong>ArialFont</strong><br />
Identifier: <strong>ArialFont</strong><br />
<strong>Export for runtime sharing</strong><br />
<strong>Export in first frame</strong><br />
В поле URL прописываем путь к swf-ке (о ней ниже), которая будет грузить данную шарную либу (arial.swf), но это необязательно, работать будет при любом заполненном URL (проверено).</p>
<p>3) В созданном клипе создаем динамическое текстовое поле с координатами 0,0. Указываем имя «field», шрифт и выключаем возможность выделения текста:<br />
<img src="http://etcs.ru/flash/shared/screen2.jpg" width="480" height="210" border="0"></p>
<div align="center" style="font-weight:bold">Рис. 2</div>
<p>На этом шаге вы можете набросать ещё полей с различными начертаниями шрифта, не заполняя Instance Name. После загрузки этой библиотеки их тоже можно будет использовать.</p>
<p>4) Нажимаем кнопку Embed и выбираем необходимые диапазоны экспортируемых шрифтов:<br />
<img src="http://etcs.ru/flash/shared/screen3.jpg" width="480" height="480" border="0"></p>
<div align="center" style="font-weight:bold">Рис. 3</div>
<p>5) Запускаем (компилируем), чтобы получить arial_shared.swf (обратите внимание на его размер, если все сделали правильно, он должен весить больше 1 КБ). На сцене ничего не должно быть, наш клип записан в первом кадре (export in first frame).</p>
<p>6) Сохраняемся. Шарная либа готова. Теперь нужно создать ролик, загружающий нашу шарную либу. Создаем новый fla проект, называем arial.fla, сохраняем. Создаем новый мувиклип SharedClip (задаем только имя, больше ничего):<br />
<img src="http://etcs.ru/flash/shared/screen6.jpg" width="480" height="217" border="0"></p>
<div align="center" style="font-weight:bold">Рис. 4</div>
<p>7) Нажимаем ОК, далее открываем библиотеку и свойства нашего клипа:<br />
<img src="http://etcs.ru/flash/shared/screen7.jpg" width="481" height="378" border="0"></p>
<div align="center" style="font-weight:bold">Рис. 5</div>
<p>Identifier пишем тот же, что и у ArialFont в arial_shared.<br />
Ставим галочку import for runtime sharing и в поле URL вписываем путь к нашей шарной либе (arial_shared.swf).</p>
<p> <img src='http://etcs.ru/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> Нажимаем ОК, кидаем наш SharedClip на сцену в 0,0, задаем ему имя «sharedClip»:<br />
<img src="http://etcs.ru/flash/shared/screen8.jpg" width="480" height="181" border="0"></p>
<div align="center" style="font-weight:bold">Рис. 6</div>
<p>9) Сохраняем проект и запускаем. Мы должны увидеть наш шарный клип в arial.swf (текстовое поле) и такой листинг переменных:<br />
<img src="http://etcs.ru/flash/shared/screen9.jpg" width="480" height="477" border="0"></p>
<div align="center" style="font-weight:bold">Рис. 7</div>
<p>Обратите внимание на путь <span style="font-weight:bold">sharedClip.field</span>. Он должен быть именно таким, если вы правильно выполнили все шаги. В противном случае FontManager не сможет найти текстовое поле со шрифтом и выдаст ошибку.</p>
<p>10) Шрифт для FontManager готов! Ролики arial.swf и arial_shared.swf должны находится рядом друг с другом.</p>
<p><a href="http://etcs.ru/pre/FontManager/" target="_blank">Пример работы FontManager</a>. <a href="http://etcs.ru/flash/shared/example.rar">Исходники</a> (не забудьте перед компилированием manager.fla скачать фреймворк с FontManager).</p>
<p>Документация в теле класса.</p>
<p>Класс доступен во <a href="http://etcs.ru/framework.zip">фреймворке</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/as2/ru/etcs/utils/fontmanager/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>StageManager v2.1 и Demo</title>
		<link>http://etcs.ru/blog/as2/stagemanager_v21_and_demo/</link>
		<comments>http://etcs.ru/blog/as2/stagemanager_v21_and_demo/#comments</comments>
		<pubDate>Tue, 06 Mar 2007 09:46:44 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[AS2]]></category>
		<category><![CDATA[Мысли вслух]]></category>

		<guid isPermaLink="false">http://dev.etcs.ru/blog/as2/stagemanager_v21_and_demo/</guid>
		<description><![CDATA[Ну вот и появилось долгожданная демка некоторых возможностей StageManager. Заодно и вышла версия 2.1.]]></description>
			<content:encoded><![CDATA[<p>Ну вот и появилось долгожданная <a href="http://etcs.ru/pre/StageManagerDemo/" target="_blank">демка</a> <em>некоторых</em> возможностей <a href="http://etcs.ru/blog/as2/ru/etcs/utils/stagemanager/">StageManager</a>. Заодно и вышла версия 2.1.</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/as2/stagemanager_v21_and_demo/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>StageManager v2.0</title>
		<link>http://etcs.ru/blog/as2/stagemanager-v20/</link>
		<comments>http://etcs.ru/blog/as2/stagemanager-v20/#comments</comments>
		<pubDate>Mon, 05 Mar 2007 09:51:13 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[AS2]]></category>
		<category><![CDATA[Мысли вслух]]></category>

		<guid isPermaLink="false">http://dev.etcs.ru/blog/as2/stagemanager-v20/</guid>
		<description><![CDATA[Вышла версия 2.0 класса StageManager. Появились новые возможности (тайловые клипы), исправлены баги предыдущих версий. Демонстрация всех возможностей класса будет опубликована чуть позже.]]></description>
			<content:encoded><![CDATA[<p>Вышла версия 2.0 класса <a href="http://etcs.ru/blog/as2/ru/etcs/utils/stagemanager/">StageManager</a>. Появились новые возможности (тайловые клипы), исправлены баги предыдущих версий. Демонстрация всех возможностей класса будет опубликована чуть позже.</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/as2/stagemanager-v20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Малююсенькое обновление StageManager</title>
		<link>http://etcs.ru/blog/as2/minor_stagemanager_update_1521/</link>
		<comments>http://etcs.ru/blog/as2/minor_stagemanager_update_1521/#comments</comments>
		<pubDate>Fri, 23 Feb 2007 15:37:52 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[AS2]]></category>
		<category><![CDATA[Мысли вслух]]></category>

		<guid isPermaLink="false">http://dev.etcs.ru/blog/as2/minor_stagemanager_update_1521/</guid>
		<description><![CDATA[Исправил небольшой косяк в StageManager. Предложения, пожелания, баг-репорты приветствуются. з.Ы. Если вы пользуетесь моими разработками, то просто сообщите в комментариях. Мне интересно узнать, где и как могли пригодиться мои работы и что время потрачено на них не зря]]></description>
			<content:encoded><![CDATA[<p>Исправил небольшой косяк в <a href="http://etcs.ru/blog/as2/ru/etcs/utils/stagemanager/">StageManager</a>. Предложения, пожелания, баг-репорты приветствуются.</p>
<p>з.Ы. Если вы пользуетесь моими разработками, то просто сообщите в комментариях. Мне интересно узнать, где и как могли пригодиться мои работы и что время потрачено на них не зря <img src='http://etcs.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/as2/minor_stagemanager_update_1521/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обновление StageManager и TextTween</title>
		<link>http://etcs.ru/blog/as2/stagemanager_and_texttween_update/</link>
		<comments>http://etcs.ru/blog/as2/stagemanager_and_texttween_update/#comments</comments>
		<pubDate>Mon, 19 Feb 2007 19:10:38 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[AS2]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Мысли вслух]]></category>

		<guid isPermaLink="false">http://dev.etcs.ru/blog/as2/stagemanager_and_texttween_update/</guid>
		<description><![CDATA[Новые версии StageManager (1.5.2) и TextTween для AS2 и AS3 (1.3).]]></description>
			<content:encoded><![CDATA[<p>Новые версии <a href="http://etcs.ru/blog/as2/ru/etcs/utils/stagemanager/">StageManager</a> (1.5.2) и TextTween для <a href="http://etcs.ru/blog/as2/ru/etcs/effects/texttween/">AS2</a> и <a href="http://etcs.ru/blog/as3/ru/etcs/effects/texttween_as3/">AS3</a> (1.3).</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/as2/stagemanager_and_texttween_update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EventDispatcher, ASSetPropFlags и кастинг</title>
		<link>http://etcs.ru/blog/as2/eventdispatcher_assetpropflags_and_casting/</link>
		<comments>http://etcs.ru/blog/as2/eventdispatcher_assetpropflags_and_casting/#comments</comments>
		<pubDate>Tue, 13 Feb 2007 12:30:51 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[AS2]]></category>
		<category><![CDATA[Мысли вслух]]></category>

		<guid isPermaLink="false">http://dev.etcs.ru/blog/as2/eventdispatsher_assetpropflags_and_casting/</guid>
		<description><![CDATA[Столкнулся с весьма забавной вещью, связанной с EventDispatcher. Попробуйте провести сей простой тест: import mx.events.EventDispatcher; EventDispatcher.initialize(this); testFunc = function() { trace('hi'); } this.addEventListener('testFunc',testFunc); queue = this['__q_testFunc']; for (var i = 0;i&#60;queue.length;i++) { trace(queue[i]==testFunc); // true trace(queue[i]); // [type Function] queue[i](); // hi } trace('------'); queue2 = Array(queue); for (var i = 0;i&#60;queue2.length;i++) { trace(queue2[i]==testFunc); // [...]]]></description>
			<content:encoded><![CDATA[<p>Столкнулся с весьма забавной вещью, связанной с EventDispatcher.<br />
<span id="more-78"></span><br />
Попробуйте провести сей простой тест:</p>
<p><div><pre>import mx.events.EventDispatcher;
EventDispatcher.initialize(this);
testFunc = function() {
     trace('hi');
}
this.addEventListener('testFunc',testFunc);
queue = this['__q_testFunc'];
for (var i = 0;i&lt;queue.length;i++) {
     trace(queue[i]==testFunc); // true
     trace(queue[i]); // [type Function]
     queue[i](); // hi
}
trace('------');
queue2 = Array(queue);
for (var i = 0;i&lt;queue2.length;i++) {
     trace(queue2[i]==testFunc); // false
     trace(queue2[i]); // [type Function]
     queue2[i](); // тишина
}</pre></div></p>
<p>Как мы видим, мы просто кастим queue в Array, но… получаем нечто непонятное на выходе.<br />
Смотрим в список переменных (Ctrl+Alt+V) и видим:<br />
<code>Variable _level0.queue = [object #9, class 'Array'] [<br />
    0:[function]<br />
  ]<br />
Variable _level0.i = 1<br />
Variable _level0.queue2 = [object #10, class 'Array'] [<br />
    0:[object #9, class 'Array']<br />
  ]</code><br />
Т.е. первый элемент массива queue2 — ссылка на queue (!). Т.е. произошел вызов new Array! Проверяем, дописывая:<br />
<div><pre>queue3 = queue2[0];
trace(queue3==queue); // true (!)</pre></div><br />
От чего так и почему? Для этого нам потребуется заглянуть в EventDispatcher, а там:</p>
<p><div><pre>	function addEventListener(event:String, handler:Object):Void
	{
		var queueName:String = &quot;__q_&quot; + event;
		if (this[queueName] == undefined)
		{
			this[queueName] = new Array();
		}
		_global.ASSetPropFlags(this, queueName,1);&lt;/p&gt;
&lt;p&gt;		EventDispatcher._removeEventListener(this[queueName], event, handler);
		this[queueName].push(handler);
	}
</pre></div><br />
А здесь нехороший человек повесил флаг «Скрыть потомков». Только в результате мы получаем массив совершенно непонятного вида.<br />
Будьте осторожны <img src='http://etcs.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>UPDATE: Суть оказалась не в ASSetPropFlags, а в том, Array() и new Array() — синонимы в AS2.</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/as2/eventdispatcher_assetpropflags_and_casting/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Квадраты</title>
		<link>http://etcs.ru/blog/shit/squares/</link>
		<comments>http://etcs.ru/blog/shit/squares/#comments</comments>
		<pubDate>Sun, 21 Jan 2007 19:09:59 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[AS2]]></category>
		<category><![CDATA[Просто так]]></category>

		<guid isPermaLink="false">http://dev.etcs.ru/blog/shit/squares/</guid>
		<description><![CDATA[Написано в качестве учебного «пособия». Смотреть. Что с этим делать — решать вам, может кому пригодится. Не валяться же добру просто так.]]></description>
			<content:encoded><![CDATA[<p>Написано в качестве учебного «пособия».<br />
<a href="http://etcs.ru/pre/ImageExample/" target="_blank">Смотреть</a>.<br />
Что с этим делать — решать вам, может кому пригодится. <img src='http://etcs.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Не валяться же добру просто так.</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/shit/squares/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Пакет классов ru.etcs.*</title>
		<link>http://etcs.ru/blog/as2/framework/</link>
		<comments>http://etcs.ru/blog/as2/framework/#comments</comments>
		<pubDate>Tue, 19 Dec 2006 15:37:19 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[AS2]]></category>

		<guid isPermaLink="false">http://dev.etcs.ru/blog/as2/framework/</guid>
		<description><![CDATA[Полный набор классов отсюда (все последние версии) теперь всегда доступны по ссылке справа. В пакете только AS2 классы (т.к. AS3 классов всего одна штука на данный момент — не имеет смысла делать пакет).]]></description>
			<content:encoded><![CDATA[<p>Полный набор классов отсюда (все последние версии) теперь всегда доступны по <a href="http://etcs.ru/framework.zip">ссылке</a> справа.<br />
В пакете только AS2 классы (т.к. AS3 классов всего одна штука на данный момент — не имеет смысла делать пакет).</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/as2/framework/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
