text:
/* eslint-disable */
;(function(root, factory) {
  if (typeof define === 'function' && define.amd) { // AMD
    define([], factory);
  } else if (typeof exports === 'object') { // Node.js
    module.exports = factory();
  } else { // Browser
    var messages = factory();
    for (var key in messages) {
      root.Blockly.Msg[key] = messages[key];
    }
  }
}(this, function() {
// This file was automatically generated.  Do not modify.

'use strict';

var Blockly = Blockly || { Msg: Object.create(null) };

Blockly.Msg["ADD_COMMENT"] = "Engadir un comentario";
Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'";  // untranslated
Blockly.Msg["CHANGE_VALUE_TITLE"] = "Cambiar o valor:";
Blockly.Msg["CLEAN_UP"] = "Limpar os bloques";
Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings.";  // untranslated
Blockly.Msg["COLLAPSE_ALL"] = "Contraer os bloques";
Blockly.Msg["COLLAPSE_BLOCK"] = "Contraer o bloque";
Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "cor 1";
Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "cor 2";
Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp";  // untranslated
Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporción";
Blockly.Msg["COLOUR_BLEND_TITLE"] = "mesturar";
Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mestura dúas cores ca proporción indicada (0.0 - 1.0).";
Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://gl.wikipedia.org/wiki/Cor";
Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Escolle unha cor da paleta.";
Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com";  // untranslated
Blockly.Msg["COLOUR_RANDOM_TITLE"] = "cor ó chou";
Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Escolle unha cor ao chou.";
Blockly.Msg["COLOUR_RGB_BLUE"] = "azul";
Blockly.Msg["COLOUR_RGB_GREEN"] = "verde";
Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html";  // untranslated
Blockly.Msg["COLOUR_RGB_RED"] = "vermello";
Blockly.Msg["COLOUR_RGB_TITLE"] = "colorar con";
Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.";  // untranslated
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";  // untranslated
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop";  // untranslated
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop";  // untranslated
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop.";  // untranslated
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration.";  // untranslated
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop.";  // untranslated
Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each";  // untranslated
Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2";  // untranslated
Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements.";  // untranslated
Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with";  // untranslated
Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4";  // untranslated
Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.";  // untranslated
Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block.";  // untranslated
Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block.";  // untranslated
Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse";  // untranslated
Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block.";  // untranslated
Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "senón";
Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "mais se";
Blockly.Msg["CONTROLS_IF_MSG_IF"] = "se";
Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements.";  // untranslated
Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements.";  // untranslated
Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.";  // untranslated
Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.";  // untranslated
Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop";  // untranslated
Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "facer";
Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times";  // untranslated
Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Faga algunhas instrucións varias veces.";
Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat";  // untranslated
Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repetir ata";
Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repetir mentres";
Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements.";  // untranslated
Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements.";  // untranslated
Blockly.Msg["DELETE_ALL_BLOCKS"] = "Queres eliminar os %1 bloques?";
Blockly.Msg["DELETE_BLOCK"] = "Borrar o bloque";
Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable";  // untranslated
Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?";  // untranslated
Blockly.Msg["DELETE_X_BLOCKS"] = "Borrar %1 bloques";
Blockly.Msg["DIALOG_CANCEL"] = "Cancelar";
Blockly.Msg["DIALOG_OK"] = "Aceptar";
Blockly.Msg["DISABLE_BLOCK"] = "Desactivar o bloque";
Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicar";
Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicar o comentario";
Blockly.Msg["ENABLE_BLOCK"] = "Activar o bloque";
Blockly.Msg["EXPAND_ALL"] = "Expandir os bloques";
Blockly.Msg["EXPAND_BLOCK"] = "Expandir o bloque";
Blockly.Msg["EXTERNAL_INPUTS"] = "Entradas externas";
Blockly.Msg["HELP"] = "Axuda";
Blockly.Msg["INLINE_INPUTS"] = "Entradas en liña";
Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list";  // untranslated
Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list";  // untranslated
Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records";  // untranslated
Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "listaxe";
Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block.";  // untranslated
Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with";  // untranslated
Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with";  // untranslated
Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list.";  // untranslated
Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items.";  // untranslated
Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primeiro";
Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end";  // untranslated
Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#";  // untranslated
Blockly.Msg["LISTS_GET_INDEX_GET"] = "get";  // untranslated
Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove";  // untranslated
Blockly.Msg["LISTS_GET_INDEX_LAST"] = "derradeiro";
Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ó chou";
Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove";  // untranslated
Blockly.Msg["LISTS_GET_INDEX_TAIL"] = "";  // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list.";  // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list.";  // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list.";  // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list.";  // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list.";  // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list.";  // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list.";  // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list.";  // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list.";  // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list.";  // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list.";  // untranslated
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list.";  // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end";  // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #";  // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last";  // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist";  // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first";  // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end";  // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #";  // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "";  // untranslated
Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list.";  // untranslated
Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 é o derradeiro elemento.";
Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 é o primeiro elemento.";
Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item";  // untranslated
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"] = "find last occurrence of item";  // untranslated
Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found.";  // untranslated
Blockly.Msg["LISTS_INLIST"] = "na listaxe";
Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty";  // untranslated
Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 atópase baleira";
Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Retona verdadeiro se a listaxe atópase baleira.";
Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of";  // untranslated
Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1";  // untranslated
Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list.";  // untranslated
Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with";  // untranslated
Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times";  // untranslated
Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times.";  // untranslated
Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list";  // untranslated
Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1";  // untranslated
Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list.";  // untranslated
Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set";  // untranslated
Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "como";
Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserir en";
Blockly.Msg["LISTS_SET_INDEX_SET"] = "definir";
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list.";  // untranslated
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list.";  // untranslated
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list.";  // untranslated
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list.";  // untranslated
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list.";  // untranslated
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list.";  // untranslated
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list.";  // untranslated
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list.";  // untranslated
Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";  // untranslated
Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascendente";
Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente";
Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3";  // untranslated
Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordear unha copia dunha listaxe.";
Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabética, iñorar maiúsculas/minúsculas";
Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numérica";
Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabética";
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"] = "make list from text";  // untranslated
Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list";  // untranslated
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"] = "falso";
Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values";  // untranslated
Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false.";  // untranslated
Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "verdadeiro";
Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)";  // untranslated
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other.";  // untranslated
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input.";  // untranslated
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input.";  // untranslated
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input.";  // untranslated
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input.";  // untranslated
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other.";  // untranslated
Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not";  // untranslated
Blockly.Msg["LOGIC_NEGATE_TITLE"] = "non %1";
Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true.";  // untranslated
Blockly.Msg["LOGIC_NULL"] = "nulo";
Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type";  // untranslated
Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Retornar nulo.";
Blockly.Msg["LOGIC_OPERATION_AND"] = "e";
Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations";  // untranslated
Blockly.Msg["LOGIC_OPERATION_OR"] = "ou";
Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true.";  // untranslated
Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true.";  // untranslated
Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "proba";
Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:";  // untranslated
Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se falso";
Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se verdadeiro";
Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.";  // untranslated
Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+";  // untranslated
Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://gl.wikipedia.org/wiki/Aritmética";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Retorna a suma de dous números.";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Retorna o cociente da división de dous números.";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Retorna a diferenza de dous números.";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Retorna o produto de dous números.";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Retorna o primeiro número elevado á potencia do segundo número.";
Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2";  // untranslated
Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2";  // untranslated
Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180.";  // untranslated
Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter";  // untranslated
Blockly.Msg["MATH_CHANGE_TITLE"] = "mudar %1 por %2";
Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Suma un número á variábel '%1'.";
Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://gl.wikipedia.org/wiki/Constante_matemática";
Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Retorna unha das constantes comúns: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ou ∞ (infinito).";
Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)";  // untranslated
Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3";  // untranslated
Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive).";  // untranslated
Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷";  // untranslated
Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "é divisíbel por";
Blockly.Msg["MATH_IS_EVEN"] = "é par";
Blockly.Msg["MATH_IS_NEGATIVE"] = "é negativo";
Blockly.Msg["MATH_IS_ODD"] = "é impar";
Blockly.Msg["MATH_IS_POSITIVE"] = "é positivo";
Blockly.Msg["MATH_IS_PRIME"] = "é primo";
Blockly.Msg["MATH_IS_TOOLTIP"] = "Verifica se un número é par, impar, primo, enteiro, positivo, negativo, ou se é divisíbel por outro número.  Retorna verdadeiro ou falso.";
Blockly.Msg["MATH_IS_WHOLE"] = "é enteiro";
Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation";  // untranslated
Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2";  // untranslated
Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers.";  // untranslated
Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×";  // untranslated
Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number";  // untranslated
Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un número.";
Blockly.Msg["MATH_ONLIST_HELPURL"] = "";  // untranslated
Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "media dunha listaxe";
Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maior dunha listaxe";
Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list";  // untranslated
Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "menor dunha listaxe";
Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list";  // untranslated
Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list";  // untranslated
Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list";  // untranslated
Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma da listaxe";
Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list.";  // untranslated
Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Retorna o maior número da listaxe";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list.";  // untranslated
Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Retorna o menor número da listaxe.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list.";  // untranslated
Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list.";  // untranslated
Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list.";  // untranslated
Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Retorna a suma de tódolos números da listaxe.";
Blockly.Msg["MATH_POWER_SYMBOL"] = "^";  // untranslated
Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation";  // untranslated
Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction";  // untranslated
Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).";  // untranslated
Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation";  // untranslated
Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2";  // untranslated
Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive.";  // untranslated
Blockly.Msg["MATH_ROUND_HELPURL"] = "https://gl.wikipedia.org/wiki/Arredondamento";
Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arredonda";
Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arredonda cara abaixo";
Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arredonda cara arriba";
Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arredonda un número cara enriba ou cara abaixo.";
Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://gl.wikipedia.org/wiki/Raíz_cadrada";
Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluto";
Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "raíz cadrada";
Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Retorna o valor absoluto dun número.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Retorna o número e elevado á potencia dun número.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Retorna o logarítmo natural dun número.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Retorna o logarítmo en base 10 dun número.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Retorna o oposto dun número.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Retorna 10 elevado á potencia dun número.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Retorna a raíz cadrada dun número.";
Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-";  // untranslated
Blockly.Msg["MATH_TRIG_ACOS"] = "acos";  // untranslated
Blockly.Msg["MATH_TRIG_ASIN"] = "asin";  // untranslated
Blockly.Msg["MATH_TRIG_ATAN"] = "atan";  // untranslated
Blockly.Msg["MATH_TRIG_COS"] = "cos";  // untranslated
Blockly.Msg["MATH_TRIG_HELPURL"] = "https://gl.m.wikipedia.org/wiki/Función_trigonométrica";
Blockly.Msg["MATH_TRIG_SIN"] = "sin";  // untranslated
Blockly.Msg["MATH_TRIG_TAN"] = "tan";  // untranslated
Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Retorna o arco coseno dun número.";
Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Retorna o arco seno dum número.";
Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Retorna o arco tanxente dun número.";
Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Retorna o coseno dun grao (non radiano).";
Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Retorna o seno dun grao (non radiano).";
Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Retorna a tanxente dun grao (non radiano).";
Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable...";  // untranslated
Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable...";  // untranslated
Blockly.Msg["NEW_STRING_VARIABLE"] = "Crar unha variábel de cadea...";
Blockly.Msg["NEW_VARIABLE"] = "Crear a variable...";
Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nome da nova variable:";
Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:";  // untranslated
Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = "";  // untranslated
Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements";  // untranslated
Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "con:";
Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine";  // untranslated
Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'.";  // untranslated
Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine";  // untranslated
Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output.";  // untranslated
Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "con:";
Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'";  // untranslated
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/Subroutine";  // untranslated
Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "facer algo";
Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "cara";
Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output.";  // untranslated
Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine";  // untranslated
Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retornar";
Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output.";  // untranslated
Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters.";  // untranslated
Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition";  // untranslated
Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause";  // untranslated
Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value.";  // untranslated
Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition.";  // untranslated
Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:";  // untranslated
Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function.";  // untranslated
Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entradas";
Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function.";  // untranslated
Blockly.Msg["REDO"] = "Refacer";
Blockly.Msg["REMOVE_COMMENT"] = "Eliminar o comentario";
Blockly.Msg["RENAME_VARIABLE"] = "Renomear a variable...";
Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renomear todas as variables \"%1\" a:";
Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification";  // untranslated
Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2";  // untranslated
Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'.";  // untranslated
Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case";  // untranslated
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case";  // untranslated
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case";  // untranslated
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE";  // untranslated
Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case.";  // untranslated
Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter";  // untranslated
Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end";  // untranslated
Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #";  // untranslated
Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text";  // untranslated
Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter";  // untranslated
Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter";  // untranslated
Blockly.Msg["TEXT_CHARAT_TAIL"] = "";  // untranslated
Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2";  // untranslated
Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position.";  // untranslated
Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings";  // untranslated
Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2";  // untranslated
Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text.";  // untranslated
Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text.";  // untranslated
Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unir";
Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block.";  // untranslated
Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end";  // untranslated
Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #";  // untranslated
Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter";  // untranslated
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"] = "no texto";
Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter";  // untranslated
Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end";  // untranslated
Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #";  // untranslated
Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "";  // untranslated
Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text.";  // untranslated
Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text";  // untranslated
Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text";  // untranslated
Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text";  // untranslated
Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3";  // untranslated
Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found.";  // untranslated
Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text";  // untranslated
Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty";  // untranslated
Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty.";  // untranslated
Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation";  // untranslated
Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with";  // untranslated
Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items.";  // untranslated
Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification";  // untranslated
Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1";  // untranslated
Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text.";  // untranslated
Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text";  // untranslated
Blockly.Msg["TEXT_PRINT_TITLE"] = "imprime %1";
Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value.";  // untranslated
Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";  // untranslated
Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number.";  // untranslated
Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text.";  // untranslated
Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message";  // untranslated
Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message";  // untranslated
Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings";  // untranslated
Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3";  // untranslated
Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text.";  // untranslated
Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text";  // untranslated
Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1";  // untranslated
Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text.";  // untranslated
Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)";  // untranslated
Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text.";  // untranslated
Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";  // untranslated
Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of";  // untranslated
Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of";  // untranslated
Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of";  // untranslated
Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends.";  // untranslated
Blockly.Msg["TODAY"] = "Hoxe";
Blockly.Msg["UNDO"] = "Desfacer";
Blockly.Msg["UNNAMED_KEY"] = "innominada";
Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elemento";
Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'";  // untranslated
Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get";  // untranslated
Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable.";  // untranslated
Blockly.Msg["VARIABLES_SET"] = "set %1 to %2";  // untranslated
Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'";  // untranslated
Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set";  // untranslated
Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input.";  // untranslated
Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists.";  // untranslated
Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'.";  // untranslated
Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace";  // untranslated
Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something...";  // untranslated
Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"];
Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"];
Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"];
Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"];
Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"];
Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"];
Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"];
Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"];
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["MATH_HUE"] = "230";
Blockly.Msg["LOOPS_HUE"] = "120";
Blockly.Msg["LISTS_HUE"] = "260";
Blockly.Msg["LOGIC_HUE"] = "210";
Blockly.Msg["VARIABLES_HUE"] = "330";
Blockly.Msg["TEXTS_HUE"] = "160";
Blockly.Msg["PROCEDURES_HUE"] = "290";
Blockly.Msg["COLOUR_HUE"] = "20";
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
return Blockly.Msg;
}));


text:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <parent>
        <groupId>org.chimi.ipfilter</groupId>
        <artifactId>ip-filter-parent</artifactId>
        <version>0.3-SNAPSHOT</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>

    <artifactId>ip-filter-core</artifactId>
    <packaging>jar</packaging>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>**/perf/*.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

redpajama_set_name: RedPajamaGithub


text:
application_name="earthlings"
postgres_password="CHOOSE A SECURE DB PASSWORD"
safeuser_username="safeuser"
safeuser_password="CHOOSE A SECURE USER PASSWORD"
source_dir="/home/$safeuser_username/$application_name"
source_repo="https://github.com/jthoms1/techtalk-2014-dec.git"

echo "Provisioning virtual machine..."
sudo apt-get update -y > /dev/null

# --------------------------------------------------
# Create a safe user with a home director
# --------------------------------------------------
echo "Add safe user"
useradd -s /bin/bash -m -d /home/$safeuser_username -c "safe user" $safeuser_username
echo "$safeuser_username:$safeuser_password" | chpasswd # give the user the specified password
usermod -aG sudo $safeuser_username # Add safe user to the sudo group

# --------------------------------------------------
# Git and Curl
# --------------------------------------------------
echo "Installing Git and Curl"
sudo apt-get install git curl -y > /dev/null

echo "Pulling code to local safe user : $source_dir"
sudo git clone $source_repo $source_dir
sudo chown -R $safeuser_username:$safeuser_username $source_dir

# --------------------------------------------------
# Install Nginx
# --------------------------------------------------
echo "Installing Nginx"
sudo apt-get install nginx -y > /dev/null

# --------------------------------------------------
# Node
# --------------------------------------------------
echo "Installing Node"
# Add the official node repo
curl -sL https://deb.nodesource.com/setup | sudo bash - > /dev/null
sudo apt-get install nodejs -y > /dev/null

# Dependent global npm installs
echo "Installing pm2"
sudo npm install -g pm2

# --------------------------------------------------
# Install Postgres 9.3
# --------------------------------------------------
echo "Installing Postgres"
# Add the official postgres repo
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - > /dev/null
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" \
	>> /etc/apt/sources.list.d/postgresql.list'
sudo apt-get update -y > /dev/null

# Get the packages
sudo apt-get install postgresql-9.3 libpq-dev postgresql-server-dev-9.3 -y > /dev/null

# Postgres Configuration
echo "Configuring Postgres"
# Set the password to the config value
sudo -u postgres psql -U postgres -d postgres -c "alter user postgres with password '$postgres_password';" > /dev/null

# All access the postgresql DB from remote sources
sudo sed -i "s/127.0.0.1\\/32/0.0.0.0\\/0/g" /etc/postgresql/9.3/main/pg_hba.conf
sudo sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" /etc/postgresql/9.3/main/postgresql.conf

# Restart after changes
sudo service postgresql restart > /dev/null

# --------------------------------------------------
# Nginx Configuration
# --------------------------------------------------
echo "Configuring Nginx"
sudo cp $source_dir/provision_config/demo.conf /etc/nginx/sites-available/demo.conf > /dev/null
sudo ln -s /etc/nginx/sites-available/demo.conf /etc/nginx/sites-enabled/
sudo rm -rf /etc/nginx/sites-available/default

# Restart Nginx for the config to take effect
sudo service nginx restart > /dev/null

# --------------------------------------------------
# Node App Configuration
# --------------------------------------------------
echo "Configuring and starting Node app."
sudo -H -u $safeuser_username bash -c "pm2 start $source_dir/app/server.js --name \"$application_name\" -i 0"
sudo pm2 startup ubuntu -u $safeuser_username
sudo -H -u $safeuser_username bash -c "pm2 save"

echo "Finished provisioning."


text:
<?php

namespace Swed\JBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class SwedJBundle extends Bundle
{
}


text:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<title>Null</title>
<meta name="date" content="2015-09-10">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">

JavaScript is disabled on your browser.

Overview

Package

Class

Tree

Deprecated

Index

Help

Prev Class

Next Class

Frames

No Frames

All Classes

Summary:

Nested |

Field |

Constr |

Method

Detail:

Field |

Constr |

Method

weka.core.stopwords

Class Null

java.lang.Object

weka.core.stopwords.AbstractStopwords

weka.core.stopwords.Null

All Implemented Interfaces:

java.io.Serializable, OptionHandler, StopwordsHandler

public class Null
extends AbstractStopwords

 Dummy stopwords scheme, always returns false.

 Valid options are:

 -D
  If set, stopword scheme is run in debug mode and
  may output additional info to the console

Version:

$Revision: 10978 $

Author:

fracpete (fracpete at waikato dot ac dot nz)

See Also:

Serialized Form

Constructor Summary

Constructors

Constructor and Description

Null()

Method Summary

Methods

Modifier and Type
Method and Description

java.lang.String
globalInfo()

Returns a string describing the stopwords scheme.

Methods inherited from class weka.core.stopwords.AbstractStopwords

debugTipText, getDebug, getOptions, isStopword, listOptions, setDebug, setOptions

Methods inherited from class java.lang.Object

equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

Null

public Null()

Method Detail

globalInfo

public java.lang.String globalInfo()

Returns a string describing the stopwords scheme.

Specified by:

globalInfo in class AbstractStopwords

Returns:

a description suitable for displaying in the gui

Overview

Package

Class

Tree

Deprecated

Index

Help

Prev Class

Next Class

Frames

No Frames

All Classes

Summary:

Nested |

Field |

Constr |

Method

Detail:

Field |

Constr |

Method


text:
package org.apache.flink.table.calcite

import java.lang.Iterable
import java.util.{List => JList}
import org.apache.calcite.plan._
import org.apache.calcite.rel.logical.LogicalAggregate
import org.apache.calcite.tools.RelBuilder
import org.apache.calcite.tools.RelBuilder.{AggCall, GroupKey}
import org.apache.flink.table.api.TableException
import org.apache.flink.table.expressions.{Alias, ExpressionBridge, PlannerExpression, WindowProperty}
import org.apache.flink.table.operations.QueryOperation
import org.apache.flink.table.plan.QueryOperationConverter
import org.apache.flink.table.plan.logical.LogicalWindow
import org.apache.flink.table.plan.logical.rel.{LogicalTableAggregate, LogicalWindowAggregate, LogicalWindowTableAggregate}
import org.apache.flink.table.runtime.aggregate.AggregateUtil

import java.util.function.UnaryOperator

import scala.collection.JavaConverters._

/**
  * Flink specific [[RelBuilder]] that changes the default type factory to a [[FlinkTypeFactory]].
  */
