<?xml version="1.0" encoding="utf-8"?>
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:l="http://www.w3.org/1999/xlink">
 <description>
  <title-info>
   <genre>comp_programming</genre>
   <author>
    <first-name>C.</first-name>
    <middle-name>О.</middle-name>
    <last-name>Бочков</last-name>
   </author>
   <author>
    <first-name>Д.</first-name>
    <middle-name>М.</middle-name>
    <last-name>Субботин</last-name>
   </author>
   <book-title>Язык программирования Си для персонального компьютера</book-title>
   <annotation>
    <p>Книга содержит полное описание наиболее распространенных реализаций языка программирования Си на 16-разрядных микроЭВМ, совместимых с IBM PC. Приведено описание стандартных библиотек языка.</p>
    <p>Для слушателей учебных курсов в области программирования, разработчиков программного обеспечения, а также студентов соответствующих специальностей вузов. Может быть использовано как техническая документация и справочное пособие для широкого круга программистов, как профессионалов, имеющих большой опыт работы на языке Си, так и начинающих программировать на Си.</p>
   </annotation>
   <date></date>
   <coverpage>
    <image l:href="#_1276010920_ba6830be1fd99ee1640b3d9d19debad4.jpg"/></coverpage>
   <lang>ru</lang>
  </title-info>
  <src-title-info>
   <genre>comp_programming</genre>
   <author>
    <first-name></first-name>
    <last-name></last-name>
   </author>
   <book-title>Язык программирования Си для персонального компьютера</book-title>
   <date></date>
   <lang>ru</lang>
  </src-title-info>
  <document-info>
   <author>
    <first-name></first-name>
    <last-name></last-name>
   </author>
   <program-used>FictionBook Editor Release 2.6</program-used>
   <date value="2012-09-22">22/09/2012</date>
   <id>OOoFBTools-2012-9-22-15-5-35-15</id>
   <version>1.0</version>
  </document-info>
  <publish-info>
   <book-name>Язык программирования Си для персонального компьютера</book-name>
   <publisher>СП "Диалог", Радио и связь</publisher>
   <year>1990</year>
   <isbn>5-256-00974-5</isbn>
  </publish-info>
 </description>
 <body>
  <section>
   <p><emphasis>С.О. Бочков</emphasis></p>
   <p><emphasis>Д.М. Субботин</emphasis></p>
   <p><strong>Язык программирования си для персонального компьютера</strong></p>
   <p><emphasis>Под общей редакцией канд. техн. наук, доцента П.И.Садчикова</emphasis></p>
  </section>
  <section>
   <title>
    <p><strong>ВВЕДЕНИЕ</strong></p>
   </title>
   <p id="_Selection">Среди современных языков программирования язык Си является одним из наиболее распространенных. Язык Си универсален, однако наиболее эффективно его применение в задачах системного программирования — разработке трансляторов, операционных систем, экранных интерфейсов, инструментальных средств. Язык Си хорошо зарекомендовал себя эффективностью, лаконичностью записи алгоритмов, логической стройностью программ. Во многих случаях программы, написанные на языке Си, сравнимы по скорости с программами, написанными на языке ассемблера; при этом они более наглядны и просты в сопровождении.</p>
   <p>Одним из основных достоинств языка Си считается высокая переносимость написанных на нем программ между компьютерами с различной архитектурой, между различными операционными средами. Трансляторы языка Си существуют практически для всех используемых в настоящее время персональных компьютеров.</p>
   <p>Язык Си имеет ряд существенных особенностей, которые выделяют его среди других языков программирования. В значительной степени на формирование идеологии языка повлияла цель, которую ставили перед собой его создатели, — обеспечение системного программиста удобным инструментальным языком, который мог бы заменить язык ассемблера. В результате появился язык программирования высокого уровня, обеспечивающий необычайно легкий доступ к аппаратным средствам компьютера. Иногда Си называют языком программирования "среднего" уровня. С одной стороны, как и другие современные языки высокого уровня, язык Си поддерживает полный набор конструкций структурного программирования, модульность, блочную структуру программ, раздельную компиляцию. С другой стороны, язык Си имеет ряд низкоуровневых черт.</p>
   <p>Перечислим некоторые особенности языка Си:</p>
   <p>В языке Си реализованы некоторые операции низкого уровня (в частности, операции над битами). Некоторые из таких операций напрямую соответствуют машинным командам.</p>
   <p>Базовые типы данных языка Си отражают те же объекты, с которыми приходится иметь дело в программе на языке ассемблера, — байты, машинные слова, символы, строки. Несмотря на наличие в языке Си развитых средств построения составных объектов (массивов и структур), в нем практически отсутствуют средства для работы с ними как с единым целым (нельзя, например, сложить две структуры).</p>
   <p>Язык Си поддерживает механизм указателей на переменные и функции. Указатель — это переменная, предназначенная для хранения машинного адреса некоторой переменной или функции. Поддерживается арифметика указателей, что позволяет осуществлять непосредственный доступ и работу с адресами памяти практически так же легко, как на языке ассемблера. Использование указателей позволяет создавать высокоэффективные программы, однако требует от программиста особой осторожности.</p>
   <p>Как никакой другой язык программирования высокого уровня, язык Си "доверяет" программисту. Даже в таком существенном вопросе, как преобразование типов данных, налагаются лишь незначительные ограничения. Предшественники языка Си — языки BCPL и Би — вообще имели бестиповую структуру. Во многих случаях слабый контроль типов может помочь в повышении эффективности программ, однако программист должен очень хорошо знать используемый язык программирования и четко представлять его идеологию, иначе отладка будет крайне тяжела, а надежность создаваемых программ низка.</p>
   <p>Несмотря на эффективность и мощность конструкций языка Си, он относительно мал по объему. В нем отсутствуют встроенные операторы для выполнения ввода-вывода, динамического распределения памяти, управления процессами и т.п., однако в системное окружение языка Си входит библиотека стандартных функций, в которой реализованы подобные действия. Вынос этих функций в библиотеку позволяет отделить особенности архитектуры конкретного компьютера и соглашений операционной системы от реализации языка, сделать программу максимально независимой от деталей реализации операционной среды. В то же время программисты могут пользоваться системными библиотечными программами, чтобы более эффективно использовать особенности конкретных операционных сред.</p>
   <p>Язык Си был разработан в США сотрудниками фирмы Bell Laboratories на рубеже 70-х годов. Примерно в то же время он был использован для разработки операционной системы UNIX. Вопросы повышения переносимости играли большую роль с самого начала разработки как языка Си, так и операционной системы UNIX, поэтому их распространение на новые компьютеры протекало очень быстро.</p>
   <p>Первое описание языка Си было дано его авторами, Б. Керниганом и Д. Ритчи (имеется русский перевод — [1]). К сожалению, оно не было строгим и полным и содержало ряд моментов, допускающих неоднозначное толкование. Это привело к тому, что в последующем различные разработчики систем программирования трактовали язык Си по-разному. В течение долгого времени фактическим стандартом языка Си служила его реализация в седьмой версии операционной системы UNIX, однако заявления о совместимости некоторой системы программирования с реализацией языка Си в операционной системе UNIX, как правило, не означали точного соответствия. В настоящее время число только наиболее распространенных реализаций языка Си исчисляется десятками, и все они поддерживают, по существу, разные диалекты языка. Ситуация усугубляется тем, что обычно в документации особенности реализации языка освещаются неполно и нестрого.</p>
   <p>Для исправления этой ситуации в 1983 г. при Американском Национальном Институте Стандартов (ANSI) был образован комитет по стандартизации языка Си. В октябре 1986 г. разработанный этим комитетом проект был опубликован для общественного обсуждения. В 1989 г. окончательный вариант проекта был утвержден в качестве стандарта ANSI. Подавляющее большинство используемых в настоящее время реализаций языка Си не поддерживает стандарт ANSI в полном объеме. Тем не менее, отчетливо просматривается тенденция к созданию новых реализаций языка Си, соответствующих стандарту ANSI.</p>
   <p>В последние годы язык Си получил в СССР широкое распространение. Вышло немало книг, посвященных ему. Некоторые из них носят учебный характер [6, 8, 10, 11], в других рассматриваются конкретные реализации [4, 8, 13], третьи дают краткую, справочную информацию по языку [2, 3, 5, 9, 14] либо дают его сравнительную характеристику [7, 12].</p>
   <p>Кроме того, вышло большое количество книг, посвященных операционной системе UNIX, в которых, как правило, дается представление о языке Си.</p>
   <p>Ни одна из перечисленных книг, однако, не содержит полного и точного описания языка Си и не может служить справочным пособием, особенно в трудных ситуациях. Отсутствие книги такого рода привело к тому, что основная масса отечественных пользователей не понимает идеологии и концепций построения языка и предпочитает пользоваться только традиционными, проверенными методами, избегая многих мощных и эффективных конструкций. Такие черты языка, как использование синтаксиса выражений при построении объявлений данных, или концепция области действия переменных и функций, делают его трудным для изучения. Даже квалифицированные программисты зачастую нечетко представляют себе некоторые аспекты языка. Для многих программистов единственным источником знаний по языку Си служит документация на используемую ими систему программирования. Однако не всегда эта документация оказывается полной и понятной; кроме того, она обычно написана на английском языке или является плохим переводом с английского.</p>
   <p>Настоящая книга должна, по замыслу авторов, восполнить этот пробел и дать современное, полное и по возможности строгое описание языка Си. Книга ориентирована на широкий круг программистов, однако не является учебником по языку, а носит в основном справочный характер. Предполагается, что читатель имеет опыт работы с современными языками программирования.</p>
   <p>В СССР наибольшее распространение на персональных компьютерах типа IBM PC/XT/AT и совместимых с ними получили система программирования фирмы Microsoft версий 4.0 и 5.0 (далее по тексту называемая СП MSC) и система программирования Турбо Си фирмы Borland International версий 1.5 и 2.0 (далее по тексту называемая СП ТО. Версия 4.0 СП MSC является наименее мощной реализацией языка Си из вышеперечисленных, поэтому описание базируется на ней. В тех случаях, когда имеются отличия для версии 5.0 СП MSC либо для СП ТС, в тексте делаются соответствующие отступления.</p>
   <p>Описание библиотечных функций языка Си затрудняется тем, что расхождений в составе библиотек в различных системах программирования (даже в пределах разных версии одной и той же системы программирования) значительно больше, чем отличий в реализации языка. В данной книге описаны стандартные библиотечные функции версии 4.0 СП MSC и версии 1.5 и 2.0 СП ТС.</p>
   <p>Материал книги организован следующим образом:</p>
   <p>В разделе 1 "Элементы языка Си" описываются алфавит, лексические конструкции и правила языка Си.</p>
   <p>В разделе 2 "Структура программы" обсуждаются структура и компоненты Си-программы, организация исходных файлов и правила доступа к программным объектам.</p>
   <p>В разделе 3 "Объявления" описывается, каким образом объявлять переменные, функции, а также типы, определяемые пользователем. Помимо простых переменных, язык Си позволяет объявлять указатели и составные объекты—массивы, структуры, объединения.</p>
   <p>В разделе 4 "Выражения" описываются операнды и операции, а также обсуждаются вопросы преобразования типов и побочные эффекты, которые могут возникнуть при этом.</p>
   <p>В разделе 5 "Операторы" описываются управляющие конструкции.</p>
   <p>В разделе 6 "Функции" обсуждаются правила построения и вызова модулей, которые в языке Си называются функциями. В частности, в этом разделе объясняется, как определять, объявлять и вызывать функции, как описывать параметры функции и возвращаемые значения.</p>
   <p>В разделе 7 "Директивы препроцессора и указания компилятору" описываются директивы, распознаваемые препроцессором языка Си. Препроцессор представляет собой макропроцессор, автоматически вызываемый в качестве нулевого прохода компилятора языка Си.</p>
   <p>В разделе 8 описаны модели памяти для процессора с сегментной архитектурой памяти (типа Intel 8086/8088) и правила работы с ними в программах, написанных на языке Си.</p>
   <subtitle><strong>Соглашения о нотации</strong></subtitle>
   <p>В книге приняты следующие соглашения о нотации:</p>
   <table>
    <tr>
     <td align="center">Обозначение</td>
     <td align="center">Смысл</td>
    </tr>
    <tr>
     <td align="left">Угловые скобки</td>
     <td align="left">Угловые скобки выделяют нетерминальные символы в синтаксических конструкциях.</td>
    </tr>
    <tr>
     <td> </td>
     <td align="left">Например, в записи</td>
    </tr>
    <tr>
     <td> </td>
     <td align="left">goto <emphasis>&lt;имя&gt;</emphasis></td>
    </tr>
    <tr>
     <td> </td>
     <td align="left">&lt;имя&gt; представлено в угловых скобках, чтобы обратить внимание на то, что определяется общая форма оператора перехода goto. В своей программе пользователь подставит конкретный идентификатор вместо нетерминального символа <emphasis>&lt;имя&gt;</emphasis></td>
    </tr>
    <tr>
     <td align="left">Квадратные скобки</td>
     <td align="left">Квадратные скобки, ограничивающие синтаксическую конструкцию, означают ее необязательность. Например, в операторе возврата return выражение необязательно: return [&lt;<emphasis>выражение</emphasis>&gt;];</td>
    </tr>
    <tr>
     <td align="left">Многоточие</td>
     <td align="left">Многоточие может быть вертикальным или горизонтальным. В следующем примере вертикальные многоточия означают, что нуль или более объявлений может следовать перед одним или более операторами внутри фигурных скобок.</td>
    </tr>
    <tr>
     <td> </td>
     <td align="left">{</td>
    </tr>
    <tr>
     <td> </td>
     <td align="left">[&lt;<emphasis>объявление</emphasis>&gt;]</td>
    </tr>
    <tr>
     <td> </td>
     <td align="left">.</td>
    </tr>
    <tr>
     <td> </td>
     <td align="left">.</td>
    </tr>
    <tr>
     <td> </td>
     <td align="left">.</td>
    </tr>
    <tr>
     <td> </td>
     <td align="left">&lt;<emphasis>оператор</emphasis>&gt;</td>
    </tr>
    <tr>
     <td> </td>
     <td align="left">[&lt;<emphasis>оператор</emphasis>&gt;]</td>
    </tr>
    <tr>
     <td> </td>
     <td align="left">.</td>
    </tr>
    <tr>
     <td> </td>
     <td align="left">.</td>
    </tr>
    <tr>
     <td> </td>
     <td align="left">.</td>
    </tr>
    <tr>
     <td> </td>
     <td align="left">}</td>
    </tr>
    <tr>
     <td> </td>
     <td align="left">Вертикальные многоточия также используются в примерах программ для обозначения части программы, которая пропущена.</td>
    </tr>
    <tr>
     <td> </td>
     <td align="left">Горизонтальное многоточие, следующее после некоторой синтаксической конструкции, обозначает последовательность конструкций той же самой формы, что и предшествующая многоточию конструкция. Например, запись</td>
    </tr>
    <tr>
     <td> </td>
     <td align="left">={&lt;<emphasis>выражение</emphasis>&gt;[,&lt;<emphasis>выражение</emphasis>&gt;]…} означает, что одно или более выражений, разделенных запятыми, может появиться между фигурными скобками. В целях экономии места в некоторых случаях вместо вертикальных многоточий используются горизонтальные.</td>
    </tr>
   </table>
   <p><strong>ЧАСТЬ 1 ОПИСАНИЕ ЯЗЫКА СИ</strong></p>
  </section>
  <section>
   <title>
    <p><strong>ЭЛЕМЕНТЫ ЯЗЫКА СИ</strong></p>
   </title>
   <section>
    <p>Под элементами языка понимаются его базовые конструкции, используемые при написании программ. В этом разделе описываются следующие элементы языка Си:</p>
    <p>– алфавит;</p>
    <p>– константы;</p>
    <p>– идентификаторы;</p>
    <p>– ключевые слова;</p>
    <p>– комментарии.</p>
    <p>Компилятор языка Си воспринимает исходный файл, содержащий программу на языке Си, как последовательность текстовых строк. Каждая строка завершена символом новой строки. Этот символ вставляется текстовым редактором при нажатии клавиши ENTER (ВВОД).</p>
    <p>Компилятор языка Си последовательно считывает строки программы и разбивает каждую из считанных строк на группы символов, называемые лексемами. Лексема—это единица текста программы, которая имеет самостоятельный смысл для компилятора языка Си и которая не содержит в себе других лексем. Никакие лексемы, кроме символьных строк, не могут продолжаться на последующих строках текста программы. Знаки операций, константы, идентификаторы и ключевые слова, описанные в этом разделе, являются примерами лексем. Разделители, например квадратные скобки [], фигурные скобки {}, круглые скобки (), угловые скобки &lt; &gt; и запятые, также являются лексемами. Внутри идентификаторов, ключевых слов, а также знаков операций, состоящих из нескольких символов, пробельные символы недопустимы.</p>
    <p>Когда компилятор языка Си выделяет отдельную лексему, он пытается включить в нее последовательно столько символов, сколько возможно, прежде чем перейти к выделению следующей лексемы. Рассмотрим, например, следующее выражение:</p>
    <p>i+++j</p>
    <p>В этом примере компилятор языка Си вначале сформирует из первых двух знаков "плюс" операцию инкремента (++), а из оставшегося знака плюс — операцию сложения. Выражение проинтерпретируется как (i++)+(j), а не как (i)+(++j). В подобных случаях рекомендуется для ясности разделять лексемы пробельными символами или круглыми скобками.</p>
   </section>
   <section>
    <title>
     <p><strong>Алфавит</strong></p>
    </title>
    <section>
     <p>В программах на языке Си используются два множества символов: множество символов языка Си и множество представимых символов. Множество символов языка Си содержит буквы, цифры и знаки пунктуации, которые имеют определенный смысл для компилятора языка Си. Программы на языке Си строятся путем комбинирования в осмысленные синтаксические конструкции символов из множества символов языка Си.</p>
     <p>Множество символов языка Си является подмножеством множества представимых символов. Множество представимых символов состоит из всех букв, цифр и символов, которые могут быть представлены как отдельный символ на клавиатуре данного персонального компьютера.</p>
     <p>Программа на языке Си может содержать только символы из множества символов языка Си, однако внутри символьных строк, символьных констант и комментариев может быть использован любой представимый символ. Компилятор языка Си выдает сообщение об ошибке при обнаружении неверно использованных символов.</p>
     <p>В последующих разделах описываются символы из множества символов языка Си и объясняются правила их использования.</p>
    </section>
    <section>
     <title>
      <p><strong>Буквы и цифры</strong></p>
     </title>
     <p>Множество символов языка Си включает прописные и строчные буквы латинского алфавита и арабские цифры:</p>
     <p>прописные латинские буквы: ABCDEFGHIJKLMNOPQRSTUVWXYZ;</p>
     <p>строчные латинские буквы: abcdefghijkimnopqrstuvwxyz;</p>
     <p>десятичные цифры: 0123456789.</p>
     <p>Буквы и цифры используются при формировании констант, идентификаторов и ключевых слов (эти конструкции описаны ниже).</p>
     <p>Компилятор языка Си рассматривает одну и ту же прописную и строчную буквы как различные символы.</p>
    </section>
    <section>
     <title>
      <p><strong>Пробельные символы</strong></p>
     </title>
     <p>Символы <emphasis>пробел, табуляция, перевод строки, возврат каретки, новая страница, вертикальная табуляция</emphasis> и <emphasis>новая строка</emphasis> называются пробельными, поскольку они имеют то же самое назначение, что и пробелы между словами и строками в тексте на естественном языке. Эти символы отделяют друг от друга лексемы, например константы и идентификаторы.</p>
     <p>Символ CONTROL-Z (шестнадцатеричный код 1А) рассматривается как индикатор конца файла. Он автоматически вставляется текстовым редактором при создании файла в его конец. Компилятор языка Си завершает обработку файла с исходным текстом программы при обнаружении символа CONTROL-Z.</p>
     <p>Компилятор языка Си игнорирует пробельные символы, если они используются не как компоненты символьных констант или символьных строк. Это позволяет использовать столько пробельных символов, сколько нужно для повышения наглядности программы.</p>
     <p>Комментарии компилятор языка Си также рассматривает как пробельные символы.</p>
    </section>
    <section>
     <title>
      <p><strong>Разделители</strong></p>
     </title>
     <p>Разделители из множества символов языка Си используются для различных целей, от организации текста программы до определения указаний компилятору языка Си. Разделители перечислены в таблице 1.1.</p>
     <p>Таблица 1.1.</p>
     <table>
      <tr>
       <td align="center">Символ</td>
       <td align="center">Наименование</td>
       <td align="center">Символ</td>
       <td align="center">Наименование</td>
      </tr>
      <tr>
       <td align="center">,</td>
       <td align="left">Запятая</td>
       <td align="center">!</td>
       <td align="left">Восклицательный знак</td>
      </tr>
      <tr>
       <td align="center">.</td>
       <td align="left">Точка</td>
       <td align="center">|</td>
       <td align="left">Вертикальная черта</td>
      </tr>
      <tr>
       <td align="center">;</td>
       <td align="left">Точка с запятой</td>
       <td align="center">/</td>
       <td align="left">Наклонная черта вправо (слэш)</td>
      </tr>
      <tr>
       <td align="center">:</td>
       <td align="left">Двоеточие</td>
       <td align="center">\</td>
       <td align="left">Наклонная черта влево(обратный слэш)</td>
      </tr>
      <tr>
       <td align="center">?</td>
       <td align="left">Знак вопроса</td>
       <td align="center">~</td>
       <td align="left">Тильда</td>
      </tr>
      <tr>
       <td align="center">‘</td>
       <td align="left">Одиночная кавычка (апостроф)</td>
       <td align="center">_</td>
       <td align="left">Подчеркивание</td>
      </tr>
      <tr>
       <td align="center">(</td>
       <td align="left">Левая круглая скобка</td>
       <td align="center">#</td>
       <td align="left">Знак номера</td>
      </tr>
      <tr>
       <td align="center">)</td>
       <td align="left">Правая круглая скобка</td>
       <td align="center">%</td>
       <td align="left">Процент</td>
      </tr>
      <tr>
       <td align="center">{</td>
       <td align="left">Левая фигурная скобка</td>
       <td align="center">&amp;</td>
       <td align="left">Амперсанд</td>
      </tr>
      <tr>
       <td align="center">}</td>
       <td align="left">Правая фигурная скобка</td>
       <td align="center">^</td>
       <td align="left">Стрелка вверх</td>
      </tr>
      <tr>
       <td align="center">&lt;</td>
       <td align="left">Знак "меньше"</td>
       <td align="center">-</td>
       <td align="left">Знак минус</td>
      </tr>
      <tr>
       <td align="center">&gt;</td>
       <td align="left">Знак "больше"</td>
       <td align="center">=</td>
       <td align="left">Знак равенства</td>
      </tr>
      <tr>
       <td align="center">[</td>
       <td align="left">Левая квадратная скобка</td>
       <td align="center">+</td>
       <td align="left">Знак плюс</td>
      </tr>
      <tr>
       <td align="center">]</td>
       <td align="left">Правая квадратная скобка</td>
       <td align="center">*</td>
       <td align="left">Знак умножения (звездочка)</td>
      </tr>
     </table>
     <empty-line/>
     <p>Эти символы имеют специальный смысл для компилятора языка Си. Правила их использования описываются в дальнейших разделах руководства. Элементы множества представимых символов, которые не представлены в данном списке (в частности, русские буквы), могут быть использованы только в символьных строках, символьных константах и комментариях.</p>
    </section>
    <section>
     <title>
      <p><strong>Специальные символы</strong></p>
     </title>
     <p>Специальные символы предназначены для представления пробельных и неграфических символов в строках и символьных константах. Обычно они используются для спецификации таких действий, как возврат каретки и табуляция для терминалов и принтеров, а также для представления символов, имеющих особый смысл (например, двойная кавычка). Специальный символ состоит из обратного слэша, за которым следует либо буква, либо знаки пунктуации, либо комбинация цифр. В таблице 1.2 приведен список специальных символов языка Си.</p>
     <p>В СП ТС шестнадцатеричное значение байта может задаваться не только как \х, но и как \Х.</p>
     <p>В СП ТС, помимо перечисленных специальных символов, имеется еще один: \?—знак вопроса (код Ox3F). Он введен в состав языка Си для совместимости со стандартом ANSI на язык Си. Стандарт ANSI предусматривает использование пары знаков вопроса (??) в качестве признака последовательности, представляющей какой-либо символ, который может не иметь представления на клавиатуре терминала. Если же необходимо просто записать подряд два знака вопроса (например, в символьной строке), следует записать их так: ?\?. В СП ТС, однако, не реализованы последовательности, начинающиеся знаками ??, поэтому использование специального символа \? необязательно.</p>
     <p>Таблица 1.2.</p>
     <table>
      <tr>
       <td align="center">Специальный символ</td>
       <td align="center">Шестнадцатеричное значение в коде ASCII</td>
       <td align="center">Наименование</td>
      </tr>
      <tr>
       <td align="center">\n</td>
       <td align="center">ОА</td>
       <td align="left">Новая строка</td>
      </tr>
      <tr>
       <td align="center">\t</td>
       <td align="center">09</td>
       <td align="left">Горизонтальная табуляция</td>
      </tr>
      <tr>
       <td align="center">\v</td>
       <td align="center">0В</td>
       <td align="left">Вертикальная табуляция</td>
      </tr>
      <tr>
       <td align="center">\b</td>
       <td align="center">08</td>
       <td align="left">Забой</td>
      </tr>
      <tr>
       <td align="center">\г</td>
       <td align="center">OD</td>
       <td align="left">Возврат каретки</td>
      </tr>
      <tr>
       <td align="center">\f</td>
       <td align="center">ОС</td>
       <td align="left">Новая страница</td>
      </tr>
      <tr>
       <td align="center">\а</td>
       <td align="center">07</td>
       <td align="left">Звуковой сигнал</td>
      </tr>
      <tr>
       <td align="center">\’</td>
       <td align="center">2С</td>
       <td align="left">Апостроф</td>
      </tr>
      <tr>
       <td align="center">\"</td>
       <td align="center">22</td>
       <td align="left">Двойная кавычка</td>
      </tr>
      <tr>
       <td align="center">\\</td>
       <td align="center">5C</td>
       <td align="left">Обратный слэш</td>
      </tr>
      <tr>
       <td align="center">\ddd</td>
       <td> </td>
       <td align="left">Байтовое значение в восьмеричном представлении</td>
      </tr>
      <tr>
       <td align="center">\xdd</td>
       <td> </td>
       <td align="left">Байтовое значение в шестнадцатеричном представлении</td>
      </tr>
     </table>
     <empty-line/>
     <p>Примечание. При работе с текстовым редактором ввод каждой строки завершается нажатием клавиши ENTER (ВВОД). Фактически при этом в текст вставляются два символа: возврат каретки и новая строка (с шестнадцатеричными значениями 0D и 0А в коде ASCII). Однако стандартные библиотечные функции ввода и вывода текстовой информации рассматривают эту пару символов как один символ — символ новой строки с шестнадцатеричным значением 0А. Этот символ представляется в символьных константах и символьных строках как \n. При чтении текстовой строки стандартные библиотечные функции заменяют упомянутую пару символов единственным символом новой строки, а при записи символа новой строки добавляют перед ним символ возврат каретки.</p>
     <p>Если обратный слэш предшествует символу, не входящему в приведенный список, то обратный слэш игнорируется, а символ представляется обычным образом. Например, сочетание \h в строковой или символьной константе представляет символ h.</p>
     <p>Конструкция \ddd позволяет задать произвольное байтовое значение как последовательность от одной до трёх восьмеричных цифр. Конструкция \xdd позволяет задать произвольное байтовое значение как последовательность от одной до двух шестнадцатеричных цифр, а для версии 5.0 СП MSC – до трех шестнадцатеричных цифр. Например, символ забой в коде ASCII может быть задан как \010 или \х08. Нулевой код может быть задан как \0 или \х0. В восьмеричном представлении байта могут быть заданы только восьмеричные цифры, причем по крайней мере одна цифра должна быть задана. Например, символ забой может быть задан как \10. Аналогично, в шестнадцатеричном представлении байта должна быть задана по крайней мере одна шестнадцатеричная цифра. Так, шестнадцатеричное представление символа забой может быть задано и как \х08, и как \х8.</p>
     <p>Примечание. Если восьмеричное или шестнадцатеричное представление байта используется в составе строки, то рекомендуется полностью задавать все цифры представления. В противном случае, если символ, непосредственно следующий за представлением, случайно окажется восьмеричной или шестнадцатеричной цифрой, он будет интерпретироваться как часть этого представления. Например, в версии 4.0 СП MSC строка <strong>\х7Веll</strong> при выводе на печать будет выглядеть как <strong>{ell</strong>, поскольку <strong>\х7В</strong> проинтерпретируется как код левой фигурной скобки. Строка <strong>\х07Ве11</strong> будет правильным представлением кода звукового сигнала с последующим словом <strong>Bell</strong>.</p>
     <p>В СП ТС разбор конструкций, представляющих байтовое значение, реализован не вполне корректно; так, запись "\1234" считается ошибочной, хотя она представляет восьмеричное значение 123 и символ '4'.</p>
     <p>Специальные символы позволяют посылать неграфические управляющие последовательности на внешние устройства. Например, код <strong>\033</strong> (символ ESC в коде ASCII) часто используется как первый символ команд управления терминалом и принтером.</p>
     <p>Помимо специальных символов, обратный слэш (\) используется также в качестве признака продолжения символьных строк и препроцессорных макроопределений. Если символ новой строки непосредственно следует за обратным слэшем, то комбинация "обратный слэш—символ новой строки" игнорируется и следующая строка рассматривается как продолжение предыдущей строки.</p>
    </section>
    <section>
     <title>
      <p><strong>Операции</strong></p>
     </title>
     <p>Операции — это комбинации символов, специфицирующие действия по преобразованию значений. Компилятор языка Си интерпретирует каждую из этих комбинаций как самостоятельную лексему.</p>
     <p>В таблице 1.3. представлен список операций. Операции должны использоваться точно так, как они представлены в таблице,' без пробельных символов между символами в тех операциях, которые представлены несколькими символами.</p>
     <p>Операция <strong>sizeof</strong> не включена в эту таблицу, поскольку задается ключевым словом, а не символом.</p>
     <p>Таблица 1.3.</p>
     <table>
      <tr>
       <td align="center">Операция</td>
       <td align="center">Наименование</td>
       <td align="center">Операция</td>
       <td align="center">Наименование</td>
      </tr>
      <tr>
       <td align="center">!</td>
       <td align="left">Логическое НЕ</td>
       <td align="center">^</td>
       <td align="left">Поразрядное исключающее ИЛИ</td>
      </tr>
      <tr>
       <td align="center">~</td>
       <td align="left">Обратный код</td>
       <td align="center">&amp;&amp;</td>
       <td align="left">Логическое И</td>
      </tr>
      <tr>
       <td align="center">+</td>
       <td align="left">Сложение; унарный плюс</td>
       <td align="center">||</td>
       <td align="left">Логическое ИЛИ</td>
      </tr>
      <tr>
       <td align="center">-</td>
       <td align="left">Вычитание; унарный минус</td>
       <td align="center">?:</td>
       <td align="left">Условная операция</td>
      </tr>
      <tr>
       <td align="center">*</td>
       <td align="left">Умножение; косвенная адресация</td>
       <td align="center">++</td>
       <td align="left">Инкремент</td>
      </tr>
      <tr>
       <td align="center">/</td>
       <td align="left">Деление</td>
       <td align="center">--</td>
       <td align="left">Декремент</td>
      </tr>
      <tr>
       <td align="center">%</td>
       <td align="left">Остаток от деления</td>
       <td align="center">=</td>
       <td align="left">Простое присваивание</td>
      </tr>
      <tr>
       <td align="center">&lt;&lt;</td>
       <td align="left">Сдвиг влево</td>
       <td align="center">+=</td>
       <td align="left">Присваивание со сложением</td>
      </tr>
      <tr>
       <td align="center">&gt;&gt;</td>
       <td align="left">Сдвиг вправо</td>
       <td align="center">-=</td>
       <td align="left">Присваивание с вычитанием</td>
      </tr>
      <tr>
       <td align="center">&lt;</td>
       <td align="left">Меньше</td>
       <td align="center">*=</td>
       <td align="left">Присваивание с умножением</td>
      </tr>
      <tr>
       <td align="center">&lt;=</td>
       <td align="left">Меньше или равно</td>
       <td align="center">/=</td>
       <td align="left">Присваивание с делением</td>
      </tr>
      <tr>
       <td align="center">&gt;</td>
       <td align="left">Больше</td>
       <td align="center">%=</td>
       <td align="left">Присваивание с остатком от деления</td>
      </tr>
      <tr>
       <td align="center">&gt;=</td>
       <td align="left">Больше или равно</td>
       <td align="center">&gt;&gt;=</td>
       <td align="left">Присваивание со сдвигом вправо</td>
      </tr>
      <tr>
       <td align="center">==</td>
       <td align="left">Равно</td>
       <td align="center">&lt;&lt;=</td>
       <td align="left">Присваивание со сдвигом влево</td>
      </tr>
      <tr>
       <td align="center">!=</td>
       <td align="left">Не равно</td>
       <td align="center">&amp;=</td>
       <td align="left">Присваивание с поразрядным И</td>
      </tr>
      <tr>
       <td align="center">&amp;</td>
       <td align="left">Поразрядное И; адресация</td>
       <td align="center">|=</td>
       <td align="left">Присваивание с поразрядным включающим ИЛИ</td>
      </tr>
      <tr>
       <td align="center">|</td>
       <td align="left">Поразрядное включающее ИЛИ</td>
       <td align="center">^=</td>
       <td align="left">Присваивание с поразрядным исключающим ИЛИ</td>
      </tr>
      <tr>
       <td align="center">,</td>
       <td align="left">Последовательное выполнение (запятая)</td>
       <td> </td>
       <td> </td>
      </tr>
     </table>
     <empty-line/>
     <p>Примечание. Условная операция ?: является не двухсимвольной, а тернарной (трехоперандной) операцией. Она имеет следующий формат: &lt;операнд1&gt; ? &lt;операнд2&gt; : &lt;операнд3&gt;</p>
    </section>
   </section>
   <section>
    <title>
     <p><strong>Константы</strong></p>
    </title>
    <section>
     <p>Константа — это число, символ или строка символов. Константы используются в программе для задания постоянных величин. В языке Си различают четыре типа констант: целые, с плавающей точкой, символьные константы и символьные строки.</p>
    </section>
    <section>
     <title>
      <p><strong>Целые константы</strong></p>
     </title>
     <p>Целая константа — это десятичное, восьмеричное или шестнадцатеричное число, которое представляет целое значение. Десятичная константа имеет следующий формат представления:</p>
     <p><emphasis>&lt;цифры&gt;</emphasis></p>
     <p><emphasis>&lt;цифры&gt;</emphasis> — последовательность из одной или более десятичных цифр от 0 до 9.</p>
     <p>Восьмеричная константа имеет следующий формат представления:</p>
     <p>0<emphasis>&lt;в-цифры&gt;</emphasis></p>
     <p><emphasis>&lt;в-цифры&gt;—</emphasis>это одна или более восьмеричных цифр от 0 до 7. Запись нуля впереди обязательна.</p>
     <p>Шестнадцатеричная константа имеет следующий формат представления:</p>
     <p>0<emphasis>х&lt;ш-цифры</emphasis>&gt; или 0Х<emphasis>&lt;ш-цифры&gt;</emphasis></p>
     <p>&lt;<emphasis>ш-цифры</emphasis>&gt; <emphasis>—</emphasis>одна или более шестнадцатеричных цифр. Шестнадцатеричная цифра может быть цифрой от 0 до 9 или буквой (большой или малой) от А до F. Допускается "смесь" больших и малых букв. Запись нуля впереди и следующего за ним символа <strong>х</strong> или <strong>Х</strong> обязательна.</p>
     <p>Между цифрами целой константы пробельные символы недопустимы. В таблице 1.4 приведены примеры целых констант. Константы, записанные в одной строке таблицы, используются для представления одного и того же значения.</p>
     <p>Таблица 1.4.</p>
     <table>
      <tr>
       <td align="center">Десятичные константы</td>
       <td align="center">Восьмеричные константы</td>
       <td align="center">Шестнадцатеричные константы</td>
      </tr>
      <tr>
       <td align="center">10</td>
       <td align="center">012</td>
       <td align="center">0ха или 0хА</td>
      </tr>
      <tr>
       <td align="center">132</td>
       <td align="center">0204</td>
       <td align="center">0х84</td>
      </tr>
      <tr>
       <td align="center">32179</td>
       <td align="center">076663</td>
       <td align="center">0x7dB3 или 0x7DB3</td>
      </tr>
     </table>
     <empty-line/>
     <p>Целые константы всегда специфицируют положительные значения. Если требуется отрицательное значение, то необходимо сформировать константное выражение из знака минус и следующей за ним константы. Знак минус рассматривается при этом как арифметическая операция.</p>
     <p>Каждая целая константа имеет тип, определяющий ее представление в памяти (описание типов приведено в разделе 3.1 "Базовые типы данных"). Десятичные константы могут иметь тип <strong>int</strong> (целый тип) или <strong>long</strong> (длинный целый тип).</p>
     <p>Восьмеричные и шестнадцатеричные константы в зависимости от размера могут иметь тип <strong>int</strong>, <strong>unsigned int</strong>, <strong>long</strong> или <strong>unsigned long</strong>. Если константа может быть представлена типом <strong>int</strong>, то компилятор языка Си присваивает ей тип <strong>int</strong>. Если ее значение больше, чем максимальное положительное значение, которое может быть представлено типом <strong>int</strong>, но может быть представлено тем же числом битов, что и <strong>int</strong>, ей присваивается тип <strong>unsigned int</strong>. Наконец, константа, значение которой больше, чем максимальное значение, представляемое типом <strong>unsigned int</strong>, задается типом <strong>long</strong> или, если размер этого типа также оказывается недостаточен, типом <strong>unsigned long</strong>. В таблице 1.5 показаны диапазоны значений констант различных типов для компьютера, на котором тип <strong>int</strong> имеет длину 16 битов и тип <strong>long</strong> имеет длину 32 бита.</p>
     <p>Таблица1.5.</p>
     <table>
      <tr>
       <td align="center">Десятичные константы</td>
       <td align="center">Восьмеричные константы</td>
       <td align="center">Шестнадцатеричные константы</td>
       <td align="center">Тип</td>
      </tr>
      <tr>
       <td align="center">0—32767</td>
       <td align="center">0—077777</td>
       <td align="center">0х0—0x7FFF</td>
       <td align="center">int</td>
      </tr>
      <tr>
       <td> </td>
       <td align="center">0100000—0177777</td>
       <td align="center">0х8000—0xFFFF</td>
       <td align="center">unsigned int</td>
      </tr>
      <tr>
       <td align="center">32767—2147483647</td>
       <td align="center">02000001—017777777777</td>
       <td align="center">0х10000—0x7FFFFFFF</td>
       <td align="center">long</td>
      </tr>
      <tr>
       <td> </td>
       <td align="center">020000000000—030000000000</td>
       <td align="center">0х80000000—0xFFFFFFFF</td>
       <td align="center">unsigned long</td>
      </tr>
     </table>
     <empty-line/>
     <p>Из рассмотренных правил следует, что при преобразовании восьмеричных и шестнадцатеричных констант к более длинным типам не производится расширения знака (поскольку старший, знаковый бит всегда равен нулю).</p>
     <p>Программист может явно определить для любой целой константы тип <strong>long</strong>, записав букву "<strong>l</strong>" или "<strong>L</strong>" в конец константы. Это позволяет расширить нижнюю границу диапазона значений констант любого типа до нуля. Например, константа со значением 10 будет иметь тип <strong>long</strong> только в том случае, если она будет записана с суффиксом <strong>L</strong>, т. е. 10L. В таблице 1.6 приведены примеры длинных целых констант.</p>
     <p>Таблица 1.6.</p>
     <table>
      <tr>
       <td align="center">Десятичные константы</td>
       <td align="center">Восьмеричные константы</td>
       <td align="center">Шестнадцатеричные константы</td>
      </tr>
      <tr>
       <td align="center">12L</td>
       <td align="center">012L</td>
       <td align="center">0xaL или 0xAL</td>
      </tr>
      <tr>
       <td align="center">0l</td>
       <td align="center">0115l</td>
       <td align="center">0х4fl или 0x4Fl</td>
      </tr>
     </table>
     <empty-line/>
     <p>В СП ТС реализован также суффикс <strong>U</strong> (или <strong>u</strong>), означающий, что константа имеет тип <strong>unsigned</strong>. Можно использовать одновременно оба суффикса — <strong>L</strong> и <strong>U</strong> — для одной и той же константы. Кроме того, в СП ТС константе присваивается тип <strong>unsigned long</strong>, если ее значение превышает <strong>65535</strong>, независимо от наличия или отсутствия суффикса <strong>U</strong> (в СП MSC в этом случае константе был бы присвоен тип <strong>long</strong>).</p>
    </section>
    <section>
     <title>
      <p><strong>Константы с плавающей точкой</strong></p>
     </title>
     <p>Константа с плавающей точкой — это действительное десятичное положительное число. Оно включает целую часть, дробную часть и экспоненту. Константы с плавающей точкой имеют следующий формат представления:</p>
     <p>[&lt;<emphasis>цифры</emphasis>&gt;][.&lt;<emphasis>цифры</emphasis>&gt;][&lt;<emphasis>э</emphasis>&gt;[-]&lt;<emphasis>цифры</emphasis>&gt;]</p>
     <p><emphasis>&lt;цифры&gt; —</emphasis>одна или более десятичных цифр (от 0 до 9); &lt;<emphasis>э</emphasis>&gt;<emphasis>—</emphasis>признак экспоненты, задаваемый символом <strong>Е</strong> или <strong>е</strong>. Либо целая, либо дробная часть константы может быть опущена, но не обе сразу. Либо десятичная точка с дробной частью, либо экспонента может быть опущена, но не обе сразу.</p>
     <p>Экспонента состоит из символа экспоненты, за которым следует целочисленное значение экспоненты, возможно со знаком плюс или минус.</p>
     <p>Между цифрами или символами константы пробельные символы недопустимы.</p>
     <p>Примеры констант с плавающей точкой:</p>
     <p>15.75</p>
     <p>1.575Е1</p>
     <p>1575е-2</p>
     <p>25.</p>
     <p>Примеры констант с плавающей точкой с опущенной целой частью:</p>
     <p>.75</p>
     <p>.0075е2</p>
     <p>Константы с плавающей точкой всегда специфицируют положительные значения. Если требуются отрицательные значения, то необходимо сформировать константное выражение и? знака минус и следующей за ним константы. Знак минус рассматривается при этом как арифметическая операция.</p>
     <p>Примеры:</p>
     <p>-0.0025</p>
     <p>-2.5е-3</p>
     <p>-.125</p>
     <p>-.175Е-2</p>
     <p>Все константы с плавающей точкой имеют тип <strong>double</strong>. В СП ТС можно явно присвоить константе тип <strong>float</strong>, добавив к ней суффикс <strong>f</strong> или <strong>F</strong>.</p>
    </section>
    <section>
     <title>
      <p><strong>Символьные константы</strong></p>
     </title>
     <p>Символьная константа — это буква, цифра, знак пунктуации или специальный символ, заключенный в апострофы. Значение символьной константы равно коду представляемого ею символа. Символьная константа имеет следующую форму представления:</p>
     <p>'&lt;<emphasis>символ</emphasis>&gt;'</p>
     <p>&lt;<emphasis>Символ</emphasis>&gt; может быть любым символом из множества представимых символов (в том числе любым специальным символом), за исключением символов апостроф ('), обратный слэш (\) и новая строка.</p>
     <p>Для представления символов апостроф и обратный слэш в качестве символьной константы необходимо вставить перед ними символ обратный слэш — '\'' и '\\'. Для представления символа новой строки используется запись '\n' (см. раздел 1.1.4).</p>
     <p>Примеры символьных констант приведены в таблице 1.7.</p>
     <p>Таблица 1.7.</p>
     <table>
      <tr>
       <td align="center">Константа</td>
       <td align="center">Значение</td>
      </tr>
      <tr>
       <td align="center">'а'</td>
       <td align="center">Малая буква а</td>
      </tr>
      <tr>
       <td align="center">‘?’</td>
       <td align="center">Знак вопроса</td>
      </tr>
      <tr>
       <td align="center">‘\b’</td>
       <td align="center">Символ забой</td>
      </tr>
      <tr>
       <td align="center">‘\х1В’</td>
       <td align="center">Символ ESC в коде ASCII</td>
      </tr>
     </table>
     <empty-line/>
     <p>Символьные константы имеют тип <strong>int</strong>. Младший байт хранит код символа, а старший байт — знаковое расширение младшего байта.</p>
     <p>Помимо односимвольных констант, в СП ТС реализованы двухсимвольные константы, например 'An', '\n\t', '\007\007'<emphasis>.</emphasis> Они представляются 16-битовым значением типа <strong>int</strong>, причем первый символ заносится в младший байт, а второй — в старший. Односимвольные константы также представляются 16-битовыми значениями типа <strong>int</strong>, и в старший байт, как и в СП MSC, заносится знаковое расширение младшего байта.</p>
     <p>Компилятор языка Си имеет опцию, позволяющую определить тип <strong>char</strong> по умолчанию как беззнаковый тип — <strong>unsigned char</strong>. В этом случае старший байт любой односимвольной константы будет нулевым.</p>
    </section>
    <section>
     <title>
      <p><strong>Символьные строки</strong></p>
     </title>
     <p>Символьная строка — это последовательность символов, заключенная в двойные кавычки. Символьная строка рассматривается как массив символов, каждый элемент которого представляет отдельный символ. Символьная строка имеет следующую форму представления:</p>
     <p>"<strong>&lt;</strong><emphasis>символы<strong>&gt;</strong></emphasis>"</p>
     <p><emphasis>&lt;символы&gt; —</emphasis> это произвольное (в том числе нулевое) количество символов из множества представимых символов, за исключением символов двойная кавычка ("), обратный слэш (\) и новая строка. Чтобы использовать эти символы внутри символьной строки, нужно представить их с помощью соответствующих специальных символов, как показано на следующих примерах:</p>
     <p>"Это символьная строка\n"</p>
     <p>"Первый \\ Второй"</p>
     <p>"\"Да, конечно,\"— сказала она."</p>
     <p>"Следующая строка — пустая:"</p>
     <p>""</p>
     <p>Для формирования символьных строк, занимающих несколько строк текста программы, используется комбинация символов — обратный слэш и новая строка. Компилятор языка Си проигнорирует эту комбинацию символов, а символьные строки объединит и представит в памяти как одну строку. Например, символьная строка:</p>
     <p>"Длинные строки могут быть раз\</p>
     <p>биты на части."</p>
     <p>идентична строке:</p>
     <p>"Длинные строки могут быть разбиты на части."</p>
     <p>В СП MSC версии 5.0 и в СП ТС для формирования символьных строк, занимающих несколько строк текста программы, не требуется применения комбинации символов обратный слэш и новая строка. Символьные строки, следующие друг за другом и не разделенные ничем, кроме пробельных символов, объединяются компилятором языка Си в одну строку.</p>
     <p>Например, программа</p>
     <p>main()</p>
     <p>{</p>
     <p>char *р;</p>
     <p>p = "Данная программа — пример того, как можно"</p>
     <p>" автоматически\nосуществлять объединение"</p>
     <p>" строк в очень длинную строку;\n"</p>
     <p>" такая форма записи может повысить"</p>
     <p>" наглядность программ.\n";</p>
     <p>printf("%s", p);</p>
     <p>}</p>
     <p>напечатает следующий текст:</p>
     <p>Данная программа—пример того, как можно автоматически</p>
     <p>осуществлять объединение строк в очень длинную строку;</p>
     <p>такая форма записи может повысить наглядность программ.</p>
     <p>Каждый символ символьной строки (в том числе каждый специальный символ) хранится в отдельном байте оперативной памяти. Нулевой символ ('\0') автоматически добавляется в качестве последнего байта символьной строки и служит признаком ее конца. Каждая символьная строка в программе рассматривается как отдельный объект; если в программе содержатся две идентичные символьные строки, то они будут занимать две различные области оперативной памяти.</p>
     <p>В СП ТС реализована опция компиляции, позволяющая хранить в памяти только одну из идентичных строк.</p>
     <p>Тип символьной строки—массив элементов типа <strong>char</strong>. Число элементов в массиве равно числу символов в символьной строке плюс один, поскольку нулевой символ (признак конца символьной строки) тоже является элементом массива.</p>
    </section>
   </section>
   <section>
    <title>
     <p><strong>Идентификаторы</strong></p>
    </title>
    <p>Идентификаторы — это имена переменных, функций и меток, используемых в программе. Идентификатор вводится в объявлении переменной или функции, либо в качестве метки оператора. После этого его можно использовать в последующих операторах программы. Идентификатор — это последовательность из одной или более латинских букв, цифр и символов подчеркивания, которая начинается с буквы или символа подчеркивания. Допускается любое число символов в идентификаторе, однако только первые 32 символа рассматриваются компилятором языка Си как значащие. Если первые 32 символа у двух идентификаторов совпадают, компилятор языка Си рассматривает их как один и тот же идентификатор. Компоновщик также распознает 32 символа в именах глобальных переменных.</p>
    <p>В идентификаторах версии 1.5 СП ТС допускается знак <strong>$</strong>, однако, идентификатор не может с него начинаться.</p>
    <p>Компиляторы языка Си в СП MSC и СП ТС имеют опцию, позволяющую изменять число значащих символов в идентификаторах.</p>
    <p>При использовании символов подчеркивания в качестве первых символов идентификаторов необходимо соблюдать осторожность, поскольку такие идентификаторы могут совпасть (войти в конфликт) с именами "скрытых" библиотечных функций.</p>
    <p>Примеры идентификаторов:</p>
    <p>temp1</p>
    <p>top_of_page</p>
    <p>skip12</p>
    <p>Компилятор языка Си рассматривает буквы верхнего и нижнего регистров как различные символы. Поэтому можно создавать идентификаторы, которые совпадают орфографически, но различаются регистром букв. Например, каждый из следующих идентификаторов является уникальным:</p>
    <p>add</p>
    <p>ADD</p>
    <p>Add</p>
    <p>aDD</p>
    <p>В СП ТС, однако, существует опция компиляции, позволяющая рассматривать в именах внешних переменных буквы верхнего и нижнего регистров как совпадающие.</p>
    <p>Компилятор языка Си не допускает использования идентификаторов, совпадающих по написанию с ключевыми словами.</p>
    <p>Например, идентификатор <strong>while</strong> недопустим (однако идентификатор <strong>While</strong>—допустим).</p>
   </section>
   <section>
    <title>
     <p><strong>Ключевые слова</strong></p>
    </title>
    <p>Ключевые слова — это предопределенные идентификаторы, которые имеют специальное значение для компилятора языка Си. Их использование строго регламентировано. Имена объектов программы не могут совпадать с ключевыми словами.</p>
    <p>список ключевых слов:</p>
    <table>
     <tr>
      <td align="left">auto</td>
      <td align="left">continue</td>
      <td align="left">else</td>
      <td align="left">for</td>
      <td align="left">long</td>
      <td align="left">signed</td>
      <td align="left">switch</td>
      <td align="left">void</td>
     </tr>
     <tr>
      <td align="left">break</td>
      <td align="left">default</td>
      <td align="left">enum</td>
      <td align="left">goto</td>
      <td align="left">register</td>
      <td align="left">sizeof</td>
      <td align="left">typedef</td>
      <td align="left">while</td>
     </tr>
     <tr>
      <td align="left">case</td>
      <td align="left">do</td>
      <td align="left">extern</td>
      <td align="left">if</td>
      <td align="left">return</td>
      <td align="left">static</td>
      <td align="left">union</td>
      <td> </td>
     </tr>
     <tr>
      <td align="left">char</td>
      <td align="left">double</td>
      <td align="left">float</td>
      <td align="left">int</td>
      <td align="left">short</td>
      <td align="left">struct</td>
      <td align="left">unsigned</td>
      <td> </td>
     </tr>
    </table>
    <p>При необходимости можно с помощью директив препроцессора определить для ключевых слов другие имена. Например, при наличии в программе макроопределения</p>
    <p><strong>#define BOOL int</strong></p>
    <p>слово <strong>BOOL</strong> можно использовать в объявлениях вместо слова <strong>int</strong>. Смысл объявлений (спецификация целого типа данных) от этого не изменится, однако программа станет более читабельной, если речь идет не просто о целых переменных, а о переменных, предназначенных для хранения значений булевского типа (булевский тип не реализован в языке Си как самостоятельный тип данных).</p>
    <p>Имеется также ряд специальных ключевых слов:</p>
    <table>
     <tr>
      <td align="left">СП MSC:</td>
      <td align="left">cdecl</td>
      <td align="left">СП ТС:</td>
      <td align="left">asm</td>
      <td align="left">_cs</td>
      <td align="left">_BX</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">far</td>
      <td> </td>
      <td align="left">cdecl</td>
      <td align="left">_ds</td>
      <td align="left">_ch</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">fortran</td>
      <td> </td>
      <td align="left">far</td>
      <td align="left">_es</td>
      <td align="left">_cl</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">huge</td>
      <td> </td>
      <td align="left">huge</td>
      <td align="left">_ss</td>
      <td align="left">_Cx</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">near</td>
      <td> </td>
      <td align="left">interrupt</td>
      <td align="left">_AH</td>
      <td align="left">_DH</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">pascal</td>
      <td> </td>
      <td align="left">near</td>
      <td align="left">_AL</td>
      <td align="left">_DI</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">const</td>
      <td> </td>
      <td align="left">pascal</td>
      <td align="left">_AX</td>
      <td align="left">_DL</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">volatile</td>
      <td> </td>
      <td align="left">const</td>
      <td align="left">_BH</td>
      <td align="left">_DX</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">interrupt</td>
      <td> </td>
      <td align="left">volatile</td>
      <td align="left">_BL</td>
      <td align="left">_SI</td>
     </tr>
     <tr>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td align="left">_BP</td>
      <td align="left">_SP</td>
     </tr>
    </table>
    <p>В версии 4.0 СП MSC ключевые слова const и volatile зарезервированы, но использовать их невозможно. В версии 5.0 СП MSC ключевое слово volatile реализовано лишь синтаксически, а const — полностью (как синтаксически, так и семантически). В СП ТС и const, и volatile полностью реализованы. В версии 4.0 СП MSC ключевое слово interrupt не реализовано.</p>
    <p>Ключевое слово fortran используется для организации связи программ, написанных на языках Си и Фортран. По действию оно аналогично ключевому слову pascal. Ключевое слово asm применяется для записи в программе на языке Си ассемблерных инструкций. Специальные ключевые слова, начинающиеся с подчеркивания, представляют собой имена псевдопеременных, соответствующих регистрам микропроцессора. Ключевые слова cdecl, pascal, interrupt, near, far, huge, const, volatile объясняются подробно в разделе 3.3.3 "Описатели с модификаторами".</p>
   </section>
   <section>
    <title>
     <p><strong>Комментарии</strong></p>
    </title>
    <p>Комментарий — это последовательность символов, которая воспринимается компилятором языка Си как отдельный пробельный символ и игнорируется. Комментарий имеет следующий вид:</p>
    <p>/* <strong>&lt;</strong><emphasis>символы</emphasis><strong>&gt;</strong> */</p>
    <p><emphasis>&lt;символы&gt;</emphasis> должны принадлежать множеству представимых символов. Символ новой строки также допустим внутри комментария. Это означает, что комментарии могут занимать более одной строки программного текста. Внутри комментария недопустима комбинация символов */. Это означает, что комментарии не могут быть вложенными.</p>
    <p>Компилятор языка Си рассматривает комментарий как пробельный символ, поэтому комментарии допускается использовать везде, где можно использовать пробельные символы (но нельзя, например, внутри лексем). Компилятор языка Си игнорирует все символы комментария, поэтому даже запись в комментариях ключевых слов не приведет к ошибке.</p>
    <p>Следующие примеры иллюстрируют использование комментариев:</p>
    <p>/* Комментарии помогают документировать программу.*/</p>
    <p>/* Комментарии могут содержать ключевые слова, например while и for */</p>
    <p>/********************</p>
    <p>Комментарий может занимать</p>
    <p>несколько строк.</p>
    <p>********************/</p>
    <p>Так как комментарии не могут содержать вложенных комментариев, то следующий пример будет ошибочным:</p>
    <p>/* Недопустимы /* вложенные */ комментарии */</p>
    <p>Компилятор языка Си распознает первую комбинацию символов */ после слова "вложенные" как конец комментария. Затем компилятор языка Си попытается обработать оставшийся текст и выявить в нем лексемы языка Си, что приведет к ошибке.</p>
    <p>Во избежание случайного возникновения ситуации вложенности комментариев рекомендуется ограничивать участок программного текста, который должен быть закомментирован, директивами препроцессора <strong>#if 0</strong> и <strong>#endif</strong>.</p>
    <p>В СП ТС существует опция компиляции, допускающая вложенные комментарии.</p>
   </section>
  </section>
  <section>
   <title>
    <p><strong>СТРУКТУРА ПРОГРАММЫ</strong></p>
   </title>
   <section>
    <title>
     <p><strong>Исходная программа</strong></p>
    </title>
    <p>Исходная программа представляет собой совокупность следующих элементов: директив препроцессора, указаний компилятору, объявлений и определений. Директивы препроцессора специфицируют действия препроцессора по преобразованию текста программы перед компиляцией. Указания компилятору — это специальные инструкции, которым компилятор языка Си следует во время компиляции.</p>
    <p>Объявление переменной задает имя и атрибуты переменной. Определение переменной, помимо задания ее имени и атрибутов, приводит к выделению для нее памяти. Кроме того, определение задает начальное значение переменной (явно или неявно).</p>
    <p>Объявление функции задает ее имя, тип возвращаемого значения и может задавать атрибуты ее формальных параметров.</p>
    <p>Определение функции специфицирует тело функции, которое представляет собой составной оператор (блок), содержащий объявления и операторы. Определение функции также задает имя функции, тип возвращаемого значения и атрибуты ее формальных параметров.</p>
    <p>Объявление типа позволяет программисту создать собственный тип данных. Оно состоит в присвоении имени некоторому базовому или составному типу языка Си. Для типа понятия объявления и определения совпадают.</p>
    <p>Исходная программа может содержать произвольное число директив, указаний компилятору, объявлений и определений. Их синтаксис описан в последующих разделах. Порядок появления этих элементов в программе весьма существен; в частности, он влияет на возможность использования переменных, функций и типов в различных частях программы (см. раздел 2.4 "Время жизни и область действия").</p>
    <p>Для того чтобы программа на языке Си могла быть скомпилирована и выполнена, она должна содержать по крайней мере одно определение — определение функции. Эта функция определяет действия, выполняемые программой. Если же программа содержит несколько функций, то среди них выделяется одна главная функция, которая должна иметь имя <strong>main</strong>. С нее начинается выполнение программы; она определяет действия, выполняемые программой, и вызывает другие функции. Порядок следования определений функций в исходной программе несуществен.</p>
    <p>Если программа содержит только одну функцию, то она и является главной (и должна иметь имя <strong>main</strong>). В следующем примере приведена простая программа на языке Си:</p>
    <p>int х = 1; /* определения переменных. */</p>
    <p>inl у = 2;</p>
    <p>extern int printf(char *, ..,); /* объявление функции */</p>
    <p>main () /* определение главной функции */</p>
    <p>{</p>
    <p>int z; /* объявления переменных */</p>
    <p>int w;</p>
    <p>z = у + х; /* выполняемые операторы */</p>
    <p>w = y – x;</p>
    <p>printf("z = %d\nw = %d\n", z, w);</p>
    <p>}</p>
    <p>Эта исходная программа определяет функцию с именем <strong>main</strong> и объявляет функцию <strong>printf</strong>. Переменные <strong>х</strong> и <strong>у</strong> определяются на внешнем уровне, а переменные <strong>z</strong> и <strong>w</strong> объявляются внутри функции.</p>
   </section>
   <section>
    <title>
     <p><strong>Исходные файлы</strong></p>
    </title>
    <p>Текст программы на языке Си может быть разделен на несколько исходных файлов. Исходный файл представляет собой текстовый файл, который содержит либо всю программу, либо ее часть. При компиляции исходной программы каждый из составляющих ее исходных файлов должен быть скомпилирован отдельно, а затем связан с другими файлами компоновщиком. Отдельные исходные файлы можно объединять в один исходный файл, компилируемый как единое целое, посредством директивы препроцессора <strong>#include</strong>.</p>
    <p>Исходный файл может содержать любую целостную комбинацию директив, указаний компилятору, объявлений и определений. Под целостностью подразумевается, что такие объекты, как определения функций, структуры данных либо набор связанных между собой директив условной компиляции, должны целиком располагаться в одном файле, т. е. не могут начинаться в одном файле, а продолжаться в другом.</p>
    <p>Исходный файл не обязательно должен содержать выполняемые операторы. Иногда удобно размещать определения переменных в одном файле, а в других файлах использовать эти переменные путем их объявления. В этом случае определения переменных становятся легко доступными для поиска и модификации. Из тех же соображений именованные константы и макроопределения обычно собирают в отдельные файлы и включают их посредством директивы препроцессора <strong>#include</strong> в те исходные файлы, в которых они требуются.</p>
    <p>Указания компилятору обычно действуют только для отдельных участков исходного файла. Специфические действия компилятора, задаваемые указаниями, определяются конкретной реализацией компилятора языка Си.</p>
    <p>В нижеследующем примере исходная программа состоит из двух исходных файлов. Функции <strong>main</strong> и <strong>max</strong> представлены в отдельных файлах. Функция <strong>main</strong> использует функцию <strong>max</strong> в процессе своего выполнения.</p>
    <p>/* исходный файл 1 — функция main */</p>
    <p>#define ONE 1</p>
    <p>#define TWO 2</p>
    <p>#define THREE 3</p>
    <p>extern int max (int, int); /* объявление функции */</p>
    <p>main () /* определение функции */</p>
    <p>{</p>
    <p>int w = ONE, x = TWO, у = THREE;</p>
    <p>int z = 0;</p>
    <p>z = max(x, y);</p>
    <p>z = max(z, w);</p>
    <p>}</p>
    <p>/* исходный файл 2 — функция max */</p>
    <p>int max (a, b) /* определение функции */</p>
    <p>int a, b;</p>
    <p>{</p>
    <p>if ( a &gt; b )</p>
    <p>return (a);</p>
    <p>else</p>
    <p>return (b);</p>
    <p>}</p>
    <p>В первом исходном файле функция <strong>max</strong> объявлена, но не определена. Такое объявление функции называется предварительным; оно позволяет компилятору контролировать обращение к функции до того, как она определена. Определение функции <strong>main</strong> содержит вызовы функции <strong>max</strong>.</p>
    <p>Строки, начинающиеся с символа #, являются директивами препроцессора. Директивы указывают препроцессору на необходимость замены в первом исходном файле идентификаторов ONE, TWO, THREE на соответствующие значения. Область действия директив не распространяется на второй исходный файл.</p>
    <p>Второй исходный файл содержит определение функции <strong>max</strong>. Это определение соответствует объявлению <strong>max</strong> в первом исходном файле. После того как оба исходных файла скомпилированы, они могут быть объединены компоновщиком и выполнены как единая программа.</p>
   </section>
   <section>
    <title>
     <p><strong>Выполнение программы</strong></p>
    </title>
    <p>Каждая программа на языке Си содержит главную функцию. В языке Си главная функция программы должна иметь имя <strong>main</strong>. С функции <strong>main</strong> начинается выполнение программы; обычно она управляет выполнением программы, организуя вызовы других функций. Программа может завершить выполнение по достижению конца функции <strong>main</strong>, однако может завершиться и в других точках путем вызова стандартных библиотечных функций, предназначенных для выхода из программы (см. описание функций <strong>exit</strong> и <strong>abort</strong> в разделе 12).</p>
    <p>Исходная программа обычно включает в себя несколько функций, каждая из которых предназначена для выполнения определенной задачи. Функция <strong>main</strong> может вызывать эти функции, с тем чтобы выполнить ту или иную задачу. Когда функция вызывается, выполнение начинается с ее первого оператора. Функция возвращает управление при выполнении оператора <strong>return</strong> либо когда выполнение доходит до конца тела функции.</p>
    <p>Все функции, включая функцию <strong>main</strong>, могут иметь формальные параметры. Вызываемые функции получают значения формальных параметров из вызывающих функций. Значения формальных параметров функции <strong>main</strong> могут быть получены извне — из командной строки при вызове программы и из таблицы контекста операционной системы. Таблица контекста заполняется системными командами SET и PATH.</p>
    <p>Для передачи данных программе через командную строку необходимо при вызове вслед за именем выполняемого файла, содержащего программу, задать ее аргументы. Аргументы должны быть отделены друг от друга пробелами или символами горизонтальной табуляции. Если требуется передать программе аргумент, содержащий внутри себя пробелы или символы горизонтальной табуляции, следует заключить его в двойные кавычки.</p>
    <p>Аргументы передаются программе (точнее, функции <strong>main</strong>) как символьные строки.</p>
    <p>Пример:</p>
    <p>PROG 25 "ab с" 100</p>
    <p>Программе с именем PROG передаются три аргумента — символьные строки "25", "ab с" и "100".</p>
    <p>В процессе компоновки программы на языке Си в ее состав включается модуль поддержки выполнения. Этот модуль получает управление непосредственно от операционной системы при вызове программы, разбирает командную строку и передает аргументы функции <strong>main</strong>.</p>
    <p>Для получения аргументов из командной строки и таблицы контекста в функции <strong>main</strong> должно быть объявлено три формальных параметра. В языке Си по традиции параметры функции <strong>main</strong> именуются <strong>argc</strong>, <strong>argv</strong> и <strong>envp</strong>, однако это не является требованием языка.</p>
    <p>Пример объявления формальных параметров функции main:</p>
    <p>main (int argc, char *argv[], char *envp []){}</p>
    <p>Если программа не требует аргументов, то функцию <strong>main</strong> можно объявить без формальных параметров:</p>
    <p>main()</p>
    <p>{</p>
    <p>…</p>
    <p>}</p>
    <p>Если аргументы передаются программе только через командную строку, то достаточно объявить только параметры <strong>argc</strong> и <strong>argv</strong>. Однако порядок объявления параметров существен; например, если программа принимает аргументы из таблицы контекста, а из командной строки не принимает, необходимо объявить все три параметра.</p>
    <p>Параметр <strong>argv</strong> представляет собой массив адресов, каждый элемент которого указывает на строковое представление соответствующего по порядку аргумента, передаваемого программе. Параметр <strong>argc</strong> определяет общее число передаваемых аргументов. Первый элемент массива <strong>argv</strong> (т. е. <strong>argv[0]</strong>) всегда содержит имя программы, по которому она была вызвана. Этот элемент всегда заполнен, поэтому значение <strong>argc</strong> всегда равно по крайней мере 1. Доступ к первому аргументу, переданному программе, можно осуществить с помощью выражения <strong>argv[1]</strong>, к последнему аргументу —<strong>argv[argc-1]</strong>.</p>
    <p>Параметр <strong>envp</strong> представляет собой указатель на массив строк, определяющих контекст, т.е. среду выполнения программы. Стандартные библиотечные функции <strong>getenv</strong> и <strong>putenv</strong> позволяют организовать удобный доступ к таблице контекста.</p>
    <p>Существует еще один способ передачи аргументов функции <strong>main</strong> — при запуске программы как независимого подпроцесса из другой программы, также написанной на языке Си. Подробное описание этого способа приведено в разделе 12 в описании групп стандартных библиотечных функций <strong>ехес</strong> и <strong>spawn</strong>.</p>
   </section>
   <section>
    <title>
     <p><strong>Время жизни и область действия</strong></p>
    </title>
    <p>Понятия "время жизни" и "область действия" являются очень важными для понимания структуры программ на языке Си. Время жизни переменной может быть либо "глобальным", либо "локальным". Объект с глобальным временем жизни характеризуется тем, что в течение всего времени выполнения программы с ним ассоциирована ячейка оперативной памяти и значение. Объекту с локальным временем жизни выделяется новая ячейка памяти при каждом входе в блок, в котором он определен или объявлен. Когда выполнение блока завершается, память, выделенная под локальный объект, освобождается и, следовательно, локальный объект теряет значение.</p>
    <p>Блок представляет собой составной оператор. Составные операторы могут содержать объявления и операторы (см. раздел 5.3 "Составной оператор").</p>
    <p>Тело функции представляет собой блок. Блоки в свою очередь могут содержать внутри себя другие, вложенные блоки. Из этого следует, что функции имеют блочную структуру. Однако функции не могут быть вложенными, т.е. определение функции не может содержаться внутри определения другой функции.</p>
    <p>Объявления и определения, записанные внутри какого-либо блока (т. е. на внутреннем уровне), называются внутренними. Объявления и определения, записанные за пределами всех блоков (т. е. на внешнем уровне), называются внешними. Переменные и функции могут быть объявлены как на внешнем уровне, так и на внутреннем. Переменные могут быть также определены на внутреннем уровне, а функции определяются только на внешнем уровне.</p>
    <p>Все функции имеют глобальное время жизни. Переменные, определенные на внешнем уровне, всегда имеют глобальное время жизни. Переменные, определенные на внутреннем уровне, имеют локальное время жизни, однако путем указания для них спецификации класса памяти <strong>static</strong> можно сделать их время жизни глобальным.</p>
    <p>Область действия объекта определяет, в каких участках программы допустимо использование имени этого объекта. Так, объект с глобальным временем жизни существует в течение всего времени выполнения программы, однако он доступен только в тех частях программы, на которые распространяется его область действия. Область действия объекта распространяется на блок или исходный файл, если в этом блоке или исходном файле известны тип и имя объекта. Объект может иметь глобальную или локальную область действия. Глобальная область действия означает, что объект доступен, или может быть через соответствующие объявления сделан доступным в пределах всех исходных файлов, образующих программу. Этот вопрос рассматривается в разделе 3.6 "Классы памяти". Локальная область действия означает, что объект доступен только в том блоке или файле, в котором он объявлен или определен.</p>
    <p>Область действия переменной, объявленной на внешнем уровне, распространяется от точки программы, в которой она объявлена, до конца исходного файла, на все функции и вложенные блоки, за исключением случаев локального переобъявления (см. ниже). Область действия этой переменной можно распространить и на другие исходные файлы путем ее объявления в этих файлах (см. раздел 3.6 "Классы памяти"). Однако область действия переменной, объявленной на внешнем уровне с классом памяти <strong>static</strong>, распространяется только до конца исходного файла, содержащего ее объявление.</p>
    <p>Область действия переменной, объявленной на внутреннем уровне, распространяется от точки программы, в которой она объявлена, до конца блока, содержащего ее объявление. Такая переменная называется локальной.</p>
    <p>Если переменная, объявленная внутри блока, имеет то же самое имя, что и переменная, объявленная на внешнем уровне, то внутреннее объявление переменной заменяет (вытесняет) в пределах блока внешнее объявление. Этот механизм называется локальным переобъявлением переменной. Область действия переменной внешнего уровня восстанавливается при завершении блока.</p>
    <p>Блок, вложенный внутрь другого блока, может в свою очередь содержать локальные переобъявления переменных, объявленных в охватывающем блоке. Локальное переобъявление переменной имеет силу во внутреннем блоке, а действие ее первоначального объявления восстанавливается, когда управление возвращается в охватывающий блок. Область действия переменной из внешнего (охватывающего) блока распространяется на все внутренние (вложенные) блоки, за исключением тех блоков, в которых она локально переобъявляется.</p>
    <p>Область действия типов, созданных программистом, подчиняется тем же правилам, что и область действия переменных.</p>
    <p>Использование функций в языке Си имеет некоторые отличия от использования переменных. Во-первых, как уже говорилось, на внутреннем уровне функция может быть только объявлена, а на внешнем уровне — и объявлена, и определена. Во-вторых, для работы с переменной ее необходимо предварительно явно объявить, а для того, чтобы вызвать функцию, это необязательно. Вызов функции компилятор языка Си рассматривает как неявное объявление функции с типом возвращаемого значения <strong>int</strong> и классом памяти <strong>extern</strong>. Если далее в файле встретится объявление или определение этой функции с другими атрибутами, компилятор сообщит об ошибке.</p>
    <p>Область действия функции, объявленной со спецификацией класса памяти <strong>static</strong>, распространяется на весь исходный файл, в котором она объявлена, т.е. она может быть вызвана из любой точки этого файла, за исключением тех блоков, в которых она локально переобъявляется. Например, в каком-то блоке может быть объявлена функция с тем же именем и классом памяти <strong>extern</strong>, определенная в другом файле.</p>
    <p>Область действия функции, объявленной с классом памяти <strong>extern,</strong> распространяется на все исходные файлы программы, т.е. она может быть вызвана из любой точки любого файла, за исключением блоков, в которых она локально переобъявляется. Например, если в каком-то из файлов на внешнем уровне объявлена функция с тем же именем и классом памяти <strong>static</strong>, то именно она будет вызываться в этом файле.</p>
    <p>Помимо вызова, существует еще одна операция, применимая к функции, — получение ее адреса. Для этой операции функция ничем не отличается от переменной, поэтому функция должна быть предварительно объявлена. Для операции получения адреса область действия функции не зависит от се класса памяти и распространяется от точки объявления функции до конца исходного файла, за исключением случаев локального переобъявления.</p>
    <p>В таблице 2.1 показана взаимосвязь основных факторов, которые определяют время жизни и область действия функций и переменных. При обсуждении области действия переменных мы использовали термин "объявление"; в таблице 2.1 конкретизировано для каждого случая, идет ли речь об объявлении или определении. Область действия функций в таблице 2.1 показана под углом зрения операции получения адреса, а не операции вызова функции. Более подробная информация о влиянии спецификаций класса памяти на область действия объекта приведена в разделе 3.6 "Классы памяти".</p>
    <p>Таблица 2.1.</p>
    <table>
     <tr>
      <td align="left">Уровень</td>
      <td align="left">Объект</td>
      <td align="left">Спецификация класса памяти</td>
      <td align="left">Время жизни</td>
      <td align="left">Область действия</td>
     </tr>
     <tr>
      <td align="left">Внешний</td>
      <td align="left">Определение переменной</td>
      <td align="left">static</td>
      <td align="left">Глобальное</td>
      <td align="left">Остаток исходного файла</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">Объявление переменной</td>
      <td align="left">extern</td>
      <td align="left">Глобальное</td>
      <td align="left">Остаток исходного файла</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">Объявление или определение функции</td>
      <td align="left">static или extern</td>
      <td align="left">Глобальное</td>
      <td align="left">Остаток исходного файла</td>
     </tr>
     <tr>
      <td align="left">Внутренний</td>
      <td align="left">Объявление переменной</td>
      <td align="left">extern</td>
      <td align="left">Глобальное</td>
      <td align="left">Блок</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">Определение переменной</td>
      <td align="left">static</td>
      <td align="left">Глобальное</td>
      <td align="left">Блок</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">Определение переменной</td>
      <td align="left">auto или register</td>
      <td align="left">Локальное</td>
      <td align="left">Блок</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">Объявление функции</td>
      <td align="left">extern или static</td>
      <td align="left">Локальное</td>
      <td align="left">Остаток исходного файла</td>
     </tr>
    </table>
    <empty-line/>
    <p>Следующий пример программы иллюстрирует понятия блочной структуры, времени жизни и области действия переменных.</p>
    <p>/* i определяется на внешнем уровне */</p>
    <p>int i <strong>=</strong> 1;</p>
    <p>/* функция main определяется на внешнем уровне */</p>
    <p>main()</p>
    <p>{</p>
    <p>/* печатается 1 (значение переменной i внешнего уровня) */</p>
    <p>printf("%d\n", i);</p>
    <p>/* первый вложенный блок */</p>
    <p>{</p>
    <p>/* i переопределяется */</p>
    <p>int i = 2, j = 3;</p>
    <p>/* печатается 2, 3 */</p>
    <p>printf("%d\n%d\n", i, j);</p>
    <p>/* второй вложенный блок */</p>
    <p>{</p>
    <p>/* i переопределяется */</p>
    <p>int i <strong>=</strong> 0;</p>
    <p>/* печатается 0, 3 */</p>
    <p>printf("%d\n%d\n, i, j);</p>
    <p>/* конец второго вложенного блока */</p>
    <p>}</p>
    <p>/* печатается 2 (восстановлено определение i в охватывающем блоке) */</p>
    <p>printf("%d\n", i);</p>
    <p>/* конец первого вложенного блока */</p>
    <p>}</p>
    <p>печатается 1 (восстановлено определение внешнего уровня)*/</p>
    <p>printf("%d\n", i);</p>
    <p>/* конец определения функции main */</p>
    <p>}</p>
    <p>В этом примере показано четыре уровня области действия: самый внешний уровень и три уровня, образованных блоками. Функция <strong>printf</strong> определена в библиотеке стандартных функций (см. раздел 12). Функция <strong>main</strong> печатает значения 1, 2, 3, 0,3,2,1.</p>
   </section>
   <section>
    <title>
     <p><strong>Пространства имен</strong></p>
    </title>
    <p>В программе на языке Си имена (идентификаторы) используются для ссылок на различного рода объекты — функции, переменные, формальные параметры и т. п. При соблюдении определенных правил, описанных в данном разделе, допускается использование одного и того же идентификатора для более чем одного программного объекта.</p>
    <p>Чтобы различать идентификаторы объектов различного рода, компилятор языка Си устанавливает так называемые "пространства имен". Во избежание противоречий имена внутри одного пространства должны быть уникальными, однако в различных пространствах могут содержаться идентичные имена. Это означает, что можно использовать один и тот же идентификатор для двух или более различных объектов, если имена объектов принадлежат к различным пространствам. Однозначное разрешение вопроса о том, на какой объект ссылается идентификатор, компилятор языка Си осуществляет по контексту появления данного идентификатора в программе. Ниже перечисляются виды объектов, которые можно именовать в программе на языке Си, и соответствующие им четыре пространства имен.</p>
    <p>Таблица 2.2.</p>
    <table>
     <tr>
      <td align="center">Объекты</td>
      <td align="center">Пространство имен</td>
     </tr>
     <tr>
      <td align="left">Переменные, функции, формальные параметры, элементы списка перечисления, typedef</td>
      <td align="left">Уникальность имен в пределах этого пространства тесно связана с понятием области действия. Это выражается в том, что в данном пространстве могут содержаться совпадающие идентификаторы, если области действия именуемых ими объектов не пересекаются. Другими словами, совпадение идентификаторов возможно только при локальном переобъявлении (см. раздел 2.4). Обратите внимание на то, что имена формальных параметров функции сгруппированы в одном пространстве с именами локальных переменных. Поэтому переобъявление формальных параметров внутри любого из блоков функции недопустимо, typedef — это объявления имен типов (см. раздел 3.8.2).</td>
     </tr>
     <tr>
      <td align="left">Теги</td>
      <td align="left">Теги всех переменных перечислимого типа, структур и объединений (см. разделы 3.4.2 — 3.4.4) сгруппированы в одном пространстве имен. Каждый тег переменной перечислимого типа, структуры или объединения должен быть отличен от других тегов с той же самой областью действия. Ни с какими другими именами имена тегов не конфликтуют.</td>
     </tr>
     <tr>
      <td align="left">Элементы структур и объединений</td>
      <td align="left">Элементы каждой структуры или объединения) образуют свое пространство имен, поэтому имя каждого элемента должно быть уникальным внутри структуры или объединения, но не обязано отличаться от любого другого имени в программе, включая имена элементов других структур и объединений.</td>
     </tr>
     <tr>
      <td align="left">Метки операторов</td>
      <td align="left">Метки операторов образуют отдельное пространство имен. Каждая метка должна быть отлична от всех других меток операторов в той же самой функции. В разных функциях могут быть одинаковые метки.</td>
     </tr>
    </table>
    <empty-line/>
    <p>Пример: struct student</p>
    <p>{</p>
    <p>char student [20]; /*массив из 20 элементов типа char*/</p>
    <p>int class;</p>
    <p>int id;</p>
    <p>} student; /* структура из трех элементов */</p>
    <p>В этом примере имя тега структуры, элемента структуры и самой структуры относится к трем различным пространствам имен, поэтому не возникает противоречия между тремя объектами с одинаковым именем <strong>student</strong>. Компилятор языка Си определит по контексту использования, на какой из объектов ссылается идентификатор в каждом конкретном случае. Например, когда идентификатор <strong>student</strong> появится после ключевого слова <strong>struct</strong><emphasis>,</emphasis> это будет означать, что именуется тег структуры. Когда идентификатор <strong>student</strong> появится после операции выбора элемента (-&gt; или .), то это будет означать, что именуется элемент структуры. В любом другом контексте идентификатор <strong>student</strong> будет рассматриваться как ссылка на переменную структурного типа.</p>
   </section>
  </section>
  <section>
   <title>
    <p><strong>ОБЪЯВЛЕНИЯ</strong></p>
   </title>
   <section>
    <p>В этом разделе описываются формат и составные части объявлений переменных, функций и типов. В разделе 2.1 были введены понятия объявления и определения. Далее по тексту будем для краткости называть и объявления, и определения "объявлениями", если явно не конкретизируется то или иное понятие.</p>
    <p>Объявления в языке Си имеют следующий синтаксис:</p>
    <p><strong>&lt;</strong><emphasis>спецификация КП</emphasis><strong>&gt;</strong></p>
    <p>&lt;<emphasis>спецификация типа</emphasis>&gt;</p>
    <p><strong>&lt;</strong><emphasis>описатель</emphasis><strong>&gt;</strong> [=<strong>&lt;</strong><emphasis>инициализатор</emphasis><strong>&gt;</strong>] [,&lt;<emphasis>описатель</emphasis>&gt; [= &lt;<emphasis>инициализатор</emphasis>&gt;…]];</p>
    <p>где:</p>
    <p>&lt;<emphasis>спецификация КП</emphasis>&gt; — спецификация класса памяти;</p>
    <p>&lt;<emphasis>спецификация типа</emphasis>&gt; — имя типа, присваиваемого объекту;</p>
    <p>&lt;<emphasis>описатель</emphasis>&gt; — идентификатор простой переменной либо более сложная конструкция при объявлении переменной составного типа;</p>
    <p>&lt;<emphasis>инициализатор</emphasis>&gt; — значение или последовательность значений, присваиваемых переменной при объявлении.</p>
    <p>В некоторых случаях спецификация класса памяти и/или спецификация типа может быть опущена.</p>
    <p>Все переменные в языке Си должны быть явно объявлены перед их использованием, за исключением формальных параметров, имеющих тип <strong>int</strong>. Функции могут быть объявлены явно, посредством задания объявления или определения функции, либо неявно, если их вызов следует до определения или объявления.</p>
    <p>Спецификация класса памяти влияет на то, в какой области памяти хранится объявляемый объект, производится ли его неявная инициализация и на какие участки программы распространяется его область действия. Местоположение объявления в программе, а также наличие или отсутствие других объявлений этой же переменной также существенны при определении ее области действия. Классы памяти описаны в разделе 3.6.</p>
    <p>В языке Си определен набор базовых типов данных. Новые типы данных можно добавлять к этому набору посредством их объявления на основе уже определенных типов данных. Спецификация типа позволяет задавать для объекта либо базовый тип данных (см. раздел 3.1), либо структурный тип (см. раздел 3.4.3), либо тип объединение (см. раздел 3.4.4).</p>
    <p>Не считается ошибкой объявление внешнего уровня, в котором отсутствует и спецификация класса памяти, и спецификация типа. В этом случае предполагается тип <strong>int</strong>. Однако объявление, состоящее только из идентификатора, например</p>
    <p><strong>n;</strong></p>
    <p>недопустимо, т.е. простая переменная не может быть объявлена подобным образом; может быть объявлен указатель, массив или функция.</p>
    <p>Объявление должно содержать один или более описателей. В простейшем случае, когда объявляется простая переменная, тип которой задан &lt;<emphasis>спецификацией типа&gt;,</emphasis> описатель представляет собой идентификатор. Для объявления массива значений специфицированного типа (см. раздел 3.4.5), либо функции, возвращающей значение специфицированного типа (см. раздел 3.5), либо указателя на значение специфицированного типа (см. раздел 3.4.6), идентификатор дополняется, соответственно, квадратными скобками, круглыми скобками или звездочкой. В одном объявлении может быть задано несколько описателей различных объектов, имеющих одинаковый класс памяти и тип.</p>
    <p>Определения функций описаны в разделе 6.2, инициализаторы — в разделе 3.7.</p>
   </section>
   <section>
    <title>
     <p><strong>Базовые типы данных</strong></p>
    </title>
    <p>В языке Си реализован набор типов данных, называемых "базовыми" типами. Спецификации этих типов перечислены в таблице 3.1.</p>
    <p>Таблица 3.1.</p>
    <table>
     <tr>
      <td align="center">Базовые типы</td>
      <td align="center">Спецификация типов</td>
     </tr>
     <tr>
      <td align="left">Целые</td>
      <td align="left">signed char</td>
      <td align="left">знаковый символьный</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">signed int</td>
      <td align="left">знаковый целый</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">signed short int</td>
      <td align="left">знаковый короткий целый</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">signed long int</td>
      <td align="left">знаковый длинный целый</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">unsigned char</td>
      <td align="left">беззнаковый символьный</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">unsigned int</td>
      <td align="left">беззнаковый целый</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">unsigned short int</td>
      <td align="left">беззнаковый короткий целый</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">unsigned long int</td>
      <td align="left">беззнаковый длинный целый</td>
     </tr>
     <tr>
      <td align="left">Плавающие</td>
      <td align="left">float</td>
      <td align="left">плавающий одинарной точности</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">double</td>
      <td align="left">плавающий двойной точности</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">long float</td>
      <td align="left">длинный плавающий одинарной точности</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">long double</td>
      <td align="left">длинный плавающий двойной точности</td>
     </tr>
     <tr>
      <td align="left">Прочие</td>
      <td align="left">void</td>
      <td align="left">пустой</td>
     </tr>
     <tr>
      <td> </td>
      <td align="left">enum</td>
      <td align="left">перечислимый</td>
     </tr>
    </table>
    <empty-line/>
    <p>Тип <strong>long float</strong> реализован только в версии 4.0 СП MSC и эквивалентен типу <strong>double</strong>. В версии 5.0 СП MSC и в СП ТС реализован тип <strong>long double</strong>, причем в версии 5.0 СП MSC и версии 1.5 СП ТС он эквивалентен типу <strong>double</strong>, а в версии 2.0 СП ТС является самостоятельным типом размером 80 битов.</p>
    <p>Типы <strong>char</strong>, <strong>int</strong>, <strong>short</strong> и <strong>long</strong> имеют две формы — знаковую (<strong>signed</strong>) и беззнаковую (<strong>unsigned</strong>). В совокупности они образуют целый тип. Перечислимый тип также служит для представления целых значений, однако, переменная перечислимого типа может принимать значения только из набора, заданного в ее объявлении. Спецификации типов <strong>float</strong> и <strong>double</strong> относятся к плавающему типу.</p>
    <p>Целый тип (включая перечислимый тип) и плавающий тип в совокупности образуют арифметический тип.</p>
    <p>Тип <strong>void</strong> (пустой) имеет специальное назначение. Указание спецификации типа <strong>void</strong> в объявлении функции означает, что функция не возвращает значений. Указание типа <strong>void</strong> в списке объявлений аргументов в объявлении функции означает, что функция не принимает аргументов. Можно объявить указатель на тип <strong>void</strong>; он будет указывать на любой, т.е. неспецифицированный тип. Тип <strong>void</strong> может быть указан в операции приведения типа. Приведение значения выражения к типу <strong>void</strong> явно указывает на то, что это значение не используется. Нельзя объявить переменную типа <strong>void</strong>.</p>
    <p>При записи спецификаций целого и плавающего типа допустимы сокращения, приведенные в таблице 3.2. Например, в целых типах ключевое слово <strong>signed</strong> может быть опущено. Если ключевое слово <strong>unsigned</strong> отсутствует в записи спецификации типа <strong>short</strong>, <strong>int</strong> или <strong>long</strong>, то тип целого будет знаковым, даже если опущено ключевое слово <strong>signed</strong>.</p>
    <p>По умолчанию тип <strong>char</strong> всегда имеет знак. Однако существует опция компилятора языка Си, позволяющая изменить умолчание для <strong>char</strong> со знакового типа на беззнаковый. Если эта опция задана, то сокращение <strong>char</strong> имеет тот же смысл, что и <strong>unsigned char</strong>, и, следовательно, для объявления символьной переменной со знаком должно быть записано ключевое слово <strong>signed</strong>.</p>
    <p>Таблица 3.2.</p>
    <subtitle>Спецификации типов и их сокращения</subtitle>
    <table>
     <tr>
      <td align="center">Спецификация типа</td>
      <td align="center">Сокращение</td>
     </tr>
     <tr>
      <td align="left">signed char</td>
      <td align="left">char</td>
     </tr>
     <tr>
      <td align="left">signed int</td>
      <td align="left">signed, int</td>
     </tr>
     <tr>
      <td align="left">signed short int</td>
      <td align="left">short, signed short</td>
     </tr>
     <tr>
      <td align="left">signed long int</td>
      <td align="left">long, signed long</td>
     </tr>
     <tr>
      <td align="left">unsigned char</td>
      <td align="left">-</td>
     </tr>
     <tr>
      <td align="left">unsigned int</td>
      <td align="left">unsigned</td>
     </tr>
     <tr>
      <td align="left">unsigned short int</td>
      <td align="left">unsigned short</td>
     </tr>
     <tr>
      <td align="left">unsigned long int</td>
      <td align="left">unsigned long</td>
     </tr>
     <tr>
      <td align="left">float</td>
      <td align="left">-</td>
     </tr>
     <tr>
      <td align="left">long float</td>
      <td align="left">double</td>
     </tr>
     <tr>
      <td align="left">long double</td>
      <td align="left">double (СП MSC 5.0, СП TC 1.5)</td>
     </tr>
     <tr>
      <td align="left">long double</td>
      <td align="left">—(СП TC 2.0)</td>
     </tr>
    </table>
    <empty-line/>
    <p>Примечание. В данной книге в основном используются сокращенные формы записи спецификаций типов, перечисленные в таблице 3.2; при этом предполагается, что тип <strong>char</strong> по умолчанию имеет знак.</p>
   </section>
   <section>
    <title>
     <p><strong>Области значений</strong></p>
    </title>
    <p>Область значений — это интервал от минимального до максимального значения, которое может быть представлено в переменной данного типа. В таблице 3.3 приведен размер занимаемой памяти и области значений переменных для каждого типа. Поскольку переменных типа <strong>void</strong> не существует, он не включен в эту таблицу.</p>
    <p>Таблица 3.3.</p>
    <subtitle><strong>Размер памяти и область значений типов</strong></subtitle>
    <table>
     <tr>
      <td align="center">Тип</td>
      <td align="center">Представление в памяти</td>
      <td align="center">Область значений</td>
     </tr>
     <tr>
      <td align="left">char</td>
      <td align="left">1 байт</td>
      <td align="left">от -128 до 127</td>
     </tr>
     <tr>
      <td align="left">int</td>
      <td align="left">зависит от реализации</td>
      <td> </td>
     </tr>
     <tr>
      <td align="left">short</td>
      <td align="left">2 байта</td>
      <td align="left">от -32768 до 32767</td>
     </tr>
     <tr>
      <td align="left">long</td>
      <td align="left">4 байта</td>
      <td align="left">от -2.147.483.648 до 2.147.483.647</td>
     </tr>
     <tr>
      <td align="left">unsigned char</td>
      <td align="left">1 байт</td>
      <td align="left">от 0 до 255</td>
     </tr>
     <tr>
      <td align="left">unsigned</td>
      <td align="left">зависит от реализации</td>
      <td> </td>
     </tr>
     <tr>
      <td align="left">unsigned short</td>
      <td align="left">2 байта</td>
      <td align="left">от 0 до 65535</td>
     </tr>
     <tr>
      <td align="left">unsigned long</td>
      <td align="left">4 байта</td>
      <td align="left">от 0 до 4.294.967.295</td>
     </tr>
     <tr>
      <td align="left">float</td>
      <td align="left">4 байта</td>
      <td align="left">стандартный формат IEEE</td>
     </tr>
     <tr>
      <td align="left">double</td>
      <td align="left">8 байтов</td>
      <td align="left">стандартный формат IEEE</td>
     </tr>
     <tr>
      <td align="left">long double</td>
      <td align="left">10 байтов</td>
      <td align="left">стандартный формат IEEE</td>
     </tr>
    </table>
    <empty-line/>
    <p>Тип <strong>char</strong> может использоваться для хранения буквы, цифры или другого символа из множества представимых символов. Значением объекта типа <strong>char</strong> является код, соответствующий данному символу. Тип <strong>char</strong> интерпретируется как однобайтовое целое с областью значений от -128 до 127. Тип <strong>unsigned char</strong> может содержать значения в интервале от 0 до 255. В частности, буквы русского алфавита имеют коды, соответствующие типу <strong>unsigned char</strong>.</p>
    <p>Следует отметить, что представление в памяти и область значений для типов <strong>int</strong> и <strong>unsigned int</strong> не определены в языке Си. В большинстве систем программирования размер типа <strong>int</strong> (со знаком или без знака) соответствует реальному размеру целого машинного слова. Например, на 16-разрядном компьютере тип <strong>int</strong> занимает 16 разрядов, или 2 байта. На 32-разрядном компьютере тип <strong>int</strong> занимает 32 разряда, или 4 байта. Таким образом, тип <strong>int</strong> эквивалентен либо типу <strong>short int</strong> (короткое целое), либо типу <strong>long int</strong> (длинное целое), в зависимости от компьютера. Аналогично, тип <strong>unsigned int</strong> эквивалентен либо типу <strong>unsigned short int</strong>, либо типу <strong>unsigned long int</strong>. Однако рассматриваемые в данной книге компиляторы языка Си, разработанные для моделей IBM PC с 16-разрядным машинным словом, при работе на IBM PC/AT с процессором Intel 80386 (имеющим 32-разрядное машинное слово) отводят для типа <strong>int</strong> и <strong>unsigned int</strong> только 16 разрядов.</p>
    <p>Спецификации типов <strong>int</strong> и <strong>unsigned int</strong> широко используются в программах на Си, поскольку они позволяют наиболее эффективно работать с целыми значениями на данном компьютере. Однако, поскольку размер типов <strong>int</strong> и <strong>unsigned int</strong> является машинно-зависимым, программы, зависящие от конкретного размера типа <strong>int</strong> или <strong>unsigned int</strong> на каком-либо компьютере, могут быть непереносимы на другой компьютер. Переносимость программ можно повысить, если использовать для ссылки на размер типа данных операцию <strong>sizeof</strong>.</p>
    <p>Порядок размещения байтов в памяти для базовых целых типов следующий (по возрастанию адресов):</p>
    <p>для типа <strong>short</strong> — b0, b1;</p>
    <p>для типа <strong>long</strong> — b0, b1, b2, b3,</p>
    <p>где b0—младший байт.</p>
    <p>Архитектура процессора Intel 8086/88 позволяет размещать переменные различного размера в памяти, как с четного, так и с нечетного адреса. Однако в последнем случае обращение к переменным будет более медленным. В СП TC существует опция компиляции, задающая выравнивание всех объектов, занимающих более одного байта, на границу четного адреса. Память при этом будет использоваться менее эффективно, но скорость обращения к переменным возрастет. В СП MSC по умолчанию производится выравнивание на границу четного адреса. В версии 5.0 СП MSC существует опция компиляции, обеспечивающая выравнивание на границу, заданную программистом. Вопросы выравнивания структур рассматриваются в разделе 3.4.3.</p>
    <p>Согласно правилам преобразования типов в языке Си (см. раздел 5 "Выражения"), не всегда возможно использовать в выражении максимальное или минимальное значение для константы данного типа.</p>
    <p>Допустим, требуется использовать в выражении значение -32768 типа <strong>short</strong>. Константное выражение -32768 состоит из арифметической операции отрицания (-), предшествующей значению константы 32768. Поскольку значение 32768 слишком велико для типа <strong>short</strong>, компилятор языка Си представляет его типом <strong>long</strong> и, следовательно, константа -32768 будет иметь тип <strong>long</strong>. Значение -32768 может быть представлено типом <strong>short</strong> только путем явного приведения его к типу <strong>short</strong> с помощью выражения (<strong>short</strong>) (‑32768). Информация при этом не будет потеряна, поскольку значение -32768 может быть представлено двумя байтами памяти.</p>
    <p>Восьмеричные и шестнадцатеричные константы могут иметь знаковый или беззнаковый тип, в зависимости от их значения (см. раздел 1.2.1). Однако метод присвоения компилятором языка Си типов восьмеричным и шестнадцатеричным константам гарантирует, что в выражениях они будут вести себя как беззнаковые целые (поскольку их знаковый бит всегда равен нулю).</p>
    <p>СП ТС позволяет явно присваивать константам беззнаковый тип с помощью суффикса <strong>u</strong>.</p>
    <p>Для представления значений с плавающей точкой используется стандартный формат IEEE (Institute of Electrical and Electronics Engineers, Inc.). Значения типа <strong>float</strong> занимают 4 байта, состоящих из бита знака, 7-битовой двоичной экспоненты и 24-битовой мантиссы. Мантисса представляет число в интервале от 1.0 до 2.0. Поскольку старший бит мантиссы всегда равен единице, он не хранится в памяти. Это представление дает область значений приблизительно от 3.4Е-38 до 3.4Е+38.</p>
    <p>Значения типа <strong>double</strong> занимают 8 байтов. Их формат аналогичен формату <strong>float</strong>, за исключением того, что экспонента занимает 11 битов, а мантисса 52 бита плюс неявный старший бит, единичный. Это дает область значений приблизительно от 1.7Е-308 до 1.7Е+308.</p>
    <p>Значения типа <strong>long double</strong> занимают 80 битов; их область значений—от 3.4Е-4932 до 1.1Е+4932. Формат их аналогичен формату <strong>double</strong>, однако, мантисса длиннее на 16 битов.</p>
   </section>
   <section>
    <title>
     <p><strong>Описатели</strong></p>
    </title>
    <section>
     <title>
      <p><strong>Синтаксис описателей</strong></p>
     </title>
     <p>Синтаксис описателей рекурсивными правилами:</p>
     <p><strong>&lt;</strong><emphasis>идентификатор</emphasis><strong>&gt;</strong></p>
     <p><strong>&lt;</strong><emphasis>описатель</emphasis><strong>&gt;</strong> []</p>
     <p>&lt;<emphasis>описатель</emphasis>&gt; [&lt;<emphasis>константное-выражение</emphasis>&gt;]</p>
     <p>*<strong>&lt;</strong><emphasis>описатель</emphasis><strong>&gt;</strong></p>
     <p><strong>&lt;</strong><emphasis>описатель</emphasis><strong>&gt;</strong>()</p>
     <p><strong>&lt;</strong><emphasis>описатель</emphasis><strong>&gt;</strong>(<strong>&lt;</strong><emphasis>список типов аргументов</emphasis><strong>&gt;</strong>)</p>
     <p>(<strong>&lt;</strong><emphasis>описатель</emphasis><strong>&gt;</strong>)</p>
     <p>Описатели в языке Си позволяют объявить следующие объекты: простые переменные, массивы, указатели и функции. В простейшем случае, если объявляется простая переменная базового типа, либо структура, либо объединение, описатель представляет собой идентификатор. При этом объекту присваивается тип, заданный спецификацией типа.</p>
     <p>Для объявления массива значений специфицированного типа, либо функции, возвращающей значение специфицированного типа, либо указателя на значение специфицированного типа, идентификатор дополняется, соответственно, квадратными скобками (справа), круглыми скобками (справа) или звездочкой (слева). В дальнейшем будем называть квадратные скобки, круглые скобки и звездочку признаками типа массив, функция и указатель, соответственно.</p>
     <p>Следующие примеры иллюстрируют простейшие формы описателей:</p>
     <p>int list(20] —массив <strong>list</strong> значений целого типа;</p>
     <p>char *ср -указатель <strong>ср</strong> на значение типа <strong>char</strong>;</p>
     <p>double func() —функция <strong>func</strong>, возвращающая значение типа <strong>double</strong>.</p>
    </section>
    <section>
     <title>
      <p><strong>Интерпретация составных описателей</strong></p>
     </title>
     <p>Составной описатель — это идентификатор, дополненный более чем одним признаком типа массив, указатель или функция.</p>
     <p>С одним идентификатором можно образовать множество различных комбинаций признаков типа массив, указатель или функция. Некоторые комбинации недопустимы. Например, массив не может содержать в качестве элементов функции, а функция не может возвращать массив или функцию.</p>
     <p>При интерпретации составных описателей сначала рассматриваются квадратные скобки и круглые скобки, расположенные справа от идентификатора. Квадратные и круглые скобки имеют одинаковый приоритет. Они интерпретируются слева направо. После них справа налево рассматриваются звездочки, расположенные слева от идентификатора. Спецификация типа рассматривается на последнем шаге после того, как описатель уже полностью проинтерпретирован.</p>
     <p>Для изменения действующего по умолчанию порядка интерпретации описателя можно использовать внутри него круглые скобки.</p>
     <p>Правило интерпретации составных описателей может быть названо чтением "изнутри — наружу". Начать интерпретацию нужно с идентификатора и проверить, есть ли справа от нега открывающие квадратные или круглые скобки. Если они есть, то проинтерпретировать правую часть описателя. Затем следует проверить, есть ли слева от идентификатора звездочки, и, если они есть, проинтерпретировать левую часть. Если на какой-либо стадии интерпретации справа встретится закрывающая круглая скобка (которая используется для изменения порядка интерпретации описателя), то необходимо сначала полностью провести интерпретацию внутри данной пары круглых скобок, а затем продолжить интерпретацию справа от закрывающей круглой скобки.</p>
     <p>На последнем шаге интерпретируется спецификация типа. После этого тип объявленного объекта полностью известен.</p>
     <p>Следующий пример иллюстрирует применение правила интерпретации составных описателей. Последовательность шагов интерпретации пронумерована.</p>
     <p>char*(*(*var)())[10].</p>
     <p>7 6 4 2 1 3 5</p>
     <p>1. Идентификатор var объявлен как</p>
     <p>2. Указатель на</p>
     <p>3. Функцию, возвращающую</p>
     <p>4. Указатель на</p>
     <p>5. Массив из 10 элементов, которые являются</p>
     <p>6. Указателями на</p>
     <p>7. Значения типа char.</p>
     <p>В приведенных ниже примерах обратите внимание на то, как применение круглых скобок может изменять смысл объявлений.</p>
     <p>1. int *var[5]; — массив <strong>var</strong> указателей на значения типа <strong>int</strong>.</p>
     <p>2. int (*var)[5]; — указатель <strong>var</strong> на массив значений типа <strong>int</strong>.</p>
     <p>3. long *var(); — функция <strong>var</strong>, возвращающая указатель на значение типа <strong>long</strong>.</p>
     <p>4. long (*var)(); — указатель <strong>var</strong> на функцию, возвращающую значение типа <strong>long</strong>.</p>
     <p>5. struct both {</p>
     <p>int a;</p>
     <p>char b;</p>
     <p>}(*var[5])(); - массив <strong>var</strong> указателей на функции, возвращающие структуры типа <strong>both</strong>.</p>
     <p>6. double (*var())[3]; — функция <strong>var</strong>, возвращающая указатель на массив из трех значений типа <strong>double</strong>.</p>
     <p>7. union sign {</p>
     <p>int x;</p>
     <p>unsigned y;</p>
     <p>} **var[5][5]; — массив <strong>var</strong>, элементы которого являются массивами указателей на указатели на объединения типа <strong>sign</strong>.</p>
     <p>8. union sign *(*var[5])[5]; — массив <strong>var</strong>, элементы которого являются указателями на массив указателей на объединения типа <strong>sign</strong>.</p>
     <p>Пояснения к примерам:</p>
     <p>В первом примере <strong>var</strong> объявляется как массив, поскольку признак типа массив имеет более высокий приоритет, чем признак типа указатель. Элементами массива являются указатели на значения типа <strong>int</strong>.</p>
     <p>Во втором примере скобки меняют смысл объявления из первого примера. Теперь признак типа указатель применяется раньше, чем признак типа массив, и переменная <strong>var</strong> объявляется как указатель на массив из пяти значений типа <strong>int</strong>.</p>
     <p>В третьем примере, поскольку признак типа функция имеет более высокий приоритет, чем признак типа указатель, <strong>var</strong> объявляется как функция, возвращающая указатель на значение типа <strong>long</strong>.</p>
     <p>Четвертый пример аналогичен второму. С помощью скобок обеспечивается применение признака типа указатель прежде, чем признака типа функция, поэтому переменная <strong>var</strong> объявляется как указатель на функцию, возвращающую значение типа <strong>long</strong>.</p>
     <p>Элементы массива не могут быть функциями. Однако в пятом примере показано, как объявить массив указателей на функции. В этом примере переменная <strong>var</strong> объявлена как массив из пяти указателей на функции, возвращающие структуры типа <strong>both</strong>. Заметьте, что круглые скобки, в которые заключено выражение <strong>var[5]</strong><emphasis>,</emphasis> обязательны. Без них объявление становится недопустимым, поскольку объявляется массив функций:</p>
     <p>struct both *var[5] (struct both, struct both);</p>
     <p>В шестом примере показано, как объявить функцию, возвращающую указатель на массив. Здесь объявлена функция <strong>var</strong>, возвращающая указатель на массив из трех значений типа <strong>double</strong>. Тип аргумента функции задан составным абстрактным описателем (см. раздел 3.8.3), также специфицирующим указатель на массив из трех значений типа <strong>double</strong>, В отсутствие круглых скобок, заключающих звездочку, типом аргумента был бы массив из трех указателей на значения типа <strong>double</strong>.</p>
     <p>В седьмом примере показано, что указатель может указывать на другой указатель, а массив может содержать массивы. Здесь <strong>var</strong> является массивом из пяти элементов. Каждый элемент, в свою очередь, также является массивом из пяти элементов, каждый из которых является указателем на указатель на объединение типа <strong>sign</strong>. Массив массивов является аналогом двумерного массива в других языках программирования.</p>
     <p>В восьмом примере показано, как круглые скобки изменили смысл объявления из седьмого примера. В этом примере <strong>var</strong> является массивом из пяти указателей на массив из пяти указателей на объединения типа <strong>sign</strong>.</p>
    </section>
    <section>
     <title>
      <p><strong>Описатели с модификаторами</strong></p>
     </title>
     <section>
      <p>В разделе 1.4 "Ключевые слова" приведен перечень специальных ключевых слов, реализованных в СП MSC и СП ТС. Использование специальных ключевых слов (называемых в дальнейшем модификаторами) в составе описателей позволяет придавать объявлениям специальный смысл. Информация, которую несут модификаторы, используется компилятором языка Си в процессе генерации кода.</p>
      <p>Рассмотрим правила интерпретации объявлений, содержащих модификаторы <strong>const</strong>, <strong>volatile</strong>, <strong>cdecl</strong>, <strong>pascal</strong>, <strong>near</strong>, <strong>far</strong>, <strong>huge</strong>, <strong>interrupt</strong>.</p>
     </section>
     <section>
      <title>
       <p><strong>Интерпретация описателей с модификаторами</strong></p>
      </title>
      <p>Модификаторы <strong>cdecl</strong>, <strong>pascal</strong>, <strong>interrupt</strong> воздействуют на идентификатор и должны быть записаны непосредственно перед ним.</p>
      <p>Модификаторы <strong>const</strong>, <strong>volatile</strong>, <strong>near</strong>, <strong>far</strong>, <strong>huge</strong> воздействуют либо на идентификатор, либо на звездочку, расположенную непосредственно справа от модификатора. Если справа расположен идентификатор, то модифицируется тип объекта, именуемого этим идентификатором. Если же справа расположена звездочка, то модифицируется тип объекта, на который указывает эта звездочка, т.е. эта звездочка представляет собой указатель на модифицированный тип. Таким образом, конструкция &lt;<emphasis>модификатор</emphasis>&gt;* читается как "указатель на модифицированный тип". Например,</p>
      <p><strong>int const *р</strong>; - это указатель на <strong>const int</strong>, а</p>
      <p><strong>int * const р</strong>; - это <strong>const</strong> указатель на <strong>int</strong>. Модификаторы <strong>const</strong> и <strong>volatile</strong> могут также записываться и перед спецификацией типа.</p>
      <p>В СП ТС использование модификаторов <strong>near</strong>, <strong>far</strong>, <strong>huge</strong> ограничено: они могут быть записаны только перед идентификатором функции или перед признаком указателя (звездочкой).</p>
      <p>Допускается более одного модификатора для одного объекта (или элемента описателя). В следующем примере тип функции <strong>func</strong> модифицируется одновременно специальными ключевыми словами <strong>far</strong> и <strong>pascal</strong>. Порядок специальных ключевых слов не важен, т. е. комбинации <strong>far pascal</strong> и <strong>pascal far</strong> имеют один и тот же смысл.</p>
      <p>int far * pascal far func();</p>
      <p>Тип значения, возвращаемого функцией <strong>func</strong>, представляет собой указатель на значения типа <strong>int</strong>. Тип этих значений модифицирован специальным ключевым словом <strong>far</strong>.</p>
      <p>Как обычно, в объявлении могут быть использованы круглые скобки для изменения порядка его интерпретации.</p>
      <p>Пример:</p>
      <p>char far *(far *getint)(int far *);</p>
      <p>7 6 2 1 3 5 4</p>
      <p>В примере показано объявление с различными вариантами расположения модификатора <strong>far</strong>. Учитывая правило, согласно которому модификатор воздействует на элемент описателя, расположенный справа от него, можно проинтерпретировать это объявление следующим образом (шаги интерпретации пронумерованы):</p>
      <p>1. Идентификатор getint объявляется как</p>
      <p>2. Указатель на far</p>
      <p>3. Функцию, требующую</p>
      <p>4. Один аргумент, который является указателем на far</p>
      <p>5. Значение типа int</p>
      <p>6. И возвращающую указатель на far</p>
      <p>7. Значение типа char</p>
     </section>
     <section>
      <title>
       <p><strong>Модификаторы const и volatile</strong></p>
      </title>
      <p>Модификатор <strong>const</strong> не допускает явного присваивания значения переменной либо других косвенных действий по изменению ее значения, таких как выполнение операций инкремента и декремента. Значение указателя, объявленного с модификатором <strong>const</strong>, не может быть изменено, в отличие от значения объекта, на который он указывает. В СП MSC, в отличие от СП ТС, недопустима также инициализация <strong>const</strong> объектов, имеющих класс памяти <strong>auto</strong> (поскольку их инициализация должна выполняться каждый раз при входе в блок, содержащий их объявления).</p>
      <p>Применение модификатора <strong>const</strong> помогает выявить нежелательные присваивания значений переменным. Переменные, объявленные с модификатором <strong>const</strong>, могут быть загружены в ячейки постоянной памяти (ПЗУ).</p>
      <p>Модификатор <strong>volatile</strong> противоположен по смыслу модификатору <strong>const</strong>. Он указывает на то, что значение переменной может быть изменено; но не только непосредственно программой, а также и внешним воздействием, например программой обработки прерываний, либо, если переменная соответствует порту ввода/вывода, обменом с внешним устройством. Объявление объекта с модификатором <strong>volatile</strong> предупреждает компилятор языка Си, что не следует делать предположений относительно стабильности значения объекта в момент вычисления содержащего его выражения, т. к. значение может (теоретически) измениться в любой момент. Для выражений, содержащих объекты типа <strong>volatile</strong>, компилятор языка Си не будет применять методы оптимизации, а сами объекты не будет загружать в машинные регистры.</p>
      <p>Возможно одновременное использование в объявлении модификаторов <strong>const</strong> и <strong>volatile</strong>. Это означает, что значение объявляемой переменной не может модифицироваться программой, но подвержено внешним воздействиям.</p>
      <p>Если с модификатором <strong>const</strong> или <strong>volatile</strong> объявляется переменная составного типа, то действие модификатора распространяется на все ее составляющие элементы. Возможно применение модификаторов <strong>const</strong> и <strong>volatile</strong> в составе объявления <strong>typedef</strong>.</p>
      <p><emphasis>Примечание.</emphasis> При отсутствии в объявлении спецификации типа и наличии модификатора <strong>const</strong> или <strong>volatile</strong> подразумевается спецификация типа <strong>int</strong>.</p>
      <p>Примеры:</p>
      <p>float const pi = 3.1415926;</p>
      <p>const maxint = 32767;</p>
      <p>/* указатель с неизменяемым значением*/</p>
      <p>char *const str = "Здравствуй, мир!";</p>
      <p>/* указатель на неизменяемую строку */</p>
      <p>char const *str2 = "Здравствуй, мир!";</p>
      <p>С учетом приведенных объявлений следующие операторы недопустимы:</p>
      <p>pi = 3.0;/* Присвоение значения константе */</p>
      <p>i = maxini--; /* Уменьшение константы */</p>
      <p>str = "Привет!"; /* Переназначение указателя */</p>
      <p>Однако вызов функции <emphasis>strcpy</emphasis>(str,"Привет!") допустим, т. к. в данном случае осуществляется посимвольное копирование строки "Привет!" в область памяти, на которую указывает str. Поскольку компилятор "не знает", что делает функция <emphasis>strcpy,</emphasis> он не считает эту ситуацию недопустимой.</p>
      <p>Аналогично, если указатель на тип <strong>const</strong> присвоить указателю на тип, отличный от <strong>const</strong>, то через полученный указатель можно присвоить значение. Если же с помощью операции приведения типа преобразовать указатель на <strong>const</strong> к указателю на тип, отличный от <strong>const</strong>, то СП MSC, в отличие от СП ТС, не позволит выполнить присваивание через преобразованный указатель.</p>
      <p>Пример:</p>
      <p>volatile int ticks;</p>
      <p>void interrupt timer()</p>
      <p>{</p>
      <p>ticks ++;</p>
      <p>}</p>
      <p>wait(int interval)</p>
      <p>{</p>
      <p>ticks = 0;</p>
      <p>while ( ticks <strong>&lt;</strong> interval );</p>
      <p>}</p>
      <p>Функция <strong>wait</strong> будет "ждать" в течение времени, заданного параметром <strong>interval</strong> при условии, что функция <strong>timer</strong> корректно связана с аппаратным прерыванием от таймера. Значение переменной <strong>ticks</strong> изменяется в функции <strong>timer</strong> каждый раз при наступлении прерывания от таймера. Модификатор <strong>interrupt</strong> описан в разделе 3.3.3.5.</p>
      <p>Если бы переменная <strong>ticks</strong> была объявлена без модификатора <strong>volatile</strong>, то компилятор языка Си с высоким уровнем оптимизации вынес бы за пределы цикла <strong>while</strong> сравнение переменных <strong>ticks</strong> и <strong>interval</strong>, поскольку в теле цикла их значения не изменяются. Это привело бы к зацикливанию программы.</p>
     </section>
     <section>
      <title>
       <p><strong>Модификаторы cdecl и pascal</strong></p>
      </title>
      <p>Рассматриваемые системы программирования в языке Си позволяют обращаться из программы на языке Си к программам, написанным на других языках, и обратно. При смешивании языков программирования приходится иметь дело с двумя важными проблемами: написанием внешних имен и передачей параметров.</p>
      <p>Результатом работы компилятора языка Си является файл, содержащий объектный код программы. Файлы с объектным кодом, полученные при компиляции всех исходных файлов, составляющих программу, компоновщик объединяет в один выполнимый файл. При этом производится так называемое разрешение ссылок на глобальные объекты из разных исходных файлов программы.</p>
      <p>При компиляции все глобальные идентификаторы программы, т. е. имена функций и глобальных переменных, сохраняются в объектном коде и используются компоновщиком в процессе работы. По умолчанию эти идентификаторы сохраняются в своем первоначальном виде (т. е. набранные прописными, строчными буквами либо и теми, и другими). Кроме того, в качестве первого символа каждого идентификатора компилятор языка Си добавляет символ подчеркивания.</p>
      <p>Компоновщик по умолчанию различает прописные и строчные буквы, поэтому идентификаторы, используемые в различных исходных файлах программы для именования одного и того же объекта, должны полностью совпадать с точки зрения, как орфографии, так и регистров клавиатуры. Для обеспечения совпадения идентификаторов, используемых в разноязычных исходных файлах, применяются модификаторы <strong>pascal</strong> и <strong>cdecl</strong>.</p>
      <subtitle><strong>Модификатор pascal</strong></subtitle>
      <p>Применение модификатора <strong>pascal</strong> к идентификатору приводит к тому, что идентификатор преобразуется к верхнему регистру и к нему не добавляется символ подчеркивания. Этот идентификатор может использоваться для именования в программе на языке Си глобального объекта, который используется также в программе на языке Паскаль. В объектном коде, сгенерированном компилятором языка Си, и в объектном коде, сгенерированном компилятором языка Паскаль, идентификатор будет представлен идентично.</p>
      <p>Если модификатор <strong>pascal</strong> применяется к идентификатору функции, то он оказывает влияние также и на передачу аргументов. Засылка аргументов в стек производится в этом случае не в обратном порядке, как принято в компиляторах языка Си в СП MSC и СП ТС, а в прямом—первым засылается в стек первый аргумент.</p>
      <p>Функции типа <strong>pascal</strong> не могут иметь переменное число аргументов, как, например, функция <strong>printf</strong>. Поэтому нельзя использовать завершающее многоточие в списке параметров функции типа <strong>pascal</strong>.</p>
      <p><emphasis>Пример:</emphasis> см. пример 4 в разделе 3.3.3.4.</p>
      <subtitle><strong>Модификатор</strong> cdecl</subtitle>
      <p>Существует опция компиляции, которая присваивает всем функциям и указателям на функции тип <strong>pascal</strong>. Это значит, что они будут использовать вызывающую последовательность, принятую в языке Паскаль, а их идентификаторы будут приемлемы для вызова из программы на Паскале. При этом можно указать, что некоторые функции и указатели на функции используют вызывающую последовательность, принятую в языке Си, а их идентификаторы имеют традиционный вид для идентификаторов языка Си. Для этого их объявления должны содержать модификатор <strong>cdecl</strong>.</p>
      <p><emphasis>Примечание.</emphasis> Все функции в стандартных включаемых файлах (например, stdio.h) объявлены с модификатором <strong>cdecl</strong>. Это позволяет использовать библиотеки стандартных функций даже в тех программах, которые компилируются с упомянутой выше опцией компиляции.</p>
      <p><emphasis>Примечание.</emphasis> Главная функция программы (<strong>main</strong>) должна быть всегда объявлена с модификатором <strong>cdecl</strong>, поскольку модуль поддержки выполнения передает ей управление, используя вызывающую последовательность языка Си.</p>
      <p><emphasis>Пример: см.</emphasis> пример 3 в разделе 3.3.3.4.</p>
     </section>
     <section>
      <title>
       <p><strong>Модификаторы near, far, huge</strong></p>
      </title>
      <p>Эти модификаторы оказывают воздействие на работу с адресами объектов.</p>
      <p>Компилятор языка Си позволяет использовать при компиляции одну из нескольких моделей памяти. Виды моделей памяти и методы их применения рассмотрены в разделе 8 "Модели памяти".</p>
      <p>Модель, которую вы используете, определяет размещение в оперативной памяти вашей программы и данных, а также внутренний формат указателей. Однако при использовании какой-либо модели памяти можно объявить указатель с форматом, отличным от действующего по умолчанию. Это делается с помощью модификаторов <strong>near</strong>, <strong>far</strong> и <strong>huge</strong>.</p>
      <p>Указатель типа <strong>near</strong> — 16-битовый; для определения адреса объекта он использует смещение относительно текущего содержимого сегментного регистра. Для указателя типа <strong>near</strong> доступная память ограничена размером текущего 64-килобайтного сегмента данных.</p>
      <p>Указатель типа <strong>far</strong> — 32-битовый; он содержит как адрес сегмента, так и смещение. При использовании указателей типа <strong>far</strong> допустимы обращения к памяти в пределах 1-мегабайтного адресного пространства процессора Intel 8086/8088, однако значение указателя типа <strong>far</strong> циклически изменяется в пределах одного 64-килобайтного сегмента.</p>
      <p>Указатель типа <strong>huge</strong> — 32-битовый; он также содержит адрес сегмента и смещение. Значение указателя типа <strong>huge</strong> может быть изменено в пределах всего 1-мегабайтного адресного пространства. В СП ТС указатель типа huge всегда хранится в нормализованном формате. Это имеет следующие следствия:</p>
      <p>—операции отношения ==, !=, &lt;, &gt;, &lt;=, &gt;= выполняются корректно и предсказуемо над указателями типа <strong>huge</strong>, но не над указателями типа <strong>far</strong>;</p>
      <p>—при использовании указателей типа <strong>huge</strong> требуется дополнительное время, т. к. программы нормализации должны вызываться при выполнении любой арифметической операции над этими указателями. Объем кода программы также возрастает.</p>
      <p>В СП MSC модификатор <strong>huge</strong> применяется только к массивам, размер которых превышает 64 К. В СП ТС недопустимы массивы больше 64 К, а модификатор <strong>huge</strong> применяется к функциям и указателям для спецификации того, что адрес функции или указуемого объекта имеет тип <strong>huge</strong>.</p>
      <p>Для вызова функции типа <strong>near</strong> используются машинные инструкции ближнего вызова, для типов <strong>far</strong> и <strong>huge</strong> — дальнего.</p>
      <p>Примеры.</p>
      <p>/* пример 1 */</p>
      <p>int huge database [65000];</p>
      <p>/* пример 2 */</p>
      <p>char fаг *x;</p>
      <p>/* пример 3 */</p>
      <p>double near cdecl calc(double, double);</p>
      <p>double cdecl near calc(double, double);</p>
      <p>/* пример 4 */</p>
      <p>char far pascal initlist[INITSIZE];</p>
      <p>char far nextchar, far *prevchar, far *currentchar;</p>
      <p>В первом примере объявляется массив с именем <emphasis>database,</emphasis> содержащий 65000 элементов типа <strong>int</strong>. Поскольку размер массива превышает 64 Кбайта, его описатель должен быть модифицирован специальным ключевым словом <strong>huge.</strong></p>
      <p>Во втором примере специальное ключевое слово <emphasis>far</emphasis> модифицирует расположенную справа от него звездочку, делая х указателем на <strong>far</strong> указатель на значение типа <strong>char</strong>. Это объявление можно для ясности записать и так:</p>
      <p>char *(far *х);</p>
      <p>В примере 3 показано два эквивалентных объявления. В них объявляется <strong>calc</strong> как функция с модификаторами near и <strong>cdecl</strong>.</p>
      <p>В примере 4 также представлены два объявления. Первое объявляет массив типа <strong>char</strong> с именем <strong>initiist</strong> и модификаторами <strong>far</strong> и <strong>pascal</strong>. Модификатор <strong>pascal</strong> указывает на то, что имя данного массива используется не только в программе на языке Си, но и в программе на языке Паскаль (или другом языке программирования с подобными правилами написания имен внешних переменных). Модификатор <strong>far</strong> указывает на то, что для доступа к элементам массива долины использоваться 32-битовые адреса.</p>
      <p>Второе объявление объявляет три указателя на <strong>far</strong> значения типа <strong>char</strong> с именами <strong>nextchar</strong>, <strong>prevchar</strong> и <strong>currentchar</strong>. Эти указатели могут быть, в частности, использованы для хранения адресов элементов массива <strong>initlist</strong>. Обратите внимание на то, что специальное ключевое слово <strong>far</strong> должно быть повторено перед каждым описателем.</p>
     </section>
     <section>
      <title>
       <p><strong>Модификатор interrupt</strong></p>
      </title>
      <p>Модификатор <strong>interrupt</strong> предназначен для объявления функций, работающих с векторами прерываний процессора 8086/8088. Для функции типа <strong>interrupt</strong> при компиляции генерируется дополнительный код в точке входа и выхода из функции, для сохранения и восстановления регистров микропроцессора АХ, ВХ, СХ, DX, SI, DI, ES и DS. Остальные регистры — ВР, SP, SS, CS и IP сохраняются всегда как часть вызывающей последовательности языка Си или часть самой системы обработки прерывания.</p>
      <p>См. пример в разделе 3.3.3.1.</p>
      <p>Функции прерываний следует объявлять с типом возвращаемого значения <strong>void</strong>.</p>
      <p>Функции прерываний поддерживаются для всех моделей памяти. В СП MSC, в малой и средней модели в регистр DS заносится при входе в функцию адрес сегмента данных всей программы, а в компактной, большой и максимальной модели в регистр DS заносится адрес сегмента данных программного модуля. В СП ТС только в максимальной модели в регистр DS заносится адрес сегмента данных программного модуля, а в остальных моделях—адрес сегмента данных всей программы.</p>
      <p>Модификатор <strong>interrupt</strong> не может использоваться совместно с модификаторами <strong>near</strong>, <strong>far</strong>, <strong>huge</strong>.</p>
     </section>
    </section>
   </section>
   <section>
    <title>
     <p><strong>Объявление переменных</strong></p>
    </title>
    <section>
     <p>В этом разделе дано последовательное описание синтаксиса и семантики объявлений переменных. Разновидности переменных перечислены в следующей таблице:</p>
     <p>Таблица 3.4.</p>
     <table>
      <tr>
       <td align="center">Вид переменной</td>
       <td align="center">Пояснение</td>
      </tr>
      <tr>
       <td align="left">Простая переменная</td>
       <td align="left">Скалярная переменная целого или плавающего типа</td>
      </tr>
      <tr>
       <td align="left">Переменная перечислимого типа</td>
       <td align="left">Простая переменная целого типа, принимающая значения из предопределенного набора именованных значений</td>
      </tr>
      <tr>
       <td align="left">Структура</td>
       <td align="left">Переменная, содержащая совокупность элементов, которые могут иметь различные типы</td>
      </tr>
      <tr>
       <td align="left">Объединение</td>
       <td align="left">Переменная, содержащая совокупность элементов, которые могут иметь различные типы, но занимают одну и ту же область памяти</td>
      </tr>
      <tr>
       <td align="left">Массив</td>
       <td align="left">Переменная, содержащая совокупность элементов одинакового типа</td>
      </tr>
      <tr>
       <td align="left">Указатель</td>
       <td align="left">Переменная, которая указывает на другую переменную (содержит ее адрес)</td>
      </tr>
     </table>
     <empty-line/>
     <p>Общая синтаксическая форма объявления переменных описана в начале раздела 3. В данном разделе для простоты изложения объявления описываются без спецификаций класса памяти и инициализаторов. Спецификации класса памяти описаны в разделе 3.6, инициализаторы — в разделе 3.7.</p>
     <p>В объявлении простой переменной, массива и указателя спецификация типа может быть опущена. Если это объявление записано на внешнем уровне, то спецификация класса памяти тоже может быть опущена. В объявлении внутреннего уровня хотя бы одна из спецификаций — класса памяти или типа — должна присутствовать.</p>
    </section>
    <section>
     <title>
      <p><strong>Объявление простой переменной</strong></p>
     </title>
     <p>Синтаксис:</p>
     <p><strong>&lt;</strong><emphasis>спецификация типа</emphasis><strong>&gt; &lt;</strong><emphasis>идентификатор</emphasis>&gt; [,<strong>&lt;</strong><emphasis>идентификатор</emphasis>&gt;…];</p>
     <p>Объявление простой переменной определяет имя переменной и ее тип. Имя переменной задается &lt;<emphasis>идентификатором</emphasis>&gt;. &lt;<emphasis>Спецификация типа</emphasis>&gt; задает тип переменной. Тип может быть базовым типом, либо типом структура, либо типом объединение. Если спецификация типа опущена, предполагается тип <strong>int</strong>.</p>
     <p>Можно объявить несколько переменных в одном объявлении, задавая список &lt;<emphasis>идентификаторов</emphasis>&gt;, разделенных запятыми. Каждый &lt;<emphasis>идентификатор</emphasis>&gt; в списке именует отдельную переменную. Все переменные, заданные в таком объявлении, имеют одинаковый тип.</p>
     <p>Примеры.</p>
     <p>int х; /* пример 1 */</p>
     <p>unsigned long reply, flag; /* пример 2 */</p>
     <p>double order; /* пример 3 */</p>
     <p>В первом примере объявляется простая переменная <strong>х</strong>. Эта переменная может принимать любое значение из области значений типа <strong>int</strong>.</p>
     <p>Во втором примере объявлены две переменные: <strong>reply</strong> и <strong>flag</strong>. Обе переменные имеют тип <strong>unsigned long</strong>.</p>
     <p>В третьем примере объявлена переменная <strong>order</strong>, которая имеет тип <strong>double.</strong> Этой переменной могут быть присвоены значения с плавающей точкой.</p>
    </section>
    <section>
     <title>
      <p><strong>Объявление переменной перечислимого типа</strong></p>
     </title>
     <p>Синтаксис:</p>
     <p>enum [<strong>&lt;</strong><emphasis>тег</emphasis><strong>&gt;</strong>]{<strong>&lt;</strong><emphasis>список-перечисления</emphasis><strong>&gt;</strong>} <strong>&lt;</strong><emphasis>описатель</emphasis><strong>&gt;[</strong>,&lt;<emphasis>описатель</emphasis>&gt;…];</p>
     <p>enum &lt;<emphasis>тег</emphasis>&gt; &lt;<emphasis>идентификатор</emphasis>&gt; [&lt;<emphasis>идентификатор</emphasis>&gt;…];</p>
     <p>Объявление переменной перечислимого типа задает имя переменной и определяет список именованных констант, называемый списком перечисления. Каждому элементу списка перечисления ставится в соответствие целое число. Переменная перечислимого типа может принимать только значения из своего списка перечисления. Элементы списка имеют тип <strong>int</strong>. Поэтому переменной перечислимого типа выделяется ячейка памяти, необходимая для размещения значения типа <strong>int</strong>. Перечислимый тип, таким образом, представляет собой подмножество целого типа. Над объектами перечислимого типа определены те же операции, что и над объектами целого типа.</p>
     <p>&lt;<emphasis>Описатель</emphasis>&gt; специфицирует либо переменную перечислимого типа, либо указатель на значение перечислимого типа, либо массив элементов перечислимого типа, либо функцию, возвращающую значение перечислимого типа, либо более сложный объект, являющийся комбинацией перечисленных типов.</p>
     <p>Объявление переменной перечислимого типа начинается с ключевого слова <strong>enum</strong> и имеет две формы представления.</p>
     <p>В первой форме задается список перечисления, содержащий именованные константы. Необязательный &lt;<emphasis>тег</emphasis>&gt; <emphasis>—</emphasis> это идентификатор, который именует перечислимый тип, специфицированный данным списком перечисления, &lt;<emphasis>идентификатор</emphasis>&gt; — это имя переменной перечислимого типа. В одном объявлении может быть описано более одной переменной данного перечислимого типа.</p>
     <p>Во второй форме объявления список перечисления отсутствует, однако используется &lt;<emphasis>тег</emphasis>&gt;<emphasis>,</emphasis> который ссылается на перечислимый тип, объявленный в другом месте программы. Если заданный тег ссылается на неизвестный перечислимый тип либо область действия определения этого перечислимого типа не распространяется на текущий блок, то компилятор языка Си сообщает об ошибке. Допускаются объявление указателя на перечислимый тип и объявление <strong>typedef</strong> для перечислимого типа, использующие тег ранее не определенного перечислимого типа. Однако этот тип должен быть определен к моменту использования этого тега или типа, объявленного посредством <strong>typedef</strong>.</p>
     <p>&lt;<emphasis>Список-перечисления</emphasis>&gt; содержит одну или более конструкций вида:</p>
     <p>&lt;<emphasis>идентификатор</emphasis>&gt; [=&lt;<emphasis>константное-выражение</emphasis>&gt;]</p>
     <p>Конструкции в списке разделяются запятыми. Каждый &lt;идентификатор&gt; именует элемент списка перечисления. По умолчанию, если не задано &lt;<emphasis>константное-выражение</emphasis>&gt;, первому элементу присваивается значение 0, следующему элементу—значение 1 и т. д. Элемент списка перечисления является константой.</p>
     <p>Запись =&lt;<emphasis>константное-выражение</emphasis>&gt; изменяет умалчиваемую последовательность значений. Элемент, идентификатор которого предшествует записи =&lt;<emphasis>константное-выражение</emphasis>&gt;, принимает значение, задаваемое этим константным выражением. Константное выражение должно иметь тип <strong>int</strong> и может быть как положительным, так и отрицательным. Следующий элемент списка получает значение, равное &lt;<emphasis>константное-выражение</emphasis>&gt;+1, если только его значение не задается явно другим константным выражением.</p>
     <p>В списке перечисления могут содержаться элементы, которым сопоставлены одинаковые значения, однако каждый идентификатор в списке должен быть уникальным. Например, двум различным идентификаторам <strong>null</strong> и <strong>zero</strong> может быть задано значение 0 в одном и том же списке перечисления. Кроме того, идентификатор элемента списка перечисления должен быть отличным от идентификаторов элементов всех остальных списков перечислений с той же областью действия, а также от других идентификаторов с той же областью действия (см. раздел 2.5). Тег перечислимого типа должен быть отличным от тегов других перечислимых типов, структур и объединений с той же самой областью действия.</p>
     <p>Примеры.</p>
     <p><emphasis>/*</emphasis> пример 1 */</p>
     <p>enum day {</p>
     <p>SATURDAY,</p>
     <p>SUNDAY = <strong>0,</strong></p>
     <p>MONDAY,</p>
     <p>TUESDAY,</p>
     <p>WEDNESDAY,</p>
     <p>THURSDAY,</p>
     <p>FRIDAY</p>
     <p>} workday;</p>
     <empty-line/>
     <p>/* пример 2 */</p>
     <p>enum day today = WEDNESDAY;</p>
     <p>В первом примере перечислимый тип определяется списком. Перечислимый тип именуется тегом <strong>day</strong>, и объявляется переменная <emphasis>workday</emphasis> этого перечислимого типа. С элементом <emphasis>SATURDAY</emphasis> по умолчанию ассоциируется значение 0. Элементу <emphasis>SUNDAY</emphasis> явно присваивается значение ноль. Остальные идентификаторы по умолчанию принимают значение от 1 до 5.</p>
     <p>Во втором примере переменная перечислимого типа <strong>today</strong> инициализируется значением одного из элементов списка перечисления. Так как перечислимый тип с тегом <strong>day</strong> был предварительно объявлен, то при объявлении <strong>today</strong> достаточно сослаться только на тег <strong>day</strong>, не записывая повторно сам список перечисления.</p>
     <p><emphasis>Примечание.</emphasis> В языке Си принято записывать имена элементов перечисления прописными буквами, однако это необязательно.</p>
    </section>
    <section>
     <title>
      <p><strong>Объявление структуры</strong></p>
     </title>
     <p>Структура позволяет объединить в одном объекте совокупность значений, которые могут иметь различные типы. Однако в языке Си реализован очень ограниченный набор операций над структурами как единым целым: передача функции в качестве аргумента, возврат в качестве значения функции, получение адреса. Можно присваивать одну структуру другой, если они имеют одинаковый тег.</p>
     <p>Синтаксис:</p>
     <p>struct [<strong>&lt;</strong><emphasis>тег</emphasis><strong>&gt;</strong>] {<strong>&lt;</strong><emphasis>список-объявлений-элементов</emphasis><strong>&gt;</strong>} <strong>&lt;</strong><emphasis>описатель</emphasis>&gt; [,&lt;<emphasis>описатель</emphasis>&gt;…];</p>
     <p>struct <strong>&lt;</strong><emphasis>тег</emphasis><strong>&gt; &lt;</strong><emphasis>описатель</emphasis><strong>&gt;</strong> [,<strong>&lt;</strong><emphasis>описатель</emphasis><strong>&gt;</strong>…];</p>
     <p>Объявление структуры может задавать имя структурного типа и/или последовательность объявлений переменных, называемых элементами структуры. Эти элементы могут иметь различные типы.</p>
     <p>Объявление структуры начинается с ключевого слова <strong>struct</strong> и имеет две формы записи, как показано выше. В первой форме типы и имена элементов структуры специфицируются в списке объявлений элементов. Необязательный в данном случае &lt;<emphasis>тег</emphasis>&gt; — это идентификатор, который именует структурный тип, определенный данным списком объявлений элементов.</p>
     <p>&lt;<emphasis>Описатель</emphasis>&gt; специфицирует либо переменную структурного типа, либо указатель на структуру данного типа, либо массив структур данного типа, либо функцию, возвращающую структуру данного типа, либо более сложный объект, являющийся комбинацией перечисленных типов.</p>
     <p>Вторая синтаксическая форма объявления использует тег структуры для ссылки на структурный тип, определенный где-то в другом месте программы. В этой форме объявления список объявлений элементов отсутствует. Объявление должно находиться в области действия данного тега, т. е. определение структурного типа, именованного тегом, должно предшествовать объявлению, использующему этот тег, за исключением двух случаев: когда тег используется для объявления либо указателя на структуру, либо структурного типа в <strong>typedef</strong>. Однако при этом определение структурного типа должно предшествовать использованию данного указателя либо типа, объявленного посредством <strong>typedef</strong>.</p>
     <p>Список объявлений элементов представляет собой последовательность из одного или более объявлений переменных или битовых полей (см. ниже). Каждая переменная, объявленная в этом списке, называется элементом структуры. Особенность синтаксиса объявлений переменных в списке состоит в том, что они не могут содержать спецификаций класса памяти и инициализаторов. Элементы структуры могут иметь базовый тип, либо быть массивом, указателем, объединением или, в свою очередь, структурой.</p>
     <p>Элемент структуры не может быть структурой того же типа, в которой он содержится. Однако он может быть объявлен как указатель на тип структуры, в которую он входит. Это позволяет создавать связанные списки структур.</p>
     <p>Идентификаторы элементов структуры должны различаться между собой. Идентификаторы элементов разных структур могут совпадать. В пределах одной области действия тег структурного типа должен отличаться от тегов других структурных типов, тегов объединений и перечислимых типов.</p>
     <p>Элементы структуры запоминаются в памяти последовательно в том порядке, в котором они объявляются: первому элементу соответствует меньший адрес памяти, а последнему — больший. Однако в СП ТС, если в одном объявлении содержатся описатели нескольких элементов, порядок их размещения в памяти будет обратным. Каждый элемент в памяти выровнен на границу, соответствующую его типу. Для микропроцессора Intel 8086/8088 это означает, что любой элемент, отличный от типа <strong>char</strong> или <strong>unsigned char</strong>, выравнивается на четную границу. Поэтому внутри структур могут появляться неименованные, пустые участки памяти между соседними элементами.</p>
     <p>В версии 4.0 СП MSC элемент структуры, представляющий собой структуру нечетной длины, дополняется лишним байтом в конце, чтобы его длина стала четной. В версии 5.0 СП MSC это дополнение лишним байтом производится только в том случае, когда тип следующего элемента структуры требует его размещения с четного адреса.</p>
     <p>В СП ТС по умолчанию выравнивания в структурах не производится, однако существует опция компиляции, специфицирующая выравнивание. При этом обеспечивается следующее:</p>
     <p>—структура будет начинаться на границе машинного слова (иметь четный адрес);</p>
     <p>—любой элемент, имеющий тип, отличный от <strong>char</strong> или <strong>unsigned char</strong>, будет иметь четное смещение от начала структуры;</p>
     <p>—чтобы структура содержала четное число байтов, в конец структуры будет при необходимости добавлен лишний байт.</p>
     <subtitle><strong>Битовые поля</strong></subtitle>
     <p>Битовые поля структур используются преимущественно в двух целях: для экономии памяти, поскольку позволяют плотно упаковать значения, и для организации удобного доступа к регистрам внешних устройств, в которых различные биты могут иметь самостоятельное функциональное назначение.</p>
     <p>Объявление битового поля имеет следующий синтаксис:</p>
     <p>&lt;<emphasis>спецификация типа</emphasis>&gt; [&lt;<emphasis>идентификатор</emphasis>&gt;]:&lt;<emphasis>константное выражение</emphasis>&gt;;</p>
     <p>Битовое поле состоит из некоторого числа разрядов машинного слова. Число разрядов, т.е. размер битового поля, задается &lt;<emphasis>константным виражением</emphasis>&gt;<emphasis>.</emphasis> Константное выражение должно иметь неотрицательное целое значение. Это значение не может превышать числа разрядов, требуемого для представления значения специфицированного типа. Для битового поля в версия 4.0 СП MSC спецификация типа должна задавать беззнаковый целый тип (<strong>unsigned int</strong>). Для версии 5.0 СП MSC спецификация типа может задавать как знаковый, так и беззнаковый целый тип, причем любого размера — <strong>char</strong>, <strong>int</strong>, <strong>long</strong>. Однако знаковый целый тип для битовых полей реализован лишь синтаксически, а в выражениях битовые поля участвуют как беззнаковые значения. Недопустимы массивы битовых полей, указатели на битовые поля и функции, возвращающие битовые поля. Нельзя применять к битовым полям операцию адресации (&amp;)<emphasis>.</emphasis></p>
     <p><emphasis>&lt;Идентификатор&gt;</emphasis> именует битовое поле. Его наличие, однако, необязательно. Неименованное битовое поле означает пропуск соответствующего числа битов перед размещением следующего элемента структуры. Неименованное битовое поле, для которого указан нулевой размер, имеет специальное назначение: оно гарантирует, что память для следующей переменной в этой структуре (в том числе и для следующего битового поля) будет начинаться на границе машинного слова (<strong>int</strong>). В версии 5.0 СП MSC выравнивание будет производиться на границу того типа, который задан для неименованного битового поля (<strong>char</strong>, <strong>int</strong> или <strong>long</strong>).</p>
     <p>Битовое поле не может выходить за границу ячейки объявленного для него типа. Например, битовое поле, объявленное с типом <strong>unsigned int</strong>, упаковывается либо в пространство, оставшееся в текущей ячейке <strong>unsigned int</strong> от размещения предыдущего битового поля, либо, если предыдущий элемент структуры не был битовым полем или памяти в текущей ячейке недостаточно, в новую ячейку <strong>unsigned int</strong>.</p>
     <p>В СП ТС битовое поле может иметь либо тип <strong>unsigned int</strong>, либо тип <strong>signed int</strong>. Поля целого типа хранятся в дополнительном коде; крайний левый бит — знаковый. Например, битовое поле типа <strong>signed int</strong> размером 1 бит может только хранить значение ‑1 и 0, т.к. любое ненулевое значение будет интерпретироваться как -1.</p>
     <p>Примеры:</p>
     <p><emphasis>/*</emphasis> пример 1 */</p>
     <p>struct {</p>
     <p>float х, у;</p>
     <p>} complex;</p>
     <empty-line/>
     <p>/* пример 2 */</p>
     <p>struct employee {</p>
     <p>char name [20];</p>
     <p>int id;</p>
     <p>long class;</p>
     <p>} temp;</p>
     <empty-line/>
     <p>/* пример 3 */</p>
     <p>struct employee student, faculty, staff;</p>
     <empty-line/>
     <p>/* пример 4 */</p>
     <p>struct sample {</p>
     <p>char h; float *pf;</p>
     <p>struct sample *next; )x;</p>
     <empty-line/>
     <p>/* пример 5 */</p>
     <p>struct {</p>
     <p>unsigned icon: 8;</p>
     <p>unsigned color: 4;</p>
     <p>unsigned underline: 1;</p>
     <p>unsigned blink: 1;</p>
     <p>} screen [25][80];</p>
     <empty-line/>
     <p>В первом примере объявляется переменная с именем <emphasis>complex,</emphasis> имеющая тип структура. Эта структура состоит из двух элементов <emphasis>х</emphasis> и <emphasis>у</emphasis> типа <strong>float</strong>. Тип структуры не поименован, поскольку тег в объявлении отсутствует.</p>
     <p>Во втором примере объявляется переменная с именем <emphasis>temp,</emphasis> имеющая тип структура. Структура состоит из трех элементов с именами <emphasis>name, id</emphasis> и <emphasis>class.</emphasis> Элемент с именем <emphasis>name —</emphasis> это массив из 20 элементов типа <strong>char</strong>. Элементы с именами <emphasis>id и class —</emphasis> это простые переменные типа <strong>int</strong> и <strong>long</strong> соответственно. Структурный тип поименован тегом <strong>employee</strong>.</p>
     <p>В третьем примере объявлены три переменные типа структура с именами <emphasis>student, faculty</emphasis> и <emphasis>staff.</emphasis> Объявление каждой из этих структур ссылается на структурный тип <strong>employee</strong>, определенный в предыдущем примере.</p>
     <p>В четвертом примере объявляется переменная с именем <emphasis>х</emphasis> типа структура. Тип структуры поименован тегом <strong>sample</strong>. Первые два элемента структуры — переменная <emphasis>h</emphasis> типа char и указатель <emphasis>рf</emphasis> на значения типа <strong>float</strong>. Третий элемент с именем <emphasis>next</emphasis> объявлен как указатель на структуру того же самого типа <strong>sample</strong>.</p>
     <p>В пятом примере объявляется двумерный массив с именем <emphasis>screen,</emphasis> элементы которого имеют структурный тип. Массив состоит из 2000 элементов. Каждый элемент — это отдельная структура, состоящая из четырех элементов — битовых полей с именами <emphasis>icon, color, underline</emphasis> и <emphasis>blink.</emphasis></p>
    </section>
    <section>
     <title>
      <p><strong>Объявление объединения</strong></p>
     </title>
     <p>Объединение позволяет в разные моменты времени хранить в одном объекте значения различного типа. В процессе объявления объединения с ним ассоциируется набор типов значений, которые могут храниться в данном объединении. В каждый момент времени объединение может хранить значение только одного типа из набора. Контроль над тем, какого типа значение хранится в данный момент в объединении, возлагается на программиста. Синтаксис:</p>
     <p>union [&lt;<emphasis>тег</emphasis>&gt;] {&lt;<emphasis>список-объявлений-элементов</emphasis>&gt;} &lt;<emphasis>описатель</emphasis>&gt; [,&lt;<emphasis>описатель</emphasis>&gt;…];</p>
     <p>union <strong>&lt;</strong><emphasis>тег</emphasis><strong>&gt; &lt;</strong><emphasis>описатель</emphasis>&gt; [,<strong>&lt;</strong><emphasis>описатель</emphasis><strong>&gt;</strong>…];</p>
     <p>Объявление объединения специфицирует его имя и совокупность объявлений переменных, называемых элементами объединения, которые могут иметь различные типы.</p>
     <p>Объявление объединения имеет тот же синтаксис, что и объявление структуры, за исключением того, что оно начинается с ключевого слова <emphasis>union,</emphasis> а не с ключевого слова <emphasis>struct.</emphasis> Кроме того, СП MSC (в отличие от СП ТС) не допускает в объединении битовые поля.</p>
     <p>Память, которая выделяется переменной типа объединение, определяется размером наиболее длинного из элементов объединения. Все элементы объединения размещаются в одной и той же области памяти с одного и того же адреса. Значение текущего элемента объединения теряется, когда другому элементу объединения присваивается значение.</p>
     <p>Примеры:</p>
     <p>/* пример 1 */</p>
     <p>union sign {</p>
     <p>int svar;</p>
     <p>unsigned uvar;</p>
     <p>} number;</p>
     <empty-line/>
     <p>/* пример 2 */</p>
     <p>union {</p>
     <p>char *a, b;</p>
     <p>float f[20];</p>
     <p>} jack;</p>
     <p>В первом примере объявляется переменная типа объединение с именем <strong>number</strong>. Список объявлений элементов объединения содержит две переменных: <strong>svar</strong> типа <strong>int</strong> и <strong>uvar</strong> типа <strong>unsigned</strong>. Это объединение позволяет запоминать целое значение в знаковом или беззнаковом виде. Тип объединения поименован тегом <strong>sign</strong>.</p>
     <p>Во втором примере объявляется переменная типа объединение с именем <strong>Jack</strong>. Список объявлений элементов содержит три объявления: указателя <strong>а</strong> на значение типа <strong>char</strong>, переменной <strong>b</strong> типа <strong>char</strong> и массива <strong>ж</strong> из 20 элементов типа <strong>float</strong>. Тип объединения не поименован тегом. Память, выделяемая переменной <strong>jack</strong>, равна памяти, необходимой для хранения массива <strong>f</strong>, поскольку это самый длинный элемент объединения.</p>
    </section>
    <section>
     <title>
      <p><strong>Объявление массива</strong></p>
     </title>
     <p>Синтаксис:</p>
     <p>[<strong>&lt;</strong><emphasis>спецификация типа</emphasis>]<strong>&gt; &lt;</strong><emphasis>описатель</emphasis><strong>&gt;</strong> [<strong>&lt;</strong><emphasis>константное выражение</emphasis><strong>&gt;</strong>];</p>
     <p>[&lt;<emphasis>спецификация типа</emphasis>]&gt; <strong>&lt;</strong><emphasis>описатель</emphasis><strong>&gt;</strong> [];</p>
     <p>Квадратные скобки, следующие за описателем, являются элементом языка Си, а не признаком необязательности синтаксической конструкции.</p>
     <p>Массив позволяет хранить как единое целое последовательность переменных одинакового типа. Объявление массива определяет тип элементов массива и его имя. Оно может определять также число элементов в массиве. Переменная типа массив участвует в выражениях как константа - указатель на значение заданного спецификацией типа. Если спецификация типа опущена, предполагается тип <strong>int</strong>.</p>
     <p>Объявление массива может иметь одну из двух синтаксических форм, указанных выше. Квадратные скобки, следующие за &lt;<emphasis>описателем</emphasis>&gt;, являются признаком типа массив. Если &lt;<emphasis>описатель</emphasis>&gt; представляет собой идентификатор (имя массива), то объявляется массив элементов специфицированного типа. Если же &lt;<emphasis>описатель</emphasis>&gt; представляет собой более сложную конструкцию (см. раздел 3.3.1), то каждый элемент массива имеет тип, заданный совокупностью &lt;<emphasis>спецификации типа</emphasis>&gt; и оставшейся части описателя. Это может быть любой тип, кроме типов <strong>void</strong> и функция. Таким образом, элементы массива могут иметь базовый, перечислимый, структурный тип, быть объединением, указателем или, в свою очередь, массивом.</p>
     <p>Константное выражение, заключенное в квадратные скобки, определяет число элементов в массиве. Индексация элементов массива начинается с нуля. Таким образом, последний элемент массива имеет индекс на единицу меньше, чем число элементов в массиве.</p>
     <p>Во второй синтаксической форме константное выражение в квадратных скобках опущено. Эта форма может быть использована, если в объявлении массива присутствует инициализатор, либо массив объявляется как формальный параметр функции, либо данное объявление является ссылкой на объявление массива где-то в другом месте программы. Однако для многомерного массива может быть опущена только первая размерность.</p>
     <p>Многомерный массив, или массив массивов, объявляется путем задания последовательности константных выражений в квадратных скобках, следующей за описателем:</p>
     <p>&lt;<emphasis>спецификация типа</emphasis>&gt; &lt;<emphasis>описатель</emphasis>&gt; [&lt;<emphasis>константное выражение</emphasis>&gt;] {&lt;<emphasis>константное выражение</emphasis>&gt;]…;</p>
     <p>Каждое константное выражение в квадратных скобках определяет число элементов в данном измерении массива, поэтому объявление двумерного массива содержит два константных выражения, трехмерного — три и т. д.</p>
     <p>Массиву выделяется память, которая требуется для размещения всех его элементов. Элементы массива с первого до последнего размещаются в последовательных ячейках памяти, по возрастанию адресов. Между элементами массива в памяти разрывы отсутствуют. Элементы многомерного массива запоминаются построчно. Например, массив, представляющий собой матрицу размером две строки на три столбца</p>
     <p>char а[2][3]</p>
     <p>будет храниться следующим образом: сначала в памяти запоминаются три элемента первой строки, затем три элемента второй строки. При таком методе хранения последний индекс массива меняется быстрее предпоследнего. Для доступа к отдельному элементу массива используется индексное выражение, которое описано в разделе 4.2.5 "Индексные выражения".</p>
     <p>Примеры.</p>
     <p>/* пример 1 */</p>
     <p>int scores[10], game:</p>
     <p>/* пример 2 */</p>
     <p>float matrix[10][15];</p>
     <p>/* пример 3 */</p>
     <p>struct {</p>
     <p>float х, у;</p>
     <p>} complex[100];</p>
     <p>/* пример 4 */</p>
     <p>char *name[20];</p>
     <p>В первом примере объявляется переменная типа массив с именем <strong>scores</strong> из 10 элементов типа <strong>int</strong>. Переменная с именем <strong>game</strong> объявлена как простая переменная целого типа.</p>
     <p>Во втором примере объявляется двумерный массив с именем <strong>matrix</strong>. Строго говоря, <strong>matrix</strong> представляет собой массив, состоящий из 10 элементов, каждый из которых является массивом из 15 элементов типа <strong>float</strong>.</p>
     <p>В третьем примере объявляется массив структур типа <strong>complex</strong>. Он состоит из 100 элементов. Каждый элемент массива представляет собой структуру, содержащую два элемента типа <strong>float</strong>.</p>
     <p>В четвергом примере объявлен массив указателей. Массив содержит 20 элементов, каждый из которых является указателем на значение типа <strong>char</strong>.</p>
    </section>
    <section>
     <title>
      <p><strong>Объявление указателя</strong></p>
     </title>
     <p>Указатель — это переменная, предназначенная для хранения адреса объекта некоторого типа. Указатель на функцию содержит адрес точки входа в функцию.</p>
     <p>Синтаксис:</p>
     <p>[&lt;<emphasis>спецификация типа</emphasis>]&gt; *&lt;<emphasis>описатель</emphasis><strong>&gt;;</strong></p>
     <p>Объявление указателя специфицирует имя переменной-указателя и тип объекта, на который может указывать эта переменная. Спецификация типа может задавать базовый, перечислимый, пустой, структурный тип или тип объединение. Если спецификация типа опущена, предполагается тип <strong>int</strong>.</p>
     <p>Если &lt;<emphasis>описатель</emphasis>&gt; представляет собой идентификатор (имя указателя), то объявляется указатель на значение специфицированного типа. Если же &lt;<emphasis>описатель</emphasis>&gt; представляет собой более сложную конструкцию (см. раздел 3.3.1), то тип объекта, на который указывает указатель, определяется совокупностью оставшейся части описателя и спецификации типа. Указатель может указывать на значения базового, перечислимого типа, структуры, объединения, массивы, функции, указатели.</p>
     <p>Специальное применение имеют указатели на тип <strong>void</strong>. Указатель на <strong>void</strong> может указывать на значения любого типа. Однако для выполнения операций над указателем на <strong>void</strong> либо над указуемым объектом, необходимо явно привести тип указателя к типу, отличному от <strong>void</strong>. Например, если объявлена переменная <emphasis>i</emphasis> типа <strong>int</strong> и указатель <emphasis>р</emphasis> на тип <strong>void</strong></p>
     <p>int i;</p>
     <p>void *p;</p>
     <p>то можно присвоить указателю р адрес переменной i</p>
     <p>p <strong>=</strong> &amp;i;</p>
     <p>но изменить значение указателя нельзя. В СП ТС нельзя также получить значение указуемого объекта по операции косвенной адресации (в СП MSC в этом случае выдается предупреждающее сообщение).</p>
     <p>р++; /* недопустимо */</p>
     <p>(int *)р++; /* допустимо */</p>
     <p>j = *p; /* недопустимо в СП ТС */</p>
     <p>Можно объявить функцию с типом возвращаемого значения указатель на <strong>void</strong>. Ее значение может быть присвоено указателю на тот тип, который требуется.</p>
     <p>Переменная, объявленная как указатель, хранит адрес памяти. Размер памяти, требуемый для адреса, и формат этого адреса зависит от компьютера и реализации компилятора языка Си. Указатели на один и тот же тип данных не обязательно имеют одинаковый размер и формат, поскольку эти параметры зависят от выбранной модели памяти. Кроме того, существуют модификаторы <strong>near</strong>, <strong>far</strong>, <strong>huge</strong>, специфицирующие формат указателя. Объявления, использующие эти модификаторы, рассмотрены в разделе 3.3.3.4.</p>
     <p>Указатель на структуру, объединение или перечислимый тип может быть объявлен до того, как этот тип определен, однако указатель не должен использоваться до определения этого типа. Указатель при этом объявляется посредством использования тега структуры, объединения или перечислимого типа (см. ниже пример 4). Такие объявления допускаются, поскольку компилятору языка Си не требуется знать размер структуры или объединения, чтобы распределить память под указатель.</p>
     <p>В стандартном включаемом файле <strong>stdio.h</strong> определена константа с именем NULL. Она предназначена для инициализации указателей. Гарантируется, что никакой программный объект никогда не будет иметь адрес NULL.</p>
     <p>Примеры.</p>
     <p>char *message;/* пример 1 */</p>
     <p>im *аrrау1 [10]; /* пример 2 */</p>
     <p>int (*pointer1)[10];/* пример 3 */</p>
     <p>struct list *next, *previous; /* пример 4 */</p>
     <p>struct list {/* пример 5 */</p>
     <p>char *token;</p>
     <p>int *count;</p>
     <p>struct list *next;</p>
     <p>} line;</p>
     <p>struct id {/* пример 6 */</p>
     <p>unsigned int id_no;</p>
     <p>struct name *pname;</p>
     <p>} record;</p>
     <p>В первом примере объявляется указатель с именем <strong>message</strong>. Он указывает на значения типа <strong>char</strong>.</p>
     <p>Во втором примере объявлен массив указателей с именем <strong>array1</strong>. Массив состоит из 10 элементов. Каждый элемент представляет собой указатель на значения типа <strong>int</strong>.</p>
     <p>В третьем примере объявлен указатель с именем <strong>pointer1</strong>. Он указывает на массив из 10 элементов. Каждый элемент этого массива имеет тип <strong>int</strong>.</p>
     <p>В четвертом примере объявлены два указателя, которые указывают на объекты структурного типа, именованного тегом <strong>list</strong> (см. следующий пример). Определение типа <strong>list</strong> должно либо предшествовать данному объявлению, либо находиться в пределах области действия данного объявления.</p>
     <p>В пятом примере объявляется структура с именем <strong>line</strong>, тип которой поименован тегом <strong>list</strong>. Структурный тип <strong>list</strong> содержит три элемента. Первый элемент — указатель на значение типа <strong>char</strong>, второй — указатель на значение типа <strong>int</strong>, третий — указатель на структуру типа <strong>list</strong>.</p>
     <p>В шестом примере объявляется структура с именем <strong>record</strong>, тип которой поименован тегом <strong>id</strong>. Обратите внимание на то, что элемент с именем <strong>pname</strong> объявлен как указатель на другой структурный тип с тегом <strong>name</strong>. Не считается ошибкой появление этого объявления в программе раньше, чем будет объявлен тег <strong>name</strong> (но тип <strong>name</strong> должен быть объявлен до первого использования указателя <strong>pname</strong> в выражении).</p>
    </section>
   </section>
   <section>
    <title>
     <p><strong>Объявление функции (прототип)</strong></p>
    </title>
    <p>Метод объявления функции, описанный в данном разделе, используется только в версии 4.0 СП MSC. В версии 5.0 СП MSC, а также в СП ТС реализован более современный метод — объявление прототипа функции, а старый метод поддерживается в этих версиях лишь для совместимости программ. В конце данного раздела приведены основные отличия метода объявления прототипа.</p>
    <p>Синтаксис:</p>
    <p>[&lt;<emphasis>спецификация класса памяти</emphasis>&gt;][&lt;<emphasis>спецификация типа</emphasis>&gt;] &lt;<emphasis>описатель</emphasis>&gt;([&lt;<emphasis>список типов аргументов</emphasis>&gt;]);</p>
    <p>Объявление функции специфицирует имя функции, тип возвращаемого значения и, возможно, типы ее аргументов и их число. Эти атрибуты функции необходимы для проверки компилятором языка Си корректности обращения к ней до того, как она определена. Определение функций рассмотрено в разделе 6.2.</p>
    <p>Если &lt;<emphasis>описатель</emphasis>&gt; функции представляет собой идентификатор (имя функции), то объявляется функция, тип возвращаемого значения которой задан спецификацией типа. Если же &lt;<emphasis>описатель</emphasis>&gt; представляет собой более сложную конструкцию (см. раздел 3.3.1), то оставшаяся часть описателя в совокупности со &lt;<emphasis>спецификацией типа</emphasis>&gt; задает тип возвращаемого значения. Функция не может возвращать массив или функцию, но может возвращать указатель на эти объекты.</p>
    <p>Если спецификация типа в объявлении функции опущена, то предполагается тип <strong>int</strong>. На внешнем уровне может быть также опущена спецификация класса памяти, а на внутреннем уровне хотя бы одна из спецификаций — класса памяти или типа—должна присутствовать.</p>
    <p>В объявлении функции можно задать спецификацию класса памяти <strong>extern</strong> или <strong>static</strong>. Классы памяти рассматриваются в разделе 3.6.</p>
    <subtitle><strong>Список типов аргументов</strong></subtitle>
    <p>Список типов аргументов определяет типы аргументов функции и их число.</p>
    <p>Список типов — это список из одного или более имен типов. Каждое имя типа отделяется от другого запятой. Список ограничивается круглыми скобками.</p>
    <p>Первое имя типа задает тип первого аргумента, второе имя задает тип второго аргумента и т.д. Концом списка является закрывающая круглая скобка, однако перед ней может быть записана запятая и многоточие (,…). Это означает, что число аргументов функции переменно, но не меньше, чем имен типов, заданных до многоточия.</p>
    <p>Если список типов аргументов содержит только многоточие (…), то число аргументов функции является переменным и может быть равным нулю.</p>
    <p><emphasis>Примечание.</emphasis> Для совместимости с программами предыдущих версий допускается символ запятой без многоточия в конце списка типов аргументов для обозначения того, что число аргументов переменно. Запятая также может быть использована вместо многоточия как признак того, что функция имеет нуль или более аргументов. Для новых программ рекомендуется использование многоточия.</p>
    <p>Имя типа для базового, перечислимого типа, структуры или объединения представляет собой спецификацию этого типа (например, <strong>int</strong>). Имена типов для указателей и массивов формируются путем комбинации спецификации типа с "абстрактным описателем". Абстрактный описатель—это описатель, в котором опущен идентификатор. В разделе 3.8.3 "Имена типов" объясняется, каким образом формировать и интерпретировать абстрактные описатели.</p>
    <p>Для того чтобы объявить функцию, не имеющую аргументов, рекомендуется записать ключевое слово <emphasis>void</emphasis> на месте списка типов аргументов. Компилятор языка Си выдает предупреждающее сообщение, если в вызове такой функции будут указаны аргументы (однако для этого вызов функции должен находиться в области действия данного объявления).</p>
    <p>В списке типов аргументов в качестве имени типа допускается также конструкция <emphasis>void*</emphasis>, которая специфицирует аргумент типа "указатель на любой тип".</p>
    <p>Список типов аргументов может быть пуст, однако скобки после идентификатора функции все же обязательны. В этом случае в объявлении функции не специфицированы ни типы, ни число аргументов функции. Следовательно, компилятор языка Си не может проверить соответствие типов аргументов при вызове функции. Несоответствие типов аргументов может привести к трудно выявляемым ошибкам во время выполнения программы. Более подробная информация о правилах соответствия типов аргументов приведена в разделе 6.4 "Вызов функции".</p>
    <p>Примеры:</p>
    <p>int add (int, int); /* пример 1 */</p>
    <p>double calc(); /* пример 2 */</p>
    <p>char *strfind (char *, …); /* пример 3 */</p>
    <p>void draw(void); /* пример 4 */</p>
    <p>double (*sum (double, double))[3]; /* пример 5 */</p>
    <p>int (*select(void))(int); /* пример 6 */</p>
    <p>char *p; /* пример 7 */</p>
    <p>short *q;</p>
    <p>int prt(void *);</p>
    <p>fff(int); /* пример 8 */</p>
    <p>В первом примере объявляется функция <emphasis>с</emphasis> именем <emphasis>add,</emphasis> которая принимает два аргумента типа <strong>int</strong> и возвращает значение типа <strong>int</strong>.</p>
    <p>Во втором примере объявляется функция с именем <emphasis>calc,</emphasis> которая возвращает значение типа <strong>double</strong>. Список типов аргументов пуст.</p>
    <p>В третьем примере объявляется функция с именем <emphasis>strfind,</emphasis> которая возвращает указатель на значение типа <strong>char</strong>. Функция требует по крайней мере один аргумент—указатель на значение типа <strong>char</strong> Список типов аргументов заканчивается запятой и многоточием. Это значит, что функция может принять и большее число аргументов.</p>
    <p>В четвертом примере объявляется функция с типом возвращаемого значения <strong>void</strong> (ничего не возвращающая). Список типов аргументов также содержит ключевое слово <emphasis>void,</emphasis> означающее отсутствие аргументов функции.</p>
    <p>В пятом примере <emphasis>sum</emphasis> объявляется как функция, возвращающая указатель на массив из трех значений типа <strong>double</strong>. Функция <emphasis>sum</emphasis> требует два аргумента, каждый из которых имеет тип <strong>double</strong>.</p>
    <p>В шестом примере функция с именем <emphasis>select</emphasis> объявлена как не имеющая аргументов и возвращающая указатель на функцию, требующую один аргумент типа <strong>int</strong> и возвращающую значение типа <strong>int</strong>.</p>
    <p>В седьмом примере объявлена функция <emphasis>prt,</emphasis> которая принимает в качестве аргумента указатель на любой тип и возвращает значение типа <strong>int</strong>. Любой из указателей р и q мог бы быть вполне корректно использован в качестве аргумента функции.</p>
    <p>В восьмом примере объявлена функция <emphasis>fff</emphasis>, принимающая один аргумент типа <strong>int</strong> и возвращающая (по умолчанию) значение типа <strong>int</strong>. Очевидно, что эта функция объявлена на внешнем уровне, поскольку в ее объявлении отсутствует и спецификация класса памяти, и спецификация типа.</p>
    <p>Далее рассмотрим отличия метода объявления прототипов функций. В списке типов аргументов прототип может содержать также и идентификаторы этих аргументов. Они необязательны, их область действия ограничивается только прототипом, в котором они определены. Следовательно, необязательно именовать их так же, как формальные параметры в определении функции. Основное назначение использования идентификаторов аргументов в прототипе — повышение читабельности программы. Например, стандартная функция копирования строк <strong>strcpy</strong> имеет два аргумента: исходную строку и результирующую строку. Чтобы не перепутать их, можно объявить прототип функции</p>
    <p>char *strcpy (char *result, char *ishod);</p>
    <p>Идентификатор, указанный в объявлении, используется только в диагностическом сообщении компилятора языка Си, в случае несоответствия типов аргументов в вызове функции типам ее формальных параметров в прототипе.</p>
    <p>Файлы стандартного заголовка СП MSC версии 5.0 и СП ТС содержат объявления прототипов стандартных библиотечных функций. Вы можете распечатать эти файлы, и практически вся информация, необходимая для обращения к функциям, будет у Вас под рукой.</p>
    <p>Еще одно отличие метода объявления прототипов состоит в том, что объявление аргумента в прототипе может содержать спецификацию класса памяти <strong>register</strong>.</p>
   </section>
   <section>
    <title>
     <p><strong>Классы памяти</strong></p>
    </title>
    <section>
     <p>Спецификация класса памяти переменной определяет, какое время жизни она имеет (глобальное или локальное), и влияет на область действия переменной. Объект с глобальным временем жизни существует и имеет значение на протяжении всего времени выполнения программы. Все функции имеют глобальное время жизни.</p>
     <p>Переменной с локальным временем жизни выделяется новая ячейка памяти каждый раз, когда управление передается блоку, в котором она определена. Когда управление возвращается из блока, переменная теряет свое значение.</p>
     <p>В языке Си имеется четыре спецификации класса памяти:</p>
     <p>auto</p>
     <p>register</p>
     <p>static</p>
     <p>extern</p>
     <p>Область действия функций, объявленных со спецификацией класса памяти <strong>extern</strong>, распространяется на все исходные файлы, которые составляют программу; следовательно, такие функции могут быть вызваны из любой функции в любом исходном файле программы.</p>
     <p>Переменные классов памяти <strong>auto</strong> и <strong>register</strong> имеют локальное время жизни. Спецификации <strong>static</strong> и <strong>extern</strong> определяют объекты с глобальным временем жизни.</p>
     <p>В совокупности с местоположением объявления объекта спецификация класса памяти определяет область действия переменной или функции. Термин "область действия" определяет часть программы, в которой к функции или переменной возможен доступ. Например, переменная с глобальным временем жизни существует в течение всего времени выполнения исходной программы, но она может быть доступна не во всех частях программы. Область действия и связанное с ней понятие времени жизни рассмотрены в разделе 2.4.</p>
     <p>Объявления, расположенные вне тел всех функций, относятся к внешнему уровню, а объявления внутри тел функций относятся к внутреннему уровню. Особый случай представляют объявления формальных параметров функции. В последующих разделах описывается смысл спецификаций класса памяти для каждого варианта объявления, а также поясняются правила умолчания в случае отсутствия в объявлении спецификации класса памяти.</p>
     <p>Функции могут быть объявлены со спецификацией класса памяти <strong>static</strong> или <strong>extern</strong> либо вообще без спецификации класса памяти. Функции всегда имеют глобальное время жизни.</p>
     <p>Объявления функций, в которых опущена спецификация класса памяти, аналогичны объявлениям со спецификацией класса памяти <strong>extern.</strong></p>
     <p>Если в объявлении функции специфицирован класс памяти <strong>static</strong>, то и в ее определении должен быть также указан класс памяти <strong>static</strong> (это требование не является обязательным для СП ТС).</p>
     <p>Объявление функции на внутреннем уровне по смыслу эквивалентно объявлению внешнего уровня, т. е. область действия функции распространяется не до конца блока, а до конца файла.</p>
     <p>Область действия функций для различных спецификаций класса памяти рассмотрена подробно в разделе 2.4 "Время жизни и область действия".</p>
    </section>
    <section>
     <title>
      <p><strong>Объявление переменной на внешнем уровне</strong></p>
     </title>
     <p>Объявления переменной на внешнем уровне используют спецификации класса памяти <strong>static</strong> и <strong>extern</strong> или вообще опускают их. Спецификации класса памяти <strong>auto</strong> и <strong>register</strong> не допускаются на внешнем уровне.</p>
     <p>Объявления переменных на внешнем уровне—это либо определения переменных, либо объявления, т.е. ссылки на определения, сделанные в другом месте.</p>
     <p>Определение внешней переменной—это объявление, которое вызывает выделение памяти для этой переменной и инициализирует ее (явно или неявно). Определение на внешнем уровне может задаваться в следующих различных формах:</p>
     <p>1) Переменная может быть определена путем ее объявления со спецификацией класса памяти <strong>static</strong>. Такая переменная может быть явно инициализирована константным выражением. Если инициализатор отсутствует, то переменная автоматически инициализируется нулевым значением во время компиляции. Таким образом, каждое из объявлений:</p>
     <p>static int k = 16;</p>
     <p>и</p>
     <p>static int k;</p>
     <p>рассматривается как определение.</p>
     <p>2) Переменная может быть определена, если спецификация класса памяти в ее объявлении опущена, и переменная явно инициализируется, например,</p>
     <p>int j = 3;</p>
     <p>Область действия переменной, определенной на внешнем уровне, распространяется от точки, где она определена, до конца исходного файла. Переменная недоступна выше своего определения в том же самом исходном файле. На другие исходные файлы программы область действия переменной распространяется лишь в том случае, если ее определение не содержит спецификации класса памяти <strong>static</strong> и если в других исходных файлах имеется ее объявление.</p>
     <p>Если в объявлении переменной задана спецификация класса памяти <strong>static</strong>, то в других исходных файлах могут быть определены другие переменные с тем же именем и любым классом памяти. Эти переменные никак не будут связаны между собой, поскольку каждое определение <strong>static</strong> доступно только в пределах своего исходного файла.</p>
     <p>Спецификация класса памяти <strong>extern</strong> используется для объявления переменной, определенной где-то в другом месте программы. Такие объявления используются в случае, когда нужно распространить на данный исходный файл область действия переменной, определенной в другом исходном файле, либо сделать переменную доступной в том же исходном файле выше ее определения. Область действия переменной распространяется от места объявления до конца исходного файла.</p>
     <p>В объявлениях, которые используют спецификацию класса памяти <strong>extern</strong>, инициализация не допускается, так как они ссылаются на переменные, значения которых определены в другом месте.</p>
     <p>Каждая переменная внешнего уровня обязательно должна быть определена один и только один раз в каком-либо из исходных файлов, составляющих программу.</p>
     <p>Существует одно исключение из правил, описанных выше. Можно опустить в объявлении переменной на внешнем уровне и спецификацию класса памяти, и инициализатор. Например, объявление <strong>int n;</strong> будет вполне корректным внешним объявлением. Это объявление имеет различный смысл в зависимости от контекста:</p>
     <p>1) Если в каком-то другом исходном файле программы (возможно, в другом исходном файле) есть определение на внешнем уровне переменной с таким же именем, то данное объявление является ссылкой на это определение. В этом случае объявление аналогично объявлению со спецификацией класса памяти <strong>extern</strong>.</p>
     <p>2) Если же такого определения переменной в программе нет, то данное объявление само считается определением переменной. На этапе компоновки программы переменной выделяется память, которая инициализируется нулевым значением. Если в программе имеется более одного объявления переменной с одним и тем же именем, то размер выделяемой памяти будет равен размеру наиболее длинного типа среди всех объявлений этой переменной. Например, если программа содержит два неинициализированных объявления переменной <strong>i</strong> на внешнем уровне <strong>int i;</strong> и <strong>char i;</strong>, то память будет выделена под переменную <strong>i</strong> типа <strong>int</strong>.</p>
     <p><emphasis>Примечание.</emphasis> В описании языка Си, данном его разработчиками в [1], отсутствовала ясная трактовка понятий объявления и определения глобальной переменной. Это привело к тому, что различные компиляторы языка Си используют различные схемы разбора подобных ситуаций. Схема разбора, описанная в данном разделе, рассматривает глобальную переменную как общий блок, разделяемый несколькими исходными файлами. Глобальная переменная фактически представляет собой единую область памяти, которая разделяется несколькими исходными файлами, причем в каждом из них переменная может иметь различный тип.</p>
     <p>Рекомендуется всегда инициализировать объявления переменных на внешнем уровне в файлах, которые предназначены для помещения в библиотеку. Это повышают вероятность выявления случаев нежелательного совпадения имен внешних переменных в библиотечном файле и пользовательской программе. Если переменная в программе пользователя также инициализирована, то компоновщик обнаружит два инициализированных объявления одной и той же глобальной переменной и сообщит об ошибке.</p>
     <p>Возможно наличие в одном исходном файле на внешнем уровне нескольких объявлений переменной с одним и тем же именем. Следующая таблица позволяет определить реакцию компилятора языка Си в различных ситуациях изменения спецификации класса памяти в объявлении. Слово "пусто" в таблице означает ситуацию отсутствия спецификации класса памяти. Очевидно, что компилятор СП MSC строже ограничивает возможность переопределения класса памяти переменной.</p>
     <table>
      <tr>
       <td align="center">Класс 1</td>
       <td align="center">Класс 2</td>
       <td align="center">СП TC</td>
       <td align="center">СП MSC</td>
      </tr>
      <tr>
       <td align="left">extern</td>
       <td align="left">static</td>
       <td align="left">static</td>
       <td align="left">static</td>
      </tr>
      <tr>
       <td align="left">static</td>
       <td align="left">пусто</td>
       <td align="left">static</td>
       <td align="left">ошибка</td>
      </tr>
      <tr>
       <td align="left">static</td>
       <td align="left">extern</td>
       <td align="left">static</td>
       <td align="left">static</td>
      </tr>
      <tr>
       <td align="left">пусто</td>
       <td align="left">static</td>
       <td align="left">static</td>
       <td align="left">ошибка</td>
      </tr>
     </table>
     <empty-line/>
     <p><emphasis>Пример: /*</emphasis> ИСХОДНЫЙ ФАЙЛ 1 */</p>
     <p>/* объявление i, ссылающееся на данное ниже определение i */</p>
     <p>extern int i;</p>
     <p>main()</p>
     <p>{</p>
     <p>i <strong>=</strong> i + 1;</p>
     <p>printf("%d\n", i); /* значение i равно 4 */</p>
     <p>next();</p>
     <p>}</p>
     <p>int i = 3; /* определение i */</p>
     <empty-line/>
     <p>next()</p>
     <p>{</p>
     <p>printf("%d\n", i); /* значение i равно 5 */</p>
     <p>other());</p>
     <p>}</p>
     <p>/* ИСХОДНЫЙ ФАЙЛ 2 */</p>
     <p>/* объявление i, ссылающееся на определение i в первом исходном файле */</p>
     <p>extern int i;</p>
     <p>other()</p>
     <p>{</p>
     <p>i <strong>=</strong> i + 1;</p>
     <p>printf("%d\n", i); /* значение i равно 6 */</p>
     <p>}</p>
     <p>Два исходных файла в совокупности содержат три внешних объявления <strong>i</strong>. Только в одном объявлении содержится инициализация:</p>
     <p><strong>int i = 3;</strong> — глобальная переменная <strong>i</strong> определена с начальным значением 3.</p>
     <p>Самое первое объявление <strong>extern</strong> в первом исходном файле делает глобальную переменную <strong>i</strong> доступной прежде ее определения в файле. Без этого объявления функция <strong>main</strong> не могла бы использовать глобальную переменную <strong>i</strong>. Объявление переменной <strong>i</strong> во втором исходном файле делает глобальную переменную <strong>i</strong> доступной во втором исходном файле.</p>
     <p>Все три функции выполняют одно и то же действие: увеличивают <strong>i</strong> на 1 и печатают полученное значение. Значения распечатываются с помощью стандартной библиотечной функции <strong>printf</strong>. Печатаются значения 4, 5 и 6.</p>
     <p>Если бы переменная <strong>i</strong> не была инициализирована ни в одном из объявлений, она была оы неявно инициализирована нулевым значением при компоновке. В этом случае программа напечатала бы значения 1, 2 и 3.</p>
    </section>
    <section>
     <title>
      <p><strong>Объявление переменной на внутреннем уровне</strong></p>
     </title>
     <p>Любая из четырех спецификаций класса памяти может быть использована для объявления переменной на внутреннем уровне. Если спецификация класса памяти опущена в объявлении переменной на внутреннем уровне, то подразумевается класс памяти <strong>auto</strong>. Как правило, ключевое слово <strong>auto</strong> опускается. Понятия объявления и определения для переменных внутреннего уровня совпадают, если только в объявлении не задана спецификация класса памяти <strong>extern</strong>.</p>
     <p>Спецификация класса памяти <strong>auto</strong> объявляет переменную с локальным временем жизни. Область действия переменной распространяется на блок, в котором она объявлена, (и на все вложенные в него блоки). Переменные класса памяти <strong>auto</strong> автоматически не инициализируются, поэтому в случае отсутствия инициализации в объявлении значение переменной класса памяти <strong>auto</strong> считается неопределенным. Память под переменные класса памяти <strong>auto</strong> отводится в стеке.</p>
     <p>Спецификация класса памяти <strong>register</strong> требует, чтобы компилятор языка Си выделил переменной память в регистре микропроцессора, если это возможно. Использование регистровой памяти обычно ускоряет доступ к переменной и уменьшает размер выполняемого кода программы. Переменные, объявленные с классом памяти <strong>register</strong>, имеют ту же самую область действия, что и переменные <strong>auto</strong>.</p>
     <p>Число регистров, которое может быть использовано для хранения переменных, зависит от компьютера и от реализации компилятора языка Си. Если компилятор языка Си обнаруживает спецификацию класса памяти <strong>register</strong> в объявлении переменной, а свободного регистра не имеется, или переменная данного типа не может быть размещена в регистре, то переменной выделяется память класса <strong>auto</strong>. В СП MSC регистровая память всегда выделяется переменным в том порядке, в котором они объявляются в исходном файле. В СП TC, при наличии нескольких переменных класса памяти <strong>register</strong> в одном объявлении, регистровая память будет выделяться переменным в обратном порядке. Так, по объявлению <strong>register i, j;</strong> первой получит регистровую память переменная <strong>j</strong>.</p>
     <p>В регистровой памяти может быть размещен объект размером не больше, чем тип <strong>int</strong>. К переменной, размещенной в регистре, нельзя применять операцию адресации. При вызове функций из блока, в котором определены регистровые переменные, содержимое регистров будет сохранено в памяти, а по возвращении в блок восстановлено.</p>
     <p>Для каждого рекурсивного входа в блок порождается новый набор переменных класса памяти <strong>auto</strong> и <strong>register</strong>. При этом каждый раз производится инициализация переменных, в объявлении которых заданы инициализаторы.</p>
     <p>Переменная, объявленная на внутреннем уровне со спецификацией класса памяти <strong>static</strong>, имеет глобальное время жизни, но ее область действия распространяется только на блок, в котором она объявлена (и на все вложенные блоки). В отличие от переменных класса памяти <strong>auto</strong>, переменные, объявленные со спецификацией класса памяти <strong>static</strong>, сохраняют свое значение при выходе из блока. Переменные класса памяти <strong>static</strong> могут быть инициализированы константным выражением. Если явной инициализации нет, то переменная класса памяти <strong>static</strong> автоматически инициализируется нулевым значением. Инициализация выполняется один раз во время компиляции и не повторяется при каждом входе в блок. Все рекурсивные вызовы данного блока будут разделять единственный экземпляр переменной класса памяти <strong>static</strong>.</p>
     <p>Переменная, объявленная со спецификацией класса памяти <strong>extern</strong>, является ссылкой на переменную с тем же самым именем, определенную на внешнем уровне в любом исходном файле программы. Цель внутреннего объявления <strong>extern</strong> состоит в том, чтобы сделать определение переменной внешнего уровня (как правило, данное в другом исходном файле) доступным именно внутри данного блока. Внутреннее объявление <strong>extern</strong> не влияет на область действия объявляемой глобальной переменной в любой другой части программы.</p>
     <p>Пример:</p>
     <p>inl i = 1; /* определение i */</p>
     <p>main()</p>
     <p>{</p>
     <p>/* объявление i, ссылающееся на данное выше определение */</p>
     <p>extern int i;</p>
     <p>/* начальное значение а равно нулю; область действия а — функция main */</p>
     <p>static int a;</p>
     <p>/* b будет (по возможности) помещено в регистр */</p>
     <p>register int b = 0;</p>
     <p>/* по умолчанию с будет иметь класс памяти auto */</p>
     <p>int с = 0;</p>
     <p>/* печатаются значения 1, 0, 0, 0*/</p>
     <p>printf("%d,%d,%d,%d\n", i, a, b, c);</p>
     <p>}</p>
     <p>other()</p>
     <p>/* локальное переопределение переменной i */</p>
     <p>int i = 16;</p>
     <p>/* область действия переменной а — функция other */</p>
     <p>static int a = 2;</p>
     <p>a += 2;</p>
     <p>/* печатаются значения 16, 4 */</p>
     <p>printf("%d,%d\n", i, a);</p>
     <p>}</p>
     <p>Переменная i определяется на внешнем уровне с начальным значением 1; В функции <strong>main</strong> объявление i является ссылкой на определение переменной i внешнего уровня. Эта ссылка необязательна, поскольку и без нее внешняя переменная i доступна во всех функциях данного исходного файла. Переменная а класса памяти <strong>static</strong> автоматически инициализируется нулевым значением, так как явная инициализация опущена. Определяется переменная b регистрового класса памяти и переменная с класса памяти <strong>auto</strong>. Вызывается стандартная функция <strong>printf</strong>, которая печатает значения 1, 0, 0, 0.</p>
     <p>В функции <strong>other</strong> переменная i переопределяется как локальная переменная с начальным значением 16. Это не влияет на значение внешней переменной i, поскольку эти переменные никак не связаны между собой. Переменная а объявляется со спецификацией класса памяти <strong>static</strong> и начальным значением 2. Она никак не связана с переменной а, объявленной в функции <strong>main</strong>, так как область действия переменных класса памяти <strong>static</strong> на внутреннем уровне ограничена блоком, в котором они объявлены. Значение переменной а увеличивается на 2 и становится равным 4. Если бы функция <strong>other</strong> была вызвана еще раз в той же функции <strong>main</strong>, то значение а при входе было бы равно 4, а при выходе—6. Внутренние переменные класса памяти <strong>static</strong> сохраняют свои значения при входе в блок и выходе из блока, в котором они объявлены. Значение переменной а в функции <strong>main</strong> при этом не изменилось бы.</p>
    </section>
   </section>
   <section>
    <title>
     <p><strong>Инициализация</strong></p>
    </title>
    <section>
     <p>Переменной в объявлении может быть присвоено начальное значение посредством инициализатора. Записи инициализатора в объявлении предшествует знак равенства</p>
     <p><strong>=</strong>&lt;<emphasis>инициализатор</emphasis>&gt;</p>
     <p>Можно инициализировать переменные любого типа. Функции не инициализируются. Объявления, которые используют спецификацию класса памяти <strong>extern</strong>, не могут содержать инициализатор.</p>
     <p>Переменная, объявленная на внешнем уровне без спецификации класса памяти, может быть инициализирована не более одного раза в каком-либо из исходных файлов, составляющих программу. Если же она явно не инициализирована ни в одном из исходных файлов, то компоновщик инициализирует ее нулевым значением.</p>
     <p>Переменная класса памяти <strong>static</strong>, объявленная как на внешнем, так и на внутреннем уровне, может быть инициализирована константным выражением не более одного раза в исходном файле. Если ее явная инициализация отсутствует, то компилятор языка Си инициализирует ее нулевым значением.</p>
     <p>Инициализация переменных класса памяти <strong>auto</strong> и <strong>register</strong> выполняется каждый раз при входе в блок (за исключением входа в блок по оператору <strong>goto</strong>), в котором они объявлены. Если инициализатор опущен в объявлении переменной класса памяти <strong>auto</strong> или <strong>register</strong>, то ее начальное значение не определено. Инициализация переменных составных типов (массив, структура, объединение), имеющих класс памяти <strong>auto</strong>, запрещена в СП MSC, но допускается в СП ТС даже для переменных, объявленных с модификатором <strong>const</strong>. Переменные составного типа, имеющие класс памяти <strong>static</strong>, могут быть инициализированы на внутреннем уровне.</p>
     <p>Инициализирующими значениями для переменных внешнего уровня, а также переменных класса памяти <strong>static</strong> внутреннего уровня должно быть константное выражение (см. раздел 4.2.9). Переменные классов памяти <strong>auto</strong> и <strong>register</strong> могут быть инициализированы не только константными выражениями, но и выражениями, содержащими переменные и вызовы функций.</p>
    </section>
    <section>
     <title>
      <p><strong>Базовые типы и указатели</strong></p>
     </title>
     <p>Синтаксис:</p>
     <p>=<strong>&lt;</strong><emphasis>выражение</emphasis><strong>&gt;</strong></p>
     <p>Значение выражения присваивается переменной. При необходимости выполняются правила преобразования типов.</p>
     <p>Примеры:</p>
     <p>int х = 10, у = 20; /* пример 1 */</p>
     <p>register int *рх = 0; /* пример 2 */</p>
     <p>int с = (3*1024); /* пример 3 */</p>
     <p>int *b = &amp;x; /* пример 4 */</p>
     <p>В первом примере переменная <strong>х</strong> инициализируется константным выражением 10, переменная <strong>у</strong> инициализируется константным выражением 20. Во втором примере указатель <strong>рх</strong> инициализирован нулевым значением. В третьем примере используется константное выражение для инициализации переменной <strong>с</strong>. В четвертом примере указатель <strong>b</strong> инициализируется адресом переменной <strong>х</strong>.</p>
    </section>
    <section>
     <title>
      <p><strong>Составные типы</strong></p>
     </title>
     <p>Элементы объектов составных типов инициализируются только константными выражениями.</p>
     <p>Инициализация объектов составных типов имеет следующий синтаксис:</p>
     <p>= {&lt;<emphasis>список инициализаторов</emphasis>&gt;}</p>
     <p>Список инициализаторов представляет собой последовательность инициализаторов, разделенных запятыми. Список инициализаторов заключается в фигурные скобки. Каждый инициализатор в списке представляет собой либо константное выражение, либо, в свою очередь, список инициализаторов. Таким образом, заключенный в фигурные скобки список может появиться внутри другого списка инициализаторов. Эта конструкция используется для инициализации тех элементов объектов составных типов, которые сами имеют составной тип.</p>
     <p>Значения константных выражений из каждого списка инициализаторов присваиваются элементам объекта составного типа в порядке их следования.</p>
     <p>Для инициализации объединения список инициализаторов должен содержать единственное константное выражение. Значение этого константного выражения присваивается первому элементу объединения. В СП ТС не обязательно заключать это константное выражение в фигурные скобки.</p>
     <p>Наличие списка инициализаторов в объявлении массива позволяет не указывать число элементов по его первой размерности. В этом случае количество элементов в списке инициализаторов и определяет число элементов по первой размерности массива. Тем самым определяется размер памяти, необходимой для хранения массива. Число элементов по остальным размерностям массива, кроме первой, указывать обязательно.</p>
     <p>Если в списке инициализаторов меньше элементов, чем в объекте составного типа, то оставшиеся элементы объекта неявно инициализируются нулевыми значениями. Если же число инициализаторов больше, чем требуется, то выдается сообщение об ошибке. Эти правила применяются и к каждому вложенному списку инициализаторов.</p>
     <p>Пример 1:</p>
     <p>int р[4][3] =</p>
     <p>{</p>
     <p>{1, 1, 1},</p>
     <p>{2, 2, 2},</p>
     <p>{3, 3, 3,},</p>
     <p>{4, 4, 4,},</p>
     <p>};</p>
     <p>В примере объявляется двумерный массив р, размером 4 строки на 3 столбца, элементы первой строки инициализируются единицами, второй строки — двойками и т. д. Обратите внимание на то, что списки инициализаторов двух последних строк содержат в конце запятую. За последним списком инициализаторов (4,4,4,) также стоит запятая. Эти дополнительные запятые не требуются, но допускаются. Требуются только те запятые, которые разделяют константные выражения и списки инициализаторов. Если список инициализаторов не имеет вложенной структуры, аналогичной структуре объекта составного типа, то элементы списка присваиваются элементам объекта в порядке следования. Поэтому вышеприведенная инициализация эквивалентна следующей:</p>
     <p>int p[4][3] = {1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4};</p>
     <p>При инициализации объектов составных типов нужно внимательно следить за правильностью расстановки фигурных скобок в списках инициализаторов. В следующем примере этот вопрос иллюстрируется более детально.</p>
     <p>Пример 2.</p>
     <p>struct {</p>
     <p>int n1, n2, n3;</p>
     <p>} nlist[2][3] = {</p>
     <p>{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}), /* строка 1 */</p>
     <p>{{10,11,12}, {13,14,15}, {15,16,17}} /* строка 2 */</p>
     <p>}</p>
     <p>В примере переменная <strong>nlist</strong> объявляется как двумерный массив структур, состоящий из двух строк и трех столбцов. Каждая структура содержит три элемента. В строке 1 значения присваиваются первой строке массива <strong>nlist</strong> следующим образом:</p>
     <p>1) Первая левая фигурная скобка строки 1 информирует компилятор языка Си о том, что начинается инициализация первой строки массива <strong>nlist</strong> (т. е. <strong>nlist</strong>[0]).</p>
     <p>2) Вторая левая фигурная скобка означает, что начинается инициализация первого элемента первой строки массива (т. е. <strong>nlist</strong>[0][0]).</p>
     <p>3) Первая правая фигурная скобка сообщает об окончании инициализации структуры <strong>nlist</strong>[0][0]. Следующая левая фигурная скобка сообщает о начале инициализации второго элемента первой строки <strong>nlist</strong>[0][1].</p>
     <p>4) Процесс инициализации элементов подмассива <strong>nlist</strong>[0] продолжается до конца строки 1 и заканчивается по последней правой фигурной скобке.</p>
     <p>Аналогично, в строке 2 присваиваются значения второй строке массива <strong>nlist</strong>, т. е. <strong>nlist</strong>[1].</p>
     <p>Следует понимать, что фигурные скобки, охватывающие инициализаторы строки 1 и строки 2, необходимы. Следующая конструкция, в которой внешние фигурные скобки опущены, неверна.</p>
     <p>struct {</p>
     <p>int n1, n2, nЗ;</p>
     <p>} nlist[2][3] = {</p>
     <p>{1, 2, 3}, {4, 5, 6), {7, 8, 9),/* строка 1 */</p>
     <p>{10,11,12), {13,14,15}, {16,17,18} /* строка 2 */</p>
     <p>};</p>
     <p>В этом примере по первой левой фигурной скобке в строке 1 начинается инициализация подмассива <strong>nlist</strong>[0], который является массивом из трех структур. Значения 1, 2, 3 назначаются трем элементам первой структуры (<strong>nlist</strong>[0][0]). Когда встретится правая фигурная скобка (после значения 3), инициализация подмассива <strong>nlist</strong>[0] закончится и две оставшиеся структуры — <strong>nlist</strong>[0][1] и <strong>nlist</strong>[0][2] — будут по умолчанию инициализированы нулевыми значениями. Аналогично, список {4,5,6} инициализирует первую структуру во второй строке <strong>nlist</strong> (т. е. <strong>nlist</strong>[1][0]), а оставшиеся две структуры — <strong>nlist</strong>[l][l] и <strong>nlist</strong>[1][2] — по умолчанию инициализируются нулевыми значениями. Когда компилятор языка Си обнаружит следующий список инициализаторов {7,8,9), он попытается инициализировать подмассив <strong>nlist</strong>[2]. Однако, поскольку <strong>nlist</strong> содержит только две строки и элемента <strong>nlist</strong>[2] в нем не существует, будет выдано сообщение об ошибке.</p>
     <p>Пример 3.</p>
     <p>union {</p>
     <p>char m[2][3];</p>
     <p>int i, j, k;</p>
     <p>} y = {</p>
     <p>{'1'},</p>
     <p>{'4'}</p>
     <p>};</p>
     <p>В третьем примере инициализируется переменная у типа объединение. Первым элементом объединения является массив; он и будет инициализироваться. Список инициализаторов {'1'} задает значения для первой строки массива (m[0]). Поскольку в списке всего одно значение, то только первый элемент строки массива — m[0][0] —инициализируется символом '1', а оставшиеся два элемента в строке инициализируются по умолчанию нулевыми значениями (символом '\0'). Аналогично, первый элемент второй строки массива m инициализируется значением '4', а остальные элементы инициализируются по умолчанию нулевыми значениями.</p>
    </section>
    <section>
     <title>
      <p><strong>Строковые инициализаторы</strong></p>
     </title>
     <p>Существует специальная форма инициализации массива типа <strong>char</strong> — с помощью символьной строки. Например, объявление</p>
     <p>char code[] = "abc";</p>
     <p>инициализирует массив <emphasis>code</emphasis> четырьмя символами—'a', 'b', 'c' и символом '\0', который завершает символьную строку.</p>
     <p>Если в объявлении размер массива указан, а длина инициализирующей строки превышает указанный размер, то лишние символы отбрасываются. Следующее объявление инициализирует трехэлементный массив <emphasis>code</emphasis> типа <strong>char</strong>:</p>
     <p>char code[3] = "abcd";</p>
     <p>В примере только три первые символа инициализатора заносятся в массив <emphasis>code.</emphasis> Символ <emphasis>d</emphasis> и символ '\0' отбрасываются.</p>
     <p>Если инициализирующая строка короче, чем специфицированный размер массива, то оставшиеся элементы массива инициализируются нулевым значением (символом '\0').</p>
     <p>Символьной строкой можно инициализировать не только массив типа <strong>char</strong>, но и указатель на тип <strong>char</strong>. Например, в объявлении</p>
     <p>char *ptr = "abcd";</p>
     <p>указатель ptr будет инициализирован адресом массива типа <strong>char</strong>, содержащего символы 'а', 'b', 'с', 'd', '\0'.</p>
    </section>
   </section>
   <section>
    <title>
     <p><strong>Объявление типа</strong></p>
    </title>
    <section>
     <p>Существует два особых вида объявления, в которых объявляется не переменная или функция, а тип данных. Первый вид позволяет определить тег и элементы структуры, объединения или перечислимого типа. После такого объявления имя типа (тег) может быть использовано в объявлениях переменных и функций для ссылки на этот тип.</p>
     <p>Второй вид объявления типа использует ключевое слово <strong>typedef</strong>. Это объявление позволяет присвоить осмысленные имена типам, уже существующим в языке или создаваемым пользователем.</p>
     <p>Объявление типа имеет такую же блочную область действия, как и объявление переменной. Локальное переобъявление имени типа также возможно. Однако теги занимают отдельное пространство имен, а идентификаторы, объявленные посредством <strong>typedef</strong>, разделяют пространство имен с переменными и функциями.</p>
    </section>
    <section>
     <title>
      <p><strong>Объявление тега</strong></p>
     </title>
     <p>Объявление типа структуры, объединения или перечислимого типа имеет такую же синтаксическую форму, как и объявление переменной этих типов, однако в объявлении типа идентификатор переменной (а в общем случае описатель) опущен. Именем типа структуры, объединения или перечислимого типа является тег, который в данном случае обязателен.</p>
     <p>Примеры.</p>
     <p>/* пример 1 */</p>
     <p>enum status {</p>
     <p>loss = -1,</p>
     <p>bye,</p>
     <p>tie = 0,</p>
     <p>win</p>
     <p>};</p>
     <p>/* пример 2 */</p>
     <p>struct student {</p>
     <p>char name [20];</p>
     <p>int id, class;</p>
     <p>}</p>
     <p>В первом примере объявляется перечислимый тип с именем <strong>status</strong>. Имя типа может быть использовано в объявлениях переменных этого перечислимого типа. Идентификатору <strong>loss</strong> явно присваивается значение -1. Идентификаторы <strong>bye</strong> и <strong>tie</strong> ассоциируются со значением 0, a <strong>win</strong> - со значением 1.</p>
     <p>Во втором примере объявляется структурный тип с именем <strong>student</strong>. Объявление типа <strong>student</strong> позволяет записывать впоследствии лаконичные объявления переменных этого типа, например объявление <strong>struct student employee</strong>, в котором объявляется структурная переменная <strong>employee</strong> типа <strong>student</strong>.</p>
    </section>
    <section>
     <title>
      <p><strong>Объявление typedef</strong></p>
     </title>
     <p>Синтаксис:</p>
     <p>typedef <strong>&lt;</strong><emphasis>спецификация типа</emphasis><strong>&gt; &lt;</strong><emphasis>описатель</emphasis><strong>&gt;</strong> {,<strong>&lt;</strong><emphasis>описатель</emphasis>&gt;…];</p>
     <p>Объявление <strong>typedef</strong> синтаксически аналогично объявлению переменной или функции, за исключением того, что вместо спецификации класса памяти записывается ключевое слово <strong>typedef</strong> и отсутствует инициализатор.</p>
     <p>Объявление <strong>typedef</strong> интерпретируется таким же образом, как объявление переменной или функции, однако идентификатор, входящий в состав описателя, специфицирует не переменную или функцию, а тип. Идентификатор становится синонимом для объявленного типа и может употребляться в последующих объявлениях. Другими словами, создаются не новые типы, а имена для специфицированных программистом типов. С помощью <strong>typedef</strong> может быть объявлено имя для любого типа, как базового, так и составного — указателя, функции, массива.</p>
     <p>Объявление <strong>typedef</strong> для типа указатель на структуру, объединение или значение перечислимого типа, использующее только тег этой структуры, объединения или перечислимого типа, может быть записано раньше, чем данный тег будет определен в программе, однако определение тега должно находиться в пределах области действия этого объявления <strong>typedef</strong> и до того, как объявленный тип будет использован.</p>
     <p>Принято записывать идентификаторы типов, объявленные посредством <strong>typedef</strong>, прописными буквами, однако это не является требованием языка.</p>
     <p>Примеры:</p>
     <p><emphasis>/*</emphasis> пример 1 */</p>
     <p>typedef int WHOLE;</p>
     <p>/* пример 2 */</p>
     <p>typedef struct club {</p>
     <p>char name [30];</p>
     <p>int size, year;</p>
     <p>} GROUP;</p>
     <p>/* пример 3 */</p>
     <p>typedef GROUP *PG;</p>
     <p>/* пример 4 */</p>
     <p>typedef void DRAWF (int, int);</p>
     <p>В первом примере объявляется тип WHOLE как синоним для типа <strong>int</strong>. Во втором примере объявляется тип GROUP для структурного типа, содержащего три элемента. Поскольку специфицирован также тег <strong>club</strong>, то в последующих объявлениях переменных может быть использован либо тип GROUP, либо тег <strong>club</strong>. Например, объявления GROUP <strong>stgr</strong>; и <strong>struct club stgr</strong>, эквивалентны по смыслу.</p>
     <p>В третьем примере используется имя типа GROUP для объявления типа указатель. Тип PG объявляется как указатель на тип GROUP, который определен ранее как структурный тип. Например, объявление <emphasis>PG ptr,</emphasis> эквивалентно объявлению <emphasis>struct club *pfr.</emphasis></p>
     <p>В последнем примере объявлен тип DRAWF для функции, не возвращающей значения и требующей два аргумента типа <strong>int</strong>. Например, объявление DRAWF box; эквивалентно объявлению void box(int, int);.</p>
    </section>
    <section>
     <title>
      <p><strong>Абстрактные имена типов</strong></p>
     </title>
     <p>В разделах 3.8.1 и 3.8.2 рассматривались объявления, в которых типам присваиваются идентификаторы для последующего использования. Однако иногда возникает необходимость специфицировать некоторый тип данных без присвоения ему идентификатора и без объявления какого-либо объекта. Такая конструкция, определяющая тип без имени, называется абстрактным именем типа. Абстрактные имена типов используются в трех контекстах: в списках типов аргументов при объявлении функций, в операции приведения типа и в операции <strong>sizeof</strong>. Списки типов аргументов рассматривались в разделе 3.5 "Объявление функции". Операция приведения типа и операция <strong>sizeof</strong> обсуждаются в разделах 4.7.2 и 4.3.2, соответственно.</p>
     <p>Абстрактными именами для базовых, перечислимых, структурных типов и объединений являются просто соответствующие им спецификации типа. Если в абстрактном имени типа задано определение тега (см. раздел 3.8.1), то область действия этого тега распространяется в СП MSC на остаток блока, а в СП ТС — на остаток тела функции. Абстрактные имена для типов указатель, массив и функция задаются следующей синтаксической конструкцией:</p>
     <p>&lt;<emphasis>спецификация типа</emphasis>&gt; &lt;<emphasis>абстрактный описатель</emphasis>&gt;</p>
     <p>Абстрактный описатель отличается от обычного Описателя только тем, что он не содержит идентификатора. Как и обычный описатель, он может содержать один или более признаков указателя, массива и функции. Для интерпретации абстрактного описателя следует прежде всего определить в нем место подразумеваемого идентификатора. После этого интерпретация проводится так же, как описано в разделе 3.3.2. Абстрактный описатель, состоящий только из пары пустых круглых скобок, недопустим, поскольку он не позволяет однозначно определить, где подразумевается идентификатор: если внутри скобок, то описан простой тип (заданный только спецификацией типа), а если перед скобками, то тип функция.</p>
     <p>Объявления <strong>typedef</strong>, рассмотренные в разделе 3.8.2, позволяют присваивать короткие, осмысленные идентификаторы абстрактным именам типов и могут использоваться в том же контексте, что и они.</p>
     <p>Примеры:</p>
     <p>long * /* пример 1 */</p>
     <p>int (*)[5] /* пример 2 */</p>
     <p>int (*)(void) /* пример 3 */</p>
     <p>PG /* пример 4 */</p>
     <p>В первом примере задано абстрактное имя типа для указателя на тип <strong>long</strong>.</p>
     <p>Во втором примере задано абстрактное имя типа для указателя на массив из пяти элементов типа <strong>int</strong>.</p>
     <p>В третьем примере задано абстрактное имя типа для указателя на функцию, не требующую аргументов и возвращающую значение типа <strong>int</strong>.</p>
     <p>В четвертом примере с помощью идентификатора PG, объявленного посредством <strong>typedef</strong> в разделе 3.8.2, задано абстрактное имя типа "указатель на структуру с тегом <strong>club</strong>".</p>
    </section>
   </section>
  </section>
  <section>
   <title>
    <p><strong>ВЫРАЖЕНИЯ</strong></p>
   </title>
   <section>
    <title>
     <p><strong>Введение</strong></p>
    </title>
    <p>Выражение — это комбинация операндов и операций, задающая порядок вычисления некоторого значения. Операции определяют действия, выполняемые над операндами. Операнд в простейшем случае является константой или переменной. В общем случае каждый операнд выражения также представляет собой выражение, имеющее некоторое значение.</p>
    <p>В отличие от многих языков программирования высокого уровня, в языке Си присваивание само является выражением. Как любое выражение, присваивание имеет значение — это тот результат, который присваивается переменной, задаваемой левым операндом. Помимо простого присваивания, в языке Си существуют составные операции присваивания, которые выполняют дополнительные операции над своими операндами.</p>
    <p>Результат вычисления выражения зависит от приоритета операций, а также от возможных побочных эффектов. Приоритет операций определяет группирование операндов в выражении и последовательность выполнения операций. Побочным эффектом называется изменение значения какого-либо операнда, вызванное вычислением другого операнда. Для некоторых операций возникновение побочного эффекта зависит от порядка вычисления операндов.</p>
    <p>Значение, представляемое операндом в выражении, имеет тип. Этот тип может быть в ряде случаев преобразован (явно или неявно) к другому типу по некоторым правилам. Преобразования типов описаны в разделе 4.7.</p>
   </section>
   <section>
    <title>
     <p><strong>Операнды</strong></p>
    </title>
    <section>
     <p>Операндом выражения может быть константа, идентификатор или символьная строка. Эти операнды могут посредством так называемых первичных операций комбинироваться в первичные выражения — вызов функции, индексное выражение, выражение выбора элемента. Эти первичные выражения, в свою очередь, являются операндами содержащего их выражения. Комбинация их с другими операциями приводит к образованию новых, более сложных выражений, также являющихся операндами содержащего их выражения, и т.д. Часть выражения, заключенная в круглые скобки, также рассматривается как операнд выражения. Если все операнды выражения являются константами, оно называется константным выражением.</p>
     <p>Каждый операнд имеет тип. В разделе 4.3 "Операции" рассматриваются допустимые типы операндов для каждого вида операций. Следует помнить, что перечислимый тип является подмножеством целого типа, и его значения участвуют в выражениях как значения целого типа. Тип операнда может быть явно преобразован к другому типу посредством операции приведения типа (см. раздел 4.7.2). Выражение приведения типа само рассматривается как операнд содержащего его выражения.</p>
    </section>
    <section>
     <title>
      <p><strong>Идентификаторы</strong></p>
     </title>
     <p>Идентификаторы именуют переменные и функции. С каждым идентификатором ассоциируется тип, который задается при его объявлении. Значение объекта, именуемого идентификатором, зависит от типа следующим образом:</p>
     <p>1) Идентификаторы переменных целого и плавающего типа представляют значения соответствующего типа.</p>
     <p>2) Идентификатор переменной перечислимого типа представляет значение одной константы из соответствующего этому типу списка перечисления. Тип этого значения—<strong>int</strong>.</p>
     <p>3) Идентификатор структуры или объединения представляет совокупность значений, специфицированных этой структурой или объединением.</p>
     <p>4) Идентификатор указателя представляет адрес некоторого объекта специфицированного типа. Если указателю не присвоено никакого значения, то использование его в выражении может привести к трудно выявляемой ошибке. В языке Си определено, что никакой программный объект не может иметь адрес NULL (ноль), поэтому указатель со значением NULL не указывает ни на какой объект.</p>
     <p>5) Идентификатор массива представляет массив, но если в выражении требуется скалярная величина, то представляет адрес первого элемента этого массива. Тип идентификатора — указатель на тип элементов массива. Из этого следует, что использование в выражениях массивов и указателей имеет много общего. Во многих случаях способ организации доступа к объекту — либо по указателю, либо как к элементу массива — не имеет принципиальной разницы и определяется исключительно выбранным стилем программирования. Это родство между массивами и указателями является существенной особенностью языка Си, выделяющей его среди других языков программирования высокого уровня.</p>
     <p>Существуют, однако, некоторые различия между массивами и указателями. Во-первых, указатель занимает одну ячейку памяти, предназначенную для хранения машинного адреса (в частности, адреса какого-либо массива). Массив же занимает столько ячеек памяти, сколько элементов определено в нем при его объявлении. Только в выражении массив представляется своим адресом, который эквивалентен указателю. Во-вторых, адрес массива является постоянной величиной, поэтому, в отличие от идентификатора указателя, идентификатор массива не может составлять левую часть операции присваивания.</p>
     <p>6) Идентификатор функции представляет функцию, т.е. адрес точки входа в функцию. Тип идентификатора — функция, возвращающая значение специфицированного для нее типа. Однако если в выражении требуется скалярная величина, то типом идентификатора считается указатель на функцию. Адрес функции не изменяется во время выполнения программы и, следовательно, не является переменной величиной. Поэтому идентификатор функции не может составлять левую часть операции присваивания.</p>
    </section>
    <section>
     <title>
      <p><strong>Константы</strong></p>
     </title>
     <p>Операнду-константе соответствует значение и тип представляющей его константы. Типы констант подробно описаны в разделе 1.2. Символьная константа имеет тип <strong>int</strong>. Целая константа имеет один из следующих типов: <strong>int</strong>, <strong>long</strong>, <strong>unsigned int</strong> или <strong>unsigned long</strong>, в зависимости от размера целого на данном компьютере и от того, как специфицировано ее значение. Константы с плавающей точкой имеют тип <strong>double</strong> (в версии 2.0 СП ТС допустимы также константы типа <strong>float</strong>). Символьные строки имеют тип массив символов; они обсуждаются в разделе 4.2.3.</p>
    </section>
    <section>
     <title>
      <p><strong>Символьные строки</strong></p>
     </title>
     <p>Символьная строка состоит из последовательности символов, заключенных в двойные кавычки. Эта последовательность представляется в памяти как массив элементов типа <strong>char</strong>. Символьная строка представляет в выражении адрес этого массива, т. е. адрес первого элемента строки.</p>
     <p>Поскольку символьная строка представляет адрес массива, она может быть использована в контексте, допускающем значение типа указатель, подчиняясь при этом тем же ограничениям. Однако, поскольку адрес символьной строки является постоянной величиной, символьная строка не может составлять левую часть операции присваивания.</p>
    </section>
    <section>
     <title>
      <p><strong>Вызовы функций</strong></p>
     </title>
     <p>Синтаксис:</p>
     <p>&lt;<emphasis>выражение</emphasis>&gt; (&lt;<emphasis>список-выражений</emphasis>&gt;)</p>
     <p>Значением &lt;выражения&gt; должен быть адрес функции. В простейшем случае это идентификатор функции. &lt;<emphasis>Список выражений</emphasis>&gt; содержит выражения, разделенные запятыми. Значение каждого из этих выражений соответствует фактическому аргументу функции. Список выражений может быть пустым, если функция не имеет аргументов, однако наличие скобок и в этом случае обязательно.</p>
     <p>Выражение вызова функции имеет тип — тип возвращаемого функцией значения. Если объявлен тип возвращаемого значения <strong>void</strong>, то и выражение вызова функции имеет тип <strong>void</strong>. Если возврат из вызванной функции произошел не в результате выполнения оператора <strong>return</strong>, содержащего выражение, то значение функции не определено. В разделе 6.4 дана более полная информация о вызовах функций.</p>
    </section>
    <section>
     <title>
      <p><strong>Индексные выражения</strong></p>
     </title>
     <p>Синтаксис:</p>
     <p>&lt;<emphasis>выражение1</emphasis>&gt;[&lt;<emphasis>выражение2</emphasis>&gt;]</p>
     <p>Здесь квадратные скобки являются символами языка Си, а не элементами описания.</p>
     <p>Значение индексного выражения находится по адресу, который вычисляется как сумма значений &lt;<emphasis>выражения1</emphasis>&gt; и &lt;<emphasis>выражения2</emphasis>&gt;. Выражение1 должно иметь тип указателя на некоторый тип, например быть идентификатором массива, а выражение2, заключенное в квадратные скобки, должно иметь целый тип. Однако требование синтаксиса состоит лишь в том, чтобы одно из выражений было указателем, а другое имело целый тип; порядок же следования выражений безразличен.</p>
     <p>Индексное выражение обычно используется для доступа к элементам массива, однако индексацию можно применить к любому указателю.</p>
     <p>Индексное выражение вычисляется путем сложения целого значения со значением указателя (или с адресом массива) и последующим применением к результату операции косвенной адресации. Операция косвенной адресации описана в разделе 4.3.2. Например, для одномерного массива следующие четыре выражения эквивалентны, если а — массив или указатель, а b — целое.</p>
     <p>а[b]</p>
     <p>*(а + b)</p>
     <p>*(b + а)</p>
     <p>b[а]</p>
     <p>В соответствии с правилами преобразования типов для операции сложения (смотри раздел 4.3.4) целочисленное значение при сложении с указателем (адресом) должно умножаться на размер типа, адресуемого указателем. Предположим, например, что идентификатор <strong>line</strong> определен как массив типа <strong>int</strong>. При вычислении выражения <strong>line[i]</strong>, целое значение <strong>i</strong> умножается на размер типа <strong>int</strong>. Полученное значение представляет <strong>i</strong> ячеек типа <strong>int</strong>. Это значение складывается со значением указателя <strong>line</strong>, что дает адрес объекта, смещенного на <strong>i</strong> ячеек типа <strong>int</strong> относительно <strong>line</strong>, т.е. адрес <strong>i</strong>-го элемента <strong>line</strong>.</p>
     <p>Заключительным шагом вычисления индексного выражения является применение к полученному адресу операции косвенной адресации. Результатом является значение <strong>i</strong>-го элемента массива <strong>line</strong>.</p>
     <p>Следует помнить, что индексное выражение <strong>line</strong>[0] представляет значение первого элемента массива, так как индексация элементов массива начинается с нуля. Следовательно, выражение <strong>line</strong>[5] ссылается на шестой по порядку следования в памяти элемент массива.</p>
     <subtitle><strong>Доступ к многомерному массиву</strong></subtitle>
     <p>Индексное выражение может иметь более одного индекса. Синтаксис такого выражения следующий:</p>
     <p>&lt;<emphasis>выражение1</emphasis>&gt;[&lt;<emphasis>выражение2</emphasis>&gt;][&lt;<emphasis>выражение3</emphasis>&gt;]…</p>
     <p>Индексное выражение интерпретируется слева направо. Сначала вычисляется самое левое индексное выражение — &lt;<emphasis>выражение1</emphasis>&gt;[&lt;<emphasis>выражение2</emphasis>&gt;]. С адресом, полученным в результате сложения &lt;<emphasis>выражения1</emphasis>&gt; и &lt;<emphasis>выражения2</emphasis>&gt;, складывается (по правилам сложения указателя и целого) &lt;<emphasis>выражение3</emphasis>&gt; и т. д. &lt;<emphasis>ВыражениеЗ</emphasis>&gt; и последующие &lt;<emphasis>выражения</emphasis>&gt; имеют целый тип. Операция косвенной адресации осуществляется после вычисления последнего индексного выражения. Однако, если значение последнего указателя адресует значение типа массив, операция косвенной адресации не применяется (смотри третий и четвертый примеры ниже).</p>
     <p>Выражения с несколькими индексами ссылаются на элементы многомерных массивов. Многомерный массив в языке Си понимается как массив, элементами которого являются массивы. Например, элементами трехмерного массива являются двумерные массивы.</p>
     <p>Примеры:</p>
     <p>int рrор[3][4][6];</p>
     <p>int i, *ip, (*ipp)[6];</p>
     <p>i = prop[0][0][1]; /* пример 1 */</p>
     <p>i = prop[2][1][3]; /* пример 2 */</p>
     <p>ip = prop[2][1]; /* пример 3 */</p>
     <p>ipp = prop[2]; /* пример 4 */</p>
     <p>Массив с именем <strong>prop</strong> содержит 3 элемента, каждый из которых является двумерным массивом значений типа <strong>int</strong>. В примере 1 показано, каким образом получить доступ ко второму элементу (типа <strong>int</strong>) массива <strong>prop</strong>. Поскольку массив заполняется построчно, последний индекс меняется наиболее быстро. Выражение <strong>prop</strong>[0][0][2] ссылается на следующий (третий) элемент массива и т. д.</p>
     <p>Во втором примере выражение вычисляется следующим образом:</p>
     <p>1) Первый индекс 2 умножается на размер двумерного массива (4 на 6), затем на размер типа <strong>int</strong> и прибавляется к значению указателя <strong>prop</strong>. Результат будет указывать на третий двумерный массив (размером 4 на 6 элементов) в трехмерном массиве <strong>prop</strong>.</p>
     <p>2) Второй индекс 1 умножается на размер 6-элементного массива типа <strong>int</strong> и прибавляется к адресу, представляемому выражением <strong>prop</strong>[2].</p>
     <p>3) Каждый элемент 6-элементного массива имеет тип <strong>int</strong>, поэтому индекс 3 умножается на размер типа <strong>int</strong> и прибавляется к адресу, представляемому выражением <strong>prop</strong>[2][1]. Результирующий указатель адресует четвертый элемент массива из шести элементов.</p>
     <p>4) На последнем шаге вычисления выражения <strong>рrор</strong>[2][1][3] выполняется косвенная адресация по указателю. Результатом является элемент типа <strong>int</strong>, расположенный по вычисленному адресу.</p>
     <p>В примерах 3 и 4 представлены случаи, когда косвенная адресация не применяется. В примере 3 выражение <strong>prop</strong>[2][1] представляет указатель на массив из шести элементов в трехмерном массиве <strong>prop</strong>. Поскольку значение указателя адресует массив, операция косвенной адресации не применяется. Аналогично, результатом вычисления выражения <strong>prop</strong>[2] в примере 4 является значение указателя, адресующего двумерный массив.</p>
    </section>
    <section>
     <title>
      <p><strong>Выбор элемента</strong></p>
     </title>
     <p>Синтаксис:</p>
     <p><strong>&lt;</strong><emphasis>выражение</emphasis><strong>&gt;</strong>.<strong>&lt;</strong><emphasis>идентификатор</emphasis><strong>&gt;</strong></p>
     <p><strong>&lt;</strong><emphasis>выражение</emphasis><strong>&gt; -&gt;</strong> &lt;<emphasis>идентификатор</emphasis>&gt;</p>
     <p>Выражение выбора элемента позволяет получить доступ к элементу структуры или объединения. Выражение имеет значение и тип выбранного элемента.</p>
     <p>В первой синтаксической форме &lt;<emphasis>выражение</emphasis>&gt; представляет значение типа <strong>struct</strong> или <strong>union</strong>, а идентификатор именует элемент специфицированной структуры или объединения. Во второй синтаксической форме &lt;<emphasis>выражение</emphasis>&gt; представляет указатель на структуру или объединение, а идентификатор именует элемент специфицированной структуры.</p>
     <p>Обе синтаксические формы выражения выбора элемента дают одинаковый результат. Запись</p>
     <p>&lt;<emphasis>выражение</emphasis>&gt; -&gt; &lt;<emphasis>идентификатор</emphasis>&gt;</p>
     <p>для случая, когда &lt;<emphasis>выражение</emphasis>&gt; имеет тип указатель, эквивалентна записи</p>
     <p>(*<strong>&lt;</strong><emphasis>выражение</emphasis><strong>&gt;</strong>).<strong>&lt;</strong><emphasis>идентификатор</emphasis><strong>&gt;</strong></p>
     <p>однако более наглядна.</p>
     <p>Примеры:</p>
     <p>struct pair {</p>
     <p>int a;</p>
     <p>inl b;</p>
     <p>struct pair *sp;</p>
     <p>} item, list[10];</p>
     <p>item.sp = &amp;item; /* пример 1 */</p>
     <p>(item.sp)-&gt;a = 24; /* пример 2 */</p>
     <p>list[8].b = 12; /* пример 3 */</p>
     <p>В первом примере адрес структуры Нет присваивается элементу <strong>sp</strong> этой же структуры. В результате структура <strong>item</strong> содержит указатель на себя.</p>
     <p>Во втором примере используется адресное выражение <strong>item.sp</strong> с операцией выбора элемента -&gt;, присваивающее значение элементу <strong>а</strong>. Учитывая результат примера 1, пример 2 эквивалентен записи</p>
     <p>item.a = 24;</p>
     <p>В третьем примере показано, каким образом в массиве структур осуществить доступ к элементу отдельной структуры.</p>
    </section>
    <section>
     <title>
      <p><strong>Операции и L-выражения</strong></p>
     </title>
     <p>В зависимости от используемых операций выражения подразделяются на первичные, унарные, бинарные, тернарные, выражения присваивания и выражения приведения типа.</p>
     <p>Первичные выражения рассмотрены в разделах 4.2.4, 4.2.5, 4.2.6.</p>
     <p>Унарное выражение состоит из операнда с предшествующей ему унарной операцией.</p>
     <p>Синтаксис:</p>
     <p>&lt;<emphasis>унарная-операция</emphasis>&gt; &lt;<emphasis>операнд</emphasis>&gt;</p>
     <p>Унарные операции рассмотрены в разделе 4.3.2.</p>
     <p>Бинарное выражение состоит из двух операндов, разделенных бинарной операцией.</p>
     <p>Синтаксис:</p>
     <p>&lt;<emphasis>операнд1</emphasis>&gt; &lt;<emphasis>бинарная-операция</emphasis>&gt; &lt;<emphasis>операнд2</emphasis>&gt;</p>
     <p>Бинарные операции рассмотрены в разделах 4.3.3 — 4.3.9.</p>
     <p>Тернарное выражение состоит из трех операндов, разделенных знаками условной операции "?:".</p>
     <p>Синтаксис:</p>
     <p><strong>&lt;</strong><emphasis>операнд1</emphasis><strong>&gt;</strong> ? <strong>&lt;</strong><emphasis>операнд2</emphasis><strong>&gt;</strong> : <strong>&lt;</strong><emphasis>операнд3</emphasis><strong>&gt;</strong></p>
     <p>Условная операция рассмотрена в разделе 4.3.10.</p>
     <p>Выражения присваивания используют унарные или бинарные операции присваивания. Унарными операциями присваивания являются инкремент "++" и декремент "--". Бинарные операции присваивания — это простое присваивание "=" и составные операции присваивания. Каждая составная операция присваивания представляет собой комбинацию какой-либо бинарной операции с простой операцией присваивания.</p>
     <p>Синтаксис выражений присваивания:</p>
     <p>Унарные операции присваивания:</p>
     <p>&lt;<emphasis>операнд</emphasis>&gt; ++</p>
     <p>&lt;<emphasis>операнд</emphasis>&gt; --</p>
     <p>++ &lt;<emphasis>операнд</emphasis>&gt;</p>
     <p>--&lt;<emphasis>операнд</emphasis>&gt;</p>
     <p>Бинарные операции присваивания:</p>
     <p><strong>&lt;</strong><emphasis>операнд1</emphasis><strong>&gt;</strong> = <strong>&lt;</strong><emphasis>операнд2</emphasis><strong>&gt;</strong></p>
     <p>&lt;<emphasis>операнд1</emphasis>&gt; &lt;<emphasis>составное-присваивание</emphasis>&gt; &lt;<emphasis>операнд2</emphasis>&gt;</p>
     <p>Операция присваивания рассмотрена в разделе 4.4.</p>
     <p>Выражения приведения типа используют операцию приведения типа для явного преобразования типа переменной скалярного типа (целого, перечислимого, плавающего, пустого, указателя).</p>
     <p>Синтаксис:</p>
     <p>(&lt;<emphasis>абстрактное-имя-типа</emphasis>&gt;) &lt;<emphasis>операнд</emphasis>&gt;</p>
     <p>Операция приведения типа подробно рассматривается в разделе 4.7.2. Абстрактные имена типов описаны в разделе 3.8.3.</p>
     <p>Операнды некоторых операций в языке Си должны представлять собой так называемые L-выражения (Lvalue expressions). L-выражением является выражение, которое ссылается на ячейку памяти и потому имеет смысл в левой части бинарной операции присваивания. Простейшим примером L-выражения является идентификатор переменной: он ссылается на ячейку памяти, которая хранит значение этой переменной.</p>
     <p>Поскольку L-выражение ссылается на ячейку памяти, адрес этой ячейки может быть получен с помощью операции адресации (&amp;). Имеются, однако, исключения: не может быть получен адрес битового поля и адрес переменной класса памяти <strong>register</strong>, хотя значение им может быть присвоено.</p>
     <p>К L-выражениям относятся:</p>
     <p>— идентификаторы переменных целого, плавающего, перечислимого типов, указателей, структур и объединений;</p>
     <p>— индексные выражения, исключая те из них, значение которых имеет тип массив;</p>
     <p>— выражение выбора элемента, если выбранный элемент сам является одним из допустимых L-выражений;</p>
     <p>— выражение косвенной адресации, если только его значение не имеет тип массив или функция;</p>
     <p>— L-выражение в скобках;</p>
     <p>— выражение приведения типа переменной, если размер результирующего типа не превышает размера первоначального типа. Следующий пример иллюстрирует этот случай:</p>
     <p>char *р;</p>
     <p>int i;</p>
     <p>long n;</p>
     <p>(long *)p = &amp;n; /* допустимое приведение типа */</p>
     <p>(long)i = n; /* недопустимое приведение типа */</p>
     <p>Перечисленные L-выражения называются также модифицируемыми L-выражениями. Кроме того, существуют немодифицируемые L-выражения; их адрес может быть получен, но использоваться в левой части бинарной операции присваивания они не могут. К ним относятся идентификаторы массивов, функций, а также переменных, объявленных с модификатором <strong>const</strong>.</p>
    </section>
    <section>
     <title>
      <p><strong>Скобочные выражения</strong></p>
     </title>
     <p>Любой операнд может быть заключен в круглые скобки. В выражении</p>
     <p>(10+5)/5</p>
     <p>скобки означают, что выражение 10+5 является левым операндом операции деления. Результат выражения равен 3. В отсутствие скобок значение выражения равнялось бы 11. Хотя скобки влияют на то, каким путем группируются операнды в выражении, они не гарантируют определенный порядок вычисления операндов для операций, обладающих свойством коммутативности (мультипликативные, аддитивные, поразрядные операции). Например, выражение (а+b)+с компилятор может вычислить как а+(b+с) или даже как (а+с)+b.</p>
     <p>В СП ТС можно гарантировать порядок вычисления выражений в скобках для коммутативных операций с помощью операции унарного плюса.</p>
    </section>
    <section>
     <title>
      <p><strong>Константные выражения</strong></p>
     </title>
     <p>Константное выражение — это выражение, результатом вычисления которого является константа. Операндами константного выражения могут быть целые, символьные, плавающие константы, константы перечислимого типа, выражения приведения типа константного выражения, выражения с операцией <strong>sizeof</strong> и другие константные выражения. Имеются некоторые ограничения на использование операций в константных выражениях. В константных выражениях нельзя использовать операции присваивания, операцию последовательного вычисления. Кроме того, использование операции адресации, выражений приведения типа и плавающих констант ограничено.</p>
     <p>Константные выражения, используемые в директивах препроцессора, имеют дополнительные ограничения, поэтому они называются ограниченными константными выражениями. Ограниченные константные выражения не могут содержать операцию <strong>sizeof</strong> (в СП ТС — могут), констант перечисления и выражений приведения типа и плавающих констант. Однако ограниченные константные выражения, используемые в директивах препроцессора, могут содержать специальные константные выражения <strong>defined</strong> (&lt;<emphasis>идентификатор</emphasis>&gt;), описанные в разделе 7.2.1 "Директива #<strong>define</strong>". . Только выражения инициализации допускают применение плавающих констант, выражений приведения типа к неарифметическим типам и операции адресации. Операция адресации может быть применена к переменной внешнего уровня базового или структурного типа, к объединению, а также к элементу массива. В этих выражениях допускается сложение или вычитание адресного выражения с константным выражением, не содержащим операции адресации.</p>
    </section>
   </section>
   <section>
    <title>
     <p><strong>Операции</strong></p>
    </title>
    <section>
     <p>Операции в языке Си имеют либо один операнд (унарные операции), либо два операнда (бинарные операции), либо три (тернарная операция). Операция присваивания может быть как унарной, так и бинарной (см. раздел 4.4).</p>
     <p>Существенным свойством любой операции является ее ассоциативность. Ассоциативность определяет порядок выполнения в том случае, когда подряд применено несколько операций одного вида. Ассоциативность "слева направо" означает, что первой будет выполняться операция, знак которой записан левее остальных. Например, выражение</p>
     <p>b &lt;&lt; 2 &lt;&lt; 2</p>
     <p>выполняется как (b &lt;&lt; 2) &lt;&lt; 2, а не как b &lt;&lt; (2 &lt;&lt; 2). Ассоциативность "справа налево" означает, что первой будет выполняться операция, знак которой записан правее остальных.</p>
     <p>В языке Си реализованы следующие унарные операции:</p>
     <table>
      <tr>
       <td align="center">Знак операции</td>
       <td align="center">Наименование</td>
      </tr>
      <tr>
       <td align="left">-</td>
       <td align="left">унарный минус</td>
      </tr>
      <tr>
       <td align="left">+</td>
       <td align="left">унарный плюс</td>
      </tr>
      <tr>
       <td align="left">~</td>
       <td align="left">обратный код</td>
      </tr>
      <tr>
       <td align="left">!</td>
       <td align="left">логическое отрицание</td>
      </tr>
      <tr>
       <td align="left">&amp;</td>
       <td align="left">адресация</td>
      </tr>
      <tr>
       <td align="left">*</td>
       <td align="left">косвенная адресация</td>
      </tr>
      <tr>
       <td align="left">sizeof</td>
       <td align="left">определение размера</td>
      </tr>
     </table>
     <empty-line/>
     <p><emphasis>Примечание.</emphasis> Операция унарного плюса реализована полностью только в СП ТС. В СП MSC версии 4 она отсутствует, а в версии 5 реализована только синтаксически.</p>
     <p>Унарные операции предшествуют своему операнду и ассоциируются справа налево.</p>
     <p>В языке Си реализованы следующие бинарные операции:</p>
     <table>
      <tr>
       <td align="center">Знак</td>
       <td align="center">Наименование</td>
      </tr>
      <tr>
       <td align="left">* / %</td>
       <td align="left">мультипликативные операции</td>
      </tr>
      <tr>
       <td align="left">+ -</td>
       <td align="left">аддитивные операции</td>
      </tr>
      <tr>
       <td align="left">&lt;&lt; &gt;&gt;</td>
       <td align="left">операции сдвига</td>
      </tr>
      <tr>
       <td align="left">&lt; &gt; &lt;= &gt;= == !=</td>
       <td align="left">операции отношения</td>
      </tr>
      <tr>
       <td align="left">&amp; | ^</td>
       <td align="left">поразрядные операции</td>
      </tr>
      <tr>
       <td align="left">&amp;&amp; ||</td>
       <td align="left">логические операции</td>
      </tr>
      <tr>
       <td align="left">,</td>
       <td align="left">операция последовательного вычисления</td>
      </tr>
     </table>
     <empty-line/>
     <p>Бинарные операции ассоциируются слева направо. В языке Си имеется одна тернарная операция — условная, обозначаемая ?:. Она ассоциируется справа налево.</p>
    </section>
    <section>
     <title>
      <p><strong>Преобразования по умолчанию</strong></p>
     </title>
     <p>Большинство операций языка Си выполняют преобразование типов для приведения своих операндов к общему типу либо для того, чтобы расширить значения коротких по размеру типов до размера, используемого в машинных операциях. Преобразования, зависящие от конкретной операции и от типа операнда (или операндов), рассмотрены в разделе 4.7. Тем не менее, многие операции выполняют одинаковые преобразования целых и плавающих типов. Эти преобразования называются далее преобразованиями по умолчанию.</p>
     <p>Преобразования по умолчанию осуществляются следующим образом:</p>
     <p>1) Все операнды типа <strong>float</strong> преобразуются к типу <strong>double</strong>.</p>
     <p>2) Только для СП ТС: если один операнд имеет тип <strong>long double</strong>, то второй операнд также преобразуется к типу <strong>long double</strong>.</p>
     <p>3) Если один операнд имеет тип <strong>double</strong>, то второй операнд преобразуется к типу <strong>double</strong>.</p>
     <p>4) Если один операнд имеет тип <strong>unsigned long</strong>, то второй операнд преобразуется к типу <strong>unsigned long</strong>.</p>
     <p>5) Если один операнд имеет тип <strong>long</strong>, то второй операнд преобразуется к типу <strong>long</strong>.</p>
     <p>6) Если один операнд имеет тип <strong>unsigned int</strong>, то второй операнд преобразуется к типу <strong>unsigned int</strong>.</p>
     <p>7) Все операнды типов <strong>char</strong> или <strong>short</strong> преобразуются к типу <strong>int</strong>.</p>
     <p>8) Все операнды типов <strong>unsigned char</strong> или <strong>unsigned short</strong> преобразуются к типу <strong>unsigned int</strong>.</p>
     <p>9) Иначе оба операнда имеют тип <strong>int</strong>.</p>
    </section>
    <section>
     <title>
      <p><strong>Унарные операции</strong></p>
     </title>
     <subtitle><strong>Унарный минус (-)</strong></subtitle>
     <p>Операция унарного минуса выполняет арифметическое отрицание своего операнда. Операнд должен быть целым или плавающим значением. Выполняются преобразования операнда по умолчанию. Тип результата совпадает с преобразованным типом операнда.</p>
     <subtitle><strong>Унарный плюс (+)</strong></subtitle>
     <p>Эта операция реализована полностью в СП ТС. В СП MSC версии 5 она реализована только синтаксически. Операция применяется для того, чтобы запретить компилятору языка Си реорганизовывать скобочные выражения.</p>
     <p>Операнд унарного плюса должен иметь целый или плавающий тип. Над операндом выполняются преобразования по умолчанию. Операция унарного плюса не изменяет значения своего операнда.</p>
     <p>Обычно компиляторы языка Си осуществляют перегруппировку выражений, переупорядочивая операции, обладающие свойством коммутативности (умножение, сложение, поразрядные операции), пытаясь сгенерировать как можно более эффективный код. При этом скобки, ограничивающие операции, не принимаются в расчет. Однако СП ТС не будет реорганизовывать выражения в скобках, если перед скобками записана операция унарного плюса. Это позволяет, в частности, контролировать точность вычислений с плавающей точкой. Например, если а, b, с и f имеют тип <strong>float</strong>, выражение</p>
     <p>f = а *+ (b * с)</p>
     <p>будет гарантированно вычисляться следующим образом: результат сложения b и с будет прибавлен к а.</p>
     <p>В СП MSC для гарантии порядка вычислений следует пользоваться вспомогательной переменной, например</p>
     <p>t = b * с;</p>
     <p>f = а * t</p>
     <subtitle><strong>Обратный код</strong> (~)</subtitle>
     <p>Операция обратного кода вырабатывает двоичное дополнение своего операнда, т. е. инвертирует его битовое представление. Операнд должен иметь целый тип. Над операндом производятся преобразования по умолчанию. Результат имеет тип преобразованного операнда.</p>
     <p>Если операнд имеет знаковый бит, то бит знака также участвует в операции обратного кода (инвертируется).</p>
     <subtitle><strong>Логическое отрицание (!)</strong></subtitle>
     <p>Операция логического отрицания вырабатывает значение 0, если операнд есть ИСТИНА, и значение 1, если операнд есть ЛОЖЬ. Результат имеет тип <strong>int</strong>. Операнд должен иметь целый или плавающий тип либо быть указателем.</p>
     <p>Примеры:</p>
     <p>/* пример 1 */</p>
     <p>short х <strong>=</strong> 987;</p>
     <p>х = ~х;</p>
     <p>/* пример 2 */</p>
     <p>unsigned short у = 0xAAAA;</p>
     <p>y = ~y;</p>
     <p>/* пример 3 */</p>
     <p>if(!(x&lt;y))…</p>
     <p>В первом примере новое значение х равно -987.</p>
     <p>Во втором примере переменной у присваивается новое значение, которое является обратным кодом беззнакового значения OxAAAA, т. е. 0х5555.</p>
     <p>В третьем примере, если х больше или равен у, то результат условного выражения в операторе if равен 1 (ИСТИНА). Если х меньше у, то результат равен 0 (ЛОЖЬ).</p>
     <subtitle><strong>Адресация "&amp;"</strong></subtitle>
     <p>Операция адресации вырабатывает адрес своего операнда. Операндом может быть L-выражение, в т. ч. немодифицируемое (см. раздел 4.2.7). Результат операции адресации является указателем на операнд. Тип результата — указатель на тип операнда.</p>
     <p>Операция адресации не может применяться к битовым полям, а также к идентификаторам, объявленным с классом памяти <strong>register</strong>.</p>
     <p>См. примеры после описания операции косвенной адресации.</p>
     <subtitle><strong>Косвенная адресация "*"</strong></subtitle>
     <p>Операция косвенной адресации осуществляет доступ к значению по указателю. Ее операнд должен иметь тип указатель. В качестве операнда может также выступать идентификатор массива; в этом случае он преобразуется к указателю на тип элементов массива, и к этому указателю применяется операция косвенной адресации.</p>
     <p>Результатом операции является значение, на которое указывает операнд. Типом результата является тип, ассоциированный с этим указателем. Если указателю перед операцией не было присвоено никакого значения, то результат непредсказуем.</p>
     <p>Примеры:</p>
     <p>int *ра, х;</p>
     <p>int a[20];</p>
     <p>double d;</p>
     <p>pa = &amp;а[5]; /* пример 1 */</p>
     <p>x = *ра; /* пример 2 */</p>
     <p>if ( х == *&amp;x ) /* пример 3 */</p>
     <p>printf("BEPHO\n");</p>
     <p>d <strong>=</strong> *(double *)(&amp;x); /* пример 4 */</p>
     <p>В первом примере операция адресации вырабатывает адрес шестого (по порядку следования) элемента массива <strong>а</strong>. Результат записывается в адресную переменную (указатель) <strong>ра</strong>.</p>
     <p>Во втором примере используется операция косвенной адресации для доступа к значению типа <strong>int</strong>, адрес которого хранится в указателе <strong>ра</strong>. Результат присваивается целой переменной <strong>х</strong>.</p>
     <p>В третьем примере будет печататься слово ВЕРНО. Пример демонстрирует симметричность операций адресации и косвенной адресации: <strong>*&amp;х</strong> эквивалентно <strong>х</strong>.</p>
     <p>Четвертый пример показывает полезное приложение этого свойства. Адрес <strong>х</strong> преобразуется операцией приведения типа к типу указатель на <strong>double</strong>. К полученному указателю применяется операция косвенной адресации. Результатом выражения является значение типа <strong>double</strong>.</p>
     <subtitle><strong>Операция sizeof</strong></subtitle>
     <p>Операция <strong>sizeof</strong> определяет размер памяти, который соответствует объекту или типу. Операция <strong>sizeof</strong> имеет следующий вид:</p>
     <p>sizeof &lt;<emphasis>выражение</emphasis>&gt;</p>
     <p>sizeof (&lt;<emphasis>абстрактное имя типа</emphasis>&gt;)</p>
     <p>Операндом является либо &lt;<emphasis>выражение</emphasis>&gt;, либо абстрактное имя типа в скобках. Результатом операции <strong>sizeof</strong> является размер памяти в байтах, соответствующий заданному объекту или типу. Тип результата — <strong>unsigned int</strong>. Если размер объекта не может быть представлен значением типа <strong>unsigned int</strong> (например, в СП MSC допустимы массивы типа <strong>huge</strong> размером более 64 Кбайтов), то следует использовать приведение типа:</p>
     <p>(long) sizeof &lt;<emphasis>выражение</emphasis>&gt;</p>
     <p>В СП MSC версии 4 допустимым выражением является L-выражение, а в версии 5 и в СП ТС — произвольное выражение. Следует учитывать, что само &lt;<emphasis>выражение</emphasis>&gt; не вычисляется, т. к. операция <strong>sizeof</strong> выполняется на этапе компиляции программы. Для нее существен только тип результата &lt;<emphasis>выражения</emphasis>&gt;, а не его значение. Недопустим тип <strong>void</strong>. Применение операции <strong>sizeof</strong> к идентификатору функции в СП ТС считается ошибкой, а в СП MSC эквивалентно определению размера указателя на функцию.</p>
     <p>Если операция <strong>sizeof</strong> применяется к идентификатору массива, то результатом является размер всего массива в байтах, а не размер одного элемента.</p>
     <p>Если операция <strong>sizeof</strong> применяется к типу структуры или объединения либо к идентификатору, имеющему тип структура или объединение, то результатом является фактический размер в байтах структуры или объединения, который может включать и участки пространства, используемые для выравнивания элементов структуры или объединения на границы слов памяти. Таким образом, этот результат может превышать размер, вычисленный путем сложения размеров отдельных элементов структуры. Например, если объявлена следующая структура</p>
     <p>struct {</p>
     <p>char m[3][3];</p>
     <p>} s;</p>
     <p>то значение <strong>sizeof(s.m)</strong> будет равно 9, а значение <strong>sizeof(s)</strong> будет равно 10.</p>
     <p>Используя операцию <strong>sizeof</strong> для ссылок на размеры типов данных (которые могут различаться для разных компьютеров), можно повысить переносимость программы. В следующем примере операция <strong>sizeof</strong> используется для спецификации размера типа <strong>int</strong> в качестве аргумента стандартной функции распределения памяти <strong>calloc</strong>. Значение, возвращаемое функцией (адрес выделенного блока памяти), присваивается переменной <strong>buffer</strong>.</p>
     <p>buffer = calloc(100, sizeof(int));</p>
    </section>
    <section>
     <title>
      <p><strong>Мультипликативные операции</strong></p>
     </title>
     <p>К мультипликативным операциям относятся операции умножения *, деления / и получения остатка от деления %. Операндами операции % должны быть целые значения. Операции умножения * и деления / выполняются над целыми и плавающими операндами. Типы первого и второго операндов могут отличаться, при этом выполняются преобразования операндов по умолчанию. Типом результата является тип операндов после преобразования.</p>
     <p>В процессе выполнения мультипликативных операций ситуация переполнения или потери значимости не контролируется. Если результат мультипликативной операции не может быть представлен типом операндов после преобразования, то информация теряется.</p>
     <subtitle><strong>Умножение (*)</strong></subtitle>
     <p>Операция умножения выполняет умножение одного из своих операндов на другой.</p>
     <subtitle><strong>Деление (/)</strong></subtitle>
     <p>Операция деления выполняет деление первого своего операнда на второй. Если оба операнда являются целыми значениями не делятся нацело, то результат округляется в сторону нуля. Деление на нуль дает ошибку во время выполнения.</p>
     <subtitle><strong>Остаток от деления (%)</strong></subtitle>
     <p>Результатом операции является остаток от деления первого операнда на второй. Знак результата совпадает со знаком делимого.</p>
     <p>Примеры:</p>
     <p>int i <strong>=</strong> 10, j = 3, n;</p>
     <p>double x = 2.0, у,</p>
     <p>у = х*i; /* пример 1 */</p>
     <p>n = i/j; /* пример 2 */</p>
     <p>n = i%j; /* пример 3 */</p>
     <p>В первом примере <strong>х</strong> умножается на i. Результат равен 20.0 и имеет тип <strong>double</strong>.</p>
     <p>Во втором примере 10 делится на 3. Результат округляется до 3 и имеет тип <strong>int</strong>.</p>
     <p>В третьем примере п присваивается остаток от деления 10 на 3, т.е. 1.</p>
    </section>
    <section>
     <title>
      <p><strong>Аддитивные операции</strong></p>
     </title>
     <section>
      <p>К аддитивным операциям относятся сложение (+) и вычитание (-). Их операндами могут быть целые и плавающие значения. В некоторых случаях аддитивные операции могут также выполняться над адресными значениями. Над операндами выполняются преобразования по умолчанию. Типом результата является тип операндов после преобразования. В процессе выполнения аддитивных операций ситуация переполнения или потери значимости не контролируется. Если результат аддитивной операции не может быть представлен типом операндов после преобразования, то информация теряется.</p>
      <subtitle><strong>Сложение (+)</strong></subtitle>
      <p>Операция сложения складывает два своих операнда. Операнды могут иметь целый или плавающий тип. Типы первого и второго операндов могут различаться. Один из операндов может быть указателем; тогда другой должен быть целым значением. Когда целое значение (назовем его i) складывается с указателем, то i масштабируется путем умножения его на размер типа, с которым ассоциирован данный указатель. После преобразования целое значение представляет i ячеек памяти, где каждая ячейка соответствует по размеру типу, с которым ассоциирован данный указатель. Когда преобразованное целое значение складывается с указателем, то результатом является указатель, адресующий область памяти, расположенную на i ячеек дальше от первоначального адреса. Новый указатель указывает на тот же самый тип данных, что и исходный указатель.</p>
      <subtitle><strong>Вычитание (-)</strong></subtitle>
      <p>Операция вычитания вычитает второй операнд из первого. Операнды могут иметь целый или плавающий тип. Типы первого и второго операндов могут различаться. Допускается вычитание целого из указателя и вычитание двух указателей.</p>
      <p>Когда целое значение вычитается из указателя, предварительно производится то же масштабирование, что и при сложении целого значения с указателем. Результатом вычитания является указатель, адресующий область памяти, расположенную на i ячеек перед первоначальным адресом. Новый указатель указывает на тот же самый тип данных, что и исходный указатель.</p>
      <p>Один указатель может быть вычтен из другого, если они указывают на один и тот же тип данных. Разность между двумя указателями преобразуется к знаковому целому значению, путем деления разности на длину типа, который адресуется указателями. Результат представляет число ячеек памяти данного типа между двумя адресами.</p>
      <p>Тип, который имеет разность указателей, зависит от компьютера, поэтому он определен посредством <strong>typedef</strong> в стандартном включаемом файле <strong>stddef.h</strong>. Имя этого типа — <strong>ptrdiff.t</strong>. Если разность указателей не может быть представлена этим типом, следует явно приводить ее к типу <strong>long</strong>.</p>
     </section>
     <section>
      <title>
       <p><strong>Адресная арифметика</strong></p>
      </title>
      <p>Аддитивные операции, выполняемые над указателем и целым, имеют осмысленный результат в том случае, если указатель адресует массив памяти, а целое значение представляет смещение в пределах этого массива. Преобразование целого значения к адресному смещению предполагает, что в пределах смещения вплотную расположены элементы одинакового размера. Это предположение справедливо именно для элементов массива, поскольку массив определяется как последовательность значений одинакового типа, расположенных в смежных ячейках памяти. Способ хранения других типов данных не гарантирует сплошного заполнения памяти, т.е. даже между ячейками памяти, содержащими элементы одного и того же типа данных, возможны участки неиспользованной памяти. Поэтому корректность сложения и вычитания адресов, ссылающихся на какие-либо другие объекты, не гарантируется.</p>
      <p>На компьютерах с сегментной архитектурой памяти (в частности, с микропроцессором типа 8086/8088) аддитивные операции над адресным и целым значениями могут не всегда выполняться правильно. Это вызвано тем, что указатели, используемые в программе, могут иметь различные размеры в зависимости от используемой модели памяти. Например, при компиляции программы в некоторой стандартной модели памяти адресные модификаторы (<strong>near</strong>, <strong>huge</strong>, <strong>far</strong>) могут специфицировать для какого-либо указателя другой размер, чем определяемый по умолчанию выбранной моделью памяти. Более подробная информация о работе с указателями в различных моделях памяти приведена в разделе 8 "Модели памяти".</p>
      <p>Примеры:</p>
      <p>int i = 4, j;</p>
      <p>float x[10];</p>
      <p>float *px;</p>
      <p>px = &amp;x[4] + 1; /* пример 1 */</p>
      <p>j = &amp;x[i] — &amp;x[i-2]; /* пример 2*/</p>
      <p>В первом примере целочисленный операнд <strong>i</strong> складывается с адресом пятого (по порядку следования) элемента массива <strong>х</strong>. Значение <strong>i</strong> умножается на длину типа <strong>float</strong> и складывается с адресом <strong>x[4]</strong>. Значение результирующего указателя представляет собой адрес девятого элемента массива.</p>
      <p>Во втором примере адрес третьего элемента массива <strong>х</strong> (заданный как <strong>&amp;х[i-2]</strong>) вычитается из адреса пятого элемента (заданного как <strong>&amp;x[i]</strong>). Полученная разность делится на размер типа <strong>float</strong>. В результате получается целое значение <strong>2</strong>.</p>
     </section>
    </section>
    <section>
     <title>
      <p><strong>Операции сдвига</strong></p>
     </title>
     <p>Операции сдвига сдвигают свой первый операнд влево (&lt;&lt;) или вправо (&gt;&gt;) на число разрядов машинного слова, специфицированное вторым операндом. Оба операнда должны быть целыми значениями. Выполняются преобразования по умолчанию, причем в СП MSC над обоими операндами совместно, а в СП ТС независимо над каждым операндом. Например, если переменная <strong>b</strong> имеет тип <strong>int</strong>, а переменная и тип <strong>unsigned long</strong>, то перед выполнением операции <strong>b&lt;&lt;u</strong> в СП MSC переменная <strong>b</strong> будет преобразована к типу <strong>unsigned long</strong>.</p>
     <p>Тип результата в СП ТС — это тип левого операнда после преобразования, а в СП MSC — единый тип преобразованных операндов. В некоторых ситуациях результат в СП ТС и в СП MSC может оказаться различным.</p>
     <p>При сдвиге влево правые освобождающиеся биты заполняются нулями. При сдвиге вправо метод заполнения освобождающихся левых битов зависит от того, какой тип результата получен после преобразования первого операнда. Если тип <strong>unsigned</strong>, то свободные левые биты заполняются нулями. В противном случае они заполняются копией знакового бита.</p>
     <p>Если второй операнд отрицателен, то результат операции сдвига не определен.</p>
     <p>При выполнении операций сдвига ситуация потери значимости не контролируется. Если результат сдвига не может быть представлен типом первого операнда после преобразования, то информация теряется.</p>
     <p>Пример:</p>
     <p>unsigned int х, у, z;</p>
     <p>х <strong>=</strong> 0х00АА;</p>
     <p>у = 0х5500;</p>
     <p>z= (х&lt;&lt;8) + (у&gt;&gt;8);</p>
     <p>В примере <strong>х</strong> сдвигается влево на 8 позиций, а <strong>у</strong> сдвигается вправо на 8 позиций. Результаты сдвигов складываются, давая значение ОхАА5а, которое присваивается <strong>z</strong>.</p>
    </section>
    <section>
     <title>
      <p><strong>Операции отношения</strong></p>
     </title>
     <p>Операции отношения сравнивают первый операнд со вторым и вырабатывают значение 1 (ИСТИНА) или 0 (ЛОЖЬ). Результат имеет тип <strong>int</strong>. Имеются следующие операции отношения:</p>
     <table>
      <tr>
       <td align="center">Операция</td>
       <td align="center">Проверяемое отношение</td>
      </tr>
      <tr>
       <td align="left">&lt;</td>
       <td align="left">Первый операнд меньше, чем второй операнд</td>
      </tr>
      <tr>
       <td align="left">&gt;</td>
       <td align="left">Первый операнд больше, чем второй операнд</td>
      </tr>
      <tr>
       <td align="left">&lt;=</td>
       <td align="left">Первый операнд меньше или равен второму операнду</td>
      </tr>
      <tr>
       <td align="left">&gt;=</td>
       <td align="left">Первый операнд больше или равен второму операнду</td>
      </tr>
      <tr>
       <td align="left">==</td>
       <td align="left">Первый операнд равен второму операнду</td>
      </tr>
      <tr>
       <td align="left">!=</td>
       <td align="left">Первый операнд не равен второму операнду</td>
      </tr>
     </table>
     <empty-line/>
     <p>Операнды могут иметь целый, плавающий тип, либо быть указателями. Типы первого и второго операндов могут различаться. Над операндами выполняются преобразования по умолчанию.</p>
     <p>Операндами любой операции отношения могут быть два указателя на один и тот же тип. Для операции проверки на равенство или неравенство результат сравнения означает, указывают ли оба указателя на одну и ту же ячейку памяти или нет. Результат сравнения указателей для других операций ( &lt;, &gt;, &lt;=, &gt;=) отражает относительное положение двух адресов памяти.</p>
     <p>Сравнение между собой адресов двух несвязанных объектов, вообще говоря, не имеет смысла. Однако сравнение адресов различных элементов одного и того же массива может быть полезным, поскольку элементы массива хранятся в памяти последовательно. Адрес предшествующего элемента массива всегда меньше, чем адрес последующего элемента.</p>
     <p>Сравнение между собой указателей типа <strong>far</strong> не всегда имеет смысл, поскольку один и тот же адрес может быть представлен различными комбинациями значений сегмента и смещения и, следовательно, различными указателями типа <strong>far</strong>. Указатели типа <strong>huge</strong> в СП ТС хранятся в нормализованном формате, поэтому их сравнение всегда корректно.</p>
     <p>Указатель можно проверять на равенство или неравенство константе NULL (ноль). Указатель, имеющий значение NULL, не указывает ни на какую область памяти. Он называется нулевым указателем.</p>
     <p>Из-за специфики машинной арифметики не рекомендуется проверять плавающие значения на равенство, поскольку 1.0/3.0*3.0 не будет равно 1.0.</p>
     <p>Примеры:</p>
     <p>int х, у;</p>
     <p>х &lt; у /* выражение 1 */</p>
     <p>у &gt; х /* выражение 2 */</p>
     <p>x &lt;= У /* выражение 3 */</p>
     <p>x &gt;= У /* выражение 4 */</p>
     <p>x == У /* выражение 5 */</p>
     <p>x != у /* выражение 6 */</p>
     <p>Если х и у равны, то выражения 3, 4, 5 имеют значение 1, а выражения 1, 2, 6 имеют значение 0.</p>
    </section>
    <section>
     <title>
      <p><strong>Поразрядные операции</strong></p>
     </title>
     <p>Поразрядные операции выполняют над разрядами своих операндов логические функции И (&amp;), включающее ИЛИ (|) и исключающее ИЛИ (^). Операнды поразрядных операций должны иметь целый тип, но бит знака, если он есть, также участвует в операции. Над операндами выполняются преобразования по умолчанию. Тип результата определяется типом операндов посте преобразования.</p>
     <p>Таблица значений для поразрядных операций:</p>
     <table>
      <tr>
       <td align="center">х</td>
       <td align="center">0</td>
       <td align="center">0</td>
       <td align="center">1</td>
       <td align="center">1</td>
      </tr>
      <tr>
       <td align="center">у</td>
       <td align="center">0</td>
       <td align="center">1</td>
       <td align="center">0</td>
       <td align="center">1</td>
      </tr>
      <tr>
       <td align="center">х|у</td>
       <td align="center">0</td>
       <td align="center">1</td>
       <td align="center">1</td>
       <td align="center">1</td>
      </tr>
      <tr>
       <td align="center">х&amp;у</td>
       <td align="center">0</td>
       <td align="center">0</td>
       <td align="center">0</td>
       <td align="center">1</td>
      </tr>
      <tr>
       <td align="center">x^y</td>
       <td align="center">0</td>
       <td align="center">1</td>
       <td align="center">1</td>
       <td align="center">0</td>
      </tr>
     </table>
     <p>Примеры:</p>
     <p>short i = 0хAВ00;</p>
     <p>short j = 0xABCD;</p>
     <p>short n;</p>
     <p>n = i &amp; j; /* пример 1 */</p>
     <p>n = i | j; /* пример 2 */</p>
     <p>n = i ^ j; /* пример 3 */</p>
     <p>В первом примере n присваивается шестнадцатеричное значение АВ00.</p>
     <p>Во втором примере результатом операции включающего ИЛИ будет шестнадцатеричное значение ABCD, а в третьем примере результатом операции исключающего ИЛИ будет шестнадцатеричное значение CD.</p>
    </section>
    <section>
     <title>
      <p><strong>Логические операции</strong></p>
     </title>
     <p>Логические операции выполняют над своими операндами логические функции И (&amp;&amp;) и ИЛИ (||). Операнды логических операций могут иметь целый, плавающий тип, либо быть указателями. Типы первого и второго операндов могут различаться. Сначала всегда вычисляется первый операнд; если его значения достаточно для определения результата операции, то второй операнд не вычисляется.</p>
     <p>Логические операции не выполняют преобразования по умолчанию. Вместо этого они вычисляют операнды и сравнивают их с нулем. Результатом логической операции является либо 0 (ЛОЖЬ), либо 1 (ИСТИНА). Тип результата — <strong>int</strong>.</p>
     <subtitle><strong>Логическое И (&amp;&amp;)</strong></subtitle>
     <p>Логическая операция И вырабатывает значение 1, если оба операнда имеют ненулевое значение. Если один из операндов равен нулю, то результат также равен нулю. Если значение первого операнда равно нулю, то значение второго операнда не вычисляется.</p>
     <subtitle><strong>Логическое ИЛИ (||)</strong></subtitle>
     <p>Логическая операция ИЛИ выполняет над своими операндами операцию включающее ИЛИ. Она вырабатывает значение 0, если оба операнда имеют значение 0; если какой-либо из операндов имеет ненулевое значение, то результат операции равен 1. Если первый операнд не равен нулю, то значение второго операнда не вычисляется.</p>
     <p>Примеры:</p>
     <p>int х, у;</p>
     <p>if(х&lt;у &amp;&amp; у&lt;z) printf("x меньше z\n"); /* пример 1 */</p>
     <p>if(х==у !! х==z) printf("x равен у или z\n"); /* пример 2 */</p>
     <p>В первом примере функция <strong>printf</strong> вызывается для печати сообщения в том случае, если х меньше у и у меньше 2. Если х больше у, то второй операнд (у&lt;z) не вычисляется и печати не происходит.</p>
     <p>Во втором примере сообщение печатается в том случае, если х равен у или z. Если х равен у, то значение второго операнда (х==z) не вычисляется.</p>
    </section>
    <section>
     <title>
      <p><strong>Операция последовательного вычисления</strong></p>
     </title>
     <p>Операция последовательного вычисления последовательно вычисляет два своих операнда, сначала первый, затем второй. Оба операнда являются выражениями. Синтаксис операции:</p>
     <p>&lt;<emphasis>выражение1</emphasis>&gt;, &lt;<emphasis>выражение2</emphasis>&gt;</p>
     <p>Знак операции - запятая, разделяющая операнды. Результат операции имеет значение и тип второго операнда. Ограничения на типы операндов (т. е. типы результатов выражений) не накладываются, преобразования типов не выполняются.</p>
     <p>Операция последовательного вычисления обычно используется для вычисления нескольких выражений в ситуациях, где по синтаксису допускается только одно выражение.</p>
     <p>Примеры:</p>
     <p>/* пример 1 */</p>
     <p>for(i=j<strong>=</strong>1; i+j<strong>&lt;</strong>20; i+=i, j--)…</p>
     <p>/* пример 2 */</p>
     <p>func_one( x, у + 2, z);</p>
     <p>func_two((x--, y + 2), z);</p>
     <p>В первом примере каждый операнд третьего выражения оператора цикла <strong>for</strong> вычисляется независимо. Сначала вычисляется <strong>i+=i</strong>, затем <strong>j--</strong>.</p>
     <p>Во втором примере символ "запятая" используется как разделитель в двух различных контекстах. В первом вызове функции <strong>func_onc</strong> передаются три аргумента, разделенных запятыми: <strong>х</strong>, <strong>у+2</strong>, <strong>2</strong>. Здесь символ "запятая" используется просто как разделитель</p>
     <p>В вызове функции <strong>func_two</strong> внутренние скобки вынуждают компилятор интерпретировать первую запятую как операцию последовательного вычисления. Этот вызов передает функции <strong>func_two</strong> два аргумента. Первый аргумент — это результат последовательного вычисления <strong>(х--,у+2)</strong>, имеющий значение и тип выражения <strong>у+2</strong>. Вторым аргументом является <strong>z</strong><emphasis>.</emphasis></p>
    </section>
    <section>
     <title>
      <p><strong>Условная операция</strong></p>
     </title>
     <p>В языке Си имеется одна тернарная операция — уловная. Она имеет следующий синтаксис:</p>
     <p><strong>&lt;</strong><emphasis>операнд1</emphasis>&gt; ? &lt;<emphasis>операнд2</emphasis><strong>&gt;</strong>: <strong>&lt;</strong><emphasis>операнд3</emphasis><strong>&gt;</strong></p>
     <p>Выражение &lt;<emphasis>операнд1</emphasis>&gt; вычисляется и сравнивается с нулем. Выражение может иметь целый, плавающий тип, либо быть указателем. Если &lt;<emphasis>операнд1</emphasis>&gt; имеет ненулевое значение, то вычисляется &lt;<emphasis>операнд2</emphasis>&gt; и результатом условной операции является его значение. Если же &lt;<emphasis>операнд1</emphasis>&gt; равен нулю, то вычисляется &lt;<emphasis>операнд3</emphasis>&gt; и результатом является его значение. В любом случае вычисляется только один из операндов, &lt;<emphasis>операнд2</emphasis>&gt; или &lt;<emphasis>операнд3</emphasis>&gt;, но не оба.</p>
     <p>Тип результата зависит от типов второго и третьего операндов (они могут различаться) следующим образом:</p>
     <p>1) Если второй и третий операнды имеют целый или плавающий тип, то выполняются преобразования по умолчанию. Типом результата является тип операндов после преобразования.</p>
     <p>2) Второй и третий операнды могут быть структурами, объединениями или указателями одного и того же типа. Типом результата будет тот же самый тип структуры, объединения или указателя.</p>
     <p>3) Если либо второй, либо третий операнд имеет тип <strong>void</strong> (например, является вызовом функции, тип значения которой <strong>void</strong>), то другой операнд также должен иметь тип <strong>void</strong>, и результат имеет тип <strong>void</strong>.</p>
     <p>4) Если либо второй, либо третий операнд является указателем на какой-либо тип, а другой является указателем на <strong>void,</strong> то результат имеет тип указатель на <strong>void.</strong></p>
     <p>5) Если либо второй, либо третий операнд является указателем, то другой может быть константным выражением со значением 0. Типом результата является указатель.</p>
     <p>Пример:</p>
     <p>j <strong>=</strong> (i &lt; 0 )?(-i) : (i);</p>
     <p>В примере <strong>j</strong> присваивается абсолютное значение <strong>i</strong>. Если <strong>i</strong> меньше нуля, то <strong>j</strong> присваивается <strong>-i</strong>. Если <strong>i</strong> больше или равно нулю, то <strong>j</strong> присваивается <strong>i</strong><emphasis>.</emphasis></p>
    </section>
   </section>
   <section>
    <title>
     <p><strong>Операции присваивания</strong></p>
    </title>
    <section>
     <p>В языке Си имеются следующие операции присваивания:</p>
     <table>
      <tr>
       <td align="center">Операция</td>
       <td align="center">Действие</td>
      </tr>
      <tr>
       <td align="left">++</td>
       <td align="left">Унарный инкремент</td>
      </tr>
      <tr>
       <td align="left">--</td>
       <td align="left">Унарный декремент</td>
      </tr>
      <tr>
       <td align="left">=</td>
       <td align="left">Простое присваивание</td>
      </tr>
      <tr>
       <td align="left">*=</td>
       <td align="left">Умножение с присваиванием</td>
      </tr>
      <tr>
       <td align="left">/=</td>
       <td align="left">Деление с присваиванием</td>
      </tr>
      <tr>
       <td align="left">%=</td>
       <td align="left">Остаток от деления с присваиванием</td>
      </tr>
      <tr>
       <td align="left">+=</td>
       <td align="left">Сложение с присваиванием</td>
      </tr>
      <tr>
       <td align="left">-=</td>
       <td align="left">Вычитание с присваиванием</td>
      </tr>
      <tr>
       <td align="left">&lt;&lt;=</td>
       <td align="left">Сдвиг влево с присваиванием</td>
      </tr>
      <tr>
       <td align="left">&gt;&gt;=</td>
       <td align="left">Сдвиг вправо с присваиванием</td>
      </tr>
      <tr>
       <td align="left">&amp;=</td>
       <td align="left">Поразрядное И с присваиванием</td>
      </tr>
      <tr>
       <td align="left">|=</td>
       <td align="left">Поразрядное включающее ИЛИ с присваиванием</td>
      </tr>
      <tr>
       <td align="left">^=</td>
       <td align="left">Поразрядное исключающее ИЛИ с присваиванием</td>
      </tr>
     </table>
     <p>При присваивании тип правого операнда преобразуется к типу левого операнда. Специфика этого преобразования зависит от обоих типов и подробно описана в разделе 4.7.1. Левый (или единственный) операнд операции присваивания должен быть модифицируемым L-выражением (см. раздел 4.2.7).</p>
     <p>Важное отличие присваивания в языке Си от операторов присваивания в других языках программирования состоит в том, что в языке Си операция присваивания вырабатывает значение, которое может быть использовано далее в вычислении выражения.</p>
    </section>
    <section>
     <title>
      <p><strong>Операции инкремента и декремента</strong></p>
     </title>
     <p>Операции ++ и -- инкрементируют (увеличивают на единицу) и декрементируют (уменьшают на единицу) свой операнд. Операнд должен иметь целый, плавающий тип или быть указателем. В качестве операнда допустимо только модифицируемое L-выражение.</p>
     <p>Операнды целого или плавающего типа увеличиваются или уменьшаются на целую единицу. Над операндом не производятся преобразования по умолчанию. Тип результата соответствует типу операнда. Операнд типа указатель инкрементируется или декрементируется на размер объекта, который он адресует, по правилам, описанным в разделе 4.3.4. Инкрементированный указатель адресует следующий элемент данного типа, а декрементированный указатель—предыдущий.</p>
     <p>Операции инкремента и декремента могут записываться как перед своим операндом (префиксная форма записи), так и после него (постфиксная форма записи). Для операции в префиксной форме операнд сначала инкрементируется или декрементируется, а затем его новое значение участвует в дальнейшем вычислении выражения, содержащего данную операцию. Для операции в постфиксной форме операнд инкрементируется лишь после того, как его старое значение участвует в вычислении выражения. Таким образом, результатом операций инкремента и декремента является либо новое, либо старое значение операнда.</p>
     <p>Примеры:</p>
     <p>/* пример 1 */</p>
     <p>if(pos++ &gt; 0) *p++ = *q++;</p>
     <p>/* пример 2 */</p>
     <p>if(line[--i] != '\n') return;</p>
     <p>В первом примере переменная <emphasis>pos</emphasis> проверяется на положительное значение, а затем инкрементируется. Если значение <emphasis>pos</emphasis> до инкремента было положительно, то выполняется следующий оператор. В нем значение, указуемое <strong>q</strong>, заносится по адресу, содержащемуся в <strong>р</strong>. После этого <strong>р</strong> и <strong>q</strong> инкрементируются.</p>
     <p>Во втором примере переменная <strong>i</strong> декрементируется перед ее использованием в качестве индекса массива <strong>line</strong>.</p>
    </section>
    <section>
     <title>
      <p><strong>Простое присваивание</strong></p>
     </title>
     <p>Операция простого присваивания обозначается знаком =. Значение правого операнда присваивается левому операнду. Левый операнд должен быть модифицируемым L-выражением. При присваивании выполняются правила преобразования типов, описанные в разделе 4.7.1.</p>
     <p>Операция вырабатывает результат, который может быть далее использован в выражении. Результатом операции является присвоенное значение. Тип результата — тип левого операнда.</p>
     <p>Пример 1:</p>
     <p>double х;</p>
     <p>int у;</p>
     <p>х <strong>=</strong> у; Значение у преобразуется к типу <strong>double</strong> и присваивается <strong>х</strong>.</p>
     <p>Пример 2:</p>
     <p>int а, b, с; b <strong>=</strong> 2; a = b + (с = 5);</p>
     <p>Переменной <strong>с</strong> присваивается значение <strong>5</strong>, переменной <strong>а</strong> — значение <strong>b + 5</strong>, равное <strong>7</strong>.</p>
    </section>
    <section>
     <title>
      <p><strong>Составное присваивание</strong></p>
     </title>
     <p>Операция составного присваивания состоит из простой операции присваивания, скомбинированной с какой-либо другой бинарной операцией. При составном присваивании вначале выполняется действие, специфицированное бинарной операцией, а затем результат присваивается левому операнду. Выражение составного присваивания со сложением, например имеет вид:</p>
     <p><strong>&lt;</strong><emphasis>выражение1</emphasis>&gt; += &lt;<emphasis>выражение2</emphasis><strong>&gt;</strong></p>
     <p>Оно может быть записано и таким образом:</p>
     <p><strong>&lt;</strong><emphasis>выражение1</emphasis><strong>&gt; = &lt;</strong><emphasis>выражение1</emphasis><strong>&gt;</strong> + <strong>&lt;</strong><emphasis>выражение2</emphasis><strong>&gt;</strong></p>
     <p>Значение операции вырабатывается по тем же правилам, что и для операции простого присваивания. Однако выражение составного присваивания не эквивалентно обычной записи, поскольку в выражении составного присваивания &lt;<emphasis>выражение1</emphasis>&gt; вычисляется только один раз, в то время как в обычной записи оно вычисляется дважды: в операции сложения и в операции присваивания. Например, оператор</p>
     <p>*str1.str2.ptr += 5;</p>
     <p>легче для понимания и выполняется быстрее, чем оператор</p>
     <p>*str1.str2.ptr = *str1.str2.ptr + 5;</p>
     <p>Использование составных операций присваивания может повысить эффективность программ. Каждая операция составного присваивания выполняет преобразования, которые определяются входящей в ее состав бинарной операцией, и соответственно ограничивает типы своих операндов. Результатом операции составного присваивания является значение, присвоенное левому операнду. Тип результата — тип левого операнда.</p>
     <p>Пример:</p>
     <p>n &amp;<strong>=</strong> 0xFFFE;</p>
     <p>В этом примере операция поразрядное И выполняется над n и шестнадцатеричным значением FFFE, и результат присваивается n.</p>
    </section>
   </section>
   <section>
    <title>
     <p><strong>Приоритет и порядок выполнения</strong></p>
    </title>
    <p>Приоритет и ассоциативность операций языка Си влияют на порядок группирования операндов и вычисления операций в выражении. Приоритет операций существен только при наличии нескольких операций, имеющих различный приоритет. Выражения с более приоритетными операциями вычисляются первыми.</p>
    <p>В таблице 4.1 приведены операции в порядке убывания приоритета. Операции, расположенные в одной строке таблицы, или объединенные в одну группу, имеют одинаковый приоритет и одинаковую ассоциативность.</p>
    <p>Таблица 4.1.</p>
    <subtitle><strong>Приоритет и ассоциативность операций в языке Си</strong></subtitle>
    <table>
     <tr>
      <td align="center">Знак операции</td>
      <td align="center">Наименование</td>
      <td align="center">Ассоциативность</td>
     </tr>
     <tr>
      <td align="left">() [] . -&gt;</td>
      <td align="left">Первичные</td>
      <td align="center">Слева направо</td>
     </tr>
     <tr>
      <td align="left">+ - ~ ! * &amp; ++ -- sizeof приведение типа</td>
      <td align="left">Унарные</td>
      <td align="center">Справа налево</td>
     </tr>
     <tr>
      <td align="left">* / %</td>
      <td align="left">Мультипликативные</td>
      <td align="center">Слева направо</td>
     </tr>
     <tr>
      <td align="left">+ -</td>
      <td align="left">Аддитивные</td>
      <td align="center">Слева направо</td>
     </tr>
     <tr>
      <td align="left">&gt;&gt; &lt;&lt;</td>
      <td align="left">Сдвиг</td>
      <td align="center">Слева направо</td>
     </tr>
     <tr>
      <td align="left">&lt; &gt; &lt;= &gt;=</td>
      <td align="left">Отношение</td>
      <td align="center">Слева направо</td>
     </tr>
     <tr>
      <td align="left">== !=</td>
      <td align="left">Отношение</td>
      <td align="center">Слева направо</td>
     </tr>
     <tr>
      <td align="left">&amp;</td>
      <td align="left">Поразрядное И</td>
      <td align="center">Слева направо</td>
     </tr>
     <tr>
      <td align="left">^</td>
      <td align="left">Поразрядное исключающее ИЛИ</td>
      <td align="center">Слева направо</td>
     </tr>
     <tr>
      <td align="left">|</td>
      <td align="left">Поразрядное включающее ИЛИ</td>
      <td align="center">Слева направо</td>
     </tr>
     <tr>
      <td align="left">&amp;&amp;</td>
      <td align="left">Логическое И</td>
      <td align="center">Слева направо</td>
     </tr>
     <tr>
      <td align="left">||</td>
      <td align="left">Логическое ИЛИ</td>
      <td align="center">Слева направо</td>
     </tr>
     <tr>
      <td align="left">?:</td>
      <td align="left">Условная</td>
      <td align="center">Справа налево</td>
     </tr>
     <tr>
      <td align="left">= *= /= %= += -= &lt;&lt;= &gt;&gt;= &amp;= |= ^=</td>
      <td align="left">Простое и составное присваивание</td>
      <td align="center">Справа налево</td>
     </tr>
     <tr>
      <td align="left">,</td>
      <td align="left">Последовательное вычисление</td>
      <td align="center">Слева направо</td>
     </tr>
    </table>
    <empty-line/>
    <p>Из таблицы 4.1. следует, что операнды, представляющие вызов функции, индексное выражение, выражение выбора элемента и выражение в скобках, имеют наибольший приоритет и ассоциативность слева направо. Приведение типа имеет тот же приоритет и порядок выполнения, что и унарные операции.</p>
    <p>Выражение может содержать несколько операций одного приоритета. Когда несколько операций одного и того же уровня приоритета появляются в выражении, то они применяются в соответствии с их ассоциативностью — либо справа налево, либо слева направо.</p>
    <p>Следует отметить, что в языке Си принят неудачный порядок приоритета для некоторых операций, в частности для операции сдвига и поразрядных операций. Они имеют более низкий приоритет, чем арифметические операции (сложение и др.). Поэтому выражение</p>
    <p>а = b &amp; 0xFF + 5</p>
    <p>вычисляется как</p>
    <p>а = b &amp; (0xFF + 5),</p>
    <p>а выражение</p>
    <p>а +с &gt;&gt; 1</p>
    <p>вычисляется как</p>
    <p>(а + с) &gt;&gt; 1</p>
    <p>Мультипликативные, аддитивные и поразрядные операции обладают свойством коммутативности. Это значит, что результат вычисления выражения, включающего несколько коммутативных операций одного и того же приоритета, не зависит от порядка выполнения этих операций. Поэтому компилятор оставляет за собой право вычислять такие выражения в любом порядке, даже в случае, когда в выражении имеются скобки, специфицирующие порядок вычисления.</p>
    <p>В СП ТС реализована операция унарного плюса, позволяющая гарантировать порядок вычисления выражений в скобках.</p>
    <p>Операция последовательного вычисления, логические операции И и ИЛИ, условная операция и операция вызова функции гарантируют определенный порядок вычисления своих операндов. Операция последовательного вычисления обеспечивает вычисление своих операндов по очереди, слева направо (запятая, разделяющая аргументы в вызове функции, не является операцией последовательного вычисления и не обеспечивает таких гарантий). Гарантируется лишь то, что к моменту вызова функции все аргументы уже вычислены.</p>
    <p>Условная операция вычисляет сначала свой первый операнд, а затем, в зависимости от его значения, либо второй, либо третий.</p>
    <p>Логические операции также обеспечивают вычисление своих операндов слева направо. Однако логические операции вычисляют минимальное число операндов, необходимое для определения результата выражения. Таким образом, второй операнд выражения может вообще не вычисляться.</p>
    <p>Пример:</p>
    <p>int х, у, z, f();</p>
    <p>z = х &gt; у || f(x, у);</p>
    <p>Сначала вычисляется выражение х&gt;у. Если оно истинно, то переменной z присваивается значение 1, а функция f не вызывается. Если же значение х не больше у, то вычисляется выражение f(x,y). Если функция f возвращает ненулевое значение, то переменной z присваивается 1, иначе 0. Отметим также, что при вызове функции f гарантируется, что значение ее первого аргумента больше второго.</p>
    <p>Рассмотренный пример показывает основные возможности использования порядка выполнения логических операций. Это, во-первых, повышение эффективности за счет помещения наиболее вероятных условий в качестве первых операндов логических операций. Во-вторых, это возможность вставки в выражение проверок, при ложности которых последующие действия не будут производиться. Так, в следующем условном операторе <strong>if</strong> чтение очередного символа из файла будет выполняться только в том случае, если конец файла еще не достигнут:</p>
    <p>if(!feof(pf)) <emphasis>&amp;&amp;</emphasis> (с = getc(pf)) …</p>
    <p>Здесь <strong>feof</strong> — функция проверки на конец файла, <strong>getc</strong> — функция чтения символа из файла (см. раздел 12).</p>
    <p>В-третьих, можно гарантировать, что в выражении <strong>f(x)&amp;&amp;g(y)</strong> функция <strong>f</strong> будет вызвана раньше, чем функция <strong>g</strong>. Для выражения <strong>f(x)+g(y)</strong> этого утверждать нельзя.</p>
    <p>В последующих примерах показано группирование операндов для различных выражений.</p>
    <table>
     <tr>
      <td align="left">Выражение</td>
      <td align="left">Группирование операндов</td>
     </tr>
     <tr>
      <td align="left">a &amp; b || c</td>
      <td align="left">(a &amp; b) || c</td>
     </tr>
     <tr>
      <td align="left">a = b || c</td>
      <td align="left">a = (b || c)</td>
     </tr>
     <tr>
      <td align="left">q &amp;&amp; r || s--</td>
      <td align="left">(q &amp;&amp; r) || (s--)</td>
     </tr>
     <tr>
      <td align="left">p == 0 ? p += 1 : p += 2</td>
      <td align="left">(p == 0 ? p += 1 : p) += 2</td>
     </tr>
    </table>
    <empty-line/>
    <p>В первом примере поразрядная операция И (&amp;) имеет больший приоритет, чем -логическая операция ИЛИ (||), поэтому выражение <strong>а&amp;b</strong> является первым операндом логической операции ИЛИ.</p>
    <p>Во втором примере логическая операция ИЛИ (||) имеет больший приоритет, чем операция простого присваивания, поэтому выражение <strong>b||с</strong> образует правый операнд операции присваивания. (Обратите внимание на то, что значение, присваиваемое <strong>а</strong>, есть нуль или единица.)</p>
    <p>В третьем примере показано синтаксически корректное выражение, которое может выработать неожиданный результат. Логическая операция И (&amp;&amp;) имеет более высокий приоритет, чем логическая операция ИЛИ (||), поэтому запись <strong>q&amp;&amp;r</strong> образует операнд. Поскольку логические операции сначала вычисляют свой левый операнд, то выражение <strong>q&amp;&amp;r</strong> вычисляется раньше, чем <strong>s--</strong>. Однако если <strong>q&amp;&amp;r</strong> дает ненулевое значение, то <strong>s--</strong> не будет вычисляться и <strong>s</strong> не декрементируется. Более надежно было бы поместить <strong>s--</strong> на место первого операнда выражения либо декрементировать <strong>s</strong> отдельной операцией.</p>
    <p>В четвертом примере показано неверное выражение, которое приведет к ошибке при компиляции. Операция равенства (==) имеет наибольший приоритет, поэтому <strong>p==0</strong> группируется в операнд. Тернарная операция <strong>?:</strong> имеет следующий приоритет. Ее первым операндом является выражение <strong>p==0</strong>, вторым операндом — выражение <strong>p+=1</strong>. Однако последним операндом тернарной операции будет считаться <strong>p</strong>, а не <strong>p+=2</strong>. так как в данном случае идентификатор <strong>p</strong> по приоритету операций связан более тесно с тернарной операцией, чем с составной операцией сложения с присваиванием. В результате возникает синтаксическая ошибка, поскольку левый операнд составной операции присваивания не является L-выражением.</p>
    <p>Чтобы предупредить ошибки подобного рода и сделать программу более наглядной, рекомендуется использовать скобки. Предыдущий пример может быть корректно оформлен следующим образом:</p>
    <p>(р == 0) ? (р += 1) : (р += 2)</p>
   </section>
   <section>
    <title>
     <p><strong>Побочные эффекты</strong></p>
    </title>
    <p>Побочный эффект выражается в неявном изменении значения переменной в процессе вычисления выражения. Все операции присваивания могут вызывать побочный эффект. Вызов функции, в которой изменяется значение какой-либо внешней переменной, либо путем явного присваивания, либо через указатель, также имеет побочный эффект.</p>
    <p>Порядок вычисления выражения зависит от реализации компилятора, за исключением случаев, в которых явно гарантируется определенный порядок вычислений (см. раздел 4.5). При вычислении выражения в языке Си существуют так называемые контрольные точки. По достижении контрольной точки все предшествующие вычисления, в том числе все побочные эффекты, гарантированно произведены. Контрольными точками являются операция последовательного вычисления, условная операция, логические операции И и ИЛИ, вызов функции. Другие контрольные точки:</p>
    <p>—конец полного выражения (т.е. выражения, которое не является частью другого выражения);</p>
    <p>—конец инициализирующего выражения для переменной класса памяти <strong>auto</strong>;</p>
    <p>—конец выражений, управляющих выполнением операторов <strong>if</strong>, <strong>switch</strong>, <strong>for</strong>, <strong>do</strong>, <strong>while</strong> и выражения в операторе <strong>return</strong>. Приведем примеры побочных эффектов:</p>
    <p>add(i + 1, i = j + 2);</p>
    <p>Аргументы вызова функции <strong>add</strong> могут быть вычислены в любом порядке. Выражение <strong>i+1</strong> может быть вычислено перед выражением <strong>i=j+2</strong>, или после него, с различным результатом в каждом случае.</p>
    <p>Унарные операции инкремента и декремента также содержат в себе присваивание и могут быть причиной побочных эффектов, как это показано в следующем примере:</p>
    <p>int i, а [10];</p>
    <p>i = 0;</p>
    <p>a[i++] = i;</p>
    <p>Неизвестно, какое значение будет присвоено элементу а[0] — нуль или единица, поскольку для операции присваивания порядок вычисления аргументов не оговаривается.</p>
   </section>
   <section>
    <title>
     <p><strong>Преобразования типов</strong></p>
    </title>
    <section>
     <p>Преобразование типов производится либо неявно, например при преобразовании по умолчанию или в процессе присваивания, либо явно, путем выполнения операции приведения типа. Преобразование типов выполняется также, когда преобразуется значение, передаваемое как аргумент функции. Далее рассматриваются правила преобразования для каждого из этих случаев.</p>
    </section>
    <section>
     <title>
      <p><strong>Преобразования типов при присваивании</strong></p>
     </title>
     <p>В операциях присваивания тип значения, которое присваивается, преобразуется к типу переменной, получающей это значение. Преобразования при присваивании допускаются даже в тех случаях, когда они влекут за собой потерю информации.</p>
     <p>Тип <strong>long</strong> d<strong>o</strong>uble ведет себя в преобразованиях аналогично типу <strong>double</strong>.</p>
     <p>Преобразования знаковых целых типов Знаковое целое значение преобразуется к короткому знаковому целому значению (<strong>short signed int</strong>) посредством усечения старших битов. Знаковое целое значение преобразуется к длинному знаковому целому значению (<strong>long signed int</strong>) путем расширения знака влево. Преобразование знаковых целых значений к плавающим значениям происходит путем преобразования к типу <strong>long</strong>, а затем преобразования к плавающему типу. При этом возможна некоторая потеря точности. При преобразовании знакового целого значения к беззнаковому целому значению (<strong>unsigned int</strong>) производится лишь преобразование к размеру беззнакового целого типа, и результат интерпретируется как беззнаковое целое значение.</p>
     <p>Правила преобразования знаковых целых типов приведены в таблице 4.2. Предполагается, что тип <strong>char</strong> по умолчанию является знаковым. Если во время компиляции используется опция, которая изменяет умолчание для типа <strong>char</strong> со знакового на беззнаковый, то для него выполняется преобразование как для типа <strong>unsigned char</strong> (см. таблицу 4.3).</p>
     <p>Таблица 4.2.</p>
     <subtitle><strong>Преобразование знаковых целых типов</strong></subtitle>
     <table>
      <tr>
       <td align="center">От типа</td>
       <td align="center">К типу</td>
       <td align="center">Метод</td>
      </tr>
      <tr>
       <td align="left">char</td>
       <td align="left">short</td>
       <td align="left">дополнение знаком</td>
      </tr>
      <tr>
       <td align="left">char</td>
       <td align="left">long</td>
       <td align="left">дополнение знаком</td>
      </tr>
      <tr>
       <td align="left">char</td>
       <td align="left">unsigned char</td>
       <td align="left">сохранение битового представления;</td>
      </tr>
      <tr>
       <td align="left">char</td>
       <td align="left">unsigned short</td>
       <td align="left">старший бит теряет функцию знакового бита дополнение знаком до short; преобразование short в unsigned short</td>
      </tr>
      <tr>
       <td align="left">char</td>
       <td align="left">unsigned long</td>
       <td align="left">дополнение знаком до long; преобразование long в unsigned long</td>
      </tr>
      <tr>
       <td align="left">char</td>
       <td align="left">float</td>
       <td align="left">дополнение знаком до long; преобразование long к float</td>
      </tr>
      <tr>
       <td align="left">char</td>
       <td align="left">double</td>
       <td align="left">дополнение знаком до long; преобразование long к double</td>
      </tr>
      <tr>
       <td align="left">short</td>
       <td align="left">char</td>
       <td align="left">сохранение младшего байта</td>
      </tr>
      <tr>
       <td align="left">short</td>
       <td align="left">long</td>
       <td align="left">дополнение знаком</td>
      </tr>
      <tr>
       <td align="left">short</td>
       <td align="left">unsigned char</td>
       <td align="left">сохранение младшего байта</td>
      </tr>
      <tr>
       <td align="left">short</td>
       <td align="left">unsigned short</td>
       <td align="left">сохранение битового представления; старший бит теряет функцию знакового бита</td>
      </tr>
      <tr>
       <td align="left">short</td>
       <td align="left">unsigned long</td>
       <td align="left">дополнение знаком до long; преобразование long в unsigned long</td>
      </tr>
      <tr>
       <td align="left">short</td>
       <td align="left">float</td>
       <td align="left">дополнение знаком до long; преобразование long к float</td>
      </tr>
      <tr>
       <td align="left">short</td>
       <td align="left">double</td>
       <td align="left">дополнение знаком до long; преобразование long к double</td>
      </tr>
      <tr>
       <td align="left">long</td>
       <td align="left">char</td>
       <td align="left">сохранение младшего байта</td>
      </tr>
      <tr>
       <td align="left">long</td>
       <td align="left">short</td>
       <td align="left">сохранение младшего слова</td>
      </tr>
      <tr>
       <td align="left">long</td>
       <td align="left">unsigned char</td>
       <td align="left">сохранение младшего байта</td>
      </tr>
      <tr>
       <td align="left">long</td>
       <td align="left">unsigned short</td>
       <td align="left">сохранение младшего слова</td>
      </tr>
      <tr>
       <td align="left">long</td>
       <td align="left">unsigned long</td>
       <td align="left">сохранение битового представления; старший бит теряет функцию знакового бита</td>
      </tr>
      <tr>
       <td align="left">long</td>
       <td align="left">float</td>
       <td align="left">представляется как float; возможна некоторая потеря точности</td>
      </tr>
      <tr>
       <td align="left">long</td>
       <td align="left">double</td>
       <td align="left">представляется как double; возможна некоторая потеря точности</td>
      </tr>
     </table>
     <empty-line/>
     <p>Примечание. В СП MSC и СП ТС тип <strong>int</strong> эквивалентен типу <strong>short</strong> и преобразование для типа <strong>int</strong> производится как для типа <strong>short</strong>. В некоторых реализациях языка Си тип <strong>int</strong> эквивалентен типу <strong>long</strong> и преобразование для типа <strong>int</strong> производится как для типа <strong>long</strong>.</p>
     <subtitle><strong>Преобразование беззнаковых целых типов</strong></subtitle>
     <p>Беззнаковое целое значение преобразуется к короткому беззнаковому целому значению или короткому знаковому целому значению путем усечения старших битов. Беззнаковое целое значение преобразуется к длинному беззнаковому целому значению или длинному знаковому целому значению путем дополнения нулями слева. Беззнаковое целое значение преобразуется к значению с плавающей точкой путем преобразования к типу <strong>long</strong>, а затем преобразования значения типа <strong>long</strong> к значению с плавающей точкой.</p>
     <p>Если беззнаковое целое значение преобразуется к знаковому целому значению того же размера, то битовое представление не меняется. Однако, если старший (знаковый) бит был установлен в единицу, представляемое значение изменится.</p>
     <p>Правила преобразования беззнаковых целых типов приведены в таблице 4.3.</p>
     <p>Таблица 4.3.</p>
     <subtitle><strong>Преобразование беззнаковых целых типов</strong></subtitle>
     <table>
      <tr>
       <td align="center">От типа</td>
       <td align="center">К типу</td>
       <td align="center">Метод</td>
      </tr>
      <tr>
       <td align="left">unsigned char</td>
       <td align="left">char</td>
       <td align="left">сохранение битового представления; старший бит становится знаковым</td>
      </tr>
      <tr>
       <td align="left">unsigned char</td>
       <td align="left">short</td>
       <td align="left">дополнение нулевыми битами</td>
      </tr>
      <tr>
       <td align="left">unsigned char</td>
       <td align="left">long</td>
       <td align="left">дополнение нулевыми битами</td>
      </tr>
      <tr>
       <td align="left">unsigned char</td>
       <td align="left">unsigned short</td>
       <td align="left">дополнение нулевыми битами</td>
      </tr>
      <tr>
       <td align="left">unsigned char</td>
       <td align="left">unsigned long</td>
       <td align="left">дополнение нулевыми битами</td>
      </tr>
      <tr>
       <td align="left">unsigned char</td>
       <td align="left">float</td>
       <td align="left">дополнение нулевыми битами до long; преобразование long к float</td>
      </tr>
      <tr>
       <td align="left">unsigned char</td>
       <td align="left">double</td>
       <td align="left">дополнение нулевыми битами до long; преобразование long к double</td>
      </tr>
      <tr>
       <td align="left">unsigned short</td>
       <td align="left">char</td>
       <td align="left">сохранение младшего байта</td>
      </tr>
      <tr>
       <td align="left">unsigned short</td>
       <td align="left">short</td>
       <td align="left">сохранение битового представления; старший бит становится знаковым</td>
      </tr>
      <tr>
       <td align="left">unsigned short</td>
       <td align="left">long</td>
       <td align="left">дополнение нулевыми битами</td>
      </tr>
      <tr>
       <td align="left">unsigned short</td>
       <td align="left">unsigned char</td>
       <td align="left">сохранение младшего байта</td>
      </tr>
      <tr>
       <td align="left">unsigned short</td>
       <td align="left">unsigned long</td>
       <td align="left">дополнение нулевыми битами</td>
      </tr>
      <tr>
       <td align="left">unsigned short</td>
       <td align="left">float</td>
       <td align="left">дополнение нулевыми битами до long; преобразование long к float</td>
      </tr>
      <tr>
       <td align="left">unsigned short</td>
       <td align="left">double</td>
       <td align="left">дополнение нулевыми битами до long; преобразование long к double</td>
      </tr>
      <tr>
       <td align="left">unsigned long</td>
       <td align="left">char</td>
       <td align="left">сохранение младшего байта</td>
      </tr>
      <tr>
       <td align="left">unsigned long</td>
       <td align="left">short</td>
       <td align="left">сохранение младшего слова</td>
      </tr>
      <tr>
       <td align="left">unsigned long</td>
       <td align="left">long </td>
       <td align="left">сохранение битового представления; старший бит становится знаковым</td>
      </tr>
      <tr>
       <td align="left">unsigned long</td>
       <td align="left">unsigned char</td>
       <td align="left">сохранение младшего байта</td>
      </tr>
      <tr>
       <td align="left">unsigned long</td>
       <td align="left">unsigned short</td>
       <td align="left">сохранение младшего слова</td>
      </tr>
      <tr>
       <td align="left">unsigned long</td>
       <td align="left">float</td>
       <td align="left">преобразование к long; преобразование long к float</td>
      </tr>
      <tr>
       <td align="left">unsigned long</td>
       <td align="left">double</td>
       <td align="left">преобразование к long; преобразование long к double (в версии 5 СП MSC это преобразование производится напрямую, без промежуточного типа long)</td>
      </tr>
     </table>
     <empty-line/>
     <p>Примечание<emphasis>.</emphasis> В СП MSC и СП ТС тип <strong>unsigned int</strong> эквивалентен типу <strong>unsigned short</strong> и преобразование для типа <strong>unsigned int</strong> производится как для типа <strong>unsigned short</strong>. В некоторых реализациях языка Си тип <strong>unsigned int</strong> эквивалентен типу <strong>unsigned long</strong> и преобразование для типа <strong>int</strong> производится как для типа <strong>unsigned long</strong>.</p>
     <p>Преобразование плавающих типов Значения типа <strong>float</strong> преобразуются к типу <strong>double</strong> без потери точности. Значения типа <strong>double</strong> при преобразовании к типу <strong>float</strong> представляются с некоторой потерей точности. Однако если порядок значения типа <strong>double</strong> слишком велик для представления экспонентой значения типа <strong>float</strong>, то происходит потеря значимости, о чем сообщается во время выполнения.</p>
     <p>Значения с плавающей точкой преобразуются к целым типам в два приема: сначала производится преобразование к типу <strong>long</strong>, а затем преобразование этого значения типа <strong>long</strong> к требуемому типу. Дробная часть плавающего значения отбрасывается при преобразовании к <strong>long</strong>; если полученное значение слишком велико для типа <strong>long</strong>, то результат преобразования не определен. Правила преобразования плавающих типов приведены в таблице 4.4.</p>
     <p>Таблица 4.4.</p>
     <table>
      <tr>
       <td align="center">От типа</td>
       <td align="center">К типу</td>
       <td align="center">Метод</td>
      </tr>
      <tr>
       <td align="left">float</td>
       <td align="left">char</td>
       <td align="left">преобразование к long; преобразование long к char</td>
      </tr>
      <tr>
       <td align="left">float</td>
       <td align="left">short</td>
       <td align="left">преобразование к long; преобразование long к short</td>
      </tr>
      <tr>
       <td align="left">float</td>
       <td align="left">long</td>
       <td align="left">усечение дробной части; результат не определен, если он слишком велик для представления типом long</td>
      </tr>
      <tr>
       <td align="left">float</td>
       <td align="left">unsigned short</td>
       <td align="left">преобразование к long; преобразование long к unsigned short</td>
      </tr>
      <tr>
       <td align="left">float</td>
       <td align="left">unsigned long</td>
       <td align="left">преобразование к long; преобразование long к unsigned long</td>
      </tr>
      <tr>
       <td align="left">float</td>
       <td align="left">double</td>
       <td align="left">дополнение мантиссы нулевыми битами справа</td>
      </tr>
      <tr>
       <td align="left">double</td>
       <td align="left">char</td>
       <td align="left">преобразование к float; преобразование float к char</td>
      </tr>
      <tr>
       <td align="left">double</td>
       <td align="left">short</td>
       <td align="left">преобразование к float; преобразование float к short</td>
      </tr>
      <tr>
       <td align="left">double</td>
       <td align="left">long</td>
       <td align="left">усечение дробной части; результат не определен, если он слишком велик для представления типом long</td>
      </tr>
      <tr>
       <td align="left">double</td>
       <td align="left">unsigned short</td>
       <td align="left">преобразование к long; преобразование long к unsigned short</td>
      </tr>
      <tr>
       <td align="left">double</td>
       <td align="left">unsigned long</td>
       <td align="left">преобразование к long; преобразование long к unsigned long</td>
      </tr>
      <tr>
       <td align="left">double</td>
       <td align="left">float</td>
       <td align="left">усечение младших битов мантиссы; возможна потеря точности; если значение слишком велико для представления типом float, то результат преобразования не определен</td>
      </tr>
     </table>
     <empty-line/>
     <subtitle><strong>Преобразование указателей</strong></subtitle>
     <p>Указатель на значение одного типа может быть преобразован к указателю на значение другого типа. Результат может, однако, оказаться неопределенным из-за отличий в требованиях к выравниванию объектов разных типов и в размере памяти, занимаемом различными типами.</p>
     <p>Указатель при объявлении всегда ассоциируется с некоторым типом. В частности, это может быть тип <strong>void</strong>. Указатель на <strong>void</strong> можно преобразовывать к указателю на любой тип, и обратно. Указателям на некоторый тип можно присваивать адреса объектов другого типа, однако компилятор выдаст предупреждающее сообщение, если только это не указатель на тип <strong>void</strong>.</p>
     <p>Указатели на любые типы данных могут быть преобразованы к указателям на функции, и обратно. Однако в СП MSC для того, чтобы присвоить указатель на данные указателю на функцию (или наоборот), необходимо выполнить явное приведение его типа.</p>
     <p>Специальные ключевые слова <strong>near</strong>, <strong>far</strong>, <strong>huge</strong> позволяют модифицировать формат и размер указателей в программе. Компилятор учитывает принятый в выбранной модели памяти размер указателей и может в некоторых случаях неявно производить соответствующие преобразования адресных значений. Так, передача указателя в качестве аргумента функции может вызвать неявное преобразование его размера к большему из следующих двух значений:</p>
     <p>—принятому по умолчанию размеру указателя для действующей модели памяти (например, в средней модели указатель на данные имеет тип <strong>near</strong>);</p>
     <p>—размеру типа аргумента.</p>
     <p>Если задано предварительное объявление функции, в котором указан явно тип аргумента-указателя, в т.ч. с модификаторами <strong>near</strong>, <strong>far</strong>, <strong>huge</strong>, то будет преобразование именно к этому типу.</p>
     <p>Указатель может быть преобразован к значению целого типа. Метод преобразования зависит от размера указателя и размера целого типа следующим образом:</p>
     <p>—если указатель имеет тот же самый или меньший размер, чем целый тип, то указатель преобразуется по тем же правилам, что и беззнаковое целое;</p>
     <p>—если размер указателя больше, чем размер целого типа, то указатель сначала преобразуется к указателю того же размера, что и целый тип, а затем преобразуется к целому типу.</p>
     <p>Значение целого типа может быть преобразовано к указателю по следующим правилам. Если целый тип имеет тот же самый размер, что и указатель, то производится преобразование к указателю без изменения в представлении. Если же размер целого типа отличен от размера указателя, то целый тип сначала преобразуется к целому типу, размер которого совпадает с размером указателя, используя правила преобразования, приведенные в таблицах 4.2 и 4.3. Затем полученному значению присваивается тип указатель.</p>
     <subtitle><strong>Преобразования других типов</strong></subtitle>
     <p>Из определения перечислимого типа следует, что его значения имеют тип <strong>int</strong>. Поэтому преобразования к перечислимому типу и из него осуществляются так же, как для типа <strong>int</strong>.</p>
     <p>Недопустимы преобразования объектов типа структура или объединение.</p>
     <p>Тип <strong>void</strong> не имеет значения по определению. Поэтому он не может быть преобразован к другому типу, и никакое значение не может быть преобразовано к типу <strong>void</strong> путем присваивания. Тем не менее, значение может быть явно преобразовано операцией приведения типа к типу <strong>void</strong> (см. раздел 4.7.2).</p>
    </section>
    <section>
     <title>
      <p><strong>Явные преобразования типов</strong></p>
     </title>
     <p>Явное преобразование типа может быть выполнено посредством операции приведения типа. Она имеет следующую синтаксическую форму</p>
     <p>(&lt;<emphasis>абстрактное-имя-типа</emphasis>&gt;) &lt;<emphasis>операнд</emphasis>&gt;</p>
     <p>&lt;<emphasis>абстрактное-имя-типа</emphasis>&gt; — специфицирует некоторый тип; &lt;<emphasis>операнд</emphasis>&gt; — выражение, значение которого должно быть преобразовано к специфицированному типу (абстрактные имена типов рассмотрены в разделе 3.8.3).</p>
     <p>Преобразование операнда осуществляется так, как если бы он присваивался переменной типа &lt;<emphasis>имя-типа</emphasis>&gt;. Правила преобразования для операции присваивания, приведенные в разделе 4.7.1, полностью действуют для операции приведения типа. Однако, преобразование к типу <strong>char</strong> или <strong>short</strong> выполняется как преобразование к <strong>int</strong>. а преобразование к типу <strong>float</strong> — как преобразование к <strong>double</strong>.</p>
     <p>Имя типа <strong>void</strong> может быть использовано в операции приведения типа, но результирующее выражение не может быть присвоено никакому объекту, и ему также нельзя ничего присвоить. Значение типа <strong>void</strong> не может быть приведено ни к какому типу; например, результат функции, возвращающей <strong>void</strong>, не может быть присвоен.</p>
     <p>Результат операции приведения типа L-выражения сам является L-выражением и может представлять левый (или единственный) операнд операции присваивания, если приведенный тип не превышает по размеру исходный тип.</p>
     <p>Если объявлен указатель на функцию, то в приведении его типа можно задавать другие типы аргументов. Например:</p>
     <p>int (*р)(long); /* объявление указателя на функцию */</p>
     <p>(*(int(*)(int))р)(0); /*вызов функции по указателю */</p>
     <p>В операции приведения типа можно также задавать объявление структурного типа (тега), например:</p>
     <p>(struct {int a; int b;} *)р-&gt;а = 5;</p>
     <p>Область действия этого тега распространяется в СП MSC на остаток блока, а в СП ТС — на остаток тела функции.</p>
    </section>
    <section>
     <title>
      <p><strong>Преобразования типов при вызовах функций</strong></p>
     </title>
     <p>Метод преобразования аргументов функция при ее вызове зависит от того, имеется ли предварительное объявление данной функции, содержащее список типов ее аргументов.</p>
     <p>Если предварительное объявление имеется, и оно содержит список типов аргументов, то компилятор осуществляет контроль типов. Процесс контроля типов подробно описан в разделе 6.4.1 "Фактические аргументы".</p>
     <p>Если предварительное объявление отсутствует, или в нем опущен список типов аргументов, то над аргументами вызываемой функции выполняются только преобразования по умолчанию. Преобразования выполняются отдельно для каждого аргумента вызова. Смысл этих преобразований сводится к тому, что значения типа <strong>float</strong> преобразуются к типу <strong>double</strong>, значения типов <strong>char</strong> и <strong>short</strong> преобразуются к типу <strong>int</strong>, значения типов <strong>unsigned char</strong> и <strong>unsigned short</strong> преобразуются к типу <strong>unsigned int</strong>.</p>
     <p>Если в вызываемой функции в объявлениях формальных параметров - указателей используются модификаторы <strong>near</strong>, <strong>far</strong>, <strong>huge</strong>, то могут также происходить неявные преобразования формата указателей, передаваемых в функцию. Процесс преобразования можно контролировать путем задания соответствующих модификаторов в предварительном объявлении функции в списке типов аргументов - указателей. В этом случае компилятор выполнит преобразования в соответствии со списком типов аргументов.</p>
    </section>
   </section>
  </section>
  <section>
   <title>
    <p><strong>ОПЕРАТОРЫ</strong></p>
   </title>
   <section>
    <title>
     <p><strong>Введение</strong></p>
    </title>
    <p>Операторы языка Си управляют процессом выполнения программы. Набор операторов языка Си содержит все управляющие конструкции структурного программирования. Ниже представлен полный список операторов:</p>
    <p>пустой оператор</p>
    <p>составной оператор или блок</p>
    <p>оператор-выражение</p>
    <p>условный оператор <strong>if</strong></p>
    <p>оператор пошагового цикла <strong>for</strong></p>
    <p>оператор цикла с предусловием <strong>while</strong></p>
    <p>оператор цикла с постусловием <strong>do</strong></p>
    <p>оператор продолжения <strong>continue</strong></p>
    <p>оператор-переключатель <strong>switch</strong></p>
    <p>оператор разрыва <strong>break</strong></p>
    <p>оператор перехода <strong>goto</strong></p>
    <p>оператор возврата <strong>return</strong></p>
    <p>В составе некоторых операторов используются выражения, выполняющие роль условий. В зависимости от значения такого условного выражения выбирается та или иная последовательность действий. В языке Си отсутствуют булевские выражения как самостоятельный класс выражений; в качестве условных выражений применяются обычные выражения языка Си. Значение выражения считается истинным, если оно не равно нулю, и ложным, если равно нулю. Из этого следует, что условные выражения не обязательно должны содержать операции отношения</p>
    <p>if(а &lt; 0) …</p>
    <p>а могут выглядеть, например, так:</p>
    <p>if(а) … или if(а + b)</p>
    <p>В теле некоторых операторов языка Си могут содержаться другие операторы. Оператор, находящийся в теле другого оператора, в свою очередь может содержать операторы.</p>
    <p>Составной оператор ограничивается фигурными скобками. Все другие операторы заканчиваются точкой с запятой (;). Точка с запятой в языке Си является признаком конца оператора, а не разделителем операторов, как в ряде других языков программирования.</p>
    <p>Перед любым оператором языка Си может быть записана метка, состоящая из имени и двоеточия. Операторные метки распознаются только оператором <strong>goto</strong> (см. раздел 5.12 "Оператор перехода <strong>goto</strong>").</p>
    <p>Программа на языке Си выполняется последовательно, оператор за оператором, за исключением случаев, когда какой-либо оператор явно передает управление в другую часть программы, например при вызове функции или возврате из функции.</p>
   </section>
   <section>
    <title>
     <p><strong>Пустой оператор</strong></p>
    </title>
    <p>Синтаксис:</p>
    <p>;</p>
    <p>Действие:</p>
    <p>Пустой оператор — это оператор, состоящий только из точки с запятой. Он может появиться в любом месте программы, где по правилам синтаксиса требуется оператор. Выполнение пустого оператора не меняет состояния программы.</p>
    <p>Пример:</p>
    <p>for(i = 0; i &lt; 10; line[i++] = 0);</p>
    <p>Для таких операторов, как <strong>do</strong>, <strong>for</strong>, <strong>if</strong>, <strong>while</strong>, требуется, чтобы в их теле был хотя бы один оператор. Пустой оператор удовлетворяет требованиям синтаксиса в случаях, когда никаких действий не требуется. В приведенном примере третье выражение в заголовке оператора цикла <strong>for</strong> инициализирует первые 10 элементов массива <strong>line</strong> нулем. Тело оператора <strong>for</strong> состоит из пустого оператора, поскольку нет необходимости в других операторах.</p>
    <p>Пустой оператор, подобно любому другому оператору языка Си, может быть помечен меткой. Например, чтобы пометить закрывающую фигурную скобку составного оператора, которая не является оператором, нужно вставить перед ней помеченный пустой оператор.</p>
   </section>
   <section>
    <title>
     <p><strong>Составной оператор</strong></p>
    </title>
    <p>Синтаксис:</p>
    <p>{</p>
    <p>[&lt;<emphasis>объявление</emphasis>&gt;]</p>
    <p>.</p>
    <p>.</p>
    <p>.</p>
    <p>[<strong>&lt;</strong><emphasis>оператор</emphasis><strong>&gt;</strong>]</p>
    <p>}</p>
    <p>Действие:</p>
    <p>Действие составного оператора заключается в последовательном выполнении содержащихся в нем операторов, за исключением тех случаев, когда какой-либо оператор явно передает управление в другое место программы.</p>
    <p>В начале составного оператора могут содержаться объявления (см. разделы 3.6, 3.6.2). Они служат для определения переменных, локальных для данного блока, либо для распространения на данный блок области действия глобальных объектов.</p>
    <p>Пример:</p>
    <p>if(i <strong>&gt;</strong> 0) {</p>
    <p>line[i] = х;</p>
    <p>х++;</p>
    <p>}</p>
    <p>Типично использование составного оператора в качестве тела другого оператора, например оператора <strong>if</strong>. В приведенном примере, если <strong>i</strong> больше нуля, будут последовательно выполнены операторы, содержащиеся в составном операторе.</p>
    <p>Подобно другим операторам языка Си, любой оператор внутри составного оператора может быть помечен. Передача управления по метке внутрь составного оператора возможна, однако если составной оператор содержит объявления переменных с инициализацией, то при входе в блок по метке эта инициализация не будет выполнена и значения переменных будут непредсказуемы.</p>
    <p>Можно поставить метку и на сам составной оператор, если только это не оператор, составляющий тело функции.</p>
   </section>
   <section>
    <title>
     <p><strong>Оператор-выражение</strong></p>
    </title>
    <p>Синтаксис:</p>
    <p>&lt;<emphasis>выражение</emphasis>&gt;;</p>
    <p>Действие:</p>
    <p>&lt;<emphasis>Выражение</emphasis>&gt; вычисляется в соответствии с правилами, изложенными в разделе 4 "Выражения". Отличие оператора-выражения состоит в том, что значение содержащегося в нем выражения никак не используется. Кроме того, он может быть записан лишь там, где по синтаксису допустим оператор.</p>
    <p>Примеры:</p>
    <p>х = у+3; /*пример 1*/</p>
    <p>х++; /*пример 2*/</p>
    <p>f(x); /*пример 3*/</p>
    <p>В первом примере <strong>х</strong> присваивается значение <strong>у+3</strong>. Во втором примере <strong>х</strong> инкрементируется.</p>
    <p>В третьем примере показано выражение вызова функции. Если функция возвращает значение, то обычно оператор-выражение содержит операцию присваивания, чтобы запомнить значение, возвращаемое вызванной функцией. В данном примере возвращаемое значение не используется.</p>
   </section>
   <section>
    <title>
     <p><strong>Условный оператор if</strong></p>
    </title>
    <p>Синтаксис:</p>
    <p>if(&lt;<emphasis>выражение</emphasis>&gt;)</p>
    <p>&lt;<emphasis>оператор1</emphasis>&gt;</p>
    <p>[else</p>
    <p><strong>&lt;</strong><emphasis>оператор2</emphasis><strong>&gt;</strong>]</p>
    <p>Действие:</p>
    <p>Тело условного оператора <strong>if</strong> выполняется в зависимости от значения &lt;<emphasis>выражения</emphasis>&gt;.</p>
    <p>Сначала вычисляется &lt;<emphasis>выражение</emphasis>&gt;. Если значение выражения истинно (не равно нулю), то выполняется &lt;<emphasis>оператор1</emphasis>&gt;. Если же значение выражения ложно, то выполняется &lt;<emphasis>оператор2</emphasis>&gt;, непосредственно следующий за ключевым словом <strong>else</strong>.</p>
    <p>Если значение &lt;<emphasis>выражения</emphasis>&gt; ложно, но конструкция <strong>else</strong> опущена, то управление передается на оператор, следующий в программе за оператором <strong>if</strong>.</p>
    <p>Пример:</p>
    <p>if(i <strong>&gt;</strong> 0)</p>
    <p>У = х/i;</p>
    <p>else {</p>
    <p>х = 1;</p>
    <p>у <strong>=</strong> f(x);</p>
    <p>}</p>
    <p>В примере, если <strong>i</strong> больше нуля, выполняется оператор <strong>у=x/i;</strong>. Если <strong>i</strong> меньше или равно нулю, то значение <strong>i</strong> присваивается переменной <strong>х</strong>, а значение, возвращаемое функцией <strong>f(x)</strong>, присваивается переменной <strong>у</strong>.</p>
    <subtitle><strong>Вложенность</strong></subtitle>
    <p>Оператор <strong>if</strong> может быть вложен в &lt;<emphasis>оператор1</emphasis>&gt; или &lt;<emphasis>оператор2</emphasis>&gt; другого оператора <strong>if</strong>. При вложении операторов <strong>if</strong> рекомендуется для ясности группирования операторов использовать фигурные скобки, ограничивающие &lt;<emphasis>оператор1</emphasis>&gt; и &lt;<emphasis>оператор2</emphasis>&gt;.</p>
    <p>Если же фигурные скобки отсутствуют, то компилятор ассоциирует каждое ключевое слово <strong>else</strong> с ближайшим оператором <strong>if</strong>, у которого отсутствует конструкция <strong>else</strong>.</p>
    <p>На ключевое слово <strong>if</strong> можно поставить метку, а на ключевое слово <strong>else</strong> — нельзя (однако можно поставить метку на &lt;<emphasis>оператор2</emphasis>&gt;, следующий за <strong>else</strong>).</p>
    <p>Примеры.</p>
    <p>/* пример 1 — без скобок */</p>
    <p>if(i <strong>&gt;</strong> 0)</p>
    <p>if(j <strong>&gt;</strong> i)</p>
    <p>x <strong>=</strong> j;</p>
    <p>else x <strong>=</strong> i;</p>
    <p>/* пример 2 <strong>—</strong> со скобками */</p>
    <p>if(i <strong>&gt;</strong> 0) {</p>
    <p>if(j <strong>&gt;</strong> i)</p>
    <p>x = j;</p>
    <p>}</p>
    <p>else</p>
    <p>x = i;</p>
    <p>В первом примере ключевое слово <strong>else</strong> ассоциируется с внутренним условным оператором <strong>if</strong>. Если <strong>i</strong> меньше или равно нулю, то переменной <strong>х</strong> ничего не присваивается.</p>
    <p>Во втором примере фигурные скобки ограничивают внутренний условный оператор <strong>if</strong> и тем самым делают конструкцию <strong>else</strong> частью внешнего условного оператора <strong>if</strong>. Если <strong>i</strong> меньше или равно нулю, то переменной <strong>х</strong> присваивается значение <strong>i</strong>.</p>
   </section>
   <section>
    <title>
     <p><strong>Оператор пошагового цикла for</strong></p>
    </title>
    <p>Синтаксис:</p>
    <p>for([&lt;<emphasis>начальное-выражение</emphasis>&gt;]; [&lt;<emphasis>условное-выражение</emphasis>&gt;]; [&lt;<emphasis>выражение-приращения</emphasis>&gt;])</p>
    <p><strong>&lt;</strong><emphasis>оператор</emphasis><strong>&gt;</strong></p>
    <p>Действие:</p>
    <p>Тело оператора цикла <strong>for</strong> выполняется до тех пор, пока &lt;<emphasis>условное-выражение</emphasis>&gt; не станет ложным. Если оно изначально ложно, то тело цикла не будет выполнено ни разу. &lt;<emphasis>Начальное-выражение</emphasis>&gt; и &lt;<emphasis>выражение-приращения</emphasis>&gt; обычно используются для инициализации и модификации параметров цикла или других значений.</p>
    <p>Первым шагом при выполнении оператора цикла <strong>for</strong> является вычисление начального выражения, если оно имеется. Затем вычисляется условное выражение и производится его оценка следующим образом:</p>
    <p>1) Если условное выражение истинно (не равно нулю), то выполняется тело оператора. Затем вычисляется выражение приращения (если оно есть), и процесс повторяется.</p>
    <p>2) Если условное выражение опущено, то его значение принимается за истину и процесс выполнения продолжается, как описано выше. В этом случае оператор цикла <strong>for</strong> представляет бесконечный цикл, который может завершиться только при выполнении в его теле операторов <strong>break</strong>, <strong>goto</strong>, <strong>return</strong>.</p>
    <p>3) Если условное выражение ложно, то выполнение оператора <strong>for</strong> заканчивается и управление передается следующему за ним оператору в программе. Оператор <strong>for</strong> может завершиться и при выполнении операторов <strong>break</strong>, <strong>goto</strong>, <strong>return</strong> в теле оператора.</p>
    <p>Пример:</p>
    <p>for(i = space = tab = 0; i &lt; MAX; i++) {</p>
    <p>if(line[i] == '\x20')</p>
    <p>space++;</p>
    <p>if(line[i] =='\1'){</p>
    <p>lab++;</p>
    <p>line[i] = '\x20';</p>
    <p>}</p>
    <p>}</p>
    <p>В приведенном примере подсчитываются символы пробела ('\x20') и горизонтальной табуляции ('\1') в массиве символов с именем <strong>line</strong> и производится замена каждого символа горизонтальной табуляции на пробел.</p>
    <p>Сначала <strong>i</strong>, <strong>space</strong> и <strong>tab</strong> инициализируются нулевыми значениями. Затем <strong>i</strong> сравнивается с константой МАХ. Если <strong>i</strong> меньше МАХ, то выполняется тело оператора. В зависимости от значения <strong>line[i]</strong> выполняется тело одного из операторов <strong>if</strong> (или ни одного из них). Затем переменная <strong>i</strong> инкрементируется и снова сравнивается с именованной константой МАХ. Тело оператора выполняется до тех пор, пока значение <strong>i</strong> не станет больше или равно МАХ.</p>
   </section>
   <section>
    <title>
     <p><strong>Оператор цикла с предусловием while</strong></p>
    </title>
    <p>Синтаксис:</p>
    <p>while (&lt;<emphasis>выражение</emphasis>&gt;) <strong>&lt;</strong><emphasis>оператор</emphasis><strong>&gt;</strong></p>
    <p>Действие:</p>
    <p>Тело оператора цикла <strong>while</strong> выполняется до тех пор, пока значение &lt;<emphasis>выражения</emphasis>&gt; не станет ложным (т.е. равным нулю). Вначале вычисляется &lt;<emphasis>выражение</emphasis>&gt;. Если &lt;<emphasis>выражение</emphasis>&gt; изначально ложно, то тело оператора <strong>while</strong> вообще не выполняется и управление сразу передается на следующий за телом цикла оператор программы. Если &lt;<emphasis>выражение</emphasis>&gt; истинно, то выполняется тело цикла. Перед каждым следующим выполнением тела цикла &lt;<emphasis>выражение</emphasis>&gt; вычисляется заново. Этот процесс повторяется до тех пор, пока &lt;<emphasis>выражение</emphasis>&gt; не станет ложкам. Оператор цикла <strong>while</strong> может также завершиться при выполнении операторов <strong>break</strong>, <strong>goto</strong>, <strong>return</strong> внутри своего тела.</p>
    <p>Пример:</p>
    <p>while (i <strong>&gt;</strong>= 0) {</p>
    <p>slring1[i] = string2[i];</p>
    <p>i--;</p>
    <p>}</p>
    <p>В вышеприведенном примере элементы массива <strong>string2</strong> копируются в массив <strong>string1</strong>. Если <strong>i</strong> больше или равно нулю, то производится копирование (путем присваивания) очередного элемента, после чего <strong>i</strong> декрементируется. Когда <strong>i</strong> становится меньше нуля, выполнение оператора <strong>while</strong> завершается.</p>
   </section>
   <section>
    <title>
     <p><strong>Оператор цикла с постусловием do</strong></p>
    </title>
    <p>Синтаксис:</p>
    <p>do <strong>&lt;</strong><emphasis>оператор</emphasis><strong>&gt;</strong> while (<strong>&lt;</strong><emphasis>выражение</emphasis><strong>&gt;</strong>);</p>
    <p>Действие:</p>
    <p>Тело оператора цикла <strong>do</strong> выполняется один или несколько раз до тех пор, пока значение &lt;<emphasis>выражения</emphasis>&gt; не станет ложным (равным нулю). Вначале выполняется тело цикла — &lt;<emphasis>оператор</emphasis>&gt;, затем вычисляется условие — &lt;<emphasis>выражение</emphasis>&gt;. Если выражение ложно, то оператор цикла <strong>do</strong> завершается и управление передается следующему за оператором <strong>while</strong> оператору программы. Если значение выражения истинно (не равно нулю), то тело цикла выполняется снова, и снова вычисляется выражение. Выполнение тела оператора цикла <strong>do</strong> повторяется до тех пор, пока выражение не станет ложным. Оператор <strong>do</strong> может также завершиться при выполнении в своем теле операторов <strong>break</strong>, <strong>goto</strong>, <strong>return</strong>.</p>
    <p>Пример:</p>
    <p>do {</p>
    <p>у = f(x);</p>
    <p>х--;</p>
    <p>} while(x &gt; 0);</p>
    <p>Вначале выполняется составной оператор. Затем вычисляется выражение <strong>х&gt;0.</strong> Если оно истинно, то составной оператор выполняется снова, и снопа вычисляется выражение <strong>х&gt;0.</strong> Тело оператора цикла <strong>do</strong> выполняется до тех пор, пока значение <strong>х</strong> не станет меньше или равно нулю.</p>
   </section>
   <section>
    <title>
     <p><strong>Оператор продолжения continue</strong></p>
    </title>
    <p>Синтаксис:</p>
    <p>continue;</p>
    <p>Действие:</p>
    <p>Оператор продолжения <strong>continue</strong> передает управление на следующую итерацию в операторах цикла <strong>do</strong>, <strong>for</strong>, <strong>while</strong>. Он может появиться только в теле этих операторов. Остающиеся в теле цикла операторы при этом не выполняются. В операторах цикла <strong>do</strong> и <strong>while</strong> следующая итерация начинается с вычисления условного выражения. Для оператора <strong>for</strong> следующая итерация начинается с вычисления выражения приращения, а затем происходит вычисление условного выражения.</p>
    <p>Пример:</p>
    <p>while(i-- &gt; 0) {</p>
    <p>х = f(i);</p>
    <p>if(х == 1)</p>
    <p>continue;</p>
    <p>else</p>
    <p>y = x * x;</p>
    <p>}</p>
    <p>Тело оператора цикла <strong>while</strong> выполняется, если <strong>i</strong> больше нуля. Сначала значение <strong>f(i)</strong> присваивается <strong>х</strong>; затем, если <strong>х</strong> не равен <strong>1</strong>, то <strong>у</strong> присваивается значение квадрата <strong>х</strong>, и управление передается в заголовок цикла, т. е. на вычисление выражения <strong>i--&gt;0</strong>. Если же х равен <strong>1</strong>, выполняется оператор продолжения <strong>continue</strong>, и выполнение возобновляется с заголовка оператора цикла <strong>while</strong>, без вычисления квадрата <strong>х</strong>.</p>
   </section>
   <section>
    <title>
     <p><strong>Оператор-переключатель switch</strong></p>
    </title>
    <p>Синтаксис:</p>
    <p>switch(<strong>&lt;</strong><emphasis>выражение</emphasis><strong>&gt;</strong>)</p>
    <p>{</p>
    <p>[&lt;<emphasis>объявление</emphasis><strong>&gt;</strong>]</p>
    <p>[case &lt;<emphasis>константное-выражение</emphasis>&gt;:] [<strong>&lt;</strong><emphasis>оператор</emphasis><strong>&gt;</strong>]</p>
    <p>[case &lt;<emphasis>константное-выражение</emphasis>&gt;:] [&lt;<emphasis>оператор</emphasis>&gt;]</p>
    <p>[default:] [<strong>&lt;</strong><emphasis>оператор</emphasis>&gt;]</p>
    <p>}</p>
    <p>Действие:</p>
    <p>Оператор-переключатель <strong>switch</strong> предназначен для выбора одного из нескольких альтернативных путей выполнения программы. Выполнение оператора-переключателя начинается с вычисления значения выражения переключения (выражения, следующего за ключевым словом <strong>switch</strong> в круглых скобках). После этого управление передается одному из &lt;<emphasis>операторов</emphasis>&gt; тела переключателя. В теле переключателя содержатся конструкции case &lt;<emphasis>константное-выражение</emphasis>&gt;:, которые синтаксически представляют собой метки операторов. Константные выражения в данном контексте называются константами варианта. Оператор, получающий управление, — это тот оператор, значение константы варианта которого совпадает со значением выражения переключения. Значение каждой константы варианта должно быть уникальным внутри тела оператора-переключателя.</p>
    <p>Выполнение тела оператора-переключателя <strong>switch</strong> начинается с выбранного таким образом оператора и продолжается до конца тела или до тех пор, пока какой-либо оператор не передаст управление за пределы тела.</p>
    <p>Оператор, следующий за ключевым словом <strong>default</strong>, выполняется, если ни одна из констант варианта не равна значению выражения переключения. Если же слово <strong>default</strong> опущено, то ни один оператор в теле переключателя не выполняется, и управление передается на оператор, следующий за переключателем в программе.</p>
    <p>Выражение переключения должно иметь целочисленный тип. В версии 4 СП MSC этот тип не должен превышать по размеру <strong>int</strong>; в версии 5 СП MSC и в СП ТС это может быть любой целочисленный тип (в том числе <strong>enum</strong>). Однако в версии 5 СП MSC выражение переключения всегда преобразуется к типу <strong>int</strong>. Если при этом преобразовании возможна потеря значащих битов, то компилятор выдаст предупреждающее сообщение. Тип каждой константы варианта также приводится к типу выражения переключения.</p>
    <p>Синтаксически конструкции <strong>case</strong> и <strong>default</strong> являются метками (однако, на них нельзя передать управление по оператору <strong>goto</strong>). Метки <strong>case</strong> и <strong>default</strong> существенны только при начальной проверке, когда выбирается оператор для выполнения в теле переключателя. Все операторы тела, следующие за выбранным, выполняются последовательно, как бы "не замечая" меток <strong>case</strong> и <strong>default</strong>, если только какой-либо из операторов не передаст управление за пределы тела оператора <strong>switch</strong>. Для выхода из тела переключателя обычно используется оператор разрыва <strong>break</strong>. Одна из распространенных ошибок состоит в том, что программисты забывают разделять альтернативные операторы в теле переключателя операторами <strong>break</strong>.</p>
    <p>В заголовок составного оператора, формирующего тело оператора <strong>switch</strong>, можно помещать объявления (см. раздел 5.3), но инициализаторы, включенные в объявления, не будут выполнены, поскольку при выполнении оператора <strong>switch</strong> управление непосредственно передается на выполняемый оператор внутри тела, обходя строки, которые содержат инициализацию.</p>
    <p>Примеры:</p>
    <p>/* пример 1 */</p>
    <p>switch (с) {</p>
    <p>case 'А': capa++;</p>
    <p>case 'a': lettera++;</p>
    <p>default: total++;</p>
    <p>}</p>
    <p>/* пример 2 */</p>
    <p>switch (i) {</p>
    <p>case -1: n++;</p>
    <p>break;</p>
    <p>case 0: z++;</p>
    <p>break;</p>
    <p>case 1: p++;</p>
    <p>break;</p>
    <p>}</p>
    <p>/* пример 3 */</p>
    <p>switch (i) {</p>
    <p>case 1: if(a &gt; 0) {</p>
    <p>case 2: b <strong>=</strong> 3;</p>
    <p>} else</p>
    <p>case 3: k = 0;</p>
    <p>}</p>
    <p>В первом примере все три оператора в теле оператора <strong>switch</strong> выполняются, если значение <strong>с</strong> равно 'А'. Передача управления осуществляется на первый оператор (<strong>capa++;</strong>), далее операторы выполняются в порядке их следования в теле.</p>
    <p>Если <strong>с</strong> равно 'а', те инкрементируются переменные <strong>lettera</strong> и <strong>total</strong>. Наконец, если <strong>с</strong> не равно 'А' или 'а', то инкрементируется только переменная <strong>total</strong>.</p>
    <p>Во втором примере в теле оператора <strong>switch</strong> после каждого оператора следует оператор разрыва <strong>break</strong>, который осуществляет принудительный выход из тела оператора-переключателя <strong>switch</strong>. Если <strong>i</strong> равно <strong>-1</strong>, переменная <strong>n</strong> инкрементируется. Оператор <strong>break</strong>, следующий за оператором <strong>n++</strong>, вызывает передачу управления за пределы тела переключателя, минуя остающиеся операторы. Аналогично, если <strong>i</strong> равно нулю, инкрементируется только переменная <strong>z</strong>; если <strong>i</strong> равно <strong>1</strong>, инкрементируется только переменная <strong>р</strong>. Передний оператор <strong>break</strong> не является обязательным, поскольку без него управление все равно перешло бы на конец составного оператора, но он включен для единообразия.</p>
    <p>В третьем примере при <strong>i</strong>, равном <strong>1</strong>, будет выполнена следующая последовательность действий:</p>
    <p>if(а &gt; 0)</p>
    <p>b <strong>=</strong> 3;</p>
    <p>else</p>
    <p>k = 0;</p>
    <p>При i, равном 2, переменной b будет присвоено значение 3. При i, равном 3, переменная k будет обнулена.</p>
    <p>Оператор в теле переключателя может быть помечен множественными метками <strong>case</strong>, как показано в следующем примере:</p>
    <p>switch (с) {</p>
    <p>case 'а':</p>
    <p>case 'b':</p>
    <p>case 'с':</p>
    <p>case 'd':</p>
    <p>case 'e':</p>
    <p>case 'i': hexcvt(c);</p>
    <p>}</p>
    <p>В этом примере, если выражение переключения примет любое из значений 'а', 'b', 'с', 'd', 'e', 'i', будет вызвана функция <strong>hexcvt</strong>.</p>
   </section>
   <section>
    <title>
     <p><strong>Оператор разрыва break</strong></p>
    </title>
    <p>Синтаксис:</p>
    <p>break;</p>
    <p>Действие:</p>
    <p>Оператор разрыва <strong>break</strong> прерывает выполнение операторов <strong>do</strong>, <strong>for</strong>, <strong>while</strong> или <strong>switch</strong>. Он может содержаться только в теле этих операторов. Управление передается оператору программы, следующему за прерванным. Появление оператора <strong>break</strong> вне операторов <strong>do</strong>, <strong>for</strong>, <strong>while</strong>, <strong>switch</strong> компилятор рассматривает как ошибку.</p>
    <p>Если оператор разрыва <strong>break</strong> записан внутри вложенных операторов <strong>do</strong>, <strong>for</strong>, <strong>while</strong>, <strong>switch</strong>, то он завершает только непосредственно охватывающий его оператор <strong>do</strong>, <strong>for</strong>, <strong>while</strong>, <strong>switch</strong>. Если же требуется завершение более чем одного уровня вложенности, следует использовать операторы возврата <strong>return</strong> и перехода <strong>goto</strong>.</p>
    <p>Пример:</p>
    <p>for(i = 0; i &lt; LENGTH; i++) {</p>
    <p>for(j = 0; j &lt; WIDTH; j++)</p>
    <p>if(lines[i][j] <strong>==</strong> '\0') break;</p>
    <p>lengths[i] = j;</p>
    <p>}</p>
    <p>В вышеприведенном примере построчно обрабатывается массив строк переменной длины <strong>lines</strong>. Именованная константа LENGTH задает количество строк в массиве LINES. Именованная константа WIDTH задает максимально допустимую длину строки. Задача состоит в заполнении массива <strong>lengths</strong> длинами всех строк массива <strong>lines</strong>. Оператор разрыва <strong>break</strong> прерывает выполнение внутреннего цикла <strong>for</strong> при обнаружении признака конца символьной строки ( \0'). После этого i-му элементу одномерного массива <strong>length [i]</strong> присваивается длина i-й строки в байтах. Управление передается внешнему оператору цикла <strong>for</strong>. Переменная <strong>i</strong> инкрементируется и процесс повторяется до тех пор, пока значение <strong>i</strong> не станет больше или равно значению константы LENGTH.</p>
   </section>
   <section>
    <title>
     <p><strong>Оператор перехода goto</strong></p>
    </title>
    <p>Синтаксис:</p>
    <p>goto &lt;<emphasis>метка</emphasis>&gt;;</p>
    <p>.</p>
    <p>.</p>
    <p>.</p>
    <p>&lt;<emphasis>метка</emphasis>&gt;: &lt;<emphasis>оператор</emphasis>&gt;</p>
    <p>Действие:</p>
    <p>Оператор перехода <strong>goto</strong> передает управление непосредственно на &lt;<emphasis>оператор</emphasis>&gt;, помеченный &lt;<emphasis>меткой</emphasis>&gt;. Метка представляет собой обычный идентификатор, синтаксис которого описан в разделе 1.3. Область действия метки ограничивается функцией, в которой она определена; из этого следует, во-первых, что каждая метка должна быть отлична от других меток в той же самой функции; во-вторых, что нельзя передать управление по оператору <strong>goto</strong> в другую функцию.</p>
    <p>Помеченный оператор выполняется сразу после выполнения оператора <strong>goto</strong>. Если оператор с данной меткой отсутствует или существует более одного оператора, помеченного той же меткой, то компилятор сообщает об ошибке. Метка оператора имеет смысл только для оператора <strong>goto</strong>. При последовательном выполнении операторов помеченный оператор выполняется так же, как если бы он не имел метки.</p>
    <p>Можно войти в блок, тело цикла, условный оператор, оператор-переключатель по метке.</p>
    <p>Нельзя с помощью оператора <strong>goto</strong> передать управление на конструкции <strong>case</strong> и <strong>default</strong> в теле переключателя.</p>
    <p>Пример:</p>
    <p>if(errorcode <strong>&gt;</strong> 0) goto exit;</p>
    <p>…</p>
    <p>exit: return (errorcode);</p>
    <p>В примере оператор перехода <strong>goto</strong> передает управление на оператор, помеченный меткой <strong>exit</strong>, если <strong>errorcode</strong> больше нуля.</p>
   </section>
   <section>
    <title>
     <p><strong>Оператор возврата return</strong></p>
    </title>
    <p>Синтаксис:</p>
    <p>return [&lt;<emphasis>выражение</emphasis>&gt;];</p>
    <p>Действие:</p>
    <p>Оператор возврата <strong>return</strong> заканчивает выполнение функции, в которой он содержится, и возвращает управление в вызывающую функцию. Управление передается в точку вызывающей функции, непосредственно следующую за оператором вызова. Значение &lt;<emphasis>выражения</emphasis>&gt;, если оно задано, вычисляется, приводится к типу, объявленному для функции, содержащей оператор возврата <strong>return</strong>, и возвращается в вызывающую функцию. Если &lt;<emphasis>выражение</emphasis>&gt; опущено, то возвращаемое функцией значение не определено.</p>
    <p>Пример:</p>
    <p>main()</p>
    <p>{</p>
    <p>void draw(int, int);</p>
    <p>long sq(int);</p>
    <p>у = sq(x);</p>
    <p>draw(x, y);</p>
    <p>}</p>
    <p>long sq(int x)</p>
    <p>{</p>
    <p>return (x*x);</p>
    <p>}</p>
    <p>void draw(int x, int y)</p>
    <p>{</p>
    <p>return,</p>
    <p>}</p>
    <p>Функция <strong>main</strong> вызывает две функции, <strong>sq</strong> и <strong>draw.</strong> Функция <strong>sq</strong> возвращает значение квадрата <strong>x</strong>. Это значение присваивается переменной <strong>у</strong>. Функция <strong>draw</strong> объявлена с типом <strong>void</strong>, как не возвращающая значения. Попытка присвоить значение. возвращаемое функцией <strong>draw</strong>, привело бы к сообщению компилятора об ошибке.</p>
    <p>&lt;<emphasis>Выражение</emphasis>&gt; в операторе возврата <strong>return</strong> принято заключать в скобки, как показано в примере. Это, однако, не является требованием языка.</p>
    <p>Если оператор <strong>return</strong> отсутствует в теле функции, то управление автоматически передается в вызывающую функцию после выполнения последнего оператора в вызванной функции, т. е. по достижении последней закрывающей фигурной скобки. Возвращаемое значение вызванной функции в этом случае не определено. Если возвращаемое значение не требуется, то функцию следует явно объявлять с типом <strong>void</strong>.</p>
    <p>Распространенной ошибкой является наличие в функции, которая должна возвращать значение, операторов возврата, как с выражением, так и без него.</p>
   </section>
  </section>
  <section>
   <title>
    <p><strong>ФУНКЦИИ</strong></p>
   </title>
   <section>
    <title>
     <p><strong>Введение</strong></p>
    </title>
    <p>Функция — это совокупность объявлений и операторов, предназначенная для выполнения некоторой отдельной задачи. Количество функций в программе не ограничивается. Любая программа на языке Си содержит, по крайней мере, одну функцию, так называемую главную функцию, с именем <strong>main</strong>. В данном разделе описывается, как определять, объявлять и вызывать функции в языке Си.</p>
    <p>Определение функции специфицирует имя функции, атрибуты ее формальных параметров, и тело функции, содержащее Объявления и операторы. В определении функции также может задаваться класс памяти функции и тип возвращаемого значения.</p>
    <p>Объявление функции задает имя и тип возвращаемого значения функции, явное определение которой приведено в другом месте программы. В объявлении функции могут быть также специфицированы класс памяти, число аргументов функции и их типы. Прототип функции (версия 5.0 СП MSC и СП ГГС) позволяет, помимо того, задавать в объявлении идентификаторы и класс памяти аргументов. Это позволяет компилятору сравнивать при вызове типы фактических аргументов и формальных параметров функции.</p>
    <p>Указание типа возвращаемого значения в определении функции необязательно, если это тип <strong>int</strong>. При другом типе возвращаемого значения необходимо указать этот тип в объявлении функции. К моменту вызова функции тип ее возвращаемого значения должен быть известен, поэтому перед вызовом может потребоваться предварительное объявление функции с указанием типа ее возвращаемого значения.</p>
    <p>Вызов функции передает управление от вызывающей функции к вызываемой. Значения фактических аргументов, если они есть, передаются в вызываемую функцию. При выполнении оператора возврата <strong>return</strong> в вызываемой функции управление и возвращаемое значение (если оно есть) передаются в вызывающую функцию.</p>
   </section>
   <section>
    <title>
     <p><strong>Определение функции</strong></p>
    </title>
    <section>
     <p>Определение функции специфицирует имя, формальные параметры и тело функции. Оно может также специфицировать тип возвращаемого значения и класс памяти функции. Синтаксис определения функции следующий:</p>
     <p>[&lt;<emphasis>спецификация КП</emphasis>&gt;][&lt;<emphasis>спецификация типа</emphasis>&gt;]</p>
     <p>&lt;<emphasis>описатель</emphasis>&gt; ([&lt;<emphasis>список объявлений параметров</emphasis>&gt;]) &lt;<emphasis>тело функции</emphasis>&gt;</p>
     <p>&lt;<emphasis>тело функции</emphasis>&gt;</p>
     <p>Спецификация класса памяти &lt;<emphasis>спецификация КП</emphasis>&gt; задает класс памяти функции. &lt;<emphasis>Спецификация типа</emphasis>&gt; в совокупности с описателем определяет тип возвращаемого значения и имя функции. &lt;<emphasis>Список объявлений параметров</emphasis>&gt; аналогичен списку типов аргументов в прототипе функции (см. раздел 3.5 "Объявление функции"). Он содержит объявления формальных параметров через запятую. Однако если в прототипе область действия идентификаторов ограничена этим же прототипом, то в списке объявлений параметров идентификаторы именуют формальные параметры данной функции. Их область действия — тело функции. &lt;<emphasis>Тело функции</emphasis>&gt; — это составной оператор, содержащий объявления локальных переменных и операторы.</p>
     <p>В следующих разделах детально описываются перечисленные элементы определения функции.</p>
    </section>
    <section>
     <title>
      <p><strong>Класс памяти</strong></p>
     </title>
     <p>В определении функции допускается указание спецификации класса памяти <strong>static</strong> или <strong>extern</strong>. Классы памяти функций рассматривались в разделе 3.6.</p>
    </section>
    <section>
     <title>
      <p><strong>Модификаторы типа функции</strong></p>
     </title>
     <p>Компилятор языка Си поддерживает ряд модификаторов типа функций: <strong>pascal</strong>, <strong>cdecl</strong>, <strong>interrupt</strong>, <strong>near</strong>, <strong>far</strong> и <strong>huge</strong> (модификатор <strong>interrupt</strong> не реализован в версии 4 СП MSC). Модификаторы рассмотрены в разделе 3.3.3 "Описатели с модификаторами".</p>
    </section>
    <section>
     <title>
      <p><strong>Типы возвращаемых значений</strong></p>
     </title>
     <p>Синтаксис задания типа возвращаемого значения функции описан в разделе 3.5 "Объявление функции", функция может возвращать значение любого типа, кроме массива или функции; она может, в частности, возвращать указатель на любой тип, включая массив и функцию.</p>
     <p>Тип возвращаемого значения, задаваемый в определении функции, должен соответствовать типу возвращаемого значения во всех объявлениях этой функции, если они имеются в программе. Для вызова функции с типом возвращаемого значения <strong>int</strong> не требуется ее предварительно объявлять или определять. Функции с другими типами возвращаемого значения должны быть определены или объявлены до того, как они будут вызваны.</p>
     <p>Возвращаемое значение функции вырабатывается при выполнении оператора возврата <strong>return</strong>, содержащего выражение. Выражение вычисляется, преобразуется к типу возвращаемого значения и возвращается в точку вызова функции. Если оператор <strong>return</strong> отсутствует или не содержит выражения, то возвращаемое значение функции не определено. Если в этом случае вызывающая функция ожидает возвращаемое значение, то поведение программы непредсказуемо.</p>
     <p>Примеры:</p>
     <p>/* пример 1 */</p>
     <p>/* тип возвращаемого значения int */</p>
     <p>static add(int х, int у)</p>
     <p>{</p>
     <p>return (х + у);</p>
     <p>}</p>
     <p>/* пример 2 */</p>
     <p>/* тип возвращаемого значения STUDENT */</p>
     <p>typedef struct {</p>
     <p>char name [20],</p>
     <p>int id;</p>
     <p>long class;</p>
     <p>} STUDENT;</p>
     <p>STUDENT sortstu(STUDENT a, STUDENT b)</p>
     <p>{</p>
     <p>return (a.id &lt; b.id ? a : b);</p>
     <p>}</p>
     <p>/* пример 3 */</p>
     <p>/* тип возвращаемого значения — указатель на char */</p>
     <p>char *smallstr(char *s1, char *s2)</p>
     <p>{</p>
     <p>int i;</p>
     <p>i = 0;</p>
     <p>while(s1[i] != '\0' &amp;&amp; s2[i] != '\0')</p>
     <p>i++;</p>
     <p>if(s1[i] == '\0')</p>
     <p>return (s1);</p>
     <p>else</p>
     <p>return (s2);</p>
     <p>}</p>
     <p>В первом примере по умолчанию тип возвращаемого значения функции <strong>add</strong> определен как <strong>int</strong>. Функция имеет класс памяти <strong>static</strong>. Это значит, что она может быть вызвана только функциями того же исходного файла, в котором она определена.</p>
     <p>Во втором примере посредством объявления <strong>typedef</strong> создан структурный тип STUDENT. Далее определена функция <strong>sortstu</strong> с типом возвращаемого значения STUDENT, функция возвращает тот из своих двух аргументов структурного типа, элемент <strong>id</strong> которого меньше.</p>
     <p>В третьем примере определена функция, возвращающая указатель на значения типа <strong>char</strong>. Функция принимает в качестве аргументов две символьные строки (точнее, два указателя на массивы типа <strong>char</strong>) и возвращает указатель на более короткую из строк.</p>
    </section>
    <section>
     <title>
      <p><strong>Формальные параметры</strong></p>
     </title>
     <p>Формальные параметры — это переменные, которые принимают значения, переданные функции при вызове, в соответствии с порядком следования их имен в списке параметров.</p>
     <p>Форма объявления формальных параметров аналогична использованию метода прототипов в объявлении функции. Список объявлений параметров содержит объявления формальных параметров через запятую. После списка сразу начинается тело функции (составной оператор). Список может быть и пустым, но и в этом случае он должен быть ограничен круглыми скобками. Если функция не имеет аргументов, рекомендуется указать это явно, записав в списке объявлений параметров ключевое слово <strong>void</strong>.</p>
     <p>После последнего идентификатора в списке параметров может быть записана запятая с многоточием <emphasis>(,…).</emphasis> Это означает, что число параметров функции переменно, однако не меньше, чем следует идентификаторов до многоточия.</p>
     <p>Для доступа к значениям параметров, имена которых не заданы в списке параметров функции, рекомендуется использовать макроопределения <strong>va_arg</strong>, <strong>va_end</strong>, <strong>va_start</strong>, описанные в разделе 12.</p>
     <p>Допускается также список параметров, состоящий только из многоточия (…) и не содержащий идентификаторов. Это означает, что число параметров функции переменно и может быть равно нулю.</p>
     <p>Примечание. Для совместимости с программами предыдущих версий компилятор допускает запись символа запятой без многоточия в конце списка параметров для обозначения их переменного числа. Запятая может быть использована вместо многоточия и в том случае, когда надо записать список параметров функции, принимающей нуль или более параметров. Использование запятой поддерживается только для совместимости. Для новых программ рекомендуется использовать многоточие.</p>
     <p>Объявления параметров имеют тот же самый синтаксис, что и обычные объявления переменных (смотри раздел 3.4). Формальные параметры могут иметь базовый тип, либо быть структурой, объединением, указателем или массивом. Указание первой (или единственной) размерности для массива не обязательно. Массив воспринимается как указатель на тип элементов массива. Для формального параметра, таким образом, эквивалентны объявления</p>
     <p>char s[];</p>
     <p>char s[10];</p>
     <p>char *s;</p>
     <p>Параметры могут иметь класс памяти <strong>auto</strong> или <strong>register</strong>. Если спецификация класса памяти опущена, то подразумевается класс памяти <strong>auto</strong>. Если формальный параметр представлен в списке параметров, но не объявлен, то предполагается, что он имеет тип <strong>int</strong>. Порядок объявления формальных параметров необязательно должен совпадать с порядком их следования в списке параметров, однако для повышения читабельности программы рекомендуется следовать этому порядку.</p>
     <p>Идентификаторы формальных параметров не могут совпадать с идентификаторами переменных, объявляемых внутри тела функции, но возможно локальное переобъявление формальных параметров внутри вложенных блоков функции.</p>
     <p>В объявлениях формальных параметров не может быть объявлен никакой другой идентификатор, кроме перечисленных в списке параметров. Если функция имеет переменное число параметров, то программист отвечает и за определение их числа при вызове, и за получение их из стека внутри тела функции.</p>
     <p>Тип каждого формального параметра должен соответствовать типу фактического аргумента и типу соответствующего аргумента в списке типов аргументов функции, если имеется предварительное объявление функции со списком типов аргументов. Компилятор выполняет преобразования по умолчанию отдельно над типом каждого формального параметра и над типом каждого фактического аргумента.</p>
     <p>После преобразования все формальные параметры имеют тип размером не меньше, чем <strong>int</strong>, и ни один из формальных параметров не имеет тип <strong>float</strong>. Это означает, например, что объявление формального параметра с типом <strong>char</strong> эквивалентно его объявлению с типом <strong>int</strong>, а объявление с типом <strong>float</strong> эквивалентно объявлению с типом <strong>double</strong>.</p>
     <p>Если используются модификаторы <strong>near</strong>, <strong>far</strong>, <strong>huge</strong>, то компилятор также может неявно провести преобразование аргументов-указателей. Метод преобразования в этом случае зависит от размера указателей в выбранной модели памяти и от наличия или отсутствия списка типов аргументов функции.</p>
     <p>Тип каждого формального параметра (после преобразования) определяет, как интерпретируются размещенные в стеке аргументы. Несоответствие типов фактических аргументов типам формальных параметров может привести к неверной интерпретации. Например, если в качестве аргумента передается 16-битовый указатель, а соответствующий формальный параметр объявлен как 32-битовый, тоне 16, а 32 бита стека проинтерпретируются как аргумент. Эта ошибка повлияет не только на аргумент-указатель, но и на другие аргументы, которые следуют за ним. От ошибок такого рода может предохранить использование объявления функции со списком типов аргументов.</p>
     <p>Пример:</p>
     <p>struct student {</p>
     <p>char name [20];</p>
     <p>int id;</p>
     <p>long class;</p>
     <p>struct student *nextstu;</p>
     <p>} student;</p>
     <p>main(void)</p>
     <p>{</p>
     <p>int match(struct student *, char *);</p>
     <p>.</p>
     <p>.</p>
     <p>.</p>
     <p>if(match (student.nextstu, student.name) <strong>&gt;</strong> 0) {</p>
     <p>.</p>
     <p>.</p>
     <p>.</p>
     <p>}</p>
     <p>}</p>
     <p>match (struct student *r, char *n)</p>
     <p>{</p>
     <p>int i = 0;</p>
     <p>while(r-&gt;name[i] == n[i])</p>
     <p>if(r-&gt;name[i++] == '\0')</p>
     <p>return(r-&gt;id);</p>
     <p>return (0);</p>
     <p>}</p>
     <p>В примере содержатся: объявление структурного типа <strong>student</strong>, определение главной функции, содержащей предварительное объявление функции <strong>match</strong> и ее вызов, и определение функции <strong>match</strong>. Обратите внимание на то, что одно и то же имя <strong>student</strong> используется без противоречия для тега структуры и имени структурной переменной.</p>
     <p>Функция <strong>match</strong> объявлена с двумя аргументами. Первый аргумент — указатель на структуру типа <strong>student</strong>, второй — указатель на значение типа <strong>char</strong>.</p>
     <p>В определении функции <strong>match</strong> заданы два формальных параметра, <strong>r</strong> и <strong>n</strong>. Параметр <strong>r</strong> объявлен как указатель на структуру типа <strong>student</strong>. Параметр <strong>n</strong> объявлен как указатель на значение типа <strong>char</strong>. По умолчанию, для функции <strong>match</strong> подразумевается тип возвращаемого значения <strong>int</strong>.</p>
     <p>Функция <strong>match</strong> вызывается с двумя аргументами. Оба аргумента являются элементами переменной структурного типа <strong>student</strong> с именем <strong>student</strong>.</p>
     <p>Поскольку имеется предварительное объявление функции <strong>match</strong>, компилятор проверит соответствие типов фактических аргументов в операторе ее вызова списку типов аргументов, а затем соответствие типов фактических аргументов типам формальных параметров. В данном случае несоответствия типов нет и в преобразованиях нет необходимости.</p>
     <p>Обратите внимание на то, что имя массива, заданное в качестве второго аргумента в вызове функции, преобразуется по умолчанию к указателю на <strong>char</strong>. В функцию передается не сам массив, а адрес начала массива. Соответствующий формальный параметр также объявлен как указатель на <strong>char</strong>, а мог бы быть объявлен и как <strong>char n[]</strong>, поскольку в выражении используется как идентификатор массива. Идентификатор массива рассматривается в выражении как адресное выражение, поэтому объявление формального параметра <strong>char *n;</strong> эквивалентно объявлению <strong>char n[];</strong>.</p>
     <p>Внутри функции объявляется локальная переменная <strong>i</strong>, используемая в качестве индекса массива. Функция возвращает структурный элемент <strong>id</strong>, если структурный элемент <strong>name</strong> совпал с содержимым массива <strong>n</strong>; в противном случае функция возвращает нулевое значение.</p>
    </section>
    <section>
     <title>
      <p><strong>Тело функции</strong></p>
     </title>
     <p>Тело функции представляет собой составной оператор, или блок. Он содержит операторы, которые определяют действие функции, и объявления переменных, используемых в этих операторах. Составной оператор описан в разделе 5.3.</p>
     <p>Все переменные, объявленные в теле функции, имеют по умолчанию класс памяти <strong>auto</strong>, но можно явно присвоить им другой класс памяти. При вызове функции выделяется память для ее локальных переменных и, если указано, производится их инициализация. Управление передается первому оператору составного оператора. Выполнение продолжается до тех пор, пока не встретится оператор <strong>return</strong> или конец тела функции (составного оператора). Управление возвращается в точку вызова функции.</p>
     <p>Если функция возвращает значение, то должен быть выполнен оператор <strong>return</strong>, содержащий выражение. Если оператор <strong>return</strong> не выполнен, или если в операторе <strong>return</strong> отсутствует выражение, то возвращаемое значение не определено.</p>
    </section>
   </section>
   <section>
    <title>
     <p><strong>Объявление функции</strong></p>
    </title>
    <p>Объявление функции определяет ее имя, тип возвращаемого значения, класс памяти и может также задавать тип некоторых или всех аргументов функции. Детальное описание синтаксиса объявлений функции дано в разделе 3.5. В разделе 3.6 рассмотрена зависимость области действия функции от ее класса памяти.</p>
    <p>Однако, помимо явного объявления, функция может быть объявлена неявно, по контексту ее вызова. Неявное объявление имеет место всякий раз, когда функция вызывается без предварительного объявления или определения. В этом случае компилятор языка Си считает, что вызываемая функция имеет тип возвращаемого значения <strong>int</strong> и класс памяти <strong>extern</strong>. Определение функции, если оно имеется далее в том же самом исходном файле, может переопределить тип возвращаемого значения и класс памяти.</p>
    <p>Тип возвращаемого значения функции, указанный в предварительном объявлении, должен соответствовать типу возвращаемого значения в определении функции.</p>
    <p>Если функция, тип возвращаемого значения которой не <strong>int</strong>, вызывается до ее определения или объявления, то компилятор сообщает об ошибке.</p>
    <p>Основное назначение предварительного объявления состоит в задании типов и числа аргументов, ожидаемых в вызове функции. Список типов аргументов позволяет компилятору осуществить контроль типов аргументов при вызове функции. Если предварительное объявление отсутствует, то программист сам должен следить за соответствием типов между фактическими аргументами и формальными параметрами. Более детально контроль типов рассмотрен в разделе 6.4.1 "Фактические аргументы".</p>
    <p>Пример:</p>
    <p>main(void)</p>
    <p>{</p>
    <p>int а = 0, b = 1;</p>
    <p>float х = 2.0, у = 3.0;</p>
    <p>double realadd (double, double);</p>
    <p>a = intadd(a, b);</p>
    <p>x = realadd(x, y);</p>
    <p>}</p>
    <p>intadd(int a, int b)</p>
    <p>{</p>
    <p>return (a + b);</p>
    <p>}</p>
    <p>double realadd(double x, double y)</p>
    <p>{</p>
    <p>return (x + y);</p>
    <p>}</p>
    <p>В примере функция <strong>intadd</strong> объявлена неявно с типом возвращаемого значения <strong>int</strong>, так как она вызнана до своего определения. Компилятор не проверит типы аргументов при вызове функции <strong>intadd</strong>, поскольку список типов аргументов для нее не задан.</p>
    <p>Функция <strong>realadd</strong> возвращает значение типа <strong>double</strong>. В функции <strong>main</strong> имеется предварительное объявление функции <strong>realadd</strong>. Тип возвращаемого значения (<strong>double</strong>), заданный в определении, соответствует типу возвращаемого значения, заданному в предварительном объявлении. В предварительном объявлении также определены типы двух параметров функции <strong>realadd</strong>. Типы фактических аргументов соответствуют типам, заданным в предварительном объявлении, и также соответствуют типам формальных параметров в определении функции <strong>realadd</strong>.</p>
   </section>
   <section>
    <title>
     <p><strong>Вызов функции</strong></p>
    </title>
    <section>
     <p>Вызов функции передает управление и фактические аргументы (если они есть) заданной функции. Синтаксически вызов функции имеет следующий вид:</p>
     <p><strong>&lt;</strong><emphasis>выражение</emphasis><strong>&gt;</strong>([&lt;<emphasis>список выражений</emphasis><strong>&gt;</strong>])</p>
     <p>&lt;<emphasis>Выражение</emphasis>&gt; вычисляется, и его результат интерпретируется как адрес функции. Выражение должно иметь тип функция.</p>
     <p>&lt;<emphasis>Список выражений</emphasis>&gt;, в котором выражения следуют через запятую, представляет собой перечень фактических аргументов, передаваемых функции. Список выражений может быть пустым.</p>
     <p>При выполнении вызова функции происходит присвоение значений фактических аргументов формальным параметрам. Перед этим каждый фактический аргумент вычисляется, над ним выполняются необходимые преобразования, и он копируется в стек. Первый фактический аргумент соответствует первому формальному параметру, второй — второму и т. д. Все аргументы передаются по значению, только массивы — по ссылке.</p>
     <p>Вызванная функция работает с копией фактических аргументов, поэтому никакое изменение значений формальных параметров не отразится на значениях аргументов, с которых была сделана копия.</p>
     <p>Передача управления осуществляется на первый оператор тела функции. Выполнение оператора <strong>return</strong> в теле функции возвращает в точку вызова управление и, возможно, значение. В отсутствие оператора <strong>return</strong> управление возвращается по достижении завершающей фигурной скобки тела функции. В этом случае возвращаемое значение не определено.</p>
     <p>Примечание<emphasis>.</emphasis> Порядок вычисления выражений, представляющих аргументы вызова функции, не определен в языке Си, поэтому наличие побочных эффектов в этих выражениях может привести к непредсказуемым результатам. Гарантируется только то, что все побочные эффекты будут вычислены до передачи управления в вызываемую функцию.</p>
     <p>&lt;<emphasis>Выражение</emphasis>&gt; должно ссылаться на функцию. Это означает, что функция может быть вызвана не только по идентификатору, но и через любое выражение, имеющее тип указателя на функцию.</p>
     <p>Вызов функции синтаксически напоминает ее объявление. При объявлении функции сначала записывается ее имя, а затем список типов аргументов в скобках. При вызове также записывается имя функции, а за ним следует список выражений в скобках.</p>
     <p>Аналогичным образом функция вызывается через указатель. Предположим, что указатель на функцию объявлен следующим образом:</p>
     <p>int (*fpointer)(int, int);</p>
     <p>Идентификатор <strong>fpointer</strong> именует указатель на функцию с двумя аргументами типа <strong>int</strong> и возвращаемым значением типа <strong>int</strong>. Вызов функции в этом случае будет выглядеть так:</p>
     <p>extern int f (int, int);</p>
     <p>fpointer = &amp;f; /*знак &amp; необязателен */</p>
     <p>(*fpointer)(3,4); /* можно и просто fpointer(3,4); */</p>
     <p>Примеры:</p>
     <p>/* пример 1 */</p>
     <p>double *realcomp(double, double);</p>
     <p>double a, b, *rp;</p>
     <p>rp = realcomp(a, b);</p>
     <p>/* пример 2 */</p>
     <p>main()</p>
     <p>{</p>
     <p>long lift(int), slep(int), drop(int);</p>
     <p>void work(int, long (*)(int));</p>
     <p>int select, count;</p>
     <p>.</p>
     <p>.</p>
     <p>.</p>
     <p>switch(select) {</p>
     <p>case 1: work(count, lift); break;</p>
     <p>case 2: work(count, step); break;</p>
     <p>case 3: work(count, drop); break;</p>
     <p>default: break;</p>
     <p>}</p>
     <p>void work(int n, long (*func)(int))</p>
     <p>{</p>
     <p>int i;</p>
     <p>long j;</p>
     <p>for(i = j = 0; i <strong>&lt;</strong> n; i++)</p>
     <p>j +<strong>=</strong> (*func)(i); /* можно просто j +<strong>=</strong> func(i); */</p>
     <p>}</p>
     <p>В первом примере объявляется, а затем вызывается функция <strong>realcomp</strong>, Функции передаются два аргумента типа <strong>double</strong>. Возвращаемое значение—указатель на переменную типа <strong>double</strong> — присваивается <strong>rp</strong>.</p>
     <p>Во втором примере функции <strong>work</strong> передаются два аргумента: целая переменная <strong>count</strong> и адрес функции (<strong>lift, step</strong>, или <strong>drop</strong>). Обратите внимание на то, что адрес функции может задаваться просто указанием идентификатора функции, поскольку идентификатор функции интерпретируется как адресное выражение. Чтобы использовать идентификатор функции подобным образом, функция должна быть объявлена или определена перед использованием идентификатора, иначе идентификатор не будет распознан. Поэтому в начале функции <strong>main</strong> приведены объявления функций <strong>lift, step</strong>, <strong>drop</strong>.</p>
     <p>В начале функции <strong>main</strong> задано также предварительное объявление функции <strong>work</strong>. В этом объявлении тип второго формального параметра задан как указатель на функцию, принимающую один аргумент типа <strong>int</strong> и возвращающую значение типа <strong>long</strong>. Скобки, заключающие символ <strong>*</strong>, обязательны. Без них объявление специфицировало бы функцию, возвращающую указатель на значение типа <strong>long</strong>. Функция <strong>work</strong> вызывает выбранную функцию оператором</p>
     <p>(*func) (i);</p>
     <p>Аргумент <strong>i</strong> передается функции, вызываемой по указателю <strong>func</strong>.</p>
    </section>
    <section>
     <title>
      <p><strong>Фактические аргументы</strong></p>
     </title>
     <p>Фактический аргумент может быть любым значением базового типа, структурой, объединением или указателем. Все фактические аргументы передаются по значению. Массивы и функции не могут быть переданы как параметры, могут передаваться указатели на эти объекты. Поэтому массивы и функции передаются по ссылке. Значения фактических аргументов копируются в соответствующие формальные параметры. Функция использует только эти копии, не изменяя сами переменные, с которых копия была сделана.</p>
     <p>Возможность доступа из функции не к копиям значений, а к самим переменным обеспечивают указатели. Указатель на переменную содержит ее адрес, и функция может использовать этот адрес для изменения значения переменной.</p>
     <p>Фактические аргументы (выражения в вызове функции) вычисляются и преобразуются следующим образом:</p>
     <p>1) Если имеется объявление со списком типов аргументов (прототип), то при вызове функции выполняются преобразования по умолчанию над типом каждого фактического аргумента, заданным в списке типов аргументов. Затем фактический аргумент приводится к полученному преобразованному типу. Независимо от аргумента, тип соответствующего формального параметра в списке параметров функции также подвергается преобразованиям по умолчанию. Затем полученный тип фактического аргумента сравнивается с типом соответствующего формального параметра. В случае несоответствия никакого преобразования не производится, но компилятор выдает такое же предупреждающее сообщение, как для выражения присваивания, когда типы левого и правого операнда не совпадают.</p>
     <p>2) Если объявление со списком типов аргументов (прототип) отсутствует, то преобразования по умолчанию производятся отдельно для каждого аргумента, не имеющего соответствующего имени типа. Если список типов аргументов завершен многоточием и задано больше фактических аргументов, чем имен типов в списке, то лишние фактические аргументы подвергаются только преобразованиям по умолчанию. Соответствующий формальный параметр в списке параметров функции также подвергается преобразованиям по умолчанию.</p>
     <p>Если список типов аргументов не завершен многоточием, а передается больше фактических аргументов, чем объявлено имен в списке, то компилятор выдаст предупреждающее сообщение в СП MSC и сообщение об ошибке в СП ТС.</p>
     <p>Если список типов аргументов содержит специальное имя типа <strong>void</strong>, то компилятор языка Си ожидает отсутствие фактических аргументов в вызове функции и отсутствие формальных параметров в определении функции. Если какое-либо из этих условий окажется нарушено, то компилятор языка Си выдает предупреждающее сообщение в СП MSC и сообщение об ошибке в СП ТС.</p>
     <p>Если в списке типов аргументов используются модификаторы <strong>near</strong>, <strong>far</strong>, <strong>huge</strong>, то компилятор языка Си может также выполнить неявно преобразования аргументов-указателей к соответствующему формату (см. раздел 4.7.3 "Преобразования типов при вызовах функций").</p>
     <p>Тип каждого формального параметра подвергается преобразованиям по умолчанию. Преобразованный тип каждого формального параметра определяет, каким образом интерпретируются аргументы в стеке. Если тип формального параметра не соответствует типу фактического аргумента, то данные в стеке могут быть проинтерпретированы неверно.</p>
     <p>Примечание. Несоответствие типов формальных и фактических параметров может привести к серьезным ошибкам, особенно когда это несоответствие влечет за собой отличия в размерах объектов. Нужно иметь в виду, что эти ошибки не выявляются, если не задан список типов аргументов в предварительном объявлении функции, причем определение функции должно находиться в области действия объявления со списком типов аргументов. Если вы создаете библиотеку функций и соответствующий включаемый файл-заголовок, содержащий списки типов аргументов для всех библиотечных функций, предназначенный для включения в программы, которые будут обращаться к этой библиотеке, рекомендуется включить этот файл-заголовок и во все библиотечные функции, чтобы отловить на этапе их компиляции противоречия между списками типов аргументов и определениями функций.</p>
     <p>Пример:</p>
     <p>main()</p>
     <p>{</p>
     <p>void swap(int *, int *);</p>
     <p>int x, у;</p>
     <p>swap(&amp;x, &amp;y);</p>
     <p>}</p>
     <p>void swap(int *a, int *b)</p>
     <p>{</p>
     <p>int t;</p>
     <p>t <strong>=</strong> *a;</p>
     <p>*a = *b;</p>
     <p>*b <strong>=</strong> t;</p>
     <p>}</p>
     <p>В функции <strong>main</strong> функция <strong>swap</strong> объявлена как не возвращающая значения, с двумя аргументами типа указатель на <strong>int</strong>. Формальные параметры <strong>а</strong> и <strong>b</strong> также объявлены как указатели на <strong>int</strong>. При вызове функции</p>
     <p>swap(&amp;x, &amp;y)</p>
     <p>адрес <strong>х</strong> запоминается в <strong>а</strong>, адрес <strong>у</strong> запоминается в <strong>b</strong>. Выражения <strong>*a</strong> и <strong>*b</strong> в функции <strong>swap</strong> ссылаются на переменные <strong>х</strong> и <strong>у</strong> в <strong>main</strong>. Присваивания внутри функции <strong>swap</strong> изменяет содержимое <strong>х</strong> и <strong>у</strong>. Компилятор языка Си проведет проверку типов аргументов при вызове <strong>swap</strong>, поскольку в предварительном объявлении <strong>swap</strong> задан список типов аргументов. В примере типы фактических аргументов соответствуют и списку типов аргументов, и списку формальных параметров.</p>
    </section>
    <section>
     <title>
      <p><strong>Вызов функции с переменным числом аргументов</strong></p>
     </title>
     <p>Для вызова функции с переменным числом аргументов не требуется никаких специальных действий: в вызове функции просто задается то число аргументов, которое нужно. В предварительном объявлении (если оно есть) переменное число аргументов специфицируется записью запятой с последующим многоточием (,…) в конце списка типов аргументов (смотри раздел 3.5). Аналогично, список параметров в определении функции может также заканчиваться запятой с последующим многоточием (,…), что подразумевает переменное число аргументов (см. раздел 6.2.4).</p>
     <p>Все аргументы, заданные в вызове функции, размещаются в стеке. Количество формальных параметров, указанных в определении функции, определяет количество аргументов, которые берутся из стека и присваиваются формальным параметрам. В случае переменного числа аргументов программист сам контролирует реальное количество аргументов, находящихся в стеке, и отвечает за выбор из стека лишних аргументов (сверх объявленных).</p>
     <p>См. описания макроопределений <strong>va_arg</strong>, <strong>va_end</strong>, <strong>va_start</strong>, которые могут быть полезны при работе с переменным числом аргументов.</p>
    </section>
    <section>
     <title>
      <p><strong>Рекурсивные вызовы</strong></p>
     </title>
     <p>Любая функция в Си-программе может быть вызвана рекурсивно; в частности, она может вызвать сама себя. Компилятор не ограничивает число рекурсивных вызовов одной функции. При каждом вызове новые ячейки памяти выделяются для формальных параметров и локальных переменных класса памяти <strong>auto</strong> и <strong>register</strong>, так что их значения в предшествующих, незавершенных вызовах недоступны и не портятся.</p>
     <p>Для переменных, объявленных на внутреннем уровне с классом памяти <strong>static</strong> или <strong>extern</strong>, новые ячейки памяти не выделяются при каждом рекурсивном вызове. Выделенная им память сохраняется в течение всего времени выполнения программы.</p>
     <p>Хотя компилятор языка Си не ограничивает число рекурсивных вызовов функции, операционная среда может налагать практические ограничения. Так как каждый рекурсивный вызов требует дополнительной стековой памяти, то слишком большое количество рекурсивных вызовов может привести к переполнению стека.</p>
    </section>
   </section>
  </section>
  <section>
   <title>
    <p><strong>ДИРЕКТИВЫ ПРЕПРОЦЕССОРА И УКАЗАНИЯ КОМПИЛЯТОРУ</strong></p>
   </title>
   <section>
    <title>
     <p><strong>Введение</strong></p>
    </title>
    <p>Препроцессор языка Си представляет собой макропроцессор, используемый для обработки исходного файла на нулевой фазе компиляции. Компилятор языка Си сам вызывает препроцессор, однако препроцессор может быть вызван и автономно. Директивы препроцессора представляют собой инструкции, записанные в исходном тексте программы на языке Си и предназначенные для выполнения препроцессором языка Си.</p>
    <p>Директивы препроцессора обычно используются для того, чтобы облегчить модификацию исходных программ и сделать их более независимыми от особенностей различных реализаций компилятора языка Си, разных компьютеров и операционных сред. Директивы препроцессора позволяют заменить лексемы в тексте программы некоторыми значениями, вставить в исходный файл содержимое другого исходного файла, запретить компиляцию некоторой части исходного файла и т.д. Препроцессор Си распознает следующие директивы:</p>
    <table>
     <tr>
      <td align="left">#define</td>
      <td align="left">#else</td>
      <td align="left">#if</td>
      <td align="left">#ifndef</td>
      <td align="left">#line</td>
     </tr>
     <tr>
      <td align="left">#elif</td>
      <td align="left">#endif</td>
      <td align="left">#ifdef</td>
      <td align="left">#include</td>
      <td align="left">#undef</td>
     </tr>
    </table>
    <p>Символ # должен быть первым в строке, содержащей директиву в СП MSC версии 4. В СП MSC версии 5 ив СП ТС ему могут предшествовать пробельные символы. Как в СП MSC, так и в СП ТС пробельные символы допускаются между символом <emphasis>#</emphasis> и первой буквой директивы.</p>
    <p>Некоторые директивы могут содержать аргументы. Директивы могут быть записаны в любом месте исходного файла, но их действие распространяется только от точки программы, в которой они записаны, до конца исходного файла.</p>
    <p>Указания компилятору, или прагмы, представляют собой инструкции, записываемые в исходном тексте программы и предназначенные для управления действиями компилятора языка Си в определенных ситуациях. Набор указаний компилятору и их смысл различаются для разных компиляторов языка Си, поэтому в разделе 7.8 описывается только общий синтаксис указаний компилятору.</p>
    <p>В рассматриваемых системах программирования есть возможность получить промежуточный текст программы после работы препроцессора, до начала собственно компиляции. В этом файле уже выполнены макроподстановки, а все строки, содержащие директивы <strong>#define</strong> и <strong>#undef</strong>, заменены на пустые строки. На место строк <strong>#include</strong> подставлено содержимое соответствующих включаемых файлов. Выполнена обработка директив условной компиляции <strong>#if</strong>, <strong>#elif</strong>, <strong>#else</strong>, <strong>#ifdef</strong>, <strong>#ifndef</strong>, <strong>#endif</strong>, а строки, содержащие их, заменены пустыми строками. Пустыми строками заменены и исключенные в процессе условной компиляции фрагменты исходного текста. Кроме того, в этом файле есть строки следующего вида:</p>
    <p>#&lt;<emphasis>константа</emphasis>&gt;["имя файла"]</p>
    <p>которые соответствуют точкам изменения номера текущей строки и/или номера файла по директивам <strong>#line</strong> или <strong>#include</strong>.</p>
   </section>
   <section>
    <title>
     <p><strong>Именованные константы и макроопределения</strong></p>
    </title>
    <section>
     <p>Директива <strong>#define</strong> обычно используется для замены часто используемых в программе констант, ключевых слов, операторов и выражений осмысленными идентификаторами. Идентификаторы, которые заменяют числовые или текстовые константы либо произвольную последовательность символов, называются именованными константами. Идентификаторы, которые представляют некоторую последовательность действий, заданную операторами или выражениями языка Си, называются макроопределениями. Макроопределения могут иметь аргументы. Обращение к макроопределению в программе называется макровызовом.</p>
     <p>В языке Си принято записывать идентификаторы именованных констант и макроопределений символами верхнего регистра, чтобы отличать их от имен переменных и функций. Это, однако, не является требованием языка Си.</p>
     <p>Директива <strong>#undef</strong> отменяет текущее определение именованной константы. Только когда определение отменено, именованной константе может быть сопоставлено другое значение. Однако многократное повторение определения с одним и тем же значением не считается ошибкой.</p>
     <p>Макроопределение напоминает по синтаксису определение функции. Однако замена вызова функции макровызовом может повысить скорость выполнения программы, поскольку для макроопределения не требуется генерировать вызывающую последовательность, которая занимает относительно большое время (засылка аргументов в стек, передача управления и т.п.). С другой стороны, многократное употребление макроопределения в программе может потребовать значительно большей памяти, чем вызовы функции (код для функции генерируется один раз, а для макроопределения — столько раз, сколько имеется макровызовов в программе).</p>
     <p>Имеется возможность задавать определения именованных констант не только в исходном тексте, но и в командной строке компиляции.</p>
     <p>Имеется ряд предопределенных идентификаторов, которые нельзя использовать в директивах <strong>#define</strong> и <strong>#undef</strong> в качестве идентификаторов. Они рассмотрены в разделе 7.9 "Псевдопеременные".</p>
    </section>
    <section>
     <title>
      <p><strong>Директива #define</strong></p>
     </title>
     <p>Синтаксис:</p>
     <p>#define &lt;<emphasis>идентификатор</emphasis>&gt; &lt;<emphasis>текст</emphasis>&gt;</p>
     <p>#define &lt;<emphasis>идентификатор</emphasis>&gt; &lt;<emphasis>список параметров</emphasis>&gt; &lt;<emphasis>текст</emphasis>&gt;</p>
     <p>Директива <strong>#define</strong> заменяет все вхождения &lt;<emphasis>идентификатора</emphasis>&gt; в исходном файле на &lt;<emphasis>текст</emphasis>&gt;, следующий в директиве за &lt;<emphasis>идентификатором</emphasis>&gt;. Этот процесс называется макроподстановкой, &lt;<emphasis>идентификатор</emphasis>&gt; заменяется лишь в том случае, если он представляет собой отдельную лексему. Например, если &lt;<emphasis>идентификатор</emphasis>&gt; является частью строки или более длинного идентификатора, он не заменяется. Если за &lt;<emphasis>идентификатором</emphasis>&gt; следует &lt;<emphasis>список параметров</emphasis>&gt;, то директива определяет макроопределение с аргументами.</p>
     <p>&lt;<emphasis>Текст</emphasis>&gt; представляет собой набор лексем, таких как ключевые слова, константы, идентификаторы или выражения. Один или более пробельных символов должны отделять &lt;<emphasis>текст</emphasis>&gt; от &lt;<emphasis>идентификатора</emphasis>&gt; (или от заключенных в скобки параметров). Если текст не умещается на строке, то он может быть продолжен на следующей строке; для этого следует набрать в конце строки символ обратный слэш и сразу за ним нажать клавишу ENTER.</p>
     <p>&lt;<emphasis>Текст</emphasis>&gt; может быть опущен. В этом случае все экземпляры &lt;<emphasis>идентификатора</emphasis>&gt; будут удалены из исходного текста программы. Тем не менее, сам &lt;<emphasis>идентификатор</emphasis>&gt; рассматривается как определенный и при проверке директивой <strong>#if</strong> дает значение 1 (смотри раздел 7.4.1).</p>
     <p>&lt;<emphasis>Список параметров</emphasis>&gt;, если он задан, содержит один или более идентификаторов, разделенных запятыми. Идентификаторы в списке должны отличаться друг от друга. Их область действия ограничена макроопределением, в котором они заданы. Список должен быть заключен в круглые скобки. Имена формальных параметров в &lt;<emphasis>тексте</emphasis>&gt; отмечают позиции, в которые должны быть подставлены фактические аргументы макровызова. Каждое имя формального параметра может появиться в &lt;<emphasis>тексте</emphasis>&gt; произвольное число раз.</p>
     <p>В макровызове следом за &lt;<emphasis>идентификатором</emphasis>&gt; записывается в круглых скобках список фактических аргументов, соответствующих формальным параметрам из &lt;<emphasis>списка параметров</emphasis>&gt;. &lt;<emphasis>Текст</emphasis>&gt; модифицируется путем замены каждого формального параметра на соответствующий фактический аргумент. Списки фактических аргументов и формальных параметров должны содержать одно и то же число элементов.</p>
     <p>Примечание. Не следует путать подстановку аргументов в макроопределение с передачей аргументов функции. Подстановка в препроцессоре носит чисто текстовый характер. Никаких вычислений или преобразований типа при этом не производится.</p>
     <p>Выше уже говорилось, что макроопределение может содержать более одного вхождения данного формального параметра. Если формальный параметр представлен выражением с побочным эффектом, то это выражение будет вычисляться более одного раза, а вместе с ним каждый раз будет возникать и побочный эффект. Результат выполнения в этом случае может быть ошибочным.</p>
     <p>Внутрь &lt;<emphasis>текста</emphasis>&gt; в директиве <strong>#define</strong> могут быть вложены имена других макроопределений или констант. Их расширение производится лишь при расширении &lt;<emphasis>идентификатора</emphasis>&gt; этого &lt;<emphasis>текста</emphasis>&gt;, а не при его определении директивой <strong>#define</strong>. Это надо учитывать, в частности, при взаимодействии вложенных именованных констант и макроопределений с директивой <strong>#undef</strong>: к моменту расширения содержащего их текста они могут уже оказаться отменены директивой <strong>#undef</strong>.</p>
     <p>После того как выполнена макроподстановка, полученная строка вновь просматривается для поиска других имен констант и макроопределений. При повторном просмотре не принимается к рассмотрению имя ранее произведенной макроподстановки. Поэтому директива</p>
     <p>#define х х</p>
     <p>не приведет к зацикливанию препроцессора.</p>
     <p>Примеры.</p>
     <p>/* пример 1 */</p>
     <p>#define WIDTH 80</p>
     <p>#define LENGTH (WIDTH + 10)</p>
     <p>/* пример 2 */</p>
     <p>#define FILEMESSAGE "Попытка создать файл\</p>
     <p>не удалась из-за нехватки дискового пространства"</p>
     <p>/* пример 3 */</p>
     <p>#define REG1 register</p>
     <p>#define REG2 register</p>
     <p>#define REG3</p>
     <p>/* пример 4 */</p>
     <p>#define MAX(x, y)((x)&gt;(у)) ? (x) : (у)</p>
     <p>/* пример 5 */</p>
     <p>#define MULT(a, b) ((a)*(b))</p>
     <p>В первом примере идентификатор WIDTH определяется как целая константа со значением 80, а идентификатор LENGTH — как текст (WIDTH + 10). Каждое вхождение идентификатора LENGTH в исходный файл будет заменено на текст (WIDTH + 10), который после расширения идентификатора WIDTH превратится в выражение (80 + 10). Скобки, окружающие текст (WIDTH + 10), позволяют избежать ошибок в операторах, подобных следующему:</p>
     <p>var <strong>=</strong> LENGTH * 20;</p>
     <p>После обработки препроцессором оператор примет вид:</p>
     <p>var = (80 + 10)* 20;</p>
     <p>Значение, которое присваивается var, равно 1800. В отсутствие скобок в макроопределении оператор имел бы следующий вид:</p>
     <p>var = 80 + 10*20;</p>
     <p>Значение var равнялось бы 280, поскольку операция умножения имеет более высокий приоритет, чем операция сложения.</p>
     <p>Во втором примере определяется идентификатор FILEMESSAGE. Его определение продолжается на вторую строку путем использования символа обратный слэш непосредственно перед нажатием клавиши ENTER.</p>
     <p>В третьем примере определены три идентификатора, REG1, REG2, REG3. Идентификаторы REG1 и REG2 определены как ключевые слова <strong>register</strong>. Определение REG3 опущено и, таким образом, любое вхождение REG3 будет удалено из исходного файла. В разделе 7.4.1 приведен пример, показывающий, как эти директивы могут быть использованы для задания класса памяти <strong>register</strong> наиболее важным переменным программы.</p>
     <p>В четвертом примере определяется макроопределение МАХ. Каждое вхождение идентификатора МАХ в исходном файле заменяется на выражение ((x)&gt;(у))?(x):(у), в котором вместо формальных параметров х и у подставлены фактические. Например, макровызов</p>
     <p>МАХ(1,2)</p>
     <p>заменится на выражение</p>
     <p>((1)&gt;(2))?(1):(2)</p>
     <p>а макровызов</p>
     <p>MAX(i, s[i])</p>
     <p>заменится на выражение</p>
     <p>((i)<strong>&gt;</strong>(s(i]))?(i):(s(i])</p>
     <p>Обратите внимание на то, что в этом макроопределении аргументы с побочными эффектами могут привести к неверным результатам. Например, макровызов</p>
     <p>MAX(i, s[i++])</p>
     <p>заменится на выражение</p>
     <p>((i)&gt;(s[i++]))?(i):(s[i++])</p>
     <p>Операнды операции &gt; могут быть вычислены в любом порядке, а значение переменной i зависит от порядка вычисления. Поэтому результат выражения непредсказуем. Кроме того, возможна ситуация, когда переменная i будет инкрементирована дважды, что, вероятно, не требуется.</p>
     <p>В пятом примере определяется макроопределение MULT. Макровызов MULT(3,5) в тексте программы заменяется на (3)*(5). Круглые скобки, в которые заключаются фактические аргументы, необходимы в тех случаях, когда аргументы макроопределения являются сложными выражениями. Например, макровызов</p>
     <p>MULT(3+4,5+6)</p>
     <p>заменится на (3+4)*(5+6), что равняется 76. В отсутствие скобок результат подстановки 3+4*5+6 был бы равен 29.</p>
    </section>
    <section>
     <title>
      <p><strong>Склейка лексем и преобразование аргументов макроопределений</strong></p>
     </title>
     <p>СП ТС и версия 5.0 СП MSC реализуют две специальные препроцессорные операции: <emphasis>##</emphasis> и <emphasis>#.</emphasis></p>
     <p>В директиве <strong>#define</strong> две лексемы могут быть "склеены" вместе. Для этого их нужно разделить знаками ## (слева и справа от ## допустимы пробельные символы). Препроцессор объединяет такие лексемы в одну; например, макроопределение</p>
     <p>#define VAR (i, j) i##j</p>
     <p>при макровызове VAR(х,6) образует идентификатор х6. Некоторые компиляторы позволяют в аналогичных целях употребить запись х/**/6, но этот метод менее переносим.</p>
     <p>Символ #, помещаемый перед аргументом макроопределения, указывает на необходимость преобразования его в символьную строку. При макровызове конструкция #&lt;<emphasis>формальный параметр</emphasis>&gt; заменяется на "&lt;<emphasis>фактический аргумент</emphasis>&gt;".</p>
     <p>Пример: макроопределение TRACE позволяет печатать с помощью стандартной функции <strong>printf</strong> значения переменных типа <strong>int</strong> в формате &lt;<emphasis>имя</emphasis>&gt; = &lt;<emphasis>значение</emphasis>&gt;.</p>
     <p>#define TRACE(flag) printf (#flag " = %d\n", flag)</p>
     <p>Следующий фрагмент текста программы:</p>
     <p>highval = 1024;</p>
     <p>TRACE (highval);</p>
     <p>примет после обработки препроцессором вид:</p>
     <p>highval = 1024;</p>
     <p>printf("highval" " = %d\n", highval);</p>
     <p>Следующие друг за другом символьные строки рассматриваются компилятором языка Си в СП MSC версии 5 и в СП ТС как одна строка, поэтому полученная запись эквивалентна следующей:</p>
     <p>highval = 1024;</p>
     <p>printf("highval = %d\n", highval);</p>
     <p>При макровызове сначала выполняется макроподстановка всех аргументов макровызова, а затем их подстановка в тело макроопределения. Поэтому следующая программа напечатает строку "отклонение от стандарта":</p>
     <p>main()</p>
     <p>{</p>
     <p>#define АВ "стандарт"</p>
     <p>#define А "отклонение"</p>
     <p>#define В "от стандарта"</p>
     <p>#define CONCAT(P,Q) Р##Q</p>
     <p>printf(CONCAT(A,В) "\n");</p>
     <p>}</p>
    </section>
    <section>
     <title>
      <p><strong>Директива #undef</strong></p>
     </title>
     <p>Синтаксис:</p>
     <p>#undef &lt;<emphasis>идентификатор</emphasis>&gt;</p>
     <p>Директива <strong>#undef</strong> отменяет действие текущего определения <strong>#define</strong> для &lt;<emphasis>идентификатора</emphasis>&gt;. Чтобы отменить макроопределение посредством директивы <strong>#undef</strong>, достаточно задать его &lt;<emphasis>идентификатор</emphasis>&gt;. Задание списка параметров не требуется.</p>
     <p>Не является ошибкой применение директивы <strong>#undef</strong> к идентификатору, который ранее не был определен (или действие его определения уже отменено). Это может использоваться для гарантии того, что идентификатор не определен.</p>
     <p>Директива <strong>#undef</strong> обычно используется в паре с директивой <strong>#define</strong>, чтобы создать область исходной программы, в которой некоторый идентификатор определен.</p>
     <p>Пример:</p>
     <p>#define WIDTH 80</p>
     <p>#define ADD(X, Y) (X)+(Y)</p>
     <p>#undef WIDTH</p>
     <p>#undef ADD</p>
     <p>В этом примере директива <strong>#undef</strong> отменяет определение именованной константы WIDTH и макроопределения ADD. Обратите внимание на то, что для отмены макроопределения задается только его идентификатор.</p>
    </section>
   </section>
   <section>
    <title>
     <p><strong>Включение файлов</strong></p>
    </title>
    <p>Синтаксис:</p>
    <p>#include "имя пути"</p>
    <p>#include &lt;<emphasis>имя пути</emphasis>&gt;</p>
    <p>Директива <strong>#include</strong> включает содержимое исходного файла, &lt;<emphasis>имя пути</emphasis>&gt; которого задано, в текущий компилируемый исходный файл. Например, общие для нескольких исходных файлов определения именованных констант и макроопределения могут быть собраны в одном включаемом файле и включены директивой <strong>#include</strong> во все исходные файлы. Включаемые файлы используются также для хранения объявлений внешних переменных и абстрактных типов данных, разделяемых несколькими исходными файлами.</p>
    <p>Препроцессор обрабатывает включаемый файл таким же образом, как если бы этот файл целиком входил в состав исходного файла в точке, где записана директива <strong>#include</strong>. Включаемый текст также может содержать директивы препроцессора. Препроцессор выполняет обработку включаемого файла, а затем возвращается к обработке первоначального исходного файла.</p>
    <p>Имя пути представляет собой имя файла, которому может предшествовать имя устройства и спецификация директории. Синтаксис имени пути определяется соглашениями операционной системы.</p>
    <p>Препроцессор использует понятие стандартных директорий для поиска включаемых файлов. Стандартные директории задаются командой PATH операционной системы.</p>
    <p>Препроцессор ведет поиск до тех пор, пока не обнаружит файл с заданным именем.</p>
    <p>Если имя пути задано однозначно (полностью) и заключено в двойные кавычки, то препроцессор ищет файл только в директории, специфицированной заданным именем пути, а стандартные директории игнорирует.</p>
    <p>Если заданная в кавычках спецификация не образует полное имя пути, то препроцессор начинает поиск включаемого файла в текущей рабочей директории (т. е. в той директории, которая содержит исходный файл, в котором записана директива <strong>#include</strong>).</p>
    <p>Директива <strong>#include</strong> может быть вложенной. Это значит, что она может встретиться в файле, включенном другой директивой <strong>#include</strong>. Когда препроцессор обнаруживает вложенную директиву <strong>#include</strong>, он начинает поиск файла в текущей директории, соответствующей исходному файлу, который содержит эту вложенную директиву <strong>#include</strong>. После этого препроцессор переходит к поиску в текущей директории, соответствующей охватывающему исходному файлу, т.е. тому, по отношению к которому данная директива <strong>#include</strong> является вложенной. Допустимый уровень вложенности директив <strong>#include</strong> зависит от реализации компилятора. Процесс поиска в охватывающих директориях продолжается до тех пор, пока не будет просмотрена текущая директория самого первого исходного файла, т. е. файла, имя которого было задано при вызове компилятора языка Си.</p>
    <p>Затем препроцессор продолжает поиск в директориях, указанных в командной строке компиляции, и, наконец, ищет в стандартных директориях.</p>
    <p>Если же имя пути заключено в угловые скобки, то препроцессор вообще не будет осуществлять поиск в текущей рабочей директории, а сразу начнет поиск в директориях, специфицированных в командной строке компиляции, а затем в стандартных директориях.</p>
    <p>Примеры:</p>
    <p>#include &lt;stdio.h&gt; /* пример 1 */</p>
    <p>#include "defs.h" /* пример 2 */</p>
    <p>В первом примере в исходный файл включается файл с именем <strong>stdio.h</strong>. Угловые скобки сообщают препроцессору, что поиск файла нужно осуществлять в директории, указанной в командной строке компиляции, а затем в стандартных директориях.</p>
    <p>Во втором примере в исходный файл включается файл с именем <strong>defs.h</strong>. Двойные кавычки означают, что при поиске файла сначала должна быть просмотрена директория, содержащая текущий исходный файл.</p>
    <p>В СП ТС имеется возможность задавать имя пути в директиве <strong>#include</strong> с помощью именованной константы. Если за словом <strong>include</strong> следует идентификатор, препроцессор проверяет, не именует ли он константу или макроопределение. Если же за словом <strong>include</strong> следует строка, заключенная в кавычки или в угловые скобки, СП ТС не будет искать в ней имя константы.</p>
    <p>Примеры:</p>
    <p>#define myinclude "c:\tc\include\mystuff.h"</p>
    <p>#include myinclude</p>
    <p>#include "myinclude.h"</p>
    <p>Первая директива <strong>#include</strong> заставит препроцессор просматривать директорию C:\TC\INCLUDE\MYSTUFF.H, а вторая заставит искать файл MYINCLUDE.H в текущей директории.</p>
    <p>Объединение символьных строк и склейку лексем в именованной константе, которая используется в директиве <strong>#include</strong>, использовать нельзя. Результат расширения константы должен сразу читаться как корректная директива <strong>#include</strong>.</p>
   </section>
   <section>
    <title>
     <p><strong>Условная компиляция</strong></p>
    </title>
    <section>
     <p>В этом разделе описываются директивы, которые управляют условной компиляцией. Эти директивы позволяют исключить из процесса компиляции какие-либо части исходного файла посредством проверки условий (константных выражений).</p>
    </section>
    <section>
     <title>
      <p><strong>Директивы #if, #elif, #else, #endif</strong></p>
     </title>
     <p>Синтаксис:</p>
     <p>#if &lt;<emphasis>ограниченное-константное-выражение</emphasis>&gt; [&lt;<emphasis>текст</emphasis>&gt;]</p>
     <p>[#elif <strong>&lt;</strong><emphasis>ограниченное-константное-выражение</emphasis>&gt; &lt;<emphasis>текст</emphasis>&gt;]</p>
     <p>[#elif <strong>&lt;</strong><emphasis>ограниченное-константное-выражение</emphasis><strong>&gt;</strong> &lt;<emphasis>текст</emphasis>&gt;]</p>
     <p>[#else <strong>&lt;</strong><emphasis>текст</emphasis><strong>&gt;</strong>]</p>
     <p>#endif</p>
     <p>Директива <strong>#if</strong> совместно с директивами <strong>#elif</strong>, <strong>#else</strong> и <strong>#endif</strong> управляет компиляцией частей исходного файла. Каждой директиве <strong>#if</strong> в том же исходном файле должна соответствовать завершающая ее директива <strong>#endif</strong>. Между директивами <strong>#if</strong> и <strong>#endif</strong> допускается произвольное количество директив <strong>#elif</strong> (в том числе ни одной) и не более одной директивы <strong>#else</strong>. Если директива <strong>#else</strong> присутствует, то между ней и директивой <strong>#endif</strong> на данном уровне вложенности не должно быть других директив <strong>#elif</strong>.</p>
     <p>Препроцессор выбирает один из участков &lt;<emphasis>текста</emphasis>&gt; для обработки. &lt;<emphasis>Текст</emphasis>&gt; может занимать более одной строки. Обычно это участок программного текста, однако это не обязательно: препроцессор можно использовать для обработки произвольного текста. Если &lt;<emphasis>текст</emphasis>&gt; содержит директивы препроцессора (в том числе и директивы условной компиляции), то эти директивы выполняются. Обработанный препроцессором текст передается на компиляцию.</p>
     <p>Участок текста, не выбранный препроцессором, игнорируется на стадии препроцессорной обработки и не компилируется.</p>
     <p>Препроцессор выбирает участок текста для обработки на основе вычисления &lt;<emphasis>ограниченного-константного-выражения</emphasis>&gt;, следующего за каждой директивой <strong>#if</strong> или <strong>#elif</strong>. Выбирается &lt;<emphasis>текст</emphasis>&gt;, следующий за &lt;<emphasis>ограниченным-константным-выражением</emphasis>&gt; со значением истина (не нуль), вплоть до ближайшей директивы <strong>#elif</strong>, <strong>#else</strong>, или <strong>#endif</strong>, ассоциированной с данной директивой <strong>#if</strong>.</p>
     <p>Если ни одно ограниченное константное выражение не истинно, то препроцессор выбирает &lt;<emphasis>текст</emphasis>&gt;, следующий за директивой <strong>#else</strong>. Если же директива <strong>#else</strong> отсутствует, то никакой текст не выбирается.</p>
     <p>Ограниченное константное выражение описано в разделе 4.2.9 "Константные выражения". Такое выражение не может содержать операцию <strong>sizeof</strong> (в СП ТС — может), операцию приведения типа, константы перечисления и плавающие константы, но может содержать препроцессорную операцию <strong>defined</strong>(&lt;<emphasis>идентификатор</emphasis>&gt;). Эта операция дает истинное (не равное нулю) значение, если заданный &lt;<emphasis>идентификатор</emphasis>&gt; в данный момент определен; в противном случае выражение ложно (равно нулю). Следует помнить, что идентификатор, определенный без значения, тем не менее рассматривается как определенный. Операция <strong>defined</strong> может использоваться в сложном выражении в директиве <strong>#if</strong> неоднократно:</p>
     <p>#if defined(mysym) || defined(yoursym)</p>
     <p>СП TC (в отличие от СП MSC) позволяет использовать операцию <strong>sizeof</strong> в ограниченном константном выражении для препроцессора. В следующем примере в зависимости от размера указателя определяется одна из констант — либо SDATA, либо LDATA:</p>
     <p>#if (sizeof(void *) == 2)</p>
     <p>#define SDATA</p>
     <p>#else</p>
     <p>#define LDATA</p>
     <p>#endif</p>
     <p>Директивы <strong>#if</strong> могут быть вложенными. При этом каждая из директив <strong>#else</strong>, <strong>#elif</strong>, <strong>#endif</strong> ассоциируется с ближайшей предшествующей директивой <strong>#if</strong>.</p>
     <p>Примеры:</p>
     <p>/* пример 1 */</p>
     <p>#if defined(CREDIT)</p>
     <p>credit();</p>
     <p>#elif defined (DEBIT)</p>
     <p>debit();</p>
     <p>#else</p>
     <p>printerror();</p>
     <p>#endif</p>
     <p>/* пример 2 */</p>
     <p>#if DLEVEL <strong>&gt;</strong> 5</p>
     <p>#define SIGNAL 1</p>
     <p>#if STACKUSE == 1</p>
     <p>#derine STACK 200</p>
     <p>#else</p>
     <p>#define STACK 100</p>
     <p>#endif</p>
     <p>#else</p>
     <p>#define SIGNAL 0</p>
     <p>#if STACKUSE == 1</p>
     <p>#define STACK 100</p>
     <p>#else</p>
     <p>#define STACK 50</p>
     <p>#endif</p>
     <p>#endif</p>
     <p>/* пример 3 */</p>
     <p>#if DLEVEL == 0</p>
     <p>#define STACK 0</p>
     <p>#elif DLEVEL == 1</p>
     <p>#define STACK 100</p>
     <p>#elif DLEVEL &gt; 5</p>
     <p>display(debugptr);</p>
     <p>#else</p>
     <p>#define STACK 200</p>
     <p>#endif</p>
     <p>/* пример 4 */</p>
     <p>#define REG 1 register</p>
     <p>#define REG2 register</p>
     <p>#if defined (M_86)</p>
     <p>#define REG3</p>
     <p>#define REG4</p>
     <p>#else</p>
     <p>#ifdefined(M_68000)</p>
     <p>#define REG4 register</p>
     <p>#endif</p>
     <p>#endif</p>
     <p>В первом примере директивы <strong>#if</strong>, <strong>#elif</strong>, <strong>#else</strong>, <strong>#endif</strong> управляют компиляцией одного из трех вызовов функции. Вызов функции <strong>credit</strong> компилируется, если определена именованная константа CREDIT. Если определена именованная константа DEBIT, то компилируется вызов функции <strong>debit</strong>. Если ни одна из .именованных констант не определена, то компилируется вызов функции <strong>printerror</strong>. Следует учитывать, что CREDIT и <strong>credit</strong> являются различными идентификаторами в языке Си.</p>
     <p>В следующих двух примерах предполагается, что константа DLEVEL предварительно определена директивой <strong>#define</strong>.</p>
     <p>Во втором примере показаны два вложенных набора директив <strong>#if</strong>, <strong>#else</strong>, <strong>#endif</strong>. Первый набор директив обрабатывается, если значение DLEVEL больше 5. В противном случае обрабатывается второй набор.</p>
     <p>В третьем примере директивы уловной компиляции используют для выбора текста значение константы DLEVEL. Константа STACK определяется со значением 0, 100 или 200, в зависимости от значения DLEVEL. Если DLEVEL больше 5, то компилируется вызов функции <strong>display</strong>, а константа STACK не определяется.</p>
     <p>В четвертом примере директивы препроцессора используются для контроля за применением спецификации регистрового класса памяти в программе, предназначенной для работы в различных операционных средах.</p>
     <p>Компилятор обычно выделяет регистровую память переменным в том порядке, в котором записаны объявления переменных в программе. Если программа содержит больше объявлений переменных класса памяти <strong>register</strong>, чем имеется регистров в данной операционной среде, то регистровую память получат только те переменные, объявления которых записаны раньше. Следовательно, если более интенсивно будут использоваться те переменные, которые объявлены позже, выигрыш в эффективности от использования регистров окажется незначительным.</p>
     <p>В примере показано, каким образом предоставить приоритет регистровой памяти наиболее важным переменным. Именованные константы REG1 и REG2 определяются как ключевые слова <strong>register</strong>. Они предназначены для объявления двух наиболее важных локальных переменных функции. Например, в следующем фрагменте программы такими переменными являются b и c.</p>
     <p>func(REG3 int а)</p>
     <p>{</p>
     <p>REG1 int b;</p>
     <p>REG2 int c;</p>
     <p>REG4 int d;</p>
     <p>}</p>
     <p>Если определена константа М_86, препроцессор удаляет идентификаторы REG3 и REG4 из файла путем замены их на пустой текст. Регистровую память в этом случае получат только переменные b и с. Если определен идентификатор М_68000, то все четыре переменные объявляются с классом памяти <strong>register</strong>.</p>
     <p>Если не определена ни одна из констант — ни М_86, ни М_68000, — то регистровую память получат переменные а, b и с.</p>
    </section>
    <section>
     <title>
      <p><strong>Директивы #ifdef и #ifndef</strong></p>
     </title>
     <p>Синтаксис:</p>
     <p>#ifdef &lt;<emphasis>идентификатор</emphasis>&gt;</p>
     <p>#ifndef &lt;<emphasis>идентификатор</emphasis>&gt;</p>
     <p>Аналогично директиве <strong>#if</strong>, за директивами <strong>#ifdef</strong> и <strong>#ifndef</strong> может следовать набор директив <strong>#elif</strong> и директива <strong>#else</strong>. Набор должен быть завершен директивой <strong>#endif</strong>.</p>
     <p>Использование директив <strong>#ifdef</strong> и <strong>#ifndef</strong> эквивалентно применению директивы <strong>#if</strong>, использующей выражение с операцией <strong>defined</strong>(&lt;<emphasis>идентификатор</emphasis>&gt;). Эти директивы поддерживаются исключительно для совместимости с предыдущими версиями компиляторов языка Си. Для новых программ рекомендуется использовать директиву <strong>#if</strong> с операцией <strong>defined</strong>(&lt;<emphasis>идентификатор</emphasis>&gt;).</p>
     <p>Когда препроцессор обрабатывает директиву <strong>#ifdef</strong>, он проверяет, определен ли в данный момент &lt;<emphasis>идентификатор</emphasis>&gt; директивой <strong>#define</strong>. Если да, условие считается истинным, если нет — ложным.</p>
     <p>Директива <strong>#ifndef</strong> противоположна по действию директиве <strong>#ifdef</strong>. Если &lt;<emphasis>идентификатор</emphasis>&gt; не был определен директивой <strong>#define</strong>, или его определение уже отменено директивой <strong>#undef</strong>, то условие считается истинным. В противном случае условие ложно.</p>
    </section>
   </section>
   <section>
    <title>
     <p><strong>Управление нумерацией строк</strong></p>
    </title>
    <p>Синтаксис:</p>
    <p>#line &lt;<emphasis>константа</emphasis>&gt; ["имя-файла"]</p>
    <p>Директива <strong>#line</strong> сообщает компилятору языка Си об изменении имени исходного файла и порядка нумерации строк. Это изменение отражается только на диагностических сообщениях компилятора: исходный файл будет теперь именоваться как &lt;<emphasis>имя-файла</emphasis>&gt;, а текущая компилируемая строка получит номер &lt;<emphasis>константа</emphasis>&gt;. После обработки очередной строки счетчик номеров строк увеличивается на единицу. В случае изменения номера строки и имени исходного файла директивой <strong>#line</strong> компилятор "забывает" их прежние значения и продолжает работу уже с новыми значениями.</p>
    <p>Директива <strong>#line</strong> обычно используется автоматическими генераторами программ для того, чтобы диагностические сообщения относились не к исходному файлу, а к сгенерированной программе.</p>
    <p>&lt;<emphasis>Константа</emphasis>&gt; в директиве <strong>#line</strong> может быть произвольной целой константой. &lt;<emphasis>Имя-файла</emphasis>&gt; может быть произвольной комбинацией символов, заключенной в двойные кавычки. Если имя файла опущено, то имя исходного файла остается прежним.</p>
    <p>Текущий номер строки и имя исходного файла доступны в программе через псевдопеременные с именами __LINE__ и __FILE__. Эти псевдопеременные могут быть использованы для выдачи во время выполнения сообщений о точном местоположении ошибки.</p>
    <p>Значением псевдопеременной __FILE__ является строка, представляющая имя файла, заключенное в двойные кавычки. Поэтому для печати имени исходного файла не требуется заключать сам идентификатор __FILE__ в двойные кавычки.</p>
    <p>Примеры.</p>
    <p><emphasis>/*</emphasis> пример 1 */</p>
    <p>#line 151 "copy.с"</p>
    <p>/* пример 2 */</p>
    <p>#define ASSERT(cond) if (!cond)\</p>
    <p>{printf ("ошибка в строке %d файла %s\n", \</p>
    <p>__LINE__, __FILE__);} else;</p>
    <p>В первом примере устанавливается имя исходного файла сору.с и текущий номер строки 151.</p>
    <p>Во втором примере в макроопределении ASSERT используются псевдопеременные __LINE__ и __FILE__ для печати сообщения об ошибке, содержащего координаты исходного файла, если некоторое условие, заданное макроаргументом <strong>cond</strong>, ложно.</p>
   </section>
   <section>
    <title>
     <p><strong>Директива обработки ошибок</strong></p>
    </title>
    <p>В СП ТС реализована директива #error. Ее формат:</p>
    <p>#error &lt;<emphasis>текст</emphasis>&gt;</p>
    <p>Обычно эту директиву записывают среди директив условной компиляции для обнаружения некоторой недопустимой ситуации. По директиве <strong>#error</strong> препроцессор прерывает компиляцию и выдает следующее сообщение:</p>
    <p>Fatal: &lt;<emphasis>имя-файла</emphasis>&gt; &lt;<emphasis>номер-строки</emphasis>&gt; Error directive: &lt;<emphasis>текст</emphasis>&gt;</p>
    <p>Fatal — признак фатальной ошибки; &lt;<emphasis>имя-файла</emphasis>&gt; — имя исходного файла; &lt;<emphasis>номер-строки</emphasis>&gt; — текущий номер строки; Error directive — сообщение об ошибке в директиве; &lt;<emphasis>текст</emphasis>&gt; — собственно текст диагностического сообщения.</p>
    <p>Например, если именованная константа MYVAL может иметь значение либо 0, либо 1, можно поместить в исходный файл операторы условной компиляции для проверки на некорректное значение MYVAL:</p>
    <p>#if (MYVAL != 0 &amp;&amp; MYVAL != 1)</p>
    <p>#error MYVAL должно иметь значение либо 0, либо 1</p>
    <p>#endif</p>
    <p>Препроцессор просматривает текст сообщения в директиве <strong>#error</strong>, и исключает из него комментарии (если они имеются), но именованные константы и макроопределения в тексте не выявляет и макроподстановку не производит.</p>
   </section>
   <section>
    <title>
     <p><strong>Пустая директива</strong></p>
    </title>
    <p>Для повышения читабельности программ СП ТС распознает пустую директиву, состоящую из строки, содержащей просто знак #. Эта директива всегда игнорируется.</p>
   </section>
   <section>
    <title>
     <p><strong>Указания компилятору языка Си</strong></p>
    </title>
    <p>Синтаксис:</p>
    <p>#pragma <strong>&lt;</strong><emphasis>последовательность-символов</emphasis><strong>&gt;</strong></p>
    <p>Указания компилятору, или прагмы, предназначены для исполнения компилятором в процессе его работы. &lt;<emphasis>Последовательность-символов</emphasis>&gt; задает определенную инструкцию компилятору и, возможно, аргументы.</p>
    <p>Набор прагм для каждого компилятора языка Си различен. Для получения подробной информации о прагмах смотрите системную документацию по используемому вами компилятору.</p>
   </section>
   <section>
    <title>
     <p><strong>Псевдопеременные</strong></p>
    </title>
    <p>Псевдопеременные представляют собой зарезервированные именованные константы, которые можно использовать в любом исходном файле. Каждый из них начинается и оканчивается двумя символами подчеркивания (__).</p>
    <p>__LINE__</p>
    <p>Номер текущей обрабатываемой строки исходного файла—десятичная константа. Первая строка исходного файла имеет номер 1.</p>
    <p>__FILE__</p>
    <p>Имя компилируемого исходного файла — символьная строка. Значение данной псевдопеременной изменяется каждый раз, когда компилятор обрабатывает директиву <strong>#include</strong> или директиву <strong>#line</strong>, а также по завершении включаемого файла.</p>
    <p>Следующие две псевдопеременные поддерживаются только СП ТС.</p>
    <p>__DATE__</p>
    <p>Дата начала компиляции текущего исходного файла — символьная строка. Каждое вхождение __DATE__ в заданный файл дает одно и то же значение, независимо от того, как долго уже продолжается обработка. Дата имеет формат <strong>mmm dd УУУУ</strong>, где <strong>mmm</strong> — месяц (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec), <strong>dd</strong> — число текущего месяца (1…31; в 1-й позиции <strong>dd</strong> ставится пробел, если число меньше 10), <strong>уууу</strong> — год (например, 1990).</p>
    <p>__TIME__</p>
    <p>Время начала компиляции текущего исходного файла — символьная строка. Каждое вхождение __TIME__ в заданный файл дает одно и то же значение, независимо от того, как долго уже продолжается обработка. Время имеет формат <strong>hh:mm:ss</strong>, где <strong>hh</strong> — час (00…23), <strong>mm</strong> — минуты (00…59), <strong>ss</strong> — секунды (00…59).</p>
   </section>
  </section>
  <section>
   <title>
    <p><strong>МОДЕЛИ ПАМЯТИ</strong></p>
   </title>
   <section>
    <p>Реализация моделей памяти в СП MSC и в СП ТС имеет ряд отличий. В разделах 8.1 и 8.2 описаны модели памяти СП MSC, а в разделе 8.3 приведены отличия моделей памяти СП ТС.</p>
   </section>
   <section>
    <title>
     <p><strong>Виды моделей</strong></p>
    </title>
    <p>Применение моделей памяти позволяет контролировать распределение памяти в программе и делать его более эффективным или адекватным решаемой задаче. По умолчанию в процессе компиляции и редактирования связей генерируется код для работы в малой (<strong>small</strong>) модели. Для большинства программ этой модели достаточно. Существуют, однако, два условия, когда малая модель не годится; если программа удовлетворяет хотя бы одному из них, следует использовать другую модель памяти:</p>
    <p>—размер кода программы превышает 64 Кбайта;</p>
    <p>—размер статических данных программы превышает 64 Кбайта.</p>
    <p>Имеется два варианта выбора модели памяти для программы: назначить при компиляции новую модель вместо действующей по умолчанию малой либо использовать в объявлении объектов программы модификаторы <strong>near</strong>, <strong>far</strong>, <strong>huge</strong>. Можно также комбинировать эти способы.</p>
    <p>Архитектура микропроцессора типа 8086/8088 предусматривает разбиение оперативной памяти на физические сегменты. Размер одного сегмента не превышает 64 Кбайта. Минимальное количество сегментов, которое выделяется программе, равно двум: один для кода, другой для статических данных. Эти сегменты называются стандартными. Малая модель памяти использует только эти два сегмента. Другие модели позволяют выделять программе более одного сегмента кода и/или данных.</p>
    <p>Статические данные — это все данные, объявленные в программе с классом памяти <strong>extern</strong> или <strong>static</strong>. Формальные параметры функций и локальные переменные функций и блоков не являются статическими данными. Они хранятся не в сегменте данных, а в сегменте стека. Он обычно совмещен со стандартным сегментом данных физически.</p>
    <p>Помимо статических данных, имеется возможность работать с динамической памятью с помощью стандартных библиотечных функций типа <strong>malloc</strong>. Динамическая память может выделяться как в отдельном сегменте (дальняя динамическая память), так и в стандартном сегменте данных, между концом статических данных и стеком (ближняя динамическая память).</p>
    <p>Адрес оперативной памяти состоит из двух частей:</p>
    <p>1) 16-битового числа, представляющего базовый адрес сегмента;</p>
    <p>2) 16-битового числа, представляющего смещение внутри этого сегмента.</p>
    <p>Для доступа к коду или данным, находящимся в стандартном сегменте, достаточно использовать только вторую часть адреса, т.е. смещение. В этом случае можно применить указатель, объявленный с модификатором near (ближний). Поскольку для доступа к объекту используется только одно 16-битовое число, применение указателей типа near компактно по занимаемой памяти и быстро по времени.</p>
    <p>Если код или данные располагаются за пределами стандартных сегментов, для доступа к ним должны использоваться обе части адреса — и адрес сегмента, и смещение. Указатели для такого доступа объявляются с модификатором <strong>far</strong> (дальний). Доступ к объектам по указателям типа <strong>far</strong> занимает больше памяти и времени, однако позволяет адресовать всю оперативную память, а не только 64 Кбайта.</p>
    <p>Имеется третий вид указателей — <strong>huge</strong> (максимальный). Адрес типа <strong>huge</strong> подобен адресу типа <strong>far</strong>, поскольку оба включают и адрес сегмента, и смещение. Однако адресная арифметика для <strong>far</strong> и <strong>huge</strong> адресов различается. Поскольку объекты, адресуемые <strong>far</strong> указателями, не выходят за границу адресуемого сегмента, действия адресной арифметики выполняются только над второй половиной адреса — над смещением. Это ускоряет доступ, однако ограничивает размер одного программного объекта 64 Кбайтами. Для указателей типа <strong>huge</strong> арифметические действия выполняются над всеми 32 битами адреса.</p>
    <p>Тип адреса <strong>huge</strong> определен только для данных (массивов); никакой сегмент кода, т.е. никакой из исходных файлов, составляющих программу, не может сгенерировать больше 64 Кбайтов кода. Поэтому ключевое слово <strong>huge</strong> применимо только к элементам данных — массивам и указателям на них.</p>
    <subtitle><strong>Малая модель</strong></subtitle>
    <p>В малой (<strong>small</strong>) модели памяти программа занимает два стандартных сегмента: сегмент кода и сегмент данных, в котором размещен также стек. Как код, так и данные программы не могут превышать 64 Кбайтов; следовательно, суммарный размер программы не может превышать 128 Кбайтов. Малая модель подходит для большинства программ и потому назначается компилятором по умолчанию.</p>
    <p>В малой модели для доступа к объектам кода или данных используются указатели типа <strong>near</strong>. Можно, однако, изменить это умолчание, применяя модификаторы <strong>far</strong> или <strong>huge</strong> для объявления элементов данных и модификатор <strong>far</strong> для функций.</p>
    <subtitle><strong>Средняя модель</strong></subtitle>
    <p>В средней (<strong>medium</strong>) модели памяти для данных и стека программы выделяется один сегмент, а для кода — столько сегментов, сколько потребуется. Каждому исходному модулю программы выделяется собственный сегмент кода.</p>
    <p>Средняя модель применяется обычно для программ с большим количеством операторов (более 64 Кбайтов кода), но сравнительно небольшим размером данных (менее 64 Кбайтов). Для доступа к функциям по умолчанию используются указатели типа <strong>far</strong>, для доступа к данным — указатели типа <strong>near</strong>. Можно, однако, изменить это умолчание, применяя модификаторы <strong>far</strong> или <strong>huge</strong> для объявления элементов данных и модификатор <strong>near</strong> для функций.</p>
    <p>Средняя модель представляет разумный компромисс между скоростью выполнения и компактностью программы, поскольку большинство программ чаще обращается к данным, чем к функциям.</p>
    <subtitle><strong>Компактная модель</strong></subtitle>
    <p>В компактной (<strong>compact</strong>) модели программному коду выделяется только один сегмент, а данным — столько сегментов, сколько потребуется. Компактная модель применяется для программ, небольших по количеству операторов, но работающих с большим объемом данных.</p>
    <p>В компактной модели доступ к коду (функциям) производится по указателям типа <strong>near</strong>, а к данным — по указателям типа <strong>far</strong>. Это умолчание можно обойти, используя модификаторы <strong>near</strong> и <strong>huge</strong> для объявления данных и модификатор <strong>far</strong> для функций.</p>
    <subtitle><strong>Большая модель</strong></subtitle>
    <p>В большой (<strong>large</strong>) модели и под код, и под данные выделяется несколько сегментов. Большая модель используется для больших программ с большим объемом данных.</p>
    <p>В большой модели доступ к элементам кода и данных производится по указателям типа <strong>far</strong>. Это умолчание можно обойти, используя модификаторы <strong>near</strong> и <strong>huge</strong> для объявления данных и модификатор <strong>near</strong> для функций.</p>
    <subtitle><strong>Максимальная модель</strong></subtitle>
    <p>Максимальная (<strong>huge</strong>) модель аналогична большой модели, за исключением того, что в ней снимается ограничение на размер массивов (указатели типа <strong>far</strong>, применяемые в большой модели, ограничивают размер отдельного элемента данных 64 Кбайтами). Некоторые ограничения, однако, налагаются на размер элементов <strong>huge</strong> массивов, если эти массивы превышают по размеру 64 Кбайта. В целях повышения эффективности адресации не допускается пересечения элементами массива границ сегмента. Из этого вытекает следующее:</p>
    <p>1) Никакой элемент массива не может превышать по размеру 64 Кбайта.</p>
    <p>2) Если размер массива больше 128 Кбайтов, размер его элементов (в байтах) должен быть степенью двойки (т. е. 2, 4, 8, 16 и т.д.). Если же размер массива меньше или равен 128 Кбайтам, то размер его элементов может быть от 1 байта до 64 Кбайтов (включительно).</p>
    <p>Работая в максимальной модели, программист должен быть осторожен в применении операции <strong>sizeof</strong> и при вычитании указателей. В языке Си определено, что значение операции <strong>sizeof</strong> имеет тип <strong>unsigned int</strong>, однако число байтов в <strong>huge</strong> массиве может быть представлено только типом <strong>unsigned long</strong>. Для получения правильного значения в этом случае следует применять приведение типа операции <strong>sizeof</strong>:</p>
    <p>(unsigned long)sizeof(huge_item)</p>
    <p>Аналогично, результат вычитания указателей определен в языке Си как значение типа <strong>int</strong>. При вычитании указателей типа <strong>huge</strong> может оказаться, что результат имеет тип <strong>long</strong>. В этом случае также необходимо применить приведение типа:</p>
    <p>(long)(huge_ptr1—huge_ptr2)</p>
   </section>
   <section>
    <title>
     <p><strong>Модификация стандартной модели памяти</strong></p>
    </title>
    <section>
     <p>Работая в некоторой стандартной модели памяти, программист может в той или иной мере модифицировать ее, применяя в объявлениях модификаторы <strong>near</strong>, <strong>far</strong> и <strong>huge</strong>. Правила интерпретации объявлений с модификаторами рассмотрены в разделе 3.3.3.4 "Модификаторы <strong>near</strong>, <strong>far</strong>, <strong>huge</strong>".</p>
    </section>
    <section>
     <title>
      <p><strong>Объявление данных</strong></p>
     </title>
     <p>Если непосредственно за ключевым словом <strong>near</strong>, <strong>far</strong> или <strong>huge</strong> следует идентификатор, то это значит, что соответствующий элемент данных будет размещен в стандартном сегменте (для <strong>near</strong>) или может быть размещен в другом сегменте данных (для <strong>far</strong> или <strong>huge</strong>). Например, объявление</p>
     <p>char far х;</p>
     <p>сообщает, что адрес объекта <strong>х</strong> имеет тип <strong>far.</strong></p>
     <p>Если же непосредственно за ключевым словом <strong>near</strong>, <strong>far</strong> или <strong>huge</strong> следует признак указателя (звездочка), то это значит, что соответствующий указатель будет хранить адрес типа <strong>near</strong>, типа <strong>far</strong> или типа <strong>huge</strong>, соответственно. Например, объявление</p>
     <p>char far *р;</p>
     <p>сообщает, что указатель <strong>р</strong> имеет тип <strong>far</strong>, т. е. может указывать на объект, расположенный в любом сегменте данных (при этом тип адреса этого объекта должен быть <strong>far</strong>). Объявление</p>
     <p>char * far р;</p>
     <p>объявляет <strong>р</strong> как указатель на <strong>char</strong>, причем сам указатель <strong>р</strong> может находиться в любом сегменте, и его адрес имеет тип <strong>far</strong>. Объявление</p>
     <p>char far * far р;</p>
     <p>сообщает, что указатель <strong>р</strong> может указывать на объекты с адресом типа <strong>far</strong>. Адрес самого указателя <strong>р</strong> также имеет тип <strong>far</strong>.</p>
     <p>Примеры:</p>
     <p>char а[3000]; /* пример 1: малая модель */</p>
     <p>char far b[30000]; /* пример 2: малая модель */</p>
     <p>char a[3000]; /* пример 3: большая модель */</p>
     <p>char near b[3000]; /* пример 4: большая модель */</p>
     <p>char huge a[70000]; /* пример 5: малая модель */</p>
     <p>char huge *pa; /* пример 6: малая модель */</p>
     <p>char *pa; /* пример 7: малая модель */</p>
     <p>char far *pb; /* пример 8: малая модель */</p>
     <p>char far **pa; /* пример 9: малая модель */</p>
     <p>char far **pa; /* пример 10: большая модель */</p>
     <p>char far *near *pb; /* пример 11: любая модель */</p>
     <p>char far *far *pb; /* пример 12: любая модель */</p>
     <p>В примере 1 массиву <strong>а</strong> выделяется память в стандартном сегменте данных; массиву <strong>b</strong> во втором примере память может быть выделена в любом из сегментов данных программы. Поскольку оба объявления сделаны в малой модели, то, вероятно, массив <strong>а</strong> содержит часто используемые данные, которые для ускорения доступа должны располагаться в стандартном сегменте, а массив <strong>b</strong> содержит редко используемые данные, которые могут выйти за пределы 64-Кбайтного сегмента данных. Можно было бы использовать здесь другую модель памяти, в которой адрес данных по умолчанию имел бы тип <strong>far</strong>, однако для сохранения быстрого доступа к массиву <strong>а</strong> лучше сохранить малую модель, а адрес массива <strong>b</strong> объявить как <strong>far</strong>.</p>
     <p>В примере 2 указан большой размер массива <strong>b</strong>, поскольку более вероятно, что программист будет модифицировать тип адреса объекта большой длины, который может не поместиться в текущий сегмент.</p>
     <p>В примере 3, очевидно, скорость доступа к массиву <strong>а</strong> не является критичной; независимо от того, попадет он в стандартный сегмент или не попадет, обращение к нему всегда будет осуществляться по 32-битовому адресу. В примере 4 массиву <strong>b</strong> с помощью модификатора <strong>near</strong> явно назначен стандартный сегмент, с целью ускорения доступа к нему в большой модели.</p>
     <p>В примере 5 массив <strong>а</strong> должен быть явно объявлен как <strong>huge</strong>, поскольку его размер превышает 64 Кбайта. Использование модификатора <strong>huge</strong> вместо выбора максимальной модели памяти в качестве стандартной позволяет сэкономить время доступа: только к массиву <strong>а</strong> обращение будет осуществляться по адресу типа <strong>huge</strong>, а все остальные данные будут размещаться в стандартном сегменте. Для обращения к массиву <strong>а</strong> может быть использован указатель <strong>ра</strong> из примера 6. Все арифметические операции над указателем <strong>ра</strong> (например, <strong>ра++</strong>) будут выполняться над всеми 32 его битами.</p>
     <p>В примере 7 <strong>ра</strong> объявляется как указатель на <strong>near char</strong>. Указатель получает тип <strong>near</strong> по умолчанию, поскольку речь идет о малой модели. В примере 8 <strong>pb</strong> явно объявляется как указатель на <strong>far char</strong>. Он может быть использован, в частности, для доступа к символьному массиву, расположенному не в стандартном сегменте памяти. Например, <strong>ра</strong> может указывать на массив <strong>а</strong> из примера 1, а <strong>pb</strong> — на массив <strong>b</strong> из примера 2.</p>
     <p>Хотя объявления <strong>ра</strong> в примерах 9 и 10 идентичны, в примере 9 <strong>ра</strong> объявляется как указатель на <strong>near</strong> массив указателей на тип <strong>far char</strong>, а в примере 10 <strong>ра</strong> объявляется как указатель на <strong>far</strong> массив указателей на тип <strong>far char</strong>.</p>
     <p>В примере 11 <strong>pb</strong> объявляется как указатель на <strong>near</strong> массив указателей на тип <strong>far char</strong>. В примере 12 <strong>pb</strong> объявляется как указатель на <strong>far</strong> массив указателей на тип <strong>far char</strong>. В этих примерах употребление слов <strong>far</strong> и <strong>near</strong> изменяет действующие по умолчанию соглашения, связанные с моделями памяти; в отличие от примеров 9 и 10, объявления <strong>pb</strong> не зависят от выбранной модели памяти и в любой модели имеют одинаковый смысл.</p>
    </section>
    <section>
     <title>
      <p><strong>Объявление функций</strong></p>
     </title>
     <p>Правила применения модификаторов <strong>near</strong> и <strong>far</strong> в объявлениях функций аналогичны правилам применения их в объявлениях данных. Если непосредственно за модификатором следует имя функции, то данное ключевое слово определяет, в каком сегменте будет размещена функция. Например,</p>
     <p>char far fun();</p>
     <p>определяет <strong>fun</strong> как функцию, вызываемую по 32-битовому адресу и возвращающую тип <strong>char</strong>.</p>
     <p>Если же непосредственно за специальным ключевым словом следует признак указателя (звездочка), то данное ключевое слово определяет тип адреса функций, которые могут вызываться через этот указатель. Например,</p>
     <p>char (far *pfun)();</p>
     <p>определяет <strong>pfun</strong> как указатель (32-битовый) на <strong>far</strong> функцию, возвращающую <strong>char</strong>.</p>
     <p>Модификатор <strong>huge</strong> к функциям и указателям на функции неприменим.</p>
     <p>Объявления функций должны соответствовать их определениям по набору и расположению модификаторов. Рекомендуется всегда использовать предварительные объявления функций со списками типов аргументов, чтобы компилятор мог выявить ситуации некорректного вызова функции.</p>
     <p>Примеры:</p>
     <p>char far fun(); /* пример 1: малая модель */</p>
     <p>static char far *near fun(); /* пример 2: большая модель */</p>
     <p>void far fun(); /* пример 3: малая модель */</p>
     <p>void (far *pfun)() = fun;</p>
     <p>double far * far fun(); /* пример 4: компактная модель */</p>
     <p>double far* (far *pfun)() = fun;</p>
     <p>В первом примере <strong>fun</strong> объявляется как функция, возвращающая <strong>char</strong>. Ключевое слово <strong>far</strong> в объявлении означает, что <strong>fun</strong> вызывается по 32-битовому адресу типа <strong>far</strong>.</p>
     <p>Во втором примере <strong>fun</strong> объявляется как <strong>near</strong> функция класса памяти <strong>static</strong>, возвращающая указатель на <strong>far char</strong>. Такая функция в большой модели памяти может быть использована, например, как вспомогательная подпрограмма, которая вызывается часто, но только функциями из своего исходного файла. Поскольку все функции из одного исходного файла помещаются в один и тот же сегмент, они могут обращаться друг к другу по адресам типа <strong>near</strong>. Будет ошибкой, однако, передать адрес функции <strong>fun</strong> в качестве аргумента другой функции, расположенной за пределами сегмента, в котором определена <strong>fun</strong>, поскольку из другого сегмента функция <strong>fun</strong> не может быть вызвана.</p>
     <p>В третьем примере <strong>pfun</strong> объявляется как указатель на <strong>far</strong> функцию, не возвращающую значения, а затем ему присваивается адрес функции <strong>fun</strong>. Фактически <strong>pfun</strong> может быть использован для доступа к любой функции, имеющей тип адреса <strong>far</strong>. Следует понимать, что если функция, вызванная через указатель <strong>pfun</strong>, не была объявлена с модификатором <strong>far</strong>, или не получила тип <strong>far</strong> по умолчанию, то ее вызов приведет к ошибке во время выполнения.</p>
     <p>В примере 4 <strong>pfun</strong> объявляется как указатель на <strong>far</strong> функцию, возвращающую указатель на <strong>far double</strong>, после чего ему присваивается адрес функции <strong>fun</strong>. Такой вариант может использоваться, например, в компактной модели памяти для функции, которая используется редко, и потому необязательно должна находиться в стандартном сегменте кода. И функция, и указатель должны быть объявлены с модификатором <strong>far.</strong></p>
    </section>
   </section>
   <section>
    <title>
     <p><strong>Модели памяти СП ТС</strong></p>
    </title>
    <p>Организация работы с моделями памяти в СП ТС имеет ряд отличий от СП MSC.</p>
    <p>В дополнение к описанным выше моделям СП ТС имеет еще одну — <strong>tiny</strong> (минимальную). В этой модели вся программа — код, данные, стек, динамическая память — размещается в одном сегменте. Таким образом, размер программы ограничен 64 Кбайтами. Все указатели в этой модели имеют тип <strong>near</strong>. Программы модели памяти <strong>tiny</strong> могут быть преобразованы в формат выполняемых файлов СОМ операционной системы MSDOS.</p>
    <p>В компактной и большой моделях статические данные занимают не несколько сегментов, а один. В этом сегменте также размещается стек. По умолчанию для данных используются указатели типа <strong>far</strong>, однако для статических данных лучше применять указатели типа <strong>near</strong>. В компактной, большой и максимальной моделях стек занимает отдельный сегмент.</p>
    <p>Только в максимальной модели памяти СП ТС позволяет статическим данным занимать более одного сегмента, т. е. более 64 Кбайтов. Однако в одном исходном файле может быть не более 64 Кбайтов статических данных. Вследствие этого недопустимы массивы, превышающие по размеру 64 Кбайта.</p>
    <p>Указатели типа <strong>huge</strong> в СП ТС всегда хранятся в нормализованном виде, так что значение смещения никогда не превышает 15. Нормализация требует дополнительных временных затрат при работе с указателями тип <strong>huge</strong>, но зато позволяет применять к ним операции отношения (с ненормализованными 32-битовыми указателями операции отношения работают некорректно).</p>
    <p>Допустимо применение модификатора <strong>huge</strong> к функциям и указателям на функции.</p>
    <p>Имеется также четыре специальных указателя типа near с именами <strong>_cs</strong>, <strong>_ds</strong>, <strong>_ss</strong>, <strong>_es</strong>. Это 16-битовые указатели, ассоциированные с сегментными регистрами микропроцессора, содержащими адреса сегментов кода, данных, стека и динамической памяти, соответственно. Например, указатель <strong>р</strong>, объявленный следующим образом</p>
    <p>char _ss *р;</p>
    <p>будет содержать 16-битовое значение, хранящееся в сегменте стека.</p>
    <p>Объявления с модификаторами <strong>near</strong>, <strong>far</strong>, <strong>huge</strong> отличаются тем, что нельзя модифицировать тип адреса самого указателя. Модификатор в объявлении указателя может стоять только перед звездочкой, тем самым объявляя указатель на модифицируемый тип. А объявление</p>
    <p>int * far р;</p>
    <p>допустимое в СП MSC, считается ошибкой в СП ТС.</p>
    <p id="_BITSoft"><strong>ЧАСТЬ II</strong></p>
    <p><strong>СТАНДАРТНАЯ БИБЛИОТЕКА ЯЗЫКА СИ</strong></p>
    <p>В языке Си стандартная библиотека более сильно интегрирована с языком по сравнению с другими языками программирования высокого уровня. Без использования функций стандартной библиотеки не может быть написана ни одна серьезная программа на языке Си, в частности потому, что в самом языке Си нет никаких средств ввода/вывода информации.</p>
    <p>Стандартную библиотеку функций языка Си можно разделить на две категории: функции, которые имеются в библиотеке любой системы программирования языка Си для различных операционных систем и различных архитектур компьютеров, и функции, которые являются уникальными в рамках какой-либо системы программирования, или обеспечивают доступ к специфическим возможностям конкретной операционной системы, или связаны с конкретной архитектурой компьютера.</p>
    <p>Функции первой категории образуют переносимое ядро библиотеки; программы, в которых используются только такие библиотечные функции, могут быть перенесены в другую систему программирования, другую операционную систему и/или на другой тип архитектуры компьютеров с наименьшими затратами. Плата за универсальность и переносимость — невозможность воспользоваться специфическими средствами, предоставляемыми конкретной вычислительной средой.</p>
    <p>Функции второй категории предоставляют возможность получить доступ к функциям ядра данной операционной системы, к внутренним структурам данных операционной системы, к регистрам используемых аппаратных устройств. Кроме того, ко второй категории относятся функции, которые добавлены в библиотеку, исходя из вкусовых привязанностей разработчиков конкретной системы программирования — как им видится удобный набор средств для разработки различных алгоритмов (сравните, например, функции setmem и memset). В современных системах программирования Си в рамках общей тенденции к стандартизации такие необоснованные расширения библиотек сокращаются, но в ранних системах программирования разнобой был крайне высок.</p>
    <p>К сожалению, наборы функций второй категории не согласованы даже для различных систем программирования в рамках одной операционной системы на одном типе архитектур компьютеров. Четко прослеживается это и на примере систем программирования ТС и MSC. Библиотечные функции, обеспечивающие интерфейс для вызова одной и той же функции операционной системы, могут иметь не только разные параметры, но и разные названия.</p>
    <p>Эти несогласованности объясняются, с одной стороны, коммерческими соображениями — стремлением удержать под контролем рынок программного обеспечения, чтобы пользователи, начавшие программировать с использованием одной системы программирования, покупали затем более новые программные продукты той же фирмы, а с другой стороны, поздним появлением стандарта на язык и на его библиотеку и независимости эволюции от версии к версии каждой системы программирования. При этом, надо отметить, происходит постепенное сближение различных систем программирования по мере того, как каждая из них заимствует наиболее ценные идеи у конкурентов. Так, различия между библиотеками более поздних версий систем программирования MSC и ТС отчасти сокращены по сравнению с первыми версиями.</p>
    <p>Данную часть книги следует рассматривать в первую очередь как справочник по стандартной библиотеке языка Си двух систем программирования — MSC и ТС — для компьютеров типа IBM PC. Она также будет полезна для разработчиков новых систем программирования Си, поскольку в ней проводится сравнение реализации различных библиотечных функций двух широко распространенных систем программирования.</p>
    <p>Из-за ограничений по объему в книгу не вошло описание специальных графических библиотек Си систем программирования MSC и ТС.</p>
    <p>Структура описания библиотеки такова: сначала дается краткое описание различных групп функций и вводятся основные понятия, используемые далее при описании библиотечных функций. Затем приводится полное описание всех функций в алфавитном порядке.</p>
    <p>Предпринята попытка дать детальное описание библиотечных функций, приводится описание используемых констант, как они описываются (с помощью директивы препроцессора #define) во включаемых файлах.</p>
    <p>Авторы считают, что для эффективной разработки качественного программного обеспечения на языке Си программист должен представлять нижний уровень реализации языка и его стандартной библиотеки. Поэтому иногда дается описание деталей (в частности, связанных с использованием системных вызовов ОС и имен типов, введенных с помощью конструкции typedef), которые часто сознательно замалчиваются в документации по библиотекам.</p>
    <p>По нашему мнению, пользователь должен обладать полной информацией, осознавая при этом, с какими проблемами он столкнется при переносе программ в новую версию системы программирования, в новую операционную систему или на компьютер другой архитектуры.</p>
    <p>Обозначение ANSI, используемое в полном описании библиотеки, указывает, что отмеченная библиотечная функция включена в стандарт языка Си.</p>
   </section>
  </section>
  <section>
   <title>
    <p><strong>КРАТКОЕ ОПИСАНИЕ БИБЛИОТЕКИ</strong></p>
   </title>
   <section>
    <p>Ниже приводится краткое описание основных групп функций для быстрой ориентации в библиотеке. При этом вводятся основные понятия, используемые при описании библиотечных функций (в частности, связанные с организацией ввода/вывода). Также указывается, в каком стандартном включаемом (по директиве препроцессора #include) файле содержится описание прототипа функции, относящихся к ней структур данных и констант.</p>
   </section>
   <section>
    <title>
     <p><strong>Работа с областями памяти и строками</strong></p>
    </title>
    <p>В стандартной библиотеке есть специальная группа Функций для обработки областей памяти, которые рассматриваются как последовательности байтов.</p>
    <p>Если размер области, с которой необходимо работать, задается явно, будем называть такую область буфером.</p>
    <p>Другое используемое понятие — строка. Отличие строки от буфера в том, что ее размер задается не явно, а определяется первым встретившимся при просмотре строки слева направо нулевым байтом (имеющим значение '\0'), причем считается, что этот нулевой байт также принадлежит строке.</p>
    <p>Для копирования буферов, для присваивания каждому байту в пределах указанного буфера заданного значения и для сравнения содержимого двух буферов предназначены следующие функции:</p>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">memccpy</td>
      <td align="left">копирует символы из одного буфера в другой до тех пор, пока не будет скопирован заданный символ или не будет скопировано определенное число символов</td>
     </tr>
     <tr>
      <td align="left">memchr</td>
      <td align="left">возвращает указатель на первое вхождение заданного символа в буфере</td>
     </tr>
     <tr>
      <td align="left">memcmp</td>
      <td align="left">сравнивает указанное число символов из двух буферов</td>
     </tr>
     <tr>
      <td align="left">memlcmp</td>
      <td align="left">сравнивает указанное число символов двух буферов, считая строчные и прописные буквы эквивалентными</td>
     </tr>
     <tr>
      <td align="left">memcpy</td>
      <td align="left">копирует указанное количество символов из одного буфера в другой</td>
     </tr>
     <tr>
      <td align="left">memset</td>
      <td align="left">инициализирует заданным значением указанное количество байтов в буфере</td>
     </tr>
     <tr>
      <td align="left">movedata</td>
      <td align="left">копирует определенное количество символов из одного буфера в другой, даже когда буфера находятся в разных сегментах</td>
     </tr>
    </table>
    <empty-line/>
    <p>Прототипы перечисленных функций содержатся в файле memory.h (MSC) и в файлах mem.h и string.h (ТС).</p>
    <p>Система программирования ТС предоставляет дополнительно следующие функции для работы с буферами:</p>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">memove</td>
      <td align="left">копирует указанное количество символов из одного буфера в другой</td>
     </tr>
     <tr>
      <td align="left">movmem</td>
      <td align="left">копирует указанное количество символов из одного буфера в другой</td>
     </tr>
     <tr>
      <td align="left">setmem</td>
      <td align="left">инициализирует заданным значением указанное количество байтов в буфере</td>
     </tr>
    </table>
    <empty-line/>
    <p>Прототипы функций memmove и movmem содержатся в файлах mem.h и string.h. Прототип функции setmem содержится в файле mem.h.</p>
    <p>Для работы со строками существуют следующие библиотечные функции (ТС &amp; MSC):</p>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">strcat</td>
      <td align="left">катенация (склеивание) строк</td>
     </tr>
     <tr>
      <td align="left">strchr</td>
      <td align="left">найти первое вхождение заданного символа в строке</td>
     </tr>
     <tr>
      <td align="left">strcmp</td>
      <td align="left">сравнить две строки</td>
     </tr>
     <tr>
      <td align="left">strcpy</td>
      <td align="left">копировать одну строку в другую</td>
     </tr>
     <tr>
      <td align="left">strcspn</td>
      <td align="left">найти первое вхождение символа из заданного набора символов в строке</td>
     </tr>
     <tr>
      <td align="left">strdup</td>
      <td align="left">дублирование строки</td>
     </tr>
     <tr>
      <td align="left">strerror</td>
      <td align="left">сформировать в строке сообщение об ошибке, состоящее из двух частей: системной диагностики и необязательного добавочного пользовательского сообщения</td>
     </tr>
     <tr>
      <td align="left">stricmp</td>
      <td align="left">сравнить две строки, считая символы нижнего и верхнего регистров эквивалентными</td>
     </tr>
     <tr>
      <td align="left">strlen</td>
      <td align="left">вычислить длину строки</td>
     </tr>
     <tr>
      <td align="left">strlwr</td>
      <td align="left">преобразовать строку в нижний регистр (строчные буквы)</td>
     </tr>
     <tr>
      <td align="left">strncat</td>
      <td align="left">добавить n символов в строку</td>
     </tr>
     <tr>
      <td align="left">strncmp</td>
      <td align="left">сравнение n символов в двух строках</td>
     </tr>
     <tr>
      <td align="left">strncpy</td>
      <td align="left">скопировать n символов из одной строки в другую</td>
     </tr>
     <tr>
      <td align="left">strnicmp</td>
      <td align="left">сравнение n символов двух строк</td>
     </tr>
     <tr>
      <td align="left">strnset</td>
      <td align="left">установить n символов в строке в заданное значение</td>
     </tr>
     <tr>
      <td align="left">strpbrk</td>
      <td align="left">найти первое вхождение любого символа из заданного набора в строке</td>
     </tr>
     <tr>
      <td align="left">strrchr</td>
      <td align="left">найти последнее вхождение заданного символа в строке</td>
     </tr>
     <tr>
      <td align="left">strrev</td>
      <td align="left">инвертировать (перевернуть) строку</td>
     </tr>
     <tr>
      <td align="left">strset</td>
      <td align="left">установить все символы строки в заданное значение</td>
     </tr>
     <tr>
      <td align="left">strspn</td>
      <td align="left">найти первую подстроку из заданного набора символов в строке</td>
     </tr>
     <tr>
      <td align="left">strstr</td>
      <td align="left">найти первую подстановку одной строки (более короткой) в другой</td>
     </tr>
     <tr>
      <td align="left">strtok</td>
      <td align="left">найти следующую точку в строке</td>
     </tr>
     <tr>
      <td align="left">strupr</td>
      <td align="left">преобразовать строку в верхний регистр (заглавные буквы)</td>
     </tr>
    </table>
    <empty-line/>
    <p>Кроме того, система программирования MSC предоставляет дополнительно функцию strcmpi (идентична функции stricmp), а система программирования ТС предоставляет функцию stpcpy (идентична функции strcpy, но возвращает в точку вызова другое значение).</p>
    <p>Прототипы всех функций работы со строками содержатся в файле string.h. Все функции работают со строками, завершающимися нулевым байтом ('\0'). Для работы с массивом символов, не имеющим в конце нулевого байта, вы можете использовать функции преобразования буферов, описанные выше.</p>
   </section>
   <section>
    <title>
     <p><strong>Определение класса символов и преобразование символов</strong></p>
    </title>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">isalnum</td>
      <td align="left">проверка на букву или цифру</td>
     </tr>
     <tr>
      <td align="left">isalpha</td>
      <td align="left">проверка на букву</td>
     </tr>
     <tr>
      <td align="left">isascii</td>
      <td align="left">проверка на символ из набора кодировки ASCII</td>
     </tr>
     <tr>
      <td align="left">iscntrl</td>
      <td align="left">проверка на управляющий символ</td>
     </tr>
     <tr>
      <td align="left">isdigit</td>
      <td align="left">проверка на десятичную цифру</td>
     </tr>
     <tr>
      <td align="left">isgraph</td>
      <td align="left">проверка на печатный символ, исключая пробел</td>
     </tr>
     <tr>
      <td align="left">islower</td>
      <td align="left">проверка на малую букву</td>
     </tr>
     <tr>
      <td align="left">isprint</td>
      <td align="left">проверка на печатный символ</td>
     </tr>
     <tr>
      <td align="left">ispunct</td>
      <td align="left">проверка на знак пунктуации</td>
     </tr>
     <tr>
      <td align="left">isspace</td>
      <td align="left">проверка на пробельный символ</td>
     </tr>
     <tr>
      <td align="left">isupper</td>
      <td align="left">проверка на заглавную букву</td>
     </tr>
     <tr>
      <td align="left">isxdigit</td>
      <td align="left">проверка на шестнадцатеричную цифру</td>
     </tr>
     <tr>
      <td align="left">toascii</td>
      <td align="left">преобразование символа в код ASCII</td>
     </tr>
     <tr>
      <td align="left">tolower</td>
      <td align="left">проверка и преобразование в малую букву, если заглавная буква</td>
     </tr>
     <tr>
      <td align="left">toupper</td>
      <td align="left">проверка и преобразование малой буквы в заглавную</td>
     </tr>
     <tr>
      <td align="left">_tolower</td>
      <td align="left">преобразование буквы в малую (без проверки)</td>
     </tr>
     <tr>
      <td align="left">_toupper</td>
      <td align="left">преобразование буквы в заглавную (без проверки)</td>
     </tr>
    </table>
    <empty-line/>
    <p>Все эти функции реализованы как макроопределения, заданные в файле ctype.h</p>
   </section>
   <section>
    <title>
     <p><strong>Форматные преобразования данных</strong></p>
    </title>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">atof</td>
      <td align="left">преобразование строки, в представляемое ей число типа float</td>
     </tr>
     <tr>
      <td align="left">atoi</td>
      <td align="left">преобразование строки в число типа int (целое)</td>
     </tr>
     <tr>
      <td align="left">atol</td>
      <td align="left">преобразование строки в число типа long (длинное целое)</td>
     </tr>
     <tr>
      <td align="left">ecvt</td>
      <td align="left">преобразование числа типа double в строку</td>
     </tr>
     <tr>
      <td align="left">fcvt</td>
      <td align="left">преобразование числа типа double в строку</td>
     </tr>
     <tr>
      <td align="left">gcvt</td>
      <td align="left">преобразование числа типа double в строку</td>
     </tr>
     <tr>
      <td align="left">itoa</td>
      <td align="left">преобразование числа типа int в строку</td>
     </tr>
     <tr>
      <td align="left">ltoa</td>
      <td align="left">преобразование числа типа long в строку</td>
     </tr>
     <tr>
      <td align="left">ultoa</td>
      <td align="left">преобразование числа типа unsigned long в строку</td>
     </tr>
    </table>
    <empty-line/>
    <p>Система программирования ТС предоставляет также следующие функции:</p>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">strtod</td>
      <td align="left">преобразование строки в число типа double (покрывает возможности atof)</td>
     </tr>
     <tr>
      <td align="left">strtol</td>
      <td align="left">преобразование строки в число типа long (покрывает возможности atol)</td>
     </tr>
     <tr>
      <td align="left">strtoul</td>
      <td align="left">преобразование строки в число типа unsigned long</td>
     </tr>
    </table>
    <empty-line/>
    <p>Прототипы всех перечисленных функций содержатся в файле stdlib.h. Прототип функции atof содержится, кроме того, в файле math.h.</p>
   </section>
   <section>
    <title>
     <p><strong>Работа с каталогами файловой системы</strong></p>
    </title>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">chdir</td>
      <td align="left">изменение текущего рабочего каталога</td>
     </tr>
     <tr>
      <td align="left">getcwd</td>
      <td align="left">получить имя текущего рабочего каталога</td>
     </tr>
     <tr>
      <td align="left">mkdir</td>
      <td align="left">создать новый каталог</td>
     </tr>
     <tr>
      <td align="left">rmdir</td>
      <td align="left">удаление каталога</td>
     </tr>
    </table>
    <empty-line/>
    <p>Система программирования ТС предоставляет, кроме перечисленных, следующие функции:</p>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">findfirst</td>
      <td align="left">начало поиска файла по шаблону имени</td>
     </tr>
     <tr>
      <td align="left">findnext</td>
      <td align="left">продолжение поиска файла по шаблону имени</td>
     </tr>
     <tr>
      <td align="left">fnmerge</td>
      <td align="left">создание имени файла из отдельных компонент</td>
     </tr>
     <tr>
      <td align="left">fnsplit</td>
      <td align="left">разбиение имени файла на отдельные компоненты</td>
     </tr>
     <tr>
      <td align="left">getcurdir</td>
      <td align="left">узнать текущий каталог</td>
     </tr>
     <tr>
      <td align="left">getdisk</td>
      <td align="left">узнать текущее устройство</td>
     </tr>
     <tr>
      <td align="left">searchpath</td>
      <td align="left">поиск файла в различных каталогах</td>
     </tr>
     <tr>
      <td align="left">setdisk</td>
      <td align="left">задать текущее устройство</td>
     </tr>
    </table>
    <empty-line/>
    <p>В системе программирования MSC прототипы функций содержатся в файле direct.h, в системе программирования ТС прототипы функций содержатся в файле dir.h.</p>
   </section>
   <section>
    <title>
     <p><strong>Операции над файлами</strong></p>
    </title>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">access</td>
      <td align="left">определение прав доступа к файлу</td>
     </tr>
     <tr>
      <td align="left">chmod</td>
      <td align="left">изменение прав доступа к файлу</td>
     </tr>
     <tr>
      <td align="left">filelength</td>
      <td align="left">измерение длины файла</td>
     </tr>
     <tr>
      <td align="left">isatty</td>
      <td align="left">проверка, является ли устройство символьным</td>
     </tr>
     <tr>
      <td align="left">mktemp</td>
      <td align="left">генерация уникального имени файла</td>
     </tr>
     <tr>
      <td align="left">remove</td>
      <td align="left">уничтожение файла</td>
     </tr>
     <tr>
      <td align="left">rename</td>
      <td align="left">переименование файла</td>
     </tr>
     <tr>
      <td align="left">setmode</td>
      <td align="left">установить новые значения для параметров файла</td>
     </tr>
    </table>
    <empty-line/>
    <p>Система программирования MSC предоставляет дополнительно следующие функции:</p>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">chsize</td>
      <td align="left">изменение размера файла</td>
     </tr>
     <tr>
      <td align="left">fstat</td>
      <td align="left">получение информации о файле</td>
     </tr>
     <tr>
      <td align="left">locking</td>
      <td align="left">запирает область в файле (работает с версией ОС MS-DOS 3.0 и выше), временно запрещая к ней доступ со стороны других процессов, или отпирает эту область</td>
     </tr>
     <tr>
      <td align="left">slat</td>
      <td align="left">получение информации о файле</td>
     </tr>
     <tr>
      <td align="left">umask</td>
      <td align="left">установка маски для выбора режима работы по умолчанию</td>
     </tr>
     <tr>
      <td align="left">unlink</td>
      <td align="left">удаление файла</td>
     </tr>
    </table>
    <empty-line/>
    <p>Система программирования ТС предоставляет дополнительно функции:</p>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">chmod</td>
      <td align="left">изменение прав доступа к файлу</td>
     </tr>
     <tr>
      <td align="left">lock</td>
      <td align="left">запирает область файла для доступа со стороны других процессов (работает с версией MS-DOS 3.0 и выше)</td>
     </tr>
     <tr>
      <td align="left">unlock</td>
      <td align="left">отпирает область (работает с версией MS-DOS 3.0 и выше)</td>
     </tr>
    </table>
    <empty-line/>
    <p>Прототипы функций, за исключением функций <strong>fstat</strong> и <strong>stat</strong>, содержатся в файле <strong>io.h</strong>; прототипы функций <strong>fstat</strong> и <strong>stat</strong> описаны в файле <strong>sys\stat.h</strong>.</p>
    <p>Функции <strong>access</strong>, <strong>chmod</strong>, <strong>rename</strong>, <strong>stat</strong> и <strong>unlink</strong> оперируют с файлами, которые задаются через имя пути (<strong>pathname</strong>) -или через имя файла.</p>
    <p>Функции <strong>chsize</strong>, <strong>filelength</strong>, <strong>isatty</strong>, <strong>locking</strong>, <strong>setmode</strong>, <strong>fstat</strong> работают с уже открытыми файлами, которые определяются дескрипторами (<strong>handle</strong>) (смотри далее описание функций ввода/вывода нижнего уровня).</p>
   </section>
   <section>
    <title>
     <p><strong>Ввод и вывод</strong></p>
    </title>
    <section>
     <p>Функции ввода и вывода в стандартной библиотеке Си позволяют читать данные из файлов или получать их с устройств ввода (например, с клавиатуры) и записывать данные в файлы, или выводить их на различные устройства (например, на принтер).</p>
     <p>Функции ввода/вывода делятся на три класса:</p>
     <p>1) Ввод/вывод верхнего уровня (с использованием понятия "поток").</p>
     <p>2) Ввод/вывод для консольного терминала путем непосредственного обращения к нему.</p>
     <p>3) Ввод/вывод нижнего уровня (с использованием понятия "дескриптор").</p>
     <p>В библиотеке есть также функции для работы с последовательным портом (СОМ), они отнесены условно ко второй группе.</p>
     <p>функции ввода/вывода верхнего уровня обеспечивают буферизацию работы с файлами. Это означает, что, когда производится чтение информации из файла или запись информации в файл, обмен информацией осуществляется не между программой и указанным файлом, а между программой и промежуточным буфером, расположенным в оперативной памяти.</p>
     <p>Если производится операция записи в файл, то информация из буфера записывается в файл при заполнении буфера или при закрытии файла (или при выполнении каких-то других условий, смотри ниже). Если информация считывается из файла, то она на самом деле берется из буфера, а в буфер информация считывается из файла при открытии файла и впоследствии каждый раз при исчерпании (опустошении) буфера. Буферизация ввода/вывода выполняется автоматически, она позволяет ускорить выполнение программы за счет уменьшения количества обращений к сравнительно медленно работающим внешним устройствам.</p>
     <p>Для пользователя файл, открытый на верхнем уровне, представляется как последовательность считываемых или записываемых байтов. Чтобы отразить эту особенность организации ввода/вывода, предложено понятие "поток" (соответствует английскому слову <strong>stream</strong>). Когда файл открывается, с ним связывается поток, выводимая информация записывается "в поток", считываемая информация берется "из потока".</p>
     <p>Когда поток открывается для ввода/вывода, он связывается со структурой типа FILE (имя типа FILE определяется с помощью конструкции <strong>typedef</strong> в файле <strong>stdio.h</strong>). Структура содержит разнообразную информацию о файле. При открытии файла с помощью функции <strong>fopen</strong> возвращается указатель на структуру типа FILE. Этот указатель (указатель потока) используется для последующих операций с файлом, пользователь не обязан вникать в способ организации потока, он только должен сохранить полученный указатель и передавать его значение всем библиотечным функциям, используемым для ввода/вывода через этот поток.</p>
     <p>Функции в/в верхнего уровня дают возможность для буферизованного форматированного и неформатированного ввода/вывода.</p>
     <p>Функции в/в верхнего уровня относятся к числу функций, одинаково реализуемых в различных ОС и на разных компьютерах, с их помощью пользователь имеет возможность писать переносимые программы.</p>
     <p>Функции ввода/вывода для консоли и порта распространяют возможности функций ввода/вывода верхнего уровня на этот класс устройств, добавляя новые возможности.</p>
     <p>Они позволяют читать или записывать на консоль (терминал) или в порт ввода/вывода (например, порт принтера). Функции в/в с портом читают или записывают данные побайтно. Некоторые дополнительные режимы устанавливаются для в/в с консоли (например: ввод с эхо-печатью символов и без эхо-печати).</p>
     <p>Функции в/в для консоли и порта являются уникальными для компьютеров типа IBM/PC.</p>
     <p>Функции в/в низкого уровня не выполняют буферизацию и форматирование данных; они позволяют непосредственно пользоваться средствами ввода/вывода операционной системы.</p>
     <p>При низкоуровневом открытии файла (при помощи функции <strong>open</strong>) с ним связывается дескриптор (<strong>handle</strong>). Дескриптор является целым значением, характеризующим размещение информации об открытом файле во внутренних таблицах системы. Дескриптор используется при последующих операциях с файлом.</p>
     <p>Функции в/в нижнего уровня из стандартной библиотеки целесообразно использовать при разработке своей собственной подсистемы ввода/вывода.</p>
     <p>Функции в/в нижнего уровня переносимы в рамках некоторых систем программирования Си, в частности относящихся к ОС UNIX.</p>
    </section>
    <section>
     <title>
      <p><strong>Функции вода/вывода высокого уровня</strong></p>
     </title>
     <section>
      <table>
       <tr>
        <td align="center">Функция</td>
        <td align="center">Краткое описание</td>
       </tr>
       <tr>
        <td align="left">clearerr</td>
        <td align="left">очистка флажка ошибки для потока</td>
       </tr>
       <tr>
        <td align="left">fclose</td>
        <td align="left">закрытие потока</td>
       </tr>
       <tr>
        <td align="left">fcloseall</td>
        <td align="left">закрытие всех открытых (на верхнем уровне) файлов</td>
       </tr>
       <tr>
        <td align="left">fdopen</td>
        <td align="left">создание потока для файла, ранее открытого на нижнем уровне, используя дескриптор</td>
       </tr>
       <tr>
        <td align="left">feof</td>
        <td align="left">проверка на конец потока</td>
       </tr>
       <tr>
        <td align="left">ferror</td>
        <td align="left">проверка флажка ошибок потока</td>
       </tr>
       <tr>
        <td align="left">flush</td>
        <td align="left">сброс буфера потока на связанное с ним внешнее устройство</td>
       </tr>
       <tr>
        <td align="left">fgetc</td>
        <td align="left">чтение символа из потока</td>
       </tr>
       <tr>
        <td align="left">fileno</td>
        <td align="left">получение дескриптора файла, связанного с потоком</td>
       </tr>
       <tr>
        <td align="left">fgetchar</td>
        <td align="left">чтение символа из стандартного потока ввода stdin</td>
       </tr>
       <tr>
        <td align="left">fgets</td>
        <td align="left">чтение строки из потока</td>
       </tr>
       <tr>
        <td align="left">flushall</td>
        <td align="left">сброс буферов всех потоков</td>
       </tr>
       <tr>
        <td align="left">fopen</td>
        <td align="left">открытие потока (открыть файл и связать его с потоком)</td>
       </tr>
       <tr>
        <td align="left">fprint</td>
        <td align="left">запись данных в поток по формату</td>
       </tr>
       <tr>
        <td align="left">fputc</td>
        <td align="left">запись символа в поток</td>
       </tr>
       <tr>
        <td align="left">fputchar</td>
        <td align="left">запись символа в стандартный поток вывода stdout</td>
       </tr>
       <tr>
        <td align="left">fputs</td>
        <td align="left">запись строки в поток</td>
       </tr>
       <tr>
        <td align="left">fread</td>
        <td align="left">неформатированное чтение данных из потока</td>
       </tr>
       <tr>
        <td align="left">freopen</td>
        <td align="left">повторное открытие потока в новом режиме</td>
       </tr>
       <tr>
        <td align="left">fscanf</td>
        <td align="left">чтение из потока по формату</td>
       </tr>
       <tr>
        <td align="left">fseek</td>
        <td align="left">перемещение указателя файла в заданную позицию</td>
       </tr>
       <tr>
        <td align="left">ftell</td>
        <td align="left">получение текущей позиции указателя файла</td>
       </tr>
       <tr>
        <td align="left">fwrite</td>
        <td align="left">неформатированная запись данных в поток</td>
       </tr>
       <tr>
        <td align="left">getc</td>
        <td align="left">чтение символа из потока (реализуется через макроопределение)</td>
       </tr>
       <tr>
        <td align="left">getchar</td>
        <td align="left">чтение символа из потока stdin (версия макро)</td>
       </tr>
       <tr>
        <td align="left">gets</td>
        <td align="left">чтение строки из потока stdin</td>
       </tr>
       <tr>
        <td align="left">getw</td>
        <td align="left">чтение двух байтов (по размеру int) в формате слова из потока</td>
       </tr>
       <tr>
        <td align="left">printf</td>
        <td align="left">запись данных в поток stdout по формату</td>
       </tr>
       <tr>
        <td align="left">putc</td>
        <td align="left">запись символа в поток (версия макро)</td>
       </tr>
       <tr>
        <td align="left">putchar</td>
        <td align="left">запись символа в поток stdout (версия макро)</td>
       </tr>
       <tr>
        <td align="left">puts</td>
        <td align="left">запись строки в поток</td>
       </tr>
       <tr>
        <td align="left">putw</td>
        <td align="left">запись двух байтов (по размеру int) в формате слова в поток</td>
       </tr>
       <tr>
        <td align="left">rewind</td>
        <td align="left">установка указателя по файлу на начало файла</td>
       </tr>
       <tr>
        <td align="left">scanf</td>
        <td align="left">чтение данных из потока stdin по формату</td>
       </tr>
       <tr>
        <td align="left">setbuf</td>
        <td align="left">управление буферизацией потока</td>
       </tr>
       <tr>
        <td align="left">setvbuf</td>
        <td align="left">управление буферизацией потока и размером буфера</td>
       </tr>
       <tr>
        <td align="left">sprintf</td>
        <td align="left">запись данных в строку по формату</td>
       </tr>
       <tr>
        <td align="left">sscanf</td>
        <td align="left">чтение данных из строки по формату</td>
       </tr>
       <tr>
        <td align="left">tempnam</td>
        <td align="left">сгенерировать имя временного файла в заданном каталоге</td>
       </tr>
       <tr>
        <td align="left">tmpfile</td>
        <td align="left">создать временный файл</td>
       </tr>
       <tr>
        <td align="left">ungetc</td>
        <td align="left">вернуть символ в поток</td>
       </tr>
       <tr>
        <td align="left">vfprintf</td>
        <td align="left">запись данных в поток по формату</td>
       </tr>
       <tr>
        <td align="left">vsprintf</td>
        <td align="left">запись данных в строку по формату</td>
       </tr>
      </table>
      <empty-line/>
      <p>Система программирования MSC дополнительно предоставляет следующие функции:</p>
      <table>
       <tr>
        <td align="center">Функция</td>
        <td align="center">Краткое описание</td>
       </tr>
       <tr>
        <td align="left">rmtemp</td>
        <td align="left">удаление временных файлов, созданных посредством функции tmpfile</td>
       </tr>
       <tr>
        <td align="left">tmpnam</td>
        <td align="left">сгенерировать имя временного файла</td>
       </tr>
       <tr>
        <td align="left">vprintf</td>
        <td align="left">запись данных в поток stdout по формату</td>
       </tr>
      </table>
      <empty-line/>
      <p>Система программирования ТС дополнительно предоставляет следующие функции:</p>
      <table>
       <tr>
        <td align="center">Функция</td>
        <td align="center">Краткое описание</td>
       </tr>
       <tr>
        <td align="left">vfscanf</td>
        <td align="left">эти функции подобны функциям fscanf, scanf и sscanf, но принимают как параметр указатель на список аргументов — адресов переменных, которым присваиваются вводимые значения</td>
       </tr>
       <tr>
        <td align="left">vscanf</td>
        <td> </td>
       </tr>
       <tr>
        <td align="left">vsscanf</td>
        <td> </td>
       </tr>
      </table>
      <empty-line/>
      <p>Прототипы всех функций ввода/вывода верхнего уровня содержатся в файле stdio.h.</p>
      <p>Некоторые константы, определенные в stdio.h, могут быть полезны в программе:</p>
      <table>
       <tr>
        <td align="left">константа EOF</td>
        <td align="left">код, возвращаемый как признак конца файла</td>
       </tr>
       <tr>
        <td align="left">константа NULL</td>
        <td align="left">значение указателя, который не содержит адрес никакого реально размещенного в оперативной памяти объекта</td>
       </tr>
       <tr>
        <td align="left">константа BUFSIZ</td>
        <td align="left">определяет размер буфера потока в байтах</td>
       </tr>
       <tr>
        <td align="left">имя типа FILE</td>
        <td align="left">структура, которая содержит информацию о потоке</td>
       </tr>
      </table>
     </section>
     <section>
      <title>
       <p><strong>Высокоуровневое открытие файлов</strong></p>
      </title>
      <p>Функции открытия потока возвращают указатель на тип FILE (этот указатель называют также указателем потока), этот указатель используется при дальнейших обращениях к потоку.</p>
     </section>
     <section>
      <title>
       <p><strong>Стандартные потоки: stdin, stdout, stdeir, stdaux, stdprn.</strong></p>
      </title>
      <p>Когда программа начинает выполняться, автоматически открываются пять потоков. Эти потоки — стандартный ввод (<strong>stdin</strong>), стандартный вывод (<strong>stdout</strong>), стандартный вывод для сообщений об ошибках (<strong>stderr</strong>), стандартный последовательный порт (<strong>stdaux</strong>) и стандартное устройство печати (<strong>stdprn</strong>).</p>
      <p>По умолчанию стандартный ввод/вывод и стандартный вывод сообщений об ошибках связывается с консольным терминалом.</p>
      <p>Назначения по умолчанию для стандартного порта и стандартного устройства печати зависят от конфигурации аппаратуры компьютера; эти потоки обычно связываются с последовательным портом и принтером, но могут быть и не установлены в отдельных системах.</p>
      <p>Следующие указатели на структуру типа. FILE определяются в файле <strong>stdio.h</strong> и могут использоваться в любом месте как указатели потоков:</p>
      <p>extern FILE * stdin; — стандартный ввод</p>
      <p>extern FILE * stdout; — стандартный вывод</p>
      <p>extern FILE * stderr; — стандартный вывод сообщений об ошибках</p>
      <p>extern FILE * sidaux; — стандартный порт</p>
      <p>extern FILE * stdprn; — стандартное устройство печати</p>
      <p>При запуске оттранслированной программы на выполнение можно использовать символы перенаправления в/в из командного языка MS-DOS ( &lt; , &gt; или &gt;&gt; ) для переопределения стандартного ввода и вывода программы.</p>
      <p>Можно переопределить <strong>stdin</strong>, <strong>stdout</strong>, <strong>stderr</strong>, <strong>stdaux</strong> или <strong>stdprn</strong> так, что они будут относиться к файлу на диске или устройству. Такие возможности предоставляет функция <strong>freopen</strong>.</p>
     </section>
     <section>
      <title>
       <p><strong>Управление буферизацией потоков</strong></p>
      </title>
      <p>Открытые файлы, для которых осуществляется высокоуровневый ввод/вывод, буферизуются по умолчанию, за исключением потоков <strong>stdin</strong>, <strong>stdout</strong>, <strong>stderr</strong>, <strong>stdaux</strong>, <strong>stdprn</strong>.</p>
      <p>Потоки <strong>stderr</strong> и <strong>stdaux</strong> — не буферизованы. Если к ним применяется функция <strong>printf</strong> или <strong>scanf</strong>, создается временный буфер. Для обоих потоков может задаваться буферизация с помощью функций <strong>setbuf</strong> или <strong>setvbuf</strong>.</p>
      <p>Буферизация для потоков <strong>stdin</strong>, <strong>stdout</strong>, <strong>stdprn</strong> выполняется следующим образом: буфер сбрасывается при его заполнении или когда вызванная библиотечная функция ввода/вывода завершает работу.</p>
      <p>Использованием функции <strong>setbuf</strong> или <strong>setvbuf</strong> можно сделать поток небуферизованным или связать буфер с небуферизованным до этого потоком. Буфера, размещенные в системе, недоступны пользователю, кроме буферов, полученных с помощью <strong>setbuf</strong> или <strong>setvbuf</strong>.</p>
      <p>Буфера должны иметь постоянный размер, равный константе BUFSIZ в <strong>stdio.h</strong>.</p>
      <p>Если используется <strong>setvbuf</strong>, размер буфера устанавливает пользователь. Буфера автоматически сбрасываются при их наполнении, или когда связанный с буфером файл закрывается, или когда происходит нормальное завершение программы.</p>
      <p>Можно сбросить буфера в произвольный момент времени, используя функции <strong>fflush</strong> и <strong>flushall</strong>. Функция <strong>fflush</strong> сбрасывает буфер одного заданного потока, а функция <strong>flushall</strong> сбрасывает буфера всех потоков, которые открыты и буферизованы в данный момент.</p>
     </section>
     <section>
      <title>
       <p><strong>Закрытие потоков</strong></p>
      </title>
      <p>Функции <strong>fclose</strong> и <strong>fcloseall</strong> закрывают поток или потоки. Функция <strong>fclose</strong> закрывает один заданный поток, <strong>fcloseall</strong> — все потоки, кроме потоков <strong>stdin</strong>, <strong>stdout</strong>, <strong>stderr</strong>, <strong>stdaux</strong>, <strong>stdprn</strong>.</p>
      <p>Если программа не выполняет закрытия потоков, потоки автоматически закрываются, когда программа завершается неаварийно. Однако следует закрывать потоки по завершении работы с ними, так как число потоков, которые могут быть открыты одновременно, ограничено.</p>
     </section>
     <section>
      <title>
       <p><strong>Чтение и запись данных</strong></p>
      </title>
      <p>Функции ввода/вывода верхнего уровня позволяют передавать данные различными способами.</p>
      <p>Операции чтения и записи в потоках начинаются с текущей. позиции в потоке, идентифицируемой как "file pointer"</p>
      <p>(указатель файла) для потока. Указатель файла изменяется после выполнения операции чтения или записи.</p>
      <p>Например, если Вы читаете один символ из потока, указатель файла продвигается на 1 байт, так что следующая операция начнется с первого несчитанного символа. Если поток открыт для добавления, указатель файла автоматически позиционируется на конец файла перед каждой операцией записи.</p>
      <p>Поток, связанный с таким устройством, как консольный терминал, не имеет указателя файла. Программы, которые перемещают указатель файла (с помощью функции <strong>fseek</strong>), будут иметь в этом случае неопределенный результат.</p>
     </section>
     <section>
      <title>
       <p><strong>Обнаружение ошибок</strong></p>
      </title>
      <p>Когда происходит ошибка в операции с потоком, устанавливается в ненулевое значение флажок ошибки для потока. Можно использовать макроопределение <strong>ferror</strong>, чтобы определить, произошла ли ошибка.</p>
      <p>После каждой ошибки флажок ошибки остается установленным до тех пор, пока не будет сброшен вызовом функции <strong>clearerr</strong> или <strong>rewind</strong>.</p>
     </section>
    </section>
    <section>
     <title>
      <p><strong>Функции вода/вывода нижнего уровня</strong></p>
     </title>
     <section>
      <table>
       <tr>
        <td align="center">Функция</td>
        <td align="center">Краткое описание</td>
       </tr>
       <tr>
        <td align="left">close</td>
        <td align="left">закрыть файл</td>
       </tr>
       <tr>
        <td align="left">creat</td>
        <td align="left">создать файл</td>
       </tr>
       <tr>
        <td align="left">dup</td>
        <td align="left">создать второй дескриптор (handle) для файла</td>
       </tr>
       <tr>
        <td align="left">dup2</td>
        <td align="left">переназначить дескриптор (handle) для файла</td>
       </tr>
       <tr>
        <td align="left">eof</td>
        <td align="left">проверка на конец файла</td>
       </tr>
       <tr>
        <td align="left">lseek</td>
        <td align="left">позиционирование указателя файла в заданное место</td>
       </tr>
       <tr>
        <td align="left">open</td>
        <td align="left">открыть файл</td>
       </tr>
       <tr>
        <td align="left">read</td>
        <td align="left">читать данные из файла</td>
       </tr>
       <tr>
        <td align="left">sopen</td>
        <td align="left">открыть файл в режиме разделения</td>
       </tr>
       <tr>
        <td align="left">tell</td>
        <td align="left">получить текущую позицию указателя файла</td>
       </tr>
       <tr>
        <td align="left">write</td>
        <td align="left">записать данные в файл</td>
       </tr>
      </table>
      <empty-line/>
      <p>Система программирования ТС предоставляет дополнительно следующие функции:</p>
      <table>
       <tr>
        <td align="center">Функция</td>
        <td align="center">Краткое описание</td>
       </tr>
       <tr>
        <td align="left">_creat</td>
        <td align="left">создать файл</td>
       </tr>
       <tr>
        <td align="left">creatnew</td>
        <td align="left">создать новый файл</td>
       </tr>
       <tr>
        <td align="left">creattemp</td>
        <td align="left">создать новый файл</td>
       </tr>
       <tr>
        <td align="left">_ореn</td>
        <td align="left">открыть файл</td>
       </tr>
       <tr>
        <td align="left">_read</td>
        <td align="left">чтение данных из файла</td>
       </tr>
       <tr>
        <td align="left">_write</td>
        <td align="left">запись данных в файл</td>
       </tr>
      </table>
      <empty-line/>
      <p>Нижний уровень ввода и вывода не работает с буферизованными или форматированными данными. Для работы с файлами, открытыми посредством функции нижнего уровня, используется дескриптор файла (<strong>handle</strong>).</p>
      <p>Для открытия файлов используются функции <strong>open</strong> и _<strong>ореn</strong>; В ОС MS/DOC версии 3.0 или выше может быть использована функция <strong>sopen</strong> для открытия файлов с атрибутами режима разделения файла.</p>
      <p>функции нижнего уровня, в отличие от функций верхнего уровня, не требуют включения файла <strong>stdio.h</strong>. Тем не менее нескольких общих констант, определенных в файле <strong>stdio.h</strong>, как, например, признак конца файла EOF, могут оказаться полезными. Если программа использует эти константы, необходимо включить файл <strong>stdio.h</strong>.</p>
      <p>Прототипы функций нижнего уровня содержатся в файле <strong>io.h</strong>.</p>
     </section>
     <section>
      <title>
       <p><strong>Открытие файлов</strong></p>
      </title>
      <p>Файл должен быть открыт функциями <strong>open</strong>, <strong>sopen</strong> или <strong>creat</strong> до выполнения первой операции ввода или вывода с использованием функций нижнего уровня для этого файла.</p>
      <p>Файл может быть открыт для чтения, записи, или для чтения и записи, может быть открыт в текстовом или в двоичном режиме.</p>
      <p>Файл <strong>fcntl.h</strong> должен быть включен при открытии файла, так как содержит определения для флагов, используемых в функции <strong>open</strong>. В некоторых случаях также должны быть включены файлы <strong>sys\types.h</strong> и <strong>sys\stat.h</strong>.</p>
      <p>Перечисленные функции возвращают дескриптор файла, который используется при последующих операциях с файлом. При вызове одной из функций открытия файла необходимо возвращаемое функцией значение присвоить целочисленной переменной и потом использовать значение этой переменной, чтобы обращаться к открытому файлу.</p>
     </section>
     <section>
      <title>
       <p><strong>9.6.2.2. Переопределение дескрипторов (handle)</strong></p>
      </title>
      <p>Когда программа начинает выполняться, пять дескрипторов (<strong>handle</strong>), соответствующих стандартным вводу, выводу, выводу сообщений об ошибках, порту и устройству печати, уже назначены. Пользователь может использовать значения этих дескрипторов при вызове функций ввода/вывода нижнего уровня.</p>
      <p>Каждый из этих дескрипторов соответствует одному из стандартных потоков, значения этих дескрипторов таковы:</p>
      <table>
       <tr>
        <td align="center">поток</td>
        <td align="center">значение дескриптора</td>
       </tr>
       <tr>
        <td align="left">stdin</td>
        <td align="left">0</td>
       </tr>
       <tr>
        <td align="left">stdout</td>
        <td align="left">1</td>
       </tr>
       <tr>
        <td align="left">stderr</td>
        <td align="left">2</td>
       </tr>
       <tr>
        <td align="left">stdaux</td>
        <td align="left">3</td>
       </tr>
       <tr>
        <td align="left">stdprn</td>
        <td align="left">4</td>
       </tr>
      </table>
      <p>Можно использовать эти дескрипторы файлов в программе без предварительного открытия этих файлов. Они автоматически открываются при запуске программы.</p>
      <p>Так же, как с функциями для потоков, Вы можете использовать перенаправление, чтобы переопределить стандартный ввод и вывод.</p>
      <p>Функции <strong>dup</strong> и <strong>dup2</strong> позволяют назначать несколько <strong>handle</strong> для одного файла; эти функции обычно используются, чтобы связать дополнительные дескрипторы с уже используемыми файлами.</p>
     </section>
     <section>
      <title>
       <p><strong>Чтение и запись данных</strong></p>
      </title>
      <p>Функции <strong>read</strong> и <strong>write</strong>, как и функции ввода/вывода верхнего уровня, начинают выполнение очередной операции с текущей позиции в файле. Текущая позиция изменяется при каждой операции чтения или записи.</p>
      <p>Функция <strong>eof</strong> может быть использована для проверки на конец файла.</p>
      <p>Когда происходит ошибка, программы в/в нижнего уровня присваивают код ошибки переменной <strong>errno</strong>. Можно использовать функцию <strong>perror</strong> для печати информации об ошибках в/в. Можно позиционировать указатель файла на определенную позицию в файле, используя функцию <strong>lseek</strong>. Используя функцию <strong>tell</strong>, можно определить текущую позицию указателя файла. Устройства типа консольного терминала не имеют указателя файла. Результат функций <strong>lseek</strong> и <strong>tell</strong> не определен, если они применяются к дескриптору, связанному с таким устройством.</p>
     </section>
     <section>
      <title>
       <p><strong>Закрытие файлов</strong></p>
      </title>
      <p>Функция <strong>close</strong> закрывает открытые файлы. Открытые файлы также автоматически закрываются при неаварийном завершении программы.</p>
     </section>
    </section>
    <section>
     <title>
      <p><strong>Функции вода/вывода с консольного терминала и порта</strong></p>
     </title>
     <p>Функции ввода/вывода для консольного терминала выделены в отдельную группу, потому что они используют специфические особенности компьютера IBM/PC (наличие специального видеоадаптера) и не являются переносимыми на другие типы компьютеров.</p>
     <empty-line/>
     <table>
      <tr>
       <td align="center">функция</td>
       <td align="center">Краткое описание</td>
      </tr>
      <tr>
       <td align="left">cgets</td>
       <td align="left">чтение строки с консоли</td>
      </tr>
      <tr>
       <td align="left">cprintf</td>
       <td align="left">запись данных на консольный терминал по формату</td>
      </tr>
      <tr>
       <td align="left">cputs</td>
       <td align="left">вывод строки на консольный терминал</td>
      </tr>
      <tr>
       <td align="left">getch</td>
       <td align="left">чтение символа с консоли</td>
      </tr>
      <tr>
       <td align="left">getche</td>
       <td align="left">чтение символа с консоли с эхо-печатью</td>
      </tr>
      <tr>
       <td align="left">kbhit</td>
       <td align="left">проверка нажатия клавиши на консоли</td>
      </tr>
      <tr>
       <td align="left">putch</td>
       <td align="left">вывод символа на консольный терминал</td>
      </tr>
      <tr>
       <td align="left">ungetch</td>
       <td align="left">возврат последнего прочитанного символа с консольного символа обратно с тем, чтобы он стал следующим символом для чтения</td>
      </tr>
     </table>
     <p>Система программирования MSC предоставляет дополнительно функцию cscanf - чтение данных с консоли по формату.</p>
     <p>Система программирования ТС предоставляет дополнительно функцию getpass - ввод с терминала пароля без эхо-печати</p>
     <p>Прототипы функций содержатся в файле <strong>conio.h</strong>. Устройства: консольный терминал и порт не могут быть открыты или закрыты перед выполнением в/в, поэтому функции <strong>fopen</strong> и <strong>fclose</strong> не вызываются. Функции в/в с консольного терминала позволяют читать и записывать строки (<strong>cgets</strong> и <strong>cputs</strong>), форматированные данные (<strong>cscanf</strong> и <strong>cprintf</strong>) и символы. Функция <strong>kbhit</strong> определяет: было ли нажатие клавиши на консольном терминале. Эта функция позволяет определить наличие символов для ввода с клавиатуры до попытки чтения.</p>
    </section>
   </section>
   <section>
    <title>
     <p><strong>Математические функции</strong></p>
    </title>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">abs</td>
      <td align="left">нахождение абсолютного значения выражения типа int</td>
     </tr>
     <tr>
      <td align="left">acos</td>
      <td align="left">вычисление арккосинуса</td>
     </tr>
     <tr>
      <td align="left">asin</td>
      <td align="left">вычисление арксинуса</td>
     </tr>
     <tr>
      <td align="left">atan</td>
      <td align="left">вычисление арктангенса х</td>
     </tr>
     <tr>
      <td align="left">atan2</td>
      <td align="left">вычисление арктангенса от у/х</td>
     </tr>
     <tr>
      <td align="left">cabs</td>
      <td align="left">нахождение абсолютного значения комплексного числа</td>
     </tr>
     <tr>
      <td align="left">ceil</td>
      <td align="left">нахождение наименьшего целого, большего или равного х</td>
     </tr>
     <tr>
      <td align="left">_clear87</td>
      <td align="left">получение значения и инициализация слова состояния сопроцессора и библиотеки арифметики с плавающей точкой</td>
     </tr>
     <tr>
      <td align="left">_control87</td>
      <td align="left">получение старого значения слова состояния для функций арифметики с плавающей точкой и установка нового состояния</td>
     </tr>
     <tr>
      <td align="left">cos</td>
      <td align="left">вычисление косинуса</td>
     </tr>
     <tr>
      <td align="left">cosh</td>
      <td align="left">вычисление гиперболического косинуса</td>
     </tr>
     <tr>
      <td align="left">exp</td>
      <td align="left">вычисление экспоненты</td>
     </tr>
     <tr>
      <td align="left">fabs</td>
      <td align="left">нахождение абсолютного значения типа double</td>
     </tr>
     <tr>
      <td align="left">floor</td>
      <td align="left">нахождение наибольшего целого, меньшего или равного х</td>
     </tr>
     <tr>
      <td align="left">fmod</td>
      <td align="left">нахождение остатка от деления х/у</td>
     </tr>
     <tr>
      <td align="left">_fpreset</td>
      <td align="left">повторная инициализация пакета плавающей арифметики</td>
     </tr>
     <tr>
      <td align="left">frexp</td>
      <td align="left">разложение х как произведения мантиссы на экспоненту 2<sup>n</sup></td>
     </tr>
     <tr>
      <td align="left">hypot</td>
      <td align="left">вычисление гипотенузы</td>
     </tr>
     <tr>
      <td align="left">labs</td>
      <td align="left">нахождение абсолютного значения типа long</td>
     </tr>
     <tr>
      <td align="left">ldexp</td>
      <td align="left">вычисление х*2<sup>exp</sup></td>
     </tr>
     <tr>
      <td align="left">log</td>
      <td align="left">вычисление натурального логарифма</td>
     </tr>
     <tr>
      <td align="left">log10</td>
      <td align="left">вычисление логарифма по основанию 10</td>
     </tr>
     <tr>
      <td align="left">matherr</td>
      <td align="left">управление реакцией на ошибки при выполнении функций математической библиотеки</td>
     </tr>
     <tr>
      <td align="left">modf</td>
      <td align="left">разложение х на дробную и целую часть</td>
     </tr>
     <tr>
      <td align="left">pow</td>
      <td align="left">вычисление х в степени у</td>
     </tr>
     <tr>
      <td align="left">sin</td>
      <td align="left">вычисление синуса</td>
     </tr>
     <tr>
      <td align="left">sinh</td>
      <td align="left">вычисление гиперболического синуса</td>
     </tr>
     <tr>
      <td align="left">sqrt</td>
      <td align="left">нахождение квадратного корня</td>
     </tr>
     <tr>
      <td align="left">_status87</td>
      <td align="left">получение значения слова состояния с плавающей точкой</td>
     </tr>
     <tr>
      <td align="left">tan</td>
      <td align="left">вычисление тангенса</td>
     </tr>
     <tr>
      <td align="left">tanh</td>
      <td align="left">вычисление гиперболического тангенса</td>
     </tr>
    </table>
    <empty-line/>
    <p>Система программирования MSC предоставляет дополнительно функции:</p>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">bessel</td>
      <td align="left">вычисление функции Бесселя</td>
     </tr>
     <tr>
      <td align="left">dieeetomsbin</td>
      <td align="left">преобразование плавающего числа двойной точности из IEEE-формата в Microsoft-формат</td>
     </tr>
     <tr>
      <td align="left">dmsbintoieee</td>
      <td align="left">преобразование плавающего числа двойной точности из Microsoft-формата в IEEE-формат</td>
     </tr>
     <tr>
      <td align="left">fieeetomsbin</td>
      <td align="left">преобразование числа с плавающей точкой из IEEE-формата в Microsoft-формат</td>
     </tr>
     <tr>
      <td align="left">fmsbintoieee</td>
      <td align="left">преобразование числа с плавающей точкой из Microsoft-формата в IEEE-формат</td>
     </tr>
    </table>
    <empty-line/>
    <p>Система программирования ТС предоставляет дополнительно функции:</p>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">_matherr</td>
      <td align="left">управление реакцией на ошибки при выполнении функций из математической библиотеки</td>
     </tr>
     <tr>
      <td align="left">pow10</td>
      <td align="left">вычисление десятичной степени</td>
     </tr>
    </table>
    <empty-line/>
    <p>Прототипы функций содержатся в файле <strong>math.h</strong>, за исключением прототипов функций <strong>_clear87</strong>, <strong>_control87</strong>, <strong>_fpreset</strong>, <strong>status87</strong>, которые определены в файле <strong>float.h</strong>. Функция <strong>matherr</strong> (ее пользователь может задать сам в своей программе) вызывается любой библиотечной математической функцией при возникновении ошибки. Эта программа определена в библиотеке, но может быть переопределена пользователем, если она необходима, для установки различных процедур обработки ошибок.</p>
   </section>
   <section>
    <title>
     <p><strong>Динамическое распределение памяти</strong></p>
    </title>
    <p>Библиотека языка Си предоставляет механизм распределения динамической памяти (<strong>heap</strong>). Этот механизм позволяет динамически (по мере возникновения необходимости) запрашивать из программы дополнительные области оперативной памяти.</p>
    <p>Работа функций динамического распределения памяти различается для различных моделей памяти, поддерживаемых системой программирования (смотри первую части книги).</p>
    <p>В малых моделях памяти (<strong>tiny</strong>, <strong>small</strong>, <strong>medium</strong>) доступно для использования все пространство между концом сегмента статических данных программы и вершиной программного стека, за исключением 256-байтной буферной зоны непосредственно около вершины стека.</p>
    <p>В больших моделях памяти (<strong>compact</strong>, <strong>large</strong>, <strong>huge</strong>) все пространство между стеком программы и верхней границей физической памяти доступно для динамического размещения памяти.</p>
    <p>Следующие функции используются для динамического распределения памяти:</p>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">calloc</td>
      <td align="left">выделить память для массива</td>
     </tr>
     <tr>
      <td align="left">free</td>
      <td align="left">освободить блок, полученный посредством функции calloc, malloc или realloc</td>
     </tr>
     <tr>
      <td align="left">malloc</td>
      <td align="left">выделить блок памяти</td>
     </tr>
     <tr>
      <td align="left">realloc</td>
      <td align="left">переразместить ранее выделенный блок памяти, изменив его размер</td>
     </tr>
     <tr>
      <td align="left">sbrk</td>
      <td align="left">переустановить адрес первого байта оперативной памяти, недоступного программе (начала области памяти вне досягаемости программы)</td>
     </tr>
    </table>
    <empty-line/>
    <p>Система программирования MSC предоставляет дополнительно функции:</p>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">alloca</td>
      <td align="left">выделение блока памяти из программного стека</td>
     </tr>
     <tr>
      <td align="left">_expand</td>
      <td align="left">изменение размера блока памяти, не меняя местоположения блока</td>
     </tr>
     <tr>
      <td align="left">_ffree</td>
      <td align="left">освобождение блока, выделенного посредством функции fmalloc</td>
     </tr>
     <tr>
      <td align="left">_fmalloc</td>
      <td align="left">выделение блока памяти вне данного сегмента</td>
     </tr>
     <tr>
      <td align="left">_freect</td>
      <td align="left">определить примерное число областей заданного размера, которые можно выделить</td>
     </tr>
     <tr>
      <td align="left">_fmsize</td>
      <td align="left">возвращает размер блока памяти, на который указывает дальний (far) указатель</td>
     </tr>
     <tr>
      <td align="left">halloc</td>
      <td align="left">выделить память для большого массива (объемом более 64 Кбайтов)</td>
     </tr>
     <tr>
      <td align="left">hfree</td>
      <td align="left">освободить блок памяти, выделенный посредством функции halloc</td>
     </tr>
     <tr>
      <td align="left">_memavl</td>
      <td align="left">определить примерный размер в байтах памяти, доступной для выделения</td>
     </tr>
     <tr>
      <td align="left">_msize</td>
      <td align="left">определить размер блока, выделенного посредством функций calloc, malloc, realloc</td>
     </tr>
     <tr>
      <td align="left">_nfree</td>
      <td align="left">освобождает блок, выделенный посредством _nmalloc</td>
     </tr>
     <tr>
      <td align="left">_nmalloc</td>
      <td align="left">выделить блок памяти в заданном сегменте</td>
     </tr>
     <tr>
      <td align="left">_nmsize</td>
      <td align="left">определить размер блока, на которой указывает близкий (near) указатель</td>
     </tr>
     <tr>
      <td align="left">stackavail</td>
      <td align="left">определить объем памяти, доступной для выделения посредством функции alloca</td>
     </tr>
    </table>
    <empty-line/>
    <p>Система программирования ТС предоставляет дополнительно функции:</p>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">brk</td>
      <td align="left">переустановить адрес первого байта оперативной памяти, недоступного программе (начала области памяти вне досягаемости программы)</td>
     </tr>
     <tr>
      <td align="left">allocmem</td>
      <td align="left">низкоуровневая функция выделения памяти</td>
     </tr>
     <tr>
      <td align="left">freemem</td>
      <td align="left">низкоуровневая функция возврата памяти операционной системе</td>
     </tr>
     <tr>
      <td align="left">coreleft</td>
      <td align="left">узнать, сколько осталось памяти для выделения в данном сегменте</td>
     </tr>
     <tr>
      <td align="left">farcalloc</td>
      <td align="left">выделить блок памяти вне данного сегмента</td>
     </tr>
     <tr>
      <td align="left">farcoreleft</td>
      <td align="left">определить, сколько памяти для размещения осталось вне данного сегмента</td>
     </tr>
     <tr>
      <td align="left">farmalloc</td>
      <td align="left">выделить блок памяти вне данного сегмента</td>
     </tr>
     <tr>
      <td align="left">farrealloc</td>
      <td align="left">изменить размер блока, ранее выделенного функцией farmalloc или farcalloc</td>
     </tr>
     <tr>
      <td align="left">farfree</td>
      <td align="left">освободить блок, ранее выделенный функцией farmalloc или farcalloc</td>
     </tr>
    </table>
    <empty-line/>
    <p>Прототипы функций содержатся в файле <strong>malloc.h</strong> для системы программирования MSC и в файле <strong>alloc.h</strong> для системы программирования ТС.</p>
    <p>Функции <strong>calloc</strong> и <strong>malloc</strong> выделяют блоки памяти, функция <strong>malloc</strong> выделяет заданное число байтов, тогда как <strong>calloc</strong> выделяет и инициализирует нулями массив элементов заданного размера.</p>
    <p>Функции <strong>_fmalloc</strong> и <strong>_nmalloc</strong> подобны <strong>malloc</strong>, за исключением того, что <strong>_fmalloc</strong> и <strong>_nmalloc</strong> позволяют выделить блок байтов в том случае, когда существуют ограничения адресного пространства текущей модели памяти. Функция <strong>halloc</strong> выполняется аналогично <strong>calloc</strong>, но <strong>halloc</strong> выделяет память для большого массива (больше 64 К).</p>
    <p>Функции <strong>realloc</strong> и <strong>_expand</strong> изменяют размер полученного блока.</p>
    <p>Функция <strong>free</strong> (для <strong>calloc</strong>, <strong>malloc</strong> и <strong>realloc</strong>), функция <strong>ffree</strong> (для <strong>_fmalloc</strong>), функция <strong>_nfree</strong> (для <strong>_nmalloc</strong>) и функция <strong>hfree</strong> (для <strong>halloc</strong>) освобождают память, которая была выделена ранее, и делают ее доступной для последующего распределения.</p>
    <p>Функции <strong>_freect</strong> и <strong>_memavl</strong> определяют: сколько памяти доступно для динамического выделения в заданном сегменте; <strong>_freect</strong> возвращает примерное число областей заданного размера, которые могут быть выделены; <strong>_memavl</strong> возвращает общее число байтов, доступных для выделения.</p>
    <p>Функции <strong>_msize</strong> (для <strong>calloc</strong>, <strong>malloc</strong>, <strong>realloc</strong> и <strong>_expand</strong>), <strong>_fmsize</strong> (для <strong>_fmalloc</strong>) и <strong>_nmsize</strong> (для <strong>_nmalloc</strong>) возвращают размер ранее выделенного блока памяти.</p>
    <p>Функция <strong>sbrk</strong> — это функция нижнего уровня для получения памяти. Вообще говоря, программа, которая использует функцию <strong>sbrk</strong>, не должна использовать другие функции выделения памяти, хотя их использование не запрещено.</p>
    <p>Все выше описанные функции распределяли области памяти из общей памяти. Система программирования MSC предоставляет 2 функции, <strong>alloca</strong> и <strong>stackavail</strong>, для выделения памяти из стека и определения количества доступной памяти в стеке.</p>
   </section>
   <section>
    <title>
     <p><strong>Использование системных вызовов операционной системы MS-DOS</strong></p>
    </title>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">bdos</td>
      <td align="left">вызов системы MS-DOS; используются только регистры DX и AL</td>
     </tr>
     <tr>
      <td align="left">dosexterr</td>
      <td align="left">получение значений регистров из системы MS-DOS вызовом 59H</td>
     </tr>
     <tr>
      <td align="left">FP_OFF</td>
      <td align="left">возвращает смещение far-указателя</td>
     </tr>
     <tr>
      <td align="left">FP_SEG</td>
      <td align="left">возвращает сегмент far-указателя</td>
     </tr>
     <tr>
      <td align="left">int86</td>
      <td align="left">вызов прерывания MS-DOS</td>
     </tr>
     <tr>
      <td align="left">int86x</td>
      <td align="left">вызов прерывания MS-DOS</td>
     </tr>
     <tr>
      <td align="left">intdos</td>
      <td align="left">системный вызов MS-DOS</td>
     </tr>
     <tr>
      <td align="left">intdosx</td>
      <td align="left">системный вызов MS-DOS</td>
     </tr>
     <tr>
      <td align="left">segread</td>
      <td align="left">возвращает текущее значение сегментных регистров</td>
     </tr>
    </table>
    <empty-line/>
    <p>Прототипы функций и макроопределения содержатся в файле <strong>dos.h</strong>.</p>
    <p>Система программирования MSC предоставляет дополнительно функции:</p>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">inp</td>
      <td align="left">чтение с указанного порта в/в</td>
     </tr>
     <tr>
      <td align="left">outp</td>
      <td align="left">вывод в указанный порт в/в</td>
     </tr>
    </table>
    <empty-line/>
    <p>Прототипы функций <strong>inp</strong> и <strong>outp</strong> содержатся в файле <strong>conio.h</strong>.</p>
    <p>Система программирования ТС предоставляет дополнительно следующие функции:</p>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">absread</td>
      <td align="left">чтение с диска по номеру сектора</td>
     </tr>
     <tr>
      <td align="left">abswrite</td>
      <td align="left">запись на диск по номеру сектора</td>
     </tr>
     <tr>
      <td align="left">bdosptr</td>
      <td align="left">вызов системы MS-DOS</td>
     </tr>
     <tr>
      <td align="left">country</td>
      <td align="left">определение способа записи времени в данной стране</td>
     </tr>
     <tr>
      <td align="left">ctrlbrk</td>
      <td align="left">установить реакцию на &lt;CTRL/BREAK&gt;</td>
     </tr>
     <tr>
      <td align="left">disable</td>
      <td align="left">отменить прерывания</td>
     </tr>
     <tr>
      <td align="left">enable</td>
      <td align="left">разрешить прерывания</td>
     </tr>
     <tr>
      <td align="left">freemem</td>
      <td align="left">освободить память</td>
     </tr>
     <tr>
      <td align="left">getinterrupt</td>
      <td align="left">возбудить прерывание</td>
     </tr>
     <tr>
      <td align="left">getcbrk</td>
      <td align="left">узнать установленную реакцию на &lt;CTRL/BREAK&gt;</td>
     </tr>
     <tr>
      <td align="left">getdfree</td>
      <td align="left">узнать объем свободного места на диске</td>
     </tr>
     <tr>
      <td align="left">getdta</td>
      <td align="left">узнать адрес области передачи данных диска</td>
     </tr>
     <tr>
      <td align="left">getfat</td>
      <td align="left">получить информацию из таблицы размещения файлов</td>
     </tr>
     <tr>
      <td align="left">getfatd</td>
      <td align="left">получить информацию из таблицы размещения файлов</td>
     </tr>
     <tr>
      <td align="left">getpsp</td>
      <td align="left">получить сегментный префикс для текущего программного адреса текущего выполняемого процесса</td>
     </tr>
     <tr>
      <td align="left">getvect</td>
      <td align="left">узнать значение вектора прерывания</td>
     </tr>
     <tr>
      <td align="left">getverify</td>
      <td align="left">узнать режим проверки записи на диск</td>
     </tr>
     <tr>
      <td align="left">harderr</td>
      <td align="left">регистрация функции обработки аппаратных ошибок</td>
     </tr>
     <tr>
      <td align="left">hardresume</td>
      <td align="left">возврат из функции обработки аппаратных ошибок</td>
     </tr>
     <tr>
      <td align="left">hardretn</td>
      <td align="left">возврат из функции обработки аппаратных ошибок</td>
     </tr>
     <tr>
      <td align="left">inport</td>
      <td align="left">ввести слово из порта</td>
     </tr>
     <tr>
      <td align="left">inportb</td>
      <td align="left">ввести байт из порта</td>
     </tr>
     <tr>
      <td align="left">intr</td>
      <td align="left">аналог функции int86</td>
     </tr>
     <tr>
      <td align="left">keep</td>
      <td align="left">зафиксировать программу в памяти</td>
     </tr>
     <tr>
      <td align="left">MK_FP</td>
      <td align="left">составить far-указатель из компонент</td>
     </tr>
     <tr>
      <td align="left">outport</td>
      <td align="left">вывести слово в порт</td>
     </tr>
     <tr>
      <td align="left">outportb</td>
      <td align="left">вывести байт в порт</td>
     </tr>
     <tr>
      <td align="left">parsfnm</td>
      <td align="left">выделение имени файла из командной строки MS-DOS</td>
     </tr>
     <tr>
      <td align="left">peek</td>
      <td align="left">получить значение слова по адресу</td>
     </tr>
     <tr>
      <td align="left">peekb</td>
      <td align="left">получить значение байта по адресу</td>
     </tr>
     <tr>
      <td align="left">poke</td>
      <td align="left">записать слово в память по адресу</td>
     </tr>
     <tr>
      <td align="left">pokeb</td>
      <td align="left">записать байт в память по адресу</td>
     </tr>
     <tr>
      <td align="left">randbrd</td>
      <td align="left">чтение с диска</td>
     </tr>
     <tr>
      <td align="left">randbwr</td>
      <td align="left">запись на диск</td>
     </tr>
     <tr>
      <td align="left">setdta</td>
      <td align="left">установить адрес области передачи данных диска</td>
     </tr>
     <tr>
      <td align="left">setvect</td>
      <td align="left">задать значение вектора прерывания</td>
     </tr>
     <tr>
      <td align="left">setverify</td>
      <td align="left">включить режим проверки записи на диск</td>
     </tr>
     <tr>
      <td align="left">sleep</td>
      <td align="left">задержка</td>
     </tr>
     <tr>
      <td align="left">unlink</td>
      <td align="left">удаление файла</td>
     </tr>
    </table>
    <empty-line/>
    <p>Прототипы функций и макроопределения содержатся в файле <strong>dos.h</strong>.</p>
    <p>Система программирования ТС предоставляет также следующие функции для обращения к BIOS (базовой подсистеме ввода/вывода операционной системы):</p>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">bioscom</td>
      <td align="left">управление последовательным каналом</td>
     </tr>
     <tr>
      <td align="left">biosdisk</td>
      <td align="left">управление диском</td>
     </tr>
     <tr>
      <td align="left">biosequip</td>
      <td align="left">узнать конфигурацию аппаратуры</td>
     </tr>
     <tr>
      <td align="left">bioskey</td>
      <td align="left">управление клавиатурой</td>
     </tr>
     <tr>
      <td align="left">biosmemory</td>
      <td align="left">узнать объем оперативной памяти</td>
     </tr>
     <tr>
      <td align="left">biosprint</td>
      <td align="left">управление устройством печати</td>
     </tr>
     <tr>
      <td align="left">biostime</td>
      <td align="left">управление BIOS-таймером</td>
     </tr>
    </table>
    <empty-line/>
    <p>Прототипы функций обращения к BIOS содержатся в файле <strong>bios.h</strong>.</p>
   </section>
   <section>
    <title>
     <p><strong>Управление процессами</strong></p>
    </title>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">abort</td>
      <td align="left">завершить процесс</td>
     </tr>
     <tr>
      <td align="left">execl</td>
      <td align="left">выполнить порождаемый процесс со списком аргументов</td>
     </tr>
     <tr>
      <td align="left">execle</td>
      <td align="left">выполнить порождаемый процесс со списком аргументов и заданным окружением (контекстом имен командного языка операционной системы)</td>
     </tr>
     <tr>
      <td align="left">execlp</td>
      <td align="left">выполнить порождаемый процесс, используя переменную PATH и список аргументов</td>
     </tr>
     <tr>
      <td align="left">execlpe</td>
      <td align="left">выполнить порождаемый процесс, используя переменную PATH, заданное окружение и список аргументов</td>
     </tr>
     <tr>
      <td align="left">execv</td>
      <td align="left">выполнить порождаемый процесс с массивом аргументов</td>
     </tr>
     <tr>
      <td align="left">execve</td>
      <td align="left">выполнить порождаемый процесс с массивом аргументов и заданным окружением</td>
     </tr>
     <tr>
      <td align="left">execvp</td>
      <td align="left">выполнить порождаемый процесс, используя переменную PATH и массив аргументов</td>
     </tr>
     <tr>
      <td align="left">execvpe</td>
      <td align="left">выполнить порождаемый процесс, используя переменную PATH, заданное окружение и массив аргументов</td>
     </tr>
     <tr>
      <td align="left">exit</td>
      <td align="left">завершить процесс</td>
     </tr>
     <tr>
      <td align="left">_exit</td>
      <td align="left">завершить процесс без скидывания буферов</td>
     </tr>
     <tr>
      <td align="left">signal</td>
      <td align="left">управление сигналом прерывания</td>
     </tr>
     <tr>
      <td align="left">spawnl</td>
      <td align="left">выполнить порождаемый процесс со списком аргументов</td>
     </tr>
     <tr>
      <td align="left">spawnle</td>
      <td align="left">выполнить порождаемый процесс со списком аргументов и заданным окружением</td>
     </tr>
     <tr>
      <td align="left">spawnlp</td>
      <td align="left">выполнить порождаемый процесс, используя переменную PATH и список аргументов</td>
     </tr>
     <tr>
      <td align="left">spawnlpe</td>
      <td align="left">выполнить порождаемый процесс, используя переменную PATH, заданное окружение и список аргументов</td>
     </tr>
     <tr>
      <td align="left">spawnv</td>
      <td align="left">выполнить порождаемый процесс с массивом аргументов</td>
     </tr>
     <tr>
      <td align="left">spawnve</td>
      <td align="left">выполнить порождаемый процесс с массивом аргументов и задан ным окружением</td>
     </tr>
     <tr>
      <td align="left">spawnvp</td>
      <td align="left">выполнить порождаемый процесс, используя переменную PATH и массив аргументов</td>
     </tr>
     <tr>
      <td align="left">spawnvpe</td>
      <td align="left">выполнить порождаемый процесс, используя переменную PATH, заданное окружение и массив аргументов</td>
     </tr>
     <tr>
      <td align="left">system</td>
      <td align="left">выполнение команды MS-DOS</td>
     </tr>
    </table>
    <empty-line/>
    <p>Система программирования MSC предоставляет дополнительно функции:</p>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">getpid</td>
      <td align="left">получить номер процесса</td>
     </tr>
     <tr>
      <td align="left">onexit</td>
      <td align="left">выполнить функцию при завершении программы</td>
     </tr>
    </table>
    <empty-line/>
    <p>Термин "процесс" относится к программе, которая выполняется под управлением операционной системы. Процесс состоит из кодов программы и данных, а также информации о состоянии процесса, такой, как число открытых файлов. Где бы ни выполнялась программа на уровне MS-DOS, запускается процесс. Можно запустить, остановить и управлять процессом из программы, используя функции управления процессом. Прототипы всех функций управления процессами объявлены в файле <strong>process.h</strong> (исключая функцию <strong>signal</strong>). Прототип функции <strong>signal</strong> содержится в файле <strong>signal.h</strong>. Функции управления процессом позволяют следующее:</p>
    <p>1) Узнать уникальный номер процесса (<strong>getpid</strong>).</p>
    <p>2) Завершить процесс (<strong>abort</strong>, <strong>exit</strong>, <strong>_exit</strong>).</p>
    <p>3) Управлять сигналами прерывания (<strong>signal</strong>).</p>
    <p>4) Начать новый процесс (разновидности <strong>ехес</strong> и <strong>spawn</strong> функции, <strong>system</strong> функция).</p>
    <p>Функции <strong>abort</strong> и <strong>_exit</strong> осуществляют немедленное завершение без скидывания буферов потоков, функция <strong>exit</strong> осуществляет выход после скидывания буферов потоков. Функция <strong>system</strong> вызывает на выполнение заданную команду MS-DOS. Функции <strong>ехес</strong> и <strong>spawn</strong> создают новый процесс, называемый порождаемым процессом. Разница между функциями <strong>ехес</strong> и <strong>spawn</strong> в том, что <strong>spawn</strong> способна возвращать управление из порождаемого процесса к его родителю. Оба, и родитель, и порождаемый процесс, размещаются в памяти (если не указан флаг P_OVERLAY).</p>
    <p>В функции <strong>ехес</strong> порождаемый процесс перекрывает порождающий процесс, так что возврат управления в родительский процесс невозможен (если не произошла ошибка во время попытки запуска на выполнение порождаемого процесса).</p>
    <p>В таблице описывается способ формирования <strong>ехес</strong> и <strong>spawn</strong>. Имя функции задается в первом поле. Второе поле определяет: используется ли переменная PATH для поиска файла для выполнения, который определяет порождаемый процесс.</p>
    <p>Третье поле описывает метод передачи аргументов порождаемому процессу. Передача аргументов списком означает, что аргументы в порождаемый процесс передаются один за одним, в том порядке, как пользователь перечислил их в обращении к функции <strong>ехес</strong> или <strong>spawn</strong>. Передача аргументов массивом означает, что аргументы помещаются в массив и указатель на массив передается порождаемому процессу. Передача списком обычно используется, когда число аргументов постоянно и известно заранее, а метод передачи аргументов массивом полезен, когда число аргументов должно быть определено во время работы. Последнее поле определяет: унаследует ли порождаемый процесс от родителя окружение, или оно будет изменено для него.</p>
    <p>Таблица 9.1.</p>
    <table>
     <tr>
      <td align="center">функция</td>
      <td align="center">Использование PATH переменной</td>
      <td align="center">Способ передачи аргументов</td>
      <td align="center">Окружение</td>
     </tr>
     <tr>
      <td align="left">execl</td>
      <td align="left">не использует PATH</td>
      <td align="left">список аргументов</td>
      <td align="left">наследует от родителя</td>
     </tr>
     <tr>
      <td align="left">spawnl</td>
      <td> </td>
      <td> </td>
      <td> </td>
     </tr>
     <tr>
      <td align="left">execle</td>
      <td align="left">не использует PATH</td>
      <td align="left">список аргументов</td>
      <td align="left">указатель на таблицу окружения (последний аргумент)</td>
     </tr>
     <tr>
      <td align="left">spawnle</td>
      <td> </td>
      <td> </td>
      <td> </td>
     </tr>
     <tr>
      <td align="left">execlp</td>
      <td align="left">использует PATH</td>
      <td align="left">список аргументов</td>
      <td align="left">наследует от родителя</td>
     </tr>
     <tr>
      <td align="left">spawnlp</td>
      <td> </td>
      <td> </td>
      <td> </td>
     </tr>
     <tr>
      <td align="left">execlpe</td>
      <td align="left">использует PATH</td>
      <td align="left">список аргументов</td>
      <td align="left">указатель на таблицу окружения (последний аргумент)</td>
     </tr>
     <tr>
      <td align="left">spawnlpe</td>
      <td> </td>
      <td> </td>
      <td> </td>
     </tr>
     <tr>
      <td align="left">execv</td>
      <td align="left">не использует PATH</td>
      <td align="left">массив аргументов</td>
      <td align="left">наследует от родителей</td>
     </tr>
     <tr>
      <td align="left">spawnv</td>
      <td> </td>
      <td> </td>
      <td> </td>
     </tr>
     <tr>
      <td align="left">execve</td>
      <td align="left">не использует PATH</td>
      <td align="left">массив аргументов</td>
      <td align="left">указатель на таблицу окружения (последний аргумент)</td>
     </tr>
     <tr>
      <td align="left">spawnve</td>
      <td> </td>
      <td> </td>
      <td> </td>
     </tr>
     <tr>
      <td align="left">execvp</td>
      <td align="left">использует PATH</td>
      <td align="left">массив аргументов</td>
      <td align="left">наследует от родителя</td>
     </tr>
     <tr>
      <td align="left">spawnvp</td>
      <td> </td>
      <td> </td>
      <td> </td>
     </tr>
     <tr>
      <td align="left">execvpe</td>
      <td align="left">использует PATH</td>
      <td align="left">массив аргументов</td>
      <td align="left">указатель на таблицу окружения (последний аргумент)</td>
     </tr>
     <tr>
      <td align="left">spawnvpe</td>
      <td> </td>
      <td> </td>
      <td> </td>
     </tr>
    </table>
    <empty-line/>
   </section>
   <section>
    <title>
     <p><strong>Поиск и сортировка</strong></p>
    </title>
    <p>Следующие библиотечные функции предназначены для поиска и сортировки в массиве:</p>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">bsearch</td>
      <td align="left">выполняет двоичный поиск</td>
     </tr>
     <tr>
      <td align="left">lfind</td>
      <td align="left">выполняет линейный поиск для заданного значения</td>
     </tr>
     <tr>
      <td align="left">lsearch</td>
      <td align="left">выполняет линейный поиск для заданного значения, которое добавляется в массив, если не найдено</td>
     </tr>
     <tr>
      <td align="left">qsort</td>
      <td align="left">выполняет быструю сортировку</td>
     </tr>
    </table>
    <empty-line/>
    <p>Прототипы функций содержатся в файле <strong>search.h</strong> в системе программирования MSC, в файле <strong>stdlib.h</strong> в системе программирования ТС.</p>
   </section>
   <section>
    <title>
     <p><strong>Функции работы со временем</strong></p>
    </title>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">asctime</td>
      <td align="left">преобразование времени из структуры (внутренней формы) в символьную строку</td>
     </tr>
     <tr>
      <td align="left">ctime</td>
      <td align="left">преобразование времени из длинного целого (long int) в строку символов</td>
     </tr>
     <tr>
      <td align="left">gmtime</td>
      <td align="left">преобразование времени из целого (int) в структуру</td>
     </tr>
     <tr>
      <td align="left">localtime</td>
      <td align="left">преобразование времени из целочисленного (int) в структуру с локальной поправкой</td>
     </tr>
     <tr>
      <td align="left">tzset</td>
      <td align="left">установить переменную времени из переменной времени среды</td>
     </tr>
    </table>
    <empty-line/>
    <p>Система программирования MSC предоставляет дополнительные функции:</p>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">ftime</td>
      <td align="left">получить текущее время системы как структуру</td>
     </tr>
     <tr>
      <td align="left">time</td>
      <td align="left">получить текущее системное время как длинное целое (long int)</td>
     </tr>
     <tr>
      <td align="left">utime</td>
      <td align="left">установить время изменения файла</td>
     </tr>
    </table>
    <empty-line/>
    <p>Система программирования ТС предоставляет дополнительные функции:</p>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">difftime</td>
      <td align="left">вычислить разность по времени</td>
     </tr>
     <tr>
      <td align="left">dostounix</td>
      <td align="left">преобразование времени из формате ОС MS-DOS в формат ОС UNIX</td>
     </tr>
     <tr>
      <td align="left">getdate</td>
      <td align="left">получить системную дату как структуру</td>
     </tr>
     <tr>
      <td align="left">getftime</td>
      <td align="left">получить системную дату</td>
     </tr>
     <tr>
      <td align="left">gettime</td>
      <td align="left">получить системное время как структуру</td>
     </tr>
     <tr>
      <td align="left">setdate</td>
      <td align="left">установить системную дату</td>
     </tr>
     <tr>
      <td align="left">setftime</td>
      <td align="left">установить системное время</td>
     </tr>
     <tr>
      <td align="left">settime</td>
      <td align="left">установить системное время</td>
     </tr>
     <tr>
      <td align="left">stime</td>
      <td align="left">установить системное время</td>
     </tr>
     <tr>
      <td align="left">unixtodos</td>
      <td align="left">преобразовать время из формата ОС UNIX в формат ОС MS-DOS</td>
     </tr>
    </table>
    <empty-line/>
    <p>Функции <strong>time</strong> и <strong>ftime</strong> возвращают текущее время как число секунд, прошедших с 1 января 1970 Гринвичского Всемирного времени. Эта величина может быть преобразована, скорректирована и сохранена посредством функций <strong>asctime</strong>, <strong>ctime</strong>, <strong>gmtime</strong> и <strong>localtime</strong>.</p>
    <p>Функция <strong>utime</strong> устанавливает время модификации для указанного файла, используя текущее время или значение времени, заданное в структуре.</p>
    <p>Функция <strong>ftime</strong> требует включения двух файлов: <strong>sys\types.h</strong> и <strong>sys\timeb.h</strong>. Прототип функции <strong>ftime</strong> содержится в <strong>sys\timeb.h</strong>.</p>
    <p>Функция <strong>utime</strong> также требует включения двух файлов: <strong>sys\types.h</strong> и <strong>sys\utime.h</strong>. Прототип функции <strong>utime</strong> содержится в файле <strong>sys\utime.h</strong>.</p>
    <p>Прототипы функций <strong>dostounix</strong>, <strong>getdate</strong>, <strong>gettime</strong>, <strong>setdate</strong>, <strong>settime</strong>, <strong>unixtodos</strong> содержатся в файле <strong>dos.h</strong>.</p>
    <p>Прототипы функций <strong>getftime</strong> и <strong>setftime</strong> определены в файле <strong>io.h</strong>.</p>
    <p>Прототипы остальных функций работы со временем времени содержатся в файле <strong>time.h</strong>.</p>
    <p>При использования функции <strong>ftime</strong> или <strong>localtime</strong>, чтобы сделать поправку для местного времени, необходимо определить переменную командного языка операционной системы TZ.</p>
   </section>
   <section>
    <title>
     <p><strong>Функции работы со списком аргументов</strong></p>
    </title>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">va_arg</td>
      <td align="left">выбрать аргумент из списка</td>
     </tr>
     <tr>
      <td align="left">va_end</td>
      <td align="left">переустановить указатель</td>
     </tr>
     <tr>
      <td align="left">va_start</td>
      <td align="left">установить указатель на начало списка аргументов</td>
     </tr>
    </table>
    <empty-line/>
    <p>Эти макроопределения дают возможность получить доступ к аргументам функции, когда число аргументов переменно.</p>
    <p>В системе программирования MSC для совместимости с ОС UNIX System V можно использовать включаемый файл <strong>vararg.h</strong>, для совместимости со стандартом ANSI на язык Си можно использовать включаемый <strong>stdarg.h</strong>. В этих файлах содержится две различных версии макроопределений.</p>
    <p>В системе программирования ТС доступна только версия <strong>stdarg.h</strong>.</p>
   </section>
   <section>
    <title>
     <p><strong>Другие функции</strong></p>
    </title>
    <table>
     <tr>
      <td align="center">Функция</td>
      <td align="center">Краткое описание</td>
     </tr>
     <tr>
      <td align="left">assert</td>
      <td align="left">проверка утверждения о состоянии переменных</td>
     </tr>
     <tr>
      <td align="left">getenv</td>
      <td align="left">получить значение переменной среды (окружения)</td>
     </tr>
     <tr>
      <td align="left">perror</td>
      <td align="left">напечатать сообщение об ошибке</td>
     </tr>
     <tr>
      <td align="left">putenv</td>
      <td align="left">изменить значение переменной среды</td>
     </tr>
     <tr>
      <td align="left">swab</td>
      <td align="left">поменять местами два смежных байта</td>
     </tr>
     <tr>
      <td align="left">rand</td>
      <td align="left">получить псевдо-случайное число</td>
     </tr>
     <tr>
      <td align="left">srand</td>
      <td align="left">инициализация датчика случайных чисел</td>
     </tr>
     <tr>
      <td align="left">setjmp</td>
      <td align="left">запоминание точки для многоуровневого возврата</td>
     </tr>
     <tr>
      <td align="left">longjmp</td>
      <td align="left">многоуровневый возврат из функции</td>
     </tr>
    </table>
    <empty-line/>
    <p>Прототипы всех функций, исключая <strong>assert</strong>, <strong>longjmp</strong> и <strong>setjmp</strong>, описаны в <strong>stdiib.h</strong>.</p>
    <p><strong>Assert</strong> — это макроопределение из файла <strong>assert.h</strong>.</p>
    <p>Прототипы функций <strong>setjmp</strong> и <strong>longjmp</strong> содержатся в файле <strong>setjmp.h</strong>.</p>
    <p>Программы <strong>getenv</strong> и <strong>putenv</strong> предоставляют доступ к таблице среды процесса. Глобальная переменная <strong>environ</strong> также указывает на таблицу среды, но рекомендуется использование функций <strong>getenv</strong> и <strong>putenv</strong> для доступа и изменения установленной среды вместо обращения к таблице среды напрямую.</p>
    <p>Функция <strong>perror</strong> печатает диагностическое сообщение о последней ошибке, произошедшей при вызове какой-либо библиотечной функции.</p>
    <p>Функция <strong>swab</strong> обычно используется для преобразования данных в формат других компьютеров, где используется иной порядок следования байтов в слове в оперативной памяти.</p>
    <empty-line/>
   </section>
  </section>
 </body>
 <binary id="_1276010920_ba6830be1fd99ee1640b3d9d19debad4.jpg" content-type="image/jpeg">/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJ
SkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTAK/9sAQwADAgIDAgIDAwMDBAMDBAUIBQUEBAUK
BwcGCAwKDAwLCgsLDQ4SEA0OEQ4LCxAWEBETFBUVFQwPFxgWFBgSFBUU/9sAQwEDBAQFBAUJ
BQUJFA0LDRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU
FBQU/8AAEQgEqgLuAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkK
C//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHw
JDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3
eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY
2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkK
C//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1Lw
FWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2
d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW
19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+T/H/wAC/AOg674l0/SNQ8Sf
ZbK6jt45ruCJycBzMW2/dB+QJnG9Uc9RUOh/BnwNKumLqus6jDcSfanuQHVI4yCdi+YEk3Lt
GWfgncFUEg17H438PeFb7xJqYv8AxJ4p0We71R5yt1pomgjR/MInkZLkkQq0hySjEAthR2p+
H/Cdlpk82kT+PJvD7qxb7MmnTSSZM2Y5VkUp8i7hKueGRhkDPHJdgeC678FNAs9VuY4tSu7i
CJmiWZHVgxBwMYQc+oHfPNUpPhNoVlPBObq4kswEL25lCyHdwQGwQDx6V6vqehX2v6lqE1i0
+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
tLm2P7GXwma0Zo4t1nwI8Ef6O/8AWsr4LyiH9gz4pvGFuD9tuyFkj6fuosciuWPM8LL/ABoV
koya7Cf8E5oHh8TeOZJoVES6TAW+ZehkkzXmX7Jyw3P7TfhaYqNkmoXkox7JKB/KvSP+Cdyb
vEfxCAXk6Nb4AH+3JXm/7IkYX9qDwysh2BLu7XB7Hy5uP1FdVS3tMWv7qHH4Isd+11Olz+1F
4iZPupe2YH/fMFeh/wDBRsf8Xh8ORjID6OxOBk5+1CvNf2tQsf7Svi5VYEm9tMY/65L/APWr
0n/goyrx/GXRXYED+xCFPv5rD+ZFFJ3eFfr+Rg+bmF+Oisn7FfwLDFjEpiYgrjpDKR+oFbXw
giWT/gnx8UZDnm4vyvPbZAR+orO/aFnC/safBCeNg3ltbFfTm2mzmtL4RbR/wTq+IiqdzC41
DeR3O2M/yIrCmlKhG/8Az8f5m5j/APBOYb/iB44lP3U0JUH1aVSf1Arg/wBlaUj9q7wyC+P+
JhqOOvOI7hgMDryAce1ekf8ABOV4F8c+Ol2EOdIgP1/et/iK83/ZAnMn7VnhBWLFvtept8y4
6W9yf8a0quXtMRbpG4H2Bo/7bum+H/jzr3w78U2aWGm218LHT9XRjtc7FIDg/d5J5r6pWKG7
QSbFYSDIzyCD/Svx9/aMjKftN+MFlLJ/xO7bjGf+WaV9uftHftVap+zz8R/CdsmmJqmh31rc
SXsAO2cqrALsboOq8VtSxEo1aFBL4o3Be67x3O4+MP7N+l+LvO1LRUXTNV+8URMJOfevkXxJ
4b1Lwney2Oq2j2d5G2CjD5SPVT3r9CfBfj3TPiD4S0PxBZF4rTVLeO5to7j5XAYEgEevB/Kq
PjL4faB45jltdY09bldwAcDDIcZznr6V68lFxvE+7yTirEZXH2OI96D+Z+ehGDRnDZHHsOle
6fEf9nLWvCsjz6W7apprksuyPMsK+mO9eKSR7YJPOVYZlx+7MZVutYcr3sfsuX5xhMyp81KW
q3KziSXG3Ax7UxoZt8XPf0qxbIH3NgHb0DHFNnkZpMldmSAAOmahtLRntkZJGeNx9B3pAxPW
Mp7mlhBt0ZOST3PalJJ6kmmVC3NqFRyruhZe3NOaRUIDHGacgy4HXJ6UGtS2lhyzRNb7R/rS
QW59BUbHB+8o+uf6UgJt0ZynVsdKVZzKM73T2UZoMVJrZhJmVArNkAcYzT4Xkt2VoLmS0ZeQ
8TlT+lN89vu7Sw6biOtBGeozQtHdGcqVOt7tTZnpvhT9oLxn4Pt0WLWP7QhjO0Q3Z3ZH1r1H
Qv2z2hiEOtaES7cg2FwpP4qRXzNBMIVI2gg89KjkfdIW6E/pVutKOr1PkMZwxleKm+aNn3SP
uTw3+0x4M8QxKJr46XOx4huxj9eleh2HjHStTDG01G2uVcDASaNv0z/OvzXZ9qRkDdjqKWMt
bzJNHLIko6FGIxW1PFJL4T5avwFTSbw89PM/TlCk213/AHh7b8f0p32eH/njHjrjaK/O3Rvi
X4s0psWviW7to16R+YxVf0Ndnp/7T3jvScIt/bXw9buMN+orf643oj5rEcD46OtNpn3Gzb2B
bkjjkmjJyCCV/wB0kZr4ytv2ufGqygz2+lSr22qVxVyL9srxZbRkNoWlzDJO8zMv6AVrCq76
yPPnwlm0FfkTPsArkgkksDkEkk0xoYmVh5aruGCUUKfzFfK1j+2ncjaL/wALLI57Wd4uD+Br
oLf9srRAqtdaBqduG42xSRNj/wAfWt/aL+Y4J8OZpB2lS+5H0SkSRlioILYLEEjcQMZOOvSn
NySc4zz6Yr59f9sTwkpH/Eq1p8jOVMeP/R1TL+2P4T2gf2frC8dPLTj8fNp+0X834mP9gZj/
AM+n9x7PeCSS8gCNbeX5n79pd27y8EfKeudxX9amGgaeDGWs4ZBErRxh4wQgbhwAegbHI74r
xWX9rrwwF3LpmsSkEZBEX9ZqqXH7ZPh63UmPQtckbrhPI/8Aj1L2n978RrIcxf8Ay6f3H0BF
aeScocDt+8xj8KlCYQLk4BLZJyfzNfNq/tmWtyQ1r4R1SQbSd088KY/U/wBapD9seRRuj8KX
LN0G+5jI/RAf1o9ov5jWHD+YdaL+4+nzu5wxAPUA4BqJbcIzspKluu3gn8etfLD/ALZeryMV
TwxHGpOA0sjMB+C1l6l+2B4rBK2ul6RAB0doJpM/gK5pVZX0kdK4SzSr78aOj87fgfWGreHN
L10RjU9Ng1FI+EF5EkoX6FgTTNN8L6Ho+PsGi6dZjGMQWqIP0FfGsn7Vfj+8iYfaLC2ZuN6a
eQV9+eKwr346+PNYjkE/iW88sfIBAqxAD1G0Z/Op9vKOtzthwbmk3aSSR94h4bZyCYkUf89e
n5msLXfib4T0EF7/AMRWNsy8lWuQW/AKa/Py68Xa9fSMt1rWrXkZ/hmu5GX/AL54H61SYxyr
bs+C4U5YjJBqXjL7o92lwJXdvbSsvI+yPFP7W/hDS4nj0oza3dL/AAW6lV/Fm7fSvGfFf7WH
irxGj2unR22hQt95kkLTEemegrx8GFiA7yN6AKOKUxIAceYFA3EFB+dcs6nO7o+vwXCGXYSz
n7y8zQ1vxFrHiAF9R1O6vcDjzrtzj8M1gl/s4GEiRWODtfr9adK32RiElJZj3gJxUtuvnsAy
sXyDu+znB5FZ6vQ+vpYShh4/uYJeiHpCrxYRIwp5P7zvUyCSMKFK4XoPMpkYR1Yo7EAtnbFj
uamtLOa/uEt7VJ7idwCscUWSfy6UKD6I0c4UoudZ2QxvNZ9xK5/66UqWU+qOtrErTTscrFEd
zt9K9c8CfsweJfEjQzaux0rTpDvPmrmVx6Ads+vavprwV8IvCngqGH+zdKtvtUeAbiVC8pb/
AH+lbxocyu3Y/P8ANeL8NhU6eGXNI+Z/ht+zN4j8Vql3rEUuiaYRx5mPNceoU9K+nfA/wo8O
+BNOht9OsN0iffup1VpZD2OTXVXepW8FvLcXDqkcSF2d+igda8T8Bftb+C/it8SZPCHhRbrU
pooXuJLwxeXb/u9qsFJ/3l/MUnVp0E5uz5dWflOPzjGZi71nZdkeq+I/HOh+Ebi0h1jWLWwu
byQQQW7yqZpnPRQK+If26v2nPF/hzxZc+AdBu20azis4rufUIpcTSM4fEeeqjgc+1eE6vr2r
61+1vbLrGoXOoXUHjZII2nPyoguQFRB0AAOOOua1v2/kB/aF1klR/wAgq0yce05pqpzVlbaU
WzwuSL3R6N/wULkka4+FpZpGMunXCszkHg+T/iad4jY/8O3fDjd2vgx+v9qyj+lQf8FDWt/7
R+EqlCZv7NuWBHQAeRk1L4iH/GszQj3+08H/ALi0mK8tPnoUpTd23+pVrbC/seyiz+APxqzC
zxpZs6kJnn7JL3/4CK4v9gZ1uPj+pjtQipoNwd2OR8sX/wAUa7/9j+4T/hnP41HeMKsufYfZ
mrgf+CdYc/HOd2ztbwzOQT3/AHluP/rVy2VsV20/MDlvhtM0H7Xtntxz41uxz/1+TVs/t4F7
n9o7UogUB/s+0TkHOP3np9axfhyf+MzNPG9Vj/4Ti5Dg/wDX5NxWv+3RC1n+0PrTSTgIumWk
yNux8phfH8jXXFP65Fvdx/DoB6P+3ZC8Hhj4S2rsSBpz7BnAyY4RVTxXJL/w7y8JRModn1l9
wEmOmoXAz/46K1v+Cgbh7L4Unj5rK5bHsVtgP1zWb4hhWb/gnn4Y+YqY9R2kqMkMNRmBH865
sI0qVL/GxNJ7mN+ydsh/Zs+PzOwZjpuflbOP9Cnqv/wTrJn+MV8dxO7w7KuPb7Tb1c/ZQZX/
AGcf2gx1A00jlcf8udx/iKo/8E6FP/C4L8Acjw7IOOx+0W5qq+kK7X8w9qkY9Dk/hAjXf7ZV
qssrCZvGd8xYn+7cSsB+YFN/bTu/I/aM8WooScyQWrPI6g7SYlU49OBU/wAGBs/bWjRxhv8A
hM9VwCP+niWqX7aUvk/tD+McRRuPJscl1Jx8qnt7V2SS+tO/8hL3R6r/AMFBGe01v4YxxENG
mlXRXMYYcGDH8zVP4oGVf+Cf/wAPWbGH1SIHC5582bFXP+CiUhXxH8NAPkxp14cL0Azb/wCB
qv8AEiOaX/gn/wDDpmkG0anEXftkyz7SPxxXJG3sqDX836mk9ajZe/Z8KP8AsZ/GpsuD5F5G
2ExyLQVi/wDBPi2eX4reJZFZvk0A7cjH3pef5Ct79ny5U/sYfGqMHDJDqAf3f7GpJ/IVmf8A
BPBDJ8SfEzLLCsf9iRrIjyMGL+bgHjtyKWJ0pYhruSee/s5q8P7XXh8M7iYa7frKiRhtrgXD
Mc9uTUX7V9yR+1F4wXZMqi9tcMyZB/0OE1L+zvsh/a40Dyniff4g1Dc28nPzXJ59eMUz9qYb
v2hvE7iKRGa/tBvEww3+ixDgH3I/OnP/AHj/ALc/VEyvy6Hff8FD3Go/EDwNbSZkxpL4LjB5
kUYr4y/bCBHiL4fg9f8AhDrD/wBGT19n/wDBQP5fiR4JCA+c+jOCzNnA8wYr40/bJjWHW/hy
u4P/AMUXp+SPXfPXuZP8K+Zyu/U434TyGPw1qbAAnfjn3GK/QT9u9ptKt/hrdxyzRtHo15MH
2NgbRE3DKCVJwRnHcV8B/C60VvCep4kiiJlI3z/cGBnmv0P/AGwrOz8SeIvhNo11diCC40yW
ORULRs674d+0r1UjsQfaoxa5sfBrv+h00ZpwaH/tDQrb/saaci3Ubq/iCRo28r7/APpMznB7
9cZqj+yTdJD+yx8ZJTjaIrot+7AK4sm9az/i/rLeIP2EPAepI7LFe6yJY05/drJJO20Z5GOn
OelTfstFpP2U/jfKwEsjxzt83QE2TZxXkyheM/8AE/0LKn/BN6KR/iV4qJ2FYtCjKOExyJgf
615j8KGkT9r/AEhPkYt4oujuPf5pDXq//BN9VHxE8Xpk7v7HjyOwxcIK8v8AgysMv7W/h7zi
Qx8U3Ea477ppgc/hUqLVSuv7q/IU/ih6lz9sPzrn9p7xYEIB32fH1jhH/steh/8ABRp1s/GP
gi1Lg3SaTcLuHI++nNee/tfN5X7Tvig5xuls1J9MQwt/NjXe/wDBRqMDx94OeFyZV0WQbnI6
B0/xrZuywzf8rHJ2uyx+0hPFF+x18HIpp1FxKbPy02sTIViYkDkeorW+E9ubn/gn14yihZUa
W6vE3NwAcRrmsb9p2KVf2U/gfJgSSRi3KHcPlY2zkfqK3/hC81n+wL4vWAGW8W7vZYSAGw2Y
8Ajuc15jXLSgn/MvzJjJPYw/+CdcUUfivxzOLmKfOjQgmM/dJnbiuB/ZChB/at8P7ZFbNzqy
8H1tp2H6MPyr0b/gnYZZ/EvxBmcMky2FssYZFRmG9ydw6ferzb9jeSeX9qzw+0q7pFk1Mkbg
ACLa4UdvRRXbp9YxPp+hRzPx/cz/ALVnjFllC7ddiGCD/cjr27/gpMhk8e+F0aZVkbSpSykH
nMnrXi3xttXm/au8WA7wsniCEMA4/wCmQ9PevX/+Ck8kjfEnwgPMZUfSpwyDpxNxTj/Hw8Ov
K3+AGx+01ZHTv2KfhPvcPmLTZfkBPDW28fo2Kx/g4n2P/gn98VJ05kS+u42z0JEUA4/MV1X7
TJEX7Fvwm4eRTa6OWVOuPsKg/wA6534OH7b/AME9vitNLlvMvr6TavBH7m2IrmptLDSv/Ovz
FL4JehX/AOCcKmfxT8QSONuk2yn/AL7krzn9kK2W/wD2qvDrEkA3WoyKPdYJjz/3wfzr0v8A
4JwR7de+I2z/AF40q04PTczS4/XFec/sYho/2pPCxk4LTaovH94W11n9a2aaqYy/8qHH4I+h
Q/a3Yf8ADTHizeBuW6s0G3+8Ihk16H/wUeaST416Od37pdFJ2+/2kV57+1pE3/DVHieOXiJ9
SsgSOuCI1P6Ma77/AIKOmWP4yaS5AdZNFYoF6gC5fJP/AHyKMOuWdGL6x/RB9nm6Fv8AaCtm
h/Yw+B1vwzObVcjoM2sp/wDZq0vgxIh/4J3fEz5gP9K1Ac+yRD+lZv7TEVwn7HHwJcMEkX7N
IB2OLFzirXw4TZ/wTp+IrBTGy3t+MDvloVz+RNRS/gR/6+P8wJv+CcwQ+M/HVxsO2PR7dSfU
lyf/AGQ/nXmv7GzLL+1p4SYjjztWb/yVuq9V/wCCcTKdV+JisPlitLJAQOcFp8/+givLP2KG
t7n9q7w1sMm6Mam4yMDm3mB/9DNauahVxLl/KCd0pLqZH7SEkjftQeNCIo5B/b1tjecEfu46
9l/4KWMV8f8Ag3ICn+zLp8DoMSw14r+0cY5P2mvGIyPPOu2xwQSMeWlez/8ABSYxy/ETwgjy
eQi6VdBGKEhyZYcj2+tOl/vFD/CBufGzVLzw/wDsVfCm7067uLO8EmmlJ7eQoQPLkI5HPU9K
9Y/Y6+O+o+J/2fdZ8U+PdXSSLQdQns5NSmUK32eKCB1aQ9z+9x+FeOftKKr/ALF/weeKUpEj
aZvG04YG1kYkfiKy/gPbTD9gf4rpHtZjf3zZK9AbK0PT8Kbr8uFuv5wP0I8PeJ9L8VaZLd6L
qdnqVs67RNZzJKCcnGcHjPvXEeP/AIAeHPGs88lxaCwvXA/0q3wGbBz06V8e/wDBOC/nj8Rf
EEW9yVVrK2maFidnmNI/OO33e1el/AH9tu8+JHxG0/wRrehpJPezXUdvqVnL+7YRLK/IPPSK
vTjiFOc4LaKTN6OJr4aXPQlZlTxj+zL4l8OCe504nVbNThIgf3gHsO9eT3tvdadOba4t2t54
m3tFcRlH49iK/QTQPGOga/rN/pWn6xa3eraZKI7q0icGSJsZwVPI4+tVvFnw58N+PGmj1bTY
7naMK+NrqT1ww561c6MG4uW8tUfe5TxjisM1HErmXfqfn0940wI2Ku725FRfZ5BGsjIVRiQC
e+Bmvpbxf+yCsCyS+H9W3EAlYbvnPtkAV4br3gjXfC8htNX0q+t5I2OCieZEwx1DCs6kHSdm
fqWD4hwGOtyTt66HLAxyeSCpyTmpLhxZ3KgjeM7vl7UkyRo6LFu3oOj0xsu7M/3iMGsHLl3P
oY1FNXhr6BcyB7ZcD70gx+RplskjK2yMuAcE5FOcKUVWbaFOQQM80LbKYmdJR178U0+ZXN4w
clfb1HlXHVcH6iiqofDAFVJz1GatVRDE5/usfopNGT/cf/vg0EA9R+pFEqFI1ZYs57mQ/wCN
AASAOelAy/3FLevGKULKOiYPruFI8kiFNwf5mA+Vgf6UAWLfTrm6truSOEkRruIJAz9M9ar7
XA5QgUvmCQHzHuTgFAvGFGe1JsfuZiPQoP8AGgBaST54to60jxybQUSTO4A5T/69L5M+6YbS
NnTcjZ/SgByCNcfJkjsRkU9vJlGHhjx7RZ/lUG4EY8z5vTYetNZZGHEgB/FaAJvLiX7gCD0F
saR0Qws24EdMfZjzVcB1Lh5hkYx+9Pc/SpmjZXKbhsD9TOfX6UBYsfaoMOPI64/5dz2FQtLC
ZN3kgfLjlCtMSYkNyrkHGBKR/SpAJgOCrZ/uSZx+YoFYTdbIqKsipJtyQd2KntZwyRhTCSXH
AlK/rQbZZXjISYvsyxBUj8Kjh81ZY/KWZ0DD76p/hQOwrvCgcT7QVLN8tyeeamjZTCWj3FAM
jExNVneWRz5kTDeWU/u1PepZleG1fYdo4GDH/wDXoAHmyp3BlGOpmplnOq27Bdz5PaU8VEqo
pz5Yo2IFC+WuBQTd9mSpbXVw58tfl7ZfNRsAIYwSjHPIzVi2jWNSRwzfcAPFDwWn2aIKixzg
5ZuuKBSqKCvLT1IoY1L/AOqTj3NTTTxhpl8jkxbeJCO+fSr+g+F9a8SXotNG06a+uG6bEO0e
5J4Ar2vwj+yfrmqKp1nVF0l3x+5t3Lk+ox2PvVKnOSukz5vHZ5gcG/3lS/pqfPV0zzsNisme
haYgD9K6jwb4F8R+L0lOk6ddXaRRs7TAuEGB2JHP4V9e+Fv2X/B3h8B5rS41eZSG8y7mJ2n/
AHeB+FeoWGmWmjWyxWdtHbQouzZENox9O9XKPsWuZnwWP41lJOOFj958zeBP2RpLmGyuvEWo
NHHsVmtLZ2BJIzyxHvj8K958L/D7Q/BMOzStMhj2rtMu3MjY9Wxyfer+teOtD8PXFva6hqNr
a3k0620Fu8qh5nboFUEnNfLP7YX7Ymo/CC6bwr4YRB4pMH2ua4uD+6tYHEmxsfxOdq45xmqW
ItP2cN7X+R+e4vNcdjn+9qvl7dD6c8b/ABE8NfDfSZNS8S6ta6VaKvyzXE33z/cQfxHjoK8Z
8e/tVWOn/s9zfE7wnZ/2raSXRt7aG+LRKxE/kbyBz97n6V86/t065ca74L+EWo3r7p7ywkup
QowjSPDC7fL06sff3qnf7Zf+CbmleaSi/wBp4VU6AHUj6/SuKriVUjTnH7Tt8jyj1P8AZ7+M
/ij476R8T9d8QXUdtBplklvbaXaLmCIGOUs4Y4JY+We3pXgX/BPJJpfjujpE4A8OTgnzDg7p
Lbk+9egfsGETfDb4xKp2g28PzN33Q3Wa4n/gnTbXUHxymRFLQp4XncF3yciazA/9CNcVaOuK
Uey/IDjma4vv2tNMtZ5FNjJ4/Tyir7yp+1xg89fTrWj+3yxT4+ayMFh/ZFlg+22eqdk0kX7Y
GkQb2CR/EGPavy8ZvYs9BWp+3/KY/j7qg4YtolmxJ9ds9d9CSjVgn/I/0A7/AP4KObLXW/hh
EELSJYX6gj+6rW4x+tS+KEaD/gmh4dR1IMlzHg/XVJD/AFqP/gpJGG8VfDMN5ig2Goc4x1e3
qbxWrH/gmd4aaRiZEu047capIB+grzqbUqdFr+tQJP2RrT7L+zN8ZpWAZT56Ng8nFsf8a4r/
AIJ44PxxvZRwY/C9wjKRkY+02/QV3H7Ke2X9k74zybQZs37c9PlsFcfqTXD/APBOyNZfjVqa
PkK3he5LbTg8XNvWb9yOMv1sBx/w5V4/2zrNgm5T47uif3OP+Xqetb9ua7Nz+0F4jimjiaS3
02zQq0RJZRBIeP8AvrvWb8NpYX/a+09cHP8AwnN1j5j/AM/c49au/tsXP2H9o7x2xUq/9n2q
qyyYyPs6jByD/eNejL/f4f4EB63/AMFDtsEXw03o8a/ZrtY9sZIXCwYXj3YflWTrreX/AME5
/C+SwZ9R84t5bd7+dz2/2h+Vbv8AwUMkSGD4aGYPEXhvMKkny4xbFj/3zWP4wYQf8E5fCjRz
SRqbqIghuoa6lyDmvKpvloU7/am187gUP2Y7RV/Zc+PrQyJ5jWLgn6Wbn+tUf+CdVpj4y6sp
dcf8I5I5I9DLBxVr9l/ZJ+yv8fXUnP8AZs7EjuRpzN/Oq/8AwTqhA+L+ukFii6AUznnmWCuu
v/Crrz/RA/4kZdjl/gyC/wC2jBEk5Ef/AAmWrvsZeOJpz1qj+2XG6ftM+JrcuTDIbJJBGuSf
9HU/1rR+DwkP7a8CNkL/AMJdrXO4f89J6p/th2wk/ah8U/Kz4exP38f8sIh/JjXVWd66S6QA
9S/4KEtHbeIvhy7PcRj+yr8b1iLE7TD1/MVl/FaRl/YA+HMERaMS6naIjgZzkyvn8Af0rQ/4
KHuYtc+G+1liY6RfE/vDn5jBn+Qqr8W7UP8AsB/CxG2KDqFmQfOxgmOUelcVG3scP/iA0v2f
4FT9jL42uWedXXU8MEOOLACsD/gnsn/FzvFzKrBV0mM4IweZ0Fa37P8ALDZ/sSfGIs0exVv4
jiYnk2qKf0Y1B/wTkXz/ABz4vmEYb/iVQgEPwR5obv71eI96liIruB5h+zHbzv8AtY+HJMPt
XW7+YhrcYxi44pf2rGX/AIae8TRgMqi+shjyMjPk2x/rUn7LhV/2oPDc5YATajqJVfOJKkCf
qKm/aogWD9p/xO5tpXzqVsvyTY3BYbPp9M596cv94/7c/VAdt/wUIlU/EPwYp4VNDdidm0/6
1R0r46/bUjSLxB8NkibdjwRpxJwR/HPX2H/wUOji/wCFm+EHeKZ4pfD7iILIAxbzl68enavk
b9uVom8UfDYxu7QHwPpnl7yCQN02RwBXt5Ra0fmYVdkcT8MST4O1QIxVjKwBUZP3fSvv39tm
S5i8S/CNrSO6+3R6JM3m2yGSWFQYjv2ryoHr2zX58fCuQw+F76REVmFx028/d+tfoX+2xbSR
+IPhayQtcNPoMsIXe6klzEo+6RnBHQ5FaYmNsZB+ZFN8qsZ/xLKv/wAE/PhjI5Jkm1SKT979
4kvcZ4NWP2ViYf2VPjczDCiCfGenFkwP61B8Ubdv+GA/hoVDMralGGLRkFDvuew71f8A2X7Y
XH7JPxnSRJvLkjuh8sbbv+PUn0rxKs/Z05P+/b72dUlyzcSh/wAE3JGk+IXidjGQ39kRbjjk
j7XFnP4Zryn4OXAn/a68NllEZHiqQhSMdJJCT+ua9a/4Jtqr/EjxiwLfJo0YxjjBuFx+PBry
n4IWMl9+2DopTBEOvXUp4PAAlY9vRTWUqlsRXXZL8gau4vsaH7XsZk/aY8Soc7zcWKnPXmGI
H+Q/Ku+/4KQGOH4j+EoGjR2TRpm8t1zuxMOOOnArz/8Aa7hDftSeJXAG77XYvuJbHMcYz09a
9G/4KRQK3xY8KTNLECdFn6tj/ltitm7/AFePaL/QmeqYz9ptCf2UvgfIYhEsk9lJ5IQgBTbM
w+Y9RhvyNdJ8LU8r/gnt4zdAtuTJetvXdleY+cjrWN+1lAsf7LPwCB2ysYdOACv8v/HghrX+
GQWX/gnT4tlEW0Stf7VDcjE0aH9RXLOCdOPlJfmY0t2V/wDgnfb2y33j+8REGzTrJSpDMMl7
k5P90tgcd+K8n/Y5jS+/ax8PtEE241OZjHnADQ3HX6EqP+BD1r2P/gnM5EHxRdmwv2TSuZJB
gYN0T/KvJv2IFJ/ab019q82mohGRhhsIpz+orSq+TE4i3ZfkdBzXx0tLcftZ+I1G7efEMIO2
TGSWhxxXr3/BRaOK9+KXhG2eZIgNKkXzHbAGZcE5/A/ka8h+MzSD9rfXw0mGXxTbKQAD0eIV
6j/wUfsltvir4clDM5l0eUKvp/pD/wDxYovatQqf3H+QHa/tRLj9jv4TmO4SIfZNMACsVLj+
zxjGevTPFYHwmtRF/wAE9fiU8TNFuu77vgnKW6f0rV/asYwfsgfBVHTHmWulID6H+zqofCpc
f8E8PH65J33N9IC3pui/+JNcalag13kn+In8EvQqf8E5N0Nx8VJ8HzI9K0/5+4OLojn6rn/g
PtXmP7F0h1D9pbwhgnJGpPvB6k21xzn1OR+Yr1T/AIJ1OJV+LqgEb9N045PQYW/zmvJv2FiF
/aN8GYIdRFekMvRgLNzx+Vd9d8s8W/7sfyGvgj6CftMk6h+174jV3yv9u2MYRjkEYhxge9dt
/wAFIbt1+OOipGGDx6EY32/dKtLPXK/Ha1E/7Y+tQAAyXPiLSolLdFJEGP8A0IV13/BRWAn4
6aXjGDoUf/o6elRV69Fdo/ohL+C/Uv8A7Tbn/hjX4FFmJLQ2jJk9QdPc5H5ipvBExX/gnF8Q
WZ8btUuVBJ6gz2wx+PNS/tc24t/2UfgJHGAIo7KxVff/AIleP61S8HoZ/wDgm344K9P7Xnbn
0W5gzWMXbDwa/wCfn6lLaXobH/BNcst98TnIJYWenMc9fvXf+A/KvO/2F1DftP6M5YSj7PqM
oOc4HkuP616Z/wAE2l33fxQ5AB0/Tlye3N5XmH7BYH/DR+lFWDf8S++Xj/cz/wCzCt61NOWI
fkhU/wCFEwv2gQy/tReMJkljjP8AwkNmCjKCQNiZr1T/AIKTXTj4n+Hts+1m0G4G11+Vj9p6
D8h+Qryb9ouIr+1N41TIJbxFZ4I6fdjH/swr0/8A4KQyBfi5oGBvLaBMSrdFHnl8j3xThG2I
of4f0A6L9py6nP7F/wAFrYTJFHP/AGbl0PQf2dKcD34qP4HXFzL+wH8Tp5iVb7RfjKrtG1bW
AZP5cn2pn7VE5P7FnwPQIquP7IcEdOdNnIp3wHZ7r9gT4twkhR9r1VIy3TBggA/U1hKN8Kl/
f/UB/wDwTesEfVfiLM4AAtNPG5B8w/eXHBP1FeQ/sbSHUP2qfCPmeW0Ukt/OWOC8f+jXRwD1
HOPzr17/AIJqNKdW+J4YgxfZtMKj2L3Tf0NeOfsSwP8A8NNeDJVwW/0/zMEHA+yTVdSLjOu0
/soDT8X+IdR0/wDbd1C607UJrCWfxha20klvIVMiG4iVlcg8jGRg9iRX1X+0N+2Bq37PvxTt
NDXQh4h0y50iC+Z1kKTI/wBolRzg9QUQkfT2r5D8V2tvL+2beCFRDIfHMO95GOGK3acf+Omu
0/4KOK8fx00rZGDIPCtvkl8f8t72taM5OtSbf2b/AHJDP0M0X4laBrHhfw/4gl1S302y1qGO
ezS8mWIuHi3bcsRuPGa6NI7HVU2yJBeQSA5yVYEf1r4D/a+SM/sr/BcbDEDLYqfKcrgDT2Yg
Y7YrY+DXxB8Q/DT9gW98U6bfGTVrS+uPs7XRMwC/a1iAOefWtaeP5KSqTje7S+92CM2pyjHS
x9S+KP2cfBfikSyHTf7PnZiDPa/uz19sCvI/E37Gd1YeY2ha4k5OSsOoDk+i7gePrWl+yx+1
Vf8Axy0zWxq2nw6fq+jCKS5lgz5MscpchiOxARs4HpXrfgH43eE/ibZ293oOr2moQTDdGscg
3gYBII9VBBI/nWtTH0VOUXH3YvVnt4TPMwwf8Kq7dj5D8Q/s/eOfDgLtost2gOC1m5kA759e
1eealpl/p0rR3trc2zgcrcRlcD8ulfp3DeQTA87hjkdP16fhWZrXhvRNeiZLzT4rsMvKOq5x
649K256NS0qcrJ9z7HD8c4mGmJhdd1ufmlZtFAu47JNw+UHB/KpTPngjyvcrX3Lq/wCzB4F1
xPNTSjZlvm32kzx/pmuK1T9i/SJ5S9jrl7aL2RiHFdPsNL8yPp8Lxxl1RP2t0z5P3j++G/DF
V5lZmPBI7cV9D6/+xx4gs1LaVqlldpjlJVaMk/h1rjNS/Zv8d6TGM6St0PS1l3f+hYrmqQlF
XjqfQ4biTLcRtUt6nlMZy6gy8Z7x1amLxFxFMqHIODHg10+p/DDxRpAP2jw3qSsOyQ7/AP0E
mub1DStQtkDXOnXsMg+8JLZ1/mK5/wB52PXp5lgaiuqqI3CO26QxyOerADmmh4icApn0yKjN
w9pGAyyovvF/jzShZof3jMQg6Ns4P0rRX6nUqtCSvGon8yVER5FG9EHfcSB+lAjALfvFbJ6i
UjP5mq015FKBm4jJHZiq4/WnRX8MSbTJbn3aVf8AGk7/AGUV7Sn1lb1aLQhYYwT+E3/16U+Z
GjEO+cfwyBj+tMUmVS8YEy9f3Th/5Gp4rS4lBKwTNweBExP6Co/edjKdejF29pH7yLexRXJk
II+9leaTLE7vNkyefuKf1qVrO5jtY4jaXO5V5xA+Ov0qzZeHtXuwn2fR9Rn6Y2WknP0yKa9p
2Mnj8HBe/VWhTDyRBjvlPOCPKXrUYlXmTrjjaYR/Su7074QeONXid7fwnqZSSQsGk2Q8HH95
hWrbfst/ES7kGNKitVbndcX6AD64zW/sqnY86fEOVQV/a/keWoIr922rFG3chSD+IFMaOKBR
EnktznIjYfrXvVh+x94wdU8/U9Pt2I5CzSPj6kYz+ldLpv7FVycPfeKlWTuLW1G3/wAfJP61
rHD1JeR5dfi7KaLXvt37HzI/kRqvyQZ7/My0wvbyDlIGB9ZCa+wbD9jfw9bTxvea5qt0o+9G
JY0Vv++Vz+tdto37O3gHR2z/AGJFef7V67T5/BiRQ6Ljo2jyMVxzgIRvRTkz4Qs4X1CdIbWF
J5nPypG7uW9gBXeaL8DfG/iaRVtPDVxZRSLxNeuYgvvhgDX3Tp3h7SNEh2WdpDaxd1hhWP8A
oBViTUrezZAVkO9xHu25OeeD/nvWM6lCnFSlL18j5avxviqkXGgreZ8zaR+yDdztatrOtxWE
cKBWhsIi7uSMk724H1r0fw7+y94I0WGNbi0bVJ2b5p75y27HsuFHbqDW54i+OngbRvEOm+Hr
rxFZDXNQuks4NPjlEkxkbAAKqTt/HFeF/tG/twSfA7x9N4SsvDP9py28Ed7Ndy3XlqpYEkBQ
p3cKfTnFRSxMVUdOMb6N6+Wx8hiM6zHEt+0quz6H1XpukWGjQpb2dtbWsUa4WK3XaoH8qzvF
vj7Q/AmkTazreq2um6bBhXubmcIgJOAoPqTxjPWvkv8Abp+K/ijwd4Q8HJomvXejvrjP9sey
ZRIEVQ21GK/Lz3HJrk/iRrF9qX/BPrwtf3moXV5fT3FlJLPdhpyxN6QWY4+Y4ArKOYVJqk46
c3TseO5OT9/U+mrD9pfw74r+HXizxf4VuP7c03w+LhJyC0IkeKISbFLDphlywHRge9eIfs3/
ALV/i/47/Gi40PVY9Ps9CTTZruG207c5JV4FG6U9xvPQetcl+y/cNd/sh/GVBhUfU9UjUrEF
z/oFsc47cDpXn/8AwTxMq/Ha6Uhmji8O3U5+TGFa6tCD+Rrjrczo4pN6wtb52CKu7GB4DuH1
b9t3Tri4ka7u18VzBp5JiWwrsAoyflAA+79an/b+kWT4760sa7JX0eyBCyqDjY/Xvjmsv4TF
R+2rZEsDnxdeZYZwWEs4I/SrX7fTl/jt4kaZ2YrpFoFUR4Kjy34zXThouOKjTbveDZnB80b+
Z6T+3hZS6f4e+D9rJCI0SykXYrD5QIoxjB6AAfpVPxESn/BM/wAMkjaG1QAuWG441eQHgdeB
+ldF/wAFD/lsPhfFxlIbuMs3XIhj/T5hXNeKMP8A8E0PCYyFJ1ZiN3cHVpWH6MKwpQTo0fKR
SXNzeRsfsVRQH4RfGa6immVWiW3XbhQu2zdt+O3LHn3NYH/BOS2ki+NWou8bsp8LT7MwkA/6
TZDg4rb/AGIVU/A/4yQCRN5Vhk5xn7Cx9Kw/+CdUsEvxov5miWIf8IlOzbZS27N7a447fcP6
Uq/u/W5+n5CTukzzjRfMuP2x7BjEd6+PoTIVX5R/pqc1t/t+Z/4X5rDN0Gi2WCe33/8AE/nW
J4clEH7YdhChhiDfEFYnC5y2L9Qf/QT+daX/AAUElef4/a8kRwv9j2Cjdx/C2K6I/wAWEv7r
Gel/8FIUEfjH4fvs3A6ZqeFx9zD2+D7VN8Qrj7J/wTj8H2yr5jS3cB45z/pspP15wap/8FIv
Kk8a+BEGFZtM1JQ4bqWe3xVjx7aGD/gnP4Ujn81JReQKYi4B/wCP2YZyM+lcdKNqVD+urMpz
cWX/ANk0La/skfGJ3wJJJdRCq3Vv+JbHwPWuM/4J6RtB8e9SGwmN/C91zjgf6Vb12n7LYSX9
kf4xPG8kixnUBum+8pXTIs4/OuG/4J9RTn45X0LzTDPhe6JJcYx9qtxU1FdYpehondXOL+GE
Hmftq6ftO1F8c3jYC5BAuLg/0z+FSftqObz9pPxxunJ2wWS7ScdbFD09yfzqb4Psk37ZGkwt
Edx8Y6jIjtx0kuW5/BhVf9tGWaL9pLx4ku9/k087oiBgfYYjj9K7ar/2xSXSCGex/wDBSNI3
vfhah2t+41Dv1+W2B/Qj860fiRDb2H/BPTwOotIplZLH92JAACWYlseucn8ap/8ABRi2Bvfh
MArlza6mQxx1X7GMn8RUnxgnuYv2A/hwEZh5kunxn5B0+c/0rglHlw2H853Awf2aY44v2NPj
zcArG5tb9GxgFQNMOMn0GazP+CdXm/8AC3dbjTZLH/YXJEmc/wCkw8n8MVr/ALO7yf8ADGPx
/wCdv7rUArleeNNAxj0+YfrVX/gnhNLcfF/XpHkDsdDKhAgUgmeAA8duK6q/8Kv/AIv8gOJ+
ATLN+2jpshIcP4n1V9x5zmS4Oc+4xTP2r23/ALXniOJ13Rm/0xTuGQFNpaHH0JJ/Oq37NVxN
d/tdaC5YmNtd1Dhkx1Ex/pVz9qtt/wC2H4kiEcbs+o6QoMgzj/RbOt3riH/gJbtY9I/4KQHy
fFXgiJJ9gTSr4Kqrnb88QAFQ/G62EX7B/wAJB5+AbiyONn+sPkyEHHY8E/hUv/BR7f8A8Jj4
HIt4mH9m3RHy8ndKmO9RfHFw37CnwZYZw9zp+OPS3uD/AErjoq9Gh/iLl7s3EZ8DHS2/YU+M
BGCXe7VyIuhMMXJGRzU//BOuZZPHfjWMIGRNNiQTeVsBxIBVD4Lfv/2GPjG67vkmuWxjGcxR
Crv/AATpZZviB41EgjXfpyOI9hLAeb396qp8OJ9f8hHn37KCq/7TPhMEbna6u2bdbYUgpLkg
475HPv71U/aWja4/aq15MFwdU0/35Mdtn+Q/KrX7GMwk/aN8MIY7dmVrk7wG3D5SOOP9k1X/
AGkolb9qzXdwV9mpWL4ZW/u2/T3rSS/2tL+5/kHQ7v8A4KKPJpvxQ8Ow7UeRdCllUvEGYHzH
5B/AflXyJ+3PGV8UfDYCPZ/xRGnfKBtA+efPH1zX17/wUaFtN8WPD0KhQzeHpEeIZG8GZ+h7
V8nftzqknib4ZvAMQt4G04oM5wPOucCvXytcjj8/0MKuyPOvg7bx3Wh3cEsgjja5ALEZ6iv0
G/bltjZ+L/hmbczSvb6HKyFWKgbZEOTjPI/rXwJ8DIhLp8pMhhC3W/zBGJMFVyOD15Ffob+3
HE83j7wDa21/Hp9xPpNwzyys0SMrTxRjJVGPG8HHt7UYyUlmEEtr/oU4q10c38UGCfsC/CnA
Eg/tK1lYuSTIc3B+Y8Va/ZpKr+yB8Z5kzCxW7IKs3y/6Gp45/wBs/kKo/FRkH7BXww2zxzp9
phKyxk7GI+2HK5AOOBjj0rQ/Zrwn7I3xl5VUCXe0v90r9jiyT75rxsR/Bf8A18/U2n/Efoiv
/wAE3RFbePPGIidSx0W2Ylixz+/Geprjf2aNMnu/2urLy2QL/a2oSE7mG5BBOR2PfNdh/wAE
43ZfiJ4uGAgGj24MZkJZh53IB7Vi/AxYNM/bhs7S2vbfUrVdU1BFeymcJzbykkZ7DcVI9QT3
oUVKti290l+RMnZxsc5+2AwP7UPiby8MPtVipDTcAbIz0ru/+ClRY/ErwiIE2yjRLliYnHIE
7cdP9kV59+10wT9pfxX8pLfadPy24c5ijya9K/4KRYHjrwmehGh3RJCgkDzCf5mtaSv7C+/K
/wBBT2Ze/a5jc/sufAMyjDRxaeBucAkfYFHpU/w1u4YP+CcvihwGLxrqgC9VJF6P/iRVT9rq
Sc/sxfAUp+8Ahs8qwGcjT0I4/P8AWrPw73H/AIJveI2dWTf/AGnkbBjm9PGawavTjfrJfmzG
nuxv/BOjNxZfFmMFYmWLTYlZUBPW955H+zXmn7Dqx3f7SVvdfKXi0/UWGEGGASJQSPp6V6h/
wTrjaOL4r7UAbZprcj31DmvMP2Emih/aKsYUUkzaTfKTj7pxGa1xKSqYuS3SVvuOg5j4xRiX
9sbXoTwr+MbKMkccPPCp/nXqH/BSGZbr4reG7c5/c6NI3yjJ5uXH/sgrzH4xk/8ADZmslQR/
xWlp09rm1x/X9a9D/wCCkK7PixojqdjHQnJYcZ/0mU0KK9ph1/df5IDs/wBsC3+y/sm/CGOM
8Wq6cqmQEbtumnGfyql8OkMf/BOvx0oJYpNqA/doSf8AXBf5Vb/a/H2r9lT4QuQWEhsAV/7h
jZqH4ewf2f8A8E6vGU2RG07ak2SpzxeBc/lXn2/2dP8Avr82D+CXoM/4JxESN8XF2Lg22mDB
6YIv8j6V5X+xTCLL9prwkI1RYgdQCRL0UfYZOK9R/wCCbg3/APC4S43D7NpOCTgdL7mvIf2H
pd37Rvg08PI8F+5ZWLbj9hk+YegruxC/eYtLblj+QL4I+hqfGBRc/txXaNwD4u0ZePQ/Zh/S
uk/4KITvJ8etPhULkeHImUn1865/wrn/AItr/wAZ0XMXRv8AhMNE+b8batj/AIKNFovjnYsm
PMHhtOT7XNyK0Xu16Fv5f0Ql/BfqdV+1tGf+GTvgDApy9rYafuZujAaSeT+NReFbM2H/AATQ
8VgkMW1C559Qb5Fz/wCO1a/a6iDfsufBEE7cWNiCv8PGluCP0FQ+GZPP/wCCZniYqMj7XdYx
3P8AaK1xXvhYv+/+rKW0vQu/8E3o3c/FMBHUm006MMCOM/bDmvN/+CffmH496Y0mD/xJrx84
74g/xNenf8E2lUXHxSIHRdNH4ZvK80/4J83IuPjzZLjldGv8ewH2bFbqTk8VfsvyJh/Cicz8
eIRcftYeLo2Jw/i2yjJ7gM8P8sV6N/wUmbyPi1oMnXb4cc4PvKV/lXnvxpVn/a48SDBYnxnY
AjHUb4a9A/4KRIZfi5obEEoPDZUqe+ZZ/wD4lfyFa3tWw/8Ah/RDN/8AapTyv2OfgZB1zLpY
JPXb/ZUuP51a+EVmtt/wTu8eyozBrhtSuW/3t0aY+mEFH7WSrD+yJ8EEKAsZtKTccjH/ABKp
O9WvhPB9k/4J0+MkdvMcx6hghiwIM6j+tc9R2wcGus/1Ap/8E2l8rV/ibGOQLbTFyfY3grxn
9im4L/tNeCZVRIs2l4XVFADE2k5ya9t/4Jr2k8WofEt5/LYeRpg3KQScNcgk/r+deMfsQRLN
+0Z4LcqFItL7g/8AXm+P5n9acnzSxF/5V+oEus3i6f8Atq3bS20VyZPHIi2S5wu67UBhjuMn
FdX/AMFEMy/HLSS+Gb/hFbPJKgk7ru+U/wAq4bxYzN+2leMSSR4/XB+l9j+ld1/wUYIT45aV
tIH/ABStuOPa+vsfoa0oJe2pf9ewOx/bMY2f7MnwbtiBuWSBuf8AZ0/aP0aqehzH/h2drZxy
moug+jaqg/rV/wDbSCy/s+fCAnDMZIh+H2EVT0BFP/BMTXSQN39oP9c/2tHXNBJ4Wk31kvzB
fxZegz/gnI7X0nxPiYkZtLKMegH+kjNcZ/wTu8Uaq3xV0fw/9rC6Q+lz3rWyxrtMoiiQNnGe
h/Su9/4JvoizfE8SAJB5Nkd3/gRmvLP+Cd5WP47aOBn5dDuBjocbUH9BWtZr/ao9Lr8gNnWP
jX478P8A7V2raDp3iW+j0pvGa2ZszKWjMZuFjI2npxzxX0J+0p+2HrnwA+L8Gix6Na6zob6R
FqEiFik4Z5bhWIOD8o8tePrXyf4l055v21NSK70Z/HkajLZwfPUn9Qa7X/go44X46WbLJ8v/
AAjMG3B6A3d0pH5U/q9OVWjFrRxd/wALDUmtj7U+In7T2ifCHQfCuqeJY71bbXwogSzi80o3
krIQ3PuR0rp9A+PPhbxD4EPjS31e1XwwJHR7+4BhWMhwm0gnruIFfHn7d8m74V/BvJGGQs3u
fs0PP1wTVTTpCf8AgmfqZJJJvFLZUDn+04B/LIryo06jhB06jUnK347ClZ7n3X4Y+JvhrxnZ
z3mjazp2q2ltgzXNtKrJGvOcnPH3T+VaGmeKdF120iubDULXUI5Y/M32kySDGAT0bnrXwB+w
7/yTH4xggCFbXjj5R/o1wT+uDXI/8E7muJPjMib5zbQ6PcMIRJ8uf3IyF/Fv1r1K1avQddOX
wWFa65WfqCs1uqKH+RGYrsIIz/hUUsNhMpXy0YHrwK/NzSviL4rsf2220m18Tao2kT+LDaSa
dcSFoxDuIKAE4x2roP2s/wBo74i/Cf43alp3hXW2s9Ng0uCb7HdQJKhZlkLNz0PA6elXSxGK
dSjyyXLJNu+5UHKCtFn3xN4b0e7H7ywtJB/00jUn+VRt4a0SdDEdNtWXoEMK4H6V8p/tPftB
+MfhP4V+HV7oE9ompa1ayS3gurbzVYCKB9yjoCN7CofEn7RnjJf2O9N+IMN1b2vie7uYLUyx
2itCC1y0TMEPHRCfxqKeLxcYRlKmmpPlv6u1zf6xV25n959Vv4E8NDmTw7pzk9zbxn+lMb4Z
+Ebo+Y/hnTy3Ti2j/wAK+Xv2Wf2hPGHxM+HXxB1rxFc2l7faGvnWckFssMbKYJJAGVevQZ+l
ZP7LX7YvjD43/EdfC+u6dptlBJps94J7CCWJg67cAl2I6n9a6HiK0arairR0Yliay+2/vZ9d
WvhDQNOOLTS7KzA7Q20a/wAhWnFY2YG1IYAfVkX/AAr4U0X9s74gav8AtEWHg1rPS4NFl8SP
pTqLXM5h86RSd3m4yAo7fhVP9rD9qH4kfDP426v4Y8N6nb2WjwWdtJHHNYrMzPKuZMSE5BU4
wPet4YuvObgora4nWqS3kz72ksbUN80cGf8AZiX/AAqWL7PC23CABchggG3j0FfFv7bfxu8c
fCnR/BEPhLWptKm1S2mlupRaRzNJtRDkFvu8selUvFHxV8YxfsKaB4th8SalD4klniWfVYmx
M4N3KvDe6qAfYCuKWMxMo0pxVlKTT9CXUm92fcX2+NCAGj+b5RIUx/X2rOj8VWQlkhheOefl
vKRldxggEkAnHLLjPvXw/wDBvxt4m8a/sYfFbXdb1W+1XVoJr+3iv7mR2mSNba2ZVBHIALMf
xNeff8E4IfO+OPieOVdwbw/JJmZGbLC8g2nLZ5wTW8sTXcavLLVLTyMXG5+jM/jfS7e5gglu
rGOaeUxRRGePfK2Oij8DXknxb/bL8CfCDVbrRNUlu77xHAm59MsLN5/KyMqXfhQDkV8Cfsx2
sCftieHGaOLzW1/U2aXyuWIjujknv0B/Cp/2zBEP2jvFhRI1kJtDI37wM5NvGTkdDyf1qXKs
q6hOba5biUUtkfdX7RP7V9j+z/e6Va6j4e1HV7i/inlRdNiRURY2AJZmcddy9Ae9ZXxA/avf
wt+z7ofxNsNEFwurzQQRWF5MY/LLvIpLMobONnp3rxH/AIKUraReKPA9xIkRla1u4RvibaFE
sRPI6cZ/OqXxjuTJ+wB8NVS6SR7hrCT7Qsrc5WR+p54J/SuGjCdalQqt6uTT81dmqbjsenfD
D9o/xP8AFf4D/ErxXOmm6Ne6HDcJaSaV5rDIthIGLOeCGbsO1edfsCfEXxT49+Kvi6TxD4o1
XXmbR4rhVvrt5Y4nM6LlEJ2rx6Cqn7NDw2/7HPxpkhlL7Rdh2mYHa39nRHAwM4yc1lf8EzwT
8UfGDPJGw/sW3ACk/L/pC561dWKdGu3un/k1+IKTUeVbHm3w4Vbr9rfRXcSZ/wCE1uFyrDG4
XDkdev41p/t7ED9oHxWSkhaHSrcAgj/nmT/7Mawfh3BHJ+17oJaUpbt45mbKH+Pz5sD6YArR
/bwItv2h/Fwb5y2m2wyef+WYzXpU23jYX602R0Paf+Cj0/l2fw0txHNsUXeMgE7VVADx67qb
8QY93/BN7waCrKXlsxzkHH2xjVL/AIKSSfaJvhoCp/49rkY/G1z/ADb9avfEEEf8E3PA+M/c
sG/E3Wc/rXlYf4cO33/VjJf2WZBD+xX8X5sDK32pyc56/wBlW9cD/wAE61jb496sNxkA8LTR
7cs3H2qzGetdt+yqjXH7Fvxjj3pGGvtTCuXOAP7LtxmuL/4J1xM/x81hcnK+F5vnBwGP2qx/
+vXVLVYuL2bV/uHe2qOR+Dzzf8Nl2my5jjjn8WXgkiOGyvnXBA9sEn3p37fF06fHfxYJWLeX
pNoAQxAbEDt/OofhEu39tDSwCGB8Z6iBj+6JrjA/Krf7fYtrn47eJgHxImj2u4D+8EYf+g/p
XZS0x8f8DJSsrI9f/wCCkCb774dQBdgDagoPmDtFGvp6LmsTxDKZ/wDgmp4MA2qFvo1G0hsg
aiwBPua6L/gpLcONT+HuWI2jUiMKDg+XD/8AFH86wfGESj/gml4LSHKSC+hxhQvH9oNkcVy4
azpUr92Pa9iz+xmsv/CgvjbNFvMiAvkYwT9hIwK5/wD4J0PJ/wALa1QgMxTwm6ALbgHBvIj1
zXQ/sdnyv2d/jdINkTpLMwAX7pGmA/zrD/4J27G+LGuGNY2L+GflCpjb/pEJI9qmurwxV+6B
HnHhuGa//bM0tQro/wDwsCeblMYCXcj8fig/Or/7eCyN+0LrSMryZ03T035AyNjUvw/mV/2z
dK2pBA6+Nb4MVYuW/wBIl656VZ/bwaOH9ovWZXQSKml6fkY4J2HtWrf76EV/IwPRf+Cjxjg8
c+B18iN1bRr1QGGQmJbY5HvUXxKPlf8ABO74eMoA+1atFG/sPtV2/wDNR+dL/wAFJGDeO/AY
BGf7IveP+28I/p+lVPiROP8Ah3f8Mtzjb/bEOMn/AKbXtc9PShQf9bnPU3Nn9mC5a3/Y0+N1
xtAC/wBquB2z/Zcf/wASK5X/AIJ5W0LfHrVJt5Yx+HLmMKUbBBu7brz710n7McTSfsW/HAFt
ySJq20dh/wASpeayP+CeFk1r8ZdVleTO7QJkyecH7Vbf4Gs67tSxUlvp+htHZHA/AqWWX9rX
RPtEYLt4r1GXeo+YDy7l8D2yoqv+2rEZP2oPiKNqupGnEEE8f6DAuP1JrT+CUUsX7Y+hSwQy
wWkfii+jxcSBmy0VycZ78A1l/tkkJ+1b4/WNjsc6cWHq32K1rtqL94pd4Io9l/4KJFZtc+GM
AVTKtjqMpLS7AB/orHA7n5aT4wRr/wAMB/DJsMCZtLfhiOsUjH9aX/goo4s9Z+GUkeJJprDU
lZD/AHSbQFh+BaofjQxX/gn/APCnEcgzPpgPzdhFP/QfpWdOCnh8NzfzGM209DO/ZrxN+xP8
fX5B2ah1YnrpsZ71B/wTvSNfi54kBdhN/Yke3BxgC5X/AOJFSfs6sI/2Jf2gdgKYiv8AjOcH
+zY6h/4J0KrfGfxI5G4jRUAPt9pT/E/rTxK/d1/8X6I0i7pHn37LC2w/at0VyZF8vXb7GZtw
PN0vT/gA/OrH7Ts3nftleJXx/q9W0hR74t7IVQ/ZhuxdftU+F4zny5dY1B3Kjr8tyQf/AB7P
41b/AGklRv2wfEPkCWaM61pa7lAJJEdoCDn0wK6P+Yp/4F+gS2R6N/wUgYn4ieA1ymE0qU4O
ef8ASI15596k+NCkfsP/AATjkRWj+1WIO6TZ/wAutz/FU3/BRZgfiJ4M+RyF0ec8sBj9+f6g
fkKm+M3k3H7FPwWhYOuy5tDlGBJP2e4xx+VcVDSjQ/xf5lz1qP5GF8JjDbfsI/FaZSkTSy3A
KPISG+WAcH/PWtX/AIJ1qn/Cc+MmWPy3WyhG5ZCcjzKq/Ce0CfsEfFMETBjJcgqQuAf3AGP1
rU/4J2wLH498aKIpSPssfQL/AM9aMRpSxDW9xHl37FswP7SnhgiNdzreNxP/AHUdv61H+0PO
Jv2q/EEk26Ix61ZIo+0cMFW26/nVj9imNW/aT8P5gY7Yb4ryOD5T1U/aNs0i/av15zGSra9Y
jbuHHyW2a2a/2v8A7cDod5/wUZUH4n6RneJDoaGIxuGyRcS9SR/KvlP9u+XzPE/wvbATPgLT
CVTpnzbnJr6v/wCCicCy/Fnw+fLOP7AKnPP/AC9H+m79a+UP23Qg8U/CpGICj4e6ZwfXzbiv
ay1fD8/0MKuyOL+BFv8AatCmtw2GkvBGApweVH/xQr9B/wBuKL+zPHfg4yxrOsGlXBNvcRmS
Ocx3MLeUxXlVILHI5yor8/fgBIVs4k2qwbVEU5HqIhX6Cft8S2v/AAn3g9LmC2w1veMHm3hR
hlO35T3z+lc2P/3+Hz/I6aPwMwPi3ZTJ+wL8NFKSq32i3ZAQoOXhuAPYckVY/Z7QS/safGTb
/q2+1hs+otYQf1p3xihS3/YJ+GCrFEuJ7A4VWxyknqc/xUz9nR1i/Ys+MTsQsRlvgGP/AFxg
FeBN81FyXWa/Mki/4JvBbj4heMpUBZv7Ot8cf3pyT+q1wX7KkCt+1vpJcEH+0dWPI7eTcV3X
/BNhPL8c+NCWB26dbAbW6gTPXDfsr/J+1/pMIyQNQ1UZJz/yxuD/AFrrX8fE+i/IHpZdzP8A
2rLYXX7U/iKJlb95qOmIxxxsMcQ/lXoP/BSwL/wnfhmNmCl9CuwflLDBmwvSvPf2rYWP7Vfi
ARq7SNqWnIvzjqFhA4/GvQP+Ckfm23jjwpKkzKTodwuR1I885FbUqi9vQt/KwNb9rxLTUP2a
/gbH9qhs4XW0AkCNx/xLiAcdeSwFP8CBX/4JtakjzrbqZroOYc7CP7QGc57VF+2Gz6b+zd8D
YhI0mwWvzNjnbYA/0qb4d/uP+Cc2ryykEebfSDeMj5dRHUd645yUsPT/AMa/NgWP+Ccwa4tv
inKBESUsFX7x+UG/IP5MK8z/AGE18r9ou1R2i3f2TfHEef8ApkOfxYV6j/wTsvnm0n4iQ+bu
uU+xrKkcQUR8XWADnnIP4V53/wAE/rIt+0fcyFZgIdCvXJGOSZbVf/ZqmpFyrYx+n5Acp8VY
jP8AtpalGmC0njbTQvPHzXcBFdj/AMFIZZG+LemI4+VPD5YfTzpq474mN9l/bXulUvM6eNdM
JLDk7buCuw/4KStt+LVg3p4eI/Kaau2KvVwy/uv8kB3f7Xx8r9lT4Qoc791mBhscmwkA/Wm+
Erjzf+CaOus2cSJqKNznk6jx+lTftgmNP2Y/hArrv/fWCgZx/wAuTH+tP8BxLcf8E0NXOzyg
Y78bRz11Fuf0rzf+YeEu89PxB/DL0Kf/AATnAj0z4vMSCBbaYvB7pFd7v5ivGf2DAZP2kfCB
j/1iWV6ozxz9kYV7P/wTljjGi/FeQJzIloOvT91c14z+wlKG/aS8IYGwm0v349rdxj9K1d74
p+SFH4I+ht/GIhv27Loj/ocdGz9d9vmtP/go4ob47WQbo3hpB+dzcn+QNZPxdha3/bluix3E
+MtHP/j9vWp/wUgfZ8c7F8Zx4ZiOP+213XZDXEU7fy/ohr+E/U7/APbatDb/ALNXwbt43CLG
bdFyMg/8S5sj/wAeFZulAt/wS51SNiqM11MQMEL8usZPTnnaR+Fan7bkzt+zf8IZJE2MrwMB
nr/xLhWVZ/uv+CYWpHrtupf/AB7Wdv8A7P8ApXDDTBxi9+f9RraXoav/AATadWuvimwjWFX+
xFY05Vf+Po4HsBIteXf8E7UMX7QVqzdDoF5+rQD+YNenf8E3MLP8TsngGyGf+AT/APxP615h
/wAE9bgN8ebJ1+Yf2Dc/+jYq1Wixc3tZfkTD+HEz/i4qt+2nqUbBj5vjawjO1sf8vFuP5g12
P/BR6WVfi7oQAwF8NheT/wBNZh/7MK4z4sTof22bzdkH/hO7HoM/8vkNdt/wUgaMfFrR23nj
w8DjH/TZq33q4d/3f0RhKDcro6n9rS5Mf7JfwRMpCp52l8+50uSr/wAKAZv+Cc3iwRgybk1A
fL/18Af0NUf2uYll/ZR+CsUbgqs+n/Mw5+TTnHT3zVn4Y7V/4JxeKjJtAAvxuAx1ul/+K/Ss
JTX1OH+M6Bv/AAThtxBL8SyRiUw2CyD2AuP/AIoV4l+xHIT+0H4MmPDrZ3jD6fZpP6MK9m/4
Jwv9kHxKH38Q2fJ/7a143+xMpm/aO8HRxAEJBfFsnoPsbcVmv4mKX91fqBH4l23f7Y85iBLf
8J2+cjHS/J/oa6v/AIKITzH47xRqswaDw1bAYUYybm8Pf61zXieC3b9sC5jRm85fHjEkcbc6
gV/H736V1H/BRq5VfjmgCMzv4ZtSW34wRLdsBXVhvdxFOb25LfMwlFt6HfftrRLbfAj4MKFY
FVUPkdxZgH9azdAkEn/BM7XioLf8TRn4HYatHVn9uObyfgj8G+GJZS3LdP8AQlbFZ3hkMn/B
MzW2kUqRfsdoOM51WM1zQ0w8J9OZL53No/xZehJ+wLc+ToHxemYMogsYW5GOkdyTXnn/AAT4
89vjtpkjqCT4enyAnOcr/nNegfsGH7V4d+NDldkB06NSmc8+Tcc5riv+Cf8AcJb/AB90rZGd
50a6iD7uwEbDj/gWKut8WKXmvyKjpOMn0Mu8W4uf20r65iC4/wCE/kchuT8t8R0+hNdF/wAF
GiU+NigOgVPDdnwU5wbic/1rlLyVm/bXvFCElfH8wO1tuR9uNdZ/wUJnmh+NsywSSAy+H7QE
DDYCvM2K6o64mj5RZCW53P7eEhHwo+ECbkJKO4wvUCygU/qRVTTIvJ/4Jq6vLMCqG9EwGPvD
+1ouP0NX/wBu+It8Nvg2zZVvJmJB/wCuFrVLT5JH/wCCad+XJkAv0IUD01SNv/Zv0rzKbTp0
n/f/AFKI/wBie7DfBD44yMNiLYSvs/uj7LNXM/8ABOrj406gT/rB4ekZf93zhW7+xujQfBf4
7xlWJl0+T5m45NpIcY/Gsz/gnfaBfjNqirvYN4dZQ4HT96tdFbV4ld2vyA5+0Yr+3kMqw2eN
JiePW4Zh+hpv7fRJ/aB1WJRFuk0i2jDSMRtJjlA/DLCpNIkmm/braeaSPYfGjKyAMSCXfHOM
dFzTP281J+P2tFlbY+m2J3IeQNhJXHvnr7VvB/7RRX9xgd9+3fB9n8KfCLzgsjDTrlC6u2CQ
tv0/Kn+KmVP+CcfhJSwyb6Bvw+2PR+3wHbwt8Ik+VQLK4ADNkgbLfH6Gk8XyqP8Agm34OxK5
Et3BtaTt/pj9RXPDXD4Zr+Zr8WBofsVRlPgN8X3BDAQTZ2nOMWcn/wAUK4v/AIJ2rFa/GDWr
y6kMENl4euHkc4wg82A5PtXY/sUKZf2f/i+GaKTfHcLwvT/Qm/wrkv8AgnNBFffF3xHDcRJJ
bzeG50khx8rKZoAQfrSm7rFyXWwHn/guSG5/a80SNQskL+N5LiOdUBEitNLggg9K2/28UU/t
J6+pVNi2tqy8t2iVj+gNc/4D0q10X9rnR4LK1MUcHjeWGIpwBGJ5cjHNb/7dQe6/aT8RqiZY
WMJAHf8A0avRWtdL+4hSfKrs9R/4KBsqw/DVJjDGUt5SdzNjAWHNV/HcH2f/AIJv+CkURtvn
tHyGOCpuZDnP0YVP/wAFEopLeb4csGkR/slzlQu4dIqqfEXVDb/sAfDS1ltrgi7ezJuRAfJh
VZCxMh7Z7V5VL+FQ/wATHJPVF/8AZ3VbT9hD4svgDfdaiw2yHobO1xXM/wDBOWLzfjL4olaV
kWPQBGcSd2uVx/6A1dV8AGZf2D/imhxtkn1JlcxHBC28K8e3yZ/GsD/gnO7D4qeL3whU6PBk
7MYzcOe9XN2jiGwlqorsec/ssos37XnhhGDvt1fVcHf1/wBEuai/a5WW5/ad8XRICWmuLSJQ
0owrGGAAfmatfsrhB+194Zf7RbZ/tPVpPL8zDZEFyoXHqRzTf2rT9m/ai8RTrNbu39rWMZhL
guv7u2PIArvqv2mKjKP8iBHrf/BSeUSeKfAgw7sbS+KKJQASZIiMg+wNP/aAt47X9g34SxRK
0ULwaS5UBRjdayN/Wq//AAUluo5Na8Cs7Q2+22uPmmj9ZYl4I/3qu/tF+Wf2FPhQkDW02y10
ZVZI2IbFk3Oa8zDq2HoJ/wA7/NgZH7O42fsS/G6eDJbzL6NcdcjTbYHr+NQ/8E3BM/xD8bOV
lYjSISQApP8Ax8E/0NTfs3qr/sNfGkGSMh7nUm5/7B1vVf8A4JrzGH4jeNxG0CsdIiUNg/8A
PaQ1tX1p1V2a/NDSuea/Bi23/tceHEbzXP8Awll4xjwvDK9w38hSft8k/wDDQniwjgmygxn/
AGkUCm/AtjN+2HoEiC3Dt4p1Ji2DziO5NWP28YFm/aB8Us0qYGnWkpGeuFU4r0Yu2YL/AAMl
PmjdbHrP/BSu8ii134ZRpudWtL2QbRno8JP6VZ+JFwkX/BOT4cxMxjeX+zY1AHUiUkg+g+U1
X/4KRR29t4h+Gu4w4+z6gBuk255iXA49qZ8TZ5LX/gnr8NVCuPMn07IEo4DF2/rXk0otUqC/
vJjLX7MtwbX9hn4vyJtDLPqrLxuHFhbdu/3TXC/8E5737V8fdRZ2BlHhebO1do/4+rIdPwNd
p+zK0sX7C3xbbZsIn1coSwbKiwg5/OuV/wCCdMJm+PurmQ5YeGJeUQAn/SrY11Rfu4t/3gl7
rSZwXwQAX9sfQwWAI8W6k3J7f6V/hR+3EZZ/j/8AEEh4z5dvZgLjnb9kSrnwSgUftk6OA+AP
E2pP88eT0uj2+tR/ty+XN+0J4yiiiEU4t7QNMD98G1Axjt0rob/22Df8jA9s/wCCk0a3Gr+A
AWVQYtRKljjkpAF/Wsf4hRJY/wDBN/wUhCkNd28hPPV7mVj0+tav/BS2H/iY/Drk7wl+cBd3
3VhP9KzvimJZP+CcfgBJQUcyWDEeWRgM8jV5lH+DRb25iqf2vQrfsqTNa/stftBXCFQ0Qv5F
AP8AENOXH6ZrJ/4JrCMfFrxOQ3+r8Pgtl89biGtb9leVYf2W/wBoAh1dEW/lAKff/wCJYnH6
1kf8E3Nw+MHiEs2zPh3EimLAAFxDzmu2v8OJ9V+hnDZHGfDG3N1+25ZQoVZv+E41CVuf4Vlu
HP8A6DV79t9H/wCGpr9JVMkUlrpwZewYhf65qt8MENz+2/beVIA//CYaqVIGAR/pdW/21Yo9
Q/aruU8yJXI0qIhkYnopzXRa9eH+BlHf/wDBRiTyPiF4MYwq27SrhQcjKf6SnSsf4mps/wCC
d/wqiUKUOqwnkZPLXw4H1IrS/wCCkEUUfjvwUyogZdJnYYUjrcKf6VmfFZ/K/wCCd/wo9G1e
Beh9L9+3+7j8a46EXLDUEurf4NnPU3Ol/Zwhkh/Yq+NQjOUW01PJYbTn+zE7Vjf8E7CR8XfF
K5EiDRw6sw6f6Wp6Vb/Z3m+y/sSfGvazEOmqRLuJJOLGJO/+9n8Kpf8ABOfB+KniYmRQTo6I
QGwebgd6yqa0MTby/Q2juo9bHDfAeSEftdaBui3OfEt/gjO3mC7xwelZv7Y8pm/am8dsE4Nx
p6jbz0s7ernwLIb9qzw5Ok7FJfEd1nMgfANvcHIH1bFUP2ykhh/af8cqhYiG4sQ7A4BYWlv/
AIivXqtcy/wJFHrH/BRaeI+LvhtFcQNKkeiXzZVtpVyYQp+gI5HepvjZKP8Ahgb4PoCCHutO
Vsen2a7P9Kzv+CjEw/4T3wFFjKR6FK2SeoaVR/7L+tanxwii/wCGDfhCqGNNl5YDO7OcWl3/
AI1hCS9lho9pGU4tvQyP2b1/4wl/aDX/AJaP/aGfqdPjAp//AATgO74y+JcdtDT/ANKai/Z7
cW37F3x6Ikjbe1yOvTNlCv8AWrH/AATgiMXxc8Uz70IXSY4sZ7eaWz+lGImvZV1/e/yLirTi
+x5J+yTKr/tN+CthDOL+8Kg5Az5L1ofHu5kg/aw8Swp5Yg/4SWylkVQd+fLts4P9Kh/ZUxB+
0f4PlLFjHqdypUOG4ME5z/5D/Wl+Ofl337Wfitop4yR4gtsDPZTAn/sufxql/vX/AG4iZ7Hp
n/BRm6RPij4SjJO06A2/C/3rgkfopq58bFZP2IPgxLEdriazRT5f8X2SUCs7/gotJv8Aip4Z
VYwyr4fjYNnr++mrQ+M8cafsWfBi1kk2r59o/mlztBFrIOawe1H/ABE0+pF8NYJG/YH+I4Xf
O7XcrPtTGGZ4TWj/AME52MfjrxmHVkZbSEkMORmQkfyNZXwuLWn/AAT8+I7D95m8f5ycg48k
8Vpf8E9B5HjLx3KCJGXToG2L1+WVl/rWc9sT6mx5x+xXHDB+0l4fk2qcwXJGN2f9RLWN+0Dc
Qy/tZ+I2ZSqr4gsxnaeo+zqevuprV/YlnWX9orw/J5i5S3vPlVWJOLeT2/2qofHS0/tf9qnx
EEuoUf8A4SKA7Hyp+WSMf0rvqa4i/RRt+pM/hZ6D/wAFD4Irn4t6EilZA+jwhY2YoSfPnHX/
AIEK+W/297SOTxX8Kvsw2xj4faWMMdvPmXB/HrX1P/wUEvYdP+MPhuSYmQW+kQsYg2Nx+0TH
06fJ+tfL37fkhh8WfCxnTEcngDTJFBPQGW4AH5CvQy5u0Ldbv8jiZwv7O6+bDGGQyY1OIgA4
PVf8B+VfoX+3PdwWfxL8IGYF7cWd1tMy+Wu8uoHzEEfmK/Pv9m0Iz2SsRj+2YSfmx3i9K+//
ANuyzeTxz4PlijZ7MWMnnSrPtKfvlC/Kwy2Sewrmx3+/x9H+R3Unam2Zn7QM9wf2Hvhf53yu
76c5AHBzGSD0HY1X+AiIv7DPxaJX961zeiRv7w8iDjH1rW/aLhXT/wBiH4XxvLuAj0pt0mNw
BgyNuOnFY/wImjj/AGE/iyrPtZrq/Chjyf3UDfyr51aYV/41+ZUlyy5Rf+Cb8b3HizxqikCZ
NPtoywAHPmzH+g/KvOf2SS7ftfaT5p3SC91Ik+/2aYk16T/wTVUyeMfHbL91rCyAJ4Gd83X0
/GuE/ZKXf+15bFuFjuNRcHsfll/+KX866qs/ZVcS/JfkTP4oepD+0Ou79sW9bbGX/t3S8GQc
dYOtdZ/wUqAfxz4akdlMo0K6IEZ+UZkyT+dc78eomn/bY8tQGafxHpO4Hp8z24ro/wDgpiFH
jrw+yZMo0GaJQDhRiUgn81xRQ1r0H/dZUt2bv7cMSxfAX4ORquEQxAD0/wBAqLRZvJ/4Jq3b
JANjfa0c56ltTIJ/Stf9v1nn+DnwwUrmSO5G8+v+hHmqXhOZbb/gmawkIBD3pw0YYf8AITlH
OOTyy/nXP/zDw/xr82IT/gnWdvhn4nyDCyfa7Ubg4J+7MK4b/gnhHMPj1eNPI3ly6BeEy55H
+kWwx+gr0D/gnsPM8L/EeIeUcS2rH+9gxHv0I9AOnevOv+Cd7w2/x61CBWXCeHrsfKpHW5tv
arlPlq4xW7Acz8QJmj/bhZAJGR/Hmmo2ADuU3kPFdD/wUfuRJ8ZbSHbJ+78ODduHGWmlP8s/
nWP8Q9j/ALcDL5S7/wDhNNPjDtKVxIb2Ha49SvPA55ro/wDgo0qr8ZYf3IVv+EchG7zDx+9n
H3Rx14rti71sO/7rA9E/bPtA37NPwjKfKUkt2H1GnMR+tJ4NLQf8E29VjBwNt9n/AMGL0n7a
kQP7MPwqUkCYT2yKpPUnT2H+FO8NKn/DtnVRGdyhLtc/7X9pOTXlXvhsPHvP/MT+GXoQf8E6
LJx4N+Jlxu5la2UfQW7n/wBmb868W/YMQN+0d4bAHzRaXftn32EfyJ/Ovbf+CeZlufAnxGuX
tthllhTduHUWxz39xXjn7BcEi/tI6U5XCrpl+Sc/9MkH8yK6W7PGR7JDXwR9Cb4sSeb+29eH
08baWv5TQj+QFbH/AAUgAPxxsgf+hYj/APRt3WJ8Tgf+G47wd38Y2YX3Imt8/wAq2v8AgpGd
3xqhx/0K1v8ApPdmuujriKX+H9EH2HHzPSv28xs/Z7+F0a8LG0IQen+gH/AVl6Pbi4/4Jl32
/mMTys6+uNZUj+Qrd/bpjV/gX8LWc4SOeAMfQi0INc9FbNaf8E0LrYqktIoIk5XB1eLFcEX/
ALPH/H+o76Ndy3/wTldZW+KbqMIwsyo/4BN/8Ua8v/4J1RKvx9tYxtVBodyAGPH3rc/zJr1r
/gnCB/Z/xIGIdgktwSqkcFJSMfhXl3/BPeKOP4/wbT8yaLcqw9P9QP51dWfLSxfovyJiuWKj
2MP4nSt/w2nfEsjH/hO7X7o9LuHFdt/wUnjFx8XdKVBhx4YDEj182fn/AMdH5Vx3xNO39se6
i2wmR/HFiAx5YYuVGAR0rsP+ClMqS/F6w2vuz4X+8R6y3OK6Kb5qmH/w/ojNzs7WOy/bCjjt
v2bfg1CEdStzaYz0H+gyj+gqX4ctCn/BNvxYZ13xlr0NzjaPtCHd+BApv7asEdv+zd8Inb5m
S6gzJ6f6HJTPhfGi/wDBN3xZ5w3AteAJ1yTdKoP58VwylbDU4/8ATy33uxqO/wCCd8UEun/F
BkMsM6iFQ7Y2lVWQpivHP2EIg37QehNGnn40q8k3Z6N5EYz/AOPH869p/wCCeduyaT8S7jO5
d1vGjeqlJX/ka8k/YLVIvj1oxijkDSaZdRt+8XIVVQ9M+4/OuuFPmni35W+5MDLv4hP+2nJl
twPjyTzE+l+SP1Fbv/BQuQT/ABy8zuPD9v8AoLgj9Saw5l879tUMm9lPjj+M+t2T/Iitn/go
G6t8eZEkMgVNAt1O09CVmxx/wIfnWtNWrUof3b/cET0f9ulUHwO+DbsucIf/AEhWmaaFg/4J
t6zFLtObzPzccf2qlR/t0HZ8DPg0qmQvtbAYjH/Hko/nTrGaaX/gm5eOqOVe4jYFDjI/tMf4
GubbC0496i/MF/FmH7CEVufAfxkdWETGFU3D7mPs8xx+prz7/gn9aH/hfOlTs0ckLaLdFFTr
wsIOPrXp37B961r4D+LFxJuWCKFGdmOSAtlJu6emRXmX/BPq4Efx30vBkMsOkXO1c8ciHNa4
mPLPE+q/IDNiiiH7bcqSCMk+PrlZBL94n7Y5H8q1/wDgoLCYfjij5Xc3h+3bMfA+/IP6msYy
M37cU7Sjax8eSHHXj7XJXR/8FA3MfxtSAnCz+H7NH+UHA82cj+ddEP8AeKf+Bgd7+3WzN8Mf
hAxeMkQTdev+qgH9BVKziB/4Js6gglWFftUbcnqf7UUED3wo/KtL9vZP+LefCxG4CRTBeOu2
OA/yIqjqCW1r/wAE54Q5DIbhGTKbsltQJ6flXk0f4NL/ABfqBX/Yznif4E/HFpEUulm+05O7
/jyk61h/8E6mRvivrEgOCNH2A+djAMoyMVq/sZqsPwE+OwJilD2jgJ5Q6mwOB+hrE/4J5SCb
4y67JHEixPo25VEI6GYGuqro8RLs1+RMpcpj+Gre/uv231hlml+zTeLJJ123IaN2RpcErnsB
Uf7elw8X7QusbG2qunWSqMA4+XH8qf4O8t/25JImj2tJ4nu9ingrjziag/btgSP9pDVl+Tb9
gtSxYE4/dH/GuiGuJo+cGLn0T7ux6b/wUAjkj8NfCcwB3P2W6GwKCBhYKoeKJZLj/gnB4Q8w
PHIb22GGUY/4+pCf5Vqf8FEJ/sdh8NoIxEVWC5x8p/uwf4H8qyPGWU/4Ju+FCwjAN1B90f8A
TxLWOG9+hhodpP8ANmjVpWNz9iyI237OXxcnYA4iuegxz9kA/qa4/wD4JzK0Xxb8QMroh/sC
XGUJIH2mD3rsP2Op2tP2bfi5Ioy6vdADcR1tVPb2Irl/+Cc6wXXxG8Ru0ko1A6C8UcOAyFGl
Ricn3ZfzrCXwYkRwXw4hgk/bK0YSTpKf+Ewuma2yd4PmzHcfbNR/ty3o/wCGifEEnPmC0ssM
Dj70AB/nUvgAeb+15o0iGcufGdxu+VQAvmT85qT9tGaNf2kNcO9j5VrZB8nOP3AH9RXpRf8A
tEf8CIqfAvU9R/4KKTFtU+Hyxy7I/sl0SpduTmIevpR8UrZpf+Ce3w7ijc72GnBDG52hmMnL
Z69B1qH/AIKLDbe/DuMmQOtncAhApHWL1q/8UI2P7AngBTunaP8AsxiFjVigJkxgZ6+vrzXl
0/4dD/GzWW7JfgSzp+wR8QGMqsJf7SkULcdAUQY/SsT/AIJtyRyeNfHLy/vJl0qxCZmHQyyk
/qBXQ/BGZrb9gPxyrW8ruw1L5WjERxtTnBwO3asD/gmxDJJ4t8dukpQDTNPJViuR88x7H0Br
SS5oYlEnlX7LDf8AGYHhRgoQtq+pZUTD/n1uT/Opf2lDNcftbeIy0O911jTwD5gY8wW+eO/S
m/svi5T9sHwuhVm8vU9TLHy16CG4BNR/tJR/av2uvEcakEnWdLOGjGP9RBXopWrekLgj2b/g
pAJk8SeBQs0+Gt7vco244kQjg47gVb/aDSef9h34UyRPO9yLDRXPQc/Yn7DiqH/BSOyEev8A
gQspKrZ3AJit8gZniAyRVz9oO2jb9hn4TwSlhG1toy+Z5Odh+xt6H3rzqX8DD/4gMX9ne4jt
/wBhr41M29B9pv0DFUwN1hbKO/vUX/BNu3Y/Efx+HcJ5WmQKrbV+Y+dJnpmrH7OcKwfsN/Gx
YgpXz9RO5YzkL/Z1thefSqv/AATSGfiJ45LRhwLGy5eMDH+kTVvWhaFf1X5ocXZ3OE/Z7tD/
AMNp6NCHDQp4i1dlG1OCIrn3zVb9udmk/aC8UrtkybK0j+6OnlA4/Sp/2c2V/wBtTw4VVVB1
jVSAowP+Pa87VW/buBl/aL8ShOSbeyUcZ5MQFbSfLj4y/uMiK5Y8p7B/wUmhc618PDiclba9
YCGNWfP+jnjp3JNM+OCLD+wV8MmmkmPzaSwjkRck+S5wevcfpVf/AIKNS51r4bkLkCzvid8R
HG+29Poan+Nyuf2Afhm2w4/4l7fIh6NDMB/OuaGiw/r/AJlrVSfYtfs9uF/Yb+K/ybEjOrgI
Ifuj7KnH6CuL/wCCeKs3x61VwzBG8OOMCMjrdW3vXZ/s9kp+w98X3J2iT+19pbPe2QD3rmf+
Cd1un/C5vE1yFjVItGjijVCx2KboMRz67c/hSk/ZU8V/iX6Df7ySZwf7PpZ/2x/DoLufM1/U
2bOVyfJuz6+oFQftmOX/AGm/G3mEsqmzXBjP3fsycZ/E1L+z04f9sjwyRz/xPtT/AIiP+WF4
arftnmK6/ac8cws20O9hGc5/59ogevXqK7nDmxClf7DM4PmjfzPcf+CllyBrfw6jOfNki1Fg
ykjjEI7U34xPJH/wT28AkSbSz6cp3s3IAfHWn/8ABRt5r3VPhsIGVSYr6QMzBc8wZ6+2Pzp/
xe83/h3v8PPObccaQQfbyTXmRjy4eh6mtPeXoc7+yjCj/shfHqV8M+y/BbJ6f2YlZP8AwTgD
XPxi8UyGUMj+HHDKHY5/0qEevpWx+ywwH7Hfx6BPT+0M/wDgrSs7/gnAjf8AC4fEbKNx/sTP
ysM83IwevvXZW+DE+qMobI5T4QW8f/Db9vEV+QeLtUwM/wDX3Wp+10iy/tirEgALz6OH/eYy
N0Q6fQ1i/BORpv219AkJZx/wlOqN5jEcgx3OK2f2rE+zftkky+YmZ9FxtYY+/DW8XavB/wBx
lHU/8FJS7/ELwZGrnB0q4GPNzwJvTv0rP+McTQf8E9/g8u4hW1q3BwcZ/daia1v+CjNkw+IP
g68eN1EelzR5KnqZx/TNV/jigi/4J9/CJVPytf2bqdoOd1ndkdfasMI/3FDybf33OepuW/2f
Ikl/Yn+MJcbiBqjAk9zbR/4Cq/8AwTfjSX4meMGkVfl0m2wSo43Sgn9aufAV4D+xJ8Ymd8ZO
oL93HJt41HT34qh/wThbd4/8ZkTsyDSrUYUEHiQ5/wDQG/KoqU+WlilfaxtH4lPyseUfAIov
7UnhDy2UldbvCAFAx/o83pUf7YcUkn7SnxBVWwgvLVQPpbW4qx+zNCR+1P4XVwAYtcuwTjJy
0EyqCenWof2vbd779pTx44l2ebe2ojGPvZgtwPzNdTnz1Lf3EUelf8FHMxfEDwUB/D4cbH1E
xrf+OykfsL/CYJtXbqFkduB8w8i7GPyxWL/wUPiaP4g+BT1A0GVsnuPMIzW7+0FA7/sJfCUM
sYU3WnggqcHFrdEj+VZx932EPMq3uuRhfs+xk/sVfHVnC5d7ltuB8v8Aoqcf+OirX/BOKYz/
ABD8ZYxmPSIG+6OT5sgP6CofgRbTWP7DvxlmNxFvuHnymw/JiKNcfpT/APgnar2fxH8axuqb
l0tBnyzj/Wynrj0IrCUvaU8R/iM4u6uea/spm2n/AGjfDHlZjnOo3AKlFAKiG59vc0nxwa3f
9qfxPGYriPb4mRflRcNiSHHaq37Kv7r9pTwsg8gvcX1ywAGc7YZs/wDoa/nSfHGCZv2t/Ezq
IUB8Uookx6gDH5117Yr/ALcQqnwnqH/BRZwvxb8NhVm2/wDCOxdQP+fmQfyJqz8fyP8Ahj/4
MEqz4ktfljAz/wAe8nbpVL/go5G3/C0fDTeXtD6AAoUdSLiXPH/Al/Otn9oeEx/sd/BvKILo
S22EMZGc28o9P9oVn8ToR/vEU+pm/CxXuv8Agnt48BDkf2gVKgDOC9uDn8Cavf8ABPeCU+Iv
HIcTRtJpUW2RgACPPbLfgc/lTfhvbOf+CfXxBIQbpb+YDapH/LWIfzNVv+CdisfE3xBYI21d
Jhydp7SMf5K35VjUetePdmx5/wDsTgD9oXQkHnkfZ7rkHGc20uf5Csf4wM0v7WevwfP8/iqF
Myc8eZH3rY/YjYt+0joRCAhYbvO2Ns/6pl9PWmfFSy+1/th6wpAAk8VKnzPtODMgP64r0J/x
mv7jf4CaurHa/wDBQxkj+LeiOsuJ10EAoYt4ys8+D+pr5l/4KHzPL4t+FRf5tvw/0oAYxj57
g19M/t7RC6+M2hCEkvPoqbdsoOSZJ8cNgdMda+ZP+Ch2/wD4Sr4TCQYZPh9piHp1Etz6V3Zb
tQ/ws5Zx5Tkf2ZB5t5p0ZYhZNdtk6Du8I/rX3h/wUDhJ8V+G7vysJBphkQlSwX96rnJBGM7c
c18Jfstqr61oSPjY/iGz3bhkf66P/AV94/t+Q2661oigs8j6VOFSO78hTtfA3JgiTA7dvxrH
H2+vR9H+R1U/4b+RN+05bMP2KvhhEwG4JpKbnXJOLcDPX2rO+Ctkf+GDPiUsMyxySfbRlmO3
cixxknJPXbn8a2f2nYvK/Y5+HMezywg00hcYx+5rmPg1+/8A2Bviduw2Jr9QDwMHDH9a+ZTv
hU/76/M0q/xPki//AME24Uj1f4k3Ji84xx2KeXJGCH+afgA9uc5rzz9kXd/w1RBLLGLc41Bx
EAAANvT9a7z/AIJtB5dW+IUsj5cw6ePlc9PMl7V51+x4v2j9rC0SRmdX/tIHJPTB/wAK3xP8
TEei/Izn8UDS+L1wI/26ow6+YB4m0dRzjpLbmtr/AIKXIJviJ4fY5CjRrjC+5uX/AMaxPjHa
sP2347j+D/hJdHx9fNtxWt/wUpn2ePdALdP7Fm/Pz8/1NXQdquH/AMLKe7O9/wCCgBaH4YfD
mBju/wBIwGAx0tMf1rK0VUh/4Jsnzg7xeZMXEJwwR9W3EgnoQK3P+ChAil+G/wAONo+czyEc
+lsMVnaRHcP/AME44NzBmBdV3KGAxquBwa50/wBxD/GhB/wTyliTwx8TseaFSa3KLIUbbGIW
IPBzk45rgv8Agn9BDP8AHe+khPEmhTxhiPWaB8/+OY/GvQf+Ce9g0XhT4kXRVnWS4hXeUAGf
KII4+teffsAyyD48XrjAVdDlYgADneo/kKrE6SxklvoBzPjm3ki/bcWSSMSK/jfTXBZNwH+n
Rcj0PvWz/wAFGpG/4XZFk5CeHICff9/cH+lY3jZzcftrxtE7g/8ACZ2hI3HHy3EDDj6k1s/8
FELea4+L32rCmNfDsIZi6g/667x8vU9BXdhXz1KHN/KwPUP23iln+z/8LbVyrsbiEKWXutlj
NR+EVMf/AATX1JSBki5PHTm/YVL+3bBHL8Cfh6XcIYboeX+Ftj+VReEY1j/4Js6oitvVYrog
+4v2I/WvKm+XCUWt1P8AVjfwS9CX/gno234ZfERSoYR3u3DdDi3x/wCy141+wTIB+0bpx8tF
H9j3zYXIzlI69r/4J+xLH8O/iSFQsPtjNtz1P2cf/FGvGP2CoVP7QmlsD+8bRL75fTCR12T/
AImMt2X5CXwR9Cj48DN+3LeB23FPGlu+fbzYzj/xz9a6L/gpDiL43wox6eGIeR3/AHt3XP8A
j2J4f23bsyHMjeNLUE+xmiH8mNdB/wAFAomb45TGX9/bv4et0H+yGab/ANmZvzrek7Yik/7v
6Ael/t8StL8Ffhlt/doZwGXrgi2x/Wq+pbF/4JoXGw7goic49RqsZx+lSft6kt8DvhY38dxI
rv6FjZofw5JrN8uaL/gmjqEc5jPCkeW2Rj+04+vvXmKTWHp+c3+YF7/gnPJ5GgfEubGcS24x
/uwzf4V5j/wT/Bj+PUjgbt+j3HHpl4a9M/4J44Xw78UVJ2oskBz6fuZ815v/AME/51b48jau
w/2PMADzuG+HmtcT/CxfogOb8ZWG79tW9+Yr/wAV1bSc89LmPiux/wCCjQ8z4waYnTd4XUZ/
7a3ArnfHM8aftpX4Yfvf+E3gCn2+0R10X/BRw7Pi7pT9/wDhGV/9G3FdVJ/vcP8A4SHFPU9A
/blZYf2bfhRECX3TwPkD/pyY/wDs36VX+Htx9n/4JyeJHVW37rkAsMf8vwP9Kn/bkWI/AL4T
ImRjyX6n/oHimeB40f8A4J0eLiuTGs1wqAnOB9sjz/6Ea4Jf7vD/AK+L8y0Xv+CeYA8J/EYA
dJbcf+S0teQfsF2KP+0ZpzOxSRdMvHT0HywAivXP+CdlwjeDviGX5Yy25P1+zS15H+wdI0/7
SOnbz/zCrwccf88x/wCyivWp74v0YGe4U/tsP5Zzt8Zhgn0mz/Srv7fzhv2gboxf65tFs8g9
B8rVn2oEX7cY2/xeNCpz6eY1X/8AgoKAnx4JXgvotoSf+AtRD/eKX/XsZ6R+3Vx8HPg5G52u
sbv65/0WM4/8e/Srs0slj/wTclEIEP8Aq8gjOcal/wDXqj+3QGHwc+D23lmBTJ54Nrb5rU1Y
SP8A8E2LiWUgsFQAgY/5f4z/ADJrji74Sk3vzJ/O4o/xJGf+w4pf4PfGl2bJFu6/nZt/jXm3
7AQ2ftCWiK6Mw0e4IBJGTmNcdP8AZ/WvRP2E5Wk+FXxjhb5YmgyW+tqR/KuB/wCCfgN78cRK
JGLR6JONwOP4lzWuIk3PE37r8gM2ykNz+3D5jKFD+N52K5Jxi7k46Vt/8FBCzftAIMrhtGss
Ak8As49P9qqJvZZP22ooGbMcPjacKMf9PMvU960f28riX/hezssi7k0myCoTg9Hb+aj8qpSf
1mml/KwPR/8AgoA3leCPhTHwd32lN3YZjgXP/jtZ+swtJ/wTi08xyxg/aIlOc9Bf/StX/goA
DceEvho0o8lo/OZec8+SjfzAqvrQb/h3FpwVjjzYmyWIwft45rzqLf1em/7y/MDnf2OCg+A/
xxMLJJL9nZyhJHSwcenvWT/wToh3fFjV/wB/g/2FjAYj7rofT3ra/ZKle3+AXxsK3AjxDIod
TncPsTVl/wDBPS6mb4za387sv9inkMoB/eqP5AV113+6xMut1+Qmk9zF+H97cT/twIkrOJpP
El4ojJG3aBKRzjPf9Krft0kXH7RWqSMQhksLRdoOcfu//r1f+GZaX9uaOZUYqviO9IyyH+GY
f0FZf7dag/tE6idpU/2ZaP1HXaR2+grag28RRv8AyMiaSjG3c9R/4KLKZD8OUVWIEN0NwA54
j96x/Gls/wDw7g8FZkz5l5AhGPu5mk/+KrU/4KIxosnw5+UH9xcnn6R1R8Yv/wAa3/Ccm5Nw
vLYj5G/56tWGEbjSotfzP9TWpo2zV/ZHmVf2ZPi9IxwfMuMD1/0JK5b/AIJstv8Ai9rJIKr/
AGApyf8AbljH6eX+vtXX/seqD+zZ8Xk/d7N9ySzAjb/ooHf6CuW/4J3yvJ8X9XDBVB0ONPk6
ECaPH/obfnWeIfKsWl0tb5lTVnFLqjgPhtJGn7YOjqDET/wl9ycl/wDppP2zUf7a6faf2h/F
bI8aYgsx8gOf9SlM+HN5OP2xNGVxIqjxbcgGL5uPMmqb9tyR4/2gPExVuGtbRjuPzZ8pO1ej
RbeIjf8AkRjU+Bep6p/wUTiddf8Ah9H98m1uTu/7aRD+tWfizLM37Anw3nt3hXcunb0WQqWI
83g8VV/4KH3D/wDCR+AT52GWxuCIxtH8cZzz9B+VN+LFgJP2EPAck81xhYtPCIpQAApKccdf
rXLShF0sP/iZrLdmv8HJpj+wP47+0omVXU8eZMWbgheDjpx0rL/4Jt26w658RC0IT/iW6b+8
MnIybjpWv8FZAP2BvHPySk7NUUbgn9/8Kx/+Cc8En/CSfEgmNlxZ6egCKgGBJcgevYVVa0aW
Ja7/AKok8w/ZNP2j9rjw1KspKvfamcGTPWK49veoP2lw4/az8QtGmxm1nSznIOMQwVL+yXbu
v7W3hldj4judQkbMIPBhnxyDTP2iYlH7XXiD90BjVNMIKRc/6qD/AGq6VJvESX/TsD1r/gpD
q1wut+B7dRKiNZXDMUfAOLiHqMVpftFbY/2IPhWheb5U0hcrjnFoR61S/wCCkZVdW8DP5pWR
rO6XyTbMS48xDkENgYIFaH7SVs4/Yq+GoRAyKmnEb4gTxbHH8VedT/h4Rd5AYP7N6yP+w78b
AVnUGfUeSR/0Dral/wCCaSLD4+8fK7NvbT7Ir5p64uJulP8A2bYpB+xB8Yy6r5cx1FwAo6/Z
I1/koqH/AIJqw7/iD44ZVUH+zbQk7f8Ap5m/wrtrv3MR6r80UldnmP7MDSS/tgeFppNisdW1
I7d+etreGrX7aUMV1+01rEcjIUl/s9CMnui+1U/2WVX/AIaz8MGUMJV1e/CBUBV/9FuOp7fe
NaH7Z0rx/tK6rITICo09uHXrsFFX/fF/gZFN3gm9z0n/AIKRRqmufDtUljiQWV+oAcg8tGev
/Af1p3x2nEf7APwrYOsgSPS3cCU8j7PI3XHvT/8AgpCxudd+H4TzvlttQ6Mp7x/41U+PEjp+
wV8H4pHmCTNpUeAByDZzen0rP4aWHkt7/wCZUfhmbH7PFv8AaP2EvipiRMBNVYHPXEC1zf8A
wTli834peLyXRdulQ/xdf37V0v7O0nl/sNfFgOAVC6qD8ozzAua5r/gnJb+X8W/FquCYxpMI
YMgHzGdiP0zWNXWniv8AEv0FF2tY87/Z2hZf2w/DLFk/5Dmon73/AEwuR/WmfteQP/w1P4xJ
kmYPcae2DtKjNvCePyqX9nsn/hsDwl5g5bWtR+6gxjy7mof2xIPL/aZ8aSqHBW407BEY6fZ4
q9OP8Zf4GKK5VZHtv/BRmCdtZ+GzQv5uy1vyY5QCMAW5qf4zEx/8E+PhwrfeC6Shx04jZf6V
U/4KNyM1z8OWDYzZagck4b7tv2o+MtzJ/wAO+fhuNofP9mHkE84f0rzV/AoeppT3l6GT+y9B
5f7H3x75zu/tAdP+oZHVP/gnOoT4ueJQn3v7DjXPl4/5bxn1/wBr9Kn/AGX53k/Y8+PG7C5O
o9sY/wCJWlQ/8E41ZfjL4hCtFKp0YAsGbtcqO5x0UVviP4eJ9UccJPRHnH7Otw91+194dmdS
u7Xr6QDOesdzxXW/tZqp/bQVnfK+fo+R/dw0BrmP2fk8v9r7w6gChV1u/ACnP8FyP6V0f7W0
Sn9smUf359Izz/1wpwk3iI/4GdJ1H/BSNyfiR4KiVmCf2RKSNxIJE+M0z47Ps/4J6fByTGcX
mnDH/bjdVZ/4KPwofiJ4KfHzf2bMmc9vtB/wqt8dFD/8E/fhHEfuLd6cQP8AtzuB/ImlhH/s
9L1/U56m5a/Z+YzfsMfF9kiDu0l+cE46IlR/8E3GH/Cc+NgI9r/2Vb9+mZH/APi/0p/wHEcH
7DHxe3ZEeb48HHWOMn9TUf8AwTZZY/iB40IzsGm2gHfjeKmtJ2rru2n8jaOyPPf2TIjqX7U2
nRSSxW8MWo3l2olPLMqScA/8D/SqP7XaFf2ofFkSxlVN5p4BP+zHbJn8SM1pfsrSbv2oLDy4
4GzNegEuchmibkj61B+1a8MP7T/iwylWDXNo0Zi5w4+zA59s5rZK2KlH+4ijuv8AgojMV+Iv
gWIJub/hHn4zjOZzW1+0I7/8MPfCVsN5QurQtubO0/ZZ1/rWF/wUWXf8SvBm7G4aAy/Kf+m5
6VqfH+KSf9iD4PpGW3m7s1GCP+feY9+O1RJvkwsurkO+liD4LR+Z+wt8WpCdsLPeHf8A7qoe
n403/gn5PJN8TPG7I7GJtNQD6GSRf6VL8Frff+wd8WXcMAz3uAWH91Aen0qH/gnXJJF8QPF6
t5extMj2jOD/AK6XFZRSUMQl/N/kSlZWR5d+ym5T9pbwnyWjt7q+bacfNmGTvjj7n60nxoC/
8NdeKIpWVox4rR9pOOV2mr37J2lySftK+HMqcfbr9W3uMbQso7exNUfjjKE/a/8AEhhnVlfx
Pa5CHoXNuG/MO1dFW6xF4/yoip8J6X/wUNkiPxW0R5VeaVPDyiMrJtC7blmOBjnIAHaum/ag
trWD9lD4Rxo0RiQ22d5Ytk2rEc9q5D/go473HxL8Lb9hLaAw3bsN/rn711v7TSNP+yz8I0LS
MGezBCuFP/Hi56njrWLnJRw8lvzE0+pR+G9vbTfsAeMIIjCitfyI5eRgCVuoRnPbNUP+CfyR
w6j4+/eQ7m0uNCwLfLzcfnU/wxmeP/gn34xfJLf2nJw/zdbqA/Tuag/4J9gzal8Rwztj+yIW
4OOf39TUf7ivU681vk7Gxwv7EYCftF6UEHnqLW7cYlxu4zjp/tfpTfid50H7YWo4ZyX8WwsE
yDjN3FkdKT9iSBoPj/4fMEq+X9gvGYbRk/KveqvxJuJIv21tUZW5XxZABnn/AJeoq9KX+81F
2hZelgO4/btO3426AZP3a/2Gkgcwo+wL55xz9cV8x/8ABQkeZ4m+FJJ5/wCED05c4xnEtwM1
9K/8FANSJ+K2k+ZbRThfD6xkNwWDmbn8MV81/wDBQddviP4VZwSPA9kOOn+uuK7ctelD0ZhV
2Ryf7Ky7vEXh0eviOx/9Hx195ft8F49c8ONAJ3n/ALNuVEdvbecSDM2SSPu4Ar4P/ZN/0nxd
4atwShbxJYjcMcZnj9a+4v8AgoMWtfEHh113zNHps/IBBG53P3kIx+PWufMf98Xz/I2p/wAJ
/I3v2rXC/si/D1GkG5JNNUhnGeIcHNYXwps4IP8Agn345eMylZxfyF+MbhKBWx+1su79lTwA
CEdvNswS0YzxDu/9mpvw1iiH/BO7WtluuJrfUVYAc7vtLJn/AMcJ/Gvn7pYKF/50aVP4r9DG
/wCCc08cN/8AEwfPLi3tMpx/03x+pFeefsdzG4/amsWLK2IdTIA42rvBGfwzXpP/AATks8J8
Rpfs7K0qWY8xUOAAsz4rzL9i+2J/ajgYxg4tdRPzqQcDaP8A2b9K2ru9TENdv0Iell3NT4pf
vv241WUHC+JtMG31IeA4/StH/gpJx8RNDz8sf9hPhGHfzGrO+Kvlv+3Gdsqhv+EosCFGeo8r
itX/AIKQwq/jXQTn95/Ypz8xPHmNRh/97or+4wO4/wCCgh3/AA7+HbookUySgBvu5+yrWZLd
SJ/wTZtlEMKqAIzGCeX/ALSH+I/Or/8AwUBjlX4a/DRElKbppun/AFwUf1qHxHaC3/4Js2LE
kiW3t5cDrlr6Ik1gv4EP8aFL+HIl/wCCeW8eC/ibuARPtUOFQ5X/AI92rzb/AIJ3n/i9uoZ7
aRITn03x16F/wT1g+zfDX4lNGSqC8GS5/u2xJrhv+Cetsw+NmpArtI0SQZznOJUH9KvFb4z5
Gn2Y+hgajaCf9uNVGWc+MYjtx/01B/kKu/8ABR+1WT402rg/vR4ZX5B/13mH9TTljDft6xoL
kr/xVYfAHHy7jj/x2pf+CjCgfGmCcMG2+HFUoOv+umauuh72KpKPWCt8lqQelft8zG3+E3wx
QorE3ZBD+0K/403whcKf+Cbt3I21AYpgdvTm8Iq9+30d3wg+HCosbyzXYdVcEkDyVz09OKzN
BWKL/gm7eRp8qCM8hTjP23mvLknUwtDl6Tf6jfwS9DU/4J8Msnwu+IY4Ym7Xg9/9GNePfsC2
6/8AC/7adQkedGvv3IPzL8sQz+JNet/8E/omi+FHxHkBHyXIP5WpryH/AIJ+xyL+0IgY7saH
drx9Ya2g9MX6IUfgj6FHx6rS/ttXoX5m/wCE1tR+Tc/qK1P+Chsb/wDC9pP3rxoNDtFJONoO
X61R8SxyXn7ctyI4yQ/jaLDemHJ/pWn/AMFBWim+OqpLGAh0W2WQ98jeQa7Kf8en/h/QlSXI
49bnpf7e8qP8FvhSiSAOsqsrY4b/AESIf1plvawL/wAE1pDdXbwJJbKxkiGSG+2jA/E9al/b
yV7f4OfCVlPlwo24r/Eyi1hpl/pxsv8Agmzco0hlWW0SVc9V/wBMHGPwrzY/7vS/xst6OzI/
+CezGXwP8UVAVJmlUbV6A/Z3OK8v/wCCe28fHkySSK0f9jS4P/Aoq9T/AOCfV1BbfDT4j3ki
MFS6R5SOpVbU7v8A0KvNP+Ce9pCfjo8kGWgGjSpknv5kfb8K1xPw4r0QlqroyfEYF1+21dQE
ZB8Zhs++/IH6fpXS/wDBSchvjNpbL9w+G8D/AL/XNYGtlZP26plQbc+NFPP1et//AIKPIW+M
OjR9x4fQZ/3pbitnF/WKD/u/oB6D+3FG83wQ+EyRffEqKeOhNkoA/wDHW/KsvwqNv/BODxI8
0uFMspBGR11FP6YrT/bkTHwL+FUpJ2tc20mFODgWp4/8f/Ss7wgsEP8AwTZ15FB80FyN7bgx
+3xcD86iDSoUW/8An5+oGn/wTpCN4O+I+w7l86EA/wDbCQV5R+w5Gtv+0VpTpuLDT75cbT12
QV63/wAE7md/CXxGaRBG5nhJUdsQsa8k/YIka5/aAtFkaVHisb18s+eohX+ldMpqVTGW7MCh
p0xl/biXcuMeMJDyP9pq1P8AgodCjfH6dc8vo1oGwPu/M9UdJjSb9uIrLvf/AIrFlUkgYy7V
a/b83N8fLtldkVNEtGC7hz99quj/ABqX/XsZ6T+3FHDJ8Kfg0xfBUEKMdSLeAH+Rp7hn/wCC
aFj1bPk5/wDA4VV/blLp8LvgzGS5KmVzkjB/dQ//ABX6VckiI/4Jp2SsWXCQPmMj/n9BrjjN
LC0U3rzL8xR/iSKf7C8bR/Bv4xyIu55bJ0A/7cx/U1xH/BPRlb41X4QA50WVQMcZ81OP1Fd5
+w1iH4KfFtE3uywN87d82i/yri/+CdsJ/wCFtakQ7l4NFdiOMNukhHFb19Z4q/dActZLJF+3
HCrBIinjKUv3OBM2f1BrZ/bx2N+0FOFQqf7Kslwe5BOazbS2l1L9tyKTy5IVn8Y3G2XI6+dI
cH8/0rX/AG9GZ/2iU3HPm6XaMPYFj/jTj/vNL/AwPT/+Ch/73wP8N/LOSDNz6fuFqh4qMi/8
E59NDyBgzwgKO5+2mr//AAUKHmeBvhvv7ecw2+0UY/rVXxDIY/8AgndpYCB97woQewN4a4aP
8Cl/iX5gY37LoKfs0/GlVZUYxzYGOv8AoRrB/wCCcw3/ABi15yQ4OjAbvXMorf8A2RiYP2af
jQSuVIuAAxyf+PM1gf8ABOu1R/i3r8x3caSh2r/12rsn8WIXmvyAxPhfC6/twwgqRu8RXxA9
Rsem/t2oR+0HdEKcHS7M8DttarfwmZ7v9uRJvJlQHXr0orpjHyP3pn7dES3H7QMi78NJp1lD
gZ4LAjPFdFLXF0rfyMiptH1O4/4KJPjVfh8MNj7JdHG0+kdVfGTMn/BPfwOpDjde2xwMjIMs
pH6Yq1/wUSu/Kvfh43AH2W4XaztnkRiqvjyKRP2APAaugTFzZgkzH+84H51x4dqNGg3/ADMu
ortl79k+cR/swfF95GdE8y45aXH/AC5xj+ZH51hf8E2D/wAXW18k5C6BApJbdg+ceM/hW1+y
kyL+yn8XckfM1w3Ev/TvCO4rO/4Jz20zfE/xRcRx74v7JtlyJATkTMaVdOUcY1/dKqPmcbdE
cV8GMRftpaQJMgf8JHfEgyZ/hn7VV/bdvFi/aH8ShNrM9papjIz/AKlKufCK0ubr9s/SmFrK
EOvahISFUYAS4PXNUv2xVkuf2iL+yeQb2SyhO6NSdzKqBs9cCu2m1CvG/wDIjOavCy7no/8A
wUNhzrXw6chSfsN0SSm7q0eOau/F0K37BPw8Mto80cUWnGRookBUFJRnr1rL/wCCiskseseA
Blm22FxyqccMg/8AZa1vjC0sX7BXw0iAbFxHYF8qcbRE+AePVqxpu8MNb+Z/qXJ3lcu/B0D/
AIYC8d7DKgKaptVFDcb/AOLnrWX/AME2bJofEXxLUIPMNnYtu8rp+9uuta3wcEB/4J/+N2ik
hfzINUcnaw2/P0OR14rP/wCCcLR/238TndItzWlkoyrHHzXB7fWspu1HEp91+YWPNv2QoCn7
VmjedbOzs2oHf5Bww2sMj/vlvyNZP7RFoU/ay1zEDRt/bGm8iEHgRQZ6n3rU/ZDuUuf2ptCj
+yWsXkRalumV5MttEpyQTgZ8wflWZ+0Peo37XGvgrCGTW7WPDzMoJUQKef8AgNd8f95n/wBe
hLVXWx65/wAFIY4pfE3gneZjiwugNtuO8keOn0NXv2jbdk/Yn+FKqpwkemht8PIxaYOfxzWV
/wAFHpIV8VeCSjJhLKYlVmdQ2HHQ10X7TypF+xh8NyEifcLAY88nGbYnrXBT/h4N9FIDF/Z+
/wCTFfiukERSZm1EKfKI/wCWcYP6Zqt/wTViMfjrx2qocLY2hLlC2cy3JFaPwDC2/wCwp4+l
LKfNOpM2JT/dVP5rms7/AIJwNGnjP4hOX+ZdMtAuJD13T8/pXVKSlTxS/vr80VHc8x/Zmfy/
2tPCqnIJ1vUOAhH/AC7T9qvftjIn/DUmpCRI0TzdMVmWEkjhM1ifssSPqP7VPhCdjll1O9lY
hzzmCVcf+PD8q3v2u40vP2qdSQN96/06LG9ickJS2xKi91BmVL+GvVnoP/BRqBYNe8AyjZ5Z
srz5/KOT83el+PLbv2BPg868rnSsFUI/5cpal/4KMSm28SeBVRlDR6fcsBIxx80m3vUPx2lW
b9gf4RxMyhw2nElXIHFqy9v96lvSw6Xf/Ms1fgGf+MF/iq3YtqnP/bFKw/8AgnCGT4m+Mnky
B/ZMJyf+u7Vvfs/bB+wh8TXaSPa39pvjd/0yUY+tYn/BNnZefEHxurnJTTrbGD2ad6znpHFf
4kB5h+z4/mftbeGwgRj/AG7qBG4nOPIuh/Mip/2vmLftUeLvkj2i70/OCf8AnhB/gaT9noSX
f7W3hyWKHKxareuQPQpOP/ZqZ+1zJ9r/AGqfFSuu3beWAAHtDEOa6+ZSruK/kYHrv/BR0/6d
8OXP3Raank/hbVN8ZCyf8E+vhwvzAj+zAQH244emf8FJpQdQ8BWqR/Oljevu3DHzPCv/ALJ+
tTfGqNx+wL8OlIAZ308Abh/CJP8ACuG/7jDLzAx/2Y4Fl/Y4+N4DEu32/I87n/jwjqt/wTuj
aD4x+K1ysa/2TGdm4E4NwMfyNX/2XoGg/Y5+NEzMoEgvzt2A4/0FB/SqP/BOdkn+J/i5IVQq
ulwsJNmGDG4bPPpW1fWnil5oDzn9nBGi/a88Nhxg/wBt3J59P33/ANeuk/alRn/bIBxnN3o/
6C3zXK/syTNe/tWeG5mPKavc5z3+WT/4v9K6b9qUuf2yVIbA+2aVgevyW9Z8rWIjf+Rgdn/w
UfbHxA8KZLqP7HnGQ+eTOccUz4vFZv2G/g2yySMgurEk4/6YS/41T/4KPsy/EDwg7sNv9kOf
ynapvjRby2n7BPwli3BZRcWP6QyD+lZ4WSWFo3evN+pjUi29A+CcUjfsE/FiMbmlaW+wG6n5
UH9Ku/8ABNzDeOfGJDuR/Z8Xbj/XyY/mtM+DDeR+wH8UZ+rq96SfX7n+NM/4JryAeNfGKFdx
GnwD2P70H+lbV9aVd/3jVaVI+hxP7JAN7+1PprODEyfblwuMkiM1iftZTi5/al1+IHhb20DE
4H/PD/Ctn9j/AMu4/alsnKCPD6k4C9T+7IxWJ+1Tp6RftOeIdmyR59Ts0BbOVykR/wDZf1ro
SbxcrfyIZ3//AAUaGz4keCgDwPDj9PaY5rS+PDA/sRfCJQfm+0WZx/2xlqh/wUPGz4k+CC4y
E8PSKyjvmc1sftCW4T9jL4RsvCebarj0xDIazk06eFt/MZTTexL8GozJ+wT8RwgyTNfDj/fi
rH/4J2Yfx/40w0hxp0J+7kDG/P61s/BO4Fv+wV8RnILAz3pGPdoqzv8AgnVYvF418az74yh0
xB/rcEfMw6Vg5RjHEXf2jSOyuecfsmKT+0roEYwXEmqMVCYP+pAz+Yb8qofGSc2/7XHiFAg2
v4niycd/NQD9SK1f2RQH/aj0dgynH9qcBsn7slZXxpjef9rrXAgBz4phPJx0njb/ANlrrrRc
q9v7iEpJ7Ho3/BRQL/wtHQGSR4z/AMI6fm4x/rm6V0X7V0Zk/Zc+EKJNIrb7cj5dwyLIYGK5
n/gosob4k+HV8tCx8Psh9c+c9dR+1Rb+R+yb8J7ZnySbZ/MyRjFoorljJS+rtdyiL4eWyR/s
B+J/K3Pm7MkhKbQCLiLd+WDVD/gnxZeWfiJcSHeRpkQCg8x/JN1/nWt8PoRYf8E9NdfY48/7
Q+WbOf8ASl5/Ssr/AIJ/28dza/FKcx5xp8IPPXMcv+P6VMvew1dL/n4gPP8A9h6FIv2jNEDN
hlgvgVI9kp3j5k/4bSnDbQT4ptfvJnP79TUX7FTGb9pLScSSFRbXb8Y/iVOKT4lTNN+24z5Z
z/wk9oPbiZRXW/erzS/kb+VgOg/4KJTRx/FzTwWXP/CPoArQ/LnbJ3rwn/go6jJ4u+F+xQuP
BdmpCDAB86c4/UV75/wUPWGX4m6a8tw6Y0NT5JXI4Vv8a8P/AOClNv5Xjj4cwhgfL8J2q7h0
OJZRXTk7fJh/RmFbY89/Y7gSTxn4ad13keJbDgnA/wBah/pX2l/wUPu2tte0T7LcOoOnP5iw
kIAAWwDu65ycYr4z/YyRJ/GvhuJmIJ8SWZwr7TwQev4V9mf8FAXl/wCEt06Np7qeGTSyRHF5
bGIrJJzkjI6jkelbZl/vq+f5G1P+E/l+Z0/7ZBEf7L/gQ2wDxLPa7t7Ekf6MvB461X+G7lf+
CdGouoBJivzgnj/j6mb+dan7aReb9mjwPHPcTDNzbBikh3H/AEdepFZngJVs/wDgndfIxco9
rdAF3BGTcH/Z68n86+XU/aYWEF/OjSp/FfoR/wDBPS32+DPH5UGKVrmGMMjnOFtpCP5mvK/2
Dl8/9pOQyMzumj6i+Sc/N9ot0/kxr17/AIJ727H4f/EGSKP52ulMbgcf8erc/qPzrx39hVWg
/ablVwyMNGvS4PHPnwZ/pXZJ3qYn0/Qzn8UPU1fiPYpH+3OzSxfKviWx2qrfN0U5/wDHRVz/
AIKRKi+PNEkjWbd/YbcEDH+sb3rM8eHz/wBuUtLIZWPiW0VcJnoOhNaP/BSGBW8d6Gixgv8A
2IV2hecmVgB+NVQdsXRf9xlvdnb/APBQGZx8OPheSCCZZj8w/wCmKVP4tBH/AATi0Ztr4FhY
jgDGGuImP6iq/wC32y2/w0+GqswVy8w8poiekSZOR06ipvHEa2//AATe0IxhXL2dmAV5/wCW
p/wH5Vil/s8Jf30TP+HIj/YGKXXwh+JYY7g9yWb5cf8ALo3+Fcf/AME9GWb41au6qqrHox2b
R1/fAc11P7Dsjt8DvjF5K+c3mzGNBJsz/oRxg9u9cV/wTsH/ABdPxHMH8wQ6MA0ecHlug+h7
96vFf8xnyL+zH0MzSju/b1twVU58Uy8kc9Zal/4KEWqSfHiwhJYiXQofNGfWV+n/AH0aLfTL
nRv2/bO0ulZJZPFckzEOMCFzKyYJ74Iqf9vpXf4/6d5YVpv7FtlXecDcZmxmuvC+5jKHnB/k
Qei/t8vKnw++FyRJK4Ms3+rIBBMcYHX8KdZ209v/AME4721lSeN4rchgMfeF7zzVT/goILlf
AfwsSRIlKGVrjqx8xYYeFx05J/GtPTUaP/gnZPdM9vciSyUMsykrlrsNkkc5571wUP8AdqS7
zf6jfwS9A/YDUj4PfEQlZBukySQMZ+ytXlP/AAT7UH4/yH/qCz/rIgP/AKCK9T/YE2x/CD4i
t8iBbmT5jwABbH9K88/YEjll+O94rxKnk6RLyq46vHj+v60o6PGR7WCP8OPocz5rv+3Q6Fjt
PjgHj2dq1P2+FS5/aCnjeVImTR7Xajc7iQ/U9qz9OR5f25N7RHH/AAmcy5K993y/j1xVj9v+
eGT9oK8RIYwTptiu9SCejV3U1+/p/wCH9DFQ97mPWP28cP8ABn4Ywtksrque2DbRg4P4Cnav
x/wTqgkAw5sLdM+xu8mnft5ahHF8H/hpauGY7yyoEx0hjGfwzUepyCb/AIJxWyBGQfY7flhj
/l6rzE/9norvN/mbS1k5eRT/AGDbaSX4QfFNs8tITn62h/wFedf8E64lPxvuduTs0R2JJ/iM
i/4V6P8AsIMbP4LfFNlYyDcxBz6Wb153/wAE7FY/Gi+cRBN2kOrbWztHmJz/AJ9a3xGn1uL6
JExVoKPYzLpRN+3TKW6/8JovT/eeuk/4KKhD8aNN8xZMjQI9mAMZE1wBWBcyC8/bhk4ETf8A
CajAHGSrPkVuf8FFoluPjXo2UHOgRqeOhM1wf5c12f8AL6h/h/QZ3X7cZnj+CHwkt5kVQZIB
wef+PRazfDEEjf8ABNjWywHmb/MQj/r/AI81r/t27Y/hT8KoSqt5bgAk4yRBGOtVdBVo/wDg
nHq+Y/LVoQyc5BH29ORXmxqKVCirf8vP1Av/APBPCXzvDHxEJ53Tw5/GFgf5V5l+wtYTP8eW
mZFVlsLtQVbtuj7V6T/wT4dbfwD8Q5lMZYTKx4YkAQvzxXmn7AQmufjtfyriLZpkxCBWK8yA
Hk8D/wCtXSv4mNKiuaSiZWkoy/trwSSIHYeNSAoHJ+dqX9v+3z8e5GVW/wCQLZj5Y8jlH96u
+FLVdQ/bYMKxCS6XxbcOHdmAQBZSTx74/IVF+3pBHN8fpYZBl10eyUsjlQTl+30IrqpO1eiu
9MhO56R+3XIknwu+ExZuVkeLGzsYIz/NFqd9v/DtW2EZwTb2+fkP/P4KX9utVg+G/wAKkuVk
8tblyyAkHaLcUzWr42n/AATi05UXZ51vCmVfOAbgkE/lnNea1/s+HfeQ1/EmS/sOxiH4GfEo
jkus24kYz/oa/wCFcH/wTneNfivrbMS//ElAK7ev72HivSP2Kvn/AGefiPM0YLGW6BJbBAFq
AB+leb/8E6ZinxX1sZ+aLQ1GzOc5nTP1wP5V11Jc31qXmhrWSj3Od0C0t4f227NI2znxhLJ8
zEgZeTI+taP7dyM/7RVlsTYv9laep98tzUPhmJV/bciWMRtnxXcuc4OD5kxH44wfpWh+3W6v
+0bCIyTssrDcM9Bv/lyKv/mIp/4GK+56T/wUEUnwJ8Nt3XdMh+hijP8AQVQ11i//AATr0RsI
SZLcnfnH/H4/+Aq1/wAFDGP/AAiXw6AJx5s3H/bFKo+Jy9t/wTr0AYMZZ4ATnBUecTn8+a4a
P+7UZ95fqBV/ZaaJP2Xvi+0ZiVj9p3YJ/wCfM+1YX/BOpGHxS15lkgIOloMbzn/XfSuj/ZQl
eH9lT4ukRmZY3uWE56v/AKLGMY/E1zf/AATfieX4j6/cMzsyaRBnMXOTKK6q0uR4iXZr8gOc
+EN1JL+2jZXLxS2zNrt2D5kpI5Sbt+Aq1+2jKrftIW0UhXzPJ0xT5bYyGYjnIqD4Ts0n7blu
qzO23W7xsBM4xHPzVr9tVFuv2pIACJ2SPTgRt5U7lrahUTxVN23g/wBSavwx9Tu/+Chqy3F5
8PQxlX/RJ2wgUjgp3qb4yQ/2f+wV4ADtOAzaa33VPO1j/M1Q/wCCjKeVc/D0kbALKfJ6d0rT
+NVmn/DCPw3dtrYGl53jIztNcuHXtcPh0v5maS3Zn/srKf8Ahlr4tjfN5eboD90ueIox/QVm
f8E552X4keKo4yyyvpduElaP7v71uuKv/srXEUX7J/xZd5FDiS72rsY7v9Gj/qR+dQ/8E5bd
x4+8WO4hTOm2Z+V2AH7w+9bS/g4uXe34EnD/AAIieH9s/TYpSryHWNS+YR4yfLuKj/bAtJD+
03ebUiQifTcscgkbhVr4M21zH+2jprTvsi/tbUXyZgfk2XHOBziq37VbnUP2rL6GJ5ldr+wj
27sAjeuMDr3H51pU/wB4j/gQpPljc7f/AIKKQxSeIvAiMYzjTrk/fb/nov8AjW98aXS2/YI+
GrqY3YWumkFZX+UiL61k/wDBRQKnirwQhaZyljdAmNxjHmJWr8a1mT9hP4ZxiS4QtFYfIQOR
9nP5iooO1PC/4n+pTVnYk+DEJ1L/AIJ8+L4fMjUNDqzH94wztlfHX6Cs/wD4JxrPbXvxIYyw
ktb2z7UlYc5nP9a1vgiJrT/gn94lM3m4Nvqgwy7eTLL6/UfmKo/8E5UaTUPiJJtljUJbLkBS
PuzVlXf7rENd1+Y07Hmv7Gc8837UEEeGZGt9SyI5EJHy+/NZHx5e8g/a+1rAxHJ4igKqGVsj
zIh0I9K6L9jCBX/ar/eksFs9Q/1kQODvA/lXP/tA26yftf34Ub8eIbAHECnH/HuG7/3s5981
3U5c2Jn/ANekRFcsFHsev/8ABQeDUrjxj4Ft4RdzK1nMuyKNHYlXbHHAxgc1s/tOiRv2Qfh3
EA5nVtO3omzIP2Tng4xXL/8ABSWdI/E3hCBol+TT7hw7W+cHe/IIziuh/agmij/Y1+HOZIsK
+nqS6tgH7KeMDkfjXJS/g4b/ABDKfwXV7f8AYH8cOnmhgNRwdq/36yP+CcMlw/i/4gsZJQv9
nWuRsXJ5uK3PhKsY/wCCfHjDBjJI1LP7phn98MfpWN/wTmEC6747YiAEWdmCdjf3Jc/zqZT5
IYqX99fmjSO55T+ynYzL+0v4TdROZ/tV60xljCpGNr7TkdeMVu/tMy3D/te3EErStv1TTDgK
oB/1dU/2NrSTUf2lNFuUaSRLa4vSxRhtAKtjOea0v2oYVP7ZQbyVk/4m2lHaR1G6L/EfnWrf
Nj2/7jMKX8NerO8/4KR212/jDwpJFbzzLFpk7PgrhVW5Azz9ai+OYeP9hv4RRoZV/fWKMAqn
/lgfX6Cmf8FIXB8Q+DX8sKw068JGzqMqRz355rU/absRYfsd/CexYqfKuNN+dwSSPsk5PPt8
v5CiHw4csr/A4XMf7AnxFO6VXN3eljsX7v7ofyJqD/gnHOV8e+OyJDKRptocMAuMSyHNW/gr
BHafsCfEch4nYyai3RumYcVV/wCCdYEvjjx+TFEyfY7XDBjwPMk9ait8GK/xIpK7seZfs0n7
H+1nox8xmje+1BSoT7u0S4NZv7VKH/hqbxMzy5WTULJQdnUbIsV2H7MunrN+13bKsgKJcajJ
8r7gBiUH+n51y37WCNP+1N4kQMVB1GwiCZ4GUiGcVtS0xTf9wiL5o8x6v/wUgdIdZ8BylFLH
Srk7wMj76t0+orT+PccEf7CPw6YdY3sdo2HH3ZD/AFrM/wCCjSiHU/AsWUby9LuFx8y9x61p
/tBysv7CPgLKgfvbHH7z/phOf6VySny0sP5sZQ/ZridP2Lvi3M0iLDIt6wG3Hy/ZkVv0qp/w
Tpkjk+KnjQwtGI10qH5UH/Tdq0/2fLVT+w/8U3dEAb+1MZk6jylH5cEfhWL/AME3o0T4leMS
sCLnSoRkN389666mtPE+qA8w/ZoQWv7V2iRp90apdsM+oV8fyFdV+1EgX9tdfM/1cV9pYTH+
7b9a5r9mnEn7WGjSKg8v+0rz5g24fdkrq/2m/JH7ZrieIs39o6Xyz4/gj/8ArVpy81eP+Bgd
B/wUaiE3xD8JRkgD+xpcE/8AXZqt/HK0mg/YX+EqSOsh+1WZJHXHlTYqh/wUgGfiD4VA6/2N
J07fv2rW/aIgSx/Yt+GUb75F8+xZSsgXH7iT1rzaMWqOGh3k/wAGBV+D6tL+wJ8UEj/1bteZ
9eqD+gqH/gmuWPjfxqcAsLK2A7fxVY+ERC/8E+PiIYoioMl11k5PzL6VD/wTZiY+NfGJ2NtN
jbDj13V1V3y4es+8n+Yf8vV6HFfshxLbftQacJV2zCS/xhsjBiY9Kx/2nUkX9qfWnKhj/bVj
jLY/5ZpWp+yDEW/ajtnZXJ36hhnIPGw+lN/aetG/4av1aV4T5DavYgOy/KSGtwf/AGYfnXVG
ooYuT/uIDrf+CjbEfEfwkcYP9gyH/wAjmtz9ow7P2K/hUo6efbD87eSsj/gobbyt8QvC0iiQ
KuhSY2xbwf32ce1dF+1Btg/ZB+FixuXUmyYhY8hT9kJ/xrnWtPDP+8BR+Dkef2APiAidVe7Y
59N0VO/4J1jfrPjfbG5zawASBQQAXY4qb4SE/wDDAvxBbBXL3+CU25HnJj8Kb/wTpjj8zx4d
sQGyDJKHj93Kf5gGuSurwr/4gfxKHc8t/ZKLx/tQ6QMPt/4mn3lA/hk9KofGIiP9rzVPkVt/
iuNTuHbzFq7+x5YkftNWMi7X2wag2VVuB5Yyefc/rVX4kWTXv7aN5HJkIfGMGN3Q/vOleq3z
YmUe0EZRhZ3O8/4KLmO2+KmgMpIP9iv8u3IH7566v9rKUwfst/CdwATm3jwwyMGzXNcd/wAF
GJW/4WroyyOSi6KwAQ8j5pP64rqP2ut0X7OPwnRtyqHhyucY/wBFX1rzaO2H/wATNSfwjK0v
/BOnVHbrHDcqoHTi5yKo/wDBPZtmjfFJRjH2SBfw2PWz4NVY/wDgnTqpcFVMV2cuRj/j4PpW
L+wA6rp3xO5ABt4P/Rbn+Qq4fwcR/wBfF+gHnX7C9uIf2hLVxIrFLG6IH/AlX+Qqr4zOz9ta
4TqB4vt1GfTzUP8AU1sfsI2SSftA+dLgPHp12QF6ffFU/GVuk/7bkiEhAfFcL56Zw8Z/oa7K
P+9Vf+vbA1v+CjRnHxM00xyIinQuhHsR/WvIf+Cn1ukHxC+Hyglv+KVt+f8AtrNXsn/BQ20D
/FG0Ynf5ugKu087D82R7HivIP+CoIEPxF8BKx5XwxCvPtNNW+Ufw8N6SMK2x5f8AsZbj4+8N
jzmjA1+1Pyrk8Gvsb/goPCg8W6T58cKK2lOpeTd5gPmORxivkP8AYgh+0/EvwvEMfN4gt15/
3Sf6V9a/t7TtN8Q9Jlkmbz4NHMi+W68li2QQx6fQVrmEm8xjF9n+TN6f8J/L8z0P9tMxXH7O
XgqRWiRRc22A0fJ/0Zaz/AMscP8AwT3vpMiUPFOpRsgD/Se3FXf21IfK/Z18EqxlVheW5QBh
8x+zr1yKqeCmdf8AgnpcjceYpT0He5r5qMVGlC38yLqfxX6Cf8E7WX/hVnjuQkeYlygIaU7c
fYh0yBXkf7C+6X9pe5nUjZLo98oCTdP39sef++T+letf8E9pZX+EXj5gWYtcKSFO3/lyFeO/
sEzyp+0U3yhidKvFbzPmIBljOQf+AiumTtUxL/rYzn8UPU1vGZMf7ckKOxUyeJ4CuZQQa1/+
Chl7NY/GDQ5rSXybu10xHjmGPkbe2CAeD9D61z/imR7v9ui2DxgqviSIK3GQMcHpWj/wUKT/
AIvDpHLHzdGjLfLuxmRugoT5cRSa/kZb3Z2//BQa6uLvwV8Lrm7kEkskdw8rBx8zNFCxI/I1
oeMlDf8ABObw6qHG2C1/9HNWV/wUEEh8AfC0CJmBSdciIDpDGK1/HcbW/wDwTt8Pqqvk21qc
NH381qwc2qVKHRyRMv4cjG/Yi+0r8Afi40Rd5ozOEGAAWW0cc+1cx/wTlv3X4r+Jmlgt42Ok
wu3lptBIY7gfXINdh+xjPLF+zl8VLho0AZrzZgH5sWzZzzXGf8E5kjn+KfiVjGq/8SWElRnB
JbrXVW95YxvukX9mPoYWgytN+3nm53XMz+MpU8yVuVRHm4H4EY+laf7ezbf2hdPOCf8AiXWX
T/ro1ZXhwbv29nBJOzxfeMD64kdR+hrY/bu/eftE6YRwpsLEFW6/60110FfGUfKD/Ig7z/go
bhPDvw3lMZcwy3J2scKcrB/hT4pZD/wTetYVhheKaziJVmKjm5J64z/CaT/gpJEw0b4a7IS6
LPdKzBsbRiD86n1WZT/wTn0oeaiKbW3Te3HH2hq8nCSboUb/APPx/qN/BL0Iv2Fjt+BvxPOO
rXDAf9ujVxP/AAT1eP8A4XXqmxBBt0Yb0DFtzeaOQTXZ/sNnZ8A/iTJgsS9wpA9PsjGuQ/4J
4W4/4XDrs8kbqG0hGiLDGQZhTlJxqYy3kEfgj6HJ2c7237di9dzeNi4VumNzirX7eAmj/aDu
3McbKmmWLsyngDDVBb2rt+3au5Xcr4ybBDAfxtUv7dUUk/7RdxGsSp5mnWKEDP8Ate9ehSd6
1P8Aw/oI9T/b9uvtPw6+F2UEZIlYKSM4MMQBx6VPrB2/8E47Y+tpbj/ybz/Wq/8AwUD0yGDw
H8Nbsx4uozJb7s9UEcR/oKm1cg/8E6LNW4VrK1II9Tcg1wQSlRoX/nf5gH7C8cr/AAF+J8Pl
qPMEqBgembZxmvPP+CcaSL8WtXURllGjZ3cZ/wBYv+Brvf2KCLb4B/FOTaN8azNznGRavXD/
APBNnyI/i7rER2ug0ZsnBBwJcetbVlzzxl/IDm1DS/tzSMVKBPG7sQ3oxfFdL/wUPdj8bdJV
Y2bdocMuRjGPMnX165rm4pEk/bikMYAR/GTHj2Z66z9v0RQ/HPS0Oxi2i26/MCSMyzN6+tdk
VfE0Yv8Al/QDrv293z8M/haMEEzNwe37iOrOksy/8E3ZQHK7rFRwM/8AMQQf1pP+Cgaj/hBv
huMYBmkP0xDGKksoxD/wTdOMnNip5/6/0P8ASvHp/wAGj/18/UCP/gnz5t/8PPHkUrs8az/K
4UDYohYkdeeveuH/AOCf5ZPjPqcZkLMdJkYrtHA80da7b9gONY/hJ8QpAvzvOwJyeMWpP9a4
H/gn1cib416id6l/7LkQ7VILDzR1ruXx4z5ji+V8yIPhsuf26ro5HHiO9/8AQZKzv28zu/aJ
uDgj/iX2XX6CtD4Zp5v7dDOSQW8RX5IHsJBVf9vFYj+0XKZSVVrCyHy/hTjNrF4df3BJWPTv
+Cg3Hw/+Gh7ebKn4mAVBqBA/4Jy6chcIZLW3jViM4PnkVJ/wUHkJ8F/DGBRuRp5W9/8AUCma
7H9n/wCCd+jod8SiC2YHIOSZyfSuda0cPHtIF/EmXv2KYHi/Z5+JcDzCZzPdHf24tulcF/wT
veI/ErXv3cRmGkKDhMEgyAjn14Nd9+xZK0n7PHxInVTIxuLsZyAP+PauD/4J1M7fETxO5ZlK
aZEgAAPHmGqrScYYm3dDp/xYnIfDuxmk/bbtZJfLhH/CR3MjMzE55lwOnpmrX7c7PP8AtHk2
0in/AEXT0YnPqpqx8L0uf+G2rZZQxB165IDJgYAmP9Kr/txXAH7R42gc2unk/XiumEm69N/3
GSt5ep6d/wAFDrmOPwx8Ooyfm82c9P8ApktN8bMLn/gnpoCL8pP2flun+uNJ/wAFBZVu/D3w
9TeUKec2DjBPloKXxvBs/wCCfGgIoZt0do3Xn5nJNci93CUEv51+Yyv+y6klv+yf8V4wykmS
55HT/j2irD/4JuLjx14m3IrOdMtFzuPXzRW3+y0vlfsofFKMqwO+6wzHP/LtFWZ/wTjtxF4x
8TSZy406yPHTmR//AIgfrXVXjzLFX7oDkvgxJIf2y4JN0CRjWL4PGp3FiROBj8ag/bHBj/aq
mlVUdQ1jkL8p4Kf40nwTknvv2voJZI7eBodYviVC7GYYnwQOe9O/aujU/tVMryYE1zp2dwz3
XpVU4qOKpJf8+3+pFXaPqd1/wUOfzZPh95gwj2U2FHOOY/8AGtb4zyTf8MIfDolmIB0w4E3O
AhNZn/BRgoLvwIBKuEtrkD5T2dP8KPjnqEyfsLfD23WBSBb2DyFlxhxExxx24rLBrloYa3WT
NZbsb+zATD+yV8XWkVjiS8XLNuwRBETj8qq/8E3gx8a+LreQ7kNhbDcOoxMw/pT/ANm3dbfs
gfF2Tailpr37zY6xon8qT/gmvIG8aeNHJjy1hbD/AFg4zI7enqaVeTjRxKXf/Ik5D4HLFB+2
TCphDn+0b4RyCMkqCk2f/Qx+tWv2lyG/bCbb85Oq6cuJIjgfvIKX9n7bN+1wWYrlby/IPnHs
GH9ab+0cQf2wz8u8f2xpv3bjGP3kPrWvM3XV/wCREVPgXqdX/wAFFmDeMPB7FEUf2dcHIhOP
vq38q1PjuSv7D3wuVmQQhLAlxCcgfZ/5Vjf8FFm8vxj4PmT97GNNmUx+f7f/AFhWx+0HcvD+
xX8NhHEFCpZMv7/JH+jnHFFH4ML6s2l8RY+D8Qf/AIJ+eKS8iSKUv9p2lQP34H1qP/gnAkMp
+InyxZBtT8wJPKSn+tS/DZni/wCCfXiOVy6Mv2s7sjnNyvHSq3/BOmWRR8RrkSN5WLcEKmeV
ikxXPV/3fE+q/Mg4L9jBYz+1VOBGuBa6hypIH3gf5Vz/AO0CfL/bD1ZicRnxDZHCEE8yxkd/
aul/YphE37T00ymUt9kvyQ0Y9B/tVzHx6keb9sTUAF/dv4islJ8g9nT0ropzccTJf9O0B6X/
AMFIdw8Z+FFQyOq6VMz4fH/LV67P9qOZrT9kjwGbaTyXlOnI/mNnA+zOcjjr8wrz7/go64/4
T/w6sjDnRpGGUYfxynv/ALoruf2sJIrX9krwAqmNgs1gPmU/8+p96yot+xwi7yArfCSRpP8A
gn74wCFxuF8wdmyBmRetZX/BONljl8f+fOftK29uCgUEsNj4I9q0/hu7v/wT98WiVIYvlvD5
aSYUr5q4zSf8E5dPghtviJOUtmmxbxrIsnzKvlucfrWEpOVKvfrNfmio7nj37HV1bD9o3QsQ
Ryyvc3I8yaEFkwGPynPH61rftOyFv2x8iBm26npn/LHJPFsfWsL9j9k/4aV0Lcioq3F4Q4mG
DhG7YrX/AGlWeb9sWRoppNo1PTSWDkY+W3r1HBLFyf8Adf5GdP8AhL1Z2v8AwUp2xeIfCEbx
ruXSrngrs7gf+ymt39rCBZv2TPhk6xpgT6ePvn/nzcf+zCsr/go8Q3inwsXuZ4n/ALKugDGu
7d+8bg5IxW5+1vJPH+yj8MUZHk3S2DbncE8Wwx0+tctKTccM3/WpnKbTsZ3wedY/+Cefj5oS
0TPJfAgSZyC8I9Peqv8AwTnlVvFnjktv4s7fAeQgEiSQ+lSfCa3a0/4J/wDjEkS+VLPdDehD
FSZ4QeKtf8E8LIDxX40ZZ7p4jDFzJGqfLvfac5PPJoxLth8TNbuSN4trU4b9kxRJ+1zMV+XM
mp5BYkA4ZuMjpgVzH7UZD/tb68odQf7W09fvAdBFXU/sozR3f7V4uHLJK66iwUEYIKMP/Zj+
VYH7Sflv+1bqrMk+59WswT5gC8GIenSuqir4j1gyYpRVkejf8FJLuN/EXgqNZGLNplwwHmdf
m6dK1v2joJD+wj4ADAqwlseGcMR+4uPSsj/golcGHxn4LWIW650e4Ql2ByN/0re/aOjEX7DP
gGNfL2max4jOQP3E9cCSnDDxfcZX+AcDf8MLfEdQQzFdSXA7cH/4ofrXO/8ABOCRW+JPi5FY
EmxiUEdMid6634DRKn7Dvj8LkF5NRViOpHyVjf8ABOC2gXxr4xkSHymFtABuIJ5kZjyPeuio
/wDeYdLoDyH9mH/Rv2l9EDfMf7Uu+F/65tXUftUyJJ+2mUDKC2oaT1PT93H1rB/ZWgW5/an0
Ivni/vmwPURtXR/tIqs37aDxB33SahpYOIg2G2JgA/SulNrFRj/cYGv/AMFHL2E/EXwwVbcf
7ElJA7DzmPNb/wC0berH+xr8L5ECy+XLZqQeQdsMgP8AOuX/AOChcTWnxO0mbzZHWfQtqggH
G2Vxxx3zzXW/tWyf8Yj/AA3iRNkQktDgKByYAe3+835CuCn8GD/xMDJ+E9wB/wAE+viOSMEX
F0pA6ZLLVv8A4Jr/API2eMVPBFtann/eqt8MbeNf+CePxAmjZmSd7mdSwxx5igU//gnRG1x4
p8ZvJ8iC1tQdnHG6tcX/ALtV/wAT/MP+Xq9DiP2Qyy/tLWp2kHOoKBkdSKr/ALRj3bftVajb
3HzJ/a9oyopyfmeM/wAqn/Y4s45f2nY5GVfKRL7rkn8Pep/jTai6/bEnEDLM51qyAV2x8uI8
5HtitKn+8S/wIDpP+CiD7PHvhMxTMu7RZnwQez5I6VvftU5i/ZC+Fqx5BJtN2QRyLI/41gf8
FEpYR4z8KJ5eCNGmIdpSp5k7etdF+1Uu79kj4WDJ5ktBySetmB/WlRSlDDRf8wEXwi3y/sCe
OI2+8wvcHt/rUpn/AATs5h+IOOfkg/8ARU1SfCKQj/gn742OBkreN+cqUn/BOcRRWPj9sEsv
kLzIBn92/t/tGuOo7wrt/wAwfaUux5p+x1G8n7RkKKvJs9QT5gQMnYOuPeqXjeNo/wBtG4Rg
oK+MrblSSDlg39RXSfsYCK5/aGum2lWgsbt1/ebsksnUVzfjaZf+Gzpg5wR4utWz6/cr0r2x
VT/AgOt/4KJqT8V9J+cj/iSvwHx/y0PtXX/tehLr9nj4WfMMZjbn2tVFcP8A8FEQ03xrsYVV
jGmiAqwYZO6Q5ruP2vVkb9nH4WxushbCFjHg4P2dCP1NccFaVCP94Jvlg5Ik8JOZf+CduqMw
Pki2uvl7/wDHwaz/ANgW3S20b4mCYqWEMf3T1HkTYrX8Msbb/gn9eQTRvHEBMjkoQ2DOeg79
T+lV/wBhG9t4vCfjuSCSSaSOxillWS32FMwTEZByTx70R/gYj/r4ipKxxH7DtzG/7R16YUmj
P9lXe4PIgA+cdMCs/wAcPcXn7Z24SSzwxeJkLBtuI+nPBzWj+w7q0WofH++mPlB5tMupCsce
Od8fAz2+c1j69fW0n7Y7uDi8TxOoERXl2DAYGPb1zXW26eMqKP8Az7ZJr/8ABQSye/8Aivam
ESSbNIy2zHAy9eOf8FSj5fxI8BE/9C1Cvzdf9Y5/rXtP/BQRWi+KUM8bwxTPpSK8Yfa3Jkzk
V4x/wVPjMXxK8CqvVfDsQ9f+Wjj/ANlFd2VJJYdeTMKuyPP/ANgq3N18WfDEe7b/AMT6BgSM
4wpJ/SvqX9vorD8SNMnWG1YjSETbPGQDlm9Bg9utfMH7AaF/i74XUMFJ1lGyRkcRMelfVf7d
I8/4iRIrwzNDo8e5ZEkUcuuCCM8/WjMWv7Sduz/I3p/wn8vzO5/bmtHl+A/ggmRUH2uE7DHt
VT9nXpjmqnhaURf8E7ZHE0bYgkzgEZ/0g96u/tvSrZfALwRA7tI5u413DJ58gdSaq+H7JU/4
JzyeUpdWtJJCAOcfaDXz10sPTv8Azl1P4r9CD/gn9Kr/AAm8eqvlxD7W2MZOR9mYDr7AflXm
H/BPy3U/H+9fKfLpNzz5fT94teqfsERLb/CDx02CpjuZFYEelux/qK88/wCCe1uT8a9bcsoE
elyhgTz80qgfzq56zxTXQgw9TiuG/butYWRcHxWx8wjHyhWI/lW//wAFBoinxk8P8rIH0aJf
mbAH71/8KyJrk3H7e9mHO+P/AISlgCvOAElFaH/BQzf/AMLq0FUICf2VCBkZ5Mrj+tdi5XXp
W/59sDsf+ChgUeDPhnG8YO23utqK/U+VHyD+NaPxLlEX/BPzQUUmMLb2Y8vfnblm4z9azv8A
godI8Ph74YW7xCRore6ZpNuFHyRcZ9eDWt8UYzJ/wT90gBcFrawONnA+Y150rPD4aS/m/UJf
w5Fr9kO3X/hlv4gkQFV8zU+c5HEBrzv/AIJsR/8AFx/FDupZhpUAA3YONx/wr0P9kkNZfsk/
ENtiZWTVidgOcCAk/wAq4H/gm1C03jfxXOwxIdMgEYPfDMp/WqxDcVjH05l+hf2Y+hynhFy3
7dTSOpRj4pvG+brnLn+fNav7cR+0/tM6WrPn9xYAZPbc36ZrD8AXJ1L9uOJpAf3viW7Zc+hL
AfzFb37cESp+0xo5CMClrYISR38wn+VdznFYqLv9hfkT/wAur+Z6B/wUgugul/DWNot4M90S
xGQP9TzVbxQRF/wTu0a2mhLb4Lfh1+7/AKQ9aH/BR1UHhnwFIZ1V1e7AhIJL5RM/TH9al8Zg
Q/8ABPvQ44S5ia2tSruuefNJPP415eGkvY4drbnYP4Jegz9iSFU/Z3+ImYkIb7RwCx3H7Ic/
WuI/4J4E/wDC3tbHlIscWjqCj5BA80Y2/rXf/sbnZ+zR46mknLxBr5iu3GdtsAf1IrgP+Cen
2t/inrcx28aWgUjrgucc/iKeKfuYxruv0FH4I+hzlrOi/t0zGWKFT/wlpZcyl+NzHOag/bb1
Fz+0zLEI3wlvp/zh8jG3OP1/Wr2mP/av7eQELzmMeI5WPmlQSVGGxx6iqX7a0kzftOXUO5/3
kWngBiOm1Ov/AHya76El7el/gX5B/wAum/M9a/4KDXZl8E/DJZDtDSXRIbjOIIMfzpda+b/g
nTpo6n7HZnH/AG8LUX/BRGIf8If8Mt/RXujx/wBcLerniVBaf8E/NMiClnNlZjC88mRW/kDX
JCSjQo3/AJ3+YCfscK6/s1/EuUJH873wZhgEqLXjn8T+decf8E4pVf4u68pUk/2TjHmdjcL/
AENekfsat5H7MXxDkdSAJL3Kkc/8eorjP+CcdpInxC8T30ixoItPgTKgE4Mg/wDia0qSSnjP
kBxnhvTpLz9tMSxqqGDxW7sssoAcbpOmeprpP2+ZX/4XzpgZmA/su0ADHP8Ay0PH6n8zXO6e
JX/bQiZo2wPFLHO3GRukre/b0Dt8fNHSSNsCwtAOnGXyM12Rko4uld/Yv8rAeg/8FAv+RI+H
AILATy8A4/5ZJU0Uip/wTsjiMLANYr1f/p6z/gag/wCCg0efA3w78wOiiWckgf8ATFKdfQLa
/wDBO6IhmYNYQnkf9NhXDRcfqlJPf2n6gWf2DIVj+Dnj9QBn7XMBzk4Fse9eef8ABPpQfjJq
ZC7v+Ja/3eP+Wwr0T9hofZvgX45uB2ubon/wGIrzr/gnuYj8WdXEkiqh0zkkHA/eYH6rSqvl
nixrV2RkfCxZ1/bYjZo5Y2/tm+bLEnJ2tk0n7dqG6/aPSIqSv2eyUnHBBI4qz8IZUuP22JZI
ZVlh/tbUCrLnvvNP/bSVrr9qCxhH+rdNNDZ/31rqjZY2m+1P9AWp6D/wUKQjw38OFgQyIss4
wRk/dAGP5VN42tRB/wAE/NMjRM/6LZMCB6ynP8xUH7frLFpPw7SMFZVmnKsz8DAB/pWl8U0S
x/YC0aLcrN9i08na2Bk7C38xXJR0w9BvrIF/FmR/sWwCP9nT4gDZtBmvCRjGf9Gri/8AgnLG
P+E08UEr832CAHI5/wBZXY/saqD+zj4/3KSd970f/pgK5X/gnPA0vjXxiVO0fYrbvyPnJ/oa
df4MT/iHDScWzl/hbBNF+2zp5aRpS2t3ZyTnAxNxVf8AbVt8/tN2qGP70OmAqR1+dBj+dL8J
7+Sb9ti1yArR6vfKAOhGyfmr/wC2Q0l5+1fYbVLEPpg/8irXTT/j0/8AAyFu/U7T/goDZFrH
wPIx5WGbZEfu/cTnHrWp8QYkH7AHhvhEXydOJLA4x5nPSq3/AAUNJj0fwMCjecqXK9OMbUq5
8SiY/wDgnx4fDKyh7GxUHHua4YySwdCLevP+o/8Al630sUf2WU/4xF+JBTyHDy3OSO/7pB3+
mPwrH/4JyCNvEHjNR5PmrY2YADHK/vJuw9q3f2Z1if8AY78bNArNvN9n5ccr1rnv+Cbqy/29
40uGZTF9jtFChcMD+96/99CuipJKnjG31X5oDgvgOyN+2YgbEyrqOogMrbQMB+34/rVr9rCR
P+Gr7MIhybnTsgSdeUxUf7N8EU37Yhl6Fp9ScfLnBOAan/ao5/a700xuvzXelr9zuJI63h/v
0f8AA/yIq7R9Tu/+CjhY3vggoJAv2a5+6qsPvJ3q5+0Gpj/Yq8AjBUH7DvAHUbD1/DNZ/wDw
UVKS3HgrLw7vstyTuBB58sDpW5+0rBBafsceB4XVA+yzX5QevlNXBh2/ZYX/ABP8zWWkmY/7
N8RuP2M/imm1i7vdncygdl9Kq/8ABOAbPFnjb5dpWwtR0xzuatf9nuzjX9i/4iyEIVka/K7y
R0KjtWT/AME3rYL4h8dOhjCfZrNPlbODuY8101f92xHr+pO1rnHfs5NL/wANfglWZPtOp5GO
OhxVj9oqAf8ADZaJKodTrWnNlhkAb4ab+zcqD9sW+RkiaFZdQYNzgnnvUXxxtkg/bQSEbGMu
tWJLKSSB+745rRySxFn/ACIHZLU67/gozFG3jfwunzxj+y5ihSIMPwNa37T1v9n/AGPvh3GG
AXNmoBjwT+4PFYH/AAUludni3wuFB3JpsxT5iOPMINdl+1S8+k/sr/D0I74d7SMorAKP9FIy
cilRkuTC69WN36mZ8OwU/wCCeOtfKCWiuCwYE5zdDnil/wCCdixm0+IgJiTD2x2hD08qTJ5r
U8ORPH/wT4vFRxIZrRuPOQctdDH/AKEKo/8ABPGKRtJ+IyCB2mSaEq0Uqn/lk4/EVhUknh8Q
r9V+Yjzz9iy5tx+05f5mgGbG8KmNyCcvjoPbiuf+Lfln9tG+BgaVP+Emt+Vm2rjemOM1137F
Uk1z+0jqs0sey5js7pWG1RjMlc58SoTdftqOkyziCXxHbc/IdwBHQV2RajWqJ7+zQLVXR2X/
AAUbSWTx/wCGmEU0g/sRh8mDg73zkn6n867P9rm4aL9k74eQmOUTyrZugVFY5W0z82eMnNed
/wDBRdHX4l+HhEEig/sPe2UwSTI47H2Feg/tZnZ+yt8P4wYiWW0ALIdwxaduahW5MHbuAfC4
Syf8E+PE7yK7OYrwZK5JHmr607/gnTEkeg/EWS3WY3JnhBLxrjHlGmfDidF/4J76/ujVQYLs
ZKnvKvvSf8E6Zwvhr4gvHtAe4i+6CP8Alkx7/Q1xTdqNb/H+qLhueH/sfwqf2ntFbYSS18SW
UA52NWr+0o8lz+2hAvkzMTqmm5zGP+edvUX7HttJF+01owkK7la/Bwc9EP8A8UK0/wBoWNE/
bQDAjP8AaOn/APLT/pnBXsNp4qVv5H+RlT/hL1Z1X/BSDbH4q8J+ej4/s+5A4/6aGuh/bBMU
n7L3wz8kfKJLEY9P9GFYf/BRqQt4p8Mld3OmzH5HBP3z61uftchh+zJ8OWbON9j94gn/AI9h
6Vw0fhw/9dS4pcsrlL4Yxon/AAT48YoChGbh/LCdf3qHP5gc+1Vf+Cbu678QeMk2soFvbZGO
o3ScVo+Ao2s/+CfHiOZQWaSOYEDqR561X/4JvsB4j8Zh1IKw2owWA7uf5EVjVbdCv/iQlscF
+yFFFJ+07FuzG0b3wEaptbb5T87vTOOKwv2lbwJ+1nqwLBR/alkQGTB6w10f7ItuJv2nZJfK
YwxrfciQfewKxP2ibEap+2LqEEocq+r2Q/1oxjEQrvpSUcW29uRgeh/8FE9OaTX/AAncz362
aJo0hUSRbiW8zkA464rov2hljl/Yr8C7JQYnn09A7L8q5SQZx9M/hmuS/wCCj9zKnjHwfbSR
yCGPSJpW2OGP3zn9BXaftMKE/Yj8DhQ4RX08ASYz/wAe05/rXBZ8uHktr/qNa3sVvgC5f9hf
x55k6HDaiCzJtBxsGao/8E4tMNp4q8bSRNAbfZaqPs7l17EDJ/E/nV34HTpH+wx44Z22D/Tx
z15KdKs/8E7JRqGo+Obj97KBNZBHkQKfuNngUYqa+r4pp68yEeJfsrBR+09pZCt5i3t6VKnh
R5bZyPyrov2hrUv+2tDIWtDIupaUcFipclI1HHqMVzn7Jcu/9qnTxsZcz3/3hj+Ct348RRp+
3Zbbv3jPq+mdf4MRxnivdrJLFu3/AD7X5AaX/BRtfJ+I+guJcRf2E3lKG5B8x85rt/2qYjN+
yh8OSgLMj2hBVsEf6M3+A/KuK/4KPQw/8LM0MMdoOhMAx6cSuP613H7V8UUH7Knw5XdGfnth
ls4/49n6V5WGa5MJfuwMzwDbTXX/AAT88ZxyCULH9qALScFBLwPoKg/4J3SG3n+IcvkyNJHa
QbcNls4JAH862vClq0H/AATr18RmMs9ndM5Q8AefWJ/wTvZZP+FjuzqW8m1Cc9/KauObcsPX
d/tP8w/5er0OE/Y0kmh/aZRQk0J8u/OHwMHPTjvVn4o3j2v7bV2qj95Lr1rCd38IJTBH4Cqv
7HLpF+007TKGlP8AaDyYkzj5+1N+KFuP+G5pWRwyt4lsgMtk5CoD/Kutv/aZX/kQHZ/8FFLh
B488NJumhQ6HNsXyAwb5+Oe31rY/awDD9kb4VhQd/n2QwOv/AB7Lmud/4KKzeb8QPDUaqwLa
JMoO71euh/bBtZtK/Z2+FkIclFlhDgnv5ArahJJYZPux7OxB8IAV/wCCe3jZ5C6hvtihgpbj
zk7Vqf8ABOpHt7D4gjc7xK8PzshGR5Z6iqvw4QRf8E7/ABJIowTDdncWwM+cvFP/AOCfEslx
pPxEXy2Dl4SQX/6ZmuOp/CrvtIRwP7Eklxc/tG35WXzFNpdjyyuARuSsHxZCZP22p0l8qI/8
JZAR5ijaQFSt39hu5LftEXskSsxTTrolccn50HFZWvTC+/bUkSdZot3iuIhSADwqnkV6E3bE
1H/cQGp/wUbeOP4u6fMhVQdFjG/7ufnNdz+1y01t+zn8LiBHET5eTnGf9Hj/APr1xP8AwUQ3
yfFyxjZxIp0WJlV1zgbzXov7aFvHB8BPhordI5lC8ZH/AB7rWOGaf1Vv+Z/oTV/hv5EGgXU1
z/wTyv5pD5ziOYh0fnP2hsHP4Uz9hVJ5vAvxKmmd0TYI0YtlgotmwM+gyfzq7oV2jf8ABPmd
0tY5S1vIRDs45lc54+tM/YSU3Hwu+IpVRGC7L6AH7Ia4al1hsR/18NZf5HnH7CkRj/aBu2Fu
4jGmXIVt3H3ocfy/SsTxEjw/tuORHLDv8WKVIJwwwP04NdR+wZamD44apmW2c29hKQ0RLYxK
Af5GuedPP/bhtY9hjQ+JWDb5N2SEY/1r0qck8RV8qdvmT0T7nRft62cM/wAbI5LuaeBToylX
ijDqW/eba8g/4KpJn4h+AzJhpP8AhHo9zYxk+bLXqv7f10o+MthbhlZv7Gg24kxwd4H8q8r/
AOCqbbviH4DI7+H4z1/22rvy34sMv7rMKqbR5/8A8E+ZAnxo8LZzgauo468wuK+tv25LyXTf
inZgS3EKXmkwpKbe4XJG9QFIPJBxyO9fJX/BP4bfjX4XxkL/AGvyR/1yYV9eftiG6k+M2iQ2
kEF0i6ZbsPNEYYnzB/e549qyzB8uaNf3W/wNKf8ADfy/M7D9veRR8FfCQ8vrfRgAjGz9wOAO
wqnoEob/AIJ5iOAtARprHIIOf9Iarv8AwUCiMnwm8Lm4nCSnUMspfbg+UOxFVNAcQf8ABO6A
OUy+lNlwwJ/1jHPT1r5+UlLDUrfzmtT+K/Qi/YVjP/CnPiAzMWZ7uYk4/wCnauA/4J928a/G
jxMCu4jSgcn/AK7R13f7CUin4NePtspci5m4P/XtXB/8E9C03xm8U5JymlAn3HnR10w2xn9d
CDl9M3D9vGDC7U/4SmbP0HmD/wBmrpP+ChNtG3xm8OlXJJ0y3GMf9NmrF0fzL79utQke2MeJ
bg5Cf7/etz9vVw/x00YCIOqaZboFPQEzNzWtD/eaX+B/kB2f/BQwSz+FPh8y7Svl3gKHt+6j
5q58RrVZ/wBgfSQGYsltY5JPBwxrI/4KJQXK+HPh4UBVjHdhh/CF2xc/qa3Piai2n7AGgAsJ
A1tYgEd+WxXHzcuEwzf8/wCoT/hyHfsqItz+yD8RS7bNw1huv/Tu4rh/+CbqJa+LPFiJiRlt
IolkyeP3prt/2U22fsc/EEqcN5ern/yA9YX/AATit1bU/G8pUYWODt38xqvFvmo4t/3l+hX2
Y+h5N8JbeT/htK0eZsyxa9eOcd9pZh/Kus/bTtEb9prSHy3zQ2XBOej4/wDZv0rmfg8/279t
WNVGMa3ff+gtXQ/tqyyD9p7w8oJwUsQw+svP8hTnriKf96H5IX/Lpep3n/BRgFvDngmQLMzK
bll8uQKo+VQQc9en861vHEVvF+wF4dikQFPslq3lRtyCWyf51j/8FGoh/wAIt8Pp2GVU3Idf
XMcZ/wAfzrZ+NQRP2C/D6oBGv2TTsBeOpGa4ML/uuHfabB/BL0If2NVli/Zh8fsAjeWdQwDz
ndCf/ia89/4J2TCT4reIm6N/Z0Klc8f6wV337G0JtP2X/H0zNwH1HOT1HlMB/OvPP+Cc8Z/4
Wt4klB4awi/9DFdVSLnRxj81+gR+CPoQ/DeCKb9u6RJDymv3jqfQ/NWN+222z9qNHyP3kGnM
S3QZyK2fhuin9vSQmN2zrt7kqeP4qzv2ybdbv9rOyhONpGmpg9h6V0U3yYiF+kP0F/y6fqel
f8FD5TL4O+G/ynAa7O8dD+5hH/staHjaFZv2AtKDE4+y2PQ4P51m/wDBRllHhT4dLGNpVbnO
PXyo/wDCtTx/BIf+CfejmNjEws7Fj71g4OWEoT/vt/iBD+xvEs37L3xEgztTzL0ZPP8Ay696
5T/gnIVl8VeMFBi/487dfkXniU11f7FjE/suePXP3mfUCSf+uGP5Vzv/AATiVD4k8ckAZW2t
sEf9dGqakub6215AeeeCJo7v9tdo5IiyHxLKcGQnBUyc10P7dqQJ8drR3t1lknsLL52JypDj
kVz3w2jD/tsAsuT/AMJJcH9Xrc/bpZrj9orTYRkIlpZDH/Asmuybti4P/p2hnoH/AAUDYxeB
vh8WUKBNOMsxI/1KVoeI9g/4J3WYEkYzYQDv/wA9hUX/AAULiMvgLwEqqWPnTH5ev+qSp/Gz
Cx/4J72CbSPM0+2ADY4JmHNcdNf7PQfeoJauS7En7D8If9nrx6d2f9IuxkdP9TXnH/BPQB/i
7rCuWdRpgyrHIP7569B/YgnZf2ePiDJk7fNvCB7i3fJ/MCvPP+Cd8Lr8Wtcdm3Y06HP4zPmt
6sPaLFTX8yKg+WakZPwdudn7ZiwwxIq/2rf7UBAx8rZq1+2IXP7U2nkJtXZp3zscr99fSqHw
LUyftntIy7mTUdQYMRnB+YVpftftLH+1lp6Rxgxf8S/jt/rFrof+9w/wMTXIuZnbf8FCSv8A
ZngBUfEokuSeOnyitj4uGZf2CdBKqJFNpp+87RkDbFWB/wAFF8QQ+B5EGD5d2xx67a6D4tXc
P/DB+ixyKoRrXTwA2cdQP5AflXFGonQwsO0hR/iSIP2OJfM/Zx+IEm0qge9XLDH/ACwFcz/w
TifHi7xo45xYW5H4Ow/9mrpv2Ogf+GXvGwyGDNfE7en+prkf+CcN0o8XeMkA/wCXa3T8PnP8
wK1r/Bif8QHIfCWxmT9t2FS0YY6lfygk8Y2zcfrVr9rDdL+1ppqS7cvLpnMbHA/eJVX4GDf+
2tdsfmK318VJ7cyD+RrS/anjVv2uNJyoP+k6WPw81a0pTTxMIdoP8htcseY6/wD4KM3Ucdt4
IQI5bbc/xHrwP/Za3fiVi3/YI8Ox7TuW1sR/rR7msz/govbn7J4In3AIv2hdp+pra+LUcR/Y
V0MhEP8AollyAP7przd6eH/vSv8AcxLWXL5XIv2cbeaz/Y58VHeAJY9Rk4cN1rl/+CbW573x
jkAkw2fJYD1rqP2akX/hjXxOcDJiv8/lWF/wTohijk8XMqKGJtEJx22nitsV/Cxf+KP5gcB+
y7B5f7Zd4jfO6zahtA6dVo/abtGP7YOnhyQDf6bj/vuOrH7Kh2/tiaoR1H9oMPrleasftJJ9
o/a302Vju2appyn6bouK7ozUcfBf3H+RNX4Y+pvf8FFnaC98GExFk+yTYbzdueYu1dP+1Jay
N+x14MuPlyn2MhQev7o1gf8ABR1llm8GDb8n2W4wPKzjDJ3rov2ogsX7IPhBYvmjH2Lknp+7
NcOHd6WFf95/mVU6lH4BrOf2HfG7oAHcagwGM/xrWP8A8E3j5ereNg0aszpaBzuC5wHOMV03
wFfy/wBhTxPICA7RakSfX96BWB/wTkVJrvx0cfvf9Ew/l7uqv3rqqf7vX/xL8yp7w9Dg/wBm
i4aX9sK5XyGWN21BwueFPPernx3Qn9tmDIxjV7I/ez/zzqr+zLp5H7X8qEsWUagzHHUc9qu/
G+FR+3HZABsNrFmCPK68J71dWDli21/IvyImuaKS7m//AMFGbWSfxP4VlUSnNhNH8hwP9Ya6
39sd2i/Zb8AA4Miz2rbCecfZjXL/APBQuY/8JN4ViJYl7WYLxtx+8Pauo/bLt4Iv2avAUbRA
3Jmtf3hJGNtuc/nWFKPu4WPmy5O7uO8Ngy/8E9LolfL22DtnaG5W5AHGPasv/gnRAW0j4gKZ
1HzwRHMe0nED/NW1o80cH/BOmRmZUL6QTkTYJY3AJ/rWL/wTmSY+GPiPKxO7z4SpWVcf6l+5
6Vzt3w9eX95L7mOPX0OG/YnjSD9pPWMSQkCwuV+Zc5/eda5Xxukdr+2s6K6SKPE9upfJz1B4
9K7H9iW23/tC6s5GW/s+5J2XEcmf3n6Vl+LdJkk/bWR4xGkTeKLYkLe2zv2/g3b/ANPrXp1F
fFVV/wBO0ZU/4aND/gotcRp8SdASE+Z/xIV3EvjH75/Wu1/a8Mf/AAzT8Nw0WXIted53f8ev
8OOK5X/goZZxXXxW0RZIZZCujxru82JQB57da7j9su0jt/2ePh/bqkgjL242oEYcW3Y5o5XC
GDi+5RF8PJfK/wCCfuupdTi2RorgLvcAkm4A7f7o/Ol/4J3Ix8J/EGJg6MtzHgs4bjy3GePr
TfAJc/sA6xm0aeFYrn5pIkOP36+hz1Jqb/gnTbx2/gjx2ykjfdrlSm3HyGuCr/Br/wCNfmi4
bnjX7HcTyftPaQp8xsjUX3DH9wVr/tDCaP8AbSjBBDHU9PxuUY/1UFZP7HRH/DT2mHPIgvyO
e+AK2P2hvLuv2z7a4G2WI6nYAgy8j91B2r1Y/wC9P/AzKn/CXqzrP+CiNwsnjjwrHMF2xadM
CdvBy7V0X7YMIh/Zv+HUCKzRtNZkMqf9Oy1yv/BSKZG8X+FFQBQdNlLe/wC9xXT/ALZrFP2a
vh6UEuEeDLxvjZi3GMCuKnNJYdev5lrVSfYf4JxD/wAE+NW8z5d0ErcjP/Lyo6Vnf8E6beJt
V8XytEjFYrYb/KPzcGtfR4rRP+Ce+vCF5pIkt5QkrH5h/pS8Vif8E55gq+OGSabcsFuQ0jfK
p2NyaqrBrD13/eQjhv2PDj9pqWKOGNQ6XrFhCdwPHesz9oIRJ+17fMqwtK2s2TMzA5BzFmtX
9iqKS6/aZu5BJK3lJfnKN8pGe3tVP4xWx1X9ta8iCybH16zUqccjEZrXfEOPeDA6L/go/cIn
jfwmCInJ0OY/JkH7z13P7UFwrfsaeCWG2JWm04bWJP8Ay6TV5x/wUikeTxh4Xj8uUSppNwm7
Azje1d9+0kfP/Y68FW+2XzY7mwXBxg/6JNXNCa9hho+ZUXy81+qLfwRS3vP2HvGBlETLtvvl
yfVag/4JwyxR2fjhlZNwns8DeRk7HpfgnBcQ/sMeNwVlV1jvvugf3lpv/BOUD7B408tpgxmt
OXhGP9W9c2JV6OJX95fmRFWSR5J+ykBD+01pa/Zyswu9QR38wFQNnB/nWx8dLcH9uizO4P8A
8TnTxuDjH+pB/wDZayP2ULBT+1Fal5CuJtQcHZj5uR/Ktn4yQXk/7ddtvhTjWLEgBR2iIB/K
vfq1ovGyVtoL8hmj/wAFGFjm+Ifhnq7LpEiYH8X75q7X9sY3A/ZZ+H4VG2RXFquNg72r1w3/
AAUYRF+Jnh8KMAaVJjB/6bNXdftjeZ/wyr4G8tS5MtmTyev2Z68qK9nTwTfVv9QJPCtuZv8A
gnt4hAkZAdPugwwPm/f1h/8ABOxJGX4hxqhX91aAMVGB+6atnwsZIf8AgndrRCmN2srnIHP/
AC3rL/4J5RILX4huoG7bAMiXPSFu1YWthKz/ALzX4h/y9Xoef/sbRSp+1BqAkdCoh1AZCZx8
4qD4lWUg/bm86SVhu8SWbBBGcYKof61N+xQpb9pXUWIy5tr88vtyfOWnfEOe4uf24ALgbSvi
K1VQHJG0EAfoP0runH2eIk3/ACIXWPqbn/BRI7PiB4YkwDjRpeCOP9ZXV/toSCT9nv4ZsRHH
/pMXOMf8u4rlP+Civ/JQfDq9hor4/F67H9tiNI/gD8PFHyKt3EFwP+ndawhLTCz6KTLn/EYn
wv2H/gnh4iBmQFre7UHGR/r1pn/BPdX0+y+IY3xPseHuTn92ad8MZZE/4J3+ICVCZtbvsOf3
61Z/4J8/8i/4+yucyxKeOSPLPFKo/wDZcU/7xJ5v+w6qN+0Reyq6g/2ddEKhP99DWdr1tJdf
t1OqEFz4nRyXcAf6ta0/2HCf+GjL1OFT7BdDYw+b7yVR1aBbr9vOOBvLAbxJEx3jr+7Ga66s
uavO3WCAs/8ABQaQy/F/TCQATokSEA5/jNenfttCJfgT8Oo5XKyCZMBeh/cLXmP/AAUFuI1+
LdtEDCM6LFtfBzH+8PSvSP250W2+DXw8gO0f6QmC3QfuEqMNB8uFj3k/0FNc0HFDfCSNJ/wT
ymkt2fzRbNjaAf4zR+wfM0fws+IWQXTz23q3GP8ARDU/hiOK2/4J8uFaNENoxLI+3Hzmqn7C
0DR/Cz4huGAhknbKK24H/RD3rlrO+Hr/APXwpu5yH/BP3yY/jD4jigSRvN00gsyjj94ST+tY
lpJj9uuFEwVbxNKNxGcERsK3v+CeIRfjJ4jxHLxpy9/WZgf0Fc5pw2/t2W6hHUf8JIzfN6mJ
810Q9zE14v8Al/QH8EY9i9+3rcRN8cNPguIo5lGj2vWMZ+9J3ryz/gqmVj8d/D5kGFPh6MBf
QB2r1z9utFb47aSJGeNW021UlY92RmTivJP+CqgDeO/h/tbco0BMMe43tXsZZ8WG/wALM5ys
rHB/8E855F+NPh6LYzxvqIBC4z/q29a+xv2sCkHxw07IESR6VHIWkUPGASqDbIOc7iBg/h3r
45/4J5gN8b/DQIYj+0hwnX7jV9dfth28T/Fu2lkcMRptjHDbjG1Q1wu4sCDnoKzzFXze39wd
+WHKvI7T/goJdCX4V+HAbd5Wl1BvLcfw/u+vQ1Q0y2n/AOHeEXloXdtJRVC4JJDvmpv+Ch4j
f4f+EgqBVa/YgLwBiL0FN065Ft/wTsgCbo1OmAkq2DzMy9f1rwlTX1an/jNan8V+hF+wqkkH
wa8dP8wkNzMGBRc/8e1cN/wT4Ek3xq8Vsck/2QOuB/y2T0ruv2F4mi+C3jty5kU3Vxgt14tw
OtcZ/wAE81x8Y/FL4Y7tKVeF4GZkP9KVSTpzxcV1IOU8NWX/ABnSXIKxL4iusMowA+DjI781
r/t5LI/x40Q+akimysxhVxz5+f5GqvgiO3vP25ZxJeBrhvEF0y25JGzCnHNWf25nB+OOmbz5
UkFvYKI3zlgZFGRjtXXQ/wB5pf4H+QHb/wDBRGeKPwx8PTLIIk+zXhDFtuT5UHGT16dOtavx
iS3P7Bnh9nhcSLaWJYg4GcntWR/wUPXf4R8BlJ/JZYbuLd2cGOJccjrzWt8Y1x+wbog2mP8A
0Ow+Vuo5NefP/c8L/j/UU/gZW/ZQt5D+yJ48OOHj1ZV57tEyj9SKyP8AgmyElvPGSuX2qIGb
acYG9q6D9lV/J/ZB8b8Z2jU2+uFz/Sua/wCCb0Wb7xr+92borYdPU5/rV13eGLj/AHl+hp9m
PoebfAxYz+26qQklP7V1DBP0euq/bLbZ+1BoKbzE4exJcDJcZWuQ/Z/Hl/tnld29n1XUMP6c
PXR/tjxtJ+1poUZfhTp4zjrllraorYmC/lh+aI+zync/8FH9y+HPh/ulaTc1zjKgY/dxelbH
xqjil/YP8OOT0tNOzx7isn/go3KV0H4ejyg6AXLs2cY+SIVqfHWVIv2FtBjj+dPs2nAN07iv
Ow3+50P8TH0a7kf7IzR3X7KXjfBOzbfgnZnpE2eDXn//AATrUR/FPxGB5e06dDgrkH746joK
9I/ZNVof2TPGEsabN6am/wBMRGvOf+Ccdutz8S/E1xkq66fAMDnOWB9a7/8AmGxfqv0BaJLs
UfhopX9uqcH/AKDt6f8A0Ks79ruEz/tQxKsADAWByxA7g5/IGtH4csyft13W6NwV1m/fpnOM
/wCNRftctDdftaWsT+aXB0+MIE+9g7fX3oh72IjfpD9A+y4dDtf+CjLBdB+H6sHyPtB+T6Cu
g+J0Ed/+wNpIE5j2WlgQHPOayv8Ago3Ljw54FYwOoR7hNm32HOa3fiNhf2CtJIQANZWBw681
NGTnhcLB7OTEVP2OY2f9lXxzETuc/wBoc+v7gVzP/BOBY18R+NVRmZ1t7XI2Af8ALRvSur/Y
5UH9lvxywcBj/aHGOn7oCuV/4J4RKnirxm2Ac28CEEcHEh5/WuaUrUcXPre33AcP8On8n9tw
SOCqnXL0Dj3rW/byia4/aE0MxDb+4sySvJP7zH86y/hLIk37bUqskahNdvVwWxnO45/StT9u
K5839oXRI9oG20sX3RnGf3pbH64r0pK+LprvBL8LjW53/wDwUMna28BeCdrbGMs6kj0MKVL4
7hg/4d/2SgYC6XZ8+v72q/8AwULJfwL4JdkwBNPxn/pklX/H5ST9gDTW/wBXu0yzX1/5a1zU
/wDdsN/jZMfimN/YkZIv2d/GmDlQ96OBn/ln/wDXFeef8E7DCfiZ4iEe4zyWMe4FD2kbP8xX
pn7E0KW37N/jKVOWaW+JJ9kx/SvPP+Cfs7zfFrXyskvl/YkyNw/ikPt/s1t/y6xP+JDMX4G3
ixftj3cUVvPFI99qG5mcbW7Dj6n9ak/a/hluf2sNMBlCxk6awCjj765ql8BnWf8AbLuJSzL/
AKbqBwxz0Of/AGX9a1f2tdh/as0vljxp/IXP/LRa1f8Avcf8DKqfw0dN/wAFHQ1tpng6KJwD
tuiWz2KcV0PxdtQ/7A+itJMGb7Ppxwf94Vif8FFJbjZ4FXeohMU7IXgyAdnfnmt745GWH9h/
QoiFkzDYKX24HALdPwrzKf8ADw/+IlfxJehR/ZM1GKw/Zf8AGkgfMO695HJz5PpXLf8ABN+C
STxb4zlx8rWUHOfVi38ga7X9lWNY/wBkrxa8bsjN9vf5EGBtQr+uM1yH/BOEOfFXjV2aQ4ht
lJKYzkPzXXX+DE+o46zUe5yfwBgdf20brI6zX/8AMVf/AGqIX/4a40UYGTc6YRz6Srmk/Z+b
H7ad7lCzLJqAKg9DlcUz9qIed+1vo0jymHbdWAAYcH506HPX2ow/++x/wfoJvmTg+52//BRi
CI2Xgl2w0ubgbSOCMmtX4s7ov2FtE2xJFCLSxOEHPQ1zP/BRbW7f7T4Q01VmN1b281y26PA2
k5HNdr8XrdV/Ya0uFZjlLSzG4JnOB6ZrJQTpYbylb72C0lzfIp/syH/jDLxYMEHGpHkVz3/B
OKGI2vi5mPPmWmf++TXS/s2E/wDDG3ibO9/Mi1FshMY9utc9/wAE5odtj4xOJOHtT9z/AGT7
1NZ81LF3/mSA4z9lqRT+2DqylmI2X7H5B0yvpT/2ibMt+15bC3UtGmq6WT26tH/hUv7Jsjyf
tWa5KZIywiv14jwfvgev+z+tR/tATxT/ALaGnrLOBGt/prMDGTzmPHQ10S/5GEV2g/yJq/DH
1Ol/4KQRy27+EndFCGxuVGUyc7krrv2o0jb9kzwjKqRTKDYjYVxkmMgfzrkf+CjcUcy+EZGe
Da1vcYVtwOMg/wDsv611X7VjGL9lrwfChQRhrBixJA4Qn0rlw+lHC/4mVU+0Vvguqy/sNeJG
YRRoYNRIG31lFYH/AATsYeZ45RQrFfshTbGTk7HJ7Vv/AAhIsv2FNePnxFTa3hJ3sMZcegrG
/wCCdk/2ew8eXoljQQvCGkMjEECJjnGCe9bOblQrp/zfqVPeHocH+y7dtcftWyK3Rl1HOcj1
qT4y2Qh/bls9qgMdZs+jE9k9ap/sqOj/ALWbZuImGzUG3Annj0xWt8aAT+3Lpr7o9j6vZkHf
7JXRVk44xpfyL8iTU/4KLpInivwj5aOJfss2HVgB/rD/AI1237ZDk/sy+B2clmE1kWPXn7Mc
1yH/AAUQZ28d+D48xvF9kmJXdjnza679sZWX9mrwYkUexZJ7fPOeBDt/9m/SsqLusK/NgT6P
bFf+Ce58zKhdI2kgA8+cKzv+CcaAeG/HiozHNxH/AAKP+WL1r2khi/4J6yZRudLU9R3mA9ax
f+CeayWng/x/L5bYWdTnj+GF/euRf7rW/wAb/MuPX0OJ/Yhyn7Q+vA7ciyus/uVJ/wBb65rM
8RyH/huxIwkXmDxLC2540L421r/sJ2ksv7QOvOVLKun3D5yPmzJ9azdaX/jO2JT5KsfEiNmS
Pc2Nh44P9a9Sq+XFVX/07RlT/hIvf8FDyG+L+hNIpCnR1UE2ued49xXov7bdvHJ8BvBEwVCY
54guYCCf9HPbNeff8FC4s/Fvw7l5XQ6WmRHGxUfvAOSM4616H+3bFDa/A/wUqJuIuowhKscf
6OfpmsvayksLfpr8yiP4c2iH/gnzqfyJ/wAes/8AyxP/AD8Z9fcUv/BPSKMeD/GxAQA3Y/5Y
kf8ALP8AGj4dpHH/AME/dTVQQTa3HzBSv/LcD1/2f1qt/wAE/Wjh8B+OJpSSkdyW+bLdISf6
Vyz1o1v8a/NFw3PIv2Mktx+0zprSQlmWG/2MEIB6Vq/tBHZ+2zbqYY0Z9UsFUqoJz5UX/wAS
azf2KY4Z/j7G8ixlY7W+dQQwPJFaXx7iJ/bUsxJtdf7XsfmjY8YXb1xx0r1b8uPnBbKBjS/h
r1Z0/wDwUZiI8U+FxIGA/s6TG6AMP9f9a679shWi/Z08BxIm1nmtgri3H/PEfWuO/wCCjlz5
3jHwrbh22rp8mMOf+e/0rqv20lP/AAz78PmCs+24tuSx/wCeFeZe0sIu7f5msPhmTaHEjf8A
BPjUmYI4NrKTmI8/6Utc7/wTagiF/wCODiNkUWoMXlEA/Ke+TW1oBz/wTr1Bg0ik2Uh4fp/p
K1kf8E2yyTeOlG+Ri1ocs5P8DetdNab9hXX95ELY4T9j5N37TdwsEccH7m8bcqE4Gfu/59al
+MdozftvyOoWIrrFizMsZJOVjqP9jWN5v2m75sOuy2vDhW681N8UpSn7bzbi5P8AblqnL/7M
ePyraP8AvX/br/IZ0f8AwUetHl8ZeHd0bNnSJwHxzne3auu/ak06S2/Y98IRbCHeaxIB/wCv
aQfzZfzrF/4KFmBPHvho3LSf8gmYBg3cyEdK6/8Aa/CWv7Kng4I5lAuLMDcfSEVx0YqUMPfu
BjfAj93+xB4uduFWO+J/MVV/4JuxhtL8YkiMKs0JJZ2xwrZ/mKn+CbkfsIeL3K4LxXw2+nzC
q/8AwTfkeDS/HC7SB5yLuB9UzWeI0p4n/EvzA8v/AGQ4IW/ahLBrbAXUH+8/Tca2fiw0a/t5
WwATjVrQcM4/5d6q/sWyF/2lb8EFgsF6N5IyMyY44q38Sbia4/bwtRHLLsOq27gttJ4t84r0
Kn++1P8AB+gF/wD4KMG1Pj3w4kYTzY9LfIDDI/ftXb/tcRmT9l7wUAGOJrQ/Kcf8uzD+ZFcH
/wAFFbVR4+8NzwwkyyaY4d9mM/v2/Ku9/bAieL9l7wYBuL77RiApPHk//XripSdanglLo2BL
4Nwv/BPfWTztOn3Mg3HJwZOP51j/APBOa3mi0Dx5Jt4Eq859ISP51r+EYGg/4J7anEzbs6XM
gbGON6nNZ/8AwT0tYrXwl47mEYLGYHvxmIt6+1c3tG8HX/xv8w/5er0PO/2Kmlm/aa1cFSdl
lf5x2/fLTviDFJB+3EyurqTraYAQHqtN/YgmV/2mtYBjDedY355/hzID/So/iGWl/bmk+SEb
dbiPzsRnManA9TzXrYn+NP8AwL8hdY+p0v8AwUUP/FwPC5mLDGlShfkXr5ntXV/tuAr+z98P
gR927gz/AOAwrlv+CiI8/wAf+FclI9mmv8rtgnMvQV237ckqJ8BPAa7F/wCPyEZZsfdtRXLR
XNDDRfcuf8RmT8Opo/8Ah3lrZl+aM2d2qjH8fnjn+VSf8E8z5vhrx6zNn99GGY/9csn9DUXh
G2Ft/wAE+tQAkjKtaXTkbvWZTVn/AIJ7RgeDviDMNpH2kDYeRxbCom74PFP+8Sec/sR3tv8A
8NFzxRxp81ldASByTkPHxg1Rvj9o/bvBj+YN4l3D6eUB/Q1c/YnKz/tJ3MiIsCCwmxDEMJkv
HzVSybZ+3nESNwGuscfRDXU3+8lP+4gH/wDBRC3kX4x6VIUJQaLByOf4q9O/bifzPgt8P54h
viWUMS6l2AECg9K8v/4KFytD8ZrJGhWYLpMK5ORn569N/belmtfgv4CW1BRGciU9f+WS0YWb
thX5v9BSfLByRP4btRc/sEQJcTRWcL2Q3SyRnAUShjxjPYVF+wq1u3wl8eLBJBJJJPIJDHEy
rkWpB6j3FXWBm/YAjZGkEcmnxk7WHUybe/1qr+wrKrfCPxz+7Kv5jnJIzzbKO1ee5uWGq361
P1LkrHH/APBPeeMfFfxdAEhWU2ITeo5YiZhiub06RY/29AWOAfEskg/3fKaut/YCYt8YfFLR
xTNA1sQJG2j/AJeD1FcRpc4uf260c/If7ekUDrnEbiu6Tti61v5X+RJ0X7eY8n45aLMgUv8A
YLUrliPm3gDp7GvHf+CpNs9t41+HiOnKaAiEA5wd5r1n9u6KSf8AaC0BGLqrWdoMKuR/rFrz
P/grImz4geB1/u6OBz/vGvSyubdTDL+6x+zVRO/Q82/4J5f8lz8PDJGNRGMH/Yavqr9sOO8u
fjbYyRMUgg0i1aSTaNq/6RHjccfWvl//AIJ125n+N+hjHyi7Yk+n7oV9TfthTJH8XDbypOWk
stLMXlNgECcZ3Dv2p5l/yNf+3CN46HZ/8FCcx/D3wYsaM6/bGwzocn917VWiH/GutBtzjTkA
Xnp9panf8FDJJT4G8GRxl2L3r7FjAXd+77DPJ+lWtZjltP8Agn1brDEkJ/syDcrcMfmb1714
VJt4enf+Y1qa1G/Ib+w65HwL8cxxg3JNzdbAiEHd5AGK4j/gntFLb/FzxZHNvWeOwVGB4x/p
AGPyxXZfsSSNF+z54yniz5/n3YUhtuCIVzXFf8E9iZPid4qnP+vNoAwL5JP2iliNKmKZBkfD
1Y2/buulaZWxrN4QhjPXYeM0/wDbvOPjxpTeaYy1lYnAPDESrgD0/D0qx8MJ55P26L5jBKEb
V735/LOPuNznGPxqh+25C9x+0fpcaF5MwWAIZhgDeP8A61dtFpYmk/7j/ImV7aHcf8FFwy+H
Ph63mpJHsnZkkP3W2w10Xxib7R+w/wCHQcFZIdODc8EEE9a5f/gomjTaZ4JtS0jQraTkLEN2
SFQHp9K6344Lj9ibwsFVgFNgCpGSOGxx3rjtzYTDRW/N+ppWtZ22sVv2W4mf9jvxcVMYaSHU
SxXLZzG2ePwrl/8AgnBCRqHjMSHd8tsBgFewrpv2Ycp+xx4sQ+Yj/Z77AVcH/Vt/BWT/AME8
L2S5HjS3aNV8toslU2n7o61hN+7i2+sl+gfZj6HkPwBAX9tGL0Gq6h/7PXSftkXCf8NbaNsG
G36dz/wNKw/2aS91+1/LKTJ8l/el8EYX94a3v2tyl1+2JokSSFGWTTssBjHzrXoS/wB8jF/y
L8if+XSfW51//BReRn0PwACePLuf/QYq2PjwB/ww74fGP+WFj+mDVH/gouFGgeC1ZX3x/aCC
eQcrH6dOlaP7Qjl/2FfDrNwSlh/6CK8nDP8AdYddOZ/qawtaV+xf/ZNLT/skeJ0J4aLUweO3
lHNebf8ABOeNG+I/iVo1QR/YIeHPcOBXp/7LztD+x5rbxuI3Frqh3Ht+6Neef8E47Xd438aP
KxdxaW6kgE87gP5g13v+DjF/eX6BK3LFrsYHw7Jb9vG6BIA/ta9GEOBySD/Km/tTulz+2Ppa
8mQzadg7scnn+YpPhfbsP2478pGjK2qahguCCc8D9RUP7UdoG/bIsmiBTN1pzbcH5vnXpVUf
95j/AIP0Mj0n/go8ofQvBaPuLie4yfMzxtHpW38UEEf7BGk4zxZWHU5rmf8AgpHD9og8FptB
ObhsOCBgba3PjtZyQfsMaFGFAItrDITp6H+VY0tKeF7czApfscfP+zB44VjhT/aAP/fkGsT/
AIJyOD4o8awed5kYtrd9uBnJkOTnrXS/shhYv2V/GwA3BhqG4Dj+AZrl/wDgnBbxReIvGrrE
yZSJdxk3fxNXHX5lQxf+L9QOI+E6hf25JVCjB1686jPZ60f23wH/AGjtDWIbSLOyB/A1R+FC
+f8AtuRvG0soGrXmTJ257Vo/toASftRaek7yFDBYbFHTqa9+FvrUL9KafzsNbnoX/BQx2bwF
4HUnhriYHj/pklT+PYo5f2A9PWWXyUXTbUhvcS8VT/4KHN5HgzwKg+4sk5Y+nyJV3x//AMmD
aPEf9Y1tZ4H0kJNedT/3fDf42KPxyLf7FQEn7Mni1I+GEt8CfX90xrzf/gnZNGfiV4iCjBNn
D/6OavVv2OrEWf7LmtA8PLBehwOcEIR1rzb/AIJ02Q/4WD4okbiVIITj6yv/AErS/uYhf3kB
x3wDjVv2zJ0I+X7ZqXGf96tL9rOLP7Vul4Kgf8S/q5H/AC0X3p37NFuT+2jrRbAZJdRwCf8A
potSftah7j9rDS0kAUFrAA5HP7wGuyorYyH+BlLXRnXf8FEFaS18BxtskRYp8KHOeldV8cBn
9h7R1UrIiw2RDNwQc7cD8Ca43/gotdtFY+CEjG5HhmXd+Fdd+0NbpY/sXaFHFKPLEVko/wBr
92xryaafs8P/AIiV/EmUv2W4lX9kbxaV8xf3V8fmJHLISf1Nct/wTrTy/FfjZF37DDa8GQHs
/wCNdx+zgyXX7HniiWADy9mpc+WD2NcP/wAE4LNf7Z8az5UybLZdpjA6Bs/zFdGI+HEf4h0/
4sTA/Z9RZf22NWLgNumvicj0xUn7Syqv7XOkxhV2fabBsFQcHIOf/HR+VR/s/Iz/ALaGtYSH
iS+PJx3Wov2hLkH9tDSUZIgn23T8kqew5/pWyssTFx/59/oSt36nYf8ABR+yd7fwZcfu9jRX
COc/M3XjPWuo+MEYH7E+lgYGYLcHLEcVxn/BSEKsXgtNygLDcZAPTrXafHRF039ivSWZmVjb
2iDb1ye36ivOTl7Cg/7y/MZD+zZH5f7GvibDdIb/ABtcmsP/AIJxkvpXjMlmJ32g+8f7pre/
ZxkP/DGPiBpGlUeRe46c/Mf8Kw/+CdNukemeO5Fcl3mgGD1z5LU8VJcmK5X9pAcR+yakdv8A
tda4m0iPF8MFwf8Alofxqz8c7sw/tpaZ58DoZbixETIQMthTk564IFQfsjIT+1b4iVlLyhL4
7sdMymmftA/P+2zouCOb6xxk+qqB+tdEW3mKv/I/yIq7R9Trv+Cib+dB4Uh/fef5U6qxAOOV
z/M/nXR/tYvdR/sw+DYhLLsdrUMGUYIEZxXNf8FCrl7W58J+Upfzbe4JwOnzoBXVfte2zL+z
Z4R8+4KSLc2vy7Cf4PpWOH/gYX/Ey6n2il8MAbr9hHXQm/y2tLoEKM8hxWP/AME6bZ207x2S
ZciWIZCgceSa3vhHbvH+wlrGHaXdZ3hAUlePN69Kzf8Agnq0Y8NePZHGAJ48lnbP+pPtSm2s
PXt/MvzLq7w9DzT9lT/k8eWNslNuoZGM/pWn8a44x+3FpbKpz/alkfmj2jqB/QVS/ZGcT/tY
agzAqVS7I6j+L1qT4vFLn9ujTwX4XXbEczHsTmutO+NlzfyIg6P/AIKIv5XjHwmyhAwtJcEx
5/5bV2P7ZMzH9mnwdyPlltsfLxzEc8fgK4r/AIKIRP8A8J14OMMw8sWRz827nzBXb/tryiL9
nvwQrk7luYQf3hHSJT6VGGvy4S/8zAaY1/4d6TERo4TTVyAhGAJ1/wAaz/2AVjfwF46dpoxC
85ynl9vJfuBWrc35sf8AgnssiPskGmxABnznM2O4x0z+VQfsHAS/CXxpOJGac3LqDHIFAAhc
DoK527YSt/jf5lx6+h5l+wmyr8e9cMbQFG0yXGxWJINwRzn2FVPERdf25o9rRKP+Eij4DED7
npWp+wbe3M3xv1VJEA8rTXRniWNXJ+0nq3VvrVXUY937eqDex/4nOMPgjO0n1r0K8l9Zq6/8
u0Z0/wCGvmX/ANvuPf8AGHQUJ+QaTEcRy4GfMHWvRf27y5+Cvg9gwEUV5HlTPj/lmB29ia84
/b7j2/GTwyPlJOmw9Igf+Wg969K/b3keL4R+Do9q83iY/dD+4PesIv8A3X0/UfmV/AUsNx+w
HqTJbxQH7BKwEMrEZM5zwzk1X/4J58/D3xwSASbpgcjt5DVf+HwA/YBvHQxqVsJCQkYC/wCv
IOcc1T/4J/rI3w38cltrA3sjDbETx5B9ah/w8R251b70XHc8v/Ymt4X+PVwIZZhLFaXm6PaN
n3lxg5B6Uvx/GP21rdlulQ/2tZnHngDp6VJ+wiv2f476wu1jP9hucr5ZHWUY/kaofF+1ntv2
24mupXk3+ILdlzCCMfnXbVbWZVLfyfoY0v4a9WdX/wAFGMnxx4WyshxpzfOZF2nMvauy/bPd
k/Z18D4B+WSBh869fJArif8AgoUZU8feEgsJP+gL/rLYgcSnOCeO4rtv2ykd/wBnbwOXBjKz
wZEcIxjyfr71wrWnhn11/M02uReHiB/wTuv9wyv2KTIz/wBPK96yP+CbB8jVPHcch2hhakHe
uQNjYxXQ6X5zf8E/7qEREsdNAAaDriUk5rH/AOCdVrMIvGFx9n2wt9njEiwFcsqnIz+IrGvN
xy/FST1Ui2vfio7HtXwu/ZP0P4RfEG68W2GtajfXdwJI/skyRhIw5yRnGe9UvFf7JGj+IvjF
H4/n1zULe+N/FevbIkRhJUAbdx56gV73b52HORz3GKl4I7V+bPPsWpe1ckn8O51+w59Njwj9
o79mRvj1remanDr76Q9lAbXyWtVm8xS24nqMfWtT4vfs9SfFP4X6J4NOvPZNpzxyNfG3Dh9i
7fujGK9ipd1NZ9jJKKTS5dUH1TzPF/BX7Ov/AAiHwJ1P4btrL3jX6zj+0RaFQvmEH7u72qv+
zl+ztJ8Aodfin11dYh1FhJvW2MXlkDAPXPSvbyzZoGSeQKznn2Lqxkrr3tX6nR9Vjy7nzN8E
/wBkS4+EfxVvfGD+JIL+BxKiW0UDgje4Ygk9ePSjxJ+yff8AiD9oSH4lRa5ZLbJeLcNYywN5
mxUCADHXj+dfTNL/ABVvU4kxkpOa3ceX/gnP9U8z5n/ae/Zh1/41eIdKvtG1yxsYrO2NuyXK
M55Yt29zXSfHr4JeI/iP8GtI8K6TqNhbajZrCrzzsyxyhI9rAYBI5r3RetJVUOI8T7OFOyXJ
sw+qeZ4FpPwM8QaP+yxcfDmS6s59deya33GRim4tkkE8/dAql+yr8BvFHwe8K+JrLXVsXur+
TdCLS53A/IVGcrxwa+i+/rR/nisXxLifZyp8i96V/wAbh9Ud73PkL9mr9l7xj8J/jDd+KdeG
nDTpbeeJfsl1vcb3BHBHWqHjf9mzx/qH7S8/jmysLV9E+3xXIZp08wKEVd2CODxX2Z+VGPyr
v/1mxU26nKm2rW8i4YZQd3qfJP7Y3wD8afFnxVompeG9Pj1G3trQwS/vUVkYvuzlh1A9K3/2
s/hH4t+JPwj8MaL4e0n7ZqdjdLI8LTINiiLYfmPB7cdaj+N3i/xt4z+Muk/CnwPrUfhQtbm/
vtYEW6VUJ6KM8nril8F6T8ZfhNL4ustc12PxPoMekve2Gtz8GGfHKlOT03fpX2uFlVqUKU5S
UZ7pN2PPl8TIdB+FHiXQv2ONS8H3+kfafEP2KdI7CJ13MxbOOD7Cq37F/wANfFPw38FeMoPE
Oj3Gm3F9O0kMMoGWUW4XA/E15fpPjz4/W/wbn+JcPjbSW0iCN3js7mx/ftyFOT0Pavsb4SeI
b3xb8OPD+talIst9qVpFLO6LtBYqDkDtXJmlbEYDCSc2nzPW21+wlvY+TP2Rvg/4z8F/HO/1
XWvDl5YaYbaSJLudAq8yZHf0A/KoT8IPF0P7ZkXiFPDd6+gjVnm/tAD5GXYcmvuz8aAfevnl
xVdOLhurHd9Ufc+Ev26fhf4q8Z/FXTdQ0HQr3VLE2EUUktvEW2nfmun/AG4oXt/g74LgY7H8
3MkUn3hiNAf/AB7FfYtfHv8AwUXtlfwp4dkBJlEz4UDr8pr3soziNevQw9r8r1+ZhiKPsqD+
QphMf/BPewEcQdBYKWB5/wCWhP8AMVQ/YUKt8HvHzLH5W2eZQo7AWy4rUvWJ/YIsFEv2cSaf
BiRoi3STpj8DVL9hh9vwT8cLICJFnnyDb4LYgAyPXp2r1MQnGnUUdvaHOtUjjv8Agntz8XfF
j/xG1Q+3Nw2eK5nw9Aift1RExb4v7dnL89P3b4rpP+CfLMnxV8XsEORaRr80BUAmdu9Y3hjT
o5f27Jf9IjuH/tWZ90YI/wCWTAjn3Nd8/wDeq3+F/kHS5J+3efsXx+8PSq7SRmxtpW5xsUSL
XmH/AAVgnS68a+AbmM5WbRg4PqCxxXrP7bVgJPj/AKJJJPEqm1tVUPEXIAkUMM+9eWf8FZ4P
K8eeBgqbI/7J+VemBuOK9LKbc+G/ws2j8LOE/wCCcRI+NWlYUsftTcDr/qhX1f8AtbWZm+LM
F4LaOdks9MiEUytuGZhyCDjt3r5T/wCCbOH+NukbhkfaJTj6QjFfUH7XE6n4vpbMfsSNFpeJ
WUsD+9Bx7darM9M1/wC3DKj/AAmdJ/wUGv4U8KeBpZrciD7VKTFKCFP7vn5hyPwrZ15cfsCR
hIpIx/ZNu+GU4wWB4LHP8Y59q5r/AIKFx40PwFsLY8ydMxH5SPL64Peuw8fzCz/YVthOoeWT
SLSJcyc47fj8grxqcHHDU2+shGD+w+hf9nrxkB/z9X3/AKKWuQ/4J7wpF8S/FRykj/ZgcEc8
TE/0rt/2J43sv2efGalNrNcXZyWB4MKntXE/8E9bUT+OvF8hUFhbH5t+D981GM/5iQMX4Ysi
/twX0YLeYNVvTgKcZ2sMdak/bHiD/tHaRmEqwi085Axu+ccVB8KLdT+2/qE8jOUGq3qY3ccI
x/nVv9qb97+1lo1tKo2GXToxj+5vWt6aviKcOqpv8gNf/goN9pmm8Jws8VuBZzyRiIFWHI4b
nnpXc/tBXQm/Yy0eJUKvmwyFBCg/N0rgv+CicnmeIvBnzbJG0+Y57HL9MV6P+0/bG2/Y80ZV
HliNrDgSYPG7rSopxp4Vvuwl/DkYf7LkRt/2M/FbSZctbX+NpJwfLbueax/+CceEPjlsEsXi
yTnn5B610P7MssP/AAxX4mcEhja35yD/ANMzXPf8E6ZhL/wmmCTlos5P+yK463u08RF7qSRX
2Y+h5d+zPFLH+2JckHMLXd6W/wC/hra/a1uWk/a/0hjjYk2nooKf7S9aqfsySKP2ttRjJbAv
Lzomf+Wh71qftWJLD+13osjxtskudPA38j7y13y9/MtOkP0F/wAul6nY/wDBReSSPTPBituj
R1lCmM4DfKnX6f1rU/aBff8AsJeHiBjiwH5AVm/8FGMPp/gZGLcPOFAHHSPv2rV/aGj8r9hb
QFwBj7DwDnsK8nDfw8N/jYP4Jehf/ZqfZ+xnr5xn/RNUH5xEVwX/AATnm3eMfGbbRhra3k+Z
yMfPn/2b9K7r9nFiv7GGvELu/wBG1Lgf7hrhP+CboT/hKfF0jOQTDbx7QccYzz+QrsnJRpYy
/wDMv0FH4I+hjfCrav7bt2qsHC6pfcqSRwSe/wBak/alsZbf9rzSJxMTGZrHPzAEAOO3em/C
sxz/ALbt7KLg+Z9v1BvK2YGdo5zR+0vCsn7XumiQb9s1iw3HOCXBrSi/9oi/7v6Adb/wUhDn
TvBdwHbhboBGPJ5Wuq+NkTzfsO6UH+VvLsU59ya5L/go4ftGpeCo3n8mNILtgAuQTlO1dp+0
nObL9jzSYIT+7KWOdy47Z/rWdH3sPQkv5mBi/sjMV/ZV8aMVIDHUAP8Avgj/ANl/Wud/4Jwu
Ztb8ZhVJIER457tXX/srhR+yT4qJGAF1Bjj/AIGP5Vyv/BOJYhrfjIRM6Fo4ycN7tUYuSjSx
V/IDivg5C9t+2o4cAbdUvG4OcgmrX7aBaX9qnR0CnmKwXP4mm/Ba3WX9si7lKuXGoXhypHXd
71f/AGv1En7Vejbh91dOURnqQc5Nd1742L/6dr8gOz/4KL27HwX4Q2kEq1x14/hSrvxGhP8A
wwdpIcLxa2xyH/2qg/4KNbl8KeEEQA5kuBhhn+FKt/FSFh+wxpiFQoWztsbUz/FXNT/3bDf4
2Bb/AGSI0tv2VtdUO5jZdQL/ALwccdq4H/gnLdoPHPjIxlSv2a3+Utz99+9d1+ytGsX7JXiH
5ASyX+SVwfu1wf8AwTshij8WeMnWBC32W3OAP9t6v7OI/wASAwf2cxu/bO1yRkLATah91unz
pSftZRRP+1lomAxPmWXGf9pan/Zik/4zL1yMQiNXa/LcdfnWqv7UD/8AGXmlksmVuLFQGz03
LXbU/wB8h/gYzsf+CjqImmeBozFIP3M3zY9q6f8AaFtkf9jDQNrFTssPvc5yhH9a5j/gozEk
0XghWwgCXI83scAV1f7SQ+z/ALH+gxJGzIq6fh88dK8yE06VBf3hL+JMr/sqyNbfsZeJXeN3
Qx6j8qj1BP8AWua/4Jx/8hnxzgYGYeD/ALorpv2cVSP9inWzujYvBelic/3T6VzX/BOID+0f
GzjqZIV46YwK2r/BifUdP+LE5H4Cpu/bY1SLCndNe/MxwByvP61Z/aESO7/bR0RBIJD9ss13
A5xgdKh/Z8WOf9tLW3mIBWS+Ck9M5Wn/ABh0Q2v7aulCFlkVr60faWwclRShNRxCT/kf5Erd
+p03/BSeEi38KSBsAQzgJtXpz3ruPj+qH9jTTklUkpFZlQOpJK4NcD/wUnsw8/hLdbxhzDOD
8/Q816F+0xaxH9k7RIXByILI4Bx021H/ADDUP8SGUP2cVA/Yt1gsCc2l9lSMc+Y1c7/wTmJ/
sbxu55/0mE4+kZX+tdD+zpCkX7GGsMowXs7xjz38xqxP+CdcC/8ACMeMm5y93Gp+m2vNn/Cx
f+KIHIfsjNbn9rLxEBEkTtFd4IYnH72mfHGKNv229CB8tyLzT2AfjoAf6VH+x1bJH+094txk
mKK72sxyf9dU3xPBk/bt0hSThdQtYx9Apx/KvRi0se5PZQ/NEVdo+pr/APBRq2jOreE9qIQL
aUfLKQOJFHSut/a7kSD9mXw0N6AfaLT5vMJI+Wub/wCCiUYfW/CoaaYf6PMcKOP9atdh+2CP
K/Zm8OPuPyzWxHGeiHtUUVajhV/eZrNXbRR+E10Yv2E77MhxJY3aKQ45/en2qp/wT0W5/wCE
L8bKRnNwrId44zCetWfho6y/sI3TOZJMWc5H7sYGZDms7/gnvCZPAvjZoSGcTcHBxxE2ODWV
VpYetf8AmX5hN8zjbojgP2RIHb9q/WXMzgxJdggYOT5gHH50fEq2uJf25NOMgnQvr1swBjVu
Ac9qf+xqxm/ac15pDG0hiuSQMjkzgGp/H/2Zf24dMNrM+3+2oAxuAQc5PA9q65prFv8AwL8i
TW/4KGyonjbwmmXL/YgSDHggeYK7H9uGDd8AfBrbuDcxt0/6YqK4b/goCCPiV4VKorFrBVI8
xgT846Z4ruf25ZmHwL8HRRMiiOeMEMTkYjXv/WooTS+qrzYE16kUP7ASpIWYNpUJHyd/OHrU
P7AoL/B7xjKI/MDXUhClMHiIjt9ak8RzSx/sFWCJH54k02FWC3SjaPNPzdP85pf2E3eL4H+K
3XzBtnn/AHglXPETHgj6CuSp/uVf/H+pXR+h5t+weVT4+a+WSJXFg45yMYlJwR681W1RN/7e
4VUjU/24Ocf9M60P2Agbv4ueJrhzM7G0c7iykn5/Wql/HIv7fBLxsAdbymGU/wDLM12VYuWI
rW/59ozp/wAJFv8Ab3tyfjF4YVliYNYW6Y5B5l9jXf8A7d88Z+DngtVXy0luwxQnJGI171wf
7dEL3fxw8HM5kRBbWqt93H+t/Ou2/b6iSX4aeCYIIZJU84t5qEbVPlrSpq8sJT6tfqaR/hTJ
vh8V/wCHfGooyRq7afLjYc/8vBbqPpVf/gn+oh+GHjh1Cshnk2s0jKCRD0rU8M28SfsAXscZ
jKnTmJMK7R/rl/8AijVT9giZ1+EvjgKDtW8f5VAxxD3zSqO1Gt/jX5ocNzzD9h61eH9oLV7m
YRpE9jOdwmLDiTp/49+lQ/FmSJ/214rdo4UK6zCcuxZjx2FWf2FoZJP2gtZuTDsDWdxyiqOs
pz/6CKk8SWtw37ePksLgQtqqsSdmf9Vu69eprqqzX9oVJdoGNL+GvVmh/wAFB5Xj+InhWW4g
tzbvZMsWJGDE+b1xXdftqywL+z/4NRI4P9fAn+sbg+SDXI/8FEHNl458FzYlZksSF37T/wAt
67T9uGZD8C/CBxIM3dueNv8AzwFcdJWWGLGWt9Cv/BPi8mEKMRphGzzmxkuRUf8AwTqsRD4C
8SzHac6gEAWVyP8AVrzzTrGRF/4J+TLmVVOnJk/Kcfva2f8AgnwsL/CzVwsskmNSbhlA7Adv
oK83H+5lmKb6yNqXxo+pbbGw8Y59Sf51JSIgQYFfOf7Wv7Tt/wDA59J0vQbazn1a+QztLesS
sSA4+6OuT7ivyvBZdUzOsqVPc9OdRU1dn0ZI/lrnrSRyeYCcYr89vDn/AAUA8dTa7YJq9poc
umvMiTiCB42VSwBO7e3r6V+glhcxXtpFcQgiOZFkU5yMEAjH517ebZBicrSnUtbyZEK0ZuyL
I6UjdaSlYnHHWvlJUK0GpSg0n16HRbW1xKKUZxzQvWtZ05wh7RxdhNpS5bhjikpk8qWUDyzz
Rx7Rna7BR+Zqjp/iLTNVn8m01C2uX9IZ0JHt1rop4PE1Iqcabs/IlzinZs0aKUkMTwVxxg0l
YSpzjLlcXfsT7SIU+mUP8qEiq9jUtr7pslfS585/G/wL448J/FzTfip4C0SHxHcx2f2G902R
wpZM8sue+M/jWbol18X/AImnx3quv6TN4a0NtGks9K8PKyM0s20EuSDnPBH416R8Z/2jvCvw
Xtdmps9/qc0TGKxs/mY8dW/u18x+IP8Agol4hTUbhNP8H2aWUMpjEdxMVmxgEHp06/nX7FlP
9oVsJCLoJtLRs8SpHlkzvR8LfFTfsNnwt/ZNw/iIwI4sMjzCTIrEfhtr6A+EemXOgfDTwvp1
9C0F3a2UUcsTDBRggBBFfPvwd/b10LxZq76Z4w05vDs021YbmKQvDyejE4xz+lfWFvLaXsEV
1Zyx3dtMA8ckDZQqehB7ivk8/WLp0VDExtFyuzqoxpT06k9FLxSV8OoSekVf7zuclFXbH18f
f8FEU3eDfD0xZMrcuuzfgng96+vmyOlfHn/BROO2Xwt4XiMe+R7l23jp909q+u4ZThmEYveW
hzYuN6Lt1LmpWsll+wFZkMn7vSozkEsc7zgj061U/Yhmun+DPjS4Z3k8l5wsjEZB8vkj8aue
OJn0/wDYMtY7eFWVtNgU5OOCT/hVH9iVC/7Pni+WcGGOaa7DeW2TxFX6FOS+qyl/08t92h5r
i4LlZxH/AAT1/wBJ+KnjM+bz5MZwZCc/6Q3asT4fTMP27bsKOBqN0T+C1vf8E9mMXxZ8YKpY
wyW8YUcZ/wBe1Z/w3sQf25NRcK4xfXZO7H932rrqO2JrP+6/yCX8OI79ti2l/wCGhdCWFjJG
sFuWXeBj98tea/8ABW75/HfgVhx/xKsc/wC8a9N/bCtYrz9p3QEVZeVs0JyNpBnGfftXmv8A
wVpBPjjwNnG7+zDnb0++a6sqmnVwtv5Waw2Z53/wTZkEfxr075xGfPcgkZ48oZr6z/a2kDfF
e1tA0kU0z6duiXGxkUnPzHpyR+NfJ/8AwTNG/wCOVmMZc+cEOM4JjUZr6x/avjhi+M+nXF2Z
5ZmkskgdADGSzhjnnPAX07115n/yNf8Atwyo/wAJlz/goRGg8J+BCBuUSTBdxBIHl9M10HxO
kW2/Ye0vMX27dY2wjVgGKnnqvcVgf8FDSsfh7wRAVby/NmbKDa/KY610/wAR5ZtO/YhsUDiI
yWFqNxGWcEng+nSvEhVcqFGFvtCMr9jGK4h/Z28XukBAmlvZAdqgFfLUcAc9jXG/8E9Bnxv4
uJiMZ+ynIYYP32r0H9j65EP7L2sHYGbyL0sx5wAp6Yrz/wD4J6yM3jTxi5aSUJbhcsMHl2Ix
7U669pHEyfcDn/hPcE/tx6lFs+X7fe8Y4zhual/apSX/AIa10gIxjkP9nKpxkltw4Hv0qL4R
O8/7bmpyLIwH2y9IU8f7PX/gQqf9p8ySfth6HuJws9geXJ6MD/St4PlxkX/06f5AaH/BRlhH
4s8FPLNHIospsKUOf9Z2xXqH7WEMdx+yHpLoUDM9g23Yc/xV5r/wUSimTxb4KiVtoFlKc7CR
9+vSP2sbryf2VtLV1YnfYgkD2J/rWdOblSwn+L9RT/hsxP2bI9n7EniQlcbrS+I46/uzXOf8
E390a+NFZSql4ssR0+UV1X7OTFf2HtcdSQosb75h/ut2rnf+CdchuLbxodxb54j8wx/AK5MT
/wAxf+NfoX9mPocF+zBAh/a71PaUcLNe5O/v5jVa/ayeSf8AbB8NqrM6ibT8gHIzuWn/ALJ0
8Y/au1zMeSJL587Cekh9qq/tFNM37aujmaN/KN3Yqo9MFa9CP+/uf9y34C/5dL1O+/4KLhhp
3gzr0uH/AA/d8/oa2P2h4/L/AGLNBQrtwln8uK5//go8z+R4LRXALW9wijnqQo/rXRftGbv+
GMNC3/e2Wf8ASvHw/wDCw/8AjYP4Jehofs5Sx2P7GevR7y7fZdSOCvrGcVwH/BOdRF4t8WOF
BMkULYx23SYP5Ff0rr/gU10P2KfELu0WXsrxgRnIG36VyH/BOImbXPGEytkpBAijHOAFrorf
wsZ6r9BR+GPoYHwuIX9s29lAw7ahfgL68Afz4qP9p+Seb9sHTlSJuZrBeB3DjNVvgPLJd/tq
6kZxwl7esoPtK1SftH3bn9sPSyDgG9s/5itqfuVYtdYfoP8A5dufmdf/AMFHsfavBCh1EyQX
TFT1IJQV3/7R1qI/2OdMRQz7EsvmbnPyjmvP/wDgo0p/tXwXIpIc20ykjHcoK9D/AGoHjg/Z
C0lbiZlaSKyRT6kKKKXuUMJBfakxGV+ytCkf7IviiR3AXZfkhjx1euY/4J5EHUfGfkRxBtkY
yH92yK6f9mi3lt/2M/ET7C4aK+K/+P1zP/BOx5W1LxkHhKDcnJUj1rnqr29PF37/AJAcp+z6
sb/tn6iXi/d/a7zgHPzA8n6VL+2JHJJ+1loGyJXfZp3KtjOJSf5fpTP2eBu/bJ1Ef9POoH9a
d+1fqEaftc+HiVYhRYg4/GvQj/vkf+vaA7T/AIKHF38MeCCEHMjnIbPGwZra+Jks0f7DunmM
HcbSD5j0xurE/wCCiYVNH8Dod3lJ5rMEGSQMDj862PjDNHB+w9p7QCVUNpbHDqc43V59Oo/q
2G/xsC9+ya8En7J+sSSI4Vl1DJPQ8GuG/YGt1tfH3jhYpXmgjjh2ysu0Ef5zXafsv3UY/ZI1
kKjxokd/gsOvHauJ/wCCfLzXeteOJ553mPlRrudjkfL6Vqpt08S+0kBy37NLNN+2XrDqS0Zk
1AhwePvpiof2ntTe4/ay0uBkMMgubHCgffAZevpVn9lOMS/taa1tYYh+2MxII/5aLSftJWyy
/tl6QpHzG6s0z/wL/wCxrp9s54lSa2gM63/goqM2vgdSBxFNx6cV2v7R6n/hj3RxjgLp38q4
L/golHIJfBkrspt3hlCoc5HTrXb/ALTMYX9kPQljRH3CwzgnsMeledTdqeHf94X2nLuQ/s2g
x/sca1n5Yza35HoflNc5/wAE5ZXH/Cajyjs8yEiTHU4zjP4Gur+AEIh/Yw1BQgTNlfHAP+ya
5z/gnQwTSfGcpOFW4gU/ghz/AOhCuupJyhif8Q4vlkpdjh/2dZHk/bH1wGM7hLfHhMnG5R/P
ipPjeZ3/AG3dGMUxib7XZj5kHICjpR+zTILr9sfxBMI90Z+243e83/1qf8bYFk/bf0HEabvt
tt8uTn7tZr/eV/gf5Ctua3/BRmOP+0vB7yIxQwz/ADtG3PJ5r0X9pScx/snaMkSpKvlWnBUh
sfL3Neef8FEJ3S/8MxyBgqwuEUSHCnPPau//AGqLmZf2W9IRBhPKs+RKR/d9qzjUboYWP8zv
9zAg/Z8V0/Yt1IwmOJ2sLwnccjHmPWH/AME7FI8J+LmMSkG8j+YtjPy1v/AaUQfsT3rB2GdP
vM7WD8+Y9Yv/AATwuS/gnxfiYjbdxgg7f7v1rmn/AAsV/iiBxP7HsTn9pzxYQpOYbonaQDjz
utVPHhe+/br0+WUNEV1aBAHYdADz+tP/AGNrmQftLeKmBU7ra6UAIAf9fVfxmXk/bpskfbka
pEfmTd2Nd7VsTUl/cRNX4Y+p1P8AwURV/wC3vCyRhZNsTk/vMHBkSuz/AGxZ0j/Zr0FW8tGM
tvjEmDwhziuB/wCChFxGPG/heNrdHb7J8spjA2/vU6c81237aSIv7PnhVGgxulRtxiXH3D71
NF3o4V/3maS3ZF8Jleb9ha7A3MfslwRlw38fFZ//AAT0Lx+DPGb7nZ/OIKiQDpEexrV+FjRW
/wCwfe74A4+wTsYyuwEB/UfWsj/gn4PK8EeNpfLyomJwsW7A8o8ZrKrHmw9b/EvzJOO/Y3LH
9pPxEwkmGIbnONrYPnjtVPx1cm7/AG3LErLLLt1mL70e3B571q/sUM1x+0D4tV4kO+GfGIdp
GZQ3XtwKyvFNhDb/ALcdqsCEN/aiMwAY9Afc13VHfESl2gvyNoQUkdD/AMFCfNm8d+EzGJXU
W5GUbA/13A/Su2/bhvTafATwtG1rIDNOgLuivtxGvIweK4H9v+9ji8d+F7d1vBJ5CtiN2CY8
4/w4xnnrXoX7csMK/A3wmsoEe2ZB85ZWb92vfHBrz8PK6wr/ALzM5KzsLq0UifsBwAiRnGmQ
ja0JYj976Co/2Hkd/gd4nZmCJ50/DQ7ePJf1qz4xufsv7Dds8UhhSTTIfmVnY4MnQnj0qH9i
N0b9nzxTInIR7gscsd37p/Witpgqj7zf5gtn6HAfsCyJcfFLxMy29qiw2hQyQ2+GbLcE84Of
YVkSxof2+4Pm6eID/wAsCOPLPrWt/wAE8h/xcDxe25v+PVDjzD6+lZc3yft6wSbWOdfPyhGz
/q/rXoS/3ir/ANe0Z0/4SOg/bXZJ/jf4PZjbIiJbKBdQFw37zsq8muv/AG9J4oPhV4V8y3Us
1wwCmFkX/Vr0ri/20DY3Xx48KJdyG0NstsBO8crZPmdAEVj+JxXYf8FAQ0Xw58GmScpC1226
4KOQv7pcZ2gt+lZ0dauFl2RUf4UzU0UQ2/7A91v2QRtpK4WCI7SfMTseayf2AY0k+EPjZkL7
TdytlrduR5PWte7t0tf2DHg82OdV0SLLIxALecnfg1i/sERG3+C/i3MaqzPLwXckfuj3zxXL
Unz0ayf86/NFw3PP/wBhu3aH49a7IC2PsMoCi2Zf+WjdzxT/ABLFv/bzHlKJpBqanZ5JXP7k
d6t/sOXW74wazEzSOEs5Dse8Zk/1h6A1DqU8Kf8ABQEjYHzqQ+7cE/8ALEe1dMnzYqrL+4ZU
/wCEvVl3/goZAJ/iH4KjeCWEPBgl4SyY87sa7L9tlGT4DeDYxCJCt3CM+XtziH0Nct/wUCMl
38TfAUKxbt0QVVM5HPn/AErrf257aNfgt4PDoFb7XHkGXP8Ayx96mn8OFLirqT7DY41i/wCC
fEzGMBjpkZA2jJ/e1sf8E8oB/wAKjv5xnLX8gOY1X+RrKcK//BPgAkKo0uIfeGf9ZXWfsCWt
vB8Bbdo1kWZryYyF+jc9RXj5hLmy3ERf8xrQ1nE+jpWIOMlAASzqMkYHH9a/KT9qfx//AMJv
8X/El/8AaZJktJBaRqVxhI8glR9Rn61+k/xv8cx/Dr4W+ItceZLdre0kEbMcZdgFA+vNflj8
PvCP/CxfiZoukzl5TqV6JSxblwGDOD+oo4NwMKPPja3wpP8AAeIqtyUbGfq3hfV/Dt+9jfj7
DdG1S4ZJlIGxx8hX1zX6c/sr+Mx41+DXhy6a6N1PawCzmJUgq0Z2856180ft8+DhoGu6Drdr
HeW9lLYpY77cgoWjI6/hXSf8E8viCL238T+FJhJut5FvIQ2SXR35x7g9a97P1HMctjXo6t6k
wfs6qSPK/wBsX4j+LNC+PmtWmm+JdTsLKGOILBbXrRoh7jaHH8q+sv2PvFt940+CmkXWo3s9
9cmSRPtE8hZn+Y+o5r4g/a7m8z9oTxO8UzlS6Z3rwK+z/wBh3MX7PuhMwkCiWVwWAww3npXi
57CMcjpSSs7L8jSi3UqO76nC/t8eN9V8Lab4asdL1bU9LknmkbzNOuPK3gBfvHHP/wCuuA/Z
U+OfirQPCHxH1zW77VPEdrotlFNb297cLJhyRz6461tf8FFr8xXnhC3XygRG8hMibuN23j8q
479jH4fL8S/CfxM8OSXIsW1CGCIX0AO+NQwJ+Xpivcy2hhFlVP29NNb36mdVONRu55B8RPjP
42+Ler3Fzeazq1wlz8o02yykac55UctXEKniHwtqEZjn1rRLpcSh03QSgdmUnj8D1r9JdJm+
Cv7LOlLpkl/pVjfDkszC4vHPuMblr5b/AGsP2lfDnxtGmWWh6GzQ2xZxqsrCKWXBAA2jtwa7
8vxarz9nTo2gtE2tTCSct2fQv7FP7QWrfFPTtT8N+Jrl7/V9NVJbe8kTa8sPcv7+tbH7avxo
1j4WeC9Mt/Dd8+n6vq05X7QqAtFEmSSvHWvnX/gn7fSP8Y9UYNnzNObeM5/i6U//AIKAeIRe
/F2ys4LxJhp9iu63EoASRuo9jivnquWU6mdtte7ubKo1Scu2h5z4f/ae+Jela3p1zceK9Sv4
YLpJplcjDoD8ykEelfpLrHji2sPhtceJslrSKx+3Jngn5MjP/Amr8ntZ8Ma/oY0l7618iLVL
VriBjcY3R9Cf1r6s8OfF281b9gvUHim+2X9gy6XcBn3usRc8n9K9TOclpYyVKVGKSi18zGnW
lc+fPA/hPxL+0L8Vb20hnkudR1EtJc3dy7bLSMMR+Q9O+K+pdJ/4J1eHrmBW1jxhrF1dMuJD
bgIqv6jIyRVX/gndpMM2jeLdVfmdrlLcMW+ZVCbuPYmvse3GX/Cvl884kxOBqrCYdcqgddGi
ql22fmN8dP2SfFfwWtLm/t511vwu8mPtJcLLEOxcdvrXqf7NPxt8RaP8AfHtkNRX7Z4fgWfT
ZHw5iVuMEnsK+xfihpMGufDvxLZ3Kq8DabcMd4BCsEyp/Ovzh+CSzr8P/jFja8EelxqzbByd
4GetfQ5TiXn+EdTFxTcdjmq0/q8nKLEk/bN+L7hVXxOysx422sJJqCb9sz4wWrZk8XtDIhOV
ks4TuwM7dvWsL9nPS7fV/jN4WtL6wg1Cza4CywXEYkRh/umv03X4L+BQkLN4M8PmfZzJ/Z6A
85BwfpXVm2OwGWKNOvBNvskXTi60Lti/CLxBqfi34e+Hda1Vg99f2Uc8rImxSzDPC9q+bv8A
gpGAnhfwwrD96ZZdpXj+E19gWdpBYWsNtbRJBbwqI440XCqoGAAK+Q/+CjiCXwn4acsCyyyn
9CP61+aZHUhWztVKfw6tfI6ql1Sav2NP4kxlP2FIFK4P9l2uBjuSB/M1n/sXAWn7PnjG6PEY
nu+T0HyH+la3xUcJ+w9aA/xaZZ4/Bg39Kxv2O7rzv2YfFccdukn7++37jgn92a+4fvYOSf8A
z8v97Ma3xfccP/wTz2SfFDxfNBbkJ5EZaRiSpHnMfl/A1n/Dq6hf9ua6EMAtEN3d5QNu3Hb1
zW7/AME9p4j458VRxKybYIVIMued3pXOfDKIp+3Fd+Yu1hd3eBkHqPau2fv1q8n/AC/oZP8A
hwNj9rFtKH7VOgfabSWeQR2fzQyhSG8/5T9BXk3/AAVoP/Fa+BS3U6Xnrn+I167+0VYC7/az
0dmiMsg+yJ/qt4wJs5+gryX/AIK34l8b+BnjI2/2YQMDHG9q3yj+Lhf8LNIbM89/4Jjvj4+2
Q3FQBKcqu4/cUdK+n/2wUll+M3h9HiigtkurA+bG53HI7rmvmP8A4JdAP8f7bcN2I3OD/u//
AFq+pv2sQJfjv4Y+UPtvLFfKypKHH949c+lejmf/ACNf+3DKj/CZs/8ABRJ2Ph/wUbdQxDz4
3gnOFXH8zXQ/FsSxfsVafvjWYJZWvDD0JxXN/wDBR3zhpHhHyhcqfPnI6E4Kp+nWt743S3af
sVaWYmwvkWQc5+bGWzXzlL+HR/xCE/ZKtFm/ZN1XzI0jaW1viXgJH8B461wn/BOjFv4q8bId
nlJBHgu53dWr0L9l0PD+x3fPEHDLbX7FYwMniuC/4J7LIPEnjTEUw3wxnduX1bjbXTUf7vFe
rA5f4Lnzf229TC4w11ekY/31qx+04JF/bH0dWA2+bZ/yo+CduF/bR1GUMzFbm9PAX++vpU37
SNx537ZGirJhP9Iszllzxg1pH/e4/wDXpgaP/BSWYr4o8EIB1tZDkEg/fHvXo/7WkpT9l3RI
3AHmPZkOO2IxgfWvMv8AgowGk8b+CkJMn+jsMbcf8tD2r0v9q26Ft+zX4aiaEXBae2/c3C5D
Yj7AcmuOMmqeEt3ZqknTlfsZP7Ph2fsOa48iYJsb0by2TyrVg/8ABOZY10zxtJGSSJ0TnpgK
tdD8DLVYv2GtdIVF3WN6wCZxkg8c88Vkf8E4rYjRvHDbNim4TB8vIPyLmlX1pV5PdyQ6iSUb
djgv2TGb/hrHWlDNhhqPf/poal/aFM0n7amjKU4W8s8ZYH0pP2UImX9rTXgVPDXuPlxwZGqL
42o0v7c9ioBbbd2mB6HANdk21ipW35P0Mv8Al0vU6v8A4KMzEJ4O2sc+RcMy9sqFIrqf2iY1
X9jfQ4wNqhLLp9BXI/8ABRXmXwi7uuGtZ8I6FNvAz065zXb/ALUMgtf2RdFiWIAOLTlV4UcY
+lcFFJUMI/7zNIJNtMm+B9vGn7GWtRNMYU+w3Y8wjdjK+lcT/wAE41Uat4ta3uGuYxHEHLxb
QGG3pXVfBqOQfsRa7F9+R7G6wwLE9PesL/gm9AltZ+LMFQWlhJHthc/rU4htQxdv5l+gVElZ
I4X4FAXH7aOsyqwXbcahgBT1Dk/1qD9oyA/8NjaUpkUj7bZ8Dr1FWf2bXdf2ztaUlgvn3xIP
TmRs0ftCWbN+2Po8h8ph9tsyTwT1WvQqpRxEUv5P0IX8F+p0n/BRoq9z4HZ8DMEvYn+NK9E/
ae+yn9kjSRKAwEdoU4x820VwP/BR0qNT8FBCABHIML2+ZK7v9qgB/wBkrRgRuYC09+NorCL9
zBf4mSUv2bBO/wCxbrRLkKYbzPOOPmrmf+CdUWbjxlKGMjbovl83PVc9/c11H7PkskH7FOtm
KT51gvSqbOpAbj9R+dc9/wAE75Wuf+E1eREU+fDhUHGPKFYN2w+La/m/UDjf2cwT+2RqJZdp
NzfDrnqxFQ/tTWxuf2utBXy2kHnWKHYwBAwam/Z5G39rjWtoUYu7wgr977x6VP8AtA2Sj9sn
QnEmMzWLbWTk/K1eo1bGxX/TtfkNbnV/8FFZ4ZPD/hLKusyxSkc4HIBP8q6X4sxrbfsRWcSh
iotbQfe56+9cv/wUhBlsvCDpkL/pClB0xlO34mus/aBEcH7GlkmyNFa0s8FgQM5HTFcVOEfq
2G0+2xR1lJdh37NMi2/7K2rvJGXRY7/AZhg/LXD/APBOso+peNlQsWITGCP7tdb+zlDG37IW
vYeNwsF5gqm4A5Oea5T/AIJ5WYtovHEwXc6ug4HJG3pUVPdhiEv5kBhfsqW6H9qXxb5ok3bL
rbh1H/LUe1M/aJtzP+2joqiM7/tll/GP9ql/ZLeK5/ag8XbrdY3VLnCswcj96O9R/HS5th+2
tYb4WldbuyAkV8bPvdu9dFNXxso9OT9AOg/4KMtH9n8EoGKssUuPrxXVftQZH7I3h8NNIPls
sYI6/lXLf8FEVj3+CSY43HlSkruKk9O56V1X7U9xFF+yT4YyEBJs/kJDHp61ww/h0P8AEBa/
Z9t5F/YquSytIXsbsklgOuRXLf8ABN8/aPD3jQyAc3ceQP8ArmK6b4H3KTfsPahKrKNul3mG
B6YzXOf8E5AF0Lx0Fwqi8TGBwPkFaVLqOI/xIDif2WkL/tieIkDBVVbs4P8A12NW/jLIp/bU
0mTyz5kd/bANuA/hqr+yy4X9r3xIxIlbbd4Gzn/XGpvjIBdfts6FuAH+nWwKmPd/DW0klikl
/wA+/wBANX/goyE/tHwhlW/epKGJcetehftQXMcP7K+jKOd0VoMsM9AK87/4KI+W2v8AhKMx
JgRPhigwPm616H+1qq237L+kxqqyfNbAbYscbV6Vxw1pYNeb/MA+Bunhf2LJgxYibTbp+w6u
/tXP/wDBPOIW3gDxjMxwGugeg7Lx2rp/g/HJD+xREQWBOl3HHp878Vzf/BP6Ur8NfFUbhdwv
GUq8bE/c6Gsp/wALF/4ogcJ+xjCD+0n4nlTJUW103PqZ6g8at5n7dVjIxCAanHnCk9jVz9ix
ZY/2ifGSyLCoW2m4G4EAy/41B4lc/wDDdlioZPLOpx7gCfQ+tehL+NU/wo25VKEb9y//AMFB
7qO58aeD4o5FyYCpOw5x5y16H+2qyL+z14bMszF45YwoCnB+TvXDft+28b+PvCLQPgCPBweQ
fNXr+Rrv/wBtl3X4FaBOkis0cyYidvlPyEdKyou0MLH1FU+N2Kfgdt/7C92FkjJOkzEkKQOZ
Kp/sAQiH4ceNmfDKZyNwJ/55H3rW8AP5n7C7t5MTg6bLuXaCo/eGsv8AYHZ7n4aeL49hQG6f
Plqu3/VGuOc5exrK/wBpfmZHC/sRBJP2gfFrMDtWGfjceglC+voaj1aVLn9u6CLJKLqAYKDj
sav/ALEUSJ8fPGYKrhYWHIHeQ5qC8ij/AOG9IiqD/j+6oB6H1rsqyl9aqJfyL8jqpbGj+31H
9s+IfhCERlWljCmRJPmA83sD9K639veNH+C/haKSORmW5Vd4fLZ2KM4z19q5b9vqJ5/iP4LC
zRLBtAKsqk5832rp/wBvXT9vwX8M7htjFyMyNb9BsHIwP51zYa/JhPVmE/iZseMLcJ+wrHaw
y3G5dMgRd6jf/rM8iqf7FHmH9n3xPEA8se64UM+Fb/VP/WrfjuzW1/Ygt3hkdCNPgYjYTu+b
r7fSs79iUA/s2+J5Mguz3BHy7Sv7t6mrJvBSX99/mJbP0OL/AOCd+l7vGfjG48qcutumACNp
+asG2828/b6iLW8iSf2zI3lhgR9wjs1bf/BPMBPFfjAlwB5Sgjy/fpXGeGbyRv27lHlStnW5
Ryo6bT6V7Tt7Wu/+naJp/wAOJ1n7bqEfHTwjGFmVZEtTIuM5Jk9c57etdl/wUAtRB8NfBmxZ
FcXDNvEYB/1a1xn7ZTpF8ffCMckUalY7TJkjJz+8PtXbf8FBjHd/DzwbGDEn79uW3KPuL6c1
y4Z+9hr9io/wpmzqEG39gsLDHlhokRCjv86n+lUf2FdPkHwM8UmVJlZpbld20EnCEVqeLbQw
/sJzwQFZPK0qAExFjkb04qp+xLuPwA8UAQiBhcXeGMZyw2npgVyP+DW/x/qhw3PL/wBhC2dP
jTr0Sxyugs3+Yquf9YanuJY5/wBva8Cxf6vUnG4xgEbUC9ap/sIKv/C4vELNIm/7E/Pl8/fP
rzTYYov+G8bkoJRMdTmLlVJGNvau1/7xV/wmVP8AhL1Z0P7esaTfFb4dxyIXRwgI7f6+u0/b
vgeH4PeE40QuiXqKpXZwPJ6cnNcf+3dI8Xxc+Hq7wVxCMeVyP33eun/b/uNnwm8J4AUf2gmf
3P8A0x+lRhvelhl0LWzsLfFk/wCCf0auOf7JhIVQoJ/edK9A/ZBgh8J/s+6PdX91FbRzGS5Z
pMIiozcZYnFef3C4/wCCfUce3z86ZG2+Vd3y7ugB7e1Ymuqh/YBsFkMMEXkxBvPhKKwyfl61
yV8MsVTnh9lKdhxlyPmXQX9vX4r2Wq6DovhTS7y11FbmQ3Nz5R3KAv3ckHpkVwH7CnhbRJPi
DrPiTXNQtLNdMtAlqtywTLuQWK5PUV4X4I+G2vfETUp7HwvoFxqNxb2/7yC3dl2R5ODyQMe3
TiusP7KvxU+zNOfBGpNg/d3DcffG6vqIYHD4XASwaqcrkrdgc1Wei1PsT9sqfw940+Ct99i1
ewurrTpFuo4Le5Xcw6MB+Yr5F/ZX8SQ+B/jz4avLnUILKyvGa2nYzMwVcZG70rMX9mn4m4YS
fD/WmVhjG5Vx75BNZfiz4e+Jfh/Jpc+uaFrmhRMJIVnuwmJHxnaP71VgMDhaWHWCVX8ehhUc
lO/U1v2otVtLz4z+I5LKeC6hnl+V4ZdwIHQg4r6//Yi+IHh+L4IQafc6zbWd1YTyJLBeTiMo
uSdwz1FfGHgj4FeMfif4X1PWfDNkupy6cBC9qZEScnqdgHDde/NSaF+zl8S9S1ZbWHwRrUcp
/dl7qPyI1/7aE4I96Mzy7A4qh9SnVsoruOjKamrdz0X9t74s6T8TPiFYWuhXK3On6RCYxdQt
kSszbj27HP51y/wl+KWqfDL4T/EC9015LW91K4ttPhvIhypKszY98KK3fHf7GvjjwHomiSWd
jd+J764j3XsOmwrIlsc8KCTlicnJPoK7j4T/ALNHibxP8CPGmhavo93o2qvepd6ZFqESxs8i
L1J6gckZ9K3wtTA4fCxpwalFaF1lU5+p4T8GvhVq/wAdPH0elrerFct+8u9Rn/eOqBhyM/MT
+Jr2D9p/4C+BPgh8OtEs7G5m1XxNPOYzeXLAOY8kn5QBj2rx/RdG+Jfwk8ULPouj67pviCH9
y00Fo7q49Rxhh39K63xt8D/jR468Ov488W2upardSSCOK3eMPdFf7wiQ/IPYCqlVi6kZxqJR
Sta6Kin7NtrU3f2GdXtvDvxB8SancSrFbWOiS3Jlk6bVJ4PuTXkesXGo/GL4uTTmT7Rd61fh
EUKPulsZ59B0rX8KeD/iH4Y0LxTDa+C9dddTtksJCtmyskeckqDy3vXqn7GfwL8QH4vQa1re
g3+nafpUBlR9QtDHvlJ+ULu649ulcmJrUsNz4x2dk/yMIc8rQezPUv24fhlDoXwt8I31pBG5
0CNdPll2A7Y2XBIxjvXg37MuqLrek/EDwCEFy2vaS8trHEu3bNGQQRnuQK+/Pjp4Hf4g/Cnx
FoqxPJPNbFotoP3l+Yfyr86PhF4W8Z+DPir4e1GDw3rdtcWl8u5ks5hGY+VcMQuMEYPNeZk+
axx2FnOcrcuuvkazw8qU79Drf2PPi6PhP8TrjQtZZ7PT9VY27+epURXG7AB9OvU1+lVmY7hF
uIZFaB1DKQ2dwPoa+TP2mP2PW8eNceKvBoNv4gmAkudPKgJcnGQynoG9fWvG7H4m/tDfDzR/
+EZTTdbSGIeQJDYGaRR/sMQePpXh5nluDz9Rr0qnLJb9DaNZ0tLH0F+2j+0FY/D3whd+ErC6
SXxHqkTQmGL5vJjbgsxHTvx7V8+/BPwW9h+yx8VfE0yb11KOO2t2/vqrjcfzqLwL+yX8R/jR
4qbU/Gcd5pFjcsr3Wo6lJuuJ0znCp1Unp619U/GH4b2vg/8AZr1rwr4UsHEcFuqxW9rHmRwG
BY4xyTjJIr06GIwGVqngcPK8pbkTk6urPjL9jGzWb44aRJ5am4hjMiqenoeK/UZHZ4otwAbY
CcV+dH7GHgTXdN+MllqN7oWp2dutswM1zbsqA89yK/RWPPlx5znYBz+NfHcYy5cRTVNnRhV7
tmSd6+M/+CiZKaF4YgJLhmmbcOnU19l8Gvj3/golbSReE/D7wQvJGfN8yTbny/m7E9OeK8nh
eK/tFS62Z0Yiypuxs/GLbbfsT6cgVnB0y26fSqH7Gqqv7LPicbSUMl6+1+x2kVq/E1JZv2L9
Lj2zSSNp1oAm1ST8y54+mfwrI/ZLZ0/Za8TDLK4+25B4OcN6V96n/wAJ8mt+f9TjrfF9xyP/
AATvsm/4Snxpdt95ViXAAxjJ9q5r4Uwxj9tu6IXy4zPeSMF9QPeuu/4J4s41DxqzFgPNhGT6
ZNcz8Igr/ttXykBs3F3wfTH8q7KjaniGv5TN/wAOBJ+0a9wv7X2kSQu0R86zUOjEEqZeRXmn
/BWlceNPAw6Y0w/+htXp37Su6L9rnw+uwAmeyGC7KT+99BXm/wDwVzAPi7wO6gEGycAgZ43H
vXoZZFRrYRL+VmkNmeaf8ExJVtvj2GkB2iF8kDPY19XftV30SfH/AMJ20l2sZbUrNzGXlJIC
Y+7uA6g18yf8EurA6j8YL0bGVxbSEOuOODnrX0b+1hbEftH+CDOZPtgvLYb9gYNHztPHfrmu
rM5L+1n5QMqP8Nm9/wAFBJmm0jwc6SoEBk+8uw43egro/jfOsP7Femhz9+G1AP51z3/BQ1Xj
0bwhmVyWEu3EPAwV6/nW58f1eD9jfSo9jfItoNxx6Gvn6f8ADoLvL/IRb/Zdu1tP2Sr6UMH2
2d4So7/Ka87/AOCeM0dx4r8cTPkfu0JznjOeBgV337NZeT9kHUVCl2NneYCgD+GuR/4J0xsn
/CZSkPAPNjjZyeOhNRWkpUcVb+dA9Gl3OT+BShv2zNVTsZ738ty1N+0Paj/hs7SnV40+ezU5
kbJ9v0p/wDUTftp6vODuXzb51I7ncpqv+0Rvm/bX0cyKwQT2Z2nGM4rvavi0v+nbHsaf/BRG
AP418HGN4Y1MDMS1xJu/1hr0D9rE+V+zf4ant51jljlttkqsR83l85JBya4H/goJDBF438Iy
yPgGFgIlXJ/1h/Su3/bDZj+zb4aVS62xmttypF38vr9K8yEXGGEv3ZaklCV+xa+EkTRfsTag
I7lZZm028ky6jOSpzzWX/wAE7p75/Cfi0TzeZtuvl3ODgbB0wOK3/hFaRD9iG+EQSY/2VefO
qlv4T2rkv+CdUDr4X8Z7g6f6VxlNuf3Yrat/Arf4kObTUWuxwv7KbLc/tbeIH2ZIN1k7sfxm
k+LTi4/bysUTq2oWuCenEWKd+yNbhP2p/EDbiSftfX/fNSfEe2WH9vPSo8lt15btuPUfJXTO
a+vyX9z9DNK9JJdze/4KUFZB4Rj8veRa3KZJxg/LXa/tPQLB+yBosRkAJFoBuJPRQTXGf8FJ
4xHceEsHOYrj/wBlrrf2rDfP+y1oMcPleQVt2JYnI+Qe1ctH+BhP8TGleXL1Jfg+GsP2L9Za
5KzQpZXRYW8gJIx2IrF/4J4COWx8SLDvADRph2yASAw5+gq/8HwYf2HdSijghYPp120skDBV
Hy96yf8Agm38+jeKwcZWeIghgT/qq1q/w8V/iX6A4uO5xH7PR/4zS1lRyXmvCMdsu1J8dCr/
ALY+lJn7t9aA/htJpn7MlvL/AMNg6xOkbzbpbrcT0XLnpT/jfpjJ+2voq+blZL62J55Hybv6
V1VvexNl/I/yEv4L9Tq/+CjMIkvfBjwRs5AkG0dT8y13X7TMbT/ssaRHjy32Wvyvx0WuB/4K
LSsl54LRSVJEpDKCSPmUV2f7UoaH9lzQGDsWItixYEE/IK86l8GB/wATEQ/AGXy/2L9ZBBVj
bXzKT3zwP1U1hf8ABOMA6d4zLf6xZoUP/foV1HwKVf8Ahi3Utw37tPvGGe3LVy3/AATlIFh4
3ywVftcWSfTyhTl/u2L/AMX6gcV+zs4X9sPVhgn/AEi86f75q58fVWb9tTQw8ZbdJaouG7lW
NVf2criKL9sXV9zq0ZuLzDAH++at/Gp2uP23tHaJVZFu7TBdwONjdq9R/wC+KXRU1+Q1ub//
AAUZiMFj4RCptcG5Gd2e6V2vx7Lt+xpZLIW4tLPbsP8AEWAFcj/wUg5tfCn+9cn9Urpv2hbw
237HmkFlBhkgsw53YIwcjFctP/dcN/jZMfimL+zvK1n+yFrkls8jCS2u2Cu4AGck9q5T/gno
lyLfxxz1kQHaecFcV2XwAjtz+x9qLW7O0L2l3guQTxkdq5b/AIJ+KrWHjxRHISzKvUd161jV
+Gv/AIkM579k2xhtP2m/GEUbyyOFuGDykH/lrz0qh8akgX9uHTGUFy97ZfIRx/FVn9kCLyf2
m/FY2uMRXEeXOc/vetUvjANv7duk9x/aFouD7BjXpUf98f8Ag/QZ0X/BRaVWvPCCDIYRS9OO
4rpf2qJ5E/ZR8JyKXZQbQMGcf3fpXNf8FFYgNQ8IycbWilx84PORXS/tULj9lLw5D2V7Pn8K
8yi7Rw7/ALwL45S7ln4NOjfsLX+CE/4ll2uGPckgVif8E5IGTw741YkEPdpjH/XMVufB+COP
9hm+BUP/AMS+c5P/AF0NZH/BOuVB4T8WkK277YFA7fcFVVnF4bEL++vzCn/FicF+yqwb9rjx
BLztIvB0yf8AXGn/ABduIJP24NF/iP263XqR/DU/7JkBh/ao8S7kZpFiunGyQKMGc96b8R7R
o/249ObbI3+nW5wzB8fKO9ayXJjZp9YP8iVu/U0/+Ch4/wCKg8Jxxuok8p1XnjO7iu6/a1vH
tv2b9CWcsbpntwGjPH3Vz7VxP/BQ0zp4p8FrgFWiYnco/vV2n7YsI/4Zw0J8kbZYAFHC/dXt
XHh9Pqi8mDdldlz4c2K6p+xMguFeXZp0xVfO2YIkc5zWF/wT7t5U+F3ip5GH/H63IOSPk4ro
PhhHv/Yj83jK6XcHBAP8b1jf8E/Vb/hUniZfLYq12SSMAfcrml/u1b/EvzKkuV2ZxH7GF083
x+8XGWR5njgmX7QHxlfN4yMVQ8UoZ/27rNFcuV1FGO4542n2q5+xPbxQfH/xkUmYL5Evy8Y/
1oqv4k89v2+LYhcp9uTkJn+H2r0ZyUa9S/8AIjpg+WN31Zo/t1QrH8RPCJihbzpNpkcKjA4c
Dof94V6D+3JvT4D6GreY375Mjep/griP28bSOXxz4LIeKKUgYLRNvf8Aep05rt/24dp+BmjM
68JKvCwkH7hrgpa/VfmYTVpNMt+DYhafsLSokThf7Lc846lyfWsj9gMFfhH4rkCurm5kPKnt
GfStLSo2P7C5kjAAGmN8pDAnn61j/sHvIfgt4sUxoCJZSpVGOT5R4JzWU/4NX/EhJOWxxv7E
aST/ABy8ayIjMDAeg/2zTUWRP28SoVgRdbiSnYA+tJ+wwok+NPi1gBCRb5ZecH5z1FQWto0X
7dMxkaPc142Nsb9Nh969OU1HE1m+kE39xtRaaZq/t2SSf8LS8JQ7Q8hjUnfDkAGTqCDXVft7
An4LeGYWcHM4Byh6eWPeuU/bejb/AIXF4QBljKskSBMurkl/TNdj+3jEjfCHw4WlWN1uBldx
yDsHt1rlo74OXS7Mp/EzV+JQks/2K7cJDFJGdOthjb/tehNZ/wCxy/2f9m3xDIbfYCLpiI19
EbPf/aFa3xQaEfsWRM7q+NNtiODuJ3etZP7HMiXP7MfiANHhiLtQeQuCvc1mk3h2l/z8/US2
focj/wAE8pZbnX/F2wMvyouCg7n61xvhZJbj9uYnbuCaxMxVkHTBHUGux/4J3ieHxP4yjXaV
VowB5oIxXFeCYyv7b8+5AoOqTnCzYHftXpOaVeun/KRT/hR+ZvftqNF/w0T4Tj3wq5+yjG1x
1f2ruP2/rmO08C+CfPjSWMTvgl5VU/IvTGT+lcL+2t5z/tF+EJFztUWhOyVR/H9K7L/goY9z
/wAIH4JaGWeEmdzujcZPyL3pUGnLDtdi4/wpnSfEG+WX9hszs0cMb6ZB99pJdvzJ91mG4/lU
P7GEsdl+zjrlyjFk33hdljYdjT/HeoTQfsMxymRxNLp1uGPDtjemcZ6Va/Y5Pnfs7a64muPs
4e9UeeyoW4OeBxXHJOeEk4/8/F+aHDc8g/YLRJ/ixq0sRglMtlIfOR23D9433lIGKis7cS/t
63n2gKZUvpWVhC69RxVn9gVLd/i9rYgJMjWTiQuQRgSHHT2p9hJ537eOqebczTgXkqoVuOOM
dq9WquTF10+sDKn/AAl6suftxrLL8cfA0LpEq/udhMbZJ83viuz/AOCgrLB8JPC0bYDfb1+4
px/qsVx37aFzGv7QPgXzvP8AIVYixjnIP+t468Hmux/4KDbrv4X+E1iJRnvQ3ll+f9WO44rP
BJwjhXIuOkZLuN1SI2v7ANvG0DFzpMKAqTjO/NXfhTpmg/Hv9kS28NaVrSWRs4hDd3TIzCGS
M5ORxnvUfitpbH9hK1V5W3LYwKNp6ZYd6r/sMrDF8EfFbxR7z9ouGKDAH+rY5rjhKbo1Kzdn
GpoJbEX7G/gPw14a8XeJ7jRfiBp/jC9FusE1rb2csEkeGOSWbjv2r6Jm+N3w/tvGsfhF/F1m
viR5PLGmkt5m70PGP1r5B/4J7u8Xj/xk5DhmgL/Me5dqydThMf7eyNJI8jHVMgrgH7hGOnAr
DMsBTzHEVXiakrxitnbU1hUdPVH3D4v+Lvg3wFcx22v+I7HTLmRFdIZpPncE4GAK8E/aq0rw
18c/AmgahaeOtK8O6db3rql9qSOI3fBGApwT9a8q/bynDfGbweJIpCywwH5gNp/e9Oldp+3n
b+V8IfCflW4lDTEYKqVX9zngYwKyy/BU8I6E6Tbc++rshTm5u7PQf2WvhPafA/wBqN5d+KNK
1XSr6U3H9oWa+VAqgAE72PSvZ/D/AIs0LxZaS3Wi63p+q20R2yS2lwsip9SK+eoLBX/Yafz7
b902mA+WygqDkcgVm/sG2qWfwY8TywokBM85HkoqBgAeOBXHmGA+ue3xDqfaUflc2VRRWh9G
eH/Hvhnxdey2ej+IbHULyIEyQWs4Z15PUduhrTXWdN/tD+z11K1e/GP9G+0J5p4z93Oe9fDn
7CSpN8b/ABZIYoubZjtEY6mQ85qjpqqv7d84MUrBr5l+Q4GBGhH+FZVshs5UqVVpRjd+ugLE
VLpdz74n1SwsLsxT3dvaysqssckqhjnpwxyalkvLWPa00sMKEE7nwob25NfBH7abyD9pDw0i
zzRqwshhJCMZlXPSvRP+CgQP/CuvCjCSVC0wyYmZSQEAx8pFcv8AYd/Y81VtyH7a7aluj66j
ubGRQ0MqCIjIMZIQ/Q9Kl/tGG4Ci3kBXoRGysCfQ4718ra4iwfsMWdx5syXMdhDIkyB1dSf9
oHNQ/sTm5m+AOv3NzPPPN9qucPNKztjYcDJORV1sonOhOp7Z25uX5XsL2qWx9XpdxIhcsDg4
IByR70m+Keb5ZP3iH73mDd9ABXxF+wPq93qnj/xgLrVJLhU2usE8rybTn/aJrO+H+s3kv7aO
oW7avcSQi/uV+yi8YKQq5H7vOO1Yrh6XNUpQq25Y3/yBV5S0kfejZRw2STndwefrSO01ycYO
OvzJk/nivh79tLxd4h8PfHjwvaaXruoadazfZ5JIbadkV8zKpBA6jFdb+3L4x1jwz8O/DD6J
reoaTdyyM0ktpdNEzYjzye4z2rClkdfkpRVZ+/f8CvaRPrJlKfeJ+pOcfpVfyEmLNKjbeq7h
jNfMfiLxVr0P7GFpr8Gt3cOsmzhc3qS7pSWJyd1aX7KXjPxB4s/Z71XU9X1e51DUreS5ZLqZ
syfKDjmsHkDUfb+1ekuVPzF7SPMo9z6OSPyOPljXdtC7gAeM5HNOWUEBsHYSQGyCP0r5B/Yu
+JXi/wAc+KvE8XiPX9Q1a3tF3wxXLgqh8xhxxWT8PfjV421z9ru78L3ev3Evh9Zpo1sGA2KF
GR2rfEcP1/aSjUq83KrtvsHtIn2uQQcD5h3IIwPrXxl/wUckK+HPDO0t5kgmB+bC9T2qX9or
45eOPA3x98O6Jomq/ZdIuHhWS2ESkMHODk9aq/8ABRF/tHh7wbnhmaQOB2yCa7soyuWAxtOo
5XUotmFeSlTdjc+M7Sr+xXosgYpIlrZlXVsEAoQf5VD+ymFP7KXiYw/fAvCzE8E4Pel+PCAf
saeG4/PMQkhs48f3h0/rU37LNssP7ImuMSFWaG8csvrhq9+nFxwUk/5xT/yOQ/4J2vK2reNw
x/dFoWTaeRya5H4c6lNH+2ZftZwm4uxLdbFmfC4/i6D0rr/+CdsUyX/jN32bFaFSR1xzXO/B
C3iuf2zdXkBO9Wu8H0r0b2q13/dJfwRj2Jv2gHvrn9tDQhAJDELuzd1VlwhLc9a85/4K3/8A
IzeBf+vN/wCdeg/tCW0Y/bS0F2tzK3220+YHHO/9a89/4K3f8jL4F4x/ob8fjXdgJKWJwtv5
WaQ+FnFf8EqQX+M+pDAbFi7AEtjP4c19LftRyWF1+0n4LjSQm8S8tjLCr7lXOcH1H4180/8A
BKnH/C6dSycD7A/O7b+tfSn7Qasv7WnhaOUymNprb77hh36YGfzrTMVzZrUfaH6mUZckLGr/
AMFDJ5ItJ8Js9qJY1aUMrSOqsDs4yK6X9omOP/hjvT2VVjz9kIHJA4Nc9/wUCQjSvC+6UJln
IGV6Aj1+orof2g3C/sZWBkdfMAs9oBz2NeLSjzRw3+J/oVNcsuUX9mNM/skXxLx5W0vMfKeu
2uZ/4J42eLHxjMJowDdoCuOp2mui/Zonlf8AZF1fBwwt7vGJNnb1rO/YEEemaT4smklIVr2M
thw/JU+tc1ZctHFr++iKnxQPPfgSQP2x9WCyKql74bAyDByvOOtH7RKxn9s7RHQBf3lqDz1O
08/pVn4GOf8Ahs/V3WInLXxEp288rxVP9oG0Ef7ZXh97jzzIbi2G9iNgyjHAA/nXqL/fI/8A
XtlPdmz+3wom8f8Ag1VleOT7LuzHwfv9z6e1dz+2TfnTf2cdEdDI8hktgJYzuzmPk4PSuB/4
KDtHbePvBw7fZ93A/wBuu8/bKlSX9m3w3iHO+a3Ibuf3dcP/AC7wnqxS/hyL/wANLgWv7Dd9
KxZW/se6KlDg5Kmua/4J2TXd14W8XyXDM8AuQFLtk48sZxXRfC6S41X9ia+iPnxeTpcwG+If
MM9BXP8A/BPnTTb+FPEvkyrEZJyTGY2BBwfX+lFX+BW/xIv7MfQ4T9lLyj+1Z4i8pH2f6VjD
Y/jNO+IZV/289KdsEi7hjwfURk5pP2UVki/at8SqzxkiO552f7Zqx8Rnt5f27NO8whZIrqEl
hGR5mYyOtbTp/wC2Sn/c/QSdoqPnc1P+CkURmuPCGWx/o8557n5a7j9pK3eT9k7S0eUoQLQB
mbHUDP6VxP8AwUTVbjVvA6yA+T5U+GAJH8PWu2/arLR/sw6TFJtaLdblUZM4GwVz0f8Ad8J/
iZdNXqcxF8HNPk/4Ym1i3HzSSaZd4WIgZ4z1rnv+CcllNDo3itSu0i4iBCMM/wCq7mui+EFv
H/wxFfx27D97pk6g9BkLzWB/wTtc/wBl+LPKto4CtxEG2MTnEfNGInywxX+JfoVV3OQ/Zmt/
I/au8S4Vl2m5IJPQ+Yar/GOEXX7bugsq4231t2z/AMsjWj+zBMsP7WXim3lgd7lpZ2yGyoG8
9R2qp8YImi/bj0R4Fb/j9t84fHPlGu5u+Ln/AHYX+9GP2HHzNz/gobGW1jwpvdNiiULlTgfO
ldj+1lfwWH7KWi+ascrt9lVSWII+Udq5r/goRbTXc3hXyIp3jijmkk2MMj94g7/Wt79r51H7
MXh4lpSpa128KxDbB19K86l8GB/xMRsfAuFP+GM5vkQK+l3JI3nnOa4v/gnaRHoPjQ8Bmnjz
k4z+7rsfgndSQfsZzLITLu0q5GRzt61yn/BO2NxoPjIlG5ulPmYGf9SB3qpf7ti/8X6gcH+z
RO5/az1YAr5fn3nKtuI+c1q/Gy6il/bT0CKAB3FzZ7twxk7GrI/ZrjZP2uNSLZOJbsHOOzH0
rQ+M0n/Gb+hEW7EfabU7wvYI2TXdKpy4mSt/y7X5DW51P/BRdYGi8KC4ZlT/AEnGw8k5TArq
P2hYyf2OtKVYSSIbPKsobHNcn/wUPcSW3g3Cefh5Dubj0ruPj+TN+yJphRUiHl2ed49658O+
ejhof3rkx+KZB+zxaySfsc35Pyn7DcHbjGCRk8Vwv/BPXCWfjRsZ/eJn/vivR/gVMIP2PLgx
/vpW064YiJc8YIrgv+Ces/m6b43wyEZHRcH/AFdRUldYhdpIZzn7Icqy/tPeLdgxgXHT/rrV
P4wTOv7dOnbYVkC6la4Y/wC61L+xrEW/aX8WcKdsc+dxI6y9sUnxOW2j/bdsVnYpIdTtvlDH
H3W9a7Yz9ni3L+4M6D/goJvm1HwdHI8ZQRyEKU6ciut/auUxfsx+HVKhwZLP5VUjHFct/wAF
BZIp9c8HxoUJWJzwzA9R0zXbftbTeX+zHpMsW4MrWn329F5rz6X8HDT7yNnTsr3K3wkkab9i
S7jiAjJsJ9zSLlQPMPSqH/BP6DPgLxVGk0Z33hTcq43fJgVufBtjJ+xHkkFhpU5bH/XQ1i/8
E+WU+APEfzD/AJCB4B5+7WVV2w+If99fmYxfLJS7HA/seaf9l/aX8XqkQdxb3BJbnnzzV74h
2+/9ujRBJEF3XVuSB3+TrR+x0o/4aT8dlQwIinPzNn/ls1L49Ln9uzR/tGQ3mRlcP/DsH/16
7XL2uNnLtB/kK2rZY/4KGO//AAk/g/k8RsF/76ruv2w4yf2btMG04HksOO/liuG/4KER2z+K
PA4JjyTn5mbP3xXf/toQbv2dNPWNY2jjMe7bIwP+rFclCVnhH5MmWzNL4WWmP2KShiOP7Ln+
XH1Ncp+wTE0fwi8SNErNIbtgQ2cfcrqfBLFf2NozBHlzpUv/AC1PTBrE/YLt/wDizOrHa4D3
zsMP6JzXPJWo4hfyyS+9mtT4l6Hnf7ENh5nxu8Y3E3yyCCXKdv8AWipvEB8r9uyz/d53Xq9W
I6L7VP8AsTRCz+NfjtJAS+2b94z5A/fCqes3EZ/b2tUiMm8XPzZl4+72rrrf7xU/wIfN7qj2
dzS/buljg+I/gpXiVkm2YBkPHz//AFhXZ/twHZ8C9JZmKL5qZO4jHyHvXFftw3RX4o+CSHkX
7nKOpP3j/e4rqf252eP4K6MqFhGZkyS4/uHsa5aH/MJ8yKkrtyNjQZVtf2IZZLeUiQaUeQ5b
HPvWF+wrM8fwc8WTzy7YvNlIO9Rz5Rz1rotLin/4YhlMRZydJ7FPWsT9hiKb/hTPieK4Qv8A
vZTsbZ/zyNZz/g1f8S/M2iuWSXdHB/sMDf8AGnxaYUlljaDLMZE/vn0qXTmLft5TlklIFwwB
Lf7JqT9hN4x8XPF6xbgohOcxJx8596zdGdx+3JKk7ASLeTEDCjggkcg12VlfEV1/NBI0p0/Z
3Og/bXUXHx18DK0Mjj9zwWz/AMtQP610/wC3vPJ/wqDw7mSVAbsBio3MBsGeO9cz+2EkT/Hj
wMzIX5h5VAw4lB659Aa679vxRB8ItDL2qSJ9pIDy5Gz5BzgHHHvWeHf+5x7tnPP4mafxXdIv
2OrZDdy29ubOBWlNvufGeBt+veqX7Ikyt+zBrUbTTM7C6LF4guFweVXoeK0/jD/p37HEckIh
lQWVuSfJ7DHoa5z9kX7Of2YNYXaUZUvVIwepXjvRD+A/+vn6iWz9DD/4J6JBb694sME08wEi
ZaeAR8c+lcV8O4hfftuXjea8oXUrg7BCFx19a6//AIJ7RiXUPGojjjjA8sFlhZmb65OPyrl/
hRZW7ftz6wvloG/tC74Mbf3h71tP/ecR/hIp/wAKPzNL9tHEvx58LIJYt2LQeT9n/eN8/UH0
FdR/wUHgj/4QXwSnmS7hO+RHFwPkXtXNftpvGnx/8HFGgaeNrQCJQ+8gvziun/b/AI0k8G+E
3iaK2ZWkdpJZGGflHc9a2w/xYb0Lj/CmdH8SLOFf2IIYZZif+JbBgvbZAO5TUX7HLvH+z9rI
dR5QkvMN5AweD+VQ/FOaW5/YhjEFzEXNnasMuw4+WtH9kKFV/Zs1dZ4o3/e3rPskPzcHFc69
zCyj/wBPF+aHDc8p/YSVZ/iv4pIMUCRWQy4j2k5lOaj0qaOf9vi9V1swq30+GB5HArY/Yd8P
32mfETWtRltHs7W5tMwhbncko8wr0GccjvWdpc13/wAN3ak626yR/bJxlFU44Feriv8Afav+
Axpfw16st/tp25l/aG8EKqiVdsRwiH/nrXU/8FC5yvww8KwNbxuZLtiGdipB8kf1rkf2yJZ4
v2lfBH7y5h3JBlSw2nEnbFdT/wAFEzAfh34UZp2jzNJweekQrnw1S6w0Czb8ZxRab+xDHa3T
wxbtPtwkXTJ3DHNZ37CccbfBTxOpCcyXRID5/wCWbVvfGGz/ALQ/YvtJVl2RrplsQ0sYyeR0
NYf7EcBi+AHieSFQzh7oBzxk7Grnl7mEqx71F+YHG/8ABPeBB428Y5UZCqvPpubiufss6h+3
ZcHOSupuNxP+ye9b3/BPuVv+E68arKCJWgRie33m71z3hiJ1/bhKBS5/tKWT5ecLjr/48Kut
/vWJ/wAP6Aa/7dZx8ZPB8BCsTFb9HLH/AForuv8AgoCoT4R+GQVkVBcNtaM4OfKGBXF/tzo0
Xx08GMQSPJg6c/8ALWuz/wCCgd0G+FPhMrKYsTYIaMnP7oUYbbA+jA6ISZ/YXZJIW3DSh8p7
dKzf2Fxs+AOtO8E3/HxcgkcnG1qveIWnb9h9hbzlG/stcsBjPSoP2H4Jn/Z81xUlYM086DcM
DOGrmSvh66/vr8x/bcPK55b+wm0f/C8PFSwrMIvspwZlwT+8NRQxLH+3UrRi5LtqEmQqfJ/q
06GpP2D52uvjZ4pfe0ipZ4yQRj943+FRWWoNJ+3gIzLI0Qu5cIVOB8i16lV2xOIh/dX6AtJJ
9hv7Z2G/aW8LiT5X/wBC+UdP9atd5/wUMnMXw58JKCQWmIGD/wBMzXn/AO2BEJP2oPDjH7g+
xKfr5grt/wDgoesjeCfBYWQRqkhGSM5/dmvOi71MLHzYPWTfc7Tx/Yw2v7EaRuWijGl2xBTP
oDWb+xPcQ3X7N+veULhtst1lm68KecVq/FG9Nt+xfEUk3Tf2Za/Mw+XoO1Yf7E+omf8AZ58S
FmMYM1ySSMfwmpn7uCqf4/1Ect+wOLaLxX4wMF0ZJ9q7omi2lRnrnvXOfDG4kf8Abk1eNpEC
DUbvAZcnnjrW1+wFE6ePPGpLmQLGoPHAyawfhaNv7cmqA8n7dctgeh5H8662/Z1q/wDeig6p
Gr+2XGup/tH+EYrh/LULbLuXv++Xn+tdT/wUBhhtvh54SuWBYo8ibSOGGzqfeua/a9lA/aZ8
FeY6Ij/ZMblwSBNz/wChCul/4KG3CS/DTwwI3XyhM45452Vz01yywcPUctJOPY2/GtuLP9hW
0j4A+wWx/PJp37HN1HH+y7rpCjdvu+fzo+IsZuv2HdPt4irSyWFrtXPXoP6ioP2RrKWz/Zk1
6OVQrq12pGc881jNWwbX/Txh9uM+xyP/AATwQXXiHxvOeSBEoH1Lk/rWP8GraJ/25dVLIDtn
uT9PlrT/AOCckTR6v42LHYG8nDen36zvgVZSW37afiBZJVlPm3R3luSDjFehiFetiv8AAiWx
37VtuZP2pPCIDfKZLX5c/wC1XUf8FEIxH4c8LNsIO5+nB6GuX/aiT/jK7wmoZWZZbAEA/wC0
a6L/AIKJ6bJceHvCjxRj7zdZCex7GuaiuaeFn3jYdZcsXHtY3fj0FH7H3ho+W67RZ4YsMLwt
Wv2ao3uv2OdTAkCMba9/en7p+92qj8ek3/sc6AAyjctiwJbggYzV/wDZsUn9jq8Bwn7m6+9x
2NQpXwzj3qW+52Ll/kcj/wAE7bZjH40ZlkJ3w/N5X1rl/gPLCf2xNbUh42Vrr5tm3Ndn/wAE
8XcQ+MIXSQFpIsfP9a434Bqi/te+INyuCHu8ZOe9b898TiqfaJL0hGXcn+Poib9tHQV8ozf6
RCwJVycjBHT0rzb/AIK4Af8ACReBeMH7LJx6fMa9P+Pc1zZftjeHLgSSI/2qJUCKCMHGa8x/
4K6Hf4p8EPkkG1k5PX7xr0cs/wB5w3+FmkPhZxP/AASohMnxi1dw20pYtjjPevpH4623mftj
+FSyIQJLbPlR4J69ea+dP+CUoA+LOssQSTbbTggcH3PFfSPxvgCftheGZDLdTs09uB5caiJQ
M9GB5rszD/kb1F05DCelOD7lz/goWivaeFUBHmE3Aw6HjlO9dV+0U0i/seWCBMFVs/m8vPY1
zP8AwUNYy2PhOIOc7rj/AFbHf1Wul/aSHl/se6dwxyLMEeYCTwe1eHh2/wBwv7zNav8AEfoh
/wCz8jxfsdam6S+aXtLtgPIIwcdK5r/gnoJLzQ/FscjA5v4yd0eMYU8V0n7O1v5f7HF99nWS
JxaXZ9M8e1YH/BOtJV0Xxm06FJPtyEZYn+A881z1/wCFi/8AGiHq0+xyfwHbf+2Zrm5V2Rve
EgqcEF1GKj+P6pP+2PosS2YeeS6t1E8ZI2qEPG38R37VP+z0s5/a98RNMZpd5uwoPAx5i8cd
qh+Odybb9s/w78xVmntxsHbKNk/pXTGUvr0V/wBO2BP+3/GR418GeYpx9n2kt1+/6V2n7Zcw
039nHw60A2bprcEpwT+779a47/goREIvHXgl3mKs0JPPPG+ux/bcniH7PXhVGAQG5g+b+9iP
ipgk6eFv3YT/AIcjc+HxmX9iC5uATuXR7hldm24wCen4Vyf/AATymnfwb4nuZG86Q3JB+b/Z
z/Wu3+HKm6/YmnV32g6Ldc7M/wAJ7VxX/BPdZYPAXiVxNvQ3bIf3e3+EVxYiclhq7X8yK+zH
0OG/ZXdZ/wBq7xI8Z3K8V1uP935zTviHLcSft4aaiuf3F1Ai7Rg/c60/9kfTBaftOeLis5aY
LNiCOMscGRs5NN8bu8H7dtnmS3WVryHmYkH/AFZ7Cu+cn9Zl/wBe7/OxP/LpS63Om/4KHXl0
+qeCbM3Ey206urhWA35ZRzx2zXT/ALWtld/8M06I9s4W0iMCzKeScoK5L9v2cN4g8CpNhwrH
bjoMyJnFdj+17fGD9m3SoIoTslFufMdW2odg7g81x0pP2WDX95m1L4in8JrCWz/YaneOQqja
XcSkY9RnH6Vif8E6GaLQvFTY3lp1JPpmPNdZ8N5GH7DskfmRywnR5gXg5A4rlP8AgnaxTwx4
qaKWK4k81cRL94/J3p4n4MV/iX6Dq7mH+zasdz+1X41BkCoROpCj5jlz3rD+KzfZ/wBuTRId
xMcd/bKCeuPKNX/2VB9o/aq8bG4dIH3T5jY9P3hqt8YIYx+3fo6kZT7ZbMcHr+6Neiv97q/9
e1+Riv4Tl1udL/wUSYx3fg5dquj+by2f76V1n7XqEfswaO6nc4+yrsRei7Byf8a5H/gojOsl
x4LVRjDS/wDoaV1f7YDFP2Z9C2nGTa5x3+QV59L4MD/iYjS+FzLpH7EsnlqrH+xp9xJyDkGu
W/4J0Io8J+LZl2Za56KpHRQOp+ldT8JWk1P9jCRXh3KNGuCxHHQHniuf/wCCdygeD/FS5JX7
YRgsT2rOq2qOIS6yswPOf2ZW+2ftca2D8vly3h9c/Oau/GUMP24NDRJ87Z7cFd3+yah/ZliS
L9rnxDtR/wDWXn3Of+Whqf4xHyv25/DpRcGS4g3bgMn5DXW23iZX/wCfaGtzq/8AgoZKsFt4
JwgOXc9fpXUftKal5f7JOnlbcMjR2YKbsY5+lcr/AMFDFklTwSjRbR5kgBz0rrP2lYzY/sm6
fC8QlPl2ZJz70qHuvCpbXKpK9SaY/wCBlqkv7E9yse+1c6XckMjcjrXB/wDBOz/kF+N/qP8A
0CvRfgS+/wDY1l+XYG0q5yv515x/wT2LR6b43Ea7juHy/wDAKzqf8xP+JF1IpWsc/wDsaKp/
aZ8YEjJEc2D6fvaj+LCwzftzafvklMo1CBsLwPlXj+dWf2M0T/hpLxi2cv5U2R6fvTUPxDkM
n7d9ii43/bouSP8AYFdlP3sVUv0h+hnU92Ckjof+Ch1uW1jwNsldSQ6nJGCNy13n7ZUEln+z
VpIiDSAm3QiM9ML1rh/+CiTLHq3gpnXeBvyucZ+Za7f9ra7VP2YLCV41j3m3ClmPX8646X+6
4T/EdUvgE+E0jQfsSyHZK5/sib7w/wBs1j/8E+gy/DXxHKEDH7aW2BPmPydPrWv8Mw6/sUTb
E3r/AGTNyrHH3vrWF/wTxnc/DfxMHdNq3ZO0E5H7usa3+7Yj/GvzOWGtSKexyv7Gis/7Rnju
V0aLMcw2sORmc1J4uuE1L9vHSlSVohG6IcnGSF+lN/Y8kk/4aK8bFWPlFJeDzz5571N4px/w
3fprbV3eYvO0f3a6qf8AvdT/AAP8iFu/Uk/4KAhpPGXgeMSSHHAIYc/OPau7/bN1A/8ADPNv
btHKWZourKRxGK4T9vo58beBjskJz6DB+cV6F+2uqH9nqxBVEYtGSgjB/wCWY/GuOm7Rwj8m
KWzLXgfbafsZpI6SMv8AZUo+QKecH0xWL+wW8jfBLVz5ePLuJmAJ6/IK3PAZ/wCMNX4U40pw
B5eOv1rnf2DbmSH4G67tbAFxP2HpWdZ2w+Kkv50a1PiXocb+xHL5/wAYvHbeVCHHmAkJyMyA
+tQalCsf7e0MzMozc9BH/s/Wrf7EbQj4vePzGm13RmJwTk7x2qjd3Mp/bziUvkfaf+eJ/u10
VG3XqX/kRlN2UWurL/7cLIfih4JO5MfJ1T/aNdh+3hMkfwX0WFpXLtMgG4Ar9zvxXE/twb5f
ib4Icw+YTJGu7BXI3HtXX/t73/k/CDw/b4GZJM8gHkDisaG2E+ZVVWukbkDBP2IyhaI40nOQ
o9fbFZP7DSQSfBDxNuwH82b5l4/5ZmtJ4fO/YmXDbG/snoEzu59qy/2JLUwfAfxMXQwnzZvn
8tv+eZ96if8ABq/4l+Z0/ah6HFfsJssnxb8ZFYYU8uLbkJyfn69aracnm/t5XIOwf6Q3RR/d
Pqau/sGxgfErxo4BZig58tufn+tVNGjM/wC3RdNLFjFy2CYWb+E+/FddZtV677QVjWo+WCa7
l79tOKJPj34F3LC5PljLJz94+hrsf+Cgbww/Cjw3H5cLj7YOCpwflHGM1yX7ZNssnxz8FsLf
cy+XhyCVHzegwa6X9vpo5Phr4ZVohJJ9qHygEAtsHbOevauKjJr6o10b/I56qtNo6D40JFY/
seny44YT9ggHyqQDkjjANY/7I0MVv+y5rMixqN8d45255wvuTW98d7YT/se4mi2EWdt8m1l/
Xmuf/ZJZj+ydrJ3Rgrb3uNxPp9BV0ZSdHX+f9TNbP0OZ/wCCdTq2p+NpN5T54+Nz8f0rB+GM
MGpftyay0sqswvbyT5rgEcOB0wK3f+CeRMVz41IljQboskTYx+FY/wAJWVP25fEaxytKi3V2
FZWBIywPSuyf+84j/CRT/hx+Yn7YQB/aS8IQI7ywn7IzRGfdGTvOCQMHP411X/BQqLd4I8KG
TzWAnc7VkVuNo4wf8a5z9ryyhX9pTwW8s0krOtocM6HHzn24rpf+CiiRnwJ4VRQNglkxwmfu
juCKmhNqeHS7Fx/hTOk+L99C37EzPCXWCOxtEAdV3N93sKP2RJjcfsz6pI0ZaOZbslGAUc7h
689Ki+KsYH7EUao0MJ+wWhDyKMA/L3/SrX7Jlif+GX7oySCFCt3++CBweW6ZPFcspy+rv/r5
+o6W55H/AME/dx+JnidIwLdY7VYwkZO1v3hOWGTn8MUzRwo/b0voYvLKteXDkKpA7cYzVv8A
4J/aVNH4/wDFNyHypiAB2hc/NjpUPhmzFr+3pfyntcXJ6E9q9itJyxta/wDIXOMYJKJd/bOh
K/tKeBCUVMiBflHrITW//wAFBBEPCPg1zCDI0so3g4P+rFYn7YjSXH7TvgQSMWizbYXyj/fN
dL/wUMgVfh94TkAIdZ5Qp8tuP3Y9658N8WGM46xk+x0nxi0y3m/Y0t2PnfuLG1dR5zYLbgck
dPwrI/YfuSP2fvFC+WWxLdcj/caug+LUMv8AwxhuLDH9n2h5GB1FYH7EsQ/4Z58T4aJZGmug
CGP9xqVb/dqn/XxfmENWrnG/sA3CS+MPGMbFeQmSpz3PFZ/w8t7WH9u/VdskG77Vc4jZW3/d
Xn0/GtX/AIJ7acLrxb4xc+TvTahIJHcn+tZnhK0fTv2+L6NjnfPcSZB7bUOM+ldEkpYrFX/l
/Q1qRSWhP+3NOsnxz8HhmTAigHD4/wCWldf+3tbSXHw18LeQdyiQ7gJwoH7rryK4r9un/kun
g2RFUIYoMjKn/lp9K7n9vqJ5PhR4aCbQoct/qt3PlDvU0El9RS7Mygr81+iN3Uk/4whkRGMj
LpgyWP07039hV1tvgBqku6T/AI+7g8N/stUniJTF+w6wB2kaWv3YiPSoP2H3eP8AZ61cp8xE
twwBiPXa1cd7Yas1/OvzIi71b+X6HmX7A0c7/F3xe0k8rqITGgVwuP3rdag0aOR/28vJZZZI
1vJcElSfuL3zVv8AYItwPif4vuAWZvLG7MJKgmRutVNIiaH9vP5ijP8AbJiWRcD7i44r0az/
ANory68q/QZB+17ZeX+0x4c/0qZ5Gks8Ruwwf3g9q7T/AIKFSK3gjweCG3eewIUZx+7NcJ+2
N+8/ae8Ls3J82z/9DFdx/wAFESo8EeDEO0ZuGxuJH/LI+lc1OK+s4VeTYHb/ABWS4i/YsjaA
oY10y1LCReR8oqv+xgWP7OWr3E7SOhN0xXAx901b+KVpHL+xbBE86JKNMtTl2O3oKzP2MLdU
/Zu1vDZKvdAHedv3T71z1HfBVH/f/UDlf+Cf0stx4o8bTSAJCJY9h2Y5GTWB8M/Ek+p/tw6m
rxwCMXMy4SPB+6O9an/BPQS3HiTxwnmxlVljONx96wvhFYpB+3NrKEKcXUxG0nH3VroxDtVq
2/lQusfU1f2td1z+014LgWYIuy1HKbmG6Xsc9Rtrov8AgopiD4feFYFaRgJX5kAwfk61yf7V
I8/9q7wWqvGiCSyVsE5x5hJrd/4KMu6eGfC8aktF5knzE5/hp4dKbwkpb6lz/iM7Lx3Io/Yl
sVcRgx6dbMC8ZKn5k64qD9lNwP2YNccbCGe8P7sEL1PQelJ8S5Vt/wBiS0IG9zptqCgl2kDr
nHQ9B+VM/ZOkP/DK2qOIS0f+lNuY8kc+lcs/90f/AF8ZJx3/AATtRJdW8bITuCC3PAIznfUP
wQSP/htXxEIivDT5yM9xU3/BPG58zUfG8kCk7lgBHm7s/frO+AW4ftneJnZPLYyT9+vIr0a/
8bFf9ewtcq/tPSp/w134YYRBZDcWOWB6/Oe1dX/wUUDHw54VImVSHk3Q5IbaMgGuX/ajiRP2
sPCrxqJJDNakr5gGCG4rpf8AgoS8kmjeGR88czxONsSh2Pzdm7Vw4dv/AGVf3W/yCXvX5upt
/GixhsP2NNFhZDNCI7L5XJzng8HHvWh+zlbLcfse3kax71+y3TBXfGPlPGaqftCGaP8AY90F
JpWCpHa+Yz9fuZX9RWt+z3pjJ+yLcxMMebZ3ezBI4w1NJKgv8f6jbucl/wAE9bOFdC8WFUMR
FyiEGXczYz0JAxXH/s5Yj/a78Ro1ttBa6w5lDHr6V3f/AAT4zPoXi1SrFvtceCyDHIOe1cD+
ztZC2/bM8R8ABhd9K6XFLFYt/wB0Jfw4Ev7QsM8n7aHhthGWhW5i5EgHp2rzv/grnEF8Q+Bj
zzbScenzGvS/jxFA37Z3ht2Z2mNxFlAoI7V5n/wV1kY+JPBA6D7NJxj/AGjXdlv+84b/AAs0
h8LOF/4JTRFvjHrJIGPsB5Khu/pX0r8ZFjf9sfwmU2NOZ49/yM0mMcbugx6YJr5s/wCCUswX
4yayhwM2DHJPHBz/AEr6S+JlmNR/bj8OwCSIGNo3yWP93Pt61vmema1H/wBOzB/Caf8AwUPY
rYeEiYzI26dVBtiyqfk+8OSfwrpf2mVaP9kDT96lSVsxwpAzg/lXNf8ABRSQpofhQeYgCyzH
Z5mB/B7g10f7TJjm/Y+0pt0a/wDHn0diehrx6LU6GHUesrr0Nav8R+iJvgMwT9jfUCc4+w3Q
6e1c/wD8E7IEbQfGJdy+L1AY/vJ9w+net/4CQyXP7H95BFw7Wd1tO7GeKyv+CftvLa6N4y85
5t/2xMq+0Y+Q+lY4l2pYpd5oFBvVHFfs22cWpfte+LJYSkaWzXK4WXOcyDcNv4Hj2qv8cl8/
9tjw7agL8k9u37wYH3GrW/Zujjn/AGpvFZWRmnDznY0aIQN7cghufyqt8b38j9tTw+Qkpkll
tsNlTj5D2r0dsZG//Ptkv+FH1D/goOqHx94LgjaMusOSEOMfvAP5kV3f7bFrbj9n3QYJgzTe
bB/q3UMD5XTJOMVyX7eU0Y+IHg6ORZ/tDxBA3lLtOZ0712H7c0zSfAXRFuHMam4hAXAJ3eXx
ziuOnJOnhbeZM/gZr+CZTo37FbyxnM66LKQFYZHHJrl/2D5ktfhdrdwsiy4nkeSWVu55PH4i
ui8B/vP2J5JJVRsaLcDATJOFPvWD+wZHH/wrTXY4pt9vJeNvQRbcfIOOc1hJWw9eT25kX9mP
oeefshX89z+0r4rZZkEMyysduAB+8btUvxDuHuf23NNBKGNbyDYRPuJ+T0qH9jK3Mf7S/jEi
FJIVW42huuBI1Q/EC5tdM/bztCAkJFzAyhI8kfJ0ruqNLESl/c/QX/Lpep0f7frM/iXwHChV
m3fMAw4/ex//AF69A/bAkkg/Z1svscypIzQxg5xlWUH+tea/t+zwnxn4ElKyybyP4cdZFrvf
2w4Gl/Zr0swhUxJb43jlvkFcXMpU8I13ZrT2l6Fj4Z28Vj+xBI05A/4lEvGM84rlv+Ceeobv
DniaGWRnIlBDxqBkbOnFdD8P8yfsSSsxO1NLlUh0ODx7ZrB/4J7yxw6T4pEQhYCeNCUB7xk9
wKzryUqOJa6SX6BPaPocv+yuwvP2ovGssJaSMmf5m4P+sPrWb8VS9z+3DpkEVwWkS8hZlWMD
AwO9bP7I8Mn/AA0r41Y7Ng88cHn/AFh7VQ8dMlt+3ZZKwWSJ7hGVw+CpwK9BTi8XV1/5dr8j
JfwX6mx/wUBDz+IPCJSSU27s6mNgepdMN/n1rtf2zYZD+zVo8QRso9sMY7bBXJ/t/PH/AGn4
JKSMSZyvD+kiV137Z14V/Zw0p18xi0lv8of/AGR7VwU2lDAt/wAzLg0ndk/wYlTTf2Lo2m3O
kmlzgnaTszn+VYH/AAT+WG08EeI4XG6X7bu2gdvL5OenY10HwblVP2LAzxyMraRcBoy/1yel
ZP8AwT3VT8O/EWVUkXsh3MccEEAfrWNWSdHENdJXZpzR579LHmf7Lckcn7V/ivy12hvtZA9f
3h5q/wDFuSKL9uHw+HiO7fb8/wDADVf9l6zZf2t/FCLs2pHdAtu/2zVr4ySj/ht3w+fKyRJb
jcGH90812vTEyi+tMwp6NXNb/goVlZfBSkEN5jnkfSvSP2rnVP2VYCxiVQLMky8Dt3rzr/go
kgW98FYm8zkgruzjpXov7U2pXOk/s2WEls8qSILQgpEsi546hsioofw8M/NG7nFynYzvgj/y
ZZMPlBbSrkjb071xP/BPq3uYtI8bzFt6b1X/AFhOTs9K734PTm6/Y3uZ2Ty2Ol3LMu3bzznj
tXB/8E9DKfDvjXd0E4P5R1c5KdOvKO3MjKl/FXzOe/Y2uJv+GkfGDbeFScE5/wCmtTfEB/M/
bw09mMgP2lPukY+6Kh/Y1O79ojxq395Zz/5FNS+Pv+T7dP8A+vlP/QRXRCShi6nN1h+hnP8A
h/N/mbn/AAUKeOXV/BMRcZ80uRweCwwa7f8AbOldP2bbCNQWTzLbkIB2HpXC/wDBQWBv+Ei8
FOVjEbKu1gOSd4ruf2zW/wCMcLFcsMSW3KnHYVwOSdPBxW6kdsvgJvh9EsH7FUsqCMt/ZEo+
cYOdxrB/4J7JC/wx8RlnVX+2kFScc7B09a2fA8Sf8MRyu25j/ZUg5b/bNch+w411cfCfxBPY
3y6UsGoFp2dA4dAnI9RkDqKyq6Uqze3tEci1aS3Mf9jS1hH7RPjtyocBJcbwcA+eaTxQ7z/t
2ackphOyYOvynptpn7F97Lc/HvxoMxSK0MhDo3Dfvgc9P9qp9cIH7d1kHQEhx0bP8Nd3Mo42
rf8Akf5A4ufLy9GSft8yLc+NvA43IS5OVBA/jGfpXa/ttMkfwA0yJIto8yI7s/8ATMVw37eW
nf8AFe+B5hCp8w4b1xvGMV3P7cGU+BeixlHBmljUEjjPlj3ripawwtuzJqdTa8LXMdn+xwsk
pRUOlsuXUnnPtWN+w5bp/wAKH1tnWMZnnJ+Q+n0rZ0K1dP2NUSSIOf7NbI3dDmsP9iSVrj4D
6zE52BZ5xhpNg6euK4lFrCzv/OvzNKnxL0OS/YoiaL4o+M/LtI1ik8zbJuZs/P8A3eNv4VmZ
Y/t55EcZBnK5Ebddvvmtf9iGWST4leOR+8HlFuS42f6wdD3rHs2Nx+3buWaTYLt2G18hsL3G
K75/7zW/wr8iJxbjFruWv23ZQPi34FXbEWR4S2EJwN2P512f7eN3Gnwh0JWESk3CjlGxwvPO
K4b9suGaf41eD5ArFHaBVRWx0bNdt+3hGV+D2jAiRnW4Uhsg9R6VhRnFLCfM756J3NvUsp+x
hCQLVSdLGJDyV5PTFZH7FslvJ+z3q4DxbsTJLv6j923Nb+rSSxfsWwbWKZ0tc71Udz0rB/Ys
t5734A67DEJPMdpj5jRqq/6tqmUk6NW38y/M56atJX6nKfsKXU0/xD8YqZEZEiVQJppH43ds
nAqroFikH7cErQyK6NLIDtuPlDAc8datfsK2wsviF4ybe0rKqqQE77qreE7dE/bnuXWR9xll
baIgAM812V/42J/wI3qfAvUv/tZLCf2h/AKyO6v50fCSkjGTXWft5QxJ8NPDqpeXEUguwscU
bgCUtglST61x37X0hb9ovwGDjiWL51IJ5ZuwArpv2+WgX4eeGoLtopSL0BAFIY/KMD61w4f3
auDb8/yOet8bOm/aCf8A4xLmRleJjZWuMzqD29DVH9ljEH7K1+HaQ7ra9wUALfd9Rn9as/HZ
kt/2UBGI43heytxiReFOR+NZX7NBY/st3ZVbbmG7XaARjIIz9006LSo6/wA7/MxOR/4J6RvF
deMXRbuf9+n/AB8KcL9PWsv4OwbP20NfRJXllNxeNIn2fGP3nqeK3P8AgnuilfGSxwRI5nQG
VZW598Hp+Qrm/gi8L/tl+Jj5rGfzrj5STyGcn19q7K0k6mIt/KBqftNJDf8A7VHgSIyD5Ft8
/uFODz61r/8ABQuAHwd4cM0yR+W8iIPs2T0HZc1kftIWgX9q/wABrFbW7O627HkrnGevNbv/
AAUQfzfBfhtFglTM8nzwHA+6PWqp/wATDehUf4Uzp/i5biH9i1A0n2iBLCz2ySW5CnlPbNSf
soL5X7LsvlRwGVYbrhY2HRSDyR7VT+Msnm/sWxqgkUDT7TgOSTytS/srmZf2Wr1kiuJlMV4C
gYA9W71nVaWFlf8A5+L80OG5wf8AwT2tE/tzxdcqICw27hGzCUEt/d61jeHZpG/by1EMoUfa
Ln70pz0HY1s/8E9tTvXv/FsEz3JghMZSHI2rkg1jeE7r7f8At26m6Xvmqtxc5SWLD/QYrtxE
k8RXt/IjOn/CXqy1+1+sT/tReA1kTfk220biP4z6V0H/AAUNtwPCPhCONAuZ5CFMxH/LMVgf
tcOjftR+AyUfrbgfL/tmtP8A4KJXJtfDfg9mKkebMfmU5+4BV0/iwn+Blw+GZ3Xxojlj/Y0U
ouXWytCAsxz94VjfsXSef+zp4llkV3zJdfflzj5G6ZroPjO+P2MVlSNDiwtBhhtJ+YdK5v8A
YkmSX9nHxOnyhUe6y0g4ztPFcU5p5e0v+fiIWyOe/wCCe80aeKPGHlmTMQQkSKoIbJ4G0njp
WV4P1ufXP29L95EYGKW5jHy56Igq7/wT7kjHizx0xZVQbASg4rC+GsaH9u3UpYyjxNd3WZC+
NvyrjIzXoS/3rFf4f0GdF+2ObWb4+eB4JF2y/wCjkP5Y/wCeh4rp/wBv+S2j+FWiR3EmzZI7
RAJ95tnTAzXJ/tlxAftF+BCkkcnywEkNwP3hrov+Cgo/4tz4dmRUM3nOo3vgY2fSuOPxYH/C
yoO3NfqjpvGLK37DYZDlTpSc/lWV+xiFuf2bNfjAbO64/hPo1XvG8xtv2HPLKHf/AGZGNqHP
XFRfseQhP2Z9UCPKkhE7Ek8klTxXI5L6pXX99fmRHSr8v0OG/wCCfkcH/CY+OYst5ny8fMP4
29BWb4cuDF+3JcWBwsf2uaU5mI52LitT/gn+mPFvj2VvNSQbeCevztmue8I3Zuv27533OE8+
fLkA4+Vfau+f+81/8K/QZc/axVP+GnvC6O8gBktPvEY++K6f/gojcTf8Ij4NghAfddkDG0/8
sz6muY/a53RftP8AhKR1ZVkltNhABz81dF/wUTlSTwr4NUzmKRbonOwH/lmeOMVcZJVMNfsw
O9+K4nX9jrCqCE0qDdkqvYds0z9j5Af2YmbyvLOLw7+Djg84qb4p3ER/YyD4ErrpNuRlcEHA
61nfskvt/ZZmklbMey8LAccYNeOnfBz/AOvn6mnJL2qfkcn+wTNJdeKPHkeyTaJo2EixqN3X
1NYHwrikP7bGuuLiURNPKAnAyQBnpWp/wT8vI/8AhI/GkaEohZCDg+/vWN8IYGf9tfWHF1Hs
SaX5XOCeBXpVIt1cS10imZdY+pY/ajuoZP2q/BcYll3h7TI2j++vf8D+VdH/AMFGbxZfDPhS
2WKZX85yJtw4O2uS/aehQftbeEWWZGCvaZxnqH6dP9r9K6n/AIKIQu+geE5UaJl85wcsRj5f
pRSi/aYSHXVlz/iM6j4xIsv7GNqAZS7WVoGlyORjrUv7NKJJ+ydfrazSyqLa7VZOmSG9DUXx
htyf2N7VPtMKbLG1BO4kdM+lR/sqSrb/ALI14hcO/l3a5TocknIrm+LB6f8APxknI/sAQQ/b
vGFvDcfal8q3Z38vbtf5yR+lZnwEAP7YHiWYXH2h5WnlkCqfkJIGP0rS/wCCe1rNpdz4xWUw
SSzCBsJOpKqfMxnFZ/7Pdkv/AA174lES+QMzxu3m5BII56V6FfWtipf3UvmBS/aFijvf2v8A
wzFckogltSpKnnmum/4KEWoktPCcjSspCOPJCMSSTx0Fc98ebeK4/a/0CGUSzTPLa+WquABg
+tdF/wAFBdRl0uHwjcpJMk8b4XZhucH1rCl/Gw/+F/oTU/hv5HSftJWvkfsjaRGAd4jsSy9x
wOtP/Z2Ux/sX3TMMAWd3n8mp37VF1eXv7KOlzusqmVLJ/wCEFiQM9Kg/ZtkkT9jTUFmjmwLG
6I3ryc7hWcpJUI3/AJzSRjf8E9J0fw54uYNkC8B6fWuR/ZsuJNQ/ao8TSlGGx7sZKkDGfXvX
Wf8ABPCP7L4e8Xnhx9sHBH1rnP2artIP2mfFNsJWaFXu3APOCTXVUqRVXENv7IWbpwSLPxhg
h/4bU8NPLHk/ao+f+A15T/wV1wda8Blfu/ZpMfma9P8Ai9ctJ+2z4YdE8yM3UYxnHO2vLv8A
grfcbte8DLsxi3k7/wC0a9DLouOKwt/5WaU3ujgv+CU+f+F2athin/Evf5hj+tfUXxDkjk/b
X0qURTmaKWNPMDIRgoOx+navl3/glQVHxq1dnUugsGyB354r6f8AiZaMP2ybLUTFCVW6t0VZ
FOVO3nGK0zX/AJGdX/r2znl8P3Fr/gocs8lj4RhjMkduxkO4BQM7kB61037VUE8H7JljbrI3
lBbPjqehrkv+Cjchmh8GgHcxeU7QMcZTt9a6/wDaXO/9knTWnyrJFagqeucGvDwr5aOEl2aN
av8AEfoit8GHntP2Lrp4w7sNOum5Qdf0rC/4J2Xj3XhXxdmFYJftKHCoVz8p5wSa6n4O20d9
+xfMiowU6ddZY1zn/BOxBH4c8UpnO28Rc/8AATU4tWhiP8aLjU5VaxzP7MMqf8NS+LY3jRrp
vP8AmChuNzflVL41JCf21fDse6OWbzLcgqoG07TxW1+zEgX9q3x4RDHkG5wc4P3xWB8boGf9
uHw3tCw4e3Yt5mf4TXpT/wB7X/XtmT/hR9TT/b8MQ8d+CVmVSAucbyvzCZMV2H7crQ2/wC0L
BRX+0wddxwdn5Vx/7f8AGg+IPgcmWOWTKMBnt56etdt+2zm5+A2gPJCJo1u42YLJjC7PSvOw
2scLHu2Pl5oSNPwBNs/YnuM5ZY9GndXHHO01nfsIsg+EeuvGMFL+TB/4CtaugG2P7D1y0QME
Q0h2Hzbe9Zv7AMQm+EOuzSzq4lvJdg3ZxWVepy4WvG20kVKPKoryPMf2OFz+0z4vGThlmyM+
sjZp3j6SOX9vGzUpFn7TEMg5OBGaP2PlEv7Sni4W5wUS5Dv2z5hxTfGumwWv7dlkqN5yi7hk
yOuTGciumc+arJf3P0JSvSS8zV/b9Bfxl4BBZsfKeD/01T/Gu7/bTtki/Z10zDPv86AR/Mf7
grz39vhWm8feBN8LwIHGwt/F+9T/AAr1H9tFF/4ZtsiqRyDzoCGY/wCwK5IaU8IuzZ0qHLGT
8ir8PR5X7EsiXDSQ79JmJDOOflrk/wDgnZBs8N+KZBKZA1yjDJzgiMiuz8HW1k37FyhoIyx0
iQ8se44rkf8AgnOrp4R8XhkRIhdDZg8/6s1nJ3oYtd5L9DKfwx9DD/ZFumf9ozxnGgRpT55I
CjdzIe9ZviuNbn9uqwjaNdqXCsQo3c4HU0v7H6sP2mvGTjOCJgCP+uhq54jiz+3lakQoUDpu
2nn/AFRB/XFdyVsZVX/TtfkZr+C/U2/+CgUSRaj4KjZFWUTbwVGODIua639s1Fg/Zw0wqVBS
W2xuBPYVw3/BQSOV9c8FSLkwrMBjuPnWu2/bFkD/ALNukkkuu+1wB2OOprmX8PBf4mSafwwh
d/2M2aNgijRZtzY4AIOTzXNf8E/FI+H3iFIyLgG9kycexP8ASt74ciRf2LrmaQGdhpEyhV7j
msz9gNYY/hrrIgEkha7kLGUbQp2ngYrnavQxK/mlYDzn9lN3X9qnxUXMbtItyThBx85pfi7F
aN+3HoCNChPm256d9pqD9k+VV/at8UKwVWMVycLzn5zTvi7byD9uPw+5gUo0tvhieT8hr0pO
+Lb7U0hrc2P+ChkKR3vgx1UBpJWDH6EV6N+11CzfswWkoCkKbIHc2OuK8+/4KJxBr7wRshdT
v6n6iu6/atVv+GW7NW+95lpwfwrKj/Cw/qTH4pj/AIPBE/Y2mVAAh0q44Bz29a43/gnxLjwv
4zLdDNz/AN+zXefCmW2i/YxAZPmGmTk49NtcZ/wT6tEPhTxreGRzvuAu1hxny6iH+71/8RpS
/iL5nIfsYPDJ8f8AxuFH7zy5tpz/ANNTUnito9Q/bt0xVHzG8Cnn0jBqz+xrAo/aE8by4A2R
zD/yKab4vgWy/b00+WP5h5oY4HfaK6J64mcu0P0M2+aPL5suft92y/8ACV+CCSxJlKY3HGAw
7V6J+2THCP2cLMyLIf3tuB5ePT3rhP2+lmTxf4FeR1EZwcY/2hXbftmSqf2drMfI2ZbcAMfa
vPh/zC/4jtl8A/wX5Z/YmlWMOE/smTh8Z++fSuX/AOCf0UkPwu8THdtT7exJ2542eldX4WxB
+w+quqxN/Yz8D/fNYH/BP7n4Ua973j/+gVpiP93r/wDXxfmclP8AixOW/YpVZPjt45mLRysB
IoJADY84jp/wEUuqjz/28bfIhGHGN2R/D7VX/YriV/jv49BO3iT/ANGAfzBqTxHE9r+3Zpos
lWJnceYJTyRt6it6n++1P8D/ACOmls/Vkn7eMfneO/BQWaICNQ23ceu8Zrsf23dp+BGksohD
o6bSQwxmMVyP7dcIT4jeBgFI/eqPlkHqK7n9uLLfAixYb9nmRgHzR12CuXD1Lxwi8mcs1e6G
6Ms+mfsXo8f+kM+nnKybxjk9Kq/sSxR/8KC1hnETkzT5DKzD7tdDZJIf2O1GJP8AkF8fvR0r
F/Ym3N8CdUVZJAfOn+UYPaud1L4ecLfbX5mtvayT7I4X9hxYh8RfHwHkxKpYgBGwv7wdBWfp
21f29CEeNg0zEiNSAPlrc/YctJ4fiV47WXzRktxIAAf3grK0KNB+3jcmQMR9ocgpg8bea7p/
7zW/wr8jWUeWMV5lj9s9mh+M3w+KNEMSxfeLZ+97V237fEufg/pW8Ap58eRj2riv2vr4T/Hv
wVbPDcCKL7OI32jDktuOPzrtv2+IX/4VBpRKuALnJIGT2rkp09MK/U1n76l5XNbV5IB+xbAV
jTI0pSCxxjk1k/sYus3wC1DzVTyMTmR2kPP7tq2NZgY/sXW/yyNjS1zuTGOtYv7GSbPgDqYm
QGFnmIVoi4I8s9qwcuWjWf8AeX5mP2oehy37B7Qjx542ERdhv2qN5PAPFU/Cu5f279T4kTaz
gZYkdKufsKbB478cFFQL5hC/uWUdf0qj4JJT9uHUfMCAkyY2h8nj3r0qsuarif8AAjSp8C9T
Q/ayhST9orwCCoXdLESV4P3m71037ed89t4Q8J4laHbqKfNLGHB4XnmuS/avyv7R3gLITl48
b3Yd29K6L9vqBJvBng6QSQFxe7CnntkfKo71yUffq4Nev5GFXeU+zO2/aGuVb9lFpBIszfZL
YgrDgZyO3Ssr9mUPb/suXsjghTa3jcRAdASKtftAWEn/AAykI8Lu+y2wx9p9xS/s1W0lt+zB
eq0YI+yXv/LfP8NTT/gf9v8A6kRjzOx5/wD8E8nL2PjCZd2GuRyYh05rkfgXcRRfti+JS0oQ
faLobjE2flkwP5muy/4J+l2sfF20OFF2MhZeK5v4FGJv2zfFRMUu0T3X3pM/8tfSuySvPEv+
6HL7ql3NT9o67WX9rHwOoUqq+QoaVc5HPTH9a3P+ChxVvC/hbLxLumkyAmP4RWT+0XEp/a28
C+WksbBIASoyAeetaX/BQwN/wjPhXfLMzefLkggDoKqi7zwz8hR/hTOi+McUZ/Yqb5kGNOtT
nDf7PrR+yrEY/wBlud4mjfFveFs8dd1TfHVWH7G4BLAHTrUfLz/d7Un7KqiP9lebeTgwXJHm
x9vmP9RWeJ0wTl3qL80XSXM7HA/8E87GCW68WziIgEx+Y28FT83YdayfAAaH9uzV40aW3jZ7
ljHvGG6fjW7/AME80gF14xk3qoMqjKrgdBisbwNAJP25tckD2/yyXBxIhWTBxjFddX/eMR/g
RnGPLTXqyx+1oCf2qvAqF22g2x6/7ZrW/wCCjMEyeH/BssUsg/eSrjdkfdXtWZ+1VEt5+1d4
CVdjlfs5O44/jNa3/BRaIjQvByptKmaUgK2R91a6KfxYT/Axw+GZ3vxzby/2QJQ+XCWNswz1
B3D1rH/ZBZ1/Zt1u4UeUmbl2I24+6euK2fjuhP7IEy+XHlrO2A55PzVmfsjoD+y5f7QOVvM4
/wB015T/ANw/7iL8xQV7I5D9ga4+2eKvGVzJOlyuI0BhiKqB83Bz1PvXLfB/WHn/AGz9ciWZ
QJr24/dC3Xd0XBBxkVuf8E8JJItX8bxEP8zRKcPjHLVzHwYtTb/tw6yrA7Vu7gZJycDP9CK9
ScuXFYr/AA/oKD5o8x6N+1NqCJ+0L4EsM2bPIYC4mswZSAx/jIqT/goZq6af4E8OBRBGTcMT
50W/PydvQVzH7Vl2bn9qn4fjy3jEf2cZJ4Pzmuj/AOCkIgPgXw6rK3nG7kCFY9w+5XLCXM8C
/wC6yorm5vI7rxVqUNt+xy9201sGbTISMxHaOB2rP/ZJ1Vpf2fr25eaCcp5pDxRFU6H+GofH
MqR/sUJGr+V5mmw5lVcknA4x2rP/AGNTIv7NuskNMWMk4UFeTwa43T/2So/5p3+5kp3nz+Rh
fsLaob/xD4+XzoZQ067hHHtK/O3eud8IXjj9t+8jCxupnnGwIMj5V71pf8E8TH/wlPjlvML7
plJ3jGPnaqHgaaFv279WEUvlyh7jJ8rcPur3rvqy5a9f/Cv0Am/aj1RLX9qfwlaiGHLy2agm
MEj5+celdN/wUBjCeEvB6r5AX7aGJlPOeRx+BrjP2rEhP7V3guR5AJVns/l7/fFb/wDwUejW
48L+CcbW2zyH5jjHGP54rPm5quFfkwPSPi9dSQfsi3Bi8lh/ZkPJAHp2qh+yWqp+ytPIwBPl
XTkdskNmn/GUxwfsgy5KqraXbgY5BOBUP7Lo/wCMTpgGCZguzk9MYbmvOh/uU/8Ar5+p2f8A
LxehyP7AF8Ly98ZnZGGSaPBVAOOa5j4Uz7P22NcXzjEPMn+VUB6BcfzNbX/BPC1KXHjMvOjf
vUIAPsa5j4Mzs/7berpKNqieclj6YWvbfx4v/Av0OL7UfU0P2kdSkj/a48KWoumMJe1bb5Qz
y5749hXS/wDBQq/urbwv4TUXDi3eeRtrRAlm2jAzj61yn7RcLN+2R4VKxoyiSw+YNz94n+Vd
X/wUTy3h3waOTi6k/wDQaml/veG/w/oVL+JI6f4xXtxD+x9bSxERk2drmOaPI+6O1Tfss38n
/DK014yxfJDdlgIwF3A46U348JIn7I9oC8kZ+xWgIH+7VP8AZtt5h+yJqO4NJ/o12VAPP3q8
uNTlwe3/AC9f5mqp3V7nP/sBao+oT+MWnjs1bMDI0dvsJGJOpA5rD/ZtuzeftWeKPMlhUlrh
9qx4LHd71d/4J6SvPfeMVf5VXZyT0OWI/SsP9mqcTftbeJB5jybFuR84Ax8w6V6uJfLUxS/u
3+8xNj46Qw337YfhqzjFnBMXtWEjodzHP3frWz+3/rAttJ8L6ZJHZ3MEhLFnyDkP/erD+MFq
o/bP8HzB5SxuLYkBcgYPPNaP/BQiGKS18IRzSGBTI+XC7iPm44rni+Srhn3i/wBCpQ5qcvVH
Y/tKw2sn7KOnvIIE8uC0Me/JAwF6YpnwYv8A7P8AsYny3iI/s6dsq5AJJY039prEX7KOnKlw
FRYrQFgmCeF6039n9Ih+x9K115syf2dP0T3asZR58PGX98qouV29PyMr/gnzDGnhLxQ0335L
3DNn2NeI/D3x/afDn4q/EfxPa3Ns0dvHcmCWZg0TSM4RBkerMBXR/s1fH2w+DHgfXptT0TUb
+wuLpjHPahQkbLn5GZiMGvWv2ffhl4E+GvhNdVvrXSl8V+JQ2u38F2yT/ZDM3mLHFHJnYkak
EuACxJPAwB7GGwf1qrWlU0Tt8+56NLC1KUaFapC8H5rXy0ueTeOfEemeJf2pvAGvrdKLS/Fr
cJLGQI2MkQxg+5OBXF/8Fb4IxrXgVsE5tpOT9TXpXx68OeCj4i8K/EXTI7Ge/wDCupQXcljZ
SKkdxak7W/dL8qupYOr7eeQT0I8H/wCChvxLsvjDbeDdXt7G/wBGs4Vkgje+jB+0Hklk2kgg
cD6161Kl7LGYdR2img+o1rVK0Y+4n3WnlrbUr/8ABJ+Iv8Z9aO4LjT2GSccnOOTX1X8VIL24
/a68N+Xp949o88cklwU/dkhQOD3r5S/4JQyMnxn1kAEg2BJCgE8H34r7D+LOmQ2f7S3haZ1u
Vubm4TZEYpURkA5xyVJ+lc2Zq+aVV/07Z5D2Mz9v+X7Vb+E4UhL72k2OR5iL86ZyvH863f2r
0a0/ZW06AAzM7Wqjyx3APaof25tPsY4fClzc3iWkUcptvIjgkdnDsD1GADwOasftWPbn9l2w
XcwQPBhj1HymvGpxUcPhLd1+ZpU/iP0H/BlpdL/YruFureSGQabdttOOR9Qa5b/gnTIJfC/i
qYDAN8hx/wAANdD8FYYZP2Lbpd6xo+nXY3lSPzNYX/BOxLeDwt4miV9w+2LlgevyGssTrSxT
fSaJlo4ruYv7MOX/AGq/HmEck/acfL/trWV8Z7NpP24/DWCMloNyd8bDWz+zFHEP2p/G7KyA
skrZ8xsgmQ5/9BFVvivceV+3LoAXynISE5ySfuGtZ1JfXF/17Y3ty9EVP+CgNkJviL4FLsnl
70ZEZclT56c1237d/mj4C6LukH/H1DllGM/JXK/t928dx8T/AABESwZgh4P/AE2Q11f7dPzf
AjSIyyRtHdRD5mOThPpWdJcqwlvNmsfhl6F7QHQfsMvnLD+yWyCMd6i/YPuvtHwf1cBFRYby
XCr1NWvDzMf2GpcyuoGkOcrj1+lZ/wCwUySfCPWXW4knIu5c71Axz+tc9eKeHrX6zQVdo+h5
7+xddqf2gfGyyOqbPNwoU7j+8al8UeWf2+bGIuGJnjbj/rkaX9jJpG/aM8ZsDEAPNGDn/no3
tVvxPFbS/t8WTquHEyAY9oTXoVacY42cVsofoZJ2pL1Jf2+2dviD8P0EhQblxj/roteh/tjr
JP8As2adGitK5lt//QBXnP7erGT4jfD9chfmHzHoP3i1337Zk7x/s36YY2aM+dByP9wVwUlz
SwUXs2/1OiM3KMk+xo+GbURfsYbZomj26N07n5TXFf8ABPnTopvBPih0EmVuy2M/9M67bwmk
x/Yod7hi7nRu/wDumuO/4J4kn4f+KmDFT9rxx/1zrDfC4qXXn/yM5/DH0OP/AGP2Mn7QPi2U
Ibdh9o/e9T/rDT/Er3Un7d1u1vcAkOp2ugAb5R3qt+xaTJ+0X4xhcl0Hn8H/AK6GrOrHzP2+
beEgbDOU49AgNdt28XVf/TtfkQtaT9TX/b5EKeKfAr3EuFMoDIhyM71rs/20pwn7PGmrtAAk
tgAMcDFZn7aviubwr4w+HzLZWOoQecWaG+gEgPzqOPfmtb9uSQT/AADsJwqIJp4GCIAAoxnH
AFcEJtwwKf8AMzaUIqLaE8DXEifsVvIgIQaVLuHr1ql+wHLj4a68ACSt07YHf5Wq/wCAPPuf
2G2SJVMjaRITkduazP8AgnyZE+HeuGQDf9rkGMcY2ms6smqNa3/PxHNHWEZPqed/smQNcftP
eKrlXaIrHcDb35kIqT4pGYftzeH45WMgimgOfX5Gqf8AZNbd+034yOAPll6f9dTT/inIT+3V
oq4H+tgHI/2Wr2qsVHFTS/59lrdFz/gobcO3iLwKAcR4L4/ECvQP2tQB+zDYyFFcGa2wD24r
zr/goRBOPEXgnpNti4VBz98V6H+1u7f8Mq2ZIwyy2xwfoK5MG3OGFjLubOCUpsu/ClZB+xmi
qIwDo0uB9RiuU/4J9ru8BeMBkD/ThyTgf6uu4+E8Ct+xtadfn0SRj+C5rif+CfGR4C8VsOC1
82fwXFW0oRxEVspIypfxF8zC/Yztc/HL4gtuViBKBtOesrVk+JCV/bytFlcMBMBjzSv8I7Vs
/sWzvL8c/iIGIIUvjAA/5atWF4vuHi/b1tApGDdBeVB/hFaz/wB4q/4P0Mo/qb/7ekbyeN/h
4HwYywBGc8bq7n9tSNLf4DWgIyqyW74H0FcN+3uEj8e/D4OojIZcY+b+IV2n7bQum+Am+RUS
JXgCNnJbgdq5YwSjhX5nbLeUeiLMO5P2L4xHCzqdHbkdvmJrA/YEt2T4Ra624KWvJAM9vkrp
PD8rXP7F0m7co/sUjH41hfsEEx/B/WdpOVvnwf8AgFZ1/wDd6/8A18j+Zyp2akuhw/7FEiN8
bfHqhg0gMmSD/wBN2qTU4JZ/28bIu4JQg/hto/Yl3S/G3x+XctzLxgD/AJbt6Cp7qVP+G77f
f146f7tdEv8Afan+B/kdVLYb+3PPbP8AEnwH80TETJuGTkcjNdx+3OIm+BFgkcqOFlQ7WyB9
wVxf7b0yT/EjwJbq21zIuNoHIyPau0/bhBX4H6chLb2mQEKAeNg9aww8I8uEfkznSvKxrWE4
T9jxNotlxpWDuYmsH9jt44P2etUkjEMsqSTs6xkjtXReQYf2P0CvOudLHaMfzrB/Y4llh/Z7
1PZK4LyTgkhc9PpXlTk1RqW/nX5nVGKjscX+wzcQT+P/ABtMSFnO/EbszEfOO1UfC8HmftzX
shWNgJpOileoArX/AGHxMPHfj+QyXDtuI+ZE7sDVPw4GX9uO/BLkBmcbwBzxXdOpL61W/wAK
/IKm0fUj/a7CP+0F4JiEcatE8RJklManHHBPFdj+3lOB8KtHjYRrvlZtwnPHy1zH7Xcfl/tC
eBXcny5ZI1IIBHX3Fdf+3hbGT4YaT/rBsnKgmNcYxV0HeGFfqYVJuLkl5nR60yr+xwkDusch
0lCAZjzxWZ+xuqxfs+3KvIQf3/3ZuP8AVmr/AIlLJ+yO6GKeQx6VGFfYv92s/wDY2WRf2f7l
mE4jPn/eRc/6s1wz/g1f8aL+1D0OP/YXmDeMvGwRmLeacATg9/SqvhC2nX9tzUJJS6DEmMkd
cVN+wtFAPGHjSRHl8wznhoAB19c1F4NuHP7buoowRxiTG6M/416Uv42J/wACNKnwL1If2ob6
6b9pDwDEQ6/vo8MyK3c966v9vmBv+EM8NFiH/wCJgMqUGG4HGMVx/wC1HDBJ+0l4EWZkz5sZ
GdwPU+ldb+31dxReDfClurxFvty9WPTA9q5qT5Pqklvd/kY1PicejZ1X7RIij/ZaDSR+XGsM
BCLBkZ4p/wAB7qO3/Zdu32EqbG7YeVCR1XvUX7RLoP2WW4RyYIsKJDycD16VN8EXib9lGRmD
Ru2l3DMqvkA7fWhaYaLXWbOiEErtdmcR/wAE/wBMaJ4pLhAPtK4Ijbd0+nWuO+BEij9s/wAW
koXbzbsb5kYf8tRXZ/8ABP8AV5fDviiVt6qbsBSJ2wQBxxniuR/Z/Zj+2V4udmQfvbvpOR/y
1HtXZL/mK/wo5n/Dh8zR/aDuYB+174RSKJZW3Q7sOygcH2rV/wCChY/4prwmu3YWnl4Bzjgd
6yPj5Ag/bC8JsDI+9odzrckheD2rc/4KHQsPDvhMoskqieXD5BzwPU0UPiw3oZR/hTOh+N0C
H9j+LaXz9jtF5bH92j9mm5WL9k2aRgQI7O5BBYnOFx/Wl+OpaL9kGIR4z9mtcZ/4DTf2bQ9t
+yHekor7rG4b5kJ5x7VdaKlgUn/OXTbTuji/+CeLrs8XJmQAXCfMAMdBUXwylJ/bS8UQzrDP
KfN2yfZzuH0INX/+CeJe4sfFrSQoim5X5lOD0HY81F8Mjv8A21/FSrbrAnlSsQsrNnke9KUn
KviG/wCRGcJOVNX7swv2p4pYf2svAbK2wE24O5Ovzn1rb/4KMF4tF8E4ZcCWZT+7HXatYf7U
cjSftaeBlCAgG2/iP98+tb3/AAUXHm6Z4LhIw/mzNgHP8K13U98J/gY1omu5337QLi2/ZD2O
QHNpbIOOpyDS/sr2qW/7K8yG08qQw3eSwIDcHmqf7Q8If9koeYSxMFv1PTp0p37KmIf2W5na
RyWhu+WJbHHQV5T/ANw/7iL8yqejR53/AME+yq+JPG64CYeHhQT3asD4UYP7b2tkRKx+03RB
7n5Vrqf+CfESnXfG7pI2TJDnjHrXM/B87/24dcLk4W7u+R/urXqzipYrFX/l/Qyp/B8zX/at
glf9qHwSqjazLbEMex3muk/4KHRTD4d+Gg5Vtl3JuOcE/J2rnv2oZI/+Gr/BUaTO+4W5IYf7
Rro/+CiTRt4F8NpIUUPcOd8hIUEp61yxSUsCl2Zadr26nQeObG4j/YngjsXkFz9hiJEeHJ4F
X/2UopLT9miScxXLyNFO5BT5yRkGqnxAk+zfsbw2ksyr/oMOLiFsKOBwDwat/ssIyfssszqc
G2uirmUkt970PFZVFbCtd5P8xJW0PO/2BImj1/xmTDMh3Jnzl25+d+lZnwwAb9ujxJGzOJFN
wykYIHyrWh/wT7YXmqeM5JFBbdH3J757n3NUfhREsv7cniVwPLcLc8n7vRaqo+atiG+kUMz/
ANqCJl/a08GqYz5LT2eHbv8AP2rp/wDgoYnlaB4SD/MplbaB2+YVzX7Samf9r3woruxSOaz2
rngfNXT/APBQ/wDeeHfCZP8ADO4H/fQp0VzVsOn/ACsDs/j0oT9kBQBx9gt/6Ufstpv/AGU2
U45tLocjP96pf2gY2T9kJNqZH9n23JbHpUP7Mrm3/ZRJXr9kuuv/AAKvNpu+FlH+/f8AE7F8
a/wnH/8ABPa3T+zPFzsqPILtATtA42t6VyfwSjS5/bV14BAhVrnp9Frtf+Ce0Y/sTxY/OWvI
8/8AfLVyfwQhWL9uDxIgzhRcEZ+i17j/AImL/wAC/Q4ftR9Sr+0QDB+2f4WUqgVprJ93PABY
V2P/AAUOBPh7wcQMr9pk+b8BXO/tC2UT/tc+Gbx5xJIk9nGsSr05Y8/jW/8A8FCXL6T4Pjzh
PPdsD1yo/rU0v97w3+H9C5fxJHYftC2sd1+ynaq4Gfsln8xP+wKh+AWmRW37It55SqzCzusk
E4+9V/8AaHihj/ZPgMglx9mtVBTHXaKr/s9j7H+yBes2fmsrrG7r1rxP+YR/9fX+Z1R+E8+/
4J5wLbyeN0eOIyebEN2cDhXB/nXP/stwhv2uPFYUIuBcZ2HP8VdN/wAE/iRJ47kBwwmUjj/e
rmf2Upnl/av8VyMRuP2gdMD71e7iUnXxKf8AIjjNX4uXEkX7bHheCSYyRrLARGZdoXOO1a//
AAUIKyL4QyykK7sQGBJ+bFZvxiiH/Db3hg5P37XsPX6Ve/4KAme6vPB8MGHR2YEEAH7/AK1x
SbdXDL+6/wBDpprmi4vY7D9qO0juv2WNMwWQCOz5Xr0Wn/Cq4S3/AGMXEPmysNNmG58ZPWnf
tTH7J+y5aRvmNljtNuMNnAWnfB+MQ/saAj97NLpkxCY+varj/usf8ZnVd2fNPwt8JeO/H/7O
njXw38P9Ksb7VNQvlMs+o3hg8hEO8GMbTudmUKMkAZOTXpHw6v8Awt4s1/wn8TtT0q4m8dJo
8P2p2Oy3iu4k8li8R/5ag7vl6AHkcV0n7E1lq+nfCvxtNZ2hl1TzX+y2rkIPM2nbls8DPWvl
G/uvEHgjxTqlvp98VSS7awmcqSsN06kxzYzjazIUYHqZF6V9Jgqlq1TDxstb36/P8LHp4KMX
RXNL3m7KPrv6dFrvsdZ8ZbazbXNeg8CaVLH498USRWMMbSb4f38ylzEOiZPLE8LycgCub/b0
07xfpXgD4VaP4003TdM1vSrI2LNpV0biC4RBtWUFlUqWxkg9888074U6XrOvfFrRtS050kub
26km0w3kh3yC3k2b2bnHmPHIeOApXHFd7/wVdLmfwEZV8uTyG3LkHaecjIrqdd/X6VDR2u79
f+G/U0xMYqEXGd3qmuzWn4rZ/LocL/wShktIvid4gaa2865NoPLO7nH+73r7G+Il1Z2v7Rfh
vVrm0a5eG1Fvvct5cTMeoxxkADPpketfk38H/EOq+Hzqr6Xqd5prlQN1pO8R/NSK9fPxO8Yx
6UgTxZrihiNwXUphn6/NXp1sNCri51Jb2PCWx+hn7U3w+uPipN4UWG+tbKxEjSNFO0oiY544
VSFPu1Q/tOeDtZ1D9nd7Gytxqj2KxOw04mYhVUgnC54FfFepfEXxWdLwfE+skKq4H9oS8cf7
1clofxL8X6ZDLJZ+KtbtH3H5oNRmQ/mGrhp4OnNU0+jYz79+Cccv/DHFzbTGeInTZ12Asp3E
dMYPU1gfsIwQ2Xh3xPLPHJbXqybEW6dxkBeoQ4z164r4q0/4xePrm6jt5vG/iOWADiJ9WuCv
5F8V1mlfFTxrbSyeV4v16LMQ+5qc4/k1cNTAU406i/m3A+lv2WX3ftJ+MmZriW5UT7xgRoo3
MQMn9KqfEJvM/bu0OSVmMHBHmYZAAmM7vqcfjXgcfxP8ZRaXPKni3XUlfh3XUpgzD3O7mum8
BePvE+qXEEl54j1a7kjbKPPfSuV57EtxRVy+kpup15f0A9b/AG4XDfGb4dvnzYt6xuEKnafN
THX8fyrtP28XjPwR0krOVWK6UFCoc42EAn0+teZWetahqeo3Et5f3N3LG/yPPMzsvA6Eniuh
0LWL/X0a31S9uNSgVuIruVpVH4MSK5qeBpr6rLyYHW6JJGP2JrkGRVVdGPbODn0qr+wQ4m+E
GqKsnm/6bNwB+dcj/bWoC9nshf3Is/Kx9n85vL6j+HOKrX+u6lod1LFpuoXWnxNeNlLWZolP
HopFcdbCQjQr2/nQDP2MLw/8Lu8fwYdFDShpMqGH7xuAetQ+I7tW/wCCgdioUKoZGPGAP3R5
rpvD97cabo13d2k8trdTRnzJ4XKO/wAx6sOT+NS6jI48WLe72+2eXH/pGf3n3h/F1rrlQjLE
zv8AyfoBzH7esqP8QfAiiUAnDAAbs/vU5/nXoH7aF6kP7PulREhxJNCdxHQbR+lcF49u59S1
PSJLuaS6kjiTY07lyvzHoT0rX+KeoXWo+E7C2u7ma6txNH+5mkLp90djxWdHA07YV+v5gd7o
lwqfsandIAn9jcZPHC1yP/BPe8iuPhr4pcBI2F23AwD/AKvrWA+sX/8AwgUNn9tuPsn2Fh9n
81vL/wC+c4rjvgzq9/pOlapHY3txZxvO29beVkDcdwDzUVMLCNHEpfzL9ANX9i+7SP8AaJ8Y
oADIizb/AFGZD1q5rFxF/wAN5wOhVmWQNgHJztFcZ4Mv7rSviFq1zZXM1ncSRHfLbuUdvm7k
cmuWTWL/AP4XdcXn225+2B3P2jzW8z7v97Oa7VhoPHVP8C/ID3L9vC8EHjnwDMJMt5wKxhuo
Lr2rtP25bjz/ANniwmJwDLbHntwM18r/ABi1/U9T1zQ2vNRu7sxkFDPOz7fmHTJ4rrviVr+q
an4IMV5qV3dxDbhJ52dRwOxNeVh8DT5sL/iYczPefA90kH7EEhWURt/Y56Ng4rN/4J93AHwr
8QvkSP8AaZcHqfumvmyz8UaynwsurNdXvltPs7p9nFy4j27zxtzjHtVT4G+JdX0zwfMLPVb2
0DTtnyLh0zwfQ1c8JTjSnb+cD139ju5Fx+0Z4yyf3gEox3/1hqz8RnVv29vDqswOZYmIPdQj
c/Svl/wJ4o1mx+JesS2+r31vKwbLxXLqx+c9wa0NX8Q6rL8YdNvH1O8e8CL/AKQ1w5k+6f4s
5r1Z4eH1qX+AD6Y/4KF3BtfFHgZlkMRIK5DYzlxxXov7YTo37LdorOEBe1cuTjjA71+fv7Qv
irWtW1nR2vtYv7xkB2G4uXcr9Mnip/jb448R33wkt7a51/VLi28uH9zLeyMn5FsVxxwFNfVr
PqO5+jfwtYL+xtAWATbohHPGOMGuB/4J8yK/w68VOrAoL2TLA8D5a+NfCPjfxFD8HoraPX9U
S2/s6QeSt5IE/Ldiuf8Agb4x1/R/DeuRWGualYxNdtlLa7kjU8egIrF4SEaFez+0I+y/2KdV
3fGj4irHGjBWkDuBkj963esjVbgv+3tZqipIv2pj+8AJ/wBWPX3r4r+EPi3XdO8b+LpbTWtQ
tZZCd7w3UiM3zdyDzVO88Va2Pjql7/bF/wDbdx/0n7U/mdD/ABZzW1TCL61L3vsfoB99/t2i
Q/Eb4f4DbCyDA6ffFd5+3J5afA2DO1V86LP6YzX5jfGfxjr+o654flu9c1K6ljb5Hmu5HZee
xJ4rQ+MfjjxHqPgqOK78QapdReanyTXsjjp6FqUcEpRwkHLS/Ydz9N7ZJ1/YyHkghTo3GCoz
yfWsD9gbMvwX1LEpdmvpcgJnPy46/Wvzit/HfiVvhItofEOqm1+ykeQb2XZjJ/h3YqL4UeM/
EGjeDLmLT9d1KxjLH5La8kjHT0BFRWwEY06tn9tE3Pu39iE7fjX8QQW2ENKp4zz554/UfmKu
7E/4bwjL4fGBllxj5TX51/DHxlr+n+JtVltdc1K2lkY73hu5EZvnHUg81YvvGOvj4txXv9ua
l9syf9I+1yeZ0/vZzV1sDfGzlz/YfTyHzWP0Q/bVnij+J/gAHyhL5qBf3JLYyOhrtf26SZfg
hYgghhcJyYeR8g9q/LT4m+Mtf1DWtIlutc1K5ljJ2PNdyOy/Qk8VN8SPHnibUtCjhvPEWrXU
Xmf6ue+ldfujsWpU8BphrT2T6E8zP1XuLlbb9jtNrRmQ6YMmRCABWV+yC0X/AAz3cNvESl5i
QY+mR71+Xtz478Snwa9ofEOqm1+yqPI+2y7Mf7u7FV/CPjbxFZeFJ4rfX9Ugi3fcivJFXp6B
qwqZVGWHlHn+0unmPmZ+j37EVuG8ZfEAgBwbj5cw4BGR3B6VleFwG/bl1HaIzuZ8YDc9MV+b
/gPxn4g0+/v2tdd1K2aQ/OYbuRC31weatad4x1+PxY12uuakt3g/vxdyB/8AvrOa2q5TFV6k
lPddhqtJaH6Q/tcSM/7Q/gCB4l2rLGdzI+OuTXWft3Ih+F+lMVi2fawSSrYxkV+Uvijxr4hv
dcsJ7jXtTnnQ/JLLeSMy89iWyKh8W+PPE2p6VaxXniLVruLcfknvpXX8i1VTyOKjh0qj0v0/
4JPNzavqfsB4vltI/wBkGMsyDdpa7THuAP1rN/ZMkhP7N10waEgRzckMQDtI7c5r8nZ/HXiV
9C+yt4h1VrX7KB5BvZdmMn+HdiqmmePfE2n6PLb2viPVra32/wCqhvpUT8g2KI5LFU5Ln+0n
t/wSvaOGqP0//YcEkXiLxw+xY0FzgOC/HPbNR+AJGP7a2uOykAF8S+aD17YPSvy28O+MNe06
e7e01vUbZ5JgXaG7kQsffB5qI+KNZTX7i+XV75b1pRm5Fy4kPB/izmupZMlWnL2m6tt/wRvE
S7H6oftLykftL+AQzyZEibgWXjk4zW1+30pk8N+ECAWdbwbyOWHzLjNfkjrHizXL7VIZ7nWd
QuJ0cbJZbp2ZfoScineJfGfiDUI4Rda7qVyA/wDy2vJH/maVPI4qpTfPsu3/AAQeIl2P2V/a
gdJf2XplVzs8mAkfKwxt9BUXwKMZ/ZBbYysP7NuAuFA6rwK/GvWfG3iK800QT69qc8G1P3cl
5Iy/kWxTbLxt4is9GNvBr2pwW/l/6qO8kVPyDYpvh+E8PCLqPSV9v+CL6zI/Wj/gn5KE8L+J
gkXIvPmKrz05rj/2e7qBv2v/ABoCXDCa5/1ibcZkz1+lfmL4e8Ya9p8Fytrreo2wZvmEN3Im
frg1HofijWYdZubiPVr5J2R8yrcuGPHrnNavJI8+IfP8SS2/4IfWJbWP1M+Oqr/w2T4RSQDO
YsBx7Gtz/godCg0HwhlFwbiQdPUDFfkzqXivW7nUY7mbWL+W4TG2Z7py6/Qk5FQat4u13UYI
Vu9a1G6VXJUTXUjgH2yaulkcYuk1P4VZaf8ABByvqfs1+0HLEP2SyqOgItbYYBHBG0H9eKg/
ZoaG4/ZDuBK8bn7DcgB5AOcCvxuv/FmuS6RFA+s6g8P/ADza6cr+WaSx8Wa5Bp5hj1nUI4tk
n7tbpwv5ZpLIU6Li6r+K+3/BEsRLsfrH/wAE7litIfFqtsjY3AYZYZIwOc1D8IIooP20/F8n
mpCnkyZUMCDkjGTX5PaZ4n1nT/O+y6tfW24c+TcumfyNFv4j1aHV57mPVL2O4YczLcOHP45z
VyyWMq05ue8bbf8ABE6rlpY/Uj9qq4hg/al8EOdh2vbgk44+c1s/8FELqO703wQsJQMZ5F3I
RnJVeOK/Jy78R6td6gJZ9UvZpVYYeS4dmH4k0zUPEOq6i6/a9TvLrbIcedO74/M11QypKNJc
/wAC00/4IXP2i/aVuLFP2T1jW9tUlEFv+7WTczHAPrxT/wBl/UbKL9lmJDdQJI0N2NvmKCcq
cV+MTeJtYubX7PLqt9LBuH7p7lyv5E4qKx8QapaWkcUGpXkMWD8kc7qv5A1wzyKM8P7Jz0vf
b/gjWIl2P1p/4J+X9pbyeL3nuYYmNwo3SSAE4HPX0z+tcl8Gb60T9tTxBM8kAj8y5IlaYAZy
oz19jX5d6XrOoWTy/Z765g3A58qZlz+Rplnq99FevKl7cJKTy6ysG/PNdcsii3U/ePWKW3/B
G6rlpY/WD9pmaO4/ae8DXUciSQL5IaZWBUYY8E1sf8FEdSsrjwN4Z8u6gkZbkg7ZFJGU4r8j
LnWtRu5oHnv7qZx0aSZmP5k07VtYv7y3hWe+uZ1HQSTMw/U1yrIY+2oT9q/cTtp/wRczP2X+
KuraVL+x0Y5LuOST7BAuzzQTuAGRjPWof2VNf0q2/ZWvAt9Csix3assswD87sA5Oa/Gy61nU
JLaGJr65aLH3DMxX8s1JZ6zqEVtKiX1yib2+VZmA6emadXJIzo8jqdb7efqCrtdD9Uf+Ceni
GwtrvxkLq4iid3j2BpACcdcflUfwl1zTW/bX8VTte262xWfY0kqheVXGCT3r8qdL1W9tHn8i
8uIcjny5WX+RpsOrX0d0JVvLhZcH5xKwbqe+a2WRwlKrGU73S6f8EftXPRo/U34/61ptz+2F
4Ykj1K2mhSa13srKVGDk5PbFdR/wUC1/SbrRPCoh1OzcC4JPlyo/G4Hsa/Ia51S9luGle7ne
TP32lYn881NqmqXl2IPPu55sL/y0kZv5mhZBCnWoyhUa5U1tv+Ie1cNEj9l/2kvEekzfsq28
MGqWcsj2tuFRJl3MBjOAD2pf2dPEmk2n7LMkEmrWiTLaXI8l5FDc7sDGa/GW91W9ltole8uH
UKOGlYj+dMtdVvY4diXk6p/dWVgPyzWUOH6ahbn+1fbz9Q+sS7H69/8ABP3xTpFponipLvUb
K0P2pSBNOiZwrZ6ntXK/BPxXpFr+2R4gnn1Cyjt5GuMXUkyBWyFwNxOO1fltYX9zExCXEqA/
3XIpyyOszOGYP/eB5/OuyWRUfb158z99JMVz9Svjx4osJP2xvCoiv7FrQT2jSTJMhXaM5yc4
7/rW7+3z4m0bUrXwctpqtjdbZSGENwj4JGRnB9v0r8kZb24kvUZ7iVmHQlyTT7q8uJZl3zyP
gfxOTWUMhhRqU5RqPRPp/wAEaquPQ/ZD9ovxpoFx+yzp8MOtafdXAt7VTarcxsSwAzkA7sjv
U3wY8aaC/wCyc1qNa020u1srjdaSToCCTkDBOea/Gu5upntkDSuwz0LGoWvLhLZ1WeRQTyA5
rWOQUFhVDm+3fYbxEux+sv7Bvjjw9pcfjY3+p6XZSNPuUyXSqGA3dNxwRXK/sy+MNDtP2pfE
15c6rYWVtKZ9jy3CIjfNxgk45r8x7a5mAwJXAx0DGlido5d6MUfP3lOD+dXLIqMlVfM7yRy0
5uLufqf8XvGfh+X9tLwpeprmnPZKYt1wt0hjGMdWzjitL9urxf4e1STwktl4h0+ciYhmgnjb
aC/GcHivyd8x3fezMzhvvE5P50wzSTSJvkZ8f3iTUy4foc9OfM7qNjp+sS7H7G/tQ+MPCuof
s42drF4h0m/u1W2XyVuYmfChcnGc/wD6qf8ACX4i+FtJ/ZFa2GvaTHqS6fKgt3u4g6nJwAuc
g1+O1zK7wpudmyT1OaiuJpAkiCRgnHy54/Kphw7QWHilN6Sv/Wo3iJdj9cf2FviP4bsPCfiQ
6p4k0mGeS63KLq8VWZcHJG5uRXzP4s8RaPe2Pxrmg1Gw+2QxrqNiBOgaWSC7imXZzlj+7PT3
r4ls5HQ/KzL9DipLJ2DEhiDu6g1vTyWjRrzrqTvp+DOSnUlGaaP0f+FA0LQfip8NANW0hLDS
dJsoLm4l1GIFWFsm8EbsA792ffNcv/wVL8faH4n1bwfFoWrWGqwwRPvNlcpMyE54baTj8a+B
752E7MGIbPXPNQXPzy5b5jjvXoYfLKcasKl9UvzLq1pTtc//2Q==</binary>
</FictionBook>
