text:
'use strict';

goog.provide('Blockly.Msg.ar');

goog.require('Blockly.Msg');

Blockly.Msg.ADD_COMMENT = "اضافة تعليق";
Blockly.Msg.ARD_ANALOGREAD = "read analog pin#";  // untranslated
Blockly.Msg.ARD_ANALOGREAD_TIP = "Return value between 0 and 1024";  // untranslated
Blockly.Msg.ARD_ANALOGWRITE = "set analog pin#";  // untranslated
Blockly.Msg.ARD_ANALOGWRITE_TIP = "Write analog value between 0 and 255 to a specific PWM Port";  // untranslated
Blockly.Msg.ARD_BUILTIN_LED = "set built-in LED";  // untranslated
Blockly.Msg.ARD_BUILTIN_LED_TIP = "Light on or off for the built-in LED of the Arduino";  // untranslated
Blockly.Msg.ARD_COMPONENT_WARN1 = "sdfdsfsdfsdfdsgflksjdhfklsdhfjksdh";  // untranslated
Blockly.Msg.ARD_DEFINE = "Define";  // untranslated
Blockly.Msg.ARD_DIGITALREAD = "read digital pin#";  // untranslated
Blockly.Msg.ARD_DIGITALREAD_TIP = "Read digital value on a pin: HIGH or LOW";  // untranslated
Blockly.Msg.ARD_DIGITALWRITE = "set digitial pin#";  // untranslated
Blockly.Msg.ARD_DIGITALWRITE_TIP = "Write digital value HIGH or LOW to a specific Port";  // untranslated
Blockly.Msg.ARD_FUN_RUN_LOOP = "Void Loop ()                      ";  // untranslated
Blockly.Msg.ARD_FUN_RUN_SETUP = "Void Setup ()                    ";  // untranslated
Blockly.Msg.ARD_FUN_RUN_TIP = "Defines the Arduino setup() and loop() functions.";  // untranslated
Blockly.Msg.ARD_HIGH = "HIGH";  // untranslated
Blockly.Msg.ARD_HIGHLOW_TIP = "Set a pin state logic High or Low.";  // untranslated
Blockly.Msg.ARD_LOW = "LOW";  // untranslated
Blockly.Msg.ARD_MAP = "Map";  // untranslated
Blockly.Msg.ARD_MAP_TIP = "Re-maps a number from [0-1024] to another.";  // untranslated
Blockly.Msg.ARD_MAP_VAL = "value to [0-";  // untranslated
Blockly.Msg.ARD_NOTONE = "Turn off tone on pin #";  // untranslated
Blockly.Msg.ARD_NOTONE_PIN = "No tone PIN#";  // untranslated
Blockly.Msg.ARD_NOTONE_PIN_TIP = "Stop generating a tone on a pin";  // untranslated
Blockly.Msg.ARD_NOTONE_TIP = "Turns the tone off on the selected pin";  // untranslated
Blockly.Msg.ARD_PIN_WARN1 = "Pin %1 is needed for %2 as pin %3. Already used as %4.";  // untranslated
Blockly.Msg.ARD_PULSEON = "pulse on pin #";  // untranslated
Blockly.Msg.ARD_PULSEREAD = "Read";  // untranslated
Blockly.Msg.ARD_PULSETIMEOUT = "timeout after";  // untranslated
Blockly.Msg.ARD_PULSETIMEOUT_MS = "";  // untranslated
Blockly.Msg.ARD_PULSETIMEOUT_TIP = "Measures the duration of a pulse on the selected pin, if it is within the timeout.";  // untranslated
Blockly.Msg.ARD_PULSE_TIP = "Measures the duration of a pulse on the selected pin.";  // untranslated
Blockly.Msg.ARD_SERIAL_BPS = "bps";  // untranslated
Blockly.Msg.ARD_SERIAL_PRINT = "print";  // untranslated
Blockly.Msg.ARD_SERIAL_PRINT_NEWLINE = "add new line";  // untranslated
Blockly.Msg.ARD_SERIAL_PRINT_TIP = "Prints data to the console/serial port as human-readable ASCII text.";  // untranslated
Blockly.Msg.ARD_SERIAL_PRINT_WARN = "A setup block for %1 must be added to the workspace to use this block!";  // untranslated
Blockly.Msg.ARD_SERIAL_SETUP = "Setup";  // untranslated
Blockly.Msg.ARD_SERIAL_SETUP_TIP = "Selects the speed for a specific Serial peripheral";  // untranslated
Blockly.Msg.ARD_SERIAL_SPEED = ":  speed to";  // untranslated
Blockly.Msg.ARD_SERVO_READ = "read SERVO from PIN#";  // untranslated
Blockly.Msg.ARD_SERVO_READ_TIP = "Read a Servo angle";  // untranslated
Blockly.Msg.ARD_SERVO_WRITE = "set SERVO from Pin";  // untranslated
Blockly.Msg.ARD_SERVO_WRITE_DEG_180 = "Degrees (0~180)";  // untranslated
Blockly.Msg.ARD_SERVO_WRITE_TIP = "Set a Servo to an specified angle";  // untranslated
Blockly.Msg.ARD_SERVO_WRITE_TO = "to";  // untranslated
Blockly.Msg.ARD_SETTONE = "Set tone on pin #";  // untranslated
Blockly.Msg.ARD_SPI_SETUP = "Setup";  // untranslated
Blockly.Msg.ARD_SPI_SETUP_CONF = "configuration:";  // untranslated
Blockly.Msg.ARD_SPI_SETUP_DIVIDE = "clock divide";  // untranslated
Blockly.Msg.ARD_SPI_SETUP_LSBFIRST = "LSBFIRST";  // untranslated
Blockly.Msg.ARD_SPI_SETUP_MODE = "SPI mode (idle - edge)";  // untranslated
Blockly.Msg.ARD_SPI_SETUP_MODE0 = "0 (Low - Falling)";  // untranslated
Blockly.Msg.ARD_SPI_SETUP_MODE1 = "1 (Low - Rising)";  // untranslated
Blockly.Msg.ARD_SPI_SETUP_MODE2 = "2 (High - Falling)";  // untranslated
Blockly.Msg.ARD_SPI_SETUP_MODE3 = "3 (High - Rising)";  // untranslated
Blockly.Msg.ARD_SPI_SETUP_MSBFIRST = "MSBFIRST";  // untranslated
Blockly.Msg.ARD_SPI_SETUP_SHIFT = "data shift";  // untranslated
Blockly.Msg.ARD_SPI_SETUP_TIP = "Configures the SPI peripheral.";  // untranslated
Blockly.Msg.ARD_SPI_TRANSRETURN_TIP = "Send a SPI message to an specified slave device and get data back.";  // untranslated
Blockly.Msg.ARD_SPI_TRANS_NONE = "none";  // untranslated
Blockly.Msg.ARD_SPI_TRANS_SLAVE = "to slave pin";  // untranslated
Blockly.Msg.ARD_SPI_TRANS_TIP = "Send a SPI message to an specified slave device.";  // untranslated
Blockly.Msg.ARD_SPI_TRANS_VAL = "transfer";  // untranslated
Blockly.Msg.ARD_SPI_TRANS_WARN1 = "A setup block for %1 must be added to the workspace to use this block!";  // untranslated
Blockly.Msg.ARD_SPI_TRANS_WARN2 = "Old pin value %1 is no longer available.";  // untranslated
Blockly.Msg.ARD_STEPPER_COMPONENT = "stepper";  // untranslated
Blockly.Msg.ARD_STEPPER_DEFAULT_NAME = "MyStepper";  // untranslated
Blockly.Msg.ARD_STEPPER_MOTOR = "";  // untranslated
Blockly.Msg.ARD_STEPPER_PIN1 = "pin1#";  // untranslated
Blockly.Msg.ARD_STEPPER_PIN2 = "pin2#";  // untranslated
Blockly.Msg.ARD_STEPPER_REVOLVS = "how many steps per revolution";  // untranslated
Blockly.Msg.ARD_STEPPER_SETUP = "Setup stepper motor";  // untranslated
Blockly.Msg.ARD_STEPPER_SETUP_TIP = "Configures a stepper motor pinout and other settings.";  // untranslated
Blockly.Msg.ARD_STEPPER_SPEED = "set speed (rpm) to";  // untranslated
Blockly.Msg.ARD_STEPPER_STEP = "move stepper";  // untranslated
Blockly.Msg.ARD_STEPPER_STEPS = "steps";  // untranslated
Blockly.Msg.ARD_STEPPER_STEP_TIP = "Turns the stepper motor a specific number of steps.";  // untranslated
Blockly.Msg.ARD_TIME_DELAY = "wait";  // untranslated
Blockly.Msg.ARD_TIME_DELAY_MICROS = "microseconds";  // untranslated
Blockly.Msg.ARD_TIME_DELAY_MICRO_TIP = "Wait specific time in microseconds";  // untranslated
Blockly.Msg.ARD_TIME_DELAY_TIP = "Wait specific time in milliseconds";  // untranslated
Blockly.Msg.ARD_TIME_INF = "wait forever (end program)";  // untranslated
Blockly.Msg.ARD_TIME_INF_TIP = "Wait indefinitely, stopping the program.";  // untranslated
Blockly.Msg.ARD_TIME_MICROS = "current elapsed Time (microseconds)";  // untranslated
Blockly.Msg.ARD_TIME_MICROS_TIP = "Returns the number of microseconds since the Arduino board began running the current program. Has to be stored in a positive long integer";  // untranslated
Blockly.Msg.ARD_TIME_MILLIS = "current elapsed Time (milliseconds)";  // untranslated
Blockly.Msg.ARD_TIME_MILLIS_TIP = "Returns the number of milliseconds since the Arduino board began running the current program. Has to be stored in a positive long integer";  // untranslated
Blockly.Msg.ARD_TIME_MS = "milliseconds";  // untranslated
Blockly.Msg.ARD_TONEFREQ = "at frequency";  // untranslated
Blockly.Msg.ARD_TONE_FREQ = "frequency";  // untranslated
Blockly.Msg.ARD_TONE_PIN_TIP = "Generate audio tones on a pin";  // untranslated
Blockly.Msg.ARD_TONE_TIP = "Sets tone on pin to specified frequency within range 31 - 65535";  // untranslated
Blockly.Msg.ARD_TONE_WARNING = "Frequency must be in range 31 - 65535";  // untranslated
Blockly.Msg.ARD_TOgetFieldValueNE_PIN = "Tone PIN#";  // untranslated
Blockly.Msg.ARD_TYPE_ARRAY = "Array";  // untranslated
Blockly.Msg.ARD_TYPE_BOOL = "Boolean";  // untranslated
Blockly.Msg.ARD_TYPE_CHAR = "Character";  // untranslated
Blockly.Msg.ARD_TYPE_CHILDBLOCKMISSING = "ChildBlockMissing";  // untranslated
Blockly.Msg.ARD_TYPE_DECIMAL = "Decimal";  // untranslated
Blockly.Msg.ARD_TYPE_LONG = "Large Number";  // untranslated
Blockly.Msg.ARD_TYPE_NULL = "Null";  // untranslated
Blockly.Msg.ARD_TYPE_NUMBER = "Number";  // untranslated
Blockly.Msg.ARD_TYPE_SHORT = "Short Number";  // untranslated
Blockly.Msg.ARD_TYPE_TEXT = "Text";  // untranslated
Blockly.Msg.ARD_TYPE_UNDEF = "Undefined";  // untranslated
Blockly.Msg.ARD_VAR_AS = "as";  // untranslated
Blockly.Msg.ARD_VAR_AS_TIP = "Sets a value to a specific type";  // untranslated
Blockly.Msg.ARD_WRITE_TO = "to";  // untranslated
Blockly.Msg.ATX = "ATX-2";  // untranslated
Blockly.Msg.AUTH = "Please authorize this app to enable your work to be saved and to allow it to be shared by you.";  // untranslated
Blockly.Msg.Board = "Board";  // untranslated
Blockly.Msg.Board_HELP = "www.doc.inex.co.th";  // untranslated
Blockly.Msg.Board_TIP = "Board From INEX, This block for include library robot board ";  // untranslated
Blockly.Msg.CENTER_X = "             Center X:";  // untranslated
Blockly.Msg.CENTER_Y = "Center Y:";  // untranslated
Blockly.Msg.CHANGE_VALUE_TITLE = "تغيير قيمة:";
Blockly.Msg.CHAT = "دردش مع زملائك بالكتابة في هذا الصندوق!";
Blockly.Msg.CLEAN_UP = "Clean up Blocks";  // untranslated
Blockly.Msg.COLLAPSE_ALL = "إخفاء القطع";
Blockly.Msg.COLLAPSE_BLOCK = "إخفاء القطعة";
Blockly.Msg.COLOUR_BLEND_COLOUR1 = "اللون 1";
Blockly.Msg.COLOUR_BLEND_COLOUR2 = "اللون 2";
Blockly.Msg.COLOUR_BLEND_HELPURL = "http://meyerweb.com/eric/tools/color-blend/";
Blockly.Msg.COLOUR_BLEND_RATIO = "نسبة";
Blockly.Msg.COLOUR_BLEND_TITLE = "دمج";
Blockly.Msg.COLOUR_BLEND_TOOLTIP = "دمج لونين ببعضهما البعض بنسبة (0.0 - 1.0).";
Blockly.Msg.COLOUR_PICKER_HELPURL = "https://ar.wikipedia.org/wiki/Color";
Blockly.Msg.COLOUR_PICKER_TOOLTIP = "اختر لون من اللوحة.";
Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com";  // untranslated
Blockly.Msg.COLOUR_RANDOM_TITLE = "لون عشوائي";
Blockly.Msg.COLOUR_RANDOM_TOOLTIP = "اختر لون بشكل عشوائي.";
Blockly.Msg.COLOUR_RGB_BLUE = "أزرق";
Blockly.Msg.COLOUR_RGB_GREEN = "أخضر";
Blockly.Msg.COLOUR_RGB_HELPURL = "http://www.december.com/html/spec/colorper.html";
Blockly.Msg.COLOUR_RGB_RED = "أحمر";
Blockly.Msg.COLOUR_RGB_TITLE = "لون مع";
Blockly.Msg.COLOUR_RGB_TOOLTIP = "إنشئ لون بالكمية المحددة من الأحمر, الأخضر والأزرق. بحيث يجب تكون كافة القيم بين 0 و 100.";
Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";  // untranslated
Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK = "اخرج من الحلقة";
Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE = "استمر ابتداءا من التكرار التالي من الحلقة";
Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK = "اخرج من الحلقة الحالية.";
Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = "تخط ما تبقى من هذه الحلقة، واستمر ابتداءا من التكرار التالي.";
Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = "تحذير: يمكن استخدام هذه القطعة فقط داخل حلقة.";
Blockly.Msg.CONTROLS_FOREACH_HELPURL = "https://github.com/google/blockly/wiki/Loops#for-each";  // untranslated
Blockly.Msg.CONTROLS_FOREACH_TITLE = "لكل عنصر %1 في قائمة %2";
Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "لكل عنصر في قائمة ما، عين المتغير '%1' لهذا الغنصر، ومن ثم نفذ بعض الأوامر.";
Blockly.Msg.CONTROLS_FOR_HELPURL = "https://github.com/google/blockly/wiki/Loops#count-with";  // untranslated
Blockly.Msg.CONTROLS_FOR_TITLE = "عد بـ %1 من %2 إلى %3 بمعدل %4";
Blockly.Msg.CONTROLS_FOR_TOOLTIP = "اجعل المتغير  %1 يأخذ القيم من رقم البداية الى رقم النهاية، قم بالعد داخل المجال المحدد، وطبق أوامر القطع المحددة.";
Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = "إضف شرطا إلى القطعة الشرطية \"إذا\".";
Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = "أضف شرط \"نهاية، إجمع\" إلى القطعة الشرطية \"إذا\".";
Blockly.Msg.CONTROLS_IF_HELPURL = "https://github.com/google/blockly/wiki/IfElse";  // untranslated
Blockly.Msg.CONTROLS_IF_IF_TOOLTIP = "أضف, إزل, أو أعد ترتيب المقاطع لإعادة تكوين القطعة الشرطية \"إذا\".";
Blockly.Msg.CONTROLS_IF_MSG_ELSE = "والا";
Blockly.Msg.CONTROLS_IF_MSG_ELSEIF = "وإﻻ إذا";
Blockly.Msg.CONTROLS_IF_MSG_IF = "إذا";
Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = "إذا كانت قيمة ما تساوي صحيح, إذن قم بتنفيذ أمر ما.";
Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = "إذا كانت قيمة ما تساوي \"صحيح\"، إذن قم بتنفيذ أول قطعة من الأوامر. والا ،قم بتنفيذ القطعة الثانية من الأوامر.";
Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = "إذا كانت القيمة الأولى تساوي \"صحيح\", إذن قم بتنفيذ القطعة الأولى من الأوامر. والا, إذا كانت القيمة الثانية تساوي \"صحيح\", قم بتنفيذ القطعة الثانية من الأوامر.";
Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = "إذا كانت القيمة الأولى تساوي \"صحيح\", إذن قم بتنفيذ القطعة الأولى من الأوامر. والا , إذا كانت القيمة الثانية تساوي \"صحيح\", قم بتنفيذ القطعة الثانية من الأوامر. إذا لم تكن هناك أي قيمة تساوي صحيح, قم بتنفيذ آخر قطعة من الأوامر.";
Blockly.Msg.CONTROLS_REPEAT_HELPURL = "https://en.wikipedia.org/wiki/For_loop";
Blockly.Msg.CONTROLS_REPEAT_INPUT_DO = "نفّذ";
Blockly.Msg.CONTROLS_REPEAT_TITLE = "كرر  %1 مرات";
Blockly.Msg.CONTROLS_REPEAT_TOOLTIP = "نفّذ بعض الأوامر عدة مرات.";
Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL = "https://github.com/google/blockly/wiki/Loops#repeat";  // untranslated
Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = "اكرّر حتى";
Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = "اكرّر طالما";
Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "بما ان القيمة خاطئة, نفّذ بعض الأوامر.";
Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "بما ان القيمة صحيحة, نفّذ بعض الأوامر.";
Blockly.Msg.DELETE_ALL_BLOCKS = "حذف كل مناعات %1؟";
Blockly.Msg.DELETE_BLOCK = "إحذف القطعة";
Blockly.Msg.DELETE_X_BLOCKS = "إحذف قطع %1";
Blockly.Msg.DISABLE_BLOCK = "عطّل القطعة";
Blockly.Msg.DUPLICATE_BLOCK = "ادمج";
Blockly.Msg.ENABLE_BLOCK = "أعد تفعيل القطعة";
Blockly.Msg.END_DEG = "End Degree:";  // untranslated
Blockly.Msg.END_X = "End X:";  // untranslated
Blockly.Msg.END_Y = "End Y";  // untranslated
Blockly.Msg.EXPAND_ALL = "وسٌّع القطع";
Blockly.Msg.EXPAND_BLOCK = "وسٌّع القطعة";
Blockly.Msg.EXTERNAL_INPUTS = "ادخال خارجي";
Blockly.Msg.GETHELP = "wwww.doc.inex.co.th";  // untranslated
Blockly.Msg.GLCD_CIR = "GLCD CIRCLE";  // untranslated
Blockly.Msg.GLCD_CLEAR = "GLCD Clear Screen";  // untranslated
Blockly.Msg.GLCD_COLOR = "  Color:";  // untranslated
Blockly.Msg.GLCD_COLOR_TEXT = "GLCD Text Color";  // untranslated
Blockly.Msg.GLCD_DISPLAY_TIPC = "Set text size for display on GLCD";  // untranslated
Blockly.Msg.GLCD_DISPLAY_TIPS = "Set text color for display on GLCD";  // untranslated
Blockly.Msg.GLCD_FILL_ARC = "GLCD Arc";  // untranslated
Blockly.Msg.GLCD_FILL_CIR = "GLCD Fill Circle";  // untranslated
Blockly.Msg.GLCD_FILL_LINE = "GLCD Line";  // untranslated
Blockly.Msg.GLCD_FILL_REC = "GLCD Fill Rectangle";  // untranslated
Blockly.Msg.GLCD_FILL_SCR = "Fill Screen Color";  // untranslated
Blockly.Msg.GLCD_HEIGHT = "Height:";  // untranslated
Blockly.Msg.GLCD_REC = "GLCD Rectangle";  // untranslated
Blockly.Msg.GLCD_SHOW_ROW = "GLCD Row";  // untranslated
Blockly.Msg.GLCD_SIZE = "GLCD Text Size";  // untranslated
Blockly.Msg.GLCD_TEXT = "Text";  // untranslated
Blockly.Msg.GLCD_TEXT_BACKGROUND = "Set Text Background";  // untranslated
Blockly.Msg.GLCD_TEXT_FORMAT = "Format:";  // untranslated
Blockly.Msg.GLCD_TEXT_PRE = "Prefix:";  // untranslated
Blockly.Msg.GLCD_TEXT_ROW = "Row:";  // untranslated
Blockly.Msg.GLCD_TEXT_SUB = "Subfix:";  // untranslated
Blockly.Msg.GLCD_TEXT_TIP = "Display value on GLCD";  // untranslated
Blockly.Msg.GLCD_TEXT_VALUE = "GLCD Show Value:";  // untranslated
Blockly.Msg.GLCD_WIDTH = "Width:";  // untranslated
Blockly.Msg.GLCD_X_AXIS = "                X:";  // untranslated
Blockly.Msg.GLCD_Y_AXIS = " Y:";  // untranslated
Blockly.Msg.HELP = "مساعدة";
Blockly.Msg.INLINE_INPUTS = "ادخال خطي";
Blockly.Msg.LED8_INPUT = "Byte";  // untranslated
Blockly.Msg.LED8_PIN = "LED8 Pin";  // untranslated
Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-empty-list";
Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = "إنشئ قائمة فارغة";
Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = "تقوم بإرجاع قائمة، طولها 0, لا تحتوي على أية سجلات البيانات";
Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = "قائمة";
Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = "أضف, إزل, أو أعد ترتيب المقاطع لإعادة تكوين القطعة قائمة القطع التالية.";
Blockly.Msg.LISTS_CREATE_WITH_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with";  // untranslated
Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH = "أتشئ قائمة مع";
Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP = "أضف عنصرا إلى القائمة.";
Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = "أنشيء قائمة من أي عدد من العناصر.";
Blockly.Msg.LISTS_GET_INDEX_FIRST = "أول";
Blockly.Msg.LISTS_GET_INDEX_FROM_END = "# من نهاية";
Blockly.Msg.LISTS_GET_INDEX_FROM_START = "#";
Blockly.Msg.LISTS_GET_INDEX_GET = "احصل على";
Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = "احصل على و ازل";
Blockly.Msg.LISTS_GET_INDEX_LAST = "أخير";
Blockly.Msg.LISTS_GET_INDEX_RANDOM = "عشوائي";
Blockly.Msg.LISTS_GET_INDEX_REMOVE = "ازل";
Blockly.Msg.LISTS_GET_INDEX_TAIL = "";  // untranslated
Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "يرجع العنصر الأول في قائمة ما.";
Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_END = "يقوم بإرجاع العنصر في الموضع المحدد في قائمة ما.  #1 هو العنصر الأخير.";
Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_START = "يقوم بإرجاع العنصر في الموضع المحدد في قائمة ما.  #1 هو العنصر الأول.";
Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = "يرجع العنصر الأخير في قائمة ما.";
Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = "يرجع عنصرا عشوائيا في قائمة.";
Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "يزيل ويرجع العنصر الأول في قائمة.";
Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_END = "يزيل ويقوم بإرجاع العنصر في الموضع المحدد في قائمة ما.  #1 هو العنصر الأخير.";
Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_START = "يزيل ويقوم بإرجاع العنصر في الموضع المحدد في قائمة ما.  #1 هو العنصر الأول.";
Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = "يزيل ويرجع العنصر الأخير في قائمة ما.";
Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = "يزيل و يرجع عنصرا عشوائيا في قائمة ما.";
Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = "يزيل العنصر الأول في قائمة ما.";
Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_END = "يزيل العنصر الموجود في الموضع المحدد في قائمة ما.  #1 هو العنصر الأخير.";
Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_START = "يزيل العنصر الموجود في الموضع المحدد في قائمة ما.  #1 هو العنصر الأول.";
Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = "يزيل العنصر الأخير في قائمة ما.";
Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = "يزيل عنصرا عشوائيا في قائمة ما.";
Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END = "إلى # من نهاية";
Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START = "إلى #";
Blockly.Msg.LISTS_GET_SUBLIST_END_LAST = "إلى الأخير";
Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist";  // untranslated
Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = "احصل على قائمة فرعية من الأول";
Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "احصل  على قائمة فرعية من # من نهاية";
Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "احصل على قائمة فرعية من #";
Blockly.Msg.LISTS_GET_SUBLIST_TAIL = "";  // untranslated
Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "يقوم بإنشاء نسخة من الجزء المحدد من قائمة ما.";
Blockly.Msg.LISTS_INDEX_OF_FIRST = "ابحث على على التواجد الأول للعنصر";
Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";  // untranslated
Blockly.Msg.LISTS_INDEX_OF_LAST = "ابحث على التواجد الأخير للعنصر";
Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "تقوم بإرجاع مؤشر التواجد  الأول/الأخير في القائمة.  تقوم بإرجاع 0 إذا لم يتم العثور على النص.";
Blockly.Msg.LISTS_INLIST = "في قائمة";
Blockly.Msg.LISTS_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#is-empty";  // untranslated
Blockly.Msg.LISTS_ISEMPTY_TITLE = "%1 فارغ";
Blockly.Msg.LISTS_ISEMPTY_TOOLTIP = "يرجع \"صحيح\" إذا كانت القائمة فارغة.";
Blockly.Msg.LISTS_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Lists#length-of";  // untranslated
Blockly.Msg.LISTS_LENGTH_TITLE = "الطول من %1";
Blockly.Msg.LISTS_LENGTH_TOOLTIP = "تقوم بإرجاع طول قائمة.";
Blockly.Msg.LISTS_REPEAT_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with";  // untranslated
Blockly.Msg.LISTS_REPEAT_TITLE = "إنشئ قائمة مع العنصر  %1 %2 مرات";
Blockly.Msg.LISTS_REPEAT_TOOLTIP = "انشئ قائمة تتألف من القيمة المعطاة متكررة لعدد محدد من المرات.";
Blockly.Msg.LISTS_SET_INDEX_HELPURL = "https://github.com/google/blockly/wiki/Lists#in-list--set";  // untranslated
Blockly.Msg.LISTS_SET_INDEX_INPUT_TO = "مثل";
Blockly.Msg.LISTS_SET_INDEX_INSERT = "أدخل في";
Blockly.Msg.LISTS_SET_INDEX_SET = "تعيين";
Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = "يقوم بإدراج هذا العنصر في بداية قائمة.";
Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_END = "يقوم بإدخال العنصر في الموضع المحدد في قائمة ما.  #1 هو العنصر الأخير.";
Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_START = "يقوم بإدخال العنصر في الموضع المحدد في قائمة ما.  #1 هو العنصر الأول.";
Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = "ألصق هذا العنصر بنهاية قائمة.";
Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = "ادخل العنصر عشوائياً في القائمة.";
Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = "يحدد العنصر الأول في قائمة.";
Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM_END = "يحدد العنصر في الموضع المحدد في قائمة ما.  #1 هو العنصر الأخير.";
Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM_START = "يحدد العنصر في الموضع المحدد في قائمة ما.  #1 هو العنصر الأول.";
Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST = "يحدد العنصر الأخير في قائمة.";
Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = "يحدد عنصرا عشوائيا في قائمة.";
Blockly.Msg.LISTS_SORT_HELPURL = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";  // untranslated
Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = "ascending";  // untranslated
Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = "descending";  // untranslated
Blockly.Msg.LISTS_SORT_TITLE = "sort %1 %2 %3";  // untranslated
Blockly.Msg.LISTS_SORT_TOOLTIP = "Sort a copy of a list.";  // untranslated
Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = "alphabetic, ignore case";  // untranslated
Blockly.Msg.LISTS_SORT_TYPE_NUMERIC = "numeric";  // untranslated
Blockly.Msg.LISTS_SORT_TYPE_TEXT = "alphabetic";  // untranslated
Blockly.Msg.LISTS_SPLIT_HELPURL = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";  // untranslated
Blockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT = "إعداد قائمة من النصوص";
Blockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST = "إعداد نص من القائمة";
Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN = "Join a list of texts into one text, separated by a delimiter.";  // untranslated
Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = "Split text into a list of texts, breaking at each delimiter.";  // untranslated
Blockly.Msg.LISTS_SPLIT_WITH_DELIMITER = "with delimiter";  // untranslated
Blockly.Msg.LOGIC_BOOLEAN_FALSE = "خاطئ";
Blockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://github.com/google/blockly/wiki/Logic#values";  // untranslated
Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = "يرجع صحيح أو خاطئ.";
Blockly.Msg.LOGIC_BOOLEAN_TRUE = "صحيح";
Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://en.wikipedia.org/wiki/Inequality_(mathematics)";
Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = "يرجع صحيح إذا كان كلا المدخلات مساوية بعضها البعض.";
Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = "يرجع صحيح إذا كان الإدخال الأول أكبر من الإدخال الثاني.";
Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = "يرجع صحيح إذا كان الإدخال الأول أكبر من أو يساوي الإدخال الثاني.";
Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT = "يرجع صحيح إذا كان الإدخال الأول أصغر من الإدخال الثاني.";
Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE = "يرجع صحيح إذا كان الإدخال الأول أصغر من أو يساوي الإدخال الثاني.";
Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ = "يرجع صحيح إذا كانت كلا المدخلات غير مساوية لبعضها البعض.";
Blockly.Msg.LOGIC_NEGATE_HELPURL = "https://github.com/google/blockly/wiki/Logic#not";  // untranslated
Blockly.Msg.LOGIC_NEGATE_TITLE = "ليس من %1";
Blockly.Msg.LOGIC_NEGATE_TOOLTIP = "يرجع صحيح إذا كان الإدخال خاطئ .  يرجع خاطئ إذا كان الإدخال صحيح.";
Blockly.Msg.LOGIC_NULL = "ملغى";
Blockly.Msg.LOGIC_NULL_HELPURL = "https://en.wikipedia.org/wiki/Nullable_type";
Blockly.Msg.LOGIC_NULL_TOOLTIP = "ترجع ملغى.";
Blockly.Msg.LOGIC_OPERATION_AND = "و";
Blockly.Msg.LOGIC_OPERATION_HELPURL = "https://github.com/google/blockly/wiki/Logic#logical-operations";  // untranslated
Blockly.Msg.LOGIC_OPERATION_OR = "أو";
Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = "ترجع صحيح إذا كان كلا المٌدخلات صحيح.";
Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = "ترجع صحيح إذا كان واحد على الأقل من المدخلات صحيح.";
Blockly.Msg.LOGIC_TERNARY_CONDITION = "اختبار";
Blockly.Msg.LOGIC_TERNARY_HELPURL = "https://en.wikipedia.org/wiki/%3F:";
Blockly.Msg.LOGIC_TERNARY_IF_FALSE = "إذا كانت العبارة خاطئة";
Blockly.Msg.LOGIC_TERNARY_IF_TRUE = "إذا كانت العبارة صحيحة";
Blockly.Msg.LOGIC_TERNARY_TOOLTIP = "تحقق الشرط في 'الاختبار'. إذا كان الشرط صحيح، يقوم بإرجاع قيمة 'اذا كانت العبارة صحيحة'؛ خلاف ذلك يرجع قيمة 'اذا كانت العبارة خاطئة'.";
Blockly.Msg.MATH_ADDITION_SYMBOL = "+";
Blockly.Msg.MATH_ARITHMETIC_HELPURL = "https://en.wikipedia.org/wiki/Arithmetic";
Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD = "يرجع مجموع الرقمين.";
Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = "يرجع حاصل قسمة الرقمين.";
Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = "يرجع الفرق بين الرقمين.";
Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "يرجع حاصل ضرب الرقمين.";
Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = "يرجع الرقم الأول مرفوع إلى تربيع الرقم الثاني.";
Blockly.Msg.MATH_CHANGE_HELPURL = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter";
Blockly.Msg.MATH_CHANGE_TITLE = "غير %1 بـ %2";
Blockly.Msg.MATH_CHANGE_TOOLTIP = "إضف رقم إلى متغير '%1'.";
Blockly.Msg.MATH_CONSTANT_HELPURL = "https://en.wikipedia.org/wiki/Mathematical_constant";
Blockly.Msg.MATH_CONSTANT_TOOLTIP = "ير جع واحد من الثوابت الشائعة : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).";
Blockly.Msg.MATH_CONSTRAIN_HELPURL = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29";  // untranslated
Blockly.Msg.MATH_CONSTRAIN_TITLE = "تقيد %1 منخفض %2 مرتفع %3";
Blockly.Msg.MATH_CONSTRAIN_TOOLTIP = "تقييد العددليكون بين الحدود المحددة (ضمناً).";
Blockly.Msg.MATH_DIVISION_SYMBOL = "÷";
Blockly.Msg.MATH_IS_DIVISIBLE_BY = "قابل للقسمة";
Blockly.Msg.MATH_IS_EVEN = "هو زوجي";
Blockly.Msg.MATH_IS_NEGATIVE = "هو سالب";
Blockly.Msg.MATH_IS_ODD = "هو فرذي";
Blockly.Msg.MATH_IS_POSITIVE = "هو موجب";
Blockly.Msg.MATH_IS_PRIME = "هو أولي";
Blockly.Msg.MATH_IS_TOOLTIP = "تحقق إذا كان عدد ما زوجيا، فرذيا, أوليا، صحيحا،موجبا أو سالبا، أو إذا كان قابلا للقسمة على عدد معين.  يرجع صحيح أو خاطئ.";
Blockly.Msg.MATH_IS_WHOLE = "هو صحيح";
Blockly.Msg.MATH_MODULO_HELPURL = "https://en.wikipedia.org/wiki/Modulo_operation";
Blockly.Msg.MATH_MODULO_TITLE = "باقي %1 ÷ %2";
Blockly.Msg.MATH_MODULO_TOOLTIP = "يرجع الباقي من قسمة الرقمين.";
Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "×";
Blockly.Msg.MATH_NUMBER_HELPURL = "https://en.wikipedia.org/wiki/Number";
Blockly.Msg.MATH_NUMBER_TOOLTIP = "عدد ما.";
Blockly.Msg.MATH_ONLIST_HELPURL = "";  // untranslated
Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = "متوسط القائمة";
Blockly.Msg.MATH_ONLIST_OPERATOR_MAX = "الحد الأقصى لقائمة";
Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = "متوسط القائمة";
Blockly.Msg.MATH_ONLIST_OPERATOR_MIN = "الحد الأدنى من قائمة";
Blockly.Msg.MATH_ONLIST_OPERATOR_MODE = "منوال القائمة";
Blockly.Msg.MATH_ONLIST_OPERATOR_RANDOM = "عنصر عشوائي من القائمة";
Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV = "الانحراف المعياري للقائمة";
Blockly.Msg.MATH_ONLIST_OPERATOR_SUM = "مجموع القائمة";
Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE = "يرجع المعدل (الوسط الحسابي) للقيم الرقمية في القائمة.";
Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX = "يرجع أكبر عدد في القائمة.";
Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = "يرجع وسيط العدد في القائمة.";
Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN = "يرجع أصغر رقم في القائمة.";
Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE = "يرجع قائمة من العنصر أو العناصر الأكثر شيوعاً في القائمة.";
Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = "يرجع عنصر عشوائي من القائمة.";
Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = "يرجع الانحراف المعياري للقائمة.";
Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = "يرجع مجموع كافة الأرقام الموجودة في القائمة.";
Blockly.Msg.MATH_POWER_SYMBOL = "^";
Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation";
Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "كسر عشوائي";
Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "يرجع جزء عشوائي بين 0.0 (ضمنياً) و 1.0 (خارجيا).";
Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation";
Blockly.Msg.MATH_RANDOM_INT_TITLE = " عدد صحيح عشوائي من %1 إلى %2";
Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = "يرجع عدد صحيح عشوائي بين حدين محددين, ضمنيا.";
Blockly.Msg.MATH_ROUND_HELPURL = "https://en.wikipedia.org/wiki/Rounding";
Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = "تقريب";
Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = "تقريب إلى اصغر عدد صحيح";
Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = "تقريب الى اكبر عدد صحيح";
Blockly.Msg.MATH_ROUND_TOOLTIP = "تقريب الى اكبر عدد صحيح أو الى اصغر عدد صحيح.";
Blockly.Msg.MATH_SINGLE_HELPURL = "https://en.wikipedia.org/wiki/Square_root";
Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE = "مطلق";
Blockly.Msg.MATH_SINGLE_OP_ROOT = "الجذر التربيعي";
Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS = "يرجع القيمة المطلقة لرقم.";
Blockly.Msg.MATH_SINGLE_TOOLTIP_EXP = "يرجع  e الذي هو الاس المرفوع للرقم.";
Blockly.Msg.MATH_SINGLE_TOOLTIP_LN = "يرجع اللوغاريتم الطبيعي لرقم.";
Blockly.Msg.MATH_SINGLE_TOOLTIP_LOG10 = "يرجع لوغاريتم عدد معين للاساس 10.";
Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG = "يرجع عدد سالب.";
Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10 = "يرجع مضروب الرقم 10 في نفسه .";
Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT = "يرجع الجذر التربيعي للرقم.";
Blockly.Msg.MATH_SUBTRACTION_SYMBOL = "-";
Blockly.Msg.MATH_TRIG_ACOS = "acos";
Blockly.Msg.MATH_TRIG_ASIN = "asin";
Blockly.Msg.MATH_TRIG_ATAN = "atan";
Blockly.Msg.MATH_TRIG_COS = "جيب تمام";
Blockly.Msg.MATH_TRIG_HELPURL = "https://en.wikipedia.org/wiki/Trigonometric_functions";
Blockly.Msg.MATH_TRIG_SIN = "جيب";
Blockly.Msg.MATH_TRIG_TAN = "ظل";
Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS = "يرجع قوس جيب التمام لرقم.";
Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN = "يرجع قوس الجيب للرقم.";
Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN = "يرجع قوس الظل للرقم.";
Blockly.Msg.MATH_TRIG_TOOLTIP_COS = "يرجع جيب التمام لدرجة (لا زواية نصف قطرية).";
Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = "يرجع جيب التمام لدرجة (لا زواية نصف قطرية).";
Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = "يرجع الظل لدرجة (لا دائرة نصف قطرية).";
Blockly.Msg.ME = "أنا";
Blockly.Msg.MOTOR_MOVE = "Move";  // untranslated
Blockly.Msg.MOTOR_SPEED = "Speed";  // untranslated
Blockly.Msg.MOTOR_SPIN = "Spin";  // untranslated
Blockly.Msg.MOTOR_TURN = "Turn";  // untranslated
Blockly.Msg.Motor2_L = "Left";  // untranslated
Blockly.Msg.Motor2_R = "Right";  // untranslated
Blockly.Msg.MotorSL = "SpinLeft";  // untranslated
Blockly.Msg.MotorSR = "SpinRight";  // untranslated
Blockly.Msg.Motor_BK = "Backward";  // untranslated
Blockly.Msg.Motor_Backward2 = "Backward2";  // untranslated
Blockly.Msg.Motor_FD = "Forward";  // untranslated
Blockly.Msg.Motor_Fiel_Speed = "Speed";  // untranslated
Blockly.Msg.Motor_Fiel_choose = "Motor";  // untranslated
Blockly.Msg.Motor_Forward2 = "Forward2";  // untranslated
Blockly.Msg.Motor_SL = "TurnLeft";  // untranslated
Blockly.Msg.Motor_SR = "TurnRight";  // untranslated
Blockly.Msg.Motor_Speed = "Input Speed Motor by Number 0-100";  // untranslated
Blockly.Msg.Motor_Stop = "Motor Stop";  // untranslated
Blockly.Msg.NEW_INSTANCE = "New instance...";  // untranslated
Blockly.Msg.NEW_INSTANCE_TITLE = "New instance name:";  // untranslated
Blockly.Msg.NEW_VARIABLE = "متغير جديد...";
Blockly.Msg.NEW_VARIABLE_TITLE = "اسم المتغير الجديد:";
Blockly.Msg.ORDINAL_NUMBER_SUFFIX = "";  // untranslated
Blockly.Msg.PROCEDURES_ALLOW_STATEMENTS = "allow statements";  // untranslated
Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "مع:";
Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "تشغيل الدالة المعرفة من قبل المستخدم '%1'.";
Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "تشغيل الدالة المعرفة من قبل المستخدم %1 واستخدام  مخرجاتها.";
Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = "مع:";
Blockly.Msg.PROCEDURES_CREATE_DO = "إنشئ '%1'";
Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = "Describe this function...";  // untranslated
Blockly.Msg.PROCEDURES_DEFNORETURN_DO = "";  // untranslated
Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "القيام بشيء ما";
Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "إلى";
Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP = "انشئ دالة بدون مخرجات .";
Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
Blockly.Msg.PROCEDURES_DEFRETURN_RETURN = "يرجع";
Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP = "انشئ دالة مع المخرجات.";
Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING = "تحذير: هذه الدالة تحتوي على معلمات مكررة.";
Blockly.Msg.PROCEDURES_HIGHLIGHT_DEF = "تسليط الضوء على تعريف الدالة";
Blockly.Msg.PROCEDURES_IFRETURN_HELPURL = "http://c2.com/cgi/wiki?GuardClause";  // untranslated
Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP = "إذا كانت القيمة صحيحة ، اذان قم بارجاع القيمة الثانية.";
Blockly.Msg.PROCEDURES_IFRETURN_WARNING = "تحذير:هذه القطعة تستخدم فقط داخل تعريف دالة.";
Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = "اسم الإدخال:";
Blockly.Msg.PROCEDURES_MUTATORARG_TOOLTIP = "Add an input to the function.";  // untranslated
Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = "المدخلات";
Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP = "Add, remove, or reorder inputs to this function.";  // untranslated
Blockly.Msg.RADIUS = "Radius:";  // untranslated
Blockly.Msg.REDO = "Redo";  // untranslated
Blockly.Msg.REMOVE_COMMENT = "ازل التعليق";
Blockly.Msg.RENAME_INSTANCE = "Rename instance...";  // untranslated
Blockly.Msg.RENAME_INSTANCE_TITLE = "Rename all '%1' instances to:";  // untranslated
Blockly.Msg.RENAME_VARIABLE = "إعادة تسمية المتغير...";
Blockly.Msg.RENAME_VARIABLE_TITLE = "إعادة تسمية كافة المتغيرات '%1' إلى:";
Blockly.Msg.SENSOR_ANALOG = "Analog";  // untranslated
Blockly.Msg.SENSOR_DIGITAL = "Read Digital";  // untranslated
Blockly.Msg.SENSOR_IR = "IR Range";  // untranslated
Blockly.Msg.SENSOR_SONAR = "Sonar Range";  // untranslated
Blockly.Msg.SENSOR_TEMP = "Temperature";  // untranslated
Blockly.Msg.SERVO_TIP = "Input Angle Servo by Number 0-180 or Other";  // untranslated
Blockly.Msg.SERVO_TITLE = "Servo PIN";  // untranslated
Blockly.Msg.SERVO_TITLE1 = "Angle";  // untranslated
Blockly.Msg.START_DEG = "Start Degree:";  // untranslated
Blockly.Msg.START_X = "Start X:";  // untranslated
Blockly.Msg.START_Y = "Start Y:";  // untranslated
Blockly.Msg.Sound_Beep = "Beep";  // untranslated
Blockly.Msg.Sound_FRE = "Frequency";  // untranslated
Blockly.Msg.Sound_PIN = "Sound PIN";  // untranslated
Blockly.Msg.Sound_TIME = "Time";  // untranslated
Blockly.Msg.Switch = "OK Switch";  // untranslated
Blockly.Msg.TEXT_APPEND_APPENDTEXT = "إلصق نص";
Blockly.Msg.TEXT_APPEND_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification";  // untranslated
Blockly.Msg.TEXT_APPEND_TO = "إلى";
Blockly.Msg.TEXT_APPEND_TOOLTIP = "إلصق جزءا من النص إلى متغير '%1'.";
Blockly.Msg.TEXT_CHANGECASE_HELPURL = "https://github.com/google/blockly/wiki/Text#adjusting-text-case";  // untranslated
Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = "الى حروف صغيرة";
Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE = "الى حروف العنوان";
Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE = "الى حروف كبيرة";
Blockly.Msg.TEXT_CHANGECASE_TOOLTIP = "يرجع نسخة من النص في حالة مختلفة.";
Blockly.Msg.TEXT_CHARAT_FIRST = "احصل على الحرف الأول";
Blockly.Msg.TEXT_CHARAT_FROM_END = "الحصول على الحرف # من نهاية";
Blockly.Msg.TEXT_CHARAT_FROM_START = "الحصول على الحرف #";
Blockly.Msg.TEXT_CHARAT_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-text";  // untranslated
Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "في النص";
Blockly.Msg.TEXT_CHARAT_LAST = "احصل على آخر حرف";
Blockly.Msg.TEXT_CHARAT_RANDOM = "الحصول على حرف عشوائي";
Blockly.Msg.TEXT_CHARAT_TAIL = "";  // untranslated
Blockly.Msg.TEXT_CHARAT_TOOLTIP = "يرجع حرف ما في الموضع المحدد.";
Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "إضف عنصر إلى النص.";
Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "الانضمام إلى";
Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = "أضف, إحذف, أو أعد ترتيب المقاطع لإعادة تكوين النص من القطع التالية.";
Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END = "إلى حرف # من نهاية";
Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START = "إلى حرف #";
Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST = "إلى آخر حرف";
Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";  // untranslated
Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "في النص";
Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "الحصول على سلسلة فرعية من الحرف الأول";
Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "الحصول على سلسلة حروف فرعية من الحرف # من نهاية";
Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "الحصول على سلسلة حروف فرعية من الحرف #";
Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = "";  // untranslated
Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "يرجع جزء معين من النص.";
Blockly.Msg.TEXT_INDEXOF_HELPURL = "https://github.com/google/blockly/wiki/Text#finding-text";  // untranslated
Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "في النص";
Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "ابحث عن التواجد الأول للنص";
Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "ابحث عن التواجد الأخير للنص";
Blockly.Msg.TEXT_INDEXOF_TAIL = "";  // untranslated
Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "تقوم بإرجاع مؤشر التواجد الأول/الأخير للنص الأول في النص الثاني.  تقوم بإرجاع 0 إذا لم يتم العثور على النص.";
Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text";  // untranslated
Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1 فارغ";
Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "يرجع \"صحيح\" إذا كان النص المقدم فارغ.";
Blockly.Msg.TEXT_JOIN_HELPURL = "https://github.com/google/blockly/wiki/Text#text-creation";  // untranslated
Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "انشئ نص مع";
Blockly.Msg.TEXT_JOIN_TOOLTIP = "أنشئ جزء من النص بالصاق أي عدد من العناصر ببعضها البعض.";
Blockly.Msg.TEXT_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification";  // untranslated
Blockly.Msg.TEXT_LENGTH_TITLE = "طول %1";
Blockly.Msg.TEXT_LENGTH_TOOLTIP = "تقوم بإرجاع عدد الاحرف (بما في ذلك الفراغات) في النص المقدم.";
Blockly.Msg.TEXT_PRINT_HELPURL = "https://github.com/google/blockly/wiki/Text#printing-text";  // untranslated
Blockly.Msg.TEXT_PRINT_TITLE = "اطبع %1";
Blockly.Msg.TEXT_PRINT_TOOLTIP = "اطبع النص المحدد أو العدد أو قيمة أخرى.";
Blockly.Msg.TEXT_PROMPT_HELPURL = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";  // untranslated
Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = "انتظر ادخال المستخذم لرقم ما.";
Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = "انتظر ادخال المستخدم لنص ما.";
Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = "انتظر ادخال المستخدم لرقم ما مع اظهار رسالة";
Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "انتظر ادخال المستخدم لنص ما مع اظهار رسالة";
Blockly.Msg.TEXT_TEXT_HELPURL = "https://en.wikipedia.org/wiki/String_(computer_science)";
Blockly.Msg.TEXT_TEXT_TOOLTIP = "حرف أو كلمة أو سطر من النص.";
Blockly.Msg.TEXT_TRIM_HELPURL = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";  // untranslated
Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "إزالة الفراغات من كلا الجانبين";
Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "إزالة الفراغات من الجانب الأيسر من";
Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "إزالة الفراغات من الجانب الأيمن من";
Blockly.Msg.TEXT_TRIM_TOOLTIP = "يرجع نسخة من النص مع حذف من أحد أو كلا الفراغات من أطرافه.";
Blockly.Msg.TODAY = "اليوم";
Blockly.Msg.TOOLTIP_AO = "Stop all motor";  // untranslated
Blockly.Msg.TOOLTIP_BACKWARD2 = "This block can be adjusted speed backward 2 motor is different.";  // untranslated
Blockly.Msg.TOOLTIP_FORWARD2 = "This block can be adjusted speed forward 2 motor is different.";  // untranslated
Blockly.Msg.TOOLTIP_MOTORCHOOSE = "This block can be adjusted motor various 1 motor, 6 motor and set speed 0-100.";  // untranslated
Blockly.Msg.TOOLTIP_MOVE = "Motor Move Forward or Backward set speed 0-100.";  // untranslated
Blockly.Msg.TOOLTIP_SPIN = "Motor Move Spin Right or Left, One side motor reverse spin. can set speed 0-100.";  // untranslated
Blockly.Msg.TOOLTIP_TURN = "Motor Move Turn Right or Left, One side motor stop set speed 0-100.";  // untranslated
Blockly.Msg.UART_GET = "uart1 getkey";  // untranslated
Blockly.Msg.UNDO = "Undo";  // untranslated
Blockly.Msg.VARIABLES_DEFAULT_NAME = "البند";
Blockly.Msg.VARIABLES_GET_CREATE_SET = "انشئ 'التعيين %1'";
Blockly.Msg.VARIABLES_GET_HELPURL = "https://github.com/google/blockly/wiki/Variables#get";  // untranslated
Blockly.Msg.VARIABLES_GET_TOOLTIP = "يرجع قيمة هذا المتغير.";
Blockly.Msg.VARIABLES_SET = "تعيين %1 إلى %2";
Blockly.Msg.VARIABLES_SET_CREATE_GET = "انشئ 'احصل على %1'";
Blockly.Msg.VARIABLES_SET_HELPURL = "https://github.com/google/blockly/wiki/Variables#set";  // untranslated
Blockly.Msg.VARIABLES_SET_TOOLTIP = "تعيين هذا المتغير لتكون مساوية للقيمة المدخلة.";
Blockly.Msg.XIO = "XIO";  // untranslated
Blockly.Msg.MATH_CHANGE_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
Blockly.Msg.PROCEDURES_DEFRETURN_TITLE = Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE;
Blockly.Msg.CONTROLS_IF_IF_TITLE_IF = Blockly.Msg.CONTROLS_IF_MSG_IF;
Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
Blockly.Msg.CONTROLS_IF_MSG_THEN = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE = Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;
Blockly.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
Blockly.Msg.LISTS_GET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
Blockly.Msg.PROCEDURES_DEFRETURN_DO = Blockly.Msg.PROCEDURES_DEFNORETURN_DO;
Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF = Blockly.Msg.CONTROLS_IF_MSG_ELSEIF;
Blockly.Msg.LISTS_GET_INDEX_HELPURL = Blockly.Msg.LISTS_INDEX_OF_HELPURL;
Blockly.Msg.CONTROLS_FOREACH_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
Blockly.Msg.LISTS_SET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
Blockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
Blockly.Msg.TEXT_APPEND_VARIABLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
Blockly.Msg.LISTS_INDEX_OF_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT = Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT;


