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

using System;
using System.Collections.Generic;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.TextFormatting;

using ICSharpCode.AvalonEdit.Document;

namespace ICSharpCode.AvalonEdit.Rendering
{
	/// <summary>
	/// Represents a visual element in the document.
	/// </summary>
	public abstract class VisualLineElement
	{
		/// <summary>
		/// Creates a new VisualLineElement.
		/// </summary>
		/// <param name="visualLength">The length of the element in VisualLine coordinates. Must be positive.</param>
		/// <param name="documentLength">The length of the element in the document. Must be non-negative.</param>
		protected VisualLineElement(int visualLength, int documentLength)
		{
			if (visualLength < 1)
				throw new ArgumentOutOfRangeException("visualLength", visualLength, "Value must be at least 1");
			if (documentLength < 0)
				throw new ArgumentOutOfRangeException("documentLength", documentLength, "Value must be at least 0");
			this.VisualLength = visualLength;
			this.DocumentLength = documentLength;
		}

		/// <summary>
		/// Gets the length of this element in visual columns.
		/// </summary>
		public int VisualLength { get; private set; }

		/// <summary>
		/// Gets the length of this element in the text document.
		/// </summary>
		public int DocumentLength { get; private set; }

		/// <summary>
		/// Gets the visual column where this element starts.
		/// </summary>
		[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods",
		                                                 Justification = "This property holds the start visual column, use GetVisualColumn to get inner visual columns.")]
		public int VisualColumn { get; internal set; }

		/// <summary>
		/// Gets the text offset where this element starts, relative to the start text offset of the visual line.
		/// </summary>
		public int RelativeTextOffset { get; internal set; }

		/// <summary>
		/// Gets the text run properties.
		/// A unique <see cref="VisualLineElementTextRunProperties"/> instance is used for each
		/// <see cref="VisualLineElement"/>; colorizing code may assume that modifying the
		/// <see cref="VisualLineElementTextRunProperties"/> will affect only this
		/// <see cref="VisualLineElement"/>.
		/// </summary>
		public VisualLineElementTextRunProperties TextRunProperties { get; private set; }

		/// <summary>
		/// Gets/sets the brush used for the background of this <see cref="VisualLineElement" />.
		/// </summary>
		public Brush BackgroundBrush { get; set; }

		internal void SetTextRunProperties(VisualLineElementTextRunProperties p)
		{
			this.TextRunProperties = p;
		}

		/// <summary>
		/// Creates the TextRun for this line element.
		/// </summary>
		/// <param name="startVisualColumn">
		/// The visual column from which the run should be constructed.
		/// Normally the same value as the <see cref="VisualColumn"/> property is used to construct the full run;
		/// but when word-wrapping is active, partial runs might be created.
		/// </param>
		/// <param name="context">
		/// Context object that contains information relevant for text run creation.
		/// </param>
		public abstract TextRun CreateTextRun(int startVisualColumn, ITextRunConstructionContext context);

		/// <summary>
		/// Retrieves the text span immediately before the visual column.
		/// </summary>
		/// <remarks>This method is used for word-wrapping in bidirectional text.</remarks>
		public virtual TextSpan<CultureSpecificCharacterBufferRange> GetPrecedingText(int visualColumnLimit, ITextRunConstructionContext context)
		{
			return null;
		}

		/// <summary>
		/// Gets if this VisualLineElement can be split.
		/// </summary>
		public virtual bool CanSplit {
			get { return false; }
		}

		/// <summary>
		/// Splits the element.
		/// </summary>
		/// <param name="splitVisualColumn">Position inside this element at which it should be broken</param>
		/// <param name="elements">The collection of line elements</param>
		/// <param name="elementIndex">The index at which this element is in the elements list.</param>
		public virtual void Split(int splitVisualColumn, IList<VisualLineElement> elements, int elementIndex)
		{
			throw new NotSupportedException();
		}

		/// <summary>
		/// Helper method for splitting this line element into two, correctly updating the
		/// <see cref="VisualLength"/>, <see cref="DocumentLength"/>, <see cref="VisualColumn"/>
		/// and <see cref="RelativeTextOffset"/> properties.
		/// </summary>
		/// <param name="firstPart">The element before the split position.</param>
		/// <param name="secondPart">The element after the split position.</param>
		/// <param name="splitVisualColumn">The split position as visual column.</param>
		/// <param name="splitRelativeTextOffset">The split position as text offset.</param>
		protected void SplitHelper(VisualLineElement firstPart, VisualLineElement secondPart, int splitVisualColumn, int splitRelativeTextOffset)
		{
			if (firstPart == null)
				throw new ArgumentNullException("firstPart");
			if (secondPart == null)
				throw new ArgumentNullException("secondPart");
			int relativeSplitVisualColumn = splitVisualColumn - VisualColumn;
			int relativeSplitRelativeTextOffset = splitRelativeTextOffset - RelativeTextOffset;

			if (relativeSplitVisualColumn <= 0 || relativeSplitVisualColumn >= VisualLength)
				throw new ArgumentOutOfRangeException("splitVisualColumn", splitVisualColumn, "Value must be between " + (VisualColumn + 1) + " and " + (VisualColumn + VisualLength - 1));
			if (relativeSplitRelativeTextOffset < 0 || relativeSplitRelativeTextOffset > DocumentLength)
				throw new ArgumentOutOfRangeException("splitRelativeTextOffset", splitRelativeTextOffset, "Value must be between " + (RelativeTextOffset) + " and " + (RelativeTextOffset + DocumentLength));
			int oldVisualLength = VisualLength;
			int oldDocumentLength = DocumentLength;
			int oldVisualColumn = VisualColumn;
			int oldRelativeTextOffset = RelativeTextOffset;
			firstPart.VisualColumn = oldVisualColumn;
			secondPart.VisualColumn = oldVisualColumn + relativeSplitVisualColumn;
			firstPart.RelativeTextOffset = oldRelativeTextOffset;
			secondPart.RelativeTextOffset = oldRelativeTextOffset + relativeSplitRelativeTextOffset;
			firstPart.VisualLength = relativeSplitVisualColumn;
			secondPart.VisualLength = oldVisualLength - relativeSplitVisualColumn;
			firstPart.DocumentLength = relativeSplitRelativeTextOffset;
			secondPart.DocumentLength = oldDocumentLength - relativeSplitRelativeTextOffset;
			if (firstPart.TextRunProperties == null)
				firstPart.TextRunProperties = TextRunProperties.Clone();
			if (secondPart.TextRunProperties == null)
				secondPart.TextRunProperties = TextRunProperties.Clone();
		}

		/// <summary>
		/// Gets the visual column of a text location inside this element.
		/// The text offset is given relative to the visual line start.
		/// </summary>
		public virtual int GetVisualColumn(int relativeTextOffset)
		{
			if (relativeTextOffset >= this.RelativeTextOffset + DocumentLength)
				return VisualColumn + VisualLength;
			else
				return VisualColumn;
		}

		/// <summary>
		/// Gets the text offset of a visual column inside this element.
		/// </summary>
		/// <returns>A text offset relative to the visual line start.</returns>
		public virtual int GetRelativeOffset(int visualColumn)
		{
			if (visualColumn >= this.VisualColumn + VisualLength)
				return RelativeTextOffset + DocumentLength;
			else
				return RelativeTextOffset;
		}

		/// <summary>
		/// Gets the next caret position inside this element.
		/// </summary>
		/// <param name="visualColumn">The visual column from which the search should be started.</param>
		/// <param name="direction">The search direction (forwards or backwards).</param>
		/// <param name="mode">Whether to stop only at word borders.</param>
		/// <returns>The visual column of the next caret position, or -1 if there is no next caret position.</returns>
		/// <remarks>
		/// In the space between two line elements, it is sufficient that one of them contains a caret position;
		/// though in many cases, both of them contain one.
		/// </remarks>
		public virtual int GetNextCaretPosition(int visualColumn, LogicalDirection direction, CaretPositioningMode mode)
		{
			int stop1 = this.VisualColumn;
			int stop2 = this.VisualColumn + this.VisualLength;
			if (direction == LogicalDirection.Backward) {
				if (visualColumn > stop2 && mode != CaretPositioningMode.WordStart && mode != CaretPositioningMode.WordStartOrSymbol)
					return stop2;
				else if (visualColumn > stop1)
					return stop1;
			} else {
				if (visualColumn < stop1)
					return stop1;
				else if (visualColumn < stop2 && mode != CaretPositioningMode.WordStart && mode != CaretPositioningMode.WordStartOrSymbol)
					return stop2;
			}
			return -1;
		}

		/// <summary>
		/// Gets whether the specified offset in this element is considered whitespace.
		/// </summary>
		public virtual bool IsWhitespace(int visualColumn)
		{
			return false;
		}

		/// <summary>
		/// Gets whether the <see cref="GetNextCaretPosition"/> implementation handles line borders.
		/// If this property returns false, the caller of GetNextCaretPosition should handle the line
		/// borders (i.e. place caret stops at the start and end of the line).
		/// This property has an effect only for VisualLineElements that are at the start or end of a
		/// <see cref="VisualLine"/>.
		/// </summary>
		public virtual bool HandlesLineBorders {
			get { return false; }
		}

		/// <summary>
		/// Queries the cursor over the visual line element.
		/// </summary>
		protected internal virtual void OnQueryCursor(QueryCursorEventArgs e)
		{
		}

		/// <summary>
		/// Allows the visual line element to handle a mouse event.
		/// </summary>
		protected internal virtual void OnMouseDown(MouseButtonEventArgs e)
		{
		}

		/// <summary>
		/// Allows the visual line element to handle a mouse event.
		/// </summary>
		protected internal virtual void OnMouseUp(MouseButtonEventArgs e)
		{
		}
	}
}


package client

import (
	"bytes"
	"fmt"
	"io/ioutil"
	"net/http"
	"strings"
	"testing"

	"golang.org/x/net/context"

	"github.com/docker/engine-api/types"
	"github.com/docker/engine-api/types/swarm"
)

func TestServiceUpdateError(t *testing.T) {
	client := &Client{
		transport: newMockClient(nil, errorMock(http.StatusInternalServerError, "Server error")),
	}

	err := client.ServiceUpdate(context.Background(), "service_id", swarm.Version{}, swarm.ServiceSpec{}, types.ServiceUpdateOptions{})
	if err == nil || err.Error() != "Error response from daemon: Server error" {
		t.Fatalf("expected a Server Error, got %v", err)
	}
}

func TestServiceUpdate(t *testing.T) {
	expectedURL := "/services/service_id/update"

	updateCases := []struct {
		swarmVersion    swarm.Version
		expectedVersion string
	}{
		{
			expectedVersion: "0",
		},
		{
			swarmVersion: swarm.Version{
				Index: 0,
			},
			expectedVersion: "0",
		},
		{
			swarmVersion: swarm.Version{
				Index: 10,
			},
			expectedVersion: "10",
		},
	}

	for _, updateCase := range updateCases {
		client := &Client{
			transport: newMockClient(nil, func(req *http.Request) (*http.Response, error) {
				if !strings.HasPrefix(req.URL.Path, expectedURL) {
					return nil, fmt.Errorf("Expected URL '%s', got '%s'", expectedURL, req.URL)
				}
				if req.Method != "POST" {
					return nil, fmt.Errorf("expected POST method, got %s", req.Method)
				}
				version := req.URL.Query().Get("version")
				if version != updateCase.expectedVersion {
					return nil, fmt.Errorf("version not set in URL query properly, expected '%s', got %s", updateCase.expectedVersion, version)
				}
				return &http.Response{
					StatusCode: http.StatusOK,
					Body:       ioutil.NopCloser(bytes.NewReader([]byte("body"))),
				}, nil
			}),
		}

		err := client.ServiceUpdate(context.Background(), "service_id", updateCase.swarmVersion, swarm.ServiceSpec{}, types.ServiceUpdateOptions{})
		if err != nil {
			t.Fatal(err)
		}
	}
}


#
# Makefile for DECnet netfilter modules
#

obj-$(CONFIG_DECNET_NF_GRABULATOR) += dn_rtmsg.o


"""
This package contains utility functions to convert images between different
color spaces.
"""
# make functions available at the package level using these shadow imports
# since we mostly have one function per file
from .rgb_to_od import rgb_to_od
from .od_to_rgb import od_to_rgb
from .rgb_to_sda import rgb_to_sda
from .sda_to_rgb import sda_to_rgb
from .rgb_to_lab import rgb_to_lab
from .lab_to_rgb import lab_to_rgb
from .rgb_to_hsi import rgb_to_hsi

from .lab_mean_std import lab_mean_std  # after rgb_to_lab

# list out things that are available for public use
__all__ = (

    # functions and classes of this package
    'lab_mean_std',
    'lab_to_rgb',
    'od_to_rgb',
    'sda_to_rgb',
    'rgb_to_hsi',
    'rgb_to_lab',
    'rgb_to_od',
    'rgb_to_sda',
)


package test.os

import java.io._
import java.nio.charset.StandardCharsets

import os._
import utest._

import scala.collection.mutable