class FlinkRelBuilder(
    context: Context,
    relOptCluster: RelOptCluster,
    relOptSchema: RelOptSchema,
    expressionBridge: ExpressionBridge[PlannerExpression])
  extends RelBuilder(
    context,
    relOptCluster,
    relOptSchema) {

  private val toRelNodeConverter = new QueryOperationConverter(this, expressionBridge)

  override def getRelOptSchema: RelOptSchema = relOptSchema

  def getPlanner: RelOptPlanner = cluster.getPlanner

  override def getCluster: RelOptCluster = relOptCluster

  override def shouldMergeProject(): Boolean = false

  override def getTypeFactory: FlinkTypeFactory =
    super.getTypeFactory.asInstanceOf[FlinkTypeFactory]

  /**
    * Build non-window aggregate for either aggregate or table aggregate.
    */
  override def aggregate(groupKey: GroupKey, aggCalls: Iterable[AggCall]): RelBuilder = {
    // build a relNode, the build() may also return a project
    val relNode = super.aggregate(groupKey, aggCalls).build()

    relNode match {
      case logicalAggregate: LogicalAggregate
        if AggregateUtil.isTableAggregate(logicalAggregate.getAggCallList) =>
        push(LogicalTableAggregate.create(logicalAggregate))
      case _ => push(relNode)
    }
  }

  /**
    * Build window aggregate for either aggregate or table aggregate.
    */
  def windowAggregate(
      window: LogicalWindow,
      groupKey: GroupKey,
      windowProperties: JList[PlannerExpression],
      aggCalls: Iterable[AggCall])
    : RelBuilder = {
    // build logical aggregate

    // Because of:
    // [CALCITE-3763] RelBuilder.aggregate should prune unused fields
    // from the input, if the input is a Project.
    //
    // the field can not be pruned if it is referenced by other expressions
    // of the window aggregation(i.e. the TUMBLE_START/END).
    // To solve this, we config the RelBuilder to forbidden this feature.
    val aggregate = transform(
      new UnaryOperator[RelBuilder.Config] {
        override def apply(t: RelBuilder.Config)
          : RelBuilder.Config = t.withPruneInputOfAggregate(false)
      })
      .push(build())
      .aggregate(groupKey, aggCalls)
      .build()
      .asInstanceOf[LogicalAggregate]

    val namedProperties = windowProperties.asScala.map {
      case Alias(p: WindowProperty, name, _) =>
        p.toNamedWindowProperty(name)
      case _ => throw new TableException("This should never happen.")
    }

    // build logical window aggregate from it
    if (AggregateUtil.isTableAggregate(aggregate.getAggCallList)) {
      push(LogicalWindowTableAggregate.create(window, namedProperties, aggregate))
    } else {
      push(LogicalWindowAggregate.create(window, namedProperties, aggregate))
    }
  }

  def tableOperation(tableOperation: QueryOperation): RelBuilder= {
    val relNode = tableOperation.accept(toRelNodeConverter)

    push(relNode)
    this
  }

}

