text:
namespace ash {

namespace {

// The spacing between chips.
constexpr int kChipSpacing = 8;

// The minimum allowed number of suggestion chips shown in the container
// (provided that the suggestion chip results contain at least that number of
// items).
constexpr int kMinimumSuggestionChipNumber = 3;

bool IsPolicySuggestionChip(const SearchResult& result) {
  return result.display_type() == SearchResultDisplayType::kChip &&
         result.display_index() != SearchResultDisplayIndex::kUndefined;
}

struct CompareByDisplayIndexAndThenPositionPriority {
  bool operator()(const SearchResult* result1,
                  const SearchResult* result2) const {
    // Sort increasing by display index, then decreasing by position priority.
    SearchResultDisplayIndex index1 = result1->display_index();
    SearchResultDisplayIndex index2 = result2->display_index();
    float priority1 = result1->position_priority();
    float priority2 = result2->position_priority();
    if (index1 != index2)
      return index1 < index2;
    return priority1 > priority2;
  }
};

}  // namespace

SuggestionChipContainerView::SuggestionChipContainerView(
    ContentsView* contents_view)
    : SearchResultContainerView(
          contents_view != nullptr
              ? contents_view->GetAppListMainView()->view_delegate()
              : nullptr),
      contents_view_(contents_view) {
  SetPaintToLayer();
  layer()->SetFillsBoundsOpaquely(false);

  DCHECK(contents_view);
  layout_manager_ = SetLayoutManager(std::make_unique<views::BoxLayout>(
      views::BoxLayout::Orientation::kHorizontal, gfx::Insets(), kChipSpacing));
  layout_manager_->set_main_axis_alignment(
      views::BoxLayout::MainAxisAlignment::kCenter);

  for (size_t i = 0;
       i < static_cast<size_t>(
               SharedAppListConfig::instance().num_start_page_tiles());
       ++i) {
    SearchResultSuggestionChipView* chip =
        new SearchResultSuggestionChipView(view_delegate());
    chip->SetVisible(false);
    chip->set_index_in_container(i);
    suggestion_chip_views_.emplace_back(chip);
    AddChildView(chip);
  }
}

SuggestionChipContainerView::~SuggestionChipContainerView() = default;

SearchResultSuggestionChipView* SuggestionChipContainerView::GetResultViewAt(
    size_t index) {
  DCHECK(index >= 0 && index < suggestion_chip_views_.size());
  return suggestion_chip_views_[index];
}

int SuggestionChipContainerView::DoUpdate() {
  const size_t kMaxSuggestionChips =
      SharedAppListConfig::instance().num_start_page_tiles();
  if (!results()) {
    for (size_t i = 0; i < kMaxSuggestionChips; ++i)
      suggestion_chip_views_[i]->SetResult(nullptr);
    InvalidateLayout();
    return 0;
  }

  // Filter out priority suggestion chips with a non-default value
  // for |display_index|.
  auto filter_requested_index_chips = [](const SearchResult& r) -> bool {
    return IsPolicySuggestionChip(r);
  };
  std::vector<SearchResult*> requested_index_results =
      SearchModel::FilterSearchResultsByFunction(
          results(), base::BindRepeating(filter_requested_index_chips),
          kMaxSuggestionChips);

  std::sort(requested_index_results.begin(), requested_index_results.end(),
            CompareByDisplayIndexAndThenPositionPriority());

  // Handle placement issues that may arise when multiple app results have
  // the same requested index. Reassign the |display_index| of results
  // with lower priorities or with conflicting indexes so that the results are
  // added to the final display_results list in the correct order.
  int previous_index = -1;
  for (auto* result : requested_index_results) {
    int current_index = result->display_index();
    if (current_index <= previous_index) {
      current_index = previous_index + 1;
    }
    SearchResultDisplayIndex final_index =
        static_cast<SearchResultDisplayIndex>(current_index);
    result->set_display_index(final_index);
    previous_index = current_index;
  }

  // Filter to only kChip results. Also filter out all policy chips to prevent
  // duplicates.
  auto filter_chip_and_policy = [](const SearchResult& r) -> bool {
    return r.display_type() == SearchResultDisplayType::kChip &&
           !IsPolicySuggestionChip(r);
  };
  std::vector<SearchResult*> display_results =
      SearchModel::FilterSearchResultsByFunction(
          results(), base::BindRepeating(filter_chip_and_policy),
          kMaxSuggestionChips - requested_index_results.size());

  // Update display results list by placing policy result chips at their
  // specified |display_index|. Do not add with a |display_index| that is out
  // of bounds.
  for (auto* result : requested_index_results) {
    if (result->display_index() <= kMaxSuggestionChips - 1) {
      display_results.emplace(display_results.begin() + result->display_index(),
                              result);
    }
  }

  // Update search results here, but wait until layout to add them as child
  // views when we know this view's bounds.
  for (size_t i = 0; i < kMaxSuggestionChips; ++i) {
    suggestion_chip_views_[i]->SetResult(
        i < display_results.size() ? display_results[i] : nullptr);
  }

  auto* notifier = view_delegate()->GetNotifier();
  if (notifier) {
    std::vector<AppListNotifier::Result> notifier_results;
    for (const auto* result : display_results)
      notifier_results.emplace_back(result->id(), result->metrics_type());
    notifier->NotifyResultsUpdated(SearchResultDisplayType::kChip,
                                   notifier_results);
  }

  Layout();
  return std::min(kMaxSuggestionChips, display_results.size());
}

const char* SuggestionChipContainerView::GetClassName() const {
  return "SuggestionChipContainerView";
}

void SuggestionChipContainerView::Layout() {
  // Only show the chips that fit in this view's contents bounds.
  int total_width = 0;
  const int max_width = GetContentsBounds().width();

  bool has_hidden_chip = false;
  std::vector<views::View*> shown_chips;
  for (auto* chip : suggestion_chip_views_) {
    layout_manager_->ClearFlexForView(chip);

    if (!chip->result()) {
      chip->SetVisible(false);
      continue;
    }

    const gfx::Size size = chip->GetPreferredSize();
    if (has_hidden_chip ||
        (size.width() + total_width > max_width &&
         shown_chips.size() >= kMinimumSuggestionChipNumber)) {
      chip->SetVisible(false);
      has_hidden_chip = true;
      continue;
    }

    chip->SetVisible(true);
    shown_chips.push_back(chip);

    total_width += (total_width == 0 ? 0 : kChipSpacing) + size.width();
  }

  // If current suggestion chip width is over the max value, reduce the width by
  // flexing views whose width is above average for the available space.
  if (total_width > max_width && shown_chips.size() > 0) {
    // Remove spacing between chips from total width to get the width available
    // to visible suggestion chip views.
    int available_width = std::max(
        0, max_width - (kMinimumSuggestionChipNumber - 1) * kChipSpacing);

    std::vector<views::View*> views_to_flex;
    views_to_flex.swap(shown_chips);

    // Do not flex views whose width is below average available width per chip,
    // as flexing those would actually increase their size. Repeat this until
    // there are no more views to remove from consideration for flexing
    // (removing a view increases the average available space for the remaining
    // views, so another view's size might fit into the remaining space).
    for (size_t i = 0; i < kMinimumSuggestionChipNumber - 1; ++i) {
      if (views_to_flex.empty())
        break;

      std::vector<views::View*> next_views_to_flex;
      const int avg_width = available_width / views_to_flex.size();
      for (auto* view : views_to_flex) {
        gfx::Size view_size = view->GetPreferredSize();
        if (view_size.width() <= avg_width) {
          available_width -= view_size.width();
        } else {
          next_views_to_flex.push_back(view);
        }
      }

      if (views_to_flex.size() == next_views_to_flex.size())
        break;
      views_to_flex.swap(next_views_to_flex);
    }

    // Flex the views that are left over.
    for (auto* view : views_to_flex)
      layout_manager_->SetFlexForView(view, 1);
  }

  views::View::Layout();
}

bool SuggestionChipContainerView::OnKeyPressed(const ui::KeyEvent& event) {
  // Let the FocusManager handle Left/Right keys.
  if (!IsUnhandledUpDownKeyEvent(event))
    return false;

  // Up key moves focus to the search box. Down key moves focus to the first
  // app.
  views::View* v = nullptr;
  if (event.key_code() == ui::VKEY_UP) {
    v = contents_view_->GetSearchBoxView()->search_box();
  } else {
    // The first app is the next to this view's last focusable view.
    views::View* last_focusable_view =
        GetFocusManager()->GetNextFocusableView(this, nullptr, true, false);
    v = GetFocusManager()->GetNextFocusableView(last_focusable_view, nullptr,
                                                false, false);
  }
  if (v)
    v->RequestFocus();
  return true;
}

void SuggestionChipContainerView::DisableFocusForShowingActiveFolder(
    bool disabled) {
  for (auto* chip : suggestion_chip_views_)
    chip->SetEnabled(!disabled);

  // Ignore the container view in accessibility tree so that suggestion chips
  // will not be accessed by ChromeVox.
  SetViewIgnoredForAccessibility(this, disabled);
}

void SuggestionChipContainerView::OnTabletModeChanged(bool started) {
  in_tablet_mode_ = started;
  UpdateBlurState();
}

void SuggestionChipContainerView::SetBlurDisabled(bool blur_disabled) {
  if (blur_disabled_ == blur_disabled)
    return;

  blur_disabled_ = blur_disabled;
  UpdateBlurState();
}

void SuggestionChipContainerView::UpdateBlurState() {
  // Enable/Disable chips' background blur based on tablet mode, and whether
  // blur has been explicitly disabled.
  for (auto* chip : suggestion_chip_views_)
    chip->SetBackgroundBlurEnabled(in_tablet_mode_ && !blur_disabled_);
}

}  // namespace ash


text:
package org.mini2Dx.core.collections.concurrent;

import org.mini2Dx.core.Mdx;
import org.mini2Dx.lockprovider.ReadWriteLock;
import org.mini2Dx.gdx.utils.CharArray;

public class ConcurrentCharArray extends CharArray implements ConcurrentCollection {

    protected ReadWriteLock lock = Mdx.locks.newReadWriteLock();

    /**
     * Creates an ordered array with a capacity of 16.
     */
    public ConcurrentCharArray() {
    }

    /**
     * Creates an ordered array with the specified capacity.
     *
     * @param capacity
     */
    public ConcurrentCharArray(int capacity) {
        super(capacity);
    }

    /**
     * @param ordered  If false, methods that remove elements may change the order of other elements in the array, which avoids a
     *                 memory copy.
     * @param capacity Any elements added beyond this will cause the backing array to be grown.
     */
    public ConcurrentCharArray(boolean ordered, int capacity) {
        super(ordered, capacity);
    }

    /**
     * Creates a new array containing the elements in the specific array. The new array will be ordered if the specific array is
     * ordered. The capacity is set to the number of elements, so any subsequent elements added will cause the backing array to be
     * grown.
     *
     * NOTE: read access to the other array is not thread-safe
     *
     * @param array
     */
    public ConcurrentCharArray(CharArray array) {
        super(array);
    }

    /**
     * Creates a new ordered array containing the elements in the specified array. The capacity is set to the number of elements,
     * so any subsequent elements added will cause the backing array to be grown.
     *
     * @param array
     */
    public ConcurrentCharArray(char[] array) {
        super(array);
    }

    /**
     * Creates a new array containing the elements in the specified array. The capacity is set to the number of elements, so any
     * subsequent elements added will cause the backing array to be grown.
     *
     * @param ordered    If false, methods that remove elements may change the order of other elements in the array, which avoids a
     *                   memory copy.
     * @param array
     * @param startIndex
     * @param count
     */
    public ConcurrentCharArray(boolean ordered, char[] array, int startIndex, int count) {
        super(ordered, array, startIndex, count);
    }