object SubprocessTests extends TestSuite{
  val scriptFolder = pwd/"os"/"test"/"resources"/"test"

  val lsCmd = if(scala.util.Properties.isWin) "dir" else "ls"

  val tests = Tests {
    test("lines"){
      val res = proc(lsCmd, scriptFolder).call()
      assert(
        res.out.lines().exists(_.contains("File.txt")),
        res.out.lines().exists(_.contains("folder1")),
        res.out.lines().exists(_.contains("folder2"))
      )
    }
    test("string"){
      val res = proc(lsCmd, scriptFolder).call()
      assert(
        res.out.string().contains("File.txt"),
        res.out.string().contains("folder1"),
        res.out.string().contains("folder2")
      )
    }
    test("bytes"){
      if(Unix()){
        val res = proc(scriptFolder / "misc" / "echo", "abc").call()
        val listed = res.out.bytes
        listed ==> "abc\n".getBytes
      }
    }
    test("chained"){
      assert(
        proc("git", "init").call().out.string().contains("Reinitialized existing Git repository"),
        proc("git", "init").call().out.string().contains("Reinitialized existing Git repository"),
        proc(lsCmd, pwd).call().out.string().contains("readme.md")
      )
    }
    test("basicList"){
      val files = List("readme.md", "build.sc")
      val output = proc(lsCmd, files).call().out.string()
      assert(files.forall(output.contains))
    }
    test("listMixAndMatch"){
      val stuff = List("I", "am", "bovine")
      val result = TestUtil.proc("echo", "Hello,", stuff, "hear me roar").call()
      if(Unix())
        assert(result.out.string().contains("Hello, " + stuff.mkString(" ") + " hear me roar"))
      else // win quotes multiword args
        assert(result.out.string().contains("Hello, " + stuff.mkString(" ") + " \"hear me roar\""))
    }
    test("failures"){
      val ex = intercept[os.SubprocessException]{
        proc(lsCmd, "does-not-exist").call(check = true, stderr = os.Pipe)
      }
      val res: CommandResult = ex.result
      assert(
        res.exitCode != 0,
        res.err.string().contains("No such file or directory") || // unix
          res.err.string().contains("File Not Found") // win
      )
    }

    test("filebased"){
      if(Unix()){
        assert(proc(scriptFolder/"misc"/"echo", "HELLO").call().out.lines().mkString == "HELLO")

        val res: CommandResult =
          proc(root/"bin"/"bash", "-c", "echo 'Hello'$ENV_ARG").call(
            env = Map("ENV_ARG" -> "123")
          )

        assert(res.out.string().trim()== "Hello123")
      }
    }
    test("filebased2"){
      if(Unix()){
        val possiblePaths = Seq(root / "bin",
                                root / "usr" / "bin").map { pfx => pfx / "echo" }
        val res = proc("which", "echo").call()
        val echoRoot = Path(res.out.string().trim())
        assert(possiblePaths.contains(echoRoot))

        assert(proc(echoRoot, "HELLO").call().out.lines() == Seq("HELLO"))
      }
    }

    test("envArgs"){ if(Unix()){
      val res0 = proc("bash", "-c", "echo \"Hello$ENV_ARG\"").call(env = Map("ENV_ARG" -> "12"))
      assert(res0.out.lines() == Seq("Hello12"))

      val res1 = proc("bash", "-c", "echo \"Hello$ENV_ARG\"").call(env = Map("ENV_ARG" -> "12"))
      assert(res1.out.lines() == Seq("Hello12"))

      val res2 = proc("bash", "-c", "echo 'Hello$ENV_ARG'").call(env = Map("ENV_ARG" -> "12"))
      assert(res2.out.lines() == Seq("Hello$ENV_ARG"))

      val res3 = proc("bash", "-c", "echo 'Hello'$ENV_ARG").call(env = Map("ENV_ARG" -> "123"))
      assert(res3.out.lines() == Seq("Hello123"))
    }}
    test("multiChunk"){
      // Make sure that in the case where multiple chunks are being read from
      // the subprocess in quick succession, we ensure that the output handler
      // callbacks are properly ordered such that the output is aggregated
      // correctly
      test("bashC"){ if(TestUtil.isInstalled("python")) {
        os.proc("python", "-c",
        """import sys, time
          |for i in range(5):
          |  for j in range(10):
          |    sys.stdout.write(str(j))
          |    # Make sure it comes as multiple chunks, but close together!
          |    # Vary how close they are together to try and trigger race conditions
          |    time.sleep(0.00001 * i)
          |    sys.stdout.flush()
        """.stripMargin).call().out.string() ==>
          "01234567890123456789012345678901234567890123456789"
      }}
      test("jarTf"){
        // This was the original repro for the multi-chunk concurrency bugs
        val jarFile = os.pwd / "os" / "test" / "resources" / "misc" / "out.jar"
        assert(TestUtil.eqIgnoreNewlineStyle(
          os.proc("jar", "-tf", jarFile).call().out.string(),
          """META-INF/MANIFEST.MF
            |test/FooTwo.class
            |test/Bar.class
            |test/BarTwo.class
            |test/Foo.class
            |test/BarThree.class
            |hello.txt
            |""".stripMargin
        ))
      }
    }
    test("workingDirectory"){
      val listed1 = proc(lsCmd).call(cwd = pwd)
      val listed2 = proc(lsCmd).call(cwd = pwd / up)

      assert(listed2 != listed1)
    }
    test("customWorkingDir"){
      val res1 = proc(lsCmd).call(cwd = pwd) // explicitly
      // or implicitly
      val res2 = proc(lsCmd).call()
    }

    test("fileCustomWorkingDir"){
      if(Unix()){
        val output = proc(scriptFolder/"misc"/"echo_with_wd", "HELLO").call(cwd = root/"usr")
        assert(output.out.lines() == Seq("HELLO /usr"))
      }
    }
  }
}