text:
package dotty.tools.dotc.config

import java.lang.Character.isWhitespace
import java.nio.file.{Files, Paths}
import scala.annotation.tailrec
import scala.collection.mutable.ArrayBuffer
import scala.jdk.CollectionConverters.*

/** Split a line of text using shell conventions.
 */
object CommandLineParser:
  inline private val DQ  = '"'
  inline private val SQ  = '\''
  inline private val EOF = -1

  /** Split the line into tokens separated by whitespace.
   *
   *  Single or double quotes can be embedded to preserve internal whitespace:
   *
   *  `""" echo "hello, world!" """`   => "echo" :: "hello, world!" :: Nil
   *  `""" echo hello,' 'world! """`   => "echo" :: "hello, world!" :: Nil
   *  `""" echo \"hello, world!\" """` => "echo" :: "\"hello," :: "world!\"" :: Nil
   *
   *  The embedded quotes are stripped. Escaping backslash is not stripped.
   *
   *  Invoke `errorFn` with a descriptive message if an end quote is missing.
   */
  def tokenize(line: String, errorFn: String => Unit): List[String] =

    var accum: List[String] = Nil

    var pos   = 0
    var start = 0
    val qpos  = new ArrayBuffer[Int](16)    // positions of paired quotes in current token

    inline def cur    = if done then EOF else line.charAt(pos): Int
    inline def bump() = pos += 1
    inline def done   = pos >= line.length

    // Skip to the given unescaped end quote; false on no more input.
    def skipToEndQuote(q: Int): Boolean =
      var escaped = false
      def terminal = cur match
        case _ if escaped => escaped = false ; false
        case '\\'         => escaped = true ; false
        case `q` | EOF    => true
        case _            => false
      while !terminal do bump()
      !done

    // Skip to the next whitespace word boundary; record unescaped embedded quotes; false on missing quote.
    def skipToDelim(): Boolean =
      var escaped = false
      inline def quote() = { qpos += pos ; bump() }
      @tailrec def advance(): Boolean = cur match
        case _ if escaped         => escaped = false ; bump() ; advance()
        case '\\'                 => escaped = true ; bump() ; advance()
        case q @ (DQ | SQ)        => { quote() ; skipToEndQuote(q) } && { quote() ; advance() }
        case EOF                  => true
        case c if isWhitespace(c) => true
        case _                    => bump(); advance()
      advance()

    def copyText(): String =
      val buf = new java.lang.StringBuilder
      var p = start
      var i = 0
      while p < pos do
        if i >= qpos.size then
          buf.append(line, p, pos)
          p = pos
        else if p == qpos(i) then
          buf.append(line, qpos(i)+1, qpos(i+1))
          p = qpos(i+1)+1
          i += 2
        else
          buf.append(line, p, qpos(i))
          p = qpos(i)
      buf.toString

    // the current token, stripped of any embedded quotes.
    def text(): String =
      val res =
        if qpos.isEmpty then line.substring(start, pos)
        else if qpos(0) == start && qpos(1) == pos then line.substring(start+1, pos-1)
        else copyText()
      qpos.clear()
      res.nn

    inline def badquote() = errorFn(s"Unmatched quote [${qpos.last}](${line.charAt(qpos.last)})")

    inline def skipWhitespace() = while isWhitespace(cur) do bump()

    @tailrec def loop(): List[String] =
      skipWhitespace()
      start = pos
      if done then
        accum.reverse
      else if !skipToDelim() then
        badquote()
        Nil
      else
        accum ::= text()
        loop()
    end loop

    loop()
  end tokenize

  def tokenize(line: String): List[String] = tokenize(line, x => throw new ParseException(x))

  /** Expands all arguments starting with @ to the contents of the file named like each argument.
   */
  def expandArg(arg: String): List[String] =
    val path = Paths.get(arg.stripPrefix("@"))
    if !Files.exists(path) then
      System.err.nn.println(s"Argument file ${path.nn.getFileName} could not be found")
      Nil
    else
      def stripComment(s: String) = s.indexOf('#') match { case -1 => s case i => s.substring(0, i) }
      val lines = Files.readAllLines(path).nn
      val params = lines.asScala.map(stripComment).filter(!_.nn.isEmpty).mkString(" ")
      tokenize(params)

  class ParseException(msg: String) extends RuntimeException(msg)

