Она скользила вокруг Кая, как тень. Несколько раз они находились буквально в метре друг от друга, разделенные лишь тонкой переборкой из титанового сплава. Рин задерживала дыхание, слыша, как он чертыхается, пытаясь открутить прикипевшую гайку. Ей до смерти хотелось крикнуть через решетку: «Идиот, там левая резьба и магнитный замок!», но она молчала.
Первое подозрение закралось в голову Кая на сорок второй день полета.
Это случилось из-за сбоя в системе рециркуляции воздуха на палубе крио-капсул. Датчики показали критическое падение давления. Айзек завыл сиреной в рубке.
Кай, выплеснув на себя кофе, помчался на нижние уровни.
Но Рин была там первой. Она как раз воровала фильтр для воды и оказалась в эпицентре. Проблема была не в механике, а в тупом, неповоротливом коде Айзека, который зациклился на конфликте двух подпрограмм. Давление падало, потому что Искин пытался одновременно открыть и закрыть клапан. Еще пять минут, и пара золотых мальчиков в капсулах превратилась бы в замороженное мясо с асфиксией.
Рин не думала. Она сорвала крышку сервисного терминала, подключила свой дешифратор и, стоя на коленях в пыли, за сорок секунд переписала корневой алгоритм Айзека для этого узла. Она не просто устранила баг. Она написала новый, элегантный, умный скрипт, который сократил время отклика клапанов втрое.
Лязгнул металл. Давление выровнялось.
И в этот момент Рин услышала тяжелые шаги по металлической лестнице. Кай бежал вниз, перепрыгивая через ступеньки.
Она выдернула кабель, юркнула под платформу компрессора и бесшумно втянулась в вентиляционную шахту, надвинув капюшон на самые глаза.
Кай ворвался в отсек с плазменным резаком в руке, тяжело дыша. Он огляделся. Отсек был пуст. Гудели ровно работающие фильтры.
Рин смотрела на него сквозь щели решетки, лежа на животе в метре над его головой.
Кай нахмурился. Он подошел к терминалу, крышка которого криво висела на одной петле (Рин не успела защелкнуть ее до конца). Он подключил свой планшет, чтобы проверить логи Искина.
Рин затаила дыхание. Она знала, что он там увидит.
Кай смотрел на экран. Секунду. Две. Десять.
Он медленно опустил планшет. Его лицо в бледном свете аварийных ламп выражало абсолютное, тотальное непонимание.
Он открыл консоль снова. Пробежался глазами по строчкам кода, который только что спасла Рин.
— Айзек, — голос Кая в пустом отсеке прозвучал хрипло. — Кто переписал алгоритм рециркуляции?
— Алгоритм был оптимизирован системой самообучения в 14:02:03, — ровным тоном ответил Искин.
— Не ври мне, кусок кремневого дерьма, — прошипел Кай, проводя рукой по волосам. — Ты не умеешь писать так... так чисто. Это не машинный код. Здесь есть... стиль. Почерк.
Кай медленно обернулся, вглядываясь в тени технического отсека. Он посмотрел на трубы. Посмотрел на потолок. Его взгляд скользнул по вентиляционной решетке, за которой, вжавшись в металл, лежала худенькая девчонка в безразмерном балахоне.
Она видела, как напряглись его плечи. Он словно почувствовал чужое присутствие кожей. Корабль, который он считал своей вотчиной, вдруг оказался обитаемым.
— Я знаю, что здесь кто-то есть, — тихо, но очень четко произнес Кай в пустоту. — И я тебя найду.
Рин бесшумно улыбнулась в темноте.
«Попробуй, мальчик. Попробуй».
Глава 3. Цифровой полтергейст
К седьмому месяцу полета Кай перестал нормально спать.
Его каюта, раньше напоминавшая стерильный музей корпоративной дисциплины, теперь выглядела как логово параноика. На стенах висели распечатки логов Искина. Бесконечные колонки кода, в которых Кай желтым маркером выделял аномалии.
Аномалий было много.
Сначала это были мелочи. То система очистки воды вдруг начинала работать на 12% эффективнее, хотя Кай к ней даже не прикасался. То гравитационные компенсаторы в грузовом отсеке перекалибровались сами собой, убрав микровибрацию, которая бесила Кая с самого старта.
Кай жаловался Айзеку. Искин бесстрастно отвечал: «Система самообучения работает в штатном режиме». Кай злился, пил свой дерьмовый синтетический кофе и часами копался в корневых папках, пытаясь найти алгоритм, который вносил эти изменения. И не находил. Изменения появлялись ниоткуда, оставляя после себя лишь идеальную, математически выверенную пустоту. Словно кто-то приходил, наводил порядок в его доме и стирал свои следы влажной тряпкой.
Рин это забавляло.
Она сидела в своем укрытии под потолком серверной, грызла сухой паек (к которому теперь, благодаря взлому пищевого блока, регулярно добавлялись сублимированные персики из запасов капитана) и смотрела на Кая через его же камеры наблюдения.
Мальчик сгорал. У него дергался левый глаз. Он начал разговаривать сам с собой.
— Ну же, отличник, — шептала Рин в темноту, наблюдая, как Кай в десятый раз прогоняет диагностику ядра. — Ты же видишь паттерн. Ты почти понял.
Для Рин это перестало быть просто вопросом выживания. Это стало диалогом. Разговором двух интеллектов в мертвом космосе. Она оставляла ему послания на единственном языке, который они оба понимали идеально — на языке кода.
Однажды Кай попытался вручную рассчитать микро-коррекцию курса из-за гравитационного колодца пульсара. Он потратил на это пять часов, исписав стилусом весь голографический планшет. Уснул прямо в кресле.
Рин спустилась в рубку. Впервые она зашла на его территорию.
Она двигалась бесшумно, как тень, в своем необъятном, пропитанном пылью балахоне. Вблизи Кай выглядел еще моложе и изможденнее. Рин на секунду задержала взгляд на его длинных пальцах, расслабленно свисающих с подлокотника. Потом бесшумно вытянула планшет из-под его локтя.
Его расчеты были хороши. Почти безупречны. Но он использовал стандартную константу преломления, забыв, что обшивка крейсера имеет микро-износ. Ошибка в три тысячных градуса. Через световой год это вылилось бы в лишние сутки полета.
Рин хмыкнула. Она не стала переписывать всё. Она просто стерла одну формулу в самом конце и вписала свою. А в строке комментариев для разработчиков, скрытой в подвале кода, быстро набрала:
// Ты забыл про износ плазменных отражателей, Академик. Три тысячных градуса. Не позорься.
Она положила планшет на место и растворилась в вентиляции за секунду до того, как Кай дернулся во сне.
Когда он проснулся и увидел исправленный код, он не закричал. Он просто побледнел. Он смотрел на строчку // Академик минут двадцать, не моргая. А потом началось настоящее безумие.
Кай перешел от цифровой защиты к физической.
Он понял, что по сети этого «призрака» не поймать. Он начал расставлять ловушки.
Рин чуть не попалась на первую же. Кай распылил флуоресцентную пудру мелкой дисперсии перед входом в распределительный щит на третьей палубе. Заметить ее в обычном свете было невозможно. Если бы Рин наступила туда, она бы оставляла светящиеся следы еще неделю. Спасло ее то, что она привыкла смотреть в инфракрасном спектре через свой самодельный визор. Увидев светящееся пятно на полу, она издевательски обошла его по потолочной балке, держась на магнитных перчатках.
В щитке она нашла то, что Кай оставил как приманку: специально испорченный реле-прерыватель. Он знал, что она придет его чинить.