object FlinkRelBuilder {

  /**
    * Information necessary to create a window aggregate.
    *
    * Similar to [[RelBuilder.AggCall]] or [[RelBuilder.GroupKey]].
    */
  case class NamedWindowProperty(name: String, property: WindowProperty)

  def of(cluster: RelOptCluster, relOptSchema: RelOptSchema): FlinkRelBuilder = {
    val clusterContext = cluster.getPlanner.getContext

    new FlinkRelBuilder(
      clusterContext,
      cluster,
      relOptSchema,
      clusterContext.unwrap(classOf[ExpressionBridge[PlannerExpression]]))
  }

}


text:
package org.kaazing.gateway.transport.ws.bridge.extensions.idletimeout;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import org.apache.mina.core.filterchain.IoFilter;
import org.apache.mina.core.session.IoSession;
import org.jmock.integration.junit4.JUnitRuleMockery;
import org.junit.Rule;
import org.junit.Test;
import org.kaazing.gateway.security.auth.context.ResultAwareLoginContext;
import org.kaazing.gateway.transport.ws.extension.ExtensionHeader;
import org.kaazing.gateway.transport.ws.extension.ExtensionHeaderBuilder;
import org.kaazing.gateway.transport.ws.extension.ExtensionHelper;

public class IdleTimeouExtensionTest {
    private static final String extensionName = "x-kaazing-idle-timeout";
    private static final ExtensionHelper extensionHelper = new ExtensionHelper() {

        @Override
        public void setLoginContext(IoSession session, ResultAwareLoginContext loginContext) {
            throw new RuntimeException("Not expected to be called");
        }

        @Override
        public void closeWebSocketConnection(IoSession session) {
            throw new RuntimeException("Not expected to be called");
        }
    };