redpajama_set_name: RedPajamaGithub


text:
worker-client
=============

Client for Prowls Worker Server


text:
import {
  isArray,
  isBoolean,
  isDate,
  isFunction,
  isNumber,
  isNull,
  isObject,
  isRegExp,
  isString,
  isUndefined,
} from '../../app/javascript/utils/isType';

describe('isArray test suite', () => {
  it('expect true for []', () => expect(isArray([])).toBe(true));
  it('expect false for Boolean', () => expect(isArray(true)).toBe(false));
  it('expect false for Date', () => expect(isArray(new Date())).toBe(false));
  it('expect false for Function', () => expect(isArray(() => {})).toBe(false));
  it('expect false for Number', () => expect(isArray(1)).toBe(false));
  it('expect false for Null', () => expect(isArray(null)).toBe(false));
  it('expect false for Object', () => expect(isArray({})).toBe(false));
  it('expect false for RegExp', () => expect(isArray(/foo/)).toBe(false));
  it('expect false for String', () => expect(isArray('Hello World!')).toBe(false));
  it('expect false for Undefined', () => expect(isArray(undefined)).toBe(false));
  it('expect false for zero args', () => expect(isArray()).toBe(false));
});

describe('isBoolean test suite', () => {
  it('expect true for true', () => expect(isBoolean(true)).toBe(true));
  it('expect true for false', () => expect(isBoolean(true)).toBe(true));
  it('expect false for []', () => expect(isBoolean([])).toBe(false));
  it('expect false for Date', () => expect(isBoolean(new Date())).toBe(false));
  it('expect false for Function', () => expect(isBoolean(() => {})).toBe(false));
  it('expect false for Number', () => expect(isBoolean(1)).toBe(false));
  it('expect false for Null', () => expect(isBoolean(null)).toBe(false));
  it('expect false for Object', () => expect(isBoolean({})).toBe(false));
  it('expect false for RegExp', () => expect(isBoolean(/foo/)).toBe(false));
  it('expect false for String', () => expect(isBoolean('Hello World!')).toBe(false));
  it('expect false for Undefined', () => expect(isBoolean(undefined)).toBe(false));
  it('expect false for zero args', () => expect(isBoolean()).toBe(false));
});

