Это список ошибок, генерируемых компилятором при обработке неверного кода. Определенная часть этих ошибок регистрируется только при работе в строгом режиме. В строгом режиме в силу вступают три дополнительных ограничения:
- Выражения имеют статические типы, а ошибки, связанные с типом, являются ошибками проверки.
- Дополнительные правила проверки способны улавливать обычные ошибки, допускаемые при программировании.
- Ошибки проверки выводятся поверх всех остальных. Это ошибки проверки выводятся только в строгом режиме:
- Соответствие подписи вызова функции — проверяет число параметров и их типы.
- Конфликты повторяющихся определений.
- Несвязанные ссылки — возникает при обращении к методам или свойствам, которые не были определены во время компиляции.
- Динамическое добавление свойств защищенным объектам.
- Запись в постоянные переменные.
- Удаление фиксированных свойств.
- Выражения сравнения с несовместимыми типами.
- Ненайденные пакеты.
Код | Сообщение | Описание | |
---|---|---|---|
1000 | Неопределенная ссылка на %s. |
Возможно, ссылка дана на несколько элементов. В следующем примере используются пространства имен rss и xml , каждое из которых задает разное значение для функции hello() . Инструкция trace(hello()) возвращает данную ошибку, так как она не может определить используемое пространство имен.
Исправьте ссылку так, чтобы она ссылалась на определенный элемент. В следующем примере для указания используемого пространства имен используется форма пространство имен::функция:
| |
1003 | Использование спецификаторов доступа с атрибутами пространств имен запрещено. | В определении нельзя одновременно использовать спецификатор доступа (например, private или public) и атрибут пространства имен. | |
1004 | Пространство имен не найдено или не является константой периода компиляции. | Неизвестное пространство имен или оно является выражением, значения которого во время выполнения отличались. Проверьте правильность написания пространства имен и правильность импорта его определения. | |
1006 | Выражение super может использоваться только в методах экземпляров классов. | ||
1007 | Инструкция super может использоваться только в конструкторах экземпляров классов. |
Инструкцию super нельзя использовать в статических членах классов. Инструкцию super можно использовать только в статических членах классов.
| |
1008 | Неверный атрибут. | ||
1010 | Атрибут override может использоваться только в определениях свойств классов. |
Ключевое слово override нельзя использовать в блоке функции.
| |
1011 | Атрибут virtual может использоваться только в определениях свойств классов. |
Атрибут virtual нельзя использовать для объявления свойства, которое не принадлежит классу (например, при объявлении переменной в блоке функции).
| |
1012 | Атрибут static может использоваться только в определениях внутри класса. | ||
1013 | Атрибут private может использоваться только в определениях свойств классов. | ||
1014 | Атрибут intrinsic больше не поддерживается. |
ActionScript 3.0 не поддерживает ключевое слово intrinsic .
| |
1016 | final является базовым классом. |
Суперкласс не может быть расширен, поскольку он помечен как final .
| |
1017 | Определение базового класса %s не было найдено. | ||
1018 | Повторяющееся определение класса: %s. | ||
1020 | Метод, помеченный как override, имеет приоритет над другими методами. | ||
1021 | Повторяющееся определение функции. | Нельзя объявлять больше одной функции с использованием одного и того же имени идентификатора в пределах одной и той же области видимости. | |
1022 | Не удается заменить средство доступа final. | ||
1023 | Недопустимое замещение. | Функция, отмеченная как override, должна четко соответствовать параметру и возвращать объявление типа функции, которую она замещает. Она должна обладать тем же количеством однотипных параметров и объявлять одно и то же возвращаемое значение. Если же какие-либо из параметров являются дополнительными, то соответствие все равно должно соблюдаться. Обе функции должны использовать один и тот же спецификатор доступа (public, private и так далее), а также атрибут пространства имен. | |
1024 | Замена функции, которая не предназначена для замены. |
Если метод класса замещает метод в базовом классе, то следует объявить этот метод явным образом с использованием атрибута override , например:
public override function foo():void{}; | |
1025 | Не удается переопределить метод final. |
Операция расширения данного метода не может быть выполнена, так как в базовом классе он помечен как final .
| |
1026 | Функции-конструкторы должны быть методами экземпляров. | ||
1027 | Функции не могут одновременно быть static и override. | ||
1028 | Функции не могут одновременно быть static и virtual. | ||
1029 | Функции не могут одновременно быть final и virtual. | ||
1030 | Необходимо указать имя массива аргументов переменных. |
Определение параметра ...(rest) указывает на то, что все значения, стоящие после ...(rest), включаются в массив. Необходимо указать имя данного массива как в выражении function foo(x,...(rest)) .
| |
1033 | Виртуальные переменные не поддерживаются. | ||
1034 | Переменные не могут быть собственными. | ||
1035 | Переменные не могут одновременно быть final и virtual. | ||
1037 | Пакеты не могут быть вложенными. | ||
1038 | Цель инструкции break не найдена. | ||
1039 | Цель инструкции continue не найдена. | ||
1040 | Повторяющееся определение метки. | ||
1041 | Атрибуты не являются вызываемыми. | ||
1042 | Ключевое слово this не может использоваться в статических методах. Оно может использоваться только в методах экземпляров, закрытиях функций и глобальном коде. |
Ключевое слово this нельзя использовать в статическом члене, так как this будет находиться вне контекста.
| |
1043 | Неопределенное пространство имен. | ||
1044 | Метод интерфейса %s в пространстве имен %s не реализован классом %s. | ||
1045 | Интерфейс %s не найден. | ||
1046 | Тип не найден или не является константой периода компиляции: %s. |
Класс, использованный в качестве объявления типа, неизвестен или является выражением, значения которого во время выполнения отличались. Убедитесь в том, что вы импортируете верный класс и что место расположения его пакета не изменилось. Также убедитесь в том, что пакет, содержащий код (не импортированный класс), определен верно (например, проверьте, не использовали ли вы синтаксис пакета ActionScript 2.0 вместо ActionScript 3.0).
Это также может иметь место при обращении к классу, который не определен в используемом пространстве имен или не объявлен как public:
Если используется Flex Builder 2 и класс содержится в библиотеке, то в проекте необходимо указать путь к данному классу. | |
1047 | Инициализатор параметра неизвестен или не является константой периода компиляции. | Значение, использованное в качестве значения по умолчанию для этого параметра, не определено или во время выполнения принимало другое значение. Проверьте правильность написания инициализатора, а также проверьте, не является ли значение инициализатора выражением, результат вычисления которого во время выполнения мог отличаться. | |
1048 | Невозможно использовать метод в качестве конструктора. |
Невозможно создать экземпляр метода класса. В выражениях new можно использовать только глобальные функции.
class D { function xx() { return 22; } } var d:D = new D(); var x = new d.xx(); // error, method cannot be used as constructor function yy() { this.a = 22; } var z = new yy(); // no error, global functions can be used as constructors. | |
1049 | Недопустимое назначение переменной constant. | ||
1050 | Невозможно присвоить значению, не имеющему ссылку. | ||
1051 | Возвращаемое значение должно быть неопределенным. |
Попытка использования инструкции return в пределах метода, объявленным возвращаемым типом которого является void .
| |
1052 | Инициализатор константы неизвестен или не является константой периода компиляции. | Значение, использованное для инициализации константы, не определено или во время выполнения принимало другие значения. Проверьте правильность написания инициализатора, а также проверьте, не является ли значение инициализатора выражением, результат вычисления которого во время выполнения мог отличаться. | |
1053 | Типы средств доступа должны совпадать. | ||
1054 | Тип возвращаемого значения определения установщика должен быть не определен или иметь значение void. |
Невозможно задать возвращаемое значение для функции установщика. Например, в нижеследующем примере содержится ошибка:
public function set gamma(g:Number):Number; В следующем примере ошибки не содержится: public function set gamma(g:Number):void; | |
1058 | Свойство только для записи. | ||
1059 | Свойство только для чтения. |
Это свойство определено с помощью функции получателя, что позволяет получить значение этого свойства. Для данного свойства определенная функция установщика отсутствует, поэтому оно является свойством только для чтения.
В третьей строке следующего примера содержится ошибка, так как для class D { function get xx() { return 22; } } var d:D = new D(); d.xx = 44; // error, property is read-only | |
1061 | Вызов, вероятно, неопределенного метода %s посредством ссылки со статическим типом %s. | Вызов неопределенного метода. | |
1063 | Не удалось открыть файл: %s. | ||
1064 | Недопустимые метаданные. | Метаданные не распознаны. | |
1065 | Атрибуты метаданных не могут содержать более одного элемента. | ||
1067 | Неявное приведение значения типа %s к несвязанному типу %s. | Попытка преобразования объекта в тип, преобразование объекта в который не поддерживается. Это происходит, если класс, в который производится преобразование, не находится в цепочке наследования преобразовываемого объекта. Эта ошибка возникает, когда компьютер работает в строгом режиме. | |
1068 | Не удалось открыть включенный файл: %s. | ||
1069 | Синтаксическая ошибка: ожидается определение или директива. | Проверьте синтаксис в текущей строке. | |
1071 | Синтаксическая ошибка: ожидается ключевое слово определения (например, функция) после атрибута %s, а не %s. |
Эта ошибка возникает, когда программист забывает включить в объявление ключевое слово «var» или «function».
Эта ошибка возникает, когда компилятор обнаруживает неожиданный символ. Например, такое использование функции trace() является неверным из-за отсутствующих кавычек (пример правильного синтаксиса: trace("hello") ):
trace "hello" | |
1072 | Синтаксическая ошибка: ожидается xml перед пространством имен. |
Примером правильного синтаксиса инструкции является: default xml namespace = ns. Отсутствует ключевое слово xml (обратите внимание на регистр) или использовано неверное ключевое слово. Дополнительные сведения см. в описании директивы default xml namespace.
| |
1073 | Синтаксическая ошибка: ожидается предложение catch или finally. | ||
1075 | Синтаксическая ошибка: ключевое слово each нельзя использовать без оператора in. | ||
1076 | Синтаксическая ошибка: перед идентификатором ожидается открывающая круглая скобка. | ||
1077 | Ожидание CaseLabel. |
В этом месте блока переключателя компилятор ожидал инструкцию case . Следующий блок переключения неправильно включает вызов print перед первой инструкцией case :
switch(x) { trace(2); case 0: trace(0); break } | |
1078 | Метка должна представлять собой простой идентификатор. | ||
1079 | Выражение super не должно иметь более одного операнда. | ||
1080 | Ожидание инкрементного или декрементного оператора. | ||
1082 | Ожидание одиночного выражения, заключенного в скобки. | ||
1083 | Синтаксическая ошибка: %s не ожидается. |
В строке кода отсутствует некоторая информация. В следующем примере не хватает какого-то выражения (например, еще одного числа) после последнего знака сложения:
var sum:int = 1 + 2 + ; | |
1084 | Синтаксическая ошибка: ожидается %s перед %s. |
В этом месте появление данного выражения было неожиданным. Если в ошибке говорится об отсутствии правой фигурной скобки в конце программы, то это означает, что не поставлена закрывающая фигурная скобка (}).
Если в ошибке говорится об отсутствии левой фигурной скобки перед символом «_», то это означает,что вы не поставили в условном выражении открывающую фигурную скобку (см. следующий пример, в котором умышленно допущена эта ошибка):
| |
1086 | Синтаксическая ошибка: ожидается точка с запятой перед %s. | ||
1087 | Синтаксическая ошибка: в конце программы обнаружены лишние символы. | ||
1093 | Синтаксическая ошибка. | ||
1094 | Синтаксическая ошибка: строковый литерал должен быть завершен до разрыва строки. | ||
1095 | Синтаксическая ошибка: строковый литерал должен быть завершен до разрыва строки. | ||
1097 | Синтаксическая ошибка: достигнут конец ввода до закрывающей кавычки строкового литерала. | ||
1099 | Синтаксическая ошибка. | ||
1100 | Синтаксическая ошибка: в XML отсутствуют подходящие теги начала и конца. | ||
1102 | Невозможно удалить потомки super. | ||
1103 | Повторяющееся определение пространства имен. | Неоднократное определение пространства имен. Удалите или измените повторяющееся определение. | |
1104 | %s | ||
1105 | Целью назначения должно быть контрольное значение. | Можно присваивать значения переменным, но не другим значениям. | |
1106 | Операнд инкремента должен быть ссылкой. | Операнд должен представлять собой переменную, элемент массива или свойство объекта. | |
1107 | Неверный операнд инкремента. | Операнд должен представлять собой переменную, элемент массива или свойство объекта. | |
1108 | Неверный операнд декремента. | Операнд должен представлять собой переменную, элемент массива или свойство объекта. | |
1109 | Ожидание выражения. |
В части кода отсутствует выражение. Далее приведен пример с этой ошибкой (в инструкции if отсутствует условие):
| |
1110 | Отсутствует имя тега XML. | ||
1111 | Файл %s не является верным файлом ABC. | ||
1112 | В вероятную непрерывную рекурсию из-за данного файла входит: %s. |
Файл, включенный в компилируемый исходный код, содержит дополнительные инструкции include , что может привести к возникновению бесконечного цикла. Например, следующие файлы, a.as и b.as, включают друг друга, что приводит к этой ошибке.
В файле a.as содержится строка, включающая файл b.as: import foo.bar.baz; include "b.as" trace(2); В файле b.as содержится строка, включающая файл a.as: include "a.as" | |
1113 | В %s обнаружена ссылка типа circular. |
Класс пытается расширить суперкласс. Например, класс A не может расширить класс B, если B наследуется от A:
| |
1114 | Атрибут public можно использовать только в пределах пакета. | ||
1115 | Атрибут internal можно использовать только в пределах пакета. | ||
1116 | Определенный пользователем атрибут пространства имен можно использовать только на верхнем уровне определения класса. | ||
1118 | Неявное приведение значения статического типа %s к вероятно несвязанному типу %s. | Вы используете значение с неожиданным типом, и не существует неявного приведения к типу для его преобразования в ожидаемый тип.
Возможно, вы использовали супертип там, где ожидалось использование подтипа. Например:
В последней инструкции содержится ошибка, так как здесь происходит попытка присвоить объект типа A переменной типа B. Аналогично, далее определяется функция
Кроме того, следующая инструкция порождает ошибку, поскольку возвращенное значение функции
| |
1119 | Доступ вероятно неопределенного свойства %s посредством ссылки со статическим типом %s. |
Вы пытаетесь получить доступ к свойству, которое для указанного объекта отсутствует. В следующем фрагменте кода содержится данная ошибка, так как в объекте int отсутствует свойство под названием assortment :
Эта ошибка возникает, когда компьютер работает в строгом режиме.
| |
1120 | Доступ к неопределенному свойству %s. |
Вы попытались получить доступ к неопределенной переменной. Например, если переменная huh не была определена, то обращение к ней приведет к этой ошибке:
Эта ошибка возникает только тогда, когда компьютер работает в строгом режиме.
| |
1121 | При определении получателя параметры не требуются. | ||
1122 | При определении установщика требуется исключительно один параметр. | ||
1123 | При определении установщика дополнительные параметры не требуются. | ||
1124 | Тип возвращаемого значения определения получателя не должен иметь значение void. | Функция получателя имитирует переменную. Так как переменные не могут быть типа void, то и объявлять функции получателей с возвращаемым типом void нельзя. | |
1125 | Определенные в интерфейсе методы не должны иметь тело. | ||
1126 | В функции отсутствует тело. | ||
1127 | Атрибут %s указан несколько раз. |
Вы несколько раз указали атрибут в пределах одной и той же инструкции. Например, выполнение инструкции public static public var x; приводит к этой ошибке, так как в ней дважды указывается, что переменная x является public. Удалите повторяющиеся объявления.
| |
1129 | Повторяющееся определение интерфейса: %s. | Удалите или измените повторяющиеся определения. | |
1130 | Конструктор не может определять возвращаемый тип. | ||
1131 | Классы не должны быть вложенными. | ||
1132 | Атрибут final может использоваться только в методе, определенном в классе. | ||
1133 | Атрибут native может использоваться только в определениях функций. | ||
1134 | Атрибут dynamic может использоваться только в определениях классов. | ||
1135 | Синтаксическая ошибка: %s не является допустимым типом. | ||
1136 | Неверное число аргументов. Ожидается %s. |
Число предоставленных аргументов расходится с числом аргументов, ожидаемых функцией. Например, далее определяется функция goo с двумя аргументами:
class A { static function goo(x:int,y:int) { return(x+y); } } В следующей инструкции содержится ошибка, так как аргументов на этот раз три: A.goo(1,2,3); | |
1137 | Неверное число аргументов. Ожидается не более %s. | ||
1138 | Требуемые параметры после дополнительных параметров запрещены. | ||
1139 | Объявления переменных в интерфейсах запрещены. | ||
1140 | Тип данных параметров, указанных после ключевого слова определения параметра ...rest, может быть исключительно Array. | ||
1141 | Класс может расширять только другой класс, но не интерфейс. | ||
1142 | Интерфейс может расширять только другой интерфейс, в то время как %s является классом. | Попытка расширения класса с помощью интерфейса. Интерфейс может расширять только другой интерфейс. | |
1143 | Атрибут override может использоваться только в методе, определенном в классе. | ||
1144 | Метод интерфейса %s в пространстве имен %s реализован несовместимой подписью в классе %s. | Подписи методов должны полностью совпадать. | |
1145 | Собственные методы не могут иметь тело. |
Ключевое слово native нельзя использовать, так как оно является зарезервированным.
| |
1146 | Конструктор не может быть методом получателя или установщика. | ||
1147 | Исходный файл AS не указан. | ||
1149 | Инструкция return не может использоваться в статическом коде инициализации. | ||
1150 | Атрибут protected может использоваться только в определениях свойств классов. | ||
1151 | Конфликт с определением %s в пространстве имен %s. |
Нельзя объявлять больше одной переменной с использованием одного и того же имени идентификатора в пределах одной и той же области видимости, если все эти переменные имеют один и тот же тип. В ActionScript 3.0 различные блоки кода (например, используемые в двух циклах for в пределах одного и того же определения function) принадлежат к одной и той же области видимости.
В нижеприведенном примере кода происходит верное преобразование типа переменной
А в примере далее содержится ошибка, так как типы, содержащиеся в объявлении переменной и циклах
| |
1152 | Конфликт с унаследованным определением %s в пространстве имен %s. | ||
1153 | Конструктор может быть объявлен только как public. | ||
1154 | В определении допускается указание только одного из следующих типов: public, private, protected или internal. | ||
1155 | Средства доступа не могут быть вложены в другие функции. | ||
1156 | Создать экземпляр интерфейса с помощью оператора new нельзя. | ||
1157 | Члены интерфейсов нельзя объявить как public, private, protected или internal. | ||
1158 | Синтаксическая ошибка: отсутствует открывающая фигурная скобка ({) перед телом функции. | ||
1159 | Инструкция return не может использоваться в коде инициализации пакета. | ||
1160 | Атрибут native не может использоваться в определениях интерфейсов. |
Ключевое слово native нельзя использовать, так как оно является зарезервированным.
| |
1162 | В каждом определении может использоваться не более одного атрибута пространства имен. | ||
1163 | Метод %s конфликтует с определением, унаследованным от интерфейса %s. | ||
1165 | Неверный атрибут интерфейса: %s. | ||
1166 | Объявления пространств имен в интерфейсах запрещены. | ||
1167 | Класс %s неоднократно реализует интерфейс %s. |
Класс неоднократно реализует один и тот же интерфейс. Далее приведен пример с этой ошибкой, где класс C дважды реализует интерфейс A:
Правильная инструкция реализации: | |
1168 | Недопустимое назначение функции %s. |
Попытка переопределения функции. Например, далее определяется функция topLevel() для печати слова top. Во второй инструкции содержится ошибка, так как она присваивает функции другое возвращаемое значение:
| |
1169 | Атрибуты пространств имен в методах интерфейсов запрещены. | ||
1170 | Функция не возвращает значение. |
Каждый возможный поток команд в функции должен возвращать значение вне зависимости от того, что иногда тип результата может отличаться от void. Следующая функция f(x) не порождает ошибку, так как инструкция if..else всегда возвращает значение:
Однако в примере ниже выполнение функции
Эта проверка действует только когда функция объявляет тип возвращаемого значения, отличного от void. | |
1171 | Инициализатор пространства имен должен быть литеральной строкой или другим пространством имен. | ||
1172 | Определение %s не найдено. | ||
1173 | Недопустимое определение метки. | ||
1176 | Сравнение значения статического типа %s с вероятно несвязанным типом %s. | Эта ошибка встречается в строгом режиме. | |
1177 | Инструкция return не может использоваться в глобальном коде инициализации. | ||
1178 | Доступ к вероятно неопределенному свойству %s посредством ссылки со статическим типом %s. | ||
1179 | :Объект временно не обслуживается. Используйте вместо него :*. | ||
1180 | Вызов возможно неопределенного метода %s. | Эта ошибка возникает, когда компьютер работает в строгом режиме. | |
1181 | Опережающая ссылка на базовый класс %s. | ||
1182 | Невозможно использовать пакет в качестве переменной: %s. | ||
1184 | Несовместимое значение по умолчанию типа %s там, где ожидалось %s. | ||
1185 | Для переключателя допускается использовать только одно значение по умолчанию. | ||
1188 | Недопустимое назначение классу %s. | ||
1189 | Попытка удаления фиксированного свойства %s. Удалить можно только динамически определенные свойства. | Delete удаляет динамически определенные свойства из объекта. Объявленные свойства класса удалить нельзя. Эта ошибка возникает, когда компьютер работает в строгом режиме. | |
1190 | Базовый класс не найден или не является константой периода компиляции. | ||
1191 | Интерфейс не найден или не является константой периода компиляции. | ||
1192 | Использование атрибута static при определении пространств имен запрещено. | ||
1193 | Определения интерфейсов не должны быть вложены в класс или экземпляры других определений интерфейсов. | ||
1194 | Неверный атрибут прототипа. | ||
1195 | Попытка доступа к недоступному методу %s посредством ссылки со статическим типом %s. | Возможно, метод private вызывается из другого класса либо происходит вызов метода, определенного в неиспользуемом пространстве имен. При вызове метода из неиспользуемого пространства имен следует добавить инструкцию use для требуемого пространства имен.
| |
1196 | Синтаксическая ошибка: ожидается выражение после инструкции throw. | ||
1197 | Класс %s не может расширить класс %s, так как оба класса связаны с символами библиотеки или главной временной шкалой. | ||
1198 | В определениях пакетов атрибуты запрещены. | ||
1199 | Внутренняя ошибка: %s. | ||
1200 | Синтаксическая ошибка: неверный инициализатор цикла for-in, ожидается только 1 выражение. | ||
1201 | Инструкция super не может стоять после инструкции this, super, return или throw. | ||
1202 | Доступ к неопределенному свойству %s в пакете %s. |
Попытка доступа к неопределенной переменной пакета. Например, если переменная p.huh не была определена, то обращение к ней приведет к этой ошибке:
Эта ошибка возникает, когда компьютер работает в строгом режиме.
| |
1203 | В базовом классе %s отсутствует конструктор по умолчанию. | Если конструктор базового класса содержит 1 или более обязательных аргументов, то его вызов следует осуществлять с помощью инструкции super() в явном виде. | |
1204 | /* найдено без соответствующего */ . | Найдены символы начала комментария «/*», однако соответствующих им символов конца блока комментария «*/» не найдено. | |
1205 | Синтаксическая ошибка: ожидается открывающая скобка ({) или строковый литерал (""). | ||
1206 | Инструкция super может использоваться только в качестве последнего элемента в списке инициализатора конструктора. |
Инструкцию super нельзя использовать в конструкторе. super можно использовать только в качестве последнего элемента в списке инициализатора конструктора.
| |
1207 | Ключевое слово this не может использоваться в инициализаторах свойств. |
Ключевое слово this нельзя использовать в инициализаторе свойства.
| |
1208 | Инициализатор значения конфигурации должен являться константой периода компиляции. | Значение инициализатора значения конфигурации должно быть известно на этапе компиляции. Инициализатор может представлять собой строковую константу, число, логическое значение или ссылку на другое предварительно определенное значение конфигурации. | |
1209 | Переменная конфигурации может быть объявлена только как const. | Переменная конфигурации может быть объявлена только как const. | |
1210 | Объявление значения конфигурации должно происходить на верхнем уровне программы или пакета. | Объявление значения конфигурации должно происходить на верхнем уровне программы или пакета. | |
1211 | Пространство имен %s конфликтует с пространством имен конфигурации. | Имя пространства имен не может совпадать с именем пространства имен конфигурации. | |
1212 | Значение «точность» должно быть целым числом в пределах от 1 до 34. | ||
1214 | Несовместимая версия: недопустима ссылка на определение %s, представленное в версии %s из кода с версией %s. | ||
1215 | Недопустимая инициализация: при преобразовании в тип %s теряются данные. |
Tue Jun 12 2018, 11:51 AM Z