    ExtensionHeader requested = new ExtensionHeaderBuilder(extensionName).done();

    @Rule
    public JUnitRuleMockery context = new  JUnitRuleMockery();

    @Test
    public void shouldAddTimeoutParameter() throws Exception {
        IdleTimeoutExtension extension = new IdleTimeoutExtension(requested, extensionHelper, 1234L);
        assertEquals(extensionName, extension.getExtensionHeader().getExtensionToken());
        assertEquals(Long.toString(1234L), extension.getExtensionHeader().getParameters().get(0).getValue());
    }

    @Test
    public void shouldCreateIdleTimeoutFilter() {
        final ExtensionHelper extensionHelper = context.mock(ExtensionHelper.class);
        IdleTimeoutExtension extension = new IdleTimeoutExtension(requested, extensionHelper, 1234L);
        IoFilter filter = extension.getFilter();
        assertTrue(filter instanceof IdleTimeoutFilter);
    }

}


text:
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.

#pragma once

/**
 * The different supported items we can display on the test item
 */
namespace EAutomationGrapicalDisplayType
{
	enum Type
	{
		DisplayName,
		DisplayTime
	};
}

/**
 * Implements the automation graphical results box widget.
 */
class SAutomationGraphicalResultBox
	: public SCompoundWidget
{
public:

	SLATE_BEGIN_ARGS(SAutomationGraphicalResultBox) { }

	SLATE_ARGUMENT(FString, Text)

	SLATE_END_ARGS()

public:

	/**
	 * Construct this widget.
	 *
	 * @param InArgs The declaration data for this widget.
	 * @param InAutomationController Reference to the automation controller.
	 */
	void Construct( const FArguments& InArgs, const IAutomationControllerManagerRef& InAutomationController);

	/** Clears the current results and any widgets that were created */
	void ClearResults();

	/** Returns if there are any results available to display. */
	bool HasResults() const;

	/** Returns the current display type. */
	EAutomationGrapicalDisplayType::Type GetDisplayType() const;

	/**
	 * Sets the current display type
	 *
	 * @param NewDisplayType The display type to set.
	 */
	void SetDisplayType(EAutomationGrapicalDisplayType::Type NewDisplayType);

private:

	/** Holds information on a single test result */
	class FTestResults
	{
	public:
		/** Constructor */
		FTestResults(const FString& InName)
		{
			TestName = InName;
			Duration = 0.f;
			TestState = EAutomationState::NotRun;
			bHasWarnings = false;
		}

		/** Name of the test */
		FString TestName;

		/** Duration of the test */
		float Duration;

		/** State of the test */
		EAutomationState::Type TestState;

		/** If the test had any warnings */
		bool bHasWarnings;
	};

	/** Holds all the test results for a single device */
	class FDeviceResults
	{
	public:
		/** Constructor */
		FDeviceResults(const FString& InName)
		{
			InstanceName = InName;
			TotalTime = 0.f;
			TotalTestSuccesses = 0;
		}

		/** Name of the device instance */
		FString InstanceName;

		/** Total time of all the tests */
		float TotalTime;

		/** How many of the tests were successful */
		uint32 TotalTestSuccesses;

		/** The list of tests */
		TArray<FTestResults> Tests;
	};

	/** Holds all the results for a single cluster */
	class FClusterResults
	{
	public:
		/** Constructor */
		FClusterResults(const FString& InName)
		{
			ClusterName = InName;
			TotalTime = 0.f;
			ParallelTime = 0.f;
			TotalNumTests = 0;
			TotalTestSuccesses = 0;
		}

		/** Name of the Cluster */
		FString ClusterName;

		/** Total number of tests */
		uint32 TotalNumTests;

		/** How many of the tests were successful */
		uint32 TotalTestSuccesses;

		/** Total time of all the tests */
		float TotalTime;

		/** Longest time a device took to finish its tests */
		float ParallelTime;

		/** The list of devices in this cluster */
		TArray <FDeviceResults> Devices;
	};

	/**
	 * Returns if there are any results available to display.
	 *
	 * @param InReport The report to recursively check for enabled tests.
	 * @param OutReports The list of enabled test reports.
	 */
	void GetEnabledReports(TSharedPtr<IAutomationReport> InReport, TArray< TSharedPtr< IAutomationReport > >& OutReports);

	/** Populates the ClusterResults with test data pulled from the automation controller */
	void PopulateData();

	/** Creates all the slate widgets to display the test results */
	void CreateWidgets();

	/** This is called when the tests are complete so we can update the widget */
	void OnFillResults();

	/**
	 * Gets the color for a test based off the test state and if it has any warnings.
	 *
	 * @param TestState The test state from the automation report (Success, Fail, NotRun, etc.)
	 * @param bHasWarnings If the test had any warning logs.
	 */
	FSlateColor GetColorForTestState(const EAutomationState::Type TestState, const bool bHasWarnings) const;

	/**
	 * Gets the text to display for this test item based off the current DisplayType.
	 *
	 * @param TestName The name of the test.
	 * @param TestTime The duration of the test.
	 */
	FText GetTestDisplayText(const FString TestName, const float TestTime) const;

	/** Stores what information should be displayed on the test widgets. */
	EAutomationGrapicalDisplayType::Type DisplayType;

	/** The test results grouped by cluster. */
	TArray<FClusterResults> ClusterResults;

	/** The time of the longest cluster. */
	float TotalTestDuration;

	/** Pointer to the root widget that contains all the result widgets. */
	TSharedPtr< SVerticalBox > RootBox;

	/** Pointer to the automation controller so we can get the test results. */
	IAutomationControllerManagerPtr AutomationController;
};


