Был в Сети 25 янв. 2025 г., 18:08
Кратко о себе: Web-разработчик. Пишу на PHP, Python, JavaScript. Знаю Ruby и Go, со студенческих времён более-менее помню C и asm. Специализируюсь на ускорении загрузки сайтов и разработке ботов для Telegram. Linuxоид (использую Debian+LXDE). Сторонник IndieWeb, slow lifer.
- Перово, Москва, Россия
- me@4xpro.ru
- x4_pro
- XXXXPro
Новости сайта в Telegram
t.me/4x_proЛог жизни
Лог моей жизни, где я фиксирую наиболее эмоционально значимые для меня события и текущее настроение. Является продолжением блога, который я вел в ЖЖ с ноября 2004 по апрель 2018 года.
Недостаток глубокого сна
Недавно появилась возможность замерять фазы своего сна. И с удивлением обнаружил, что у меня всё плохо с фазой глубокого сна: за ночь набирается где-то час, изредка чуть больше. Возможно, именно с этим связано то, что «утро — не моё время». Сегодня, впечатлившись этим, решил попробовать лечь пораньше. Посмотрим, какой эффект это даст…
Спокойный и гармоничный день
В пятницу получился на редкость спокойный и гармоничный день. С утра снова размышлял над своей главной проблемой — стать кем-то, о чём и написал подробное предыдущее сообщение. Потом хотел было доделать вёрстку главной страницы своего будущего сообщества. Но вместо этого вдруг получилось написать вводный текст про то, людей с какими ценностями мы в нём ждём. И ещё пришло в голову переименовать сообщество в «Идеалисты Интернета», так как рабочее название «Жизнь по уму» отражает только часть того, что я в сообществе хочу видеть. Обсудил это с Tellой и 10geekом, но Tella идею несколько не одобрила и заметила, что формулировка «возрождение духа Старого Доброго Интернета» попахивает олдфажеством и может отпугивать. В итоге заменил на «Мы — сообщество тех, кому близок дух идеализма раннего Интернета.». Вроде почти то же самое, но слово «ранний» вызывает совсем другие ассоциации. Говоря языком соционики, не дельтийские, а альфийские.
И вот это понимание вернуло мотивацию заниматься сообществом. Снова почувствовал себя на правильном пути. И сегодня почти доверстал главную страницу, осталось только подобрать иллюстрации четырёх главных принципов сообщества, выводимых внизу. Теперь осталось совсем немного: сделать верхнее меню для залогиненого пользователя. И можно будет заняться интеграцией макета в сам движок.
И вот это понимание вернуло мотивацию заниматься сообществом. Снова почувствовал себя на правильном пути. И сегодня почти доверстал главную страницу, осталось только подобрать иллюстрации четырёх главных принципов сообщества, выводимых внизу. Теперь осталось совсем немного: сделать верхнее меню для залогиненого пользователя. И можно будет заняться интеграцией макета в сам движок.
Немного самоанализа
Задумался на тему, что же не даёт мне быть полностью счастливым на данный момент. На мой взгляд, то, что я никак не могу стать кем-то, человеком которому есть чем представиться. Причём с одной стороны, я хочу стать этим кем-то, с другой — категорически не хочу брать каких-либо обязательств, создавать привязок к будущему или каким-то иным способом допускать, чтобы созданное мной как-то меня же ограничивало. Иными словами, в рамках дихотомии Работа—Халява созидание того, что сделает меня кем-то быть ближе к поиску Халявы. Второй вопрос, который не даёт мне покоя — с чем это связано. Это я делаю всё плохо, или же Интернет поменялся настолько, что без раскрутки сейчас даже бесплатное останется незамеченным?
Ещё проанализировал, что же из сделанного мной за последнее время было хоть как-то замечено. Список получился такой:
Ещё проанализировал, что же из сделанного мной за последнее время было хоть как-то замечено. Список получился такой:
- SiteKnockerBot (бот для TG) — пожалуй, то, что на данный момент оценено и востребовано больше всего.
- VK private profile highlighter (расширение для Opera) — всего один отзыв, но уже более двух тысяч установок и неплохой рейтинг.
- Сайт с таблицами Шульте — даже отзыв на Яндексе написали в своё время.
- CondiLoader (библиотека условной загрузки для сайтов) — несколько forkов и звёзд на GitHub.
- Статья про поддержку старых функций MySQL
- Статья про перенос контактов со старого мобильника — эти две статьи сейчас дают большую часть траффика на сайт.
Сделал главную страницу MLCE и зарегистрировался на Pexels
Несколько дней назад искал фотографии для очередной статьи на Дзене на сайте Pexels.com. И вдруг пришла в голову мысль: а ведь я могу и свои фото там выкладывать! И тем самым вносить вклад не только в мир open source кода, но и его аналога в мире фотографии! Решено — сделано: я зарегистрировался там и стал перетряхивать свою коллекцию фотографий в поисках того, что могло бы пригодиться не только мне, но и другим пользователям. Пересмотрел все весенне-летние фото за период с 2016 года (того момента, как купил новую камеру), и в итоге выбрал и загрузил 40 фотографий. Точнее, 38 выбрал и две сделал новых — смородины и вишни на садовом участке (воспользовавшись камерой Мика). Теперь периодически посматриваю статистику…
А ещё в процессе перебора фотографий вспомнил очень много эпизодов из жизни, о которых уже успел забыть. Например, прогулку в Царицыно осенью 2017 года или в Коломенское — весной 2018, или то, как DarLik вытащила меня на какой-то небольшой концерт весной 2016. Ну и конечно же, пересмотрел фото с поездки в Переславль с Миком в 2018 году! С одной стороны, воспоминания — это круто. С другой, пересматривая старые фотографии, увидел множество технических несовершенств, которых просто не замечал раньше. И ещё, глядя чужие фотографии на том же Pexels, понимаю, что большинству моих чего-то не хватает. Но никак не могу понять, чего именно, и вообще дело во мне самом или в технических ограничениях камеры.
Сегодня почти доделал главную страницу сообщества MindLife в статике. Осталось только решить вопрос с previews статей. Общий замысел этой страницы был у меня давно: слева — краткая информация о сообществе, количество участников, список активистов и присутствующих, справа — статистика по сообщениям, список самых важных тегов и самых активных за последнюю неделю (с этими самыми previews для статей). А внизу — блок с главными отличительными чертами сообщества.
Первый вариант я сверстал ещё в воскресенье, но выглядел он ну очень уныло. А сегодня вдруг пришла в голову мысль, что нужно поставить большое фото на фон, а блоки сделать с полупрозрачным фоном. И ещё вынес название сообщества из левого блока на самый верх. В итоге стало смотреться совсем иначе!
Также собирался пересечься с Миком, он хотел дать попробовать ещё одну свою камеру. Но увы, болтаюсь в полузаболевшем состоянии, и поездку до Посада и обратно на велосипеде просто не выдержал бы. Пришлось встречу отменить. Вместо этого пошёл на относительно небольшую прогулку вдоль Клязьмы, но устал даже от такой (хотя, может быть, дело было в обезвоживании из-за жары). В итоге за вечер ничего толком не сделал.
А ещё в процессе перебора фотографий вспомнил очень много эпизодов из жизни, о которых уже успел забыть. Например, прогулку в Царицыно осенью 2017 года или в Коломенское — весной 2018, или то, как DarLik вытащила меня на какой-то небольшой концерт весной 2016. Ну и конечно же, пересмотрел фото с поездки в Переславль с Миком в 2018 году! С одной стороны, воспоминания — это круто. С другой, пересматривая старые фотографии, увидел множество технических несовершенств, которых просто не замечал раньше. И ещё, глядя чужие фотографии на том же Pexels, понимаю, что большинству моих чего-то не хватает. Но никак не могу понять, чего именно, и вообще дело во мне самом или в технических ограничениях камеры.
Сегодня почти доделал главную страницу сообщества MindLife в статике. Осталось только решить вопрос с previews статей. Общий замысел этой страницы был у меня давно: слева — краткая информация о сообществе, количество участников, список активистов и присутствующих, справа — статистика по сообщениям, список самых важных тегов и самых активных за последнюю неделю (с этими самыми previews для статей). А внизу — блок с главными отличительными чертами сообщества.
Первый вариант я сверстал ещё в воскресенье, но выглядел он ну очень уныло. А сегодня вдруг пришла в голову мысль, что нужно поставить большое фото на фон, а блоки сделать с полупрозрачным фоном. И ещё вынес название сообщества из левого блока на самый верх. В итоге стало смотреться совсем иначе!
Также собирался пересечься с Миком, он хотел дать попробовать ещё одну свою камеру. Но увы, болтаюсь в полузаболевшем состоянии, и поездку до Посада и обратно на велосипеде просто не выдержал бы. Пришлось встречу отменить. Вместо этого пошёл на относительно небольшую прогулку вдоль Клязьмы, но устал даже от такой (хотя, может быть, дело было в обезвоживании из-за жары). В итоге за вечер ничего толком не сделал.
Решил вопрос с HTML-формами
В субботу вернулся к работе над движком нового сообщества. С названием пока всё плохо, поэтому пока буду называть его MLCE (MindLife Community Engine) — по названию самого сообщества, которое хочу создать. Долго думал, за что взяться, и в итоге занялся одной из самых неинтересных частей — работой с формами. Впервые о том, чтобы автоматизировать работу с ними, я задумывался ещё 10 лет назад, когда сделал Yaml Form Generator. Всегда хотелось сдлеать так, чтобы поля, значения по умолчанию для них и правила валидации прописывались только в одном месте. Но получалось либо не гибко (как в Yaml Generator), либо недостаточно эффективно, как в IntB, где для HTML-части полей приходилось подключать макросы из шаблонизатора, а для checkboxов делать проверки if (!empty($_POST['что-то-там'])).
Теперь же сделал отдельный класс для формы и отдельные классы для каждого вида полей, причём класс сразу умеет выводить себя через __toString(). А класс формы просто получает массив полей на входе и делает по нему итерацию, когда надо + содержит метод printField для быстрого вывода поля с нужным именем. Правда, после некоторых размышлений отказался от «обвязки» — автоматическог вывода label с описанием, решив оставить его в шаблоне для большей гибкости. Но до сих пор не уверен, правильно ли сделал. А ещё сделал так, что заполнение формы происходит единообразно хоть данными из базы, хоть данными из формы.
Ещё собирался сверстать главную страницу сообщества, но вот тут пока не продвинулся. Отчасти из-за того, что сегодня спал плохо, встал невсыпавшийся, и утром ничего не хотелось делать совершенно.
Теперь же сделал отдельный класс для формы и отдельные классы для каждого вида полей, причём класс сразу умеет выводить себя через __toString(). А класс формы просто получает массив полей на входе и делает по нему итерацию, когда надо + содержит метод printField для быстрого вывода поля с нужным именем. Правда, после некоторых размышлений отказался от «обвязки» — автоматическог вывода label с описанием, решив оставить его в шаблоне для большей гибкости. Но до сих пор не уверен, правильно ли сделал. А ещё сделал так, что заполнение формы происходит единообразно хоть данными из базы, хоть данными из формы.
Ещё собирался сверстать главную страницу сообщества, но вот тут пока не продвинулся. Отчасти из-за того, что сегодня спал плохо, встал невсыпавшийся, и утром ничего не хотелось делать совершенно.
Борьба с телефонным спамом
Несколько дней назад озаботился всё-таки поиском приложения для защиты от мошеннических звонков. Но большинству таких приложений требуется доступ в Интернет в момент звонка, поэтому они мне не подходили. Потом всё же нашёл одно: «Не бери трубку». Обрадовался, поставил, настроил, включил активную защиту и … следующим утром был разбужен звонком. Причём не неизвестным, а вполне корректно распознанным приложением как телемаркетер. Стал разбираться и оказалось, что ещё нужно включить в настройках «Блокировать спам, сообщаемый сообществом».
Асинхронный выход в Интернет
Я понял, что мне нужно, чтобы решить проблему «жизнь в Сети или для Сети»! Асинхронный выход в Интернет. То есть набор скриптов, которым я, сидя в оффлайне, мог бы ставить задачи типа «выложить вот это в свой блог, скачать то видео с YouTube, загрузить 5 результатов поиска по такому-то запросу, установить такой-то пакет в систему, выгрузить фотографии». Потом на короткое время включать Интернет, скрипт бы отрабатывал поставленные задачи, и сразу бы отключал соединение. Тогда бы удалось избавиться от главной проблемы — расфокусировки внимания и сноса «потоком жизни», но при этом не лишать себя плюсов Интернета.
Вопрос только в том, как реализовать это технически. Для своего сайта я могу написать скрипт, для почты использовать Sylpheed. Telegram, как выяснилось, позволяет писать сообщения в оффлайне (что очень порадовало). Для выгрузки фото ВК, теоретически, тоже можно написать скрипт, хотя и сложно: нужно кешировать список альбомов. Основной сложностью является Instagram из-за его закрытой API, поиск и самый обычный серфинг, когда нужно задать отложенную загрузку страницы. Впрочем, надо поискать, может быть, подходящие extensions для броузеров всё же найдутся.
А ещё точно понял, что в моём новом движке нужно сделать возможность писать сообщения в оффлайне. Только пока плохо представляю, как именно. По идее, тут должен помочь Application Cache, но не очень понятно, как встроить его в обычный сайт, а не приложение, где всё подгружается через JavaScript.
Вопрос только в том, как реализовать это технически. Для своего сайта я могу написать скрипт, для почты использовать Sylpheed. Telegram, как выяснилось, позволяет писать сообщения в оффлайне (что очень порадовало). Для выгрузки фото ВК, теоретически, тоже можно написать скрипт, хотя и сложно: нужно кешировать список альбомов. Основной сложностью является Instagram из-за его закрытой API, поиск и самый обычный серфинг, когда нужно задать отложенную загрузку страницы. Впрочем, надо поискать, может быть, подходящие extensions для броузеров всё же найдутся.
А ещё точно понял, что в моём новом движке нужно сделать возможность писать сообщения в оффлайне. Только пока плохо представляю, как именно. По идее, тут должен помочь Application Cache, но не очень понятно, как встроить его в обычный сайт, а не приложение, где всё подгружается через JavaScript.
День полного оффлайна
Вчера во время прогулки возникло какое-то чувство тоски и безысходности. Решил, что выгорел от того, что слишком много работал над движком и слишком много переписывался в Сети. Решил устроить себе день оффлайна. Перед этим с вечера доделал оставшиеся freelance-задачи, чтобы уйти в оффлайн с чистой совестью. В процессе ещё нашёл небольшой lifehack: если исправления касаются только вёрстки, можно сохранить страницу в статику, и редактировать её локально. Это экономит и время (не надо постоянно подтверждать замену файла при загрузке на сервер и сбрасывать кеш), и траффик. Причём CSS потом можно просто скопировать со всеми правками (если на сервере нет никаких скриптов склейки, как InstantCMS). Изменения в шаблонах приходится переносить вручную, но всё равно это в итоге оказывается легче, чем редактировать на живом сервере. И самое главное, можно делать правки не торопясь!
Но как всегда, засиделся до глубокой ночи, поэтому сегодня встал очень поздно даже по своим меркам. Облился холодной водой, и сел за компьютер. Сначала не знал, за что браться. С одной стороны, чётких целей не было, с другой — просто раздирало на куски от противоречивых желаний: и поиграть, и книжку почитать, и поехать на велопрогулку, и посидеть помедитировать, и ещё много чего. При этом совершенно не понимал, за что браться сначала. В итоге занялся тем, что всегда меня успокаивало и давало внутреннюю целостность — перепрохождением Rockman IV. Причём на этот раз пользуясь исключительно R.Busterом и R.Coilом. Потом читал большую книгу о Linux API, играл в Battle for Wesnoth. Когда надоело, поднялся на второй этаж, и довольно долго просто лежал на кровати, глядя в окно. Как всегда в таких ситуациях, в голове сначала очень интенсивно крутились мысли, но через некоторое время пришло внутреннее спокойствие, которого мне так не хватает в последнее время. Всё-таки дни оффлайна нужно устраивать чаще. Я бы вообще ушёл на неделю в полуоффлайновый режим, выходя в Сеть только по вечерам, где-нибудь с 19 до 21, но увы, нет такой возможности.
Разгрузив так голову, выбрался на велопрогулку. Погода была так себе, день довольно мрачный, поэтому решил далеко не ехать, а просто наматывать круги по окрестностям. Один раз спустился к большому водоёму, и долго стоял на его берегу. Ветер гнал мне навстречу небольшие волны, серое небо отражалось в воде. Природа была суровой и мрачной, и почему-то я представлял себя далеко на Севере, где-нибудь в Карелии, на берегах какого-нибудь малоизвестного озера. Потом доехал до другого пруда. Тот пруд в прошлом году почти пересох, но в этом из-за строительства дороги ему перекрыли сток, и он с весны полон водой. Постоял немного и на его берегу, но на этот раз особых впечатлений не осталось.
Вернувшись домой, обнаружил, что приложение-геотрекер отключилось где-то после получаса прогулки (реально я катался где-то час двадцать). Из-за этого не получилось узнать статистику: среднюю скорость и суммарное расстояние. Впрочем, расстояние можно приикинуть и так — должно получиться что-то около 12—13 км.
Потом после долгого перерыва попытался было поиграть в Arcanum. Но, как выяснилось, под wine он ощутимо тормозит. Хотя странно: когда-то ведь вполне получалось. Возможно, есть какой-то конфликт с чем-то из запущенного софта. Нужно будет попробовать как-нибудь на свежезапущенной системе. Зато, загрузив сохранение, вспомнил, что в свой прошлый уход в оффлайн я всё же прошёл игру до конца тем персонажем, которого тогда создал. Хотя до этого думал, что забросил.
А вечером возникло то самое чувство уединённости и удалённости от цивилизации, которое было так знакомо мне в первые годы жизни на даче, до того, как я купил WiFi-роутер. До сих пор не знаю, правильным ли решением была эта покупка. Или лучше было поступать как и раньше: приезжать на дачу только на несколько дней и использовать Интернет по-минимуму, проводя всё время в прогулках и размышлениях.
Но как всегда, засиделся до глубокой ночи, поэтому сегодня встал очень поздно даже по своим меркам. Облился холодной водой, и сел за компьютер. Сначала не знал, за что браться. С одной стороны, чётких целей не было, с другой — просто раздирало на куски от противоречивых желаний: и поиграть, и книжку почитать, и поехать на велопрогулку, и посидеть помедитировать, и ещё много чего. При этом совершенно не понимал, за что браться сначала. В итоге занялся тем, что всегда меня успокаивало и давало внутреннюю целостность — перепрохождением Rockman IV. Причём на этот раз пользуясь исключительно R.Busterом и R.Coilом. Потом читал большую книгу о Linux API, играл в Battle for Wesnoth. Когда надоело, поднялся на второй этаж, и довольно долго просто лежал на кровати, глядя в окно. Как всегда в таких ситуациях, в голове сначала очень интенсивно крутились мысли, но через некоторое время пришло внутреннее спокойствие, которого мне так не хватает в последнее время. Всё-таки дни оффлайна нужно устраивать чаще. Я бы вообще ушёл на неделю в полуоффлайновый режим, выходя в Сеть только по вечерам, где-нибудь с 19 до 21, но увы, нет такой возможности.
Разгрузив так голову, выбрался на велопрогулку. Погода была так себе, день довольно мрачный, поэтому решил далеко не ехать, а просто наматывать круги по окрестностям. Один раз спустился к большому водоёму, и долго стоял на его берегу. Ветер гнал мне навстречу небольшие волны, серое небо отражалось в воде. Природа была суровой и мрачной, и почему-то я представлял себя далеко на Севере, где-нибудь в Карелии, на берегах какого-нибудь малоизвестного озера. Потом доехал до другого пруда. Тот пруд в прошлом году почти пересох, но в этом из-за строительства дороги ему перекрыли сток, и он с весны полон водой. Постоял немного и на его берегу, но на этот раз особых впечатлений не осталось.
Вернувшись домой, обнаружил, что приложение-геотрекер отключилось где-то после получаса прогулки (реально я катался где-то час двадцать). Из-за этого не получилось узнать статистику: среднюю скорость и суммарное расстояние. Впрочем, расстояние можно приикинуть и так — должно получиться что-то около 12—13 км.
Потом после долгого перерыва попытался было поиграть в Arcanum. Но, как выяснилось, под wine он ощутимо тормозит. Хотя странно: когда-то ведь вполне получалось. Возможно, есть какой-то конфликт с чем-то из запущенного софта. Нужно будет попробовать как-нибудь на свежезапущенной системе. Зато, загрузив сохранение, вспомнил, что в свой прошлый уход в оффлайн я всё же прошёл игру до конца тем персонажем, которого тогда создал. Хотя до этого думал, что забросил.
А вечером возникло то самое чувство уединённости и удалённости от цивилизации, которое было так знакомо мне в первые годы жизни на даче, до того, как я купил WiFi-роутер. До сих пор не знаю, правильным ли решением была эта покупка. Или лучше было поступать как и раньше: приезжать на дачу только на несколько дней и использовать Интернет по-минимуму, проводя всё время в прогулках и размышлениях.
День спокойствия
Кажется, отоспался и пришёл в норму. По крайней мере, теперь снова спокойный и довольный жизнью. Только какая-то повышенная потребность в уходе в себя. Устроил себе день отдыха от разработки. Играл в игры, размышлял о жизни. Много (даже больше, чем хотел бы) времени ушло на общение в Сети. А вечером довольно долго сидел в беседке и созерцал дождь. Изначально хотел было выбраться сфотографировать закат, но этот дождь спутал все планы. Зато стало прохладнее!
В общем, день обошёлся без значимых прорывов, но в целом я им доволен. Только вот время летело как-то неестественно быстро. Постоянно оказывалось, что уже на час-полтора больше, чем ожидал.
В общем, день обошёлся без значимых прорывов, но в целом я им доволен. Только вот время летело как-то неестественно быстро. Постоянно оказывалось, что уже на час-полтора больше, чем ожидал.
Побочный эффект жары
У жары выявился один неприятный эффект: из-за неё стал просыпаться раньше. Уже второй день хожу не выспавшийся и на всё раздражаюсь. Только где-то около 17 часов заснул минут на 20, и хоть немного пришёл в себя. Но всё равно, звуки мессенджеров всё ещё очень раздражают. Welltory показывает весьма высокую продуктивность, но низкий (даже по моим меркам) уровень энергии: около 50%.
Вечером даже смог доделать вёрстку списка сообщений в новом движке. Долго не мог определиться, как лучше сделать. Пытался в качестве примера смотреть и Яндекс.Q, и QNA Хабра, но как-то в голове цельной картины не складывается. В итоге сделал четыре разных варианта, но никак не могу определиться, какой лучше всего подходит. У каждого находится какой-либо недостаток. По-хорошему, надо бы их в свой чат закинуть и опрос провести, но лень делать скриншоты. Также опять подумываю о dev-блоге, но пока никак не решаюсь.
Ночью выбрался посмотреть на звёзды, и только это немного успокоило…
Вечером даже смог доделать вёрстку списка сообщений в новом движке. Долго не мог определиться, как лучше сделать. Пытался в качестве примера смотреть и Яндекс.Q, и QNA Хабра, но как-то в голове цельной картины не складывается. В итоге сделал четыре разных варианта, но никак не могу определиться, какой лучше всего подходит. У каждого находится какой-либо недостаток. По-хорошему, надо бы их в свой чат закинуть и опрос провести, но лень делать скриншоты. Также опять подумываю о dev-блоге, но пока никак не решаюсь.
Ночью выбрался посмотреть на звёзды, и только это немного успокоило…
Страницы:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143