commit daaeacf9737f4574de6627cf46f3134f82dc8c4e Author: m.elgin Date: Tue Jun 30 11:02:53 2026 +0300 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c2658d7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/ diff --git a/assets/blood-economy.svg b/assets/blood-economy.svg new file mode 100644 index 0000000..32a5d0c --- /dev/null +++ b/assets/blood-economy.svg @@ -0,0 +1,31 @@ + + + + Живая кровь vs искусственная кровь + Почему прогресс не отменяет зависимость гемархов от человека + + + Живая кровь + + гормоны и стрессовые маркеры + + нейрохимическая сигнатура донора + + метаболический профиль в реальном времени + + насыщение, регенерация, ясность + + + Искусственная кровь + + есть базовый объём и переносчик + + нет «живой сигнатуры» + + нет полноценной фототолерантности + + нет истинного насыщения гемархов + + + Искусственная кровь для них — суррогат, а не решение. + \ No newline at end of file diff --git a/assets/hidden-donor-market.svg b/assets/hidden-donor-market.svg new file mode 100644 index 0000000..97a53a6 --- /dev/null +++ b/assets/hidden-donor-market.svg @@ -0,0 +1,50 @@ + + + Тайный рынок доноров + Как качественная кровь превращается в теневой стратегический ресурс + + + Элитные школы + ранний отбор линий + + + Частные клиники + скрининг и биометрия + + + Биобанки + каталог доноров + рейтинг совместимости + + + Закрытые клубы + социальная селекция + ритуалы отбора + + + Гемархи + верхушка спроса + + + Династии + контроль линий + + + Снабженцы + логистика качества + + + + + + + + + + + + + + + Настоящая роскошь для гемархов — не золото, а доступ к правильно отсортированным живым донорам. + \ No newline at end of file diff --git a/assets/vampire-classes.svg b/assets/vampire-classes.svg new file mode 100644 index 0000000..bc5197a --- /dev/null +++ b/assets/vampire-classes.svg @@ -0,0 +1,40 @@ + + + + Классы вампирической адаптации + Псевдобиологическая иерархия SNV-12 + + + Молодой носитель + • обращён недавно + • частый голод + • слабая маскировка + • импульсивное поведение + Питается чаще, + но менее избирательно + + + Старший адаптант + • клетки глубоко перестроены + • устойчивый самоконтроль + • высокая фототолерантность + • столетнее накопление влияния + Пьёт реже, + но требует лучший материал + + + Гемарх + • древнейшая элита + • редкое питание + • максимальная избирательность + • контроль династий и рынков + Кровь для него — + премиальный стратегический ресурс + + + + + + + Чем древнее вампир, тем реже он питается, но тем дороже обходится каждый акт питания. + \ No newline at end of file diff --git a/doklad.md b/doklad.md new file mode 100644 index 0000000..e8cc6ba --- /dev/null +++ b/doklad.md @@ -0,0 +1,314 @@ +# Пищевая цепочка: от тебя до теневого правительства + +Подзаголовок: псевдонаучная реконструкция гемофагической элиты позднего Средневековья + +Жанровая пометка: данный текст подготовлен для развлекательного выступления в клубе шапочек из фольги и сознательно имитирует академический стиль, не претендуя на научную достоверность. + +## Аннотация + +В настоящем докладе рассматривается расширенная гипотеза о происхождении глобального теневого правительства как долгоживущей гемозависимой популяции, возникшей вследствие вирусного события в XII-XIV веках. Предполагается, что возбудитель, условно обозначаемый как _Sanguis Noctis Virus_ (SNV-12), вызвал у части инфицированных устойчивые физиологические изменения: эпизодическую потребность в человеческой крови, выраженное замедление старения, усиление выносливости, ускоренную регенерацию и обратимую фототолерантность после кровепития. В расширенной версии теории ключевое значение придаётся не только самому факту вампиризации, но и возникновению внутренней иерархии носителей, рынка «качественной крови», зависимости от живой донорской сигнатуры и превращению человеческой цивилизации в систему биополитического снабжения. + +## 1. Постановка проблемы + +Классические конспирологические модели обычно отвечают на вопрос «кто управляет?», но редко задаются более фундаментальным вопросом: «зачем управлять настолько сложно и скрытно?». Предлагаемая теория исходит из простой биосоциальной предпосылки: если небольшая группа существ физиологически зависит от крови людей, то наиболее рациональной стратегией для неё становится не открытая охота, а долговременное институциональное управление популяцией-донором. + +Иными словами, теневое правительство в данной модели выступает не политическим, а трофическим феноменом. Власть здесь понимается как надстройка над пищевой цепочкой. + +## 2. Предполагаемый возбудитель и научная терминология + +Для придания гипотезе внутренней строгости предлагается использовать следующие термины: + +- гемозависимый постчеловеческий синдром; +- латентная вирус-индуцированная вампиризация; +- хроническая антропогематофагия; +- элитарный гемополитический комплекс; +- фотолабильная, но обратимо фототолерантная мутация. + +Самих «вампиров» в научно-стилизованной речи корректнее называть: + +- носителями гемофагического фенотипа; +- постинфекционными гематоклазматическими долгожителями; +- представителями латентной гемополитической касты. + +Рабочее название возбудителя: _Sanguis Noctis Virus_ (SNV-12). По легенде, он распространился в Европе между XII и XIV веками на фоне войн, скученности населения, антисанитарии и активных миграций. + +## 3. Историческое окно заражения: XII-XIV века + +Выбор данного периода обусловлен рядом псевдонаучно значимых факторов. + +Во-первых, средневековая Европа представляла собой идеальную среду для скрытой циркуляции неизвестного патогена: ограниченные представления о медицине, высокая смертность и отсутствие централизованных систем диагностики делали любые аномальные случаи почти неотличимыми от «естественных» бедствий. + +Во-вторых, эпоха сопровождалась постоянными военными конфликтами, локальными голодами, эпидемическими вспышками и интенсивным контактом между регионами. Всё это создавало благоприятные условия для селекции штамма, способного передаваться через кровь и биологические жидкости. + +В-третьих, именно в этот период заметно возрастает количество легенд о ночных существах, «неразлагающихся телах», проклятых родах и аристократах, избегающих дневной активности. В рамках теории эти фольклорные данные интерпретируются как культурный след ранней фазы заражения. + +## 4. Механизм вампиризации + +Согласно модели, SNV-12 не превращает человека в мифическое существо мгновенно. Вместо этого он перестраивает метаболизм по нескольким направлениям. + +### 4.1. Гематическая зависимость + +Вирус подавляет часть обычных обменных путей и формирует потребность в специфических белках, гормонах и микроРНК, поступающих только с человеческой кровью. Поэтому кровь выступает не символом, а редкой биохимической добавкой, без которой носитель теряет функциональные преимущества. + +### 4.2. Замедление старения + +Предполагается, что вирус активирует усиленные механизмы клеточного ремонта, снижает темп теломерного укорочения и повышает эффективность удаления повреждённых клеток. В результате носитель стареет чрезвычайно медленно и может сохранять социальную активность в течение столетий. + +### 4.3. Когнитивное усиление + +Долгая жизнь сама по себе создаёт преимущество накопления знаний. Теория усиливает этот эффект предположением о повышенной нейропластичности, устойчивости памяти и способности к долгосрочному стратегическому планированию. Один долгоживущий субъект, делающий выводы на протяжении трёхсот лет, получает преимущество перед десятками сменяющихся поколений обычных политиков. + +### 4.4. Обратимая фототолерантность + +Классическая слабость к солнечному свету в этой версии не абсолютна. После кровепития носитель на ограниченное время восполняет дефицит веществ, защищающих ткани от ультрафиолетового повреждения. Поэтому сытый представитель касты способен находиться на дневном свету, почти не отличаясь от обычного человека. + +## 5. Биосовместимость и летальный исход заражения + +Расширенная теория исходит из того, что вампиризация является не универсальным исходом заражения, а редким случаем успешной биосовместимости вируса и организма хозяина. Иными словами, не всякий укушенный становится вампиром; большинство становятся статистикой. + +Предполагается, что у части заражённых SNV-12 запускает гиперсинтез термоактивных гемокатализаторов — условных белково-ферментных комплексов, которые при превышении критического гемореактивного порога вступают в лавинообразную реакцию с железосодержащими компонентами крови. Это вызывает внутрисосудистый перегрев, гемолиз и быстрый летальный исход, который в народной традиции был переосмыслен как «закипание крови». + +Для описания данного состояния предлагаются термины: + +- термогемолитический коллапс; +- феррогемный каскад; +- критический гемореактивный порог; +- летальная несовместимость с SNV-12. + +Именно этот механизм объясняет, почему вампиров мало, почему заражение опасно и почему элита особенно ценит биологически устойчивых носителей. + +## 6. Классификация вампиров и внутренняя иерархия + +Если не каждый заражённый способен пережить перестройку, возникает вопрос: кто именно формирует ядро гемополитической касты? Теория предлагает следующую классификацию. + +### 6.1. Первичная смертность + +Это заражённые, не пережившие перестройку. Они не входят в систему власти, но служат биологическим фоном, показывающим, насколько редок успешный исход. + +### 6.2. Молодые носители + +Недавно обращённые субъекты, условно до ста лет с момента заражения. Их клетки ещё недостаточно адаптированы к вирусу, поэтому они: + +- чаще испытывают голод; +- хуже контролируют поведение; +- сильнее зависят от частого кормления; +- заметнее проявляют физиологические симптомы. + +### 6.3. Старшие адаптанты + +Носители, пережившие длительную клеточную перестройку. Их ткани глубоко интегрировали вирусный режим, поэтому они устойчивее, скрытнее и функционально эффективнее. Именно из них чаще формируются династии, финансовые дома и долговременные политические сети. + +### 6.4. Гемархи + +Древнейшие представители касты. Это элита элиты: редкие, старые, интеллектуально опасные субъекты, питающиеся реже, но гораздо более избирательно. Они чувствительны к качеству крови, хуже переносят низкосортное «сырьё» и потому контролируют доступ к лучшим донорам. + +### 6.5. Возраст заражения как фактор карьеры + +Чем раньше происходит заражение, тем пластичнее ткани и тем выше шанс успешной интеграции SNV-12. Молодой организм легче перестраивает обменные контуры, а значит, имеет больше шансов стать долгоживущим адаптантом. Биологическая старшинство в данной модели почти автоматически превращается в политическую старшинство. + +## 7. Как распознать вампира + +В развлекательной логике доклада можно выделить несколько косвенных индикаторов. + +### 7.1. Визуальные признаки + +- слегка увеличенные клыки; +- необычно медленное старение; +- чрезмерно ровная кожа без очевидных возрастных следов; +- внимательное отношение к ранениям, крови и медицинским процедурам. + +### 7.2. Поведенческие признаки голодной фазы + +У нестабильных носителей в фазе дефицита наблюдаются: + +- раздражительность и срывы самоконтроля; +- туннельное внимание к теме крови, травм и переливаний; +- резкое расширение зрачка; +- визуальный эффект тёмного, почти почерневшего зрачка. + +Для последнего феномена вводится термин «гемомеланиновый эффект зрачка»: из-за сосудистых и пигментных сдвигов в голодной фазе зрачок визуально расширяется и темнеет, создавая впечатление, будто он «заполняется кровью изнутри». + +### 7.3. Институциональные признаки + +- чрезмерная любовь к закрытым клубам и приватным приёмам; +- непрозрачная карьера длиной в несколько эпох; +- странная молодость у фигур, давно присутствующих в элитных кругах; +- нежелание проходить спонтанную медицинскую диагностику. + +При этом ни один признак сам по себе не является доказательством. В псевдонаучной композиции значение имеет только совокупность симптомов. + +## 8. Экономика качественной крови + +Если биология различий между носителями реальна, то различия должны существовать и внутри самого ресурса. В этой модели кровь является не однородным веществом, а стратифицированным биоресурсом, различающимся по питательной, гормональной и регенеративной ценности. + +Предлагается следующая псевдоклассификация: + +- массовая кровь — пригодна для молодых носителей и периферии; +- стабильная кровь — от физиологически устойчивых доноров; +- пиковая кровь — от молодых, здоровых, тренированных, биохимически «чистых» людей; +- династическая кровь — от линий, якобы веками отслеживаемых как особо совместимые. + +Чем древнее вампир, тем реже он питается, но тем дороже обходится каждый акт питания. Низкосортная кровь может поддерживать существование, но не обеспечивает полноценной регенерации, ясности мышления и фототолерантности у старших адаптантов и гемархов. + +Отсюда возникает система гемоселекции: биометрия, элитная медицина, биобанки, профилактические осмотры и закрытые фонды в данной теории начинают выглядеть не только как механизмы контроля населения, но и как система сортировки живого донорского материала по качеству. + +## 9. Почему искусственная кровь им не подходит + +На первый взгляд кажется, что технический прогресс должен был давно освободить носителей SNV-12 от зависимости от человека. Однако расширенная теория утверждает обратное: вампирам нужны не просто эритроциты, плазма и железо, а краткоживущий нейроэндокринный профиль живого донора. + +Питательная ценность крови для носителей SNV-12 определяется не только клеточным составом, но и так называемой «живой сигнатурой» — набором гормональных, ферментативных, стрессовых и биоэлектрохимических маркеров, быстро исчезающих после технологической стабилизации материала. + +Искусственная кровь может поддержать базовую гемодинамику, но не обеспечивает: + +- насыщения на уровне вирусного метаболизма; +- ментальной стабилизации; +- полноценной регенерации; +- восстановления фототолерантности. + +Искусственная кровь для древнего вампира — это как дистиллированная вода вместо многолетнего вина: базовая функция есть, полноценного эффекта нет. Именно поэтому человечество в данной модели не уничтожается, а сохраняется как стратегически ценная, живая и воспроизводимая кормовая база. + +## 10. Тайный рынок доноров + +Если кровь различается по ценности, то неизбежно возникает и рынок качества. Помимо массовой кормовой базы теория предполагает существование закрытого рынка редких доноров, где ценятся не объёмы, а здоровье, происхождение, возраст, гормональная стабильность и совместимость. + +Предполагаемые элементы такого рынка: + +- частные элитные клиники; +- закрытые биобанки; +- фонды наблюдения за «перспективными» линиями; +- клубы здоровья, работающие как витрина селекции; +- закрытые школы и дома, где доноры отбираются поколениями. + +Настоящая роскошь для гемархов — не золото и не нефть, а доступ к редким и правильно отсортированным живым донорам. + +## 11. Ритуалы отбора и кровяной этикет элиты + +То, что в человеческой культуре называется роскошным приёмом, в этой теории может оказаться социально замаскированной процедурой донорской селекции. Древние вампиры не питаются хаотично: у них существуют ритуализированные протоколы оценки донора по возрасту, психофизиологическому состоянию, происхождению и биохимическому профилю. + +Здесь уместны термины: + +- протокол селекции; +- сенсорная оценка профиля; +- нейрогемный аудит; +- церемониализованная дегустация. + +Так появляется кровяной этикет элиты. Грубое кормление рассматривается как признак низкого происхождения, а способность получать доступ к «правильной» крови становится не только биологической необходимостью, но и маркером статуса. + +## 12. Голодная деградация и дисциплина внутри касты + +Внутри вампирической иерархии кровь — это одновременно пища, валюта и инструмент подчинения. Если молодой носитель длительное время питается низкокачественной кровью или суррогатами, он деградирует поведенчески: становится импульсивнее, хуже скрывается, срывается в звероподобные реакции и повышает риск раскрытия всей системы. + +Схема выглядит так: + +дефицит качественной крови -> срыв контроля -> заметное поведение -> изоляция или устранение. + +Следовательно, древняя верхушка контролирует не только людей, но и собственных подчинённых вампиров через распределение качественной крови. Биологическое снабжение становится механизмом внутренней дисциплины. + +## 13. Кровяные резервы на случай кризиса + +Любая империя хранит золото, зерно и топливо; гемополитическая империя хранит ещё и правильно распределённые резервы биологического насыщения. Теория предполагает наличие закрытых резервов на случай войн, эпидемий, логистических сбоев и политических катастроф. + +Такими резервами могут выступать: + +- секретные хранилища донорского материала; +- закрытые санатории и частные медицинские комплексы; +- специальные фонды для поддержки древних носителей; +- региональные кризисные узлы снабжения. + +Однако эти резервы не решают проблему полностью. Они лишь стабилизируют систему на короткий срок. Длительное существование всё равно возможно только при наличии живой, здоровой и управляемой человеческой популяции. + +## 14. Почему они захватили власть + +Если популяция немногочисленна, но биологически зависима от человека, перед ней стоят уже не три, а как минимум пять базовых задач: + +1. обеспечить регулярный и безопасный доступ к источнику крови; +2. скрыть истинную природу собственного существования; +3. предотвратить объединение большинства против меньшинства; +4. сортировать кровь по качеству; +5. контролировать собственную внутреннюю иерархию. + +Наиболее эффективный путь решения всех пяти задач — контроль институтов. Захват власти в данной модели не является проявлением абстрактной жажды господства. Это всего лишь оптимизация кормовой инфраструктуры. + +Государства, банки, закрытые клубы, медицинские системы, элитные школы, спецслужбы и транснациональные корпорации при таком подходе становятся элементами единой экосистемы распределения ресурсов. Не деньги порождают власть, а потребность в стабильном и качественном питании порождает контроль над денежными, политическими и демографическими потоками. + +## 15. Структура глобальной кормовой системы + +Теория предполагает, что Земля поделена на зоны влияния между конкурирующими династиями носителей гемофагического фенотипа. Эти зоны могут совпадать с историческими империями, финансовыми блоками, сырьевыми коридорами и культурными ареалами. + +Внутри системы можно выделить несколько уровней: + +### Уровень 1. Донорская масса + +Обычное население. Выполняет биологическую, экономическую и информационную функцию. Производит ресурсы, создаёт шум, поддерживает институты и служит резервом для скрытого отбора доноров. + +### Уровень 2. Логистические посредники + +Медицинские, военные, охранные, бюрократические и криминальные структуры, не обязательно знающие всю правду, но обеспечивающие перемещение тел, данных, препаратов и людей. + +### Уровень 3. Периферийные посвящённые + +Лица, которым известны отдельные фрагменты системы. Они могут верить, что служат государству, элите, древнему ордену или программе биобезопасности, не понимая полного трофического характера происходящего. + +### Уровень 4. Низшая вампирическая бюрократия + +Управленцы, кураторы, снабженцы и охранные фигуры, поддерживающие порядок внутри касты. Они хуже древних носителей, но ближе к ядру, чем обычные посредники. + +### Уровень 5. Ядро гемополитической касты + +Немногочисленные долгоживущие субъекты, принимающие стратегические решения на горизонте столетий. Для них войны, реформы и кризисы — не катастрофы, а инструменты перераспределения кормовой базы и биологического качества населения. + +## 16. Геополитика кормовых зон + +Поскольку ресурсом выступает не только кровь как таковая, но и управляемость человеческих потоков, зоны влияния формируются по четырём параметрам: + +- плотность населения; +- качество медицинской инфраструктуры; +- степень социальной управляемости; +- объём информационного контроля. + +Из этого следует, что борьба за территории в реальности может быть борьбой за наиболее удобные донорские контуры. Одни регионы ценны как резервуары населения, другие — как каналы транспортировки, третьи — как безопасные убежища для элиты, четвёртые — как экспериментальные полигоны для селекции и наблюдения. + +## 17. Почему общество ничего не замечает + +Гипотеза предлагает три механизма маскировки. + +Первый — статистический. Если кормление распределено по огромной популяции, отдельные эпизоды теряются в общем фоне болезней, преступлений, медицинских процедур и пропавших данных. + +Второй — культурный. Любая попытка говорить о вампирах заранее маркируется как фольклор, хоррор или психическое отклонение. Это идеальная меметическая защита: правда спрятана внутри карикатуры. + +Третий — институциональный. Если элита контролирует каналы легитимного знания, то граница между «серьёзным исследованием» и «маргинальной нелепостью» проводится теми, кто и заинтересован в сокрытии. + +Лучшая маскировка реальности — превратить её в жанровый штамп. + +## 18. Пищевая цепочка: от тебя до теневого правительства + +В сжатом виде предлагаемая схема выглядит так: + +человек -> системы наблюдения и сортировки -> рынок донорского качества -> скрытая логистика крови -> вампирическая бюрократия -> гемархи -> воспроизводство власти -> дальнейший контроль над людьми. + +Следовательно, человек в этой модели включён в пищевую цепочку не напрямую как жертва из замка на холме, а как элемент глобальной инфраструктуры жизнеобеспечения властной касты. + +## 19. Выводы + +1. Теневое правительство можно интерпретировать как биологическую, а не только политическую аномалию. +2. Вампиризм в данной версии выступает формой вирус-индуцированной адаптации, а не мистическим проклятием. +3. Неудачное заражение объясняет малочисленность касты и смертельную опасность обращения. +4. Внутри касты существует жёсткая биологическая иерархия: от молодых носителей до древних гемархов. +5. Контроль над человечеством нужен не только ради количества крови, но и ради контроля её качества. +6. Искусственная кровь не устраняет проблему, потому что не заменяет живую донорскую сигнатуру. +7. Власть в этой модели является системой управления качеством, распределением и воспроизводством человеческой крови как стратегического ресурса. + +## 20. Заключение для выступления + +Если исходить из этой теории, то вершина мировой политики — это не кабинет, не трон и не сейф. Это хорошо организованная столовая премиум-класса, в которой человечество давно записано в меню, но продолжает спорить лишь о способах сервировки. + +## Короткие формулы и термины для эффектной подачи + +- «Власть — это надстройка над пищевой цепью». +- «Геополитика есть распределение кормовых контуров». +- «Элита скрывает не богатство, а биологическую зависимость». +- «Не всякий укушенный становится вампиром; большинство становятся статистикой». +- «Чем древнее вампир, тем реже он питается, но тем дороже обходится каждый акт питания». +- «Кровь внутри системы — это одновременно пища, валюта и инструмент подчинения». +- «Искусственная кровь для них — это суррогат, а не решение». +- «Не все аристократы — вампиры, но все успешные вампиры становятся аристократами». diff --git a/generate_presentation.js b/generate_presentation.js new file mode 100644 index 0000000..df2169b --- /dev/null +++ b/generate_presentation.js @@ -0,0 +1,349 @@ +const path = require('path'); +const pptxgen = require('pptxgenjs'); + +const base = __dirname; +const outPath = path.join(base, 'prezentaciya-vampiricheskoe-tenevoe-pravitelstvo.pptx'); +const assets = { + classes: path.join(base, 'assets', 'vampire-classes.svg'), + blood: path.join(base, 'assets', 'blood-economy.svg'), + market: path.join(base, 'assets', 'hidden-donor-market.svg') +}; + +const pptx = new pptxgen(); +pptx.layout = 'LAYOUT_WIDE'; +pptx.author = 'Hermes Agent'; +pptx.company = 'Nous Research'; +pptx.subject = 'Псевдонаучная теория о гемозависимой элите'; +pptx.title = 'Пищевая цепочка: от тебя до теневого правительства'; +pptx.lang = 'ru-RU'; +pptx.theme = { + headFontFace: 'Aptos Display', + bodyFontFace: 'Aptos', + lang: 'ru-RU' +}; + +const C = { + bgDark: '130B0D', + bgLight: 'F4EEE7', + card: 'FFF8F2', + card2: 'F7E9DD', + red: '7A1623', + red2: 'A42A37', + text: '24181A', + cream: 'F5E6D3', + gold: 'C7A56A', + muted: '705A5D', + line: 'D8C2B8', + white: 'FFFFFF', + ink: '2A1A1D' +}; + +function baseLight(slide, title, tag = 'Псевдонаучная реконструкция') { + slide.background = { color: C.bgLight }; + slide.addShape(pptx.ShapeType.rect, { x: 0, y: 0, w: 13.333, h: 0.45, fill: { color: C.red }, line: { color: C.red } }); + slide.addText(title, { x: 0.55, y: 0.56, w: 9.2, h: 0.4, fontFace: 'Aptos Display', fontSize: 27, bold: true, color: C.ink, margin: 0 }); + slide.addText(tag, { x: 10.2, y: 0.6, w: 2.4, h: 0.18, fontSize: 10, color: C.red2, italic: true, align: 'right', margin: 0 }); +} + +function baseDark(slide, title, subtitle = '') { + slide.background = { color: C.bgDark }; + slide.addShape(pptx.ShapeType.rect, { x: 0, y: 0, w: 13.333, h: 7.5, fill: { color: C.bgDark }, line: { color: C.bgDark } }); + slide.addText(title, { x: 0.9, y: 0.9, w: 8.8, h: 0.8, color: C.white, fontFace: 'Aptos Display', fontSize: 28, bold: true, margin: 0 }); + if (subtitle) { + slide.addText(subtitle, { x: 0.92, y: 1.65, w: 7.7, h: 0.4, color: C.cream, fontSize: 17, italic: true, margin: 0 }); + } +} + +function footer(slide, n) { + slide.addText(String(n).padStart(2, '0'), { x: 12.45, y: 7.05, w: 0.35, h: 0.16, fontSize: 10, color: C.muted, align: 'right', margin: 0 }); +} + +function addBullets(slide, items, opts = {}) { + const text = []; + items.forEach((item) => text.push({ text: item, options: { bullet: { indent: 16 }, breakLine: true } })); + slide.addText(text, { + x: opts.x ?? 0.9, + y: opts.y ?? 1.6, + w: opts.w ?? 5.2, + h: opts.h ?? 4.4, + fontSize: opts.fontSize ?? 18, + color: opts.color ?? C.text, + paraSpaceAfterPt: opts.paraSpaceAfterPt ?? 8, + margin: 0.04, + valign: 'top' + }); +} + +function addCallout(slide, text, opts = {}) { + slide.addShape(pptx.ShapeType.roundRect, { + x: opts.x ?? 0.9, + y: opts.y ?? 5.8, + w: opts.w ?? 11.4, + h: opts.h ?? 0.6, + rectRadius: 0.05, + fill: { color: opts.fill ?? C.red }, + line: { color: opts.fill ?? C.red } + }); + slide.addText(text, { + x: (opts.x ?? 0.9) + 0.15, + y: (opts.y ?? 5.8) + 0.14, + w: (opts.w ?? 11.4) - 0.3, + h: 0.22, + align: 'center', + color: C.white, + fontSize: opts.fontSize ?? 21, + bold: true, + italic: opts.italic ?? true, + margin: 0 + }); +} + +function addCard(slide, x, y, w, h, title, body, accent = C.red2) { + slide.addShape(pptx.ShapeType.roundRect, { x, y, w, h, rectRadius: 0.06, fill: { color: C.card }, line: { color: accent, pt: 1.2 } }); + slide.addText(title, { x: x + 0.18, y: y + 0.16, w: w - 0.36, h: 0.24, fontSize: 17, bold: true, color: C.red, margin: 0 }); + slide.addText(body, { x: x + 0.18, y: y + 0.52, w: w - 0.36, h: h - 0.7, fontSize: 14.6, color: C.text, margin: 0.02, valign: 'mid' }); +} + +// 1 Title +{ + const s = pptx.addSlide(); + s.background = { color: C.bgDark }; + s.addShape(pptx.ShapeType.rect, { x: 0.62, y: 0.72, w: 12.1, h: 6.05, fill: { color: '1E1215', transparency: 10 }, line: { color: C.red2, pt: 1.5 } }); + s.addText('Пищевая цепочка:\nот тебя до теневого правительства', { x: 1.0, y: 1.15, w: 7.4, h: 1.8, color: C.white, fontFace: 'Aptos Display', fontSize: 26, bold: true, margin: 0 }); + s.addText('Расширенная версия: типы вампиров,\nкачественная кровь и скрытый рынок доноров', { x: 1.04, y: 3.02, w: 7.1, h: 0.72, color: C.cream, fontSize: 18, italic: true, margin: 0 }); + s.addText('Клуб шапочек из фольги\nПсевдонаучный доклад в академическом стиле', { x: 1.04, y: 4.05, w: 4.8, h: 0.8, color: 'DCCDC0', fontSize: 16, margin: 0, breakLine: true }); + s.addShape(pptx.ShapeType.ellipse, { x: 8.68, y: 1.15, w: 3.05, h: 3.05, fill: { color: '4A1018' }, line: { color: C.gold, pt: 1.2 } }); + s.addText('Гемарх', { x: 9.38, y: 2.16, w: 1.7, h: 0.3, align: 'center', color: C.white, bold: true, fontSize: 21, margin: 0 }); + s.addShape(pptx.ShapeType.chevron, { x: 8.95, y: 4.42, w: 2.5, h: 0.5, fill: { color: C.gold }, line: { color: C.gold } }); + s.addShape(pptx.ShapeType.ellipse, { x: 8.12, y: 5.06, w: 4.2, h: 1.05, fill: { color: C.red2 }, line: { color: C.red2 } }); + s.addText('Человечество как\nкормовая база', { x: 8.52, y: 5.34, w: 3.45, h: 0.46, align: 'center', color: C.white, fontSize: 17, margin: 0 }); + footer(s, 1); +} + +// 2 Hypothesis +{ + const s = pptx.addSlide(); + baseLight(s, 'Гипотеза исследования'); + addCard(s, 0.88, 1.55, 5.35, 2.15, 'Базовая идея', 'Теневое правительство — это не просто политическая сеть, а долгоживущая гемозависимая каста, превратившая власть в механизм стабильного питания.'); + addBullets(s, [ + 'вирусное происхождение касты;', + 'долголетие как источник стратегического преимущества;', + 'кровь как ресурс, валюта и предмет селекции;', + 'власть как надстройка над пищевой цепочкой.' + ], { x: 7.05, y: 1.72, w: 5.0, h: 3.6, fontSize: 18 }); + addCallout(s, 'Ключевая формула: власть = контроль кормовой инфраструктуры'); + footer(s, 2); +} + +// 3 Virus +{ + const s = pptx.addSlide(); + baseLight(s, 'Sanguis Noctis Virus (SNV-12)'); + addBullets(s, [ + 'латентная вирус-индуцированная вампиризация;', + 'хроническая антропогематофагия;', + 'гемозависимый постчеловеческий синдром;', + 'обратимая фототолерантность после кормления.' + ], { x: 0.88, y: 1.7, w: 5.0, h: 3.8, fontSize: 18 }); + addCard(s, 6.8, 1.55, 5.3, 3.9, 'Ключевые эффекты', 'SNV-12 не делает человека мистическим существом мгновенно. Он перестраивает обменные пути, усиливает регенерацию, замедляет старение и формирует зависимость от человеческой крови как от носителя редких сигнальных молекул.'); + addCallout(s, 'Вампиризм здесь — не проклятие, а вирусная адаптация', { fill: 'A42A37' }); + footer(s, 3); +} + +// 4 Middle Ages +{ + const s = pptx.addSlide(); + baseLight(s, 'Почему именно XII-XIV века'); + s.addText('Средневековье создаёт идеальную среду для скрытого патогена.', { x: 0.9, y: 1.3, w: 8.0, h: 0.3, fontSize: 21, color: C.text, margin: 0 }); + const pts = [ + ['XII век', 'войны и миграции'], + ['XIII век', 'скученность и слабая медицина'], + ['XIV век', 'эпидемии и массовая смертность'], + ['После', 'легенды о ночных аристократах'] + ]; + s.addShape(pptx.ShapeType.line, { x: 1.05, y: 3.55, w: 10.9, h: 0, line: { color: C.red2, pt: 3 } }); + [1.2, 4.05, 6.9, 9.75].forEach((x, i) => { + s.addShape(pptx.ShapeType.ellipse, { x, y: 3.32, w: 0.48, h: 0.48, fill: { color: C.gold }, line: { color: C.red, pt: 1 } }); + s.addText(pts[i][0], { x: x - 0.16, y: 2.58, w: 1.0, h: 0.22, align: 'center', fontSize: 16, bold: true, color: C.red, margin: 0 }); + s.addText(pts[i][1], { x: x - 0.42, y: 4.05, w: 1.55, h: 0.56, align: 'center', fontSize: 15, color: C.text, margin: 0 }); + }); + addCallout(s, 'Там, где высокая смертность, новый патоген легче принять за обычное бедствие', { y: 5.85, fontSize: 20 }); + footer(s, 4); +} + +// 5 Classes with image +{ + const s = pptx.addSlide(); + baseLight(s, 'Классы вампирической адаптации'); + s.addImage({ path: assets.classes, x: 0.78, y: 1.35, w: 7.0, h: 5.35 }); + addBullets(s, [ + 'молодой носитель: нестабилен и голоден;', + 'старший адаптант: устойчив и дисциплинирован;', + 'гемарх: древняя элита, пьёт редко, но требует лучшее.', + 'чем раньше возраст заражения, тем легче клеточная интеграция.' + ], { x: 8.02, y: 1.7, w: 4.4, h: 3.8, fontSize: 17 }); + addCallout(s, 'Древность в этой системе — не возраст, а политический капитал', { y: 6.0, w: 12.0, x: 0.65, fontSize: 20 }); + footer(s, 5); +} + +// 6 failed infection +{ + const s = pptx.addSlide(); + baseLight(s, 'Не всякий укушенный становится вампиром'); + addCard(s, 0.9, 1.55, 5.4, 3.85, 'Термогемолитический коллапс', 'У части заражённых SNV-12 запускает гиперсинтез термоактивных гемокатализаторов. При превышении критического порога включается феррогемный каскад: кровь перегревается, разрушается и даёт летальный исход, который фольклор описывает как «закипание крови».'); + addBullets(s, [ + 'летальная несовместимость с вирусом;', + 'редкость успешной вампиризации;', + 'малочисленность касты объясняется биологически;', + 'выживают только совместимые организмы.' + ], { x: 7.0, y: 1.9, w: 4.8, h: 3.2, fontSize: 18 }); + addCallout(s, 'Не всякий укушенный становится вампиром; большинство становятся статистикой'); + footer(s, 6); +} + +// 7 recognition +{ + const s = pptx.addSlide(); + baseLight(s, 'Как распознать вампира'); + addCard(s, 0.9, 1.55, 3.8, 3.6, 'Визуальные маркеры', 'слегка увеличенные клыки;\nстранно медленное старение;\nслишком ровная кожа;\nаккуратное отношение к ранениям и крови.'); + addCard(s, 4.85, 1.55, 3.8, 3.6, 'Голодная фаза', 'раздражительность;\nсрыв самоконтроля;\nтуннельное внимание к травмам;\nрасширенный почерневший зрачок.'); + addCard(s, 8.8, 1.55, 3.6, 3.6, 'Институциональные следы', 'закрытые клубы;\nаномально долгая карьера;\nнежелание спонтанной диагностики;\nсвязи через эпохи.'); + addCallout(s, 'Ни один симптом не доказывает ничего сам по себе — работает только совокупность', { y: 5.95, w: 12.0, x: 0.65, fontSize: 19 }); + footer(s, 7); +} + +// 8 blood economy with image +{ + const s = pptx.addSlide(); + baseLight(s, 'Экономика качественной крови'); + s.addImage({ path: assets.blood, x: 0.78, y: 1.35, w: 7.1, h: 5.25 }); + addBullets(s, [ + 'массовая кровь — для периферии;', + 'стабильная кровь — от здоровых доноров;', + 'пиковая кровь — от молодых и сильных;', + 'династическая кровь — от особо ценных линий.' + ], { x: 8.0, y: 1.65, w: 4.3, h: 3.6, fontSize: 17 }); + addCallout(s, 'Чем древнее вампир, тем реже он питается, но тем дороже обходится каждый акт питания', { y: 5.95, x: 0.65, w: 12.0, fontSize: 18 }); + footer(s, 8); +} + +// 9 artificial blood +{ + const s = pptx.addSlide(); + baseLight(s, 'Почему искусственная кровь им не подходит'); + addCard(s, 0.9, 1.55, 5.2, 3.95, 'Живая сигнатура', 'Для носителей SNV-12 важны не только клетки крови, но и краткоживущий нейроэндокринный профиль донора: гормоны, стрессовые маркеры, текущий метаболизм, «живая» биохимическая сигнатура.'); + addBullets(s, [ + 'искусственная кровь даёт базовую функцию;', + 'но не даёт истинного насыщения;', + 'не обеспечивает полную регенерацию;', + 'не восстанавливает фототолерантность у гемархов.' + ], { x: 7.0, y: 1.8, w: 4.9, h: 3.3, fontSize: 17.5 }); + addCallout(s, 'Искусственная кровь для них — суррогат, а не решение'); + footer(s, 9); +} + +// 10 donor market image +{ + const s = pptx.addSlide(); + baseLight(s, 'Тайный рынок доноров'); + s.addImage({ path: assets.market, x: 0.75, y: 1.35, w: 7.0, h: 5.25 }); + addBullets(s, [ + 'частные клиники и биобанки;', + 'элитные школы и клубы как фильтр линий;', + 'донорские дома и закрытые фонды наблюдения;', + 'качество важнее объёма.' + ], { x: 8.02, y: 1.72, w: 4.2, h: 3.5, fontSize: 17 }); + addCallout(s, 'Настоящая роскошь для гемархов — не золото, а доступ к правильно отсортированным живым донорам', { y: 5.95, x: 0.65, w: 12.0, fontSize: 17 }); + footer(s, 10); +} + +// 11 power capture +{ + const s = pptx.addSlide(); + baseLight(s, 'Почему захват власти рационален'); + addBullets(s, [ + 'обеспечить безопасный доступ к крови;', + 'скрыть своё существование;', + 'предотвратить объединение большинства;', + 'сортировать кровь по качеству;', + 'контролировать внутреннюю иерархию.' + ], { x: 0.95, y: 1.7, w: 5.4, h: 3.7, fontSize: 18 }); + addCard(s, 7.1, 1.85, 4.9, 2.9, 'Следствие', 'Государства, банки, элитная медицина, спецслужбы и закрытые клубы превращаются в элементы единой экосистемы биологического снабжения.'); + addCallout(s, 'Власть здесь не цель, а технология питания', { y: 5.85, fontSize: 23 }); + footer(s, 11); +} + +// 12 internal discipline +{ + const s = pptx.addSlide(); + baseLight(s, 'Кровь как валюта и инструмент подчинения'); + addCard(s, 0.9, 1.55, 3.7, 3.8, 'Низшие носители', 'Если молодой вампир долго питается плохой кровью или суррогатами, он теряет контроль, становится заметнее и опаснее для конспирации.'); + addCard(s, 4.8, 1.55, 3.7, 3.8, 'Вампирическая бюрократия', 'Кураторы и снабженцы распределяют доступ к качественному ресурсу, удерживая периферию от распада и самовольства.'); + addCard(s, 8.7, 1.55, 3.6, 3.8, 'Гемархи', 'Древняя верхушка удерживает касту через монополию на лучший донорский материал и кризисные резервы.'); + addCallout(s, 'Кровь внутри системы — это одновременно пища, валюта и инструмент подчинения', { y: 5.95, x: 0.65, w: 12.0, fontSize: 18 }); + footer(s, 12); +} + +// 13 geography +{ + const s = pptx.addSlide(); + baseLight(s, 'Геополитика кормовых зон'); + const zones = [ + ['Резервуары населения', 'плотные и управляемые регионы'], + ['Транспортные коридоры', 'маршруты людей и биоресурсов'], + ['Убежища элиты', 'безопасные территории древних династий'], + ['Экспериментальные полигоны', 'пространства селекции и наблюдения'] + ]; + const xs = [0.9, 6.85, 0.9, 6.85]; + const ys = [1.9, 1.9, 4.1, 4.1]; + zones.forEach((z, i) => addCard(s, xs[i], ys[i], 5.0, 1.55, z[0], z[1], i % 2 === 0 ? C.red2 : C.gold)); + addCallout(s, 'Геополитика = распределение кормовых контуров', { y: 6.25, fontSize: 22 }); + footer(s, 13); +} + +// 14 chain +{ + const s = pptx.addSlide(); + baseLight(s, 'Пищевая цепочка: от тебя до теневого правительства'); + const blocks = [ + ['Ты', 'исходный биоресурс'], + ['Сортировка', 'биометрия и скрининг'], + ['Рынок качества', 'редкие и элитные доноры'], + ['Скрытая логистика', 'кровь, данные, доступ'], + ['Гемархи', 'верхушка спроса и власти'] + ]; + let x = 0.28; + blocks.forEach((b, i) => { + const w = i === 2 ? 2.5 : 2.25; + s.addShape(pptx.ShapeType.roundRect, { x, y: 2.55, w, h: 1.55, rectRadius: 0.06, fill: { color: i === 4 ? C.red : 'FBF3EB' }, line: { color: i === 4 ? C.red : C.gold, pt: 1.2 } }); + s.addText(b[0], { x: x + 0.15, y: 2.82, w: w - 0.3, h: 0.22, align: 'center', fontSize: 17, bold: true, color: i === 4 ? C.white : C.red, margin: 0 }); + s.addText(b[1], { x: x + 0.12, y: 3.18, w: w - 0.24, h: 0.42, align: 'center', fontSize: 13.8, color: i === 4 ? C.white : C.text, margin: 0.02 }); + if (i < blocks.length - 1) { + s.addShape(pptx.ShapeType.chevron, { x: x + w + 0.08, y: 3.0, w: 0.42, h: 0.36, fill: { color: C.red2 }, line: { color: C.red2 } }); + } + x += w + 0.55; + }); + addCallout(s, 'Человек включён в систему не как гражданин, а как элемент глобальной донорской инфраструктуры', { y: 5.65, x: 0.75, w: 11.8, fontSize: 18 }); + footer(s, 14); +} + +// 15 conclusion +{ + const s = pptx.addSlide(); + baseDark(s, 'Вывод', 'Финальная формула псевдонаучной модели'); + s.addText('Если теория верна, вершина мировой политики — это не кабинет и не трон, а хорошо организованная столовая премиум-класса, где человечество давно числится в меню.', { x: 0.95, y: 2.0, w: 8.15, h: 1.9, fontSize: 24, color: C.cream, margin: 0.02, valign: 'mid' }); + s.addShape(pptx.ShapeType.roundRect, { x: 9.15, y: 1.6, w: 2.85, h: 3.4, rectRadius: 0.08, fill: { color: '2A1419' }, line: { color: C.gold, pt: 1.3 } }); + s.addText('Ключевые\nформулы', { x: 9.72, y: 2.0, w: 1.75, h: 0.6, align: 'center', fontSize: 20, bold: true, color: C.white, margin: 0 }); + s.addText('• власть = кормовая логистика\n• кровь = валюта\n• элита скрывает не власть, а рацион', { x: 9.45, y: 2.9, w: 2.25, h: 1.25, fontSize: 15.5, color: C.cream, margin: 0.02 }); + s.addText('Жанр: академически поданная псевдонаука для клуба шапочек из фольги', { x: 1.0, y: 6.45, w: 7.4, h: 0.22, fontSize: 13, color: 'D2B8A5', italic: true, margin: 0 }); + footer(s, 15); +} + +async function main() { + await pptx.writeFile({ fileName: outPath }); +} + +main().catch((err) => { + console.error(err.stack || err.message || String(err)); + process.exit(1); +}); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..68fc00a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,172 @@ +{ + "name": "vampire-government", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "vampire-government", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "pptxgenjs": "^4.0.1" + } + }, + "node_modules/@types/node": { + "version": "22.20.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.0.tgz", + "integrity": "sha512-QWlFW2wf3nTjC13/DqRnBpR4ZO36VJH/JVBkA/vcnmbTBNQIlnObqyqZE1tUR7+Ni23Lda8R1BxMfbXRpCUx5g==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz", + "integrity": "sha512-4EC57ddXrkaF0x83Oj8sM6SLQHAWXw90Skqu2M4AEWENZ3F02dFJE/GARA8igO79tcgYqGrD7ae4f5L3um2lgg==", + "license": "ISC" + }, + "node_modules/image-size": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", + "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", + "license": "MIT", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, + "node_modules/pptxgenjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pptxgenjs/-/pptxgenjs-4.0.1.tgz", + "integrity": "sha512-TeJISr8wouAuXw4C1F/mC33xbZs/FuEG6nH9FG1Zj+nuPcGMP5YRHl6X+j3HSUnS1f3at6k75ZZXPMZlA5Lj9A==", + "license": "MIT", + "dependencies": { + "@types/node": "^22.8.1", + "https": "^1.0.0", + "image-size": "^1.2.1", + "jszip": "^3.10.1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..3e12c83 --- /dev/null +++ b/package.json @@ -0,0 +1,16 @@ +{ + "name": "vampire-government", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "node verify.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "type": "commonjs", + "dependencies": { + "pptxgenjs": "^4.0.1" + } +} diff --git a/prezentaciya-vampiricheskoe-tenevoe-pravitelstvo.pdf b/prezentaciya-vampiricheskoe-tenevoe-pravitelstvo.pdf new file mode 100644 index 0000000..34d73e9 Binary files /dev/null and b/prezentaciya-vampiricheskoe-tenevoe-pravitelstvo.pdf differ diff --git a/prezentaciya-vampiricheskoe-tenevoe-pravitelstvo.pptx b/prezentaciya-vampiricheskoe-tenevoe-pravitelstvo.pptx new file mode 100644 index 0000000..461ab1d Binary files /dev/null and b/prezentaciya-vampiricheskoe-tenevoe-pravitelstvo.pptx differ diff --git a/razdatochnyj-material.md b/razdatochnyj-material.md new file mode 100644 index 0000000..e8b4e7a --- /dev/null +++ b/razdatochnyj-material.md @@ -0,0 +1,129 @@ +# Раздаточный материал + +Тема: Пищевая цепочка: от тебя до теневого правительства +Формат: краткие тезисы к выступлению + +Жанровая пометка: развлекательная псевдонаучная теория в академическом стиле. + +## 1. Базовая гипотеза + +В XII-XIV веках возник вирус _Sanguis Noctis Virus_ (SNV-12), который вызвал у части людей: +- зависимость от человеческой крови; +- резкое замедление старения; +- повышенную силу и выносливость; +- улучшенную регенерацию; +- временную устойчивость к солнечному свету после кровепития. + +Научное обозначение феномена: +- латентная вирус-индуцированная вампиризация; +- хроническая антропогематофагия; +- гемозависимый постчеловеческий синдром. + +## 2. Не каждый укушенный становится вампиром + +У части заражённых организм не выдерживает перестройку. +Псевдонаучное объяснение: развивается термогемолитический коллапс — «закипание крови» из-за феррогемного каскада. + +Вывод: +Вампиризация — редкий случай успешной биосовместимости вируса и организма. + +## 3. Типы вампиров + +- Молодой носитель — недавно заражён, нестабилен, часто голоден, хуже скрывается. +- Старший адаптант — давно перестроен, лучше контролирует голод, устойчивее и умнее. +- Гемарх — древний элитный вампир, питается редко, но требует качественную кровь. + +Ключевая формула: +Древность в этой системе — не возраст, а политический капитал. + +## 4. Как распознать вампира + +- клыки чуть длиннее нормы; +- странно медленное старение; +- повышенный интерес к крови, травмам, переливаниям; +- в голоде — вспышки агрессии и расширенные тёмные зрачки; +- слишком долгая карьера и одинаково влиятельные связи в разных эпохах. + +Важно: +Ни один признак не доказывает ничего сам по себе. Значение имеет совокупность симптомов. + +## 5. Экономика качественной крови + +Не вся кровь равна. + +Внутри системы есть стратификация: +- массовая кровь — для низших носителей; +- стабильная кровь — от здоровых и устойчивых доноров; +- пиковая кровь — от молодых, сильных, биохимически «чистых»; +- династическая кровь — от особенно ценных линий. + +Формула: +Чем древнее вампир, тем реже он питается, но тем дороже обходится каждый акт питания. + +## 6. Почему не искусственная кровь + +Потому что им нужен не просто состав крови, а её «живая сигнатура»: +- гормоны; +- стрессовые маркеры; +- нейрохимия; +- текущий метаболический профиль донора. + +Искусственная кровь может поддержать существование, но не даёт полноценного насыщения, регенерации и ясности. + +## 7. Тайный рынок доноров + +У элиты есть не только кормовая база, но и скрытый рынок редких доноров: +- частные клиники; +- закрытые биобанки; +- фонды наблюдения; +- элитные школы и клубы; +- «донорские дома» с поколенческим отбором. + +Настоящая роскошь для гемархов — не золото, а доступ к правильно отсортированным живым донорам. + +## 8. Кровь как валюта и дисциплина + +Внутри касты кровь — это: +- пища; +- валюта; +- статус; +- средство подчинения. + +Если низший носитель долго питается плохой кровью, он деградирует, срывается и становится угрозой конспирации. + +## 9. Почему они не прячутся в замках + +Потому что современный вампир эффективнее как: +- банкир; +- министр; +- владелец медиахолдинга; +- куратор спецслужб; +- глава биомедицинского фонда. + +Современная охота заменена институциональным контролем. + +## 10. Пищевая цепочка + +Человек +↓ +Системы учёта и сортировки +↓ +Рынок донорского качества +↓ +Скрытая логистика крови +↓ +Вампирическая бюрократия +↓ +Гемархи + +## 11. Короткие фразы для запоминания + +- «Теневое правительство — это вершина пищевой цепочки». +- «Они скрывают не власть, а рацион». +- «Не всякий укушенный становится вампиром; большинство становятся статистикой». +- «Кровь внутри системы — это одновременно пища, валюта и инструмент подчинения». +- «Искусственная кровь для них — это суррогат, а не решение». + +## 12. Финальная мысль + +Если теория верна, то человечество живёт не внутри обычной политической системы, а внутри хорошо замаскированной биологической экономики, где власть — это менеджмент донорской базы, а элита спорит не о морали, а о качестве поставок. diff --git a/rendered2/prezentaciya-vampiricheskoe-tenevoe-pravitelstvo.png b/rendered2/prezentaciya-vampiricheskoe-tenevoe-pravitelstvo.png new file mode 100644 index 0000000..0ade130 Binary files /dev/null and b/rendered2/prezentaciya-vampiricheskoe-tenevoe-pravitelstvo.png differ diff --git a/rendered_check/prezentaciya-vampiricheskoe-tenevoe-pravitelstvo.png b/rendered_check/prezentaciya-vampiricheskoe-tenevoe-pravitelstvo.png new file mode 100644 index 0000000..c9ec97c Binary files /dev/null and b/rendered_check/prezentaciya-vampiricheskoe-tenevoe-pravitelstvo.png differ diff --git a/verify.js b/verify.js new file mode 100644 index 0000000..919f095 --- /dev/null +++ b/verify.js @@ -0,0 +1,67 @@ +const fs = require('fs'); +const path = require('path'); +const { execFileSync } = require('child_process'); +const JSZip = require('jszip'); + +const base = __dirname; +const pptxPath = path.join(base, 'prezentaciya-vampiricheskoe-tenevoe-pravitelstvo.pptx'); +const pdfPath = path.join(base, 'prezentaciya-vampiricheskoe-tenevoe-pravitelstvo.pdf'); +const reportPath = path.join(base, 'doklad.md'); +const handoutPath = path.join(base, 'razdatochnyj-material.md'); + +function assert(cond, msg) { + if (!cond) throw new Error(msg); +} + +async function main() { + execFileSync('node', ['generate_presentation.js'], { cwd: base, stdio: 'inherit' }); + + assert(fs.existsSync(reportPath), 'Доклад не найден'); + assert(fs.existsSync(handoutPath), 'Раздаточный материал не найден'); + assert(fs.existsSync(pptxPath), 'PPTX не найден'); + + const report = fs.readFileSync(reportPath, 'utf8'); + const handout = fs.readFileSync(handoutPath, 'utf8'); + assert(report.includes('Sanguis Noctis Virus'), 'В докладе отсутствует ключевой термин'); + assert(report.includes('Экономика качественной крови'), 'В докладе нет раздела о качественной крови'); + assert(report.includes('Почему искусственная кровь им не подходит'), 'В докладе нет раздела про искусственную кровь'); + assert(handout.includes('Тайный рынок доноров'), 'В раздатке нет блока про тайный рынок доноров'); + + const pptxBuf = fs.readFileSync(pptxPath); + const zip = await JSZip.loadAsync(pptxBuf); + const slideFiles = Object.keys(zip.files) + .filter((n) => /^ppt\/slides\/slide\d+\.xml$/.test(n)) + .sort((a, b) => Number(a.match(/slide(\d+)/)[1]) - Number(b.match(/slide(\d+)/)[1])); + assert(slideFiles.length === 15, `Ожидалось 15 слайдов, получено ${slideFiles.length}`); + + const firstSlide = await zip.files[slideFiles[0]].async('string'); + const middleSlide = await zip.files[slideFiles[7]].async('string'); + const lastSlide = await zip.files[slideFiles[slideFiles.length - 1]].async('string'); + assert(firstSlide.includes('Пищевая цепочка:'), 'На первом слайде нет заголовка'); + assert(middleSlide.includes('Экономика качественной крови'), 'Нет слайда про экономику качественной крови'); + assert(lastSlide.includes('Вывод'), 'На последнем слайде нет слайда с выводом'); + + try { + execFileSync('soffice', ['--headless', '--convert-to', 'pdf', '--outdir', base, pptxPath], { + cwd: base, + stdio: 'pipe' + }); + } catch (err) { + throw new Error(`Не удалось сконвертировать PPTX в PDF: ${err.message}`); + } + + assert(fs.existsSync(pdfPath), 'PDF не был создан'); + assert(fs.statSync(pdfPath).size > 20000, 'PDF подозрительно мал'); + + console.log('Verification OK'); + console.log(`- report bytes: ${fs.statSync(reportPath).size}`); + console.log(`- handout bytes: ${fs.statSync(handoutPath).size}`); + console.log(`- pptx bytes: ${fs.statSync(pptxPath).size}`); + console.log(`- pdf bytes: ${fs.statSync(pdfPath).size}`); + console.log(`- slides: ${slideFiles.length}`); +} + +main().catch((err) => { + console.error(err.stack || err.message || String(err)); + process.exit(1); +});