// Copyright (C) 2007 The Trustees of Indiana University.

// Use, modification and distribution is subject to the Boost Software
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)

//  Authors: Douglas Gregor
//           Andrew Lumsdaine

/**************************************************************************
 * This source file implements the Delta-stepping algorithm:              *
 *                                                                        *
 *   Ulrich Meyer and Peter Sanders. Parallel Shortest Path for Arbitrary *
 *   Graphs. In Proceedings from the 6th International Euro-Par           *
 *   Conference on Parallel Processing, pages 461--470, 2000.             *
 *                                                                        *
 *   Ulrich Meyer, Peter Sanders: [Delta]-stepping: A Parallelizable      *
 *   Shortest Path Algorithm. J. Algorithms 49(1): 114-152, 2003.         *
 *                                                                        *
 * There are several potential optimizations we could still perform for   *
 * this algorithm implementation:                                         *
 *                                                                        *
 *   - Implement "shortcuts", which bound the number of reinsertions      *
 *     in a single bucket (to one). The computation of shortcuts looks    *
 *     expensive in a distributed-memory setting, but it could be         *
 *     ammortized over many queries.                                      *
 *                                                                        *
 *   - The size of the "buckets" data structure can be bounded to         *
 *     max_edge_weight/delta buckets, if we treat the buckets as a        *
 *     circular array.                                                    *
 *                                                                        *
 *   - If we partition light/heavy edges ahead of time, we could improve  *
 *     relaxation performance by only iterating over the right portion    *
 *     of the out-edge list each time.                                    *
 *                                                                        *
 *   - Implement a more sophisticated algorithm for guessing "delta",     *
 *     based on the shortcut-finding algorithm.                           *
 **************************************************************************/
#ifndef BOOST_GRAPH_DELTA_STEPPING_SHORTEST_PATHS_HPP
#define BOOST_GRAPH_DELTA_STEPPING_SHORTEST_PATHS_HPP

#ifndef BOOST_GRAPH_USE_MPI
#error "Parallel BGL files should not be included unless <boost/graph/use_mpi.hpp> has been included"
#endif

#include <boost/config.hpp>
#include <boost/graph/graph_traits.hpp>
#include <boost/property_map/property_map.hpp>
#include <boost/graph/iteration_macros.hpp>
#include <limits>
#include <list>
#include <vector>
#include <boost/graph/parallel/container_traits.hpp>
#include <boost/graph/parallel/properties.hpp>
#include <boost/graph/distributed/detail/dijkstra_shortest_paths.hpp>
#include <utility> // for std::pair
#include <functional> // for std::logical_or
#include <boost/graph/parallel/algorithm.hpp> // for all_reduce
#include <cassert>
#include <algorithm> // for std::min, std::max
#include <boost/graph/parallel/simple_trigger.hpp>

#ifdef PBGL_DELTA_STEPPING_DEBUG
#  include <iostream> // for std::cerr
#endif

namespace boost { namespace graph { namespace distributed {

template<typename Graph, typename PredecessorMap, typename DistanceMap,
         typename EdgeWeightMap>
class delta_stepping_impl {
  typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
  typedef typename graph_traits<Graph>::degree_size_type Degree;
  typedef typename property_traits<EdgeWeightMap>::value_type Dist;
  typedef typename boost::graph::parallel::process_group_type<Graph>::type
    ProcessGroup;

  typedef std::list<Vertex> Bucket;
  typedef typename Bucket::iterator BucketIterator;
  typedef typename std::vector<Bucket*>::size_type BucketIndex;

  typedef detail::dijkstra_msg_value<DistanceMap, PredecessorMap> MessageValue;

  enum {
    // Relax a remote vertex. The message contains a pair<Vertex,
    // MessageValue>, the first part of which is the vertex whose
    // tentative distance is being relaxed and the second part
    // contains either the new distance (if there is no predecessor
    // map) or a pair with the distance and predecessor.
    msg_relax
  };

public:
  delta_stepping_impl(const Graph& g,
                      PredecessorMap predecessor,
                      DistanceMap distance,
                      EdgeWeightMap weight,
                      Dist delta);

  delta_stepping_impl(const Graph& g,
                      PredecessorMap predecessor,
                      DistanceMap distance,
                      EdgeWeightMap weight);

  void run(Vertex s);

private:
  // Relax the edge (u, v), creating a new best path of distance x.
  void relax(Vertex u, Vertex v, Dist x);

  // Synchronize all of the processes, by receiving all messages that
  // have not yet been received.
  void synchronize();

  // Handle a relax message that contains only the target and
  // distance. This kind of message will be received when the
  // predecessor map is a dummy_property_map.
  void handle_relax_message(Vertex v, Dist x) { relax(v, v, x); }

  // Handle a relax message that contains the source (predecessor),
  // target, and distance. This kind of message will be received when
  // the predecessor map is not a dummy_property_map.
  void handle_relax_message(Vertex v, const std::pair<Dist, Vertex>& p)
  { relax(p.second, v, p.first); }

  // Setup triggers for msg_relax messages
  void setup_triggers();

  void handle_msg_relax(int /*source*/, int /*tag*/,
                        const std::pair<Vertex, typename MessageValue::type>& data,
                        trigger_receive_context)
  { handle_relax_message(data.first, data.second); }

  const Graph& g;
  PredecessorMap predecessor;
  DistanceMap distance;
  EdgeWeightMap weight;
  Dist delta;
  ProcessGroup pg;
  typename property_map<Graph, vertex_owner_t>::const_type owner;
  typename property_map<Graph, vertex_local_t>::const_type local;

  // A "property map" that contains the position of each vertex in
  // whatever bucket it resides in.
  std::vector<BucketIterator> position_in_bucket;

  // Bucket data structure. The ith bucket contains all local vertices
  // with (tentative) distance in the range [i*delta,
  // (i+1)*delta).
  std::vector<Bucket*> buckets;

  // This "dummy" list is used only so that we can initialize the
  // position_in_bucket property map with non-singular iterators. This
  // won't matter for most implementations of the C++ Standard
  // Library, but it avoids undefined behavior and allows us to run
  // with library "debug modes".
  std::list<Vertex> dummy_list;

  // A "property map" that states which vertices have been deleted
  // from the bucket in this iteration.
  std::vector<bool> vertex_was_deleted;
};

template<typename Graph, typename PredecessorMap, typename DistanceMap,
         typename EdgeWeightMap>
delta_stepping_impl<Graph, PredecessorMap, DistanceMap, EdgeWeightMap>::
delta_stepping_impl(const Graph& g,
                    PredecessorMap predecessor,
                    DistanceMap distance,
                    EdgeWeightMap weight,
                    Dist delta)
    : g(g),
      predecessor(predecessor),
      distance(distance),
      weight(weight),
      delta(delta),
      pg(boost::graph::parallel::process_group_adl(g), attach_distributed_object()),
      owner(get(vertex_owner, g)),
      local(get(vertex_local, g))
{
  setup_triggers();
}

template<typename Graph, typename PredecessorMap, typename DistanceMap,
         typename EdgeWeightMap>
delta_stepping_impl<Graph, PredecessorMap, DistanceMap, EdgeWeightMap>::
delta_stepping_impl(const Graph& g,
                    PredecessorMap predecessor,
                    DistanceMap distance,
                    EdgeWeightMap weight)
    : g(g),
      predecessor(predecessor),
      distance(distance),
      weight(weight),
      pg(boost::graph::parallel::process_group_adl(g), attach_distributed_object()),
      owner(get(vertex_owner, g)),
      local(get(vertex_local, g))
{
  using boost::parallel::all_reduce;
  using boost::parallel::maximum;
  using std::max;

  // Compute the maximum edge weight and degree
  Dist max_edge_weight = 0;
  Degree max_degree = 0;
  BGL_FORALL_VERTICES_T(u, g, Graph) {
    max_degree = max BOOST_PREVENT_MACRO_SUBSTITUTION (max_degree, out_degree(u, g));
    BGL_FORALL_OUTEDGES_T(u, e, g, Graph)
      max_edge_weight = max BOOST_PREVENT_MACRO_SUBSTITUTION (max_edge_weight, get(weight, e));
  }

  max_edge_weight = all_reduce(pg, max_edge_weight, maximum<Dist>());
  max_degree = all_reduce(pg, max_degree, maximum<Degree>());

  // Take a guess at delta, based on what works well for random
  // graphs.
  delta = max_edge_weight / max_degree;
  if (delta == 0)
    delta = 1;

  setup_triggers();
}

template<typename Graph, typename PredecessorMap, typename DistanceMap,
         typename EdgeWeightMap>
void
delta_stepping_impl<Graph, PredecessorMap, DistanceMap, EdgeWeightMap>::
run(Vertex s)
{
  Dist inf = (std::numeric_limits<Dist>::max)();

  // None of the vertices are stored in the bucket.
  position_in_bucket.clear();
  position_in_bucket.resize(num_vertices(g), dummy_list.end());

  // None of the vertices have been deleted
  vertex_was_deleted.clear();
  vertex_was_deleted.resize(num_vertices(g), false);

  // No path from s to any other vertex, yet
  BGL_FORALL_VERTICES_T(v, g, Graph)
    put(distance, v, inf);

  // The distance to the starting node is zero
  if (get(owner, s) == process_id(pg))
    // Put "s" into its bucket (bucket 0)
    relax(s, s, 0);
  else
    // Note that we know the distance to s is zero
    cache(distance, s, 0);

  BucketIndex max_bucket = (std::numeric_limits<BucketIndex>::max)();
  BucketIndex current_bucket = 0;
  do {
    // Synchronize with all of the other processes.
    synchronize();

    // Find the next bucket that has something in it.
    while (current_bucket < buckets.size()
           && (!buckets[current_bucket] || buckets[current_bucket]->empty()))
      ++current_bucket;
    if (current_bucket >= buckets.size())
      current_bucket = max_bucket;

#ifdef PBGL_DELTA_STEPPING_DEBUG
    std::cerr << "#" << process_id(pg) << ": lowest bucket is #"
              << current_bucket << std::endl;
#endif
    // Find the smallest bucket (over all processes) that has vertices
    // that need to be processed.
    using boost::parallel::all_reduce;
    using boost::parallel::minimum;
    current_bucket = all_reduce(pg, current_bucket, minimum<BucketIndex>());

    if (current_bucket == max_bucket)
      // There are no non-empty buckets in any process; exit.
      break;

#ifdef PBGL_DELTA_STEPPING_DEBUG
    if (process_id(pg) == 0)
      std::cerr << "Processing bucket #" << current_bucket << std::endl;
#endif

    // Contains the set of vertices that have been deleted in the
    // relaxation of "light" edges. Note that we keep track of which
    // vertices were deleted with the property map
    // "vertex_was_deleted".
    std::vector<Vertex> deleted_vertices;

    // Repeatedly relax light edges
    bool nonempty_bucket;
    do {
      // Someone has work to do in this bucket.

      if (current_bucket < buckets.size() && buckets[current_bucket]) {
        Bucket& bucket = *buckets[current_bucket];
        // For each element in the bucket
        while (!bucket.empty()) {
          Vertex u = bucket.front();

#ifdef PBGL_DELTA_STEPPING_DEBUG
          std::cerr << "#" << process_id(pg) << ": processing vertex "
                    << get(vertex_global, g, u).second << "@"
                    << get(vertex_global, g, u).first
                    << std::endl;
#endif

          // Remove u from the front of the bucket
          bucket.pop_front();

          // Insert u into the set of deleted vertices, if it hasn't
          // been done already.
          if (!vertex_was_deleted[get(local, u)]) {
            vertex_was_deleted[get(local, u)] = true;
            deleted_vertices.push_back(u);
          }

          // Relax each light edge.
          Dist u_dist = get(distance, u);
          BGL_FORALL_OUTEDGES_T(u, e, g, Graph)
            if (get(weight, e) <= delta) // light edge
              relax(u, target(e, g), u_dist + get(weight, e));
        }
      }

      // Synchronize with all of the other processes.
      synchronize();

      // Is the bucket empty now?
      nonempty_bucket = (current_bucket < buckets.size()
                         && buckets[current_bucket]
                         && !buckets[current_bucket]->empty());
     } while (all_reduce(pg, nonempty_bucket, std::logical_or<bool>()));

    // Relax heavy edges for each of the vertices that we previously
    // deleted.
    for (typename std::vector<Vertex>::iterator iter = deleted_vertices.begin();
         iter != deleted_vertices.end(); ++iter) {
      // Relax each heavy edge.
      Vertex u = *iter;
      Dist u_dist = get(distance, u);
      BGL_FORALL_OUTEDGES_T(u, e, g, Graph)
        if (get(weight, e) > delta) // heavy edge
          relax(u, target(e, g), u_dist + get(weight, e));
    }

    // Go to the next bucket: the current bucket must already be empty.
    ++current_bucket;
  } while (true);

  // Delete all of the buckets.
  for (typename std::vector<Bucket*>::iterator iter = buckets.begin();
       iter != buckets.end(); ++iter) {
    if (*iter) {
      delete *iter;
      *iter = 0;
    }
  }
}

template<typename Graph, typename PredecessorMap, typename DistanceMap,
         typename EdgeWeightMap>
void
delta_stepping_impl<Graph, PredecessorMap, DistanceMap, EdgeWeightMap>::
relax(Vertex u, Vertex v, Dist x)
{
#ifdef PBGL_DELTA_STEPPING_DEBUG
  std::cerr << "#" << process_id(pg) << ": relax("
            << get(vertex_global, g, u).second << "@"
            << get(vertex_global, g, u).first << ", "
            << get(vertex_global, g, v).second << "@"
            << get(vertex_global, g, v).first << ", "
            << x << ")" << std::endl;
#endif

  if (x < get(distance, v)) {
    // We're relaxing the edge to vertex v.
    if (get(owner, v) == process_id(pg)) {
      // Compute the new bucket index for v
      BucketIndex new_index = static_cast<BucketIndex>(x / delta);

      // Make sure there is enough room in the buckets data structure.
      if (new_index >= buckets.size()) buckets.resize(new_index + 1, 0);

      // Make sure that we have allocated the bucket itself.
      if (!buckets[new_index]) buckets[new_index] = new Bucket;

      if (get(distance, v) != (std::numeric_limits<Dist>::max)()
          && !vertex_was_deleted[get(local, v)]) {
        // We're moving v from an old bucket into a new one. Compute
        // the old index, then splice it in.
        BucketIndex old_index
          = static_cast<BucketIndex>(get(distance, v) / delta);
        buckets[new_index]->splice(buckets[new_index]->end(),
                                   *buckets[old_index],
                                   position_in_bucket[get(local, v)]);
      } else {
        // We're inserting v into a bucket for the first time. Put it
        // at the end.
        buckets[new_index]->push_back(v);
      }

      // v is now at the last position in the new bucket
      position_in_bucket[get(local, v)] = buckets[new_index]->end();
      --position_in_bucket[get(local, v)];

      // Update predecessor and tentative distance information
      put(predecessor, v, u);
      put(distance, v, x);
    } else {
#ifdef PBGL_DELTA_STEPPING_DEBUG
      std::cerr << "#" << process_id(pg) << ": sending relax("
                << get(vertex_global, g, u).second << "@"
                << get(vertex_global, g, u).first << ", "
                << get(vertex_global, g, v).second << "@"
                << get(vertex_global, g, v).first << ", "
            << x << ") to " << get(owner, v) << std::endl;

#endif
      // The vertex is remote: send a request to the vertex's owner
      send(pg, get(owner, v), msg_relax,
           std::make_pair(v, MessageValue::create(x, u)));

      // Cache tentative distance information
      cache(distance, v, x);
    }
  }
}

template<typename Graph, typename PredecessorMap, typename DistanceMap,
         typename EdgeWeightMap>
void
delta_stepping_impl<Graph, PredecessorMap, DistanceMap, EdgeWeightMap>::
synchronize()
{
  using boost::parallel::synchronize;

  // Synchronize at the process group level.
  synchronize(pg);

  // Receive any relaxation request messages.
//   typedef typename ProcessGroup::process_id_type process_id_type;
//   while (optional<std::pair<process_id_type, int> > stp = probe(pg)) {
//     // Receive the relaxation message
//     assert(stp->second == msg_relax);
//     std::pair<Vertex, typename MessageValue::type> data;
//     receive(pg, stp->first, stp->second, data);

//     // Turn it into a "relax" call
//     handle_relax_message(data.first, data.second);
//   }
}

template<typename Graph, typename PredecessorMap, typename DistanceMap,
         typename EdgeWeightMap>
void
delta_stepping_impl<Graph, PredecessorMap, DistanceMap, EdgeWeightMap>::
setup_triggers()
{
  using boost::graph::parallel::simple_trigger;

  simple_trigger(pg, msg_relax, this,
                 &delta_stepping_impl::handle_msg_relax);
}

template<typename Graph, typename PredecessorMap, typename DistanceMap,
         typename EdgeWeightMap>
void
delta_stepping_shortest_paths
  (const Graph& g,
   typename graph_traits<Graph>::vertex_descriptor s,
   PredecessorMap predecessor, DistanceMap distance, EdgeWeightMap weight,
   typename property_traits<EdgeWeightMap>::value_type delta)
{
  // The "distance" map needs to act like one, retrieving the default
  // value of infinity.
  set_property_map_role(vertex_distance, distance);

  // Construct the implementation object, which will perform all of
  // the actual work.
  delta_stepping_impl<Graph, PredecessorMap, DistanceMap, EdgeWeightMap>
    impl(g, predecessor, distance, weight, delta);

  // Run the delta-stepping algorithm. The results will show up in
  // "predecessor" and "weight".
  impl.run(s);
}

template<typename Graph, typename PredecessorMap, typename DistanceMap,
         typename EdgeWeightMap>
void
delta_stepping_shortest_paths
  (const Graph& g,
   typename graph_traits<Graph>::vertex_descriptor s,
   PredecessorMap predecessor, DistanceMap distance, EdgeWeightMap weight)
{
  // The "distance" map needs to act like one, retrieving the default
  // value of infinity.
  set_property_map_role(vertex_distance, distance);

  // Construct the implementation object, which will perform all of
  // the actual work.
  delta_stepping_impl<Graph, PredecessorMap, DistanceMap, EdgeWeightMap>
    impl(g, predecessor, distance, weight);

  // Run the delta-stepping algorithm. The results will show up in
  // "predecessor" and "weight".
  impl.run(s);
}

} } } // end namespace boost::graph::distributed

#endif // BOOST_GRAPH_DELTA_STEPPING_SHORTEST_PATHS_HPP

{'repo_name': 'danoli3/ofxiOSBoost', 'stars': '266', 'repo_language': 'C++', 'file_name': 'stack.hpp', 'mime_type': 'text/x-c', 'hash': -6772615333360284316, 'source_dataset': 'data'}


{'repo_name': 'spring-projects/spring-vault', 'stars': '146', 'repo_language': 'Java', 'file_name': 'eclipse.importorder', 'mime_type': 'text/plain', 'hash': -5281488680344040595, 'source_dataset': 'data'}


// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 46;
	objects = {

/* Begin PBXBuildFile section */
		1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
		3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
		9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; };
		9740EEB51CF90195004384FC /* Generated.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB31CF90195004384FC /* Generated.xcconfig */; };
		978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
		97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; };
		97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
		97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
		97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
/* End PBXBuildFile section */

/* Begin PBXCopyFilesBuildPhase section */
		9705A1C41CF9048500538489 /* Embed Frameworks */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = "";
			dstSubfolderSpec = 10;
			files = (
			);
			name = "Embed Frameworks";
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
		1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
		1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
		3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
		7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
		7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
		7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
		9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
		9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
		97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
		97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
		97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
		97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
		97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
		97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		97C146EB1CF9000F007C117D /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		9740EEB11CF90186004384FC /* Flutter */ = {
			isa = PBXGroup;
			children = (
				3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
				9740EEB21CF90195004384FC /* Debug.xcconfig */,
				7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
				9740EEB31CF90195004384FC /* Generated.xcconfig */,
			);
			name = Flutter;
			sourceTree = "<group>";
		};
		97C146E51CF9000F007C117D = {
			isa = PBXGroup;
			children = (
				9740EEB11CF90186004384FC /* Flutter */,
				97C146F01CF9000F007C117D /* Runner */,
				97C146EF1CF9000F007C117D /* Products */,
				CF3B75C9A7D2FA2A4C99F110 /* Frameworks */,
			);
			sourceTree = "<group>";
		};
		97C146EF1CF9000F007C117D /* Products */ = {
			isa = PBXGroup;
			children = (
				97C146EE1CF9000F007C117D /* Runner.app */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		97C146F01CF9000F007C117D /* Runner */ = {
			isa = PBXGroup;
			children = (
				7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */,
				7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */,
				97C146FA1CF9000F007C117D /* Main.storyboard */,
				97C146FD1CF9000F007C117D /* Assets.xcassets */,
				97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
				97C147021CF9000F007C117D /* Info.plist */,
				97C146F11CF9000F007C117D /* Supporting Files */,
				1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
				1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
			);
			path = Runner;
			sourceTree = "<group>";
		};
		97C146F11CF9000F007C117D /* Supporting Files */ = {
			isa = PBXGroup;
			children = (
				97C146F21CF9000F007C117D /* main.m */,
			);
			name = "Supporting Files";
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		97C146ED1CF9000F007C117D /* Runner */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
			buildPhases = (
				9740EEB61CF901F6004384FC /* Run Script */,
				97C146EA1CF9000F007C117D /* Sources */,
				97C146EB1CF9000F007C117D /* Frameworks */,
				97C146EC1CF9000F007C117D /* Resources */,
				9705A1C41CF9048500538489 /* Embed Frameworks */,
				3B06AD1E1E4923F5004D2608 /* Thin Binary */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = Runner;
			productName = Runner;
			productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
			productType = "com.apple.product-type.application";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		97C146E61CF9000F007C117D /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastUpgradeCheck = 0910;
				ORGANIZATIONNAME = "The Chromium Authors";
				TargetAttributes = {
					97C146ED1CF9000F007C117D = {
						CreatedOnToolsVersion = 7.3.1;
					};
				};
			};
			buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = English;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = 97C146E51CF9000F007C117D;
			productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				97C146ED1CF9000F007C117D /* Runner */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		97C146EC1CF9000F007C117D /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
				9740EEB51CF90195004384FC /* Generated.xcconfig in Resources */,
				3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
				9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */,
				97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
				97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXShellScriptBuildPhase section */
		3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputPaths = (
			);
			name = "Thin Binary";
			outputPaths = (
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
		};
		9740EEB61CF901F6004384FC /* Run Script */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputPaths = (
			);
			name = "Run Script";
			outputPaths = (
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
		};
/* End PBXShellScriptBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		97C146EA1CF9000F007C117D /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */,
				97C146F31CF9000F007C117D /* main.m in Sources */,
				1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXVariantGroup section */
		97C146FA1CF9000F007C117D /* Main.storyboard */ = {
			isa = PBXVariantGroup;
			children = (
				97C146FB1CF9000F007C117D /* Base */,
			);
			name = Main.storyboard;
			sourceTree = "<group>";
		};
		97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
			isa = PBXVariantGroup;
			children = (
				97C147001CF9000F007C117D /* Base */,
			);
			name = LaunchScreen.storyboard;
			sourceTree = "<group>";
		};
/* End PBXVariantGroup section */

/* Begin XCBuildConfiguration section */
		97C147031CF9000F007C117D /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
				MTL_ENABLE_DEBUG_INFO = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = iphoneos;
				TARGETED_DEVICE_FAMILY = "1,2";
			};
			name = Debug;
		};
		97C147041CF9000F007C117D /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
				MTL_ENABLE_DEBUG_INFO = NO;
				SDKROOT = iphoneos;
				TARGETED_DEVICE_FAMILY = "1,2";
				VALIDATE_PRODUCT = YES;
			};
			name = Release;
		};
		97C147061CF9000F007C117D /* Debug */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CURRENT_PROJECT_VERSION = 1;
				ENABLE_BITCODE = NO;
				FRAMEWORK_SEARCH_PATHS = (
					"$(inherited)",
					"$(PROJECT_DIR)/Flutter",
				);
				INFOPLIST_FILE = Runner/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				LIBRARY_SEARCH_PATHS = (
					"$(inherited)",
					"$(PROJECT_DIR)/Flutter",
				);
				PRODUCT_BUNDLE_IDENTIFIER = com.example.example;
				PRODUCT_NAME = "$(TARGET_NAME)";
				VERSIONING_SYSTEM = "apple-generic";
			};
			name = Debug;
		};
		97C147071CF9000F007C117D /* Release */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CURRENT_PROJECT_VERSION = 1;
				ENABLE_BITCODE = NO;
				FRAMEWORK_SEARCH_PATHS = (
					"$(inherited)",
					"$(PROJECT_DIR)/Flutter",
				);
				INFOPLIST_FILE = Runner/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				LIBRARY_SEARCH_PATHS = (
					"$(inherited)",
					"$(PROJECT_DIR)/Flutter",
				);
				PRODUCT_BUNDLE_IDENTIFIER = com.example.example;
				PRODUCT_NAME = "$(TARGET_NAME)";
				VERSIONING_SYSTEM = "apple-generic";
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				97C147031CF9000F007C117D /* Debug */,
				97C147041CF9000F007C117D /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				97C147061CF9000F007C117D /* Debug */,
				97C147071CF9000F007C117D /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = 97C146E61CF9000F007C117D /* Project object */;
}

{'repo_name': 'yako-dev/flutter_badges', 'stars': '262', 'repo_language': 'Dart', 'file_name': 'widget_test.dart', 'mime_type': 'text/x-c', 'hash': -2733340478348850067, 'source_dataset': 'data'}


# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Translators:
# Harald Ersch, 2019-2020
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-10 08:31+0000\n"
"PO-Revision-Date: 2020-08-08 09:38+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ro_RO\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"

#: apps.py:69 events.py:6 links.py:18 links.py:54 links.py:196 links.py:220
#: models.py:72 settings.py:13 views/workflow_proxy_views.py:66
#: views/workflow_template_views.py:232
msgid "Workflows"
msgstr "Fluxuri de lucru"

#: apps.py:113 apps.py:120
msgid "Current state of a workflow"
msgstr "Starea curentă a unui flux de lucru"

#: apps.py:114
msgid "Return the current state of the selected workflow."
msgstr "Întoarceți starea curentă a fluxului de lucru selectat."

#: apps.py:121
msgid ""
"Return the completion value of the current state of the selected workflow."
msgstr "Întoarceți valoarea de finalizare a stării curente a fluxului de lucru selectat."

#: apps.py:175
msgid ""
"Return the last workflow instance log entry. The log entry itself has the "
"following fields: datetime, transition, user, and comment."
msgstr "Întoarceți ultima intrare de jurnal de instanță a fluxului de lucru. Intrarea de jurnal în sine are următoarele câmpuri: marca temporală, tranziția, utilizatorul și comentariul."

#: apps.py:178
msgid "Get last log entry"
msgstr "Obțineți ultima intrare de jurnal"

#: apps.py:184
msgid ""
"Return the current context dictionary which includes runtime data from the "
"workflow transition fields."
msgstr "Întoarceți dicționarul contextual actual care include date de rulare din câmpurile de tranziție ale fluxului de lucru."

#: apps.py:186
msgid "Get the context"
msgstr "Obțineți contextul"

#: apps.py:192
msgid "Return the transition of the workflow instance."
msgstr "Întoarceți tranziția instanței fluxului de lucru."

#: apps.py:193
msgid "Get last transition"
msgstr "Obțineți ultima tranziție"

#: apps.py:207 apps.py:217 apps.py:226 apps.py:232
msgid "None"
msgstr "Nici unul"

#: apps.py:213
msgid "Current state"
msgstr "Starea curentă"

#: apps.py:218 apps.py:242 models.py:449
msgid "User"
msgstr "Utilizator"

#: apps.py:222
msgid "Last transition"
msgstr "Ultima tranziție"

#: apps.py:227 apps.py:238
msgid "Date and time"
msgstr "Data și ora"

#: apps.py:233 models.py:543
msgid "Completion"
msgstr "Finalizare"

#: apps.py:263
msgid "Additional details"
msgstr "Detalii suplimentare"

#: apps.py:290
msgid "When?"
msgstr "Cănd?"

#: apps.py:294
msgid "Action type"
msgstr "Tipul de acțiune"

#: apps.py:321
msgid ""
"Triggers are system events that will cause the transition to be applied."
msgstr "Declanșatoarele sunt evenimente de sistem care vor determina aplicarea tranziției."

#: apps.py:323
msgid "Triggers"
msgstr "Declanșatoare"

#: apps.py:337 models.py:763
msgid "Type"
msgstr "Tip"

#: apps.py:345
msgid "Widget"
msgstr "Widget"

#: apps.py:356 apps.py:362
msgid "Documents"
msgstr "Documente"

#: classes.py:124
#, python-format
msgid "%(field_name)s template error: %(exception)s"
msgstr "%(field_name)s eroare de șablon: %(exception)s"

#: error_logs.py:6 models.py:644
msgid "Workflow state actions"
msgstr "Acțiuni de stare de lucru"

#: events.py:10
msgid "Workflow created"
msgstr "Flux de lucru creat"

#: events.py:13
msgid "Workflow edited"
msgstr "Fluxul de lucru a fost editat"

#: forms.py:23
msgid "The action type for this action entry."
msgstr "Tipul de acțiune pentru această intrare de acțiune."

#: forms.py:24
msgid "Action"
msgstr "Acțiune"

#: forms.py:130
msgid "Namespace"
msgstr "Spațiu de nume"

#: forms.py:134 models.py:59 models.py:530 models.py:612 models.py:707
#: models.py:774
msgid "Label"
msgstr "Etichetă"

#: forms.py:138 models.py:614
msgid "Enabled"
msgstr "Activat"

#: forms.py:140
msgid "No"
msgstr "Nu"

#: forms.py:141
msgid "Yes"
msgstr "Da"

#: forms.py:191
msgid "Select a transition to execute in the next step."
msgstr "Selectați o tranziție de executat în pasul următor."

#: forms.py:192 links.py:202 models.py:445 models.py:760 models.py:815
msgid "Transition"
msgstr "Tranziție"

#: handlers.py:72
#, python-format
msgid "Event trigger: %s"
msgstr "Eveniment declanșator: %s"

#: links.py:24 views/workflow_template_views.py:84
msgid "Create workflow"
msgstr "Creați un flux de lucru"

#: links.py:30 links.py:70 links.py:105 links.py:133 links.py:168
msgid "Delete"
msgstr "Șterge"

#: links.py:36 models.py:63
msgid "Document types"
msgstr "Tipuri de documente"

#: links.py:43 links.py:77 links.py:112 links.py:140 links.py:175
msgid "Edit"
msgstr "Editează"

#: links.py:49
msgid "Launch workflow"
msgstr "Lansați fluxul de lucru"

#: links.py:61
msgid "Preview"
msgstr "Previzualizare"

#: links.py:83
msgid "Actions"
msgstr "Acţiuni"

#: links.py:89
msgid "Create action"
msgstr "Creați o acțiune"

#: links.py:98
msgid "Create state"
msgstr "Creați o stare"

#: links.py:117 links.py:233
msgid "States"
msgstr "Stări"

#: links.py:126
msgid "Create transition"
msgstr "Creați o tranziție"

#: links.py:146
msgid "Transition triggers"
msgstr "Declanșatori de tranziții"

#: links.py:152
msgid "Transitions"
msgstr "Tranziţii"

#: links.py:161
msgid "Create field"
msgstr "Creați câmp"

#: links.py:181
msgid "Fields"
msgstr "Câmpuri"

#: links.py:191
msgid "Detail"
msgstr "Detaliu"

#: links.py:212
msgid "Workflow documents"
msgstr "Documente de flux de lucru"

#: links.py:226
msgid "State documents"
msgstr "Stare documente"

#: links.py:241 queues.py:15
msgid "Launch all workflows"
msgstr "Lansați toate fluxurile de lucru"

#: literals.py:9
msgid "Character"
msgstr "Caracter"

#: literals.py:10
msgid "Number (Integer)"
msgstr "Număr (număr întreg)"

#: literals.py:20
msgid "Text area"
msgstr "Zona de text"

#: literals.py:31
msgid "On entry"
msgstr "La intrare"

#: literals.py:32
msgid "On exit"
msgstr "La ieșire"

#: models.py:52
msgid ""
"This value will be used by other apps to reference this workflow. Can only "
"contain letters, numbers, and underscores."
msgstr "Această valoare va fi utilizată de alte aplicații pentru a face referire la acest flux de lucru. Pot conține numai litere, numere și subliniere."

#: models.py:55 models.py:769
msgid "Internal name"
msgstr "Nume intern"

#: models.py:58
msgid "A short text to describe the workflow."
msgstr "Un text scurt pentru a descrie fluxul de lucru."

#: models.py:71 models.py:279 models.py:526 models.py:703
msgid "Workflow"
msgstr "Flux de lucru"

#: models.py:149
msgid "Initial state"
msgstr "Stare inițială"

#: models.py:283
msgid "Document"
msgstr "Document"

#: models.py:286
msgid "Context"
msgstr "Context"

#: models.py:292 models.py:438
msgid "Workflow instance"
msgstr "Instanță de flux de lucru"

#: models.py:293
msgid "Workflow instances"
msgstr "Instanțe de flux de lucru"

#: models.py:441
msgid "Datetime"
msgstr "Marcă temporală"

#: models.py:451 views/workflow_instance_views.py:118
msgid "Comment"
msgstr "Comentariu"

#: models.py:452
msgid "Extra data"
msgstr "Date suplimentare"

#: models.py:456
msgid "Workflow instance log entry"
msgstr "Înregistrare din jurnalul instanțelor fluxului de lucru"

#: models.py:457
msgid "Workflow instance log entries"
msgstr "Înregistrări din jurnalul instanțelor fluxului de lucru"

#: models.py:464
msgid "Not a valid transition choice."
msgstr "Nu este o alegere de tranziție valabilă."

#: models.py:529
msgid "A short text to describe the workflow state."
msgstr "Un text scurt pentru a descrie starea fluxului de lucru."

#: models.py:535
msgid ""
"The state at which the workflow will start in. Only one state can be the "
"initial state."
msgstr "Starea în care va începe fluxul de lucru. O singură stare poate fi starea inițială."

#: models.py:537
msgid "Initial"
msgstr "Iniţială"

#: models.py:541
msgid ""
"The percent of completion that this state represents in relation to the "
"workflow. Use numbers without the percent sign."
msgstr "Procentul de finalizare pe care îl reprezintă această stare în raport cu fluxul de lucru. Utilizați numerele fără semnul procentual."

#: models.py:549 models.py:608
msgid "Workflow state"
msgstr "Starea fluxului de lucru"

#: models.py:550
msgid "Workflow states"
msgstr "Stările fluxului de lucru"

#: models.py:611
msgid "A short text describing the action."
msgstr "Un text scurt care descrie acțiunea."