describe('isDate test suite', () => {
  it('expect true for Date', () => expect(isDate(new Date())).toBe(true));
  it('expect false for []', () => expect(isDate([])).toBe(false));
  it('expect false for Boolean', () => expect(isDate(true)).toBe(false));
  it('expect false for Function', () => expect(isDate(() => {})).toBe(false));
  it('expect false for Number', () => expect(isDate(1)).toBe(false));
  it('expect false for Null', () => expect(isDate(null)).toBe(false));
  it('expect false for Object', () => expect(isDate({})).toBe(false));
  it('expect false for RegExp', () => expect(isDate(/foo/)).toBe(false));
  it('expect false for String', () => expect(isDate('Hello World!')).toBe(false));
  it('expect false for zero args', () => expect(isDate(undefined)).toBe(false));
});

describe('isFunction test suite', () => {
  it('expect true for Function', () => expect(isFunction(() => {})).toBe(true));
  it('expect false for []', () => expect(isFunction([])).toBe(false));
  it('expect false for Boolean', () => expect(isFunction(true)).toBe(false));
  it('expect false for Date', () => expect(isFunction(new Date())).toBe(false));
  it('expect false for Number', () => expect(isFunction(1)).toBe(false));
  it('expect false for Null', () => expect(isFunction(null)).toBe(false));
  it('expect false for Object', () => expect(isFunction({})).toBe(false));
  it('expect false for RegExp', () => expect(isFunction(/foo/)).toBe(false));
  it('expect false for String', () => expect(isFunction('Hello World!')).toBe(false));
  it('expect false for undefined', () => expect(isFunction(undefined)).toBe(false));
  it('expect false for zero args', () => expect(isFunction()).toBe(false));
});