    /**
     * Returns the size in a thread-safe manner
     * @return 0 if empty
     */
    public int size() {
        lock.lockRead();
        final int result = super.size;
        lock.unlockRead();
        return result;
    }

    @Override
    public void add(char value) {
        lock.lockWrite();
        super.add(value);
        lock.unlockWrite();
    }

    @Override
    public void add(char value1, char value2) {
        lock.lockWrite();
        super.add(value1, value2);
        lock.unlockWrite();
    }

    @Override
    public void add(char value1, char value2, char value3) {
        lock.lockWrite();
        super.add(value1, value2, value3);
        lock.unlockWrite();
    }

    @Override
    public void add(char value1, char value2, char value3, char value4) {
        lock.lockWrite();
        super.add(value1, value2, value3, value4);
        lock.unlockWrite();
    }

    @Override
    public void addAll(char[] array, int offset, int length) {
        lock.lockWrite();
        super.addAll(array, offset, length);
        lock.unlockWrite();
    }

    @Override
    public char get(int index) {
        lock.lockRead();
        char b = super.get(index);
        lock.unlockRead();
        return b;
    }

    @Override
    public void set(int index, char value) {
        lock.lockWrite();
        super.set(index, value);
        lock.unlockWrite();
    }

    @Override
    public void insert(int index, char value) {
        lock.lockWrite();
        super.insert(index, value);
        lock.unlockWrite();
    }

    @Override
    public void swap(int first, int second) {
        lock.lockWrite();
        super.swap(first, second);
        lock.unlockWrite();
    }

    /**
     * Removes and returns the item at the specified index.
     *
     * @param index
     */
    @Override
    public char removeIndex(int index) {
        lock.lockWrite();
        char c = super.removeIndex(index);
        lock.unlockWrite();
        return c;
    }

    /**
     * Removes the items between the specified indices, inclusive.
     *
     * @param start
     * @param end
     */
    @Override
    public void removeRange(int start, int end) {
        lock.lockWrite();
        super.removeRange(start, end);
        lock.unlockWrite();
    }

    /**
     * Removes and returns the last item.
     */
    @Override
    public char pop() {
        lock.lockWrite();
        char b = super.pop();
        lock.unlockWrite();
        return b;
    }

    /**
     * Returns the last item.
     */
    @Override
    public char peek() {
        lock.lockRead();
        char b = super.peek();
        lock.unlockRead();
        return b;
    }

    /**
     * Returns the first item.
     */
    @Override
    public char first() {
        lock.lockRead();
        char b = super.first();
        lock.unlockRead();
        return b;
    }

    /**
     * Returns true if the array has one or more items.
     */
    @Override
    public boolean notEmpty() {
        lock.lockRead();
        boolean b = super.notEmpty();
        lock.unlockRead();
        return b;
    }

    /**
     * Returns true if the array is empty.
     */
    @Override
    public boolean isEmpty() {
        lock.lockRead();
        boolean b = super.isEmpty();
        lock.unlockRead();
        return b;
    }

    @Override
    public void clear() {
        lock.lockWrite();
        super.clear();
        lock.unlockWrite();
    }

    /**
     * Reduces the size of the backing array to the size of the actual items. This is useful to release memory when many items
     * have been removed, or if it is known that more items will not be added.
     *
     * @return {@link #items}
     */
    @Override
    public char[] shrink() {
        lock.lockWrite();
        char[] c = super.shrink();
        lock.unlockWrite();
        return c;
    }

    /**
     * Increases the size of the backing array to accommodate the specified number of additional items. Useful before adding many
     * items to avoid multiple backing array resizes.
     *
     * @param additionalCapacity
     * @return {@link #items}
     */
    @Override
    public char[] ensureCapacity(int additionalCapacity) {
        lock.lockWrite();
        char[] c = super.ensureCapacity(additionalCapacity);
        lock.unlockWrite();
        return c;
    }

    /**
     * Sets the array size, leaving any values beyond the current size undefined.
     *
     * @param newSize
     * @return {@link #items}
     */
    @Override
    public char[] setSize(int newSize) {
        lock.lockWrite();
        char[] c = super.setSize(newSize);
        lock.unlockWrite();
        return c;
    }

    @Override
    public void reverse() {
        lock.lockWrite();
        super.reverse();
        lock.unlockWrite();
    }

    @Override
    public void shuffle() {
        lock.lockWrite();
        super.shuffle();
        lock.unlockWrite();
    }

    @Override
    public void addAll(CharArray array, int offset, int length) {
        boolean isOtherConcurrent = array instanceof ConcurrentCollection;
        if (isOtherConcurrent){
            ((ConcurrentCollection)array).getLock().lockRead();
        }
        lock.lockWrite();
        super.addAll(array, offset, length);
        lock.unlockWrite();
        if (isOtherConcurrent){
            ((ConcurrentCollection)array).getLock().unlockRead();
        }
    }

    @Override
    public void incr(int index, char value) {
        lock.lockWrite();
        super.incr(index, value);
        lock.unlockWrite();
    }

    @Override
    public void mul(int index, char value) {
        lock.lockWrite();
        super.mul(index, value);
        lock.unlockWrite();
    }

    @Override
    public boolean contains(char value) {
        lock.lockRead();
        boolean b = super.contains(value);
        lock.unlockRead();
        return b;
    }

    @Override
    public int indexOf(char value) {
        lock.lockRead();
        int i = super.indexOf(value);
        lock.unlockRead();
        return i;
    }

    @Override
    public int lastIndexOf(char value) {
        lock.lockRead();
        int i = super.lastIndexOf(value);
        lock.unlockRead();
        return i;
    }

    @Override
    public boolean removeValue(char value) {
        lock.lockWrite();
        boolean b = super.removeValue(value);
        lock.unlockWrite();
        return b;
    }

    /**
     * Removes from this array all of elements contained in the specified array.
     *
     * @param array
     * @return true if this array was modified.
     */
    @Override
    public boolean removeAll(CharArray array) {
        boolean isOtherConcurrent = array instanceof ConcurrentCollection;
        if (isOtherConcurrent){
            ((ConcurrentCollection)array).getLock().lockRead();
        }
        lock.lockWrite();
        boolean b = super.removeAll(array);
        lock.unlockWrite();
        if (isOtherConcurrent){
            ((ConcurrentCollection)array).getLock().unlockRead();
        }
        return b;
    }

    @Override
    public void sort() {
        lock.lockWrite();
        super.sort();
        lock.unlockWrite();
    }

    /**
     * Reduces the size of the array to the specified size. If the array is already smaller than the specified size, no action is
     * taken.
     *
     * @param newSize
     */
    @Override
    public void truncate(int newSize) {
        lock.lockWrite();
        super.truncate(newSize);
        lock.unlockWrite();
    }

    /**
     * Returns a random item from the array, or false if the array is empty.
     */
    @Override
    public char random() {
        lock.lockRead();
        char c = super.random();
        lock.unlockRead();
        return c;
    }

    @Override
    public char[] toArray() {
        lock.lockRead();
        char[] c = super.toArray();
        lock.unlockRead();
        return c;
    }

    @Override
    public int hashCode() {
        lock.lockRead();
        int i = super.hashCode();
        lock.unlockRead();
        return i;
    }

    /**
     * Returns false if either array is unordered.
     *
     * @param object
     */
    @Override
    public boolean equals(Object object) {
        boolean isOtherConcurrent = object instanceof ConcurrentCollection;
        if (isOtherConcurrent){
            ((ConcurrentCollection)object).getLock().lockRead();
        }
        lock.lockRead();
        boolean b = super.equals(object);
        lock.unlockRead();
        if (isOtherConcurrent){
            ((ConcurrentCollection)object).getLock().unlockRead();
        }
        return b;
    }

    @Override
    public String toString() {
        lock.lockRead();
        String s =  super.toString();
        lock.unlockRead();
        return s;
    }

    @Override
    public String toString(String separator) {
        lock.lockRead();
        String s = super.toString(separator);
        lock.unlockRead();
        return s;
    }

    @Override
    public ReadWriteLock getLock() {
        return lock;
    }
}

redpajama_set_name: RedPajamaGithub


text:
<!DOCTYPE html>

    <title>Basic usage</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" >

    <link href="../../../styles/kendo.common.min.css" rel="stylesheet" />
    <link href="../../../styles/kendo.mobile.all.min.css" rel="stylesheet" />

    Back

            Back

            Select people

                    Close

Isabella Anderson<input type="checkbox">

Josh Anderson<input type="checkbox">

Linda Anderson<input type="checkbox">

Oliver Anderson<input type="checkbox">

James Williams<input type="checkbox">

Barbara Williams<input type="checkbox">

Sydney, Australia <input name="location" type="radio">

New York, USA <input name="location" type="radio">

Miami, USA <input name="location" type="radio">

            Select location


text:
Electron allows us to configure proxy pac file or proxy rules

# Platforms Supported
macOS, Windows 10, Windows 7

# Purpose
To allow admins to configure system proxy via pac files or proxy rules

# Details
We enable proxy on Electron by setting it on the default session before we load the Symphony app.

To set proxy, open the "Symphony.config" file and set the proxy configuration in the field "proxy". Also, ensure that you set the "enabled" field to true if you want to start SDA with a proxy.

# Examples
How to set proxy pac script & rules can be found [here](https://electronjs.org/docs/api/session#sessetproxyconfig-callback)

# Other Info
N/A


text:
package com.appnexus.opensdk.instreamvideo.util;

import com.appnexus.opensdk.utils.Clog;

public class Lock {
    public static final Object lock = new Object();
    public static boolean notified = false;

    public static void pause() {
        synchronized (lock) {
            Clog.w(TestUtil.testLogTag, "pausing " + Thread.currentThread().getName());
            while (!notified) {
                try {
                    lock.wait();
                } catch (InterruptedException ignored) {
                    continue; // recheck and go back to waiting if still not notified
                }
            }
        }
        notified = false;
        Clog.w(TestUtil.testLogTag, "unpausing " + Thread.currentThread().getName());
    }

    public static void pause(long time) {
        synchronized (lock) {
            Clog.w(TestUtil.testLogTag, "pausing " + Thread.currentThread().getName());
            if (!notified) {
                try {
                    lock.wait(time);
                } catch (InterruptedException ignored) {
                    // wake up
                }
            }
        }
        notified = false;
        Clog.w(TestUtil.testLogTag, "unpausing " + Thread.currentThread().getName());
    }

    public static void unpause() {
        Clog.w(TestUtil.testLogTag, "notify from " + Thread.currentThread().getName());
        synchronized (lock) {
            lock.notifyAll();
            notified = true;
        }
    }
}


text:
module Azure::Network::Mgmt::V2018_06_01
  module Models
    #
    # Defines values for ExpressRouteCircuitPeeringState
    #
    module ExpressRouteCircuitPeeringState
      Disabled = "Disabled"
      Enabled = "Enabled"
    end
  end
end


text:
package com.google.ar.sceneform.rendering;

import com.google.android.filament.Camera;
import com.google.android.filament.Engine;
import com.google.android.filament.Entity;
import com.google.android.filament.Fence;
import com.google.android.filament.IndexBuffer;
import com.google.android.filament.IndirectLight;
import com.google.android.filament.LightManager;
import com.google.android.filament.MaterialInstance;
import com.google.android.filament.NativeSurface;
import com.google.android.filament.RenderableManager;
import com.google.android.filament.Scene;
import com.google.android.filament.Skybox;
import com.google.android.filament.Stream;
import com.google.android.filament.SwapChain;
import com.google.android.filament.TransformManager;
import com.google.android.filament.VertexBuffer;
import com.google.android.filament.View;

/** Engine interface to support multiple flavors of the getFilamentEngine filament engine. */
public interface IEngine {

  Engine getFilamentEngine();

  boolean isValid();

  void destroy();

  // SwapChain

  /** Valid surface types: - Android: Surface - Other: none */
  SwapChain createSwapChain(Object surface);

  /**
   * Valid surface types: - Android: Surface - Other: none
   *
   * <p>Flags: see CONFIG flags in SwapChain.
   *
   * @see SwapChain#CONFIG_DEFAULT
   * @see SwapChain#CONFIG_TRANSPARENT
   * @see SwapChain#CONFIG_READABLE
   */
  SwapChain createSwapChain(Object surface, long flags);

  SwapChain createSwapChainFromNativeSurface(NativeSurface surface, long flags);

  void destroySwapChain(SwapChain swapChain);

  // View

  View createView();

  void destroyView(View view);

  // Renderer

  com.google.android.filament.Renderer createRenderer();

  void destroyRenderer(com.google.android.filament.Renderer renderer);

  // Camera

  Camera createCamera();

  Camera createCamera(@Entity int entity);

  void destroyCamera(Camera camera);

  // Scene

  Scene createScene();

  void destroyScene(Scene scene);

  // Stream

  void destroyStream(Stream stream);

  // Fence

  Fence createFence();

  void destroyFence(Fence fence);

  // others...

  void destroyIndexBuffer(IndexBuffer indexBuffer);

  void destroyVertexBuffer(VertexBuffer vertexBuffer);

  void destroyIndirectLight(IndirectLight ibl);

  void destroyMaterial(com.google.android.filament.Material material);

  void destroyMaterialInstance(MaterialInstance materialInstance);

  void destroySkybox(Skybox skybox);

  void destroyTexture(com.google.android.filament.Texture texture);

  void destroyEntity(@Entity int entity);

  // Managers

  TransformManager getTransformManager();

  LightManager getLightManager();

  RenderableManager getRenderableManager();

  void flushAndWait();
}


text:
<?php

use Symfony\Component\Translation\MessageCatalogue;

$catalogue = new MessageCatalogue('ru', array (
  'validators' =>
  array (
    'This value should be false.' => 'Значение должно быть ложным.',
    'This value should be true.' => 'Значение должно быть истинным.',
    'This value should be of type {{ type }}.' => 'Тип значения должен быть {{ type }}.',
    'This value should be blank.' => 'Значение должно быть пустым.',
    'The value you selected is not a valid choice.' => 'Выбранное Вами значение недопустимо.',
    'You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.' => 'Вы должны выбрать хотя бы {{ limit }} вариант.|Вы должны выбрать хотя бы {{ limit }} варианта.|Вы должны выбрать хотя бы {{ limit }} вариантов.',
    'You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.' => 'Вы должны выбрать не более чем {{ limit }} вариант.|Вы должны выбрать не более чем {{ limit }} варианта.|Вы должны выбрать не более чем {{ limit }} вариантов.',
    'One or more of the given values is invalid.' => 'Одно или несколько заданных значений недопустимо.',
    'This field was not expected.' => 'Это поле не ожидалось.',
    'This field is missing.' => 'Это поле отсутствует.',
    'This value is not a valid date.' => 'Значение не является правильной датой.',
    'This value is not a valid datetime.' => 'Значение даты и времени недопустимо.',
    'This value is not a valid email address.' => 'Значение адреса электронной почты недопустимо.',
    'The file could not be found.' => 'Файл не может быть найден.',
    'The file is not readable.' => 'Файл не может быть прочитан.',
    'The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.' => 'Файл слишком большой ({{ size }} {{ suffix }}). Максимально допустимый размер {{ limit }} {{ suffix }}.',
    'The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.' => 'MIME-тип файла недопустим ({{ type }}). Допустимы MIME-типы файлов {{ types }}.',
    'This value should be {{ limit }} or less.' => 'Значение должно быть {{ limit }} или меньше.',
    'This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.' => 'Значение слишком длинное. Должно быть равно {{ limit }} символу или меньше.|Значение слишком длинное. Должно быть равно {{ limit }} символам или меньше.|Значение слишком длинное. Должно быть равно {{ limit }} символам или меньше.',
    'This value should be {{ limit }} or more.' => 'Значение должно быть {{ limit }} или больше.',
    'This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.' => 'Значение слишком короткое. Должно быть равно {{ limit }} символу или больше.|Значение слишком короткое. Должно быть равно {{ limit }} символам или больше.|Значение слишком короткое. Должно быть равно {{ limit }} символам или больше.',
    'This value should not be blank.' => 'Значение не должно быть пустым.',
    'This value should not be null.' => 'Значение не должно быть null.',
    'This value should be null.' => 'Значение должно быть null.',
    'This value is not valid.' => 'Значение недопустимо.',
    'This value is not a valid time.' => 'Значение времени недопустимо.',
    'This value is not a valid URL.' => 'Значение не является допустимым URL.',
    'The two values should be equal.' => 'Оба значения должны быть одинаковыми.',
    'The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.' => 'Файл слишком большой. Максимально допустимый размер {{ limit }} {{ suffix }}.',
    'The file is too large.' => 'Файл слишком большой.',
    'The file could not be uploaded.' => 'Файл не может быть загружен.',
    'This value should be a valid number.' => 'Значение должно быть числом.',
    'This value is not a valid country.' => 'Значение не является допустимой страной.',
    'This file is not a valid image.' => 'Файл не является допустимым форматом изображения.',
    'This is not a valid IP address.' => 'Значение не является допустимым IP адресом.',
    'This value is not a valid language.' => 'Значение не является допустимым языком.',
    'This value is not a valid locale.' => 'Значение не является допустимой локалью.',
    'This value is already used.' => 'Это значение уже используется.',
    'The size of the image could not be detected.' => 'Не удалось определить размер изображения.',
    'The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.' => 'Ширина изображения слишком велика ({{ width }}px). Максимально допустимая ширина {{ max_width }}px.',
    'The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.' => 'Ширина изображения слишком мала ({{ width }}px). Минимально допустимая ширина {{ min_width }}px.',
    'The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.' => 'Высота изображения слишком велика ({{ height }}px). Максимально допустимая высота {{ max_height }}px.',
    'The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.' => 'Высота изображения слишком мала ({{ height }}px). Минимально допустимая высота {{ min_height }}px.',
    'This value should be the user\'s current password.' => 'Значение должно быть текущим паролем пользователя.',
    'This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.' => 'Значение должно быть равно {{ limit }} символу.|Значение должно быть равно {{ limit }} символам.|Значение должно быть равно {{ limit }} символам.',
    'The file was only partially uploaded.' => 'Файл был загружен только частично.',
    'No file was uploaded.' => 'Файл не был загружен.',
    'No temporary folder was configured in php.ini.' => 'Не настроена временная директория в php.ini.',
    'Cannot write temporary file to disk.' => 'Невозможно записать временный файл на диск.',
    'A PHP extension caused the upload to fail.' => 'Расширение PHP вызвало ошибку при загрузке.',
    'This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.' => 'Эта коллекция должна содержать {{ limit }} элемент или больше.|Эта коллекция должна содержать {{ limit }} элемента или больше.|Эта коллекция должна содержать {{ limit }} элементов или больше.',
    'This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.' => 'Эта коллекция должна содержать {{ limit }} элемент или меньше.|Эта коллекция должна содержать {{ limit }} элемента или меньше.|Эта коллекция должна содержать {{ limit }} элементов или меньше.',
    'This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.' => 'Эта коллекция должна содержать ровно {{ limit }} элемент.|Эта коллекция должна содержать ровно {{ limit }} элемента.|Эта коллекция должна содержать ровно {{ limit }} элементов.',
    'Invalid card number.' => 'Неверный номер карты.',
    'Unsupported card type or invalid card number.' => 'Неподдерживаемый тип или неверный номер карты.',
    'This is not a valid International Bank Account Number (IBAN).' => 'Значение не является допустимым международным номером банковского счета (IBAN).',
    'This value is not a valid ISBN-10.' => 'Значение имеет неверный формат ISBN-10.',
    'This value is not a valid ISBN-13.' => 'Значение имеет неверный формат ISBN-13.',
    'This value is neither a valid ISBN-10 nor a valid ISBN-13.' => 'Значение не соответствует форматам ISBN-10 и ISBN-13.',
    'This value is not a valid ISSN.' => 'Значение не соответствует формату ISSN.',
    'This value is not a valid currency.' => 'Некорректный формат валюты.',
    'This value should be equal to {{ compared_value }}.' => 'Значение должно быть равно {{ compared_value }}.',
    'This value should be greater than {{ compared_value }}.' => 'Значение должно быть больше чем {{ compared_value }}.',
    'This value should be greater than or equal to {{ compared_value }}.' => 'Значение должно быть больше или равно {{ compared_value }}.',
    'This value should be identical to {{ compared_value_type }} {{ compared_value }}.' => 'Значение должно быть идентичным {{ compared_value_type }} {{ compared_value }}.',
    'This value should be less than {{ compared_value }}.' => 'Значение должно быть меньше чем {{ compared_value }}.',
    'This value should be less than or equal to {{ compared_value }}.' => 'Значение должно быть меньше или равно {{ compared_value }}.',
    'This value should not be equal to {{ compared_value }}.' => 'Значение не должно быть равно {{ compared_value }}.',
    'This value should not be identical to {{ compared_value_type }} {{ compared_value }}.' => 'Значение не должно быть идентичным {{ compared_value_type }} {{ compared_value }}.',
    'The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.' => 'Соотношение сторон изображения слишком велико ({{ ratio }}). Максимальное соотношение сторон {{ max_ratio }}.',
    'The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.' => 'Соотношение сторон изображения слишком мало ({{ ratio }}). Минимальное соотношение сторон {{ min_ratio }}.',
    'The image is square ({{ width }}x{{ height }}px). Square images are not allowed.' => 'Изображение квадратное ({{ width }}x{{ height }}px). Квадратные изображения не разрешены.',
    'The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.' => 'Изображение в альбомной ориентации ({{ width }}x{{ height }}px). Изображения в альбомной ориентации не разрешены.',
    'The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.' => 'Изображение в портретной ориентации ({{ width }}x{{ height }}px). Изображения в портретной ориентации не разрешены.',
    'An empty file is not allowed.' => 'Пустые файлы не разрешены.',
    'The host could not be resolved.' => 'Имя хоста не может быть разрешено.',
    'This value does not match the expected {{ charset }} charset.' => 'Значение не совпадает с ожидаемой {{ charset }} кодировкой.',
    'This form should not contain extra fields.' => 'Эта форма не должна содержать дополнительных полей.',
    'The uploaded file was too large. Please try to upload a smaller file.' => 'Загруженный файл слишком большой. Пожалуйста, попробуйте загрузить файл меньшего размера.',
    'The CSRF token is invalid. Please try to resubmit the form.' => 'CSRF значение недопустимо. Пожалуйста, попробуйте повторить отправку формы.',
    'fos_user.username.already_used' => 'Логин уже используется',
    'fos_user.username.blank' => 'Пожалуйста, укажите логин',
    'fos_user.username.short' => '[-Inf,Inf]Логин слишком короткий',
    'fos_user.username.long' => '[-Inf,Inf]Логин слишком длинный',
    'fos_user.email.already_used' => 'Email уже используется',
    'fos_user.email.blank' => 'Пожалуйста, укажите Ваш email',
    'fos_user.email.short' => '[-Inf,Inf]Email слишком короткий',
    'fos_user.email.long' => '[-Inf,Inf]Email слишком длинный',
    'fos_user.email.invalid' => 'Email в неправильном формате',
    'fos_user.password.blank' => 'Пожалуйста, укажите пароль',
    'fos_user.password.short' => '[-Inf,Inf]Пароль слишком короткий',
    'fos_user.password.mismatch' => 'Введенные пароли не совпадают',
    'fos_user.new_password.blank' => 'Пожалуйста, укажите новый пароль',
    'fos_user.new_password.short' => '[-Inf,Inf]Новый пароль слишком короткий',
    'fos_user.current_password.invalid' => 'Вы неправильно ввели Ваш текущий пароль',
    'fos_user.group.blank' => 'Пожалуйста, укажите название группы',
    'fos_user.group.short' => '[-Inf,Inf]Название группы слишком короткое',
    'fos_user.group.long' => '[-Inf,Inf]Название группы слишком длинное',
  ),
  'security' =>
  array (
    'An authentication exception occurred.' => 'Ошибка аутентификации.',
    'Authentication credentials could not be found.' => 'Аутентификационные данные не найдены.',
    'Authentication request could not be processed due to a system problem.' => 'Запрос аутентификации не может быть обработан в связи с проблемой в системе.',
    'Invalid credentials.' => 'Недействительные аутентификационные данные.',
    'Cookie has already been used by someone else.' => 'Cookie уже был использован кем-то другим.',
    'Not privileged to request the resource.' => 'Отсутствуют права на запрос этого ресурса.',
    'Invalid CSRF token.' => 'Недействительный токен CSRF.',
    'Digest nonce has expired.' => 'Время действия одноразового ключа дайджеста истекло.',
    'No authentication provider found to support the authentication token.' => 'Не найден провайдер аутентификации, поддерживающий токен аутентификации.',
    'No session available, it either timed out or cookies are not enabled.' => 'Сессия не найдена, ее время истекло, либо cookies не включены.',
    'No token could be found.' => 'Токен не найден.',
    'Username could not be found.' => 'Имя пользователя не найдено.',
    'Account has expired.' => 'Время действия учетной записи истекло.',
    'Credentials have expired.' => 'Время действия аутентификационных данных истекло.',
    'Account is disabled.' => 'Учетная запись отключена.',
    'Account is locked.' => 'Учетная запись заблокирована.',
  ),
  'SonataCoreBundle' =>
  array (
    'link_add' => 'Добавить новый',
    'label_type_yes' => 'да',
    'label_type_no' => 'нет',
    'sonata_core_template_box_file_found_in' => 'sonata_core_template_box_file_found_in',
    'label_type_equals' => 'равен',
    'label_type_not_equals' => 'не равен',
    'date_range_start' => 'date_range_start',
    'date_range_end' => 'date_range_end',
  ),
  'SonataAdminBundle' =>
  array (
    'sonata_administration' => 'Administration',
    'action_delete' => 'Удалить',
    'btn_batch' => 'OK',
    'btn_create' => 'Создать',
    'btn_create_and_edit_again' => 'Создать и редактировать',
    'btn_create_and_create_a_new_one' => 'Создать и добавить новый',
    'btn_create_and_return_to_list' => 'Создать и вернуться к списку',
    'btn_filter' => 'Фильтровать',
    'btn_update' => 'Сохранить',
    'btn_update_and_edit_again' => 'Сохранить',
    'btn_update_and_return_to_list' => 'Сохранить и вернуться к списку',
    'link_delete' => 'Удалить',
    'link_action_create' => 'Добавить новый',
    'link_action_list' => 'Вернуться к списку',
    'link_action_show' => 'Показать',
    'link_action_edit' => 'Редактировать',
    'link_add' => 'Добавить новый',
    'link_list' => 'Список',
    'link_reset_filter' => 'Сбросить',
    'title_create' => 'Создать',
    'title_dashboard' => 'Панель администрирования',
    'title_edit' => 'Редактировать "%name%"',
    'title_list' => 'Список',
    'link_next_pager' => 'Следующая',
    'link_previous_pager' => 'Предыдущая',
    'link_first_pager' => 'Первая',
    'link_last_pager' => 'Последняя',
    'Admin' => 'Администрирование',
    'link_expand' => 'развернуть/свернуть',
    'no_result' => 'Нет результатов',
    'confirm_msg' => 'Вы уверены?',
    'action_edit' => 'Редактировать',
    'action_show' => 'Показать',
    'all_elements' => 'Применить для всех',
    'flash_batch_empty' => 'Действие отменено. Нет выбранных объектов.',
    'flash_create_success' => 'Элемент создан успешно',
    'flash_create_error' => 'При создании элемента произошла ошибка.',
    'flash_edit_success' => 'Элемент успешно обновлен.',
    'flash_edit_error' => 'Во время обновления элемента произошла ошибка.',
    'flash_batch_delete_success' => 'Выбранные элементы были успешно удалены.',
    'flash_batch_delete_error' => 'Во время удаления выбранных элементов произошла ошибка.',
    'flash_delete_error' => 'Во время удаления элемента произошла ошибка.',
    'flash_delete_success' => 'Элемент успешно удален.',
    'breadcrumb.link_dashboard' => '⌂',
    'title_delete' => 'Подтверждение удаления',
    'message_delete_confirmation' => 'Вы действительно хотите удалить выбранный элемент?',
    'btn_delete' => 'Да, удалить',
    'title_batch_confirmation' => 'Подтверждение пакетного действия',
    'message_batch_confirmation' => 'Вы действительно хотите произвести выбранное действие для данного элемента?|Вы действительно хотите произвести выбранное действие для данных элементов?|Вы действительно хотите произвести выбранное действие для %count% выбранных элементов?',
    'message_batch_all_confirmation' => 'Вы действительно хотите произвести выбранное действие для всех элементов?',
    'btn_execute_batch_action' => 'Да, выполнить',
    'label_type_yes' => 'да',
    'label_type_no' => 'нет',
    'label_type_contains' => 'содержит',
    'label_type_not_contains' => 'не содержит',
    'label_type_equals' => 'равен',
    'label_type_not_equals' => 'не равен',
    'label_type_equal' => '=',
    'label_type_greater_equal' => '>=',
    'label_type_greater_than' => '>',
    'label_type_less_equal' => '<=',
    'label_type_less_than' => '<',
    'label_date_type_equal' => '=',
    'label_date_type_greater_equal' => '>=',
    'label_date_type_greater_than' => '>',
    'label_date_type_less_equal' => '<=',
    'label_date_type_less_than' => '<',
    'label_date_type_null' => 'пусто',
    'label_date_type_not_null' => 'не пуст',
    'label_date_type_between' => 'между',
    'label_date_type_not_between' => 'не между',
    'label_filters' => 'Фильтры',
    'delete_or' => 'или',
    'link_action_history' => 'Изменения',
    'td_action' => 'Действие',
    'td_revision' => 'Изменения',
    'td_timestamp' => 'Дата',
    'td_username' => 'Автор',
    'label_view_revision' => 'Просмотр изменений',
    'list_results_count' => '{0} Нет данных |{1} Всего %count% запись |{2,3,4} Всего %count% записи |[5,Inf] Всего %count% записей',
    'label_export_download' => 'Экспорт',
    'loading_information' => 'Загрузка информации…',
    'btn_preview' => 'Предпросмотр',
    'btn_preview_approve' => 'Одобрить',
    'btn_preview_decline' => 'Отклонить',
    'label_per_page' => 'Записей на страницу',
    'list_select' => 'Выбрать',
    'confirm_exit' => 'У вас есть несохраненные данные',
    'link_edit_acl' => 'Редактировать ACL',
    'btn_update_acl' => 'Обновить ACL',
    'flash_acl_edit_success' => 'ACL успешно отредактирован',
    'link_action_acl' => 'ACL',
    'short_object_description_placeholder' => 'Ничего не выбрано',
    'title_search_results' => 'Результат поиска: %query%',
    'search_placeholder' => 'Поиск',
    'no_results_found' => 'Ничего не найдено',
    'add_new_entry' => 'Добавить новую запись',
    'link_actions' => 'Действия',
    'noscript_warning' => 'noscript_warning',
    'message_form_group_empty' => 'message_form_group_empty',
  ),
  'FOSUserBundle' =>
  array (
    'Bad credentials' => 'Неправильное имя пользователя или пароль',
    'group.edit.submit' => 'Обновить группу',
    'group.show.name' => 'Название группы',
    'group.new.submit' => 'Создать группу',
    'group.flash.updated' => 'Группа обновлена',
    'group.flash.created' => 'Группа создана',
    'group.flash.deleted' => 'Группа удалена',
    'security.login.username' => 'Имя пользователя:',
    'security.login.password' => 'Пароль:',
    'security.login.remember_me' => 'Запомнить меня',
    'security.login.submit' => 'Войти',
    'profile.show.username' => 'Имя пользователя',
    'profile.show.email' => 'Электронная почта',
    'profile.edit.submit' => 'Обновить',
    'profile.flash.updated' => 'Профиль пользователя обновлен',
    'change_password.submit' => 'Изменить пароль',
    'change_password.flash.success' => 'Пароль изменен',
    'registration.check_email' => 'Письмо отправлено на адрес %email%. В нём содержится ссылка, по которой вы можете подтвердить свою регистрацию.',
    'registration.confirmed' => 'Поздравляем %username%, ваш аккаунт подтвержден.',
    'registration.back' => 'Вернуться на предыдущую страницу.',
    'registration.submit' => 'Регистрация',
    'registration.flash.user_created' => 'Пользователь успешно создан',
    'registration.email.subject' => 'Добро пожаловать, %username%!',
    'registration.email.message' => 'Приветствуем, %username%!

Для подтверждения вашей регистрации, пройдите по ссылке %confirmationUrl%

С наилучшими пожеланиями,
команда сайта.
',
    'resetting.password_already_requested' => 'Пароль для данного пользователя уже запрашивался за последние 24 часа.',
    'resetting.check_email' => 'Письмо на адрес %email% уже отправлено. Оно содержит ссылку, при переходе по которой ваш пароль будет сброшен.',
    'resetting.request.invalid_username' => 'Пользователь "%username%" не существует.',
    'resetting.request.username' => 'Имя пользователя:',
    'resetting.request.submit' => 'Сбросить пароль',
    'resetting.reset.submit' => 'Изменить пароль',
    'resetting.flash.success' => 'Пароль успешно сброшен',
    'resetting.email.subject' => 'Сброс пароля',
    'resetting.email.message' => 'Приветствуем, %username%!

Для сброса пароля, пожалуйста, пройдите по ссылке %confirmationUrl%

С наилучшими пожеланиями,
команда сайта.
',
    'layout.logout' => 'Выход',
    'layout.login' => 'Вход',
    'layout.register' => 'Регистрация',
    'layout.logged_in_as' => 'Вы вошли как %username%',
    'form.group_name' => 'Название группы:',
    'form.username' => 'Имя пользователя:',
    'form.email' => 'Электронная почта:',
    'form.current_password' => 'Текущий пароль:',
    'form.password' => 'Пароль:',
    'form.password_confirmation' => 'Подтвердите пароль:',
    'form.new_password' => 'Новый пароль:',
    'form.new_password_confirmation' => 'Подтвердите пароль:',
  ),
  'SonataUserBundle' =>
  array (
    'title_user_registration' => 'title_user_registration',
    'title_user_account' => 'User Profile',
    'title_user_edit_profile' => 'Edit',
    'title_user_authentication' => 'Authentication',
    'sonata_user_submit' => 'Submit',
    'breadcrumb.link_user_list' => 'Пользователи',
    'breadcrumb.link_user_create' => 'Создать',
    'breadcrumb.link_user_edit' => 'Редактировать',
    'breadcrumb.link_user_show' => 'Показать',
    'breadcrumb.link_group_list' => 'Группы',
    'breadcrumb.link_group_create' => 'Создать',
    'breadcrumb.link_group_edit' => 'Редактировать',
    'users' => 'Пользователи',
    'groups' => 'Группы',
    'switch_user_exit' => 'Exit impersonating mode',
    'switch_user' => 'Impersonate User',
    'user_block_logout' => 'Выход',
    'form.label_username' => 'Имя пользователя',
    'form.label_email' => 'E-Mail',
    'form.label_plain_password' => 'Открытый пароль',
    'form.label_groups' => 'Группы',
    'form.label_roles' => 'Роли',
    'form.label_locked' => 'Заблокирован',
    'form.label_expired' => 'Просрочен',
    'form.label_enabled' => 'Включен',
    'form.label_credentials_expired' => 'Пароль устарел',
    'form.label_firstname' => 'Имя',
    'form.label_lastname' => 'Фамилия',
    'form.label_name' => 'Имя',
    'filter.label_username' => 'Имя пользователя',
    'filter.label_name' => 'Имя',
    'filter.label_email' => 'E-Mail',
    'filter.label_locked' => 'Заблокирован',
    'filter.label_id' => 'ID',
    'filter.label_firstname' => 'Имя',
    'filter.label_lastname' => 'Фамилия',
    'list.label_username' => 'Имя пользователя',
    'list.label_name' => 'Имя',
    'list.label_email' => 'E-Mail',
    'list.label_groups' => 'Группы',
    'list.label_locked' => 'Заблокирован',
    'list.label_enabled' => 'Активен',
    'list.label_created_at' => 'Дата создания',
    'list.label_impersonating' => 'Impersonate User',
    'list.label_roles' => 'Роли',
    'list.label_firstname' => 'Имя',
    'list.label_lastname' => 'Фамилия',
    'label_two_step_code' => 'label_two_step_code',
    'message_two_step_code_help' => 'message_two_step_code_help',
    'label_two_step_code_error' => 'label_two_step_code_error',
    'sonata_user' => 'Пользователи',
    'General' => 'Основные сведения',
    'Groups' => 'Группы',
    'Management' => 'Управление ролями',
    'Profile' => 'Профиль',
    'Social' => 'Социальные сети',
    'Security' => 'Безопасность',
    'form.label_website' => 'Веб-сайт',
    'form.label_biography' => 'Биография',
    'form.label_gender' => 'Пол',
    'form.label_locale' => 'Локаль',
    'form.label_timezone' => 'Часовой пояс',
    'form.label_phone' => 'Телефон',
    'form.label_facebook_uid' => 'Facebook UID',
    'form.label_facebook_name' => 'Facebook имя',
    'form.label_twitter_uid' => 'Twitter UID',
    'form.label_twitter_name' => 'Twitter имя',
    'form.label_gplus_uid' => 'Google+ UID',
    'form.label_gplus_name' => 'Google+ имя',
    'form.label_token' => 'Ключ доступа',
    'form.label_two_step_verification_code' => 'Ключ двухэтапной аутентификации',
    'show.label_username' => 'Имя пользователя',
    'show.label_email' => 'E-Mail',
    'show.label_groups' => 'Группы',
    'show.label_date_of_birth' => 'Дата рождения',
    'show.label_firstname' => 'Имя',
    'show.label_lastname' => 'Фамилия',
    'show.label_website' => 'Веб-сайт',
    'show.label_biography' => 'Биография',
    'show.label_gender' => 'Пол',
    'show.label_locale' => 'Локаль',
    'show.label_timezone' => 'Часовой пояс',
    'show.label_phone' => 'Телефон',
    'show.label_facebook_uid' => 'Facebook UID',
    'show.label_facebook_name' => 'Facebook имя',
    'show.label_twitter_uid' => 'Twitter UID',
    'show.label_twitter_name' => 'Twitter имя',
    'show.label_gplus_uid' => 'Google+ UID',
    'show.label_gplus_name' => 'Google+ имя',
    'show.label_token' => 'Ключ доступа',
    'show.label_two_step_verification_code' => 'Ключ двухэтапной аутентификации',
    'form.label_date_of_birth' => 'Дата рождения',
    'field.label_roles_editable' => 'Роли',
    'gender_unknown' => 'gender_unknown',
    'gender_female' => 'gender_female',
    'gender_male' => 'gender_male',
    'sonata_profile_title' => 'sonata_profile_title',
    'link_show_profile' => 'link_show_profile',
    'link_edit_profile' => 'link_edit_profile',
    'title_user_edit_authentication' => 'title_user_edit_authentication',
    'link_edit_authentication' => 'link_edit_authentication',
    'label_profile_gender' => 'label_profile_gender',
    'label_profile_firstname' => 'label_profile_firstname',
    'label_profile_lastname' => 'label_profile_lastname',
    'label_profile_website' => 'label_profile_website',
    'label_profile_dob' => 'label_profile_dob',
    'label_profile_biography' => 'label_profile_biography',
    'label_profile_locale' => 'label_profile_locale',
    'label_profile_timezone' => 'label_profile_timezone',
    'label_profile_phone' => 'label_profile_phone',
    'profile.flash.updated' => 'profile.flash.updated',
    'sonata_change_password_link' => 'sonata_change_password_link',
    'link_register' => 'link_register',
    'link_login' => 'link_login',
    'link_logout' => 'link_logout',
    'registration.flash.user_created' => 'registration.flash.user_created',
    'forgotten_password' => 'forgotten_password',
    'sonata_user_profile_breadcrumb_index' => 'sonata_user_profile_breadcrumb_index',
    'sonata_user_profile_breadcrumb_edit' => 'sonata_user_profile_breadcrumb_edit',
    'sonata_user_already_authenticated' => 'You are already logged in',
  ),
));

$catalogueEn = new MessageCatalogue('en', array (
  'validators' =>
  array (
    'This value should be false.' => 'This value should be false.',
    'This value should be true.' => 'This value should be true.',
    'This value should be of type {{ type }}.' => 'This value should be of type {{ type }}.',
    'This value should be blank.' => 'This value should be blank.',
    'The value you selected is not a valid choice.' => 'The value you selected is not a valid choice.',
    'You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.' => 'You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.',
    'You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.' => 'You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.',
    'One or more of the given values is invalid.' => 'One or more of the given values is invalid.',
    'This field was not expected.' => 'This field was not expected.',
    'This field is missing.' => 'This field is missing.',
    'This value is not a valid date.' => 'This value is not a valid date.',
    'This value is not a valid datetime.' => 'This value is not a valid datetime.',
    'This value is not a valid email address.' => 'This value is not a valid email address.',
    'The file could not be found.' => 'The file could not be found.',
    'The file is not readable.' => 'The file is not readable.',
    'The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.' => 'The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.',
    'The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.' => 'The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.',
    'This value should be {{ limit }} or less.' => 'This value should be {{ limit }} or less.',
    'This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.' => 'This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.',
    'This value should be {{ limit }} or more.' => 'This value should be {{ limit }} or more.',
    'This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.' => 'This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.',
    'This value should not be blank.' => 'This value should not be blank.',
    'This value should not be null.' => 'This value should not be null.',
    'This value should be null.' => 'This value should be null.',
    'This value is not valid.' => 'This value is not valid.',
    'This value is not a valid time.' => 'This value is not a valid time.',
    'This value is not a valid URL.' => 'This value is not a valid URL.',
    'The two values should be equal.' => 'The two values should be equal.',
    'The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.' => 'The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.',
    'The file is too large.' => 'The file is too large.',
    'The file could not be uploaded.' => 'The file could not be uploaded.',
    'This value should be a valid number.' => 'This value should be a valid number.',
    'This file is not a valid image.' => 'This file is not a valid image.',
    'This is not a valid IP address.' => 'This is not a valid IP address.',
    'This value is not a valid language.' => 'This value is not a valid language.',
    'This value is not a valid locale.' => 'This value is not a valid locale.',
    'This value is not a valid country.' => 'This value is not a valid country.',
    'This value is already used.' => 'This value is already used.',
    'The size of the image could not be detected.' => 'The size of the image could not be detected.',
    'The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.' => 'The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.',
    'The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.' => 'The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.',
    'The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.' => 'The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.',
    'The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.' => 'The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.',
    'This value should be the user\'s current password.' => 'This value should be the user\'s current password.',
    'This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.' => 'This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.',
    'The file was only partially uploaded.' => 'The file was only partially uploaded.',
    'No file was uploaded.' => 'No file was uploaded.',
    'No temporary folder was configured in php.ini.' => 'No temporary folder was configured in php.ini.',
    'Cannot write temporary file to disk.' => 'Cannot write temporary file to disk.',
    'A PHP extension caused the upload to fail.' => 'A PHP extension caused the upload to fail.',
    'This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.' => 'This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.',
    'This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.' => 'This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.',
    'This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.' => 'This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.',
    'Invalid card number.' => 'Invalid card number.',
    'Unsupported card type or invalid card number.' => 'Unsupported card type or invalid card number.',
    'This is not a valid International Bank Account Number (IBAN).' => 'This is not a valid International Bank Account Number (IBAN).',
    'This value is not a valid ISBN-10.' => 'This value is not a valid ISBN-10.',
    'This value is not a valid ISBN-13.' => 'This value is not a valid ISBN-13.',
    'This value is neither a valid ISBN-10 nor a valid ISBN-13.' => 'This value is neither a valid ISBN-10 nor a valid ISBN-13.',
    'This value is not a valid ISSN.' => 'This value is not a valid ISSN.',
    'This value is not a valid currency.' => 'This value is not a valid currency.',
    'This value should be equal to {{ compared_value }}.' => 'This value should be equal to {{ compared_value }}.',
    'This value should be greater than {{ compared_value }}.' => 'This value should be greater than {{ compared_value }}.',
    'This value should be greater than or equal to {{ compared_value }}.' => 'This value should be greater than or equal to {{ compared_value }}.',
    'This value should be identical to {{ compared_value_type }} {{ compared_value }}.' => 'This value should be identical to {{ compared_value_type }} {{ compared_value }}.',
    'This value should be less than {{ compared_value }}.' => 'This value should be less than {{ compared_value }}.',
    'This value should be less than or equal to {{ compared_value }}.' => 'This value should be less than or equal to {{ compared_value }}.',
    'This value should not be equal to {{ compared_value }}.' => 'This value should not be equal to {{ compared_value }}.',
    'This value should not be identical to {{ compared_value_type }} {{ compared_value }}.' => 'This value should not be identical to {{ compared_value_type }} {{ compared_value }}.',
    'The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.' => 'The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.',
    'The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.' => 'The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.',
    'The image is square ({{ width }}x{{ height }}px). Square images are not allowed.' => 'The image is square ({{ width }}x{{ height }}px). Square images are not allowed.',
    'The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.' => 'The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.',
    'The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.' => 'The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.',
    'An empty file is not allowed.' => 'An empty file is not allowed.',
    'The host could not be resolved.' => 'The host could not be resolved.',
    'This value does not match the expected {{ charset }} charset.' => 'This value does not match the expected {{ charset }} charset.',
    'This form should not contain extra fields.' => 'This form should not contain extra fields.',
    'The uploaded file was too large. Please try to upload a smaller file.' => 'The uploaded file was too large. Please try to upload a smaller file.',
    'The CSRF token is invalid. Please try to resubmit the form.' => 'The CSRF token is invalid. Please try to resubmit the form.',
    'fos_user.username.already_used' => 'The username is already used',
    'fos_user.username.blank' => 'Please enter a username',
    'fos_user.username.short' => '[-Inf,Inf]The username is too short',
    'fos_user.username.long' => '[-Inf,Inf]The username is too long',
    'fos_user.email.already_used' => 'The email is already used',
    'fos_user.email.blank' => 'Please enter an email',
    'fos_user.email.short' => '[-Inf,Inf]The email is too short',
    'fos_user.email.long' => '[-Inf,Inf]The email is too long',
    'fos_user.email.invalid' => 'The email is not valid',
    'fos_user.password.blank' => 'Please enter a password',
    'fos_user.password.short' => '[-Inf,Inf]The password is too short',
    'fos_user.password.mismatch' => 'The entered passwords don\'t match',
    'fos_user.new_password.blank' => 'Please enter a new password',
    'fos_user.new_password.short' => '[-Inf,Inf]The new password is too short',
    'fos_user.current_password.invalid' => 'The entered password is invalid',
    'fos_user.group.blank' => 'Please enter a name',
    'fos_user.group.short' => '[-Inf,Inf]The name is too short',
    'fos_user.group.long' => '[-Inf,Inf]The name is too long',
  ),
  'security' =>
  array (
    'An authentication exception occurred.' => 'An authentication exception occurred.',
    'Authentication credentials could not be found.' => 'Authentication credentials could not be found.',
    'Authentication request could not be processed due to a system problem.' => 'Authentication request could not be processed due to a system problem.',
    'Invalid credentials.' => 'Invalid credentials.',
    'Cookie has already been used by someone else.' => 'Cookie has already been used by someone else.',
    'Not privileged to request the resource.' => 'Not privileged to request the resource.',
    'Invalid CSRF token.' => 'Invalid CSRF token.',
    'Digest nonce has expired.' => 'Digest nonce has expired.',
    'No authentication provider found to support the authentication token.' => 'No authentication provider found to support the authentication token.',
    'No session available, it either timed out or cookies are not enabled.' => 'No session available, it either timed out or cookies are not enabled.',
    'No token could be found.' => 'No token could be found.',
    'Username could not be found.' => 'Username could not be found.',
    'Account has expired.' => 'Account has expired.',
    'Credentials have expired.' => 'Credentials have expired.',
    'Account is disabled.' => 'Account is disabled.',
    'Account is locked.' => 'Account is locked.',
  ),
  'CmfRoutingBundle' =>
  array (
    'dashboard.cmf' => 'Symfony CMF',
    'dashboard.label_routing' => 'Route',
    'dashboard.label_redirect_routing' => 'Redirect Route',
    'breadcrumb.link_route_list' => 'Routes',
    'breadcrumb.link_route_create' => 'Create',
    'breadcrumb.link_route_edit' => 'Edit',
    'breadcrumb.link_route_delete' => 'Delete',
    'breadcrumb.link_redirect_route_list' => 'Redirect Routes',
    'breadcrumb.link_redirect_route_create' => 'Create',
    'breadcrumb.link_redirect_route_edit' => 'Edit',
    'breadcrumb.link_redirect_route_delete' => 'Delete',
    'filter.label_name' => 'Name',
    'list.label_path' => 'URL',
    'form.group_general' => 'General',
    'form.group_advanced' => 'Advanced',
    'form.label_parent' => 'Parent',
    'form.label_name' => 'Last URL part',
    'form.label_variable_pattern' => 'Variable pattern',
    'form.help_variable_pattern' => 'A pattern in the format {variable}/{more}... The fields are passed to the controller if it declares them as arguments.',
    'form.label_content' => 'Content',
    'form.label_defaults' => 'Defaults',
    'form.label_options' => 'Options',
    'form.label_route_name' => 'Name',
    'form.label_uri' => 'URI',
    'form.label_route_target' => 'Route target',
    'form.group_routes' => 'Routes',
    'form.label_routes' => 'Routes',
    'form.label_add_locale_pattern' => 'Add locale pattern',
    'form.label_add_format_pattern' => 'Add format pattern',
    'form.label_add_trailing_slash' => 'Add trailing slash',
    'form.help_options' => '

            Locale: Prepend locale to route like /{locale}/your/route<br/>
            Format: Append format to route like /your/route.{format}. Default format is \'html\'<br/>
            Slash: Append a trailing slash to route like /your/route/

        ',
    'admin.menu_frontend_link_caption' => 'Frontend',
    'admin.menu_frontend_link_title' => 'Open frontend view in new tab',
  ),
  'SonataCoreBundle' =>
  array (
    'link_add' => 'Add new',
    'label_type_yes' => 'yes',
    'label_type_no' => 'no',
    'sonata_core_template_box_file_found_in' => 'This file can be found in',
    'label_type_equals' => 'is equal to',
    'label_type_not_equals' => 'is not equal to',
    'date_range_start' => 'From',
    'date_range_end' => 'To',
  ),
  'SonataAdminBundle' =>
  array (
    'sonata_administration' => 'Administration',
    'action_delete' => 'Delete',
    'btn_batch' => 'OK',
    'btn_create' => 'Create',
    'btn_create_and_edit_again' => 'Create',
    'btn_create_and_create_a_new_one' => 'Create and add another',
    'btn_create_and_return_to_list' => 'Create and return to list',
    'btn_filter' => 'Filter',
    'btn_update' => 'Update',
    'btn_update_and_edit_again' => 'Update',
    'btn_update_and_return_to_list' => 'Update and close',
    'link_delete' => 'Delete',
    'link_action_create' => 'Add new',
    'link_action_list' => 'Return to list',
    'link_action_show' => 'Show',
    'link_action_edit' => 'Edit',
    'link_add' => 'Add new',
    'link_list' => 'List',
    'link_reset_filter' => 'Reset',
    'title_create' => 'Create',
    'title_dashboard' => 'Dashboard',
    'title_edit' => 'Edit "%name%"',
    'title_list' => 'List',
    'link_next_pager' => 'Next',
    'link_previous_pager' => 'Previous',
    'link_first_pager' => 'First',
    'link_last_pager' => 'Last',
    'Admin' => 'Admin',
    'link_expand' => 'expand/collapse',
    'no_result' => 'No result',
    'confirm_msg' => 'Are you sure ?',
    'action_edit' => 'Edit',
    'action_show' => 'Show',
    'all_elements' => 'All elements',
    'flash_batch_empty' => 'Action aborted. No items were selected.',
    'flash_create_success' => 'Item "%name%" has been successfully created.',
    'flash_create_error' => 'An error has occurred during the creation of item "%name%".',
    'flash_edit_success' => 'Item "%name%" has been successfully updated.',
    'flash_edit_error' => 'An error has occurred during update of item "%name%".',
    'flash_batch_delete_success' => 'Selected items have been successfully deleted.',
    'flash_batch_delete_error' => 'An Error has occurred during selected items deletion.',
    'flash_delete_error' => 'An Error has occurred during deletion of item "%name%".',
    'flash_delete_success' => 'Item "%name%" has been deleted successfully.',
    'breadcrumb.link_dashboard' => '<i class="fa fa-home"></i>',
    'title_delete' => 'Confirm deletion',
    'message_delete_confirmation' => 'Are you sure you want to delete the selected "%object%" element?',
    'btn_delete' => 'Yes, delete',
    'title_batch_confirmation' => 'Confirm batch action \'%action%\'',
    'message_batch_confirmation' => 'Are you sure you want to confirm this action and execute it for the selected element?|Are you sure you want to confirm this action and execute it for the %count% selected elements?',
    'message_batch_all_confirmation' => 'Are you sure you want to confirm this action and execute it for all the elements?',
    'btn_execute_batch_action' => 'Yes, execute',
    'label_type_yes' => 'yes',
    'label_type_no' => 'no',
    'label_type_contains' => 'contains',
    'label_type_not_contains' => 'does not contain',
    'label_type_equals' => 'is equal to',
    'label_type_not_equals' => 'is not equal to',
    'label_type_equal' => '=',
    'label_type_greater_equal' => '>=',
    'label_type_greater_than' => '>',
    'label_type_less_equal' => '<=',
    'label_type_less_than' => '<',
    'label_date_type_equal' => '=',
    'label_date_type_greater_equal' => '>=',
    'label_date_type_greater_than' => '>',
    'label_date_type_less_equal' => '<=',
    'label_date_type_less_than' => '<',
    'label_date_type_null' => 'is empty',
    'label_date_type_not_null' => 'is not empty',
    'label_date_type_between' => 'between',
    'label_date_type_not_between' => 'not between',
    'label_filters' => 'Filters',
    'delete_or' => 'or',
    'link_action_history' => 'Revisions',
    'td_action' => 'Action',
    'td_compare' => 'Compare',
    'td_revision' => 'Revisions',
    'td_timestamp' => 'Date',
    'td_username' => 'Author',
    'label_view_revision' => 'View Revision',
    'label_compare_revision' => 'Compare revision',
    'list_results_count' => '1 result|%count% results',
    'label_export_download' => 'Download',
    'loading_information' => 'Loading information…',
    'btn_preview' => 'Preview',
    'btn_preview_approve' => 'Approve',
    'btn_preview_decline' => 'Decline',
    'label_per_page' => 'Per page',
    'list_select' => 'Select',
    'confirm_exit' => 'You have unsaved changes.',
    'link_edit_acl' => 'Edit ACL',
    'btn_update_acl' => 'Update ACL',
    'flash_acl_edit_success' => 'ACL has been successfuly updated.',
    'link_action_acl' => 'ACL',
    'short_object_description_placeholder' => 'No selection',
    'title_search_results' => 'Search results: %query%',
    'search_placeholder' => 'Search',
    'no_results_found' => 'no result found',
    'add_new_entry' => 'add new entry',
    'link_actions' => 'Actions',
    'noscript_warning' => 'Javascript is disabled in your web browser. Some features will not work properly.',
    'message_form_group_empty' => 'No fields available.',
  ),
  'SonataDoctrinePHPCRAdmin' =>
  array (
    'content_tree' => 'Content',
    'reset_tree' => 'Reset',
    'create_item' => 'Create',
    'delete_item' => 'Delete',
    'confirm_move_node' => 'Really move that node?',
    'list_results_count_prefix' => 'at least',
    'not_editable' => '(not editable)',
    'label_type_contains_words' => 'contains words',
  ),
  'FOSUserBundle' =>
  array (
    'Bad credentials' => 'Invalid username or password',
    'group.edit.submit' => 'Update group',
    'group.show.name' => 'Group name',
    'group.new.submit' => 'Create group',
    'group.flash.updated' => 'The group has been updated',
    'group.flash.created' => 'The group has been created',
    'group.flash.deleted' => 'The group has been deleted',
    'security.login.username' => 'Username:',
    'security.login.password' => 'Password:',
    'security.login.remember_me' => 'Remember me',
    'security.login.submit' => 'Login',
    'profile.show.username' => 'Username',
    'profile.show.email' => 'Email',
    'profile.edit.submit' => 'Update',
    'profile.flash.updated' => 'The profile has been updated',
    'change_password.submit' => 'Change password',
    'change_password.flash.success' => 'The password has been changed',
    'registration.check_email' => 'An email has been sent to %email%. It contains an activation link you must click to activate your account.',
    'registration.confirmed' => 'Congrats %username%, your account is now activated.',
    'registration.back' => 'Back to the originating page.',
    'registration.submit' => 'Register',
    'registration.flash.user_created' => 'The user has been created successfully',
    'registration.email.subject' => 'Welcome %username%!',
    'registration.email.message' => 'Hello %username%!

To finish activating your account - please visit %confirmationUrl%

Regards,
the Team.
',
    'resetting.password_already_requested' => 'The password for this user has already been requested within the last 24 hours.',
    'resetting.check_email' => 'An email has been sent to %email%. It contains a link you must click to reset your password.',
    'resetting.request.invalid_username' => 'The username or email address "%username%" does not exist.',
    'resetting.request.username' => 'Username or email address:',
    'resetting.request.submit' => 'Reset password',
    'resetting.reset.submit' => 'Change password',
    'resetting.flash.success' => 'The password has been reset successfully',
    'resetting.email.subject' => 'Reset Password',
    'resetting.email.message' => 'Hello %username%!

To reset your password - please visit %confirmationUrl%

Regards,
the Team.
',
    'layout.logout' => 'Logout',
    'layout.login' => 'Login',
    'layout.register' => 'Register',
    'layout.logged_in_as' => 'Logged in as %username%',
    'form.group_name' => 'Group name:',
    'form.username' => 'Username:',
    'form.email' => 'Email:',
    'form.current_password' => 'Current password:',
    'form.password' => 'Password:',
    'form.password_confirmation' => 'Repeat password:',
    'form.new_password' => 'New password:',
    'form.new_password_confirmation' => 'Repeat new password:',
  ),
  'SonataUserBundle' =>
  array (
    'title_user_registration' => 'Register',
    'title_user_account' => 'User Profile',
    'title_user_edit_profile' => 'Edit',
    'title_user_authentication' => 'Authentication',
    'sonata_user_submit' => 'Submit',
    'breadcrumb.link_user_list' => 'Users',
    'breadcrumb.link_user_create' => 'Create',
    'breadcrumb.link_user_edit' => 'Edit',
    'breadcrumb.link_user_delete' => 'Delete',
    'breadcrumb.link_group_list' => 'Groups',
    'breadcrumb.link_group_create' => 'Create',
    'breadcrumb.link_group_edit' => 'Edit',
    'users' => 'Users',
    'groups' => 'Groups',
    'switch_user_exit' => 'Exit impersonating mode',
    'switch_user' => 'Impersonate User',
    'user_block_logout' => 'Logout',
    'form.label_username' => 'Username',
    'form.label_email' => 'E-Mail-Address',
    'form.label_plain_password' => 'Plain password',
    'form.label_groups' => 'Groups',
    'form.label_roles' => 'Roles',
    'form.label_locked' => 'Locked',
    'form.label_expired' => 'Expired',
    'form.label_enabled' => 'Enabled',
    'form.label_credentials_expired' => 'Credentials expired',
    'form.label_created_at' => 'Created at',
    'form.label_last_login' => 'Last login',
    'form.label_name' => 'Name',
    'filter.label_username' => 'Username',
    'filter.label_name' => 'Name',
    'filter.label_email' => 'E-Mail-Address',
    'filter.label_locked' => 'Locked',
    'filter.label_id' => 'ID',
    'filter.label_groups' => 'Groups',
    'filter.label_created_at' => 'Created at',
    'filter.label_last_login' => 'Last login',
    'filter.label_firstname' => 'Firstname',
    'filter.label_lastname' => 'Lastname',
    'list.label_username' => 'Username',
    'list.label_name' => 'Name',
    'list.label_email' => 'E-Mail-Address',
    'list.label_groups' => 'Groups',
    'list.label_locked' => 'Locked',
    'list.label_enabled' => 'Enabled',
    'list.label_created_at' => 'Created at',
    'list.label_last_login' => 'Last login',
    'list.label_impersonating' => 'Impersonate User',
    'list.label_roles' => 'Roles',
    'list.label_firstname' => 'Firstname',
    'list.label_lastname' => 'Lastname',
    'label_two_step_code' => 'Two-step verification',
    'message_two_step_code_help' => 'Enter the verification code generated by your mobile application.',
    'label_two_step_code_error' => 'The verification code is not valid',
    'sonata_user' => 'Users',
    'General' => 'General',
    'Groups' => 'Groups',
    'Management' => 'Management',
    'field.label_roles_editable' => 'Roles',
    'form.label_date_of_birth' => 'Date of birth',
    'form.label_firstname' => 'Firstname',
    'form.label_lastname' => 'Lastname',
    'form.label_website' => 'Website',
    'form.label_biography' => 'Biography',
    'form.label_gender' => 'Gender',
    'form.label_locale' => 'Locale',
    'form.label_timezone' => 'Timezone',
    'form.label_phone' => 'Phone',
    'form.label_facebook_uid' => 'Facebook Uid',
    'form.label_facebook_name' => 'Facebook Name',
    'form.label_twitter_uid' => 'Twitter Uid',
    'form.label_twitter_name' => 'Twitter Name',
    'form.label_gplus_uid' => 'Google+ Uid',
    'form.label_gplus_name' => 'Google+ Name',
    'form.label_token' => 'Token',
    'form.label_two_step_verification_code' => 'Two Step Verification Code',
    'show.label_username' => 'Username',
    'show.label_email' => 'Email',
    'show.label_groups' => 'Groups',
    'show.label_date_of_birth' => 'Date of birth',
    'show.label_firstname' => 'Firstname',
    'show.label_lastname' => 'Lastname',
    'show.label_website' => 'Website',
    'show.label_biography' => 'Biography',
    'show.label_gender' => 'Gender',
    'show.label_locale' => 'Locale',
    'show.label_timezone' => 'Timezone',
    'show.label_phone' => 'Phone',
    'show.label_facebook_uid' => 'Facebook Uid',
    'show.label_facebook_name' => 'Facebook Name',
    'show.label_twitter_uid' => 'Twitter Uid',
    'show.label_twitter_name' => 'Twitter Name',
    'show.label_gplus_uid' => 'Google+ Uid',
    'show.label_gplus_name' => 'Google+ Name',
    'show.label_token' => 'Token',
    'show.label_two_step_verification_code' => 'Two Step Verification Code',
    'show.label_created_at' => 'Created at',
    'show.label_last_login' => 'Last login',
    'breadcrumb.link_user_show' => 'Show',
    'gender_unknown' => 'unknown',
    'gender_female' => 'female',
    'gender_male' => 'male',
    'sonata_profile_title' => 'Dashboard',
    'link_show_profile' => 'Dashboard',
    'link_edit_profile' => 'Profile',
    'title_user_edit_authentication' => 'Authentication',
    'link_edit_authentication' => 'Authentication',
    'label_profile_gender' => 'Gender',
    'label_profile_firstname' => 'Firstname',
    'label_profile_lastname' => 'Lastname',
    'label_profile_website' => 'Website',
    'label_profile_dob' => 'Date of birth',
    'label_profile_biography' => 'Biography',
    'label_profile_locale' => 'Locale',
    'label_profile_timezone' => 'Timezone',
    'label_profile_phone' => 'Phone',
    'profile.flash.updated' => 'Your profile has been updated.',
    'sonata_change_password_link' => 'Change your password',
    'link_register' => 'Register',
    'link_login' => 'Log In',
    'link_logout' => 'Log out',
    'registration.flash.user_created' => 'Your account has been created successfully!',
    'forgotten_password' => 'Forgotten password?',
    'sonata_user_profile_breadcrumb_index' => 'Dashboard',
    'sonata_user_profile_breadcrumb_edit' => 'Edit profile',
    'sonata_user_already_authenticated' => 'You are already logged in',
  ),
  'CmfCoreBundle' =>
  array (
    'form.group_publish_workflow' => 'Publish Workflow',
    'form.label_publishable' => 'Publishable',
    'form.label_publish_start_date' => 'Publish from',
    'form.label_publish_end_date' => 'Publish until',
    'form.label_locale' => 'Locale',
    'form.help_publish_start_date' => 'Only publish on or after this date, leave empty to immediately publish',
    'form.help_publish_end_date' => 'Only publish before this date, leave empty to not end publishing',
    'list.label_locales' => 'Locales',
  ),
  'CmfMenuBundle' =>
  array (
    'dashboard.cmf' => 'Symfony CMF',
    'dashboard.label_menu' => 'Menus',
    'dashboard.label_menu_node' => 'Menu node',
    'breadcrumb.link_menu_list' => 'Menus',
    'breadcrumb.link_menu_create' => 'Create',
    'breadcrumb.link_menu_edit' => 'Edit',
    'breadcrumb.link_menu_delete' => 'Delete',
    'breadcrumb.link_menu_node_list' => 'Menu nodes',
    'breadcrumb.link_menu_node_create' => 'Create',
    'breadcrumb.link_menu_node_edit' => 'Edit',
    'breadcrumb.link_menu_node_delete' => 'Delete',
    'list.label_id' => 'Id',
    'list.label_name' => 'Name',
    'list.label_label' => 'Label',
    'list.label_uri' => 'URI',
    'list.label_route' => 'Route',
    'form.group_general' => 'General',
    'form.group_items' => 'Items',
    'form.label_children' => 'Items',
    'form.label_parent' => 'Parent',
    'form.label_name' => 'Name',
    'form.label_label' => 'Label',
    'form.label_uri' => 'URI',
    'form.label_route' => 'Route',
    'form.label_parameters' => 'Route parameters',
    'form.label_content' => 'Content',
    'form.label_link_type' => 'Link type',
    'form.label_weak' => 'Weak association',
    'help.items_help' => 'Click on item to edit, right click to create new items.',
    'form.group_menus' => 'Menu',
    'form.label_menu_nodes' => 'Menu',
    'form.group_menu_options' => 'Menu Options',
    'form.label_display' => 'Display',
    'form.help_display' => 'A menu entry is only displayed if the label is not empty.',
    'form.label_display_children' => 'Display Children',
    'form.help_display_children' => 'Children are only displayed if the menu entry itself is displayed.',
    'form.label_attributes' => 'Menu attributes',
    'form.label_label_attributes' => 'Label attributes',
    'form.label_children_attributes' => 'Children attributes',
    'form.label_link_attributes' => 'Link attributes',
  ),
));
$catalogue->addFallbackCatalogue($catalogueEn);

return $catalogue;


text:
		<?php if($user->isSigned()): ?>
			My Account
			LogOut
		<?php else: ?>
			LogIn
			Register
			Forgot Password?
		<?php endif; ?>


text:
@interface MLAutoRecordFrameTableViewCell()

@property (nonatomic, assign) BOOL dontUseCachedMLTagViewFrameRecord;

@end

@implementation MLAutoRecordFrameTableViewCell

- (void)layoutSubviews {
    [super layoutSubviews];

    UITableView *tableView = [self currentTableView];
    NSIndexPath *indexPath = nil;
    if (!self.dontUseCachedMLTagViewFrameRecord&&[tableView isKindOfClass:[MLAutoRecordFrameTableView class]]&&self.indexPathForMLAutoRecordFrameBlock) {
        //If no indexPathForMLAutoRecordFrameBlock, indicate dont want to use cache to layout
        indexPath = self.indexPathForMLAutoRecordFrameBlock(self);
        //If indexPathForMLAutoRecordFrameBlock return nil, indicate current `layoutSubviews` is not necessary, just return.
        if (!indexPath) {
            return;
        }

        MLTagViewFrameRecord *frameRecord = [((MLAutoRecordFrameTableView*)tableView) cachedMLTagViewFrameRecordForRowAtIndexPath:indexPath];
        if (frameRecord) {
            NSAssert(frameRecord.isDirtyBlock, @"the cached root frame record must have isDirtyBlock");
            if (!frameRecord.isDirtyBlock(@(self.contentView.frame.size.width))) {
                [frameRecord layoutTagViewsWithRootView:self.contentView];
                return;
            }
        }
    }

    if (self.contentView.frame.size.width<=0.0f) {
        return;
    }

    //layout
    [self layoutSubviewsIfNoFrameRecord];

    if (indexPath) {
        //cache
        MLTagViewFrameRecord *frameRecord = [self.contentView exportTagViewFrameRecord];
        //If new width is not equal to calc width, is dirty
        NSInteger calcWidth = self.contentView.frame.size.width;
        [frameRecord setIsDirtyBlock:^BOOL(id _Nonnull userInfo) {
            return [userInfo integerValue]!=calcWidth;
        }];
        [((MLAutoRecordFrameTableView*)tableView) cacheMLTagViewFrameRecord:frameRecord forRowAtIndexPath:indexPath];
    }
}

- (void)layoutSubviewsIfNoFrameRecord {

}

- (UITableView*)currentTableView {
    UIView *view = self.superview;
    while (view&&![view isKindOfClass:[UITableView class]]) {
        view = view.superview;
    }
    return (UITableView*)view;
}

+ (CGFloat)heightForRowAtIndexPath:(NSIndexPath*)indexPath tableView:(MLAutoRecordFrameTableView*)tableView protypeCellBlock:(MLAutoRecordFrameTableViewCell *(^)(Class cellCls))protypeCellBlock beforeLayout:(nullable void (^)(MLAutoRecordFrameTableViewCell *protypeCell))beforeLayout {
    NSParameterAssert(protypeCellBlock);
    NSAssert([tableView isKindOfClass:[MLAutoRecordFrameTableView class]], @"tableView must be `MLAutoRecordFrameTableView`");

    if (tableView.frame.size.width<=0.0f) {
        return 0.0f;
    }

    //find the cache
    MLTagViewFrameRecord *frameRecord = [((MLAutoRecordFrameTableView*)tableView) cachedMLTagViewFrameRecordForRowAtIndexPath:indexPath];
    if (frameRecord) {
        return frameRecord.frame.size.height;
    }

    MLAutoRecordFrameTableViewCell *protypeCell = protypeCellBlock([self class]);

    if (protypeCell.frame.size.width!=tableView.frame.size.width) {
        CGRect frame = protypeCell.frame;
        frame.size.width = tableView.frame.size.width;
        protypeCell.frame = frame;
    }

    if (beforeLayout) {
        beforeLayout(protypeCell);
    }

    //because `layoutIfNeeded` will set new frames to all updated subviews.
    //so the performance is bad.
    [protypeCell setNeedsLayout];
    [protypeCell layoutIfNeeded];

    //cache
    frameRecord = [protypeCell.contentView exportTagViewFrameRecord];

    //If new width is not equal to calc width, is dirty
    NSInteger calcWidth = protypeCell.contentView.frame.size.width;
    [frameRecord setIsDirtyBlock:^BOOL(id _Nonnull userInfo) {
        return [userInfo integerValue]!=calcWidth;
    }];

    [tableView cacheMLTagViewFrameRecord:frameRecord forRowAtIndexPath:indexPath];

    return frameRecord.frame.size.height;
}

+ (CGFloat)heightForRowUsingPureMLLayoutAtIndexPath:(NSIndexPath*)indexPath tableView:(MLAutoRecordFrameTableView*)tableView protypeCellBlock:(MLAutoRecordFrameTableViewCell *(^)(Class cellCls))protypeCellBlock beforeLayout:(nullable void (^)(MLAutoRecordFrameTableViewCell *protypeCell))beforeLayout {
    NSParameterAssert(protypeCellBlock);
    NSAssert([tableView isKindOfClass:[MLAutoRecordFrameTableView class]], @"tableView must be `MLAutoRecordFrameTableView`");

    if (tableView.frame.size.width<=0.0f) {
        return 0.0f;
    }

    //find the cache
    MLTagViewFrameRecord *frameRecord = [((MLAutoRecordFrameTableView*)tableView) cachedMLTagViewFrameRecordForRowAtIndexPath:indexPath];
    if (frameRecord) {
        return frameRecord.frame.size.height;
    }

    MLAutoRecordFrameTableViewCell *protypeCell = protypeCellBlock([self class]);

    if (beforeLayout) {
        beforeLayout(protypeCell);
    }

    [protypeCell.layoutOfContentView dirtyAllRelatedLayouts];
    [protypeCell.layoutOfContentView updatedLayoutsAfterLayoutCalculationWithFrame:CGRectMake(0, 0, tableView.frame.size.width, kMLLayoutUndefined)];

    //cache
    frameRecord = [protypeCell.layoutOfContentView exportTagViewFrameRecord];

    //If new width is not equal to calc width, is dirty
    NSInteger calcWidth = tableView.frame.size.width;
    [frameRecord setIsDirtyBlock:^BOOL(id _Nonnull userInfo) {
        return [userInfo integerValue]!=calcWidth;
    }];

    [tableView cacheMLTagViewFrameRecord:frameRecord forRowAtIndexPath:indexPath];

    return frameRecord.frame.size.height;
}

static inline MLAutoRecordFrameTableViewCell *kProtypeAutoRecordFrameTableViewCell(Class cls,UITableView *tableView) {
    NSCAssert([cls isSubclassOfClass:[MLAutoRecordFrameTableViewCell class]], @"cls must be subclass of `MLAutoRecordFrameTableViewCell` class");

    static NSMapTable *protypeCells = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        protypeCells = [NSMapTable weakToStrongObjectsMapTable];
    });

    NSMutableDictionary *dict = [protypeCells objectForKey:tableView];
    if (!dict) {
        dict = [NSMutableDictionary dictionaryWithCapacity:1];
        [protypeCells setObject:dict forKey:tableView];
    }

    NSString *clsName = NSStringFromClass(cls);
    MLAutoRecordFrameTableViewCell *protypeCell = dict[clsName];
    if (!protypeCell) {
        protypeCell = [cls new];
        dict[clsName] = protypeCell;
    }
    return protypeCell;
}

+ (CGFloat)heightForRowAtIndexPath:(NSIndexPath*)indexPath tableView:(MLAutoRecordFrameTableView*)tableView beforeLayout:(nullable void (^)(MLAutoRecordFrameTableViewCell *protypeCell))beforeLayout {
    return [self heightForRowAtIndexPath:indexPath tableView:tableView protypeCellBlock:^MLAutoRecordFrameTableViewCell *(__unsafe_unretained Class cellCls) {
        return kProtypeAutoRecordFrameTableViewCell(cellCls,tableView);
    } beforeLayout:beforeLayout];
}

+ (CGFloat)heightForRowUsingPureMLLayoutAtIndexPath:(NSIndexPath*)indexPath tableView:(MLAutoRecordFrameTableView*)tableView beforeLayout:(nullable void (^)(MLAutoRecordFrameTableViewCell *protypeCell))beforeLayout {
    return [self heightForRowUsingPureMLLayoutAtIndexPath:indexPath tableView:tableView protypeCellBlock:^MLAutoRecordFrameTableViewCell *(__unsafe_unretained Class cellCls) {
        return kProtypeAutoRecordFrameTableViewCell(cellCls,tableView);
    } beforeLayout:beforeLayout];
}

static inline MLAutoRecordFrameTableViewCell *kProtypeAutoRecordFrameTableViewCellFromNib(Class cls,UITableView *tableView) {
    NSCAssert([cls isSubclassOfClass:[MLAutoRecordFrameTableViewCell class]], @"cls must be subclass of `MLAutoRecordFrameTableViewCell` class");

    static NSMapTable *protypeCells = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        protypeCells = [NSMapTable weakToStrongObjectsMapTable];
    });

    NSMutableDictionary *dict = [protypeCells objectForKey:tableView];
    if (!dict) {
        dict = [NSMutableDictionary dictionaryWithCapacity:1];
        [protypeCells setObject:dict forKey:tableView];
    }

    NSString *clsName = NSStringFromClass(cls);
    MLAutoRecordFrameTableViewCell *protypeCell = dict[clsName];
    if (!protypeCell) {
        protypeCell = [[[NSBundle mainBundle]loadNibNamed:clsName owner:nil options:nil]lastObject];
        NSCAssert(protypeCell, @"Cant find a valid tableViewCell from nib named %@",clsName);
        dict[clsName] = protypeCell;
    }
    return protypeCell;
}

+ (CGFloat)heightForRowFromNibAtIndexPath:(NSIndexPath*)indexPath tableView:(MLAutoRecordFrameTableView*)tableView beforeLayout:(nullable void (^)(MLAutoRecordFrameTableViewCell *protypeCell))beforeLayout {
    return [self heightForRowAtIndexPath:indexPath tableView:tableView protypeCellBlock:^MLAutoRecordFrameTableViewCell *(__unsafe_unretained Class cellCls) {
        return kProtypeAutoRecordFrameTableViewCellFromNib(cellCls,tableView);
    } beforeLayout:beforeLayout];
}

+ (CGFloat)heightForRowUsingPureMLLayoutFromNibAtIndexPath:(NSIndexPath*)indexPath tableView:(MLAutoRecordFrameTableView*)tableView beforeLayout:(nullable void (^)(MLAutoRecordFrameTableViewCell *protypeCell))beforeLayout {
    return [self heightForRowUsingPureMLLayoutAtIndexPath:indexPath tableView:tableView protypeCellBlock:^MLAutoRecordFrameTableViewCell *(__unsafe_unretained Class cellCls) {
        return kProtypeAutoRecordFrameTableViewCellFromNib(cellCls,tableView);
    } beforeLayout:beforeLayout];
}
@end


text:
import Draggable from 'vuedraggable'
export default Draggable


text:
linden-samples
==============

Example usage of Linden android extensions for OpenFL

In this sample used following extensions:
- [linden-flurry](https://github.com/sergey-miryanov/linden-flurry)
- [linden-localytics](https://github.com/sergey-miryanov/linden-localytics)
- [linden-google-play](https://github.com/sergey-miryanov/linden-google-play)
- [linden-google-iap](https://github.com/sergey-miryanov/linden-google-iap)

Replace FLURRY_KEY with your key from Flurry (or leave as is)

Replace LOCALYTICS_KEY with your key from Localytics (or leave as is)

Replace GOOGLE_PLAY_GAME_ID with your Project Number from Google Developers Console

Replace GOOGLE_IN_APP_BILLING_KEY with your License key Google Play Developers
Console (Section Services & APIs / Licensing & In-App Billing)

![Sample screenshot](https://raw.github.com/sergey-miryanov/linden-samples/master/Screenshot.png)

You can try sample application ([Get it in GooglePlay](https://play.google.com/store/apps/details?id=ru.zzzzzzerg.linden.samples)), but be aware of buying real (managed) product.

Note: Don't buy managed product when purchase window appear. This is just a test button. Or if you buy managed - you can refund it (but I don't know how).


text:
package restrictedendpoints

import (
	"k8s.io/apimachinery/pkg/runtime"
	"k8s.io/apimachinery/pkg/runtime/schema"
)

var GroupVersion = schema.GroupVersion{Group: "network.openshift.io", Version: runtime.APIVersionInternal}

var (
	schemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
	Install       = schemeBuilder.AddToScheme
)

func addKnownTypes(scheme *runtime.Scheme) error {
	scheme.AddKnownTypes(GroupVersion,
		&RestrictedEndpointsAdmissionConfig{},
	)
	return nil
}


text:
using UnityEngine;
using System.Collections;

public class SpawnDestroyer : MonoBehaviour {

    public void OnTriggerEnter(Collider other)
    {
       if (other.gameObject.layer == 8) // Spawned
        {
           Destroy(other.gameObject);
       }
    }

    void OnDrawGizmos()
    {
        Gizmos.color = new Color(0, 0, 1, 0.5f);
        Gizmos.matrix = transform.localToWorldMatrix;
        Gizmos.DrawCube(Vector3.zero, Vector3.one);
    }
}