From 13425039213a50fe5cc7363faeb6ce7c3ce4f0ed Mon Sep 17 00:00:00 2001 From: reemo3dp <150130755+reemo3dp@users.noreply.github.com> Date: Sat, 2 Mar 2024 11:46:31 +0100 Subject: [PATCH] Broken --- packages/layer_parser/Makefile | 2 + packages/layer_parser/poetry.lock | 118 + packages/layer_parser/pyproject.toml | 18 + packages/layer_parser/src/layer_parser.lark | 25 + packages/led_effect/poetry.lock | 18 +- packages/led_effect/pyproject.toml | 2 +- packages/led_effect/src/layer_parser.py | 44 + packages/led_effect/src/layer_parser_lark.py | 3438 ++++++++++++++ packages/led_effect/src/src | 1 - packages/led_effect_tests/poetry.lock | 4 +- packages/led_effect_tests/pyproject.toml | 1 + .../led_effect_tests/src/layer_parser_test.py | 42 + src/__init__.py | 0 src/golden/breathing.yml | 4102 ++++++++++++++++ src/golden/comet.yml | 4102 ++++++++++++++++ src/golden/gradient.yml | 4102 ++++++++++++++++ src/golden/sb_critical_error.yml | 4105 +++++++++++++++++ src/golden/static.yml | 4102 ++++++++++++++++ src/golden/strobe.yml | 4102 ++++++++++++++++ src/led_effect.py | 1336 ++++++ src/led_effect_golden_test.py | 23 + src/led_effect_layer_parser.py | 71 + src/led_effect_layer_parser_test.py | 42 + src/led_effect_test.py | 143 + 24 files changed, 29936 insertions(+), 7 deletions(-) create mode 100644 packages/layer_parser/Makefile create mode 100644 packages/layer_parser/poetry.lock create mode 100644 packages/layer_parser/pyproject.toml create mode 100644 packages/layer_parser/src/layer_parser.lark create mode 100644 packages/led_effect/src/layer_parser.py create mode 100644 packages/led_effect/src/layer_parser_lark.py delete mode 120000 packages/led_effect/src/src create mode 100644 packages/led_effect_tests/src/layer_parser_test.py create mode 100644 src/__init__.py create mode 100644 src/golden/breathing.yml create mode 100644 src/golden/comet.yml create mode 100644 src/golden/gradient.yml create mode 100644 src/golden/sb_critical_error.yml create mode 100644 src/golden/static.yml create mode 100644 src/golden/strobe.yml create mode 100644 src/led_effect.py create mode 100644 src/led_effect_golden_test.py create mode 100644 src/led_effect_layer_parser.py create mode 100644 src/led_effect_layer_parser_test.py create mode 100644 src/led_effect_test.py diff --git a/packages/layer_parser/Makefile b/packages/layer_parser/Makefile new file mode 100644 index 0000000..d90ea9e --- /dev/null +++ b/packages/layer_parser/Makefile @@ -0,0 +1,2 @@ +../led_effect/src/layer_parser_lark.py: src/layer_parser.lark + poetry run python -m lark.tools.standalone -s line -o $@ $< \ No newline at end of file diff --git a/packages/layer_parser/poetry.lock b/packages/layer_parser/poetry.lock new file mode 100644 index 0000000..97b3de5 --- /dev/null +++ b/packages/layer_parser/poetry.lock @@ -0,0 +1,118 @@ +# This file is automatically @generated by Poetry 1.8.1 and should not be changed by hand. + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "exceptiongroup" +version = "1.2.0" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, + {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, +] + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "lark" +version = "1.1.9" +description = "a modern parsing library" +optional = false +python-versions = ">=3.6" +files = [ + {file = "lark-1.1.9-py3-none-any.whl", hash = "sha256:a0dd3a87289f8ccbb325901e4222e723e7d745dbfc1803eaf5f3d2ace19cf2db"}, + {file = "lark-1.1.9.tar.gz", hash = "sha256:15fa5236490824c2c4aba0e22d2d6d823575dcaf4cdd1848e34b6ad836240fba"}, +] + +[package.extras] +atomic-cache = ["atomicwrites"] +interegular = ["interegular (>=0.3.1,<0.4.0)"] +nearley = ["js2py"] +regex = ["regex"] + +[[package]] +name = "packaging" +version = "23.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, +] + +[[package]] +name = "pluggy" +version = "1.4.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, + {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "pytest" +version = "8.0.2" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest-8.0.2-py3-none-any.whl", hash = "sha256:edfaaef32ce5172d5466b5127b42e0d6d35ebbe4453f0e3505d96afd93f6b096"}, + {file = "pytest-8.0.2.tar.gz", hash = "sha256:d4051d623a2e0b7e51960ba963193b09ce6daeb9759a451844a21e4ddedfc1bd"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=1.3.0,<2.0" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} + +[package.extras] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] + +[metadata] +lock-version = "2.0" +python-versions = "^3.9" +content-hash = "1a94dbbbaff508c556c06c7d86ef851a733c3ce6f276dde0cee51345442833c2" diff --git a/packages/layer_parser/pyproject.toml b/packages/layer_parser/pyproject.toml new file mode 100644 index 0000000..c66a8a2 --- /dev/null +++ b/packages/layer_parser/pyproject.toml @@ -0,0 +1,18 @@ +[tool.poetry] +package-mode = false +name = "layer_parser" +version = "0.1.0" +description = "" +authors = ["Julian Schill ", "reemo3dp <150130755+reemo3dp@users.noreply.github.com>"] +license = "GPL3" +readme = "README.md" + +[tool.poetry.dependencies] +python = ">=3.8,<3.12" + +[tool.poetry.group.dev.dependencies] +lark = "^1.1.9" + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" diff --git a/packages/layer_parser/src/layer_parser.lark b/packages/layer_parser/src/layer_parser.lark new file mode 100644 index 0000000..b179d8f --- /dev/null +++ b/packages/layer_parser/src/layer_parser.lark @@ -0,0 +1,25 @@ +line: legacy_line | parameterized_line + +legacy_line: LAYER_NAME RATE CUTOFF BLEND palette +LAYER_NAME: WORD +RATE: NUMBER +CUTOFF: NUMBER +BLEND: WORD + +parameterized_line: LAYER_NAME "(" parameters ")" BLEND palette +parameters: (parameter ("," parameter)*)? +parameter: CNAME "=" (NUMBER | string) +NUMBER: (FLOAT | INT) + +palette: palette_entry ("," palette_entry)* +palette_entry: "(" (NUMBER) "," (NUMBER) "," (NUMBER) ["," (NUMBER)] ")" +?string: CNAME | ESCAPED_STRING + +%import common.CNAME +%import common.WORD +%import common.FLOAT +%import common.INT +%import common.WS +%import common.ESCAPED_STRING + +%ignore WS \ No newline at end of file diff --git a/packages/led_effect/poetry.lock b/packages/led_effect/poetry.lock index 98ac214..e69bb4a 100644 --- a/packages/led_effect/poetry.lock +++ b/packages/led_effect/poetry.lock @@ -1,7 +1,19 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. -package = [] +# This file is automatically @generated by Poetry 1.8.1 and should not be changed by hand. + +[[package]] +name = "layer-parser" +version = "0.1.0" +description = "" +optional = false +python-versions = ">=3.8,<3.12" +files = [] +develop = true + +[package.source] +type = "directory" +url = "../layer_parser" [metadata] lock-version = "2.0" python-versions = "<3.12,>=3.8" -content-hash = "5c2950c6a263c4c1566a5a6677f7a252eda96ec3f8e6208076f6ed7e4938535a" +content-hash = "a17b80f6e5e44d65dba59cf59321aa7b81839eaed8b06691fe90866c98385dbb" diff --git a/packages/led_effect/pyproject.toml b/packages/led_effect/pyproject.toml index 69bbac7..4d2b498 100644 --- a/packages/led_effect/pyproject.toml +++ b/packages/led_effect/pyproject.toml @@ -1,5 +1,5 @@ [tool.poetry] -name = "led-effect" +name = "led_effect" version = "0.1.0" authors = ["Julian Schill "] description = "" diff --git a/packages/led_effect/src/layer_parser.py b/packages/led_effect/src/layer_parser.py new file mode 100644 index 0000000..9a1affd --- /dev/null +++ b/packages/led_effect/src/layer_parser.py @@ -0,0 +1,44 @@ +from . import layer_parser_lark + + + +class TermTransformer(layer_parser_lark.Transformer): + NUMBER = float + RATE = float + CUTOFF = float + BLEND = str + LAYER_NAME = str + WORD = str + CNAME = str + + @layer_parser_lark.v_args(inline=True) + def ESCAPED_STRING(self, s): + return s[1:-1].replace('\\"', '"') + + +layer_line_parser = layer_parser_lark.Lark_StandAlone() + + +def parse(line): + tree = TermTransformer().transform(layer_line_parser.parse(line)) + + if tree.children[0].data == "legacy_line": + effect, rate, cutoff, blend, palette = tree.children[0].children + palette = [tuple([color for color in entry.children if color != None]) + for entry in palette.children] + return { + "effect": effect, "parameters": {"effectRate": rate, "effectCutoff": cutoff}, + "blend": blend, "palette": palette + } + elif tree.children[0].data == "parameterized_line": + effect, parameters, blend, palette = tree.children[0].children + + params = {k: v for k, v in [ + (param.children[0], param.children[1]) for param in parameters.children]} + + palette = [tuple([color for color in entry.children if color != None]) + for entry in palette.children] + return { + "effect": effect, "blend": blend, "palette": palette, "parameters": params + } + return None diff --git a/packages/led_effect/src/layer_parser_lark.py b/packages/led_effect/src/layer_parser_lark.py new file mode 100644 index 0000000..7fe2ced --- /dev/null +++ b/packages/led_effect/src/layer_parser_lark.py @@ -0,0 +1,3438 @@ +# The file was automatically generated by Lark v1.1.9 +__version__ = "1.1.9" + +# +# +# Lark Stand-alone Generator Tool +# ---------------------------------- +# Generates a stand-alone LALR(1) parser +# +# Git: https://github.com/erezsh/lark +# Author: Erez Shinan (erezshin@gmail.com) +# +# +# >>> LICENSE +# +# This tool and its generated code use a separate license from Lark, +# and are subject to the terms of the Mozilla Public License, v. 2.0. +# If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +# +# If you wish to purchase a commercial license for this tool and its +# generated code, you may contact me via email or otherwise. +# +# If MPL2 is incompatible with your free or open-source project, +# contact me and we'll work it out. +# +# + +from copy import deepcopy +from abc import ABC, abstractmethod +from types import ModuleType +from typing import ( + TypeVar, Generic, Type, Tuple, List, Dict, Iterator, Collection, Callable, Optional, FrozenSet, Any, + Union, Iterable, IO, TYPE_CHECKING, overload, Sequence, + Pattern as REPattern, ClassVar, Set, Mapping +) + + +class LarkError(Exception): + pass + + +class ConfigurationError(LarkError, ValueError): + pass + + +def assert_config(value, options: Collection, msg='Got %r, expected one of %s'): + if value not in options: + raise ConfigurationError(msg % (value, options)) + + +class GrammarError(LarkError): + pass + + +class ParseError(LarkError): + pass + + +class LexError(LarkError): + pass + +T = TypeVar('T') + +class UnexpectedInput(LarkError): + #-- + line: int + column: int + pos_in_stream = None + state: Any + _terminals_by_name = None + interactive_parser: 'InteractiveParser' + + def get_context(self, text: str, span: int=40) -> str: + #-- + assert self.pos_in_stream is not None, self + pos = self.pos_in_stream + start = max(pos - span, 0) + end = pos + span + if not isinstance(text, bytes): + before = text[start:pos].rsplit('\n', 1)[-1] + after = text[pos:end].split('\n', 1)[0] + return before + after + '\n' + ' ' * len(before.expandtabs()) + '^\n' + else: + before = text[start:pos].rsplit(b'\n', 1)[-1] + after = text[pos:end].split(b'\n', 1)[0] + return (before + after + b'\n' + b' ' * len(before.expandtabs()) + b'^\n').decode("ascii", "backslashreplace") + + def match_examples(self, parse_fn: 'Callable[[str], Tree]', + examples: Union[Mapping[T, Iterable[str]], Iterable[Tuple[T, Iterable[str]]]], + token_type_match_fallback: bool=False, + use_accepts: bool=True + ) -> Optional[T]: + #-- + assert self.state is not None, "Not supported for this exception" + + if isinstance(examples, Mapping): + examples = examples.items() + + candidate = (None, False) + for i, (label, example) in enumerate(examples): + assert not isinstance(example, str), "Expecting a list" + + for j, malformed in enumerate(example): + try: + parse_fn(malformed) + except UnexpectedInput as ut: + if ut.state == self.state: + if ( + use_accepts + and isinstance(self, UnexpectedToken) + and isinstance(ut, UnexpectedToken) + and ut.accepts != self.accepts + ): + logger.debug("Different accepts with same state[%d]: %s != %s at example [%s][%s]" % + (self.state, self.accepts, ut.accepts, i, j)) + continue + if ( + isinstance(self, (UnexpectedToken, UnexpectedEOF)) + and isinstance(ut, (UnexpectedToken, UnexpectedEOF)) + ): + if ut.token == self.token: ## + + logger.debug("Exact Match at example [%s][%s]" % (i, j)) + return label + + if token_type_match_fallback: + ## + + if (ut.token.type == self.token.type) and not candidate[-1]: + logger.debug("Token Type Fallback at example [%s][%s]" % (i, j)) + candidate = label, True + + if candidate[0] is None: + logger.debug("Same State match at example [%s][%s]" % (i, j)) + candidate = label, False + + return candidate[0] + + def _format_expected(self, expected): + if self._terminals_by_name: + d = self._terminals_by_name + expected = [d[t_name].user_repr() if t_name in d else t_name for t_name in expected] + return "Expected one of: \n\t* %s\n" % '\n\t* '.join(expected) + + +class UnexpectedEOF(ParseError, UnexpectedInput): + #-- + expected: 'List[Token]' + + def __init__(self, expected, state=None, terminals_by_name=None): + super(UnexpectedEOF, self).__init__() + + self.expected = expected + self.state = state + from .lexer import Token + self.token = Token("", "") ## + + self.pos_in_stream = -1 + self.line = -1 + self.column = -1 + self._terminals_by_name = terminals_by_name + + + def __str__(self): + message = "Unexpected end-of-input. " + message += self._format_expected(self.expected) + return message + + +class UnexpectedCharacters(LexError, UnexpectedInput): + #-- + + allowed: Set[str] + considered_tokens: Set[Any] + + def __init__(self, seq, lex_pos, line, column, allowed=None, considered_tokens=None, state=None, token_history=None, + terminals_by_name=None, considered_rules=None): + super(UnexpectedCharacters, self).__init__() + + ## + + self.line = line + self.column = column + self.pos_in_stream = lex_pos + self.state = state + self._terminals_by_name = terminals_by_name + + self.allowed = allowed + self.considered_tokens = considered_tokens + self.considered_rules = considered_rules + self.token_history = token_history + + if isinstance(seq, bytes): + self.char = seq[lex_pos:lex_pos + 1].decode("ascii", "backslashreplace") + else: + self.char = seq[lex_pos] + self._context = self.get_context(seq) + + + def __str__(self): + message = "No terminal matches '%s' in the current parser context, at line %d col %d" % (self.char, self.line, self.column) + message += '\n\n' + self._context + if self.allowed: + message += self._format_expected(self.allowed) + if self.token_history: + message += '\nPrevious tokens: %s\n' % ', '.join(repr(t) for t in self.token_history) + return message + + +class UnexpectedToken(ParseError, UnexpectedInput): + #-- + + expected: Set[str] + considered_rules: Set[str] + + def __init__(self, token, expected, considered_rules=None, state=None, interactive_parser=None, terminals_by_name=None, token_history=None): + super(UnexpectedToken, self).__init__() + + ## + + self.line = getattr(token, 'line', '?') + self.column = getattr(token, 'column', '?') + self.pos_in_stream = getattr(token, 'start_pos', None) + self.state = state + + self.token = token + self.expected = expected ## + + self._accepts = NO_VALUE + self.considered_rules = considered_rules + self.interactive_parser = interactive_parser + self._terminals_by_name = terminals_by_name + self.token_history = token_history + + + @property + def accepts(self) -> Set[str]: + if self._accepts is NO_VALUE: + self._accepts = self.interactive_parser and self.interactive_parser.accepts() + return self._accepts + + def __str__(self): + message = ("Unexpected token %r at line %s, column %s.\n%s" + % (self.token, self.line, self.column, self._format_expected(self.accepts or self.expected))) + if self.token_history: + message += "Previous tokens: %r\n" % self.token_history + + return message + + + +class VisitError(LarkError): + #-- + + obj: 'Union[Tree, Token]' + orig_exc: Exception + + def __init__(self, rule, obj, orig_exc): + message = 'Error trying to process rule "%s":\n\n%s' % (rule, orig_exc) + super(VisitError, self).__init__(message) + + self.rule = rule + self.obj = obj + self.orig_exc = orig_exc + + +class MissingVariableError(LarkError): + pass + + +import sys, re +import logging + +logger: logging.Logger = logging.getLogger("lark") +logger.addHandler(logging.StreamHandler()) +## + +## + +logger.setLevel(logging.CRITICAL) + + +NO_VALUE = object() + +T = TypeVar("T") + + +def classify(seq: Iterable, key: Optional[Callable] = None, value: Optional[Callable] = None) -> Dict: + d: Dict[Any, Any] = {} + for item in seq: + k = key(item) if (key is not None) else item + v = value(item) if (value is not None) else item + try: + d[k].append(v) + except KeyError: + d[k] = [v] + return d + + +def _deserialize(data: Any, namespace: Dict[str, Any], memo: Dict) -> Any: + if isinstance(data, dict): + if '__type__' in data: ## + + class_ = namespace[data['__type__']] + return class_.deserialize(data, memo) + elif '@' in data: + return memo[data['@']] + return {key:_deserialize(value, namespace, memo) for key, value in data.items()} + elif isinstance(data, list): + return [_deserialize(value, namespace, memo) for value in data] + return data + + +_T = TypeVar("_T", bound="Serialize") + +class Serialize: + #-- + + def memo_serialize(self, types_to_memoize: List) -> Any: + memo = SerializeMemoizer(types_to_memoize) + return self.serialize(memo), memo.serialize() + + def serialize(self, memo = None) -> Dict[str, Any]: + if memo and memo.in_types(self): + return {'@': memo.memoized.get(self)} + + fields = getattr(self, '__serialize_fields__') + res = {f: _serialize(getattr(self, f), memo) for f in fields} + res['__type__'] = type(self).__name__ + if hasattr(self, '_serialize'): + self._serialize(res, memo) ## + + return res + + @classmethod + def deserialize(cls: Type[_T], data: Dict[str, Any], memo: Dict[int, Any]) -> _T: + namespace = getattr(cls, '__serialize_namespace__', []) + namespace = {c.__name__:c for c in namespace} + + fields = getattr(cls, '__serialize_fields__') + + if '@' in data: + return memo[data['@']] + + inst = cls.__new__(cls) + for f in fields: + try: + setattr(inst, f, _deserialize(data[f], namespace, memo)) + except KeyError as e: + raise KeyError("Cannot find key for class", cls, e) + + if hasattr(inst, '_deserialize'): + inst._deserialize() ## + + + return inst + + +class SerializeMemoizer(Serialize): + #-- + + __serialize_fields__ = 'memoized', + + def __init__(self, types_to_memoize: List) -> None: + self.types_to_memoize = tuple(types_to_memoize) + self.memoized = Enumerator() + + def in_types(self, value: Serialize) -> bool: + return isinstance(value, self.types_to_memoize) + + def serialize(self) -> Dict[int, Any]: ## + + return _serialize(self.memoized.reversed(), None) + + @classmethod + def deserialize(cls, data: Dict[int, Any], namespace: Dict[str, Any], memo: Dict[Any, Any]) -> Dict[int, Any]: ## + + return _deserialize(data, namespace, memo) + + +try: + import regex + _has_regex = True +except ImportError: + _has_regex = False + +if sys.version_info >= (3, 11): + import re._parser as sre_parse + import re._constants as sre_constants +else: + import sre_parse + import sre_constants + +categ_pattern = re.compile(r'\\p{[A-Za-z_]+}') + +def get_regexp_width(expr: str) -> Union[Tuple[int, int], List[int]]: + if _has_regex: + ## + + ## + + ## + + regexp_final = re.sub(categ_pattern, 'A', expr) + else: + if re.search(categ_pattern, expr): + raise ImportError('`regex` module must be installed in order to use Unicode categories.', expr) + regexp_final = expr + try: + ## + + return [int(x) for x in sre_parse.parse(regexp_final).getwidth()] ## + + except sre_constants.error: + if not _has_regex: + raise ValueError(expr) + else: + ## + + ## + + c = regex.compile(regexp_final) + ## + + ## + + MAXWIDTH = getattr(sre_parse, "MAXWIDTH", sre_constants.MAXREPEAT) + if c.match('') is None: + ## + + return 1, int(MAXWIDTH) + else: + return 0, int(MAXWIDTH) + + +from collections import OrderedDict + +class Meta: + + empty: bool + line: int + column: int + start_pos: int + end_line: int + end_column: int + end_pos: int + orig_expansion: 'List[TerminalDef]' + match_tree: bool + + def __init__(self): + self.empty = True + + +_Leaf_T = TypeVar("_Leaf_T") +Branch = Union[_Leaf_T, 'Tree[_Leaf_T]'] + + +class Tree(Generic[_Leaf_T]): + #-- + + data: str + children: 'List[Branch[_Leaf_T]]' + + def __init__(self, data: str, children: 'List[Branch[_Leaf_T]]', meta: Optional[Meta]=None) -> None: + self.data = data + self.children = children + self._meta = meta + + @property + def meta(self) -> Meta: + if self._meta is None: + self._meta = Meta() + return self._meta + + def __repr__(self): + return 'Tree(%r, %r)' % (self.data, self.children) + + def _pretty_label(self): + return self.data + + def _pretty(self, level, indent_str): + yield f'{indent_str*level}{self._pretty_label()}' + if len(self.children) == 1 and not isinstance(self.children[0], Tree): + yield f'\t{self.children[0]}\n' + else: + yield '\n' + for n in self.children: + if isinstance(n, Tree): + yield from n._pretty(level+1, indent_str) + else: + yield f'{indent_str*(level+1)}{n}\n' + + def pretty(self, indent_str: str=' ') -> str: + #-- + return ''.join(self._pretty(0, indent_str)) + + def __rich__(self, parent:Optional['rich.tree.Tree']=None) -> 'rich.tree.Tree': + #-- + return self._rich(parent) + + def _rich(self, parent): + if parent: + tree = parent.add(f'[bold]{self.data}[/bold]') + else: + import rich.tree + tree = rich.tree.Tree(self.data) + + for c in self.children: + if isinstance(c, Tree): + c._rich(tree) + else: + tree.add(f'[green]{c}[/green]') + + return tree + + def __eq__(self, other): + try: + return self.data == other.data and self.children == other.children + except AttributeError: + return False + + def __ne__(self, other): + return not (self == other) + + def __hash__(self) -> int: + return hash((self.data, tuple(self.children))) + + def iter_subtrees(self) -> 'Iterator[Tree[_Leaf_T]]': + #-- + queue = [self] + subtrees = OrderedDict() + for subtree in queue: + subtrees[id(subtree)] = subtree + ## + + queue += [c for c in reversed(subtree.children) ## + + if isinstance(c, Tree) and id(c) not in subtrees] + + del queue + return reversed(list(subtrees.values())) + + def iter_subtrees_topdown(self): + #-- + stack = [self] + stack_append = stack.append + stack_pop = stack.pop + while stack: + node = stack_pop() + if not isinstance(node, Tree): + continue + yield node + for child in reversed(node.children): + stack_append(child) + + def find_pred(self, pred: 'Callable[[Tree[_Leaf_T]], bool]') -> 'Iterator[Tree[_Leaf_T]]': + #-- + return filter(pred, self.iter_subtrees()) + + def find_data(self, data: str) -> 'Iterator[Tree[_Leaf_T]]': + #-- + return self.find_pred(lambda t: t.data == data) + + +from functools import wraps, update_wrapper +from inspect import getmembers, getmro + +_Return_T = TypeVar('_Return_T') +_Return_V = TypeVar('_Return_V') +_Leaf_T = TypeVar('_Leaf_T') +_Leaf_U = TypeVar('_Leaf_U') +_R = TypeVar('_R') +_FUNC = Callable[..., _Return_T] +_DECORATED = Union[_FUNC, type] + +class _DiscardType: + #-- + + def __repr__(self): + return "lark.visitors.Discard" + +Discard = _DiscardType() + +## + + +class _Decoratable: + #-- + + @classmethod + def _apply_v_args(cls, visit_wrapper): + mro = getmro(cls) + assert mro[0] is cls + libmembers = {name for _cls in mro[1:] for name, _ in getmembers(_cls)} + for name, value in getmembers(cls): + + ## + + if name.startswith('_') or (name in libmembers and name not in cls.__dict__): + continue + if not callable(value): + continue + + ## + + if isinstance(cls.__dict__[name], _VArgsWrapper): + continue + + setattr(cls, name, _VArgsWrapper(cls.__dict__[name], visit_wrapper)) + return cls + + def __class_getitem__(cls, _): + return cls + + +class Transformer(_Decoratable, ABC, Generic[_Leaf_T, _Return_T]): + #-- + __visit_tokens__ = True ## + + + def __init__(self, visit_tokens: bool=True) -> None: + self.__visit_tokens__ = visit_tokens + + def _call_userfunc(self, tree, new_children=None): + ## + + children = new_children if new_children is not None else tree.children + try: + f = getattr(self, tree.data) + except AttributeError: + return self.__default__(tree.data, children, tree.meta) + else: + try: + wrapper = getattr(f, 'visit_wrapper', None) + if wrapper is not None: + return f.visit_wrapper(f, tree.data, children, tree.meta) + else: + return f(children) + except GrammarError: + raise + except Exception as e: + raise VisitError(tree.data, tree, e) + + def _call_userfunc_token(self, token): + try: + f = getattr(self, token.type) + except AttributeError: + return self.__default_token__(token) + else: + try: + return f(token) + except GrammarError: + raise + except Exception as e: + raise VisitError(token.type, token, e) + + def _transform_children(self, children): + for c in children: + if isinstance(c, Tree): + res = self._transform_tree(c) + elif self.__visit_tokens__ and isinstance(c, Token): + res = self._call_userfunc_token(c) + else: + res = c + + if res is not Discard: + yield res + + def _transform_tree(self, tree): + children = list(self._transform_children(tree.children)) + return self._call_userfunc(tree, children) + + def transform(self, tree: Tree[_Leaf_T]) -> _Return_T: + #-- + return self._transform_tree(tree) + + def __mul__( + self: 'Transformer[_Leaf_T, Tree[_Leaf_U]]', + other: 'Union[Transformer[_Leaf_U, _Return_V], TransformerChain[_Leaf_U, _Return_V,]]' + ) -> 'TransformerChain[_Leaf_T, _Return_V]': + #-- + return TransformerChain(self, other) + + def __default__(self, data, children, meta): + #-- + return Tree(data, children, meta) + + def __default_token__(self, token): + #-- + return token + + +def merge_transformers(base_transformer=None, **transformers_to_merge): + #-- + if base_transformer is None: + base_transformer = Transformer() + for prefix, transformer in transformers_to_merge.items(): + for method_name in dir(transformer): + method = getattr(transformer, method_name) + if not callable(method): + continue + if method_name.startswith("_") or method_name == "transform": + continue + prefixed_method = prefix + "__" + method_name + if hasattr(base_transformer, prefixed_method): + raise AttributeError("Cannot merge: method '%s' appears more than once" % prefixed_method) + + setattr(base_transformer, prefixed_method, method) + + return base_transformer + + +class InlineTransformer(Transformer): ## + + def _call_userfunc(self, tree, new_children=None): + ## + + children = new_children if new_children is not None else tree.children + try: + f = getattr(self, tree.data) + except AttributeError: + return self.__default__(tree.data, children, tree.meta) + else: + return f(*children) + + +class TransformerChain(Generic[_Leaf_T, _Return_T]): + + transformers: 'Tuple[Union[Transformer, TransformerChain], ...]' + + def __init__(self, *transformers: 'Union[Transformer, TransformerChain]') -> None: + self.transformers = transformers + + def transform(self, tree: Tree[_Leaf_T]) -> _Return_T: + for t in self.transformers: + tree = t.transform(tree) + return cast(_Return_T, tree) + + def __mul__( + self: 'TransformerChain[_Leaf_T, Tree[_Leaf_U]]', + other: 'Union[Transformer[_Leaf_U, _Return_V], TransformerChain[_Leaf_U, _Return_V]]' + ) -> 'TransformerChain[_Leaf_T, _Return_V]': + return TransformerChain(*self.transformers + (other,)) + + +class Transformer_InPlace(Transformer[_Leaf_T, _Return_T]): + #-- + def _transform_tree(self, tree): ## + + return self._call_userfunc(tree) + + def transform(self, tree: Tree[_Leaf_T]) -> _Return_T: + for subtree in tree.iter_subtrees(): + subtree.children = list(self._transform_children(subtree.children)) + + return self._transform_tree(tree) + + +class Transformer_NonRecursive(Transformer[_Leaf_T, _Return_T]): + #-- + + def transform(self, tree: Tree[_Leaf_T]) -> _Return_T: + ## + + rev_postfix = [] + q: List[Branch[_Leaf_T]] = [tree] + while q: + t = q.pop() + rev_postfix.append(t) + if isinstance(t, Tree): + q += t.children + + ## + + stack: List = [] + for x in reversed(rev_postfix): + if isinstance(x, Tree): + size = len(x.children) + if size: + args = stack[-size:] + del stack[-size:] + else: + args = [] + + res = self._call_userfunc(x, args) + if res is not Discard: + stack.append(res) + + elif self.__visit_tokens__ and isinstance(x, Token): + res = self._call_userfunc_token(x) + if res is not Discard: + stack.append(res) + else: + stack.append(x) + + result, = stack ## + + ## + + ## + + ## + + return cast(_Return_T, result) + + +class Transformer_InPlaceRecursive(Transformer): + #-- + def _transform_tree(self, tree): + tree.children = list(self._transform_children(tree.children)) + return self._call_userfunc(tree) + + +## + + +class VisitorBase: + def _call_userfunc(self, tree): + return getattr(self, tree.data, self.__default__)(tree) + + def __default__(self, tree): + #-- + return tree + + def __class_getitem__(cls, _): + return cls + + +class Visitor(VisitorBase, ABC, Generic[_Leaf_T]): + #-- + + def visit(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]: + #-- + for subtree in tree.iter_subtrees(): + self._call_userfunc(subtree) + return tree + + def visit_topdown(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]: + #-- + for subtree in tree.iter_subtrees_topdown(): + self._call_userfunc(subtree) + return tree + + +class Visitor_Recursive(VisitorBase, Generic[_Leaf_T]): + #-- + + def visit(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]: + #-- + for child in tree.children: + if isinstance(child, Tree): + self.visit(child) + + self._call_userfunc(tree) + return tree + + def visit_topdown(self,tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]: + #-- + self._call_userfunc(tree) + + for child in tree.children: + if isinstance(child, Tree): + self.visit_topdown(child) + + return tree + + +class Interpreter(_Decoratable, ABC, Generic[_Leaf_T, _Return_T]): + #-- + + def visit(self, tree: Tree[_Leaf_T]) -> _Return_T: + ## + + ## + + ## + + return self._visit_tree(tree) + + def _visit_tree(self, tree: Tree[_Leaf_T]): + f = getattr(self, tree.data) + wrapper = getattr(f, 'visit_wrapper', None) + if wrapper is not None: + return f.visit_wrapper(f, tree.data, tree.children, tree.meta) + else: + return f(tree) + + def visit_children(self, tree: Tree[_Leaf_T]) -> List: + return [self._visit_tree(child) if isinstance(child, Tree) else child + for child in tree.children] + + def __getattr__(self, name): + return self.__default__ + + def __default__(self, tree): + return self.visit_children(tree) + + +_InterMethod = Callable[[Type[Interpreter], _Return_T], _R] + +def visit_children_decor(func: _InterMethod) -> _InterMethod: + #-- + @wraps(func) + def inner(cls, tree): + values = cls.visit_children(tree) + return func(cls, values) + return inner + +## + + +def _apply_v_args(obj, visit_wrapper): + try: + _apply = obj._apply_v_args + except AttributeError: + return _VArgsWrapper(obj, visit_wrapper) + else: + return _apply(visit_wrapper) + + +class _VArgsWrapper: + #-- + base_func: Callable + + def __init__(self, func: Callable, visit_wrapper: Callable[[Callable, str, list, Any], Any]): + if isinstance(func, _VArgsWrapper): + func = func.base_func + ## + + self.base_func = func ## + + self.visit_wrapper = visit_wrapper + update_wrapper(self, func) + + def __call__(self, *args, **kwargs): + return self.base_func(*args, **kwargs) + + def __get__(self, instance, owner=None): + try: + ## + + ## + + g = type(self.base_func).__get__ + except AttributeError: + return self + else: + return _VArgsWrapper(g(self.base_func, instance, owner), self.visit_wrapper) + + def __set_name__(self, owner, name): + try: + f = type(self.base_func).__set_name__ + except AttributeError: + return + else: + f(self.base_func, owner, name) + + +def _vargs_inline(f, _data, children, _meta): + return f(*children) +def _vargs_meta_inline(f, _data, children, meta): + return f(meta, *children) +def _vargs_meta(f, _data, children, meta): + return f(meta, children) +def _vargs_tree(f, data, children, meta): + return f(Tree(data, children, meta)) + + +def v_args(inline: bool = False, meta: bool = False, tree: bool = False, wrapper: Optional[Callable] = None) -> Callable[[_DECORATED], _DECORATED]: + #-- + if tree and (meta or inline): + raise ValueError("Visitor functions cannot combine 'tree' with 'meta' or 'inline'.") + + func = None + if meta: + if inline: + func = _vargs_meta_inline + else: + func = _vargs_meta + elif inline: + func = _vargs_inline + elif tree: + func = _vargs_tree + + if wrapper is not None: + if func is not None: + raise ValueError("Cannot use 'wrapper' along with 'tree', 'meta' or 'inline'.") + func = wrapper + + def _visitor_args_dec(obj): + return _apply_v_args(obj, func) + return _visitor_args_dec + + + +TOKEN_DEFAULT_PRIORITY = 0 + + +class Symbol(Serialize): + __slots__ = ('name',) + + name: str + is_term: ClassVar[bool] = NotImplemented + + def __init__(self, name: str) -> None: + self.name = name + + def __eq__(self, other): + assert isinstance(other, Symbol), other + return self.is_term == other.is_term and self.name == other.name + + def __ne__(self, other): + return not (self == other) + + def __hash__(self): + return hash(self.name) + + def __repr__(self): + return '%s(%r)' % (type(self).__name__, self.name) + + fullrepr = property(__repr__) + + def renamed(self, f): + return type(self)(f(self.name)) + + +class Terminal(Symbol): + __serialize_fields__ = 'name', 'filter_out' + + is_term: ClassVar[bool] = True + + def __init__(self, name, filter_out=False): + self.name = name + self.filter_out = filter_out + + @property + def fullrepr(self): + return '%s(%r, %r)' % (type(self).__name__, self.name, self.filter_out) + + def renamed(self, f): + return type(self)(f(self.name), self.filter_out) + + +class NonTerminal(Symbol): + __serialize_fields__ = 'name', + + is_term: ClassVar[bool] = False + + +class RuleOptions(Serialize): + __serialize_fields__ = 'keep_all_tokens', 'expand1', 'priority', 'template_source', 'empty_indices' + + keep_all_tokens: bool + expand1: bool + priority: Optional[int] + template_source: Optional[str] + empty_indices: Tuple[bool, ...] + + def __init__(self, keep_all_tokens: bool=False, expand1: bool=False, priority: Optional[int]=None, template_source: Optional[str]=None, empty_indices: Tuple[bool, ...]=()) -> None: + self.keep_all_tokens = keep_all_tokens + self.expand1 = expand1 + self.priority = priority + self.template_source = template_source + self.empty_indices = empty_indices + + def __repr__(self): + return 'RuleOptions(%r, %r, %r, %r)' % ( + self.keep_all_tokens, + self.expand1, + self.priority, + self.template_source + ) + + +class Rule(Serialize): + #-- + __slots__ = ('origin', 'expansion', 'alias', 'options', 'order', '_hash') + + __serialize_fields__ = 'origin', 'expansion', 'order', 'alias', 'options' + __serialize_namespace__ = Terminal, NonTerminal, RuleOptions + + origin: NonTerminal + expansion: Sequence[Symbol] + order: int + alias: Optional[str] + options: RuleOptions + _hash: int + + def __init__(self, origin: NonTerminal, expansion: Sequence[Symbol], + order: int=0, alias: Optional[str]=None, options: Optional[RuleOptions]=None): + self.origin = origin + self.expansion = expansion + self.alias = alias + self.order = order + self.options = options or RuleOptions() + self._hash = hash((self.origin, tuple(self.expansion))) + + def _deserialize(self): + self._hash = hash((self.origin, tuple(self.expansion))) + + def __str__(self): + return '<%s : %s>' % (self.origin.name, ' '.join(x.name for x in self.expansion)) + + def __repr__(self): + return 'Rule(%r, %r, %r, %r)' % (self.origin, self.expansion, self.alias, self.options) + + def __hash__(self): + return self._hash + + def __eq__(self, other): + if not isinstance(other, Rule): + return False + return self.origin == other.origin and self.expansion == other.expansion + + + +from copy import copy + +try: ## + + has_interegular = bool(interegular) +except NameError: + has_interegular = False + +class Pattern(Serialize, ABC): + #-- + + value: str + flags: Collection[str] + raw: Optional[str] + type: ClassVar[str] + + def __init__(self, value: str, flags: Collection[str] = (), raw: Optional[str] = None) -> None: + self.value = value + self.flags = frozenset(flags) + self.raw = raw + + def __repr__(self): + return repr(self.to_regexp()) + + ## + + def __hash__(self): + return hash((type(self), self.value, self.flags)) + + def __eq__(self, other): + return type(self) == type(other) and self.value == other.value and self.flags == other.flags + + @abstractmethod + def to_regexp(self) -> str: + raise NotImplementedError() + + @property + @abstractmethod + def min_width(self) -> int: + raise NotImplementedError() + + @property + @abstractmethod + def max_width(self) -> int: + raise NotImplementedError() + + def _get_flags(self, value): + for f in self.flags: + value = ('(?%s:%s)' % (f, value)) + return value + + +class PatternStr(Pattern): + __serialize_fields__ = 'value', 'flags', 'raw' + + type: ClassVar[str] = "str" + + def to_regexp(self) -> str: + return self._get_flags(re.escape(self.value)) + + @property + def min_width(self) -> int: + return len(self.value) + + @property + def max_width(self) -> int: + return len(self.value) + + +class PatternRE(Pattern): + __serialize_fields__ = 'value', 'flags', 'raw', '_width' + + type: ClassVar[str] = "re" + + def to_regexp(self) -> str: + return self._get_flags(self.value) + + _width = None + def _get_width(self): + if self._width is None: + self._width = get_regexp_width(self.to_regexp()) + return self._width + + @property + def min_width(self) -> int: + return self._get_width()[0] + + @property + def max_width(self) -> int: + return self._get_width()[1] + + +class TerminalDef(Serialize): + #-- + __serialize_fields__ = 'name', 'pattern', 'priority' + __serialize_namespace__ = PatternStr, PatternRE + + name: str + pattern: Pattern + priority: int + + def __init__(self, name: str, pattern: Pattern, priority: int = TOKEN_DEFAULT_PRIORITY) -> None: + assert isinstance(pattern, Pattern), pattern + self.name = name + self.pattern = pattern + self.priority = priority + + def __repr__(self): + return '%s(%r, %r)' % (type(self).__name__, self.name, self.pattern) + + def user_repr(self) -> str: + if self.name.startswith('__'): ## + + return self.pattern.raw or self.name + else: + return self.name + +_T = TypeVar('_T', bound="Token") + +class Token(str): + #-- + __slots__ = ('type', 'start_pos', 'value', 'line', 'column', 'end_line', 'end_column', 'end_pos') + + __match_args__ = ('type', 'value') + + type: str + start_pos: Optional[int] + value: Any + line: Optional[int] + column: Optional[int] + end_line: Optional[int] + end_column: Optional[int] + end_pos: Optional[int] + + + @overload + def __new__( + cls, + type: str, + value: Any, + start_pos: Optional[int] = None, + line: Optional[int] = None, + column: Optional[int] = None, + end_line: Optional[int] = None, + end_column: Optional[int] = None, + end_pos: Optional[int] = None + ) -> 'Token': + ... + + @overload + def __new__( + cls, + type_: str, + value: Any, + start_pos: Optional[int] = None, + line: Optional[int] = None, + column: Optional[int] = None, + end_line: Optional[int] = None, + end_column: Optional[int] = None, + end_pos: Optional[int] = None + ) -> 'Token': ... + + def __new__(cls, *args, **kwargs): + if "type_" in kwargs: + warnings.warn("`type_` is deprecated use `type` instead", DeprecationWarning) + + if "type" in kwargs: + raise TypeError("Error: using both 'type' and the deprecated 'type_' as arguments.") + kwargs["type"] = kwargs.pop("type_") + + return cls._future_new(*args, **kwargs) + + + @classmethod + def _future_new(cls, type, value, start_pos=None, line=None, column=None, end_line=None, end_column=None, end_pos=None): + inst = super(Token, cls).__new__(cls, value) + + inst.type = type + inst.start_pos = start_pos + inst.value = value + inst.line = line + inst.column = column + inst.end_line = end_line + inst.end_column = end_column + inst.end_pos = end_pos + return inst + + @overload + def update(self, type: Optional[str] = None, value: Optional[Any] = None) -> 'Token': + ... + + @overload + def update(self, type_: Optional[str] = None, value: Optional[Any] = None) -> 'Token': + ... + + def update(self, *args, **kwargs): + if "type_" in kwargs: + warnings.warn("`type_` is deprecated use `type` instead", DeprecationWarning) + + if "type" in kwargs: + raise TypeError("Error: using both 'type' and the deprecated 'type_' as arguments.") + kwargs["type"] = kwargs.pop("type_") + + return self._future_update(*args, **kwargs) + + def _future_update(self, type: Optional[str] = None, value: Optional[Any] = None) -> 'Token': + return Token.new_borrow_pos( + type if type is not None else self.type, + value if value is not None else self.value, + self + ) + + @classmethod + def new_borrow_pos(cls: Type[_T], type_: str, value: Any, borrow_t: 'Token') -> _T: + return cls(type_, value, borrow_t.start_pos, borrow_t.line, borrow_t.column, borrow_t.end_line, borrow_t.end_column, borrow_t.end_pos) + + def __reduce__(self): + return (self.__class__, (self.type, self.value, self.start_pos, self.line, self.column)) + + def __repr__(self): + return 'Token(%r, %r)' % (self.type, self.value) + + def __deepcopy__(self, memo): + return Token(self.type, self.value, self.start_pos, self.line, self.column) + + def __eq__(self, other): + if isinstance(other, Token) and self.type != other.type: + return False + + return str.__eq__(self, other) + + __hash__ = str.__hash__ + + +class LineCounter: + #-- + + __slots__ = 'char_pos', 'line', 'column', 'line_start_pos', 'newline_char' + + def __init__(self, newline_char): + self.newline_char = newline_char + self.char_pos = 0 + self.line = 1 + self.column = 1 + self.line_start_pos = 0 + + def __eq__(self, other): + if not isinstance(other, LineCounter): + return NotImplemented + + return self.char_pos == other.char_pos and self.newline_char == other.newline_char + + def feed(self, token: Token, test_newline=True): + #-- + if test_newline: + newlines = token.count(self.newline_char) + if newlines: + self.line += newlines + self.line_start_pos = self.char_pos + token.rindex(self.newline_char) + 1 + + self.char_pos += len(token) + self.column = self.char_pos - self.line_start_pos + 1 + + +class UnlessCallback: + def __init__(self, scanner): + self.scanner = scanner + + def __call__(self, t): + res = self.scanner.match(t.value, 0) + if res: + _value, t.type = res + return t + + +class CallChain: + def __init__(self, callback1, callback2, cond): + self.callback1 = callback1 + self.callback2 = callback2 + self.cond = cond + + def __call__(self, t): + t2 = self.callback1(t) + return self.callback2(t) if self.cond(t2) else t2 + + +def _get_match(re_, regexp, s, flags): + m = re_.match(regexp, s, flags) + if m: + return m.group(0) + +def _create_unless(terminals, g_regex_flags, re_, use_bytes): + tokens_by_type = classify(terminals, lambda t: type(t.pattern)) + assert len(tokens_by_type) <= 2, tokens_by_type.keys() + embedded_strs = set() + callback = {} + for retok in tokens_by_type.get(PatternRE, []): + unless = [] + for strtok in tokens_by_type.get(PatternStr, []): + if strtok.priority != retok.priority: + continue + s = strtok.pattern.value + if s == _get_match(re_, retok.pattern.to_regexp(), s, g_regex_flags): + unless.append(strtok) + if strtok.pattern.flags <= retok.pattern.flags: + embedded_strs.add(strtok) + if unless: + callback[retok.name] = UnlessCallback(Scanner(unless, g_regex_flags, re_, match_whole=True, use_bytes=use_bytes)) + + new_terminals = [t for t in terminals if t not in embedded_strs] + return new_terminals, callback + + +class Scanner: + def __init__(self, terminals, g_regex_flags, re_, use_bytes, match_whole=False): + self.terminals = terminals + self.g_regex_flags = g_regex_flags + self.re_ = re_ + self.use_bytes = use_bytes + self.match_whole = match_whole + + self.allowed_types = {t.name for t in self.terminals} + + self._mres = self._build_mres(terminals, len(terminals)) + + def _build_mres(self, terminals, max_size): + ## + + ## + + ## + + postfix = '$' if self.match_whole else '' + mres = [] + while terminals: + pattern = u'|'.join(u'(?P<%s>%s)' % (t.name, t.pattern.to_regexp() + postfix) for t in terminals[:max_size]) + if self.use_bytes: + pattern = pattern.encode('latin-1') + try: + mre = self.re_.compile(pattern, self.g_regex_flags) + except AssertionError: ## + + return self._build_mres(terminals, max_size // 2) + + mres.append(mre) + terminals = terminals[max_size:] + return mres + + def match(self, text, pos): + for mre in self._mres: + m = mre.match(text, pos) + if m: + return m.group(0), m.lastgroup + + +def _regexp_has_newline(r: str): + #-- + return '\n' in r or '\\n' in r or '\\s' in r or '[^' in r or ('(?s' in r and '.' in r) + + +class LexerState: + #-- + + __slots__ = 'text', 'line_ctr', 'last_token' + + text: str + line_ctr: LineCounter + last_token: Optional[Token] + + def __init__(self, text: str, line_ctr: Optional[LineCounter]=None, last_token: Optional[Token]=None): + self.text = text + self.line_ctr = line_ctr or LineCounter(b'\n' if isinstance(text, bytes) else '\n') + self.last_token = last_token + + def __eq__(self, other): + if not isinstance(other, LexerState): + return NotImplemented + + return self.text is other.text and self.line_ctr == other.line_ctr and self.last_token == other.last_token + + def __copy__(self): + return type(self)(self.text, copy(self.line_ctr), self.last_token) + + +class LexerThread: + #-- + + def __init__(self, lexer: 'Lexer', lexer_state: LexerState): + self.lexer = lexer + self.state = lexer_state + + @classmethod + def from_text(cls, lexer: 'Lexer', text: str) -> 'LexerThread': + return cls(lexer, LexerState(text)) + + def lex(self, parser_state): + return self.lexer.lex(self.state, parser_state) + + def __copy__(self): + return type(self)(self.lexer, copy(self.state)) + + _Token = Token + + +_Callback = Callable[[Token], Token] + +class Lexer(ABC): + #-- + @abstractmethod + def lex(self, lexer_state: LexerState, parser_state: Any) -> Iterator[Token]: + return NotImplemented + + def make_lexer_state(self, text): + #-- + return LexerState(text) + + +def _check_regex_collisions(terminal_to_regexp: Dict[TerminalDef, str], comparator, strict_mode, max_collisions_to_show=8): + if not comparator: + comparator = interegular.Comparator.from_regexes(terminal_to_regexp) + + ## + + ## + + max_time = 2 if strict_mode else 0.2 + + ## + + if comparator.count_marked_pairs() >= max_collisions_to_show: + return + for group in classify(terminal_to_regexp, lambda t: t.priority).values(): + for a, b in comparator.check(group, skip_marked=True): + assert a.priority == b.priority + ## + + comparator.mark(a, b) + + ## + + message = f"Collision between Terminals {a.name} and {b.name}. " + try: + example = comparator.get_example_overlap(a, b, max_time).format_multiline() + except ValueError: + ## + + example = "No example could be found fast enough. However, the collision does still exists" + if strict_mode: + raise LexError(f"{message}\n{example}") + logger.warning("%s The lexer will choose between them arbitrarily.\n%s", message, example) + if comparator.count_marked_pairs() >= max_collisions_to_show: + logger.warning("Found 8 regex collisions, will not check for more.") + return + + +class AbstractBasicLexer(Lexer): + terminals_by_name: Dict[str, TerminalDef] + + @abstractmethod + def __init__(self, conf: 'LexerConf', comparator=None) -> None: + ... + + @abstractmethod + def next_token(self, lex_state: LexerState, parser_state: Any = None) -> Token: + ... + + def lex(self, state: LexerState, parser_state: Any) -> Iterator[Token]: + with suppress(EOFError): + while True: + yield self.next_token(state, parser_state) + + +class BasicLexer(AbstractBasicLexer): + terminals: Collection[TerminalDef] + ignore_types: FrozenSet[str] + newline_types: FrozenSet[str] + user_callbacks: Dict[str, _Callback] + callback: Dict[str, _Callback] + re: ModuleType + + def __init__(self, conf: 'LexerConf', comparator=None) -> None: + terminals = list(conf.terminals) + assert all(isinstance(t, TerminalDef) for t in terminals), terminals + + self.re = conf.re_module + + if not conf.skip_validation: + ## + + terminal_to_regexp = {} + for t in terminals: + regexp = t.pattern.to_regexp() + try: + self.re.compile(regexp, conf.g_regex_flags) + except self.re.error: + raise LexError("Cannot compile token %s: %s" % (t.name, t.pattern)) + + if t.pattern.min_width == 0: + raise LexError("Lexer does not allow zero-width terminals. (%s: %s)" % (t.name, t.pattern)) + if t.pattern.type == "re": + terminal_to_regexp[t] = regexp + + if not (set(conf.ignore) <= {t.name for t in terminals}): + raise LexError("Ignore terminals are not defined: %s" % (set(conf.ignore) - {t.name for t in terminals})) + + if has_interegular: + _check_regex_collisions(terminal_to_regexp, comparator, conf.strict) + elif conf.strict: + raise LexError("interegular must be installed for strict mode. Use `pip install 'lark[interegular]'`.") + + ## + + self.newline_types = frozenset(t.name for t in terminals if _regexp_has_newline(t.pattern.to_regexp())) + self.ignore_types = frozenset(conf.ignore) + + terminals.sort(key=lambda x: (-x.priority, -x.pattern.max_width, -len(x.pattern.value), x.name)) + self.terminals = terminals + self.user_callbacks = conf.callbacks + self.g_regex_flags = conf.g_regex_flags + self.use_bytes = conf.use_bytes + self.terminals_by_name = conf.terminals_by_name + + self._scanner = None + + def _build_scanner(self): + terminals, self.callback = _create_unless(self.terminals, self.g_regex_flags, self.re, self.use_bytes) + assert all(self.callback.values()) + + for type_, f in self.user_callbacks.items(): + if type_ in self.callback: + ## + + self.callback[type_] = CallChain(self.callback[type_], f, lambda t: t.type == type_) + else: + self.callback[type_] = f + + self._scanner = Scanner(terminals, self.g_regex_flags, self.re, self.use_bytes) + + @property + def scanner(self): + if self._scanner is None: + self._build_scanner() + return self._scanner + + def match(self, text, pos): + return self.scanner.match(text, pos) + + def next_token(self, lex_state: LexerState, parser_state: Any = None) -> Token: + line_ctr = lex_state.line_ctr + while line_ctr.char_pos < len(lex_state.text): + res = self.match(lex_state.text, line_ctr.char_pos) + if not res: + allowed = self.scanner.allowed_types - self.ignore_types + if not allowed: + allowed = {""} + raise UnexpectedCharacters(lex_state.text, line_ctr.char_pos, line_ctr.line, line_ctr.column, + allowed=allowed, token_history=lex_state.last_token and [lex_state.last_token], + state=parser_state, terminals_by_name=self.terminals_by_name) + + value, type_ = res + + ignored = type_ in self.ignore_types + t = None + if not ignored or type_ in self.callback: + t = Token(type_, value, line_ctr.char_pos, line_ctr.line, line_ctr.column) + line_ctr.feed(value, type_ in self.newline_types) + if t is not None: + t.end_line = line_ctr.line + t.end_column = line_ctr.column + t.end_pos = line_ctr.char_pos + if t.type in self.callback: + t = self.callback[t.type](t) + if not ignored: + if not isinstance(t, Token): + raise LexError("Callbacks must return a token (returned %r)" % t) + lex_state.last_token = t + return t + + ## + + raise EOFError(self) + + +class ContextualLexer(Lexer): + lexers: Dict[int, AbstractBasicLexer] + root_lexer: AbstractBasicLexer + + BasicLexer: Type[AbstractBasicLexer] = BasicLexer + + def __init__(self, conf: 'LexerConf', states: Dict[int, Collection[str]], always_accept: Collection[str]=()) -> None: + terminals = list(conf.terminals) + terminals_by_name = conf.terminals_by_name + + trad_conf = copy(conf) + trad_conf.terminals = terminals + + if has_interegular and not conf.skip_validation: + comparator = interegular.Comparator.from_regexes({t: t.pattern.to_regexp() for t in terminals}) + else: + comparator = None + lexer_by_tokens: Dict[FrozenSet[str], AbstractBasicLexer] = {} + self.lexers = {} + for state, accepts in states.items(): + key = frozenset(accepts) + try: + lexer = lexer_by_tokens[key] + except KeyError: + accepts = set(accepts) | set(conf.ignore) | set(always_accept) + lexer_conf = copy(trad_conf) + lexer_conf.terminals = [terminals_by_name[n] for n in accepts if n in terminals_by_name] + lexer = self.BasicLexer(lexer_conf, comparator) + lexer_by_tokens[key] = lexer + + self.lexers[state] = lexer + + assert trad_conf.terminals is terminals + trad_conf.skip_validation = True ## + + self.root_lexer = self.BasicLexer(trad_conf, comparator) + + def lex(self, lexer_state: LexerState, parser_state: 'ParserState') -> Iterator[Token]: + try: + while True: + lexer = self.lexers[parser_state.position] + yield lexer.next_token(lexer_state, parser_state) + except EOFError: + pass + except UnexpectedCharacters as e: + ## + + ## + + try: + last_token = lexer_state.last_token ## + + token = self.root_lexer.next_token(lexer_state, parser_state) + raise UnexpectedToken(token, e.allowed, state=parser_state, token_history=[last_token], terminals_by_name=self.root_lexer.terminals_by_name) + except UnexpectedCharacters: + raise e ## + + + + +_ParserArgType: 'TypeAlias' = 'Literal["earley", "lalr", "cyk", "auto"]' +_LexerArgType: 'TypeAlias' = 'Union[Literal["auto", "basic", "contextual", "dynamic", "dynamic_complete"], Type[Lexer]]' +_LexerCallback = Callable[[Token], Token] +ParserCallbacks = Dict[str, Callable] + +class LexerConf(Serialize): + __serialize_fields__ = 'terminals', 'ignore', 'g_regex_flags', 'use_bytes', 'lexer_type' + __serialize_namespace__ = TerminalDef, + + terminals: Collection[TerminalDef] + re_module: ModuleType + ignore: Collection[str] + postlex: 'Optional[PostLex]' + callbacks: Dict[str, _LexerCallback] + g_regex_flags: int + skip_validation: bool + use_bytes: bool + lexer_type: Optional[_LexerArgType] + strict: bool + + def __init__(self, terminals: Collection[TerminalDef], re_module: ModuleType, ignore: Collection[str]=(), postlex: 'Optional[PostLex]'=None, + callbacks: Optional[Dict[str, _LexerCallback]]=None, g_regex_flags: int=0, skip_validation: bool=False, use_bytes: bool=False, strict: bool=False): + self.terminals = terminals + self.terminals_by_name = {t.name: t for t in self.terminals} + assert len(self.terminals) == len(self.terminals_by_name) + self.ignore = ignore + self.postlex = postlex + self.callbacks = callbacks or {} + self.g_regex_flags = g_regex_flags + self.re_module = re_module + self.skip_validation = skip_validation + self.use_bytes = use_bytes + self.strict = strict + self.lexer_type = None + + def _deserialize(self): + self.terminals_by_name = {t.name: t for t in self.terminals} + + def __deepcopy__(self, memo=None): + return type(self)( + deepcopy(self.terminals, memo), + self.re_module, + deepcopy(self.ignore, memo), + deepcopy(self.postlex, memo), + deepcopy(self.callbacks, memo), + deepcopy(self.g_regex_flags, memo), + deepcopy(self.skip_validation, memo), + deepcopy(self.use_bytes, memo), + ) + +class ParserConf(Serialize): + __serialize_fields__ = 'rules', 'start', 'parser_type' + + rules: List['Rule'] + callbacks: ParserCallbacks + start: List[str] + parser_type: _ParserArgType + + def __init__(self, rules: List['Rule'], callbacks: ParserCallbacks, start: List[str]): + assert isinstance(start, list) + self.rules = rules + self.callbacks = callbacks + self.start = start + + +from functools import partial, wraps +from itertools import product + + +class ExpandSingleChild: + def __init__(self, node_builder): + self.node_builder = node_builder + + def __call__(self, children): + if len(children) == 1: + return children[0] + else: + return self.node_builder(children) + + + +class PropagatePositions: + def __init__(self, node_builder, node_filter=None): + self.node_builder = node_builder + self.node_filter = node_filter + + def __call__(self, children): + res = self.node_builder(children) + + if isinstance(res, Tree): + ## + + ## + + ## + + ## + + + res_meta = res.meta + + first_meta = self._pp_get_meta(children) + if first_meta is not None: + if not hasattr(res_meta, 'line'): + ## + + res_meta.line = getattr(first_meta, 'container_line', first_meta.line) + res_meta.column = getattr(first_meta, 'container_column', first_meta.column) + res_meta.start_pos = getattr(first_meta, 'container_start_pos', first_meta.start_pos) + res_meta.empty = False + + res_meta.container_line = getattr(first_meta, 'container_line', first_meta.line) + res_meta.container_column = getattr(first_meta, 'container_column', first_meta.column) + res_meta.container_start_pos = getattr(first_meta, 'container_start_pos', first_meta.start_pos) + + last_meta = self._pp_get_meta(reversed(children)) + if last_meta is not None: + if not hasattr(res_meta, 'end_line'): + res_meta.end_line = getattr(last_meta, 'container_end_line', last_meta.end_line) + res_meta.end_column = getattr(last_meta, 'container_end_column', last_meta.end_column) + res_meta.end_pos = getattr(last_meta, 'container_end_pos', last_meta.end_pos) + res_meta.empty = False + + res_meta.container_end_line = getattr(last_meta, 'container_end_line', last_meta.end_line) + res_meta.container_end_column = getattr(last_meta, 'container_end_column', last_meta.end_column) + res_meta.container_end_pos = getattr(last_meta, 'container_end_pos', last_meta.end_pos) + + return res + + def _pp_get_meta(self, children): + for c in children: + if self.node_filter is not None and not self.node_filter(c): + continue + if isinstance(c, Tree): + if not c.meta.empty: + return c.meta + elif isinstance(c, Token): + return c + elif hasattr(c, '__lark_meta__'): + return c.__lark_meta__() + +def make_propagate_positions(option): + if callable(option): + return partial(PropagatePositions, node_filter=option) + elif option is True: + return PropagatePositions + elif option is False: + return None + + raise ConfigurationError('Invalid option for propagate_positions: %r' % option) + + +class ChildFilter: + def __init__(self, to_include, append_none, node_builder): + self.node_builder = node_builder + self.to_include = to_include + self.append_none = append_none + + def __call__(self, children): + filtered = [] + + for i, to_expand, add_none in self.to_include: + if add_none: + filtered += [None] * add_none + if to_expand: + filtered += children[i].children + else: + filtered.append(children[i]) + + if self.append_none: + filtered += [None] * self.append_none + + return self.node_builder(filtered) + + +class ChildFilterLALR(ChildFilter): + #-- + + def __call__(self, children): + filtered = [] + for i, to_expand, add_none in self.to_include: + if add_none: + filtered += [None] * add_none + if to_expand: + if filtered: + filtered += children[i].children + else: ## + + filtered = children[i].children + else: + filtered.append(children[i]) + + if self.append_none: + filtered += [None] * self.append_none + + return self.node_builder(filtered) + + +class ChildFilterLALR_NoPlaceholders(ChildFilter): + #-- + def __init__(self, to_include, node_builder): + self.node_builder = node_builder + self.to_include = to_include + + def __call__(self, children): + filtered = [] + for i, to_expand in self.to_include: + if to_expand: + if filtered: + filtered += children[i].children + else: ## + + filtered = children[i].children + else: + filtered.append(children[i]) + return self.node_builder(filtered) + + +def _should_expand(sym): + return not sym.is_term and sym.name.startswith('_') + + +def maybe_create_child_filter(expansion, keep_all_tokens, ambiguous, _empty_indices: List[bool]): + ## + + if _empty_indices: + assert _empty_indices.count(False) == len(expansion) + s = ''.join(str(int(b)) for b in _empty_indices) + empty_indices = [len(ones) for ones in s.split('0')] + assert len(empty_indices) == len(expansion)+1, (empty_indices, len(expansion)) + else: + empty_indices = [0] * (len(expansion)+1) + + to_include = [] + nones_to_add = 0 + for i, sym in enumerate(expansion): + nones_to_add += empty_indices[i] + if keep_all_tokens or not (sym.is_term and sym.filter_out): + to_include.append((i, _should_expand(sym), nones_to_add)) + nones_to_add = 0 + + nones_to_add += empty_indices[len(expansion)] + + if _empty_indices or len(to_include) < len(expansion) or any(to_expand for i, to_expand,_ in to_include): + if _empty_indices or ambiguous: + return partial(ChildFilter if ambiguous else ChildFilterLALR, to_include, nones_to_add) + else: + ## + + return partial(ChildFilterLALR_NoPlaceholders, [(i, x) for i,x,_ in to_include]) + + +class AmbiguousExpander: + #-- + def __init__(self, to_expand, tree_class, node_builder): + self.node_builder = node_builder + self.tree_class = tree_class + self.to_expand = to_expand + + def __call__(self, children): + def _is_ambig_tree(t): + return hasattr(t, 'data') and t.data == '_ambig' + + ## + + ## + + ## + + ## + + ambiguous = [] + for i, child in enumerate(children): + if _is_ambig_tree(child): + if i in self.to_expand: + ambiguous.append(i) + + child.expand_kids_by_data('_ambig') + + if not ambiguous: + return self.node_builder(children) + + expand = [child.children if i in ambiguous else (child,) for i, child in enumerate(children)] + return self.tree_class('_ambig', [self.node_builder(list(f)) for f in product(*expand)]) + + +def maybe_create_ambiguous_expander(tree_class, expansion, keep_all_tokens): + to_expand = [i for i, sym in enumerate(expansion) + if keep_all_tokens or ((not (sym.is_term and sym.filter_out)) and _should_expand(sym))] + if to_expand: + return partial(AmbiguousExpander, to_expand, tree_class) + + +class AmbiguousIntermediateExpander: + #-- + + def __init__(self, tree_class, node_builder): + self.node_builder = node_builder + self.tree_class = tree_class + + def __call__(self, children): + def _is_iambig_tree(child): + return hasattr(child, 'data') and child.data == '_iambig' + + def _collapse_iambig(children): + #-- + + ## + + ## + + if children and _is_iambig_tree(children[0]): + iambig_node = children[0] + result = [] + for grandchild in iambig_node.children: + collapsed = _collapse_iambig(grandchild.children) + if collapsed: + for child in collapsed: + child.children += children[1:] + result += collapsed + else: + new_tree = self.tree_class('_inter', grandchild.children + children[1:]) + result.append(new_tree) + return result + + collapsed = _collapse_iambig(children) + if collapsed: + processed_nodes = [self.node_builder(c.children) for c in collapsed] + return self.tree_class('_ambig', processed_nodes) + + return self.node_builder(children) + + + +def inplace_transformer(func): + @wraps(func) + def f(children): + ## + + tree = Tree(func.__name__, children) + return func(tree) + return f + + +def apply_visit_wrapper(func, name, wrapper): + if wrapper is _vargs_meta or wrapper is _vargs_meta_inline: + raise NotImplementedError("Meta args not supported for internal transformer") + + @wraps(func) + def f(children): + return wrapper(func, name, children, None) + return f + + +class ParseTreeBuilder: + def __init__(self, rules, tree_class, propagate_positions=False, ambiguous=False, maybe_placeholders=False): + self.tree_class = tree_class + self.propagate_positions = propagate_positions + self.ambiguous = ambiguous + self.maybe_placeholders = maybe_placeholders + + self.rule_builders = list(self._init_builders(rules)) + + def _init_builders(self, rules): + propagate_positions = make_propagate_positions(self.propagate_positions) + + for rule in rules: + options = rule.options + keep_all_tokens = options.keep_all_tokens + expand_single_child = options.expand1 + + wrapper_chain = list(filter(None, [ + (expand_single_child and not rule.alias) and ExpandSingleChild, + maybe_create_child_filter(rule.expansion, keep_all_tokens, self.ambiguous, options.empty_indices if self.maybe_placeholders else None), + propagate_positions, + self.ambiguous and maybe_create_ambiguous_expander(self.tree_class, rule.expansion, keep_all_tokens), + self.ambiguous and partial(AmbiguousIntermediateExpander, self.tree_class) + ])) + + yield rule, wrapper_chain + + def create_callback(self, transformer=None): + callbacks = {} + + default_handler = getattr(transformer, '__default__', None) + if default_handler: + def default_callback(data, children): + return default_handler(data, children, None) + else: + default_callback = self.tree_class + + for rule, wrapper_chain in self.rule_builders: + + user_callback_name = rule.alias or rule.options.template_source or rule.origin.name + try: + f = getattr(transformer, user_callback_name) + wrapper = getattr(f, 'visit_wrapper', None) + if wrapper is not None: + f = apply_visit_wrapper(f, user_callback_name, wrapper) + elif isinstance(transformer, Transformer_InPlace): + f = inplace_transformer(f) + except AttributeError: + f = partial(default_callback, user_callback_name) + + for w in wrapper_chain: + f = w(f) + + if rule in callbacks: + raise GrammarError("Rule '%s' already exists" % (rule,)) + + callbacks[rule] = f + + return callbacks + + + +class Action: + def __init__(self, name): + self.name = name + def __str__(self): + return self.name + def __repr__(self): + return str(self) + +Shift = Action('Shift') +Reduce = Action('Reduce') + +StateT = TypeVar("StateT") + +class ParseTableBase(Generic[StateT]): + states: Dict[StateT, Dict[str, Tuple]] + start_states: Dict[str, StateT] + end_states: Dict[str, StateT] + + def __init__(self, states, start_states, end_states): + self.states = states + self.start_states = start_states + self.end_states = end_states + + def serialize(self, memo): + tokens = Enumerator() + + states = { + state: {tokens.get(token): ((1, arg.serialize(memo)) if action is Reduce else (0, arg)) + for token, (action, arg) in actions.items()} + for state, actions in self.states.items() + } + + return { + 'tokens': tokens.reversed(), + 'states': states, + 'start_states': self.start_states, + 'end_states': self.end_states, + } + + @classmethod + def deserialize(cls, data, memo): + tokens = data['tokens'] + states = { + state: {tokens[token]: ((Reduce, Rule.deserialize(arg, memo)) if action==1 else (Shift, arg)) + for token, (action, arg) in actions.items()} + for state, actions in data['states'].items() + } + return cls(states, data['start_states'], data['end_states']) + +class ParseTable(ParseTableBase['State']): + #-- + pass + + +class IntParseTable(ParseTableBase[int]): + #-- + + @classmethod + def from_ParseTable(cls, parse_table: ParseTable): + enum = list(parse_table.states) + state_to_idx: Dict['State', int] = {s:i for i,s in enumerate(enum)} + int_states = {} + + for s, la in parse_table.states.items(): + la = {k:(v[0], state_to_idx[v[1]]) if v[0] is Shift else v + for k,v in la.items()} + int_states[ state_to_idx[s] ] = la + + + start_states = {start:state_to_idx[s] for start, s in parse_table.start_states.items()} + end_states = {start:state_to_idx[s] for start, s in parse_table.end_states.items()} + return cls(int_states, start_states, end_states) + + + +class ParseConf(Generic[StateT]): + __slots__ = 'parse_table', 'callbacks', 'start', 'start_state', 'end_state', 'states' + + parse_table: ParseTableBase[StateT] + callbacks: ParserCallbacks + start: str + + start_state: StateT + end_state: StateT + states: Dict[StateT, Dict[str, tuple]] + + def __init__(self, parse_table: ParseTableBase[StateT], callbacks: ParserCallbacks, start: str): + self.parse_table = parse_table + + self.start_state = self.parse_table.start_states[start] + self.end_state = self.parse_table.end_states[start] + self.states = self.parse_table.states + + self.callbacks = callbacks + self.start = start + +class ParserState(Generic[StateT]): + __slots__ = 'parse_conf', 'lexer', 'state_stack', 'value_stack' + + parse_conf: ParseConf[StateT] + lexer: LexerThread + state_stack: List[StateT] + value_stack: list + + def __init__(self, parse_conf: ParseConf[StateT], lexer: LexerThread, state_stack=None, value_stack=None): + self.parse_conf = parse_conf + self.lexer = lexer + self.state_stack = state_stack or [self.parse_conf.start_state] + self.value_stack = value_stack or [] + + @property + def position(self) -> StateT: + return self.state_stack[-1] + + ## + + def __eq__(self, other) -> bool: + if not isinstance(other, ParserState): + return NotImplemented + return len(self.state_stack) == len(other.state_stack) and self.position == other.position + + def __copy__(self): + return type(self)( + self.parse_conf, + self.lexer, ## + + copy(self.state_stack), + deepcopy(self.value_stack), + ) + + def copy(self) -> 'ParserState[StateT]': + return copy(self) + + def feed_token(self, token: Token, is_end=False) -> Any: + state_stack = self.state_stack + value_stack = self.value_stack + states = self.parse_conf.states + end_state = self.parse_conf.end_state + callbacks = self.parse_conf.callbacks + + while True: + state = state_stack[-1] + try: + action, arg = states[state][token.type] + except KeyError: + expected = {s for s in states[state].keys() if s.isupper()} + raise UnexpectedToken(token, expected, state=self, interactive_parser=None) + + assert arg != end_state + + if action is Shift: + ## + + assert not is_end + state_stack.append(arg) + value_stack.append(token if token.type not in callbacks else callbacks[token.type](token)) + return + else: + ## + + rule = arg + size = len(rule.expansion) + if size: + s = value_stack[-size:] + del state_stack[-size:] + del value_stack[-size:] + else: + s = [] + + value = callbacks[rule](s) if callbacks else s + + _action, new_state = states[state_stack[-1]][rule.origin.name] + assert _action is Shift + state_stack.append(new_state) + value_stack.append(value) + + if is_end and state_stack[-1] == end_state: + return value_stack[-1] + + +class LALR_Parser(Serialize): + def __init__(self, parser_conf: ParserConf, debug: bool=False, strict: bool=False): + analysis = LALR_Analyzer(parser_conf, debug=debug, strict=strict) + analysis.compute_lalr() + callbacks = parser_conf.callbacks + + self._parse_table = analysis.parse_table + self.parser_conf = parser_conf + self.parser = _Parser(analysis.parse_table, callbacks, debug) + + @classmethod + def deserialize(cls, data, memo, callbacks, debug=False): + inst = cls.__new__(cls) + inst._parse_table = IntParseTable.deserialize(data, memo) + inst.parser = _Parser(inst._parse_table, callbacks, debug) + return inst + + def serialize(self, memo: Any = None) -> Dict[str, Any]: + return self._parse_table.serialize(memo) + + def parse_interactive(self, lexer: LexerThread, start: str): + return self.parser.parse(lexer, start, start_interactive=True) + + def parse(self, lexer, start, on_error=None): + try: + return self.parser.parse(lexer, start) + except UnexpectedInput as e: + if on_error is None: + raise + + while True: + if isinstance(e, UnexpectedCharacters): + s = e.interactive_parser.lexer_thread.state + p = s.line_ctr.char_pos + + if not on_error(e): + raise e + + if isinstance(e, UnexpectedCharacters): + ## + + if p == s.line_ctr.char_pos: + s.line_ctr.feed(s.text[p:p+1]) + + try: + return e.interactive_parser.resume_parse() + except UnexpectedToken as e2: + if (isinstance(e, UnexpectedToken) + and e.token.type == e2.token.type == '$END' + and e.interactive_parser == e2.interactive_parser): + ## + + raise e2 + e = e2 + except UnexpectedCharacters as e2: + e = e2 + + +class _Parser: + parse_table: ParseTableBase + callbacks: ParserCallbacks + debug: bool + + def __init__(self, parse_table: ParseTableBase, callbacks: ParserCallbacks, debug: bool=False): + self.parse_table = parse_table + self.callbacks = callbacks + self.debug = debug + + def parse(self, lexer: LexerThread, start: str, value_stack=None, state_stack=None, start_interactive=False): + parse_conf = ParseConf(self.parse_table, self.callbacks, start) + parser_state = ParserState(parse_conf, lexer, state_stack, value_stack) + if start_interactive: + return InteractiveParser(self, parser_state, parser_state.lexer) + return self.parse_from_state(parser_state) + + + def parse_from_state(self, state: ParserState, last_token: Optional[Token]=None): + #-- + try: + token = last_token + for token in state.lexer.lex(state): + assert token is not None + state.feed_token(token) + + end_token = Token.new_borrow_pos('$END', '', token) if token else Token('$END', '', 0, 1, 1) + return state.feed_token(end_token, True) + except UnexpectedInput as e: + try: + e.interactive_parser = InteractiveParser(self, state, state.lexer) + except NameError: + pass + raise e + except Exception as e: + if self.debug: + print("") + print("STATE STACK DUMP") + print("----------------") + for i, s in enumerate(state.state_stack): + print('%d)' % i , s) + print("") + + raise + + +class InteractiveParser: + #-- + def __init__(self, parser, parser_state, lexer_thread: LexerThread): + self.parser = parser + self.parser_state = parser_state + self.lexer_thread = lexer_thread + self.result = None + + @property + def lexer_state(self) -> LexerThread: + warnings.warn("lexer_state will be removed in subsequent releases. Use lexer_thread instead.", DeprecationWarning) + return self.lexer_thread + + def feed_token(self, token: Token): + #-- + return self.parser_state.feed_token(token, token.type == '$END') + + def iter_parse(self) -> Iterator[Token]: + #-- + for token in self.lexer_thread.lex(self.parser_state): + yield token + self.result = self.feed_token(token) + + def exhaust_lexer(self) -> List[Token]: + #-- + return list(self.iter_parse()) + + + def feed_eof(self, last_token=None): + #-- + eof = Token.new_borrow_pos('$END', '', last_token) if last_token is not None else self.lexer_thread._Token('$END', '', 0, 1, 1) + return self.feed_token(eof) + + + def __copy__(self): + #-- + return type(self)( + self.parser, + copy(self.parser_state), + copy(self.lexer_thread), + ) + + def copy(self): + return copy(self) + + def __eq__(self, other): + if not isinstance(other, InteractiveParser): + return False + + return self.parser_state == other.parser_state and self.lexer_thread == other.lexer_thread + + def as_immutable(self): + #-- + p = copy(self) + return ImmutableInteractiveParser(p.parser, p.parser_state, p.lexer_thread) + + def pretty(self): + #-- + out = ["Parser choices:"] + for k, v in self.choices().items(): + out.append('\t- %s -> %r' % (k, v)) + out.append('stack size: %s' % len(self.parser_state.state_stack)) + return '\n'.join(out) + + def choices(self): + #-- + return self.parser_state.parse_conf.parse_table.states[self.parser_state.position] + + def accepts(self): + #-- + accepts = set() + conf_no_callbacks = copy(self.parser_state.parse_conf) + ## + + ## + + conf_no_callbacks.callbacks = {} + for t in self.choices(): + if t.isupper(): ## + + new_cursor = copy(self) + new_cursor.parser_state.parse_conf = conf_no_callbacks + try: + new_cursor.feed_token(self.lexer_thread._Token(t, '')) + except UnexpectedToken: + pass + else: + accepts.add(t) + return accepts + + def resume_parse(self): + #-- + return self.parser.parse_from_state(self.parser_state, last_token=self.lexer_thread.state.last_token) + + + +class ImmutableInteractiveParser(InteractiveParser): + #-- + + result = None + + def __hash__(self): + return hash((self.parser_state, self.lexer_thread)) + + def feed_token(self, token): + c = copy(self) + c.result = InteractiveParser.feed_token(c, token) + return c + + def exhaust_lexer(self): + #-- + cursor = self.as_mutable() + cursor.exhaust_lexer() + return cursor.as_immutable() + + def as_mutable(self): + #-- + p = copy(self) + return InteractiveParser(p.parser, p.parser_state, p.lexer_thread) + + + +def _wrap_lexer(lexer_class): + future_interface = getattr(lexer_class, '__future_interface__', False) + if future_interface: + return lexer_class + else: + class CustomLexerWrapper(Lexer): + def __init__(self, lexer_conf): + self.lexer = lexer_class(lexer_conf) + def lex(self, lexer_state, parser_state): + return self.lexer.lex(lexer_state.text) + return CustomLexerWrapper + + +def _deserialize_parsing_frontend(data, memo, lexer_conf, callbacks, options): + parser_conf = ParserConf.deserialize(data['parser_conf'], memo) + cls = (options and options._plugins.get('LALR_Parser')) or LALR_Parser + parser = cls.deserialize(data['parser'], memo, callbacks, options.debug) + parser_conf.callbacks = callbacks + return ParsingFrontend(lexer_conf, parser_conf, options, parser=parser) + + +_parser_creators: 'Dict[str, Callable[[LexerConf, Any, Any], Any]]' = {} + + +class ParsingFrontend(Serialize): + __serialize_fields__ = 'lexer_conf', 'parser_conf', 'parser' + + lexer_conf: LexerConf + parser_conf: ParserConf + options: Any + + def __init__(self, lexer_conf: LexerConf, parser_conf: ParserConf, options, parser=None): + self.parser_conf = parser_conf + self.lexer_conf = lexer_conf + self.options = options + + ## + + if parser: ## + + self.parser = parser + else: + create_parser = _parser_creators.get(parser_conf.parser_type) + assert create_parser is not None, "{} is not supported in standalone mode".format( + parser_conf.parser_type + ) + self.parser = create_parser(lexer_conf, parser_conf, options) + + ## + + lexer_type = lexer_conf.lexer_type + self.skip_lexer = False + if lexer_type in ('dynamic', 'dynamic_complete'): + assert lexer_conf.postlex is None + self.skip_lexer = True + return + + if isinstance(lexer_type, type): + assert issubclass(lexer_type, Lexer) + self.lexer = _wrap_lexer(lexer_type)(lexer_conf) + elif isinstance(lexer_type, str): + create_lexer = { + 'basic': create_basic_lexer, + 'contextual': create_contextual_lexer, + }[lexer_type] + self.lexer = create_lexer(lexer_conf, self.parser, lexer_conf.postlex, options) + else: + raise TypeError("Bad value for lexer_type: {lexer_type}") + + if lexer_conf.postlex: + self.lexer = PostLexConnector(self.lexer, lexer_conf.postlex) + + def _verify_start(self, start=None): + if start is None: + start_decls = self.parser_conf.start + if len(start_decls) > 1: + raise ConfigurationError("Lark initialized with more than 1 possible start rule. Must specify which start rule to parse", start_decls) + start ,= start_decls + elif start not in self.parser_conf.start: + raise ConfigurationError("Unknown start rule %s. Must be one of %r" % (start, self.parser_conf.start)) + return start + + def _make_lexer_thread(self, text: str) -> Union[str, LexerThread]: + cls = (self.options and self.options._plugins.get('LexerThread')) or LexerThread + return text if self.skip_lexer else cls.from_text(self.lexer, text) + + def parse(self, text: str, start=None, on_error=None): + chosen_start = self._verify_start(start) + kw = {} if on_error is None else {'on_error': on_error} + stream = self._make_lexer_thread(text) + return self.parser.parse(stream, chosen_start, **kw) + + def parse_interactive(self, text: Optional[str]=None, start=None): + ## + + ## + + chosen_start = self._verify_start(start) + if self.parser_conf.parser_type != 'lalr': + raise ConfigurationError("parse_interactive() currently only works with parser='lalr' ") + stream = self._make_lexer_thread(text) ## + + return self.parser.parse_interactive(stream, chosen_start) + + +def _validate_frontend_args(parser, lexer) -> None: + assert_config(parser, ('lalr', 'earley', 'cyk')) + if not isinstance(lexer, type): ## + + expected = { + 'lalr': ('basic', 'contextual'), + 'earley': ('basic', 'dynamic', 'dynamic_complete'), + 'cyk': ('basic', ), + }[parser] + assert_config(lexer, expected, 'Parser %r does not support lexer %%r, expected one of %%s' % parser) + + +def _get_lexer_callbacks(transformer, terminals): + result = {} + for terminal in terminals: + callback = getattr(transformer, terminal.name, None) + if callback is not None: + result[terminal.name] = callback + return result + +class PostLexConnector: + def __init__(self, lexer, postlexer): + self.lexer = lexer + self.postlexer = postlexer + + def lex(self, lexer_state, parser_state): + i = self.lexer.lex(lexer_state, parser_state) + return self.postlexer.process(i) + + + +def create_basic_lexer(lexer_conf, parser, postlex, options) -> BasicLexer: + cls = (options and options._plugins.get('BasicLexer')) or BasicLexer + return cls(lexer_conf) + +def create_contextual_lexer(lexer_conf: LexerConf, parser, postlex, options) -> ContextualLexer: + cls = (options and options._plugins.get('ContextualLexer')) or ContextualLexer + parse_table: ParseTableBase[int] = parser._parse_table + states: Dict[int, Collection[str]] = {idx:list(t.keys()) for idx, t in parse_table.states.items()} + always_accept: Collection[str] = postlex.always_accept if postlex else () + return cls(lexer_conf, states, always_accept=always_accept) + +def create_lalr_parser(lexer_conf: LexerConf, parser_conf: ParserConf, options=None) -> LALR_Parser: + debug = options.debug if options else False + strict = options.strict if options else False + cls = (options and options._plugins.get('LALR_Parser')) or LALR_Parser + return cls(parser_conf, debug=debug, strict=strict) + +_parser_creators['lalr'] = create_lalr_parser + + + + +class PostLex(ABC): + @abstractmethod + def process(self, stream: Iterator[Token]) -> Iterator[Token]: + return stream + + always_accept: Iterable[str] = () + +class LarkOptions(Serialize): + #-- + + start: List[str] + debug: bool + strict: bool + transformer: 'Optional[Transformer]' + propagate_positions: Union[bool, str] + maybe_placeholders: bool + cache: Union[bool, str] + regex: bool + g_regex_flags: int + keep_all_tokens: bool + tree_class: Optional[Callable[[str, List], Any]] + parser: _ParserArgType + lexer: _LexerArgType + ambiguity: 'Literal["auto", "resolve", "explicit", "forest"]' + postlex: Optional[PostLex] + priority: 'Optional[Literal["auto", "normal", "invert"]]' + lexer_callbacks: Dict[str, Callable[[Token], Token]] + use_bytes: bool + ordered_sets: bool + edit_terminals: Optional[Callable[[TerminalDef], TerminalDef]] + import_paths: 'List[Union[str, Callable[[Union[None, str, PackageResource], str], Tuple[str, str]]]]' + source_path: Optional[str] + + OPTIONS_DOC = r""" + **=== General Options ===** + + start + The start symbol. Either a string, or a list of strings for multiple possible starts (Default: "start") + debug + Display debug information and extra warnings. Use only when debugging (Default: ``False``) + When used with Earley, it generates a forest graph as "sppf.png", if 'dot' is installed. + strict + Throw an exception on any potential ambiguity, including shift/reduce conflicts, and regex collisions. + transformer + Applies the transformer to every parse tree (equivalent to applying it after the parse, but faster) + propagate_positions + Propagates positional attributes into the 'meta' attribute of all tree branches. + Sets attributes: (line, column, end_line, end_column, start_pos, end_pos, + container_line, container_column, container_end_line, container_end_column) + Accepts ``False``, ``True``, or a callable, which will filter which nodes to ignore when propagating. + maybe_placeholders + When ``True``, the ``[]`` operator returns ``None`` when not matched. + When ``False``, ``[]`` behaves like the ``?`` operator, and returns no value at all. + (default= ``True``) + cache + Cache the results of the Lark grammar analysis, for x2 to x3 faster loading. LALR only for now. + + - When ``False``, does nothing (default) + - When ``True``, caches to a temporary file in the local directory + - When given a string, caches to the path pointed by the string + regex + When True, uses the ``regex`` module instead of the stdlib ``re``. + g_regex_flags + Flags that are applied to all terminals (both regex and strings) + keep_all_tokens + Prevent the tree builder from automagically removing "punctuation" tokens (Default: ``False``) + tree_class + Lark will produce trees comprised of instances of this class instead of the default ``lark.Tree``. + + **=== Algorithm Options ===** + + parser + Decides which parser engine to use. Accepts "earley" or "lalr". (Default: "earley"). + (there is also a "cyk" option for legacy) + lexer + Decides whether or not to use a lexer stage + + - "auto" (default): Choose for me based on the parser + - "basic": Use a basic lexer + - "contextual": Stronger lexer (only works with parser="lalr") + - "dynamic": Flexible and powerful (only with parser="earley") + - "dynamic_complete": Same as dynamic, but tries *every* variation of tokenizing possible. + ambiguity + Decides how to handle ambiguity in the parse. Only relevant if parser="earley" + + - "resolve": The parser will automatically choose the simplest derivation + (it chooses consistently: greedy for tokens, non-greedy for rules) + - "explicit": The parser will return all derivations wrapped in "_ambig" tree nodes (i.e. a forest). + - "forest": The parser will return the root of the shared packed parse forest. + + **=== Misc. / Domain Specific Options ===** + + postlex + Lexer post-processing (Default: ``None``) Only works with the basic and contextual lexers. + priority + How priorities should be evaluated - "auto", ``None``, "normal", "invert" (Default: "auto") + lexer_callbacks + Dictionary of callbacks for the lexer. May alter tokens during lexing. Use with caution. + use_bytes + Accept an input of type ``bytes`` instead of ``str``. + ordered_sets + Should Earley use ordered-sets to achieve stable output (~10% slower than regular sets. Default: True) + edit_terminals + A callback for editing the terminals before parse. + import_paths + A List of either paths or loader functions to specify from where grammars are imported + source_path + Override the source of from where the grammar was loaded. Useful for relative imports and unconventional grammar loading + **=== End of Options ===** + """ + if __doc__: + __doc__ += OPTIONS_DOC + + + ## + + ## + + ## + + ## + + ## + + ## + + _defaults: Dict[str, Any] = { + 'debug': False, + 'strict': False, + 'keep_all_tokens': False, + 'tree_class': None, + 'cache': False, + 'postlex': None, + 'parser': 'earley', + 'lexer': 'auto', + 'transformer': None, + 'start': 'start', + 'priority': 'auto', + 'ambiguity': 'auto', + 'regex': False, + 'propagate_positions': False, + 'lexer_callbacks': {}, + 'maybe_placeholders': True, + 'edit_terminals': None, + 'g_regex_flags': 0, + 'use_bytes': False, + 'ordered_sets': True, + 'import_paths': [], + 'source_path': None, + '_plugins': {}, + } + + def __init__(self, options_dict: Dict[str, Any]) -> None: + o = dict(options_dict) + + options = {} + for name, default in self._defaults.items(): + if name in o: + value = o.pop(name) + if isinstance(default, bool) and name not in ('cache', 'use_bytes', 'propagate_positions'): + value = bool(value) + else: + value = default + + options[name] = value + + if isinstance(options['start'], str): + options['start'] = [options['start']] + + self.__dict__['options'] = options + + + assert_config(self.parser, ('earley', 'lalr', 'cyk', None)) + + if self.parser == 'earley' and self.transformer: + raise ConfigurationError('Cannot specify an embedded transformer when using the Earley algorithm. ' + 'Please use your transformer on the resulting parse tree, or use a different algorithm (i.e. LALR)') + + if o: + raise ConfigurationError("Unknown options: %s" % o.keys()) + + def __getattr__(self, name: str) -> Any: + try: + return self.__dict__['options'][name] + except KeyError as e: + raise AttributeError(e) + + def __setattr__(self, name: str, value: str) -> None: + assert_config(name, self.options.keys(), "%r isn't a valid option. Expected one of: %s") + self.options[name] = value + + def serialize(self, memo = None) -> Dict[str, Any]: + return self.options + + @classmethod + def deserialize(cls, data: Dict[str, Any], memo: Dict[int, Union[TerminalDef, Rule]]) -> "LarkOptions": + return cls(data) + + +## + +## + +_LOAD_ALLOWED_OPTIONS = {'postlex', 'transformer', 'lexer_callbacks', 'use_bytes', 'debug', 'g_regex_flags', 'regex', 'propagate_positions', 'tree_class', '_plugins'} + +_VALID_PRIORITY_OPTIONS = ('auto', 'normal', 'invert', None) +_VALID_AMBIGUITY_OPTIONS = ('auto', 'resolve', 'explicit', 'forest') + + +_T = TypeVar('_T', bound="Lark") + +class Lark(Serialize): + #-- + + source_path: str + source_grammar: str + grammar: 'Grammar' + options: LarkOptions + lexer: Lexer + parser: 'ParsingFrontend' + terminals: Collection[TerminalDef] + + def __init__(self, grammar: 'Union[Grammar, str, IO[str]]', **options) -> None: + self.options = LarkOptions(options) + re_module: types.ModuleType + + ## + + use_regex = self.options.regex + if use_regex: + if _has_regex: + re_module = regex + else: + raise ImportError('`regex` module must be installed if calling `Lark(regex=True)`.') + else: + re_module = re + + ## + + if self.options.source_path is None: + try: + self.source_path = grammar.name ## + + except AttributeError: + self.source_path = '' + else: + self.source_path = self.options.source_path + + ## + + try: + read = grammar.read ## + + except AttributeError: + pass + else: + grammar = read() + + cache_fn = None + cache_sha256 = None + if isinstance(grammar, str): + self.source_grammar = grammar + if self.options.use_bytes: + if not isascii(grammar): + raise ConfigurationError("Grammar must be ascii only, when use_bytes=True") + + if self.options.cache: + if self.options.parser != 'lalr': + raise ConfigurationError("cache only works with parser='lalr' for now") + + unhashable = ('transformer', 'postlex', 'lexer_callbacks', 'edit_terminals', '_plugins') + options_str = ''.join(k+str(v) for k, v in options.items() if k not in unhashable) + from . import __version__ + s = grammar + options_str + __version__ + str(sys.version_info[:2]) + cache_sha256 = sha256_digest(s) + + if isinstance(self.options.cache, str): + cache_fn = self.options.cache + else: + if self.options.cache is not True: + raise ConfigurationError("cache argument must be bool or str") + + try: + username = getpass.getuser() + except Exception: + ## + + ## + + ## + + username = "unknown" + + cache_fn = tempfile.gettempdir() + "/.lark_cache_%s_%s_%s_%s.tmp" % (username, cache_sha256, *sys.version_info[:2]) + + old_options = self.options + try: + with FS.open(cache_fn, 'rb') as f: + logger.debug('Loading grammar from cache: %s', cache_fn) + ## + + for name in (set(options) - _LOAD_ALLOWED_OPTIONS): + del options[name] + file_sha256 = f.readline().rstrip(b'\n') + cached_used_files = pickle.load(f) + if file_sha256 == cache_sha256.encode('utf8') and verify_used_files(cached_used_files): + cached_parser_data = pickle.load(f) + self._load(cached_parser_data, **options) + return + except FileNotFoundError: + ## + + pass + except Exception: ## + + logger.exception("Failed to load Lark from cache: %r. We will try to carry on.", cache_fn) + + ## + + ## + + self.options = old_options + + + ## + + self.grammar, used_files = load_grammar(grammar, self.source_path, self.options.import_paths, self.options.keep_all_tokens) + else: + assert isinstance(grammar, Grammar) + self.grammar = grammar + + + if self.options.lexer == 'auto': + if self.options.parser == 'lalr': + self.options.lexer = 'contextual' + elif self.options.parser == 'earley': + if self.options.postlex is not None: + logger.info("postlex can't be used with the dynamic lexer, so we use 'basic' instead. " + "Consider using lalr with contextual instead of earley") + self.options.lexer = 'basic' + else: + self.options.lexer = 'dynamic' + elif self.options.parser == 'cyk': + self.options.lexer = 'basic' + else: + assert False, self.options.parser + lexer = self.options.lexer + if isinstance(lexer, type): + assert issubclass(lexer, Lexer) ## + + else: + assert_config(lexer, ('basic', 'contextual', 'dynamic', 'dynamic_complete')) + if self.options.postlex is not None and 'dynamic' in lexer: + raise ConfigurationError("Can't use postlex with a dynamic lexer. Use basic or contextual instead") + + if self.options.ambiguity == 'auto': + if self.options.parser == 'earley': + self.options.ambiguity = 'resolve' + else: + assert_config(self.options.parser, ('earley', 'cyk'), "%r doesn't support disambiguation. Use one of these parsers instead: %s") + + if self.options.priority == 'auto': + self.options.priority = 'normal' + + if self.options.priority not in _VALID_PRIORITY_OPTIONS: + raise ConfigurationError("invalid priority option: %r. Must be one of %r" % (self.options.priority, _VALID_PRIORITY_OPTIONS)) + if self.options.ambiguity not in _VALID_AMBIGUITY_OPTIONS: + raise ConfigurationError("invalid ambiguity option: %r. Must be one of %r" % (self.options.ambiguity, _VALID_AMBIGUITY_OPTIONS)) + + if self.options.parser is None: + terminals_to_keep = '*' + elif self.options.postlex is not None: + terminals_to_keep = set(self.options.postlex.always_accept) + else: + terminals_to_keep = set() + + ## + + self.terminals, self.rules, self.ignore_tokens = self.grammar.compile(self.options.start, terminals_to_keep) + + if self.options.edit_terminals: + for t in self.terminals: + self.options.edit_terminals(t) + + self._terminals_dict = {t.name: t for t in self.terminals} + + ## + + if self.options.priority == 'invert': + for rule in self.rules: + if rule.options.priority is not None: + rule.options.priority = -rule.options.priority + for term in self.terminals: + term.priority = -term.priority + ## + + ## + + ## + + elif self.options.priority is None: + for rule in self.rules: + if rule.options.priority is not None: + rule.options.priority = None + for term in self.terminals: + term.priority = 0 + + ## + + self.lexer_conf = LexerConf( + self.terminals, re_module, self.ignore_tokens, self.options.postlex, + self.options.lexer_callbacks, self.options.g_regex_flags, use_bytes=self.options.use_bytes, strict=self.options.strict + ) + + if self.options.parser: + self.parser = self._build_parser() + elif lexer: + self.lexer = self._build_lexer() + + if cache_fn: + logger.debug('Saving grammar to cache: %s', cache_fn) + try: + with FS.open(cache_fn, 'wb') as f: + assert cache_sha256 is not None + f.write(cache_sha256.encode('utf8') + b'\n') + pickle.dump(used_files, f) + self.save(f, _LOAD_ALLOWED_OPTIONS) + except IOError as e: + logger.exception("Failed to save Lark to cache: %r.", cache_fn, e) + + if __doc__: + __doc__ += "\n\n" + LarkOptions.OPTIONS_DOC + + __serialize_fields__ = 'parser', 'rules', 'options' + + def _build_lexer(self, dont_ignore: bool=False) -> BasicLexer: + lexer_conf = self.lexer_conf + if dont_ignore: + from copy import copy + lexer_conf = copy(lexer_conf) + lexer_conf.ignore = () + return BasicLexer(lexer_conf) + + def _prepare_callbacks(self) -> None: + self._callbacks = {} + ## + + if self.options.ambiguity != 'forest': + self._parse_tree_builder = ParseTreeBuilder( + self.rules, + self.options.tree_class or Tree, + self.options.propagate_positions, + self.options.parser != 'lalr' and self.options.ambiguity == 'explicit', + self.options.maybe_placeholders + ) + self._callbacks = self._parse_tree_builder.create_callback(self.options.transformer) + self._callbacks.update(_get_lexer_callbacks(self.options.transformer, self.terminals)) + + def _build_parser(self) -> "ParsingFrontend": + self._prepare_callbacks() + _validate_frontend_args(self.options.parser, self.options.lexer) + parser_conf = ParserConf(self.rules, self._callbacks, self.options.start) + return _construct_parsing_frontend( + self.options.parser, + self.options.lexer, + self.lexer_conf, + parser_conf, + options=self.options + ) + + def save(self, f, exclude_options: Collection[str] = ()) -> None: + #-- + if self.options.parser != 'lalr': + raise NotImplementedError("Lark.save() is only implemented for the LALR(1) parser.") + data, m = self.memo_serialize([TerminalDef, Rule]) + if exclude_options: + data["options"] = {n: v for n, v in data["options"].items() if n not in exclude_options} + pickle.dump({'data': data, 'memo': m}, f, protocol=pickle.HIGHEST_PROTOCOL) + + @classmethod + def load(cls: Type[_T], f) -> _T: + #-- + inst = cls.__new__(cls) + return inst._load(f) + + def _deserialize_lexer_conf(self, data: Dict[str, Any], memo: Dict[int, Union[TerminalDef, Rule]], options: LarkOptions) -> LexerConf: + lexer_conf = LexerConf.deserialize(data['lexer_conf'], memo) + lexer_conf.callbacks = options.lexer_callbacks or {} + lexer_conf.re_module = regex if options.regex else re + lexer_conf.use_bytes = options.use_bytes + lexer_conf.g_regex_flags = options.g_regex_flags + lexer_conf.skip_validation = True + lexer_conf.postlex = options.postlex + return lexer_conf + + def _load(self: _T, f: Any, **kwargs) -> _T: + if isinstance(f, dict): + d = f + else: + d = pickle.load(f) + memo_json = d['memo'] + data = d['data'] + + assert memo_json + memo = SerializeMemoizer.deserialize(memo_json, {'Rule': Rule, 'TerminalDef': TerminalDef}, {}) + options = dict(data['options']) + if (set(kwargs) - _LOAD_ALLOWED_OPTIONS) & set(LarkOptions._defaults): + raise ConfigurationError("Some options are not allowed when loading a Parser: {}" + .format(set(kwargs) - _LOAD_ALLOWED_OPTIONS)) + options.update(kwargs) + self.options = LarkOptions.deserialize(options, memo) + self.rules = [Rule.deserialize(r, memo) for r in data['rules']] + self.source_path = '' + _validate_frontend_args(self.options.parser, self.options.lexer) + self.lexer_conf = self._deserialize_lexer_conf(data['parser'], memo, self.options) + self.terminals = self.lexer_conf.terminals + self._prepare_callbacks() + self._terminals_dict = {t.name: t for t in self.terminals} + self.parser = _deserialize_parsing_frontend( + data['parser'], + memo, + self.lexer_conf, + self._callbacks, + self.options, ## + + ) + return self + + @classmethod + def _load_from_dict(cls, data, memo, **kwargs): + inst = cls.__new__(cls) + return inst._load({'data': data, 'memo': memo}, **kwargs) + + @classmethod + def open(cls: Type[_T], grammar_filename: str, rel_to: Optional[str]=None, **options) -> _T: + #-- + if rel_to: + basepath = os.path.dirname(rel_to) + grammar_filename = os.path.join(basepath, grammar_filename) + with open(grammar_filename, encoding='utf8') as f: + return cls(f, **options) + + @classmethod + def open_from_package(cls: Type[_T], package: str, grammar_path: str, search_paths: 'Sequence[str]'=[""], **options) -> _T: + #-- + package_loader = FromPackageLoader(package, search_paths) + full_path, text = package_loader(None, grammar_path) + options.setdefault('source_path', full_path) + options.setdefault('import_paths', []) + options['import_paths'].append(package_loader) + return cls(text, **options) + + def __repr__(self): + return 'Lark(open(%r), parser=%r, lexer=%r, ...)' % (self.source_path, self.options.parser, self.options.lexer) + + + def lex(self, text: str, dont_ignore: bool=False) -> Iterator[Token]: + #-- + lexer: Lexer + if not hasattr(self, 'lexer') or dont_ignore: + lexer = self._build_lexer(dont_ignore) + else: + lexer = self.lexer + lexer_thread = LexerThread.from_text(lexer, text) + stream = lexer_thread.lex(None) + if self.options.postlex: + return self.options.postlex.process(stream) + return stream + + def get_terminal(self, name: str) -> TerminalDef: + #-- + return self._terminals_dict[name] + + def parse_interactive(self, text: Optional[str]=None, start: Optional[str]=None) -> 'InteractiveParser': + #-- + return self.parser.parse_interactive(text, start=start) + + def parse(self, text: str, start: Optional[str]=None, on_error: 'Optional[Callable[[UnexpectedInput], bool]]'=None) -> 'ParseTree': + #-- + return self.parser.parse(text, start=start, on_error=on_error) + + + + +class DedentError(LarkError): + pass + +class Indenter(PostLex, ABC): + paren_level: int + indent_level: List[int] + + def __init__(self) -> None: + self.paren_level = 0 + self.indent_level = [0] + assert self.tab_len > 0 + + def handle_NL(self, token: Token) -> Iterator[Token]: + if self.paren_level > 0: + return + + yield token + + indent_str = token.rsplit('\n', 1)[1] ## + + indent = indent_str.count(' ') + indent_str.count('\t') * self.tab_len + + if indent > self.indent_level[-1]: + self.indent_level.append(indent) + yield Token.new_borrow_pos(self.INDENT_type, indent_str, token) + else: + while indent < self.indent_level[-1]: + self.indent_level.pop() + yield Token.new_borrow_pos(self.DEDENT_type, indent_str, token) + + if indent != self.indent_level[-1]: + raise DedentError('Unexpected dedent to column %s. Expected dedent to %s' % (indent, self.indent_level[-1])) + + def _process(self, stream): + for token in stream: + if token.type == self.NL_type: + yield from self.handle_NL(token) + else: + yield token + + if token.type in self.OPEN_PAREN_types: + self.paren_level += 1 + elif token.type in self.CLOSE_PAREN_types: + self.paren_level -= 1 + assert self.paren_level >= 0 + + while len(self.indent_level) > 1: + self.indent_level.pop() + yield Token(self.DEDENT_type, '') + + assert self.indent_level == [0], self.indent_level + + def process(self, stream): + self.paren_level = 0 + self.indent_level = [0] + return self._process(stream) + + ## + + @property + def always_accept(self): + return (self.NL_type,) + + @property + @abstractmethod + def NL_type(self) -> str: + raise NotImplementedError() + + @property + @abstractmethod + def OPEN_PAREN_types(self) -> List[str]: + raise NotImplementedError() + + @property + @abstractmethod + def CLOSE_PAREN_types(self) -> List[str]: + raise NotImplementedError() + + @property + @abstractmethod + def INDENT_type(self) -> str: + raise NotImplementedError() + + @property + @abstractmethod + def DEDENT_type(self) -> str: + raise NotImplementedError() + + @property + @abstractmethod + def tab_len(self) -> int: + raise NotImplementedError() + + +class PythonIndenter(Indenter): + NL_type = '_NEWLINE' + OPEN_PAREN_types = ['LPAR', 'LSQB', 'LBRACE'] + CLOSE_PAREN_types = ['RPAR', 'RSQB', 'RBRACE'] + INDENT_type = '_INDENT' + DEDENT_type = '_DEDENT' + tab_len = 8 + + +import pickle, zlib, base64 +DATA = ( +{'parser': {'lexer_conf': {'terminals': [{'@': 0}, {'@': 1}, {'@': 2}, {'@': 3}, {'@': 4}, {'@': 5}, {'@': 6}, {'@': 7}, {'@': 8}, {'@': 9}, {'@': 10}, {'@': 11}], 'ignore': ['WS'], 'g_regex_flags': 0, 'use_bytes': False, 'lexer_type': 'contextual', '__type__': 'LexerConf'}, 'parser_conf': {'rules': [{'@': 12}, {'@': 13}, {'@': 14}, {'@': 15}, {'@': 16}, {'@': 17}, {'@': 18}, {'@': 19}, {'@': 20}, {'@': 21}, {'@': 22}, {'@': 23}, {'@': 24}, {'@': 25}, {'@': 26}, {'@': 27}, {'@': 28}, {'@': 29}, {'@': 30}], 'start': ['line'], 'parser_type': 'lalr', '__type__': 'ParserConf'}, 'parser': {'tokens': {0: 'COMMA', 1: 'RPAR', 2: '$END', 3: 'RATE', 4: 'LPAR', 5: 'BLEND', 6: 'NUMBER', 7: 'CUTOFF', 8: 'palette_entry', 9: 'CNAME', 10: 'parameter', 11: 'parameters', 12: '__palette_star_1', 13: '__parameters_star_0', 14: 'LAYER_NAME', 15: 'line', 16: 'legacy_line', 17: 'parameterized_line', 18: 'palette', 19: 'ESCAPED_STRING', 20: 'string', 21: 'EQUAL'}, 'states': {0: {0: (1, {'@': 19}), 1: (1, {'@': 19})}, 1: {0: (0, 29), 2: (1, {'@': 21})}, 2: {3: (0, 13), 4: (0, 15)}, 3: {2: (1, {'@': 14})}, 4: {}, 5: {5: (0, 39)}, 6: {6: (0, 11)}, 7: {2: (1, {'@': 12})}, 8: {0: (1, {'@': 25}), 1: (1, {'@': 25})}, 9: {1: (0, 36)}, 10: {0: (1, {'@': 26}), 1: (1, {'@': 26})}, 11: {0: (0, 26)}, 12: {0: (1, {'@': 28}), 1: (1, {'@': 28})}, 13: {7: (0, 34)}, 14: {4: (0, 6), 8: (0, 24)}, 15: {9: (0, 41), 10: (0, 18), 11: (0, 19), 1: (1, {'@': 18})}, 16: {12: (0, 1), 0: (0, 14), 2: (1, {'@': 22})}, 17: {0: (0, 27), 1: (0, 30)}, 18: {0: (0, 37), 13: (0, 25), 1: (1, {'@': 17})}, 19: {1: (0, 5)}, 20: {0: (0, 21)}, 21: {6: (0, 17)}, 22: {2: (1, {'@': 15})}, 23: {14: (0, 2), 15: (0, 4), 16: (0, 7), 17: (0, 40)}, 24: {0: (1, {'@': 29}), 2: (1, {'@': 29})}, 25: {0: (0, 35), 1: (1, {'@': 16})}, 26: {6: (0, 20)}, 27: {6: (0, 9)}, 28: {0: (1, {'@': 20}), 1: (1, {'@': 20})}, 29: {8: (0, 33), 4: (0, 6)}, 30: {0: (1, {'@': 24}), 2: (1, {'@': 24})}, 31: {8: (0, 16), 4: (0, 6), 18: (0, 3)}, 32: {19: (0, 10), 20: (0, 28), 9: (0, 8), 6: (0, 0)}, 33: {0: (1, {'@': 30}), 2: (1, {'@': 30})}, 34: {5: (0, 31)}, 35: {9: (0, 41), 10: (0, 12)}, 36: {0: (1, {'@': 23}), 2: (1, {'@': 23})}, 37: {9: (0, 41), 10: (0, 38)}, 38: {0: (1, {'@': 27}), 1: (1, {'@': 27})}, 39: {18: (0, 22), 8: (0, 16), 4: (0, 6)}, 40: {2: (1, {'@': 13})}, 41: {21: (0, 32)}}, 'start_states': {'line': 23}, 'end_states': {'line': 4}}, '__type__': 'ParsingFrontend'}, 'rules': [{'@': 12}, {'@': 13}, {'@': 14}, {'@': 15}, {'@': 16}, {'@': 17}, {'@': 18}, {'@': 19}, {'@': 20}, {'@': 21}, {'@': 22}, {'@': 23}, {'@': 24}, {'@': 25}, {'@': 26}, {'@': 27}, {'@': 28}, {'@': 29}, {'@': 30}], 'options': {'debug': False, 'strict': False, 'keep_all_tokens': False, 'tree_class': None, 'cache': False, 'postlex': None, 'parser': 'lalr', 'lexer': 'contextual', 'transformer': None, 'start': ['line'], 'priority': 'normal', 'ambiguity': 'auto', 'regex': False, 'propagate_positions': False, 'lexer_callbacks': {}, 'maybe_placeholders': False, 'edit_terminals': None, 'g_regex_flags': 0, 'use_bytes': False, 'ordered_sets': True, 'import_paths': [], 'source_path': None, '_plugins': {}}, '__type__': 'Lark'} +) +MEMO = ( +{0: {'name': 'ESCAPED_STRING', 'pattern': {'value': '".*?(?=3.8" -content-hash = "0c03e9a45dbbb7c4784229424faa5fe978f16b6deb6198b8bb79626505e7de3d" +content-hash = "5ad6b42b62e330b555936aa420aaed04094d3bc822e5308d80adf96c340fde38" diff --git a/packages/led_effect_tests/pyproject.toml b/packages/led_effect_tests/pyproject.toml index 5bc3c38..b627324 100644 --- a/packages/led_effect_tests/pyproject.toml +++ b/packages/led_effect_tests/pyproject.toml @@ -8,6 +8,7 @@ package-mode = false [tool.poetry.dependencies] python = "<3.12,>=3.8" klippermock = {path = "../klippermock", develop = true} +led_effect = {path = "../led_effect", develop = true} [tool.poetry.group.dev.dependencies] pytest = "^8.0.1" diff --git a/packages/led_effect_tests/src/layer_parser_test.py b/packages/led_effect_tests/src/layer_parser_test.py new file mode 100644 index 0000000..c89db1f --- /dev/null +++ b/packages/led_effect_tests/src/layer_parser_test.py @@ -0,0 +1,42 @@ +import pytest +from led_effect import layer_parser + +legacy_format_data = [ + ("breathing .5 0 screen (0,.1,1), (0,1,.5), (0, 1,1), (0,.1,.5)", "breathing", + 0.5, 0, "screen", [(0, 0.1, 1), (0, 1, 0.5), (0, 1, 1), (0, 0.1, 0.5)]), + ("breathing .5 0 screen (0,.1,1,0.5), (0,1,.5), (0, 1,1), (0,.1,.5)", "breathing", + 0.5, 0, "screen", [(0, 0.1, 1, 0.5), (0, 1, 0.5), (0, 1, 1), (0, 0.1, 0.5)]), + ("strobe 1 1.5 add (1.0, 1.0, 1.0)", + "strobe", 1, 1.5, "add", [(1, 1, 1)]), + ("breathing 2 0 difference (0.95, 0.0, 0.0)", + "breathing", 2, 0, "difference", [(0.95, 0, 0)]), + ("static 1 0 top (1.0, 0.0, 0.0)", + "static", 1, 0, "top", [(1, 0, 0)]), +] + +parameterized_line_format_data = [ + ("static() top (1.0, 0.0, 0.0)", + "static", {}, "top", [(1, 0, 0)]), + ("breathing(duration=.5) screen (0,.1,1), (0,1,.5), (0, 1,1), (0,.1,.5)", "breathing", + {"duration": 0.5}, "screen", [(0, 0.1, 1), (0, 1, 0.5), (0, 1, 1), (0, 0.1, 0.5)]), + ("breathing(duration=.5) screen (0,.1,1, 0.5), (0,1,.5), (0, 1,1), (0,.1,.5)", "breathing", + {"duration": 0.5}, "screen", [(0, 0.1, 1, 0.5), (0, 1, 0.5), (0, 1, 1), (0, 0.1, 0.5)]), + (" strobe(frequency=1,decay=1.5) add (1.0, 1.0, 1.0)", + "strobe", {"frequency": 1, "decay": 1.5}, "add", [(1, 1, 1)]), + (" strobe(frequency=1, decay=1.5) add (1.0, 1.0, 1.0)", + "strobe", {"frequency": 1, "decay": 1.5}, "add", [(1, 1, 1)]), + (" heater(heater=heater_bed, decay=1.5) add (1.0, 1.0, 1.0)", + "heater", {"heater": "heater_bed", "decay": 1.5}, "add", [(1, 1, 1)]), +] + + +@pytest.mark.parametrize("line,effect,rate,cutoff,blend,palette", legacy_format_data) +def test_parses_the_legacy_format(line, effect, rate, cutoff, blend, palette): + assert layer_parser.parse(line) == { + "effect": effect, "parameters": {"effectRate": rate, "effectCutoff": cutoff}, "blend": blend, "palette": palette} + + +@pytest.mark.parametrize("line,effect,parameters,blend,palette", parameterized_line_format_data) +def test_parses_the_parameterized_format(line, effect, parameters, blend, palette): + assert layer_parser.parse(line) == { + "effect": effect, "blend": blend, "palette": palette, "parameters": parameters} diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/golden/breathing.yml b/src/golden/breathing.yml new file mode 100644 index 0000000..dd27717 --- /dev/null +++ b/src/golden/breathing.yml @@ -0,0 +1,4102 @@ +input: breathing 3 1 top (0.6, 1.0, 0.0, 0.1) +output: +- - - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - true +- - - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - true +- - - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - true +- - - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - true +- - - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - true +- - - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - true +- - - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - true +- - - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - true +- - - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - true +- - - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - true +- - - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - true +- - - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - true +- - - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - true +- - - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - true +- - - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - true +- - - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - true +- - - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - true +- - - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - true +- - - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - true +- - - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - true +- - - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - true +- - - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - true +- - - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - true +- - - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - true +- - - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - true +- - - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - true +- - - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - true +- - - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - true +- - - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - true +- - - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - true +- - - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - true +- - - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - true +- - - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - true +- - - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - true +- - - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - true +- - - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - true +- - - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - true +- - - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - true +- - - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - true +- - - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - true +- - - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - true +- - - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - true +- - - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - true +- - - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - true +- - - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - true +- - - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - true +- - - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - true +- - - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - true +- - - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - true +- - - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - true +- - - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - true +- - - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - true +- - - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - true +- - - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - true +- - - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - true +- - - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - true +- - - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - true +- - - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - true +- - - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - true +- - - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - true +- - - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - true +- - - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - true +- - - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - true +- - - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - true +- - - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - 0.08742032402419476 + - 0.14570054004032462 + - 0.0 + - 0.014570054004032463 + - true +- - - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - 0.06092190726405765 + - 0.10153651210676275 + - 0.0 + - 0.010153651210676275 + - true +- - - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - 0.04031962869402889 + - 0.06719938115671482 + - 0.0 + - 0.006719938115671483 + - true +- - - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - 0.0247538474338576 + - 0.04125641238976267 + - 0.0 + - 0.004125641238976268 + - true +- - - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - 0.013463488593161162 + - 0.022439147655268603 + - 0.0 + - 0.0022439147655268603 + - true +- - - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - 0.005837874795997974 + - 0.00972979132666329 + - 0.0 + - 0.000972979132666329 + - true +- - - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - true +- - - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - 1.126202337292922e-07 + - 1.8770038954882034e-07 + - 0.0 + - 1.8770038954882034e-08 + - true +- - - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - 0.0014377180143658808 + - 0.0023961966906098013 + - 0.0 + - 0.00023961966906098015 + - true +- - - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - 0.0058378747959979315 + - 0.009729791326663219 + - 0.0 + - 0.000972979132666322 + - true +- - - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - 0.013463488593161176 + - 0.022439147655268627 + - 0.0 + - 0.002243914765526863 + - true +- - - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - 0.02475384743385749 + - 0.041256412389762485 + - 0.0 + - 0.004125641238976249 + - true +- - - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - 0.04031962869402872 + - 0.06719938115671453 + - 0.0 + - 0.006719938115671453 + - true +- - - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - 0.06092190726405742 + - 0.10153651210676237 + - 0.0 + - 0.010153651210676238 + - true +- - - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - 0.08742032402419452 + - 0.1457005400403242 + - 0.0 + - 0.014570054004032421 + - true +- - - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - 0.12067216802726477 + - 0.2011202800454413 + - 0.0 + - 0.020112028004544133 + - true +- - - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - 0.16136496594255484 + - 0.2689416099042581 + - 0.0 + - 0.02689416099042581 + - true +- - - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - 0.20977462199591354 + - 0.34962436999318924 + - 0.0 + - 0.034962436999318926 + - true +- - - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - 0.26546339391653656 + - 0.4424389898608943 + - 0.0 + - 0.044243898986089436 + - true +- - - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - 0.32696757327997433 + - 0.5449459554666239 + - 0.0 + - 0.054494595546662396 + - true +- - - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - 0.3915659504690441 + - 0.6526099174484068 + - 0.0 + - 0.06526099174484068 + - true +- - - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - 0.4552482752961474 + - 0.758747125493579 + - 0.0 + - 0.0758747125493579 + - true +- - - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - 0.5129922499234787 + - 0.8549870832057979 + - 0.0 + - 0.08549870832057979 + - true +- - - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - 0.5593890661844423 + - 0.9323151103074039 + - 0.0 + - 0.0932315110307404 + - true +- - - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - true +- - - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - 0.6 + - 1.0 + - 0.0 + - 0.1 + - true +- - - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - 0.5895377282506978 + - 0.9825628804178297 + - 0.0 + - 0.09825628804178298 + - true +- - - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - 0.5593890661844425 + - 0.9323151103074042 + - 0.0 + - 0.09323151103074043 + - true +- - - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - 0.5129922499234789 + - 0.8549870832057983 + - 0.0 + - 0.08549870832057983 + - true +- - - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - 0.4552482752961482 + - 0.7587471254935804 + - 0.0 + - 0.07587471254935804 + - true +- - - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - 0.391565950469045 + - 0.6526099174484083 + - 0.0 + - 0.06526099174484083 + - true +- - - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - 0.3269675732799746 + - 0.5449459554666244 + - 0.0 + - 0.054494595546662444 + - true +- - - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - 0.2654633939165368 + - 0.4424389898608947 + - 0.0 + - 0.04424389898608947 + - true +- - - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - 0.20977462199591373 + - 0.3496243699931896 + - 0.0 + - 0.03496243699931896 + - true +- - - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - 0.161364965942555 + - 0.26894160990425836 + - 0.0 + - 0.02689416099042584 + - true +- - - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - 0.12067216802726494 + - 0.20112028004544158 + - 0.0 + - 0.02011202800454416 + - true diff --git a/src/golden/comet.yml b/src/golden/comet.yml new file mode 100644 index 0000000..d95f535 --- /dev/null +++ b/src/golden/comet.yml @@ -0,0 +1,4102 @@ +input: comet 0.3 0 add (0, 0, 1) +output: +- - - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true diff --git a/src/golden/gradient.yml b/src/golden/gradient.yml new file mode 100644 index 0000000..f274254 --- /dev/null +++ b/src/golden/gradient.yml @@ -0,0 +1,4102 @@ +input: gradient 0.3 1 add (0.3, 0.0, 0.0),(0.0, 0.3, 0.0),(0.0, 0.0, 0.3) +output: +- - - 0.28875 + - 0.01125 + - 0.0 + - 0.0 + - 0.19875 + - 0.10124999999999999 + - 0.0 + - 0.0 + - 0.10875000000000001 + - 0.19124999999999998 + - 0.0 + - 0.0 + - 0.01875 + - 0.28125 + - 0.0 + - 0.0 + - 0.0 + - 0.22874999999999998 + - 0.07125000000000001 + - 0.0 + - 0.0 + - 0.13875000000000004 + - 0.16124999999999995 + - 0.0 + - 0.0 + - 0.04875000000000002 + - 0.25125 + - 0.0 + - 0.04124999999999992 + - 0.0 + - 0.2587500000000001 + - 0.0 + - 0.13125 + - 0.0 + - 0.16874999999999998 + - 0.0 + - 0.22124999999999995 + - 0.0 + - 0.07875000000000006 + - 0.0 + - true +- - - 0.2775 + - 0.0225 + - 0.0 + - 0.0 + - 0.1875 + - 0.11249999999999999 + - 0.0 + - 0.0 + - 0.09750000000000002 + - 0.20249999999999999 + - 0.0 + - 0.0 + - 0.007500000000000007 + - 0.2925 + - 0.0 + - 0.0 + - 0.0 + - 0.21750000000000003 + - 0.08249999999999998 + - 0.0 + - 0.0 + - 0.1275 + - 0.1725 + - 0.0 + - 0.0 + - 0.0375 + - 0.2625 + - 0.0 + - 0.05249999999999994 + - 0.0 + - 0.24750000000000005 + - 0.0 + - 0.14250000000000002 + - 0.0 + - 0.15749999999999997 + - 0.0 + - 0.23249999999999996 + - 0.0 + - 0.06750000000000002 + - 0.0 + - true +- - - 0.26625 + - 0.033749999999999995 + - 0.0 + - 0.0 + - 0.17625 + - 0.12374999999999999 + - 0.0 + - 0.0 + - 0.08625 + - 0.21375 + - 0.0 + - 0.0 + - 0.0 + - 0.29625 + - 0.0037499999999999864 + - 0.0 + - 0.0 + - 0.20625 + - 0.09375 + - 0.0 + - 0.0 + - 0.11624999999999998 + - 0.18375 + - 0.0 + - 0.0 + - 0.02625000000000004 + - 0.27374999999999994 + - 0.0 + - 0.06374999999999997 + - 0.0 + - 0.23625000000000002 + - 0.0 + - 0.15374999999999991 + - 0.0 + - 0.14625000000000007 + - 0.0 + - 0.24375 + - 0.0 + - 0.056249999999999994 + - 0.0 + - true +- - - 0.255 + - 0.045 + - 0.0 + - 0.0 + - 0.165 + - 0.13499999999999998 + - 0.0 + - 0.0 + - 0.075 + - 0.22499999999999998 + - 0.0 + - 0.0 + - 0.0 + - 0.285 + - 0.015000000000000013 + - 0.0 + - 0.0 + - 0.19500000000000003 + - 0.10499999999999995 + - 0.0 + - 0.0 + - 0.10500000000000002 + - 0.19499999999999998 + - 0.0 + - 0.0 + - 0.015000000000000013 + - 0.285 + - 0.0 + - 0.075 + - 0.0 + - 0.22499999999999998 + - 0.0 + - 0.16499999999999995 + - 0.0 + - 0.13500000000000004 + - 0.0 + - 0.255 + - 0.0 + - 0.04499999999999997 + - 0.0 + - true +- - - 0.24375 + - 0.056249999999999994 + - 0.0 + - 0.0 + - 0.15374999999999997 + - 0.14625 + - 0.0 + - 0.0 + - 0.06375 + - 0.23625 + - 0.0 + - 0.0 + - 0.0 + - 0.27375 + - 0.02624999999999997 + - 0.0 + - 0.0 + - 0.18375 + - 0.11624999999999998 + - 0.0 + - 0.0 + - 0.09375 + - 0.20625 + - 0.0 + - 0.0 + - 0.003750000000000053 + - 0.29624999999999996 + - 0.0 + - 0.08625000000000002 + - 0.0 + - 0.21374999999999997 + - 0.0 + - 0.17624999999999996 + - 0.0 + - 0.12375000000000003 + - 0.0 + - 0.26624999999999993 + - 0.0 + - 0.03375000000000008 + - 0.0 + - true +- - - 0.23249999999999998 + - 0.06749999999999999 + - 0.0 + - 0.0 + - 0.1425 + - 0.1575 + - 0.0 + - 0.0 + - 0.05250000000000001 + - 0.24749999999999997 + - 0.0 + - 0.0 + - 0.0 + - 0.2625 + - 0.0375 + - 0.0 + - 0.0 + - 0.1725 + - 0.1275 + - 0.0 + - 0.0 + - 0.08250000000000003 + - 0.21749999999999994 + - 0.0 + - 0.007499999999999973 + - 0.0 + - 0.29250000000000004 + - 0.0 + - 0.09749999999999992 + - 0.0 + - 0.20250000000000007 + - 0.0 + - 0.1875 + - 0.0 + - 0.11249999999999999 + - 0.0 + - 0.2774999999999999 + - 0.0 + - 0.02250000000000005 + - 0.0 + - true +- - - 0.22125 + - 0.07875 + - 0.0 + - 0.0 + - 0.13125 + - 0.16874999999999998 + - 0.0 + - 0.0 + - 0.041250000000000016 + - 0.25875 + - 0.0 + - 0.0 + - 0.0 + - 0.25125000000000003 + - 0.04874999999999996 + - 0.0 + - 0.0 + - 0.16125000000000003 + - 0.13874999999999996 + - 0.0 + - 0.0 + - 0.07125000000000001 + - 0.22874999999999998 + - 0.0 + - 0.01875 + - 0.0 + - 0.28125 + - 0.0 + - 0.10874999999999994 + - 0.0 + - 0.19125000000000006 + - 0.0 + - 0.19875 + - 0.0 + - 0.10124999999999997 + - 0.0 + - 0.28874999999999995 + - 0.0 + - 0.011250000000000026 + - 0.0 + - true +- - - 0.21 + - 0.09 + - 0.0 + - 0.0 + - 0.12 + - 0.18 + - 0.0 + - 0.0 + - 0.030000000000000027 + - 0.26999999999999996 + - 0.0 + - 0.0 + - 0.0 + - 0.24 + - 0.059999999999999984 + - 0.0 + - 0.0 + - 0.15 + - 0.15 + - 0.0 + - 0.0 + - 0.06000000000000005 + - 0.23999999999999994 + - 0.0 + - 0.030000000000000027 + - 0.0 + - 0.26999999999999996 + - 0.0 + - 0.11999999999999997 + - 0.0 + - 0.18000000000000002 + - 0.0 + - 0.2099999999999999 + - 0.0 + - 0.09000000000000008 + - 0.0 + - 0.3 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.19875 + - 0.10124999999999999 + - 0.0 + - 0.0 + - 0.10875000000000001 + - 0.19124999999999998 + - 0.0 + - 0.0 + - 0.01875 + - 0.28125 + - 0.0 + - 0.0 + - 0.0 + - 0.22874999999999998 + - 0.07125000000000001 + - 0.0 + - 0.0 + - 0.13875000000000004 + - 0.16124999999999995 + - 0.0 + - 0.0 + - 0.04875000000000002 + - 0.25125 + - 0.0 + - 0.04124999999999992 + - 0.0 + - 0.2587500000000001 + - 0.0 + - 0.13125 + - 0.0 + - 0.16874999999999998 + - 0.0 + - 0.22124999999999995 + - 0.0 + - 0.07875000000000006 + - 0.0 + - 0.28875 + - 0.01125 + - 0.0 + - 0.0 + - true +- - - 0.1875 + - 0.11249999999999999 + - 0.0 + - 0.0 + - 0.09750000000000002 + - 0.20249999999999999 + - 0.0 + - 0.0 + - 0.007500000000000007 + - 0.2925 + - 0.0 + - 0.0 + - 0.0 + - 0.21750000000000003 + - 0.08249999999999998 + - 0.0 + - 0.0 + - 0.1275 + - 0.1725 + - 0.0 + - 0.0 + - 0.0375 + - 0.2625 + - 0.0 + - 0.05249999999999994 + - 0.0 + - 0.24750000000000005 + - 0.0 + - 0.14250000000000002 + - 0.0 + - 0.15749999999999997 + - 0.0 + - 0.23249999999999996 + - 0.0 + - 0.06750000000000002 + - 0.0 + - 0.2775 + - 0.0225 + - 0.0 + - 0.0 + - true +- - - 0.17625 + - 0.12374999999999999 + - 0.0 + - 0.0 + - 0.08625 + - 0.21375 + - 0.0 + - 0.0 + - 0.0 + - 0.29625 + - 0.0037499999999999864 + - 0.0 + - 0.0 + - 0.20625 + - 0.09375 + - 0.0 + - 0.0 + - 0.11624999999999998 + - 0.18375 + - 0.0 + - 0.0 + - 0.02625000000000004 + - 0.27374999999999994 + - 0.0 + - 0.06374999999999997 + - 0.0 + - 0.23625000000000002 + - 0.0 + - 0.15374999999999991 + - 0.0 + - 0.14625000000000007 + - 0.0 + - 0.24375 + - 0.0 + - 0.056249999999999994 + - 0.0 + - 0.26625 + - 0.033749999999999995 + - 0.0 + - 0.0 + - true +- - - 0.165 + - 0.13499999999999998 + - 0.0 + - 0.0 + - 0.075 + - 0.22499999999999998 + - 0.0 + - 0.0 + - 0.0 + - 0.285 + - 0.015000000000000013 + - 0.0 + - 0.0 + - 0.19500000000000003 + - 0.10499999999999995 + - 0.0 + - 0.0 + - 0.10500000000000002 + - 0.19499999999999998 + - 0.0 + - 0.0 + - 0.015000000000000013 + - 0.285 + - 0.0 + - 0.075 + - 0.0 + - 0.22499999999999998 + - 0.0 + - 0.16499999999999995 + - 0.0 + - 0.13500000000000004 + - 0.0 + - 0.255 + - 0.0 + - 0.04499999999999997 + - 0.0 + - 0.255 + - 0.045 + - 0.0 + - 0.0 + - true +- - - 0.15374999999999997 + - 0.14625 + - 0.0 + - 0.0 + - 0.06375 + - 0.23625 + - 0.0 + - 0.0 + - 0.0 + - 0.27375 + - 0.02624999999999997 + - 0.0 + - 0.0 + - 0.18375 + - 0.11624999999999998 + - 0.0 + - 0.0 + - 0.09375 + - 0.20625 + - 0.0 + - 0.0 + - 0.003750000000000053 + - 0.29624999999999996 + - 0.0 + - 0.08625000000000002 + - 0.0 + - 0.21374999999999997 + - 0.0 + - 0.17624999999999996 + - 0.0 + - 0.12375000000000003 + - 0.0 + - 0.26624999999999993 + - 0.0 + - 0.03375000000000008 + - 0.0 + - 0.24375 + - 0.056249999999999994 + - 0.0 + - 0.0 + - true +- - - 0.1425 + - 0.1575 + - 0.0 + - 0.0 + - 0.05250000000000001 + - 0.24749999999999997 + - 0.0 + - 0.0 + - 0.0 + - 0.2625 + - 0.0375 + - 0.0 + - 0.0 + - 0.1725 + - 0.1275 + - 0.0 + - 0.0 + - 0.08250000000000003 + - 0.21749999999999994 + - 0.0 + - 0.007499999999999973 + - 0.0 + - 0.29250000000000004 + - 0.0 + - 0.09749999999999992 + - 0.0 + - 0.20250000000000007 + - 0.0 + - 0.1875 + - 0.0 + - 0.11249999999999999 + - 0.0 + - 0.2774999999999999 + - 0.0 + - 0.02250000000000005 + - 0.0 + - 0.23249999999999998 + - 0.06749999999999999 + - 0.0 + - 0.0 + - true +- - - 0.13125 + - 0.16874999999999998 + - 0.0 + - 0.0 + - 0.041250000000000016 + - 0.25875 + - 0.0 + - 0.0 + - 0.0 + - 0.25125000000000003 + - 0.04874999999999996 + - 0.0 + - 0.0 + - 0.16125000000000003 + - 0.13874999999999996 + - 0.0 + - 0.0 + - 0.07125000000000001 + - 0.22874999999999998 + - 0.0 + - 0.01875 + - 0.0 + - 0.28125 + - 0.0 + - 0.10874999999999994 + - 0.0 + - 0.19125000000000006 + - 0.0 + - 0.19875 + - 0.0 + - 0.10124999999999997 + - 0.0 + - 0.28874999999999995 + - 0.0 + - 0.011250000000000026 + - 0.0 + - 0.22125 + - 0.07875 + - 0.0 + - 0.0 + - true +- - - 0.12 + - 0.18 + - 0.0 + - 0.0 + - 0.030000000000000027 + - 0.26999999999999996 + - 0.0 + - 0.0 + - 0.0 + - 0.24 + - 0.059999999999999984 + - 0.0 + - 0.0 + - 0.15 + - 0.15 + - 0.0 + - 0.0 + - 0.06000000000000005 + - 0.23999999999999994 + - 0.0 + - 0.030000000000000027 + - 0.0 + - 0.26999999999999996 + - 0.0 + - 0.11999999999999997 + - 0.0 + - 0.18000000000000002 + - 0.0 + - 0.2099999999999999 + - 0.0 + - 0.09000000000000008 + - 0.0 + - 0.3 + - 0.0 + - 0.0 + - 0.0 + - 0.21 + - 0.09 + - 0.0 + - 0.0 + - true +- - - 0.10875000000000001 + - 0.19124999999999998 + - 0.0 + - 0.0 + - 0.01875 + - 0.28125 + - 0.0 + - 0.0 + - 0.0 + - 0.22874999999999998 + - 0.07125000000000001 + - 0.0 + - 0.0 + - 0.13875000000000004 + - 0.16124999999999995 + - 0.0 + - 0.0 + - 0.04875000000000002 + - 0.25125 + - 0.0 + - 0.04124999999999992 + - 0.0 + - 0.2587500000000001 + - 0.0 + - 0.13125 + - 0.0 + - 0.16874999999999998 + - 0.0 + - 0.22124999999999995 + - 0.0 + - 0.07875000000000006 + - 0.0 + - 0.28875 + - 0.01125 + - 0.0 + - 0.0 + - 0.19875 + - 0.10124999999999999 + - 0.0 + - 0.0 + - true +- - - 0.09750000000000002 + - 0.20249999999999999 + - 0.0 + - 0.0 + - 0.007500000000000007 + - 0.2925 + - 0.0 + - 0.0 + - 0.0 + - 0.21750000000000003 + - 0.08249999999999998 + - 0.0 + - 0.0 + - 0.1275 + - 0.1725 + - 0.0 + - 0.0 + - 0.0375 + - 0.2625 + - 0.0 + - 0.05249999999999994 + - 0.0 + - 0.24750000000000005 + - 0.0 + - 0.14250000000000002 + - 0.0 + - 0.15749999999999997 + - 0.0 + - 0.23249999999999996 + - 0.0 + - 0.06750000000000002 + - 0.0 + - 0.2775 + - 0.0225 + - 0.0 + - 0.0 + - 0.1875 + - 0.11249999999999999 + - 0.0 + - 0.0 + - true +- - - 0.08625 + - 0.21375 + - 0.0 + - 0.0 + - 0.0 + - 0.29625 + - 0.0037499999999999864 + - 0.0 + - 0.0 + - 0.20625 + - 0.09375 + - 0.0 + - 0.0 + - 0.11624999999999998 + - 0.18375 + - 0.0 + - 0.0 + - 0.02625000000000004 + - 0.27374999999999994 + - 0.0 + - 0.06374999999999997 + - 0.0 + - 0.23625000000000002 + - 0.0 + - 0.15374999999999991 + - 0.0 + - 0.14625000000000007 + - 0.0 + - 0.24375 + - 0.0 + - 0.056249999999999994 + - 0.0 + - 0.26625 + - 0.033749999999999995 + - 0.0 + - 0.0 + - 0.17625 + - 0.12374999999999999 + - 0.0 + - 0.0 + - true +- - - 0.075 + - 0.22499999999999998 + - 0.0 + - 0.0 + - 0.0 + - 0.285 + - 0.015000000000000013 + - 0.0 + - 0.0 + - 0.19500000000000003 + - 0.10499999999999995 + - 0.0 + - 0.0 + - 0.10500000000000002 + - 0.19499999999999998 + - 0.0 + - 0.0 + - 0.015000000000000013 + - 0.285 + - 0.0 + - 0.075 + - 0.0 + - 0.22499999999999998 + - 0.0 + - 0.16499999999999995 + - 0.0 + - 0.13500000000000004 + - 0.0 + - 0.255 + - 0.0 + - 0.04499999999999997 + - 0.0 + - 0.255 + - 0.045 + - 0.0 + - 0.0 + - 0.165 + - 0.13499999999999998 + - 0.0 + - 0.0 + - true +- - - 0.06375 + - 0.23625 + - 0.0 + - 0.0 + - 0.0 + - 0.27375 + - 0.02624999999999997 + - 0.0 + - 0.0 + - 0.18375 + - 0.11624999999999998 + - 0.0 + - 0.0 + - 0.09375 + - 0.20625 + - 0.0 + - 0.0 + - 0.003750000000000053 + - 0.29624999999999996 + - 0.0 + - 0.08625000000000002 + - 0.0 + - 0.21374999999999997 + - 0.0 + - 0.17624999999999996 + - 0.0 + - 0.12375000000000003 + - 0.0 + - 0.26624999999999993 + - 0.0 + - 0.03375000000000008 + - 0.0 + - 0.24375 + - 0.056249999999999994 + - 0.0 + - 0.0 + - 0.15374999999999997 + - 0.14625 + - 0.0 + - 0.0 + - true +- - - 0.05250000000000001 + - 0.24749999999999997 + - 0.0 + - 0.0 + - 0.0 + - 0.2625 + - 0.0375 + - 0.0 + - 0.0 + - 0.1725 + - 0.1275 + - 0.0 + - 0.0 + - 0.08250000000000003 + - 0.21749999999999994 + - 0.0 + - 0.007499999999999973 + - 0.0 + - 0.29250000000000004 + - 0.0 + - 0.09749999999999992 + - 0.0 + - 0.20250000000000007 + - 0.0 + - 0.1875 + - 0.0 + - 0.11249999999999999 + - 0.0 + - 0.2774999999999999 + - 0.0 + - 0.02250000000000005 + - 0.0 + - 0.23249999999999998 + - 0.06749999999999999 + - 0.0 + - 0.0 + - 0.1425 + - 0.1575 + - 0.0 + - 0.0 + - true +- - - 0.041250000000000016 + - 0.25875 + - 0.0 + - 0.0 + - 0.0 + - 0.25125000000000003 + - 0.04874999999999996 + - 0.0 + - 0.0 + - 0.16125000000000003 + - 0.13874999999999996 + - 0.0 + - 0.0 + - 0.07125000000000001 + - 0.22874999999999998 + - 0.0 + - 0.01875 + - 0.0 + - 0.28125 + - 0.0 + - 0.10874999999999994 + - 0.0 + - 0.19125000000000006 + - 0.0 + - 0.19875 + - 0.0 + - 0.10124999999999997 + - 0.0 + - 0.28874999999999995 + - 0.0 + - 0.011250000000000026 + - 0.0 + - 0.22125 + - 0.07875 + - 0.0 + - 0.0 + - 0.13125 + - 0.16874999999999998 + - 0.0 + - 0.0 + - true +- - - 0.030000000000000027 + - 0.26999999999999996 + - 0.0 + - 0.0 + - 0.0 + - 0.24 + - 0.059999999999999984 + - 0.0 + - 0.0 + - 0.15 + - 0.15 + - 0.0 + - 0.0 + - 0.06000000000000005 + - 0.23999999999999994 + - 0.0 + - 0.030000000000000027 + - 0.0 + - 0.26999999999999996 + - 0.0 + - 0.11999999999999997 + - 0.0 + - 0.18000000000000002 + - 0.0 + - 0.2099999999999999 + - 0.0 + - 0.09000000000000008 + - 0.0 + - 0.3 + - 0.0 + - 0.0 + - 0.0 + - 0.21 + - 0.09 + - 0.0 + - 0.0 + - 0.12 + - 0.18 + - 0.0 + - 0.0 + - true +- - - 0.01875 + - 0.28125 + - 0.0 + - 0.0 + - 0.0 + - 0.22874999999999998 + - 0.07125000000000001 + - 0.0 + - 0.0 + - 0.13875000000000004 + - 0.16124999999999995 + - 0.0 + - 0.0 + - 0.04875000000000002 + - 0.25125 + - 0.0 + - 0.04124999999999992 + - 0.0 + - 0.2587500000000001 + - 0.0 + - 0.13125 + - 0.0 + - 0.16874999999999998 + - 0.0 + - 0.22124999999999995 + - 0.0 + - 0.07875000000000006 + - 0.0 + - 0.28875 + - 0.01125 + - 0.0 + - 0.0 + - 0.19875 + - 0.10124999999999999 + - 0.0 + - 0.0 + - 0.10875000000000001 + - 0.19124999999999998 + - 0.0 + - 0.0 + - true +- - - 0.007500000000000007 + - 0.2925 + - 0.0 + - 0.0 + - 0.0 + - 0.21750000000000003 + - 0.08249999999999998 + - 0.0 + - 0.0 + - 0.1275 + - 0.1725 + - 0.0 + - 0.0 + - 0.0375 + - 0.2625 + - 0.0 + - 0.05249999999999994 + - 0.0 + - 0.24750000000000005 + - 0.0 + - 0.14250000000000002 + - 0.0 + - 0.15749999999999997 + - 0.0 + - 0.23249999999999996 + - 0.0 + - 0.06750000000000002 + - 0.0 + - 0.2775 + - 0.0225 + - 0.0 + - 0.0 + - 0.1875 + - 0.11249999999999999 + - 0.0 + - 0.0 + - 0.09750000000000002 + - 0.20249999999999999 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.29625 + - 0.0037499999999999864 + - 0.0 + - 0.0 + - 0.20625 + - 0.09375 + - 0.0 + - 0.0 + - 0.11624999999999998 + - 0.18375 + - 0.0 + - 0.0 + - 0.02625000000000004 + - 0.27374999999999994 + - 0.0 + - 0.06374999999999997 + - 0.0 + - 0.23625000000000002 + - 0.0 + - 0.15374999999999991 + - 0.0 + - 0.14625000000000007 + - 0.0 + - 0.24375 + - 0.0 + - 0.056249999999999994 + - 0.0 + - 0.26625 + - 0.033749999999999995 + - 0.0 + - 0.0 + - 0.17625 + - 0.12374999999999999 + - 0.0 + - 0.0 + - 0.08625 + - 0.21375 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.285 + - 0.015000000000000013 + - 0.0 + - 0.0 + - 0.19500000000000003 + - 0.10499999999999995 + - 0.0 + - 0.0 + - 0.10500000000000002 + - 0.19499999999999998 + - 0.0 + - 0.0 + - 0.015000000000000013 + - 0.285 + - 0.0 + - 0.075 + - 0.0 + - 0.22499999999999998 + - 0.0 + - 0.16499999999999995 + - 0.0 + - 0.13500000000000004 + - 0.0 + - 0.255 + - 0.0 + - 0.04499999999999997 + - 0.0 + - 0.255 + - 0.045 + - 0.0 + - 0.0 + - 0.165 + - 0.13499999999999998 + - 0.0 + - 0.0 + - 0.075 + - 0.22499999999999998 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.27375 + - 0.02624999999999997 + - 0.0 + - 0.0 + - 0.18375 + - 0.11624999999999998 + - 0.0 + - 0.0 + - 0.09375 + - 0.20625 + - 0.0 + - 0.0 + - 0.003750000000000053 + - 0.29624999999999996 + - 0.0 + - 0.08625000000000002 + - 0.0 + - 0.21374999999999997 + - 0.0 + - 0.17624999999999996 + - 0.0 + - 0.12375000000000003 + - 0.0 + - 0.26624999999999993 + - 0.0 + - 0.03375000000000008 + - 0.0 + - 0.24375 + - 0.056249999999999994 + - 0.0 + - 0.0 + - 0.15374999999999997 + - 0.14625 + - 0.0 + - 0.0 + - 0.06375 + - 0.23625 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.2625 + - 0.0375 + - 0.0 + - 0.0 + - 0.1725 + - 0.1275 + - 0.0 + - 0.0 + - 0.08250000000000003 + - 0.21749999999999994 + - 0.0 + - 0.007499999999999973 + - 0.0 + - 0.29250000000000004 + - 0.0 + - 0.09749999999999992 + - 0.0 + - 0.20250000000000007 + - 0.0 + - 0.1875 + - 0.0 + - 0.11249999999999999 + - 0.0 + - 0.2774999999999999 + - 0.0 + - 0.02250000000000005 + - 0.0 + - 0.23249999999999998 + - 0.06749999999999999 + - 0.0 + - 0.0 + - 0.1425 + - 0.1575 + - 0.0 + - 0.0 + - 0.05250000000000001 + - 0.24749999999999997 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.25125000000000003 + - 0.04874999999999996 + - 0.0 + - 0.0 + - 0.16125000000000003 + - 0.13874999999999996 + - 0.0 + - 0.0 + - 0.07125000000000001 + - 0.22874999999999998 + - 0.0 + - 0.01875 + - 0.0 + - 0.28125 + - 0.0 + - 0.10874999999999994 + - 0.0 + - 0.19125000000000006 + - 0.0 + - 0.19875 + - 0.0 + - 0.10124999999999997 + - 0.0 + - 0.28874999999999995 + - 0.0 + - 0.011250000000000026 + - 0.0 + - 0.22125 + - 0.07875 + - 0.0 + - 0.0 + - 0.13125 + - 0.16874999999999998 + - 0.0 + - 0.0 + - 0.041250000000000016 + - 0.25875 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.24 + - 0.059999999999999984 + - 0.0 + - 0.0 + - 0.15 + - 0.15 + - 0.0 + - 0.0 + - 0.06000000000000005 + - 0.23999999999999994 + - 0.0 + - 0.030000000000000027 + - 0.0 + - 0.26999999999999996 + - 0.0 + - 0.11999999999999997 + - 0.0 + - 0.18000000000000002 + - 0.0 + - 0.2099999999999999 + - 0.0 + - 0.09000000000000008 + - 0.0 + - 0.3 + - 0.0 + - 0.0 + - 0.0 + - 0.21 + - 0.09 + - 0.0 + - 0.0 + - 0.12 + - 0.18 + - 0.0 + - 0.0 + - 0.030000000000000027 + - 0.26999999999999996 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.22874999999999998 + - 0.07125000000000001 + - 0.0 + - 0.0 + - 0.13875000000000004 + - 0.16124999999999995 + - 0.0 + - 0.0 + - 0.04875000000000002 + - 0.25125 + - 0.0 + - 0.04124999999999992 + - 0.0 + - 0.2587500000000001 + - 0.0 + - 0.13125 + - 0.0 + - 0.16874999999999998 + - 0.0 + - 0.22124999999999995 + - 0.0 + - 0.07875000000000006 + - 0.0 + - 0.28875 + - 0.01125 + - 0.0 + - 0.0 + - 0.19875 + - 0.10124999999999999 + - 0.0 + - 0.0 + - 0.10875000000000001 + - 0.19124999999999998 + - 0.0 + - 0.0 + - 0.01875 + - 0.28125 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.21750000000000003 + - 0.08249999999999998 + - 0.0 + - 0.0 + - 0.1275 + - 0.1725 + - 0.0 + - 0.0 + - 0.0375 + - 0.2625 + - 0.0 + - 0.05249999999999994 + - 0.0 + - 0.24750000000000005 + - 0.0 + - 0.14250000000000002 + - 0.0 + - 0.15749999999999997 + - 0.0 + - 0.23249999999999996 + - 0.0 + - 0.06750000000000002 + - 0.0 + - 0.2775 + - 0.0225 + - 0.0 + - 0.0 + - 0.1875 + - 0.11249999999999999 + - 0.0 + - 0.0 + - 0.09750000000000002 + - 0.20249999999999999 + - 0.0 + - 0.0 + - 0.007500000000000007 + - 0.2925 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.20625 + - 0.09375 + - 0.0 + - 0.0 + - 0.11624999999999998 + - 0.18375 + - 0.0 + - 0.0 + - 0.02625000000000004 + - 0.27374999999999994 + - 0.0 + - 0.06374999999999997 + - 0.0 + - 0.23625000000000002 + - 0.0 + - 0.15374999999999991 + - 0.0 + - 0.14625000000000007 + - 0.0 + - 0.24375 + - 0.0 + - 0.056249999999999994 + - 0.0 + - 0.26625 + - 0.033749999999999995 + - 0.0 + - 0.0 + - 0.17625 + - 0.12374999999999999 + - 0.0 + - 0.0 + - 0.08625 + - 0.21375 + - 0.0 + - 0.0 + - 0.0 + - 0.29625 + - 0.0037499999999999864 + - 0.0 + - true +- - - 0.0 + - 0.19500000000000003 + - 0.10499999999999995 + - 0.0 + - 0.0 + - 0.10500000000000002 + - 0.19499999999999998 + - 0.0 + - 0.0 + - 0.015000000000000013 + - 0.285 + - 0.0 + - 0.075 + - 0.0 + - 0.22499999999999998 + - 0.0 + - 0.16499999999999995 + - 0.0 + - 0.13500000000000004 + - 0.0 + - 0.255 + - 0.0 + - 0.04499999999999997 + - 0.0 + - 0.255 + - 0.045 + - 0.0 + - 0.0 + - 0.165 + - 0.13499999999999998 + - 0.0 + - 0.0 + - 0.075 + - 0.22499999999999998 + - 0.0 + - 0.0 + - 0.0 + - 0.285 + - 0.015000000000000013 + - 0.0 + - true +- - - 0.0 + - 0.18375 + - 0.11624999999999998 + - 0.0 + - 0.0 + - 0.09375 + - 0.20625 + - 0.0 + - 0.0 + - 0.003750000000000053 + - 0.29624999999999996 + - 0.0 + - 0.08625000000000002 + - 0.0 + - 0.21374999999999997 + - 0.0 + - 0.17624999999999996 + - 0.0 + - 0.12375000000000003 + - 0.0 + - 0.26624999999999993 + - 0.0 + - 0.03375000000000008 + - 0.0 + - 0.24375 + - 0.056249999999999994 + - 0.0 + - 0.0 + - 0.15374999999999997 + - 0.14625 + - 0.0 + - 0.0 + - 0.06375 + - 0.23625 + - 0.0 + - 0.0 + - 0.0 + - 0.27375 + - 0.02624999999999997 + - 0.0 + - true +- - - 0.0 + - 0.1725 + - 0.1275 + - 0.0 + - 0.0 + - 0.08250000000000003 + - 0.21749999999999994 + - 0.0 + - 0.007499999999999973 + - 0.0 + - 0.29250000000000004 + - 0.0 + - 0.09749999999999992 + - 0.0 + - 0.20250000000000007 + - 0.0 + - 0.1875 + - 0.0 + - 0.11249999999999999 + - 0.0 + - 0.2774999999999999 + - 0.0 + - 0.02250000000000005 + - 0.0 + - 0.23249999999999998 + - 0.06749999999999999 + - 0.0 + - 0.0 + - 0.1425 + - 0.1575 + - 0.0 + - 0.0 + - 0.05250000000000001 + - 0.24749999999999997 + - 0.0 + - 0.0 + - 0.0 + - 0.2625 + - 0.0375 + - 0.0 + - true +- - - 0.0 + - 0.16125000000000003 + - 0.13874999999999996 + - 0.0 + - 0.0 + - 0.07125000000000001 + - 0.22874999999999998 + - 0.0 + - 0.01875 + - 0.0 + - 0.28125 + - 0.0 + - 0.10874999999999994 + - 0.0 + - 0.19125000000000006 + - 0.0 + - 0.19875 + - 0.0 + - 0.10124999999999997 + - 0.0 + - 0.28874999999999995 + - 0.0 + - 0.011250000000000026 + - 0.0 + - 0.22125 + - 0.07875 + - 0.0 + - 0.0 + - 0.13125 + - 0.16874999999999998 + - 0.0 + - 0.0 + - 0.041250000000000016 + - 0.25875 + - 0.0 + - 0.0 + - 0.0 + - 0.25125000000000003 + - 0.04874999999999996 + - 0.0 + - true +- - - 0.0 + - 0.15 + - 0.15 + - 0.0 + - 0.0 + - 0.06000000000000005 + - 0.23999999999999994 + - 0.0 + - 0.030000000000000027 + - 0.0 + - 0.26999999999999996 + - 0.0 + - 0.11999999999999997 + - 0.0 + - 0.18000000000000002 + - 0.0 + - 0.2099999999999999 + - 0.0 + - 0.09000000000000008 + - 0.0 + - 0.3 + - 0.0 + - 0.0 + - 0.0 + - 0.21 + - 0.09 + - 0.0 + - 0.0 + - 0.12 + - 0.18 + - 0.0 + - 0.0 + - 0.030000000000000027 + - 0.26999999999999996 + - 0.0 + - 0.0 + - 0.0 + - 0.24 + - 0.059999999999999984 + - 0.0 + - true +- - - 0.0 + - 0.13875000000000004 + - 0.16124999999999995 + - 0.0 + - 0.0 + - 0.04875000000000002 + - 0.25125 + - 0.0 + - 0.04124999999999992 + - 0.0 + - 0.2587500000000001 + - 0.0 + - 0.13125 + - 0.0 + - 0.16874999999999998 + - 0.0 + - 0.22124999999999995 + - 0.0 + - 0.07875000000000006 + - 0.0 + - 0.28875 + - 0.01125 + - 0.0 + - 0.0 + - 0.19875 + - 0.10124999999999999 + - 0.0 + - 0.0 + - 0.10875000000000001 + - 0.19124999999999998 + - 0.0 + - 0.0 + - 0.01875 + - 0.28125 + - 0.0 + - 0.0 + - 0.0 + - 0.22874999999999998 + - 0.07125000000000001 + - 0.0 + - true +- - - 0.0 + - 0.1275 + - 0.1725 + - 0.0 + - 0.0 + - 0.0375 + - 0.2625 + - 0.0 + - 0.05249999999999994 + - 0.0 + - 0.24750000000000005 + - 0.0 + - 0.14250000000000002 + - 0.0 + - 0.15749999999999997 + - 0.0 + - 0.23249999999999996 + - 0.0 + - 0.06750000000000002 + - 0.0 + - 0.2775 + - 0.0225 + - 0.0 + - 0.0 + - 0.1875 + - 0.11249999999999999 + - 0.0 + - 0.0 + - 0.09750000000000002 + - 0.20249999999999999 + - 0.0 + - 0.0 + - 0.007500000000000007 + - 0.2925 + - 0.0 + - 0.0 + - 0.0 + - 0.21750000000000003 + - 0.08249999999999998 + - 0.0 + - true +- - - 0.0 + - 0.11624999999999998 + - 0.18375 + - 0.0 + - 0.0 + - 0.02625000000000004 + - 0.27374999999999994 + - 0.0 + - 0.06374999999999997 + - 0.0 + - 0.23625000000000002 + - 0.0 + - 0.15374999999999991 + - 0.0 + - 0.14625000000000007 + - 0.0 + - 0.24375 + - 0.0 + - 0.056249999999999994 + - 0.0 + - 0.26625 + - 0.033749999999999995 + - 0.0 + - 0.0 + - 0.17625 + - 0.12374999999999999 + - 0.0 + - 0.0 + - 0.08625 + - 0.21375 + - 0.0 + - 0.0 + - 0.0 + - 0.29625 + - 0.0037499999999999864 + - 0.0 + - 0.0 + - 0.20625 + - 0.09375 + - 0.0 + - true +- - - 0.0 + - 0.10500000000000002 + - 0.19499999999999998 + - 0.0 + - 0.0 + - 0.015000000000000013 + - 0.285 + - 0.0 + - 0.075 + - 0.0 + - 0.22499999999999998 + - 0.0 + - 0.16499999999999995 + - 0.0 + - 0.13500000000000004 + - 0.0 + - 0.255 + - 0.0 + - 0.04499999999999997 + - 0.0 + - 0.255 + - 0.045 + - 0.0 + - 0.0 + - 0.165 + - 0.13499999999999998 + - 0.0 + - 0.0 + - 0.075 + - 0.22499999999999998 + - 0.0 + - 0.0 + - 0.0 + - 0.285 + - 0.015000000000000013 + - 0.0 + - 0.0 + - 0.19500000000000003 + - 0.10499999999999995 + - 0.0 + - true +- - - 0.0 + - 0.09375 + - 0.20625 + - 0.0 + - 0.0 + - 0.003750000000000053 + - 0.29624999999999996 + - 0.0 + - 0.08625000000000002 + - 0.0 + - 0.21374999999999997 + - 0.0 + - 0.17624999999999996 + - 0.0 + - 0.12375000000000003 + - 0.0 + - 0.26624999999999993 + - 0.0 + - 0.03375000000000008 + - 0.0 + - 0.24375 + - 0.056249999999999994 + - 0.0 + - 0.0 + - 0.15374999999999997 + - 0.14625 + - 0.0 + - 0.0 + - 0.06375 + - 0.23625 + - 0.0 + - 0.0 + - 0.0 + - 0.27375 + - 0.02624999999999997 + - 0.0 + - 0.0 + - 0.18375 + - 0.11624999999999998 + - 0.0 + - true +- - - 0.0 + - 0.08250000000000003 + - 0.21749999999999994 + - 0.0 + - 0.007499999999999973 + - 0.0 + - 0.29250000000000004 + - 0.0 + - 0.09749999999999992 + - 0.0 + - 0.20250000000000007 + - 0.0 + - 0.1875 + - 0.0 + - 0.11249999999999999 + - 0.0 + - 0.2774999999999999 + - 0.0 + - 0.02250000000000005 + - 0.0 + - 0.23249999999999998 + - 0.06749999999999999 + - 0.0 + - 0.0 + - 0.1425 + - 0.1575 + - 0.0 + - 0.0 + - 0.05250000000000001 + - 0.24749999999999997 + - 0.0 + - 0.0 + - 0.0 + - 0.2625 + - 0.0375 + - 0.0 + - 0.0 + - 0.1725 + - 0.1275 + - 0.0 + - true +- - - 0.0 + - 0.07125000000000001 + - 0.22874999999999998 + - 0.0 + - 0.01875 + - 0.0 + - 0.28125 + - 0.0 + - 0.10874999999999994 + - 0.0 + - 0.19125000000000006 + - 0.0 + - 0.19875 + - 0.0 + - 0.10124999999999997 + - 0.0 + - 0.28874999999999995 + - 0.0 + - 0.011250000000000026 + - 0.0 + - 0.22125 + - 0.07875 + - 0.0 + - 0.0 + - 0.13125 + - 0.16874999999999998 + - 0.0 + - 0.0 + - 0.041250000000000016 + - 0.25875 + - 0.0 + - 0.0 + - 0.0 + - 0.25125000000000003 + - 0.04874999999999996 + - 0.0 + - 0.0 + - 0.16125000000000003 + - 0.13874999999999996 + - 0.0 + - true +- - - 0.0 + - 0.06000000000000005 + - 0.23999999999999994 + - 0.0 + - 0.030000000000000027 + - 0.0 + - 0.26999999999999996 + - 0.0 + - 0.11999999999999997 + - 0.0 + - 0.18000000000000002 + - 0.0 + - 0.2099999999999999 + - 0.0 + - 0.09000000000000008 + - 0.0 + - 0.3 + - 0.0 + - 0.0 + - 0.0 + - 0.21 + - 0.09 + - 0.0 + - 0.0 + - 0.12 + - 0.18 + - 0.0 + - 0.0 + - 0.030000000000000027 + - 0.26999999999999996 + - 0.0 + - 0.0 + - 0.0 + - 0.24 + - 0.059999999999999984 + - 0.0 + - 0.0 + - 0.15 + - 0.15 + - 0.0 + - true +- - - 0.0 + - 0.04875000000000002 + - 0.25125 + - 0.0 + - 0.04124999999999992 + - 0.0 + - 0.2587500000000001 + - 0.0 + - 0.13125 + - 0.0 + - 0.16874999999999998 + - 0.0 + - 0.22124999999999995 + - 0.0 + - 0.07875000000000006 + - 0.0 + - 0.28875 + - 0.01125 + - 0.0 + - 0.0 + - 0.19875 + - 0.10124999999999999 + - 0.0 + - 0.0 + - 0.10875000000000001 + - 0.19124999999999998 + - 0.0 + - 0.0 + - 0.01875 + - 0.28125 + - 0.0 + - 0.0 + - 0.0 + - 0.22874999999999998 + - 0.07125000000000001 + - 0.0 + - 0.0 + - 0.13875000000000004 + - 0.16124999999999995 + - 0.0 + - true +- - - 0.0 + - 0.0375 + - 0.2625 + - 0.0 + - 0.05249999999999994 + - 0.0 + - 0.24750000000000005 + - 0.0 + - 0.14250000000000002 + - 0.0 + - 0.15749999999999997 + - 0.0 + - 0.23249999999999996 + - 0.0 + - 0.06750000000000002 + - 0.0 + - 0.2775 + - 0.0225 + - 0.0 + - 0.0 + - 0.1875 + - 0.11249999999999999 + - 0.0 + - 0.0 + - 0.09750000000000002 + - 0.20249999999999999 + - 0.0 + - 0.0 + - 0.007500000000000007 + - 0.2925 + - 0.0 + - 0.0 + - 0.0 + - 0.21750000000000003 + - 0.08249999999999998 + - 0.0 + - 0.0 + - 0.1275 + - 0.1725 + - 0.0 + - true +- - - 0.0 + - 0.02625000000000004 + - 0.27374999999999994 + - 0.0 + - 0.06374999999999997 + - 0.0 + - 0.23625000000000002 + - 0.0 + - 0.15374999999999991 + - 0.0 + - 0.14625000000000007 + - 0.0 + - 0.24375 + - 0.0 + - 0.056249999999999994 + - 0.0 + - 0.26625 + - 0.033749999999999995 + - 0.0 + - 0.0 + - 0.17625 + - 0.12374999999999999 + - 0.0 + - 0.0 + - 0.08625 + - 0.21375 + - 0.0 + - 0.0 + - 0.0 + - 0.29625 + - 0.0037499999999999864 + - 0.0 + - 0.0 + - 0.20625 + - 0.09375 + - 0.0 + - 0.0 + - 0.11624999999999998 + - 0.18375 + - 0.0 + - true +- - - 0.0 + - 0.015000000000000013 + - 0.285 + - 0.0 + - 0.075 + - 0.0 + - 0.22499999999999998 + - 0.0 + - 0.16499999999999995 + - 0.0 + - 0.13500000000000004 + - 0.0 + - 0.255 + - 0.0 + - 0.04499999999999997 + - 0.0 + - 0.255 + - 0.045 + - 0.0 + - 0.0 + - 0.165 + - 0.13499999999999998 + - 0.0 + - 0.0 + - 0.075 + - 0.22499999999999998 + - 0.0 + - 0.0 + - 0.0 + - 0.285 + - 0.015000000000000013 + - 0.0 + - 0.0 + - 0.19500000000000003 + - 0.10499999999999995 + - 0.0 + - 0.0 + - 0.10500000000000002 + - 0.19499999999999998 + - 0.0 + - true +- - - 0.0 + - 0.003750000000000053 + - 0.29624999999999996 + - 0.0 + - 0.08625000000000002 + - 0.0 + - 0.21374999999999997 + - 0.0 + - 0.17624999999999996 + - 0.0 + - 0.12375000000000003 + - 0.0 + - 0.26624999999999993 + - 0.0 + - 0.03375000000000008 + - 0.0 + - 0.24375 + - 0.056249999999999994 + - 0.0 + - 0.0 + - 0.15374999999999997 + - 0.14625 + - 0.0 + - 0.0 + - 0.06375 + - 0.23625 + - 0.0 + - 0.0 + - 0.0 + - 0.27375 + - 0.02624999999999997 + - 0.0 + - 0.0 + - 0.18375 + - 0.11624999999999998 + - 0.0 + - 0.0 + - 0.09375 + - 0.20625 + - 0.0 + - true +- - - 0.007499999999999973 + - 0.0 + - 0.29250000000000004 + - 0.0 + - 0.09749999999999992 + - 0.0 + - 0.20250000000000007 + - 0.0 + - 0.1875 + - 0.0 + - 0.11249999999999999 + - 0.0 + - 0.2774999999999999 + - 0.0 + - 0.02250000000000005 + - 0.0 + - 0.23249999999999998 + - 0.06749999999999999 + - 0.0 + - 0.0 + - 0.1425 + - 0.1575 + - 0.0 + - 0.0 + - 0.05250000000000001 + - 0.24749999999999997 + - 0.0 + - 0.0 + - 0.0 + - 0.2625 + - 0.0375 + - 0.0 + - 0.0 + - 0.1725 + - 0.1275 + - 0.0 + - 0.0 + - 0.08250000000000003 + - 0.21749999999999994 + - 0.0 + - true +- - - 0.01875 + - 0.0 + - 0.28125 + - 0.0 + - 0.10874999999999994 + - 0.0 + - 0.19125000000000006 + - 0.0 + - 0.19875 + - 0.0 + - 0.10124999999999997 + - 0.0 + - 0.28874999999999995 + - 0.0 + - 0.011250000000000026 + - 0.0 + - 0.22125 + - 0.07875 + - 0.0 + - 0.0 + - 0.13125 + - 0.16874999999999998 + - 0.0 + - 0.0 + - 0.041250000000000016 + - 0.25875 + - 0.0 + - 0.0 + - 0.0 + - 0.25125000000000003 + - 0.04874999999999996 + - 0.0 + - 0.0 + - 0.16125000000000003 + - 0.13874999999999996 + - 0.0 + - 0.0 + - 0.07125000000000001 + - 0.22874999999999998 + - 0.0 + - true +- - - 0.030000000000000027 + - 0.0 + - 0.26999999999999996 + - 0.0 + - 0.11999999999999997 + - 0.0 + - 0.18000000000000002 + - 0.0 + - 0.2099999999999999 + - 0.0 + - 0.09000000000000008 + - 0.0 + - 0.3 + - 0.0 + - 0.0 + - 0.0 + - 0.21 + - 0.09 + - 0.0 + - 0.0 + - 0.12 + - 0.18 + - 0.0 + - 0.0 + - 0.030000000000000027 + - 0.26999999999999996 + - 0.0 + - 0.0 + - 0.0 + - 0.24 + - 0.059999999999999984 + - 0.0 + - 0.0 + - 0.15 + - 0.15 + - 0.0 + - 0.0 + - 0.06000000000000005 + - 0.23999999999999994 + - 0.0 + - true +- - - 0.04124999999999992 + - 0.0 + - 0.2587500000000001 + - 0.0 + - 0.13125 + - 0.0 + - 0.16874999999999998 + - 0.0 + - 0.22124999999999995 + - 0.0 + - 0.07875000000000006 + - 0.0 + - 0.28875 + - 0.01125 + - 0.0 + - 0.0 + - 0.19875 + - 0.10124999999999999 + - 0.0 + - 0.0 + - 0.10875000000000001 + - 0.19124999999999998 + - 0.0 + - 0.0 + - 0.01875 + - 0.28125 + - 0.0 + - 0.0 + - 0.0 + - 0.22874999999999998 + - 0.07125000000000001 + - 0.0 + - 0.0 + - 0.13875000000000004 + - 0.16124999999999995 + - 0.0 + - 0.0 + - 0.04875000000000002 + - 0.25125 + - 0.0 + - true +- - - 0.05249999999999994 + - 0.0 + - 0.24750000000000005 + - 0.0 + - 0.14250000000000002 + - 0.0 + - 0.15749999999999997 + - 0.0 + - 0.23249999999999996 + - 0.0 + - 0.06750000000000002 + - 0.0 + - 0.2775 + - 0.0225 + - 0.0 + - 0.0 + - 0.1875 + - 0.11249999999999999 + - 0.0 + - 0.0 + - 0.09750000000000002 + - 0.20249999999999999 + - 0.0 + - 0.0 + - 0.007500000000000007 + - 0.2925 + - 0.0 + - 0.0 + - 0.0 + - 0.21750000000000003 + - 0.08249999999999998 + - 0.0 + - 0.0 + - 0.1275 + - 0.1725 + - 0.0 + - 0.0 + - 0.0375 + - 0.2625 + - 0.0 + - true +- - - 0.06374999999999997 + - 0.0 + - 0.23625000000000002 + - 0.0 + - 0.15374999999999991 + - 0.0 + - 0.14625000000000007 + - 0.0 + - 0.24375 + - 0.0 + - 0.056249999999999994 + - 0.0 + - 0.26625 + - 0.033749999999999995 + - 0.0 + - 0.0 + - 0.17625 + - 0.12374999999999999 + - 0.0 + - 0.0 + - 0.08625 + - 0.21375 + - 0.0 + - 0.0 + - 0.0 + - 0.29625 + - 0.0037499999999999864 + - 0.0 + - 0.0 + - 0.20625 + - 0.09375 + - 0.0 + - 0.0 + - 0.11624999999999998 + - 0.18375 + - 0.0 + - 0.0 + - 0.02625000000000004 + - 0.27374999999999994 + - 0.0 + - true +- - - 0.075 + - 0.0 + - 0.22499999999999998 + - 0.0 + - 0.16499999999999995 + - 0.0 + - 0.13500000000000004 + - 0.0 + - 0.255 + - 0.0 + - 0.04499999999999997 + - 0.0 + - 0.255 + - 0.045 + - 0.0 + - 0.0 + - 0.165 + - 0.13499999999999998 + - 0.0 + - 0.0 + - 0.075 + - 0.22499999999999998 + - 0.0 + - 0.0 + - 0.0 + - 0.285 + - 0.015000000000000013 + - 0.0 + - 0.0 + - 0.19500000000000003 + - 0.10499999999999995 + - 0.0 + - 0.0 + - 0.10500000000000002 + - 0.19499999999999998 + - 0.0 + - 0.0 + - 0.015000000000000013 + - 0.285 + - 0.0 + - true +- - - 0.08625000000000002 + - 0.0 + - 0.21374999999999997 + - 0.0 + - 0.17624999999999996 + - 0.0 + - 0.12375000000000003 + - 0.0 + - 0.26624999999999993 + - 0.0 + - 0.03375000000000008 + - 0.0 + - 0.24375 + - 0.056249999999999994 + - 0.0 + - 0.0 + - 0.15374999999999997 + - 0.14625 + - 0.0 + - 0.0 + - 0.06375 + - 0.23625 + - 0.0 + - 0.0 + - 0.0 + - 0.27375 + - 0.02624999999999997 + - 0.0 + - 0.0 + - 0.18375 + - 0.11624999999999998 + - 0.0 + - 0.0 + - 0.09375 + - 0.20625 + - 0.0 + - 0.0 + - 0.003750000000000053 + - 0.29624999999999996 + - 0.0 + - true +- - - 0.09749999999999992 + - 0.0 + - 0.20250000000000007 + - 0.0 + - 0.1875 + - 0.0 + - 0.11249999999999999 + - 0.0 + - 0.2774999999999999 + - 0.0 + - 0.02250000000000005 + - 0.0 + - 0.23249999999999998 + - 0.06749999999999999 + - 0.0 + - 0.0 + - 0.1425 + - 0.1575 + - 0.0 + - 0.0 + - 0.05250000000000001 + - 0.24749999999999997 + - 0.0 + - 0.0 + - 0.0 + - 0.2625 + - 0.0375 + - 0.0 + - 0.0 + - 0.1725 + - 0.1275 + - 0.0 + - 0.0 + - 0.08250000000000003 + - 0.21749999999999994 + - 0.0 + - 0.007499999999999973 + - 0.0 + - 0.29250000000000004 + - 0.0 + - true +- - - 0.10874999999999994 + - 0.0 + - 0.19125000000000006 + - 0.0 + - 0.19875 + - 0.0 + - 0.10124999999999997 + - 0.0 + - 0.28874999999999995 + - 0.0 + - 0.011250000000000026 + - 0.0 + - 0.22125 + - 0.07875 + - 0.0 + - 0.0 + - 0.13125 + - 0.16874999999999998 + - 0.0 + - 0.0 + - 0.041250000000000016 + - 0.25875 + - 0.0 + - 0.0 + - 0.0 + - 0.25125000000000003 + - 0.04874999999999996 + - 0.0 + - 0.0 + - 0.16125000000000003 + - 0.13874999999999996 + - 0.0 + - 0.0 + - 0.07125000000000001 + - 0.22874999999999998 + - 0.0 + - 0.01875 + - 0.0 + - 0.28125 + - 0.0 + - true +- - - 0.11999999999999997 + - 0.0 + - 0.18000000000000002 + - 0.0 + - 0.2099999999999999 + - 0.0 + - 0.09000000000000008 + - 0.0 + - 0.3 + - 0.0 + - 0.0 + - 0.0 + - 0.21 + - 0.09 + - 0.0 + - 0.0 + - 0.12 + - 0.18 + - 0.0 + - 0.0 + - 0.030000000000000027 + - 0.26999999999999996 + - 0.0 + - 0.0 + - 0.0 + - 0.24 + - 0.059999999999999984 + - 0.0 + - 0.0 + - 0.15 + - 0.15 + - 0.0 + - 0.0 + - 0.06000000000000005 + - 0.23999999999999994 + - 0.0 + - 0.030000000000000027 + - 0.0 + - 0.26999999999999996 + - 0.0 + - true +- - - 0.13125 + - 0.0 + - 0.16874999999999998 + - 0.0 + - 0.22124999999999995 + - 0.0 + - 0.07875000000000006 + - 0.0 + - 0.28875 + - 0.01125 + - 0.0 + - 0.0 + - 0.19875 + - 0.10124999999999999 + - 0.0 + - 0.0 + - 0.10875000000000001 + - 0.19124999999999998 + - 0.0 + - 0.0 + - 0.01875 + - 0.28125 + - 0.0 + - 0.0 + - 0.0 + - 0.22874999999999998 + - 0.07125000000000001 + - 0.0 + - 0.0 + - 0.13875000000000004 + - 0.16124999999999995 + - 0.0 + - 0.0 + - 0.04875000000000002 + - 0.25125 + - 0.0 + - 0.04124999999999992 + - 0.0 + - 0.2587500000000001 + - 0.0 + - true +- - - 0.14250000000000002 + - 0.0 + - 0.15749999999999997 + - 0.0 + - 0.23249999999999996 + - 0.0 + - 0.06750000000000002 + - 0.0 + - 0.2775 + - 0.0225 + - 0.0 + - 0.0 + - 0.1875 + - 0.11249999999999999 + - 0.0 + - 0.0 + - 0.09750000000000002 + - 0.20249999999999999 + - 0.0 + - 0.0 + - 0.007500000000000007 + - 0.2925 + - 0.0 + - 0.0 + - 0.0 + - 0.21750000000000003 + - 0.08249999999999998 + - 0.0 + - 0.0 + - 0.1275 + - 0.1725 + - 0.0 + - 0.0 + - 0.0375 + - 0.2625 + - 0.0 + - 0.05249999999999994 + - 0.0 + - 0.24750000000000005 + - 0.0 + - true +- - - 0.15374999999999991 + - 0.0 + - 0.14625000000000007 + - 0.0 + - 0.24375 + - 0.0 + - 0.056249999999999994 + - 0.0 + - 0.26625 + - 0.033749999999999995 + - 0.0 + - 0.0 + - 0.17625 + - 0.12374999999999999 + - 0.0 + - 0.0 + - 0.08625 + - 0.21375 + - 0.0 + - 0.0 + - 0.0 + - 0.29625 + - 0.0037499999999999864 + - 0.0 + - 0.0 + - 0.20625 + - 0.09375 + - 0.0 + - 0.0 + - 0.11624999999999998 + - 0.18375 + - 0.0 + - 0.0 + - 0.02625000000000004 + - 0.27374999999999994 + - 0.0 + - 0.06374999999999997 + - 0.0 + - 0.23625000000000002 + - 0.0 + - true +- - - 0.16499999999999995 + - 0.0 + - 0.13500000000000004 + - 0.0 + - 0.255 + - 0.0 + - 0.04499999999999997 + - 0.0 + - 0.255 + - 0.045 + - 0.0 + - 0.0 + - 0.165 + - 0.13499999999999998 + - 0.0 + - 0.0 + - 0.075 + - 0.22499999999999998 + - 0.0 + - 0.0 + - 0.0 + - 0.285 + - 0.015000000000000013 + - 0.0 + - 0.0 + - 0.19500000000000003 + - 0.10499999999999995 + - 0.0 + - 0.0 + - 0.10500000000000002 + - 0.19499999999999998 + - 0.0 + - 0.0 + - 0.015000000000000013 + - 0.285 + - 0.0 + - 0.075 + - 0.0 + - 0.22499999999999998 + - 0.0 + - true +- - - 0.17624999999999996 + - 0.0 + - 0.12375000000000003 + - 0.0 + - 0.26624999999999993 + - 0.0 + - 0.03375000000000008 + - 0.0 + - 0.24375 + - 0.056249999999999994 + - 0.0 + - 0.0 + - 0.15374999999999997 + - 0.14625 + - 0.0 + - 0.0 + - 0.06375 + - 0.23625 + - 0.0 + - 0.0 + - 0.0 + - 0.27375 + - 0.02624999999999997 + - 0.0 + - 0.0 + - 0.18375 + - 0.11624999999999998 + - 0.0 + - 0.0 + - 0.09375 + - 0.20625 + - 0.0 + - 0.0 + - 0.003750000000000053 + - 0.29624999999999996 + - 0.0 + - 0.08625000000000002 + - 0.0 + - 0.21374999999999997 + - 0.0 + - true +- - - 0.1875 + - 0.0 + - 0.11249999999999999 + - 0.0 + - 0.2774999999999999 + - 0.0 + - 0.02250000000000005 + - 0.0 + - 0.23249999999999998 + - 0.06749999999999999 + - 0.0 + - 0.0 + - 0.1425 + - 0.1575 + - 0.0 + - 0.0 + - 0.05250000000000001 + - 0.24749999999999997 + - 0.0 + - 0.0 + - 0.0 + - 0.2625 + - 0.0375 + - 0.0 + - 0.0 + - 0.1725 + - 0.1275 + - 0.0 + - 0.0 + - 0.08250000000000003 + - 0.21749999999999994 + - 0.0 + - 0.007499999999999973 + - 0.0 + - 0.29250000000000004 + - 0.0 + - 0.09749999999999992 + - 0.0 + - 0.20250000000000007 + - 0.0 + - true +- - - 0.19875 + - 0.0 + - 0.10124999999999997 + - 0.0 + - 0.28874999999999995 + - 0.0 + - 0.011250000000000026 + - 0.0 + - 0.22125 + - 0.07875 + - 0.0 + - 0.0 + - 0.13125 + - 0.16874999999999998 + - 0.0 + - 0.0 + - 0.041250000000000016 + - 0.25875 + - 0.0 + - 0.0 + - 0.0 + - 0.25125000000000003 + - 0.04874999999999996 + - 0.0 + - 0.0 + - 0.16125000000000003 + - 0.13874999999999996 + - 0.0 + - 0.0 + - 0.07125000000000001 + - 0.22874999999999998 + - 0.0 + - 0.01875 + - 0.0 + - 0.28125 + - 0.0 + - 0.10874999999999994 + - 0.0 + - 0.19125000000000006 + - 0.0 + - true +- - - 0.2099999999999999 + - 0.0 + - 0.09000000000000008 + - 0.0 + - 0.3 + - 0.0 + - 0.0 + - 0.0 + - 0.21 + - 0.09 + - 0.0 + - 0.0 + - 0.12 + - 0.18 + - 0.0 + - 0.0 + - 0.030000000000000027 + - 0.26999999999999996 + - 0.0 + - 0.0 + - 0.0 + - 0.24 + - 0.059999999999999984 + - 0.0 + - 0.0 + - 0.15 + - 0.15 + - 0.0 + - 0.0 + - 0.06000000000000005 + - 0.23999999999999994 + - 0.0 + - 0.030000000000000027 + - 0.0 + - 0.26999999999999996 + - 0.0 + - 0.11999999999999997 + - 0.0 + - 0.18000000000000002 + - 0.0 + - true +- - - 0.22124999999999995 + - 0.0 + - 0.07875000000000006 + - 0.0 + - 0.28875 + - 0.01125 + - 0.0 + - 0.0 + - 0.19875 + - 0.10124999999999999 + - 0.0 + - 0.0 + - 0.10875000000000001 + - 0.19124999999999998 + - 0.0 + - 0.0 + - 0.01875 + - 0.28125 + - 0.0 + - 0.0 + - 0.0 + - 0.22874999999999998 + - 0.07125000000000001 + - 0.0 + - 0.0 + - 0.13875000000000004 + - 0.16124999999999995 + - 0.0 + - 0.0 + - 0.04875000000000002 + - 0.25125 + - 0.0 + - 0.04124999999999992 + - 0.0 + - 0.2587500000000001 + - 0.0 + - 0.13125 + - 0.0 + - 0.16874999999999998 + - 0.0 + - true +- - - 0.23249999999999996 + - 0.0 + - 0.06750000000000002 + - 0.0 + - 0.2775 + - 0.0225 + - 0.0 + - 0.0 + - 0.1875 + - 0.11249999999999999 + - 0.0 + - 0.0 + - 0.09750000000000002 + - 0.20249999999999999 + - 0.0 + - 0.0 + - 0.007500000000000007 + - 0.2925 + - 0.0 + - 0.0 + - 0.0 + - 0.21750000000000003 + - 0.08249999999999998 + - 0.0 + - 0.0 + - 0.1275 + - 0.1725 + - 0.0 + - 0.0 + - 0.0375 + - 0.2625 + - 0.0 + - 0.05249999999999994 + - 0.0 + - 0.24750000000000005 + - 0.0 + - 0.14250000000000002 + - 0.0 + - 0.15749999999999997 + - 0.0 + - true +- - - 0.24375 + - 0.0 + - 0.056249999999999994 + - 0.0 + - 0.26625 + - 0.033749999999999995 + - 0.0 + - 0.0 + - 0.17625 + - 0.12374999999999999 + - 0.0 + - 0.0 + - 0.08625 + - 0.21375 + - 0.0 + - 0.0 + - 0.0 + - 0.29625 + - 0.0037499999999999864 + - 0.0 + - 0.0 + - 0.20625 + - 0.09375 + - 0.0 + - 0.0 + - 0.11624999999999998 + - 0.18375 + - 0.0 + - 0.0 + - 0.02625000000000004 + - 0.27374999999999994 + - 0.0 + - 0.06374999999999997 + - 0.0 + - 0.23625000000000002 + - 0.0 + - 0.15374999999999991 + - 0.0 + - 0.14625000000000007 + - 0.0 + - true +- - - 0.255 + - 0.0 + - 0.04499999999999997 + - 0.0 + - 0.255 + - 0.045 + - 0.0 + - 0.0 + - 0.165 + - 0.13499999999999998 + - 0.0 + - 0.0 + - 0.075 + - 0.22499999999999998 + - 0.0 + - 0.0 + - 0.0 + - 0.285 + - 0.015000000000000013 + - 0.0 + - 0.0 + - 0.19500000000000003 + - 0.10499999999999995 + - 0.0 + - 0.0 + - 0.10500000000000002 + - 0.19499999999999998 + - 0.0 + - 0.0 + - 0.015000000000000013 + - 0.285 + - 0.0 + - 0.075 + - 0.0 + - 0.22499999999999998 + - 0.0 + - 0.16499999999999995 + - 0.0 + - 0.13500000000000004 + - 0.0 + - true +- - - 0.26624999999999993 + - 0.0 + - 0.03375000000000008 + - 0.0 + - 0.24375 + - 0.056249999999999994 + - 0.0 + - 0.0 + - 0.15374999999999997 + - 0.14625 + - 0.0 + - 0.0 + - 0.06375 + - 0.23625 + - 0.0 + - 0.0 + - 0.0 + - 0.27375 + - 0.02624999999999997 + - 0.0 + - 0.0 + - 0.18375 + - 0.11624999999999998 + - 0.0 + - 0.0 + - 0.09375 + - 0.20625 + - 0.0 + - 0.0 + - 0.003750000000000053 + - 0.29624999999999996 + - 0.0 + - 0.08625000000000002 + - 0.0 + - 0.21374999999999997 + - 0.0 + - 0.17624999999999996 + - 0.0 + - 0.12375000000000003 + - 0.0 + - true +- - - 0.2774999999999999 + - 0.0 + - 0.02250000000000005 + - 0.0 + - 0.23249999999999998 + - 0.06749999999999999 + - 0.0 + - 0.0 + - 0.1425 + - 0.1575 + - 0.0 + - 0.0 + - 0.05250000000000001 + - 0.24749999999999997 + - 0.0 + - 0.0 + - 0.0 + - 0.2625 + - 0.0375 + - 0.0 + - 0.0 + - 0.1725 + - 0.1275 + - 0.0 + - 0.0 + - 0.08250000000000003 + - 0.21749999999999994 + - 0.0 + - 0.007499999999999973 + - 0.0 + - 0.29250000000000004 + - 0.0 + - 0.09749999999999992 + - 0.0 + - 0.20250000000000007 + - 0.0 + - 0.1875 + - 0.0 + - 0.11249999999999999 + - 0.0 + - true +- - - 0.28874999999999995 + - 0.0 + - 0.011250000000000026 + - 0.0 + - 0.22125 + - 0.07875 + - 0.0 + - 0.0 + - 0.13125 + - 0.16874999999999998 + - 0.0 + - 0.0 + - 0.041250000000000016 + - 0.25875 + - 0.0 + - 0.0 + - 0.0 + - 0.25125000000000003 + - 0.04874999999999996 + - 0.0 + - 0.0 + - 0.16125000000000003 + - 0.13874999999999996 + - 0.0 + - 0.0 + - 0.07125000000000001 + - 0.22874999999999998 + - 0.0 + - 0.01875 + - 0.0 + - 0.28125 + - 0.0 + - 0.10874999999999994 + - 0.0 + - 0.19125000000000006 + - 0.0 + - 0.19875 + - 0.0 + - 0.10124999999999997 + - 0.0 + - true +- - - 0.3 + - 0.0 + - 0.0 + - 0.0 + - 0.21 + - 0.09 + - 0.0 + - 0.0 + - 0.12 + - 0.18 + - 0.0 + - 0.0 + - 0.030000000000000027 + - 0.26999999999999996 + - 0.0 + - 0.0 + - 0.0 + - 0.24 + - 0.059999999999999984 + - 0.0 + - 0.0 + - 0.15 + - 0.15 + - 0.0 + - 0.0 + - 0.06000000000000005 + - 0.23999999999999994 + - 0.0 + - 0.030000000000000027 + - 0.0 + - 0.26999999999999996 + - 0.0 + - 0.11999999999999997 + - 0.0 + - 0.18000000000000002 + - 0.0 + - 0.2099999999999999 + - 0.0 + - 0.09000000000000008 + - 0.0 + - true +- - - 0.28875 + - 0.01125 + - 0.0 + - 0.0 + - 0.19875 + - 0.10124999999999999 + - 0.0 + - 0.0 + - 0.10875000000000001 + - 0.19124999999999998 + - 0.0 + - 0.0 + - 0.01875 + - 0.28125 + - 0.0 + - 0.0 + - 0.0 + - 0.22874999999999998 + - 0.07125000000000001 + - 0.0 + - 0.0 + - 0.13875000000000004 + - 0.16124999999999995 + - 0.0 + - 0.0 + - 0.04875000000000002 + - 0.25125 + - 0.0 + - 0.04124999999999992 + - 0.0 + - 0.2587500000000001 + - 0.0 + - 0.13125 + - 0.0 + - 0.16874999999999998 + - 0.0 + - 0.22124999999999995 + - 0.0 + - 0.07875000000000006 + - 0.0 + - true +- - - 0.2775 + - 0.0225 + - 0.0 + - 0.0 + - 0.1875 + - 0.11249999999999999 + - 0.0 + - 0.0 + - 0.09750000000000002 + - 0.20249999999999999 + - 0.0 + - 0.0 + - 0.007500000000000007 + - 0.2925 + - 0.0 + - 0.0 + - 0.0 + - 0.21750000000000003 + - 0.08249999999999998 + - 0.0 + - 0.0 + - 0.1275 + - 0.1725 + - 0.0 + - 0.0 + - 0.0375 + - 0.2625 + - 0.0 + - 0.05249999999999994 + - 0.0 + - 0.24750000000000005 + - 0.0 + - 0.14250000000000002 + - 0.0 + - 0.15749999999999997 + - 0.0 + - 0.23249999999999996 + - 0.0 + - 0.06750000000000002 + - 0.0 + - true +- - - 0.26625 + - 0.033749999999999995 + - 0.0 + - 0.0 + - 0.17625 + - 0.12374999999999999 + - 0.0 + - 0.0 + - 0.08625 + - 0.21375 + - 0.0 + - 0.0 + - 0.0 + - 0.29625 + - 0.0037499999999999864 + - 0.0 + - 0.0 + - 0.20625 + - 0.09375 + - 0.0 + - 0.0 + - 0.11624999999999998 + - 0.18375 + - 0.0 + - 0.0 + - 0.02625000000000004 + - 0.27374999999999994 + - 0.0 + - 0.06374999999999997 + - 0.0 + - 0.23625000000000002 + - 0.0 + - 0.15374999999999991 + - 0.0 + - 0.14625000000000007 + - 0.0 + - 0.24375 + - 0.0 + - 0.056249999999999994 + - 0.0 + - true +- - - 0.255 + - 0.045 + - 0.0 + - 0.0 + - 0.165 + - 0.13499999999999998 + - 0.0 + - 0.0 + - 0.075 + - 0.22499999999999998 + - 0.0 + - 0.0 + - 0.0 + - 0.285 + - 0.015000000000000013 + - 0.0 + - 0.0 + - 0.19500000000000003 + - 0.10499999999999995 + - 0.0 + - 0.0 + - 0.10500000000000002 + - 0.19499999999999998 + - 0.0 + - 0.0 + - 0.015000000000000013 + - 0.285 + - 0.0 + - 0.075 + - 0.0 + - 0.22499999999999998 + - 0.0 + - 0.16499999999999995 + - 0.0 + - 0.13500000000000004 + - 0.0 + - 0.255 + - 0.0 + - 0.04499999999999997 + - 0.0 + - true +- - - 0.24375 + - 0.056249999999999994 + - 0.0 + - 0.0 + - 0.15374999999999997 + - 0.14625 + - 0.0 + - 0.0 + - 0.06375 + - 0.23625 + - 0.0 + - 0.0 + - 0.0 + - 0.27375 + - 0.02624999999999997 + - 0.0 + - 0.0 + - 0.18375 + - 0.11624999999999998 + - 0.0 + - 0.0 + - 0.09375 + - 0.20625 + - 0.0 + - 0.0 + - 0.003750000000000053 + - 0.29624999999999996 + - 0.0 + - 0.08625000000000002 + - 0.0 + - 0.21374999999999997 + - 0.0 + - 0.17624999999999996 + - 0.0 + - 0.12375000000000003 + - 0.0 + - 0.26624999999999993 + - 0.0 + - 0.03375000000000008 + - 0.0 + - true +- - - 0.23249999999999998 + - 0.06749999999999999 + - 0.0 + - 0.0 + - 0.1425 + - 0.1575 + - 0.0 + - 0.0 + - 0.05250000000000001 + - 0.24749999999999997 + - 0.0 + - 0.0 + - 0.0 + - 0.2625 + - 0.0375 + - 0.0 + - 0.0 + - 0.1725 + - 0.1275 + - 0.0 + - 0.0 + - 0.08250000000000003 + - 0.21749999999999994 + - 0.0 + - 0.007499999999999973 + - 0.0 + - 0.29250000000000004 + - 0.0 + - 0.09749999999999992 + - 0.0 + - 0.20250000000000007 + - 0.0 + - 0.1875 + - 0.0 + - 0.11249999999999999 + - 0.0 + - 0.2774999999999999 + - 0.0 + - 0.02250000000000005 + - 0.0 + - true +- - - 0.22125 + - 0.07875 + - 0.0 + - 0.0 + - 0.13125 + - 0.16874999999999998 + - 0.0 + - 0.0 + - 0.041250000000000016 + - 0.25875 + - 0.0 + - 0.0 + - 0.0 + - 0.25125000000000003 + - 0.04874999999999996 + - 0.0 + - 0.0 + - 0.16125000000000003 + - 0.13874999999999996 + - 0.0 + - 0.0 + - 0.07125000000000001 + - 0.22874999999999998 + - 0.0 + - 0.01875 + - 0.0 + - 0.28125 + - 0.0 + - 0.10874999999999994 + - 0.0 + - 0.19125000000000006 + - 0.0 + - 0.19875 + - 0.0 + - 0.10124999999999997 + - 0.0 + - 0.28874999999999995 + - 0.0 + - 0.011250000000000026 + - 0.0 + - true +- - - 0.21 + - 0.09 + - 0.0 + - 0.0 + - 0.12 + - 0.18 + - 0.0 + - 0.0 + - 0.030000000000000027 + - 0.26999999999999996 + - 0.0 + - 0.0 + - 0.0 + - 0.24 + - 0.059999999999999984 + - 0.0 + - 0.0 + - 0.15 + - 0.15 + - 0.0 + - 0.0 + - 0.06000000000000005 + - 0.23999999999999994 + - 0.0 + - 0.030000000000000027 + - 0.0 + - 0.26999999999999996 + - 0.0 + - 0.11999999999999997 + - 0.0 + - 0.18000000000000002 + - 0.0 + - 0.2099999999999999 + - 0.0 + - 0.09000000000000008 + - 0.0 + - 0.3 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.19875 + - 0.10124999999999999 + - 0.0 + - 0.0 + - 0.10875000000000001 + - 0.19124999999999998 + - 0.0 + - 0.0 + - 0.01875 + - 0.28125 + - 0.0 + - 0.0 + - 0.0 + - 0.22874999999999998 + - 0.07125000000000001 + - 0.0 + - 0.0 + - 0.13875000000000004 + - 0.16124999999999995 + - 0.0 + - 0.0 + - 0.04875000000000002 + - 0.25125 + - 0.0 + - 0.04124999999999992 + - 0.0 + - 0.2587500000000001 + - 0.0 + - 0.13125 + - 0.0 + - 0.16874999999999998 + - 0.0 + - 0.22124999999999995 + - 0.0 + - 0.07875000000000006 + - 0.0 + - 0.28875 + - 0.01125 + - 0.0 + - 0.0 + - true +- - - 0.1875 + - 0.11249999999999999 + - 0.0 + - 0.0 + - 0.09750000000000002 + - 0.20249999999999999 + - 0.0 + - 0.0 + - 0.007500000000000007 + - 0.2925 + - 0.0 + - 0.0 + - 0.0 + - 0.21750000000000003 + - 0.08249999999999998 + - 0.0 + - 0.0 + - 0.1275 + - 0.1725 + - 0.0 + - 0.0 + - 0.0375 + - 0.2625 + - 0.0 + - 0.05249999999999994 + - 0.0 + - 0.24750000000000005 + - 0.0 + - 0.14250000000000002 + - 0.0 + - 0.15749999999999997 + - 0.0 + - 0.23249999999999996 + - 0.0 + - 0.06750000000000002 + - 0.0 + - 0.2775 + - 0.0225 + - 0.0 + - 0.0 + - true +- - - 0.17625 + - 0.12374999999999999 + - 0.0 + - 0.0 + - 0.08625 + - 0.21375 + - 0.0 + - 0.0 + - 0.0 + - 0.29625 + - 0.0037499999999999864 + - 0.0 + - 0.0 + - 0.20625 + - 0.09375 + - 0.0 + - 0.0 + - 0.11624999999999998 + - 0.18375 + - 0.0 + - 0.0 + - 0.02625000000000004 + - 0.27374999999999994 + - 0.0 + - 0.06374999999999997 + - 0.0 + - 0.23625000000000002 + - 0.0 + - 0.15374999999999991 + - 0.0 + - 0.14625000000000007 + - 0.0 + - 0.24375 + - 0.0 + - 0.056249999999999994 + - 0.0 + - 0.26625 + - 0.033749999999999995 + - 0.0 + - 0.0 + - true +- - - 0.165 + - 0.13499999999999998 + - 0.0 + - 0.0 + - 0.075 + - 0.22499999999999998 + - 0.0 + - 0.0 + - 0.0 + - 0.285 + - 0.015000000000000013 + - 0.0 + - 0.0 + - 0.19500000000000003 + - 0.10499999999999995 + - 0.0 + - 0.0 + - 0.10500000000000002 + - 0.19499999999999998 + - 0.0 + - 0.0 + - 0.015000000000000013 + - 0.285 + - 0.0 + - 0.075 + - 0.0 + - 0.22499999999999998 + - 0.0 + - 0.16499999999999995 + - 0.0 + - 0.13500000000000004 + - 0.0 + - 0.255 + - 0.0 + - 0.04499999999999997 + - 0.0 + - 0.255 + - 0.045 + - 0.0 + - 0.0 + - true +- - - 0.15374999999999997 + - 0.14625 + - 0.0 + - 0.0 + - 0.06375 + - 0.23625 + - 0.0 + - 0.0 + - 0.0 + - 0.27375 + - 0.02624999999999997 + - 0.0 + - 0.0 + - 0.18375 + - 0.11624999999999998 + - 0.0 + - 0.0 + - 0.09375 + - 0.20625 + - 0.0 + - 0.0 + - 0.003750000000000053 + - 0.29624999999999996 + - 0.0 + - 0.08625000000000002 + - 0.0 + - 0.21374999999999997 + - 0.0 + - 0.17624999999999996 + - 0.0 + - 0.12375000000000003 + - 0.0 + - 0.26624999999999993 + - 0.0 + - 0.03375000000000008 + - 0.0 + - 0.24375 + - 0.056249999999999994 + - 0.0 + - 0.0 + - true +- - - 0.1425 + - 0.1575 + - 0.0 + - 0.0 + - 0.05250000000000001 + - 0.24749999999999997 + - 0.0 + - 0.0 + - 0.0 + - 0.2625 + - 0.0375 + - 0.0 + - 0.0 + - 0.1725 + - 0.1275 + - 0.0 + - 0.0 + - 0.08250000000000003 + - 0.21749999999999994 + - 0.0 + - 0.007499999999999973 + - 0.0 + - 0.29250000000000004 + - 0.0 + - 0.09749999999999992 + - 0.0 + - 0.20250000000000007 + - 0.0 + - 0.1875 + - 0.0 + - 0.11249999999999999 + - 0.0 + - 0.2774999999999999 + - 0.0 + - 0.02250000000000005 + - 0.0 + - 0.23249999999999998 + - 0.06749999999999999 + - 0.0 + - 0.0 + - true +- - - 0.13125 + - 0.16874999999999998 + - 0.0 + - 0.0 + - 0.041250000000000016 + - 0.25875 + - 0.0 + - 0.0 + - 0.0 + - 0.25125000000000003 + - 0.04874999999999996 + - 0.0 + - 0.0 + - 0.16125000000000003 + - 0.13874999999999996 + - 0.0 + - 0.0 + - 0.07125000000000001 + - 0.22874999999999998 + - 0.0 + - 0.01875 + - 0.0 + - 0.28125 + - 0.0 + - 0.10874999999999994 + - 0.0 + - 0.19125000000000006 + - 0.0 + - 0.19875 + - 0.0 + - 0.10124999999999997 + - 0.0 + - 0.28874999999999995 + - 0.0 + - 0.011250000000000026 + - 0.0 + - 0.22125 + - 0.07875 + - 0.0 + - 0.0 + - true +- - - 0.12 + - 0.18 + - 0.0 + - 0.0 + - 0.030000000000000027 + - 0.26999999999999996 + - 0.0 + - 0.0 + - 0.0 + - 0.24 + - 0.059999999999999984 + - 0.0 + - 0.0 + - 0.15 + - 0.15 + - 0.0 + - 0.0 + - 0.06000000000000005 + - 0.23999999999999994 + - 0.0 + - 0.030000000000000027 + - 0.0 + - 0.26999999999999996 + - 0.0 + - 0.11999999999999997 + - 0.0 + - 0.18000000000000002 + - 0.0 + - 0.2099999999999999 + - 0.0 + - 0.09000000000000008 + - 0.0 + - 0.3 + - 0.0 + - 0.0 + - 0.0 + - 0.21 + - 0.09 + - 0.0 + - 0.0 + - true +- - - 0.10875000000000001 + - 0.19124999999999998 + - 0.0 + - 0.0 + - 0.01875 + - 0.28125 + - 0.0 + - 0.0 + - 0.0 + - 0.22874999999999998 + - 0.07125000000000001 + - 0.0 + - 0.0 + - 0.13875000000000004 + - 0.16124999999999995 + - 0.0 + - 0.0 + - 0.04875000000000002 + - 0.25125 + - 0.0 + - 0.04124999999999992 + - 0.0 + - 0.2587500000000001 + - 0.0 + - 0.13125 + - 0.0 + - 0.16874999999999998 + - 0.0 + - 0.22124999999999995 + - 0.0 + - 0.07875000000000006 + - 0.0 + - 0.28875 + - 0.01125 + - 0.0 + - 0.0 + - 0.19875 + - 0.10124999999999999 + - 0.0 + - 0.0 + - true +- - - 0.09750000000000002 + - 0.20249999999999999 + - 0.0 + - 0.0 + - 0.007500000000000007 + - 0.2925 + - 0.0 + - 0.0 + - 0.0 + - 0.21750000000000003 + - 0.08249999999999998 + - 0.0 + - 0.0 + - 0.1275 + - 0.1725 + - 0.0 + - 0.0 + - 0.0375 + - 0.2625 + - 0.0 + - 0.05249999999999994 + - 0.0 + - 0.24750000000000005 + - 0.0 + - 0.14250000000000002 + - 0.0 + - 0.15749999999999997 + - 0.0 + - 0.23249999999999996 + - 0.0 + - 0.06750000000000002 + - 0.0 + - 0.2775 + - 0.0225 + - 0.0 + - 0.0 + - 0.1875 + - 0.11249999999999999 + - 0.0 + - 0.0 + - true +- - - 0.08625 + - 0.21375 + - 0.0 + - 0.0 + - 0.0 + - 0.29625 + - 0.0037499999999999864 + - 0.0 + - 0.0 + - 0.20625 + - 0.09375 + - 0.0 + - 0.0 + - 0.11624999999999998 + - 0.18375 + - 0.0 + - 0.0 + - 0.02625000000000004 + - 0.27374999999999994 + - 0.0 + - 0.06374999999999997 + - 0.0 + - 0.23625000000000002 + - 0.0 + - 0.15374999999999991 + - 0.0 + - 0.14625000000000007 + - 0.0 + - 0.24375 + - 0.0 + - 0.056249999999999994 + - 0.0 + - 0.26625 + - 0.033749999999999995 + - 0.0 + - 0.0 + - 0.17625 + - 0.12374999999999999 + - 0.0 + - 0.0 + - true +- - - 0.075 + - 0.22499999999999998 + - 0.0 + - 0.0 + - 0.0 + - 0.285 + - 0.015000000000000013 + - 0.0 + - 0.0 + - 0.19500000000000003 + - 0.10499999999999995 + - 0.0 + - 0.0 + - 0.10500000000000002 + - 0.19499999999999998 + - 0.0 + - 0.0 + - 0.015000000000000013 + - 0.285 + - 0.0 + - 0.075 + - 0.0 + - 0.22499999999999998 + - 0.0 + - 0.16499999999999995 + - 0.0 + - 0.13500000000000004 + - 0.0 + - 0.255 + - 0.0 + - 0.04499999999999997 + - 0.0 + - 0.255 + - 0.045 + - 0.0 + - 0.0 + - 0.165 + - 0.13499999999999998 + - 0.0 + - 0.0 + - true diff --git a/src/golden/sb_critical_error.yml b/src/golden/sb_critical_error.yml new file mode 100644 index 0000000..c057c3c --- /dev/null +++ b/src/golden/sb_critical_error.yml @@ -0,0 +1,4105 @@ +input: | + strobe 1 1.5 add (1.0, 1.0, 1.0) + breathing 2 0 difference (0.95, 0.0, 0.0) + static 1 0 top (1.0, 0.0, 0.0) +output: +- - - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - true +- - - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - true +- - - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - true +- - - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - true +- - - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - true +- - - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - true +- - - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - true +- - - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - true +- - - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - true +- - - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - true +- - - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - true +- - - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - true +- - - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - true +- - - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - true +- - - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - true +- - - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - true +- - - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - true +- - - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - true +- - - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - true +- - - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - 0.8366749799686775 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909552 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - 0.625109145771394 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - 0.4823013423067073 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - 0.3289556732983323 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - 0.18776227095449283 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813229 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - 0.050000000000000044 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - 0.08680619817813162 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - 0.1877622709544916 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - 0.32895567329833086 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - 0.48230134230670585 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - 0.6251091457713926 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - 0.7445054705909546 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - 0.836674979968677 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - 0.9035403134985754 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - 0.9494000653515854 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - 0.9786828097274947 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - 0.9948459647270004 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - 1.99999982168463 + - 1.0 + - 1.0 + - 0.0 + - true +- - - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 1.148200931571929 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - true +- - - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 1.0387374776228029 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - true +- - - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.9729178112075948 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - true +- - - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.912749995102544 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - true diff --git a/src/golden/static.yml b/src/golden/static.yml new file mode 100644 index 0000000..b0a27bf --- /dev/null +++ b/src/golden/static.yml @@ -0,0 +1,4102 @@ +input: static 1 0 top (1.0, 0.0, 0.0) +output: +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - 1.0 + - 0.0 + - 0.0 + - 0.0 + - true diff --git a/src/golden/strobe.yml b/src/golden/strobe.yml new file mode 100644 index 0000000..16cf108 --- /dev/null +++ b/src/golden/strobe.yml @@ -0,0 +1,4102 @@ +input: ' strobe 1 1.5 add (1.0, 1.0, 1.0)' +output: +- - - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - true +- - - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - true +- - - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - true +- - - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - true +- - - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - true +- - - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - true +- - - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - true +- - - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - true +- - - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - true +- - - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - true +- - - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - true +- - - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - true +- - - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - true +- - - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - true +- - - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - true +- - - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - true +- - - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - 1.0 + - 1.0 + - 1.0 + - 0.0 + - true +- - - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.15335496684492847 + - 0.0 + - true +- - - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.06005466789530795 + - 0.0 + - true +- - - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.023517745856009114 + - 0.0 + - true +- - - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.009209681603968142 + - 0.0 + - true diff --git a/src/led_effect.py b/src/led_effect.py new file mode 100644 index 0000000..95d01e9 --- /dev/null +++ b/src/led_effect.py @@ -0,0 +1,1336 @@ +# Support for addressable LED visual effects +# using neopixel and dotstar LEDs +# +# Copyright (C) 2020 Paul McGowan +# co-authored by Julian Schill +# +# This file may be distributed under the terms of the GNU GPLv3 license. + +from math import cos, exp, pi +from random import randint +import logging +from colormath.color_conversions import convert_color +from colormath.color_objects import ( + sRGBColor, + LabColor, + HSLColor +) +from . import led_effect_layer_parser + +ANALOG_SAMPLE_TIME = 0.001 +ANALOG_SAMPLE_COUNT = 5 +ANALOG_REPORT_TIME = 0.05 + +COLORS = 4 + +###################################################################### +# Custom color value list, returns lists of [r, g ,b] values +# from a one dimensional list +###################################################################### + +class colorArray(list): + def __init__(self, num_colors, kwargs): + self.n=num_colors + super(colorArray,self).__init__(kwargs) + + def __getitem__(self, a): + if isinstance(a, int): + return super(colorArray, self).__getitem__( + slice(a*self.n, a*self.n+self.n)) + if isinstance(a, slice): + start = a.start*self.n if a.start != None else None + stop = a.stop*self.n if a.stop != None else None + return colorArray(self.n, + super(colorArray, self).__getitem__( + slice(start, stop, a.step))) + def __getslice__(self, a, b): + return self.__getitem__(slice(a,b)) + def __setitem__(self, a, v): + if isinstance(a, int): + for i in range(self.n): + super(colorArray, self).__setitem__(a*self.n + i, v[i]) + def __len__(self): + return super(colorArray, self).__len__() // self.n + def reverse(self): + self.__init__(self.n, [c for cl in range(len(self)-1,-1, -1) + for c in self[cl]]) + def shift(self, shift=1, direction=True): + if direction: + shift *= -1 + self.__init__(self.n, self[shift:] + self[:shift]) + def padLeft(self, v, a): + self.__init__(self.n, v * a + self) + def padRight(self, v, a): + self += v * a + +###################################################################### +# LED Effect handler +###################################################################### + +class ledFrameHandler: + def __init__(self, config): + self.printer = config.get_printer() + self.gcode = self.printer.lookup_object('gcode') + self.printer.load_object(config, "display_status") + self.heaters = {} + self.printProgress = 0 + self.effects = [] + self.stepperPositions = [0.0,0.0,0.0] + self.stepperTimer = None + self.heaterCurrent = {} + self.heaterTarget = {} + self.heaterLast = {} + self.heaterTimer = None + self.homing = {} + self.homing_start_flag = {} + self.homing_end_flag = {} + self.printer.register_event_handler('klippy:ready', self._handle_ready) + self.printer.register_event_handler("homing:homing_move_begin", + self._handle_homing_move_begin) + self.printer.register_event_handler("homing:homing_move_end", + self._handle_homing_move_end) + self.ledChains=[] + self.gcode.register_command('STOP_LED_EFFECTS', + self.cmd_STOP_LED_EFFECTS, + desc=self.cmd_STOP_LED_EFFECTS_help) + self.shutdown = False + + cmd_STOP_LED_EFFECTS_help = 'Stops all led_effects' + + def _handle_ready(self): + self.shutdown = False + self.reactor = self.printer.get_reactor() + self.printer.register_event_handler('klippy:shutdown', + self._handle_shutdown) + self.printProgress = 0 + self.displayStatus = self.printer.lookup_object('display_status') + self.progressTimer = self.reactor.register_timer(self._pollProgress, + self.reactor.NOW) + self.frameTimer = self.reactor.register_timer(self._getFrames, + self.reactor.NOW) + + def _handle_shutdown(self): + self.shutdown = True + for effect in self.effects: + if not effect.runOnShutown: + for chain in self.ledChains: + chain.led_helper.set_color(None, (0.0, 0.0, 0.0, 0.0)) + chain.led_helper.update_func(chain.led_helper.led_state, None) + + pass + + def _handle_homing_move_begin(self, hmove): + endstops_being_homed = [name for es,name in hmove.endstops] + logging.info(endstops_being_homed) + + for endstop in endstops_being_homed: + if endstop in self.homing_start_flag: + self.homing_start_flag[endstop] += 1 + else: + self.homing_start_flag[endstop] = 0 + + self.homing[endstop]=True + + def _handle_homing_move_end(self, hmove): + endstops_being_homed = [name for es,name in hmove.endstops] + + for endstop in endstops_being_homed: + if endstop in self.homing_end_flag: + self.homing_end_flag[endstop] += 1 + else: + self.homing_end_flag[endstop] = 0 + self.homing[endstop]=False + + def addEffect(self, effect): + + if effect.heater: + effect.heater=effect.heater.strip('\"\'') + if effect.heater.startswith("temperature_fan ") or effect.heater.startswith("temperature_sensor "): + self.heaters[effect.heater] = self.printer.lookup_object(effect.heater) + else: + pheater = self.printer.lookup_object('heaters') + self.heaters[effect.heater] = pheater.lookup_heater(effect.heater) + self.heaterLast[effect.heater] = 100 + self.heaterCurrent[effect.heater] = 0 + self.heaterTarget[effect.heater] = 0 + + if not self.heaterTimer: + self.heaterTimer = self.reactor.register_timer(self._pollHeater, + self.reactor.NOW) + + for layer in [layer for layer in effect.layers if "heater" in layer.__dict__]: + heater=layer.heater + if heater.startswith("temperature_fan ") or heater.startswith("temperature_sensor "): + self.heaters[heater] = self.printer.lookup_object(heater) + else: + pheater = self.printer.lookup_object('heaters') + self.heaters[heater] = pheater.lookup_heater(heater) + self.heaterLast[heater] = 100 + self.heaterCurrent[heater] = 0 + self.heaterTarget[heater] = 0 + + if not self.heaterTimer: + self.heaterTimer = self.reactor.register_timer(self._pollHeater, + self.reactor.NOW) + + if effect.stepper: + self.toolhead = self.printer.lookup_object('toolhead') + self.kin = self.toolhead.get_kinematics() + + if not self.stepperTimer: + self.stepperTimer = self.reactor.register_timer( + self._pollStepper, + self.reactor.NOW) + + self.effects.append(effect) + + def _pollHeater(self, eventtime): + for heater in self.heaters.keys(): + current, target = self.heaters[heater].get_temp(eventtime) + self.heaterCurrent[heater] = current + self.heaterTarget[heater] = target + if target > 0: + self.heaterLast[heater] = target + return eventtime + 0.3 #sensors get updated every 300ms + + def _pollStepper(self, eventtime): + + kin_spos = {s.get_name(): s.get_commanded_position() + for s in self.kin.get_steppers()} + + pos = self.kin.calc_position(kin_spos) + + for i in range(3): + if pos[i] >= self.kin.axes_min[i] and pos[i] <= self.kin.axes_max[i]: + self.stepperPositions[i] = int( + ((pos[i] - self.kin.axes_min[i]) / \ + (self.kin.axes_max[i] - self.kin.axes_min[i]) + * 100)- 1) + return eventtime + 0.5 + + def _pollProgress(self, eventtime): + status = self.displayStatus.get_status(eventtime) + p = status.get('progress') + if p is not None: + self.printProgress = int(p * 100) + return eventtime + 1 + + def _getColorData(self, colors, fade): + clamp = (lambda x : 0.0 if x < 0.0 else 1.0 if x > 1.0 else x) + colors = [x*clamp(fade) for x in colors] + colors=colors + [0.0] * (4 - len(colors)) + colors=colors[:4] + colors = [clamp(x) for x in colors] + return tuple(colors) + + def _getFrames(self, eventtime): + chainsToUpdate = set() + + frames = [(effect, effect.getFrame(eventtime)) for effect in self.effects] + + #first set all LEDs to 0, that should be updated + for effect, (frame, update) in frames: + if update: + for i in range(effect.ledCount): + chain,index=effect.leds[i] + chain.led_helper.led_state[index] = (0.0, 0.0, 0.0, 0.0) + chainsToUpdate.add(chain) + + #then sum up all effects for that LEDs + for effect, (frame, update) in frames: + if update: + for i in range(effect.ledCount): + chain,index=effect.leds[i] + + current_state=list(chain.led_helper.led_state[index]) + effect_state=self._getColorData(frame[i*COLORS:i*COLORS+COLORS], + effect.fadeValue) + + next_state=[min(1.0,a+b) for a,b in \ + zip(current_state, effect_state)] + + chain.led_helper.led_state[index] = tuple(next_state) + chainsToUpdate.add(chain) + + for chain in chainsToUpdate: + if hasattr(chain,"prev_data"): + chain.prev_data = None # workaround to force update of dotstars + if not self.shutdown: + chain.led_helper.update_func(chain.led_helper.led_state, None) + if self.effects: + next_eventtime=min(self.effects, key=lambda x: x.nextEventTime)\ + .nextEventTime + else: + next_eventtime = eventtime + # run at least with 10Hz + next_eventtime=min(next_eventtime, eventtime + 0.1) + return next_eventtime + + def parse_chain(self, chain): + chain = chain.strip() + leds=[] + parms = [parameter.strip() for parameter in chain.split() + if parameter.strip()] + if parms: + chainName=parms[0].replace(':',' ') + ledIndices = ''.join(parms[1:]).strip('()').split(',') + for led in ledIndices: + if led: + if '-' in led: + start, stop = map(int,led.split('-')) + if stop == start: + ledList = [start-1] + elif stop > start: + ledList = list(range(start-1, stop)) + else: + ledList = list(reversed(range(stop-1, start))) + for i in ledList: + leds.append(int(i)) + else: + for i in led.split(','): + leds.append(int(i)-1) + + return chainName, leds + else: + return None, None + + def cmd_STOP_LED_EFFECTS(self, gcmd): + ledParam = gcmd.get('LEDS', "") + stopAll = (ledParam == "") + + for effect in self.effects: + stopEffect = stopAll + if not stopAll: + try: + chainName, ledIndices = self.parse_chain(ledParam) + chain = self.printer.lookup_object(chainName) + except Exception as e: + raise gcmd.error("Unknown LED '%s'" % (ledParam,)) + + if ledIndices == [] and chain in effect.ledChains: + stopEffect = True + else: + for index in ledIndices: + if (chain,index) in effect.leds: + stopEffect=True + + if stopEffect: + if effect.enabled: + effect.set_fade_time(gcmd.get_float('FADETIME', 0.0)) + effect.set_enabled(False) + +def load_config(config): + return ledFrameHandler(config) + +###################################################################### +# LED Effect +###################################################################### + +class ledEffect: + def __init__(self, config): + self.config = config + self.printer = config.get_printer() + self.gcode = self.printer.lookup_object('gcode') + self.gcode_macro = self.printer.lookup_object('gcode_macro') + self.handler = self.printer.load_object(config, 'led_effect') + self.frameRate = 1.0 / config.getfloat('frame_rate', + default=24, minval=1, maxval=60) + self.enabled = False + self.iteration = 0 + self.layers = [] + self.analogValue = 0 + self.fadeValue = 1.0 + self.fadeTime = 0.0 + self.fadeEndTime = 0 + + #Basic functions for layering colors. t=top and b=bottom color + self.blendingModes = { + 'top' : (lambda t, b: t ), + 'bottom' : (lambda t, b: b ), + 'add' : (lambda t, b: t + b ), + 'subtract' : (lambda t, b: (b - t) * (b - t > 0)), + 'subtract_b': (lambda t, b: (t - b) * (t - b > 0)), + 'difference': (lambda t, b: (t - b) * (t > b) + (b - t) * (t <= b)), + 'average' : (lambda t, b: 0.5 * (t + b)), + 'multiply' : (lambda t, b: t * b), + 'divide' : (lambda t, b: t / b if b > 0 else 0 ), + 'divide_inv': (lambda t, b: b / t if t > 0 else 0 ), + 'screen' : (lambda t, b: 1.0 - (1.0-t)*(1.0-b) ), + 'lighten' : (lambda t, b: t * (t > b) + b * (t <= b)), + 'darken' : (lambda t, b: t * (t < b) + b * (t >= b)), + 'overlay' : (lambda t, b: \ + 2.0 * t * b if t > 0.5 else \ + 1.0 - (2.0 * (1.0-t) * (1.0-b))) + } + + self.name = config.get_name().split()[1] + + self.autoStart = config.getboolean('autostart', False) + self.runOnShutown = config.getboolean('run_on_error', False) + self.heater = config.get('heater', None) + self.analogPin = config.get('analog_pin', None) + self.stepper = config.get('stepper', None) + self.recalculate = config.get('recalculate', False) + self.endstops = [x.strip() for x in config.get('endstops','').split(',')] + self.layerTempl = self.gcode_macro.load_template(config, 'layers') + self.configLayers = [] + self.configLeds = config.get('leds') + + self.nextEventTime = 0 + self.printer.register_event_handler('klippy:ready', self._handle_ready) + self.gcode.register_mux_command('SET_LED_EFFECT', 'EFFECT', self.name, + self.cmd_SET_LED_EFFECT, + desc=self.cmd_SET_LED_help) + + if self.analogPin: + ppins = self.printer.lookup_object('pins') + self.mcu_adc = ppins.setup_pin('adc', self.analogPin) + self.mcu_adc.setup_minmax(ANALOG_SAMPLE_TIME, ANALOG_SAMPLE_COUNT) + self.mcu_adc.setup_adc_callback(ANALOG_REPORT_TIME, self.adcCallback) + query_adc = self.printer.load_object(self.config, 'query_adc') + query_adc.register_adc(self.name, self.mcu_adc) + + cmd_SET_LED_help = 'Starts or Stops the specified led_effect' + + def _handle_ready(self): + self.configChains = self.configLeds.split('\n') + self.ledChains = [] + self.leds = [] + self.enabled = self.autoStart + self.printer.register_event_handler('klippy:shutdown', + self._handle_shutdown) + #map each LED from the chains to the "pixels" in the effect frame + for chain in self.configChains: + chainName, ledIndices = self.handler.parse_chain(chain) + if chainName is not None: + ledChain = self.printer.lookup_object(chainName) + + #Add each discrete chain to the collection + if ledChain not in self.ledChains: + self.ledChains.append(ledChain) + + if ledIndices == [] : + for i in range(ledChain.led_helper.get_led_count()): + self.leds.append((ledChain, int(i))) + else: + for led in ledIndices: + self.leds.append((ledChain, led)) + + self.ledCount = len(self.leds) + self.frame = [0.0] * COLORS * self.ledCount + + #enumerate all effects from the subclasses of _layerBase... + self.availableLayers = {str(c).rpartition('.layer')[2]\ + .replace("'>", "")\ + .lower() : c + for c in self._layerBase.__subclasses__() + if str(c).startswith(" COLORS: + raise Exception( + "Color %s has too many elements." % (str(i),)) + palette=[pad(c) for c in palette] # pad to COLORS colors + palette=[k for c in palette for k in c] # flatten list + except Exception as e: + raise self.printer.config_error( + "Error parsing palette in '%s' for layer \"%s\": %s"\ + % (self.config.get_name(), effect, e,)) + self.layers.insert(0, layer(handler = self, + frameHandler = self.handler, + paletteColors = palette, + frameRate = self.frameRate, + ledCount = len(self.leds), + blendingMode = blend, + **parameters)) + + self.handler.addEffect(self) + + def getFrame(self, eventtime): + if not self.enabled and self.fadeValue <= 0.0: + if self.nextEventTime < self.handler.reactor.NEVER: + # Effect has just been disabled. Set colors to 0 and update once. + self.nextEventTime = self.handler.reactor.NEVER + self.frame = [0.0] * COLORS * self.ledCount + update = True + else: + update = False + else: + update = True + if eventtime >= self.nextEventTime: + self.nextEventTime = eventtime + self.frameRate + + self.frame = [0.0] * COLORS * self.ledCount + for layer in self.layers: + layerFrame = layer.nextFrame(eventtime) + + if layerFrame: + blend = self.blendingModes[layer.blendingMode] + self.frame = [blend(t, b) for t, b in zip(layerFrame, self.frame)] + + if (self.fadeEndTime > eventtime) and (self.fadeTime > 0.0): + remainingFade = ((self.fadeEndTime - eventtime) / self.fadeTime) + else: + remainingFade = 0.0 + + self.fadeValue = 1.0-remainingFade if self.enabled else remainingFade + + return self.frame, update + + def set_enabled(self, state): + if self.enabled != state: + self.enabled = state + self.nextEventTime = self.handler.reactor.NOW + self.handler._getFrames(self.handler.reactor.NOW) + + def reset_frame(self): + for layer in self.layers: + layer.frameNumber = 0 + + def set_fade_time(self, fadetime): + self.fadeTime = fadetime + self.fadeEndTime = self.handler.reactor.monotonic() + fadetime + if self.fadeTime == 0.0: + self.fadeValue = 0.0 + + def cmd_SET_LED_EFFECT(self, gcmd): + parmFadeTime = gcmd.get_float('FADETIME', 0.0) + + if gcmd.get_int('STOP', 0) >= 1: + if self.enabled: + self.set_fade_time(parmFadeTime) + self.set_enabled(False) + else: + if self.recalculate: + kwargs = self.layerTempl.create_template_context() + kwargs['params'] = gcmd.get_command_parameters() + kwargs['rawparams'] = gcmd.get_raw_command_parameters() + self._generateLayers(kwargs) + if gcmd.get_int('REPLACE',0) >= 1: + for led in self.leds: + for effect in self.handler.effects: + if effect is not self and led in effect.leds: + if effect.enabled: + effect.set_fade_time(parmFadeTime) + effect.set_enabled(False) + + if not self.enabled: + self.set_fade_time(parmFadeTime) + if gcmd.get_int('RESTART', 0) >= 1: + self.reset_frame() + self.set_enabled(True) + + def _handle_shutdown(self): + self.set_enabled(self.runOnShutown) + + def adcCallback(self, read_time, read_value): + self.analogValue = int(read_value * 1000.0) / 10.0 + + ###################################################################### + # LED Effect layers + ###################################################################### + + # super class for effect animations. new animations should + # inherit this and return 1 frame of [r, g, b] * + # per call of nextFrame() + class _layerBase(object): + def __init__(self, **kwargs): + self.handler = kwargs['handler'] + self.frameHandler = kwargs['frameHandler'] + self.ledCount = kwargs['ledCount'] + self.paletteColors = colorArray(COLORS, kwargs['paletteColors']) + self.frameRate = kwargs['frameRate'] + self.blendingMode = kwargs['blendingMode'] + self.colorSpace = kwargs['colorSpace'] if 'colorSpace' in kwargs else 'rgb' + self.frameNumber = 0 + self.thisFrame = [] + self.frameCount = 1 + self.lastAnalog = 0 + + def nextFrame(self, eventtime): + if not self.frameCount: + return [0] * COLORS * self.ledCount + self.frameNumber += 1 + self.frameNumber = self.frameNumber * \ + ( self.frameNumber < self.frameCount ) + self.lastFrameTime = eventtime + + return self.thisFrame[self.frameNumber] + + def _decayTable(self, factor=1, rate=1): + + frame = [] + + p = (1.0 / self.frameRate) + r = (p/15.0)*factor + + for s in range(0, int((rate<1)+rate)): + frame.append(1.0) + for x in range(2, int(p / rate)): + b = exp(1)**-(x/r) + if b>.004: + frame.append(b) + return frame + + def _mixColorInColorSpace(self, color1, color2, r, colorSpace): + if colorSpace == "none": + return color1 if r <= 0.5 else color2 + + a = color1[3]*(1-r) + color2[3]*r + c1 = sRGBColor(color1[0], color1[1], color1[2]) + c2 = sRGBColor(color2[0], color2[1], color2[2]) + + if colorSpace == 'hsl': + c1 = convert_color(c1, HSLColor).get_value_tuple() + c2 = convert_color(c2, HSLColor).get_value_tuple() + mix = [((1-r)*c1[m] + r*c2[m]) for m in range(3)] + mix = HSLColor(mix[0], mix[1], mix[2]) + mix = convert_color(mix, sRGBColor).get_value_tuple() + return [mix[0], mix[1], mix[2], a] + + if colorSpace == 'lab': + c1 = convert_color(c1, LabColor).get_value_tuple() + c2 = convert_color(c2, LabColor).get_value_tuple() + mix = [((1-r)*c1[m] + r*c2[m]) for m in range(3)] + mix = LabColor(mix[0], mix[1], mix[2]) + mix = convert_color(mix, sRGBColor).get_value_tuple() + return [mix[0], mix[1], mix[2], a] + + + return [((1-r)*color1[m] + r*color2[m]) for m in range(4)] + + def _gradient(self, palette, steps, reverse=False, toFirst=False): + palette = colorArray(COLORS, palette[:]) + if reverse: palette.reverse() + + if len(palette) == 1: + return colorArray(COLORS, palette * steps) + + if toFirst: + palette += palette[0] + + paletteIntervals = len(palette)-1 + stepIntervals = steps if toFirst else steps-1 + if stepIntervals != 0: + intervals_per_step = float(paletteIntervals) / stepIntervals + else: + intervals_per_step = 0 + + gradient=palette[0] + + for i in range(1,steps): + j = intervals_per_step * i + k = int(j) + r = j-k + k = min(k, len(palette)-1) + + if ( (k+1) >= len(palette) ) | (r == 0.0) : + z = palette[k] + else: + z = self._mixColorInColorSpace(palette[k], palette[k+1], r, self.colorSpace) + gradient += z + return gradient + + #Individual effects inherit from the LED Effect Base class + #each effect must support the nextFrame() method either by + #using the method from the base class or overriding it. + + #Solid color + class layerStatic(_layerBase): + def __init__(self, **kwargs): + super(ledEffect.layerStatic, self).__init__(**kwargs) + + self.paletteColors = colorArray(COLORS, self.paletteColors) + + gradientLength = int(self.ledCount) + gradient = colorArray(COLORS, self._gradient(self.paletteColors, + gradientLength)) + + self.thisFrame.append(gradient[0:self.ledCount]) + self.frameCount = len(self.thisFrame) + + #Slow pulsing of color + class layerBreathing(_layerBase): + def __init__(self, **kwargs): + super(ledEffect.layerBreathing, self).__init__(**kwargs) + self.duration = kwargs["duration"] if "duration" in kwargs else kwargs["effectRate"] + + brightness = [] + + p = (1 / self.frameRate) * (self.duration * 0.5) + o = int(p) + f = 2 * pi + + for x in range(0, int(p)): + if x < p: + v = (exp(-cos((f / p) * (x+o)))-0.367879) / 2.35040238 + else: + v = 0 + + #clamp values + if v > 1.0: + v = 1.0 + elif v < 0.0: + v = 0.0 + + brightness.append(v) + + for c in range(0, len(self.paletteColors)): + color = self.paletteColors[c] + + for b in brightness: + self.thisFrame += [[b * i for i in color] * self.ledCount] + + self.frameCount = len(self.thisFrame) + class layerLinearFade(_layerBase): + def __init__(self, **kwargs): + super(ledEffect.layerLinearFade, self).__init__(**kwargs) + self.duration = kwargs["duration"] if "duration" in kwargs else kwargs["effectRate"] + + gradientLength = int(self.duration / self.frameRate) + if gradientLength == 0: gradientLength = 1 + + gradient = colorArray(COLORS, self._gradient(self.paletteColors, + gradientLength, toFirst=True)) + + for i in range(gradientLength): + self.thisFrame.append(gradient[i]*self.ledCount) + + self.frameCount = len(self.thisFrame) + + #Turns the entire strip on and off + class layerBlink(_layerBase): + def __init__(self, **kwargs): + super(ledEffect.layerBlink, self).__init__(**kwargs) + self.duration = kwargs["duration"] if "duration" in kwargs else kwargs["effectRate"] + self.onRatio = kwargs["onRatio"] if "onRatio" in kwargs else kwargs["effectCutoff"] + + dutyCycle= max(0,min(1.0, self.onRatio)) + frameCountOn = int(( 1.0 / self.frameRate ) * self.duration\ + * dutyCycle) + frameCountOff = int(( 1.0 / self.frameRate ) * self.duration\ + * (1-dutyCycle)) + + for c in range(0, len(self.paletteColors)): + color = self.paletteColors[c] + self.thisFrame += [color * self.ledCount] * frameCountOn + self.thisFrame += [[0]*COLORS * self.ledCount] * frameCountOff + + self.frameCount = len(self.thisFrame) + + #Random flashes with decay + class layerTwinkle(_layerBase): + def __init__(self, **kwargs): + super(ledEffect.layerTwinkle, self).__init__(**kwargs) + self.probability = kwargs["probability"] if "probability" in kwargs else kwargs["effectRate"] + self.decayRate = kwargs["decayRate"] if "decayRate" in kwargs else kwargs["effectCutoff"] + + self.thisFrame = colorArray(COLORS, ([0.0]*COLORS) * self.ledCount) + self.lastBrightness = [-1] * self.ledCount + self.decayTable = self._decayTable(factor=1 / self.decayRate) + self.decayLen = len(self.decayTable) + self.colorCount = len(self.paletteColors) - 1 + + def nextFrame(self, eventtime): + + for i in range(0, self.ledCount): + + r = randint(0, self.colorCount) + color = self.paletteColors[r] + + if randint(0, 255) > 254 - self.probability * 255: + self.lastBrightness[i] = 0 + self.thisFrame[i] = color + + if self.lastBrightness[i] != -1: + if self.lastBrightness[i] == self.decayLen: + self.lastBrightness[i] = -1 + self.thisFrame[i] = ([0.0]*COLORS) + else: + x = self.lastBrightness[i] + self.lastBrightness[i] += 1 + self.thisFrame[i] = [self.decayTable[x] * l + for l in self.thisFrame[i]] + + return self.thisFrame + + #Blinking with decay + class layerStrobe(_layerBase): + def __init__(self, **kwargs): + super(ledEffect.layerStrobe, self).__init__(**kwargs) + self.frequency = kwargs["frequency"] if "frequency" in kwargs else kwargs["effectRate"] + self.decayRate = kwargs["decayRate"] if "decayRate" in kwargs else kwargs["effectCutoff"] + + frameRate = int(1.0 / self.frameRate) + if self.frequency==0: + frameCount = 1 + else: + frameCount = max(1,int(frameRate / self.frequency)) + if self.decayRate==0: self.decayRate=0.001 + decayTable = self._decayTable(factor=1 / self.decayRate, + rate=1) + if len(decayTable) > frameCount: + decayTable = decayTable[:frameCount] + else: + decayTable += [0.0] * (frameCount - len(decayTable)) + + for c in range(0, len(self.paletteColors)): + color = self.paletteColors[c] + + for b in decayTable: + self.thisFrame += [[b * i for i in color] * self.ledCount] + + self.frameCount = len(self.thisFrame) + + #Lights move sequentially with decay + class layerComet(_layerBase): + def __init__(self, **kwargs): + super(ledEffect.layerComet, self).__init__(**kwargs) + self.speed = kwargs["speed"] if "speed" in kwargs else kwargs["effectRate"] + self.tailLength = kwargs["tailLength"] if "tailLength" in kwargs else kwargs["effectCutoff"] + if self.speed > 0: + self.direction = True + else: + self.direction = False + self.speed *= -1 + + if self.tailLength <= 0: self.tailLength = .1 + + decayTable = self._decayTable(factor=len(self.paletteColors) * \ + self.tailLength, rate=1) + + gradient = self.paletteColors[0] + \ + self._gradient(self.paletteColors[1:], len(decayTable)+1) + + decayTable = [c for b in zip(decayTable, decayTable, decayTable, decayTable) \ + for c in b] + + comet = colorArray(COLORS, [a * b for a, b in zip(gradient,decayTable)]) + + comet.padRight([0.0]*COLORS, self.ledCount - len(comet)) + + if self.direction: comet.reverse() + else: comet.shift(self.ledCount - len(comet)) + + if self.speed == 0: + self.thisFrame.append(comet[0:self.ledCount]) + else: + for i in range(len(comet)): + comet.shift(int(self.speed+(self.speed < 1)), + self.direction) + self.thisFrame.append(comet[:self.ledCount]) + + for x in range(int((1/self.speed)-(self.speed <= 1))): + self.thisFrame.append(comet[:self.ledCount]) + + self.frameCount = len(self.thisFrame) + + #Lights move sequentially with decay + class layerChase(_layerBase): + def __init__(self, **kwargs): + super(ledEffect.layerChase, self).__init__(**kwargs) + self.speed = kwargs["speed"] if "speed" in kwargs else kwargs["effectRate"] + self.tailLength = kwargs["tailLength"] if "tailLength" in kwargs else kwargs["effectCutoff"] + + if self.speed > 0: + self.direction = True + else: + self.direction = False + self.speed *= -1 + + if len(self.paletteColors) == 1: + self.paletteColors += colorArray(COLORS,COLORS*[0]) + + decayTable = self._decayTable(factor=len(self.paletteColors) * \ + self.tailLength, rate=1) + + gradient = self.paletteColors[0] + \ + self._gradient(self.paletteColors[1:], len(decayTable)+1) + + decayTable = [c for b in zip(decayTable, decayTable, decayTable, decayTable) \ + for c in b] + gradient = colorArray(COLORS, [a * b + for a, b in zip(gradient,decayTable)]) + + k=int(self.ledCount/len(gradient))+1 + chase = colorArray(COLORS,k*gradient) + + if self.direction: chase.reverse() + if self.speed == 0: + self.thisFrame.append(chase[0:self.ledCount]) + else: + for _ in range(len(chase)): + chase.shift(int(self.speed+(self.speed < 1)), + self.direction) + self.thisFrame.append(chase[0:self.ledCount]) + + for _ in range(int((1/self.speed)-(self.speed <= 1))): + self.thisFrame.append(chase[0:self.ledCount]) + + self.frameCount = len(self.thisFrame) + + #Color gradient over all LEDs + class layerGradient(_layerBase): + def __init__(self, **kwargs): + super(ledEffect.layerGradient, self).__init__(**kwargs) + self.speed = kwargs["speed"] if "speed" in kwargs else kwargs["effectRate"] + self.count = kwargs["count"] if "count" in kwargs else kwargs["effectCutoff"] + + direction = -1 if self.speed < 0 else 1 + + if self.speed == 0: + gradientLength = self.ledCount + else: + gradientLength=abs(int(1/(self.speed * self.frameRate))) + gradient = colorArray(COLORS, self._gradient(self.paletteColors, + gradientLength, + toFirst=True)) + + for i in range(gradientLength if self.speed != 0 else 1): + frame = colorArray(COLORS, ([0.0]*COLORS) * self.ledCount) + for led in range(self.ledCount): + frame[led] = gradient[ int(i*direction + \ + self.count * gradientLength * led \ + / self.ledCount ) % gradientLength] + self.thisFrame.append(frame) + + self.frameCount = len(self.thisFrame) + + class layerPattern(_layerBase): + def __init__(self, **kwargs): + super(ledEffect.layerPattern, self).__init__(**kwargs) + self.duration = kwargs["duration"] if "duration" in kwargs else kwargs["effectRate"] + self.shift = kwargs["shift"] if "shift" in kwargs else kwargs["effectCutoff"] + + self.paletteColors = colorArray(COLORS, self.paletteColors) + frame = colorArray(COLORS, []) + + for i in range(int(self.ledCount/len(self.paletteColors))+1): + frame+=(self.paletteColors) + + if int(self.duration/self.frameRate) == 0: + self.thisFrame.append(frame) + else: + for _ in range(len(self.paletteColors) * (self.ledCount-1)): + for _ in range(int(self.duration/self.frameRate)): + self.thisFrame.append(colorArray(COLORS, frame)[:COLORS*self.ledCount]) + frame.shift(int(self.shift)) + + self.frameCount = len(self.thisFrame) + + #Responds to heater temperature + class layerHeater(_layerBase): + def __init__(self, **kwargs): + super(ledEffect.layerHeater, self).__init__(**kwargs) + self.minTemp = kwargs["minTemp"] if "minTemp" in kwargs else kwargs["effectRate"] + self.disableOnceReached = kwargs["disableOnceReached"] if "disableOnceReached" in kwargs else kwargs["effectCutoff"] + self.heater = kwargs["heater"] if "heater" in kwargs else self.handler.heater + self.gradientSteps = int(kwargs["gradientSteps"]) if "gradientSteps" in kwargs else 200 + + if len(self.paletteColors) == 1: + self.paletteColors += self.paletteColors + + gradient = colorArray(COLORS, self._gradient(self.paletteColors[:-1], self.gradientSteps) + + self.paletteColors[-1:]) + + for i in range(len(gradient)): + self.thisFrame.append(gradient[i] * self.ledCount) + + self.frameCount = len(self.thisFrame) + + def nextFrame(self, eventtime): + heaterTarget = self.frameHandler.heaterTarget[self.heater] + heaterCurrent = self.frameHandler.heaterCurrent[self.heater] + heaterLast = self.frameHandler.heaterLast[self.heater] + + if heaterTarget > 0.0 and heaterCurrent > 0.0: + if (heaterCurrent >= self.minTemp): + if (heaterCurrent <= heaterTarget-2): + s = int(((heaterCurrent - self.minTemp) / heaterTarget) * self.gradientSteps) + s = min(len(self.thisFrame)-1,s) + return self.thisFrame[s] + elif self.disableOnceReached > 0: + return None + else: + return self.thisFrame[-1] + else: + return None + + elif self.minTemp > 0 and heaterCurrent > 0.0: + if heaterCurrent >= self.minTemp and heaterLast > 0: + s = int(((heaterCurrent - self.minTemp) / heaterLast) * self.gradientSteps) + s = min(len(self.thisFrame)-1,s) + return self.thisFrame[s] + + return None + + #Responds to heater temperature + class layerTemperature(_layerBase): + def __init__(self, **kwargs): + super(ledEffect.layerTemperature, self).__init__(**kwargs) + self.minTemp = kwargs["minTemp"] if "minTemp" in kwargs else kwargs["effectRate"] + self.maxTemp = kwargs["maxTemp"] if "maxTemp" in kwargs else kwargs["effectCutoff"] + + if len(self.paletteColors) == 1: + self.paletteColors = colorArray(COLORS, ([0.0]*COLORS)) + self.paletteColors + gradient = colorArray(COLORS, self._gradient(self.paletteColors, 200)) + for i in range(len(gradient)): + self.thisFrame.append(gradient[i] * self.ledCount) + self.frameCount = len(self.thisFrame) + def nextFrame(self, eventtime): + if self.maxTemp == self.minTemp: + s = 200 if self.frameHandler.heaterCurrent[self.handler.heater] >= self.minTemp else 0 + else: + s = int(((self.frameHandler.heaterCurrent[self.handler.heater] - + self.minTemp) / + (self.maxTemp - self.minTemp)) * 200) + + s = min(len(self.thisFrame)-1,s) + s = max(0,s) + return self.thisFrame[s] + + #Responds to analog pin voltage + class layerAnalogPin(_layerBase): + def __init__(self, **kwargs): + super(ledEffect.layerAnalogPin, self).__init__(**kwargs) + self.multiplier = kwargs["multiplier"] if "multiplier" in kwargs else kwargs["effectRate"] + self.threshold = kwargs["threshold"] if "threshold" in kwargs else kwargs["effectCutoff"] + + if len(self.paletteColors) == 1: + self.paletteColors = [0.0]*COLORS + self.paletteColors + + gradient = colorArray(COLORS, self._gradient(self.paletteColors, 101)) + + for i in range(len(gradient)): + self.thisFrame.append(gradient[i] * self.ledCount) + + def nextFrame(self, eventtime): + v = int(self.handler.analogValue * self.multiplier) + + if v > 100: v = 100 + + if v > self.threshold: + return self.thisFrame[v] + else: + return self.thisFrame[0] + + #Lights illuminate relative to stepper position + class layerStepper(_layerBase): + def __init__(self, **kwargs): + super(ledEffect.layerStepper, self).__init__(**kwargs) + self.trailingLedCount = kwargs["trailingLedCount"] if "trailingLedCount" in kwargs else kwargs["effectRate"] + self.leadingLedCount = kwargs["leadingLedCount"] if "leadingLedCount" in kwargs else kwargs["effectCutoff"] + + if self.trailingLedCount < 0: + self.trailingLedCount = self.ledCount + + if self.leadingLedCount < 0: + self.leadingLedCount = self.ledCount + + if self.trailingLedCount == 0: + trailing = colorArray(COLORS, [0.0]*COLORS * self.ledCount) + else: + trailing = colorArray(COLORS, self._gradient(self.paletteColors[1:], + int(self.trailingLedCount), True)) + trailing.padLeft([0.0]*COLORS, self.ledCount) + + if self.leadingLedCount == 0: + leading = colorArray(COLORS, [0.0]*COLORS * self.ledCount) + else: + leading = colorArray(COLORS, self._gradient(self.paletteColors[1:], + int(self.leadingLedCount), False)) + leading.padRight([0.0]*COLORS, self.ledCount) + + gradient = colorArray(COLORS, trailing + self.paletteColors[0] + leading) + gradient.shift(len(trailing)-1, 0) + frames = [gradient[:self.ledCount]] + + for i in range(0, self.ledCount): + gradient.shift(1,1) + frames.append(gradient[:self.ledCount]) + + for i in range(101): + x = int((i / 101.0) * self.ledCount) + self.thisFrame.append(frames[x]) + + self.frameCount = len(self.thisFrame) + + def nextFrame(self, eventtime): + if self.handler.stepper == 'x': axis = 0 + elif self.handler.stepper == 'y': axis = 1 + else: axis = 2 + + p = self.frameHandler.stepperPositions[int(axis)] + + if p < 0 : p=0 + if p > 100 : p=100 + return self.thisFrame[int((p - 1) * (p > 0))] + + class layerStepperColor(_layerBase): + def __init__(self, **kwargs): + super(ledEffect.layerStepperColor, self).__init__(**kwargs) + self.positionScaling = kwargs["positionScaling"] if "positionScaling" in kwargs else kwargs["effectRate"] + self.positionOffset = kwargs["positionOffset"] if "positionOffset" in kwargs else kwargs["effectCutoff"] + + if len(self.paletteColors) == 1: + self.paletteColors = [0.0]*COLORS + self.paletteColors + + gradient = colorArray(COLORS, self._gradient(self.paletteColors, 101)) + + for i in range(len(gradient)): + self.thisFrame.append(gradient[i] * self.ledCount) + + def nextFrame(self, eventtime): + if self.handler.stepper == 'x': axis = 0 + elif self.handler.stepper == 'y': axis = 1 + else: axis = 2 + + p = self.frameHandler.stepperPositions[int(axis)]*self.positionScaling+self.positionOffset + + if p < 0 : p=0 + if p > 100 : p=100 + + return self.thisFrame[int(p)] + + #Shameless port of Fire2012 by Mark Kriegsman + + #Shamelessly appropriated from the Arduino FastLED example files + #Fire2012.ino by Daniel Garcia + class layerFire(_layerBase): + def __init__(self, **kwargs): + super(ledEffect.layerFire, self).__init__(**kwargs) + self.sparkPropability = kwargs["sparkPropability"] if "sparkPropability" in kwargs else kwargs["effectRate"] + self.coolingRate = kwargs["coolingRate"] if "coolingRate" in kwargs else kwargs["effectCutoff"] + + self.heatMap = [0.0] * self.ledCount + self.gradient = colorArray(COLORS, self._gradient(self.paletteColors, + 102)) + self.frameLen = len(self.gradient) + self.heatLen = len(self.heatMap) + self.heatSource = int(self.ledCount / 10.0) + self.sparkPropability = int(self.sparkPropability) + + if self.heatSource < 1: + self.heatSource = 1 + + def nextFrame(self, eventtime): + frame = [] + + for h in range(self.heatLen): + c = randint(0,self.coolingRate) + self.heatMap[h] -= (self.heatMap[h] - c >= 0 ) * c + + for i in range(self.ledCount - 1, self.heatSource, -1): + d = (self.heatMap[i - 1] + + self.heatMap[i - 2] + + self.heatMap[i - 3] ) / 3 + + self.heatMap[i] = d * (d >= 0) + + if randint(0, 100) < self.sparkPropability: + h = randint(0, self.heatSource) + self.heatMap[h] += randint(90,100) + if self.heatMap[h] > 100: + self.heatMap[h] = 100 + + for h in self.heatMap: + frame += self.gradient[int(h)] + + return frame + + #Fire that responds relative to actual vs target temp + class layerHeaterFire(_layerBase): + def __init__(self, **kwargs): + super(ledEffect.layerHeaterFire, self).__init__(**kwargs) + self.minTemp = kwargs["minTemp"] if "minTemp" in kwargs else kwargs["effectRate"] + self.disableOnceReached = kwargs["disableOnceReached"] if "disableOnceReached" in kwargs else kwargs["effectCutoff"] + self.heater = kwargs["heater"] if "heater" in kwargs else self.handler.heater + + self.heatMap = [0.0] * self.ledCount + self.gradient = colorArray(COLORS, self._gradient(self.paletteColors, + 102)) + self.frameLen = len(self.gradient) + self.heatLen = len(self.heatMap) + self.heatSource = int(self.ledCount / 10.0) + # Bug? + self.minTemp = 0 + + if self.heatSource < 1: + self.heatSource = 1 + + def nextFrame(self, eventtime): + frame = [] + spark = 0 + heaterTarget = self.frameHandler.heaterTarget[self.heater] + heaterCurrent = self.frameHandler.heaterCurrent[self.heater] + heaterLast = self.frameHandler.heaterLast[self.heater] + + if heaterTarget > 0.0 and heaterCurrent > 0.0: + if heaterCurrent <= heaterTarget-2: + spark = int((heaterCurrent / heaterTarget) * 80) + brightness = int((heaterCurrent / heaterTarget) * 100) + elif self.disableOnceReached > 0: + spark = 0 + else: + spark = 80 + brightness = 100 + elif self.minTemp > 0 and heaterCurrent > 0.0: + if heaterCurrent >= self.minTemp: + spark = int(((heaterCurrent - self.minTemp) + / heaterLast) * 80) + brightness = int(((heaterCurrent - self.minTemp) + / heaterLast) * 100) + + if spark > 0: + cooling = int((heaterCurrent / heaterTarget) * 20) + + for h in range(self.heatLen): + c = randint(0, cooling) + self.heatMap[h] -= (self.heatMap[h] - c >= 0 ) * c + + for i in range(self.ledCount - 1, self.heatSource, -1): + d = (self.heatMap[i - 1] + + self.heatMap[i - 2] + + self.heatMap[i - 3] ) / 3 + + self.heatMap[i] = d * (d >= 0) + + if randint(0, 100) < spark: + h = randint(0, self.heatSource) + self.heatMap[h] += brightness + if self.heatMap[h] > 100: + self.heatMap[h] = 100 + + for h in self.heatMap: + frame += self.gradient[int(h)] + + return frame + + else: + return None + + #Progress bar using M73 gcode command + class layerProgress(_layerBase): + def __init__(self, **kwargs): + super(ledEffect.layerProgress, self).__init__(**kwargs) + self.trailingLedCount = kwargs["trailingLedCount"] if "trailingLedCount" in kwargs else kwargs["effectRate"] + self.leadingLedCount = kwargs["leadingLedCount"] if "leadingLedCount" in kwargs else kwargs["effectCutoff"] + + if self.trailingLedCount < 0: + self.trailingLedCount = self.ledCount + + if self.leadingLedCount < 0: + self.leadingLedCount = self.ledCount + + if self.trailingLedCount == 0: + trailing = colorArray(COLORS, [0.0]*COLORS * self.ledCount) + else: + trailing = colorArray(COLORS, self._gradient(self.paletteColors[1:], + int(self.trailingLedCount), True)) + trailing.padLeft([0.0]*COLORS, self.ledCount) + + if self.leadingLedCount == 0: + leading = colorArray(COLORS, [0.0]*COLORS * self.ledCount) + else: + leading = colorArray(COLORS, self._gradient(self.paletteColors[1:], + int(self.leadingLedCount), False)) + leading.padRight([0.0]*COLORS, self.ledCount) + + gradient = colorArray(COLORS, trailing + self.paletteColors[0] + leading) + gradient.shift(len(trailing), 0) + frames = [gradient[:self.ledCount]] + + for i in range(0, self.ledCount): + gradient.shift(1,1) + frames.append(gradient[:self.ledCount]) + + self.thisFrame.append(colorArray(COLORS, [0.0]*COLORS * self.ledCount)) + for i in range(1, 101): + x = int((i / 101.0) * self.ledCount) + self.thisFrame.append(frames[x]) + + self.frameCount = len(self.thisFrame) + + def nextFrame(self, eventtime): + p = self.frameHandler.printProgress + return self.thisFrame[p] #(p - 1) * (p > 0)] + + class layerHoming(_layerBase): + def __init__(self, **kwargs): + super(ledEffect.layerHoming, self).__init__(**kwargs) + self.decayRate = kwargs["decayRate"] if "decayRate" in kwargs else kwargs["effectRate"] + + self.paletteColors = colorArray(COLORS, self.paletteColors) + + gradientLength = int(self.ledCount) + gradient = colorArray(COLORS, self._gradient(self.paletteColors, + gradientLength)) + + for c in range(0, len(self.paletteColors)): + color = self.paletteColors[c] + self.thisFrame.append(colorArray(COLORS,color*self.ledCount)) + + self.decayTable = self._decayTable(factor=self.decayRate) + self.decayTable.append(0.0) + self.decayLen = len(self.decayTable) + self.counter=self.decayLen-1 + self.coloridx=-1 + self.my_flag={} + for endstop in self.handler.endstops: + logging.info(endstop) + self.frameHandler.homing_end_flag[endstop] = 0 + self.my_flag[endstop] = self.frameHandler.homing_end_flag[endstop] + + def nextFrame(self, eventtime): + for endstop in self.handler.endstops: + + if self.my_flag[endstop] != self.frameHandler.homing_end_flag[endstop]: + self.counter = 0 + self.coloridx = (self.coloridx + 1) % len(self.paletteColors) + self.my_flag[endstop] = self.frameHandler.homing_end_flag[endstop] + + frame = [self.decayTable[self.counter] * i for i in self.thisFrame[self.coloridx ]] + if self.counter < self.decayLen-1: + self.counter += 1 + + return frame + + +def load_config_prefix(config): + return ledEffect(config) diff --git a/src/led_effect_golden_test.py b/src/led_effect_golden_test.py new file mode 100644 index 0000000..bd72c5f --- /dev/null +++ b/src/led_effect_golden_test.py @@ -0,0 +1,23 @@ +import pytest + +import sys +from pathlib import Path # if you haven't already done so +file = Path(__file__).resolve() +parent, root = file.parent, file.parents[1] +sys.path.append(str(root)) + +from simulator.simulator.klippermock import * + +NUM_FRAMES = 100 + +@pytest.mark.golden_test("golden/*.yml") +def test_led_effects_reference(golden): + config = mockConfig() + config.setint("ledcount", 10) + config.set("layers", + golden["input"]) + printer = mockPrinter(config) + printer._handle_ready() + + frames = [ list(printer.led_effect.getFrame(i)) for i in range(NUM_FRAMES) ] + assert frames == golden.out["output"] diff --git a/src/led_effect_layer_parser.py b/src/led_effect_layer_parser.py new file mode 100644 index 0000000..926401d --- /dev/null +++ b/src/led_effect_layer_parser.py @@ -0,0 +1,71 @@ +from lark import Lark, Transformer, v_args + +layer_line_grammar = r""" + line: legacy_line | parameterized_line + + legacy_line: LAYER_NAME RATE CUTOFF BLEND palette + LAYER_NAME: WORD + RATE: NUMBER + CUTOFF: NUMBER + BLEND: WORD + + parameterized_line: LAYER_NAME "(" parameters ")" BLEND palette + parameters: (parameter ("," parameter)*)? + parameter: CNAME "=" (NUMBER | string) + NUMBER: (FLOAT | INT) + + palette: palette_entry ("," palette_entry)* + palette_entry: "(" (NUMBER) "," (NUMBER) "," (NUMBER) ["," (NUMBER)] ")" + ?string: CNAME | ESCAPED_STRING + + %import common.CNAME + %import common.WORD + %import common.FLOAT + %import common.INT + %import common.WS + %import common.ESCAPED_STRING + + %ignore WS + """ + + +class TermTransformer(Transformer): + NUMBER = float + RATE = float + CUTOFF = float + BLEND = str + LAYER_NAME = str + WORD = str + CNAME = str + + @v_args(inline=True) + def ESCAPED_STRING(self, s): + return s[1:-1].replace('\\"', '"') + + +layer_line_parser = Lark(layer_line_grammar, start="line") + + +def parse(line): + tree = TermTransformer().transform(layer_line_parser.parse(line)) + + if tree.children[0].data == "legacy_line": + effect, rate, cutoff, blend, palette = tree.children[0].children + palette = [tuple([color for color in entry.children if color != None]) + for entry in palette.children] + return { + "effect": effect, "parameters": {"effectRate": rate, "effectCutoff": cutoff}, + "blend": blend, "palette": palette + } + elif tree.children[0].data == "parameterized_line": + effect, parameters, blend, palette = tree.children[0].children + + params = {k: v for k, v in [ + (param.children[0], param.children[1]) for param in parameters.children]} + + palette = [tuple([color for color in entry.children if color != None]) + for entry in palette.children] + return { + "effect": effect, "blend": blend, "palette": palette, "parameters": params + } + return None diff --git a/src/led_effect_layer_parser_test.py b/src/led_effect_layer_parser_test.py new file mode 100644 index 0000000..b02cf1c --- /dev/null +++ b/src/led_effect_layer_parser_test.py @@ -0,0 +1,42 @@ +import pytest +from . import led_effect_layer_parser + +legacy_format_data = [ + ("breathing .5 0 screen (0,.1,1), (0,1,.5), (0, 1,1), (0,.1,.5)", "breathing", + 0.5, 0, "screen", [(0, 0.1, 1), (0, 1, 0.5), (0, 1, 1), (0, 0.1, 0.5)]), + ("breathing .5 0 screen (0,.1,1,0.5), (0,1,.5), (0, 1,1), (0,.1,.5)", "breathing", + 0.5, 0, "screen", [(0, 0.1, 1, 0.5), (0, 1, 0.5), (0, 1, 1), (0, 0.1, 0.5)]), + ("strobe 1 1.5 add (1.0, 1.0, 1.0)", + "strobe", 1, 1.5, "add", [(1, 1, 1)]), + ("breathing 2 0 difference (0.95, 0.0, 0.0)", + "breathing", 2, 0, "difference", [(0.95, 0, 0)]), + ("static 1 0 top (1.0, 0.0, 0.0)", + "static", 1, 0, "top", [(1, 0, 0)]), +] + +parameterized_line_format_data = [ + ("static() top (1.0, 0.0, 0.0)", + "static", {}, "top", [(1, 0, 0)]), + ("breathing(duration=.5) screen (0,.1,1), (0,1,.5), (0, 1,1), (0,.1,.5)", "breathing", + {"duration": 0.5}, "screen", [(0, 0.1, 1), (0, 1, 0.5), (0, 1, 1), (0, 0.1, 0.5)]), + ("breathing(duration=.5) screen (0,.1,1, 0.5), (0,1,.5), (0, 1,1), (0,.1,.5)", "breathing", + {"duration": 0.5}, "screen", [(0, 0.1, 1, 0.5), (0, 1, 0.5), (0, 1, 1), (0, 0.1, 0.5)]), + (" strobe(frequency=1,decay=1.5) add (1.0, 1.0, 1.0)", + "strobe", {"frequency": 1, "decay": 1.5}, "add", [(1, 1, 1)]), + (" strobe(frequency=1, decay=1.5) add (1.0, 1.0, 1.0)", + "strobe", {"frequency": 1, "decay": 1.5}, "add", [(1, 1, 1)]), + (" heater(heater=heater_bed, decay=1.5) add (1.0, 1.0, 1.0)", + "heater", {"heater": "heater_bed", "decay": 1.5}, "add", [(1, 1, 1)]), +] + + +@pytest.mark.parametrize("line,effect,rate,cutoff,blend,palette", legacy_format_data) +def test_parses_the_legacy_format(line, effect, rate, cutoff, blend, palette): + assert led_effect_layer_parser.parse(line) == { + "effect": effect, "parameters": {"effectRate": rate, "effectCutoff": cutoff}, "blend": blend, "palette": palette} + + +@pytest.mark.parametrize("line,effect,parameters,blend,palette", parameterized_line_format_data) +def test_parses_the_parameterized_format(line, effect, parameters, blend, palette): + assert led_effect_layer_parser.parse(line) == { + "effect": effect, "blend": blend, "palette": palette, "parameters": parameters} diff --git a/src/led_effect_test.py b/src/led_effect_test.py new file mode 100644 index 0000000..6cebf1d --- /dev/null +++ b/src/led_effect_test.py @@ -0,0 +1,143 @@ +import pytest + +import sys +from pathlib import Path # if you haven't already done so +file = Path(__file__).resolve() +parent, root = file.parent, file.parents[1] +sys.path.append(str(root)) + +from simulator.simulator.klippermock import * + +def test_legacy_works(): + config = mockConfig() + config.setint("ledcount", 10) + config.set( + "layers", "gradient 2 3 top (1.0,0.0,0.0),(0.0,1.0,0.0),(0.0,0.0,1.0) ") + printer = mockPrinter(config) + printer._handle_ready() + layer = printer.led_effect.handler.effects[0].layers[0] + + assert layer.speed == 2 + assert layer.count == 3 + assert layer.blendingMode == "top" + assert layer.paletteColors == [1.0, 0.0, 0.0, + 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0] + + +def test_new_params_work(): + config = mockConfig() + config.setint("ledcount", 10) + config.set( + "layers", "gradient(speed=2, count=3) top (1.0,0.0,0.0),(0.0,1.0,0.0),(0.0,0,1.0) ") + printer = mockPrinter(config) + printer._handle_ready() + layer = printer.led_effect.handler.effects[0].layers[0] + + assert layer.speed == 2 + assert layer.count == 3 + assert layer.blendingMode == "top" + assert layer.paletteColors == [1.0, 0.0, 0.0, + 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0] + + +def test_missing_param_throws(): + config = mockConfig() + config.setint("ledcount", 10) + config.set( + "layers", "gradient(count=3) top (1.0,0.0,0.0),(0.0,1.0,0.0),(0.0,0,1.0) ") + with pytest.raises(Exception): + printer = mockPrinter(config) + printer._handle_ready() + + +def test_allow_layer_specific_heater(): + config = mockConfig() + config.setint("ledcount", 1) + config.set( + "layers", """ + heater(minTemp=10,disableOnceReached=0,heater=heater_bed) add (1.0,0.0,0.0) + heater(minTemp=10,disableOnceReached=0,heater=hotend) add (0,0.0,1.0) + """) + printer = mockPrinter(config) + printer._handle_ready() + printer.set_heater(None, 200, 100, "heater_bed") + assert printer.led_effect.getFrame(0) == ([1.0, 0.0, 0.0, 0.0], True) + printer.set_heater(None, 200, 100, "hotend") + assert printer.led_effect.getFrame(1) == ([1.0, 0.0, 1.0, 0.0], True) + + +def test_color_blending_colorspace_rgb_default(): + config = mockConfig() + config.setint("ledcount", 3) + config.set( + "layers", """ + static() top (1, 0, 0), (0, 0, 1) + """) + printer = mockPrinter(config) + printer._handle_ready() + assert printer.led_effect.getFrame(0) == ([ + 1.0, 0.0, 0.0, 0.0, + 0.5, 0.0, 0.5, 0.0, + 0.0, 0.0, 1.0, 0.0 + ], True) + + +def test_color_blending_colorspace_lab(): + config = mockConfig() + config.setint("ledcount", 3) + config.set( + "layers", """ + static(colorSpace=lab) top (1, 0, 0), (0, 0, 1) + """) + printer = mockPrinter(config) + printer._handle_ready() + assert printer.led_effect.getFrame(0) == ([ + 1.0, 0.0, 0.0, 0.0, + 0.7923588275927298, 0.0, 0.5387489625917922, 0.0, + 0.0, 0.0, 1.0, 0.0 + ], True) + +def test_color_blending_colorspace_none(): + config = mockConfig() + config.setint("ledcount", 4) + config.set( + "layers", """ + static(colorSpace=none) top (1, 0, 0), (0, 0, 1) + """) + printer = mockPrinter(config) + printer._handle_ready() + assert printer.led_effect.getFrame(0) == ([ + 1.0, 0.0, 0.0, 0.0, + 1.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 1.0, 0.0, + 0.0, 0.0, 1.0, 0.0 + ], True) + + +def test_default_heater_gradient_length(): + config = mockConfig() + config.setint("ledcount", 1) + config.set( + "layers", """ + heater(heater=heater_bed,minTemp=0,disableOnceReached=0) top (1, 0, 0), (0, 0, 1), (0, 0, 1) + """) + printer = mockPrinter(config) + printer._handle_ready() + printer.set_heater(None, 100, 50, "heater_bed") + assert printer.led_effect.getFrame(0) == ([ + 0.4974874371859297, 0.0, 0.5025125628140703, 0.0 + ], True) + +def test_changing_heater_gradient_length(): + config = mockConfig() + config.setint("ledcount", 1) + config.set( + "layers", """ + heater(heater=heater_bed,minTemp=0,disableOnceReached=0,gradientSteps=3) top (1, 0, 0), (0, 0, 1), (0, 0, 1) + """) + printer = mockPrinter(config) + printer._handle_ready() + printer.set_heater(None, 100, 50, "heater_bed") + assert printer.led_effect.getFrame(0) == ([ + 0.5, 0.0, 0.5, 0.0 + ], True)