<?php
/*
 * This file is part of PHPUnit.
 *
 * (c) Sebastian Bergmann <sebastian@phpunit.de>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
use PHPUnit\Framework\TestCase;

class NotPublicTestCase extends TestCase
{
    public function testPublic(): void
    {
    }

    protected function testNotPublic(): void
    {
    }
}


package com.fincatto.documentofiscal.nfe400.classes.nota;

import java.math.BigDecimal;

import org.junit.Assert;
import org.junit.Test;

import com.fincatto.documentofiscal.nfe400.classes.NFNotaInfoItemModalidadeBCICMSST;
import com.fincatto.documentofiscal.nfe400.classes.NFNotaSituacaoOperacionalSimplesNacional;
import com.fincatto.documentofiscal.nfe400.classes.NFOrigem;

public class NFNotaInfoItemImpostoICMSSN202Test {

    @Test(expected = NumberFormatException.class)
    public void naoDevePermitirPercentualAliquotaImpostoICMSSTComTamanhoInvalido() {
        new NFNotaInfoItemImpostoICMSSN202().setPercentualAliquotaImpostoICMSST(new BigDecimal("1000"));
    }

    @Test(expected = NumberFormatException.class)
    public void naoDevePermitirPercentualMargemValorAdicionadoICMSSTComTamanhoInvalido() {
        new NFNotaInfoItemImpostoICMSSN202().setPercentualMargemValorAdicionadoICMSST(new BigDecimal("1000"));
    }

    @Test(expected = NumberFormatException.class)
    public void naoDevePermitirPercentualReducaoBCICMSSTComTamanhoInvalido() {
        new NFNotaInfoItemImpostoICMSSN202().setPercentualReducaoBCICMSST(new BigDecimal("1000"));
    }

    @Test(expected = NumberFormatException.class)
    public void naoDevePermitirValorBCICMSSTComTamanhoInvalido() {
        new NFNotaInfoItemImpostoICMSSN202().setValorBCICMSST(new BigDecimal("10000000000000"));
    }

    @Test(expected = NumberFormatException.class)
    public void naoDevePermitirValorICSMSSTComTamanhoInvalido() {
        new NFNotaInfoItemImpostoICMSSN202().setValorICMSST(new BigDecimal("10000000000000"));
    }

    @Test(expected = IllegalStateException.class)
    public void naoDevePermitirValorZeradoParaPercentualFundoCombatePobreza() {
        new NFNotaInfoItemImpostoICMSSN202().setPercentualFundoCombatePobrezaST(BigDecimal.ZERO);
    }

    @Test(expected = IllegalStateException.class)
    public void naoDevePermitirPercentualAliquotaImpostoICMSSTNulo() {
        final NFNotaInfoItemImpostoICMSSN202 icms202 = new NFNotaInfoItemImpostoICMSSN202();
        icms202.setModalidadeBCICMSST(NFNotaInfoItemModalidadeBCICMSST.LISTA_POSITIVA);
        icms202.setOrigem(NFOrigem.ESTRANGEIRA_ADQUIRIDA_MERCADO_INTERNO);
        icms202.setPercentualMargemValorAdicionadoICMSST(new BigDecimal("99.99"));
        icms202.setPercentualReducaoBCICMSST(new BigDecimal("99.99"));
        icms202.setSituacaoOperacaoSN(NFNotaSituacaoOperacionalSimplesNacional.IMUNE);
        icms202.setValorBCICMSST(new BigDecimal("999999999999.99"));
        icms202.setValorICMSST(new BigDecimal("999999999999.99"));
        icms202.setValorBCFundoCombatePobrezaST(new BigDecimal("999999999999.99"));
        icms202.setPercentualFundoCombatePobrezaST(new BigDecimal("99.99"));
        icms202.setValorFundoCombatePobrezaST(new BigDecimal("999999999999.99"));
        icms202.toString();
    }

    @Test
    public void devePermitirPercentualMargemValorAdicionadoICMSSTNulo() {
        final NFNotaInfoItemImpostoICMSSN202 icms202 = new NFNotaInfoItemImpostoICMSSN202();
        icms202.setPercentualAliquotaImpostoICMSST(new BigDecimal("99.99"));
        icms202.setModalidadeBCICMSST(NFNotaInfoItemModalidadeBCICMSST.LISTA_POSITIVA);
        icms202.setOrigem(NFOrigem.ESTRANGEIRA_ADQUIRIDA_MERCADO_INTERNO);
        icms202.setPercentualReducaoBCICMSST(new BigDecimal("99.99"));
        icms202.setSituacaoOperacaoSN(NFNotaSituacaoOperacionalSimplesNacional.IMUNE);
        icms202.setValorBCICMSST(new BigDecimal("999999999999.99"));
        icms202.setValorICMSST(new BigDecimal("999999999999.99"));
        icms202.setValorBCFundoCombatePobrezaST(new BigDecimal("999999999999.99"));
        icms202.setPercentualFundoCombatePobrezaST(new BigDecimal("99.99"));
        icms202.setValorFundoCombatePobrezaST(new BigDecimal("999999999999.99"));
        icms202.toString();
    }

    @Test(expected = IllegalStateException.class)
    public void naoDevePermitirModalidadeDeterminacaoBCICMSSTNulo() {
        final NFNotaInfoItemImpostoICMSSN202 icms202 = new NFNotaInfoItemImpostoICMSSN202();
        icms202.setPercentualAliquotaImpostoICMSST(new BigDecimal("99.99"));
        icms202.setOrigem(NFOrigem.ESTRANGEIRA_ADQUIRIDA_MERCADO_INTERNO);
        icms202.setPercentualMargemValorAdicionadoICMSST(new BigDecimal("99.99"));
        icms202.setPercentualReducaoBCICMSST(new BigDecimal("99.99"));
        icms202.setSituacaoOperacaoSN(NFNotaSituacaoOperacionalSimplesNacional.IMUNE);
        icms202.setValorBCICMSST(new BigDecimal("999999999999.99"));
        icms202.setValorICMSST(new BigDecimal("999999999999.99"));
        icms202.setValorBCFundoCombatePobrezaST(new BigDecimal("999999999999.99"));
        icms202.setPercentualFundoCombatePobrezaST(new BigDecimal("99.99"));
        icms202.setValorFundoCombatePobrezaST(new BigDecimal("999999999999.99"));
        icms202.toString();
    }

    @Test(expected = IllegalStateException.class)
    public void naoDevePermitirOrigemNulo() {
        final NFNotaInfoItemImpostoICMSSN202 icms202 = new NFNotaInfoItemImpostoICMSSN202();
        icms202.setPercentualAliquotaImpostoICMSST(new BigDecimal("99.99"));
        icms202.setModalidadeBCICMSST(NFNotaInfoItemModalidadeBCICMSST.LISTA_POSITIVA);
        icms202.setPercentualMargemValorAdicionadoICMSST(new BigDecimal("99.99"));
        icms202.setPercentualReducaoBCICMSST(new BigDecimal("99.99"));
        icms202.setSituacaoOperacaoSN(NFNotaSituacaoOperacionalSimplesNacional.IMUNE);
        icms202.setValorBCICMSST(new BigDecimal("999999999999.99"));
        icms202.setValorICMSST(new BigDecimal("999999999999.99"));
        icms202.setValorBCFundoCombatePobrezaST(new BigDecimal("999999999999.99"));
        icms202.setPercentualFundoCombatePobrezaST(new BigDecimal("99.99"));
        icms202.setValorFundoCombatePobrezaST(new BigDecimal("999999999999.99"));
        icms202.toString();
    }

    @Test
    public void devePermitirPercentualReducaoBCICMSSTNulo() {
        final NFNotaInfoItemImpostoICMSSN202 icms202 = new NFNotaInfoItemImpostoICMSSN202();
        icms202.setPercentualAliquotaImpostoICMSST(new BigDecimal("99.99"));
        icms202.setModalidadeBCICMSST(NFNotaInfoItemModalidadeBCICMSST.LISTA_POSITIVA);
        icms202.setOrigem(NFOrigem.ESTRANGEIRA_ADQUIRIDA_MERCADO_INTERNO);
        icms202.setPercentualMargemValorAdicionadoICMSST(new BigDecimal("99.99"));
        icms202.setSituacaoOperacaoSN(NFNotaSituacaoOperacionalSimplesNacional.IMUNE);
        icms202.setValorBCICMSST(new BigDecimal("999999999999.99"));
        icms202.setValorICMSST(new BigDecimal("999999999999.99"));
        icms202.setValorBCFundoCombatePobrezaST(new BigDecimal("999999999999.99"));
        icms202.setPercentualFundoCombatePobrezaST(new BigDecimal("99.99"));
        icms202.setValorFundoCombatePobrezaST(new BigDecimal("999999999999.99"));
        icms202.toString();
    }

    @Test(expected = IllegalStateException.class)
    public void naoDevePermitirSituacaoOperacaoSNNulo() {
        final NFNotaInfoItemImpostoICMSSN202 icms202 = new NFNotaInfoItemImpostoICMSSN202();
        icms202.setPercentualAliquotaImpostoICMSST(new BigDecimal("99.99"));
        icms202.setModalidadeBCICMSST(NFNotaInfoItemModalidadeBCICMSST.LISTA_POSITIVA);
        icms202.setOrigem(NFOrigem.ESTRANGEIRA_ADQUIRIDA_MERCADO_INTERNO);
        icms202.setPercentualMargemValorAdicionadoICMSST(new BigDecimal("99.99"));
        icms202.setPercentualReducaoBCICMSST(new BigDecimal("99.99"));
        icms202.setValorBCICMSST(new BigDecimal("999999999999.99"));
        icms202.setValorICMSST(new BigDecimal("999999999999.99"));
        icms202.setValorBCFundoCombatePobrezaST(new BigDecimal("999999999999.99"));
        icms202.setPercentualFundoCombatePobrezaST(new BigDecimal("99.99"));
        icms202.setValorFundoCombatePobrezaST(new BigDecimal("999999999999.99"));
        icms202.toString();
    }

    @Test(expected = IllegalStateException.class)
    public void naoDevePermitirValorBCICMSSTNulo() {
        final NFNotaInfoItemImpostoICMSSN202 icms202 = new NFNotaInfoItemImpostoICMSSN202();
        icms202.setPercentualAliquotaImpostoICMSST(new BigDecimal("99.99"));
        icms202.setModalidadeBCICMSST(NFNotaInfoItemModalidadeBCICMSST.LISTA_POSITIVA);
        icms202.setOrigem(NFOrigem.ESTRANGEIRA_ADQUIRIDA_MERCADO_INTERNO);
        icms202.setPercentualMargemValorAdicionadoICMSST(new BigDecimal("99.99"));
        icms202.setPercentualReducaoBCICMSST(new BigDecimal("99.99"));
        icms202.setSituacaoOperacaoSN(NFNotaSituacaoOperacionalSimplesNacional.IMUNE);
        icms202.setValorICMSST(new BigDecimal("999999999999.99"));
        icms202.setValorBCFundoCombatePobrezaST(new BigDecimal("999999999999.99"));
        icms202.setPercentualFundoCombatePobrezaST(new BigDecimal("99.99"));
        icms202.setValorFundoCombatePobrezaST(new BigDecimal("999999999999.99"));
        icms202.toString();
    }

    @Test(expected = IllegalStateException.class)
    public void naoDevePermitirValorICMSSTNulo() {
        final NFNotaInfoItemImpostoICMSSN202 icms202 = new NFNotaInfoItemImpostoICMSSN202();
        icms202.setPercentualAliquotaImpostoICMSST(new BigDecimal("99.99"));
        icms202.setModalidadeBCICMSST(NFNotaInfoItemModalidadeBCICMSST.LISTA_POSITIVA);
        icms202.setOrigem(NFOrigem.ESTRANGEIRA_ADQUIRIDA_MERCADO_INTERNO);
        icms202.setPercentualMargemValorAdicionadoICMSST(new BigDecimal("99.99"));
        icms202.setPercentualReducaoBCICMSST(new BigDecimal("99.99"));
        icms202.setSituacaoOperacaoSN(NFNotaSituacaoOperacionalSimplesNacional.IMUNE);
        icms202.setValorBCICMSST(new BigDecimal("999999999999.99"));
        icms202.setValorBCFundoCombatePobrezaST(new BigDecimal("999999999999.99"));
        icms202.setPercentualFundoCombatePobrezaST(new BigDecimal("99.99"));
        icms202.setValorFundoCombatePobrezaST(new BigDecimal("999999999999.99"));
        icms202.toString();
    }

    @Test
    public void deveGerarXMLDeAcordoComOPadraoEstabelecido() {
        final NFNotaInfoItemImpostoICMSSN202 icms202 = new NFNotaInfoItemImpostoICMSSN202();
        icms202.setPercentualAliquotaImpostoICMSST(new BigDecimal("99.99"));
        icms202.setModalidadeBCICMSST(NFNotaInfoItemModalidadeBCICMSST.LISTA_POSITIVA);
        icms202.setOrigem(NFOrigem.ESTRANGEIRA_ADQUIRIDA_MERCADO_INTERNO);
        icms202.setPercentualMargemValorAdicionadoICMSST(new BigDecimal("99.99"));
        icms202.setPercentualReducaoBCICMSST(new BigDecimal("99.99"));
        icms202.setSituacaoOperacaoSN(NFNotaSituacaoOperacionalSimplesNacional.IMUNE);
        icms202.setValorBCICMSST(new BigDecimal("999999999999.99"));
        icms202.setValorICMSST(new BigDecimal("999999999999.99"));
        icms202.setValorBCFundoCombatePobrezaST(new BigDecimal("999999999999.99"));
        icms202.setPercentualFundoCombatePobrezaST(new BigDecimal("99.99"));
        icms202.setValorFundoCombatePobrezaST(new BigDecimal("999999999999.99"));

        final String xmlEsperado = "<NFNotaInfoItemImpostoICMSSN202><orig>2</orig><CSOSN>300</CSOSN><modBCST>2</modBCST><pMVAST>99.99</pMVAST><pRedBCST>99.99</pRedBCST><vBCST>999999999999.99</vBCST><pICMSST>99.99</pICMSST><vICMSST>999999999999.99</vICMSST><vBCFCPST>999999999999.99</vBCFCPST><pFCPST>99.99</pFCPST><vFCPST>999999999999.99</vFCPST></NFNotaInfoItemImpostoICMSSN202>";
        Assert.assertEquals(xmlEsperado, icms202.toString());
    }
}


import Hunspell from './Hunspell'

const privDictionaryProvider = Symbol('privDictionaryProvider')
const privUserWords = Symbol('privUserWords')
const privHunspell = Symbol('privHunspell')
const privLanguage = Symbol('privLanguage')

class SpellcheckProvider {
  /* **************************************************************************/
  // Lifecycle
  /* **************************************************************************/

  /**
  * @param dictionaryProvider: the dictionary provider
  * @param userWords=[]: a list of words provided by the user
  */
  constructor (dictionaryProvider, userWords = []) {
    this[privDictionaryProvider] = dictionaryProvider
    this[privUserWords] = new Set(userWords)
    this[privHunspell] = undefined
    this[privLanguage] = undefined
  }

  /**
  * Destroys the current hunspell instance
  */
  _destroyHunspell () {
    if (this[privHunspell]) {
      this[privHunspell].destroy()
      this[privHunspell] = undefined
    }
  }

  /**
  * Creates the hunspell instance
  */
  _createHunspell () {
    if (this[privHunspell]) {
      throw new Error('Call _destroyHunspell before attempting to create a second instance')
    }
    if (!this.language) {
      throw new Error('Set language before calling _createHunspell')
    }

    const dictionaries = this[privDictionaryProvider].loadDictionarySync(this.language)
    if (dictionaries) {
      this[privHunspell] = new Hunspell(this.language, dictionaries.aff, dictionaries.dic)
      this[privHunspell].addWords(Array.from(this[privUserWords]))
    }
  }

  /* **************************************************************************/
  // Properties
  /* **************************************************************************/

  get language () { return this[privLanguage] }
  set language (l) {
    if (l === this[privLanguage]) { return }
    // Teardown
    if (this[privLanguage]) {
      this[privDictionaryProvider].unloadDictionarySync()
    }
    this._destroyHunspell()

    // Set-up
    this[privLanguage] = l
    if (this[privLanguage]) {
      this._createHunspell()
    }
  }
  get isAvailable () {
    if (!this[privHunspell]) { return false }
    if (!this[privHunspell].loaded) { return false }
    return true
  }
  get isLoading () {
    if (!this.language) { return false }
    return !this.isAvailable
  }
  get dictionaryProvider () { return this[privDictionaryProvider] }
  get userWords () { return Array.from(this[privUserWords]) }

  /* **************************************************************************/
  // Utils
  /* **************************************************************************/

  _guardAvailability () {
    if (!this.isAvailable) {
      throw new Error('Spellchecker is not yet available')
    }
  }

  /* **************************************************************************/
  // Checking & Suggestions
  /* **************************************************************************/

  /**
  * Checks if a word is correct synchronously
  * @param word: the word to check
  * @param suppressErrors=false: set to true to gobble errors and return true in that case
  * @return true if correct or failed, false otherwise
  */
  isCorrect (word, suppressErrors = false) {
    try {
      this._guardAvailability()
      return this[privHunspell].isCorrect(word)
    } catch (ex) {
      if (suppressErrors) { return true }
      throw ex
    }
  }

  /**
  * Gets spelling suggestions for a word synchronously
  * @param word: the word to get suggestions for
  * @param suppressErrors=false: set to true to gobble errors and return an empty list in that case
  * @return a list of suggested words
  */
  suggestions (word, suppressErrors = false) {
    try {
      this._guardAvailability()
      return this[privHunspell].suggestions(word)
    } catch (ex) {
      if (suppressErrors) { return [] }
      throw ex
    }
  }

  /* **************************************************************************/
  // User words
  /* **************************************************************************/

  /**
  * Adds a word to the spellchecker
  * @param word: the word to add
  */
  addWord (word) {
    this[privUserWords].add(word)
    if (this[privHunspell]) {
      this[privHunspell].addWord(word)
    }
  }

  /**
  * Adds a set of words to the dictionary
  * @param words: the list of words to add
  */
  addWords (words) {
    words.forEach((word) => {
      this[privUserWords].add(word)
    })
    if (this[privHunspell]) {
      this[privHunspell].addWords(words)
    }
  }
}

export default SpellcheckProvider


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

#ifndef ECMA_EVAL_H
#define ECMA_EVAL_H

#include "ecma-globals.h"

/** \addtogroup ecma ECMA
 * @{
 *
 * \addtogroup eval eval
 * @{
 */

ecma_value_t
ecma_op_eval (ecma_string_t *code_p, uint32_t parse_opts);

ecma_value_t
ecma_op_eval_chars_buffer (const lit_utf8_byte_t *code_p, size_t code_buffer_size, uint32_t parse_opts);

/**
 * @}
 * @}
 */

#endif /* !ECMA_EVAL_H */


$DirGroup
---------

**Type:** global configuration parameter

**Default:**

**Description:**

Set the group for directories newly created. Please note that this
setting does not affect the group of directories already existing. The
parameter is a group name, for which the groupid is obtained by rsyslogd
on during startup processing. Interim changes to the user mapping are
not detected.

**Sample:**

``$DirGroup loggroup``


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

import java.io.Serializable;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;

/**
 * Memory usage information.
 */
class MemoryUsage implements Serializable {

    private static final long serialVersionUID = 0;

    static final MemoryUsage NOT_AVAILABLE = new MemoryUsage();

    static int errorCount = 0;

    // These values are in 1kB increments (not 4kB like you'd expect).
    final int nativeSharedPages;
    final int javaSharedPages;
    final int otherSharedPages;
    final int nativePrivatePages;
    final int javaPrivatePages;
    final int otherPrivatePages;

    final int allocCount;
    final int allocSize;
    final int freedCount;
    final int freedSize;
    final long nativeHeapSize;

    public MemoryUsage(String line) {
        String[] parsed = line.split(",");

        nativeSharedPages = Integer.parseInt(parsed[1]);
        javaSharedPages = Integer.parseInt(parsed[2]);
        otherSharedPages = Integer.parseInt(parsed[3]);
        nativePrivatePages = Integer.parseInt(parsed[4]);
        javaPrivatePages = Integer.parseInt(parsed[5]);
        otherPrivatePages = Integer.parseInt(parsed[6]);
        allocCount = Integer.parseInt(parsed[7]);
        allocSize = Integer.parseInt(parsed[8]);
        freedCount = Integer.parseInt(parsed[9]);
        freedSize = Integer.parseInt(parsed[10]);
        nativeHeapSize = Long.parseLong(parsed[11]);
    }