text:
class CreateArpaTables < ActiveRecord::Migration[5.2]
  def change

    create_table :repository_resources, :force => true do |t|
      t.string :name
      t.string :full_name
      t.timestamps null: false
    end

    create_table :repository_actions, :force => true do |t|
      t.string :name
      t.references :repository_resource, index: true
      t.timestamps null: false
    end

    add_foreign_key :repository_actions, :repository_resources

    create_table :repository_roles, :force => true do |t|
      t.string :name
      t.string :description
      t.boolean :removed, default: false
      t.timestamps null: false
    end

    create_join_table :repository_actions, :repository_roles, :force => true do |t|
      t.index :repository_action_id, name: 'action_role_id'
      t.index :repository_role_id, name: 'role_action_id'
    end

    create_table :repository_profiles, :force => true do |t|
      t.string :name
      t.string :description
      t.boolean :removed, default: false
      t.timestamps null: false
    end

    create_join_table :repository_roles, :repository_profiles, :force => true do |t|
      t.index :repository_role_id, name: 'role_profile_id'
      t.index :repository_profile_id, name: 'profile_role_ids'
    end

    create_join_table :repository_profiles, <%= ":#{@associate_table}" %>, :force => true do |t|
      t.index :repository_profile_id, name: 'profile_user_id'
      t.index <%= ":#{@associate_primary_key}"  %>, name: 'user_profile_id'
    end

    add_column <%= ":#{@associate_table}" %>, :is_arpa_admin, :boolean, default: false

    add_column :repository_profiles, :entity_id, :integer, default: nil
    add_column :repository_profiles, :entity_class, :string, default: nil

  end
end


text:
package cchesser.javaperf.workshop.data;

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import org.junit.Test;

import cchesser.javaperf.workshop.data.Searcher.SearchResult;

/**
 * Tests the {@link cchesser.javaperf.workshop.data.Searcher}.
 */
public class SearcherTest extends BaseTest {

    @Test
    public void testSearch() {
        setupMock();
        Searcher searcher = new Searcher(new ConferenceSessionLoader(getConfiguration()));
        SearchResult result = searcher.search("clojure");
        assertNotNull(result);
        assertTrue(result.getResults().size() > 0);
    }
}