describe('isNumber test suite', () => {
  it('expect true for 1', () => expect(isNumber(1)).toBe(true));
  it('expect true for NaN', () => expect(isNumber(NaN)).toBe(true));
  it('expect true for Infinity', () => expect(isNumber(Infinity)).toBe(true));
  it('expect false for []', () => expect(isNumber([])).toBe(false));
  it('expect false for Boolean', () => expect(isNumber(true)).toBe(false));
  it('expect false for Date', () => expect(isNumber(new Date())).toBe(false));
  it('expect false for Null', () => expect(isNumber(null)).toBe(false));
  it('expect false for Object', () => expect(isNumber({})).toBe(false));
  it('expect false for RegExp', () => expect(isNumber(/foo/)).toBe(false));
  it('expect false for String', () => expect(isNumber('Hello World!')).toBe(false));
  it('expect false for undefined', () => expect(isNumber(undefined)).toBe(false));
  it('expect false for zero args', () => expect(isNumber()).toBe(false));
});

describe('isNull test suite', () => {
  it('expect true for Null', () => expect(isNull(null)).toBe(true));
  it('expect false for []', () => expect(isNull([])).toBe(false));
  it('expect false for Boolean', () => expect(isNull(true)).toBe(false));
  it('expect false for Date', () => expect(isNull(new Date())).toBe(false));
  it('expect false for Number', () => expect(isNull(1)).toBe(false));
  it('expect false for Object', () => expect(isNull(Object.create(null))).toBe(false));
  it('expect false for RegExp', () => expect(isNull(/foo/)).toBe(false));
  it('expect false for String', () => expect(isNull('null')).toBe(false));
  it('expect false for undefined', () => expect(isNull(undefined)).toBe(false));
  it('expect false for zero args', () => expect(isNull()).toBe(false));
});

describe('isObject test suite', () => {
  it('expect true for {}', () => expect(isObject({})).toBe(true));
  it('expect true for []', () => expect(isObject([])).toBe(true));
  it('expect true for Date', () => expect(isObject(new Date())).toBe(true));
  it('expect true for RegExp', () => expect(isObject(/foo/)).toBe(true));
  it('expect false for Number', () => expect(isObject(1)).toBe(false));
  it('expect false for Null', () => expect(isObject(null)).toBe(false));
  it('expect false for String', () => expect(isObject('Hello World!')).toBe(false));
  it('expect false for undefined', () => expect(isObject(undefined)).toBe(false));
  it('expect false for zero args', () => expect(isObject()).toBe(false));
});

describe('isRegExp test suite', () => {
  it('expect true for RegExp', () => expect(isRegExp(/foo/)).toBe(true));
  it('expect true for RegExp', () => expect(isRegExp(new RegExp('foo'))).toBe(true));
  it('expect false for []', () => expect(isRegExp([])).toBe(false));
  it('expect false for Boolean', () => expect(isRegExp(true)).toBe(false));
  it('expect false for Date', () => expect(isRegExp(new Date())).toBe(false));
  it('expect false for Number', () => expect(isRegExp(1)).toBe(false));
  it('expect false for Null', () => expect(isRegExp(null)).toBe(false));
  it('expect false for String', () => expect(isRegExp('Hello World!')).toBe(false));
  it('expect false for undefined', () => expect(isRegExp(undefined)).toBe(false));
  it('expect false for zero args', () => expect(isRegExp()).toBe(false));
});

describe('isString test suite', () => {
  it('expect true for String', () => expect(isString('Hello World!')).toBe(true));
  it('expect false for []', () => expect(isString([])).toBe(false));
  it('expect false for Boolean', () => expect(isString(true)).toBe(false));
  it('expect false for Date', () => expect(isString(new Date())).toBe(false));
  it('expect false for Function', () => expect(isString(() => {})).toBe(false));
  it('expect false for Number', () => expect(isString(1)).toBe(false));
  it('expect false for Null', () => expect(isString(null)).toBe(false));
  it('expect false for RegExp', () => expect(isString(/foo/)).toBe(false));
  it('expect false for Undefined', () => expect(isString(undefined)).toBe(false));
  it('expect false for zero args', () => expect(isString()).toBe(false));
});

describe('isUndefined test suite', () => {
  it('expect true for Undefined', () => expect(isUndefined(undefined)).toBe(true));
  it('expect false for zero args', () => expect(isUndefined()).toBe(true));
  it('expect false for []', () => expect(isUndefined([])).toBe(false));
  it('expect false for Boolean', () => expect(isUndefined(true)).toBe(false));
  it('expect false for Date', () => expect(isUndefined(new Date())).toBe(false));
  it('expect false for Function', () => expect(isUndefined(() => {})).toBe(false));
  it('expect false for Number', () => expect(isUndefined(1)).toBe(false));
  it('expect false for Null', () => expect(isUndefined(null)).toBe(false));
  it('expect false for RegExp', () => expect(isUndefined(/foo/)).toBe(false));
  it('expect false for String', () => expect(isUndefined('Hello World!')).toBe(false));
});


text:
var EventEmitter = require('events').EventEmitter;
var util = require('util');
var path = require('path');
var q = global.require('q');
var handlebars = global.require('handlebars');
var module_manager = require('ljswitchboard-module_manager');
var fs = require('fs');
var package_loader = require('ljswitchboard-package_loader');
var gns = package_loader.getNameSpace();
var static_files = require('ljswitchboard-static_files');
var io_manager = require('ljswitchboard-io_manager');
var modbus_map = require('ljswitchboard-modbus_map').getConstants();

// Configure the module_manager persistent data path.
var kiplingExtractionPath = package_loader.getExtractionPath();
var moduleDataPath = path.normalize(path.join(
	kiplingExtractionPath,
	'module_data'
));
module_manager.configurePersistentDataPath(moduleDataPath);
module_manager.disableLinting();

function createModuleLoader() {
	this.stats = {
		'numLoaded': 0
	};
	this.current_module_data = {};

	var eventList = {
		VIEW_READY: 'VIEW_READY',
		UNLOAD_MODULE: 'UNLOAD_MODULE',
		MODULE_READY: 'MODULE_READY',
	};
	this.eventList = eventList;

	var MODULE_LOADER_CSS_DESTINATION_ID = 'module-chrome-loaded-module-css';
	var MODULE_LOADER_JS_DESTINATION_ID = 'module-chrome-loaded-module-js';
	var MODULE_LOADER_VIEW_DESTINATION_ID = 'module-chrome-loaded-module-view';
	var MODULE_LOADER_VIEW_TEMPLATE_ARRAY = [
		'
',
		'{{{viewData}}}',
		'
'
	];
	var MODULE_LOADER_VIEW_TEMPLATE = handlebars.compile(
		MODULE_LOADER_VIEW_TEMPLATE_ARRAY.join('')
	);
	var MODULE_LOADER_VIEW_ID_TEMPLATE = handlebars.compile([
		'#module-chrome-current-module-{{numLoaded}}'
	].join(''));

	var clearCurrentModule = function(newModule) {
		var defered = q.defer();

		// Remove any current listeners from the VIEW_READY and UNLOAD_MODULE
		// events.  They should only be listened to by the currently loaded
		// module.
		self.removeAllListeners(eventList.VIEW_READY);
		self.removeAllListeners(eventList.UNLOAD_MODULE);

		// Clear the DOM elements
		var locationKeys = Object.keys(newModule.outputLocation);
		locationKeys.forEach(function(locationKey) {
			newModule.outputLocation[locationKey].empty();
		});
		defered.resolve(newModule);
		return defered.promise;
		// location.append($(compiledData));
	};

	var getCreatePageElement = function(newModule) {
		var createPageElement = function(newFile) {
			var defered = q.defer();
			var results = {
				'name': newFile.fileName,
			};
			try {
				var fileType = path.extname(newFile.fileName);
				var newElement;
				if(fileType === '.css') {
					newElement = document.createElement('style');
					newElement.setAttribute('type', 'text/css');

					newElement.onload = function() {
						// console.info('!!! '+fileType+' file loaded', newFile.fileName);
						defered.resolve(results);
					};
					newElement.onerror = function() {
						console.error('Error in file' + fileType);
					};

					// Save the file's data
					results.element = newElement;
					newElement.appendChild(document.createTextNode(newFile.fileData));
					newModule.outputLocation.css.append(newElement);
				} else if(fileType === '.js') {
					newElement = document.createElement('script');
					newElement.setAttribute('type', 'text/javascript');
					//

					// Isn't working for .js files :( idk why, it worked before.
					// newElement.onload = function() {
					// console.info('!!! '+fileType+' file loaded', newFile.fileName);
					// defered.resolve(results);
					// };
					// newElement.setAttribute('src', newFile.filePath);

					// Save the file's data
					results.element = newElement;
					newElement.appendChild(document.createTextNode(newFile.fileData));
					newModule.outputLocation.js.append(newElement);
					defered.resolve(results);
				} else {
					console.error('Trying to load invalid fileType', fileType);
					defered.resolve(results);
				}
			} catch(err) {
				console.error('Error Loading Element', err);
				console.error(newFile.fileName);
				results.element = undefined;
				defered.resolve(results);
			}

			return defered.promise;
		};
		return createPageElement;
	};

	var loadCSSFiles = function(newModule) {
		var defered = q.defer();
		var promises = newModule.css.map(getCreatePageElement(newModule));

		q.allSettled(promises)
		.then(function(results) {
			defered.resolve(newModule);
		}, function(err) {
			console.error('Finished Loading Err', err);
			defered.reject(newModule);
		});
		return defered.promise;
	};
	var loadJSFiles = function(newModule) {
		var defered = q.defer();
		var promises = newModule.js.map(getCreatePageElement(newModule));

		q.allSettled(promises)
		.then(function(results) {
			defered.resolve(newModule);
		}, function(err) {
			console.error('Finished Loading Err', err);
			defered.reject(newModule);
		});
		return defered.promise;
	};
	var precompileFunctions = [];
	this.addPreloadStep = function(func) {
		precompileFunctions.push(func);
	};

	var getModuleContext = function(newModule) {
		var defered = q.defer();
		var promises = [];
		var i;
		for(i = 0; i < precompileFunctions.length; i++) {
			// console.info(
			// 	'Executing precompile function',
			// 	i,
			// 	precompileFunctions.length
			// );
			promises.push(precompileFunctions[i](newModule));
		}
		q.allSettled(promises)
		.then(function(results) {
			// remove precompile functions
			precompileFunctions = [];
			defered.resolve(newModule);
		}, function(err) {
			console.error('Finished pre-compilation steps', err);
			defered.reject(newModule);
		});
		return defered.promise;
	};

	var getUpdatedDeviceListing = function(newModule) {
		var defered = q.defer();
		var io_interface = io_manager.io_interface();
		var device_controller = io_interface.getDeviceController();

		// Filter what devices are displayed
		var filters;
		if(newModule.data.supportedDevices) {
			filters = newModule.data.supportedDevices;
		}
		device_controller.getDeviceListing(filters)
		.then(function(deviceListing) {
			newModule.context.devices = deviceListing;
			defered.resolve(newModule);
		});
		return defered.promise;
	};
	var loadHTMLFiles = function(newModule) {
		var defered = q.defer();
		// console.log('loaded html files', newModule.htmlFiles);
		var htmlFile = '
No view.html file loaded.
';
		// Check to see if a framework is being loaded:
		if(newModule.data.framework) {
			if(newModule.htmlFiles.framework_view) {
				htmlFile = newModule.htmlFiles.framework_view;
			} else if(newModule.htmlFiles.view) {
				htmlFile = newModule.htmlFiles.view;
			}
		} else {
			if(newModule.htmlFiles.view) {
				htmlFile = newModule.htmlFiles.view;
			}
		}

		// Compile & populate the view.html file
		var template = handlebars.compile(htmlFile);
		var data = template(newModule.context);

		// Append a header & footer onto the template.
		data = MODULE_LOADER_VIEW_TEMPLATE({
			'numLoaded': newModule.context.stats.numLoaded,
			'viewData': data,
		});

		// Add the page data to the dom.
		newModule.outputLocation.view.append(data);

		// Build the elementID string that was assigned to the element when
		// compiling the "MODULE_LOADER_VIEW_TEMPLATE"
		var elementID = MODULE_LOADER_VIEW_ID_TEMPLATE({
			'numLoaded': newModule.context.stats.numLoaded,
		});

		// Attach to the .ready event of the element just created.
		// Element must already be added because we use jquery to search for
		// the element's ID to attach to the "ready" event.
		$(elementID).ready(function() {
			defered.resolve(newModule);
			var loadedData = {
				'name': newModule.name,
				'id': elementID,
				'data': newModule,
				'humanName': newModule.data.humanName,
			};
			self.emit(eventList.VIEW_READY, loadedData);
			self.current_module_data = null;
			self.current_module_data = undefined;
			self.current_module_data = loadedData;
		});
		return defered.promise;
	};
	var updateStatistics = function(newModule) {
		var defered = q.defer();
		self.stats.numLoaded += 1;
		defered.resolve(newModule);
		return defered.promise;
	};
	var runGC = function(data) {
		var defered = q.defer();
		var gcExecuted = false;
		if(gc) {
			if(gc.call) {
				if(typeof(gc.call) === 'function') {
					gc.call();
					gcExecuted = true;
				}
			}
		}
		if(gcExecuted) {
			// console.log('gc.call executed');
		} else {
			// console.log('gc.call not executed');
		}

		defered.resolve(data);
		return defered.promise;
	};

	var unloadModuleFunctions = [];
	this.addUnloadStep = function(func) {
		unloadModuleFunctions.push(func);
	};

	var executeUnloadModuleFunctions = function(moduleData) {
		var defered = q.defer();

		if(unloadModuleFunctions.length > 0) {
			var promises = [];
			var i;
			for(i = 0; i < unloadModuleFunctions.length; i++) {
				promises.push(unloadModuleFunctions[i]());
			}
			q.allSettled(promises)
			.then(function(results) {
				unloadModuleFunctions = [];
				defered.resolve(moduleData);
			}, function(err) {
				console.error('Finished unload-module steps', err);
				defered.resolve(moduleData);
			});
		} else {
			defered.resolve(moduleData);
		}

		return defered.promise;
	};
	var renderModule = function(moduleData) {
		var defered = q.defer();
		// Trigger any loaded module to halt its execution
		self.emit(eventList.UNLOAD_MODULE, {
			'data': 'testData...'
		});
		moduleData.loadResults = {
			'overallResult': true,
			'css': [],
			'js': [],
			'html': [],
		};
		// coppied directory of the static_files project location.
		var cpdDir = JSON.parse(JSON.stringify(static_files.getDir()));
		// console.log('coppied directory', cpdDir);
		moduleData.context = {
			'stats': self.stats,
			'staticFiles': cpdDir,
			'devices': undefined,
		};
		moduleData.outputLocation = {
			'css': $('#' + MODULE_LOADER_CSS_DESTINATION_ID),
			'js': $('#' + MODULE_LOADER_JS_DESTINATION_ID),
			'view': $('#' + MODULE_LOADER_VIEW_DESTINATION_ID),
		};
		// moduleData.outputLocationID = MODULE_LOADER_DESTINATION_ID;
		clearCurrentModule(moduleData)
		.then(loadCSSFiles)
		.then(loadJSFiles)
		.then(getUpdatedDeviceListing)
		.then(getModuleContext)
		.then(loadHTMLFiles)
		.then(updateStatistics)
		.then(runGC)
		.then(defered.resolve, defered.reject);
		return defered.promise;
	};

	this.loadModule = function(moduleObject) {
		var defered = q.defer();
		module_manager.loadModuleData(moduleObject)
		.then(executeUnloadModuleFunctions)
		.then(renderModule)
		.then(defered.resolve, defered.reject);
		return defered.promise;
	};

	this.loadModuleByName = function(moduleName) {
		var defered = q.defer();
		module_manager.loadModuleDataByName(moduleName)
		.then(executeUnloadModuleFunctions)
		.then(renderModule)
		.then(defered.resolve, defered.reject);
		return defered.promise;
	};
	var self = this;
}
util.inherits(createModuleLoader, EventEmitter);

var MODULE_LOADER = new createModuleLoader();


text:
Ray-Tracer
==========

Computer Graphics Topic: Realistic Ray Tracer


text:
// Copyright (C) 2012 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package com.google.gerrit.server.git;

import com.google.common.collect.Sets;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.GarbageCollectionResult;
import com.google.gerrit.common.data.GarbageCollectionResult.GcError;
import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.events.GarbageCollectorListener;
import com.google.gerrit.server.config.GcConfig;
import com.google.gerrit.server.extensions.events.AbstractNoNotifyEvent;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import com.google.inject.Inject;
import java.io.PrintWriter;
import java.util.List;
import java.util.Properties;
import java.util.Set;
import org.eclipse.jgit.api.GarbageCollectCommand;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.errors.RepositoryNotFoundException;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.ConfigConstants;
import org.eclipse.jgit.lib.NullProgressMonitor;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.TextProgressMonitor;
import org.eclipse.jgit.storage.pack.PackConfig;

/** Serial execution of GC on a list of repositories. */
public class GarbageCollection {
  private static final FluentLogger logger = FluentLogger.forEnclosingClass();

  private final GitRepositoryManager repoManager;
  private final GarbageCollectionQueue gcQueue;
  private final GcConfig gcConfig;
  private final PluginSetContext<GarbageCollectorListener> listeners;

  public interface Factory {
    GarbageCollection create();
  }

  @Inject
  GarbageCollection(
      GitRepositoryManager repoManager,
      GarbageCollectionQueue gcQueue,
      GcConfig config,
      PluginSetContext<GarbageCollectorListener> listeners) {
    this.repoManager = repoManager;
    this.gcQueue = gcQueue;
    this.gcConfig = config;
    this.listeners = listeners;
  }

  public GarbageCollectionResult run(List<Project.NameKey> projectNames) {
    return run(projectNames, null);
  }

  public GarbageCollectionResult run(List<Project.NameKey> projectNames, PrintWriter writer) {
    return run(projectNames, gcConfig.isAggressive(), writer);
  }

  /** Runs GC on the given projects, serially. Progress is written to writer if non-null. */
  public GarbageCollectionResult run(
      List<Project.NameKey> projectNames, boolean aggressive, @Nullable PrintWriter writer) {
    GarbageCollectionResult result = new GarbageCollectionResult();
    Set<Project.NameKey> projectsToGc = gcQueue.addAll(projectNames);
    for (Project.NameKey projectName :
        Sets.difference(Sets.newHashSet(projectNames), projectsToGc)) {
      result.addError(new GcError(GcError.Type.GC_ALREADY_SCHEDULED, projectName));
    }
    for (Project.NameKey p : projectsToGc) {
      try (Repository repo = repoManager.openRepository(p)) {
        logGcConfiguration(p, repo, aggressive);
        print(writer, "collecting garbage for \"" + p + "\":\n");
        GarbageCollectCommand gc =
            Git.wrap(
                    repo instanceof DelegateRepository
                        ? ((DelegateRepository) repo).delegate()
                        : repo)
                .gc();
        gc.setAggressive(aggressive);
        logGcInfo(p, "before:", gc.getStatistics());
        gc.setProgressMonitor(
            writer != null ? new TextProgressMonitor(writer) : NullProgressMonitor.INSTANCE);
        Properties statistics = gc.call();
        logGcInfo(p, "after: ", statistics);
        print(writer, "done.\n\n");
        fire(p, statistics);
      } catch (RepositoryNotFoundException e) {
        logGcError(writer, p, e);
        result.addError(new GcError(GcError.Type.REPOSITORY_NOT_FOUND, p));
      } catch (Exception e) {
        logGcError(writer, p, e);
        result.addError(new GcError(GcError.Type.GC_FAILED, p));
      } finally {
        gcQueue.gcFinished(p);
      }
    }
    return result;
  }

  private void fire(Project.NameKey p, Properties statistics) {
    if (!listeners.iterator().hasNext()) {
      return;
    }
    Event event = new Event(p, statistics);
    listeners.runEach(l -> l.onGarbageCollected(event));
  }

  private static void logGcInfo(Project.NameKey projectName, String msg) {
    logGcInfo(projectName, msg, null);
  }

  private static void logGcInfo(Project.NameKey projectName, String msg, Properties statistics) {
    StringBuilder b = new StringBuilder();
    b.append("[").append(projectName.get()).append("] ");
    b.append(msg);
    if (statistics != null) {
      b.append(" ");
      String s = statistics.toString();
      if (s.startsWith("{") && s.endsWith("}")) {
        s = s.substring(1, s.length() - 1);
      }
      b.append(s);
    }
    logger.atInfo().log("%s", b);
  }

  private static void logGcConfiguration(
      Project.NameKey projectName, Repository repo, boolean aggressive) {
    StringBuilder b = new StringBuilder();
    Config cfg = repo.getConfig();
    b.append("gc.aggressive=").append(aggressive).append("; ");
    b.append(formatConfigValues(cfg, ConfigConstants.CONFIG_GC_SECTION, null));
    for (String subsection : cfg.getSubsections(ConfigConstants.CONFIG_GC_SECTION)) {
      b.append(formatConfigValues(cfg, ConfigConstants.CONFIG_GC_SECTION, subsection));
    }
    if (b.length() == 0) {
      b.append("no set");
    }

    logGcInfo(projectName, "gc config: " + b.toString());
    logGcInfo(projectName, "pack config: " + new PackConfig(repo).toString());
  }

  private static String formatConfigValues(Config config, String section, String subsection) {
    StringBuilder b = new StringBuilder();
    Set<String> names = config.getNames(section, subsection);
    for (String name : names) {
      String value = config.getString(section, subsection, name);
      b.append(section);
      if (subsection != null) {
        b.append(".").append(subsection);
      }
      b.append(".");
      b.append(name).append("=").append(value);
      b.append("; ");
    }
    return b.toString();
  }

  private static void logGcError(PrintWriter writer, Project.NameKey projectName, Exception e) {
    print(writer, "failed.\n\n");
    StringBuilder b = new StringBuilder();
    b.append("[").append(projectName.get()).append("]");
    logger.atSevere().withCause(e).log("%s", b);
  }

  private static void print(PrintWriter writer, String message) {
    if (writer != null) {
      writer.print(message);
    }
  }

  private static class Event extends AbstractNoNotifyEvent
      implements GarbageCollectorListener.Event {
    private final Project.NameKey p;
    private final Properties statistics;

    Event(Project.NameKey p, Properties statistics) {
      this.p = p;
      this.statistics = statistics;
    }

    @Override
    public String getProjectName() {
      return p.get();
    }

    @Override
    public Properties getStatistics() {
      return statistics;
    }
  }
}


text:
using NJsonSchema.Annotations;
using System;
using System.Collections.Generic;
using System.Text;

namespace Satrabel.OpenApp.UIAttributes
{
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property, AllowMultiple = true)]
    public class UIGridAttribute: JsonSchemaExtensionDataAttribute
    {
        public UIGridAttribute(bool show) : base("x-ui-grid",show)
        {

        }
    }
}


text:
.class final Lcom/android/server/display/WifiDisplayAdapter$WifiDisplayHandler;
.super Landroid/os/Handler;
.source "WifiDisplayAdapter.java"

# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Lcom/android/server/display/WifiDisplayAdapter;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x12
    name = "WifiDisplayHandler"
.end annotation

# instance fields
.field final synthetic this$0:Lcom/android/server/display/WifiDisplayAdapter;

# direct methods
.method public constructor <init>(Lcom/android/server/display/WifiDisplayAdapter;Landroid/os/Looper;)V
    .locals 2
    .param p2, "looper"    # Landroid/os/Looper;

    .prologue
    .line 645
    iput-object p1, p0, Lcom/android/server/display/WifiDisplayAdapter$WifiDisplayHandler;->this$0:Lcom/android/server/display/WifiDisplayAdapter;

    .line 646
    const/4 v0, 0x0

    const/4 v1, 0x1

    invoke-direct {p0, p2, v0, v1}, Landroid/os/Handler;-><init>(Landroid/os/Looper;Landroid/os/Handler$Callback;Z)V

    .line 647
    return-void
.end method

# virtual methods
.method public handleMessage(Landroid/os/Message;)V
    .locals 1
    .param p1, "msg"    # Landroid/os/Message;

    .prologue
    .line 651
    iget v0, p1, Landroid/os/Message;->what:I

    packed-switch v0, :pswitch_data_0

    .line 656
    :goto_0
    return-void

    .line 653
    :pswitch_0
    iget-object v0, p0, Lcom/android/server/display/WifiDisplayAdapter$WifiDisplayHandler;->this$0:Lcom/android/server/display/WifiDisplayAdapter;

    # invokes: Lcom/android/server/display/WifiDisplayAdapter;->handleSendStatusChangeBroadcast()V
    invoke-static {v0}, Lcom/android/server/display/WifiDisplayAdapter;->access$1700(Lcom/android/server/display/WifiDisplayAdapter;)V

    goto :goto_0

    .line 651
    :pswitch_data_0
    .packed-switch 0x1
        :pswitch_0
    .end packed-switch
.end method


text:
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using MadModKit_WF.Settings;
using System.Diagnostics;
using System.Windows.Forms;

namespace MadModKit_WF.Tools
{
    class Exporting
    {
        public Exporting(DirectoryInfo dir)
        {
            content = dir;
        }

        Process process;
        DirectoryInfo content;
        string output;

        public void ExportFBX(DirectoryInfo depot, DirectoryInfo file, DirectoryInfo outDir, DirectoryInfo exportDir, string fbxFormat)
        {
            MainForm.dataGridView.Invoke(new Action(() => MainForm.dataGridView.Rows.Add(ActionName.Export, content.FullName, StatusName.Queue)));
            MainForm.semaphore.WaitOne();

            var selectedFile = (file.ToString()).Replace(Directories.UncookedFolderPath.FullName + "\\", ""); // file w/o depot
            var expFile = (outDir.ToString()).Replace(Directories.UncookedFolderPath.FullName + "\\", ""); // file w/o depot
            var path = Path.Combine(exportDir.FullName, expFile); // out path

            foreach (DataGridViewRow row in MainForm.dataGridView.Rows)
            {
                if (row.Cells[1].Value.ToString() == content.FullName && row.Cells[2].Value.ToString() != StatusName.Completed.ToString())
                {
                    MainForm.dataGridView.Invoke(new Action(() => MainForm.dataGridView.Rows[row.Index].Cells[2].Value = StatusName.Processing));
                }
            }

            process = new Process()
            {
                StartInfo =
                {
                    WorkingDirectory = Directories.Wcc_liteEXEPath.FullName,
                    FileName = Directories.Wcc_liteEXEPath.FullName + @"\wcc_lite.exe",
                    Arguments = "export -depot=\"" + depot + "\" -file=\"" + selectedFile + "\" -out=\"" + path + "\" -fbx=" + fbxFormat + "",
                    RedirectStandardOutput = true,
                    UseShellExecute = false,
                    CreateNoWindow = true
                }
            };
            process.EnableRaisingEvents = true;
            process.Exited += Process_Exited;
            process.Start();
            MainForm.processList.Add(process);

            output = process.StandardOutput.ReadToEnd();
        }

        public void Export2DTexure(DirectoryInfo depot, DirectoryInfo file, DirectoryInfo outDir, DirectoryInfo exportDir)
        {
            MainForm.dataGridView.Invoke(new Action(() => MainForm.dataGridView.Rows.Add(ActionName.Export, content.FullName, StatusName.Queue)));
            MainForm.semaphore.WaitOne();

            var exportedFile = Path.GetFileName(outDir.Name);
            var selectedFile = (file.ToString()).Replace(Directories.UncookedFolderPath.FullName + "\\", ""); // file w/o depot
            var dir = Path.GetDirectoryName(outDir.FullName);

            var subdir = dir.Replace(Directories.UncookedFolderPath.FullName + "\\", "");
            DirectoryInfo outDirectoryInfo = new DirectoryInfo(exportDir.FullName);
            var rawPath = outDirectoryInfo.CreateSubdirectory(subdir);

            var path = Path.Combine(rawPath.FullName, exportedFile);

            foreach (DataGridViewRow row in MainForm.dataGridView.Rows)
            {
                if (row.Cells[1].Value.ToString() == content.FullName && row.Cells[2].Value.ToString() != StatusName.Completed.ToString())
                {
                    MainForm.dataGridView.Invoke(new Action(() => MainForm.dataGridView.Rows[row.Index].Cells[2].Value = StatusName.Processing));
                }
            }

            process = new Process()
            {
                StartInfo =
                {
                    WorkingDirectory = Directories.Wcc_liteEXEPath.FullName,
                    FileName = Directories.Wcc_liteEXEPath.FullName + @"\wcc_lite.exe",
                    Arguments = "export -depot=\"" + depot + "\" -file=\"" + selectedFile + "\" -out=\"" + path + "\"",
                    RedirectStandardOutput = true,
                    UseShellExecute = false,
                    CreateNoWindow = true
                }
            };
            process.EnableRaisingEvents = true;
            process.Exited += Process_Exited;
            process.Start();
            MainForm.processList.Add(process);

            output = process.StandardOutput.ReadToEnd();
        }

        private void Process_Exited(object sender, EventArgs e)
        {
            MainForm.semaphore.Release();
            MainForm.threadCount--;

            foreach (DataGridViewRow row in MainForm.dataGridView.Rows)
            {
                if (row.Cells[1].Value.ToString() == content.FullName)
                {
                    MainForm.dataGridView.Invoke(new Action(() => MainForm.dataGridView.Rows[row.Index].Cells[2].Value = StatusName.Completed));
                }
            }

            MainForm.processList.Remove(process);

            SaveLogFile slf = new SaveLogFile(output, ActionName.Export.ToString());
            slf.SaveLog();
        }
    }
}


text:
#include "EppResponseDataRenewDomain.hpp"
#include "EppUtil.hpp"

EppResponseDataRenewDomain * EppResponseDataRenewDomain::fromXML( const DOMNode& root )
{
	DOMString roid;
	DOMString domain;
	time_t exDate = 0;

	DOMNodeList* list = root.getChildNodes();
	for( unsigned int i = 0; i < list->getLength(); i++ )
	{
		DOMNode* node = list->item(i);
		DOMString name = node->getLocalName();

		if( name.isNull() )
		{
			name = node->getNodeName();
		}
		if( name.isNull() )
		{
			continue;
		}
		//if( name.equals("roid") )
		if( name.equals("roid") || name.equals("domain:roid") )
		{
			roid = EppUtil::getText(*node);
		}
		//else if( name.equals("name") )
		else if( name.equals("name") || name.equals("domain:name") )
		{
			domain = EppUtil::getText(*node);
		}
		//else if( name.equals("exDate") )
		else if( name.equals("exDate") || name.equals("domain:exDate") )
		{
			exDate = EppUtil::getDate(*node);
		}
	}

	return new EppResponseDataRenewDomain(domain, roid, exDate);
}

DOMElement* EppResponseDataRenewDomain::toXML( DOMDocument& doc, const DOMString& tag )
{
	DOMElement* elm;
	DOMElement* body = doc.createElement(tag);
	DOMElement* data = EppUtil::createElementNS(doc, "domain", "renData");
	body->appendChild(data);

	if( name.isNotNull() )
	{
		elm = doc.createElement(XS("name"));
		elm->appendChild(doc.createTextNode(name));
		data->appendChild(elm);
	}
	if( roid.isNotNull() )
	{
		elm = doc.createElement(XS("roid"));
		elm->appendChild(doc.createTextNode(roid));
		data->appendChild(elm);
	}
	if( exDate != 0 )
	{
		elm = doc.createElement(XS("exDate"));
		elm->appendChild(EppUtil::createTextNode(doc, exDate));
		data->appendChild(elm);
	}

	return body;
}


text:
@interface Color ()

@property(nonatomic, retain) UIColor *value;

@end

@implementation Color

+ (instancetype)withColor:(UIColor *)value {
    return [[Color alloc] initWithValue:value];
}

- (instancetype)initWithValue:(UIColor *)value {
    return [super initWithValue:value];
}

- (UIColor *)get {
    return self.value;
}

- (UIColor *)withDefault:(id)defaultValue {
    return [super withDefault:defaultValue];
}

- (NSString *)description {
    return [self hexStringFromColor:[self withDefault:nil]];
}

- (NSString *)hexStringFromColor:(UIColor *)color {
    const CGFloat *components = CGColorGetComponents(color.CGColor);

    CGFloat r = components[0];
    CGFloat g = components[1];
    CGFloat b = components[2];

    return [NSString
        stringWithFormat:@"#%02lX%02lX%02lX", lroundf(r * 255), lroundf(g * 255), lroundf(b * 255)];
}

@end


text:
Scene::Scene(std::unique_ptr<PrimitiveContainer> container)
	: container(std::move(container))
{}

const std::vector<Light>& Scene::getLights() const
{
	return lights;
}

void Scene::addLight(const Light& l)
{
	lights.push_back(l);
}

void Scene::addObject(std::unique_ptr<const Primitive> object)
{
	container->addObject(std::move(object));
}

std::tuple<Primitive const*, Vector3DBase> Scene::getIntersectingObject(const Ray& ray) const
{
	return container->getIntersectingObject(ray);
}


text:
ACCEPTED

#### According to
Index Fungorum

#### Published in
Annls mycol. 14(6): 409 (1917)

#### Original name
Asterina splendens Pat.

### Remarks
null


text:
  <address class="footer">Generated on $date for $projectname $projectnumber by Doxygen $doxygenversion
</address>


text:
<Alloy>
	<Window id="place">
	    <Label id="placeTitle" />
        <Label id="placeAddedAt" />
        <Label id="placeAdress" />

        <Button id="seeMap" />
		<Button id="deletePlace" />

	</Window>
</Alloy>