    MemoryUsage() {
        nativeSharedPages = -1;
        javaSharedPages = -1;
        otherSharedPages = -1;
        nativePrivatePages = -1;
        javaPrivatePages = -1;
        otherPrivatePages = -1;

        allocCount = -1;
        allocSize = -1;
        freedCount = -1;
        freedSize = -1;
        nativeHeapSize = -1;
    }

    MemoryUsage(int nativeSharedPages,
            int javaSharedPages,
            int otherSharedPages,
            int nativePrivatePages,
            int javaPrivatePages,
            int otherPrivatePages,
            int allocCount,
            int allocSize,
            int freedCount,
            int freedSize,
            long nativeHeapSize) {
        this.nativeSharedPages = nativeSharedPages;
        this.javaSharedPages = javaSharedPages;
        this.otherSharedPages = otherSharedPages;
        this.nativePrivatePages = nativePrivatePages;
        this.javaPrivatePages = javaPrivatePages;
        this.otherPrivatePages = otherPrivatePages;
        this.allocCount = allocCount;
        this.allocSize = allocSize;
        this.freedCount = freedCount;
        this.freedSize = freedSize;
        this.nativeHeapSize = nativeHeapSize;
    }

    MemoryUsage subtract(MemoryUsage baseline) {
        return new MemoryUsage(
                nativeSharedPages - baseline.nativeSharedPages,
                javaSharedPages - baseline.javaSharedPages,
                otherSharedPages - baseline.otherSharedPages,
                nativePrivatePages - baseline.nativePrivatePages,
                javaPrivatePages - baseline.javaPrivatePages,
                otherPrivatePages - baseline.otherPrivatePages,
                allocCount - baseline.allocCount,
                allocSize - baseline.allocSize,
                freedCount - baseline.freedCount,
                freedSize - baseline.freedSize,
                nativeHeapSize - baseline.nativeHeapSize);
    }

    int javaHeapSize() {
        return allocSize - freedSize;
    }

    int totalHeap() {
        return javaHeapSize() + (int) nativeHeapSize;
    }

    int javaPagesInK() {
        return javaSharedPages + javaPrivatePages;
    }

    int nativePagesInK() {
        return nativeSharedPages + nativePrivatePages;
    }
    int otherPagesInK() {
        return otherSharedPages + otherPrivatePages;
    }

    int totalPages() {
        return javaSharedPages + javaPrivatePages + nativeSharedPages +
                nativePrivatePages + otherSharedPages + otherPrivatePages;
    }

    /**
     * Was this information available?
     */
    boolean isAvailable() {
        return nativeSharedPages != -1;
    }

    /**
     * Measures baseline memory usage.
     */
    static MemoryUsage baseline() {
        return forClass(null);
    }

    private static final String CLASS_PATH = "-Xbootclasspath"
            + ":/system/framework/core.jar"
            + ":/system/framework/ext.jar"
            + ":/system/framework/framework.jar"
            + ":/system/framework/framework-tests.jar"
            + ":/system/framework/services.jar"
            + ":/system/framework/loadclass.jar";

    private static final String[] GET_DIRTY_PAGES = {
        "adb", "shell", "dalvikvm", CLASS_PATH, "LoadClass" };

    /**
     * Measures memory usage for the given class.
     */
    static MemoryUsage forClass(String className) {
        MeasureWithTimeout measurer = new MeasureWithTimeout(className);

        new Thread(measurer).start();

        synchronized (measurer) {
            if (measurer.memoryUsage == null) {
                // Wait up to 10s.
                try {
                    measurer.wait(30000);
                } catch (InterruptedException e) {
                    System.err.println("Interrupted waiting for measurement.");
                    e.printStackTrace();
                    return NOT_AVAILABLE;
                }

                // If it's still null.
                if (measurer.memoryUsage == null) {
                    System.err.println("Timed out while measuring "
                            + className + ".");
                    return NOT_AVAILABLE;
                }
            }

            System.err.println("Got memory usage for " + className + ".");
            return measurer.memoryUsage;
        }
    }

    static class MeasureWithTimeout implements Runnable {

        final String className;
        MemoryUsage memoryUsage = null;

        MeasureWithTimeout(String className) {
            this.className = className;
        }

        public void run() {
            MemoryUsage measured = measure();

            synchronized (this) {
                memoryUsage = measured;
                notifyAll();
            }
        }

        private MemoryUsage measure() {
            String[] commands = GET_DIRTY_PAGES;
            if (className != null) {
                List<String> commandList = new ArrayList<String>(
                        GET_DIRTY_PAGES.length + 1);
                commandList.addAll(Arrays.asList(commands));
                commandList.add(className);
                commands = commandList.toArray(new String[commandList.size()]);
            }

            try {
                final Process process = Runtime.getRuntime().exec(commands);

                final InputStream err = process.getErrorStream();

                // Send error output to stderr.
                Thread errThread = new Thread() {
                    @Override
                    public void run() {
                        copy(err, System.err);
                    }
                };
                errThread.setDaemon(true);
                errThread.start();

                BufferedReader in = new BufferedReader(
                        new InputStreamReader(process.getInputStream()));
                String line = in.readLine();
                if (line == null || !line.startsWith("DECAFBAD,")) {
                    System.err.println("Got bad response for " + className
                            + ": " + line + "; command was " + Arrays.toString(commands));
                    errorCount += 1;
                    return NOT_AVAILABLE;
                }

                in.close();
                err.close();
                process.destroy();

                return new MemoryUsage(line);
            } catch (IOException e) {
                System.err.println("Error getting stats for "
                        + className + ".");
                e.printStackTrace();
                return NOT_AVAILABLE;
            }
        }

    }

    /**
     * Copies from one stream to another.
     */
    private static void copy(InputStream in, OutputStream out) {
        byte[] buffer = new byte[1024];
        int read;
        try {
            while ((read = in.read(buffer)) > -1) {
                out.write(buffer, 0, read);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /** Measures memory usage information and stores it in the model. */
    public static void main(String[] args) throws IOException,
            ClassNotFoundException {
        Root root = Root.fromFile(args[0]);
        root.baseline = baseline();
        for (LoadedClass loadedClass : root.loadedClasses.values()) {
            if (loadedClass.systemClass) {
                loadedClass.measureMemoryUsage();
            }
        }
        root.toFile(args[0]);
    }
}


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

import javax.annotation.PostConstruct;
import javax.inject.Inject;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
import org.apache.isis.applib.fixturescripts.FixtureScripts;

/**
 * Installs security seed data on application startup.
 */
@DomainService(nature = NatureOfService.DOMAIN)
public class EstatioSecurityModuleSeedService {

    @PostConstruct
    public void init() {

        if(System.getProperty("isis.headless") != null) {
            return;
        }

        fixtureScripts.runFixtureScript(new EstatioSecurityModuleSeedFixture(), null);
    }

    @Inject
    FixtureScripts fixtureScripts;

}


menu "STMicroelectronics STM32 SOC audio support"

config SND_SOC_STM32_SAI
	tristate "STM32 SAI interface (Serial Audio Interface) support"
	depends on (ARCH_STM32 && OF) || COMPILE_TEST
	depends on SND_SOC
	select SND_SOC_GENERIC_DMAENGINE_PCM
	select REGMAP_MMIO
	help
	  Say Y if you want to enable SAI for STM32

config SND_SOC_STM32_I2S
	tristate "STM32 I2S interface (SPI/I2S block) support"
	depends on (ARCH_STM32 && OF) || COMPILE_TEST
	depends on SND_SOC
	select SND_SOC_GENERIC_DMAENGINE_PCM
	select REGMAP_MMIO
	help
	  Say Y if you want to enable I2S for STM32

config SND_SOC_STM32_SPDIFRX
	tristate "STM32 S/PDIF receiver (SPDIFRX) support"
	depends on (ARCH_STM32 && OF) || COMPILE_TEST
	depends on SND_SOC
	select SND_SOC_GENERIC_DMAENGINE_PCM
	select REGMAP_MMIO
	select SND_SOC_SPDIF
	help
	  Say Y if you want to enable S/PDIF capture for STM32

config SND_SOC_STM32_DFSDM
	tristate "SoC Audio support for STM32 DFSDM"
	depends on ARCH_STM32 || COMPILE_TEST
	depends on SND_SOC
	depends on STM32_DFSDM_ADC
	select SND_SOC_GENERIC_DMAENGINE_PCM
	select SND_SOC_DMIC
	select IIO_BUFFER_CB
	help
	  Select this option to enable the STM32 Digital Filter
	  for Sigma Delta Modulators (DFSDM) driver used
	  in various STM32 series for digital microphone capture.
endmenu


.enable_plugin_chosen() when(@enable-plugin-chosen = true) {

.chosen-container + .help-inline {
 vertical-align:middle;
}

//chosen select boxes -- replace icons with FontAwesome
/**
.chosen-select {
  display: inline !important; //for validation plugin to work it must be displayed
  visibility: hidden;
  opacity: 0;
  position: absolute;
  z-index: -1;
  width: 0;
  height: 0;
  border-width: 0;
}
*/
.chosen-container , [class*="chosen-container"]{
  vertical-align: middle;
  > .chosen-single {
	line-height: 28px;
	height: 32px;
	box-shadow: none;
	background: #FAFAFA;
  }
}

.chosen-choices {
  box-shadow:none !important;
}
.chosen-container-single .chosen-single abbr {
  background: none;
}
.chosen-container-single .chosen-single abbr:after {
  content:"\f00d";
  display: inline-block;
  color:#888;
  font-family: FontAwesome;
  font-size: @base-font-size;

  position: absolute;
  right: 0;
  top: -7px;
}
.chosen-container-single .chosen-single abbr:hover:after {
  color:#464646;
}
.chosen-container-single.chosen-disabled .chosen-single abbr:hover:after {
  color:#464646;
}

.chosen-single div b {
	 background: none !important;
	 &:before {
		content: "\f0d7";
		display: inline-block;

		color: #888;
		font-family: FontAwesome;
		font-size: @base-font-size - 1;

		position: relative;
		top: -1px;
		left: 1px;
	 }
}
.chosen-container-active.chosen-with-drop .chosen-single div b:before {
	content:"\f0d8";
}

.chosen-container-single {
  .chosen-search {
	 position:relative;
	 input[type="text"] {
		background:none;
		border-radius:0;
		line-height:28px;
		height:28px;
	 }
	 &:after{
		content:"\f002";
		display:inline-block;

		color: #888;
		font-family: FontAwesome;
		font-size: @base-font-size + 1;

		position:absolute;
		top:8px;
		right:12px;
	}
  }
}

.chosen-container-multi .chosen-choices li.search-field input[type="text"] {
	height:25px;
}
.chosen-container-multi .chosen-choices li.search-choice {
	line-height: 16px;
	padding-bottom: 4px;
}

.chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
   background:none;

  &:before {
	  content:"\f00d";
	  display: inline-block;
	  color:#888;
	  font-family:FontAwesome;
	  font-size: @base-font-size;

	  position: absolute;
	  right: 2px;
	  top: -1px;
  }
  &:hover {
	text-decoration:none;
  }
  &:hover:before {
	color:#464646;
  }
}
.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close:before {
  color:#464646;
}

.chosen-container .chosen-results-scroll-down ,
.chosen-container .chosen-results-scroll-up {
  span {
	background: none;
	&:before{
	  content: "\f0d7";
	  display: inline-block;

	  color: #888;
	  font-family: FontAwesome;
	  font-size: @base-font-size - 1;

	  position: relative;
	  top: -1px;
	  left: 1px;
	}
  }

}
.chosen-container .chosen-results-scroll-up span:before {
  content:"\f0d8";
}
.chosen-container-active .chosen-single-with-drop div b:before {
  content:"\f0d8";
}

.chosen-rtl .chosen-search {
  input[type="text"] {
	background: none;
  }
  &:after {
	content:"";
	display:none;
 }
 &:before {
	content: "\f002";
	display: inline-block;

	color: #888;
	font-family: FontAwesome;
	font-size: @base-font-size + 1;

	position: absolute;
	top: 9px;
	left: 12px;
 }
}

/** chosen - etc */
.chosen-container-single .chosen-single {
  border-radius:0;
}
.chosen-container .chosen-results li.highlighted {
 // background:#86BD6F;/* green */
  //background:#4492C9;/* blue1 */
  background:#316AC5;
  color: #FFF;
}
.chosen-container-single .chosen-drop {
  border-radius:0;
  border-bottom:3px solid #4492C9;
  border-color:#4492C9;
}
.chosen-single.chosen-single-with-drop  , .chosen-container-active .chosen-single{
  border-color:#4492C9;
}

.chosen-single {
	.form-group.has-error & {
		border-color:@error-state-border !important;
	}
	.form-group.has-info & {
		border-color:@info-state-border !important;
	}
	.form-group.has-warning & {
		border-color:@warning-state-border !important;
	}
	.form-group.has-success & {
		border-color:@success-state-border !important;
	}
}

//.chosen-rtl .chosen-container-single-nosearch .chosen-search { left: -9999px; }
//.chosen-rtl .chosen-drop { left: -9999px; }

//     .modal .chosen-rtl .chosen-container-single-nosearch .chosen-search { left: 9999px; }
//		.modal .chosen-rtl .chosen-drop { left: 9999px; }
//.rtl .modal .chosen-container.chosen-with-drop .chosen-drop { left: auto; right: 0; }

.chosen-container-active.chosen-with-drop .chosen-single {
	border-color:#4492C9;
}

.chosen-container .chosen-drop {
 display: none;
}
.chosen-container.chosen-with-drop .chosen-drop {
 left: auto;
 right: auto;
 display: block;
}

@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 144dpi)  {
  .chosen-rtl .chosen-search input[type="text"], .chosen-container-single .chosen-single abbr, .chosen-container-single .chosen-single div b, .chosen-container-single .chosen-search input[type="text"], .chosen-container-multi .chosen-choices li.search-choice .search-choice-close, .chosen-container .chosen-results-scroll-down span, .chosen-container .chosen-results-scroll-up span {
      background-image: none !important;
      background-repeat: no-repeat !important;
      background-size: auto !important;
  }
}

//a second style (like tag inpit)
.enable_plugin_chosen_style_2() when(@enable-plugin-chosen-style-2 = true) {
.tag-input-style + .chosen-container-multi {
	.chosen-choices li.search-choice {
		background-image:none;
		background-color:@tag-bg;
		color: #FFFFFF;
		display: inline-block;
		font-size: @base-font-size;
		font-weight: normal;
		margin-bottom: 3px;
		margin-right: 3px;
		padding: 6px 22px 7px 9px;
		position: relative;
		text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15);
		transition: all 0.2s ease 0s;
		vertical-align: baseline;
		white-space: nowrap;

		border:none;
		.box-shadow(none);
		.border-radius(0);

		.search-choice-close {
			position:absolute;
			top:0; bottom:0;
			right:0;
			width:18px;
			height:auto;
			line-height:25px;
			text-align:center;

			&:before {
				color:#FFF;
				position:static;
				font-size: @base-font-size - 2;
			}

			&:hover {
				background-color:rgba(0,0,0,0.2);
				&:before {
					color:#FFF;
				}
			}
		}
	}
}
.tag-input-style + .chosen-container-multi.chosen-rtl {
	.chosen-choices li.search-choice {
		padding: 6px 9px 7px 22px;
		margin-left: 0;
		margin-right:3px !important;//to override .RTL's

		.search-choice-close {
			right:auto;
			left:0;
		}
	}
}
}
.enable_plugin_chosen_style_2();

}
.enable_plugin_chosen();