#: models.py:618
msgid "At which moment of the state this action will execute."
msgstr "În ce moment al stării se va executa această acțiune."

#: models.py:619
msgid "When"
msgstr "Cănd"

#: models.py:623
msgid "The dotted Python path to the workflow action class to execute."
msgstr "Calea Python punctată la clasa de acțiune a fluxului de lucru care trebuie executată."

#: models.py:624
msgid "Entry action path"
msgstr "Căi de acțiune pentru intrare"

#: models.py:627
msgid "Entry action data"
msgstr "Datele privind acțiunile de intrare"

#: models.py:631
msgid ""
"The condition that will determine if this state action is executed or not. "
"The condition is evaluated against the workflow instance. Conditions that do"
" not return any value, that return the Python logical None, or an empty "
"string ('') are considered to be logical false, any other value is "
"considered to be the logical true."
msgstr ""

#: models.py:637 models.py:725
msgid "Condition"
msgstr "Condiție"

#: models.py:643
msgid "Workflow state action"
msgstr "Acțiune de stare de flux de lucru"

#: models.py:685
msgid "Unknown action type"
msgstr "Tip de acțiune necunoscut"

#: models.py:690
msgid ""
"The state action will be executed, depending on the condition return value."
msgstr "Starea acțiunii va fi executată, în funcție de valoarea de returnare a condiției."

#: models.py:693 models.py:753
msgid "Has a condition?"
msgstr "Are o condiție?"

#: models.py:706
msgid "A short text to describe the transition."
msgstr "Un text scurt pentru a descrie tranziția."

#: models.py:711
msgid "Origin state"
msgstr "Stare originală"

#: models.py:715
msgid "Destination state"
msgstr "Stare destinație"

#: models.py:719
msgid ""
"The condition that will determine if this transition is enabled or not. The "
"condition is evaluated against the workflow instance. Conditions that do not"
" return any value, that return the Python logical None, or an empty string "
"('') are considered to be logical false, any other value is considered to be"
" the logical true."
msgstr ""

#: models.py:733
msgid "Workflow transition"
msgstr "Tranziția fluxului de lucru"

#: models.py:734
msgid "Workflow transitions"
msgstr "Tranziții ale fluxului de lucru"

#: models.py:750
msgid ""
"The transition will be available, depending on the condition return value."
msgstr "Tranziția va fi disponibilă, în funcție de valoarea  întoarsă de condiție."

#: models.py:767
msgid ""
"The name that will be used to identify this field in other parts of the "
"workflow system."
msgstr "Numele care va fi utilizat pentru a identifica acest câmp în alte părți ale sistemului de flux de lucru."

#: models.py:773
msgid "The field name that will be shown on the user interface."
msgstr "Numele câmpului care va fi afișat pe interfața de utilizator."

#: models.py:777
msgid ""
"An optional message that will help users better understand the purpose of "
"the field and data to provide."
msgstr "Un mesaj opțional care îi va ajuta pe utilizatori să înțeleagă mai bine scopul câmpului și datele pe care să le furnizeze."

#: models.py:779
msgid "Help text"
msgstr "Text de ajutor"

#: models.py:783
msgid "Whether this fields needs to be filled out or not to proceed."
msgstr "Specificați dacă aceste câmpuri trebuie completate sau nu."

#: models.py:784
msgid "Required"
msgstr "Necesară"

#: models.py:788
msgid "An optional class to change the default presentation of the field."
msgstr "O clasă opțională pentru a modifica prezentarea implicită a câmpului."

#: models.py:789
msgid "Widget class"
msgstr "Clasa widget"

#: models.py:793
msgid "A group of keyword arguments to customize the widget. Use YAML format."
msgstr "Un grup de argumente de cuvinte cheie pentru a personaliza widget-ul. Folosiți formatul YAML."

#: models.py:796
msgid "Widget keyword arguments"
msgstr "Argumentele cuvintelor cheie pentru Widget "

#: models.py:801
msgid "Workflow transition field"
msgstr "Câmpul de tranziție a fluxului de lucru"

#: models.py:802
msgid "Workflow transition fields"
msgstr "Câmpuri de tranziție a fluxului de lucru"

#: models.py:819
msgid "Event type"
msgstr "Tip eveniment"

#: models.py:823
msgid "Workflow transition trigger event"
msgstr "Evenimentul de declanșare a tranziției fluxului de lucru"

#: models.py:824
msgid "Workflow transitions trigger events"
msgstr "Evenimente de declanșare a tranzițiilor fluxului de lucru"

#: models.py:833
msgid "Workflow runtime proxy"
msgstr "Proxy runtime pentru fluxul de lucru"

#: models.py:834
msgid "Workflow runtime proxies"
msgstr "Proxy-uri de runtime pentru fluxul de lucru"

#: models.py:851
msgid "Workflow state runtime proxy"
msgstr "Proxy de runtime pentru starea fluxului de lucru"

#: models.py:852
msgid "Workflow state runtime proxies"
msgstr "Proxy-uri runtime de stare de flux de lucru"

#: permissions.py:6
msgid "Document workflows"
msgstr "Fluxuri de lucru pentru documente"

#: permissions.py:10
msgid "Create workflows"
msgstr "Creați fluxuri de lucru"

#: permissions.py:13
msgid "Delete workflows"
msgstr "Ștergeți fluxurile de lucru"

#: permissions.py:16
msgid "Edit workflows"
msgstr "Editați fluxurile de lucru"

#: permissions.py:19
msgid "View workflows"
msgstr "Vedeți fluxurile de lucru"

#: permissions.py:25
msgid "Transition workflows"
msgstr "Schimbarea stării fluxului de lucru"

#: permissions.py:28
msgid "Execute workflow tools"
msgstr "Executați unelte de flux de lucru"

#: queues.py:7
msgid "Document states"
msgstr "Starea documentelor"

#: queues.py:10
msgid "Document states fast"
msgstr "Stările documentului rapid"

#: queues.py:19
msgid "Launch a workflow"
msgstr "Lansați un flux de lucru"

#: queues.py:23
msgid "Generate workflow previews"
msgstr "Generați previzualizări ale fluxului de lucru"

#: search.py:9 search.py:14
msgid "Workflow transition comment"
msgstr ""

#: serializers.py:20
msgid "Primary key of the document type to be added."
msgstr "Cheia primară a tipului de document care urmează să fie adăugată."

#: serializers.py:35
msgid ""
"API URL pointing to a document type in relation to the workflow to which it "
"is attached. This URL is different than the canonical document type URL."
msgstr "Adresă URL API care indică un tip de document în raport cu fluxul de lucru la care este atașat. Această adresă URL este diferită de URL-ul tipului de document canonic."

#: serializers.py:114
msgid "Primary key of the destination state to be added."
msgstr "Cheia primară a stării destinației care urmează să fie adăugată."

#: serializers.py:118
msgid "Primary key of the origin state to be added."
msgstr "Cheia primară a stării de origine care urmează să fie adăugată."

#: serializers.py:216
msgid ""
"API URL pointing to a workflow in relation to the document to which it is "
"attached. This URL is different than the canonical workflow URL."
msgstr "Adresă URL API care indică un flux de lucru în raport cu documentul la care este atașat. Această adresă URL este diferită de adresa URL canonică a fluxului de lucru."

#: serializers.py:225
msgid "A link to the entire history of this workflow."
msgstr "O legătură către întreaga istorie a acestui flux de lucru."

#: serializers.py:257
msgid ""
"Comma separated list of document type primary keys to which this workflow "
"will be attached."
msgstr "Listă separată prin virgule de chei primare de tip de documente la care se va atașa acest flux de lucru."

#: serializers.py:317
msgid "Primary key of the transition to be added."
msgstr "Cheia primară a tranziției care urmează să fie adăugată."

#: settings.py:18
msgid ""
"File path to the graphviz dot program used to generate workflow previews."
msgstr ""

#: settings.py:26
msgid ""
"The threshold at which the WORKFLOWS_IMAGE_CACHE_STORAGE_BACKEND will start "
"deleting the oldest workflow image cache files. Specify the size in bytes."
msgstr "Pragul la care WORKFLOWS_IMAGE_CACHE_STORAGE_BACKEND va începe să șteargă cele mai vechi fișiere de memorie cache a imaginilor fluxului de lucru. Specificați dimensiunea în octeți."

#: settings.py:34
msgid ""
"Time in seconds that the browser should cache the supplied workflow images. "
"The default of 31559626 seconds corresponde to 1 year."
msgstr "Timp în secunde care browser-ul trebuie să cacheze imaginile fluxului de lucru furnizate. Valoarea implicită de 31559626 secunde corespunde unui an."

#: settings.py:41
msgid ""
"Path to the Storage subclass to use when storing the cached workflow image "
"files."
msgstr "Calea către subclasa de stocare pe care să o utilizați la stocarea fișierelor de imagine ale fluxului de lucru din cache"

#: settings.py:49
msgid "Arguments to pass to the WORKFLOWS_IMAGE_CACHE_STORAGE_BACKEND."
msgstr "Argumente de transmis la WORKFLOWS_IMAGE_CACHE_STORAGE_BACKEND."

#: storages.py:14
msgid ""
"Unable to initialize the workflow preview storage. Check the settings {} and"
" {} for formatting errors."
msgstr "Imposibil de inițializat stocarea previzualizării fluxului de lucru. Verificați setările {} și {} pentru erori de formatare."

#: storages.py:21
msgid "Workflow preview images"
msgstr "Imagini de previzualizare a fluxului de lucru"

#: templates/document_states/forms/widgets/workflow_image.html:2
msgid "Workflow preview"
msgstr "Previzualizare flux de lucru"

#: views/workflow_instance_views.py:31
msgid ""
"Assign workflows to the document type of this document to have this document"
" execute those workflows. "
msgstr "Atribuiți fluxurile de lucru la acest tip de document pentru ca acest document să execute acele fluxuri de lucru."

#: views/workflow_instance_views.py:35
msgid "There are no workflow for this document"
msgstr "Nu există flux de lucru pentru acest document"

#: views/workflow_instance_views.py:39
#, python-format
msgid "Workflows for document: %s"
msgstr "Fluxuri de lucru pentru documentul: %s"

#: views/workflow_instance_views.py:64
msgid ""
"This view will show the state changes as a workflow instance is "
"transitioned."
msgstr "Această vizualizare va afișa modificările de stare pe măsură ce o instanță a fluxului de lucru este tranziționată."

#: views/workflow_instance_views.py:68
msgid "There are no details for this workflow instance"
msgstr "Nu există detalii despre acest exemplu de flux de lucru"

#: views/workflow_instance_views.py:71
#, python-format
msgid "Detail of workflow: %(workflow)s"
msgstr "Detalii despre fluxul de lucru: %(workflow)s"

#: views/workflow_instance_views.py:95
#, python-format
msgid "Document \"%s\" transitioned successfully"
msgstr "Documentul \"%s\" a schimbat starea cu succes"

#: views/workflow_instance_views.py:104
msgid "Submit"
msgstr "Trimiteţi"

#: views/workflow_instance_views.py:106
#, python-format
msgid "Execute transition \"%(transition)s\" for workflow: %(workflow)s"
msgstr "Executați tranziția \"%(transition)s\" pentru fluxul de lucru: %(workflow)s"

#: views/workflow_instance_views.py:121
msgid "Optional comment to attach to the transition."
msgstr "Comentariu opțional de atașat la tranziție."

#: views/workflow_instance_views.py:191
msgid "Select"
msgstr "Selecta"

#: views/workflow_instance_views.py:193
#, python-format
msgid "Select transition for workflow: %s"
msgstr "Selectați tranziția pentru fluxul de lucru: %s"

#: views/workflow_proxy_views.py:34
msgid ""
"Associate a workflow with some document types and documents of those types "
"will be listed in this view."
msgstr "Asociați un flux de lucru cu unele tipuri de documente și documente de acele tipuri vor fi listate în această vizualizare."

#: views/workflow_proxy_views.py:38
msgid "There are no documents executing this workflow"
msgstr "Nu există documente care să execute acest flux de lucru"

#: views/workflow_proxy_views.py:42
#, python-format
msgid "Documents with the workflow: %s"
msgstr "Documentele cu fluxul de lucru: %s"

#: views/workflow_proxy_views.py:61
msgid ""
"Create some workflows and associated them with a document type. Active "
"workflows will be shown here and the documents for which they are executing."
msgstr "Creați câteva fluxuri de lucru și asociați-le cu un tip de document. Fluxurile de lucru active vor fi afișate aici precum și documentele pentru care se execută."

#: views/workflow_proxy_views.py:65
msgid "There are no workflows"
msgstr "Nu există fluxuri de lucru"

#: views/workflow_proxy_views.py:89
msgid "There are no documents in this workflow state"
msgstr "Nu există documente în această stare de lucru"

#: views/workflow_proxy_views.py:92
#, python-format
msgid "Documents in the workflow \"%s\", state \"%s\""
msgstr "Documentele din fluxul de lucru \"%s\", starea \"%s\""

#: views/workflow_proxy_views.py:121
#: views/workflow_template_state_views.py:301
msgid "Create states and link them using transitions."
msgstr "Creați stări și conectați-le folosind tranziții."

#: views/workflow_proxy_views.py:124
msgid "This workflow doesn't have any state"
msgstr "Acest flux de lucru nu are nicio stare"

#: views/workflow_proxy_views.py:127
#: views/workflow_template_state_views.py:307
#, python-format
msgid "States of workflow: %s"
msgstr "Stările fluxului de lucru: %s"

#: views/workflow_template_state_views.py:48
#, python-format
msgid "Create a \"%s\" workflow action"
msgstr "Creați o acțiune de flux de lucru \"%s\""

#: views/workflow_template_state_views.py:88
#, python-format
msgid "Delete workflow state action: %s"
msgstr "Ștergeți acțiunea de stare a fluxului de lucru: %s"

#: views/workflow_template_state_views.py:114
#, python-format
msgid "Edit workflow state action: %s"
msgstr "Editați acțiunea de stare a fluxului de lucru: %s"

#: views/workflow_template_state_views.py:159
msgid ""
"Workflow state actions are macros that get executed when documents enters or"
" leaves the state in which they reside."
msgstr "Acțiunile de stare a fluxului de lucru sunt macrocomenzi care se execută atunci când documentele intră sau părăsesc starea în care se află."

#: views/workflow_template_state_views.py:163
msgid "There are no actions for this workflow state"
msgstr "Nu există nicio acțiune pentru această stare de lucru"

#: views/workflow_template_state_views.py:167
#, python-format
msgid "Actions for workflow state: %s"
msgstr "Acțiuni pentru starea fluxului de lucru: %s"

#: views/workflow_template_state_views.py:191
msgid "New workflow state action selection"
msgstr "Selectare a unei noi acțiunii de stare a fluxului de lucru"

#: views/workflow_template_state_views.py:218
#, python-format
msgid "Create states for workflow: %s"
msgstr "Creați stări pentru fluxul de lucru: %s"

#: views/workflow_template_state_views.py:248
#, python-format
msgid "Delete workflow state: %s?"
msgstr "Ștergeți starea fluxului de lucru: %s?"

#: views/workflow_template_state_views.py:273
#, python-format
msgid "Edit workflow state: %s"
msgstr "Editați starea fluxului de lucru: %s"

#: views/workflow_template_state_views.py:304
msgid "This workflow doesn't have any states"
msgstr "Acest flux de lucru nu are stări"

#: views/workflow_template_transition_views.py:36
#, python-format
msgid "Create transitions for workflow: %s"
msgstr "Creați tranziții pentru fluxul de lucru: %s"

#: views/workflow_template_transition_views.py:75
#, python-format
msgid "Delete workflow transition: %s?"
msgstr "Ștergeți tranziția fluxului de lucru: %s?"

#: views/workflow_template_transition_views.py:98
#, python-format
msgid "Edit workflow transition: %s"
msgstr "Editați tranziția fluxului de lucru: %s"

#: views/workflow_template_transition_views.py:133
msgid ""
"Create a transition and use it to move a workflow from  one state to "
"another."
msgstr "Creați o tranziție și utilizați-o pentru a muta un flux de lucru dintr-o stare în alta."

#: views/workflow_template_transition_views.py:137
msgid "This workflow doesn't have any transitions"
msgstr "Acest flux de lucru nu are nicio tranziție"

#: views/workflow_template_transition_views.py:141
#, python-format
msgid "Transitions of workflow: %s"
msgstr "Tranzițiile fluxului de lucru: %s"

#: views/workflow_template_transition_views.py:169
#, python-format
msgid "Error updating workflow transition trigger events; %s"
msgstr "Eroare la actualizarea evenimentelor de declanșare a fluxului de lucru; %s"

#: views/workflow_template_transition_views.py:176
msgid "Workflow transition trigger events updated successfully"
msgstr "Evenimentele de declanșare a fluxului de lucru au fost actualizate cu succes"

#: views/workflow_template_transition_views.py:190
msgid ""
"Triggers are events that cause this transition to execute automatically."
msgstr "Declanșatoarele sunt evenimente care determină ca această tranziție să fie executată automat."

#: views/workflow_template_transition_views.py:194
#, python-format
msgid "Workflow transition trigger events for: %s"
msgstr "Evenimente de declanșare a fluxului de lucru pentru: %s"

#: views/workflow_template_transition_views.py:244
#, python-format
msgid "Create a field for workflow transition: %s"
msgstr "Creați un câmp pentru tranziția fluxului de lucru: %s"

#: views/workflow_template_transition_views.py:277
#, python-format
msgid "Delete workflow transition field: %s"
msgstr "Ștergeți câmpul de tranziție a fluxului de lucru: %s"

#: views/workflow_template_transition_views.py:306
#, python-format
msgid "Edit workflow transition field: %s"
msgstr "Editați câmpul de tranziție a fluxului de lucru: %s"

#: views/workflow_template_transition_views.py:338
msgid ""
"Workflow transition fields allow adding data to the workflow's context. This"
" additional context data can then be used by other elements of the workflow "
"system like the workflow state actions."
msgstr "Câmpurile de tranziție ale fluxului de lucru permit adăugarea de date în contextul fluxului de lucru. Aceste date de context adiționale pot fi apoi utilizate de alte elemente ale sistemului de flux de lucru, cum ar fi acțiunile stării fluxului de lucru."

#: views/workflow_template_transition_views.py:344
msgid "There are no fields for this workflow transition"
msgstr "Nu există câmpuri pentru această tranziție a fluxului de lucru"

#: views/workflow_template_transition_views.py:348
#, python-format
msgid "Fields for workflow transition: %s"
msgstr "Câmpuri pentru tranziția fluxului de lucru: %s"

#: views/workflow_template_views.py:35
msgid "Available workflows"
msgstr "Fluxuri de lucru disponibile"

#: views/workflow_template_views.py:36
msgid "Workflows assigned this document type"
msgstr "Fluxurile de lucru  atribuite acestui tip de document"

#: views/workflow_template_views.py:46
msgid ""
"Removing a workflow from a document type will also remove all running "
"instances of that workflow."
msgstr "Eliminarea unui flux de lucru dintr-un tip de document va elimina, de asemenea, toate instanțele care rulează din acel flux de lucru."

#: views/workflow_template_views.py:50
#, python-format
msgid "Workflows assigned the document type: %s"
msgstr "Fluxurile de lucru atribuite tipului de document: %s"

#: views/workflow_template_views.py:107
#, python-format
msgid "Delete workflow: %s?"
msgstr "Ștergeți fluxul de lucru: %s?"

#: views/workflow_template_views.py:124
#, python-format
msgid "Edit workflow: %s"
msgstr "Editați fluxul de lucru: %s"

#: views/workflow_template_views.py:138
msgid "Available document types"
msgstr "Tipuri de documente disponibile"

#: views/workflow_template_views.py:139
msgid "Document types assigned this workflow"
msgstr "Tipurile de documente atribuite acestui flux de lucru"

#: views/workflow_template_views.py:149
msgid ""
"Removing a document type from a workflow will also remove all running "
"instances of that workflow for documents of the document type just removed."
msgstr "Înlăturarea unui tip de document dintr-un flux de lucru va elimina, de asemenea, toate instanțele în execuție ale acelui flux de lucru pentru documentele de tipul documentului tocmai eliminat."

#: views/workflow_template_views.py:154
#, python-format
msgid "Document types assigned the workflow: %s"
msgstr "Tipurile de documente alocate fluxului de lucru: %s"

#: views/workflow_template_views.py:194
msgid "Launch workflow?"
msgstr "Lansați fluxul de lucru?"

#: views/workflow_template_views.py:196
msgid ""
"This will launch the workflow for documents that have already been uploaded."
msgstr "Aceasta va lansa fluxul de lucru pentru documentele care au fost deja încărcate."

#: views/workflow_template_views.py:208 views/workflow_template_views.py:263
msgid "Workflow launch queued successfully."
msgstr "Lansarea fluxului de lucru a intrat în coada de așteptare."

#: views/workflow_template_views.py:225
msgid ""
"Workflows store a series of states and keep track of the current state of a "
"document. Transitions are used to change the current state to a new one."
msgstr "Fluxurile de lucru stochează o serie de stări și urmăresc starea actuală a unui document. Tranzițiile sunt folosite pentru a schimba starea curentă la una nouă."

#: views/workflow_template_views.py:230
msgid "No workflows have been defined"
msgstr "Nu s-au definit fluxuri de lucru"

#: views/workflow_template_views.py:246
#, python-format
msgid "Preview of: %s"
msgstr "Previzualizarea: %s"

#: views/workflow_template_views.py:252
msgid "Launch all workflows?"
msgstr "Lansați toate fluxurile de lucru?"

#: views/workflow_template_views.py:254
msgid ""
"This will launch all workflows created after documents have already been "
"uploaded."
msgstr "Aceasta va lansa toate fluxurile de lucru create după ce documentele au fost deja încărcate."

#: workflow_actions.py:18
msgid "Document label"
msgstr "Etichetele documentului"

#: workflow_actions.py:21
msgid ""
"The new label to be assigned to the document. Can be a string or a template."
msgstr "Noua etichetă care va fi atribuită documentului. Poate fi un șir sau un șablon."

#: workflow_actions.py:26
msgid "Document description"
msgstr "Descrierea documentului"

#: workflow_actions.py:29
msgid ""
"The new description to be assigned to the document. Can be a string or a "
"template."
msgstr "Noua descriere care trebuie atribuită documentului. Poate fi un șir sau un șablon."

#: workflow_actions.py:36
msgid "Modify document properties"
msgstr "Modificați proprietățile documentului"

#: workflow_actions.py:72
msgid "URL"
msgstr "URL"

#: workflow_actions.py:75
msgid ""
"Can be an IP address, a domain or a template. Templates receive the workflow"
" log entry instance as part of their context via the variable \"entry_log\"."
" The \"entry_log\" in turn provides the \"workflow_instance\", \"datetime\","
" \"transition\", \"user\", and \"comment\" attributes."
msgstr "Poate fi o adresă IP, un domeniu sau un șablon. Șabloanele primesc instanța înregistrării fluxului de lucru ca parte a contextului lor prin intermediul variabilei \"entry_log\". \"Entry_log\", la rândul său, oferă atributele \"workflow_instance\", \"datetime\", \"transition\", \"user\" și \"comment\"."

#: workflow_actions.py:85
msgid "Timeout"
msgstr "Pauză"

#: workflow_actions.py:88
msgid ""
"Time in seconds to wait for a response. Can be a static value or a template."
" "
msgstr "Timpul în secunde de așteptare după un răspuns. Poate fi o valoare statică sau un șablon."

#: workflow_actions.py:94
msgid "Payload"
msgstr "Încărcătură utilă"

#: workflow_actions.py:97
msgid ""
"A JSON document to include in the request. Can also be a template that "
"return a JSON document. Templates receive the workflow log entry instance as"
" part of their context via the variable \"entry_log\". The \"entry_log\" in "
"turn provides the \"workflow_instance\", \"datetime\", \"transition\", "
"\"user\", and \"comment\" attributes."
msgstr "Un document JSON care trebuie inclus în cerere. Poate fi, de asemenea, un șablon care returnează un document JSON. Șabloanele primesc instanța înregistrării fluxului de lucru ca parte a contextului lor prin intermediul variabilei \"entry_log\". \"Entry_log\", la rândul său, oferă atributele \"workflow_instance\", \"datetime\", \"transition\", \"user\" și \"comment\"."

#: workflow_actions.py:107
msgid "Username"
msgstr "Nume de utilizator"

#: workflow_actions.py:110
msgid ""
"Username to use for making the request with HTTP Basic Auth. Can be a static"
" value or a template. Templates receive the workflow log entry instance as "
"part of their context via the variable \"entry_log\". The \"entry_log\" in "
"turn provides the \"workflow_instance\", \"datetime\", \"transition\", "
"\"user\", and \"comment\" attributes."
msgstr "Nume de utilizator pe care să-l utilizăm pentru efectuarea cererii cu HTTP Basic Auth Poate fi o valoare statică sau un șablon. Șabloanele primesc instanța de intrare în jurnalul fluxului de lucru ca parte a contextului lor prin variabila „entry_log\". La rândul său, „entry_log” furnizează atributele „workflow_instance”, „datetime”, „tranziție”, „user” și „comment”."

#: workflow_actions.py:120
msgid "Password"
msgstr "Parola"

#: workflow_actions.py:123
msgid ""
"Password to use for making the request with HTTP Basic Auth. Can be a static"
" value or a template. Templates receive the workflow log entry instance as "
"part of their context via the variable \"entry_log\". The \"entry_log\" in "
"turn provides the \"workflow_instance\", \"datetime\", \"transition\", "
"\"user\", and \"comment\" attributes."
msgstr "Parolă de utilizat pentru efectuarea cererii cu HTTP Basic Auth. Poate fi o valoare statică sau un șablon. Șabloanele primesc instanța de intrare în jurnalul fluxului de lucru ca parte a contextului lor prin variabila „entry_log”. La rândul său, „entry_log” furnizează atributele „workflow_instance”, „datetime”, „tranziție”, „user” și „comment”."

#: workflow_actions.py:133
msgid "Method"
msgstr "Metodă"

#: workflow_actions.py:136
msgid ""
"The HTTP method to use for the request. Typical choices are OPTIONS, HEAD, "
"POST, GET, PUT, PATCH, DELETE. Can be a static value or a template that "
"returns the method text. Templates receive the workflow log entry instance "
"as part of their context via the variable \"entry_log\". The \"entry_log\" "
"in turn provides the \"workflow_instance\", \"datetime\", \"transition\", "
"\"user\", and \"comment\" attributes."
msgstr "Metoda HTTP de utilizat pentru cerere. Opțiunile tipice sunt OPTIONS, HEAD, POST, GET, PUT, PATCH, DELETE. Poate fi o valoare fixă sau un șablon care returnează textul metodei. Șabloanele primesc instanța de intrare a jurnalului fluxului de lucru ca parte a contextului lor prin variabila \"entry_log\". La rândul său, „entry_log” furnizează atributele „workflow_instance”, „datetime”, „transition”, „user” și „comment”."

#: workflow_actions.py:147
msgid "Headers"
msgstr "Anteturi"

#: workflow_actions.py:150
msgid ""
"Headers to send with the HTTP request. Must be in JSON format. Can be a "
"static value or a template. Templates receive the workflow log entry "
"instance as part of their context via the variable \"entry_log\". The "
"\"entry_log\" in turn provides the \"workflow_instance\", \"datetime\", "
"\"transition\", \"user\", and \"comment\" attributes."
msgstr "Anteturi de trimis cu cererea HTTP. Trebuie să fie în format JSON. Poate fi o valoare statică sau un șablon. Șabloanele primesc instanța de intrare în jurnalul fluxului de lucru ca parte a contextului lor prin variabila „entry_log”,. La rândul său, „entry_log” furnizează atributele „workflow_instance”, „datetime”, „tranziție”, „user” și „comment”."

#: workflow_actions.py:164
msgid "Perform an HTTP request"
msgstr "Efectuați o solicitare HTTP"

#: workflow_actions.py:193
#, python-format
msgid "%(field_name)s JSON error: %(exception)s"
msgstr "%(field_name)s eroare JSON: %(exception)s"

{'repo_name': 'mayan-edms/Mayan-EDMS', 'stars': '130', 'repo_language': 'Python', 'file_name': 'development.txt', 'mime_type': 'text/plain', 'hash': 7405838228527580876, 'source_dataset': 'data'}


// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef GIN_PUBLIC_WRAPPER_INFO_H_
#define GIN_PUBLIC_WRAPPER_INFO_H_

#include "gin/gin_export.h"
#include "gin/public/gin_embedders.h"
//#include "v8/include/v8.h"
#include "v8.h"

namespace gin {

// Gin embedder that use their own WrapperInfo-like structs must ensure that
// the first field is of type GinEmbedderId and has the correct id set. They
// also should use kWrapperInfoIndex to start their WrapperInfo-like struct
// and ensure that all objects have kNumberOfInternalFields internal fields.

enum InternalFields {
  kWrapperInfoIndex,
  kEncodedValueIndex,
  kNumberOfInternalFields,
};

struct GIN_EXPORT WrapperInfo {
  static WrapperInfo* From(v8::Local<v8::Object> object);
  const GinEmbedder embedder;
};

}  // namespace gin

#endif  // GIN_PUBLIC_WRAPPER_INFO_H_

{'repo_name': 'weolar/miniblink49', 'stars': '4316', 'repo_language': 'C++', 'file_name': 'object-stats.h', 'mime_type': 'text/x-c++', 'hash': 9066262439393831782, 'source_dataset': 'data'}


void main()
{
    auto someAutoVariableName = this.firstLink.secondLink
        .filter!(shouldBeProbablySomeIdentifierOrNot);
}

{'repo_name': 'dlang-community/dfmt', 'stars': '166', 'repo_language': 'D', 'file_name': 'issue0112.d.ref', 'mime_type': 'text/plain', 'hash': -5133485586767787742, 'source_dataset': 'data'}


Import Trace Module

<snippet id='import-trace-methods'/>

Tracing specific categories of events

<snippet id='setting-specific-tracing-categories'/>

Trace add category

<snippet id='trace-add-categories'/>

Check is category setting

<snippet id='check-iscategoryset'/>

Disable tracing

<snippet id='disable-tracing'/>

{'repo_name': 'NativeScript/nativescript-sdk-examples-ng', 'stars': '286', 'repo_language': 'TypeScript', 'file_name': 'settings.json', 'mime_type': 'text/plain', 'hash': 5058719827371249792, 'source_dataset': 'data'}


aquameta
========

Overview
--------
Aquameta is a web-based IDE for full-stack web development.  Developers can manage HTML, CSS, Javascript, database schema, views, templates, routes, tests and documentation, and do version control, branching, pushing, pulling, user management and permissions, all from a single web-based IDE.  In theory.  And mostly in practice.

Under the hood, Aquameta is a "datafied" web stack, built entirely in PostgreSQL.  The structure of a typical web framework is represented in Aquameta as big database schema with 6 postgreSQL schemas containing ~60 tables, ~50 views and ~90 stored procedures.  Apps developed in Aquameta are represented entirely as relational data, and all development, at an atomic level, is some form of data manipulation.  Also in theory.  And mostly in practice.

<!--
* [introduction](http://blog.aquameta.com/introducing-aquameta/)
* [blog](http://blog.aquameta.com/) / [twitter](http://twitter.com/aquameta) / [youtube](https://www.youtube.com/user/bigcountry503/videos) / [twitch](http://twitch.tv/aquameta)
-->

* [demo video](https://www.youtube.com/watch?v=ZOpj8lvNJtg)
* [get started](docs/quickstart.md)
* [cheat sheet](docs/cheatsheet.md)

Status
------
Aquameta is an experimental project, still in early stages of development.  It is not suitable for production development and should not be used in an untrusted or mission-critical environment.

Core Extensions
---------------
Aquameta contains seven core PostgreSQL extensions, which together make up the web stack:

- [meta](https://github.com/aquametalabs/meta) - Writable system catalog for PostgreSQL
- [bundle](src/pg-extension/bundle) - A version control system similar to git but for database rows instead of files
- [filesystem](src/pg-extension/filesystem) - A bi-directional file system integration system
- [event](src/pg-extension/event) - Pub/sub data change events API
- [endpoint](src/pg-extension/endpoint) - REST endpoint handler plus resource hosting, templates and a WebSocket event server
- [widget](src/pg-extension/widget) - Modular web user interface components made of HTML, CSS and Javascript
- [semantics](src/pg-extension/semantics) - A metadata layer on top of the database schema, for binding columns and relations to widgets, decorating keys, etc.

Installation
------------
Aquameta is most easily installed on a Ubuntu 18 or Debian 9 instance; its installer manages dependencies by as `apt` packages.

To install, setup a clean Ubuntu 18 or Debian 9 instance.  You can run on bare metal, or using a virtual machine such as [VirtualBox](https://linuxhint.com/install_ubuntu_18-04_virtualbox/) on Mac OSX and Windows, or [KVM](https://linuxconfig.org/install-and-set-up-kvm-on-ubuntu-18-04-bionic-beaver-linux) on Linux.

Once your Linux machine is setup, acquire the Aquameta package by either downloading the latest [release](https://github.com/aquametalabs/aquameta/releases), or to try the bleeding edge version, clone the repository.  Then run the install script:

1. `git clone https://github.com/aquametalabs/aquameta.git`
2. `cd aquameta`
3. `./install.sh`

About
-----
Aquameta has been the life project of Eric Hanson for close to 20 years off-and-on.  Functional prototypes have been developed in XML, RDF and MySQL, but PostgreSQL is the first database discovered that has the functionality necessary to achieve something close to practical, and huge advances in web technology like WebRTC, ES6 modules, and more have shown some light at the end of the tunnel.

Technical goals of the project include:
- Allow complete management of the database using only INSERT, UPDATE and DELETE commands (expose the DDL as DML)
- Version control of relational data
- Reified architecture, where the entire system is self-defined as data, and as such can evolve using only data manipulation
- Remote push/pull of commits to relational VCS
- Access and manipulate the database as a file system from the command prompt
- Access and manipulate the file system as relational data from the SQL prompt
- Internal event system for pub/sub of changes to tables, columns or rows
- Modular web interface components ("widgets") made of HTML, CSS, Javascript, that are self-contained, manage their own dependencies, accept input arguments, can instantiate other widgets, and can emit events that other widgets can subscribe to
- "Semantic decoration" allows the user to associate UI components with schema components (relations, columns, data types), auto-generate simple CRUD UIs, and progressively enhance a UI by overriding sensible defaults with custom widgets
- Pub/sub notification let peers download new content from each other as it comes available without polling
- Users communicate with each other by exchanging structured, relational data
- Decentralized P2P network with no single point of failure
- Decentralize the web
- Deprecate the file system

Human goals
- Teach people to speak the language of data
- Convert word-based knowledge and information to structured knowledge and information
- Stretch a net of approximate categorization across our earth

{'repo_name': 'aquametalabs/aquameta', 'stars': '904', 'repo_language': 'PLpgSQL', 'file_name': 'quickstart.md', 'mime_type': 'text/html', 'hash': 529080370290296589, 'source_dataset': 'data'}


module.exports = function isBuffer(arg) {
  return arg && typeof arg === 'object'
    && typeof arg.copy === 'function'
    && typeof arg.fill === 'function'
    && typeof arg.readUInt8 === 'function';
}

{'repo_name': 'codingforentrepreneurs/Angular-Django', 'stars': '127', 'repo_language': 'JavaScript', 'file_name': 'videos.json', 'mime_type': 'text/plain', 'hash': -7032902487314824835, 'source_dataset': 'data'}


/* SPDX-License-Identifier: GPL-2.0+ */
/*
 * Keyboard input helper functions (too small to be called a layer)
 *
 * Copyright (c) 2011 The Chromium OS Authors.
 */

#ifndef _INPUT_H
#define _INPUT_H

enum {
	INPUT_MAX_MODIFIERS	= 4,
	INPUT_BUFFER_LEN	= 16,
};

enum {
	/* Keyboard LEDs */
	INPUT_LED_SCROLL	= 1 << 0,
	INPUT_LED_NUM		= 1 << 1,
	INPUT_LED_CAPS		= 1 << 2,
};

/*
 * This table translates key codes to ASCII. Most of the entries are ASCII
 * codes, but entries after KEY_FIRST_MOD indicate that this key is a
 * modifier key, like shift, ctrl. KEY_FIRST_MOD + MOD_SHIFT is the shift
 * key, for example.
 */
struct input_key_xlate {
	/* keycode of the modifiers which select this table, -1 if none */
	int left_keycode;
	int right_keycode;
	const uchar *xlate;	/* keycode to ASCII table */
	int num_entries;	/* number of entries in this table */
};

struct input_config {
	struct udevice *dev;
	uchar fifo[INPUT_BUFFER_LEN];
	int fifo_in, fifo_out;

	/* Which modifiers are active (1 bit for each MOD_... value) */
	uchar modifiers;
	uchar flags;		/* active state keys (FLAGS_...) */
	uchar leds;		/* active LEDs (INPUT_LED_...) */
	uchar leds_changed;	/* LEDs that just changed */
	uchar num_tables;	/* number of modifier tables */
	int prev_keycodes[INPUT_BUFFER_LEN];	/* keys held last time */
	int num_prev_keycodes;	/* number of prev keys */
	struct input_key_xlate table[INPUT_MAX_MODIFIERS];

	/**
	 * Function the input helper calls to scan the keyboard
	 *
	 * @param config	Input state
	 * @return 0 if no keys read, otherwise number of keys read, or 1 if
	 *		unknown
	 */
	int (*read_keys)(struct input_config *config);
	bool allow_repeats;		/* Don't filter out repeats */
	unsigned int next_repeat_ms;	/* Next time we repeat a key */
	unsigned int repeat_delay_ms;	/* Time before autorepeat starts */
	unsigned int repeat_rate_ms;	/* Autorepeat rate in ms */
};

struct stdio_dev;

/**
 * Convert a list of key codes into ASCII and send them
 *
 * @param config	Input state
 * @param keycode	List of key codes to examine
 * @param num_keycodes	Number of key codes
 * @return number of ascii characters sent, or 0 if none, or -1 for an
 *	internal error
 */
int input_send_keycodes(struct input_config *config, int keycode[], int count);

/**
 * Add a new keycode to an existing list of keycodes
 *
 * This can be used to handle keyboards which do their own scanning. An
 * internal list of depressed keys is maintained by the input library. Then
 * this function is called to add a new key to the list (when a 'make code' is
 * received), or remove a key (when a 'break code' is received).
 *
 * This function looks after maintenance of the list of active keys, and calls
 * input_send_keycodes() with its updated list.
 *
 * @param config	Input state
 * @param new_keycode	New keycode to add/remove
 * @param release	true if this key was released, false if depressed
 * @return number of ascii characters sent, or 0 if none, or -1 for an
 *	internal error
 */
int input_add_keycode(struct input_config *config, int new_keycode,
		      bool release);

/**
 * Add a new key translation table to the input
 *
 * @param config	Input state
 * @param left_keycode	Key to hold to get into this table
 * @param right_keycode	Another key to hold to get into this table
 * @param xlate		Conversion table from key codes to ASCII
 * @param num_entries	Number of entries in xlate table
 */
int input_add_table(struct input_config *config, int left_keycode,
		    int right_keycode, const uchar *xlate, int num_entries);

/**
 * Test if keys are available to be read
 *
 * @param config	Input state
 * @return 0 if no keys available, 1 if keys are available
 */
int input_tstc(struct input_config *config);

/**
 * Read a key
 *
 * TODO: U-Boot wants 0 for no key, but Ctrl-@ is a valid key...
 *
 * @param config	Input state
 * @return key, or 0 if no key, or -1 if error
 */
int input_getc(struct input_config *config);

/**
 * Register a new device with stdio and switch to it if wanted
 *
 * @param dev	Pointer to device
 * @return 0 if ok, -1 on error
 */
int input_stdio_register(struct stdio_dev *dev);

/**
 * Set up the keyboard autorepeat delays
 *
 * @param repeat_delay_ms	Delay before key auto-repeat starts (in ms)
 * @param repeat_rate_ms	Delay between successive key repeats (in ms)
 */
void input_set_delays(struct input_config *config, int repeat_delay_ms,
	       int repeat_rate_ms);

/**
 * Tell the input layer whether to allow the caller to determine repeats
 *
 * Generally the input library handles processing of a list of scanned keys.
 * Repeated keys need to be generated based on a timer in this case, since all
 * that is provided is a list of keys current depressed.
 *
 * Keyboards which do their own scanning will resend codes when they want to
 * inject a repeating key. This function can be called at start-up to select
 * this behaviour.
 *
 * @param config	Input state
 * @param allow_repeats	true to repeat depressed keys every time
 *			input_send_keycodes() is called, false to do normal
 *			keyboard repeat processing with a timer.
 */
void input_allow_repeats(struct input_config *config, bool allow_repeats);

/**
 * Check if keyboard LEDs need to be updated
 *
 * This can be called after input_tstc() to see if keyboard LEDs need
 * updating.
 *
 * @param config	Input state
 * @return -1 if no LEDs need updating, other value if they do
 */
int input_leds_changed(struct input_config *config);

/**
 * Set up the key map tables
 *
 * This must be called after input_init() or keycode decoding will not work.
 *
 * @param config	Input state
 * @param german	true to use German keyboard layout, false for US
 * @return 0 if ok, -1 on error
 */
int input_add_tables(struct input_config *config, bool german);

/**
 * Set up the input handler with basic key maps.
 *
 * @param config	Input state
 * @param leds		Initial LED value (INPUT_LED_ mask), 0 suggested
 * @return 0 if ok, -1 on error
 */
int input_init(struct input_config *config, int leds);

#ifdef CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE
extern int overwrite_console(void);
#define OVERWRITE_CONSOLE overwrite_console()
#else
#define OVERWRITE_CONSOLE 0
#endif /* CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE */

#endif

{'repo_name': 'yodaos-project/yodaos', 'stars': '1027', 'repo_language': 'C', 'file_name': 'Makefile', 'mime_type': 'text/plain', 'hash': -501143227276192866, 'source_dataset': 'data'}


// +build mipsle,linux
// Created by cgo -godefs - DO NOT EDIT
// cgo -godefs types_linux.go | go run mkpost.go

package unix

const (
	sizeofPtr      = 0x4
	sizeofShort    = 0x2
	sizeofInt      = 0x4
	sizeofLong     = 0x4
	sizeofLongLong = 0x8
	PathMax        = 0x1000
)

type (
	_C_short     int16
	_C_int       int32
	_C_long      int32
	_C_long_long int64
)

type Timespec struct {
	Sec  int32
	Nsec int32
}

type Timeval struct {
	Sec  int32
	Usec int32
}

type Timex struct {
	Modes     uint32
	Offset    int32
	Freq      int32
	Maxerror  int32
	Esterror  int32
	Status    int32
	Constant  int32
	Precision int32
	Tolerance int32
	Time      Timeval
	Tick      int32
	Ppsfreq   int32
	Jitter    int32
	Shift     int32
	Stabil    int32
	Jitcnt    int32
	Calcnt    int32
	Errcnt    int32
	Stbcnt    int32
	Tai       int32
	Pad_cgo_0 [44]byte
}

type Time_t int32

type Tms struct {
	Utime  int32
	Stime  int32
	Cutime int32
	Cstime int32
}

type Utimbuf struct {
	Actime  int32
	Modtime int32
}

type Rusage struct {
	Utime    Timeval
	Stime    Timeval
	Maxrss   int32
	Ixrss    int32
	Idrss    int32
	Isrss    int32
	Minflt   int32
	Majflt   int32
	Nswap    int32
	Inblock  int32
	Oublock  int32
	Msgsnd   int32
	Msgrcv   int32
	Nsignals int32
	Nvcsw    int32
	Nivcsw   int32
}

type Rlimit struct {
	Cur uint64
	Max uint64
}

type _Gid_t uint32

type Stat_t struct {
	Dev     uint32
	Pad1    [3]int32
	Ino     uint64
	Mode    uint32
	Nlink   uint32
	Uid     uint32
	Gid     uint32
	Rdev    uint32
	Pad2    [3]int32
	Size    int64
	Atim    Timespec
	Mtim    Timespec
	Ctim    Timespec
	Blksize int32
	Pad4    int32
	Blocks  int64
	Pad5    [14]int32
}

type Statfs_t struct {
	Type      int32
	Bsize     int32
	Frsize    int32
	Pad_cgo_0 [4]byte
	Blocks    uint64
	Bfree     uint64
	Files     uint64
	Ffree     uint64
	Bavail    uint64
	Fsid      Fsid
	Namelen   int32
	Flags     int32
	Spare     [5]int32
	Pad_cgo_1 [4]byte
}

type Dirent struct {
	Ino       uint64
	Off       int64
	Reclen    uint16
	Type      uint8
	Name      [256]int8
	Pad_cgo_0 [5]byte
}

type Fsid struct {
	X__val [2]int32
}

type Flock_t struct {
	Type      int16
	Whence    int16
	Pad_cgo_0 [4]byte
	Start     int64
	Len       int64
	Pid       int32
	Pad_cgo_1 [4]byte
}

const (
	FADV_NORMAL     = 0x0
	FADV_RANDOM     = 0x1
	FADV_SEQUENTIAL = 0x2
	FADV_WILLNEED   = 0x3
	FADV_DONTNEED   = 0x4
	FADV_NOREUSE    = 0x5
)

type RawSockaddrInet4 struct {
	Family uint16
	Port   uint16
	Addr   [4]byte /* in_addr */
	Zero   [8]uint8
}

type RawSockaddrInet6 struct {
	Family   uint16
	Port     uint16
	Flowinfo uint32
	Addr     [16]byte /* in6_addr */
	Scope_id uint32
}

type RawSockaddrUnix struct {
	Family uint16
	Path   [108]int8
}

type RawSockaddrLinklayer struct {
	Family   uint16
	Protocol uint16
	Ifindex  int32
	Hatype   uint16
	Pkttype  uint8
	Halen    uint8
	Addr     [8]uint8
}

type RawSockaddrNetlink struct {
	Family uint16
	Pad    uint16
	Pid    uint32
	Groups uint32
}

type RawSockaddrHCI struct {
	Family  uint16
	Dev     uint16
	Channel uint16
}

type RawSockaddrCAN struct {
	Family    uint16
	Pad_cgo_0 [2]byte
	Ifindex   int32
	Addr      [8]byte
}

type RawSockaddr struct {
	Family uint16
	Data   [14]int8
}

type RawSockaddrAny struct {
	Addr RawSockaddr
	Pad  [96]int8
}

type _Socklen uint32

type Linger struct {
	Onoff  int32
	Linger int32
}

type Iovec struct {
	Base *byte
	Len  uint32
}

type IPMreq struct {
	Multiaddr [4]byte /* in_addr */
	Interface [4]byte /* in_addr */
}

type IPMreqn struct {
	Multiaddr [4]byte /* in_addr */
	Address   [4]byte /* in_addr */
	Ifindex   int32
}

type IPv6Mreq struct {
	Multiaddr [16]byte /* in6_addr */
	Interface uint32
}

type Msghdr struct {
	Name       *byte
	Namelen    uint32
	Iov        *Iovec
	Iovlen     uint32
	Control    *byte
	Controllen uint32
	Flags      int32
}

type Cmsghdr struct {
	Len   uint32
	Level int32
	Type  int32
}

type Inet4Pktinfo struct {
	Ifindex  int32
	Spec_dst [4]byte /* in_addr */
	Addr     [4]byte /* in_addr */
}

type Inet6Pktinfo struct {
	Addr    [16]byte /* in6_addr */
	Ifindex uint32
}

type IPv6MTUInfo struct {
	Addr RawSockaddrInet6
	Mtu  uint32
}

type ICMPv6Filter struct {
	Data [8]uint32
}

type Ucred struct {
	Pid int32
	Uid uint32
	Gid uint32
}

type TCPInfo struct {
	State          uint8
	Ca_state       uint8
	Retransmits    uint8
	Probes         uint8
	Backoff        uint8
	Options        uint8
	Pad_cgo_0      [2]byte
	Rto            uint32
	Ato            uint32
	Snd_mss        uint32
	Rcv_mss        uint32
	Unacked        uint32
	Sacked         uint32
	Lost           uint32
	Retrans        uint32
	Fackets        uint32
	Last_data_sent uint32
	Last_ack_sent  uint32
	Last_data_recv uint32
	Last_ack_recv  uint32
	Pmtu           uint32
	Rcv_ssthresh   uint32
	Rtt            uint32
	Rttvar         uint32
	Snd_ssthresh   uint32
	Snd_cwnd       uint32
	Advmss         uint32
	Reordering     uint32
	Rcv_rtt        uint32
	Rcv_space      uint32
	Total_retrans  uint32
}

const (
	SizeofSockaddrInet4     = 0x10
	SizeofSockaddrInet6     = 0x1c
	SizeofSockaddrAny       = 0x70
	SizeofSockaddrUnix      = 0x6e
	SizeofSockaddrLinklayer = 0x14
	SizeofSockaddrNetlink   = 0xc
	SizeofSockaddrHCI       = 0x6
	SizeofSockaddrCAN       = 0x10
	SizeofLinger            = 0x8
	SizeofIPMreq            = 0x8
	SizeofIPMreqn           = 0xc
	SizeofIPv6Mreq          = 0x14
	SizeofMsghdr            = 0x1c
	SizeofCmsghdr           = 0xc
	SizeofInet4Pktinfo      = 0xc
	SizeofInet6Pktinfo      = 0x14
	SizeofIPv6MTUInfo       = 0x20
	SizeofICMPv6Filter      = 0x20
	SizeofUcred             = 0xc
	SizeofTCPInfo           = 0x68
)

const (
	IFA_UNSPEC          = 0x0
	IFA_ADDRESS         = 0x1
	IFA_LOCAL           = 0x2
	IFA_LABEL           = 0x3
	IFA_BROADCAST       = 0x4
	IFA_ANYCAST         = 0x5
	IFA_CACHEINFO       = 0x6
	IFA_MULTICAST       = 0x7
	IFLA_UNSPEC         = 0x0
	IFLA_ADDRESS        = 0x1
	IFLA_BROADCAST      = 0x2
	IFLA_IFNAME         = 0x3
	IFLA_MTU            = 0x4
	IFLA_LINK           = 0x5
	IFLA_QDISC          = 0x6
	IFLA_STATS          = 0x7
	IFLA_COST           = 0x8
	IFLA_PRIORITY       = 0x9
	IFLA_MASTER         = 0xa
	IFLA_WIRELESS       = 0xb
	IFLA_PROTINFO       = 0xc
	IFLA_TXQLEN         = 0xd
	IFLA_MAP            = 0xe
	IFLA_WEIGHT         = 0xf
	IFLA_OPERSTATE      = 0x10
	IFLA_LINKMODE       = 0x11
	IFLA_LINKINFO       = 0x12
	IFLA_NET_NS_PID     = 0x13
	IFLA_IFALIAS        = 0x14
	IFLA_MAX            = 0x2a
	RT_SCOPE_UNIVERSE   = 0x0
	RT_SCOPE_SITE       = 0xc8
	RT_SCOPE_LINK       = 0xfd
	RT_SCOPE_HOST       = 0xfe
	RT_SCOPE_NOWHERE    = 0xff
	RT_TABLE_UNSPEC     = 0x0
	RT_TABLE_COMPAT     = 0xfc
	RT_TABLE_DEFAULT    = 0xfd
	RT_TABLE_MAIN       = 0xfe
	RT_TABLE_LOCAL      = 0xff
	RT_TABLE_MAX        = 0xffffffff
	RTA_UNSPEC          = 0x0
	RTA_DST             = 0x1
	RTA_SRC             = 0x2
	RTA_IIF             = 0x3
	RTA_OIF             = 0x4
	RTA_GATEWAY         = 0x5
	RTA_PRIORITY        = 0x6
	RTA_PREFSRC         = 0x7
	RTA_METRICS         = 0x8
	RTA_MULTIPATH       = 0x9
	RTA_FLOW            = 0xb
	RTA_CACHEINFO       = 0xc
	RTA_TABLE           = 0xf
	RTN_UNSPEC          = 0x0
	RTN_UNICAST         = 0x1
	RTN_LOCAL           = 0x2
	RTN_BROADCAST       = 0x3
	RTN_ANYCAST         = 0x4
	RTN_MULTICAST       = 0x5
	RTN_BLACKHOLE       = 0x6
	RTN_UNREACHABLE     = 0x7
	RTN_PROHIBIT        = 0x8
	RTN_THROW           = 0x9
	RTN_NAT             = 0xa
	RTN_XRESOLVE        = 0xb
	RTNLGRP_NONE        = 0x0
	RTNLGRP_LINK        = 0x1
	RTNLGRP_NOTIFY      = 0x2
	RTNLGRP_NEIGH       = 0x3
	RTNLGRP_TC          = 0x4
	RTNLGRP_IPV4_IFADDR = 0x5
	RTNLGRP_IPV4_MROUTE = 0x6
	RTNLGRP_IPV4_ROUTE  = 0x7
	RTNLGRP_IPV4_RULE   = 0x8
	RTNLGRP_IPV6_IFADDR = 0x9
	RTNLGRP_IPV6_MROUTE = 0xa
	RTNLGRP_IPV6_ROUTE  = 0xb
	RTNLGRP_IPV6_IFINFO = 0xc
	RTNLGRP_IPV6_PREFIX = 0x12
	RTNLGRP_IPV6_RULE   = 0x13
	RTNLGRP_ND_USEROPT  = 0x14
	SizeofNlMsghdr      = 0x10
	SizeofNlMsgerr      = 0x14
	SizeofRtGenmsg      = 0x1
	SizeofNlAttr        = 0x4
	SizeofRtAttr        = 0x4
	SizeofIfInfomsg     = 0x10
	SizeofIfAddrmsg     = 0x8
	SizeofRtMsg         = 0xc
	SizeofRtNexthop     = 0x8
)

type NlMsghdr struct {
	Len   uint32
	Type  uint16
	Flags uint16
	Seq   uint32
	Pid   uint32
}

type NlMsgerr struct {
	Error int32
	Msg   NlMsghdr
}

type RtGenmsg struct {
	Family uint8
}

type NlAttr struct {
	Len  uint16
	Type uint16
}

type RtAttr struct {
	Len  uint16
	Type uint16
}

type IfInfomsg struct {
	Family     uint8
	X__ifi_pad uint8
	Type       uint16
	Index      int32
	Flags      uint32
	Change     uint32
}

type IfAddrmsg struct {
	Family    uint8
	Prefixlen uint8
	Flags     uint8
	Scope     uint8
	Index     uint32
}

type RtMsg struct {
	Family   uint8
	Dst_len  uint8
	Src_len  uint8
	Tos      uint8
	Table    uint8
	Protocol uint8
	Scope    uint8
	Type     uint8
	Flags    uint32
}

type RtNexthop struct {
	Len     uint16
	Flags   uint8
	Hops    uint8
	Ifindex int32
}

const (
	SizeofSockFilter = 0x8
	SizeofSockFprog  = 0x8
)

type SockFilter struct {
	Code uint16
	Jt   uint8
	Jf   uint8
	K    uint32
}

type SockFprog struct {
	Len       uint16
	Pad_cgo_0 [2]byte
	Filter    *SockFilter
}

type InotifyEvent struct {
	Wd     int32
	Mask   uint32
	Cookie uint32
	Len    uint32
}

const SizeofInotifyEvent = 0x10

type PtraceRegs struct {
	Regs        [109]uint32
	U_tsize     uint32
	U_dsize     uint32
	U_ssize     uint32
	Start_code  uint32
	Start_data  uint32
	Start_stack uint32
	Signal      int32
	U_ar0       *byte
	Magic       uint32
	U_comm      [32]int8
}

type ptracePsw struct {
}

type ptraceFpregs struct {
}

type ptracePer struct {
}

type FdSet struct {
	Bits [32]int32
}

type Sysinfo_t struct {
	Uptime    int32
	Loads     [3]uint32
	Totalram  uint32
	Freeram   uint32
	Sharedram uint32
	Bufferram uint32
	Totalswap uint32
	Freeswap  uint32
	Procs     uint16
	Pad       uint16
	Totalhigh uint32
	Freehigh  uint32
	Unit      uint32
	X_f       [8]int8
}

type Utsname struct {
	Sysname    [65]int8
	Nodename   [65]int8
	Release    [65]int8
	Version    [65]int8
	Machine    [65]int8
	Domainname [65]int8
}

type Ustat_t struct {
	Tfree  int32
	Tinode uint32
	Fname  [6]int8
	Fpack  [6]int8
}

type EpollEvent struct {
	Events uint32
	PadFd  int32
	Fd     int32
	Pad    int32
}

const (
	AT_FDCWD            = -0x64
	AT_REMOVEDIR        = 0x200
	AT_SYMLINK_FOLLOW   = 0x400
	AT_SYMLINK_NOFOLLOW = 0x100
)

type PollFd struct {
	Fd      int32
	Events  int16
	Revents int16
}

const (
	POLLIN    = 0x1
	POLLPRI   = 0x2
	POLLOUT   = 0x4
	POLLRDHUP = 0x2000
	POLLERR   = 0x8
	POLLHUP   = 0x10
	POLLNVAL  = 0x20
)

type Sigset_t struct {
	X__val [32]uint32
}

const _SC_PAGESIZE = 0x1e

type Termios struct {
	Iflag  uint32
	Oflag  uint32
	Cflag  uint32
	Lflag  uint32
	Line   uint8
	Cc     [23]uint8
	Ispeed uint32
	Ospeed uint32
}

{'repo_name': 'parrot-translate/parrot', 'stars': '971', 'repo_language': 'TypeScript', 'file_name': '2a8981379eba_add_locales_table.py', 'mime_type': 'text/x-python', 'hash': -7644543668410822930, 'source_dataset': 'data'}


# Interledger.rs

This crate bundles all libraries that comprise the Rust implementation of [the Interledger Protocol Suite](https://interledger.org/rfcs/0001-interledger-architecture/).

{'repo_name': 'interledger-rs/interledger-rs', 'stars': '132', 'repo_language': 'Rust', 'file_name': 'github_release.sh', 'mime_type': 'text/x-shellscript', 'hash': -1787222969128930628, 'source_dataset': 'data'}