text:
Self-Healing Systems Workshop
=============================

Prerequisites
-------------

* Git
* Vagrant

Pre-Workshop Preparation
------------------------

```bash
git clone https://github.com/vfarcic/ms-lifecycle

cd ms-lifecycle

vagrant up cd swarm-master swarm-node-1 swarm-node-2

vagrant ssh cd -c "sudo chmod +x /vagrant/scripts/*"

vagrant ssh cd -c "sudo /vagrant/scripts/preload_cd.sh"

vagrant ssh cd -c "ansible-playbook /vagrant/ansible/swarm.yml -i /vagrant/ansible/hosts/prod"

vagrant ssh swarm-master -c "/vagrant/scripts/preload_swarm.sh"

vagrant ssh swarm-node-1 -c "/vagrant/scripts/preload_swarm_node.sh"

vagrant ssh swarm-node-2 -c "/vagrant/scripts/preload_swarm_node.sh"

vagrant halt
```


text:
@interface DVTTarjanSCCVertex : NSObject
{
    unsigned long long index;
    unsigned long long lowlink;
    BOOL inStack;
    id userObject;
}

- (id)initWithUserObject:(id)arg1;

@end


text:
/*************************************************************************/
/*  os_server.cpp                                                        */
/*************************************************************************/
/*                       This file is part of:                           */
/*                           GODOT ENGINE                                */
/*                      https://godotengine.org                          */
/*************************************************************************/
/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur.                 */
/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md).   */
/*                                                                       */
/* Permission is hereby granted, free of charge, to any person obtaining */
/* a copy of this software and associated documentation files (the       */
/* "Software"), to deal in the Software without restriction, including   */
/* without limitation the rights to use, copy, modify, merge, publish,   */
/* distribute, sublicense, and/or sell copies of the Software, and to    */
/* permit persons to whom the Software is furnished to do so, subject to */
/* the following conditions:                                             */
/*                                                                       */
/* The above copyright notice and this permission notice shall be        */
/* included in all copies or substantial portions of the Software.       */
/*                                                                       */
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
/*************************************************************************/

#include "os_server.h"

#include "core/string/print_string.h"
#include "drivers/dummy/rasterizer_dummy.h"
#include "drivers/dummy/texture_loader_dummy.h"
#include "servers/rendering/rendering_server_default.h"

#include "main/main.h"

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int OS_Server::get_video_driver_count() const {
	return 1;
}

const char *OS_Server::get_video_driver_name(int p_driver) const {
	return "Dummy";
}

int OS_Server::get_current_video_driver() const {
	return video_driver_index;
}

void OS_Server::initialize_core() {
	crash_handler.initialize();

	OS_Unix::initialize_core();
}

Error OS_Server::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
	args = OS::get_singleton()->get_cmdline_args();
	current_videomode = p_desired;
	main_loop = nullptr;

	RasterizerDummy::make_current();

	video_driver_index = p_video_driver; // unused in server platform, but should still be initialized

	rendering_server = memnew(RenderingServerDefault);
	rendering_server->init();

	AudioDriverManager::initialize(p_audio_driver);

	input = memnew(InputDefault);

	_ensure_user_data_dir();

	resource_loader_dummy.instance();
	ResourceLoader::add_resource_format_loader(resource_loader_dummy);

	return OK;
}

void OS_Server::finalize() {
	if (main_loop)
		memdelete(main_loop);
	main_loop = nullptr;

	rendering_server->finish();
	memdelete(rendering_server);

	memdelete(input);

	ResourceLoader::remove_resource_format_loader(resource_loader_dummy);
	resource_loader_dummy.unref();

	args.clear();
}

void OS_Server::set_mouse_show(bool p_show) {
}

void OS_Server::set_mouse_grab(bool p_grab) {
	grab = p_grab;
}

bool OS_Server::is_mouse_grab_enabled() const {
	return grab;
}

int OS_Server::get_mouse_button_state() const {
	return 0;
}

Point2 OS_Server::get_mouse_position() const {
	return Point2();
}

void OS_Server::set_window_title(const String &p_title) {
}

void OS_Server::set_video_mode(const VideoMode &p_video_mode, int p_screen) {
}

OS::VideoMode OS_Server::get_video_mode(int p_screen) const {
	return current_videomode;
}

Size2 OS_Server::get_window_size() const {
	return Vector2(current_videomode.width, current_videomode.height);
}

void OS_Server::get_fullscreen_mode_list(List<VideoMode> *p_list, int p_screen) const {
}

MainLoop *OS_Server::get_main_loop() const {
	return main_loop;
}

void OS_Server::delete_main_loop() {
	if (main_loop)
		memdelete(main_loop);
	main_loop = nullptr;
}

void OS_Server::set_main_loop(MainLoop *p_main_loop) {
	main_loop = p_main_loop;
	input->set_main_loop(p_main_loop);
}

String OS_Server::get_name() const {
	return "Server";
}

void OS_Server::move_window_to_foreground() {
}

bool OS_Server::_check_internal_feature_support(const String &p_feature) {
	return p_feature == "pc";
}

void OS_Server::run() {
	force_quit = false;

	if (!main_loop)
		return;

	main_loop->init();

	while (!force_quit) {
		if (Main::iteration())
			break;
	};

	main_loop->finish();
}

String OS_Server::get_config_path() const {
	if (has_environment("XDG_CONFIG_HOME")) {
		return get_environment("XDG_CONFIG_HOME");
	} else if (has_environment("HOME")) {
		return get_environment("HOME").plus_file(".config");
	} else {
		return ".";
	}
}

String OS_Server::get_data_path() const {
	if (has_environment("XDG_DATA_HOME")) {
		return get_environment("XDG_DATA_HOME");
	} else if (has_environment("HOME")) {
		return get_environment("HOME").plus_file(".local/share");
	} else {
		return get_config_path();
	}
}

String OS_Server::get_cache_path() const {
	if (has_environment("XDG_CACHE_HOME")) {
		return get_environment("XDG_CACHE_HOME");
	} else if (has_environment("HOME")) {
		return get_environment("HOME").plus_file(".cache");
	} else {
		return get_config_path();
	}
}

String OS_Server::get_system_dir(SystemDir p_dir) const {
	String xdgparam;

	switch (p_dir) {
		case SYSTEM_DIR_DESKTOP: {
			xdgparam = "DESKTOP";
		} break;
		case SYSTEM_DIR_DCIM: {
			xdgparam = "PICTURES";

		} break;
		case SYSTEM_DIR_DOCUMENTS: {
			xdgparam = "DOCUMENTS";

		} break;
		case SYSTEM_DIR_DOWNLOADS: {
			xdgparam = "DOWNLOAD";

		} break;
		case SYSTEM_DIR_MOVIES: {
			xdgparam = "VIDEOS";

		} break;
		case SYSTEM_DIR_MUSIC: {
			xdgparam = "MUSIC";

		} break;
		case SYSTEM_DIR_PICTURES: {
			xdgparam = "PICTURES";

		} break;
		case SYSTEM_DIR_RINGTONES: {
			xdgparam = "MUSIC";

		} break;
	}

	String pipe;
	List<String> arg;
	arg.push_back(xdgparam);
	Error err = const_cast<OS_Server *>(this)->execute("xdg-user-dir", arg, true, nullptr, &pipe);
	if (err != OK)
		return ".";
	return pipe.strip_edges();
}

void OS_Server::disable_crash_handler() {
	crash_handler.disable();
}

bool OS_Server::is_disable_crash_handler() const {
	return crash_handler.is_disabled();
}

OS_Server::OS_Server() {
	//adriver here
	grab = false;
};


text:
import pytest
import time
from tests.beeswax.impala_beeswax import ImpalaBeeswaxException
from tests.common.impala_test_suite import ImpalaTestSuite
from tests.common.impala_cluster import ImpalaCluster
from tests.verifiers.metric_verifier import MetricVerifier

# TODO: Debug actions leak into other tests in the same suite (if not explicitly
# unset). Ensure they get unset between tests.
class TestFragmentLifecycleWithDebugActions(ImpalaTestSuite):
  """Using the debug action interface, check that failed queries correctly clean up *all*
  fragments"""

  IN_FLIGHT_FRAGMENTS = "impala-server.num-fragments-in-flight"
  @classmethod
  def get_workload(self):
    return 'functional'

  @pytest.mark.execute_serially
  def test_failure_in_prepare(self):
    # Fail the scan node
    verifiers = [ MetricVerifier(i.service) for i in ImpalaCluster().impalads ]
    self.client.execute("SET DEBUG_ACTION='-1:0:PREPARE:FAIL'");
    try:
      self.client.execute("SELECT COUNT(*) FROM functional.alltypes")
      assert "Query should have thrown an error"
    except ImpalaBeeswaxException:
      pass

    for v in verifiers:
      v.wait_for_metric(self.IN_FLIGHT_FRAGMENTS, 0)

  @pytest.mark.execute_serially
  def test_failure_in_prepare_multi_fragment(self):
    # Test that if one fragment fails that the others are cleaned up during the ensuing
    # cancellation.
    verifiers = [ MetricVerifier(i.service) for i in ImpalaCluster().impalads ]
    # Fail the scan node
    self.client.execute("SET DEBUG_ACTION='-1:0:PREPARE:FAIL'");

    # Force a query plan that will have three fragments or more.
    try:
      self.client.execute("SELECT COUNT(*) FROM functional.alltypes a JOIN [SHUFFLE] \
        functional.alltypes b on a.id = b.id")
      assert "Query should have thrown an error"
    except ImpalaBeeswaxException:
      pass

    for v in verifiers:
      # Long timeout required because fragments may be blocked while sending data. The
      # default value of --datastream_sender_timeout_ms is 120s before they wake up and
      # cancel themselves.
      #
      # TODO: Fix when we have cancellable RPCs.
      v.wait_for_metric(self.IN_FLIGHT_FRAGMENTS, 0, timeout=125)

class TestFragmentLifecycle(ImpalaTestSuite):
  def test_finst_cancel_when_query_complete(self):
    """Regression test for IMPALA-4295: if a query returns all its rows before all its
    finsts have completed, it should cancel the finsts and complete promptly."""
    now = time.time()

    # Query designed to produce 1024 (the limit) rows very quickly from the first union
    # child, but the second one takes a very long time to complete. Without fix for
    # IMPALA-4295, the whole query waits for the second child to complete.

    # Due to IMPALA-5671, the limit must be a multiple of the row batch size - if it's
    # reached during production of a row batch, processing moves to the second child, and
    # the query will take a long time complete.
    self.client.execute("with l as (select 1 from functional.alltypes), r as"
      " (select count(*) from tpch_parquet.lineitem a cross join tpch_parquet.lineitem b)"
      "select * from l union all (select * from r) LIMIT 1024")
    end = time.time()

    # Query typically completes in < 2s, but if cross join is fully evaluated, will take >
    # 10 minutes. Pick 2 minutes as a reasonable midpoint to avoid false negatives.
    assert end - now < 120, "Query took too long to complete: " + duration + "s"


text: jasmine.getFixtures().fixturesPath = 'base/spec/fixtures/';


text:
package com.guoxiaoxing.music.lastfmapi.models;

import com.google.gson.annotations.SerializedName;

public class ArtistInfo {

    private static final String ARTIST = "artist";

    @SerializedName(ARTIST)
    public LastfmArtist mArtist;

}