Title: Openbox 3.4.11 发布
Date: 2010-02-09 09:38
Author: toy
Category: Apps
Tags: Openbox, WM
Slug: openbox-3411-released

轻巧型窗口管理器 Openbox 已发布 3.4.11 版本。Openbox 3.4.11 除了修正先前版本中的缺陷外，也包括其他一些改进，比如改善了菜单行为、Alt-Tab 对话框循环聚焦等等。

<!-- PELICAN_END_SUMMARY -->

[![openbox](http://i.linuxtoy.org/i/2008/07/openbox-desktop-thumb.png)](http://i.linuxtoy.org/i/2008/07/openbox-desktop.png)

你可以查阅 [Changelog](http://openbox.org/wiki/Openbox:Changelog) 以了解此版本的详细变动情况。Openbox 3.4.11 的源代码可从[这里下载](http://openbox.org/wiki/Openbox:Download)。


/*=============================================================================
    Copyright (c) 2001-2011 Joel de Guzman

    Distributed under 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)
==============================================================================*/
#if !defined(FUSION_SEQUENCE_VIEW_FILTER_VIEW_10022005_0608)
#define FUSION_SEQUENCE_VIEW_FILTER_VIEW_10022005_0608

#include <boost/fusion/support/config.hpp>
#include <boost/fusion/view/filter_view/filter_view.hpp>
#include <boost/fusion/view/filter_view/filter_view_iterator.hpp>

#endif


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

/*<imports>*/
import java.io.*;
import java.nio.*;
import java.util.*;
import org.robovm.objc.*;
import org.robovm.objc.annotation.*;
import org.robovm.objc.block.*;
import org.robovm.rt.*;
import org.robovm.rt.annotation.*;
import org.robovm.rt.bro.*;
import org.robovm.rt.bro.annotation.*;
import org.robovm.rt.bro.ptr.*;
import org.robovm.apple.foundation.*;
import org.robovm.apple.corefoundation.*;
import org.robovm.apple.dispatch.*;
import org.robovm.apple.coreanimation.*;
import org.robovm.apple.coreimage.*;
import org.robovm.apple.coregraphics.*;
import org.robovm.apple.coreaudio.*;
import org.robovm.apple.coremedia.*;
import org.robovm.apple.corevideo.*;
import org.robovm.apple.mediatoolbox.*;
import org.robovm.apple.audiotoolbox.*;
/*</imports>*/

/*<javadoc>*/

/*</javadoc>*/
/*<annotations>*/@Library("AVFoundation") @NativeClass/*</annotations>*/
/*<visibility>*/public/*</visibility>*/ class /*<name>*/AVAssetWriterInput/*</name>*/
    extends /*<extends>*/NSObject/*</extends>*/
    /*<implements>*//*</implements>*/ {

    /*<ptr>*/public static class AVAssetWriterInputPtr extends Ptr<AVAssetWriterInput, AVAssetWriterInputPtr> {}/*</ptr>*/
    /*<bind>*/static { ObjCRuntime.bind(AVAssetWriterInput.class); }/*</bind>*/
    /*<constants>*//*</constants>*/
    /*<constructors>*/
    protected AVAssetWriterInput() {}
    protected AVAssetWriterInput(Handle h, long handle) { super(h, handle); }
    protected AVAssetWriterInput(SkipInit skipInit) { super(skipInit); }
    /*</constructors>*/
    public AVAssetWriterInput(AVMediaType mediaType, AVAudioSettings outputSettings) {
        super((SkipInit)null);
        initObject(init(mediaType, outputSettings.getDictionary()));
    }
    /**
     * @since Available in iOS 6.0 and later.
     */
    public AVAssetWriterInput(AVMediaType mediaType, AVAudioSettings outputSettings, CMFormatDescription sourceFormatHint) {
        super((SkipInit)null);
        initObject(init(mediaType, outputSettings.getDictionary(), sourceFormatHint));
    }
    public AVAssetWriterInput(AVMediaType mediaType, AVVideoSettings outputSettings) {
        super((SkipInit)null);
        initObject(init(mediaType, outputSettings.getDictionary()));
    }
    /**
     * @since Available in iOS 6.0 and later.
     */
    public AVAssetWriterInput(AVMediaType mediaType, AVVideoSettings outputSettings, CMFormatDescription sourceFormatHint) {
        super((SkipInit)null);
        initObject(init(mediaType, outputSettings.getDictionary(), sourceFormatHint));
    }

    public AVAudioSettings getOutputAudioSettings() {
        return new AVAudioSettings(getOutputSettings());
    }
    public AVVideoSettings getOutputVideoSettings() {
        return new AVVideoSettings(getOutputSettings());
    }
    /*<properties>*/
    @Property(selector = "mediaType")
    public native AVMediaType getMediaType();
    @Property(selector = "outputSettings")
    protected native NSDictionary<NSString, ?> getOutputSettings();
    @Property(selector = "sourceFormatHint")
    public native CMFormatDescription getSourceFormatHint();
    @Property(selector = "metadata")
    public native NSArray<AVMetadataItem> getMetadata();
    @Property(selector = "setMetadata:")
    public native void setMetadata(NSArray<AVMetadataItem> v);
    @Property(selector = "isReadyForMoreMediaData")
    public native boolean isReadyForMoreMediaData();
    @Property(selector = "expectsMediaDataInRealTime")
    public native boolean expectsMediaDataInRealTime();
    @Property(selector = "setExpectsMediaDataInRealTime:")
    public native void setExpectsMediaDataInRealTime(boolean v);
    @Property(selector = "languageCode")
    public native String getLanguageCode();
    @Property(selector = "setLanguageCode:")
    public native void setLanguageCode(String v);
    @Property(selector = "extendedLanguageTag")
    public native String getExtendedLanguageTag();
    @Property(selector = "setExtendedLanguageTag:")
    public native void setExtendedLanguageTag(String v);
    @Property(selector = "naturalSize")
    public native @ByVal CGSize getNaturalSize();
    @Property(selector = "setNaturalSize:")
    public native void setNaturalSize(@ByVal CGSize v);
    @Property(selector = "transform")
    public native @ByVal CGAffineTransform getTransform();
    @Property(selector = "setTransform:")
    public native void setTransform(@ByVal CGAffineTransform v);
    @Property(selector = "preferredVolume")
    public native float getPreferredVolume();
    @Property(selector = "setPreferredVolume:")
    public native void setPreferredVolume(float v);
    @Property(selector = "marksOutputTrackAsEnabled")
    public native boolean marksOutputTrackAsEnabled();
    @Property(selector = "setMarksOutputTrackAsEnabled:")
    public native void setMarksOutputTrackAsEnabled(boolean v);
    @Property(selector = "mediaTimeScale")
    public native int getMediaTimeScale();
    @Property(selector = "setMediaTimeScale:")
    public native void setMediaTimeScale(int v);
    @Property(selector = "preferredMediaChunkDuration")
    public native @ByVal CMTime getPreferredMediaChunkDuration();
    @Property(selector = "setPreferredMediaChunkDuration:")
    public native void setPreferredMediaChunkDuration(@ByVal CMTime v);
    @Property(selector = "preferredMediaChunkAlignment")
    public native @MachineSizedSInt long getPreferredMediaChunkAlignment();
    @Property(selector = "setPreferredMediaChunkAlignment:")
    public native void setPreferredMediaChunkAlignment(@MachineSizedSInt long v);
    @Property(selector = "sampleReferenceBaseURL")
    public native NSURL getSampleReferenceBaseURL();
    @Property(selector = "setSampleReferenceBaseURL:")
    public native void setSampleReferenceBaseURL(NSURL v);
    /**
     * @since Available in iOS 11.0 and later.
     */
    @Property(selector = "mediaDataLocation")
    public native AVAssetWriterInputMediaDataLocation getMediaDataLocation();
    /**
     * @since Available in iOS 11.0 and later.
     */
    @Property(selector = "setMediaDataLocation:")
    public native void setMediaDataLocation(AVAssetWriterInputMediaDataLocation v);
    @Property(selector = "performsMultiPassEncodingIfSupported")
    public native boolean performsMultiPassEncodingIfSupported();
    @Property(selector = "setPerformsMultiPassEncodingIfSupported:")
    public native void setPerformsMultiPassEncodingIfSupported(boolean v);
    @Property(selector = "canPerformMultiplePasses")
    public native boolean canPerformMultiplePasses();
    @Property(selector = "currentPassDescription")
    public native AVAssetWriterInputPassDescription getCurrentPassDescription();
    /*</properties>*/
    /*<members>*//*</members>*/
    /*<methods>*/
    @Method(selector = "initWithMediaType:outputSettings:")
    protected native @Pointer long init(AVMediaType mediaType, NSDictionary<NSString, ?> outputSettings);
    @Method(selector = "initWithMediaType:outputSettings:sourceFormatHint:")
    protected native @Pointer long init(AVMediaType mediaType, NSDictionary<NSString, ?> outputSettings, CMFormatDescription sourceFormatHint);
    @WeaklyLinked
    @Method(selector = "requestMediaDataWhenReadyOnQueue:usingBlock:")
    public native void requestMediaDataWhenReady(DispatchQueue queue, @Block Runnable block);
    @Method(selector = "appendSampleBuffer:")
    public native boolean appendSampleBuffer(CMSampleBuffer sampleBuffer);
    @Method(selector = "markAsFinished")
    public native void markAsFinished();
    @Method(selector = "canAddTrackAssociationWithTrackOfInput:type:")
    public native boolean canAddTrackAssociation(AVAssetWriterInput input, AVTrackAssociationType trackAssociationType);
    @Method(selector = "addTrackAssociationWithTrackOfInput:type:")
    public native void addTrackAssociation(AVAssetWriterInput input, AVTrackAssociationType trackAssociationType);
    @WeaklyLinked
    @Method(selector = "respondToEachPassDescriptionOnQueue:usingBlock:")
    public native void respondToEachPassDescriptionOnQueue(DispatchQueue queue, @Block Runnable block);
    @Method(selector = "markCurrentPassAsFinished")
    public native void markCurrentPassAsFinished();
    /*</methods>*/
}


/*******************************
    User Variable Overrides
*******************************/


MIT License

Copyright (c) 2017 Guillaume Papin

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


import { of } from 'rxjs';
import { filter, switchMap, map, tap, ignoreElements } from 'rxjs/operators';
import { combineEpics, ofType } from 'redux-observable';
import store from 'store';

import {
  types,
  storedCodeFound,
  noStoredCodeFound,
  isCodeLockedSelector,
  challengeFilesSelector,
  challengeMetaSelector
} from './';

import { types as appTypes } from '../../../redux';

import { setContent, isPoly } from '../../../../../utils/polyvinyl';

import { createFlashMessage } from '../../../components/Flash/redux';

const legacyPrefixes = [
  'Bonfire: ',
  'Waypoint: ',
  'Zipline: ',
  'Basejump: ',
  'Checkpoint: '
];
const legacyPostfix = 'Val';

function getCode(id) {
  const code = store.get(id);
  return code ? code : null;
}

function getLegacyCode(legacy) {
  const key = legacy + legacyPostfix;
  let code = null;
  const maybeCode = store.get(key);
  if (maybeCode) {
    code = '' + maybeCode;
    store.remove(key);
    return code;
  }
  return legacyPrefixes.reduce((code, prefix) => {
    if (code) {
      return code;
    }
    return store.get(prefix + key);
  }, null);
}

function legacyToFile(code, files, key) {
  if (isFilesAllPoly(files)) {
    return { [key]: setContent(code, files[key]) };
  }
  return false;
}

function isFilesAllPoly(files) {
  return Object.keys(files)
    .map(key => files[key])
    .every(file => isPoly(file));
}

function clearCodeEpic(action$, state$) {
  return action$.pipe(
    ofType(appTypes.submitComplete, types.resetChallenge),
    tap(() => {
      const { id } = challengeMetaSelector(state$.value);
      store.remove(id);
    }),
    ignoreElements()
  );
}

function saveCodeEpic(action$, state$) {
  return action$.pipe(
    ofType(types.executeChallenge, types.saveEditorContent),
    // do not save challenge if code is locked
    filter(() => !isCodeLockedSelector(state$.value)),
    map(action => {
      const state = state$.value;
      const { id } = challengeMetaSelector(state);
      const files = challengeFilesSelector(state);
      try {
        store.set(id, files);
        // Possible fileType values: indexhtml indexjs indexjsx
        // The files Object always has one of these as the first/only attribute
        const fileType = Object.keys(files)[0];
        if (store.get(id)[fileType].contents !== files[fileType].contents) {
          throw Error('Failed to save to localStorage');
        }
        return action;
      } catch (e) {
        return { ...action, error: true };
      }
    }),
    ofType(types.saveEditorContent),
    switchMap(({ error }) =>
      of(
        createFlashMessage({
          type: error ? 'warning' : 'success',
          message: error
            ? // eslint-disable-next-line max-len
              "Oops, your code did not save, your browser's local storage may be full."
            : "Saved! Your code was saved to your browser's local storage."
        })
      )
    )
  );
}

function loadCodeEpic(action$, state$) {
  return action$.pipe(
    ofType(types.challengeMounted),
    filter(() => {
      const files = challengeFilesSelector(state$.value);
      return Object.keys(files).length > 0;
    }),
    switchMap(({ payload: id }) => {
      let finalFiles;
      const state = state$.value;
      const challenge = challengeMetaSelector(state);
      const files = challengeFilesSelector(state);
      const fileKeys = Object.keys(files);
      const invalidForLegacy = fileKeys.length > 1;
      const { title: legacyKey } = challenge;

      const codeFound = getCode(id);
      if (codeFound && isFilesAllPoly(codeFound)) {
        finalFiles = {
          ...fileKeys
            .map(key => files[key])
            .reduce(
              (files, file) => ({
                ...files,
                [file.key]: {
                  ...file,
                  contents: codeFound[file.key]
                    ? codeFound[file.key].contents
                    : file.contents,
                  editableContents: codeFound[file.key]
                    ? codeFound[file.key].editableContents
                    : file.editableContents,
                  editableRegionBoundaries: codeFound[file.key]
                    ? codeFound[file.key].editableRegionBoundaries
                    : file.editableRegionBoundaries
                }
              }),
              {}
            )
        };
      } else {
        const legacyCode = getLegacyCode(legacyKey);
        if (legacyCode && !invalidForLegacy) {
          finalFiles = legacyToFile(legacyCode, files, fileKeys[0]);
        }
      }
      if (finalFiles) {
        return of(storedCodeFound(finalFiles));
      }
      return of(noStoredCodeFound());
    })
  );
}

export default combineEpics(saveCodeEpic, loadCodeEpic, clearCodeEpic);


const webpackConfig = require('./webpack/config.test');
module.exports = config => {
  config.set({
    basePath: '',
    frameworks: ['source-map-support', 'mocha', 'sinon'],
    files: [
      'src/tests.js',
    ],
    exclude: [],
    preprocessors: {
      'src/tests.js': ['webpack', 'sourcemap'],
    },
    reporters: ['mocha', 'coverage', 'coveralls'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: [/* 'Chrome', */'PhantomJS'],
    singleRun: false,
    webpack: webpackConfig,
    webpackMiddleware: {
      noInfo: true,
    },
    plugins: [
      'karma-chai',
      'karma-chrome-launcher',
      'karma-coverage',
      'karma-coveralls',
      'karma-mocha',
      'karma-mocha-reporter',
      'karma-phantomjs-launcher',
      'karma-sinon',
      'karma-source-map-support',
      'karma-sourcemap-loader',
      'karma-webpack',
    ],
    coverageReporter: {
      type: 'lcov', // lcov or lcovonly are required for generating lcov.info files
      dir: 'coverage/',
    },
  });
};


<Page
    x:Class="UITests.Windows_UI_Input.GestureRecognizerTests.Manipulation_WithNestedElement"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:UITests.Windows_UI_Input.GestureRecognizerTests"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid>
		<Grid.ColumnDefinitions>
			<ColumnDefinition Width="Auto" />
			<ColumnDefinition />
		</Grid.ColumnDefinitions>

		<Border
			Background="DeepPink"
			Margin="10"
			Width="300"
			Height="300"
			HorizontalAlignment="Left"
			VerticalAlignment="Top"
			ManipulationMode="All"
			ManipulationStarted="OnParentManipStarted"
			ManipulationDelta="OnParentManipDelta"
			ManipulationCompleted="OnParentManipCompleted">
			<Border
				x:Name="_target"
				Width="100"
				Height="100"
				VerticalAlignment="Center"
				HorizontalAlignment="Center"
				Background="DeepSkyBlue"
				PointerPressed="OnChildPointerPressed"
				PointerMoved="OnChildPointerMoved"
				PointerReleased="OnChildPointerReleased">
				<TextBlock Text="The touch target" />
			</Border>
		</Border>

		<StackPanel Grid.Column="1">
			<TextBlock
				Text="Drag and drop the blue square, you should get a mix of ''[PARENT] Manip delta'' ** AND ** ''[CHILD] Pointer moved''."
				TextWrapping="Wrap"/>
			<TextBlock
				x:Name="_result"
				MaxHeight="600"
				TextWrapping="Wrap"/>
		</StackPanel>
	</Grid>
</Page>


<!DOCTYPE html>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>OpenUI5 SDK - Demo Kit</title>

    <link rel="stylesheet" href="redirect-page-resources/css/style.css">
    <link rel="icon" href="redirect-page-resources/img/favicon.png">

				Documentation

				API Reference

				Samples

				Demo Apps

				Tools

Discover New Enterprise-Grade Horizons

				<button id="get-started-button" class="headline-button" onclick="redirectTo('https://ui5.sap.com/#/topic/8b49fc198bf04b2d9800fc37fecbb218')">Get Started with UI5</button>
				<button id="download-button" class="headline-button" onclick="redirectTo('https://tools.hana.ondemand.com/#sapui5')">Download</button>

We’ve moved the Demo Kit to the cloud to make sure that the latest version is always available to you. Go to http://ui5.sap.com directly or select a category and you will be redirected automatically. For options to work offline with SAPUI5, select Download.

Key Features

							Responsive Across Browsers and Devices

No need to worry about device specifics! UI5 apps run on smartphones, tablets, and desktops. The UI controls automatically adapt themselves to each device's capabilities and make the most of the available real estate.

							Powerful Development Concepts

The UI5 core offers a solid foundation that simplifies your work by managing many aspects of modern development behind the scenes. It comes with built-in support for architectural concepts like MVC, two-way data binding, and routing.

Includes standards like MVC and various data-binding types

Choose between different view formats (XML, HTML, JavaScript, JSON)

Binding with OData, JSON, XML and other data formats

Built-in support tool for exploring the object tree and binding status

							Enterprise-Ready Web Toolkit

Created by professionals, for modern developers building state of the art web applications. It comes with all features needed to cover most current application requirements, with standards high enough to be delivered in standard SAP solutions.

Translation and internationalization support

Extensibility concepts at code and application level

High Contrast theme to aid visually impaired users

							Award-Winning SAP Fiori Design in Action

UI5 applications benefit from a consistent design language and predefined UX patterns across all frontend features. Use a predefined theme or try our online theming tool to create a custom theme.

Choose Your Scenario

							SAPUI5 on SAP Cloud Platform

Sign up for the free SAP Cloud Platform developer edition to test the platform and build cloud-based UI5 apps.

Easy-to-use development environment with SAP Web IDE

Free trial for development use

							SAPUI5 On-Premise

SAPUI5 is part of the user interface technologies in SAP HANA, NetWeaver ABAP or Java systems.

Ready to use for SAP Customers

Integrates with existing system landscapes

							OpenUI5 - Free and Open Source

Try the open source variant of UI5. It contains all core UI5 features and is available on GitHub under the Apache 2.0 license.

Supported by the open source community

Managed on GitHub - contributions welcome!

							UI5 on Content Delivery Network

Develop and run UI5 apps with the flexibility of a robust CDN. Files are loaded from the location closest to the user for optimal performance.

Multi-version CDN to maintain a custom lifecycle

For any on-premise and cloud development scenario

Join the Community

						SAPUI5 Dev Center

						StackOverflow

						YouTube

						Twitter

				Legal Disclosure
				Privacy
				Terms of Use


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

set -eux -o pipefail

TMP=$(mktemp -d)

function finish {
  rm -rf "$TMP"
}
trap finish EXIT

pushd "$TMP"
mkdir -p grpc/binarylog/grpc_binarylog_v1
curl https://raw.githubusercontent.com/grpc/grpc-proto/master/grpc/binlog/v1/binarylog.proto > grpc/binarylog/grpc_binarylog_v1/binarylog.proto

protoc --go_out=plugins=grpc,paths=source_relative:. -I. grpc/binarylog/grpc_binarylog_v1/*.proto
popd
rm -f ./grpc_binarylog_v1/*.pb.go
cp "$TMP"/grpc/binarylog/grpc_binarylog_v1/*.pb.go ../../binarylog/grpc_binarylog_v1/


idx	label	predict	radius	correct	time
0	3	-1	0.0000	0	0:01:32.474831
20	7	9	0.1899	0	0:01:32.485831
40	4	-1	0.0000	0	0:01:32.562544
60	7	7	1.0474	1	0:01:32.463997
80	8	8	1.4204	1	0:01:32.496361
100	4	-1	0.0000	0	0:01:32.478554
120	8	8	1.5610	1	0:01:32.499009
140	6	2	0.3664	0	0:01:32.471010
160	2	2	1.0595	1	0:01:32.447552
180	0	0	1.0284	1	0:01:32.545054
200	5	3	1.6362	0	0:01:32.485557
220	7	7	3.0977	1	0:01:32.381882
240	1	1	2.8499	1	0:01:32.530367
260	8	8	0.0720	1	0:01:32.514091
280	9	9	2.5259	1	0:01:32.469919
300	6	6	0.8423	1	0:01:32.536118
320	3	5	0.7945	0	0:01:32.559977
340	2	4	0.5066	0	0:01:32.511568
360	9	6	0.0855	0	0:01:32.517002
380	6	6	1.0626	1	0:01:32.473435
400	9	9	2.1827	1	0:01:32.478353
420	4	6	1.2290	0	0:01:32.498099
440	1	1	1.0337	1	0:01:32.452686
460	5	5	1.5599	1	0:01:32.514686
480	8	9	1.5046	0	0:01:32.456436
500	4	6	0.6208	0	0:01:32.495659
520	5	5	0.9393	1	0:01:32.454726
540	1	9	0.1409	0	0:01:32.446531
560	0	0	1.0052	1	0:01:32.440044
580	4	6	1.5061	0	0:01:32.430411
600	8	8	0.8682	1	0:01:32.542098
620	7	-1	0.0000	0	0:01:32.536517
640	5	3	1.1439	0	0:01:32.555773
660	9	9	2.6310	1	0:01:32.520186
680	9	-1	0.0000	0	0:01:32.449278
700	7	7	1.8547	1	0:01:32.456222
720	4	-1	0.0000	0	0:01:32.448616
740	2	5	0.1906	0	0:01:32.471897
760	3	9	0.3196	0	0:01:32.492249
780	9	9	0.7313	1	0:01:32.508971
800	7	7	2.7196	1	0:01:32.487098
820	6	-1	0.0000	0	0:01:32.469365
840	7	7	3.5252	1	0:01:32.431547
860	4	4	0.3813	1	0:01:32.516027
880	8	8	3.8115	1	0:01:32.435606
900	2	6	1.4072	0	0:01:32.520436
920	6	2	1.0900	0	0:01:32.508660
940	9	9	0.6854	1	0:01:32.412709
960	9	9	1.6707	1	0:01:32.505711
980	2	6	3.1361	0	0:01:32.466918
1000	5	5	3.0246	1	0:01:32.409499
1020	1	1	0.6729	1	0:01:32.409981
1040	7	5	2.6960	0	0:01:32.459382
1060	9	9	1.1207	1	0:01:32.435767
1080	6	6	2.0644	1	0:01:32.469512
1100	7	8	1.7795	0	0:01:32.482491
1120	5	2	0.4949	0	0:01:32.511351
1140	6	6	0.6962	1	0:01:32.497375
1160	8	8	0.4855	1	0:01:32.430720
1180	3	3	1.3266	1	0:01:32.509386
1200	8	8	0.9282	1	0:01:32.417194
1220	9	-1	0.0000	0	0:01:32.509095
1240	2	6	2.7185	0	0:01:32.535552
1260	1	9	0.8957	0	0:01:32.359261
1280	3	7	1.2342	0	0:01:32.370310
1300	4	3	0.3044	0	0:01:32.413500
1320	7	7	0.4274	1	0:01:32.437045
1340	1	1	2.1335	1	0:01:32.432734
1360	7	7	0.5776	1	0:01:32.436821
1380	4	5	1.3246	0	0:01:32.371753
1400	5	5	0.3186	1	0:01:32.387674
1420	4	7	0.6593	0	0:01:32.390386
1440	0	0	0.4173	1	0:01:32.451950
1460	6	6	0.7556	1	0:01:32.424160
1480	1	-1	0.0000	0	0:01:32.451233
1500	1	9	0.2816	0	0:01:32.489303
1520	7	7	0.3631	1	0:01:32.420853
1540	8	8	1.8869	1	0:01:32.455442
1560	7	7	3.8115	1	0:01:32.403262
1580	6	1	0.7335	0	0:01:32.405817
1600	8	9	0.3487	0	0:01:32.446013
1620	5	-1	0.0000	0	0:01:32.373860
1640	7	5	0.2775	0	0:01:32.410365
1660	3	5	0.2072	0	0:01:32.445824
1680	6	6	3.1619	1	0:01:32.481995
1700	5	2	1.8771	0	0:01:32.457879
1720	4	2	0.3958	0	0:01:32.392955
1740	1	9	0.2590	0	0:01:32.478550
1760	0	8	1.0384	0	0:01:32.486173
1780	7	-1	0.0000	0	0:01:32.509624
1800	4	8	1.0366	0	0:01:32.442238
1820	8	-1	0.0000	0	0:01:32.453762
1840	8	-1	0.0000	0	0:01:32.489308
1860	8	8	2.0270	1	0:01:32.495802
1880	1	1	1.3969	1	0:01:32.506415
1900	8	8	3.0274	1	0:01:32.443433
1920	2	2	0.0610	1	0:01:32.482664
1940	5	3	0.4784	0	0:01:32.463103
1960	2	5	1.1473	0	0:01:32.437806
1980	9	9	1.9244	1	0:01:32.456442
2000	1	6	0.3543	0	0:01:33.564835
2020	9	9	2.6663	1	0:01:33.609279
2040	0	8	2.1505	0	0:01:33.642391
2060	5	5	2.7401	1	0:01:33.683548
2080	1	1	0.6016	1	0:01:33.666272
2100	2	4	1.1456	0	0:01:33.676233
2120	4	8	1.4449	0	0:01:33.681886
2140	9	9	1.4823	1	0:01:33.681640
2160	0	8	2.3637	0	0:01:33.664103
2180	4	6	1.5887	0	0:01:33.665498
2200	0	0	2.6505	1	0:01:33.676785
2220	1	1	1.3058	1	0:01:33.686741
2240	9	9	2.6588	1	0:01:33.630242
2260	4	-1	0.0000	0	0:01:33.672303
2280	4	8	0.5723	0	0:01:33.632040
2300	3	6	0.9094	0	0:01:33.643600
2320	5	-1	0.0000	0	0:01:33.692873
2340	7	7	1.5863	1	0:01:33.655166
2360	7	7	1.0398	1	0:01:33.676681
2380	8	8	1.3827	1	0:01:33.657282
2400	0	0	1.1417	1	0:01:33.651338
2420	8	1	0.0829	0	0:01:33.648579
2440	7	7	0.0441	1	0:01:33.668506
2460	9	9	0.7023	1	0:01:33.666234
2480	8	8	1.7181	1	0:01:33.625685
2500	4	-1	0.0000	0	0:01:33.577229
2520	1	8	0.1003	0	0:01:33.571176
2540	2	3	0.8635	0	0:01:33.641519
2560	7	-1	0.0000	0	0:01:33.570948
2580	6	4	0.3306	0	0:01:33.588880
2600	8	8	3.1163	1	0:01:33.643942
2620	1	1	0.3416	1	0:01:33.586448
2640	7	7	1.7354	1	0:01:33.627320
2660	3	2	0.1282	0	0:01:33.642208
2680	0	0	3.0802	1	0:01:33.609903
2700	9	9	0.3323	1	0:01:33.670182
2720	3	-1	0.0000	0	0:01:33.644152
2740	1	1	1.7937	1	0:01:33.676493
2760	2	6	1.3633	0	0:01:33.630535
2780	7	7	2.1824	1	0:01:33.588819
2800	4	6	1.2529	0	0:01:33.630426
2820	6	6	3.2164	1	0:01:33.658108
2840	3	3	3.3869	1	0:01:33.674845
2860	5	7	0.5159	0	0:01:33.654395
2880	4	4	1.8318	1	0:01:33.658128
2900	3	5	2.2310	0	0:01:33.676712
2920	2	2	0.0230	1	0:01:33.641491
2940	3	0	0.2725	0	0:01:33.685660
2960	9	9	0.5819	1	0:01:33.647672
2980	8	1	0.9173	0	0:01:33.665256
3000	5	5	3.6896	1	0:01:33.679708
3020	1	1	1.5741	1	0:01:33.675883
3040	7	7	3.8115	1	0:01:33.675393
3060	7	7	2.6242	1	0:01:33.696126
3080	1	-1	0.0000	0	0:01:33.640080
3100	0	0	2.5556	1	0:01:33.613163
3120	4	6	2.7825	0	0:01:33.638466
3140	8	8	1.5154	1	0:01:33.641464
3160	6	4	1.4701	0	0:01:33.651050
3180	3	-1	0.0000	0	0:01:33.669950
3200	5	7	0.7303	0	0:01:33.650340
3220	3	3	0.2501	1	0:01:33.642773
3240	4	-1	0.0000	0	0:01:33.610208
3260	7	7	0.8775	1	0:01:33.640759
3280	3	5	1.0284	0	0:01:33.650093
3300	4	4	0.1219	1	0:01:33.608501
3320	2	7	0.8780	0	0:01:33.658492
3340	6	6	0.6731	1	0:01:33.644877
3360	4	6	1.9876	0	0:01:33.655169
3380	8	8	0.2255	1	0:01:33.597908
3400	6	4	0.4051	0	0:01:33.674587
3420	5	6	1.2000	0	0:01:33.688505
3440	2	9	0.5626	0	0:01:33.636780
3460	1	1	1.8715	1	0:01:33.647863
3480	2	2	3.8115	1	0:01:33.674705
3500	1	1	1.0662	1	0:01:33.629704
3520	1	1	2.7960	1	0:01:33.636564
3540	6	6	0.2051	1	0:01:33.659935
3560	1	9	0.6951	0	0:01:33.638731
3580	4	1	0.5939	0	0:01:33.613734
3600	4	2	0.8836	0	0:01:33.620678
3620	0	0	0.1054	1	0:01:33.601451
3640	6	2	1.3144	0	0:01:33.631000
3660	0	8	0.9811	0	0:01:33.632556
3680	0	2	0.6572	0	0:01:33.601393
3700	3	5	1.2338	0	0:01:33.613079
3720	2	2	1.8141	1	0:01:33.617681
3740	0	0	1.3020	1	0:01:33.647320
3760	7	7	3.2708	1	0:01:33.612386
3780	4	2	0.1000	0	0:01:33.605629
3800	9	9	0.7543	1	0:01:33.672131
3820	0	0	0.9307	1	0:01:33.629551
3840	6	3	0.1974	0	0:01:33.589738
3860	7	7	2.8340	1	0:01:33.647561
3880	6	4	0.4632	0	0:01:33.599578
3900	3	-1	0.0000	0	0:01:33.577580
3920	7	-1	0.0000	0	0:01:33.608414
3940	6	6	0.8579	1	0:01:33.511797
3960	2	5	1.4060	0	0:01:33.496215
3980	9	7	0.3895	0	0:01:33.503930
4000	8	-1	0.0000	0	0:00:25.369701
4020	8	8	0.0599	1	0:00:25.381323
4040	0	0	1.7556	1	0:00:25.410872
4060	6	6	0.1112	1	0:00:25.430153
4080	1	1	0.3452	1	0:00:26.487167
4100	7	7	3.7391	1	0:00:27.378806
4120	4	0	2.1693	0	0:00:27.565167
4140	5	3	2.0867	0	0:00:27.757380
4160	5	2	0.7736	0	0:00:27.762014
4180	0	0	0.9302	1	0:00:27.748100
4200	4	2	1.2698	0	0:00:27.767985
4220	4	0	3.5252	0	0:00:28.182405
4240	7	-1	0.0000	0	0:00:27.760163
4260	8	8	0.8143	1	0:00:27.426942
4280	8	8	0.5351	1	0:00:27.151334
4300	8	8	1.9176	1	0:00:26.795403
4320	1	8	1.5518	0	0:00:26.802747
4340	0	0	0.9055	1	0:00:26.813192
4360	6	6	0.5078	1	0:00:26.805643
4380	9	9	0.9099	1	0:00:27.076720
4400	3	-1	0.0000	0	0:00:26.820912
4420	5	8	0.9148	0	0:00:27.297516
4440	2	6	1.6208	0	0:00:27.218993
4460	9	-1	0.0000	0	0:00:27.228734
4480	9	9	0.2392	1	0:00:27.230712
4500	3	-1	0.0000	0	0:00:27.231567
4520	3	6	1.8157	0	0:00:27.235620
4540	9	9	3.5913	1	0:00:27.243025
4560	1	1	1.6868	1	0:00:27.516376
4580	6	6	1.1535	1	0:00:27.781011
4600	4	7	0.8740	0	0:00:27.772862
4620	7	3	2.2671	0	0:00:27.301664
4640	2	-1	0.0000	0	0:00:27.502199
4660	7	2	0.2288	0	0:00:27.751492
4680	9	1	0.6211	0	0:00:27.761958
4700	6	-1	0.0000	0	0:00:27.768415
4720	8	8	0.9116	1	0:00:27.759757
4740	5	-1	0.0000	0	0:00:27.779598
4760	3	3	0.1394	1	0:00:27.778654
4780	0	0	0.5672	1	0:00:27.778421
4800	9	9	3.8115	1	0:00:27.776485
4820	3	-1	0.0000	0	0:00:27.779961
4840	0	0	3.1619	1	0:00:27.775133
4860	5	5	1.8988	1	0:00:27.784669
4880	0	2	1.2598	0	0:00:27.773150
4900	3	6	0.6285	0	0:00:27.757782
4920	7	7	0.3820	1	0:00:27.776401
4940	6	6	0.6917	1	0:00:27.782823
4960	4	6	0.8449	0	0:00:27.787817
4980	1	9	2.2195	0	0:00:27.777928
5000	7	7	3.5070	1	0:00:27.764948
5020	8	8	1.3558	1	0:00:27.759279
5040	3	3	0.8213	1	0:00:27.763868
5060	6	6	1.5609	1	0:00:27.775771
5080	7	7	3.0332	1	0:00:27.780955
5100	3	3	1.0424	1	0:00:27.779338
5120	9	8	0.4930	0	0:00:27.779741
5140	8	8	1.3310	1	0:00:27.766230
5160	0	-1	0.0000	0	0:00:27.781541
5180	9	-1	0.0000	0	0:00:27.772282
5200	3	3	3.7391	1	0:00:27.728587
5220	0	0	2.0668	1	0:00:27.225568
5240	1	-1	0.0000	0	0:00:27.541791
5260	0	0	3.6510	1	0:00:27.834549
5280	0	8	1.8589	0	0:00:27.768234
5300	9	1	0.0357	0	0:00:27.766267
5320	7	7	2.7119	1	0:00:27.766553
5340	3	-1	0.0000	0	0:00:27.777663
5360	9	9	2.4103	1	0:00:27.779993
5380	1	9	2.8682	0	0:00:27.765205
5400	9	9	0.4533	1	0:00:27.783414
5420	6	6	0.3081	1	0:00:27.776782
5440	9	9	2.7076	1	0:00:27.785113
5460	0	0	0.4432	1	0:00:27.783684
5480	1	1	0.8509	1	0:00:27.785170
5500	8	-1	0.0000	0	0:00:27.783757
5520	4	6	0.3705	0	0:00:27.773980
5540	5	-1	0.0000	0	0:00:27.765653
5560	3	5	0.7855	0	0:00:27.777674
5580	5	6	0.6364	0	0:00:27.354056
5600	6	9	0.2875	0	0:00:27.335047
5620	3	2	1.8431	0	0:00:27.959289
5640	2	3	0.2857	0	0:00:27.283542
5660	9	9	1.1261	1	0:00:27.575603
5680	2	-1	0.0000	0	0:00:27.782262
5700	3	-1	0.0000	0	0:00:27.793318
5720	9	9	3.2220	1	0:00:27.314634
5740	6	6	1.5567	1	0:00:27.251290
5760	2	2	1.3302	1	0:00:27.498166
5780	7	7	2.4332	1	0:00:27.364493
5800	2	6	0.5418	0	0:00:27.345150
5820	5	6	0.3450	0	0:00:27.569718
5840	2	6	0.4806	0	0:00:27.244240
5860	0	8	0.0375	0	0:00:27.252819
5880	0	0	0.1996	1	0:00:27.232039
5900	4	-1	0.0000	0	0:00:27.224712
5920	8	8	3.8115	1	0:00:27.223620
5940	7	4	0.6879	0	0:00:27.247960
5960	2	7	0.3291	0	0:00:27.256441
5980	9	9	1.9511	1	0:00:27.258734
6000	8	8	0.1173	1	0:01:33.127684
6020	6	6	0.1947	1	0:01:33.295456
6040	2	7	0.3102	0	0:01:33.282297
6060	3	4	0.1918	0	0:01:33.264001
6080	1	1	0.4388	1	0:01:33.274132
6100	1	1	1.3428	1	0:01:33.285476
6120	5	5	2.3207	1	0:01:33.292641
6140	9	9	2.1712	1	0:01:33.247536
6160	2	5	1.2915	0	0:01:33.259032
6180	0	9	0.1538	0	0:01:33.263698
6200	3	-1	0.0000	0	0:01:33.258304
6220	2	6	1.5944	0	0:01:33.286431
6240	2	6	0.5177	0	0:01:33.280989
6260	2	9	0.3524	0	0:01:33.277416
6280	8	5	0.8346	0	0:01:33.283893
6300	1	-1	0.0000	0	0:01:33.321815
6320	0	0	3.5252	1	0:01:33.267177
6340	3	3	0.6402	1	0:01:33.289649
6360	2	2	0.5088	1	0:01:33.271321
6380	3	6	0.2702	0	0:01:33.268514
6400	0	1	0.8928	0	0:01:33.261510
6420	7	7	0.2288	1	0:01:33.304250
6440	3	8	0.2876	0	0:01:33.316160
6460	3	1	0.2722	0	0:01:33.328323
6480	0	0	0.8188	1	0:01:33.317772
6500	7	0	0.4387	0	0:01:33.294926
6520	6	2	0.2362	0	0:01:33.283912
6540	8	8	1.5152	1	0:01:33.284949
6560	6	6	1.9648	1	0:01:33.290778
6580	1	-1	0.0000	0	0:01:33.243456
6600	7	7	3.8115	1	0:01:33.272929
6620	7	7	1.0071	1	0:01:33.249203
6640	5	3	0.9030	0	0:01:33.238607
6660	0	0	1.6968	1	0:01:33.244640
6680	3	3	1.5392	1	0:01:33.294963
6700	6	6	0.9590	1	0:01:33.271311
6720	2	2	2.7436	1	0:01:33.281514
6740	2	6	1.7590	0	0:01:33.255243
6760	5	5	0.7842	1	0:01:33.263005
6780	7	7	3.3976	1	0:01:33.269198
6800	6	6	2.0209	1	0:01:33.266052
6820	1	1	2.5398	1	0:01:33.270893
6840	9	9	0.9875	1	0:01:33.291887
6860	0	0	1.8470	1	0:01:33.295756
6880	2	6	0.1133	0	0:01:33.325898
6900	3	7	1.5044	0	0:01:33.290641
6920	5	2	3.1445	0	0:01:33.282575
6940	1	1	3.7391	1	0:01:33.324511
6960	9	8	2.0018	0	0:01:33.311117
6980	0	9	1.5868	0	0:01:33.315141
7000	2	8	0.0426	0	0:01:33.289491
7020	7	7	0.7920	1	0:01:33.278149
7040	7	8	0.9599	0	0:01:33.278693
7060	8	8	1.5048	1	0:01:33.263328
7080	5	4	0.2549	0	0:01:33.276232
7100	9	3	0.9771	0	0:01:33.297736
7120	7	7	0.0079	1	0:01:33.304995
7140	4	4	1.0365	1	0:01:33.283214
7160	5	-1	0.0000	0	0:01:33.232807
7180	6	6	2.9900	1	0:01:33.261494
7200	4	6	0.1729	0	0:01:33.257593
7220	9	9	0.1128	1	0:01:33.247401
7240	0	8	1.2158	0	0:01:33.261067
7260	1	8	0.1000	0	0:01:33.239121
7280	1	1	0.4685	1	0:01:33.263468
7300	3	7	0.5799	0	0:01:33.265424
7320	8	8	0.3544	1	0:01:33.264945
7340	2	4	0.2691	0	0:01:33.261303
7360	2	-1	0.0000	0	0:01:33.280890
7380	7	7	1.0880	1	0:01:33.309847
7400	3	3	0.2568	1	0:01:33.301664
7420	3	0	0.9364	0	0:01:33.299366
7440	3	6	0.0864	0	0:01:33.312573
7460	5	5	3.4460	1	0:01:33.314279
7480	1	-1	0.0000	0	0:01:33.290162
7500	6	6	3.3480	1	0:01:33.328940
7520	4	6	0.9298	0	0:01:33.310556
7540	5	5	3.8115	1	0:01:33.324847
7560	0	-1	0.0000	0	0:01:33.322331
7580	8	8	1.1268	1	0:01:33.281438
7600	8	9	1.3908	0	0:01:33.259639
7620	5	3	0.8408	0	0:01:33.246621
7640	9	9	0.5822	1	0:01:33.246997
7660	7	7	0.0116	1	0:01:33.256220
7680	3	9	0.7425	0	0:01:33.264012
7700	6	6	3.1758	1	0:01:33.242505
7720	5	5	0.2956	1	0:01:33.263218
7740	4	-1	0.0000	0	0:01:33.232098
7760	2	9	0.3854	0	0:01:33.281402
7780	3	-1	0.0000	0	0:01:33.289248
7800	0	0	1.6419	1	0:01:33.254893
7820	5	8	0.6881	0	0:01:33.247324
7840	1	1	2.7988	1	0:01:33.315727
7860	8	-1	0.0000	0	0:01:33.277718
7880	0	0	1.0957	1	0:01:33.264841
7900	0	8	1.2105	0	0:01:33.282514
7920	9	8	0.7218	0	0:01:33.271229
7940	2	6	2.9143	0	0:01:33.308219
7960	0	0	1.1255	1	0:01:33.281649
7980	3	7	0.1494	0	0:01:33.297919
8000	9	9	1.2620	1	0:01:33.193909
8020	6	6	1.9989	1	0:01:33.096454
8040	2	6	1.3111	0	0:01:33.066102
8060	6	6	1.2254	1	0:01:33.058740
8080	4	6	0.6894	0	0:01:33.038831
8100	6	2	2.2278	0	0:01:33.084861
8120	8	9	0.4609	0	0:01:33.097913
8140	5	4	0.0162	0	0:01:33.092608
8160	6	9	0.0041	0	0:01:33.091599
8180	4	6	2.6899	0	0:01:33.086955
8200	3	6	0.2195	0	0:01:33.092788
8220	6	6	0.1512	1	0:01:33.099911
8240	7	7	3.5451	1	0:01:33.103064
8260	1	1	0.9135	1	0:01:33.117444
8280	4	-1	0.0000	0	0:01:33.131681
8300	5	2	1.1125	0	0:01:33.108454
8320	7	-1	0.0000	0	0:01:33.123872
8340	5	-1	0.0000	0	0:01:33.111038
8360	7	7	0.9246	1	0:01:33.093252
8380	9	8	0.1233	0	0:01:33.101755
8400	0	8	0.4382	0	0:01:33.079871
8420	3	6	0.3770	0	0:01:33.078228
8440	5	-1	0.0000	0	0:01:33.107980
8460	8	8	2.5871	1	0:01:33.085505
8480	2	-1	0.0000	0	0:01:33.092954
8500	4	2	0.7278	0	0:01:33.085658
8520	8	-1	0.0000	0	0:01:33.102071
8540	4	2	0.2570	0	0:01:33.109560
8560	7	7	1.7185	1	0:01:33.111253
8580	3	-1	0.0000	0	0:01:33.112802
8600	3	7	0.2724	0	0:01:33.108900
8620	3	-1	0.0000	0	0:01:33.098798
8640	1	1	3.3667	1	0:01:33.111760
8660	7	5	0.6944	0	0:01:33.126327
8680	3	9	0.4758	0	0:01:33.091300
8700	3	3	1.6295	1	0:01:33.125462
8720	2	0	3.2642	0	0:01:33.087168
8740	2	6	0.1080	0	0:01:33.101477
8760	8	8	1.7335	1	0:01:33.102017
8780	4	-1	0.0000	0	0:01:33.086913
8800	0	0	3.2334	1	0:01:33.083820
8820	2	2	1.5989	1	0:01:33.097079
8840	2	1	0.8651	0	0:01:33.100648
8860	2	2	0.5991	1	0:01:33.096538
8880	1	1	1.2212	1	0:01:33.109634
8900	2	6	0.3765	0	0:01:33.111848
8920	6	6	2.8087	1	0:01:33.117564
8940	6	6	0.4273	1	0:01:33.115458
8960	0	0	3.2005	1	0:01:33.088249
8980	9	9	2.0268	1	0:01:33.124407
9000	8	8	3.7391	1	0:01:33.113172
9020	7	9	1.1840	0	0:01:33.107203
9040	2	5	2.5418	0	0:01:33.121595
9060	9	5	0.8522	0	0:01:33.094907
9080	3	0	0.4235	0	0:01:33.082513
9100	9	6	0.1563	0	0:01:33.111830
9120	3	0	0.3798	0	0:01:33.081741
9140	7	-1	0.0000	0	0:01:33.101045
9160	5	5	1.4625	1	0:01:33.079797
9180	5	5	3.7391	1	0:01:33.132602
9200	8	8	3.5252	1	0:01:33.096986
9220	8	8	3.3223	1	0:01:33.109526
9240	8	8	0.9486	1	0:01:33.115935
9260	5	5	1.6815	1	0:01:33.118592
9280	9	0	0.1924	0	0:01:33.118731
9300	5	5	0.4869	1	0:01:33.129839
9320	9	9	1.4195	1	0:01:33.106791
9340	1	1	1.6872	1	0:01:33.097009
9360	5	-1	0.0000	0	0:01:33.101023
9380	5	3	0.3445	0	0:01:33.108774
9400	6	6	0.3276	1	0:01:33.096287
9420	5	5	0.4099	1	0:01:33.120960
9440	8	8	3.3306	1	0:01:33.127723
9460	3	7	0.0370	0	0:01:33.095210
9480	2	4	0.0906	0	0:01:33.108956
9500	9	1	0.5419	0	0:01:33.109659
9520	1	1	0.4359	1	0:01:33.109934
9540	5	5	0.8365	1	0:01:33.092453
9560	9	7	2.8058	0	0:01:33.097394
9580	1	1	0.0004	1	0:01:33.094546
9600	8	8	2.6505	1	0:01:33.097096
9620	4	7	0.3528	0	0:01:33.100567
9640	5	-1	0.0000	0	0:01:33.115216
9660	6	6	1.5407	1	0:01:33.112693
9680	8	8	1.2873	1	0:01:33.111694
9700	0	0	1.9769	1	0:01:33.103303
9720	8	-1	0.0000	0	0:01:33.116479
9740	3	6	1.2982	0	0:01:33.113243
9760	9	9	0.8533	1	0:01:33.121584
9780	4	6	3.1124	0	0:01:33.094011
9800	1	1	2.6336	1	0:01:33.102088
9820	0	-1	0.0000	0	0:01:33.080997
9840	4	3	0.8706	0	0:01:33.101695
9860	0	-1	0.0000	0	0:01:33.088849
9880	7	7	1.2236	1	0:01:33.124022
9900	8	0	1.3864	0	0:01:33.087165
9920	6	6	3.4902	1	0:01:33.108229
9940	4	-1	0.0000	0	0:01:33.123913
9960	2	0	3.8115	0	0:01:33.095098
9980	0	0	2.6682	1	0:01:33.086485


fileFormatVersion: 2
guid: c3e3bce1d5c900d4fa7aa0f2b21814cf
timeCreated: 1467190133
licenseType: Store
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant: