From 9f8ffd4a4ce67083d793e7d822c31821a63820ed Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 13 Jun 2018 09:31:49 +0200 Subject: [PATCH 001/127] initial --- .../source/resource/qxapp/node-config.json | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 services/web/client/source/resource/qxapp/node-config.json diff --git a/services/web/client/source/resource/qxapp/node-config.json b/services/web/client/source/resource/qxapp/node-config.json new file mode 100644 index 00000000000..e46f576753a --- /dev/null +++ b/services/web/client/source/resource/qxapp/node-config.json @@ -0,0 +1,43 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "simcore node", + "description": "Description of a simcore node input and output", + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "unique key for this item" + }, + "label": { + "type": "string", + "description": "label representing the item" + }, + "commonSettings": { + "type": "object", + "allOf": [ + { "$ref": "#/definitions/key" }, + { "$ref": "#/definitions/label" } + ] + }, + "input": { + "type": "object", + "allOf": [ + { "$ref": "#/definitions/commonSettings" }, + { "properties": { + "widget": { + "enum": ["text","selectBox","spinner"] + } + }} + ] + + }, + "output": { + "type": "object" + } + }, + "additionalProperties": false, + "anyOf": [ + { "$ref": "#/definitions/input" }, + { "$ref": "#/definitions/output"} + ] +} \ No newline at end of file From bc724775f9d6a4c01497e41f5bfef4ee53c9312b Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 13 Jun 2018 11:47:24 +0200 Subject: [PATCH 002/127] first complete schema --- .../source/resource/qxapp/node-config.json | 284 ++++++++++++++++-- 1 file changed, 256 insertions(+), 28 deletions(-) diff --git a/services/web/client/source/resource/qxapp/node-config.json b/services/web/client/source/resource/qxapp/node-config.json index e46f576753a..75addf451dd 100644 --- a/services/web/client/source/resource/qxapp/node-config.json +++ b/services/web/client/source/resource/qxapp/node-config.json @@ -1,43 +1,271 @@ { "$schema": "http://json-schema.org/draft-07/schema#", "title": "simcore node", - "description": "Description of a simcore node input and output", + "description": "Description of a simcore node 'class' with input and output", "type": "object", + "additionalProperties": false, + "required": [ + "name", + "tag", + "description", + "authors", + "contact", + "input", + "output" + ], "properties": { - "key": { + "name": { "type": "string", - "description": "unique key for this item" + "description": "distinctive name for the node based on the docker registry path", + "pattern": "^(service)/(computational|dynamic)/([^\\s/])$", + "examples": [ + "service/computational/sleeper", + "service/dynamic/3dviewer" + ] }, - "label": { + "tag": { "type": "string", - "description": "label representing the item" + "description": "semantic version number", + "pattern": "^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){2}(-(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*)(\\.(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*))*)?(\\+[-\\da-zA-Z]+(\\.[-\\da-zA-Z-]+)*)?$", + "examples": [ + "1.0.0", + "0.0.1" + ] }, - "commonSettings": { - "type": "object", - "allOf": [ - { "$ref": "#/definitions/key" }, - { "$ref": "#/definitions/label" } + "description": { + "type": "string", + "description": "human readable description of the purpose of the node", + "examples": [ + "Our best node type", + "The mother of all nodes, makes your numbers shine!" ] }, - "input": { - "type": "object", - "allOf": [ - { "$ref": "#/definitions/commonSettings" }, - { "properties": { - "widget": { - "enum": ["text","selectBox","spinner"] + "authors": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "email"], + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "description": "Name of the author", + "examples": [ + "Sun Bak", + "Delenn" + ] + }, + "email": { + "description": "Email address", + "type": "string", + "pattern": "^[^\\s@]+@[^\\s@.]+(\\.[^\\s@]+)+$", + "examples": [ + "sun@sense.eight", + "deleen@minbar.bab" + ] + }, + "affiliation": { + "description": "Affiliaton of the author", + "type": "string", + "examples": [ + "Sense8", + "Babylon 5" + ] } - }} + } + } + }, + "contact": { + "type": "string", + "description": "email to corespond to the authors about the node", + "examples": [ + "lab@net.flix" ] - }, - "output": { - "type": "object" + "label": { + "type": "string", + "description": "how to represent the node in a list of nodes for example" + }, + "input": { + "type": "array", + "description": "definition of the inputs of this node", + "items": { + "type": "object", + "description": "all the input configurable for this service", + "additionalProperties": false, + "required": [ + "key", + "label", + "description", + "type", + "defaultValue" + ], + "properties": { + "key": { + "type": "string", + "pattern": "^[_a-z0-9]+", + "description": "unique identifier for this input property", + "examples": [ + "age" + ] + }, + "label": { + "type": "string", + "description": "short name for the property", + "examples": [ + "Age" + ] + }, + "description": { + "type": "string", + "description": "description of the property", + "examples": [ + "Age in seconds since 1970" + ] + }, + "type": { + "type": "string", + "enum": [ + "number", + "file-url", + "boolean", + "string", + "scene" + ], + "description": "data type expected on this input", + "examples": [ + "number", + "boolean" + ] + }, + "defaultValue": { + "description": "initial value for this input", + "type": ["string","number","integer","boolean"], + "examples": [ + "Dog", + true + ] + }, + "widget": { + "description": "custom widget to use instead of the default one determined from the data-type", + "anyOf": [ + { + "type": "object", + "additionalProperties": false, + "required": [ + "type" + ], + "properties": { + "type": { + "description": "type of the property", + "enum": ["TextArea"] + }, + "minHeight": { + "description": "minimum Height of the textarea", + "type": "integer", + "minimum": 1 + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": [ + "type", + "structure" + ], + "properties": { + "type": { + "description": "type of the property", + "enum": ["SelectBox"] + }, + "structure": { + "type": "array", + "minItems": 1, + "items": { + "type":"object", + "additionalProperties": false, + "required": [ + "key", + "label" + ], + "properties": { + "key": { + "type": ["string","boolean","number"] + }, + "label": { + "type": "string" + } + }, + "examples": [ + [ + { "key": "rat", "label": "The Rat"}, + { "key": "dog", "label": "Bello the Dog"} + ] + ] + } + } + } + } + ] + } + } + } + }, + "output": { + "type": "array", + "description": "definition of the outputs of this node", + "items": { + "type": "object", + "description": "all the ouptut produced by this node", + "additionalProperties": false, + "required": [ + "key", + "label", + "description", + "type", + "defaultValue" + ], + "properties": { + "key": { + "type": "string", + "pattern": "^[_a-z0-9]+", + "description": "unique identifier for this output property", + "examples": [ + "age" + ] + }, + "label": { + "type": "string", + "description": "short name for the property", + "examples": [ + "Age" + ] + }, + "description": { + "type": "string", + "description": "description of the property", + "examples": [ + "Age in seconds since 1970" + ] + }, + "type": { + "type": "string", + "enum": [ + "number", + "file-url", + "boolean", + "string", + "scene" + ], + "description": "data type expected on this output", + "examples": [ + "number", + "boolean" + ] + } + } + } } - }, - "additionalProperties": false, - "anyOf": [ - { "$ref": "#/definitions/input" }, - { "$ref": "#/definitions/output"} - ] -} \ No newline at end of file + } +} From 05a998cd9f81f0265161b6ac750e26db5753ad6e Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 13 Jun 2018 11:54:11 +0200 Subject: [PATCH 003/127] renamed --- .../source/resource/qxapp/node-meta.json | 273 ++++++++++++++++++ 1 file changed, 273 insertions(+) create mode 100644 services/web/client/source/resource/qxapp/node-meta.json diff --git a/services/web/client/source/resource/qxapp/node-meta.json b/services/web/client/source/resource/qxapp/node-meta.json new file mode 100644 index 00000000000..35e8b0c2489 --- /dev/null +++ b/services/web/client/source/resource/qxapp/node-meta.json @@ -0,0 +1,273 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "simcore node", + "description": "Description of a simcore node 'class' with input and output", + "type": "object", + "additionalProperties": false, + "required": [ + "name", + "tag", + "description", + "authors", + "contact", + "input", + "output" + ], + "properties": { + "name": { + "type": "string", + "description": "distinctive name for the node based on the docker registry path", + "pattern": "^(service)/(computational|dynamic)/([^\\s/])$", + "examples": [ + "service/computational/sleeper", + "service/dynamic/3dviewer" + ] + }, + "tag": { + "type": "string", + "description": "semantic version number", + "pattern": "^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){2}(-(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*)(\\.(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*))*)?(\\+[-\\da-zA-Z]+(\\.[-\\da-zA-Z-]+)*)?$", + "examples": [ + "1.0.0", + "0.0.1" + ] + }, + "description": { + "type": "string", + "description": "human readable description of the purpose of the node", + "examples": [ + "Our best node type", + "The mother of all nodes, makes your numbers shine!" + ] + }, + "authors": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "email"], + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "description": "Name of the author", + "examples": [ + "Sun Bak", + "Delenn" + ] + }, + "email": { + "description": "Email address", + "type": "string", + "pattern": "^[^\\s@]+@[^\\s@.]+(\\.[^\\s@]+)+$", + "examples": [ + "sun@sense.eight", + "deleen@minbar.bab" + ] + }, + "affiliation": { + "description": "Affiliaton of the author", + "type": "string", + "examples": [ + "Sense8", + "Babylon 5" + ] + } + } + } + }, + "contact": { + "type": "string", + "description": "email to corespond to the authors about the node", + "examples": [ + "lab@net.flix" + ] + }, + "label": { + "type": "string", + "description": "how to represent the node in a list of nodes for example" + }, + "input": { + "type": "array", + "description": "definition of the inputs of this node", + "items": { + "type": "object", + "description": "all the input configurable for this service", + "additionalProperties": false, + "required": [ + "key", + "label", + "description", + "type", + "defaultValue" + ], + "properties": { + "key": { + "type": "string", + "pattern": "^[_a-z0-9]+", + "description": "unique identifier for this input property", + "examples": [ + "age" + ] + }, + "label": { + "type": "string", + "description": "short name for the property", + "examples": [ + "Age" + ] + }, + "description": { + "type": "string", + "description": "description of the property", + "examples": [ + "Age in seconds since 1970" + ] + }, + "type": { + "type": "string", + "enum": [ + "number", + "file-url", + "boolean", + "string", + "scene" + ], + "description": "data type expected on this input", + "examples": [ + "number", + "boolean" + ] + }, + "defaultValue": { + "description": "initial value for this input", + "type": ["string","number","integer","boolean"], + "examples": [ + "Dog", + true + ] + }, + "widget": { + "description": "custom widget to use instead of the default one determined from the data-type", + "anyOf": [ + { + "type": "object", + "additionalProperties": false, + "required": [ + "type" + ], + "properties": { + "type": { + "description": "type of the property", + "type": "string", + "enum": ["TextArea"] + }, + "minHeight": { + "description": "minimum Height of the textarea", + "type": "integer", + "minimum": 1 + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": [ + "type", + "structure" + ], + "properties": { + "type": { + "description": "type of the property", + "type": "string", + "enum": ["SelectBox"] + }, + "structure": { + "type": "array", + "minItems": 1, + "items": { + "type":"object", + "additionalProperties": false, + "required": [ + "key", + "label" + ], + "properties": { + "key": { + "type": ["string","boolean","number"] + }, + "label": { + "type": "string" + } + }, + "examples": [ + [ + { "key": "rat", "label": "The Rat"}, + { "key": "dog", "label": "Bello the Dog"} + ] + ] + } + } + } + } + ] + } + } + } + }, + "output": { + "type": "array", + "description": "definition of the outputs of this node", + "items": { + "type": "object", + "description": "all the ouptut produced by this node", + "additionalProperties": false, + "required": [ + "key", + "label", + "description", + "type", + "defaultValue" + ], + "properties": { + "key": { + "type": "string", + "pattern": "^[_a-z0-9]+", + "description": "unique identifier for this output property", + "examples": [ + "age" + ] + }, + "label": { + "type": "string", + "description": "short name for the property", + "examples": [ + "Age" + ] + }, + "description": { + "type": "string", + "description": "description of the property", + "examples": [ + "Age in seconds since 1970" + ] + }, + "type": { + "type": "string", + "enum": [ + "number", + "file-url", + "boolean", + "string", + "scene" + ], + "description": "data type expected on this output", + "examples": [ + "number", + "boolean" + ] + } + } + } + } + } +} From 013f76a01993d588617e645f19ee5af09cd425fc Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 13 Jun 2018 11:54:30 +0200 Subject: [PATCH 004/127] renamed --- .../source/resource/qxapp/node-config.json | 271 ------------------ 1 file changed, 271 deletions(-) delete mode 100644 services/web/client/source/resource/qxapp/node-config.json diff --git a/services/web/client/source/resource/qxapp/node-config.json b/services/web/client/source/resource/qxapp/node-config.json deleted file mode 100644 index 75addf451dd..00000000000 --- a/services/web/client/source/resource/qxapp/node-config.json +++ /dev/null @@ -1,271 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "simcore node", - "description": "Description of a simcore node 'class' with input and output", - "type": "object", - "additionalProperties": false, - "required": [ - "name", - "tag", - "description", - "authors", - "contact", - "input", - "output" - ], - "properties": { - "name": { - "type": "string", - "description": "distinctive name for the node based on the docker registry path", - "pattern": "^(service)/(computational|dynamic)/([^\\s/])$", - "examples": [ - "service/computational/sleeper", - "service/dynamic/3dviewer" - ] - }, - "tag": { - "type": "string", - "description": "semantic version number", - "pattern": "^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){2}(-(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*)(\\.(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*))*)?(\\+[-\\da-zA-Z]+(\\.[-\\da-zA-Z-]+)*)?$", - "examples": [ - "1.0.0", - "0.0.1" - ] - }, - "description": { - "type": "string", - "description": "human readable description of the purpose of the node", - "examples": [ - "Our best node type", - "The mother of all nodes, makes your numbers shine!" - ] - }, - "authors": { - "type": "array", - "items": { - "type": "object", - "required": ["name", "email"], - "additionalProperties": false, - "properties": { - "name": { - "type": "string", - "description": "Name of the author", - "examples": [ - "Sun Bak", - "Delenn" - ] - }, - "email": { - "description": "Email address", - "type": "string", - "pattern": "^[^\\s@]+@[^\\s@.]+(\\.[^\\s@]+)+$", - "examples": [ - "sun@sense.eight", - "deleen@minbar.bab" - ] - }, - "affiliation": { - "description": "Affiliaton of the author", - "type": "string", - "examples": [ - "Sense8", - "Babylon 5" - ] - } - } - } - }, - "contact": { - "type": "string", - "description": "email to corespond to the authors about the node", - "examples": [ - "lab@net.flix" - ] - }, - "label": { - "type": "string", - "description": "how to represent the node in a list of nodes for example" - }, - "input": { - "type": "array", - "description": "definition of the inputs of this node", - "items": { - "type": "object", - "description": "all the input configurable for this service", - "additionalProperties": false, - "required": [ - "key", - "label", - "description", - "type", - "defaultValue" - ], - "properties": { - "key": { - "type": "string", - "pattern": "^[_a-z0-9]+", - "description": "unique identifier for this input property", - "examples": [ - "age" - ] - }, - "label": { - "type": "string", - "description": "short name for the property", - "examples": [ - "Age" - ] - }, - "description": { - "type": "string", - "description": "description of the property", - "examples": [ - "Age in seconds since 1970" - ] - }, - "type": { - "type": "string", - "enum": [ - "number", - "file-url", - "boolean", - "string", - "scene" - ], - "description": "data type expected on this input", - "examples": [ - "number", - "boolean" - ] - }, - "defaultValue": { - "description": "initial value for this input", - "type": ["string","number","integer","boolean"], - "examples": [ - "Dog", - true - ] - }, - "widget": { - "description": "custom widget to use instead of the default one determined from the data-type", - "anyOf": [ - { - "type": "object", - "additionalProperties": false, - "required": [ - "type" - ], - "properties": { - "type": { - "description": "type of the property", - "enum": ["TextArea"] - }, - "minHeight": { - "description": "minimum Height of the textarea", - "type": "integer", - "minimum": 1 - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "type", - "structure" - ], - "properties": { - "type": { - "description": "type of the property", - "enum": ["SelectBox"] - }, - "structure": { - "type": "array", - "minItems": 1, - "items": { - "type":"object", - "additionalProperties": false, - "required": [ - "key", - "label" - ], - "properties": { - "key": { - "type": ["string","boolean","number"] - }, - "label": { - "type": "string" - } - }, - "examples": [ - [ - { "key": "rat", "label": "The Rat"}, - { "key": "dog", "label": "Bello the Dog"} - ] - ] - } - } - } - } - ] - } - } - } - }, - "output": { - "type": "array", - "description": "definition of the outputs of this node", - "items": { - "type": "object", - "description": "all the ouptut produced by this node", - "additionalProperties": false, - "required": [ - "key", - "label", - "description", - "type", - "defaultValue" - ], - "properties": { - "key": { - "type": "string", - "pattern": "^[_a-z0-9]+", - "description": "unique identifier for this output property", - "examples": [ - "age" - ] - }, - "label": { - "type": "string", - "description": "short name for the property", - "examples": [ - "Age" - ] - }, - "description": { - "type": "string", - "description": "description of the property", - "examples": [ - "Age in seconds since 1970" - ] - }, - "type": { - "type": "string", - "enum": [ - "number", - "file-url", - "boolean", - "string", - "scene" - ], - "description": "data type expected on this output", - "examples": [ - "number", - "boolean" - ] - } - } - } - } - } -} From 1c9800f7730d23e43cf7240f0c1e6890b731a071 Mon Sep 17 00:00:00 2001 From: Manuel Guidon Date: Wed, 13 Jun 2018 13:42:45 +0200 Subject: [PATCH 005/127] Initial import of comp. services --- Makefile | 9 + services/adminer/README.md | 3 + services/db/README.md | 3 + services/docker-compose.yml | 39 ++ services/flower/README.md | 3 + services/rabbit/README.md | 3 + services/sidecar/Dockerfile | 18 + services/sidecar/Dockerfile-prod | 26 ++ services/sidecar/README.md | 31 ++ services/sidecar/requirements.txt | 7 + .../src/sidecar/__init__.py} | 0 services/sidecar/src/sidecar/sidecar.py | 365 ++++++++++++++++++ services/sidecar/src/sidecar/sidecar_utils.py | 82 ++++ .../README.md => sidecar/tests/__init__.py} | 0 services/sidecar/tests/test_sidecar.py | 3 + 15 files changed, 592 insertions(+) create mode 100644 services/adminer/README.md create mode 100644 services/db/README.md create mode 100644 services/flower/README.md create mode 100644 services/rabbit/README.md create mode 100644 services/sidecar/Dockerfile create mode 100644 services/sidecar/Dockerfile-prod create mode 100644 services/sidecar/README.md create mode 100644 services/sidecar/requirements.txt rename services/{computation/README.md => sidecar/src/sidecar/__init__.py} (100%) create mode 100644 services/sidecar/src/sidecar/sidecar.py create mode 100644 services/sidecar/src/sidecar/sidecar_utils.py rename services/{computation/test/README.md => sidecar/tests/__init__.py} (100%) create mode 100644 services/sidecar/tests/test_sidecar.py diff --git a/Makefile b/Makefile index ae1c825a2ec..38fc1c9bf11 100644 --- a/Makefile +++ b/Makefile @@ -6,6 +6,15 @@ PY_FILES = $(strip $(shell find services packages -iname '*.py')) export PYTHONPATH=${PWD}/packages/s3wrapper/src +build-debug: + docker-compose -f services/docker-compose.yml -f services/docker-compose.debug.yml build + +rebuild-debug: + docker-compose -f services/docker-compose.yml -f services/docker-compose.debug.yml build --no-cache + +up-debug: + docker-compose -f services/docker-compose.yml -f services/docker-compose.debug.yml up + build: docker-compose -f services/docker-compose.yml build diff --git a/services/adminer/README.md b/services/adminer/README.md new file mode 100644 index 00000000000..e5d11deae90 --- /dev/null +++ b/services/adminer/README.md @@ -0,0 +1,3 @@ +# Adminer + +Database management tool diff --git a/services/db/README.md b/services/db/README.md new file mode 100644 index 00000000000..e326cbd71c2 --- /dev/null +++ b/services/db/README.md @@ -0,0 +1,3 @@ +# Db + +Posgtres database diff --git a/services/docker-compose.yml b/services/docker-compose.yml index 22bab5ee4f8..faaebb786d2 100644 --- a/services/docker-compose.yml +++ b/services/docker-compose.yml @@ -32,3 +32,42 @@ services: - DIRECTOR_PORT=8001 - SIMCORE_WEB_CONFIG=production #command: ["python", "server.py"] + + #------------comp. backend------------------------------------------- + rabbit: + image: rabbitmq:3-management + environment: + - RABBITMQ_DEFAULT_USER=${RABBITMQ_USER} + - RABBITMQ_DEFAULT_PASS=${RABBITMQ_PASSWORD} + ports: + - "15672:15672" + flower: + image: ondrejit/flower:latest + command: --broker=amqp://${RABBITMQ_USER}:${RABBITMQ_PASSWORD}@rabbit:5672 + ports: + - 5555:5555 + depends_on: + - rabbit + postgres: + restart: always + image: postgres:10 + environment: + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - POSTGRES_DB=${POSTGRES_DB} + volumes: + - postgres:/var/lib/postgresql/data + ports: + - "5432:5432" + adminer: + image: adminer + restart: always + ports: + - 18080:8080 + depends_on: + - postgres +volumes: + input: + output: + log: + postgres: diff --git a/services/flower/README.md b/services/flower/README.md new file mode 100644 index 00000000000..a33480e9dd6 --- /dev/null +++ b/services/flower/README.md @@ -0,0 +1,3 @@ +# Flower + +Celery management tool diff --git a/services/rabbit/README.md b/services/rabbit/README.md new file mode 100644 index 00000000000..c7b9e6c77bf --- /dev/null +++ b/services/rabbit/README.md @@ -0,0 +1,3 @@ +# Rabbit + +Message queue for celery and pub/sub diff --git a/services/sidecar/Dockerfile b/services/sidecar/Dockerfile new file mode 100644 index 00000000000..025c9094e99 --- /dev/null +++ b/services/sidecar/Dockerfile @@ -0,0 +1,18 @@ +FROM python:3.6-alpine +LABEL maintainer="Manuel Guidon /etc/timezone + +# NO clue why this does not work without explicitly specifying +ENV PYTHONPATH="/work/packages/simcore-sdk/src:/work/packages/s3wrapper/src" +ENTRYPOINT celery -A sidecar worker -c 2 --loglevel=info diff --git a/services/sidecar/Dockerfile-prod b/services/sidecar/Dockerfile-prod new file mode 100644 index 00000000000..ffcd8dc3f8f --- /dev/null +++ b/services/sidecar/Dockerfile-prod @@ -0,0 +1,26 @@ +FROM continuumio/miniconda3 +LABEL maintainer="Manuel Guidon @ jsonld + + The dictionary is dumped to input.json, files are dumped + as port['key']. Both end up in /input/ of the container + """ + _input = self._task.input + _LOGGER.debug('Input parsing for %s and node %s from container', self._task.pipeline_id, self._task.internal_id) + _LOGGER.debug(_input) + + input_ports = dict() + for port in _input: + _LOGGER.debug(port) + self._process_task_input(port, input_ports) + + #dump json file + if input_ports: + file_name = os.path.join(self._executor.in_dir, 'input.json') + with open(file_name, 'w') as f: + json.dump(input_ports, f) + + def _pull_image(self): + self._docker.client.login(registry=self._docker.registry, + username=self._docker.registry_user, password=self._docker.registry_pwd) + + self._docker.client.images.pull(self._docker.image_name, tag=self._docker.image_tag) + + def _bg_job(self, task, log_file): + connection = pika.BlockingConnection(self._pika.parameters) + + channel = connection.channel() + channel.exchange_declare(exchange=self._pika.log_channel, exchange_type='fanout') + channel.exchange_declare(exchange=self._pika.progress_channel, exchange_type='fanout') + + with open(log_file) as file_: + # Go to the end of file + file_.seek(0,2) + while self._executor.run_pool: + curr_position = file_.tell() + line = file_.readline() + if not line: + file_.seek(curr_position) + time.sleep(1) + else: + clean_line = line.strip() + if clean_line.lower().startswith("[progress]"): + progress = clean_line.lower().lstrip("[progress]").rstrip("%").strip() + prog_data = {"Channel" : "Progress", "Node": task.internal_id, "Progress" : progress} + prog_body = json.dumps(prog_data) + channel.basic_publish(exchange=self._pika.progress_channel, routing_key='', body=prog_body) + else: + log_data = {"Channel" : "Log", "Node": task.internal_id, "Message" : clean_line} + log_body = json.dumps(log_data) + channel.basic_publish(exchange=self._pika.log_channel, routing_key='', body=log_body) + + + connection.close() + + def _process_task_output(self): + """ There will be some files in the /output + + - Maybe a output.json (should contain key value for simple things) + - other files: should be named by the key in the output port + + Files will be pushed to S3 with reference in db. output.json will be parsed + and the db updated + """ + directory = self._executor.out_dir + if not os.path.exists(directory): + return + try: + for root, _dirs, files in os.walk(directory): + for name in files: + filepath = os.path.join(root, name) + # the name should match what is in the db! + + if name == 'output.json': + _LOGGER.debug("POSTRO FOUND output.json") + # parse and compare/update with the tasks output ports from db + output_ports = dict() + with open(filepath) as f: + output_ports = json.load(f) + task_outputs = self._task.output + for to in task_outputs: + if to['key'] in output_ports.keys(): + to['value'] = output_ports[to['key']] + _LOGGER.debug("POSTRPO to['value]' becomes %s", output_ports[to['key']]) + flag_modified(self._task, "output") + self._db.session.commit() + else: + object_name = str(self._task.pipeline_id) + "/" + self._task.node_id + "/" + name + success = False + ntry = 3 + trial = 0 + while not success and trial < ntry: + _LOGGER.debug("POSTRO pushes to S3 %s try %s from %s", object_name, ntry, trial) + success = self._s3.client.upload_file(self._s3.bucket, object_name, filepath) + trial = trial + 1 + + except (OSError, IOError) as _e: + logging.exception("Could not process output") + + def _process_task_log(self): + """ There will be some files in the /log + + - put them all into S3 /log + """ + directory = self._executor.log_dir + if os.path.exists(directory): + for root, _dirs, files in os.walk(directory): + for name in files: + filepath = os.path.join(root, name) + object_name = str(self._task.pipeline_id) + "/" + self._task.node_id + "/log/" + name + if not self._s3.client.upload_file(self._s3.bucket, object_name, filepath): + _LOGGER.error("Error uploading file to S3") + + def initialize(self, task): + self._task = task + self._docker.image_name = task.image['name'] + self._docker.image_tag = task.image['tag'] + self._executor.in_dir = os.path.join("/", "input", task.job_id) + self._executor.out_dir = os.path.join("/", "output", task.job_id) + self._executor.log_dir = os.path.join("/", "log", task.job_id) + + self._docker.env = ["INPUT_FOLDER=" + self._executor.in_dir, + "OUTPUT_FOLDER=" + self._executor.out_dir, + "LOG_FOLDER=" + self._executor.log_dir] + + + def preprocess(self): + _LOGGER.debug('Pre-Processing Pipeline %s and node %s from container', self._task.pipeline_id, self._task.internal_id) + self._create_shared_folders() + self._process_task_inputs() + self._pull_image() + + def process(self): + _LOGGER.debug('Processing Pipeline %s and node %s from container', self._task.pipeline_id, self._task.internal_id) + + self._executor.run_pool = True + + # touch output file + log_file = os.path.join(self._executor.log_dir, "log.dat") + + Path(log_file).touch() + fut = self._executor.pool.submit(self._bg_job, self._task, log_file) + + try: + docker_image = self._docker.image_name + ":" + self._docker.image_tag + self._docker.client.containers.run(docker_image, "run", + detach=False, remove=True, + volumes = {'services_input' : {'bind' : '/input'}, + 'services_output' : {'bind' : '/output'}, + 'services_log' : {'bind' : '/log'}}, + environment=self._docker.env) + except docker.errors.ContainerError as _e: + _LOGGER.error("Run container returned non zero exit code") + except docker.errors.ImageNotFound as _e: + _LOGGER.error("Run container: Image not found") + except docker.errors.APIError as _e: + _LOGGER.error("Run Container: Server returns error") + + + time.sleep(1) + self._executor.run_pool = False + while not fut.done(): + time.sleep(0.1) + + _LOGGER.debug('DONE Processing Pipeline %s and node %s from container', self._task.pipeline_id, self._task.internal_id) + + def run(self): + self.preprocess() + self.process() + self.postprocess() + + def postprocess(self): + _LOGGER.debug('Post-Processing Pipeline %s and node %s from container', self._task.pipeline_id, self._task.internal_id) + + self._process_task_output() + self._process_task_log() + + self._task.state = SUCCESS + self._db.session.add(self._task) + self._db.session.commit() + + _LOGGER.debug('DONE Post-Processing Pipeline %s and node %s from container', self._task.pipeline_id, self._task.internal_id) + + + def _is_node_ready(self, task, graph): + tasks = self._db.session.query(ComputationalTask).filter(and_( + ComputationalTask.node_id.in_(list(graph.predecessors(task.node_id))), + ComputationalTask.pipeline_id==task.pipeline_id)).all() + + _LOGGER.debug("TASK %s ready? Checking ..", task.internal_id) + for dep_task in tasks: + job_id = dep_task.job_id + if not job_id: + return False + else: + _LOGGER.debug("TASK %s DEPENDS ON %s with stat %s", task.internal_id, dep_task.internal_id,dep_task.state) + if not dep_task.state == SUCCESS: + return False + _LOGGER.debug("TASK %s is ready", task.internal_id) + + return True + + def inspect(self, celery_task, pipeline_id, node_id): + _pipeline = self._db.session.query(ComputationalPipeline).filter_by(pipeline_id=pipeline_id).one() + graph = _pipeline.execution_graph + next_task_nodes = [] + if node_id: + do_process = True + # find the for the current node_id, skip if there is already a job_id around + query = self._db.session.query(ComputationalTask).filter(and_(ComputationalTask.node_id==node_id, + ComputationalTask.pipeline_id==pipeline_id, ComputationalTask.job_id==None)) + # Use SELECT FOR UPDATE TO lock the row + query.with_for_update() + try: + task = query.one() + except exc.SQLAlchemyError as err: + _LOGGER.error(err) + # no result found, just return + return next_task_nodes + + if task == None: + return next_task_nodes + + # already done or running and happy + if task.job_id and (task.state == SUCCESS or task.state == RUNNING): + _LOGGER.debug("TASK %s ALREADY DONE OR RUNNING", task.internal_id) + do_process = False + + # Check if node's dependecies are there + if not self._is_node_ready(task, graph): + _LOGGER.debug("TASK %s NOT YET READY", task.internal_id) + do_process = False + + if do_process: + task.job_id = celery_task.request.id + self._db.session.add(task) + self._db.session.commit() + else: + return next_task_nodes + + task = self._db.session.query(ComputationalTask).filter( + and_(ComputationalTask.node_id==node_id,ComputationalTask.pipeline_id==pipeline_id)).one() + if task.job_id != celery_task.request.id: + # somebody else was faster + return next_task_nodes + + task.state = RUNNING + self._db.session.add(task) + self._db.session.commit() + self.initialize(task) + self.run() + + next_task_nodes = list(graph.successors(node_id)) + else: + next_task_nodes = find_entry_point(graph) + + celery_task.update_state(state=CSUCCESS) + + return next_task_nodes + +SIDECAR = Sidecar() +@celery.task(name='comp.task', bind=True) +def pipeline(self, pipeline_id, node_id=None): + next_task_nodes = SIDECAR.inspect(self, pipeline_id, node_id) + for _node_id in next_task_nodes: + _task = celery.send_task('comp.task', args=(pipeline_id, _node_id), kwargs={}) diff --git a/services/sidecar/src/sidecar/sidecar_utils.py b/services/sidecar/src/sidecar/sidecar_utils.py new file mode 100644 index 00000000000..cfa7b48fce3 --- /dev/null +++ b/services/sidecar/src/sidecar/sidecar_utils.py @@ -0,0 +1,82 @@ +import logging +import os +import shutil +import docker + +from simcore_sdk.config.docker import Config as docker_config +from simcore_sdk.config.s3 import Config as s3_config +from simcore_sdk.config.db import Config as db_config + +from s3wrapper.s3_client import S3Client +from simcore_sdk.config.rabbit import Config as rabbit_config + +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker + +from concurrent.futures import ThreadPoolExecutor + + +def delete_contents(folder): + for _fname in os.listdir(folder): + file_path = os.path.join(folder, _fname) + try: + if os.path.isfile(file_path): + os.unlink(file_path) + elif os.path.isdir(file_path): + shutil.rmtree(file_path) + except (OSError, IOError): + logging.exception("Could not delete files") + +def find_entry_point(g): + result = [] + for node in g.nodes: + if len(list(g.predecessors(node))) == 0: + result.append(node) + return result + +class DockerSettings(object): + # pylint: disable=too-many-instance-attributes + def __init__(self): + self._config = docker_config() + self.client = docker.from_env(version='auto') + self.registry = self._config.registry + self.registry_user = self._config.user + self.registry_pwd = self._config.pwd + self.image_name = "" + self.image_tag = "" + self.env = [] + + +class S3Settings(object): + def __init__(self): + self._config = s3_config() + self.client = S3Client(endpoint=self._config.endpoint, + access_key=self._config.access_key, secret_key=self._config.secret_key) + self.bucket = self._config.bucket_name + self.client.create_bucket(self.bucket) + + +class RabbitSettings(object): + def __init__(self): + self._pika = rabbit_config() + self.parameters = self._pika.parameters + self.log_channel = self._pika.log_channel + self.progress_channel = self._pika.progress_channel + +class DbSettings(object): + def __init__(self): + self._db_config = db_config() + self.db = create_engine(self._db_config.endpoint, client_encoding='utf8') + self.Session = sessionmaker(self.db) + self.session = self.Session() + +class ExecutorSettings(object): + def __init__(self): + # Pool + self.pool = ThreadPoolExecutor(1) + self.run_pool = False + + # shared folders + self.in_dir = "" + self.out_dir = "" + self.log_dir = "" \ No newline at end of file diff --git a/services/computation/test/README.md b/services/sidecar/tests/__init__.py similarity index 100% rename from services/computation/test/README.md rename to services/sidecar/tests/__init__.py diff --git a/services/sidecar/tests/test_sidecar.py b/services/sidecar/tests/test_sidecar.py new file mode 100644 index 00000000000..30ad98531a8 --- /dev/null +++ b/services/sidecar/tests/test_sidecar.py @@ -0,0 +1,3 @@ + +def test_imports(): + pass \ No newline at end of file From 7e2a2e3b4ed30553c5b9b97cc6b68151321c5577 Mon Sep 17 00:00:00 2001 From: Manuel Guidon Date: Wed, 13 Jun 2018 14:23:34 +0200 Subject: [PATCH 006/127] Adapt sidecar to dockerfile/compose layout --- services/docker-compose.debug.yml | 9 +++++++++ services/docker-compose.yml | 25 +++++++++++++++++++++++-- services/{db => postgres}/README.md | 0 services/sidecar/Dockerfile | 18 ++++++++++++------ 4 files changed, 44 insertions(+), 8 deletions(-) rename services/{db => postgres}/README.md (100%) diff --git a/services/docker-compose.debug.yml b/services/docker-compose.debug.yml index d95073da0d3..82d7c88f5d0 100644 --- a/services/docker-compose.debug.yml +++ b/services/docker-compose.debug.yml @@ -36,3 +36,12 @@ services: working_dir: /home/node/src entrypoint: /bin/bash command: -c "qx contrib update && qx contrib list && qx contrib install ITISFoundation/qx-osparc-theme && qx compile --watch" + + #------------comp. backend------------------------------------------- + sidecar: + image: services_sidecar:dev + build: + target: development + volumes: + - ./sidecar/src/sidecar:/work/sidecar + - ../packages:/work/packages diff --git a/services/docker-compose.yml b/services/docker-compose.yml index faaebb786d2..94830aeab7e 100644 --- a/services/docker-compose.yml +++ b/services/docker-compose.yml @@ -49,7 +49,6 @@ services: depends_on: - rabbit postgres: - restart: always image: postgres:10 environment: - POSTGRES_USER=${POSTGRES_USER} @@ -61,11 +60,33 @@ services: - "5432:5432" adminer: image: adminer - restart: always ports: - 18080:8080 depends_on: - postgres + sidecar: + build: + context: ./sidecar + target: production + volumes: + - input:/input + - output:/output + - log:/log + - /var/run/docker.sock:/var/run/docker.sock + ports: + - "8000:8000" + environment: + - PYTHONPATH=/work/packages + environment: + - RABBITMQ_USER=${RABBITMQ_USER} + - RABBITMQ_PASSWORD=${RABBITMQ_PASSWORD} + - S3_ENDPOINT=${S3_ENDPOINT} + - S3_ACCESS_KEY=${S3_ACCESS_KEY} + - S3_SECRET_KEY=${S3_SECRET_KEY} + - S3_BUCKET_NAME=${S3_BUCKET_NAME} + depends_on: + - rabbit + volumes: input: output: diff --git a/services/db/README.md b/services/postgres/README.md similarity index 100% rename from services/db/README.md rename to services/postgres/README.md diff --git a/services/sidecar/Dockerfile b/services/sidecar/Dockerfile index 025c9094e99..3b78604b6d3 100644 --- a/services/sidecar/Dockerfile +++ b/services/sidecar/Dockerfile @@ -1,18 +1,24 @@ -FROM python:3.6-alpine +FROM python:3.6-alpine as common + LABEL maintainer="Manuel Guidon /etc/timezone - # NO clue why this does not work without explicitly specifying + +FROM common as development + +ENV PYTHONPATH="/work/packages/simcore-sdk/src:/work/packages/s3wrapper/src" +ENTRYPOINT celery -A sidecar worker -c 2 --loglevel=info + +FROM common as production + ENV PYTHONPATH="/work/packages/simcore-sdk/src:/work/packages/s3wrapper/src" ENTRYPOINT celery -A sidecar worker -c 2 --loglevel=info From ca2a7adfdd5faa46ff50d95c117dbb4214805095 Mon Sep 17 00:00:00 2001 From: Manuel Guidon Date: Wed, 13 Jun 2018 14:58:17 +0200 Subject: [PATCH 007/127] fix requirements --- services/sidecar/Dockerfile | 18 +++++++++++++---- services/sidecar/Dockerfile-prod | 26 ------------------------- services/sidecar/README.md | 32 ++----------------------------- services/sidecar/requirements.txt | 10 +++++----- 4 files changed, 21 insertions(+), 65 deletions(-) delete mode 100644 services/sidecar/Dockerfile-prod diff --git a/services/sidecar/Dockerfile b/services/sidecar/Dockerfile index 3b78604b6d3..42cd05bad9f 100644 --- a/services/sidecar/Dockerfile +++ b/services/sidecar/Dockerfile @@ -2,23 +2,33 @@ FROM python:3.6-alpine as common LABEL maintainer="Manuel Guidon Date: Wed, 13 Jun 2018 15:04:27 +0200 Subject: [PATCH 008/127] added key property --- .../web/client/source/resource/qxapp/node-meta.json | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/services/web/client/source/resource/qxapp/node-meta.json b/services/web/client/source/resource/qxapp/node-meta.json index 35e8b0c2489..10d93c199b3 100644 --- a/services/web/client/source/resource/qxapp/node-meta.json +++ b/services/web/client/source/resource/qxapp/node-meta.json @@ -5,6 +5,7 @@ "type": "object", "additionalProperties": false, "required": [ + "key", "name", "tag", "description", @@ -14,7 +15,7 @@ "output" ], "properties": { - "name": { + "key": { "type": "string", "description": "distinctive name for the node based on the docker registry path", "pattern": "^(service)/(computational|dynamic)/([^\\s/])$", @@ -32,6 +33,13 @@ "0.0.1" ] }, + "name": { + "type": "string", + "description": "short, humean readable name for the node", + "examples": [ + "Fast Counter" + ] + } "description": { "type": "string", "description": "human readable description of the purpose of the node", @@ -58,7 +66,7 @@ "email": { "description": "Email address", "type": "string", - "pattern": "^[^\\s@]+@[^\\s@.]+(\\.[^\\s@]+)+$", + "format": "email", "examples": [ "sun@sense.eight", "deleen@minbar.bab" @@ -77,6 +85,7 @@ }, "contact": { "type": "string", + "format": "email", "description": "email to corespond to the authors about the node", "examples": [ "lab@net.flix" From b8f4bb783994d44faf87f153ff57fa101bc0a711 Mon Sep 17 00:00:00 2001 From: Manuel Guidon Date: Wed, 13 Jun 2018 15:49:16 +0200 Subject: [PATCH 009/127] Add server parts needed for comp. backend --- services/director/Dockerfile | 2 + services/docker-compose.debug.yml | 3 +- services/docker-compose.yml | 15 +-- services/sidecar/src/sidecar/sidecar.py | 35 +++--- services/sidecar/src/sidecar/sidecar_utils.py | 20 ++- services/web/server/Dockerfile | 2 + services/web/server/requirements/common.txt | 12 +- services/web/server/source/async_sio.py | 2 + .../web/server/source/comp_backend_api.py | 119 ++++++++++++++++++ .../web/server/source/comp_backend_setup.py | 45 +++++++ .../web/server/source/comp_backend_worker.py | 6 + services/web/server/source/config.py | 3 +- services/web/server/source/director_proxy.py | 2 +- .../source/interactive_services_manager.py | 1 + services/web/server/source/registry_api.py | 26 ++++ services/web/server/source/server.py | 33 +++-- 16 files changed, 275 insertions(+), 51 deletions(-) create mode 100644 services/web/server/source/comp_backend_api.py create mode 100644 services/web/server/source/comp_backend_setup.py create mode 100644 services/web/server/source/comp_backend_worker.py create mode 100644 services/web/server/source/registry_api.py diff --git a/services/director/Dockerfile b/services/director/Dockerfile index 2927b35aaae..04442da4dc2 100644 --- a/services/director/Dockerfile +++ b/services/director/Dockerfile @@ -45,6 +45,8 @@ ENV FLASK_DEBUG=1 VOLUME /home/app/source +USER root + CMD ["/bin/sh", "./boot.sh"] # --------------------------Production stage ------------------- diff --git a/services/docker-compose.debug.yml b/services/docker-compose.debug.yml index 82d7c88f5d0..7d0d23201a2 100644 --- a/services/docker-compose.debug.yml +++ b/services/docker-compose.debug.yml @@ -23,7 +23,8 @@ services: - './web/server/source:/usr/src/source' - './web/client/source-output:/usr/src/source/client' - './web/server/test:/usr/src/test' - # TODO: do test go in production or development or debug?? + - ../packages:/usr/src/packages + # TODO: do test go in production or development or debug?? #depends_on: # - build-qx #-------------------------------------------------------------------- diff --git a/services/docker-compose.yml b/services/docker-compose.yml index 94830aeab7e..6fc5bbe0ef9 100644 --- a/services/docker-compose.yml +++ b/services/docker-compose.yml @@ -31,6 +31,7 @@ services: - DIRECTOR_HOST=director - DIRECTOR_PORT=8001 - SIMCORE_WEB_CONFIG=production + - PYTHONPATH=/usr/src/packages/simcore-sdk/src #command: ["python", "server.py"] #------------comp. backend------------------------------------------- @@ -41,13 +42,13 @@ services: - RABBITMQ_DEFAULT_PASS=${RABBITMQ_PASSWORD} ports: - "15672:15672" - flower: - image: ondrejit/flower:latest - command: --broker=amqp://${RABBITMQ_USER}:${RABBITMQ_PASSWORD}@rabbit:5672 - ports: - - 5555:5555 - depends_on: - - rabbit +# flower: +# image: ondrejit/flower:latest +# command: --broker=amqp://${RABBITMQ_USER}:${RABBITMQ_PASSWORD}@rabbit:5672 +# ports: +# - 5555:5555 +# depends_on: +# - rabbit postgres: image: postgres:10 environment: diff --git a/services/sidecar/src/sidecar/sidecar.py b/services/sidecar/src/sidecar/sidecar.py index 6a61dec4fc5..f32213bbb1b 100644 --- a/services/sidecar/src/sidecar/sidecar.py +++ b/services/sidecar/src/sidecar/sidecar.py @@ -12,8 +12,9 @@ from sqlalchemy import and_, exc from sqlalchemy.orm.attributes import flag_modified -from sidecar_utils import (DbSettings, DockerSettings, RabbitSettings, - S3Settings, ExecutorSettings, delete_contents, find_entry_point) +from sidecar_utils import (DbSettings, DockerSettings, ExecutorSettings, + RabbitSettings, S3Settings, delete_contents, + find_entry_point) from simcore_sdk.config.rabbit import Config as rabbit_config from simcore_sdk.models.pipeline_models import (RUNNING, SUCCESS, ComputationalPipeline, @@ -80,7 +81,7 @@ def _process_task_input(self, port, input_ports): input_ports[port_name] = None else: _LOGGER.debug('Fetch DB %s', port_value) - other_node_id = port_value.split(".")[1] + other_node_id = port_value.split(".")[1] other_output_port_id = port_value.split(".")[2] other_task = self._db.session.query(ComputationalTask).filter(and_(ComputationalTask.node_id==other_node_id, ComputationalTask.pipeline_id==self._task.pipeline_id)).one() @@ -118,7 +119,7 @@ def _process_task_inputs(self): def _pull_image(self): self._docker.client.login(registry=self._docker.registry, username=self._docker.registry_user, password=self._docker.registry_pwd) - + self._docker.client.images.pull(self._docker.image_name, tag=self._docker.image_tag) def _bg_job(self, task, log_file): @@ -154,7 +155,7 @@ def _bg_job(self, task, log_file): def _process_task_output(self): """ There will be some files in the /output - + - Maybe a output.json (should contain key value for simple things) - other files: should be named by the key in the output port @@ -173,7 +174,7 @@ def _process_task_output(self): if name == 'output.json': _LOGGER.debug("POSTRO FOUND output.json") # parse and compare/update with the tasks output ports from db - output_ports = dict() + output_ports = dict() with open(filepath) as f: output_ports = json.load(f) task_outputs = self._task.output @@ -198,7 +199,7 @@ def _process_task_output(self): def _process_task_log(self): """ There will be some files in the /log - + - put them all into S3 /log """ directory = self._executor.log_dir @@ -228,7 +229,7 @@ def preprocess(self): self._create_shared_folders() self._process_task_inputs() self._pull_image() - + def process(self): _LOGGER.debug('Processing Pipeline %s and node %s from container', self._task.pipeline_id, self._task.internal_id) @@ -241,10 +242,10 @@ def process(self): fut = self._executor.pool.submit(self._bg_job, self._task, log_file) try: - docker_image = self._docker.image_name + ":" + self._docker.image_tag - self._docker.client.containers.run(docker_image, "run", + docker_image = self._docker.image_name + ":" + self._docker.image_tag + self._docker.client.containers.run(docker_image, "run", detach=False, remove=True, - volumes = {'services_input' : {'bind' : '/input'}, + volumes = {'services_input' : {'bind' : '/input'}, 'services_output' : {'bind' : '/output'}, 'services_log' : {'bind' : '/log'}}, environment=self._docker.env) @@ -270,7 +271,7 @@ def run(self): def postprocess(self): _LOGGER.debug('Post-Processing Pipeline %s and node %s from container', self._task.pipeline_id, self._task.internal_id) - + self._process_task_output() self._process_task_log() @@ -279,7 +280,7 @@ def postprocess(self): self._db.session.commit() _LOGGER.debug('DONE Post-Processing Pipeline %s and node %s from container', self._task.pipeline_id, self._task.internal_id) - + def _is_node_ready(self, task, graph): tasks = self._db.session.query(ComputationalTask).filter(and_( @@ -313,13 +314,13 @@ def inspect(self, celery_task, pipeline_id, node_id): try: task = query.one() except exc.SQLAlchemyError as err: - _LOGGER.error(err) + _LOGGER.error(err) # no result found, just return return next_task_nodes if task == None: return next_task_nodes - + # already done or running and happy if task.job_id and (task.state == SUCCESS or task.state == RUNNING): _LOGGER.debug("TASK %s ALREADY DONE OR RUNNING", task.internal_id) @@ -330,7 +331,7 @@ def inspect(self, celery_task, pipeline_id, node_id): _LOGGER.debug("TASK %s NOT YET READY", task.internal_id) do_process = False - if do_process: + if do_process: task.job_id = celery_task.request.id self._db.session.add(task) self._db.session.commit() @@ -354,7 +355,7 @@ def inspect(self, celery_task, pipeline_id, node_id): next_task_nodes = find_entry_point(graph) celery_task.update_state(state=CSUCCESS) - + return next_task_nodes SIDECAR = Sidecar() diff --git a/services/sidecar/src/sidecar/sidecar_utils.py b/services/sidecar/src/sidecar/sidecar_utils.py index cfa7b48fce3..c132bca9f87 100644 --- a/services/sidecar/src/sidecar/sidecar_utils.py +++ b/services/sidecar/src/sidecar/sidecar_utils.py @@ -1,19 +1,17 @@ import logging import os import shutil -import docker - -from simcore_sdk.config.docker import Config as docker_config -from simcore_sdk.config.s3 import Config as s3_config -from simcore_sdk.config.db import Config as db_config - -from s3wrapper.s3_client import S3Client -from simcore_sdk.config.rabbit import Config as rabbit_config +from concurrent.futures import ThreadPoolExecutor +import docker from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker -from concurrent.futures import ThreadPoolExecutor +from s3wrapper.s3_client import S3Client +from simcore_sdk.config.db import Config as db_config +from simcore_sdk.config.docker import Config as docker_config +from simcore_sdk.config.rabbit import Config as rabbit_config +from simcore_sdk.config.s3 import Config as s3_config def delete_contents(folder): @@ -22,7 +20,7 @@ def delete_contents(folder): try: if os.path.isfile(file_path): os.unlink(file_path) - elif os.path.isdir(file_path): + elif os.path.isdir(file_path): shutil.rmtree(file_path) except (OSError, IOError): logging.exception("Could not delete files") @@ -79,4 +77,4 @@ def __init__(self): # shared folders self.in_dir = "" self.out_dir = "" - self.log_dir = "" \ No newline at end of file + self.log_dir = "" diff --git a/services/web/server/Dockerfile b/services/web/server/Dockerfile index 0ee8e22303d..70b7c60fb5d 100644 --- a/services/web/server/Dockerfile +++ b/services/web/server/Dockerfile @@ -48,6 +48,8 @@ FROM python:3.6-alpine as common-py-stage ARG server_dir=web/server +RUN apk add --no-cache postgresql-dev gcc libc-dev + WORKDIR /usr/src/source ENV SIMCORE_WEB_OUTDIR=$PWD/client diff --git a/services/web/server/requirements/common.txt b/services/web/server/requirements/common.txt index 5d711d67043..429f13ff167 100644 --- a/services/web/server/requirements/common.txt +++ b/services/web/server/requirements/common.txt @@ -1,3 +1,9 @@ -aiohttp -python-socketio -requests \ No newline at end of file +aio-pika==2.8.3 +aiohttp==3.3.2 +aiohttp-swagger==1.0.5 +celery==4.2.0 +networkx==2.1 +psycopg2==2.7.4 +python-socketio==1.9.0 +requests==2.19.0 +sqlalchemy==1.2.8 diff --git a/services/web/server/source/async_sio.py b/services/web/server/source/async_sio.py index 008f7e50f80..272ed7367a0 100644 --- a/services/web/server/source/async_sio.py +++ b/services/web/server/source/async_sio.py @@ -10,7 +10,9 @@ import logging + import socketio + import interactive_services_manager _LOGGER = logging.getLogger(__file__) diff --git a/services/web/server/source/comp_backend_api.py b/services/web/server/source/comp_backend_api.py new file mode 100644 index 00000000000..6216e970556 --- /dev/null +++ b/services/web/server/source/comp_backend_api.py @@ -0,0 +1,119 @@ +""" + Uses socketio and aiohtttp framework +""" +# pylint: disable=C0103 + +import datetime +import json + +import async_timeout +from aiohttp import web +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker + +from comp_backend_worker import celery +from simcore_sdk.config.db import Config as db_config +from simcore_sdk.models.pipeline_models import (Base, ComputationalPipeline, + ComputationalTask) + +# db config +db_config = db_config() +db = create_engine(db_config.endpoint, client_encoding='utf8') +Session = sessionmaker(db) +db_session = Session() +Base.metadata.create_all(db) + +comp_backend_routes = web.RouteTableDef() + +async def async_request(method, session, url, data=None, timeout=10): + async with async_timeout.timeout(timeout): + if method == "GET": + async with session.get(url) as response: + return await response.json() + elif method == "POST": + async with session.post(url, json=data) as response: + return await response.json() + +@comp_backend_routes.post('/start_pipeline') +async def start_pipeline(request): + """ + --- + description: This end-point starts a computational pipeline. + tags: + - computational backend + produces: + - application/json + responses: + "200": + description: successful operation. Return "pong" text + "405": + description: invalid HTTP Method + """ + + request_data = await request.json() + + _id = request_data['pipeline_mockup_id'] + + with open('mockup.json') as f: + mockup = json.load(f) + + nodes = mockup['nodes'] + links = mockup['links'] + + dag_adjacency_list = dict() + tasks = dict() + for node in nodes: + node_id = node['uuid'] + # find connections + successor_nodes = [] + task = {} + task["input"] = node["inputs"] + task["output"] = node["outputs"] + task["image"] = { "name" : "masu.speag.com/simcore/services/comp/sleeper", + "tag" : "1.0"} + + for link in links: + if link['node1Id'] == node_id: + successor_node_id = link['node2Id'] + if successor_node_id not in successor_nodes: + successor_nodes.append(successor_node_id) + if link['node2Id'] == node_id: + # there might be something coming in + predecessor_node_id = link['node1Id'] + output_port = link['port1Id'] + input_port = link['port2Id'] + # we use predecessor_node_id.output_port as id fo the input + for t in task['input']: + if t['key'] == input_port: + t['value'] = 'link.' + predecessor_node_id + "." + output_port + + + if len(successor_nodes): + dag_adjacency_list[node_id] = successor_nodes + tasks[node_id] = task + + pipeline = ComputationalPipeline(dag_adjacency_list=dag_adjacency_list, state=0) + + db_session.add(pipeline) + db_session.flush() + + pipeline_id = pipeline.pipeline_id + pipeline_name = "mockup" + internal_id = 1 + + for node_id in tasks: + task = tasks[node_id] + new_task = ComputationalTask(pipeline_id=pipeline_id, node_id=node_id, internal_id=internal_id, image=task['image'], + input=task['input'], output=task['output'], submit=datetime.datetime.utcnow()) + internal_id = internal_id+1 + db_session.add(new_task) + + db_session.commit() + + task = celery.send_task('comp.task', args=(pipeline_id,), kwargs={}) + + response = {} + response['pipeline_name'] = pipeline_name + response['pipeline_id'] = str(pipeline_id) + + return web.json_response(response) diff --git a/services/web/server/source/comp_backend_setup.py b/services/web/server/source/comp_backend_setup.py new file mode 100644 index 00000000000..dbfee7801b5 --- /dev/null +++ b/services/web/server/source/comp_backend_setup.py @@ -0,0 +1,45 @@ +import json + +import aio_pika + +from async_sio import SIO +from simcore_sdk.config.rabbit import Config as rabbit_config + +# rabbit config +rabbit_config = rabbit_config() +pika_log_channel = rabbit_config.log_channel +pika_progress_channel = rabbit_config.progress_channel +rabbit_broker = rabbit_config.broker + +async def on_message(message: aio_pika.IncomingMessage): + with message.process(): + data = json.loads(message.body) + #print("[x] %r" % data) + if data["Channel"] == "Log": + await SIO.emit("logger", data = json.dumps(data)) + elif data["Channel"] == "Progress": + #print(data["Progress"]) + await SIO.emit("progress", data = json.dumps(data)) + +async def subscribe(): + connection = await aio_pika.connect(rabbit_broker, connection_attempts=100) + channel = await connection.channel() + await channel.set_qos(prefetch_count=1) + + logs_exchange = await channel.declare_exchange( + pika_log_channel, aio_pika.ExchangeType.FANOUT + ) + + progress_exchange = await channel.declare_exchange( + pika_progress_channel, aio_pika.ExchangeType.FANOUT + ) + + # Declaring queue + queue = await channel.declare_queue(exclusive=True) + + # Binding the queue to the exchange + await queue.bind(logs_exchange) + await queue.bind(progress_exchange) + + # Start listening the queue with name 'task_queue' + await queue.consume(on_message) diff --git a/services/web/server/source/comp_backend_worker.py b/services/web/server/source/comp_backend_worker.py new file mode 100644 index 00000000000..0f544844930 --- /dev/null +++ b/services/web/server/source/comp_backend_worker.py @@ -0,0 +1,6 @@ +from celery import Celery + +from simcore_sdk.config.rabbit import Config as rabbit_config + +rc = rabbit_config() +celery = Celery(rc.name, broker=rc.broker, backend=rc.backend) diff --git a/services/web/server/source/config.py b/services/web/server/source/config.py index de3a1993178..3a126c7dfc0 100644 --- a/services/web/server/source/config.py +++ b/services/web/server/source/config.py @@ -5,9 +5,10 @@ # pylint: disable=C0111 # pylint: disable=cyclic-import +import logging import os import sys -import logging + import utils _CDIR = os.path.dirname(sys.argv[0] if __name__ == '__main__' else __file__) diff --git a/services/web/server/source/director_proxy.py b/services/web/server/source/director_proxy.py index 4d35e449999..fe1f946258e 100644 --- a/services/web/server/source/director_proxy.py +++ b/services/web/server/source/director_proxy.py @@ -2,10 +2,10 @@ This module is responsible for communicating with the director entity """ +import logging # pylint: disable=C0111 import os import re -import logging from requests import RequestException, Session diff --git a/services/web/server/source/interactive_services_manager.py b/services/web/server/source/interactive_services_manager.py index 535e49b75c9..6d44bd49a2a 100644 --- a/services/web/server/source/interactive_services_manager.py +++ b/services/web/server/source/interactive_services_manager.py @@ -4,6 +4,7 @@ # pylint: disable=W0703 # pylint: disable=C0111 import logging + import director_proxy _LOGGER = logging.getLogger(__file__) diff --git a/services/web/server/source/registry_api.py b/services/web/server/source/registry_api.py new file mode 100644 index 00000000000..b0bb45229cb --- /dev/null +++ b/services/web/server/source/registry_api.py @@ -0,0 +1,26 @@ +""" + Uses socketio and aiohtttp framework +""" +# pylint: disable=C0103 + +from aiohttp import web + +registry_routes = web.RouteTableDef() + +@registry_routes.get('/services') +async def services(request): + """ + --- + description: This end-point returns a list of computational services. + tags: + - service registry + produces: + - application/json + responses: + "200": + description: successful operation. Return "pong" text + "405": + description: invalid HTTP Method + """ + _a = request + return web.Response(text="This will be a list of comp. services") diff --git a/services/web/server/source/server.py b/services/web/server/source/server.py index dab12790898..c030b9196db 100644 --- a/services/web/server/source/server.py +++ b/services/web/server/source/server.py @@ -1,13 +1,18 @@ """ Uses socketio and aiohtttp framework """ -import os +import asyncio import logging +import os from aiohttp import web +from aiohttp_swagger import setup_swagger -from async_sio import SIO import config +from async_sio import SIO +from comp_backend_api import comp_backend_routes +from comp_backend_setup import subscribe +from registry_api import registry_routes CONFIG = config.CONFIG[os.environ.get('SIMCORE_WEB_CONFIG', 'default')] @@ -28,8 +33,8 @@ def create_app(args=()): client_dir = CONFIG.SIMCORE_CLIENT_OUTDIR - app = web.Application() - SIO.attach(app) + _app = web.Application() + SIO.attach(_app) # http requests handlers async def _index(request): @@ -41,16 +46,24 @@ async def _index(request): return web.Response(text=fhnd.read(), content_type='text/html') # TODO: check whether this can be done at once - app.router.add_static('/qxapp', os.path.join(client_dir, 'qxapp')) - app.router.add_static( + _app.router.add_static('/qxapp', os.path.join(client_dir, 'qxapp')) + _app.router.add_static( '/transpiled', os.path.join(client_dir, 'transpiled')) - app.router.add_static('/resource', os.path.join(client_dir, 'resource')) - app.router.add_get('/', _index) + _app.router.add_static('/resource', os.path.join(client_dir, 'resource')) + _app.router.add_get('/', _index) + + _app.router.add_routes(registry_routes) + _app.router.add_routes(comp_backend_routes) + + setup_swagger(_app) - return app + return _app if __name__ == '__main__': - web.run_app(create_app(), + app = create_app() + loop = asyncio.get_event_loop() + loop.create_task(subscribe()) + web.run_app(app, host=CONFIG.SIMCORE_WEB_HOSTNAME, port=CONFIG.SIMCORE_WEB_PORT) From ca84ccf34a440d7788fcf9a255b578a1c9aa0e83 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 13 Jun 2018 15:52:38 +0200 Subject: [PATCH 010/127] added initial Avj wrapper --- .../client/source/class/qxapp/wrappers/Ajv.js | 7081 +++++++++++++++++ .../{node-meta.json => node-meta-v0.0.1.json} | 2 +- 2 files changed, 7082 insertions(+), 1 deletion(-) create mode 100644 services/web/client/source/class/qxapp/wrappers/Ajv.js rename services/web/client/source/resource/qxapp/{node-meta.json => node-meta-v0.0.1.json} (99%) diff --git a/services/web/client/source/class/qxapp/wrappers/Ajv.js b/services/web/client/source/class/qxapp/wrappers/Ajv.js new file mode 100644 index 00000000000..16e80e5a333 --- /dev/null +++ b/services/web/client/source/class/qxapp/wrappers/Ajv.js @@ -0,0 +1,7081 @@ +/* ************************************************************************ + Copyright: 2018 ITIS Foundation + License: MIT + Authors: Tobi Oetiker + Utf8Check: äöü +************************************************************************ */ +/** + * A qooxdoo wrapper for Ajv + */ +qx.Class.define("qxapp.wrappers.Avj", { + extend: qx.core.Object, + construct: function(cfg) { + this.base(arguments); + this.__avj = new Ajv(cfg); + }, + members: { + __avj: null, + addSchema: function(schema) { + this.__avj.addSchema(schema); + return this; + }, + addFormat: function(format, def) { + this.__avj.addFormat(format, def); + return this; + }, + addKeyword: function(keyword, def) { + this.__avj.addKeyword(keyword, def); + return this; + }, + compile: function(schema) { + return this.__avj.compile(schema); + }, + validate: function(schema, data) { + return this.__avj.validate(schema, data); + }, + errors: function() { + return this.__avj.errors; + } + } +}); + + +// https://raw.githubusercontent.com/epoberezkin/ajv-dist/master/dist/ajv.bundle.js +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Ajv = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i; + // For the source: https://gist.github.com/dperini/729294 + // For test cases: https://mathiasbynens.be/demo/url-regex + // @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983. + // var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu; + var URL = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i; + var UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i; + var JSON_POINTER = /^(?:\/(?:[^~/]|~0|~1)*)*$/; + var JSON_POINTER_URI_FRAGMENT = /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i; + var RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/; + + + module.exports = formats; + + function formats(mode) { + mode = mode == 'full' ? 'full' : 'fast'; + return util.copy(formats[mode]); + } + + + formats.fast = { + // date: http://tools.ietf.org/html/rfc3339#section-5.6 + date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/, + // date-time: http://tools.ietf.org/html/rfc3339#section-5.6 + time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i, + 'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i, + // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js + uri: /^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i, + 'uri-reference': /^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i, + 'uri-template': URITEMPLATE, + url: URL, + // email (sources from jsen validator): + // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363 + // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation') + email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i, + hostname: HOSTNAME, + // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html + ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, + // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses + ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, + regex: regex, + // uuid: http://tools.ietf.org/html/rfc4122 + uuid: UUID, + // JSON-pointer: https://tools.ietf.org/html/rfc6901 + // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A + 'json-pointer': JSON_POINTER, + 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT, + // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00 + 'relative-json-pointer': RELATIVE_JSON_POINTER + }; + + + formats.full = { + date: date, + time: time, + 'date-time': date_time, + uri: uri, + 'uri-reference': URIREF, + 'uri-template': URITEMPLATE, + url: URL, + email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i, + hostname: hostname, + ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, + ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, + regex: regex, + uuid: UUID, + 'json-pointer': JSON_POINTER, + 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT, + 'relative-json-pointer': RELATIVE_JSON_POINTER + }; + + + function isLeapYear(year) { + // https://tools.ietf.org/html/rfc3339#appendix-C + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); + } + + + function date(str) { + // full-date from http://tools.ietf.org/html/rfc3339#section-5.6 + var matches = str.match(DATE); + if (!matches) return false; + + var year = +matches[1]; + var month = +matches[2]; + var day = +matches[3]; + + return month >= 1 && month <= 12 && day >= 1 && + day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]); + } + + + function time(str, full) { + var matches = str.match(TIME); + if (!matches) return false; + + var hour = matches[1]; + var minute = matches[2]; + var second = matches[3]; + var timeZone = matches[5]; + return ((hour <= 23 && minute <= 59 && second <= 59) || + (hour == 23 && minute == 59 && second == 60)) && + (!full || timeZone); + } + + + var DATE_TIME_SEPARATOR = /t|\s/i; + function date_time(str) { + // http://tools.ietf.org/html/rfc3339#section-5.6 + var dateTime = str.split(DATE_TIME_SEPARATOR); + return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true); + } + + + function hostname(str) { + // https://tools.ietf.org/html/rfc1034#section-3.5 + // https://tools.ietf.org/html/rfc1123#section-2 + return str.length <= 255 && HOSTNAME.test(str); + } + + + var NOT_URI_FRAGMENT = /\/|:/; + function uri(str) { + // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "." + return NOT_URI_FRAGMENT.test(str) && URI.test(str); + } + + + var Z_ANCHOR = /[^\\]\\Z/; + function regex(str) { + if (Z_ANCHOR.test(str)) return false; + try { + new RegExp(str); + return true; + } catch(e) { + return false; + } + } + + },{"./util":10}],5:[function(require,module,exports){ + 'use strict'; + + var resolve = require('./resolve') + , util = require('./util') + , errorClasses = require('./error_classes') + , stableStringify = require('fast-json-stable-stringify'); + + var validateGenerator = require('../dotjs/validate'); + + /** + * Functions below are used inside compiled validations function + */ + + var ucs2length = util.ucs2length; + var equal = require('fast-deep-equal'); + + // this error is thrown by async schemas to return validation errors via exception + var ValidationError = errorClasses.Validation; + + module.exports = compile; + + + /** + * Compiles schema to validation function + * @this Ajv + * @param {Object} schema schema object + * @param {Object} root object with information about the root schema for this schema + * @param {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution + * @param {String} baseId base ID for IDs in the schema + * @return {Function} validation function + */ + function compile(schema, root, localRefs, baseId) { + /* jshint validthis: true, evil: true */ + /* eslint no-shadow: 0 */ + var self = this + , opts = this._opts + , refVal = [ undefined ] + , refs = {} + , patterns = [] + , patternsHash = {} + , defaults = [] + , defaultsHash = {} + , customRules = []; + + root = root || { schema: schema, refVal: refVal, refs: refs }; + + var c = checkCompiling.call(this, schema, root, baseId); + var compilation = this._compilations[c.index]; + if (c.compiling) return (compilation.callValidate = callValidate); + + var formats = this._formats; + var RULES = this.RULES; + + try { + var v = localCompile(schema, root, localRefs, baseId); + compilation.validate = v; + var cv = compilation.callValidate; + if (cv) { + cv.schema = v.schema; + cv.errors = null; + cv.refs = v.refs; + cv.refVal = v.refVal; + cv.root = v.root; + cv.$async = v.$async; + if (opts.sourceCode) cv.source = v.source; + } + return v; + } finally { + endCompiling.call(this, schema, root, baseId); + } + + /* @this {*} - custom context, see passContext option */ + function callValidate() { + /* jshint validthis: true */ + var validate = compilation.validate; + var result = validate.apply(this, arguments); + callValidate.errors = validate.errors; + return result; + } + + function localCompile(_schema, _root, localRefs, baseId) { + var isRoot = !_root || (_root && _root.schema == _schema); + if (_root.schema != root.schema) + return compile.call(self, _schema, _root, localRefs, baseId); + + var $async = _schema.$async === true; + + var sourceCode = validateGenerator({ + isTop: true, + schema: _schema, + isRoot: isRoot, + baseId: baseId, + root: _root, + schemaPath: '', + errSchemaPath: '#', + errorPath: '""', + MissingRefError: errorClasses.MissingRef, + RULES: RULES, + validate: validateGenerator, + util: util, + resolve: resolve, + resolveRef: resolveRef, + usePattern: usePattern, + useDefault: useDefault, + useCustomRule: useCustomRule, + opts: opts, + formats: formats, + logger: self.logger, + self: self + }); + + sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode) + + vars(defaults, defaultCode) + vars(customRules, customRuleCode) + + sourceCode; + + if (opts.processCode) sourceCode = opts.processCode(sourceCode); + // console.log('\n\n\n *** \n', JSON.stringify(sourceCode)); + var validate; + try { + var makeValidate = new Function( + 'self', + 'RULES', + 'formats', + 'root', + 'refVal', + 'defaults', + 'customRules', + 'equal', + 'ucs2length', + 'ValidationError', + sourceCode + ); + + validate = makeValidate( + self, + RULES, + formats, + root, + refVal, + defaults, + customRules, + equal, + ucs2length, + ValidationError + ); + + refVal[0] = validate; + } catch(e) { + self.logger.error('Error compiling schema, function code:', sourceCode); + throw e; + } + + validate.schema = _schema; + validate.errors = null; + validate.refs = refs; + validate.refVal = refVal; + validate.root = isRoot ? validate : _root; + if ($async) validate.$async = true; + if (opts.sourceCode === true) { + validate.source = { + code: sourceCode, + patterns: patterns, + defaults: defaults + }; + } + + return validate; + } + + function resolveRef(baseId, ref, isRoot) { + ref = resolve.url(baseId, ref); + var refIndex = refs[ref]; + var _refVal, refCode; + if (refIndex !== undefined) { + _refVal = refVal[refIndex]; + refCode = 'refVal[' + refIndex + ']'; + return resolvedRef(_refVal, refCode); + } + if (!isRoot && root.refs) { + var rootRefId = root.refs[ref]; + if (rootRefId !== undefined) { + _refVal = root.refVal[rootRefId]; + refCode = addLocalRef(ref, _refVal); + return resolvedRef(_refVal, refCode); + } + } + + refCode = addLocalRef(ref); + var v = resolve.call(self, localCompile, root, ref); + if (v === undefined) { + var localSchema = localRefs && localRefs[ref]; + if (localSchema) { + v = resolve.inlineRef(localSchema, opts.inlineRefs) + ? localSchema + : compile.call(self, localSchema, root, localRefs, baseId); + } + } + + if (v === undefined) { + removeLocalRef(ref); + } else { + replaceLocalRef(ref, v); + return resolvedRef(v, refCode); + } + } + + function addLocalRef(ref, v) { + var refId = refVal.length; + refVal[refId] = v; + refs[ref] = refId; + return 'refVal' + refId; + } + + function removeLocalRef(ref) { + delete refs[ref]; + } + + function replaceLocalRef(ref, v) { + var refId = refs[ref]; + refVal[refId] = v; + } + + function resolvedRef(refVal, code) { + return typeof refVal == 'object' || typeof refVal == 'boolean' + ? { code: code, schema: refVal, inline: true } + : { code: code, $async: refVal && !!refVal.$async }; + } + + function usePattern(regexStr) { + var index = patternsHash[regexStr]; + if (index === undefined) { + index = patternsHash[regexStr] = patterns.length; + patterns[index] = regexStr; + } + return 'pattern' + index; + } + + function useDefault(value) { + switch (typeof value) { + case 'boolean': + case 'number': + return '' + value; + case 'string': + return util.toQuotedString(value); + case 'object': + if (value === null) return 'null'; + var valueStr = stableStringify(value); + var index = defaultsHash[valueStr]; + if (index === undefined) { + index = defaultsHash[valueStr] = defaults.length; + defaults[index] = value; + } + return 'default' + index; + } + } + + function useCustomRule(rule, schema, parentSchema, it) { + var validateSchema = rule.definition.validateSchema; + if (validateSchema && self._opts.validateSchema !== false) { + var valid = validateSchema(schema); + if (!valid) { + var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors); + if (self._opts.validateSchema == 'log') self.logger.error(message); + else throw new Error(message); + } + } + + var compile = rule.definition.compile + , inline = rule.definition.inline + , macro = rule.definition.macro; + + var validate; + if (compile) { + validate = compile.call(self, schema, parentSchema, it); + } else if (macro) { + validate = macro.call(self, schema, parentSchema, it); + if (opts.validateSchema !== false) self.validateSchema(validate, true); + } else if (inline) { + validate = inline.call(self, it, rule.keyword, schema, parentSchema); + } else { + validate = rule.definition.validate; + if (!validate) return; + } + + if (validate === undefined) + throw new Error('custom keyword "' + rule.keyword + '"failed to compile'); + + var index = customRules.length; + customRules[index] = validate; + + return { + code: 'customRule' + index, + validate: validate + }; + } + } + + + /** + * Checks if the schema is currently compiled + * @this Ajv + * @param {Object} schema schema to compile + * @param {Object} root root object + * @param {String} baseId base schema ID + * @return {Object} object with properties "index" (compilation index) and "compiling" (boolean) + */ + function checkCompiling(schema, root, baseId) { + /* jshint validthis: true */ + var index = compIndex.call(this, schema, root, baseId); + if (index >= 0) return { index: index, compiling: true }; + index = this._compilations.length; + this._compilations[index] = { + schema: schema, + root: root, + baseId: baseId + }; + return { index: index, compiling: false }; + } + + + /** + * Removes the schema from the currently compiled list + * @this Ajv + * @param {Object} schema schema to compile + * @param {Object} root root object + * @param {String} baseId base schema ID + */ + function endCompiling(schema, root, baseId) { + /* jshint validthis: true */ + var i = compIndex.call(this, schema, root, baseId); + if (i >= 0) this._compilations.splice(i, 1); + } + + + /** + * Index of schema compilation in the currently compiled list + * @this Ajv + * @param {Object} schema schema to compile + * @param {Object} root root object + * @param {String} baseId base schema ID + * @return {Integer} compilation index + */ + function compIndex(schema, root, baseId) { + /* jshint validthis: true */ + for (var i=0; i= 0xD800 && value <= 0xDBFF && pos < len) { + // high surrogate, and there is a next character + value = str.charCodeAt(pos); + if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate + } + } + return length; + }; + + },{}],10:[function(require,module,exports){ + 'use strict'; + + + module.exports = { + copy: copy, + checkDataType: checkDataType, + checkDataTypes: checkDataTypes, + coerceToTypes: coerceToTypes, + toHash: toHash, + getProperty: getProperty, + escapeQuotes: escapeQuotes, + equal: require('fast-deep-equal'), + ucs2length: require('./ucs2length'), + varOccurences: varOccurences, + varReplace: varReplace, + cleanUpCode: cleanUpCode, + finalCleanUpCode: finalCleanUpCode, + schemaHasRules: schemaHasRules, + schemaHasRulesExcept: schemaHasRulesExcept, + toQuotedString: toQuotedString, + getPathExpr: getPathExpr, + getPath: getPath, + getData: getData, + unescapeFragment: unescapeFragment, + unescapeJsonPointer: unescapeJsonPointer, + escapeFragment: escapeFragment, + escapeJsonPointer: escapeJsonPointer + }; + + + function copy(o, to) { + to = to || {}; + for (var key in o) to[key] = o[key]; + return to; + } + + + function checkDataType(dataType, data, negate) { + var EQUAL = negate ? ' !== ' : ' === ' + , AND = negate ? ' || ' : ' && ' + , OK = negate ? '!' : '' + , NOT = negate ? '' : '!'; + switch (dataType) { + case 'null': return data + EQUAL + 'null'; + case 'array': return OK + 'Array.isArray(' + data + ')'; + case 'object': return '(' + OK + data + AND + + 'typeof ' + data + EQUAL + '"object"' + AND + + NOT + 'Array.isArray(' + data + '))'; + case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND + + NOT + '(' + data + ' % 1)' + + AND + data + EQUAL + data + ')'; + default: return 'typeof ' + data + EQUAL + '"' + dataType + '"'; + } + } + + + function checkDataTypes(dataTypes, data) { + switch (dataTypes.length) { + case 1: return checkDataType(dataTypes[0], data, true); + default: + var code = ''; + var types = toHash(dataTypes); + if (types.array && types.object) { + code = types.null ? '(': '(!' + data + ' || '; + code += 'typeof ' + data + ' !== "object")'; + delete types.null; + delete types.array; + delete types.object; + } + if (types.number) delete types.integer; + for (var t in types) + code += (code ? ' && ' : '' ) + checkDataType(t, data, true); + + return code; + } + } + + + var COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]); + function coerceToTypes(optionCoerceTypes, dataTypes) { + if (Array.isArray(dataTypes)) { + var types = []; + for (var i=0; i= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl); + return paths[lvl - up]; + } + + if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl); + data = 'data' + ((lvl - up) || ''); + if (!jsonPointer) return data; + } + + var expr = data; + var segments = jsonPointer.split('/'); + for (var i=0; i', + $notOp = $isMax ? '>' : '<', + $errorKeyword = undefined; + if ($isDataExcl) { + var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), + $exclusive = 'exclusive' + $lvl, + $exclType = 'exclType' + $lvl, + $exclIsNumber = 'exclIsNumber' + $lvl, + $opExpr = 'op' + $lvl, + $opStr = '\' + ' + $opExpr + ' + \''; + out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; + $schemaValueExcl = 'schemaExcl' + $lvl; + out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \'boolean\' && ' + ($exclType) + ' != \'undefined\' && ' + ($exclType) + ' != \'number\') { '; + var $errorKeyword = $exclusiveKeyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_exclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ' + ($exclType) + ' == \'number\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\'; '; + if ($schema === undefined) { + $errorKeyword = $exclusiveKeyword; + $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; + $schemaValue = $schemaValueExcl; + $isData = $isDataExcl; + } + } else { + var $exclIsNumber = typeof $schemaExcl == 'number', + $opStr = $op; + if ($exclIsNumber && $isData) { + var $opExpr = '\'' + $opStr + '\''; + out += ' if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { '; + } else { + if ($exclIsNumber && $schema === undefined) { + $exclusive = true; + $errorKeyword = $exclusiveKeyword; + $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; + $schemaValue = $schemaExcl; + $notOp += '='; + } else { + if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema); + if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) { + $exclusive = true; + $errorKeyword = $exclusiveKeyword; + $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; + $notOp += '='; + } else { + $exclusive = false; + $opStr += '='; + } + } + var $opExpr = '\'' + $opStr + '\''; + out += ' if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { '; + } + } + $errorKeyword = $errorKeyword || $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be ' + ($opStr) + ' '; + if ($isData) { + out += '\' + ' + ($schemaValue); + } else { + out += '' + ($schemaValue) + '\''; + } + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + },{}],13:[function(require,module,exports){ + 'use strict'; + module.exports = function generate__limitItems(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $op = $keyword == 'maxItems' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have '; + if ($keyword == 'maxItems') { + out += 'more'; + } else { + out += 'less'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' items\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + },{}],14:[function(require,module,exports){ + 'use strict'; + module.exports = function generate__limitLength(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $op = $keyword == 'maxLength' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + if (it.opts.unicode === false) { + out += ' ' + ($data) + '.length '; + } else { + out += ' ucs2length(' + ($data) + ') '; + } + out += ' ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitLength') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be '; + if ($keyword == 'maxLength') { + out += 'longer'; + } else { + out += 'shorter'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' characters\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + },{}],15:[function(require,module,exports){ + 'use strict'; + module.exports = function generate__limitProperties(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $op = $keyword == 'maxProperties' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have '; + if ($keyword == 'maxProperties') { + out += 'more'; + } else { + out += 'less'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' properties\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + },{}],16:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_allOf(it, $keyword, $ruleType) { + var out = ' '; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $currentBaseId = $it.baseId, + $allSchemasEmpty = true; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + $allSchemasEmpty = false; + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + } + if ($breakOnError) { + if ($allSchemasEmpty) { + out += ' if (true) { '; + } else { + out += ' ' + ($closingBraces.slice(0, -1)) + ' '; + } + } + out = it.util.cleanUpCode(out); + return out; + } + + },{}],17:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_anyOf(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $noEmptySchema = $schema.every(function($sch) { + return it.util.schemaHasRules($sch, it.RULES.all); + }); + if ($noEmptySchema) { + var $currentBaseId = $it.baseId; + out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { '; + $closingBraces += '}'; + } + } + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('anyOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should match some schema in anyOf\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError(vErrors); '; + } else { + out += ' validate.errors = vErrors; return false; '; + } + } + out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + if (it.opts.allErrors) { + out += ' } '; + } + out = it.util.cleanUpCode(out); + } else { + if ($breakOnError) { + out += ' if (true) { '; + } + } + return out; + } + + },{}],18:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_comment(it, $keyword, $ruleType) { + var out = ' '; + var $schema = it.schema[$keyword]; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $comment = it.util.toQuotedString($schema); + if (it.opts.$comment === true) { + out += ' console.log(' + ($comment) + ');'; + } else if (typeof it.opts.$comment == 'function') { + out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);'; + } + return out; + } + + },{}],19:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_const(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + if (!$isData) { + out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';'; + } + out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('const') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValue: schema' + ($lvl) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be equal to constant\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' }'; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + },{}],20:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_contains(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $idx = 'i' + $lvl, + $dataNxt = $it.dataLevel = it.dataLevel + 1, + $nextData = 'data' + $dataNxt, + $currentBaseId = it.baseId, + $nonEmptySchema = it.util.schemaHasRules($schema, it.RULES.all); + out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; + if ($nonEmptySchema) { + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); + var $passData = $data + '[' + $idx + ']'; + $it.dataPathArr[$dataNxt] = $idx; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + out += ' if (' + ($nextValid) + ') break; } '; + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {'; + } else { + out += ' if (' + ($data) + '.length == 0) {'; + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('contains') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should contain a valid item\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + if ($nonEmptySchema) { + out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + } + if (it.opts.allErrors) { + out += ' } '; + } + out = it.util.cleanUpCode(out); + return out; + } + + },{}],21:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_custom(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $rule = this, + $definition = 'definition' + $lvl, + $rDef = $rule.definition, + $closingBraces = ''; + var $compile, $inline, $macro, $ruleValidate, $validateCode; + if ($isData && $rDef.$data) { + $validateCode = 'keywordValidate' + $lvl; + var $validateSchema = $rDef.validateSchema; + out += ' var ' + ($definition) + ' = RULES.custom[\'' + ($keyword) + '\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;'; + } else { + $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it); + if (!$ruleValidate) return; + $schemaValue = 'validate.schema' + $schemaPath; + $validateCode = $ruleValidate.code; + $compile = $rDef.compile; + $inline = $rDef.inline; + $macro = $rDef.macro; + } + var $ruleErrs = $validateCode + '.errors', + $i = 'i' + $lvl, + $ruleErr = 'ruleErr' + $lvl, + $asyncKeyword = $rDef.async; + if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema'); + if (!($inline || $macro)) { + out += '' + ($ruleErrs) + ' = null;'; + } + out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; + if ($isData && $rDef.$data) { + $closingBraces += '}'; + out += ' if (' + ($schemaValue) + ' === undefined) { ' + ($valid) + ' = true; } else { '; + if ($validateSchema) { + $closingBraces += '}'; + out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') { '; + } + } + if ($inline) { + if ($rDef.statements) { + out += ' ' + ($ruleValidate.validate) + ' '; + } else { + out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; '; + } + } else if ($macro) { + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + $it.schema = $ruleValidate.validate; + $it.schemaPath = ''; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var $code = it.validate($it).replace(/validate\.schema/g, $validateCode); + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' ' + ($code); + } else { + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; + out += ' ' + ($validateCode) + '.call( '; + if (it.opts.passContext) { + out += 'this'; + } else { + out += 'self'; + } + if ($compile || $rDef.schema === false) { + out += ' , ' + ($data) + ' '; + } else { + out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' '; + } + out += ' , (dataPath || \'\')'; + if (it.errorPath != '""') { + out += ' + ' + (it.errorPath); + } + var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', + $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; + out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData ) '; + var def_callRuleValidate = out; + out = $$outStack.pop(); + if ($rDef.errors === false) { + out += ' ' + ($valid) + ' = '; + if ($asyncKeyword) { + out += 'await '; + } + out += '' + (def_callRuleValidate) + '; '; + } else { + if ($asyncKeyword) { + $ruleErrs = 'customErrors' + $lvl; + out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = await ' + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } '; + } else { + out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; '; + } + } + } + if ($rDef.modifying) { + out += ' if (' + ($parentData) + ') ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];'; + } + out += '' + ($closingBraces); + if ($rDef.valid) { + if ($breakOnError) { + out += ' if (true) { '; + } + } else { + out += ' if ( '; + if ($rDef.valid === undefined) { + out += ' !'; + if ($macro) { + out += '' + ($nextValid); + } else { + out += '' + ($valid); + } + } else { + out += ' ' + (!$rDef.valid) + ' '; + } + out += ') { '; + $errorKeyword = $rule.keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'custom') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \'' + ($rule.keyword) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should pass "' + ($rule.keyword) + '" keyword validation\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + var def_customError = out; + out = $$outStack.pop(); + if ($inline) { + if ($rDef.errors) { + if ($rDef.errors != 'full') { + out += ' for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '= 0) { + if ($breakOnError) { + out += ' if (true) { '; + } + return out; + } else { + throw new Error('unknown format "' + $schema + '" is used in schema at path "' + it.errSchemaPath + '"'); + } + } + var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate; + var $formatType = $isObject && $format.type || 'string'; + if ($isObject) { + var $async = $format.async === true; + $format = $format.validate; + } + if ($formatType != $ruleType) { + if ($breakOnError) { + out += ' if (true) { '; + } + return out; + } + if ($async) { + if (!it.async) throw new Error('async format in sync schema'); + var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate'; + out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { '; + } else { + out += ' if (! '; + var $formatRef = 'formats' + it.util.getProperty($schema); + if ($isObject) $formatRef += '.validate'; + if (typeof $format == 'function') { + out += ' ' + ($formatRef) + '(' + ($data) + ') '; + } else { + out += ' ' + ($formatRef) + '.test(' + ($data) + ') '; + } + out += ') { '; + } + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('format') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format: '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should match format "'; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + (it.util.escapeQuotes($schema)); + } + out += '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + },{}],25:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_if(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + $it.level++; + var $nextValid = 'valid' + $it.level; + var $thenSch = it.schema['then'], + $elseSch = it.schema['else'], + $thenPresent = $thenSch !== undefined && it.util.schemaHasRules($thenSch, it.RULES.all), + $elsePresent = $elseSch !== undefined && it.util.schemaHasRules($elseSch, it.RULES.all), + $currentBaseId = $it.baseId; + if ($thenPresent || $elsePresent) { + var $ifClause; + $it.createErrors = false; + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + $it.createErrors = true; + out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + it.compositeRule = $it.compositeRule = $wasComposite; + if ($thenPresent) { + out += ' if (' + ($nextValid) + ') { '; + $it.schema = it.schema['then']; + $it.schemaPath = it.schemaPath + '.then'; + $it.errSchemaPath = it.errSchemaPath + '/then'; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + out += ' ' + ($valid) + ' = ' + ($nextValid) + '; '; + if ($thenPresent && $elsePresent) { + $ifClause = 'ifClause' + $lvl; + out += ' var ' + ($ifClause) + ' = \'then\'; '; + } else { + $ifClause = '\'then\''; + } + out += ' } '; + if ($elsePresent) { + out += ' else { '; + } + } else { + out += ' if (!' + ($nextValid) + ') { '; + } + if ($elsePresent) { + $it.schema = it.schema['else']; + $it.schemaPath = it.schemaPath + '.else'; + $it.errSchemaPath = it.errSchemaPath + '/else'; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + out += ' ' + ($valid) + ' = ' + ($nextValid) + '; '; + if ($thenPresent && $elsePresent) { + $ifClause = 'ifClause' + $lvl; + out += ' var ' + ($ifClause) + ' = \'else\'; '; + } else { + $ifClause = '\'else\''; + } + out += ' } '; + } + out += ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('if') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should match "\' + ' + ($ifClause) + ' + \'" schema\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError(vErrors); '; + } else { + out += ' validate.errors = vErrors; return false; '; + } + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + out = it.util.cleanUpCode(out); + } else { + if ($breakOnError) { + out += ' if (true) { '; + } + } + return out; + } + + },{}],26:[function(require,module,exports){ + 'use strict'; + + //all requires must be explicit because browserify won't work with dynamic requires + module.exports = { + '$ref': require('./ref'), + allOf: require('./allOf'), + anyOf: require('./anyOf'), + '$comment': require('./comment'), + const: require('./const'), + contains: require('./contains'), + dependencies: require('./dependencies'), + 'enum': require('./enum'), + format: require('./format'), + 'if': require('./if'), + items: require('./items'), + maximum: require('./_limit'), + minimum: require('./_limit'), + maxItems: require('./_limitItems'), + minItems: require('./_limitItems'), + maxLength: require('./_limitLength'), + minLength: require('./_limitLength'), + maxProperties: require('./_limitProperties'), + minProperties: require('./_limitProperties'), + multipleOf: require('./multipleOf'), + not: require('./not'), + oneOf: require('./oneOf'), + pattern: require('./pattern'), + properties: require('./properties'), + propertyNames: require('./propertyNames'), + required: require('./required'), + uniqueItems: require('./uniqueItems'), + validate: require('./validate') + }; + + },{"./_limit":12,"./_limitItems":13,"./_limitLength":14,"./_limitProperties":15,"./allOf":16,"./anyOf":17,"./comment":18,"./const":19,"./contains":20,"./dependencies":22,"./enum":23,"./format":24,"./if":25,"./items":27,"./multipleOf":28,"./not":29,"./oneOf":30,"./pattern":31,"./properties":32,"./propertyNames":33,"./ref":34,"./required":35,"./uniqueItems":36,"./validate":37}],27:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_items(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $idx = 'i' + $lvl, + $dataNxt = $it.dataLevel = it.dataLevel + 1, + $nextData = 'data' + $dataNxt, + $currentBaseId = it.baseId; + out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; + if (Array.isArray($schema)) { + var $additionalItems = it.schema.additionalItems; + if ($additionalItems === false) { + out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; '; + var $currErrSchemaPath = $errSchemaPath; + $errSchemaPath = it.errSchemaPath + '/additionalItems'; + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('additionalItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have more than ' + ($schema.length) + ' items\' '; + } + if (it.opts.verbose) { + out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + $errSchemaPath = $currErrSchemaPath; + if ($breakOnError) { + $closingBraces += '}'; + out += ' else { '; + } + } + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { '; + var $passData = $data + '[' + $i + ']'; + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true); + $it.dataPathArr[$dataNxt] = $i; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + } + if (typeof $additionalItems == 'object' && it.util.schemaHasRules($additionalItems, it.RULES.all)) { + $it.schema = $additionalItems; + $it.schemaPath = it.schemaPath + '.additionalItems'; + $it.errSchemaPath = it.errSchemaPath + '/additionalItems'; + out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); + var $passData = $data + '[' + $idx + ']'; + $it.dataPathArr[$dataNxt] = $idx; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + out += ' } } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } else if (it.util.schemaHasRules($schema, it.RULES.all)) { + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); + var $passData = $data + '[' + $idx + ']'; + $it.dataPathArr[$dataNxt] = $idx; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + out += ' }'; + } + if ($breakOnError) { + out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; + } + out = it.util.cleanUpCode(out); + return out; + } + + },{}],28:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_multipleOf(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + out += 'var division' + ($lvl) + ';if ('; + if ($isData) { + out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || '; + } + out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', '; + if (it.opts.multipleOfPrecision) { + out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' '; + } else { + out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') '; + } + out += ' ) '; + if ($isData) { + out += ' ) '; + } + out += ' ) { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('multipleOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be multiple of '; + if ($isData) { + out += '\' + ' + ($schemaValue); + } else { + out += '' + ($schemaValue) + '\''; + } + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + },{}],29:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_not(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + $it.level++; + var $nextValid = 'valid' + $it.level; + if (it.util.schemaHasRules($schema, it.RULES.all)) { + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' var ' + ($errs) + ' = errors; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.createErrors = false; + var $allErrorsOption; + if ($it.opts.allErrors) { + $allErrorsOption = $it.opts.allErrors; + $it.opts.allErrors = false; + } + out += ' ' + (it.validate($it)) + ' '; + $it.createErrors = true; + if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption; + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' if (' + ($nextValid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be valid\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + if (it.opts.allErrors) { + out += ' } '; + } + } else { + out += ' var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be valid\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + if ($breakOnError) { + out += ' if (false) { '; + } + } + return out; + } + + },{}],30:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_oneOf(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $currentBaseId = $it.baseId, + $prevValid = 'prevValid' + $lvl, + $passingSchemas = 'passingSchemas' + $lvl; + out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + } else { + out += ' var ' + ($nextValid) + ' = true; '; + } + if ($i) { + out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { '; + $closingBraces += '}'; + } + out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }'; + } + } + it.compositeRule = $it.compositeRule = $wasComposite; + out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('oneOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should match exactly one schema in oneOf\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError(vErrors); '; + } else { + out += ' validate.errors = vErrors; return false; '; + } + } + out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }'; + if (it.opts.allErrors) { + out += ' } '; + } + return out; + } + + },{}],31:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_pattern(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema); + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; + } + out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('pattern') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should match pattern "'; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + (it.util.escapeQuotes($schema)); + } + out += '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + },{}],32:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_properties(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $key = 'key' + $lvl, + $idx = 'idx' + $lvl, + $dataNxt = $it.dataLevel = it.dataLevel + 1, + $nextData = 'data' + $dataNxt, + $dataProperties = 'dataProperties' + $lvl; + var $schemaKeys = Object.keys($schema || {}), + $pProperties = it.schema.patternProperties || {}, + $pPropertyKeys = Object.keys($pProperties), + $aProperties = it.schema.additionalProperties, + $someProperties = $schemaKeys.length || $pPropertyKeys.length, + $noAdditional = $aProperties === false, + $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length, + $removeAdditional = it.opts.removeAdditional, + $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional, + $ownProperties = it.opts.ownProperties, + $currentBaseId = it.baseId; + var $required = it.schema.required; + if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required); + out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;'; + if ($ownProperties) { + out += ' var ' + ($dataProperties) + ' = undefined;'; + } + if ($checkAdditional) { + if ($ownProperties) { + out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; + } else { + out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; + } + if ($someProperties) { + out += ' var isAdditional' + ($lvl) + ' = !(false '; + if ($schemaKeys.length) { + if ($schemaKeys.length > 8) { + out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') '; + } else { + var arr1 = $schemaKeys; + if (arr1) { + var $propertyKey, i1 = -1, + l1 = arr1.length - 1; + while (i1 < l1) { + $propertyKey = arr1[i1 += 1]; + out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' '; + } + } + } + } + if ($pPropertyKeys.length) { + var arr2 = $pPropertyKeys; + if (arr2) { + var $pProperty, $i = -1, + l2 = arr2.length - 1; + while ($i < l2) { + $pProperty = arr2[$i += 1]; + out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') '; + } + } + } + out += ' ); if (isAdditional' + ($lvl) + ') { '; + } + if ($removeAdditional == 'all') { + out += ' delete ' + ($data) + '[' + ($key) + ']; '; + } else { + var $currentErrorPath = it.errorPath; + var $additionalProperty = '\' + ' + $key + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + } + if ($noAdditional) { + if ($removeAdditional) { + out += ' delete ' + ($data) + '[' + ($key) + ']; '; + } else { + out += ' ' + ($nextValid) + ' = false; '; + var $currErrSchemaPath = $errSchemaPath; + $errSchemaPath = it.errSchemaPath + '/additionalProperties'; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \'' + ($additionalProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is an invalid additional property'; + } else { + out += 'should NOT have additional properties'; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + $errSchemaPath = $currErrSchemaPath; + if ($breakOnError) { + out += ' break; '; + } + } + } else if ($additionalIsSchema) { + if ($removeAdditional == 'failing') { + out += ' var ' + ($errs) + ' = errors; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.schema = $aProperties; + $it.schemaPath = it.schemaPath + '.additionalProperties'; + $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; + $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + var $passData = $data + '[' + $key + ']'; + $it.dataPathArr[$dataNxt] = $key; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } '; + it.compositeRule = $it.compositeRule = $wasComposite; + } else { + $it.schema = $aProperties; + $it.schemaPath = it.schemaPath + '.additionalProperties'; + $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; + $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + var $passData = $data + '[' + $key + ']'; + $it.dataPathArr[$dataNxt] = $key; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + } + } + it.errorPath = $currentErrorPath; + } + if ($someProperties) { + out += ' } '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + var $useDefaults = it.opts.useDefaults && !it.compositeRule; + if ($schemaKeys.length) { + var arr3 = $schemaKeys; + if (arr3) { + var $propertyKey, i3 = -1, + l3 = arr3.length - 1; + while (i3 < l3) { + $propertyKey = arr3[i3 += 1]; + var $sch = $schema[$propertyKey]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + var $prop = it.util.getProperty($propertyKey), + $passData = $data + $prop, + $hasDefault = $useDefaults && $sch.default !== undefined; + $it.schema = $sch; + $it.schemaPath = $schemaPath + $prop; + $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey); + $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers); + $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey); + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + $code = it.util.varReplace($code, $nextData, $passData); + var $useData = $passData; + } else { + var $useData = $nextData; + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; '; + } + if ($hasDefault) { + out += ' ' + ($code) + ' '; + } else { + if ($requiredHash && $requiredHash[$propertyKey]) { + out += ' if ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') { ' + ($nextValid) + ' = false; '; + var $currentErrorPath = it.errorPath, + $currErrSchemaPath = $errSchemaPath, + $missingProperty = it.util.escapeQuotes($propertyKey); + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); + } + $errSchemaPath = it.errSchemaPath + '/required'; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + $errSchemaPath = $currErrSchemaPath; + it.errorPath = $currentErrorPath; + out += ' } else { '; + } else { + if ($breakOnError) { + out += ' if ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') { ' + ($nextValid) + ' = true; } else { '; + } else { + out += ' if (' + ($useData) + ' !== undefined '; + if ($ownProperties) { + out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ' ) { '; + } + } + out += ' ' + ($code) + ' } '; + } + } + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + } + if ($pPropertyKeys.length) { + var arr4 = $pPropertyKeys; + if (arr4) { + var $pProperty, i4 = -1, + l4 = arr4.length - 1; + while (i4 < l4) { + $pProperty = arr4[i4 += 1]; + var $sch = $pProperties[$pProperty]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + $it.schema = $sch; + $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); + $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty); + if ($ownProperties) { + out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; + } else { + out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; + } + out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + var $passData = $data + '[' + $key + ']'; + $it.dataPathArr[$dataNxt] = $key; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else ' + ($nextValid) + ' = true; '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; + } + out = it.util.cleanUpCode(out); + return out; + } + + },{}],33:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_propertyNames(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + if (it.util.schemaHasRules($schema, it.RULES.all)) { + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + var $key = 'key' + $lvl, + $idx = 'idx' + $lvl, + $i = 'i' + $lvl, + $invalidName = '\' + ' + $key + ' + \'', + $dataNxt = $it.dataLevel = it.dataLevel + 1, + $nextData = 'data' + $dataNxt, + $dataProperties = 'dataProperties' + $lvl, + $ownProperties = it.opts.ownProperties, + $currentBaseId = it.baseId; + out += ' var ' + ($errs) + ' = errors; '; + if ($ownProperties) { + out += ' var ' + ($dataProperties) + ' = undefined; '; + } + if ($ownProperties) { + out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; + } else { + out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; + } + out += ' var startErrs' + ($lvl) + ' = errors; '; + var $passData = $key; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + '= it.opts.loopRequired, + $ownProperties = it.opts.ownProperties; + if ($breakOnError) { + out += ' var missing' + ($lvl) + '; '; + if ($loopRequired) { + if (!$isData) { + out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; + } + var $i = 'i' + $lvl, + $propertyPath = 'schema' + $lvl + '[' + $i + ']', + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); + } + out += ' var ' + ($valid) + ' = true; '; + if ($isData) { + out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; + } + out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined '; + if ($ownProperties) { + out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) '; + } + out += '; if (!' + ($valid) + ') break; } '; + if ($isData) { + out += ' } '; + } + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + } else { + out += ' if ( '; + var arr2 = $required; + if (arr2) { + var $propertyKey, $i = -1, + l2 = arr2.length - 1; + while ($i < l2) { + $propertyKey = arr2[$i += 1]; + if ($i) { + out += ' || '; + } + var $prop = it.util.getProperty($propertyKey), + $useData = $data + $prop; + out += ' ( ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) '; + } + } + out += ') { '; + var $propertyPath = 'missing' + $lvl, + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + } + } else { + if ($loopRequired) { + if (!$isData) { + out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; + } + var $i = 'i' + $lvl, + $propertyPath = 'schema' + $lvl + '[' + $i + ']', + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); + } + if ($isData) { + out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { '; + } + out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) '; + } + out += ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } '; + if ($isData) { + out += ' } '; + } + } else { + var arr3 = $required; + if (arr3) { + var $propertyKey, i3 = -1, + l3 = arr3.length - 1; + while (i3 < l3) { + $propertyKey = arr3[i3 += 1]; + var $prop = it.util.getProperty($propertyKey), + $missingProperty = it.util.escapeQuotes($propertyKey), + $useData = $data + $prop; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); + } + out += ' if ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; + } + } + } + } + it.errorPath = $currentErrorPath; + } else if ($breakOnError) { + out += ' if (true) {'; + } + return out; + } + + },{}],36:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_uniqueItems(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + if (($schema || $isData) && it.opts.uniqueItems !== false) { + if ($isData) { + out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'boolean\') ' + ($valid) + ' = false; else { '; + } + out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { '; + var $itemType = it.schema.items && it.schema.items.type, + $typeIsArray = Array.isArray($itemType); + if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) { + out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } '; + } else { + out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; '; + var $method = 'checkDataType' + ($typeIsArray ? 's' : ''); + out += ' if (' + (it.util[$method]($itemType, 'item', true)) + ') continue; '; + if ($typeIsArray) { + out += ' if (typeof item == \'string\') item = \'"\' + item; '; + } + out += ' if (typeof itemIndices[item] == \'number\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } '; + } + out += ' } '; + if ($isData) { + out += ' } '; + } + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('uniqueItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + } else { + if ($breakOnError) { + out += ' if (true) { '; + } + } + return out; + } + + },{}],37:[function(require,module,exports){ + 'use strict'; + module.exports = function generate_validate(it, $keyword, $ruleType) { + var out = ''; + var $async = it.schema.$async === true, + $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'), + $id = it.self._getId(it.schema); + if (it.isTop) { + out += ' var validate = '; + if ($async) { + it.async = true; + out += 'async '; + } + out += 'function(data, dataPath, parentData, parentDataProperty, rootData) { \'use strict\'; '; + if ($id && (it.opts.sourceCode || it.opts.processCode)) { + out += ' ' + ('/\*# sourceURL=' + $id + ' */') + ' '; + } + } + if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) { + var $keyword = 'false schema'; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + if (it.schema === false) { + if (it.isTop) { + $breakOnError = true; + } else { + out += ' var ' + ($valid) + ' = false; '; + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'false schema') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'boolean schema is false\' '; + } + if (it.opts.verbose) { + out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + } else { + if (it.isTop) { + if ($async) { + out += ' return data; '; + } else { + out += ' validate.errors = null; return true; '; + } + } else { + out += ' var ' + ($valid) + ' = true; '; + } + } + if (it.isTop) { + out += ' }; return validate; '; + } + return out; + } + if (it.isTop) { + var $top = it.isTop, + $lvl = it.level = 0, + $dataLvl = it.dataLevel = 0, + $data = 'data'; + it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema)); + it.baseId = it.baseId || it.rootId; + delete it.isTop; + it.dataPathArr = [undefined]; + out += ' var vErrors = null; '; + out += ' var errors = 0; '; + out += ' if (rootData === undefined) rootData = data; '; + } else { + var $lvl = it.level, + $dataLvl = it.dataLevel, + $data = 'data' + ($dataLvl || ''); + if ($id) it.baseId = it.resolve.url(it.baseId, $id); + if ($async && !it.async) throw new Error('async schema in sync schema'); + out += ' var errs_' + ($lvl) + ' = errors;'; + } + var $valid = 'valid' + $lvl, + $breakOnError = !it.opts.allErrors, + $closingBraces1 = '', + $closingBraces2 = ''; + var $errorKeyword; + var $typeSchema = it.schema.type, + $typeIsArray = Array.isArray($typeSchema); + if ($typeIsArray && $typeSchema.length == 1) { + $typeSchema = $typeSchema[0]; + $typeIsArray = false; + } + if (it.schema.$ref && $refKeywords) { + if (it.opts.extendRefs == 'fail') { + throw new Error('$ref: validation keywords used in schema at path "' + it.errSchemaPath + '" (see option extendRefs)'); + } else if (it.opts.extendRefs !== true) { + $refKeywords = false; + it.logger.warn('$ref: keywords ignored in schema at path "' + it.errSchemaPath + '"'); + } + } + if (it.schema.$comment && it.opts.$comment) { + out += ' ' + (it.RULES.all.$comment.code(it, '$comment')); + } + if ($typeSchema) { + if (it.opts.coerceTypes) { + var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema); + } + var $rulesGroup = it.RULES.types[$typeSchema]; + if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) { + var $schemaPath = it.schemaPath + '.type', + $errSchemaPath = it.errSchemaPath + '/type'; + var $schemaPath = it.schemaPath + '.type', + $errSchemaPath = it.errSchemaPath + '/type', + $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType'; + out += ' if (' + (it.util[$method]($typeSchema, $data, true)) + ') { '; + if ($coerceToTypes) { + var $dataType = 'dataType' + $lvl, + $coerced = 'coerced' + $lvl; + out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; '; + if (it.opts.coerceTypes == 'array') { + out += ' if (' + ($dataType) + ' == \'object\' && Array.isArray(' + ($data) + ')) ' + ($dataType) + ' = \'array\'; '; + } + out += ' var ' + ($coerced) + ' = undefined; '; + var $bracesCoercion = ''; + var arr1 = $coerceToTypes; + if (arr1) { + var $type, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $type = arr1[$i += 1]; + if ($i) { + out += ' if (' + ($coerced) + ' === undefined) { '; + $bracesCoercion += '}'; + } + if (it.opts.coerceTypes == 'array' && $type != 'array') { + out += ' if (' + ($dataType) + ' == \'array\' && ' + ($data) + '.length == 1) { ' + ($coerced) + ' = ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; } '; + } + if ($type == 'string') { + out += ' if (' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\') ' + ($coerced) + ' = \'\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \'\'; '; + } else if ($type == 'number' || $type == 'integer') { + out += ' if (' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \'string\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' '; + if ($type == 'integer') { + out += ' && !(' + ($data) + ' % 1)'; + } + out += ')) ' + ($coerced) + ' = +' + ($data) + '; '; + } else if ($type == 'boolean') { + out += ' if (' + ($data) + ' === \'false\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \'true\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; '; + } else if ($type == 'null') { + out += ' if (' + ($data) + ' === \'\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; '; + } else if (it.opts.coerceTypes == 'array' && $type == 'array') { + out += ' if (' + ($dataType) + ' == \'string\' || ' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; '; + } + } + } + out += ' ' + ($bracesCoercion) + ' if (' + ($coerced) + ' === undefined) { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be '; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', + $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; + out += ' ' + ($data) + ' = ' + ($coerced) + '; '; + if (!$dataLvl) { + out += 'if (' + ($parentData) + ' !== undefined)'; + } + out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } '; + } else { + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be '; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + } + out += ' } '; + } + } + if (it.schema.$ref && !$refKeywords) { + out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' '; + if ($breakOnError) { + out += ' } if (errors === '; + if ($top) { + out += '0'; + } else { + out += 'errs_' + ($lvl); + } + out += ') { '; + $closingBraces2 += '}'; + } + } else { + var arr2 = it.RULES; + if (arr2) { + var $rulesGroup, i2 = -1, + l2 = arr2.length - 1; + while (i2 < l2) { + $rulesGroup = arr2[i2 += 1]; + if ($shouldUseGroup($rulesGroup)) { + if ($rulesGroup.type) { + out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data)) + ') { '; + } + if (it.opts.useDefaults && !it.compositeRule) { + if ($rulesGroup.type == 'object' && it.schema.properties) { + var $schema = it.schema.properties, + $schemaKeys = Object.keys($schema); + var arr3 = $schemaKeys; + if (arr3) { + var $propertyKey, i3 = -1, + l3 = arr3.length - 1; + while (i3 < l3) { + $propertyKey = arr3[i3 += 1]; + var $sch = $schema[$propertyKey]; + if ($sch.default !== undefined) { + var $passData = $data + it.util.getProperty($propertyKey); + out += ' if (' + ($passData) + ' === undefined) ' + ($passData) + ' = '; + if (it.opts.useDefaults == 'shared') { + out += ' ' + (it.useDefault($sch.default)) + ' '; + } else { + out += ' ' + (JSON.stringify($sch.default)) + ' '; + } + out += '; '; + } + } + } + } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) { + var arr4 = it.schema.items; + if (arr4) { + var $sch, $i = -1, + l4 = arr4.length - 1; + while ($i < l4) { + $sch = arr4[$i += 1]; + if ($sch.default !== undefined) { + var $passData = $data + '[' + $i + ']'; + out += ' if (' + ($passData) + ' === undefined) ' + ($passData) + ' = '; + if (it.opts.useDefaults == 'shared') { + out += ' ' + (it.useDefault($sch.default)) + ' '; + } else { + out += ' ' + (JSON.stringify($sch.default)) + ' '; + } + out += '; '; + } + } + } + } + } + var arr5 = $rulesGroup.rules; + if (arr5) { + var $rule, i5 = -1, + l5 = arr5.length - 1; + while (i5 < l5) { + $rule = arr5[i5 += 1]; + if ($shouldUseRule($rule)) { + var $code = $rule.code(it, $rule.keyword, $rulesGroup.type); + if ($code) { + out += ' ' + ($code) + ' '; + if ($breakOnError) { + $closingBraces1 += '}'; + } + } + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces1) + ' '; + $closingBraces1 = ''; + } + if ($rulesGroup.type) { + out += ' } '; + if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) { + out += ' else { '; + var $schemaPath = it.schemaPath + '.type', + $errSchemaPath = it.errSchemaPath + '/type'; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be '; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + } + } + if ($breakOnError) { + out += ' if (errors === '; + if ($top) { + out += '0'; + } else { + out += 'errs_' + ($lvl); + } + out += ') { '; + $closingBraces2 += '}'; + } + } + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces2) + ' '; + } + if ($top) { + if ($async) { + out += ' if (errors === 0) return data; '; + out += ' else throw new ValidationError(vErrors); '; + } else { + out += ' validate.errors = vErrors; '; + out += ' return errors === 0; '; + } + out += ' }; return validate;'; + } else { + out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';'; + } + out = it.util.cleanUpCode(out); + if ($top) { + out = it.util.finalCleanUpCode(out, $async); + } + + function $shouldUseGroup($rulesGroup) { + var rules = $rulesGroup.rules; + for (var i = 0; i < rules.length; i++) + if ($shouldUseRule(rules[i])) return true; + } + + function $shouldUseRule($rule) { + return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImplementsSomeKeyword($rule)); + } + + function $ruleImplementsSomeKeyword($rule) { + var impl = $rule.implements; + for (var i = 0; i < impl.length; i++) + if (it.schema[impl[i]] !== undefined) return true; + } + return out; + } + + },{}],38:[function(require,module,exports){ + 'use strict'; + + var IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i; + var customRuleCode = require('./dotjs/custom'); + + module.exports = { + add: addKeyword, + get: getKeyword, + remove: removeKeyword + }; + + /** + * Define custom keyword + * @this Ajv + * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords). + * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`. + * @return {Ajv} this for method chaining + */ + function addKeyword(keyword, definition) { + /* jshint validthis: true */ + /* eslint no-shadow: 0 */ + var RULES = this.RULES; + + if (RULES.keywords[keyword]) + throw new Error('Keyword ' + keyword + ' is already defined'); + + if (!IDENTIFIER.test(keyword)) + throw new Error('Keyword ' + keyword + ' is not a valid identifier'); + + if (definition) { + if (definition.macro && definition.valid !== undefined) + throw new Error('"valid" option cannot be used with macro keywords'); + + var dataType = definition.type; + if (Array.isArray(dataType)) { + var i, len = dataType.length; + for (i=0; i 1) { + sets[0] = sets[0].slice(0, -1); + var xl = sets.length - 1; + for (var x = 1; x < xl; ++x) { + sets[x] = sets[x].slice(1, -1); + } + sets[xl] = sets[xl].slice(1); + return sets.join(''); + } else { + return sets[0]; + } + } + function subexp(str) { + return "(?:" + str + ")"; + } + function typeOf(o) { + return o === undefined ? "undefined" : o === null ? "null" : Object.prototype.toString.call(o).split(" ").pop().split("]").shift().toLowerCase(); + } + function toUpperCase(str) { + return str.toUpperCase(); + } + function toArray(obj) { + return obj !== undefined && obj !== null ? obj instanceof Array ? obj : typeof obj.length !== "number" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj) : []; + } + function assign(target, source) { + var obj = target; + if (source) { + for (var key in source) { + obj[key] = source[key]; + } + } + return obj; + } + + function buildExps(isIRI) { + var ALPHA$$ = "[A-Za-z]", + CR$ = "[\\x0D]", + DIGIT$$ = "[0-9]", + DQUOTE$$ = "[\\x22]", + HEXDIG$$ = merge(DIGIT$$, "[A-Fa-f]"), + //case-insensitive + LF$$ = "[\\x0A]", + SP$$ = "[\\x20]", + PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)), + //expanded + GEN_DELIMS$$ = "[\\:\\/\\?\\#\\[\\]\\@]", + SUB_DELIMS$$ = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]", + RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$), + UCSCHAR$$ = isIRI ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]", + //subset, excludes bidi control characters + IPRIVATE$$ = isIRI ? "[\\uE000-\\uF8FF]" : "[]", + //subset + UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, "[\\-\\.\\_\\~]", UCSCHAR$$), + SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, "[\\+\\-\\.]") + "*"), + USERINFO$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]")) + "*"), + DEC_OCTET$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("[1-9]" + DIGIT$$) + "|" + DIGIT$$), + DEC_OCTET_RELAXED$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("0?[1-9]" + DIGIT$$) + "|0?0?" + DIGIT$$), + //relaxed parsing rules + IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$), + H16$ = subexp(HEXDIG$$ + "{1,4}"), + LS32$ = subexp(subexp(H16$ + "\\:" + H16$) + "|" + IPV4ADDRESS$), + IPV6ADDRESS1$ = subexp(subexp(H16$ + "\\:") + "{6}" + LS32$), + // 6( h16 ":" ) ls32 + IPV6ADDRESS2$ = subexp("\\:\\:" + subexp(H16$ + "\\:") + "{5}" + LS32$), + // "::" 5( h16 ":" ) ls32 + IPV6ADDRESS3$ = subexp(subexp(H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{4}" + LS32$), + //[ h16 ] "::" 4( h16 ":" ) ls32 + IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,1}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{3}" + LS32$), + //[ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 + IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,2}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{2}" + LS32$), + //[ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 + IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,3}" + H16$) + "?\\:\\:" + H16$ + "\\:" + LS32$), + //[ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 + IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,4}" + H16$) + "?\\:\\:" + LS32$), + //[ *4( h16 ":" ) h16 ] "::" ls32 + IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,5}" + H16$) + "?\\:\\:" + H16$), + //[ *5( h16 ":" ) h16 ] "::" h16 + IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,6}" + H16$) + "?\\:\\:"), + //[ *6( h16 ":" ) h16 ] "::" + IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join("|")), + ZONEID$ = subexp(subexp(UNRESERVED$$ + "|" + PCT_ENCODED$) + "+"), + //RFC 6874 + IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + "\\%25" + ZONEID$), + //RFC 6874 + IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + ZONEID$), + //RFC 6874, with relaxed parsing rules + IPVFUTURE$ = subexp("[vV]" + HEXDIG$$ + "+\\." + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]") + "+"), + IP_LITERAL$ = subexp("\\[" + subexp(IPV6ADDRZ_RELAXED$ + "|" + IPV6ADDRESS$ + "|" + IPVFUTURE$) + "\\]"), + //RFC 6874 + REG_NAME$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$)) + "*"), + HOST$ = subexp(IP_LITERAL$ + "|" + IPV4ADDRESS$ + "(?!" + REG_NAME$ + ")" + "|" + REG_NAME$), + PORT$ = subexp(DIGIT$$ + "*"), + AUTHORITY$ = subexp(subexp(USERINFO$ + "@") + "?" + HOST$ + subexp("\\:" + PORT$) + "?"), + PCHAR$ = subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@]")), + SEGMENT$ = subexp(PCHAR$ + "*"), + SEGMENT_NZ$ = subexp(PCHAR$ + "+"), + SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\@]")) + "+"), + PATH_ABEMPTY$ = subexp(subexp("\\/" + SEGMENT$) + "*"), + PATH_ABSOLUTE$ = subexp("\\/" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + "?"), + //simplified + PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), + //simplified + PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), + //simplified + PATH_EMPTY$ = "(?!" + PCHAR$ + ")", + PATH$ = subexp(PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), + QUERY$ = subexp(subexp(PCHAR$ + "|" + merge("[\\/\\?]", IPRIVATE$$)) + "*"), + FRAGMENT$ = subexp(subexp(PCHAR$ + "|[\\/\\?]") + "*"), + HIER_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), + URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), + RELATIVE_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$), + RELATIVE$ = subexp(RELATIVE_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), + URI_REFERENCE$ = subexp(URI$ + "|" + RELATIVE$), + ABSOLUTE_URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?"), + GENERIC_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", + RELATIVE_REF$ = "^(){0}" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", + ABSOLUTE_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?$", + SAMEDOC_REF$ = "^" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", + AUTHORITY_REF$ = "^" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?$"; + return { + NOT_SCHEME: new RegExp(merge("[^]", ALPHA$$, DIGIT$$, "[\\+\\-\\.]"), "g"), + NOT_USERINFO: new RegExp(merge("[^\\%\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_HOST: new RegExp(merge("[^\\%\\[\\]\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_PATH: new RegExp(merge("[^\\%\\/\\:\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_PATH_NOSCHEME: new RegExp(merge("[^\\%\\/\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_QUERY: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]", IPRIVATE$$), "g"), + NOT_FRAGMENT: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]"), "g"), + ESCAPE: new RegExp(merge("[^]", UNRESERVED$$, SUB_DELIMS$$), "g"), + UNRESERVED: new RegExp(UNRESERVED$$, "g"), + OTHER_CHARS: new RegExp(merge("[^\\%]", UNRESERVED$$, RESERVED$$), "g"), + PCT_ENCODED: new RegExp(PCT_ENCODED$, "g"), + IPV4ADDRESS: new RegExp("^(" + IPV4ADDRESS$ + ")$"), + IPV6ADDRESS: new RegExp("^\\[?(" + IPV6ADDRESS$ + ")" + subexp(subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + "(" + ZONEID$ + ")") + "?\\]?$") //RFC 6874, with relaxed parsing rules + }; + } + var URI_PROTOCOL = buildExps(false); + + var IRI_PROTOCOL = buildExps(true); + + var slicedToArray = function () { + function sliceIterator(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"]) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + return function (arr, i) { + if (Array.isArray(arr)) { + return arr; + } else if (Symbol.iterator in Object(arr)) { + return sliceIterator(arr, i); + } else { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + }; + }(); + + + + + + + + + + + + + + var toConsumableArray = function (arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; + + return arr2; + } else { + return Array.from(arr); + } + }; + + /** Highest positive signed 32-bit float value */ + + var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 + + /** Bootstring parameters */ + var base = 36; + var tMin = 1; + var tMax = 26; + var skew = 38; + var damp = 700; + var initialBias = 72; + var initialN = 128; // 0x80 + var delimiter = '-'; // '\x2D' + + /** Regular expressions */ + var regexPunycode = /^xn--/; + var regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars + var regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators + + /** Error messages */ + var errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' + }; + + /** Convenience shortcuts */ + var baseMinusTMin = base - tMin; + var floor = Math.floor; + var stringFromCharCode = String.fromCharCode; + + /*--------------------------------------------------------------------------*/ + + /** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ + function error$1(type) { + throw new RangeError(errors[type]); + } + + /** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ + function map(array, fn) { + var result = []; + var length = array.length; + while (length--) { + result[length] = fn(array[length]); + } + return result; + } + + /** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ + function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; + } + + /** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ + function ucs2decode(string) { + var output = []; + var counter = 0; + var length = string.length; + while (counter < length) { + var value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // It's a high surrogate, and there is a next character. + var extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { + // Low surrogate. + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // It's an unmatched surrogate; only append this code unit, in case the + // next code unit is the high surrogate of a surrogate pair. + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + + /** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ + var ucs2encode = function ucs2encode(array) { + return String.fromCodePoint.apply(String, toConsumableArray(array)); + }; + + /** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ + var basicToDigit = function basicToDigit(codePoint) { + if (codePoint - 0x30 < 0x0A) { + return codePoint - 0x16; + } + if (codePoint - 0x41 < 0x1A) { + return codePoint - 0x41; + } + if (codePoint - 0x61 < 0x1A) { + return codePoint - 0x61; + } + return base; + }; + + /** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ + var digitToBasic = function digitToBasic(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); + }; + + /** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ + var adapt = function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (; /* no initialization */delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); + }; + + /** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ + var decode = function decode(input) { + // Don't use UCS-2. + var output = []; + var inputLength = input.length; + var i = 0; + var n = initialN; + var bias = initialBias; + + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. + + var basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (var j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error$1('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. + + for (var index = basic > 0 ? basic + 1 : 0; index < inputLength;) /* no final expression */{ + + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + var oldi = i; + for (var w = 1, k = base;; /* no condition */k += base) { + + if (index >= inputLength) { + error$1('invalid-input'); + } + + var digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error$1('overflow'); + } + + i += digit * w; + var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; + + if (digit < t) { + break; + } + + var baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error$1('overflow'); + } + + w *= baseMinusT; + } + + var out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error$1('overflow'); + } + + n += floor(i / out); + i %= out; + + // Insert `n` at position `i` of the output. + output.splice(i++, 0, n); + } + + return String.fromCodePoint.apply(String, output); + }; + + /** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ + var encode = function encode(input) { + var output = []; + + // Convert the input in UCS-2 to an array of Unicode code points. + input = ucs2decode(input); + + // Cache the length. + var inputLength = input.length; + + // Initialize the state. + var n = initialN; + var delta = 0; + var bias = initialBias; + + // Handle the basic code points. + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = input[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var _currentValue2 = _step.value; + + if (_currentValue2 < 0x80) { + output.push(stringFromCharCode(_currentValue2)); + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + var basicLength = output.length; + var handledCPCount = basicLength; + + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. + + // Finish the basic string with a delimiter unless it's empty. + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + + // All non-basic code points < n have been handled already. Find the next + // larger one: + var m = maxInt; + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = input[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var currentValue = _step2.value; + + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , + // but guard against overflow. + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + var handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error$1('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + var _iteratorNormalCompletion3 = true; + var _didIteratorError3 = false; + var _iteratorError3 = undefined; + + try { + for (var _iterator3 = input[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { + var _currentValue = _step3.value; + + if (_currentValue < n && ++delta > maxInt) { + error$1('overflow'); + } + if (_currentValue == n) { + // Represent delta as a generalized variable-length integer. + var q = delta; + for (var k = base;; /* no condition */k += base) { + var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; + if (q < t) { + break; + } + var qMinusT = q - t; + var baseMinusT = base - t; + output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + } catch (err) { + _didIteratorError3 = true; + _iteratorError3 = err; + } finally { + try { + if (!_iteratorNormalCompletion3 && _iterator3.return) { + _iterator3.return(); + } + } finally { + if (_didIteratorError3) { + throw _iteratorError3; + } + } + } + + ++delta; + ++n; + } + return output.join(''); + }; + + /** + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. + */ + var toUnicode = function toUnicode(input) { + return mapDomain(input, function (string) { + return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string; + }); + }; + + /** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ + var toASCII = function toASCII(input) { + return mapDomain(input, function (string) { + return regexNonASCII.test(string) ? 'xn--' + encode(string) : string; + }); + }; + + /*--------------------------------------------------------------------------*/ + + /** Define the public API */ + var punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '2.1.0', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode + }; + + /** + * URI.js + * + * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript. + * @author Gary Court + * @see http://github.com/garycourt/uri-js + */ + /** + * Copyright 2011 Gary Court. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of Gary Court. + */ + var SCHEMES = {}; + function pctEncChar(chr) { + var c = chr.charCodeAt(0); + var e = void 0; + if (c < 16) e = "%0" + c.toString(16).toUpperCase();else if (c < 128) e = "%" + c.toString(16).toUpperCase();else if (c < 2048) e = "%" + (c >> 6 | 192).toString(16).toUpperCase() + "%" + (c & 63 | 128).toString(16).toUpperCase();else e = "%" + (c >> 12 | 224).toString(16).toUpperCase() + "%" + (c >> 6 & 63 | 128).toString(16).toUpperCase() + "%" + (c & 63 | 128).toString(16).toUpperCase(); + return e; + } + function pctDecChars(str) { + var newStr = ""; + var i = 0; + var il = str.length; + while (i < il) { + var c = parseInt(str.substr(i + 1, 2), 16); + if (c < 128) { + newStr += String.fromCharCode(c); + i += 3; + } else if (c >= 194 && c < 224) { + if (il - i >= 6) { + var c2 = parseInt(str.substr(i + 4, 2), 16); + newStr += String.fromCharCode((c & 31) << 6 | c2 & 63); + } else { + newStr += str.substr(i, 6); + } + i += 6; + } else if (c >= 224) { + if (il - i >= 9) { + var _c = parseInt(str.substr(i + 4, 2), 16); + var c3 = parseInt(str.substr(i + 7, 2), 16); + newStr += String.fromCharCode((c & 15) << 12 | (_c & 63) << 6 | c3 & 63); + } else { + newStr += str.substr(i, 9); + } + i += 9; + } else { + newStr += str.substr(i, 3); + i += 3; + } + } + return newStr; + } + function _normalizeComponentEncoding(components, protocol) { + function decodeUnreserved(str) { + var decStr = pctDecChars(str); + return !decStr.match(protocol.UNRESERVED) ? str : decStr; + } + if (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, ""); + if (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + return components; + } + + function _stripLeadingZeros(str) { + return str.replace(/^0*(.*)/, "$1") || "0"; + } + function _normalizeIPv4(host, protocol) { + var matches = host.match(protocol.IPV4ADDRESS) || []; + + var _matches = slicedToArray(matches, 2), + address = _matches[1]; + + if (address) { + return address.split(".").map(_stripLeadingZeros).join("."); + } else { + return host; + } + } + function _normalizeIPv6(host, protocol) { + var matches = host.match(protocol.IPV6ADDRESS) || []; + + var _matches2 = slicedToArray(matches, 3), + address = _matches2[1], + zone = _matches2[2]; + + if (address) { + var _address$toLowerCase$ = address.toLowerCase().split('::').reverse(), + _address$toLowerCase$2 = slicedToArray(_address$toLowerCase$, 2), + last = _address$toLowerCase$2[0], + first = _address$toLowerCase$2[1]; + + var firstFields = first ? first.split(":").map(_stripLeadingZeros) : []; + var lastFields = last.split(":").map(_stripLeadingZeros); + var isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]); + var fieldCount = isLastFieldIPv4Address ? 7 : 8; + var lastFieldsStart = lastFields.length - fieldCount; + var fields = Array(fieldCount); + for (var x = 0; x < fieldCount; ++x) { + fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || ''; + } + if (isLastFieldIPv4Address) { + fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol); + } + var allZeroFields = fields.reduce(function (acc, field, index) { + if (!field || field === "0") { + var lastLongest = acc[acc.length - 1]; + if (lastLongest && lastLongest.index + lastLongest.length === index) { + lastLongest.length++; + } else { + acc.push({ index: index, length: 1 }); + } + } + return acc; + }, []); + var longestZeroFields = allZeroFields.sort(function (a, b) { + return b.length - a.length; + })[0]; + var newHost = void 0; + if (longestZeroFields && longestZeroFields.length > 1) { + var newFirst = fields.slice(0, longestZeroFields.index); + var newLast = fields.slice(longestZeroFields.index + longestZeroFields.length); + newHost = newFirst.join(":") + "::" + newLast.join(":"); + } else { + newHost = fields.join(":"); + } + if (zone) { + newHost += "%" + zone; + } + return newHost; + } else { + return host; + } + } + var URI_PARSE = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i; + var NO_MATCH_IS_UNDEFINED = "".match(/(){0}/)[1] === undefined; + function parse(uriString) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var components = {}; + var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL; + if (options.reference === "suffix") uriString = (options.scheme ? options.scheme + ":" : "") + "//" + uriString; + var matches = uriString.match(URI_PARSE); + if (matches) { + if (NO_MATCH_IS_UNDEFINED) { + //store each component + components.scheme = matches[1]; + components.userinfo = matches[3]; + components.host = matches[4]; + components.port = parseInt(matches[5], 10); + components.path = matches[6] || ""; + components.query = matches[7]; + components.fragment = matches[8]; + //fix port number + if (isNaN(components.port)) { + components.port = matches[5]; + } + } else { + //IE FIX for improper RegExp matching + //store each component + components.scheme = matches[1] || undefined; + components.userinfo = uriString.indexOf("@") !== -1 ? matches[3] : undefined; + components.host = uriString.indexOf("//") !== -1 ? matches[4] : undefined; + components.port = parseInt(matches[5], 10); + components.path = matches[6] || ""; + components.query = uriString.indexOf("?") !== -1 ? matches[7] : undefined; + components.fragment = uriString.indexOf("#") !== -1 ? matches[8] : undefined; + //fix port number + if (isNaN(components.port)) { + components.port = uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? matches[4] : undefined; + } + } + if (components.host) { + //normalize IP hosts + components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol); + } + //determine reference type + if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) { + components.reference = "same-document"; + } else if (components.scheme === undefined) { + components.reference = "relative"; + } else if (components.fragment === undefined) { + components.reference = "absolute"; + } else { + components.reference = "uri"; + } + //check for reference errors + if (options.reference && options.reference !== "suffix" && options.reference !== components.reference) { + components.error = components.error || "URI is not a " + options.reference + " reference."; + } + //find scheme handler + var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; + //check if scheme can't handle IRIs + if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) { + //if host component is a domain name + if (components.host && (options.domainHost || schemeHandler && schemeHandler.domainHost)) { + //convert Unicode IDN -> ASCII IDN + try { + components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()); + } catch (e) { + components.error = components.error || "Host's domain name can not be converted to ASCII via punycode: " + e; + } + } + //convert IRI -> URI + _normalizeComponentEncoding(components, URI_PROTOCOL); + } else { + //normalize encodings + _normalizeComponentEncoding(components, protocol); + } + //perform scheme specific parsing + if (schemeHandler && schemeHandler.parse) { + schemeHandler.parse(components, options); + } + } else { + components.error = components.error || "URI can not be parsed."; + } + return components; + } + + function _recomposeAuthority(components, options) { + var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL; + var uriTokens = []; + if (components.userinfo !== undefined) { + uriTokens.push(components.userinfo); + uriTokens.push("@"); + } + if (components.host !== undefined) { + //normalize IP hosts, add brackets and escape zone separator for IPv6 + uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, function (_, $1, $2) { + return "[" + $1 + ($2 ? "%25" + $2 : "") + "]"; + })); + } + if (typeof components.port === "number") { + uriTokens.push(":"); + uriTokens.push(components.port.toString(10)); + } + return uriTokens.length ? uriTokens.join("") : undefined; + } + + var RDS1 = /^\.\.?\//; + var RDS2 = /^\/\.(\/|$)/; + var RDS3 = /^\/\.\.(\/|$)/; + var RDS5 = /^\/?(?:.|\n)*?(?=\/|$)/; + function removeDotSegments(input) { + var output = []; + while (input.length) { + if (input.match(RDS1)) { + input = input.replace(RDS1, ""); + } else if (input.match(RDS2)) { + input = input.replace(RDS2, "/"); + } else if (input.match(RDS3)) { + input = input.replace(RDS3, "/"); + output.pop(); + } else if (input === "." || input === "..") { + input = ""; + } else { + var im = input.match(RDS5); + if (im) { + var s = im[0]; + input = input.slice(s.length); + output.push(s); + } else { + throw new Error("Unexpected dot segment condition"); + } + } + } + return output.join(""); + } + + function serialize(components) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var protocol = options.iri ? IRI_PROTOCOL : URI_PROTOCOL; + var uriTokens = []; + //find scheme handler + var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; + //perform scheme specific serialization + if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options); + if (components.host) { + //if host component is an IPv6 address + if (protocol.IPV6ADDRESS.test(components.host)) {} + //TODO: normalize IPv6 address as per RFC 5952 + + //if host component is a domain name + else if (options.domainHost || schemeHandler && schemeHandler.domainHost) { + //convert IDN via punycode + try { + components.host = !options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host); + } catch (e) { + components.error = components.error || "Host's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; + } + } + } + //normalize encoding + _normalizeComponentEncoding(components, protocol); + if (options.reference !== "suffix" && components.scheme) { + uriTokens.push(components.scheme); + uriTokens.push(":"); + } + var authority = _recomposeAuthority(components, options); + if (authority !== undefined) { + if (options.reference !== "suffix") { + uriTokens.push("//"); + } + uriTokens.push(authority); + if (components.path && components.path.charAt(0) !== "/") { + uriTokens.push("/"); + } + } + if (components.path !== undefined) { + var s = components.path; + if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) { + s = removeDotSegments(s); + } + if (authority === undefined) { + s = s.replace(/^\/\//, "/%2F"); //don't allow the path to start with "//" + } + uriTokens.push(s); + } + if (components.query !== undefined) { + uriTokens.push("?"); + uriTokens.push(components.query); + } + if (components.fragment !== undefined) { + uriTokens.push("#"); + uriTokens.push(components.fragment); + } + return uriTokens.join(""); //merge tokens into a string + } + + function resolveComponents(base, relative) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var skipNormalization = arguments[3]; + + var target = {}; + if (!skipNormalization) { + base = parse(serialize(base, options), options); //normalize base components + relative = parse(serialize(relative, options), options); //normalize relative components + } + options = options || {}; + if (!options.tolerant && relative.scheme) { + target.scheme = relative.scheme; + //target.authority = relative.authority; + target.userinfo = relative.userinfo; + target.host = relative.host; + target.port = relative.port; + target.path = removeDotSegments(relative.path || ""); + target.query = relative.query; + } else { + if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) { + //target.authority = relative.authority; + target.userinfo = relative.userinfo; + target.host = relative.host; + target.port = relative.port; + target.path = removeDotSegments(relative.path || ""); + target.query = relative.query; + } else { + if (!relative.path) { + target.path = base.path; + if (relative.query !== undefined) { + target.query = relative.query; + } else { + target.query = base.query; + } + } else { + if (relative.path.charAt(0) === "/") { + target.path = removeDotSegments(relative.path); + } else { + if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) { + target.path = "/" + relative.path; + } else if (!base.path) { + target.path = relative.path; + } else { + target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path; + } + target.path = removeDotSegments(target.path); + } + target.query = relative.query; + } + //target.authority = base.authority; + target.userinfo = base.userinfo; + target.host = base.host; + target.port = base.port; + } + target.scheme = base.scheme; + } + target.fragment = relative.fragment; + return target; + } + + function resolve(baseURI, relativeURI, options) { + var schemelessOptions = assign({ scheme: 'null' }, options); + return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions); + } + + function normalize(uri, options) { + if (typeof uri === "string") { + uri = serialize(parse(uri, options), options); + } else if (typeOf(uri) === "object") { + uri = parse(serialize(uri, options), options); + } + return uri; + } + + function equal(uriA, uriB, options) { + if (typeof uriA === "string") { + uriA = serialize(parse(uriA, options), options); + } else if (typeOf(uriA) === "object") { + uriA = serialize(uriA, options); + } + if (typeof uriB === "string") { + uriB = serialize(parse(uriB, options), options); + } else if (typeOf(uriB) === "object") { + uriB = serialize(uriB, options); + } + return uriA === uriB; + } + + function escapeComponent(str, options) { + return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE, pctEncChar); + } + + function unescapeComponent(str, options) { + return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED, pctDecChars); + } + + var handler = { + scheme: "http", + domainHost: true, + parse: function parse(components, options) { + //report missing host + if (!components.host) { + components.error = components.error || "HTTP URIs must have a host."; + } + return components; + }, + serialize: function serialize(components, options) { + //normalize the default port + if (components.port === (String(components.scheme).toLowerCase() !== "https" ? 80 : 443) || components.port === "") { + components.port = undefined; + } + //normalize the empty path + if (!components.path) { + components.path = "/"; + } + //NOTE: We do not parse query strings for HTTP URIs + //as WWW Form Url Encoded query strings are part of the HTML4+ spec, + //and not the HTTP spec. + return components; + } + }; + + var handler$1 = { + scheme: "https", + domainHost: handler.domainHost, + parse: handler.parse, + serialize: handler.serialize + }; + + var O = {}; + var isIRI = true; + //RFC 3986 + var UNRESERVED$$ = "[A-Za-z0-9\\-\\.\\_\\~" + (isIRI ? "\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF" : "") + "]"; + var HEXDIG$$ = "[0-9A-Fa-f]"; //case-insensitive + var PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)); //expanded + //RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; = + //const ATEXT$$ = "[A-Za-z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]"; + //const WSP$$ = "[\\x20\\x09]"; + //const OBS_QTEXT$$ = "[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]"; //(%d1-8 / %d11-12 / %d14-31 / %d127) + //const QTEXT$$ = merge("[\\x21\\x23-\\x5B\\x5D-\\x7E]", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext + //const VCHAR$$ = "[\\x21-\\x7E]"; + //const WSP$$ = "[\\x20\\x09]"; + //const OBS_QP$ = subexp("\\\\" + merge("[\\x00\\x0D\\x0A]", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext + //const FWS$ = subexp(subexp(WSP$$ + "*" + "\\x0D\\x0A") + "?" + WSP$$ + "+"); + //const QUOTED_PAIR$ = subexp(subexp("\\\\" + subexp(VCHAR$$ + "|" + WSP$$)) + "|" + OBS_QP$); + //const QUOTED_STRING$ = subexp('\\"' + subexp(FWS$ + "?" + QCONTENT$) + "*" + FWS$ + "?" + '\\"'); + var ATEXT$$ = "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]"; + var QTEXT$$ = "[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]"; + var VCHAR$$ = merge(QTEXT$$, "[\\\"\\\\]"); + var SOME_DELIMS$$ = "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"; + var UNRESERVED = new RegExp(UNRESERVED$$, "g"); + var PCT_ENCODED = new RegExp(PCT_ENCODED$, "g"); + var NOT_LOCAL_PART = new RegExp(merge("[^]", ATEXT$$, "[\\.]", '[\\"]', VCHAR$$), "g"); + var NOT_HFNAME = new RegExp(merge("[^]", UNRESERVED$$, SOME_DELIMS$$), "g"); + var NOT_HFVALUE = NOT_HFNAME; + function decodeUnreserved(str) { + var decStr = pctDecChars(str); + return !decStr.match(UNRESERVED) ? str : decStr; + } + var handler$2 = { + scheme: "mailto", + parse: function parse$$1(components, options) { + var mailtoComponents = components; + var to = mailtoComponents.to = mailtoComponents.path ? mailtoComponents.path.split(",") : []; + mailtoComponents.path = undefined; + if (mailtoComponents.query) { + var unknownHeaders = false; + var headers = {}; + var hfields = mailtoComponents.query.split("&"); + for (var x = 0, xl = hfields.length; x < xl; ++x) { + var hfield = hfields[x].split("="); + switch (hfield[0]) { + case "to": + var toAddrs = hfield[1].split(","); + for (var _x = 0, _xl = toAddrs.length; _x < _xl; ++_x) { + to.push(toAddrs[_x]); + } + break; + case "subject": + mailtoComponents.subject = unescapeComponent(hfield[1], options); + break; + case "body": + mailtoComponents.body = unescapeComponent(hfield[1], options); + break; + default: + unknownHeaders = true; + headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options); + break; + } + } + if (unknownHeaders) mailtoComponents.headers = headers; + } + mailtoComponents.query = undefined; + for (var _x2 = 0, _xl2 = to.length; _x2 < _xl2; ++_x2) { + var addr = to[_x2].split("@"); + addr[0] = unescapeComponent(addr[0]); + if (!options.unicodeSupport) { + //convert Unicode IDN -> ASCII IDN + try { + addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase()); + } catch (e) { + mailtoComponents.error = mailtoComponents.error || "Email address's domain name can not be converted to ASCII via punycode: " + e; + } + } else { + addr[1] = unescapeComponent(addr[1], options).toLowerCase(); + } + to[_x2] = addr.join("@"); + } + return mailtoComponents; + }, + serialize: function serialize$$1(mailtoComponents, options) { + var components = mailtoComponents; + var to = toArray(mailtoComponents.to); + if (to) { + for (var x = 0, xl = to.length; x < xl; ++x) { + var toAddr = String(to[x]); + var atIdx = toAddr.lastIndexOf("@"); + var localPart = toAddr.slice(0, atIdx).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar); + var domain = toAddr.slice(atIdx + 1); + //convert IDN via punycode + try { + domain = !options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain); + } catch (e) { + components.error = components.error || "Email address's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; + } + to[x] = localPart + "@" + domain; + } + components.path = to.join(","); + } + var headers = mailtoComponents.headers = mailtoComponents.headers || {}; + if (mailtoComponents.subject) headers["subject"] = mailtoComponents.subject; + if (mailtoComponents.body) headers["body"] = mailtoComponents.body; + var fields = []; + for (var name in headers) { + if (headers[name] !== O[name]) { + fields.push(name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) + "=" + headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)); + } + } + if (fields.length) { + components.query = fields.join("&"); + } + return components; + } + }; + + var URN_PARSE = /^([^\:]+)\:(.*)/; + //RFC 2141 + var handler$3 = { + scheme: "urn", + parse: function parse$$1(components, options) { + var matches = components.path && components.path.match(URN_PARSE); + var urnComponents = components; + if (matches) { + var scheme = options.scheme || urnComponents.scheme || "urn"; + var nid = matches[1].toLowerCase(); + var nss = matches[2]; + var urnScheme = scheme + ":" + (options.nid || nid); + var schemeHandler = SCHEMES[urnScheme]; + urnComponents.nid = nid; + urnComponents.nss = nss; + urnComponents.path = undefined; + if (schemeHandler) { + urnComponents = schemeHandler.parse(urnComponents, options); + } + } else { + urnComponents.error = urnComponents.error || "URN can not be parsed."; + } + return urnComponents; + }, + serialize: function serialize$$1(urnComponents, options) { + var scheme = options.scheme || urnComponents.scheme || "urn"; + var nid = urnComponents.nid; + var urnScheme = scheme + ":" + (options.nid || nid); + var schemeHandler = SCHEMES[urnScheme]; + if (schemeHandler) { + urnComponents = schemeHandler.serialize(urnComponents, options); + } + var uriComponents = urnComponents; + var nss = urnComponents.nss; + uriComponents.path = (nid || options.nid) + ":" + nss; + return uriComponents; + } + }; + + var UUID = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/; + //RFC 4122 + var handler$4 = { + scheme: "urn:uuid", + parse: function parse(urnComponents, options) { + var uuidComponents = urnComponents; + uuidComponents.uuid = uuidComponents.nss; + uuidComponents.nss = undefined; + if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) { + uuidComponents.error = uuidComponents.error || "UUID is not valid."; + } + return uuidComponents; + }, + serialize: function serialize(uuidComponents, options) { + var urnComponents = uuidComponents; + //normalize UUID + urnComponents.nss = (uuidComponents.uuid || "").toLowerCase(); + return urnComponents; + } + }; + + SCHEMES[handler.scheme] = handler; + SCHEMES[handler$1.scheme] = handler$1; + SCHEMES[handler$2.scheme] = handler$2; + SCHEMES[handler$3.scheme] = handler$3; + SCHEMES[handler$4.scheme] = handler$4; + + exports.SCHEMES = SCHEMES; + exports.pctEncChar = pctEncChar; + exports.pctDecChars = pctDecChars; + exports.parse = parse; + exports.removeDotSegments = removeDotSegments; + exports.serialize = serialize; + exports.resolveComponents = resolveComponents; + exports.resolve = resolve; + exports.normalize = normalize; + exports.equal = equal; + exports.escapeComponent = escapeComponent; + exports.unescapeComponent = unescapeComponent; + + Object.defineProperty(exports, '__esModule', { value: true }); + + }))); + + + },{}],"ajv":[function(require,module,exports){ + 'use strict'; + + var compileSchema = require('./compile') + , resolve = require('./compile/resolve') + , Cache = require('./cache') + , SchemaObject = require('./compile/schema_obj') + , stableStringify = require('fast-json-stable-stringify') + , formats = require('./compile/formats') + , rules = require('./compile/rules') + , $dataMetaSchema = require('./data') + , util = require('./compile/util'); + + module.exports = Ajv; + + Ajv.prototype.validate = validate; + Ajv.prototype.compile = compile; + Ajv.prototype.addSchema = addSchema; + Ajv.prototype.addMetaSchema = addMetaSchema; + Ajv.prototype.validateSchema = validateSchema; + Ajv.prototype.getSchema = getSchema; + Ajv.prototype.removeSchema = removeSchema; + Ajv.prototype.addFormat = addFormat; + Ajv.prototype.errorsText = errorsText; + + Ajv.prototype._addSchema = _addSchema; + Ajv.prototype._compile = _compile; + + Ajv.prototype.compileAsync = require('./compile/async'); + var customKeyword = require('./keyword'); + Ajv.prototype.addKeyword = customKeyword.add; + Ajv.prototype.getKeyword = customKeyword.get; + Ajv.prototype.removeKeyword = customKeyword.remove; + + var errorClasses = require('./compile/error_classes'); + Ajv.ValidationError = errorClasses.Validation; + Ajv.MissingRefError = errorClasses.MissingRef; + Ajv.$dataMetaSchema = $dataMetaSchema; + + var META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema'; + + var META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes' ]; + var META_SUPPORT_DATA = ['/properties']; + + /** + * Creates validator instance. + * Usage: `Ajv(opts)` + * @param {Object} opts optional options + * @return {Object} ajv instance + */ + function Ajv(opts) { + if (!(this instanceof Ajv)) return new Ajv(opts); + opts = this._opts = util.copy(opts) || {}; + setLogger(this); + this._schemas = {}; + this._refs = {}; + this._fragments = {}; + this._formats = formats(opts.format); + var schemaUriFormat = this._schemaUriFormat = this._formats['uri-reference']; + this._schemaUriFormatFunc = function (str) { return schemaUriFormat.test(str); }; + + this._cache = opts.cache || new Cache; + this._loadingSchemas = {}; + this._compilations = []; + this.RULES = rules(); + this._getId = chooseGetId(opts); + + opts.loopRequired = opts.loopRequired || Infinity; + if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true; + if (opts.serialize === undefined) opts.serialize = stableStringify; + this._metaOpts = getMetaSchemaOptions(this); + + if (opts.formats) addInitialFormats(this); + addDraft6MetaSchema(this); + if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta); + addInitialSchemas(this); + } + + + + /** + * Validate data using schema + * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize. + * @this Ajv + * @param {String|Object} schemaKeyRef key, ref or schema object + * @param {Any} data to be validated + * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`). + */ + function validate(schemaKeyRef, data) { + var v; + if (typeof schemaKeyRef == 'string') { + v = this.getSchema(schemaKeyRef); + if (!v) throw new Error('no schema with key or ref "' + schemaKeyRef + '"'); + } else { + var schemaObj = this._addSchema(schemaKeyRef); + v = schemaObj.validate || this._compile(schemaObj); + } + + var valid = v(data); + if (v.$async !== true) this.errors = v.errors; + return valid; + } + + + /** + * Create validating function for passed schema. + * @this Ajv + * @param {Object} schema schema object + * @param {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords. + * @return {Function} validating function + */ + function compile(schema, _meta) { + var schemaObj = this._addSchema(schema, undefined, _meta); + return schemaObj.validate || this._compile(schemaObj); + } + + + /** + * Adds schema to the instance. + * @this Ajv + * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored. + * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`. + * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead. + * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead. + * @return {Ajv} this for method chaining + */ + function addSchema(schema, key, _skipValidation, _meta) { + if (Array.isArray(schema)){ + for (var i=0; i} errors optional array of validation errors, if not passed errors from the instance are used. + * @param {Object} options optional options with properties `separator` and `dataVar`. + * @return {String} human readable string with all errors descriptions + */ + function errorsText(errors, options) { + errors = errors || this.errors; + if (!errors) return 'No errors'; + options = options || {}; + var separator = options.separator === undefined ? ', ' : options.separator; + var dataVar = options.dataVar === undefined ? 'data' : options.dataVar; + + var text = ''; + for (var i=0; i Date: Wed, 13 Jun 2018 16:01:13 +0200 Subject: [PATCH 011/127] rename source --> src --- services/docker-compose.debug.yml | 2 +- services/web/server/Dockerfile | 2 +- services/web/server/{source => src}/async_sio.py | 0 services/web/server/{source => src}/comp_backend_api.py | 0 services/web/server/{source => src}/comp_backend_setup.py | 0 services/web/server/{source => src}/comp_backend_worker.py | 0 services/web/server/{source => src}/config.py | 0 services/web/server/{source => src}/director_proxy.py | 0 .../web/server/{source => src}/interactive_services_manager.py | 0 services/web/server/{source => src}/registry_api.py | 0 services/web/server/{source => src}/server.py | 0 services/web/server/{source => src}/utils.py | 0 services/web/server/{test => tests}/README.md | 0 13 files changed, 2 insertions(+), 2 deletions(-) rename services/web/server/{source => src}/async_sio.py (100%) rename services/web/server/{source => src}/comp_backend_api.py (100%) rename services/web/server/{source => src}/comp_backend_setup.py (100%) rename services/web/server/{source => src}/comp_backend_worker.py (100%) rename services/web/server/{source => src}/config.py (100%) rename services/web/server/{source => src}/director_proxy.py (100%) rename services/web/server/{source => src}/interactive_services_manager.py (100%) rename services/web/server/{source => src}/registry_api.py (100%) rename services/web/server/{source => src}/server.py (100%) rename services/web/server/{source => src}/utils.py (100%) rename services/web/server/{test => tests}/README.md (100%) diff --git a/services/docker-compose.debug.yml b/services/docker-compose.debug.yml index 7d0d23201a2..d96c90fd154 100644 --- a/services/docker-compose.debug.yml +++ b/services/docker-compose.debug.yml @@ -20,7 +20,7 @@ services: - DIRECTOR_PORT=8001 - SIMCORE_WEB_CONFIG=development volumes: - - './web/server/source:/usr/src/source' + - './web/server/src:/usr/src/source' - './web/client/source-output:/usr/src/source/client' - './web/server/test:/usr/src/test' - ../packages:/usr/src/packages diff --git a/services/web/server/Dockerfile b/services/web/server/Dockerfile index 70b7c60fb5d..e3e5c37457a 100644 --- a/services/web/server/Dockerfile +++ b/services/web/server/Dockerfile @@ -96,7 +96,7 @@ RUN pip3 install --no-cache-dir -r /usr/src/requirements/prod.txt \ && python --version \ && pip list --format=columns -COPY $server_dir/source . +COPY $server_dir/src . ENTRYPOINT ["python", "-m", "aiohttp.web"] diff --git a/services/web/server/source/async_sio.py b/services/web/server/src/async_sio.py similarity index 100% rename from services/web/server/source/async_sio.py rename to services/web/server/src/async_sio.py diff --git a/services/web/server/source/comp_backend_api.py b/services/web/server/src/comp_backend_api.py similarity index 100% rename from services/web/server/source/comp_backend_api.py rename to services/web/server/src/comp_backend_api.py diff --git a/services/web/server/source/comp_backend_setup.py b/services/web/server/src/comp_backend_setup.py similarity index 100% rename from services/web/server/source/comp_backend_setup.py rename to services/web/server/src/comp_backend_setup.py diff --git a/services/web/server/source/comp_backend_worker.py b/services/web/server/src/comp_backend_worker.py similarity index 100% rename from services/web/server/source/comp_backend_worker.py rename to services/web/server/src/comp_backend_worker.py diff --git a/services/web/server/source/config.py b/services/web/server/src/config.py similarity index 100% rename from services/web/server/source/config.py rename to services/web/server/src/config.py diff --git a/services/web/server/source/director_proxy.py b/services/web/server/src/director_proxy.py similarity index 100% rename from services/web/server/source/director_proxy.py rename to services/web/server/src/director_proxy.py diff --git a/services/web/server/source/interactive_services_manager.py b/services/web/server/src/interactive_services_manager.py similarity index 100% rename from services/web/server/source/interactive_services_manager.py rename to services/web/server/src/interactive_services_manager.py diff --git a/services/web/server/source/registry_api.py b/services/web/server/src/registry_api.py similarity index 100% rename from services/web/server/source/registry_api.py rename to services/web/server/src/registry_api.py diff --git a/services/web/server/source/server.py b/services/web/server/src/server.py similarity index 100% rename from services/web/server/source/server.py rename to services/web/server/src/server.py diff --git a/services/web/server/source/utils.py b/services/web/server/src/utils.py similarity index 100% rename from services/web/server/source/utils.py rename to services/web/server/src/utils.py diff --git a/services/web/server/test/README.md b/services/web/server/tests/README.md similarity index 100% rename from services/web/server/test/README.md rename to services/web/server/tests/README.md From e84ff9b8a3a1fb082d9063ca18d7546c5ccd9354 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 13 Jun 2018 17:21:48 +0200 Subject: [PATCH 012/127] added a little validation test to the main app ... look at the console output when loading it :) --- .../client/source/class/qxapp/Application.js | 35 ++++++++++++++ .../client/source/class/qxapp/wrappers/Ajv.js | 47 +++++++++---------- .../resource/qxapp/node-meta-v0.0.1.json | 16 +++---- 3 files changed, 63 insertions(+), 35 deletions(-) diff --git a/services/web/client/source/class/qxapp/Application.js b/services/web/client/source/class/qxapp/Application.js index 71b05646308..914f6bf2707 100644 --- a/services/web/client/source/class/qxapp/Application.js +++ b/services/web/client/source/class/qxapp/Application.js @@ -75,6 +75,41 @@ qx.Class.define("qxapp.Application", { top: "10%", height: "30%" }); + /** a little ajv test */ + let loader = new qx.io.request.Xhr("/resource/qxapp/node-meta-v0.0.1.json"); + loader.addListener("success", e => { + let data = e.getTarget().getResponse(); + let ajv = new qxapp.wrappers.Ajv(data); + let good = ajv.validate({ + key: "service/computational/sleeper", + tag: "0.0.0-alpha", + name: "a little test node", + description: "just the bare minimum", + authors: [ + { + name: "Tobias Oetiker", + email: "oetiker@itis.ethz.ch" + } + ], + contact: "oetiker@itis.ethz.ch", + inputs: [], + outputs: [] + }); + console.log("validation result good", good); + let bad = ajv.validate({ + key: "service/computational/sleeper", + tag: "d0.0.0-alpha", + name: "a little test node", + description: "just the bare minimum", + authors: [ + ], + contact: "oetiker@itis.ethz.ch", + inputs: [], + outputs: [] + }); + console.log("validation result bad", bad); + }); + loader.send(); } } }); diff --git a/services/web/client/source/class/qxapp/wrappers/Ajv.js b/services/web/client/source/class/qxapp/wrappers/Ajv.js index 16e80e5a333..811bcafbebf 100644 --- a/services/web/client/source/class/qxapp/wrappers/Ajv.js +++ b/services/web/client/source/class/qxapp/wrappers/Ajv.js @@ -1,45 +1,40 @@ /* ************************************************************************ Copyright: 2018 ITIS Foundation License: MIT - Authors: Tobi Oetiker + Authors: Tobi Oetiker Utf8Check: äöü ************************************************************************ */ /** - * A qooxdoo wrapper for Ajv + * A qooxdoo wrapper for Ajv (https://github.com/epoberezkin/ajv) */ -qx.Class.define("qxapp.wrappers.Avj", { + +/* global Ajv */ +/* eslint new-cap: [2, {capIsNewExceptions: ["Ajv"]}] */ + +qx.Class.define("qxapp.wrappers.Ajv", { extend: qx.core.Object, - construct: function(cfg) { + construct: function(schema,opts) { this.base(arguments); - this.__avj = new Ajv(cfg); + this.__ajv = new Ajv(opts); + this.__validator = this.__ajv.compile(schema); }, members: { - __avj: null, - addSchema: function(schema) { - this.__avj.addSchema(schema); - return this; - }, - addFormat: function(format, def) { - this.__avj.addFormat(format, def); - return this; - }, - addKeyword: function(keyword, def) { - this.__avj.addKeyword(keyword, def); - return this; - }, - compile: function(schema) { - return this.__avj.compile(schema); - }, - validate: function(schema, data) { - return this.__avj.validate(schema, data); - }, - errors: function() { - return this.__avj.errors; + __ajv: null, + __validator: null, + validate: function(data) { + if (this.__validator(data)) { + return true; + } + else { + return this.__validator.errors; + } } } }); +/* eslint-disable */ + // https://raw.githubusercontent.com/epoberezkin/ajv-dist/master/dist/ajv.bundle.js (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Ajv = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i Date: Thu, 14 Jun 2018 11:08:28 +0200 Subject: [PATCH 013/127] fix publish/subscribe initialization and add up to date mockup data --- services/sidecar/src/sidecar/sidecar.py | 4 +- services/web/server/src/comp_backend_api.py | 127 +++--- services/web/server/src/comp_backend_setup.py | 2 - .../web/server/src/mock/SleepersPipeline.json | 378 +++++++++++++++++ services/web/server/src/mock/mockup.json | 384 ++++++++++++++++++ services/web/server/src/server.py | 35 +- 6 files changed, 850 insertions(+), 80 deletions(-) create mode 100644 services/web/server/src/mock/SleepersPipeline.json create mode 100644 services/web/server/src/mock/mockup.json diff --git a/services/sidecar/src/sidecar/sidecar.py b/services/sidecar/src/sidecar/sidecar.py index f32213bbb1b..ca35a009063 100644 --- a/services/sidecar/src/sidecar/sidecar.py +++ b/services/sidecar/src/sidecar/sidecar.py @@ -142,11 +142,11 @@ def _bg_job(self, task, log_file): clean_line = line.strip() if clean_line.lower().startswith("[progress]"): progress = clean_line.lower().lstrip("[progress]").rstrip("%").strip() - prog_data = {"Channel" : "Progress", "Node": task.internal_id, "Progress" : progress} + prog_data = {"Channel" : "Progress", "Node": task.node_id, "Progress" : progress} prog_body = json.dumps(prog_data) channel.basic_publish(exchange=self._pika.progress_channel, routing_key='', body=prog_body) else: - log_data = {"Channel" : "Log", "Node": task.internal_id, "Message" : clean_line} + log_data = {"Channel" : "Log", "Node": task.node_id, "Message" : clean_line} log_body = json.dumps(log_data) channel.basic_publish(exchange=self._pika.log_channel, routing_key='', body=log_body) diff --git a/services/web/server/src/comp_backend_api.py b/services/web/server/src/comp_backend_api.py index 6216e970556..c1d66ddc39c 100644 --- a/services/web/server/src/comp_backend_api.py +++ b/services/web/server/src/comp_backend_api.py @@ -16,6 +16,9 @@ from simcore_sdk.models.pipeline_models import (Base, ComputationalPipeline, ComputationalTask) +import pprint +pp = pprint.PrettyPrinter(indent=4) + # db config db_config = db_config() db = create_engine(db_config.endpoint, client_encoding='utf8') @@ -52,65 +55,71 @@ async def start_pipeline(request): request_data = await request.json() - _id = request_data['pipeline_mockup_id'] - - with open('mockup.json') as f: - mockup = json.load(f) - - nodes = mockup['nodes'] - links = mockup['links'] - - dag_adjacency_list = dict() - tasks = dict() - for node in nodes: - node_id = node['uuid'] - # find connections - successor_nodes = [] - task = {} - task["input"] = node["inputs"] - task["output"] = node["outputs"] - task["image"] = { "name" : "masu.speag.com/simcore/services/comp/sleeper", - "tag" : "1.0"} - - for link in links: - if link['node1Id'] == node_id: - successor_node_id = link['node2Id'] - if successor_node_id not in successor_nodes: - successor_nodes.append(successor_node_id) - if link['node2Id'] == node_id: - # there might be something coming in - predecessor_node_id = link['node1Id'] - output_port = link['port1Id'] - input_port = link['port2Id'] - # we use predecessor_node_id.output_port as id fo the input - for t in task['input']: - if t['key'] == input_port: - t['value'] = 'link.' + predecessor_node_id + "." + output_port - - - if len(successor_nodes): - dag_adjacency_list[node_id] = successor_nodes - tasks[node_id] = task - - pipeline = ComputationalPipeline(dag_adjacency_list=dag_adjacency_list, state=0) - - db_session.add(pipeline) - db_session.flush() - - pipeline_id = pipeline.pipeline_id - pipeline_name = "mockup" - internal_id = 1 - - for node_id in tasks: - task = tasks[node_id] - new_task = ComputationalTask(pipeline_id=pipeline_id, node_id=node_id, internal_id=internal_id, image=task['image'], - input=task['input'], output=task['output'], submit=datetime.datetime.utcnow()) - internal_id = internal_id+1 - db_session.add(new_task) - - db_session.commit() - - task = celery.send_task('comp.task', args=(pipeline_id,), kwargs={}) + pp.pprint(request_data) + + try: + _id = request_data['pipeline_mockup_id'] + + with open('mock/SleepersPipeline.json') as f: + mockup = json.load(f) + + nodes = mockup['nodes'] + links = mockup['links'] + + dag_adjacency_list = dict() + tasks = dict() + for node in nodes: + node_id = node['uuid'] + # find connections + successor_nodes = [] + task = {} + task["input"] = node["inputs"] + task["output"] = node["outputs"] + task["image"] = { "name" : node['key'], + "tag" : node['tag']} + + for link in links: + if link['node1Id'] == node_id: + successor_node_id = link['node2Id'] + if successor_node_id not in successor_nodes: + successor_nodes.append(successor_node_id) + if link['node2Id'] == node_id: + # there might be something coming in + predecessor_node_id = link['node1Id'] + output_port = link['port1Id'] + input_port = link['port2Id'] + # we use predecessor_node_id.output_port as id fo the input + for t in task['input']: + if t['key'] == input_port: + t['value'] = 'link.' + predecessor_node_id + "." + output_port + + + if len(successor_nodes): + dag_adjacency_list[node_id] = successor_nodes + tasks[node_id] = task + + pipeline = ComputationalPipeline(dag_adjacency_list=dag_adjacency_list, state=0) + + db_session.add(pipeline) + db_session.flush() + + pipeline_id = pipeline.pipeline_id + pipeline_name = "mockup" + internal_id = 1 + + for node_id in tasks: + task = tasks[node_id] + new_task = ComputationalTask(pipeline_id=pipeline_id, node_id=node_id, internal_id=internal_id, image=task['image'], + input=task['input'], output=task['output'], submit=datetime.datetime.utcnow()) + internal_id = internal_id+1 + db_session.add(new_task) + + db_session.commit() + + task = celery.send_task('comp.task', args=(pipeline_id,), kwargs={}) + + except: + pass response = {} response['pipeline_name'] = pipeline_name diff --git a/services/web/server/src/comp_backend_setup.py b/services/web/server/src/comp_backend_setup.py index dbfee7801b5..de3e98ff669 100644 --- a/services/web/server/src/comp_backend_setup.py +++ b/services/web/server/src/comp_backend_setup.py @@ -14,11 +14,9 @@ async def on_message(message: aio_pika.IncomingMessage): with message.process(): data = json.loads(message.body) - #print("[x] %r" % data) if data["Channel"] == "Log": await SIO.emit("logger", data = json.dumps(data)) elif data["Channel"] == "Progress": - #print(data["Progress"]) await SIO.emit("progress", data = json.dumps(data)) async def subscribe(): diff --git a/services/web/server/src/mock/SleepersPipeline.json b/services/web/server/src/mock/SleepersPipeline.json new file mode 100644 index 00000000000..81182a0ac9f --- /dev/null +++ b/services/web/server/src/mock/SleepersPipeline.json @@ -0,0 +1,378 @@ +{ + "nodes": [{ + "uuid": "dd329e10-a906-42da-a7b3-4c4fec4a786f", + "key": "masu.speag.com/simcore/services/comp/sleeper", + "tag": "1.0", + "name": "Node 1", + "desc": "Node 1", + "position": { + "x": 50, + "y": 100 + }, + "inputs": [{ + "key": "in_1", + "label": "File-url", + "desc": "File-url", + "type": "fileUrl", + "value": null + }, { + "key": "in_2", + "label": "Number", + "desc": "Number", + "type": "integer", + "value": null + } + ], + "outputs": [{ + "key": "out_1", + "label": "File-url", + "desc": "File-url", + "type": "fileUrl", + "value": null + }, { + "key": "out_2", + "label": "Number", + "desc": "Number", + "type": "integer", + "value": null + } + ], + "settings": [] + }, { + "uuid": "3fad99a2-31b3-48a2-9066-1a66fc21aa52", + "key": "masu.speag.com/simcore/services/comp/sleeper", + "tag": "1.0", + "name": "Node 2", + "desc": "Node 2", + "position": { + "x": 50, + "y": 300 + }, + "inputs": [{ + "key": "in_1", + "label": "File-url", + "desc": "File-url", + "type": "fileUrl", + "value": null + }, { + "key": "in_2", + "label": "Number", + "desc": "Number", + "type": "integer", + "value": null + } + ], + "outputs": [{ + "key": "out_1", + "label": "File-url", + "desc": "File-url", + "type": "fileUrl", + "value": null + }, { + "key": "out_2", + "label": "Number", + "desc": "Number", + "type": "integer", + "value": null + } + ], + "settings": [] + }, { + "uuid": "3a97f542-93c4-419c-b5c9-bcf9ff3ada7e", + "key": "masu.speag.com/simcore/services/comp/sleeper", + "tag": "1.0", + "name": "Node 3", + "desc": "Node 3", + "position": { + "x": 300, + "y": 100 + }, + "inputs": [{ + "key": "in_1", + "label": "File-url", + "desc": "File-url", + "type": "fileUrl", + "value": null + }, { + "key": "in_2", + "label": "Number", + "desc": "Number", + "type": "integer", + "value": null + } + ], + "outputs": [{ + "key": "out_1", + "label": "File-url", + "desc": "File-url", + "type": "fileUrl", + "value": null + }, { + "key": "out_2", + "label": "Number", + "desc": "Number", + "type": "integer", + "value": null + } + ], + "settings": [] + }, { + "uuid": "9c35ecbc-8219-4538-ba2e-bad8b6e64cda", + "key": "masu.speag.com/simcore/services/comp/sleeper", + "tag": "1.0", + "name": "Node 4", + "desc": "Node 4", + "position": { + "x": 300, + "y": 300 + }, + "inputs": [{ + "key": "in_1", + "label": "File-url", + "desc": "File-url", + "type": "fileUrl", + "value": null + }, { + "key": "in_2", + "label": "Number", + "desc": "Number", + "type": "integer", + "value": null + } + ], + "outputs": [{ + "key": "out_1", + "label": "File-url", + "desc": "File-url", + "type": "fileUrl", + "value": null + }, { + "key": "out_2", + "label": "Number", + "desc": "Number", + "type": "integer", + "value": null + } + ], + "settings": [] + }, { + "uuid": "51ad1bc0-615e-406a-9886-e3639f51208c", + "key": "masu.speag.com/simcore/services/comp/sleeper", + "tag": "1.0", + "name": "Node 5", + "desc": "Node 5", + "position": { + "x": 550, + "y": 200 + }, + "inputs": [{ + "key": "in_1", + "label": "File-url", + "desc": "File-url", + "type": "fileUrl", + "value": null + }, { + "key": "in_2", + "label": "Number", + "desc": "Number", + "type": "integer", + "value": null + } + ], + "outputs": [{ + "key": "out_1", + "label": "File-url", + "desc": "File-url", + "type": "fileUrl", + "value": null + }, { + "key": "out_2", + "label": "Number", + "desc": "Number", + "type": "integer", + "value": null + } + ], + "settings": [] + }, { + "uuid": "5df77702-29d5-4513-b3f8-f2a40ed317fe", + "key": "masu.speag.com/simcore/services/comp/sleeper", + "tag": "1.0", + "name": "Node 6", + "desc": "Node 6", + "position": { + "x": 800, + "y": 100 + }, + "inputs": [{ + "key": "in_1", + "label": "File-url", + "desc": "File-url", + "type": "fileUrl", + "value": null + }, { + "key": "in_2", + "label": "Number", + "desc": "Number", + "type": "integer", + "value": null + } + ], + "outputs": [{ + "key": "out_1", + "label": "File-url", + "desc": "File-url", + "type": "fileUrl", + "value": null + }, { + "key": "out_2", + "label": "Number", + "desc": "Number", + "type": "integer", + "value": null + } + ], + "settings": [] + }, { + "uuid": "de2c84ed-a3bc-47c2-b54d-84a5c048236b", + "key": "masu.speag.com/simcore/services/comp/sleeper", + "tag": "1.0", + "name": "Node 7", + "desc": "Node 7", + "position": { + "x": 800, + "y": 300 + }, + "inputs": [{ + "key": "in_1", + "label": "File-url", + "desc": "File-url", + "type": "fileUrl", + "value": null + }, { + "key": "in_2", + "label": "Number", + "desc": "Number", + "type": "integer", + "value": null + } + ], + "outputs": [{ + "key": "out_1", + "label": "File-url", + "desc": "File-url", + "type": "fileUrl", + "value": null + }, { + "key": "out_2", + "label": "Number", + "desc": "Number", + "type": "integer", + "value": null + } + ], + "settings": [] + }, { + "uuid": "ba22104c-99e1-45c9-a09d-228400a6f9fb", + "key": "masu.speag.com/simcore/services/comp/sleeper", + "tag": "1.0", + "name": "Node 8", + "desc": "Node 8", + "position": { + "x": 1050, + "y": 200 + }, + "inputs": [{ + "key": "in_1", + "label": "File-url", + "desc": "File-url", + "type": "fileUrl", + "value": null + }, { + "key": "in_2", + "label": "Number", + "desc": "Number", + "type": "integer", + "value": null + } + ], + "outputs": [{ + "key": "out_1", + "label": "File-url", + "desc": "File-url", + "type": "fileUrl", + "value": null + }, { + "key": "out_2", + "label": "Number", + "desc": "Number", + "type": "integer", + "value": null + } + ], + "settings": [] + } + ], + "links": [{ + "uuid": "348729ae-f24c-49dd-9382-29b8dc83c36f", + "node1Id": "dd329e10-a906-42da-a7b3-4c4fec4a786f", + "port1Id": "out_1", + "node2Id": "3a97f542-93c4-419c-b5c9-bcf9ff3ada7e", + "port2Id": "in_1" + }, { + "uuid": "348729ae-f24c-49dd-9382-29b8dc83c361", + "node1Id": "dd329e10-a906-42da-a7b3-4c4fec4a786f", + "port1Id": "out_2", + "node2Id": "3a97f542-93c4-419c-b5c9-bcf9ff3ada7e", + "port2Id": "in_2" + }, { + "uuid": "81b0fd72-ff2b-451f-9d3e-2d2e99967302", + "node1Id": "3fad99a2-31b3-48a2-9066-1a66fc21aa52", + "port1Id": "out_1", + "node2Id": "9c35ecbc-8219-4538-ba2e-bad8b6e64cda", + "port2Id": "in_1" + }, { + "uuid": "81b0fd72-ff2b-451f-9d3e-2d2e99967301", + "node1Id": "3fad99a2-31b3-48a2-9066-1a66fc21aa52", + "port1Id": "out_2", + "node2Id": "9c35ecbc-8219-4538-ba2e-bad8b6e64cda", + "port2Id": "in_2" + }, { + "uuid": "f458bdd2-34b0-4989-a8fb-e6aad9362e10", + "node1Id": "3a97f542-93c4-419c-b5c9-bcf9ff3ada7e", + "port1Id": "out_1", + "node2Id": "51ad1bc0-615e-406a-9886-e3639f51208c", + "port2Id": "in_1" + }, { + "uuid": "95728bbf-a910-4136-a1e0-756bb786c14e", + "node1Id": "9c35ecbc-8219-4538-ba2e-bad8b6e64cda", + "port1Id": "out_2", + "node2Id": "51ad1bc0-615e-406a-9886-e3639f51208c", + "port2Id": "in_2" + }, { + "uuid": "3d280cee-9a90-4333-96ae-d6ee2526223c", + "node1Id": "51ad1bc0-615e-406a-9886-e3639f51208c", + "port1Id": "out_1", + "node2Id": "5df77702-29d5-4513-b3f8-f2a40ed317fe", + "port2Id": "in_1" + }, { + "uuid": "fc5eae4c-5632-4aba-8047-40ab47ae8f58", + "node1Id": "51ad1bc0-615e-406a-9886-e3639f51208c", + "port1Id": "out_2", + "node2Id": "de2c84ed-a3bc-47c2-b54d-84a5c048236b", + "port2Id": "in_2" + }, { + "uuid": "b2e7ec46-eac5-44a1-90b8-0e571b5bf695", + "node1Id": "5df77702-29d5-4513-b3f8-f2a40ed317fe", + "port1Id": "out_1", + "node2Id": "ba22104c-99e1-45c9-a09d-228400a6f9fb", + "port2Id": "in_1" + }, { + "uuid": "653c5a2a-81a2-4266-a06d-34624a760e67", + "node1Id": "de2c84ed-a3bc-47c2-b54d-84a5c048236b", + "port1Id": "out_2", + "node2Id": "ba22104c-99e1-45c9-a09d-228400a6f9fb", + "port2Id": "in_2" + } + ] +} diff --git a/services/web/server/src/mock/mockup.json b/services/web/server/src/mock/mockup.json new file mode 100644 index 00000000000..c1bb67c4cd9 --- /dev/null +++ b/services/web/server/src/mock/mockup.json @@ -0,0 +1,384 @@ +{ + "nodes": [{ + "uuid": "dd329e10-a906-42da-a7b3-4c4fec4a786f", + "key": "sleeper", + "label": "Node 1", + "desc": "Node 1", + "position": { + "x": 50, + "y": 100 + }, + "inputs": [{ + "key": "in_1", + "label": "File-url", + "desc": "File-url", + "type": "file-url", + "value": null + }, + { + "key": "in_2", + "label": "Number", + "desc": "Number", + "type": "number", + "value": null + }], + "outputs": [{ + "key": "out_1", + "label": "File-url", + "desc": "File-url", + "type": "file-url", + "value": null + }, + { + "key": "out_2", + "label": "Number", + "desc": "Number", + "type": "number", + "value": null + }], + "settings": [] + }, + { + "uuid": "3fad99a2-31b3-48a2-9066-1a66fc21aa52", + "key": "sleeper", + "label": "Node 2", + "desc": "Node 2", + "position": { + "x": 50, + "y": 300 + }, + "inputs": [{ + "key": "in_1", + "label": "File-url", + "desc": "File-url", + "type": "file-url", + "value": null + }, + { + "key": "in_2", + "label": "Number", + "desc": "Number", + "type": "number", + "value": null + }], + "outputs": [{ + "key": "out_1", + "label": "File-url", + "desc": "File-url", + "type": "file-url", + "value": null + }, + { + "key": "out_2", + "label": "Number", + "desc": "Number", + "type": "number", + "value": null + }], + "settings": [] + }, + { + "uuid": "3a97f542-93c4-419c-b5c9-bcf9ff3ada7e", + "key": "sleeper", + "label": "Node 3", + "desc": "Node 3", + "position": { + "x": 300, + "y": 100 + }, + "inputs": [{ + "key": "in_1", + "label": "File-url", + "desc": "File-url", + "type": "file-url", + "value": null + }, + { + "key": "in_2", + "label": "Number", + "desc": "Number", + "type": "number", + "value": null + }], + "outputs": [{ + "key": "out_1", + "label": "File-url", + "desc": "File-url", + "type": "file-url", + "value": null + }, + { + "key": "out_2", + "label": "Number", + "desc": "Number", + "type": "number", + "value": null + }], + "settings": [] + }, + { + "uuid": "9c35ecbc-8219-4538-ba2e-bad8b6e64cda", + "key": "sleeper", + "label": "Node 4", + "desc": "Node 4", + "position": { + "x": 300, + "y": 300 + }, + "inputs": [{ + "key": "in_1", + "label": "File-url", + "desc": "File-url", + "type": "file-url", + "value": null + }, + { + "key": "in_2", + "label": "Number", + "desc": "Number", + "type": "number", + "value": null + }], + "outputs": [{ + "key": "out_1", + "label": "File-url", + "desc": "File-url", + "type": "file-url", + "value": null + }, + { + "key": "out_2", + "label": "Number", + "desc": "Number", + "type": "number", + "value": null + }], + "settings": [] + }, + { + "uuid": "51ad1bc0-615e-406a-9886-e3639f51208c", + "key": "sleeper", + "label": "Node 5", + "desc": "Node 5", + "position": { + "x": 550, + "y": 200 + }, + "inputs": [{ + "key": "in_1", + "label": "File-url", + "desc": "File-url", + "type": "file-url", + "value": null + }, + { + "key": "in_2", + "label": "Number", + "desc": "Number", + "type": "number", + "value": null + }], + "outputs": [{ + "key": "out_1", + "label": "File-url", + "desc": "File-url", + "type": "file-url", + "value": null + }, + { + "key": "out_2", + "label": "Number", + "desc": "Number", + "type": "number", + "value": null + }], + "settings": [] + }, + { + "uuid": "5df77702-29d5-4513-b3f8-f2a40ed317fe", + "key": "sleeper", + "label": "Node 6", + "desc": "Node 6", + "position": { + "x": 800, + "y": 100 + }, + "inputs": [{ + "key": "in_1", + "label": "File-url", + "desc": "File-url", + "type": "file-url", + "value": null + }, + { + "key": "in_2", + "label": "Number", + "desc": "Number", + "type": "number", + "value": null + }], + "outputs": [{ + "key": "out_1", + "label": "File-url", + "desc": "File-url", + "type": "file-url", + "value": null + }, + { + "key": "out_2", + "label": "Number", + "desc": "Number", + "type": "number", + "value": null + }], + "settings": [] + }, + { + "uuid": "de2c84ed-a3bc-47c2-b54d-84a5c048236b", + "key": "sleeper", + "label": "Node 7", + "desc": "Node 7", + "position": { + "x": 800, + "y": 300 + }, + "inputs": [{ + "key": "in_1", + "label": "File-url", + "desc": "File-url", + "type": "file-url", + "value": null + }, + { + "key": "in_2", + "label": "Number", + "desc": "Number", + "type": "number", + "value": null + }], + "outputs": [{ + "key": "out_1", + "label": "File-url", + "desc": "File-url", + "type": "file-url", + "value": null + }, + { + "key": "out_2", + "label": "Number", + "desc": "Number", + "type": "number", + "value": null + }], + "settings": [] + }, + { + "uuid": "ba22104c-99e1-45c9-a09d-228400a6f9fb", + "key": "sleeper", + "label": "Node 8", + "desc": "Node 8", + "position": { + "x": 1050, + "y": 200 + }, + "inputs": [{ + "key": "in_1", + "label": "File-url", + "desc": "File-url", + "type": "file-url", + "value": null + }, + { + "key": "in_2", + "label": "Number", + "desc": "Number", + "type": "number", + "value": null + }], + "outputs": [{ + "key": "out_1", + "label": "File-url", + "desc": "File-url", + "type": "file-url", + "value": null + }, + { + "key": "out_2", + "label": "Number", + "desc": "Number", + "type": "number", + "value": null + }], + "settings": [] + }], + "links": [{ + "uuid": "348729ae-f24c-49dd-9382-29b8dc83c36f", + "node1Id": "dd329e10-a906-42da-a7b3-4c4fec4a786f", + "port1Id": "out_1", + "node2Id": "3a97f542-93c4-419c-b5c9-bcf9ff3ada7e", + "port2Id": "in_1" + }, + { + "uuid": "348729ae-f24c-49dd-9382-29b8dc83c361", + "node1Id": "dd329e10-a906-42da-a7b3-4c4fec4a786f", + "port1Id": "out_2", + "node2Id": "3a97f542-93c4-419c-b5c9-bcf9ff3ada7e", + "port2Id": "in_2" + }, + { + "uuid": "81b0fd72-ff2b-451f-9d3e-2d2e99967302", + "node1Id": "3fad99a2-31b3-48a2-9066-1a66fc21aa52", + "port1Id": "out_1", + "node2Id": "9c35ecbc-8219-4538-ba2e-bad8b6e64cda", + "port2Id": "in_1" + }, + { + "uuid": "81b0fd72-ff2b-451f-9d3e-2d2e99967301", + "node1Id": "3fad99a2-31b3-48a2-9066-1a66fc21aa52", + "port1Id": "out_2", + "node2Id": "9c35ecbc-8219-4538-ba2e-bad8b6e64cda", + "port2Id": "in_2" + }, + { + "uuid": "f458bdd2-34b0-4989-a8fb-e6aad9362e10", + "node1Id": "3a97f542-93c4-419c-b5c9-bcf9ff3ada7e", + "port1Id": "out_1", + "node2Id": "51ad1bc0-615e-406a-9886-e3639f51208c", + "port2Id": "in_1" + }, + { + "uuid": "95728bbf-a910-4136-a1e0-756bb786c14e", + "node1Id": "9c35ecbc-8219-4538-ba2e-bad8b6e64cda", + "port1Id": "out_2", + "node2Id": "51ad1bc0-615e-406a-9886-e3639f51208c", + "port2Id": "in_2" + }, + { + "uuid": "3d280cee-9a90-4333-96ae-d6ee2526223c", + "node1Id": "51ad1bc0-615e-406a-9886-e3639f51208c", + "port1Id": "out_1", + "node2Id": "5df77702-29d5-4513-b3f8-f2a40ed317fe", + "port2Id": "in_1" + }, + { + "uuid": "fc5eae4c-5632-4aba-8047-40ab47ae8f58", + "node1Id": "51ad1bc0-615e-406a-9886-e3639f51208c", + "port1Id": "out_2", + "node2Id": "de2c84ed-a3bc-47c2-b54d-84a5c048236b", + "port2Id": "in_2" + }, + { + "uuid": "b2e7ec46-eac5-44a1-90b8-0e571b5bf695", + "node1Id": "5df77702-29d5-4513-b3f8-f2a40ed317fe", + "port1Id": "out_1", + "node2Id": "ba22104c-99e1-45c9-a09d-228400a6f9fb", + "port2Id": "in_1" + }, + { + "uuid": "653c5a2a-81a2-4266-a06d-34624a760e67", + "node1Id": "de2c84ed-a3bc-47c2-b54d-84a5c048236b", + "port1Id": "out_2", + "node2Id": "ba22104c-99e1-45c9-a09d-228400a6f9fb", + "port2Id": "in_2" + }] +} \ No newline at end of file diff --git a/services/web/server/src/server.py b/services/web/server/src/server.py index c030b9196db..7fb711ac495 100644 --- a/services/web/server/src/server.py +++ b/services/web/server/src/server.py @@ -16,7 +16,7 @@ CONFIG = config.CONFIG[os.environ.get('SIMCORE_WEB_CONFIG', 'default')] -LOGGER = logging.getLogger(__file__) +_LOGGER = logging.getLogger(__file__) # TODO: add logging level via command line (e.g. increase logger level in production for diagonstics) logging.basicConfig( @@ -29,41 +29,42 @@ def create_app(args=()): """ #pylint: disable=W0613 - LOGGER.debug("Starting as %s ...", CONFIG) + _LOGGER.debug("Starting as %s ...", CONFIG) + + # subscribe to rabbit + loop = asyncio.get_event_loop() + loop.create_task(subscribe()) client_dir = CONFIG.SIMCORE_CLIENT_OUTDIR - _app = web.Application() - SIO.attach(_app) + app = web.Application() + SIO.attach(app) # http requests handlers async def _index(request): """Serve the client-side application.""" - LOGGER.debug("index.request:\n %s", request) + _LOGGER.debug("index.request:\n %s", request) index_path = os.path.join(client_dir, 'index.html') with open(index_path) as fhnd: return web.Response(text=fhnd.read(), content_type='text/html') # TODO: check whether this can be done at once - _app.router.add_static('/qxapp', os.path.join(client_dir, 'qxapp')) - _app.router.add_static( + app.router.add_static('/qxapp', os.path.join(client_dir, 'qxapp')) + app.router.add_static( '/transpiled', os.path.join(client_dir, 'transpiled')) - _app.router.add_static('/resource', os.path.join(client_dir, 'resource')) - _app.router.add_get('/', _index) + app.router.add_static('/resource', os.path.join(client_dir, 'resource')) + app.router.add_get('/', _index) - _app.router.add_routes(registry_routes) - _app.router.add_routes(comp_backend_routes) + app.router.add_routes(registry_routes) + app.router.add_routes(comp_backend_routes) - setup_swagger(_app) + setup_swagger(app) - return _app + return app if __name__ == '__main__': - app = create_app() - loop = asyncio.get_event_loop() - loop.create_task(subscribe()) - web.run_app(app, + web.run_app(create_app(), host=CONFIG.SIMCORE_WEB_HOSTNAME, port=CONFIG.SIMCORE_WEB_PORT) From 80d8b4a97dce443fb2c45ce0c1c605486402e7c2 Mon Sep 17 00:00:00 2001 From: Manuel Guidon Date: Thu, 14 Jun 2018 12:27:58 +0200 Subject: [PATCH 014/127] change default indentation for python in vscode-tmplate --- .vscode-template/settings.json | 6 +- services/web/server/src/comp_backend_api.py | 122 ++++++++++---------- 2 files changed, 64 insertions(+), 64 deletions(-) diff --git a/.vscode-template/settings.json b/.vscode-template/settings.json index 107ed94227f..16c1ebb8cf5 100644 --- a/.vscode-template/settings.json +++ b/.vscode-template/settings.json @@ -16,5 +16,9 @@ "eslint.alwaysShowStatus": true, "python.formatting.autopep8Args": [ "-max-line-length", "140" - ] + ], + "[python]":{ + "editor.detectIndentation" : false, + "editor.tabSize" : 4 + } } diff --git a/services/web/server/src/comp_backend_api.py b/services/web/server/src/comp_backend_api.py index c1d66ddc39c..9fd7b388304 100644 --- a/services/web/server/src/comp_backend_api.py +++ b/services/web/server/src/comp_backend_api.py @@ -57,69 +57,65 @@ async def start_pipeline(request): pp.pprint(request_data) - try: - _id = request_data['pipeline_mockup_id'] - - with open('mock/SleepersPipeline.json') as f: - mockup = json.load(f) - - nodes = mockup['nodes'] - links = mockup['links'] - - dag_adjacency_list = dict() - tasks = dict() - for node in nodes: - node_id = node['uuid'] - # find connections - successor_nodes = [] - task = {} - task["input"] = node["inputs"] - task["output"] = node["outputs"] - task["image"] = { "name" : node['key'], - "tag" : node['tag']} - - for link in links: - if link['node1Id'] == node_id: - successor_node_id = link['node2Id'] - if successor_node_id not in successor_nodes: - successor_nodes.append(successor_node_id) - if link['node2Id'] == node_id: - # there might be something coming in - predecessor_node_id = link['node1Id'] - output_port = link['port1Id'] - input_port = link['port2Id'] - # we use predecessor_node_id.output_port as id fo the input - for t in task['input']: - if t['key'] == input_port: - t['value'] = 'link.' + predecessor_node_id + "." + output_port - - - if len(successor_nodes): - dag_adjacency_list[node_id] = successor_nodes - tasks[node_id] = task - - pipeline = ComputationalPipeline(dag_adjacency_list=dag_adjacency_list, state=0) - - db_session.add(pipeline) - db_session.flush() - - pipeline_id = pipeline.pipeline_id - pipeline_name = "mockup" - internal_id = 1 - - for node_id in tasks: - task = tasks[node_id] - new_task = ComputationalTask(pipeline_id=pipeline_id, node_id=node_id, internal_id=internal_id, image=task['image'], - input=task['input'], output=task['output'], submit=datetime.datetime.utcnow()) - internal_id = internal_id+1 - db_session.add(new_task) - - db_session.commit() - - task = celery.send_task('comp.task', args=(pipeline_id,), kwargs={}) - - except: - pass + _id = request_data['pipeline_mockup_id'] + + with open('mock/SleepersPipeline.json') as f: + mockup = json.load(f) + + nodes = mockup['nodes'] + links = mockup['links'] + + dag_adjacency_list = dict() + tasks = dict() + for node in nodes: + node_id = node['uuid'] + # find connections + successor_nodes = [] + task = {} + task["input"] = node["inputs"] + task["output"] = node["outputs"] + task["image"] = { "name" : node['key'], + "tag" : node['tag']} + + for link in links: + if link['node1Id'] == node_id: + successor_node_id = link['node2Id'] + if successor_node_id not in successor_nodes: + successor_nodes.append(successor_node_id) + if link['node2Id'] == node_id: + # there might be something coming in + predecessor_node_id = link['node1Id'] + output_port = link['port1Id'] + input_port = link['port2Id'] + # we use predecessor_node_id.output_port as id fo the input + for t in task['input']: + if t['key'] == input_port: + t['value'] = 'link.' + predecessor_node_id + "." + output_port + + + if len(successor_nodes): + dag_adjacency_list[node_id] = successor_nodes + tasks[node_id] = task + + pipeline = ComputationalPipeline(dag_adjacency_list=dag_adjacency_list, state=0) + + db_session.add(pipeline) + db_session.flush() + + pipeline_id = pipeline.pipeline_id + pipeline_name = "mockup" + internal_id = 1 + + for node_id in tasks: + task = tasks[node_id] + new_task = ComputationalTask(pipeline_id=pipeline_id, node_id=node_id, internal_id=internal_id, image=task['image'], + input=task['input'], output=task['output'], submit=datetime.datetime.utcnow()) + internal_id = internal_id+1 + db_session.add(new_task) + + db_session.commit() + + task = celery.send_task('comp.task', args=(pipeline_id,), kwargs={}) response = {} response['pipeline_name'] = pipeline_name From f3ec4789daafafbf128a04982602ef05becbd848 Mon Sep 17 00:00:00 2001 From: Manuel Guidon Date: Thu, 14 Jun 2018 15:55:46 +0200 Subject: [PATCH 015/127] change build context for services such that we can copy files from the top level directory --- Makefile | 5 ++++- services/docker-compose.yml | 6 ++++-- services/sidecar/Dockerfile | 6 +++++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 38fc1c9bf11..39556d1d1f4 100644 --- a/Makefile +++ b/Makefile @@ -22,10 +22,13 @@ rebuild: docker-compose -f services/docker-compose.yml build --no-cache up: + docker-compose -f services/docker-compose.yml up + +up-swarm: docker swarm init docker-compose -f services/docker-compose.yml -f services/docker-compose.deploy.yml up -down: +down-swarm: docker-compose -f services/docker-compose.yml -f services/docker-compose.deploy.yml down docker swarm leave -f diff --git a/services/docker-compose.yml b/services/docker-compose.yml index 6fc5bbe0ef9..492dc72ad8f 100644 --- a/services/docker-compose.yml +++ b/services/docker-compose.yml @@ -67,7 +67,10 @@ services: - postgres sidecar: build: - context: ./sidecar + # the context for the build is the git repo root directory, this allows to copy + # the packages directory into any docker image + context: ../ + dockerfile: services/sidecar/Dockerfile target: production volumes: - input:/input @@ -87,7 +90,6 @@ services: - S3_BUCKET_NAME=${S3_BUCKET_NAME} depends_on: - rabbit - volumes: input: output: diff --git a/services/sidecar/Dockerfile b/services/sidecar/Dockerfile index 42cd05bad9f..c294de3d2c4 100644 --- a/services/sidecar/Dockerfile +++ b/services/sidecar/Dockerfile @@ -6,7 +6,7 @@ WORKDIR /work/sidecar RUN apk add --no-cache postgresql-dev gcc libc-dev -COPY requirements.txt requirements.txt +COPY services/sidecar/requirements.txt requirements.txt RUN pip install --upgrade pip \ && pip install -r requirements.txt \ @@ -29,6 +29,10 @@ ENTRYPOINT celery -A sidecar worker -c 2 --loglevel=info FROM common as production +# the context for the build is the git repo root directory +COPY services/sidecar/src /work +COPY packages /work/packages + # NO clue why this does not work without explicitly specifying ENV PYTHONPATH="/work/packages/simcore-sdk/src:/work/packages/s3wrapper/src" ENTRYPOINT celery -A sidecar worker -c 2 --loglevel=info From 2edb5fb0384b25c856af4af1110f79154b282047 Mon Sep 17 00:00:00 2001 From: Manuel Guidon Date: Thu, 14 Jun 2018 16:04:30 +0200 Subject: [PATCH 016/127] minor cleanup --- services/docker-compose.yml | 3 +-- services/sidecar/Dockerfile | 5 ----- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/services/docker-compose.yml b/services/docker-compose.yml index 492dc72ad8f..54b80a8941b 100644 --- a/services/docker-compose.yml +++ b/services/docker-compose.yml @@ -80,8 +80,7 @@ services: ports: - "8000:8000" environment: - - PYTHONPATH=/work/packages - environment: + - PYTHONPATH=/work/packages/simcore-sdk/src:/work/packages/s3wrapper/src - RABBITMQ_USER=${RABBITMQ_USER} - RABBITMQ_PASSWORD=${RABBITMQ_PASSWORD} - S3_ENDPOINT=${S3_ENDPOINT} diff --git a/services/sidecar/Dockerfile b/services/sidecar/Dockerfile index c294de3d2c4..8926c12eb9b 100644 --- a/services/sidecar/Dockerfile +++ b/services/sidecar/Dockerfile @@ -12,19 +12,14 @@ RUN pip install --upgrade pip \ && pip install -r requirements.txt \ && pip list --format=columns -#RUN pip install networkx sqlalchemy psycopg2 celery sqlalchemy-json docker pika minio \ -# && pip list --format=columns - EXPOSE 8000 - FROM common as development VOLUME /work/sidecar VOLUME /work/packages # NO clue why this does not work without explicitly specifying -ENV PYTHONPATH="/work/packages/simcore-sdk/src:/work/packages/s3wrapper/src" ENTRYPOINT celery -A sidecar worker -c 2 --loglevel=info FROM common as production From 2043c59e8eba574e86b1bb96d83462ccd33392de Mon Sep 17 00:00:00 2001 From: Manuel Guidon Date: Thu, 14 Jun 2018 16:20:12 +0200 Subject: [PATCH 017/127] change build context for server --- services/docker-compose.yml | 8 ++++---- services/web/server/Dockerfile | 1 + .../{comp_backend_setup.py => comp_backend_subscribe.py} | 4 ++++ services/web/server/src/server.py | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) rename services/web/server/src/{comp_backend_setup.py => comp_backend_subscribe.py} (94%) diff --git a/services/docker-compose.yml b/services/docker-compose.yml index 54b80a8941b..fa7f3f51111 100644 --- a/services/docker-compose.yml +++ b/services/docker-compose.yml @@ -19,12 +19,12 @@ services: #-------------------------------------------------------------------- webserver: build: - context: . - dockerfile: web/server/Dockerfile + context: ../ + dockerfile: services/web/server/Dockerfile target: production args: - client_dir: web/client - server_dir: web/server + client_dir: services/web/client + server_dir: services/web/server ports: - '9081:8080' environment: diff --git a/services/web/server/Dockerfile b/services/web/server/Dockerfile index e3e5c37457a..0a92afad98d 100644 --- a/services/web/server/Dockerfile +++ b/services/web/server/Dockerfile @@ -97,6 +97,7 @@ RUN pip3 install --no-cache-dir -r /usr/src/requirements/prod.txt \ && pip list --format=columns COPY $server_dir/src . +COPY packages /usr/src/packages ENTRYPOINT ["python", "-m", "aiohttp.web"] diff --git a/services/web/server/src/comp_backend_setup.py b/services/web/server/src/comp_backend_subscribe.py similarity index 94% rename from services/web/server/src/comp_backend_setup.py rename to services/web/server/src/comp_backend_subscribe.py index de3e98ff669..c6d094b6c2f 100644 --- a/services/web/server/src/comp_backend_setup.py +++ b/services/web/server/src/comp_backend_subscribe.py @@ -1,10 +1,13 @@ import json +import logging import aio_pika from async_sio import SIO from simcore_sdk.config.rabbit import Config as rabbit_config +_LOGGER = logging.getLogger(__file__) + # rabbit config rabbit_config = rabbit_config() pika_log_channel = rabbit_config.log_channel @@ -14,6 +17,7 @@ async def on_message(message: aio_pika.IncomingMessage): with message.process(): data = json.loads(message.body) + _LOGGER.debug(data) if data["Channel"] == "Log": await SIO.emit("logger", data = json.dumps(data)) elif data["Channel"] == "Progress": diff --git a/services/web/server/src/server.py b/services/web/server/src/server.py index 7fb711ac495..c11647ff147 100644 --- a/services/web/server/src/server.py +++ b/services/web/server/src/server.py @@ -11,7 +11,7 @@ import config from async_sio import SIO from comp_backend_api import comp_backend_routes -from comp_backend_setup import subscribe +from comp_backend_subscribe import subscribe from registry_api import registry_routes CONFIG = config.CONFIG[os.environ.get('SIMCORE_WEB_CONFIG', 'default')] From a76d2203e178dddf2e369d3a6b1e2e8c5bd1b23a Mon Sep 17 00:00:00 2001 From: Manuel Guidon Date: Thu, 14 Jun 2018 18:38:19 +0200 Subject: [PATCH 018/127] rename debug to devel --- Makefile | 12 ++++++------ ...er-compose.debug.yml => docker-compose.devel.yml} | 0 2 files changed, 6 insertions(+), 6 deletions(-) rename services/{docker-compose.debug.yml => docker-compose.devel.yml} (100%) diff --git a/Makefile b/Makefile index 39556d1d1f4..7e8f46ed487 100644 --- a/Makefile +++ b/Makefile @@ -6,14 +6,14 @@ PY_FILES = $(strip $(shell find services packages -iname '*.py')) export PYTHONPATH=${PWD}/packages/s3wrapper/src -build-debug: - docker-compose -f services/docker-compose.yml -f services/docker-compose.debug.yml build +build-devel: + docker-compose -f services/docker-compose.yml -f services/docker-compose.devel.yml build -rebuild-debug: - docker-compose -f services/docker-compose.yml -f services/docker-compose.debug.yml build --no-cache +rebuild-devel: + docker-compose -f services/docker-compose.yml -f services/docker-compose.devel.yml build --no-cache -up-debug: - docker-compose -f services/docker-compose.yml -f services/docker-compose.debug.yml up +up-devel: + docker-compose -f services/docker-compose.yml -f services/docker-compose.devel.yml up build: docker-compose -f services/docker-compose.yml build diff --git a/services/docker-compose.debug.yml b/services/docker-compose.devel.yml similarity index 100% rename from services/docker-compose.debug.yml rename to services/docker-compose.devel.yml From 8034118bd0fced7a1dc6f6516bd16c18e274ce1c Mon Sep 17 00:00:00 2001 From: Manuel Guidon Date: Thu, 14 Jun 2018 19:02:58 +0200 Subject: [PATCH 019/127] Adds code coverage output --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 7e8f46ed487..a06d3aedd34 100644 --- a/Makefile +++ b/Makefile @@ -45,8 +45,8 @@ before_test: docker-compose -f packages/simcore-sdk/tests/docker-compose.yml build run_test: - pytest -v packages/pytest_docker/ - pytest -v packages/s3wrapper/ + pytest --cov=pytest_docker -v packages/pytest_docker/ + pytest --cov=s3wrapper -v packages/s3wrapper/ pytest -v packages/simcore-sdk/ after_test: From 8c464129ff3b458980aaa0bef6b7da708f44a3b5 Mon Sep 17 00:00:00 2001 From: Manuel Guidon Date: Thu, 14 Jun 2018 19:22:06 +0200 Subject: [PATCH 020/127] Add local minio for devel and template with credentials --- .env-devel | 11 +++++++++++ services/docker-compose.yml | 8 ++++++++ services/minio/README.md | 3 +++ 3 files changed, 22 insertions(+) create mode 100644 .env-devel create mode 100644 services/minio/README.md diff --git a/.env-devel b/.env-devel new file mode 100644 index 00000000000..56c9b9d9b48 --- /dev/null +++ b/.env-devel @@ -0,0 +1,11 @@ +POSTGRES_USER=simcore +POSTGRES_PASSWORD=simcore +POSTGRES_DB=simcoredb +RABBITMQ_USER=simcore +RABBITMQ_PASSWORD=simcore +RABBITMQ_PROGRESS_CHANNEL=comp.backend.channels.progress +RABBITMQ_LOG_CHANNEL=comp.backend.channels.log +S3_ENDPOINT=minio:9000 +S3_ACCESS_KEY=12345678 +S3_SECRET_KEY=12345678 +S3_BUCKET_NAME=simcore diff --git a/services/docker-compose.yml b/services/docker-compose.yml index fa7f3f51111..57774f7406d 100644 --- a/services/docker-compose.yml +++ b/services/docker-compose.yml @@ -89,6 +89,14 @@ services: - S3_BUCKET_NAME=${S3_BUCKET_NAME} depends_on: - rabbit + minio: + image: minio/minio + environment: + - MINIO_ACCESS_KEY=12345678 + - MINIO_SECRET_KEY=12345678 + ports: + - "9001:9000" + command: server /data volumes: input: output: diff --git a/services/minio/README.md b/services/minio/README.md new file mode 100644 index 00000000000..8e9b2b562f3 --- /dev/null +++ b/services/minio/README.md @@ -0,0 +1,3 @@ +# Minio + +S3 object store (for devel) From c6fee8794dbedf971fdfea36c92906b70c95e9ff Mon Sep 17 00:00:00 2001 From: Manuel Guidon Date: Thu, 14 Jun 2018 19:24:01 +0200 Subject: [PATCH 021/127] update readme --- services/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/services/README.md b/services/README.md index 64116456eeb..a044bfee73f 100644 --- a/services/README.md +++ b/services/README.md @@ -85,3 +85,6 @@ To deploy the application in a single-node swarm docker swarm init docker-compose -f docker-compose.yml -f docker-compose.deploy.yml up ``` +## Credentials + +Rename `.env-devel` to `.env` in order to get the stack up and running. From 01b856970c5dfb15fa80a6aa98e7073ecd50080f Mon Sep 17 00:00:00 2001 From: Pedro Crespo Date: Thu, 14 Jun 2018 23:06:05 +0200 Subject: [PATCH 022/127] WIP: improving first web/client qx docker. Minor cleanup in compose files --- services/docker-compose.devel.yml | 24 ++---- services/docker-compose.yml | 10 ++- services/web/client/Dockerfile | 85 +++++++++++-------- .../web/client/docker-compose.production.yml | 7 -- services/web/client/docker-compose.yml | 11 ++- services/web/client/scripts/ignore_me.sh | 23 +++++ .../web/client/scripts/install-contrib.sh | 2 +- services/web/server/Dockerfile | 46 ++++++---- 8 files changed, 121 insertions(+), 87 deletions(-) delete mode 100644 services/web/client/docker-compose.production.yml create mode 100755 services/web/client/scripts/ignore_me.sh diff --git a/services/docker-compose.devel.yml b/services/docker-compose.devel.yml index d96c90fd154..2a12dc0a5e5 100644 --- a/services/docker-compose.devel.yml +++ b/services/docker-compose.devel.yml @@ -11,33 +11,21 @@ services: webserver: image: services_webserver:dev build: - target: development + #target: development + target: common-py-stage ports: - '9081:8080' - #- '9082:9082' environment: - DIRECTOR_HOST=director - DIRECTOR_PORT=8001 - SIMCORE_WEB_CONFIG=development volumes: + # FIXME: For the moment, client's source is copied also in dev + # - './web/client/source-output:/usr/src/source/client' - './web/server/src:/usr/src/source' - - './web/client/source-output:/usr/src/source/client' - - './web/server/test:/usr/src/test' + - './web/server/tests:/usr/src/tests' + # TODO: consider pip install git: - ../packages:/usr/src/packages - # TODO: do test go in production or development or debug?? - #depends_on: - # - build-qx - #-------------------------------------------------------------------- - build-qx: - image: itisfoundation/qooxdoo-compiler:latest - volumes: - - './web/client:/home/node/src' - ports: - - '8080:8080' - working_dir: /home/node/src - entrypoint: /bin/bash - command: -c "qx contrib update && qx contrib list && qx contrib install ITISFoundation/qx-osparc-theme && qx compile --watch" - #------------comp. backend------------------------------------------- sidecar: image: services_sidecar:dev diff --git a/services/docker-compose.yml b/services/docker-compose.yml index 57774f7406d..cd886955df6 100644 --- a/services/docker-compose.yml +++ b/services/docker-compose.yml @@ -32,9 +32,7 @@ services: - DIRECTOR_PORT=8001 - SIMCORE_WEB_CONFIG=production - PYTHONPATH=/usr/src/packages/simcore-sdk/src - #command: ["python", "server.py"] - - #------------comp. backend------------------------------------------- + #-------------------------------------------------------------------- rabbit: image: rabbitmq:3-management environment: @@ -42,6 +40,7 @@ services: - RABBITMQ_DEFAULT_PASS=${RABBITMQ_PASSWORD} ports: - "15672:15672" + #-------------------------------------------------------------------- # flower: # image: ondrejit/flower:latest # command: --broker=amqp://${RABBITMQ_USER}:${RABBITMQ_PASSWORD}@rabbit:5672 @@ -49,6 +48,7 @@ services: # - 5555:5555 # depends_on: # - rabbit + #-------------------------------------------------------------------- postgres: image: postgres:10 environment: @@ -59,12 +59,14 @@ services: - postgres:/var/lib/postgresql/data ports: - "5432:5432" + #-------------------------------------------------------------------- adminer: image: adminer ports: - 18080:8080 depends_on: - postgres + #-------------------------------------------------------------------- sidecar: build: # the context for the build is the git repo root directory, this allows to copy @@ -89,6 +91,7 @@ services: - S3_BUCKET_NAME=${S3_BUCKET_NAME} depends_on: - rabbit + #-------------------------------------------------------------------- minio: image: minio/minio environment: @@ -97,6 +100,7 @@ services: ports: - "9001:9000" command: server /data + #-------------------------------------------------------------------- volumes: input: output: diff --git a/services/web/client/Dockerfile b/services/web/client/Dockerfile index a43d5025268..70e98b7934e 100644 --- a/services/web/client/Dockerfile +++ b/services/web/client/Dockerfile @@ -1,66 +1,79 @@ FROM node:8.9.2 as base-stage +# Used to qx compile and/or serve (dev) client-side code +# +# +# + /home/scu/ $HOME +# + client/ $PWD, WORKDIR, VOLUME +# + source +# + source-output $CLIENT_OUTDIR +# + node_modules +# +.bin/ +# - qx qx compiler +# + qooxdoo-sdk/ $QOOXDOO_PATH +# + framework contains qx library +# + tool/ +# + bin/ contains generator.py +# +# * = in $PATH +# LABEL maintainer=pcrespov -# TODO: set as host user, otherwise outdir is set as root in the host +# non-root user +RUN groupmod --new-name scu node && \ + usermod --login scu --move-home --home /home/scu node +USER scu + +ENV HOME /home/scu ENV NPM_CONFIG_LOGLEVEL warn -ENV PATH="/home/node/qooxdoo-sdk/tool/bin:/home/node/node_modules/.bin/:${PATH}" +ENV NPM_CONFIG_PREFIX $HOME/.npm-global +ENV QOOXDOO_PATH $HOME/qooxdoo-sdk +ENV PATH="${QOOXDOO_PATH}/tool/bin:${HOME}/node_modules/.bin/:${NPM_CONFIG_PREFIX}/bin:${PATH}" -# -# + /home/node/ $HOME -# + client/ $WORKDIR -# - compile.json -# + contrib/ -# - contrib.json -# + node_modules/ -# - package-lock.json -# - package.json -# + qooxdoo-sdk -# -# (1) Installs qooxdoo compiler and shallow clone SDK in #HOME. see https://www.npmjs.com/package/qxcompiler -WORKDIR /home/node +WORKDIR /home/scu -COPY package*.json ./ +# 1. qooxdoo-sdk from source repository. Provides framework and generator.py tools to overcome limits of qx-compiler +RUN git clone --depth 1 https://github.com/qooxdoo/qooxdoo.git ${QOOXDOO_PATH} -# FIXME: npm WARN node description, ... -# FIXME: npm WARN notice [SECURITY] tunnel-agen -# FIXME: npm WARN notice [SECURITY] hoek -RUN npm i npm@latest && \ - npm install && \ - git clone --depth 1 https://github.com/qooxdoo/qooxdoo.git qooxdoo-sdk +# 2. installs qx-compiler (see specs in package.json) +COPY --chown=scu:scu package*.json ./ -WORKDIR /home/node/client -COPY scripts scripts -RUN chmod +x scripts/*.sh +RUN npm install npm@latest && \ + npm install + +# owned by scu now +RUN mkdir /home/scu/client +WORKDIR /home/scu/client + +EXPOSE 8080 # ------------------------------------------------------------------------------------------ FROM base-stage as development # NOTE: cannot expose contrib and source-output volumes (to keep them inside) # within container does not work well because links remain in host + VOLUME /home/node/client ENTRYPOINT ./scripts/entrypoint.sh - # ------------------------------------------------------------------------------------------ FROM base-stage as production -# (2) Installs qooxdoo contributions in $WORKDIR/contrib/ within container -COPY compile.json compile.json -RUN ./scripts/install-contrib.sh +# 3. prepares scripts +COPY --chown=scu:scu scripts scripts +RUN chmod +x scripts/*.sh -# (3) compiles source -COPY source source -COPY Manifest.json Manifest.json +# 4. Installs qooxdoo contributions in $WORKDIR/contrib/ within container +COPY --chown=scu:scu compile.json compile.json +RUN ./scripts/install-contrib.sh +# 5. compiles source +COPY --chown=scu:scu source source +COPY --chown=scu:scu Manifest.json Manifest.json RUN qx compile --target=build -# production exec -VOLUME /home/node/client -EXPOSE 8080 - CMD ["qx", "serve"] diff --git a/services/web/client/docker-compose.production.yml b/services/web/client/docker-compose.production.yml deleted file mode 100644 index 49bdb20e02f..00000000000 --- a/services/web/client/docker-compose.production.yml +++ /dev/null @@ -1,7 +0,0 @@ -# Usage `docker-compose -f docker-compose.yml -f docker-compose.production.yml ... -version: '3.4' -services: - qx: - image: client_qx:prod - build: - target: production diff --git a/services/web/client/docker-compose.yml b/services/web/client/docker-compose.yml index 6bbf245b174..113b386d617 100644 --- a/services/web/client/docker-compose.yml +++ b/services/web/client/docker-compose.yml @@ -1,22 +1,21 @@ version: '3.4' services: qx: - #image: itisfoundation/qooxdoo-compiler:latest - image: client_qx:dev + image: client_qx:${BUILD_TARGET:-development} build: # ToDo: development version doesn't work in Windows. - # Modified files in the mounted volume don't trigger container operating + # Modified files in the mounted volume don't trigger container operating # system notifications, so watchers don't react to changes. - # Workaround: + # Workaround: # http://blog.subjectify.us/miscellaneous/2017/04/24/docker-for-windows-watch-bindings.html # On Windows side: # pip install docker-windows-volume-watcher # docker-volume-watcher context: . dockerfile: Dockerfile - target: development + target: ${BUILD_TARGET:-development} volumes: - - '.:/home/node/client' + - '.:/home/scu/client' ports: - '8080:8080' working_dir: /home/node/client diff --git a/services/web/client/scripts/ignore_me.sh b/services/web/client/scripts/ignore_me.sh new file mode 100755 index 00000000000..f881e1298c5 --- /dev/null +++ b/services/web/client/scripts/ignore_me.sh @@ -0,0 +1,23 @@ +#!/bin/bash +echo Testing with $0 + +source $(dirname $0)/.env +echo "- script dir: " ${SCRIPT_DIR} +echo "- client dir: " ${CLIENT_DIR} +echo "- fonts dir : " ${FONTS_DIR} + + +# TODO: add argument to control qx command at entry point +echo Running \'qx serve "$@"\' + +pushd ${FONTS_DIR} +echo --------- +pwd +echo content: +ls -la +popd + +echo --------- +pwd +echo content: +ls -la diff --git a/services/web/client/scripts/install-contrib.sh b/services/web/client/scripts/install-contrib.sh index fc578663c87..5336707a311 100755 --- a/services/web/client/scripts/install-contrib.sh +++ b/services/web/client/scripts/install-contrib.sh @@ -26,7 +26,7 @@ cd ${FONTS_DIR} # TODO: with the next release of qx-compiler these lines can be removed -rm * +#rm * #ln -s ../../../contrib/ITISFoundation_qx-iconfont-fontawesome5_v0.0.2/source/resource/iconfont/fontawesome5/ fontawesome5 #ln -s ../../../contrib/ITISFoundation_qx-iconfont-material_v0.0.1/source/resource/iconfont/material/ material #ls -l diff --git a/services/web/server/Dockerfile b/services/web/server/Dockerfile index 0a92afad98d..129ebe8c055 100644 --- a/services/web/server/Dockerfile +++ b/services/web/server/Dockerfile @@ -1,22 +1,32 @@ -#FIXME: FROM itisfoundation/qooxdoo-compiler:latest as qx-stage +#FIXME: MUST use the same as web/client/Dockerfile FROM node:8.9.2 as qx-stage +# +# + /home/scu/ +# + /client =$SIMCORE_WEB_OUTDIR +# + /server +# + /requirements +# + /tests +# + /src =$PWD + + +# client_dir = path to client dir from context ARG client_dir=web/client +# user defined in base image +USER node + # workdir WORKDIR /home/node RUN chown -R node:node /home/node -# user defined in base image -USER node # npm variables ENV PATH=/home/node/node_modules/.bin:$PATH COPY --chown=node:node $client_dir/package*.json . - -RUN npm install ; \ - git clone --depth=1 https://github.com/qooxdoo/qooxdoo.git qooxdoo-sdk ; \ +RUN npm install && \ + git clone --depth=1 https://github.com/qooxdoo/qooxdoo.git qooxdoo-sdk && \ mkdir src # workdir @@ -36,23 +46,27 @@ RUN ls -l ; ./scripts/install-contrib.sh ; \ # -------------------------common-py-stage------------------------------------ FROM python:3.6-alpine as common-py-stage - # -# + /usr/src -# + /requirements -# + /test -# + /source <-- web/server/source (pwd) -# + /client <-- web/client/source-output +# + /home/scu/ +# + /client =$SIMCORE_WEB_OUTDIR +# + /server +# + /requirements +# + /tests +# + /src =$PWD + # TODO: create non-root user ARG server_dir=web/server -RUN apk add --no-cache postgresql-dev gcc libc-dev +RUN apk add --no-cache \ + postgresql-dev \ + gcc \ + libc-dev WORKDIR /usr/src/source -ENV SIMCORE_WEB_OUTDIR=$PWD/client +ENV SIMCORE_WEB_OUTDIR=/usr/src/client ENV DIRECTOR_HOST='director' ENV DIRECTOR_PORT=8001 @@ -60,8 +74,8 @@ ENV DIRECTOR_PORT=8001 COPY --from=qx-stage /home/node/src/source-output ${SIMCORE_WEB_OUTDIR} # packages -COPY $server_dir/requirements/common.txt /usr/src/requirements/common.txt -RUN pip3 install --no-cache-dir -r /usr/src/requirements/common.txt +#COPY $server_dir/requirements/common.txt /usr/src/requirements/common.txt +#RUN pip3 install --no-cache-dir -r /usr/src/requirements/common.txt EXPOSE 8080 From e9131db21fff7da49891a67389e341be64d4d42e Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Fri, 15 Jun 2018 11:01:18 +0200 Subject: [PATCH 023/127] fix JS syntax --- services/web/client/source/class/qxapp/wrappers/Ajv.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/services/web/client/source/class/qxapp/wrappers/Ajv.js b/services/web/client/source/class/qxapp/wrappers/Ajv.js index 811bcafbebf..53afeeb1199 100644 --- a/services/web/client/source/class/qxapp/wrappers/Ajv.js +++ b/services/web/client/source/class/qxapp/wrappers/Ajv.js @@ -13,7 +13,7 @@ qx.Class.define("qxapp.wrappers.Ajv", { extend: qx.core.Object, - construct: function(schema,opts) { + construct: function(schema, opts) { this.base(arguments); this.__ajv = new Ajv(opts); this.__validator = this.__ajv.compile(schema); @@ -25,9 +25,7 @@ qx.Class.define("qxapp.wrappers.Ajv", { if (this.__validator(data)) { return true; } - else { - return this.__validator.errors; - } + return this.__validator.errors; } } }); From 2bc95bb142c9ade6811d0b224129d9530e343013 Mon Sep 17 00:00:00 2001 From: Pedro Crespo Date: Fri, 15 Jun 2018 13:27:10 +0200 Subject: [PATCH 024/127] Improved server/client qx compiler container. - non-root user - dev/prod targets --- services/web/client/Dockerfile | 36 ++++++++++++++++---------- services/web/client/docker-compose.yml | 13 +++++----- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/services/web/client/Dockerfile b/services/web/client/Dockerfile index 70e98b7934e..2b98774b12b 100644 --- a/services/web/client/Dockerfile +++ b/services/web/client/Dockerfile @@ -1,25 +1,31 @@ FROM node:8.9.2 as base-stage # Used to qx compile and/or serve (dev) client-side code -# + # # + /home/scu/ $HOME -# + client/ $PWD, WORKDIR, VOLUME -# + source -# + source-output $CLIENT_OUTDIR -# + node_modules -# +.bin/ -# - qx qx compiler +# + client/ $PWD, WORKDIR, VOLUME( only devel) +# + scripts/ scripts to install contributions and run entrypoint +# + source/ +# + source-output/ $QOOXDOO_OUTDIR +# + packages.json specifies qx-compiler +# + ... +# + .npm-global/ global npm folder +# + bin/ * +# + node_modules/ local npm folder +# + .bin/ * +# - qx qx compiler executable # + qooxdoo-sdk/ $QOOXDOO_PATH # + framework contains qx library # + tool/ -# + bin/ contains generator.py +# + bin/ * contains generator.py # # * = in $PATH # LABEL maintainer=pcrespov -# non-root user +# non-root user uid=1000 +# TODO: create instead uid=5000. RUN groupmod --new-name scu node && \ usermod --login scu --move-home --home /home/scu node USER scu @@ -29,12 +35,15 @@ ENV HOME /home/scu ENV NPM_CONFIG_LOGLEVEL warn ENV NPM_CONFIG_PREFIX $HOME/.npm-global ENV QOOXDOO_PATH $HOME/qooxdoo-sdk -ENV PATH="${QOOXDOO_PATH}/tool/bin:${HOME}/node_modules/.bin/:${NPM_CONFIG_PREFIX}/bin:${PATH}" +ENV QOOXDOO_OUTDIR $HOME/client/source-output +ENV PATH "${QOOXDOO_PATH}/tool/bin:${HOME}/node_modules/.bin/:${NPM_CONFIG_PREFIX}/bin:${PATH}" WORKDIR /home/scu -# 1. qooxdoo-sdk from source repository. Provides framework and generator.py tools to overcome limits of qx-compiler +# 1. qooxdoo-sdk from source repository. +# - Provides framework and generator.py tools to overcome limits of qx-compiler +# - This is a temporary solution RUN git clone --depth 1 https://github.com/qooxdoo/qooxdoo.git ${QOOXDOO_PATH} # 2. installs qx-compiler (see specs in package.json) @@ -44,7 +53,7 @@ RUN npm install npm@latest && \ npm install # owned by scu now -RUN mkdir /home/scu/client +RUN mkdir $HOME/client WORKDIR /home/scu/client EXPOSE 8080 @@ -55,8 +64,9 @@ FROM base-stage as development # NOTE: cannot expose contrib and source-output volumes (to keep them inside) # within container does not work well because links remain in host -VOLUME /home/node/client +VOLUME /home/scu/client +# 3. installs contribs and qx serve ENTRYPOINT ./scripts/entrypoint.sh # ------------------------------------------------------------------------------------------ diff --git a/services/web/client/docker-compose.yml b/services/web/client/docker-compose.yml index 113b386d617..92e3bc3cece 100644 --- a/services/web/client/docker-compose.yml +++ b/services/web/client/docker-compose.yml @@ -1,16 +1,17 @@ version: '3.4' services: qx: + # BUILD_TARGET in [development, production] image: client_qx:${BUILD_TARGET:-development} build: - # ToDo: development version doesn't work in Windows. + # TODO: development version doesn't work in Windows. # Modified files in the mounted volume don't trigger container operating - # system notifications, so watchers don't react to changes. + # system notifications, so watchers don't react to changes. # Workaround: - # http://blog.subjectify.us/miscellaneous/2017/04/24/docker-for-windows-watch-bindings.html + # http://blog.subjectify.us/miscellaneous/2017/04/24/docker-for-windows-watch-bindings.html # On Windows side: - # pip install docker-windows-volume-watcher - # docker-volume-watcher + # pip install docker-windows-volume-watcher + # docker-volume-watcher context: . dockerfile: Dockerfile target: ${BUILD_TARGET:-development} @@ -18,4 +19,4 @@ services: - '.:/home/scu/client' ports: - '8080:8080' - working_dir: /home/node/client + working_dir: /home/scu/client From 8aaa1034017ef4d58565e2d640ad527833687e3b Mon Sep 17 00:00:00 2001 From: Pedro Crespo Date: Fri, 15 Jun 2018 15:06:11 +0200 Subject: [PATCH 025/127] Renamed web/client dockerfile. Emphasizes that it is only to build the client's code --- services/web/Dockerfile | 18 ++++++++++++++++++ .../client/{Dockerfile => Dockerfile.build} | 2 +- services/web/client/docker-compose.yml | 4 ++-- services/web/server/Dockerfile | 14 +++++++------- 4 files changed, 28 insertions(+), 10 deletions(-) create mode 100644 services/web/Dockerfile rename services/web/client/{Dockerfile => Dockerfile.build} (98%) diff --git a/services/web/Dockerfile b/services/web/Dockerfile new file mode 100644 index 00000000000..ee0eb469ebc --- /dev/null +++ b/services/web/Dockerfile @@ -0,0 +1,18 @@ +FROM client_qx:build as qx-build-stage + +ENV QOOXDOO_OUTDIR $HOME/client/source-output + + +# ------------------------------------------------------------------------------------------ +FROM python:3.6-alpine + +RUN useradd -r -u 1001 -g scu scu +USER scu + + +ENV HOME /home/scu +ENV SIMCORE_WEB_OUTDIR=$HOME/client + + + +COPY --from=qx-stage ${QOOXDOO_OUTDIR} ${SIMCORE_WEB_OUTDIR} diff --git a/services/web/client/Dockerfile b/services/web/client/Dockerfile.build similarity index 98% rename from services/web/client/Dockerfile rename to services/web/client/Dockerfile.build index 2b98774b12b..a4c1e4ed4f6 100644 --- a/services/web/client/Dockerfile +++ b/services/web/client/Dockerfile.build @@ -70,7 +70,7 @@ VOLUME /home/scu/client ENTRYPOINT ./scripts/entrypoint.sh # ------------------------------------------------------------------------------------------ -FROM base-stage as production +FROM base-stage as build # 3. prepares scripts diff --git a/services/web/client/docker-compose.yml b/services/web/client/docker-compose.yml index 92e3bc3cece..fc59c8f9446 100644 --- a/services/web/client/docker-compose.yml +++ b/services/web/client/docker-compose.yml @@ -1,7 +1,7 @@ version: '3.4' services: qx: - # BUILD_TARGET in [development, production] + # BUILD_TARGET in [development, build] image: client_qx:${BUILD_TARGET:-development} build: # TODO: development version doesn't work in Windows. @@ -13,7 +13,7 @@ services: # pip install docker-windows-volume-watcher # docker-volume-watcher context: . - dockerfile: Dockerfile + dockerfile: Dockerfile.build target: ${BUILD_TARGET:-development} volumes: - '.:/home/scu/client' diff --git a/services/web/server/Dockerfile b/services/web/server/Dockerfile index 129ebe8c055..e600512adeb 100644 --- a/services/web/server/Dockerfile +++ b/services/web/server/Dockerfile @@ -74,8 +74,8 @@ ENV DIRECTOR_PORT=8001 COPY --from=qx-stage /home/node/src/source-output ${SIMCORE_WEB_OUTDIR} # packages -#COPY $server_dir/requirements/common.txt /usr/src/requirements/common.txt -#RUN pip3 install --no-cache-dir -r /usr/src/requirements/common.txt +COPY $server_dir/requirements/common.txt /usr/src/requirements/common.txt +RUN pip3 install --no-cache-dir -r /usr/src/requirements/common.txt EXPOSE 8080 @@ -88,12 +88,12 @@ ARG server_dir=web/server ENV SIMCORE_WEB_CONFIG=development COPY $server_dir/requirements/dev.txt /usr/src/requirements/dev.txt -RUN pip3 install --no-cache-dir -r /usr/src/requirements/dev.txt \ - && python --version \ - && pip list --format=columns \ - && echo \ - && ls -l $PWD +RUN pip3 install --no-cache-dir -r /usr/src/requirements/dev.txt +RUN python --version && \ + pip list --format=columns && \ + echo; ls -l $PWD +# TODO: web should re-serve upon changes on code (both client) CMD ["python", "-m", "aiohttp.web", "-H", "0.0.0.0", "-P", "8080", "server:create_app"] From 703ad74295c06a56e8e6e3421668600e772afb32 Mon Sep 17 00:00:00 2001 From: Pedro Crespo Date: Fri, 15 Jun 2018 17:02:38 +0200 Subject: [PATCH 026/127] Adds log messages while installing qx contribs --- services/web/client/scripts/install-contrib.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/services/web/client/scripts/install-contrib.sh b/services/web/client/scripts/install-contrib.sh index 5336707a311..fbc381bd205 100755 --- a/services/web/client/scripts/install-contrib.sh +++ b/services/web/client/scripts/install-contrib.sh @@ -11,8 +11,13 @@ echo "- fonts dir : " ${FONTS_DIR} # Installs thems and iconfonts pushd ${CLIENT_DIR}; +echo "Updating contributions ..." qx contrib update + +echo "Listing contributions ..." qx contrib list + +echo "Installing contributions ..." qx contrib install ITISFoundation/qx-osparc-theme qx contrib install ITISFoundation/qx-iconfont-material qx contrib install ITISFoundation/qx-iconfont-fontawesome5 From 92c0d73758f35f17712fe12aa6080c947489fe8d Mon Sep 17 00:00:00 2001 From: Pedro Crespo Date: Fri, 15 Jun 2018 19:03:48 +0200 Subject: [PATCH 027/127] Renamed client dockerfile since it is multitarget --- services/web/client/{Dockerfile.build => Dockerfile} | 4 ++-- services/web/client/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename services/web/client/{Dockerfile.build => Dockerfile} (96%) diff --git a/services/web/client/Dockerfile.build b/services/web/client/Dockerfile similarity index 96% rename from services/web/client/Dockerfile.build rename to services/web/client/Dockerfile index a4c1e4ed4f6..ccb0c80c689 100644 --- a/services/web/client/Dockerfile.build +++ b/services/web/client/Dockerfile @@ -66,7 +66,7 @@ FROM base-stage as development VOLUME /home/scu/client -# 3. installs contribs and qx serve +# 3. installs contribs and qx serve -> source-output/ ENTRYPOINT ./scripts/entrypoint.sh # ------------------------------------------------------------------------------------------ @@ -81,7 +81,7 @@ RUN chmod +x scripts/*.sh COPY --chown=scu:scu compile.json compile.json RUN ./scripts/install-contrib.sh -# 5. compiles source +# 5. compiles source -> build-output/ COPY --chown=scu:scu source source COPY --chown=scu:scu Manifest.json Manifest.json RUN qx compile --target=build diff --git a/services/web/client/docker-compose.yml b/services/web/client/docker-compose.yml index fc59c8f9446..a93d38483da 100644 --- a/services/web/client/docker-compose.yml +++ b/services/web/client/docker-compose.yml @@ -13,7 +13,7 @@ services: # pip install docker-windows-volume-watcher # docker-volume-watcher context: . - dockerfile: Dockerfile.build + dockerfile: Dockerfile target: ${BUILD_TARGET:-development} volumes: - '.:/home/scu/client' From e836528126d4987152a179f8bda16d1f86bc8936 Mon Sep 17 00:00:00 2001 From: Pedro Crespo Date: Fri, 15 Jun 2018 19:04:48 +0200 Subject: [PATCH 028/127] Renamed webserver dockerfile since it targets ci --- services/web/Dockerfile | 18 ---------- services/web/Dockerfile.ci | 72 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 18 deletions(-) delete mode 100644 services/web/Dockerfile create mode 100644 services/web/Dockerfile.ci diff --git a/services/web/Dockerfile b/services/web/Dockerfile deleted file mode 100644 index ee0eb469ebc..00000000000 --- a/services/web/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM client_qx:build as qx-build-stage - -ENV QOOXDOO_OUTDIR $HOME/client/source-output - - -# ------------------------------------------------------------------------------------------ -FROM python:3.6-alpine - -RUN useradd -r -u 1001 -g scu scu -USER scu - - -ENV HOME /home/scu -ENV SIMCORE_WEB_OUTDIR=$HOME/client - - - -COPY --from=qx-stage ${QOOXDOO_OUTDIR} ${SIMCORE_WEB_OUTDIR} diff --git a/services/web/Dockerfile.ci b/services/web/Dockerfile.ci new file mode 100644 index 00000000000..3b8234b1504 --- /dev/null +++ b/services/web/Dockerfile.ci @@ -0,0 +1,72 @@ +FROM python:3.6-alpine + +# USAGE: +# docker build -f Dockerfile.ci -t web:ci ../../ +# docker run web:ci +# +# REQUIRED: context expected at $(this-file-dir)/../../ +# REQUIRED: client_qx:build image ready + +# +# + /home/scu/ $HOME +# + client $SIMCORE_WEB_OUTDIR +# - index.html +# + packages * installed simcore/packages +# + simcore_sdk +# + server +# + src * +# + tests +# +# * = in PYTHONPATH +# +# +# TODO: try installing in venv in $HOME would allow installing as non-root all 3rd, 2nd +# and even the application itself +# +# TODO: straight copying python packages bring unnecessary files (e.g. __pycache__) -> dockerignore! +# could copy and then python setup.py install OR git clone into the container. +# This applies for both +# + +RUN adduser -D -u 8004 scu + +RUN apk add --no-cache \ + postgresql-dev \ + gcc \ + libc-dev + + +ENV HOME /home/scu + +ENV SIMCORE_WEB_OUTDIR $HOME/client +ENV SIMCORE_WEB_CONFIG production + +ENV PYTHONPATH "$HOME/server/src:$HOME/packages" + +WORKDIR /home/scu + +# 1. install 3rd party packages +COPY --chown=scu:scu services/web/server/requirements requirements +RUN pip3 install --no-cache-dir -r requirements/prod.txt &&\ + rm -rf requirements + +# 2. install 2nd party packages +COPY --chown=scu:scu packages/simcore-sdk/src packages + +# 3. install client +COPY --from=client_qx:build --chown=scu:scu /home/scu/client/build-output client + +# 4. install server +COPY --chown=scu:scu services/web/server/src server/src +COPY --chown=scu:scu services/web/server/tests server/tests + +USER scu + +WORKDIR $HOME/server/src + +ENTRYPOINT ["python", \ + "-m", "aiohttp.web"] + +CMD ["-H", "0.0.0.0", \ + "-P", "8080", \ + "server:create_app"] From 95c8a0ae5f46deaafa6b5aff36f91fd4964bf5b5 Mon Sep 17 00:00:00 2001 From: Pedro Crespo Date: Fri, 15 Jun 2018 19:27:41 +0200 Subject: [PATCH 029/127] docker ci version of webserver builds --- services/docker-compose.yml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/services/docker-compose.yml b/services/docker-compose.yml index cd886955df6..2a5a40f5091 100644 --- a/services/docker-compose.yml +++ b/services/docker-compose.yml @@ -17,21 +17,24 @@ services: volumes: - '/var/run/docker.sock:/var/run/docker.sock' #-------------------------------------------------------------------- + build_client: + image: client_qx:build + build: + context: ./web/client/ + dockerfile: Dockerfile + target: build + command: /bin/bash -c "cat build-output/version.txt" webserver: build: context: ../ - dockerfile: services/web/server/Dockerfile - target: production - args: - client_dir: services/web/client - server_dir: services/web/server + dockerfile: services/web/Dockerfile.ci ports: - '9081:8080' environment: - DIRECTOR_HOST=director - DIRECTOR_PORT=8001 - - SIMCORE_WEB_CONFIG=production - - PYTHONPATH=/usr/src/packages/simcore-sdk/src + depends_on: + - build_client #-------------------------------------------------------------------- rabbit: image: rabbitmq:3-management From dafd2eacac13141a08021a7605bb3a037c136525 Mon Sep 17 00:00:00 2001 From: Pedro Crespo Date: Fri, 15 Jun 2018 20:36:23 +0200 Subject: [PATCH 030/127] WIP: Implementing webserver devel docker - added entrypoint arguments to client_qx:devel - webclient:devel service is qx compile --watch - TODO mount webclient source-output in webserver:devel client volume - uniformed service naming --- services/docker-compose.devel.yml | 33 ++++++++++++----------- services/docker-compose.yml | 4 +-- services/web/client/Dockerfile | 9 +++++-- services/web/client/scripts/entrypoint.sh | 4 +-- 4 files changed, 28 insertions(+), 22 deletions(-) diff --git a/services/docker-compose.devel.yml b/services/docker-compose.devel.yml index 2a12dc0a5e5..3f2a66d0857 100644 --- a/services/docker-compose.devel.yml +++ b/services/docker-compose.devel.yml @@ -1,4 +1,4 @@ -# USAGE: docker-compose -f docker-compose.yml -f docker-compose.debug.yml ... +# USAGE: docker-compose -f docker-compose.yml -f docker-compose.devel.yml ... version: '3.4' services: director: @@ -8,25 +8,26 @@ services: volumes: - './director/source:/home/app/source' #-------------------------------------------------------------------- + webclient: + image: client_qx:development + build: + context: ./web/client/ + dockerfile: Dockerfile + target: development + volumes: + - './web/client:/home/scu/client' + command: compile --watch webserver: image: services_webserver:dev build: - #target: development - target: common-py-stage - ports: - - '9081:8080' - environment: - - DIRECTOR_HOST=director - - DIRECTOR_PORT=8001 - - SIMCORE_WEB_CONFIG=development + context: ../ + dockerfile: services/web/Dockerfile.dev volumes: - # FIXME: For the moment, client's source is copied also in dev - # - './web/client/source-output:/usr/src/source/client' - - './web/server/src:/usr/src/source' - - './web/server/tests:/usr/src/tests' - # TODO: consider pip install git: - - ../packages:/usr/src/packages - #------------comp. backend------------------------------------------- + - './web/server:/home/scu/server' + - ../packages:/home/scu/packages + depends_on: + - webclient + #-------------------------------------------------------------------- sidecar: image: services_sidecar:dev build: diff --git a/services/docker-compose.yml b/services/docker-compose.yml index 2a5a40f5091..14c140ef724 100644 --- a/services/docker-compose.yml +++ b/services/docker-compose.yml @@ -17,7 +17,7 @@ services: volumes: - '/var/run/docker.sock:/var/run/docker.sock' #-------------------------------------------------------------------- - build_client: + webclient: image: client_qx:build build: context: ./web/client/ @@ -34,7 +34,7 @@ services: - DIRECTOR_HOST=director - DIRECTOR_PORT=8001 depends_on: - - build_client + - webclient #-------------------------------------------------------------------- rabbit: image: rabbitmq:3-management diff --git a/services/web/client/Dockerfile b/services/web/client/Dockerfile index ccb0c80c689..d0220774f0c 100644 --- a/services/web/client/Dockerfile +++ b/services/web/client/Dockerfile @@ -67,7 +67,10 @@ FROM base-stage as development VOLUME /home/scu/client # 3. installs contribs and qx serve -> source-output/ -ENTRYPOINT ./scripts/entrypoint.sh +ENTRYPOINT ["./scripts/entrypoint.sh"] + +# 4. serves +CMD ["serve"] # ------------------------------------------------------------------------------------------ FROM base-stage as build @@ -86,4 +89,6 @@ COPY --chown=scu:scu source source COPY --chown=scu:scu Manifest.json Manifest.json RUN qx compile --target=build -CMD ["qx", "serve"] +ENTRYPOINT [] + +CMD ["qx"] diff --git a/services/web/client/scripts/entrypoint.sh b/services/web/client/scripts/entrypoint.sh index 26e82e15d65..ab76796c785 100755 --- a/services/web/client/scripts/entrypoint.sh +++ b/services/web/client/scripts/entrypoint.sh @@ -11,5 +11,5 @@ echo "- fonts dir : " ${FONTS_DIR} # TODO: add argument to avoid installing contributions ${SCRIPT_DIR}/install-contrib.sh -# TODO: add argument to control qx command at entry point -qx serve +echo Running \'qx "$@"\' ... +qx "$@" From bbe1287334d7895e6be527dfcf97976ad7aa3d05 Mon Sep 17 00:00:00 2001 From: Pedro Crespo Date: Mon, 18 Jun 2018 09:26:37 +0200 Subject: [PATCH 031/127] Deploying Web-server in devel mode. - Runs one service for the client and another for the web. - Each service watches respective source code - Minor renaming for consistency - Added make down --- Makefile | 4 ++ services/docker-compose.devel.yml | 12 ++-- services/docker-compose.yml | 4 +- services/web/Dockerfile.ci | 7 +- services/web/Dockerfile.devel | 71 +++++++++++++++++++ .../requirements/{dev.txt => devel.txt} | 0 6 files changed, 87 insertions(+), 11 deletions(-) create mode 100644 services/web/Dockerfile.devel rename services/web/server/requirements/{dev.txt => devel.txt} (100%) diff --git a/Makefile b/Makefile index a06d3aedd34..e24a507fec8 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,10 @@ up-swarm: docker swarm init docker-compose -f services/docker-compose.yml -f services/docker-compose.deploy.yml up +down: + docker-compose -f services/docker-compose.yml down + docker-compose -f services/docker-compose.yml -f services/docker-compose.devel.yml down + down-swarm: docker-compose -f services/docker-compose.yml -f services/docker-compose.deploy.yml down docker swarm leave -f diff --git a/services/docker-compose.devel.yml b/services/docker-compose.devel.yml index 3f2a66d0857..f2432447b9a 100644 --- a/services/docker-compose.devel.yml +++ b/services/docker-compose.devel.yml @@ -9,10 +9,8 @@ services: - './director/source:/home/app/source' #-------------------------------------------------------------------- webclient: - image: client_qx:development + image: services_webclient:dev build: - context: ./web/client/ - dockerfile: Dockerfile target: development volumes: - './web/client:/home/scu/client' @@ -20,11 +18,11 @@ services: webserver: image: services_webserver:dev build: - context: ../ - dockerfile: services/web/Dockerfile.dev + dockerfile: services/web/Dockerfile.devel volumes: - - './web/server:/home/scu/server' - - ../packages:/home/scu/packages + - ./web/server:/home/scu/server + - ./web/client:/home/scu/client + - ../packages/simcore-sdk/src:/home/scu/packages depends_on: - webclient #-------------------------------------------------------------------- diff --git a/services/docker-compose.yml b/services/docker-compose.yml index 14c140ef724..1665f9dbf2a 100644 --- a/services/docker-compose.yml +++ b/services/docker-compose.yml @@ -18,12 +18,12 @@ services: - '/var/run/docker.sock:/var/run/docker.sock' #-------------------------------------------------------------------- webclient: - image: client_qx:build + image: services_webclient:build build: context: ./web/client/ dockerfile: Dockerfile target: build - command: /bin/bash -c "cat build-output/version.txt" + command: /bin/bash -c "Echo "built with qx" && cat build-output/version.txt" webserver: build: context: ../ diff --git a/services/web/Dockerfile.ci b/services/web/Dockerfile.ci index 3b8234b1504..1f6e075472a 100644 --- a/services/web/Dockerfile.ci +++ b/services/web/Dockerfile.ci @@ -1,5 +1,7 @@ FROM python:3.6-alpine +LABEL maintainer=pcrespov + # USAGE: # docker build -f Dockerfile.ci -t web:ci ../../ # docker run web:ci @@ -11,10 +13,11 @@ FROM python:3.6-alpine # + /home/scu/ $HOME # + client $SIMCORE_WEB_OUTDIR # - index.html +# ... # + packages * installed simcore/packages # + simcore_sdk # + server -# + src * +# + src * # + tests # # * = in PYTHONPATH @@ -54,7 +57,7 @@ RUN pip3 install --no-cache-dir -r requirements/prod.txt &&\ COPY --chown=scu:scu packages/simcore-sdk/src packages # 3. install client -COPY --from=client_qx:build --chown=scu:scu /home/scu/client/build-output client +COPY --from=services_webclient:build --chown=scu:scu /home/scu/client/build-output client # 4. install server COPY --chown=scu:scu services/web/server/src server/src diff --git a/services/web/Dockerfile.devel b/services/web/Dockerfile.devel new file mode 100644 index 00000000000..838099e50b2 --- /dev/null +++ b/services/web/Dockerfile.devel @@ -0,0 +1,71 @@ +FROM python:3.6-alpine + +# USAGE: +# docker build -f Dockerfile.ci -t web:ci ../../ +# docker run web:ci +# +# REQUIRED: context expected at $(this-file-dir)/../../ +# REQUIRED: client_qx:build image ready + +# +# + /home/scu/ $HOME +# + client $SIMCORE_WEB_OUTDIR +# - index.html +# ... +# + packages * installed simcore/packages +# + simcore_sdk +# + server +# + src * +# + tests +# +# * = in PYTHONPATH +# +# +# TODO: try installing in venv in $HOME would allow installing as non-root all 3rd, 2nd +# and even the application itself +# +# TODO: straight copying python packages bring unnecessary files (e.g. __pycache__) -> dockerignore! +# could copy and then python setup.py install OR git clone into the container. +# This applies for both +# + +RUN adduser -D -u 8004 scu + +RUN apk add --no-cache \ + postgresql-dev \ + gcc \ + libc-dev + + +ENV HOME /home/scu + +ENV SIMCORE_WEB_OUTDIR $HOME/client/source-output +ENV SIMCORE_WEB_CONFIG development + +ENV PYTHONPATH "$HOME/server/src:$HOME/packages" + +WORKDIR /home/scu + +# 1. install 3rd party packages +COPY --chown=scu:scu services/web/server/requirements requirements +RUN pip3 install --no-cache-dir -r requirements/devel.txt &&\ + rm -rf requirements + +USER scu + +# 2. creates mounted volumes +RUN mkdir $HOME/client && \ + mkdir $HOME/packages + +WORKDIR $HOME/server/src + +VOLUME $HOME/server/ +VOLUME $HOME/client/ +VOLUME $HOME/packages + +ENTRYPOINT ["python", \ + "-m", "aiohttp.web"] + +CMD ["-H", "0.0.0.0", \ + "-P", "8080", \ + "server:create_app"] diff --git a/services/web/server/requirements/dev.txt b/services/web/server/requirements/devel.txt similarity index 100% rename from services/web/server/requirements/dev.txt rename to services/web/server/requirements/devel.txt From 8590498b1c502268a357dd99ddc399c17ed47ca2 Mon Sep 17 00:00:00 2001 From: Pedro Crespo Date: Mon, 18 Jun 2018 09:40:09 +0200 Subject: [PATCH 032/127] Deploying web server: - Created a single web/Dockerfile with three targets: development, ci and production --- services/docker-compose.devel.yml | 2 +- services/docker-compose.yml | 3 +- services/web/{Dockerfile.ci => Dockerfile} | 59 +++++++++-- services/web/Dockerfile.devel | 71 ------------- services/web/server/Dockerfile | 118 --------------------- 5 files changed, 53 insertions(+), 200 deletions(-) rename services/web/{Dockerfile.ci => Dockerfile} (59%) delete mode 100644 services/web/Dockerfile.devel delete mode 100644 services/web/server/Dockerfile diff --git a/services/docker-compose.devel.yml b/services/docker-compose.devel.yml index f2432447b9a..489cd9e8ad9 100644 --- a/services/docker-compose.devel.yml +++ b/services/docker-compose.devel.yml @@ -18,7 +18,7 @@ services: webserver: image: services_webserver:dev build: - dockerfile: services/web/Dockerfile.devel + target: development volumes: - ./web/server:/home/scu/server - ./web/client:/home/scu/client diff --git a/services/docker-compose.yml b/services/docker-compose.yml index 1665f9dbf2a..b6985198cbb 100644 --- a/services/docker-compose.yml +++ b/services/docker-compose.yml @@ -27,7 +27,8 @@ services: webserver: build: context: ../ - dockerfile: services/web/Dockerfile.ci + dockerfile: services/web/Dockerfile + target: ci ports: - '9081:8080' environment: diff --git a/services/web/Dockerfile.ci b/services/web/Dockerfile similarity index 59% rename from services/web/Dockerfile.ci rename to services/web/Dockerfile index 1f6e075472a..28d9f1ca368 100644 --- a/services/web/Dockerfile.ci +++ b/services/web/Dockerfile @@ -1,9 +1,9 @@ -FROM python:3.6-alpine +FROM python:3.6-alpine as base-stage LABEL maintainer=pcrespov # USAGE: -# docker build -f Dockerfile.ci -t web:ci ../../ +# docker build -f Dockerfile -t web:ci --target ci ../../ # docker run web:ci # # REQUIRED: context expected at $(this-file-dir)/../../ @@ -40,17 +40,54 @@ RUN apk add --no-cache \ ENV HOME /home/scu - ENV SIMCORE_WEB_OUTDIR $HOME/client -ENV SIMCORE_WEB_CONFIG production - ENV PYTHONPATH "$HOME/server/src:$HOME/packages" + WORKDIR /home/scu -# 1. install 3rd party packages +# 1. install common 3rd party packages COPY --chown=scu:scu services/web/server/requirements requirements -RUN pip3 install --no-cache-dir -r requirements/prod.txt &&\ +RUN pip3 install --no-cache-dir -r requirements/common.txt + +EXPOSE 8080 + +ENTRYPOINT ["python", \ + "-m", "aiohttp.web"] + +# ------------------------------------------------------------------------------------------ +FROM base-stage as development + +ENV SIMCORE_WEB_CONFIG development + +# 1.1 install devel 3rd party packages +RUN pip3 install --no-cache-dir -r requirements/devel.txt && \ + rm -rf requirements + +USER scu + +# 2. creates mounted volumes +RUN mkdir $HOME/client && \ + mkdir $HOME/packages + +WORKDIR $HOME/server/src + +VOLUME $HOME/server/ +VOLUME $HOME/client/ +VOLUME $HOME/packages + +CMD ["-H", "0.0.0.0", \ + "-P", "8080", \ + "server:create_app"] + + +# ------------------------------------------------------------------------------------------ +FROM base-stage as ci + +ENV SIMCORE_WEB_CONFIG production + +# 1.1 install devel 3rd party packages +RUN pip3 install --no-cache-dir -r requirements/prod.txt && \ rm -rf requirements # 2. install 2nd party packages @@ -67,9 +104,13 @@ USER scu WORKDIR $HOME/server/src -ENTRYPOINT ["python", \ - "-m", "aiohttp.web"] CMD ["-H", "0.0.0.0", \ "-P", "8080", \ "server:create_app"] + + +# ------------------------------------------------------------------------------------------ +FROM ci as production + +RUN rm -rf server/tests diff --git a/services/web/Dockerfile.devel b/services/web/Dockerfile.devel deleted file mode 100644 index 838099e50b2..00000000000 --- a/services/web/Dockerfile.devel +++ /dev/null @@ -1,71 +0,0 @@ -FROM python:3.6-alpine - -# USAGE: -# docker build -f Dockerfile.ci -t web:ci ../../ -# docker run web:ci -# -# REQUIRED: context expected at $(this-file-dir)/../../ -# REQUIRED: client_qx:build image ready - -# -# + /home/scu/ $HOME -# + client $SIMCORE_WEB_OUTDIR -# - index.html -# ... -# + packages * installed simcore/packages -# + simcore_sdk -# + server -# + src * -# + tests -# -# * = in PYTHONPATH -# -# -# TODO: try installing in venv in $HOME would allow installing as non-root all 3rd, 2nd -# and even the application itself -# -# TODO: straight copying python packages bring unnecessary files (e.g. __pycache__) -> dockerignore! -# could copy and then python setup.py install OR git clone into the container. -# This applies for both -# - -RUN adduser -D -u 8004 scu - -RUN apk add --no-cache \ - postgresql-dev \ - gcc \ - libc-dev - - -ENV HOME /home/scu - -ENV SIMCORE_WEB_OUTDIR $HOME/client/source-output -ENV SIMCORE_WEB_CONFIG development - -ENV PYTHONPATH "$HOME/server/src:$HOME/packages" - -WORKDIR /home/scu - -# 1. install 3rd party packages -COPY --chown=scu:scu services/web/server/requirements requirements -RUN pip3 install --no-cache-dir -r requirements/devel.txt &&\ - rm -rf requirements - -USER scu - -# 2. creates mounted volumes -RUN mkdir $HOME/client && \ - mkdir $HOME/packages - -WORKDIR $HOME/server/src - -VOLUME $HOME/server/ -VOLUME $HOME/client/ -VOLUME $HOME/packages - -ENTRYPOINT ["python", \ - "-m", "aiohttp.web"] - -CMD ["-H", "0.0.0.0", \ - "-P", "8080", \ - "server:create_app"] diff --git a/services/web/server/Dockerfile b/services/web/server/Dockerfile deleted file mode 100644 index e600512adeb..00000000000 --- a/services/web/server/Dockerfile +++ /dev/null @@ -1,118 +0,0 @@ -#FIXME: MUST use the same as web/client/Dockerfile -FROM node:8.9.2 as qx-stage -# -# + /home/scu/ -# + /client =$SIMCORE_WEB_OUTDIR -# + /server -# + /requirements -# + /tests -# + /src =$PWD - - -# client_dir = path to client dir from context -ARG client_dir=web/client - -# user defined in base image -USER node - -# workdir -WORKDIR /home/node - -RUN chown -R node:node /home/node - - -# npm variables -ENV PATH=/home/node/node_modules/.bin:$PATH - -COPY --chown=node:node $client_dir/package*.json . -RUN npm install && \ - git clone --depth=1 https://github.com/qooxdoo/qooxdoo.git qooxdoo-sdk && \ - mkdir src - -# workdir -WORKDIR /home/node/src - -USER node - -COPY --chown=node:node $client_dir/source source -COPY --chown=node:node $client_dir/scripts scripts -COPY --chown=node:node $client_dir/compile.json . -COPY --chown=node:node $client_dir/Manifest.json . - -# client's source code TODO: move everything under webapp - -RUN ls -l ; ./scripts/install-contrib.sh ; \ - qx compile - -# -------------------------common-py-stage------------------------------------ -FROM python:3.6-alpine as common-py-stage -# -# + /home/scu/ -# + /client =$SIMCORE_WEB_OUTDIR -# + /server -# + /requirements -# + /tests -# + /src =$PWD - - -# TODO: create non-root user - -ARG server_dir=web/server - -RUN apk add --no-cache \ - postgresql-dev \ - gcc \ - libc-dev - -WORKDIR /usr/src/source - -ENV SIMCORE_WEB_OUTDIR=/usr/src/client -ENV DIRECTOR_HOST='director' -ENV DIRECTOR_PORT=8001 - -# client compiled code -COPY --from=qx-stage /home/node/src/source-output ${SIMCORE_WEB_OUTDIR} - -# packages -COPY $server_dir/requirements/common.txt /usr/src/requirements/common.txt -RUN pip3 install --no-cache-dir -r /usr/src/requirements/common.txt - -EXPOSE 8080 - - -# ----------------------------development--------------------------------- -FROM common-py-stage as development - -ARG server_dir=web/server - -ENV SIMCORE_WEB_CONFIG=development - -COPY $server_dir/requirements/dev.txt /usr/src/requirements/dev.txt -RUN pip3 install --no-cache-dir -r /usr/src/requirements/dev.txt -RUN python --version && \ - pip list --format=columns && \ - echo; ls -l $PWD - -# TODO: web should re-serve upon changes on code (both client) -CMD ["python", "-m", "aiohttp.web", "-H", "0.0.0.0", "-P", "8080", "server:create_app"] - - - -# -----------------------------production-------------------------------- -FROM common-py-stage as production - -ARG server_dir=web/server - -ENV SIMCORE_WEB_CONFIG=production - -COPY $server_dir/requirements/prod.txt /usr/src/requirements/prod.txt -RUN pip3 install --no-cache-dir -r /usr/src/requirements/prod.txt \ - && python --version \ - && pip list --format=columns - -COPY $server_dir/src . -COPY packages /usr/src/packages - -ENTRYPOINT ["python", "-m", "aiohttp.web"] - -CMD ["-H", "0.0.0.0", "-P", "8080", "server:create_app"] From 38534f97758bb7964e568839cbb1de877d06a648 Mon Sep 17 00:00:00 2001 From: Pedro Crespo Date: Mon, 18 Jun 2018 09:42:54 +0200 Subject: [PATCH 033/127] Fixed mounted volumes --- services/web/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/web/Dockerfile b/services/web/Dockerfile index 28d9f1ca368..49b498b8698 100644 --- a/services/web/Dockerfile +++ b/services/web/Dockerfile @@ -72,9 +72,9 @@ RUN mkdir $HOME/client && \ WORKDIR $HOME/server/src -VOLUME $HOME/server/ -VOLUME $HOME/client/ -VOLUME $HOME/packages +VOLUME /home/scu/server/ +VOLUME /home/scu/client/ +VOLUME /home/scu/packages CMD ["-H", "0.0.0.0", \ "-P", "8080", \ From cf21f31919e9628bb2d444da118b5f314f205385 Mon Sep 17 00:00:00 2001 From: Pedro Crespo Date: Mon, 18 Jun 2018 10:25:58 +0200 Subject: [PATCH 034/127] Removed tmp scripts and added mask to ignore them --- .gitignore | 5 +++++ services/web/client/scripts/ignore_me.sh | 23 ----------------------- 2 files changed, 5 insertions(+), 23 deletions(-) delete mode 100755 services/web/client/scripts/ignore_me.sh diff --git a/.gitignore b/.gitignore index 408800b6253..cf41be2b145 100644 --- a/.gitignore +++ b/.gitignore @@ -115,3 +115,8 @@ services/docker-compose.override.yml # mac .DS_Store + + +# key-words in filename to ignore them +*secret* +*ignore* diff --git a/services/web/client/scripts/ignore_me.sh b/services/web/client/scripts/ignore_me.sh deleted file mode 100755 index f881e1298c5..00000000000 --- a/services/web/client/scripts/ignore_me.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -echo Testing with $0 - -source $(dirname $0)/.env -echo "- script dir: " ${SCRIPT_DIR} -echo "- client dir: " ${CLIENT_DIR} -echo "- fonts dir : " ${FONTS_DIR} - - -# TODO: add argument to control qx command at entry point -echo Running \'qx serve "$@"\' - -pushd ${FONTS_DIR} -echo --------- -pwd -echo content: -ls -la -popd - -echo --------- -pwd -echo content: -ls -la From b229dac7d5ca41b779dbac63c30ef112e1e233ae Mon Sep 17 00:00:00 2001 From: Pedro Crespo Date: Mon, 18 Jun 2018 13:55:41 +0200 Subject: [PATCH 035/127] Fixes bind mount from source-ouput into server's client folder --- services/docker-compose.devel.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/docker-compose.devel.yml b/services/docker-compose.devel.yml index 489cd9e8ad9..fc59d5bc322 100644 --- a/services/docker-compose.devel.yml +++ b/services/docker-compose.devel.yml @@ -21,7 +21,7 @@ services: target: development volumes: - ./web/server:/home/scu/server - - ./web/client:/home/scu/client + - ./web/client/source-output:/home/scu/client - ../packages/simcore-sdk/src:/home/scu/packages depends_on: - webclient From 596ab2dd039e952f39185e3535cbc7480bdbed44 Mon Sep 17 00:00:00 2001 From: Manuel Guidon Date: Tue, 19 Jun 2018 18:19:09 +0200 Subject: [PATCH 036/127] Mising file save --- services/web/client/Dockerfile | 9 --------- 1 file changed, 9 deletions(-) diff --git a/services/web/client/Dockerfile b/services/web/client/Dockerfile index fd6723043b6..d0220774f0c 100644 --- a/services/web/client/Dockerfile +++ b/services/web/client/Dockerfile @@ -46,17 +46,8 @@ WORKDIR /home/scu # - This is a temporary solution RUN git clone --depth 1 https://github.com/qooxdoo/qooxdoo.git ${QOOXDOO_PATH} -<<<<<<< HEAD # 2. installs qx-compiler (see specs in package.json) COPY --chown=scu:scu package*.json ./ -======= -# FIXME: npm WARN node description, ... -# FIXME: npm WARN notice [SECURITY] tunnel-agen -# FIXME: npm WARN notice [SECURITY] hoek -RUN npm i npm@latest && \ - npm install && \ - git clone --depth 1 https://github.com/qooxdoo/qooxdoo.git qooxdoo-sdk ->>>>>>> comp_backend RUN npm install npm@latest && \ npm install From 0014d1bc936186afc5a29894badf415ac66eb2d3 Mon Sep 17 00:00:00 2001 From: Manuel Guidon Date: Wed, 20 Jun 2018 07:59:45 +0200 Subject: [PATCH 037/127] TODO for logger --- services/sidecar/src/sidecar/sidecar.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/sidecar/src/sidecar/sidecar.py b/services/sidecar/src/sidecar/sidecar.py index ca35a009063..6c9ddbdf3da 100644 --- a/services/sidecar/src/sidecar/sidecar.py +++ b/services/sidecar/src/sidecar/sidecar.py @@ -23,7 +23,7 @@ rabbit_config = rabbit_config() celery= Celery(rabbit_config.name, broker=rabbit_config.broker, backend=rabbit_config.backend) - +# TODO: configure via command line or config file logging.basicConfig(level=logging.DEBUG) #_LOGGER = logging.getLogger(__name__) _LOGGER = get_task_logger(__name__) From c0c71808894a7a0985275e31084a8451fe89ec61 Mon Sep 17 00:00:00 2001 From: Manuel Guidon Date: Wed, 20 Jun 2018 11:44:21 +0200 Subject: [PATCH 038/127] Add repo query --- services/director/source/director.py | 10 ++++++ services/director/source/registry_proxy.py | 35 +++++++++++++++++++ .../client/source/class/qxapp/data/Fake.js | 35 ++++++++++++++++--- services/web/server/src/director_proxy.py | 5 +++ services/web/server/src/registry_api.py | 22 +++++++++++- 5 files changed, 102 insertions(+), 5 deletions(-) diff --git a/services/director/source/director.py b/services/director/source/director.py index 9fef43968f8..ae9aa678b88 100644 --- a/services/director/source/director.py +++ b/services/director/source/director.py @@ -102,6 +102,16 @@ def stop_service(): _LOGGER.exception("Failed to stop service") abort(500) +@APP.route('/list_repositories', methods=['GET']) +def list_repositories(): + """[summary] + + Returns: + [type] -- [description] + """ + repos = registry_proxy.get_repo_details() + + return json.dumps(repos) if __name__ == "__main__": APP.run(host='0.0.0.0', debug=False, port=8001, threaded=True) diff --git a/services/director/source/registry_proxy.py b/services/director/source/registry_proxy.py index 973a7bd6de4..e6fdc0389fc 100644 --- a/services/director/source/registry_proxy.py +++ b/services/director/source/registry_proxy.py @@ -5,6 +5,8 @@ import json import os +from pprint import pprint + from requests import RequestException, Session INTERACTIVE_SERVICES_PREFIX = 'simcore/services/' @@ -86,3 +88,36 @@ def get_service_sub_name(repository_name): if last_suffix_index < 0: raise Exception('Invalid service name: ' + repository_name) return list_of_suffixes[last_suffix_index] + +def get_repo_details(): + request_result = registry_request('_catalog') + + repos = request_result.json()['repositories'] + repositories = {} + repo_list = [] + for repo in repos: + current_repo = {} + current_repo['name'] = repo + req_images = registry_request(repo + '/tags/list') + im_data = req_images.json() + tags = im_data['tags'] + + image_tags = {} + for tag in tags: + label_request = registry_request(repo + '/manifests/' + tag) + label_data = label_request.json() + labels = json.loads(label_data["history"][0]["v1Compatibility"])["container_config"]["Labels"] + image_tags['tag'] = tag + image_tags['labels'] = labels + + current_repo['tags'] = image_tags + + + repo_list.append(current_repo) + + repositories['repositories'] = repo_list + #result_json = request_result.json()['repositories'] + result_json = json.dumps(repositories) + + + return result_json diff --git a/services/web/client/source/class/qxapp/data/Fake.js b/services/web/client/source/class/qxapp/data/Fake.js index 63741c106d6..643da5438c6 100644 --- a/services/web/client/source/class/qxapp/data/Fake.js +++ b/services/web/client/source/class/qxapp/data/Fake.js @@ -568,13 +568,40 @@ qx.Class.define("qxapp.data.Fake", { }, getServices: function() { + let req = new qx.io.request.Xhr(); + req.set({ + url: "/repositories", + method: "GET" + }); + req.addListener("success", this.__onListOfRepositories, this); + req.send(); + let fakeServices = []; + Array.prototype.push.apply(fakeServices, qxapp.data.Fake.getProducers()); + Array.prototype.push.apply(fakeServices, qxapp.data.Fake.getComputationals()); + Array.prototype.push.apply(fakeServices, qxapp.data.Fake.getAnalyses()); + return fakeServices; + }, + + __onListOfRepositories: function(e) { + let req = e.getTarget(); + console.debug("ListOfRepositories went fine!!"); + console.debug("status : ", req.getStatus()); + console.debug("phase : ", req.getPhase()); + console.debug("response: ", req.getResponse()); + let availableServices = []; - Array.prototype.push.apply(availableServices, qxapp.data.Fake.getProducers()); - Array.prototype.push.apply(availableServices, qxapp.data.Fake.getComputationals()); - Array.prototype.push.apply(availableServices, qxapp.data.Fake.getAnalyses()); - return availableServices; + const listOfRepos = req.getResponse(); + for (let i=0; i Date: Wed, 20 Jun 2018 14:59:27 +0200 Subject: [PATCH 039/127] fix too-many-nested-blocks --- services/director/source/registry_proxy.py | 50 ++++++++++++---------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/services/director/source/registry_proxy.py b/services/director/source/registry_proxy.py index f86b34ac655..e46f65ce488 100644 --- a/services/director/source/registry_proxy.py +++ b/services/director/source/registry_proxy.py @@ -87,6 +87,30 @@ def get_service_sub_name(repository_name): raise Exception('Invalid service name: ' + repository_name) return list_of_suffixes[last_suffix_index] +def _get_repo_details(repo): + #pylint: disable=too-many-nested-blocks + current_repo = {} + if "/comp/" in repo: + current_repo['name'] = repo + req_images = registry_request(repo + '/tags/list') + im_data = req_images.json() + tags = im_data['tags'] + image_tags = {} + for tag in tags: + label_request = registry_request(repo + '/manifests/' + tag) + label_data = label_request.json() + labels = json.loads(label_data["history"][0]["v1Compatibility"])["container_config"]["Labels"] + if labels: + for key in labels.keys(): + if key.startswith("io.simcore."): + label_data = json.loads(labels[key]) + for label_key in label_data.keys(): + image_tags[label_key] = label_data[label_key] + if image_tags: + current_repo['tags'] = image_tags + + return current_repo + def get_repo_details(): request_result = registry_request('_catalog') @@ -94,29 +118,9 @@ def get_repo_details(): repositories = {} repo_list = [] for repo in repos: - if "/comp/" in repo: - current_repo = {} - current_repo['name'] = repo - req_images = registry_request(repo + '/tags/list') - im_data = req_images.json() - tags = im_data['tags'] - - image_tags = {} - for tag in tags: - label_request = registry_request(repo + '/manifests/' + tag) - label_data = label_request.json() - labels = json.loads(label_data["history"][0]["v1Compatibility"])["container_config"]["Labels"] - if labels: - for key in labels.keys(): - if key.startswith("io.simcore."): - label_data = json.loads(labels[key]) - for label_key in label_data.keys(): - image_tags[label_key] = label_data[label_key] - if image_tags: - current_repo['tags'] = image_tags - - - repo_list.append(current_repo) + details = _get_repo_details(repo) + if details: + repo_list.append(details) repositories['repositories'] = repo_list result_json = json.dumps(repositories) From b97373b07ce690469c96bee37e1eea086b0f493f Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 20 Jun 2018 15:06:47 +0200 Subject: [PATCH 040/127] provide a map between input/output keys and actual files --- .../resource/qxapp/node-meta-v0.0.1.json | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json index 2f20ed570c4..09375a903eb 100644 --- a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json @@ -145,6 +145,24 @@ "boolean" ] }, + "fileToKeyMap": { + "type": "array", + "description": "Place the data associated with the named keys in files", + "items": { + "type": "object", + "patternProperties": { + ".+": { + "type": "string" + } + }, + "examples": [ + { + "dir/input1.txt": "key_1", + "dir33/input2.txt": "key2" + } + ] + } + }, "defaultValue": { "description": "initial value for this input", "type": ["string","number","integer","boolean"], @@ -272,7 +290,25 @@ "number", "boolean" ] - } + }, + "fileToKeyMap": { + "type": "array", + "description": "Place the data stored in the named files and store it in the locations pointed to by the respective output key.", + "items": { + "type": "object", + "patternProperties": { + ".+": { + "type": "string" + } + }, + "examples": [ + { + "dir/input1.txt": "key_1", + "dir33/input2.txt": "key2" + } + ] + } + }, } } } From f489eb3ff39c2051af34c63b0fa1da68a9c99e53 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 20 Jun 2018 15:20:52 +0200 Subject: [PATCH 041/127] fix mapping syntax --- .../resource/qxapp/node-meta-v0.0.1.json | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json index 09375a903eb..048a7c34abd 100644 --- a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json @@ -292,23 +292,20 @@ ] }, "fileToKeyMap": { - "type": "array", "description": "Place the data stored in the named files and store it in the locations pointed to by the respective output key.", - "items": { - "type": "object", - "patternProperties": { - ".+": { - "type": "string" - } - }, - "examples": [ - { - "dir/input1.txt": "key_1", - "dir33/input2.txt": "key2" - } - ] - } - }, + "type": "object", + "patternProperties": { + ".+": { + "type": "string" + } + }, + "examples": [ + { + "dir/input1.txt": "key_1", + "dir33/input2.txt": "key2" + } + ] + } } } } From 4bff0a3f53eac6f805593fbeb467ac3c48da6d05 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 20 Jun 2018 15:23:51 +0200 Subject: [PATCH 042/127] fix file2key map logic --- .../resource/qxapp/node-meta-v0.0.1.json | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json index 048a7c34abd..3b0c7339251 100644 --- a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json @@ -36,7 +36,7 @@ }, "name": { "type": "string", - "description": "short, humean readable name for the node", + "description": "short, human readable name for the node", "examples": [ "Fast Counter" ] @@ -75,7 +75,7 @@ ] }, "affiliation": { - "description": "Affiliaton of the author", + "description": "Affiliation of the author", "type": "string", "examples": [ "Sense8", @@ -88,7 +88,7 @@ "contact": { "type": "string", "format": "email", - "description": "email to corespond to the authors about the node", + "description": "email to correspond to the authors about the node", "examples": [ "lab@net.flix" ] @@ -146,22 +146,20 @@ ] }, "fileToKeyMap": { - "type": "array", "description": "Place the data associated with the named keys in files", - "items": { - "type": "object", - "patternProperties": { - ".+": { - "type": "string" - } - }, - "examples": [ - { - "dir/input1.txt": "key_1", - "dir33/input2.txt": "key2" - } - ] - } + + "type": "object", + "patternProperties": { + ".+": { + "type": "string" + } + }, + "examples": [ + { + "dir/input1.txt": "key_1", + "dir33/input2.txt": "key2" + } + ] }, "defaultValue": { "description": "initial value for this input", @@ -244,7 +242,7 @@ "description": "definition of the outputs of this node", "items": { "type": "object", - "description": "all the ouptut produced by this node", + "description": "all the output produced by this node", "additionalProperties": false, "required": [ "key", From e218c561c64caa1c66f3c244758ffd71bac2c70e Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Wed, 20 Jun 2018 15:24:35 +0200 Subject: [PATCH 043/127] minor --- .../class/qxapp/components/workbench/widgets/FileManager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/client/source/class/qxapp/components/workbench/widgets/FileManager.js b/services/web/client/source/class/qxapp/components/workbench/widgets/FileManager.js index 57bb837d850..1e6d1349edd 100644 --- a/services/web/client/source/class/qxapp/components/workbench/widgets/FileManager.js +++ b/services/web/client/source/class/qxapp/components/workbench/widgets/FileManager.js @@ -16,7 +16,7 @@ qx.Class.define("qxapp.components.workbench.widgets.FileManager", { this.getContentElement().add(input); - let pick = new qx.ui.form.Button(this.tr("Add file")); + let pick = new qx.ui.form.Button(this.tr("Add file(s)")); this.add(pick); // Add an event listener From c2851b38cf6b5e6d78e5b6037679d35d33b5a1d2 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Wed, 20 Jun 2018 15:27:45 +0200 Subject: [PATCH 044/127] minor --- .../workbench/servicesCatalogue/ServicesCatalogue.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/services/web/client/source/class/qxapp/components/workbench/servicesCatalogue/ServicesCatalogue.js b/services/web/client/source/class/qxapp/components/workbench/servicesCatalogue/ServicesCatalogue.js index 11febdd5816..81901fd3ffc 100644 --- a/services/web/client/source/class/qxapp/components/workbench/servicesCatalogue/ServicesCatalogue.js +++ b/services/web/client/source/class/qxapp/components/workbench/servicesCatalogue/ServicesCatalogue.js @@ -23,7 +23,7 @@ qx.Class.define("qxapp.components.workbench.servicesCatalogue.ServicesCatalogue" let searchLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(10)); let searchLabel = new qx.ui.basic.Label("Search"); searchLayout.add(searchLabel); - let textfield = new qx.ui.form.TextField(); + let textfield = this.__textfield = new qx.ui.form.TextField(); textfield.setLiveUpdate(true); searchLayout.add(textfield, { flex: 1 @@ -32,11 +32,11 @@ qx.Class.define("qxapp.components.workbench.servicesCatalogue.ServicesCatalogue" this.__allServices = qxapp.data.Fake.getServices(); // TODO: OM & PC replace this with delegates - let rawData2 = []; + let names = []; for (let i = 0; i < this.__allServices.length; i++) { - rawData2.push(this.__allServices[i].name); + names.push(this.__allServices[i].name); } - this.__rawData = new qx.data.Array(rawData2); + let rawData = new qx.data.Array(names); this.__list = new qx.ui.form.List(); this.add(this.__list, { @@ -45,7 +45,7 @@ qx.Class.define("qxapp.components.workbench.servicesCatalogue.ServicesCatalogue" this.__list.setSelectionMode("one"); // create the controller - this.__controller = new qx.data.controller.List(this.__rawData, this.__list); + this.__controller = new qx.data.controller.List(rawData, this.__list); // controller.setLabelPath("name"); // create the filter @@ -97,7 +97,7 @@ qx.Class.define("qxapp.components.workbench.servicesCatalogue.ServicesCatalogue" members: { __allServices: null, - __rawData: null, + __textfield: null, __list: null, __controller: null, __contextNodeId: null, From e11a2fcca9916db3f99eceba908ab146d20b3e02 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 20 Jun 2018 15:54:11 +0200 Subject: [PATCH 045/127] switch to pattern properties and add displayOrder key for ordering --- .../resource/qxapp/node-meta-v0.0.1.json | 390 +++++++++--------- 1 file changed, 197 insertions(+), 193 deletions(-) diff --git a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json index 3b0c7339251..de25576f43e 100644 --- a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json @@ -94,215 +94,219 @@ ] }, "inputs": { - "type": "array", + "type": "object", "description": "definition of the inputs of this node", - "items": { - "type": "object", - "description": "all the input configurable for this service", - "additionalProperties": false, - "required": [ - "key", - "label", - "description", - "type", - "defaultValue" - ], - "properties": { - "key": { - "type": "string", - "pattern": "^[_a-z0-9]+", - "description": "unique identifier for this input property", - "examples": [ - "age" - ] - }, - "label": { - "type": "string", - "description": "short name for the property", - "examples": [ - "Age" - ] - }, - "description": { - "type": "string", - "description": "description of the property", - "examples": [ - "Age in seconds since 1970" - ] - }, - "type": { - "type": "string", - "enum": [ - "number", - "file-url", - "boolean", - "string", - "scene" - ], - "description": "data type expected on this input", - "examples": [ - "number", - "boolean" - ] - }, - "fileToKeyMap": { - "description": "Place the data associated with the named keys in files", - - "type": "object", - "patternProperties": { - ".+": { - "type": "string" - } + "patternProperties": { + "^[_a-z0-9]+$": { + "type": "object", + "description": "all the input configurable for this service", + "additionalProperties": false, + "required": [ + "displayOrder", + "label", + "description", + "type", + "defaultValue" + ], + "properties": { + "displayOrder": { + "type": "string", + "description": "use this to alphabetically sort the properties for display", + "examples": [ + "001.001", + "001.002.001" + ] }, - "examples": [ - { - "dir/input1.txt": "key_1", - "dir33/input2.txt": "key2" - } - ] - }, - "defaultValue": { - "description": "initial value for this input", - "type": ["string","number","integer","boolean"], - "examples": [ - "Dog", - true - ] - }, - "widget": { - "description": "custom widget to use instead of the default one determined from the data-type", - "anyOf": [ - { - "type": "object", - "additionalProperties": false, - "required": [ - "type" - ], - "properties": { - "type": { - "description": "type of the property", - "type": "string", - "enum": ["TextArea"] - }, - "minHeight": { - "description": "minimum Height of the textarea", - "type": "integer", - "minimum": 1 - } + "label": { + "type": "string", + "description": "short name for the property", + "examples": [ + "Age" + ] + }, + "description": { + "type": "string", + "description": "description of the property", + "examples": [ + "Age in seconds since 1970" + ] + }, + "type": { + "type": "string", + "enum": [ + "number", + "file-url", + "boolean", + "string", + "scene" + ], + "description": "data type expected on this input", + "examples": [ + "number", + "boolean" + ] + }, + "fileToKeyMap": { + "description": "Place the data associated with the named keys in files", + + "type": "object", + "patternProperties": { + ".+": { + "type": "string" } }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "type", - "structure" - ], - "properties": { - "type": { - "description": "type of the property", - "type": "string", - "enum": ["SelectBox"] - }, - "structure": { - "type": "array", - "minItems": 1, - "items": { - "type":"object", - "additionalProperties": false, - "required": [ - "key", - "label" - ], - "properties": { - "key": { - "type": ["string","boolean","number"] + "examples": [ + { + "dir/input1.txt": "key_1", + "dir33/input2.txt": "key2" + } + ] + }, + "defaultValue": { + "description": "initial value for this input", + "type": ["string","number","integer","boolean"], + "examples": [ + "Dog", + true + ] + }, + "widget": { + "description": "custom widget to use instead of the default one determined from the data-type", + "anyOf": [ + { + "type": "object", + "additionalProperties": false, + "required": [ + "type" + ], + "properties": { + "type": { + "description": "type of the property", + "type": "string", + "enum": ["TextArea"] + }, + "minHeight": { + "description": "minimum Height of the textarea", + "type": "integer", + "minimum": 1 + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": [ + "type", + "structure" + ], + "properties": { + "type": { + "description": "type of the property", + "type": "string", + "enum": ["SelectBox"] + }, + "structure": { + "type": "array", + "minItems": 1, + "items": { + "type":"object", + "additionalProperties": false, + "required": [ + "key", + "label" + ], + "properties": { + "key": { + "type": ["string","boolean","number"] + }, + "label": { + "type": "string" + } }, - "label": { - "type": "string" - } - }, - "examples": [ - [ - { "key": "rat", "label": "The Rat"}, - { "key": "dog", "label": "Bello the Dog"} + "examples": [ + [ + { "key": "rat", "label": "The Rat"}, + { "key": "dog", "label": "Bello the Dog"} + ] ] - ] + } } } } - } - ] + ] + } } } } }, "outputs": { - "type": "array", + "type": "object", "description": "definition of the outputs of this node", - "items": { - "type": "object", - "description": "all the output produced by this node", - "additionalProperties": false, - "required": [ - "key", - "label", - "description", - "type", - "defaultValue" - ], - "properties": { - "key": { - "type": "string", - "pattern": "^[_a-z0-9]+", - "description": "unique identifier for this output property", - "examples": [ - "age" - ] - }, - "label": { - "type": "string", - "description": "short name for the property", - "examples": [ - "Age" - ] - }, - "description": { - "type": "string", - "description": "description of the property", - "examples": [ - "Age in seconds since 1970" - ] - }, - "type": { - "type": "string", - "enum": [ - "number", - "file-url", - "boolean", - "string", - "scene" - ], - "description": "data type expected on this output", - "examples": [ - "number", - "boolean" - ] - }, - "fileToKeyMap": { - "description": "Place the data stored in the named files and store it in the locations pointed to by the respective output key.", - "type": "object", - "patternProperties": { - ".+": { - "type": "string" - } + "patternProperties": { + "^[_a-z0-9]+$": { + "type": "object", + "description": "all the output produced by this node", + "additionalProperties": false, + "required": [ + "displayOrder", + "label", + "description", + "type", + "defaultValue" + ], + "properties": { + "displayOrder": { + "type": "string", + "description": "use this to alphabetically sort the properties for display", + "examples": [ + "001.001", + "001.002.001" + ] }, - "examples": [ - { - "dir/input1.txt": "key_1", - "dir33/input2.txt": "key2" - } - ] + "label": { + "type": "string", + "description": "short name for the property", + "examples": [ + "Age" + ] + }, + "description": { + "type": "string", + "description": "description of the property", + "examples": [ + "Age in seconds since 1970" + ] + }, + "type": { + "type": "string", + "enum": [ + "number", + "file-url", + "boolean", + "string", + "scene" + ], + "description": "data type expected on this output", + "examples": [ + "number", + "boolean" + ] + }, + "fileToKeyMap": { + "description": "Place the data stored in the named files and store it in the locations pointed to by the respective output key.", + "type": "object", + "patternProperties": { + ".+": { + "type": "string" + } + }, + "examples": [ + { + "dir/input1.txt": "key_1", + "dir33/input2.txt": "key2" + } + ] + } } } } From 1db74035a660d9208a3b54da509640d77e5f7ffa Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Wed, 20 Jun 2018 16:20:13 +0200 Subject: [PATCH 046/127] "desc" -> "description" --- .../client/source/class/qxapp/data/Fake.js | 178 +++++++++--------- 1 file changed, 89 insertions(+), 89 deletions(-) diff --git a/services/web/client/source/class/qxapp/data/Fake.js b/services/web/client/source/class/qxapp/data/Fake.js index 474b23fe2a8..4866af6a914 100644 --- a/services/web/client/source/class/qxapp/data/Fake.js +++ b/services/web/client/source/class/qxapp/data/Fake.js @@ -95,7 +95,7 @@ qx.Class.define("qxapp.data.Fake", { "key": "masu.speag.com/simcore/services/comp/sleeper", "tag": "1.0", "name": "Node 1", - "desc": "Node 1", + "description": "Node 1", "position": { "x": 50, "y": 100 @@ -103,28 +103,28 @@ qx.Class.define("qxapp.data.Fake", { "inputs": [{ "key": "in_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "value": null }, { "key": "in_2", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "value": null }], "outputs": [{ "key": "out_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "value": null }, { "key": "out_2", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "value": null }], @@ -134,7 +134,7 @@ qx.Class.define("qxapp.data.Fake", { "key": "masu.speag.com/simcore/services/comp/sleeper", "tag": "1.0", "name": "Node 2", - "desc": "Node 2", + "description": "Node 2", "position": { "x": 50, "y": 300 @@ -142,28 +142,28 @@ qx.Class.define("qxapp.data.Fake", { "inputs": [{ "key": "in_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "value": null }, { "key": "in_2", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "value": null }], "outputs": [{ "key": "out_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "value": null }, { "key": "out_2", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "value": null }], @@ -173,7 +173,7 @@ qx.Class.define("qxapp.data.Fake", { "key": "masu.speag.com/simcore/services/comp/sleeper", "tag": "1.0", "name": "Node 3", - "desc": "Node 3", + "description": "Node 3", "position": { "x": 300, "y": 100 @@ -181,28 +181,28 @@ qx.Class.define("qxapp.data.Fake", { "inputs": [{ "key": "in_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "value": null }, { "key": "in_2", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "value": null }], "outputs": [{ "key": "out_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "value": null }, { "key": "out_2", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "value": null }], @@ -212,7 +212,7 @@ qx.Class.define("qxapp.data.Fake", { "key": "masu.speag.com/simcore/services/comp/sleeper", "tag": "1.0", "name": "Node 4", - "desc": "Node 4", + "description": "Node 4", "position": { "x": 300, "y": 300 @@ -220,28 +220,28 @@ qx.Class.define("qxapp.data.Fake", { "inputs": [{ "key": "in_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "value": null }, { "key": "in_2", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "value": null }], "outputs": [{ "key": "out_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "value": null }, { "key": "out_2", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "value": null }], @@ -251,7 +251,7 @@ qx.Class.define("qxapp.data.Fake", { "key": "masu.speag.com/simcore/services/comp/sleeper", "tag": "1.0", "name": "Node 5", - "desc": "Node 5", + "description": "Node 5", "position": { "x": 550, "y": 200 @@ -259,28 +259,28 @@ qx.Class.define("qxapp.data.Fake", { "inputs": [{ "key": "in_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "value": null }, { "key": "in_2", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "value": null }], "outputs": [{ "key": "out_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "value": null }, { "key": "out_2", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "value": null }], @@ -290,7 +290,7 @@ qx.Class.define("qxapp.data.Fake", { "key": "masu.speag.com/simcore/services/comp/sleeper", "tag": "1.0", "name": "Node 6", - "desc": "Node 6", + "description": "Node 6", "position": { "x": 800, "y": 100 @@ -298,28 +298,28 @@ qx.Class.define("qxapp.data.Fake", { "inputs": [{ "key": "in_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "value": null }, { "key": "in_2", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "value": null }], "outputs": [{ "key": "out_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "value": null }, { "key": "out_2", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "value": null }], @@ -329,7 +329,7 @@ qx.Class.define("qxapp.data.Fake", { "key": "masu.speag.com/simcore/services/comp/sleeper", "tag": "1.0", "name": "Node 7", - "desc": "Node 7", + "description": "Node 7", "position": { "x": 800, "y": 300 @@ -337,28 +337,28 @@ qx.Class.define("qxapp.data.Fake", { "inputs": [{ "key": "in_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "value": null }, { "key": "in_2", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "value": null }], "outputs": [{ "key": "out_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "value": null }, { "key": "out_2", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "value": null }], @@ -368,7 +368,7 @@ qx.Class.define("qxapp.data.Fake", { "key": "masu.speag.com/simcore/services/comp/sleeper", "tag": "1.0", "name": "Node 8", - "desc": "Node 8", + "description": "Node 8", "position": { "x": 1050, "y": 200 @@ -376,28 +376,28 @@ qx.Class.define("qxapp.data.Fake", { "inputs": [{ "key": "in_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "value": null }, { "key": "in_2", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "value": null }], "outputs": [{ "key": "out_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "value": null }, { "key": "out_2", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "value": null }], @@ -475,7 +475,7 @@ qx.Class.define("qxapp.data.Fake", { "key": "node1", "tag": "1.0", "name": "Node 1", - "desc": "Node 1", + "description": "Node 1", "position": { "x": 50, "y": 100 @@ -484,19 +484,19 @@ qx.Class.define("qxapp.data.Fake", { "outputs": [{ "key": "out_1", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "value": "" }, { "key": "out_2", "label": "String", - "desc": "String", + "description": "String", "type": "string", "value": "" }, { "key": "out_3", "label": "Bool", - "desc": "Bool", + "description": "Bool", "type": "bool", "value": null }], @@ -506,7 +506,7 @@ qx.Class.define("qxapp.data.Fake", { "key": "node2", "tag": "1.0", "name": "Node 2", - "desc": "Node 2", + "description": "Node 2", "position": { "x": 400, "y": 100 @@ -514,19 +514,19 @@ qx.Class.define("qxapp.data.Fake", { "inputs": [{ "key": "in_1", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "value": null }, { "key": "in_2", "label": "String", - "desc": "String", + "description": "String", "type": "string", "value": null }, { "key": "in_3", "label": "Bool", - "desc": "Bool", + "description": "Bool", "type": "bool", "value": null }], @@ -534,13 +534,13 @@ qx.Class.define("qxapp.data.Fake", { "settings": [{ "key": "sett_1", "label": "Bool_1", - "desc": "Bool_1", + "description": "Bool_1", "type": "bool", "value": 0 }, { "key": "sett_2", "label": "Bool_2", - "desc": "Bool_2", + "description": "Bool_2", "type": "bool", "value": 0 }] @@ -549,7 +549,7 @@ qx.Class.define("qxapp.data.Fake", { "key": "node3", "tag": "1.0", "name": "Node 3", - "desc": "Node 3", + "description": "Node 3", "position": { "x": 400, "y": 300 @@ -557,13 +557,13 @@ qx.Class.define("qxapp.data.Fake", { "inputs": [{ "key": "in_1", "label": "String", - "desc": "String", + "description": "String", "type": "string", "value": null }, { "key": "in_2", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "value": null }], @@ -583,6 +583,7 @@ qx.Class.define("qxapp.data.Fake", { }); req.addListener("success", this.__onListOfRepositories, this); req.send(); + let fakeServices = []; Array.prototype.push.apply(fakeServices, qxapp.data.Fake.getProducers()); Array.prototype.push.apply(fakeServices, qxapp.data.Fake.getComputationals()); @@ -598,17 +599,16 @@ qx.Class.define("qxapp.data.Fake", { console.log("response: ", req.getResponse()); }, - getProducers: function() { const producers = [{ "key": "modeler", "tag": "1.0", "name": "Modeler", - "desc": "Modeler", + "description": "Modeler", "inputs": [{ "key": "in_1", "label": "ViPModel", - "desc": "Select ViP Model", + "description": "Select ViP Model", "type": "string", "defaultValue": "rat", "widget": "selectBox", @@ -628,7 +628,7 @@ qx.Class.define("qxapp.data.Fake", { "outputs": [{ "key": "out_1", "label": "Scene", - "desc": "Scene", + "description": "Scene", "type": "scene", "defaultValue": null }], @@ -641,12 +641,12 @@ qx.Class.define("qxapp.data.Fake", { "key": "FileManager", "tag": "1.0", "name": "File Manager", - "desc": "File Manager", + "description": "File Manager", "inputs": [], "outputs": [{ "key": "out_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "defaultValue": null }], @@ -655,24 +655,24 @@ qx.Class.define("qxapp.data.Fake", { "key": "RandomNumberGeneratorID", "tag": "1.0", "name": "Random Number Generator", - "desc": "Random Number Generator", + "description": "Random Number Generator", "inputs": [{ "key": "in_1", "label": "Number Min", - "desc": "Number Min", + "description": "Number Min", "type": "integer", "defaultValue": 0 }, { "key": "in_2", "label": "Number Max", - "desc": "Number Max", + "description": "Number Max", "type": "integer", "defaultValue": 10 }], "outputs": [{ "key": "out_1", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "defaultValue": null }], @@ -686,53 +686,53 @@ qx.Class.define("qxapp.data.Fake", { "key": "ColleenClancy", "tag": "1.0", "name": "Colleen Clancy - dummy", - "desc": "Colleen Clancy - dummy", + "description": "Colleen Clancy - dummy", "inputs": [{ "key": "in_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "defaultValue": null }, { "key": "in_2", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "defaultValue": null }, { "key": "in_3", "label": "NaValue", - "desc": "Na blocker drug concentration", + "description": "Na blocker drug concentration", "type": "integer", "defaultValue": 10 }, { "key": "in_4", "label": "KrValue", - "desc": "Kr blocker drug concentration", + "description": "Kr blocker drug concentration", "type": "integer", "defaultValue": 10 }, { "key": "in_5", "label": "BCLValue", - "desc": "Basic cycle length (BCL)", + "description": "Basic cycle length (BCL)", "type": "integer", "defaultValue": 10 }, { "key": "in_6", "label": "beatsValue", - "desc": "Number of beats", + "description": "Number of beats", "type": "integer", "defaultValue": 10 }, { "key": "in_7", "label": "LigandValue", - "desc": "Ligand concentration", + "description": "Ligand concentration", "type": "integer", "defaultValue": 10 }, { "key": "in_8", "label": "cAMKIIValue", - "desc": "Adjust cAMKII activity level", + "description": "Adjust cAMKII activity level", "type": "string", "widget": "selectBox", "cfg": { @@ -749,7 +749,7 @@ qx.Class.define("qxapp.data.Fake", { }, { "key": "in_9", "label": "solverMode", - "desc": "Solver Mode", + "description": "Solver Mode", "type": "string", "widget": "selectBox", "cfg": { @@ -767,7 +767,7 @@ qx.Class.define("qxapp.data.Fake", { "outputs": [{ "key": "out_1", "label": "csv-url", - "desc": "csv-url", + "description": "csv-url", "type": "csv-url", "defaultValue": null }], @@ -776,18 +776,18 @@ qx.Class.define("qxapp.data.Fake", { "key": "Computational2", "tag": "1.0", "name": "Computational 2", - "desc": "Computational 2", + "description": "Computational 2", "inputs": [{ "key": "in_1", "label": "Scene", - "desc": "Scene", + "description": "Scene", "type": "scene", "defaultValue": null }], "outputs": [{ "key": "out_1", "label": "Numbers", - "desc": "Other numbers", + "description": "Other numbers", "type": "integer", "defaultValue": null }], @@ -796,36 +796,36 @@ qx.Class.define("qxapp.data.Fake", { "key": "masu.speag.com/simcore/services/comp/sleeper", "tag": "1.0", "name": "Sleeper", - "desc": "Sleeper", + "description": "Sleeper", "inputs": [{ "key": "in_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "defaultValue": null }, { "key": "in_2", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "defaultValue": 0 }, { "key": "in_3", "label": "Number", - "desc": "Sleep extra sec", + "description": "Sleep extra sec", "type": "integer", "defaultValue": 0 }], "outputs": [{ "key": "out_1", "label": "File-url", - "desc": "File-url", + "description": "File-url", "type": "fileUrl", "defaultValue": null }, { "key": "out_2", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "defaultValue": 0 }], @@ -839,11 +839,11 @@ qx.Class.define("qxapp.data.Fake", { "key": "jupyter-base-notebook", "tag": "1.0", "name": "Jupyter", - "desc": "Jupyter", + "description": "Jupyter", "inputs": [{ "key": "in_1", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "defaultValue": null }], @@ -857,11 +857,11 @@ qx.Class.define("qxapp.data.Fake", { "key": "Analysis2", "tag": "1.0", "name": "Analysis 2", - "desc": "Analysis 2", + "description": "Analysis 2", "inputs": [{ "key": "in_1", "label": "Number", - "desc": "Number", + "description": "Number", "type": "integer", "defaultValue": null }], @@ -871,11 +871,11 @@ qx.Class.define("qxapp.data.Fake", { "key": "csv-table-graph", "tag": "1.0", "name": "CSV Viewer", - "desc": "CSV Viewer", + "description": "CSV Viewer", "inputs": [{ "key": "in_1", "label": "csv-url", - "desc": "csv-url", + "description": "csv-url", "type": "csv-url", "defaultValue": null }], From 05147dd18052e0152cebeba1327324a63fb9e5bb Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Wed, 20 Jun 2018 16:21:40 +0200 Subject: [PATCH 047/127] Create metadata dynamically --- .../client/source/class/qxapp/data/Fake.js | 47 +++++++++++++++++-- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/services/web/client/source/class/qxapp/data/Fake.js b/services/web/client/source/class/qxapp/data/Fake.js index 4866af6a914..4ac5bc67c38 100644 --- a/services/web/client/source/class/qxapp/data/Fake.js +++ b/services/web/client/source/class/qxapp/data/Fake.js @@ -593,10 +593,49 @@ qx.Class.define("qxapp.data.Fake", { __onListOfRepositories: function(e) { let req = e.getTarget(); - console.log("ListOfRepositories went fine!!"); - console.log("status : ", req.getStatus()); - console.log("phase : ", req.getPhase()); - console.log("response: ", req.getResponse()); + const listOfRepositories = JSON.parse(req.getResponse()); + console.log(listOfRepositories); + let services = []; + if ("repositories" in listOfRepositories) { + const repos = listOfRepositories.repositories; + const nRepos = repos.length; + console.log("Number of repos: ", nRepos); + for (let i=0; i { + metadata.field = null; + if (field in data) { + metadata.field = data.field + } + }); + return metadata; }, getProducers: function() { From bc1cd61184bee9e1cae3ae312cbbf409c9dade91 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Wed, 20 Jun 2018 16:31:01 +0200 Subject: [PATCH 048/127] minor fix --- services/web/client/source/class/qxapp/data/Fake.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/web/client/source/class/qxapp/data/Fake.js b/services/web/client/source/class/qxapp/data/Fake.js index 4ac5bc67c38..20910032a0c 100644 --- a/services/web/client/source/class/qxapp/data/Fake.js +++ b/services/web/client/source/class/qxapp/data/Fake.js @@ -630,9 +630,9 @@ qx.Class.define("qxapp.data.Fake", { "outputs", "settings" ].forEach(field => { - metadata.field = null; - if (field in data) { - metadata.field = data.field + metadata[field] = null; + if (data.hasOwnProperty(field)) { + metadata[field] = data[field] } }); return metadata; From b9cb30308f2df8bf7a12715a524c3b54f1d0685e Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Thu, 21 Jun 2018 09:53:49 +0200 Subject: [PATCH 049/127] added integer type --- services/web/client/source/resource/qxapp/node-meta-v0.0.1.json | 1 + 1 file changed, 1 insertion(+) diff --git a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json index de25576f43e..287a2c424b9 100644 --- a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json @@ -135,6 +135,7 @@ "type": "string", "enum": [ "number", + "integer", "file-url", "boolean", "string", From c0b99f974804ff57632ebbf7dec16a5d716dcf71 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 4 Jul 2018 09:55:11 +0200 Subject: [PATCH 050/127] add pattern check to the displayOrder property --- services/web/client/source/resource/qxapp/node-meta-v0.0.1.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json index 287a2c424b9..e895ccb0c61 100644 --- a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json @@ -112,6 +112,7 @@ "displayOrder": { "type": "string", "description": "use this to alphabetically sort the properties for display", + "pattern": "^\\d{3}(\\.\\d{3})*", "examples": [ "001.001", "001.002.001" @@ -259,6 +260,7 @@ "displayOrder": { "type": "string", "description": "use this to alphabetically sort the properties for display", + "pattern": "^\\d{3}(\\.\\d{3})*", "examples": [ "001.001", "001.002.001" From 3a75c75dd814f46dffecc2809bac9db3f5875d60 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 4 Jul 2018 10:06:52 +0200 Subject: [PATCH 051/127] Update Application.js --- services/web/client/source/class/qxapp/Application.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/web/client/source/class/qxapp/Application.js b/services/web/client/source/class/qxapp/Application.js index 914f6bf2707..98f6296bf48 100644 --- a/services/web/client/source/class/qxapp/Application.js +++ b/services/web/client/source/class/qxapp/Application.js @@ -92,8 +92,8 @@ qx.Class.define("qxapp.Application", { } ], contact: "oetiker@itis.ethz.ch", - inputs: [], - outputs: [] + inputs: {}, + outputs: {} }); console.log("validation result good", good); let bad = ajv.validate({ @@ -104,8 +104,8 @@ qx.Class.define("qxapp.Application", { authors: [ ], contact: "oetiker@itis.ethz.ch", - inputs: [], - outputs: [] + inputs: {}, + outputs: {} }); console.log("validation result bad", bad); }); From 145dd6425a0eaec9e8d1fb7143edd9ad5976a265 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 4 Jul 2018 10:51:27 +0200 Subject: [PATCH 052/127] add content-type definition --- .../resource/qxapp/node-meta-v0.0.1.json | 33 ++++++++----------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json index e895ccb0c61..f45c019b6fe 100644 --- a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json @@ -106,7 +106,6 @@ "label", "description", "type", - "defaultValue" ], "properties": { "displayOrder": { @@ -134,18 +133,15 @@ }, "type": { "type": "string", - "enum": [ - "number", - "integer", - "file-url", - "boolean", - "string", - "scene" - ], + "pattern": "^(number|integer|boolean|string|data:([^/\\s]+/[^/\\s]+)$", "description": "data type expected on this input", "examples": [ "number", - "boolean" + "boolean", + "data:appliaction/json", + "data:application/vnd.ms-excel ", + "data:text/plain", + "data:appliaction/hdf5" ] }, "fileToKeyMap": { @@ -253,8 +249,7 @@ "displayOrder", "label", "description", - "type", - "defaultValue" + "type" ], "properties": { "displayOrder": { @@ -282,17 +277,15 @@ }, "type": { "type": "string", - "enum": [ - "number", - "file-url", - "boolean", - "string", - "scene" - ], + "pattern": "^(number|integer|boolean|string|data:([^/\\s]+/[^/\\s]+)$", "description": "data type expected on this output", "examples": [ "number", - "boolean" + "boolean", + "data:appliaction/json", + "data:application/vnd.ms-excel ", + "data:text/plain", + "data:appliaction/hdf5" ] }, "fileToKeyMap": { From fbf945d59bc54c9e2ee112bbdfa0149ba3e1f783 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 4 Jul 2018 10:58:08 +0200 Subject: [PATCH 053/127] Update node-meta-v0.0.1.json --- .../web/client/source/resource/qxapp/node-meta-v0.0.1.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json index f45c019b6fe..22714e48a16 100644 --- a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json @@ -141,7 +141,8 @@ "data:appliaction/json", "data:application/vnd.ms-excel ", "data:text/plain", - "data:appliaction/hdf5" + "data:appliaction/hdf5", + "data:application/edu.ucdavis@ceclancy.xyz", ] }, "fileToKeyMap": { From c5a4ee98f7dc248ff8e2ec373d62013a089ed8a4 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 4 Jul 2018 11:02:01 +0200 Subject: [PATCH 054/127] Update node-meta-v0.0.1.json --- .../client/source/resource/qxapp/node-meta-v0.0.1.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json index 22714e48a16..dcdce16fc7e 100644 --- a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json @@ -134,15 +134,17 @@ "type": { "type": "string", "pattern": "^(number|integer|boolean|string|data:([^/\\s]+/[^/\\s]+)$", - "description": "data type expected on this input", + "description": "data type expected on this input glob matching for data type is allowed", "examples": [ "number", "boolean", + "data:*/*", + "data:text/*", "data:appliaction/json", "data:application/vnd.ms-excel ", "data:text/plain", "data:appliaction/hdf5", - "data:application/edu.ucdavis@ceclancy.xyz", + "data:application/edu.ucdavis@ceclancy.xyz" ] }, "fileToKeyMap": { @@ -278,7 +280,7 @@ }, "type": { "type": "string", - "pattern": "^(number|integer|boolean|string|data:([^/\\s]+/[^/\\s]+)$", + "pattern": "^(number|integer|boolean|string|data:([^/\\s\\*]+/[^/\\s\\*]+)$", "description": "data type expected on this output", "examples": [ "number", From d4d3fca7a78293028dedbb393a368722dcde4f9e Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 4 Jul 2018 11:19:00 +0200 Subject: [PATCH 055/127] Update node-meta-v0.0.1.json --- .../source/resource/qxapp/node-meta-v0.0.1.json | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json index dcdce16fc7e..b3f61f55bd9 100644 --- a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json @@ -133,17 +133,19 @@ }, "type": { "type": "string", - "pattern": "^(number|integer|boolean|string|data:([^/\\s]+/[^/\\s]+)$", + "pattern": "^(number|integer|boolean|string|data:(([^/\\s,]+/[^/\\s,]+)|\\[([^/\\s,]+/[^/\\s,]+)(,([^/\\s]+/[^/,\\s]+)*\\])$", "description": "data type expected on this input glob matching for data type is allowed", "examples": [ "number", "boolean", "data:*/*", "data:text/*", - "data:appliaction/json", - "data:application/vnd.ms-excel ", + "data:[image/jpeg,image/png], + "data:application/json", + "data:application/json;schema=https://my-schema/not/really/schema.json", + "data:application/vnd.ms-excel", "data:text/plain", - "data:appliaction/hdf5", + "data:application/hdf5", "data:application/edu.ucdavis@ceclancy.xyz" ] }, @@ -280,7 +282,7 @@ }, "type": { "type": "string", - "pattern": "^(number|integer|boolean|string|data:([^/\\s\\*]+/[^/\\s\\*]+)$", + "pattern": "^(number|integer|boolean|string|data:([^/\\s\\*,]+/[^/\\s\\*,]+)$", "description": "data type expected on this output", "examples": [ "number", From 9e87235ee9cc43f3ae827539c1f5c9f5bdcd9fef Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 4 Jul 2018 11:19:32 +0200 Subject: [PATCH 056/127] Update node-meta-v0.0.1.json --- services/web/client/source/resource/qxapp/node-meta-v0.0.1.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json index b3f61f55bd9..94e1b0fb53f 100644 --- a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json @@ -140,7 +140,7 @@ "boolean", "data:*/*", "data:text/*", - "data:[image/jpeg,image/png], + "data:[image/jpeg,image/png]", "data:application/json", "data:application/json;schema=https://my-schema/not/really/schema.json", "data:application/vnd.ms-excel", From 960a85411c9ca7af9eca61f4d55425f26f426329 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 4 Jul 2018 13:10:06 +0200 Subject: [PATCH 057/127] Update node-meta-v0.0.1.json --- .../web/client/source/resource/qxapp/node-meta-v0.0.1.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json index 94e1b0fb53f..554f18cde67 100644 --- a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json @@ -287,10 +287,10 @@ "examples": [ "number", "boolean", - "data:appliaction/json", + "data:application/json", "data:application/vnd.ms-excel ", "data:text/plain", - "data:appliaction/hdf5" + "data:application/hdf5" ] }, "fileToKeyMap": { From 19027eb8910fff2c89174b052a681b56f8dec113 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 4 Jul 2018 13:19:28 +0200 Subject: [PATCH 058/127] Update node-meta-v0.0.1.json --- services/web/client/source/resource/qxapp/node-meta-v0.0.1.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json index 554f18cde67..489d9b2c53c 100644 --- a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json @@ -286,7 +286,9 @@ "description": "data type expected on this output", "examples": [ "number", + "integer", "boolean", + "string", "data:application/json", "data:application/vnd.ms-excel ", "data:text/plain", From 3c2a75e0d3a2a019a7130000aa7376d8f7c7ca67 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 4 Jul 2018 13:36:01 +0200 Subject: [PATCH 059/127] allow for longer keys --- .../web/client/source/resource/qxapp/node-meta-v0.0.1.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json index 489d9b2c53c..f4d096a0c9d 100644 --- a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json @@ -19,10 +19,10 @@ "key": { "type": "string", "description": "distinctive name for the node based on the docker registry path", - "pattern": "^(service)/(computational|dynamic)/([^\\s/]+)$", + "pattern": "^(service)/(computational|dynamic)(/[^\\s/]+)+$", "examples": [ - "service/computational/sleeper", - "service/dynamic/3dviewer" + "service/computational/itis/sleeper", + "service/dynamic/itis/3dviewer" ] }, "tag": { From da9f8c511faa1adb370c4fb257975fbb7ed56209 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 4 Jul 2018 15:01:11 +0200 Subject: [PATCH 060/127] updated fake data --- .../client/source/class/qxapp/data/Fake.js | 233 ++++++++++++------ 1 file changed, 164 insertions(+), 69 deletions(-) diff --git a/services/web/client/source/class/qxapp/data/Fake.js b/services/web/client/source/class/qxapp/data/Fake.js index 828a66b50da..03a2357adb7 100644 --- a/services/web/client/source/class/qxapp/data/Fake.js +++ b/services/web/client/source/class/qxapp/data/Fake.js @@ -22,6 +22,118 @@ qx.Class.define("qxapp.data.Fake", { prjId: null }), + nodeMap: function() { + return { + "service/computational/itis/tutti:0.0.0-alpha": { + key: "service/computational/itis/tutti", + tag: "0.0.0-alpha", + name: "a little test node", + description: "just the bare minimum", + authors: [ + { + name: "Tobias Oetiker", + email: "oetiker@itis.ethz.ch" + } + ], + contact: "oetiker@itis.ethz.ch", + inputs: { + in_nummber: { + displayOrder: "001", + label: "Number Test", + description: "Test Input for Number", + type: "number", + defaultValue: 5.3 + }, + in_int: { + displayOrder: "002", + label: "Integer Test", + description: "Test Input for Integer", + type: "number", + defaultValue: 2 + }, + in_bool: { + displayOrder: "003", + label: "Boolean Test", + description: "Test Input for Boolean", + defaultValue: true + }, + in_str: { + displayOrder: "004", + label: "String Test", + description: "Test Input for String", + defaultValue: "Gugus" + }, + in_area: { + displayOrder: "005", + label: "Widget TextArea Test", + description: "Test Input for String", + defaultValue: "Gugus\nDu\nDa", + widget: { + type: "TextArea", + minHeight: 50 + } + }, + in_sb: { + displayOrder: "006", + label: "Widget SelectBox Test", + description: "Test Input for SelectBox", + defaultValue: "dog", + widget: { + type: "SelectBox", + structure: [ + { + key: "dog", + label: "A Dog" + }, + { + key: "cat", + label: "A Cat" + } + ] + } + }, + in_file: { + displayOrder: "007", + label: "FileInput Test", + description: "Test Input File", + type: "data:*/*" + }, + in_image: { + displayOrder: "007", + label: "FileInput Test", + description: "Test Input File", + type: "data:[image/jpeg,image/png]" + } + }, + outputs: { + out_number: { + label: "Number Test", + description: "Test Output for Number", + displayOrder: "001", + type: "number" + }, + out_integer: { + label: "Integer Test", + description: "Test Output for Integer", + displayOrder: "002", + type: "integer" + }, + out_bool: { + label: "Boolean Test", + description: "Test Output for Boolean", + displayOrder: "003", + type: "boolean" + }, + out_png: { + label: "Png Test", + description: "Test Output for PNG Image", + displayOrder: "004", + type: "data:image/png" + } + } + } + }; + }, getUsername: function() { return "bizzy"; }, @@ -92,13 +204,58 @@ qx.Class.define("qxapp.data.Fake", { return null; }, - getTemp1Data: function() { + getProject1: function() { + return { + "UUID1": { + type: "service/dynamic/itis/file-picker", + version: "0.0.0", + output: { + out_1: "s3://itis-minion/bucket1/file1" + }, + position: { + x: 10, + y: 10 + } + }, + "UUID2": { + type: "service/computational/itis/sleeper", + version "0.0.1-alpha", + input: { + in_number: "data,3.5", + in_integer: "data,4", + in_image: "link://UUID1/out_1" + }, + position: { + x: 120, + y: 10 + } + }, + "UUID3": { + type: "service/computational/itis/sleeper", + version: "0.0.1-alpha", + input: { + in_number: "link://UUID2/out_number", + in_string: "data,Hello,blablabla", + in_bool: "data,true", + in_image: "link://UUID2/out_png", + in_file: "s3://itis-minion/bucket2/file12" + }, + position: { + x: 260, + y: 10 + } + } + } + }, + + getTemp1Data: function(){ const nNodes = 8; let nodeIds = []; for (let i=0; i Date: Wed, 4 Jul 2018 15:53:20 +0200 Subject: [PATCH 061/127] added new project schema --- .../resource/qxapp/node-meta-v0.0.1.json | 6 +- .../source/resource/qxapp/project-v0.0.1.json | 136 ++++++++++++++++++ 2 files changed, 140 insertions(+), 2 deletions(-) create mode 100644 services/web/client/source/resource/qxapp/project-v0.0.1.json diff --git a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json index f4d096a0c9d..c99eb22f2b5 100644 --- a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json @@ -155,7 +155,8 @@ "type": "object", "patternProperties": { ".+": { - "type": "string" + "type": "string", + "pattern": "^[_a-z0-9]+$" } }, "examples": [ @@ -300,7 +301,8 @@ "type": "object", "patternProperties": { ".+": { - "type": "string" + "type": "string", + "pattern": "^[_a-z0-9]+$" } }, "examples": [ diff --git a/services/web/client/source/resource/qxapp/project-v0.0.1.json b/services/web/client/source/resource/qxapp/project-v0.0.1.json new file mode 100644 index 00000000000..e88f30e8072 --- /dev/null +++ b/services/web/client/source/resource/qxapp/project-v0.0.1.json @@ -0,0 +1,136 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "simcore project", + "description": "Description of a simcore project", + "type": "object", + "additionalProperties": false, + "required": [ + ], + "properties": { + "name": { + "type": "string", + "description": "project name", + "examples": [ + "Temporal Distortion Simulator" + ] + }, + "description": { + "type": "string", + "description": "longer one-line description about the project", + "examples": [ + "Dabbling in temporal transitions ..." + ] + }, + "notes": { + "type": "string", + "description": "longer project description. using common mark", + "examples": [ + "# title\nSome Text `with` common mark markup" + ] + }, + "owner": { + "type": "string", + "description": "user uuid" + }, + "collaborators": { + "type": "array", + "items": { + "type": "object", + "description": "UUIDs of the users/groups who should get access to this", + "patternProperties": { + "^\\S+$": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "read", + "write" + ] + } + } + } + } + }, + "creationDate": { + "type": "string", + "description": "project creation date", + "pattern": "\\d{4}-(12|11|10|[1-9])-(31|30|[12]\\d|[1-9])T(2[0-4]|1\\d|[1-9])(:(\\d|[0-5]\\d)){2}Z", + "examples": [ + "2018-07-01T11:13:43Z" + ] + }, + "lastChangeDate": { + "type": "string", + "description": "last save date", + "pattern": "\\d{4}-(12|`11|10|[1-9])-(31|30|[12]\\d|[1-9])T(2[0-4]|1\\d|[1-9])(:(\\d|[0-5]\\d)){2}Z", + }, + "workbench": { + "type": "object", + "patternProperties": { + "^\\S+$": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "distinctive name for the node based on the docker registry path", + "pattern": "^(service)/(computational|dynamic)/([^\\s/]+)$", + "examples": [ + "service/computational/sleeper", + "service/dynamic/3dviewer" + ] + }, + "version": { + "type": "string", + "description": "semantic version number of the node", + "pattern": "^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){2}(-(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*)(\\.(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*))*)?(\\+[-\\da-zA-Z]+(\\.[-\\da-zA-Z-]+)*)?$", + "examples": [ + "1.0.0", + "0.0.1" + ] + }, + "input": { + "type": "object", + "description": "values of input properties", + "patternProperties": { + "^[_a-z0-9]+$": { + "type": "string", + "pattern": "^(data,.*|link://[^/\\s]+/\\S+|s3://[^/\\s]+/[^/\\s]+/.+$", + "examples": [ + "data,3", + "s3://system/bucket/file", + "link://UUID1/out_2" + ] + } + } + }, + "output": { + "type": "object", + "patternProperties": { + "^[_a-z0-9]+$": { + "type": "string", + "pattern": "^(data,.*|link://[^/\\s]+/\\S+|s3://[^/\\s]+/[^/\\s]+/.+$", + "examples": [ + "data,false", + "s3://system/bucket/file", + "link://UUID1/out_2" + ] + } + } + }, + "position": { + "type": "object", + "properties": { + "x": { + "type": "integer" + }, + "y": { + "type": "integer" + } + } + } + } + } + } + } + } +} From 67c86093dc76acc7752d0b6b0cb3baff356b45ce Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 4 Jul 2018 16:20:43 +0200 Subject: [PATCH 062/127] switch to explicit types --- .../client/source/resource/qxapp/project-v0.0.1.json | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/services/web/client/source/resource/qxapp/project-v0.0.1.json b/services/web/client/source/resource/qxapp/project-v0.0.1.json index e88f30e8072..432d1af06c1 100644 --- a/services/web/client/source/resource/qxapp/project-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/project-v0.0.1.json @@ -94,9 +94,11 @@ "patternProperties": { "^[_a-z0-9]+$": { "type": "string", - "pattern": "^(data,.*|link://[^/\\s]+/\\S+|s3://[^/\\s]+/[^/\\s]+/.+$", + "pattern": "^(bool:(true|false)|int:-?\\d+,num:^([-+]?\\d*\\.?\\d+)([eE][-+]?\\d+)?|str:.+|link://[^/\\s]+/\\S+|s3://[^/\\s]+/[^/\\s]+/.+$", "examples": [ - "data,3", + "int:3", + "bool:true" + "str:Hello World", "s3://system/bucket/file", "link://UUID1/out_2" ] @@ -108,9 +110,9 @@ "patternProperties": { "^[_a-z0-9]+$": { "type": "string", - "pattern": "^(data,.*|link://[^/\\s]+/\\S+|s3://[^/\\s]+/[^/\\s]+/.+$", + "pattern": "^(bool:(true|false)|int:-?\\d+,num:^([-+]?\\d*\\.?\\d+)([eE][-+]?\\d+)?|str:.+|link://[^/\\s]+/\\S+|s3://[^/\\s]+/[^/\\s]+/.+$", "examples": [ - "data,false", + "bool:false", "s3://system/bucket/file", "link://UUID1/out_2" ] From 4786ae050774a11c17ded99c522de5daa7ea7dcf Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 4 Jul 2018 16:34:51 +0200 Subject: [PATCH 063/127] update samples --- .../client/source/class/qxapp/data/Fake.js | 82 +++++++++++-------- 1 file changed, 48 insertions(+), 34 deletions(-) diff --git a/services/web/client/source/class/qxapp/data/Fake.js b/services/web/client/source/class/qxapp/data/Fake.js index 828965f08a5..49b633dbff4 100644 --- a/services/web/client/source/class/qxapp/data/Fake.js +++ b/services/web/client/source/class/qxapp/data/Fake.js @@ -245,43 +245,57 @@ qx.Class.define("qxapp.data.Fake", { getProject1: function() { return { - "UUID1": { - type: "service/dynamic/itis/file-picker", - version: "0.0.0", - output: { - out_1: "s3://itis-minion/bucket1/file1" - }, - position: { - x: 10, - y: 10 - } + name: "Sample Project", + description: "A little fake project without actual backend", + notes: "# title\nThere be dragons inside", + owner: "UUID-OF-TOBI", + collaborators: { + "UUID-OF-PEDRO": [ + "read", + "write" + ] }, - "UUID2": { - type: "service/computational/itis/sleeper", - version "0.0.1-alpha", - input: { - in_number: "data,3.5", - in_integer: "data,4", - in_image: "link://UUID1/out_1" + creationDate: "2018-07-02T16:01:00Z", + lastChangeDate: "2018-07-02T16:02:22Z", + workbench: { + "UUID1": { + type: "service/dynamic/itis/file-picker", + version: "0.0.0", + output: { + out_1: "s3://itis-minion/bucket1/file1" + }, + position: { + x: 10, + y: 10 + } }, - position: { - x: 120, - y: 10 - } - }, - "UUID3": { - type: "service/computational/itis/sleeper", - version: "0.0.1-alpha", - input: { - in_number: "link://UUID2/out_number", - in_string: "data,Hello,blablabla", - in_bool: "data,true", - in_image: "link://UUID2/out_png", - in_file: "s3://itis-minion/bucket2/file12" + "UUID2": { + type: "service/computational/itis/sleeper", + version: "0.0.1-alpha", + input: { + in_number: "num:3.5", + in_integer: "int:4", + in_image: "link://UUID1/out_1" + }, + position: { + x: 120, + y: 10 + } }, - position: { - x: 260, - y: 10 + "UUID3": { + type: "service/computational/itis/sleeper", + version: "0.0.1-alpha", + input: { + in_number: "link://UUID2/out_number", + in_string: "str:Hello,blablabla", + in_bool: "bool:true", + in_image: "link://UUID2/out_png", + in_file: "s3://itis-minion/bucket2/file12" + }, + position: { + x: 260, + y: 10 + } } } } From 1b7a3fbe1e7c6100f4f6508ce2c25812bc15842c Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 4 Jul 2018 16:44:15 +0200 Subject: [PATCH 064/127] updated examples --- .../client/source/class/qxapp/data/Fake.js | 117 +++++++++--------- 1 file changed, 60 insertions(+), 57 deletions(-) diff --git a/services/web/client/source/class/qxapp/data/Fake.js b/services/web/client/source/class/qxapp/data/Fake.js index 49b633dbff4..4ce9f46b619 100644 --- a/services/web/client/source/class/qxapp/data/Fake.js +++ b/services/web/client/source/class/qxapp/data/Fake.js @@ -134,6 +134,65 @@ qx.Class.define("qxapp.data.Fake", { } }; }, + projectList: function() { + return [ + { + name: "Sample Project", + description: "A little fake project without actual backend", + notes: "# title\nThere be dragons inside", + owner: "UUID-OF-TOBI", + collaborators: { + "UUID-OF-PEDRO": [ + "read", + "write" + ] + }, + creationDate: "2018-07-02T16:01:00Z", + lastChangeDate: "2018-07-02T16:02:22Z", + workbench: { + "UUID1": { + type: "service/dynamic/itis/file-picker", + version: "0.0.0", + output: { + out_1: "s3://itis-minion/bucket1/file1" + }, + position: { + x: 10, + y: 10 + } + }, + "UUID2": { + type: "service/computational/itis/sleeper", + version: "0.0.1-alpha", + input: { + in_number: "num:3.5", + in_integer: "int:4", + in_image: "link://UUID1/out_1" + }, + position: { + x: 120, + y: 10 + } + }, + "UUID3": { + type: "service/computational/itis/sleeper", + version: "0.0.1-alpha", + input: { + in_number: "link://UUID2/out_number", + in_string: "str:Hello,blablabla", + in_bool: "bool:true", + in_image: "link://UUID2/out_png", + in_file: "s3://itis-minion/bucket2/file12" + }, + position: { + x: 260, + y: 10 + } + } + } + } + ]; + }, getUsername: function() { return "bizzy"; }, @@ -243,63 +302,7 @@ qx.Class.define("qxapp.data.Fake", { return null; }, - getProject1: function() { - return { - name: "Sample Project", - description: "A little fake project without actual backend", - notes: "# title\nThere be dragons inside", - owner: "UUID-OF-TOBI", - collaborators: { - "UUID-OF-PEDRO": [ - "read", - "write" - ] - }, - creationDate: "2018-07-02T16:01:00Z", - lastChangeDate: "2018-07-02T16:02:22Z", - workbench: { - "UUID1": { - type: "service/dynamic/itis/file-picker", - version: "0.0.0", - output: { - out_1: "s3://itis-minion/bucket1/file1" - }, - position: { - x: 10, - y: 10 - } - }, - "UUID2": { - type: "service/computational/itis/sleeper", - version: "0.0.1-alpha", - input: { - in_number: "num:3.5", - in_integer: "int:4", - in_image: "link://UUID1/out_1" - }, - position: { - x: 120, - y: 10 - } - }, - "UUID3": { - type: "service/computational/itis/sleeper", - version: "0.0.1-alpha", - input: { - in_number: "link://UUID2/out_number", - in_string: "str:Hello,blablabla", - in_bool: "bool:true", - in_image: "link://UUID2/out_png", - in_file: "s3://itis-minion/bucket2/file12" - }, - position: { - x: 260, - y: 10 - } - } - } - } - }, + getTemp1Data: function(){ const nNodes = 8; From 9181e7d4849b1853c0dedfc198f3dbe323951603 Mon Sep 17 00:00:00 2001 From: Sylvain <35365065+sanderegg@users.noreply.github.com> Date: Wed, 4 Jul 2018 19:30:55 +0200 Subject: [PATCH 065/127] Nodeports allow update to s3 (#150) - nodeports now able to uplad to s3 a file or a folder - added minio-based unit tests with py-docker - code cleanup --- Makefile | 80 +++++----- .../simcore-sdk/src/simcore_sdk/config/db.py | 9 +- .../simcore-sdk/src/simcore_sdk/config/s3.py | 12 +- .../src/simcore_sdk/nodeports/_item.py | 132 +++++++++++------ .../src/simcore_sdk/nodeports/config.py | 18 ++- .../nodeports/{io.py => dbmanager.py} | 33 ++++- .../src/simcore_sdk/nodeports/exceptions.py | 15 ++ .../src/simcore_sdk/nodeports/filemanager.py | 47 ++++-- .../src/simcore_sdk/nodeports/nodeports.py | 20 +-- .../simcore_sdk/nodeports/serialization.py | 54 ++----- .../simcore-sdk/tests/fixtures/minio-fix.py | 58 ++++++++ .../simcore-sdk/tests/fixtures/postgres.py | 10 +- .../simcore-sdk/tests/nodeports/conftest.py | 17 ++- .../nodeports}/connection_config.json | 2 +- .../tests/nodeports/docker-compose.yml | 3 +- .../tests/nodeports/test_config.py | 0 .../simcore-sdk/tests/nodeports/test_io.py | 0 .../simcore-sdk/tests/nodeports/test_item.py | 39 ++++- .../tests/nodeports/test_itemstlist.py | 38 ++--- .../tests/nodeports/test_nodeports.py | 140 +++++++++++++++--- .../tests/nodeports/test_postgres.py | 45 ------ .../tests/nodeports/test_serialization.py | 4 +- services/dy-2Dgraph/use-cases/Makefile | 1 - 23 files changed, 505 insertions(+), 272 deletions(-) rename packages/simcore-sdk/src/simcore_sdk/nodeports/{io.py => dbmanager.py} (72%) create mode 100644 packages/simcore-sdk/tests/fixtures/minio-fix.py rename packages/simcore-sdk/{src/simcore_sdk/config => tests/nodeports}/connection_config.json (96%) delete mode 100644 packages/simcore-sdk/tests/nodeports/test_config.py delete mode 100644 packages/simcore-sdk/tests/nodeports/test_io.py delete mode 100644 packages/simcore-sdk/tests/nodeports/test_postgres.py diff --git a/Makefile b/Makefile index f46fc81d48b..9663537233a 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,15 @@ # author: Sylvain Anderegg # TODO: add flavours by combinging docker-compose files. Namely development, test and production. +VERSION := $(shell cat /proc/version) +# SAN this is a hack so that docker-compose works in the linux virtual environment under Windows +ifneq (,$(findstring Microsoft,$(VERSION))) +export DOCKER_COMPOSE=docker-compose.exe +export DOCKER=docker.exe +else +export DOCKER_COMPOSE=docker-compose +export DOCKER=docker +endif PY_FILES = $(strip $(shell find services packages -iname '*.py')) @@ -12,56 +21,56 @@ all: @echo 'see Makefile for further targets' build-devel: - docker-compose -f services/docker-compose.yml -f services/docker-compose.devel.yml build + ${DOCKER_COMPOSE} -f services/docker-compose.yml -f services/docker-compose.devel.yml build rebuild-devel: - docker-compose -f services/docker-compose.yml -f services/docker-compose.devel.yml build --no-cache + ${DOCKER_COMPOSE} -f services/docker-compose.yml -f services/docker-compose.devel.yml build --no-cache -up-devel: setup-check - docker-compose -f services/docker-compose.yml -f services/docker-compose.devel.yml up +up-devel: + ${DOCKER_COMPOSE} -f services/docker-compose.yml -f services/docker-compose.devel.yml up build: - docker-compose -f services/docker-compose.yml build + ${DOCKER_COMPOSE} -f services/docker-compose.yml build rebuild: - docker-compose -f services/docker-compose.yml build --no-cache + ${DOCKER_COMPOSE} -f services/docker-compose.yml build --no-cache up: - docker-compose -f services/docker-compose.yml up + ${DOCKER_COMPOSE} -f services/docker-compose.yml up up-swarm: - docker swarm init - docker stack deploy -c services/docker-compose.yml -c services/docker-compose.deploy.yml services + ${DOCKER} swarm init + ${DOCKER} stack deploy -c services/docker-compose.yml -c services/docker-compose.deploy.yml services down: - docker-compose -f services/docker-compose.yml down - docker-compose -f services/docker-compose.yml -f services/docker-compose.devel.yml down + ${DOCKER_COMPOSE} -f services/docker-compose.yml down + ${DOCKER_COMPOSE} -f services/docker-compose.yml -f services/docker-compose.devel.yml down down-swarm: - docker stack rm services - docker swarm leave -f + ${DOCKER} stack rm services + ${DOCKER} swarm leave -f stack-up: - docker swarm init + ${DOCKER} swarm init stack-down: - docker stack rm osparc - docker swarm leave -f + ${DOCKER} stack rm osparc + ${DOCKER} swarm leave -f deploy: - docker stack deploy -c services/docker-compose.swarm.yml services --with-registry-auth + ${DOCKER} stack deploy -c services/docker-compose.swarm.yml services --with-registry-auth pylint: # See exit codes and command line https://pylint.readthedocs.io/en/latest/user_guide/run.html#exit-codes /bin/bash -c "pylint --rcfile=.pylintrc $(PY_FILES)" before_test: - docker-compose -f packages/pytest_docker/tests/docker-compose.yml pull - docker-compose -f packages/pytest_docker/tests/docker-compose.yml build - docker-compose -f packages/s3wrapper/tests/docker-compose.yml pull - docker-compose -f packages/s3wrapper/tests/docker-compose.yml build - docker-compose -f packages/simcore-sdk/tests/docker-compose.yml pull - docker-compose -f packages/simcore-sdk/tests/docker-compose.yml build + ${DOCKER_COMPOSE} -f packages/pytest_docker/tests/docker-compose.yml pull + ${DOCKER_COMPOSE} -f packages/pytest_docker/tests/docker-compose.yml build + ${DOCKER_COMPOSE} -f packages/s3wrapper/tests/docker-compose.yml pull + ${DOCKER_COMPOSE} -f packages/s3wrapper/tests/docker-compose.yml build + ${DOCKER_COMPOSE} -f packages/simcore-sdk/tests/docker-compose.yml pull + ${DOCKER_COMPOSE} -f packages/simcore-sdk/tests/docker-compose.yml build run_test: pytest --cov=pytest_docker -v packages/pytest_docker/ @@ -70,9 +79,9 @@ run_test: after_test: # leave a clean slate (not sure whether this is actually needed) - docker-compose -f packages/pytest_docker/tests/docker-compose.yml down - docker-compose -f packages/s3wrapper/tests/docker-compose.yml down - docker-compose -f packages/simcore-sdk/tests/docker-compose.yml down + ${DOCKER_COMPOSE} -f packages/pytest_docker/tests/docker-compose.yml down + ${DOCKER_COMPOSE} -f packages/s3wrapper/tests/docker-compose.yml down + ${DOCKER_COMPOSE} -f packages/simcore-sdk/tests/docker-compose.yml down test: make before_test @@ -82,16 +91,16 @@ test: PLATFORM_VERSION=3.2 push_platform_images: - docker login masu.speag.com - docker tag services_webserver:latest masu.speag.com/simcore/workbench/webserver:${PLATFORM_VERSION} - docker push masu.speag.com/simcore/workbench/webserver:${PLATFORM_VERSION} - docker tag services_sidecar:latest masu.speag.com/simcore/workbench/sidecar:${PLATFORM_VERSION} - docker push masu.speag.com/simcore/workbench/sidecar:${PLATFORM_VERSION} - docker tag services_director:latest masu.speag.com/simcore/workbench/director:${PLATFORM_VERSION} - docker push masu.speag.com/simcore/workbench/director:${PLATFORM_VERSION} - - setup-check: .env .vscode/settings.json + ${DOCKER} login masu.speag.com + ${DOCKER} tag services_webserver:latest masu.speag.com/simcore/workbench/webserver:${PLATFORM_VERSION} + ${DOCKER} push masu.speag.com/simcore/workbench/webserver:${PLATFORM_VERSION} + ${DOCKER} tag services_sidecar:latest masu.speag.com/simcore/workbench/sidecar:${PLATFORM_VERSION} + ${DOCKER} push masu.speag.com/simcore/workbench/sidecar:${PLATFORM_VERSION} + ${DOCKER} tag services_director:latest masu.speag.com/simcore/workbench/director:${PLATFORM_VERSION} + ${DOCKER} push masu.speag.com/simcore/workbench/director:${PLATFORM_VERSION} + setup-check: .env .vscode/settings.json + .env: .env-devel $(info ##### $< is newer than $@ ####) @diff -uN $@ $< @@ -101,4 +110,3 @@ push_platform_images: $(info ##### $< is newer than $@ ####) @diff -uN $@ $< @false - diff --git a/packages/simcore-sdk/src/simcore_sdk/config/db.py b/packages/simcore-sdk/src/simcore_sdk/config/db.py index 1696591cb44..5daa9d2a975 100644 --- a/packages/simcore-sdk/src/simcore_sdk/config/db.py +++ b/packages/simcore-sdk/src/simcore_sdk/config/db.py @@ -3,14 +3,15 @@ """ from os import environ as env -POSTGRES_URL = env.get("POSTGRES_ENDPOINT", "postgres:5432") -POSTGRES_USER = env.get("POSTGRES_USER", "simcore") -POSTGRES_PW = env.get("POSTGRES_PASSWORD", "simcore") -POSTGRES_DB = env.get("POSTGRES_DB", "simcoredb") class Config(): def __init__(self): + POSTGRES_URL = env.get("POSTGRES_ENDPOINT", "postgres:5432") + POSTGRES_USER = env.get("POSTGRES_USER", "simcore") + POSTGRES_PW = env.get("POSTGRES_PASSWORD", "simcore") + POSTGRES_DB = env.get("POSTGRES_DB", "simcoredb") + self._user = POSTGRES_USER self._pwd = POSTGRES_PW self._url = POSTGRES_URL diff --git a/packages/simcore-sdk/src/simcore_sdk/config/s3.py b/packages/simcore-sdk/src/simcore_sdk/config/s3.py index 76f49cf07e6..6761d449af8 100644 --- a/packages/simcore-sdk/src/simcore_sdk/config/s3.py +++ b/packages/simcore-sdk/src/simcore_sdk/config/s3.py @@ -2,14 +2,18 @@ """ from os import environ as env +import logging -S3_ENDPOINT = env.get("S3_ENDPOINT", "minio:9000") -S3_ACCESS_KEY = env.get("S3_ACCESS_KEY", "12345678") -S3_SECRET_KEY = env.get("S3_SECRET_KEY", "12345678") -S3_BUCKET_NAME = env.get("S3_BUCKET_NAME", "simcore") + +_LOGGER = logging.getLogger(__name__) class Config(): def __init__(self): + S3_ENDPOINT = env.get("S3_ENDPOINT", "minio:9000") + S3_ACCESS_KEY = env.get("S3_ACCESS_KEY", "12345678") + S3_SECRET_KEY = env.get("S3_SECRET_KEY", "12345678") + S3_BUCKET_NAME = env.get("S3_BUCKET_NAME", "simcore") + self._endpoint = S3_ENDPOINT self._access_key = S3_ACCESS_KEY self._secret_key = S3_SECRET_KEY diff --git a/packages/simcore-sdk/src/simcore_sdk/nodeports/_item.py b/packages/simcore-sdk/src/simcore_sdk/nodeports/_item.py index cd4eb1eaefa..cb5ca8e5090 100644 --- a/packages/simcore-sdk/src/simcore_sdk/nodeports/_item.py +++ b/packages/simcore-sdk/src/simcore_sdk/nodeports/_item.py @@ -1,20 +1,34 @@ """This module contains an item representing a node port""" -import logging import collections import datetime -from simcore_sdk.nodeports import exceptions -from simcore_sdk.nodeports import config -from simcore_sdk.nodeports import filemanager +import logging +import os +from pathlib import Path + +from simcore_sdk.nodeports import config, exceptions, filemanager _LOGGER = logging.getLogger(__name__) _DataItem = collections.namedtuple("_DataItem", config.DATA_ITEM_KEYS) +def is_value_link(value): + return isinstance(value, str) and value.startswith(config.LINK_PREFIX) + +def decode_link(encoded_link): + link = encoded_link.split(".") + if len(link) < 3: + raise exceptions.InvalidProtocolError(encoded_link, "Invalid link definition: " + str(encoded_link)) + other_node_uuid = link[1] + other_port_key = ".".join(link[2:]) + return other_node_uuid, other_port_key + +def encode_link(node_uuid, port_key): + return config.LINK_PREFIX + str(node_uuid) + "." + port_key + class DataItem(_DataItem): """This class encapsulate a Data Item and provide accessors functions""" def __new__(cls, **kwargs): - new_kargs = dict.fromkeys(config.DATA_ITEM_KEYS) new_kargs['timestamp'] = datetime.datetime.now().isoformat() for key in config.DATA_ITEM_KEYS: @@ -45,37 +59,10 @@ def get(self): return None _LOGGER.debug("Got data item with value %s", self.value) - if isinstance(self.value, str) and self.value.startswith("link."): - link = self.value.split(".") - if len(link) < 3: - raise exceptions.InvalidProtocolError(self.value, "Invalid link definition: " + str(self.value)) - other_node_uuid = link[1] - other_port_key = ".".join(link[2:]) - - if self.type in config.TYPE_TO_S3_FILE_LIST: - # try to fetch from S3 as a file - _LOGGER.debug("Fetch file from S3 %s", self.value) - return filemanager.download_file_from_S3(node_uuid=other_node_uuid, - node_key=other_port_key, - file_name=self.key) - elif self.type in config.TYPE_TO_S3_FOLDER_LIST: - # try to fetch from S3 as a folder - _LOGGER.debug("Fetch folder from S3 %s", self.value) - return filemanager.download_folder_from_s3(node_uuid=other_node_uuid, - node_key=other_port_key, - folder_name=self.key) - else: - # try to fetch link from database node - _LOGGER.debug("Fetch value from other node %s", self.value) - if not self.get_node_from_uuid_cb: - raise exceptions.NodeportsException("callback to get other node information is not set") - - other_nodeports = self.get_node_from_uuid_cb(other_node_uuid) #pylint: disable=not-callable - _LOGGER.debug("Received node from DB %s, now returning value", other_nodeports) - return other_nodeports.get(other_port_key) - - - return config.TYPE_TO_PYTHON_TYPE_MAP[self.type](self.value) + if is_value_link(self.value): + return config.TYPE_TO_PYTHON_TYPE_MAP[self.type]["type"](self.__get_value_from_link()) + # the value is not a link, let's directly convert it to the right type + return config.TYPE_TO_PYTHON_TYPE_MAP[self.type]["type"](config.TYPE_TO_PYTHON_TYPE_MAP[self.type]["converter"](self.value)) def set(self, value): """sets the data to the underlying port @@ -84,13 +71,70 @@ def set(self, value): value {any type} -- must be convertible to a string, or an exception will be thrown. """ _LOGGER.info("Setting data item with value %s", value) - # let's create a new data + # let's create a new data if necessary data_dct = self._asdict() + # try to guess the type and check the type set fits this (there can be more than one possibility, e.g. string) + possible_types = [key for key,key_type in config.TYPE_TO_PYTHON_TYPE_MAP.items() if isinstance(value, key_type["type"])] + _LOGGER.debug("possible types are for value %s are %s", value, possible_types) + if not self.type in possible_types: + raise exceptions.InvalidItemTypeError(self.type, value) + + # convert to string now new_value = str(value) - if new_value != data_dct["value"]: - data_dct["value"] = str(value) - data_dct["timestamp"] = datetime.datetime.utcnow().isoformat() - new_data = DataItem(**data_dct) - if self.new_data_cb: - _LOGGER.debug("calling new data callback") - self.new_data_cb(new_data) #pylint: disable=not-callable + + if self.type in config.TYPE_TO_S3_FILE_LIST: + file_path = Path(new_value) + if not file_path.exists() or not file_path.is_file(): + raise exceptions.InvalidItemTypeError(self.type, value) + node_uuid = os.environ.get('SIMCORE_NODE_UUID', default="undefined") + _LOGGER.debug("file path %s will be uploaded to s3", value) + filemanager.upload_file_to_s3(node_uuid=node_uuid, node_key=self.key, file_path=file_path) + _LOGGER.debug("file path %s uploaded to s3 from node %s and key %s", value, node_uuid, self.key) + new_value = encode_link(node_uuid=node_uuid, port_key=self.key) + + elif self.type in config.TYPE_TO_S3_FOLDER_LIST: + folder_path = Path(new_value) + if not folder_path.exists() or not folder_path.is_dir(): + raise exceptions.InvalidItemTypeError(self.type, value) + node_uuid = os.environ.get('SIMCORE_NODE_UUID', default="undefined") + _LOGGER.debug("folder %s will be uploaded to s3", value) + filemanager.upload_folder_to_s3(node_uuid=node_uuid, node_key=self.key, folder_path=folder_path) + _LOGGER.debug("folder %s uploaded to s3 from node %s and key %s", value, node_uuid, self.key) + new_value = encode_link(node_uuid=node_uuid, port_key=self.key) + + data_dct["value"] = new_value + data_dct["timestamp"] = datetime.datetime.utcnow().isoformat() + new_data = DataItem(**data_dct) + if self.new_data_cb: + _LOGGER.debug("calling new data callback to update database") + self.new_data_cb(new_data) #pylint: disable=not-callable + _LOGGER.debug("database updated") + + + + def __get_value_from_link(self): + node_uuid, port_key = decode_link(self.value) + + if self.type in config.TYPE_TO_S3_FILE_LIST: + # try to fetch from S3 as a file + _LOGGER.debug("Fetch file from S3 %s", self.value) + return filemanager.download_file_from_S3(node_uuid=node_uuid, + node_key=port_key, + file_name=self.key) + elif self.type in config.TYPE_TO_S3_FOLDER_LIST: + # try to fetch from S3 as a folder + _LOGGER.debug("Fetch folder from S3 %s", self.value) + return filemanager.download_folder_from_s3(node_uuid=node_uuid, + node_key=port_key, + folder_name=self.key) + else: + # try to fetch link from database node + _LOGGER.debug("Fetch value from other node %s", self.value) + if not self.get_node_from_uuid_cb: + raise exceptions.NodeportsException("callback to get other node information is not set") + + other_nodeports = self.get_node_from_uuid_cb(node_uuid) #pylint: disable=not-callable + _LOGGER.debug("Received node from DB %s, now returning value", other_nodeports) + return other_nodeports.get(port_key) + + diff --git a/packages/simcore-sdk/src/simcore_sdk/nodeports/config.py b/packages/simcore-sdk/src/simcore_sdk/nodeports/config.py index 250b92639e4..76571dace5d 100644 --- a/packages/simcore-sdk/src/simcore_sdk/nodeports/config.py +++ b/packages/simcore-sdk/src/simcore_sdk/nodeports/config.py @@ -1,7 +1,7 @@ """Takes care of the configurations. """ import logging - +from distutils.util import strtobool # pylint: disable=no-name-in-module # defined by JSON schema DATA_ITEM_KEYS = ["key", @@ -11,17 +11,19 @@ "value", "timestamp"] # allowed types -TYPE_TO_PYTHON_TYPE_MAP = {"int":int, - "integer":int, - "float":float, - "file-url":str, - "bool":bool, - "string":str, - "folder-url":str} +TYPE_TO_PYTHON_TYPE_MAP = {"integer":{"type":int, "converter":int}, + "number":{"type":float, "converter":float}, + "file-url":{"type":str, "converter":str}, + "bool":{"type":bool, "converter":strtobool}, + "string":{"type":str, "converter":str}, + "folder-url":{"type":str, "converter":str} + } # S3 stored information TYPE_TO_S3_FILE_LIST = ["file-url"] TYPE_TO_S3_FOLDER_LIST = ["folder-url"] +LINK_PREFIX = "link." + # nodeports is a library for accessing data linked to the node # in that sense it should not log stuff unless the application code wants it to be so. logging.getLogger(__name__).addHandler(logging.NullHandler()) diff --git a/packages/simcore-sdk/src/simcore_sdk/nodeports/io.py b/packages/simcore-sdk/src/simcore_sdk/nodeports/dbmanager.py similarity index 72% rename from packages/simcore-sdk/src/simcore_sdk/nodeports/io.py rename to packages/simcore-sdk/src/simcore_sdk/nodeports/dbmanager.py index c3f4a5c65bf..b9ebd1779e1 100644 --- a/packages/simcore-sdk/src/simcore_sdk/nodeports/io.py +++ b/packages/simcore-sdk/src/simcore_sdk/nodeports/dbmanager.py @@ -1,4 +1,5 @@ import os +import json import logging from sqlalchemy import create_engine @@ -8,7 +9,6 @@ from simcore_sdk.config.db import Config as db_config from simcore_sdk.models.pipeline_models import ComputationalTask as NodeModel -from simcore_sdk.nodeports import serialization _LOGGER = logging.getLogger(__name__) @@ -19,7 +19,32 @@ def __init__(self): self.Session = sessionmaker(self.db) self.session = self.Session() -class IO(object): +def save_node_to_json(node): + node_json_config = json.dumps(node, cls=_NodeModelEncoder) + return node_json_config + +def create_node_from_json(json_config): + node_configuration = json.loads(json_config) + node = NodeModel(input=node_configuration["inputs"], output=node_configuration["outputs"]) + return node + +class _NodeModelEncoder(json.JSONEncoder): + def default(self, o): # pylint: disable=E0202 + _LOGGER.debug("Encoding object: %s", o) + if isinstance(o, NodeModel): + _LOGGER.debug("Encoding Node object") + return {"version": "0.1", #TODO: SAN this will need to be correctly read + "inputs": o.input, + "outputs": o.output + } + # return {"version": o.tag, + # "inputs": o.inputs, + # "outputs": o.outputs + # } + _LOGGER.debug("Encoding object using defaults") + return json.JSONEncoder.default(self, o) + +class DBManager(object): def __init__(self): self._db = DbSettings() @@ -38,14 +63,14 @@ def __get_configuration_from_db(self, node_uuid=None, set_pipeline_id=False): node = self.__get_node_from_db(node_uuid) if set_pipeline_id: os.environ["SIMCORE_PIPELINE_ID"]=str(node.pipeline_id) - node_json_config = serialization.save_node_to_json(node) + node_json_config = save_node_to_json(node) _LOGGER.debug("Found and converted to json") return node_json_config def __write_configuration_to_db(self, json_configuration): _LOGGER.debug("Writing to database") - updated_node = serialization.create_node_from_json(json_configuration) + updated_node = create_node_from_json(json_configuration) node = self.__get_node_from_db(node_uuid=os.environ.get('SIMCORE_NODE_UUID')) if node.input != updated_node.input: diff --git a/packages/simcore-sdk/src/simcore_sdk/nodeports/exceptions.py b/packages/simcore-sdk/src/simcore_sdk/nodeports/exceptions.py index 174859e07cd..9903896aa3a 100644 --- a/packages/simcore-sdk/src/simcore_sdk/nodeports/exceptions.py +++ b/packages/simcore-sdk/src/simcore_sdk/nodeports/exceptions.py @@ -35,9 +35,24 @@ def __init__(self, item_key, msg=None): super(InvalidKeyError, self).__init__(msg) self.item_key = item_key +class InvalidItemTypeError(NodeportsException): + """Item type incorrect""" + def __init__(self, item_type, item_value): + msg = "Invalid item type, %s is set as being a %s type" % (item_value, item_type) + super(InvalidItemTypeError, self).__init__(msg) + self.item_type = item_type + self.item_value = item_value + class InvalidProtocolError(NodeportsException): """Invalid protocol used""" def __init__(self, dct, msg=None): msg = "Invalid protocol used: %s\n%s" % (dct, msg) super(InvalidProtocolError, self).__init__(msg) self.dct = dct + +class S3TransferError(NodeportsException): + """S3 transfer error""" + def __init__(self, msg=None): + if not msg: + msg = "Error while transferring to/from S3 storage" + super(S3TransferError, self).__init__(msg) \ No newline at end of file diff --git a/packages/simcore-sdk/src/simcore_sdk/nodeports/filemanager.py b/packages/simcore-sdk/src/simcore_sdk/nodeports/filemanager.py index 6911bae4a7d..4cdca801051 100644 --- a/packages/simcore-sdk/src/simcore_sdk/nodeports/filemanager.py +++ b/packages/simcore-sdk/src/simcore_sdk/nodeports/filemanager.py @@ -5,6 +5,7 @@ import tempfile import tenacity from simcore_sdk.config.s3 import Config as s3_config +from simcore_sdk.nodeports import exceptions from s3wrapper.s3_client import S3Client _LOGGER = logging.getLogger(__name__) @@ -12,27 +13,27 @@ class S3Settings(object): def __init__(self): + _LOGGER.debug("Initialise S3 connection") self._config = s3_config() self.client = S3Client(endpoint=self._config.endpoint, access_key=self._config.access_key, secret_key=self._config.secret_key) self.bucket = self._config.bucket_name self.client.create_bucket(self.bucket) + _LOGGER.debug("Initialised S3 connection") -@tenacity.retry(stop=tenacity.stop_after_attempt(3) | tenacity.stop_after_delay(10)) +@tenacity.retry(stop=tenacity.stop_after_attempt(3) or tenacity.stop_after_delay(10)) def __download_fromS3(s3_client, s3_bucket, s3_object_name, file_path): _LOGGER.debug('Downloading from S3 %s/%s to %s', s3_bucket, s3_object_name, file_path) success = s3_client.download_file(s3_bucket, s3_object_name, file_path) if not success: - raise Exception("could not retrieve file") + raise exceptions.S3TransferError("could not retrieve file from %s/%s" %(s3_bucket, s3_object_name)) _LOGGER.debug('Downloaded from bucket %s, object %s to %s successfully', s3_bucket, s3_object_name, file_path) def download_folder_from_s3(node_uuid, node_key, folder_name): _LOGGER.debug("Trying to download from S3: node uuid %s, key %s, file name %s", node_uuid, node_key, folder_name) - s3_object_url = Path(os.environ.get('SIMCORE_PIPELINE_ID'), node_uuid, node_key).as_posix() - _LOGGER.debug("Initialise S3 connection") + s3_object_url = __encode_s3_url(node_uuid=node_uuid, node_key=node_key) s3 = S3Settings() - _LOGGER.debug("Initialised S3 connection") folder_path = Path(_INTERNAL_DIR, folder_name) if folder_path.exists(): @@ -51,10 +52,8 @@ def download_folder_from_s3(node_uuid, node_key, folder_name): def download_file_from_S3(node_uuid, node_key, file_name): _LOGGER.debug("Trying to download from S3: node uuid %s, key %s, file name %s", node_uuid, node_key, file_name) - s3_object_url = Path(os.environ.get('SIMCORE_PIPELINE_ID'), node_uuid, node_key).as_posix() - _LOGGER.debug("Initialise S3 connection") + s3_object_url = __encode_s3_url(node_uuid=node_uuid, node_key=node_key) s3 = S3Settings() - _LOGGER.debug("Initialised S3 connection") # here we add an extension to circumvent an error when downloading the file under Windows OS file_path = Path(_INTERNAL_DIR, file_name, file_name + ".simcore") @@ -64,4 +63,34 @@ def download_file_from_S3(node_uuid, node_key, file_name): __download_fromS3(s3.client, s3.bucket, s3_object_url, str(file_path)) return file_path - \ No newline at end of file + +@tenacity.retry(stop=tenacity.stop_after_attempt(3) or tenacity.stop_after_delay(10)) +def __upload_to_s3(s3_client, s3_bucket, s3_object_name, file_path): + _LOGGER.debug('Uploading to S3 %s/%s from %s', s3_bucket, s3_object_name, file_path) + success = s3_client.upload_file(s3_bucket, s3_object_name, file_path) + if not success: + raise exceptions.S3TransferError("could not upload file %s to %s/%s" %(file_path, s3_bucket, s3_object_name)) + + _LOGGER.debug('Uploaded to s3 %s/%s from %s successfully', s3_bucket, s3_object_name, file_path) + +def upload_file_to_s3(node_uuid, node_key, file_path): + _LOGGER.debug("Trying to upload file to S3: node uuid %s, key %s, file path %s", node_uuid, node_key, file_path) + s3_object_url = __encode_s3_url(node_uuid=node_uuid, node_key=node_key) + s3 = S3Settings() + __upload_to_s3(s3.client, s3.bucket, s3_object_url, file_path) + return s3_object_url + + +def upload_folder_to_s3(node_uuid, node_key, folder_path): + _LOGGER.debug("Trying to upload folder to S3: node uuid %s, key %s, folder path %s", node_uuid, node_key, folder_path) + s3_object_base_url = __encode_s3_url(node_uuid=node_uuid, node_key=node_key) + s3 = S3Settings() + path = Path(folder_path) + for path_child in path.iterdir(): + if path_child.is_file(): + s3_object_url = (Path(s3_object_base_url) / path_child.name).as_posix() + __upload_to_s3(s3.client, s3.bucket, s3_object_url, path_child) + return s3_object_base_url + +def __encode_s3_url(node_uuid, node_key): + return Path(os.environ.get('SIMCORE_PIPELINE_ID', default="undefined"), node_uuid, node_key).as_posix() \ No newline at end of file diff --git a/packages/simcore-sdk/src/simcore_sdk/nodeports/nodeports.py b/packages/simcore-sdk/src/simcore_sdk/nodeports/nodeports.py index 494b722ee0e..066abe0e9fa 100644 --- a/packages/simcore-sdk/src/simcore_sdk/nodeports/nodeports.py +++ b/packages/simcore-sdk/src/simcore_sdk/nodeports/nodeports.py @@ -2,7 +2,7 @@ data going to following nodes. """ import logging -from simcore_sdk.nodeports import exceptions, io, serialization +from simcore_sdk.nodeports import exceptions, dbmanager, serialization from simcore_sdk.nodeports._itemslist import DataItemsList @@ -33,7 +33,7 @@ def __init__(self, version, inputs=None, outputs=None): self.__outputs.change_notifier = self.save_to_json self.__outputs.get_node_from_node_uuid_cb = self.get_node_from_node_uuid - self.io_obj = None + self.db_mgr = None self.autoread = False self.autowrite = False @@ -79,10 +79,10 @@ def get(self, item_key): def update_from_json(self): _LOGGER.debug("Updating json configuration") - if not self.io_obj: - raise exceptions.NodeportsException("io object is not initialised") + if not self.db_mgr: + raise exceptions.NodeportsException("db manager is not initialised") change_notifier = self.__outputs.change_notifier - updated_nodeports = serialization.create_from_json(self.io_obj) + updated_nodeports = serialization.create_from_json(self.db_mgr) self.__inputs = updated_nodeports.inputs self.__outputs = updated_nodeports.outputs self.__outputs.change_notifier = change_notifier @@ -93,11 +93,11 @@ def save_to_json(self): serialization.save_to_json(self) def get_node_from_node_uuid(self, node_uuid): - if not self.io_obj: - raise exceptions.NodeportsException("io object is not initialised") - return serialization.create_nodeports_from_uuid(self.io_obj, node_uuid) + if not self.db_mgr: + raise exceptions.NodeportsException("db manager is not initialised") + return serialization.create_nodeports_from_uuid(self.db_mgr, node_uuid) -_IO = io.IO() +_db_manager = dbmanager.DBManager() # create initial Simcore object -PORTS = serialization.create_from_json(_IO, auto_read=True, auto_write=True) \ No newline at end of file +PORTS = serialization.create_from_json(_db_manager, auto_read=True, auto_write=True) \ No newline at end of file diff --git a/packages/simcore-sdk/src/simcore_sdk/nodeports/serialization.py b/packages/simcore-sdk/src/simcore_sdk/nodeports/serialization.py index 0fd58ff666f..3bbb51fbdb2 100644 --- a/packages/simcore-sdk/src/simcore_sdk/nodeports/serialization.py +++ b/packages/simcore-sdk/src/simcore_sdk/nodeports/serialization.py @@ -7,15 +7,14 @@ from simcore_sdk.nodeports._item import DataItem from simcore_sdk.nodeports import exceptions from simcore_sdk.nodeports import config -from simcore_sdk.models.pipeline_models import ComputationalTask as NodeModel _LOGGER = logging.getLogger(__name__) -def create_from_json(io_obj, auto_read=False, auto_write=False): +def create_from_json(db_mgr, auto_read=False, auto_write=False): """creates a Nodeports object provided a json configuration in form of a callback function. Arguments: - io_obj {object} -- interface object to connect to nodeports description. + db_mgr {object} -- interface object to connect to nodeports description. Keyword Arguments: auto_read {bool} -- the nodeports object shall automatically update itself when set to True (default: {False}) @@ -28,21 +27,22 @@ def create_from_json(io_obj, auto_read=False, auto_write=False): object -- the Nodeports object """ - _LOGGER.debug("Creating Nodeports object with io object: %s, auto read %s and auto write %s", io_obj, auto_read, auto_write) - if not io_obj: + _LOGGER.debug("Creating Nodeports object with io object: %s, auto read %s and auto write %s", db_mgr, auto_read, auto_write) + if not db_mgr: raise exceptions.NodeportsException("io object empty, this is not allowed") - nodeports_obj = json.loads(io_obj.get_ports_configuration(), object_hook=nodeports_decoder) - nodeports_obj.io_obj = io_obj + + nodeports_obj = json.loads(db_mgr.get_ports_configuration(), object_hook=nodeports_decoder) + nodeports_obj.db_mgr = db_mgr nodeports_obj.autoread = auto_read nodeports_obj.autowrite = auto_write _LOGGER.debug("Created Nodeports object") return nodeports_obj -def create_nodeports_from_uuid(io_obj, node_uuid): +def create_nodeports_from_uuid(db_mgr, node_uuid): _LOGGER.debug("Creating Nodeports object from node uuid: %s", node_uuid) - if not io_obj: + if not db_mgr: raise exceptions.NodeportsException("Invalid call to create nodeports from uuid") - nodeports_obj = json.loads(io_obj.get_ports_configuration_from_node_uuid(node_uuid), object_hook=nodeports_decoder) + nodeports_obj = json.loads(db_mgr.get_ports_configuration_from_node_uuid(node_uuid), object_hook=nodeports_decoder) _LOGGER.debug("Created Nodeports object") return nodeports_obj @@ -63,7 +63,7 @@ def save_to_json(nodeports_obj): nodeports_obj.autoread = auto_update_state if nodeports_obj.autowrite: - nodeports_obj.io_obj.write_ports_configuration(nodeports_json) + nodeports_obj.db_mgr.write_ports_configuration(nodeports_json) _LOGGER.info("Saved Nodeports object to json: %s", nodeports_json) class _NodeportsEncoder(json.JSONEncoder): @@ -112,37 +112,5 @@ def nodeports_decoder(dct): _LOGGER.debug("Decoding Data items json: %s", dct) return DataItem(**dct) -def save_node_to_json(node): - node_json_config = json.dumps(node, cls=_NodeModelEncoder) - return node_json_config - -def create_node_from_json(json_config): - node = json.loads(json_config, object_hook=nodemodel_decoder) - return node -class _NodeModelEncoder(json.JSONEncoder): - def default(self, o): # pylint: disable=E0202 - _LOGGER.debug("Encoding object: %s", o) - if isinstance(o, NodeModel): - _LOGGER.debug("Encoding Node object") - return {"version": "0.1", #TODO: SAN this will need to be correctly read - "inputs": o.input, - "outputs": o.output - } - # return {"version": o.tag, - # "inputs": o.inputs, - # "outputs": o.outputs - # } - _LOGGER.debug("Encoding object using defaults") - return json.JSONEncoder.default(self, o) -def nodemodel_decoder(dct): - if "version" in dct and "inputs" in dct and "outputs" in dct: - _LOGGER.debug("Decoding Nodeports json: %s", dct) - return NodeModel(input=dct["inputs"], output=dct["outputs"]) - #return NodeModel(tag=dct["version"], inputs=dct["inputs"], outputs=dct["outputs"]) - # for key in config.DATA_ITEM_KEYS: - # if key not in dct: - # raise exceptions.InvalidProtocolError(dct) - # _LOGGER.debug("Decoding Data items json: %s", dct) - return dct \ No newline at end of file diff --git a/packages/simcore-sdk/tests/fixtures/minio-fix.py b/packages/simcore-sdk/tests/fixtures/minio-fix.py new file mode 100644 index 00000000000..934dc281f3c --- /dev/null +++ b/packages/simcore-sdk/tests/fixtures/minio-fix.py @@ -0,0 +1,58 @@ +import pytest +import requests +import os + +from pytest_docker import docker_ip, docker_services # pylint:disable=unused-import + +from s3wrapper.s3_client import S3Client + + +def is_responsive(url, code=200): + """Check if something responds to ``url``.""" + try: + response = requests.get(url) + if response.status_code == code: + return True + except requests.exceptions.RequestException as _e: + pass + return False + +@pytest.fixture(scope="module") +def s3_client(docker_ip, docker_services): # pylint:disable=redefined-outer-name + """wait for minio to be up""" + + # Build URL to service listening on random port. + url = 'http://%s:%d/' % ( + docker_ip, + docker_services.port_for('minio', 9000), + ) + + # Wait until service is responsive. + docker_services.wait_until_responsive( + check=lambda: is_responsive(url, 403), + timeout=30.0, + pause=0.1, + ) + + # Contact the service. + response = requests.get(url) + assert response.status_code == 403 + + endpoint = '{ip}:{port}'.format(ip=docker_ip, port=docker_services.port_for('minio', 9000)) + access_key = "s3access" + secret_key = "s3secret" + os.environ["S3_ENDPOINT"] = endpoint + os.environ["S3_ACCESS_KEY"] = "s3access" + os.environ["S3_SECRET_KEY"] = "s3secret" + secure = False + return S3Client(endpoint, access_key, secret_key, secure) + +@pytest.fixture() +def bucket(s3_client, request): # pylint: disable=W0621 + os.environ["S3_BUCKET_NAME"] = "simcore-test" + bucket_name = "simcore-test" + s3_client.create_bucket(bucket_name, delete_contents_if_exists=True) + def fin(): + s3_client.remove_bucket(bucket_name, delete_contents=True) + request.addfinalizer(fin) + return bucket_name \ No newline at end of file diff --git a/packages/simcore-sdk/tests/fixtures/postgres.py b/packages/simcore-sdk/tests/fixtures/postgres.py index e2d13b4b482..4c45e4aaa2f 100644 --- a/packages/simcore-sdk/tests/fixtures/postgres.py +++ b/packages/simcore-sdk/tests/fixtures/postgres.py @@ -8,11 +8,6 @@ from sqlalchemy.orm import sessionmaker -@pytest.fixture(scope='session') -def docker_compose_file(pytestconfig): # pylint:disable=unused-argument - my_path = os.path.join(os.path.dirname(__file__), 'docker-compose.yml') - return my_path - def is_responsive(dbname, user, password, host, port): """Check if there is a db""" try: @@ -52,6 +47,11 @@ def engine(docker_ip, docker_services, request): user=user, password=password, host=host, port=port, dbname=dbname) engine = create_engine(endpoint, client_encoding='utf8') + os.environ["POSTGRES_ENDPOINT"]="{host}:{port}".format(host=host, port=port) + os.environ["POSTGRES_USER"]="user" + os.environ["POSTGRES_PASSWORD"]="pwd" + os.environ["POSTGRES_DB"]="test" + def fin(): engine.dispose() request.addfinalizer(fin) diff --git a/packages/simcore-sdk/tests/nodeports/conftest.py b/packages/simcore-sdk/tests/nodeports/conftest.py index 6e242887f05..9c82d5a059f 100644 --- a/packages/simcore-sdk/tests/nodeports/conftest.py +++ b/packages/simcore-sdk/tests/nodeports/conftest.py @@ -11,7 +11,13 @@ sys.path.append(os.path.join(os.path.dirname(__file__), "helpers")) -pytest_plugins = ["tests.fixtures.postgres"] +pytest_plugins = ["tests.fixtures.postgres", "tests.fixtures.minio-fix"] + +@pytest.fixture(scope='session') +def docker_compose_file(pytestconfig): # pylint:disable=unused-argument + my_path = os.path.join(os.path.dirname(__file__), 'docker-compose.yml') + return my_path + def set_configuration(engine, session, json_configuration): node_uuid = uuid.uuid4() @@ -30,12 +36,7 @@ def set_configuration(engine, session, json_configuration): # set up access to database os.environ["SIMCORE_NODE_UUID"]=str(node_uuid) - os.environ["SIMCORE_PIPELINE_ID"]=str(new_Pipeline.pipeline_id) - - os.environ["POSTGRES_ENDPOINT"]="localhost:5432" - os.environ["POSTGRES_USER"]="user" - os.environ["POSTGRES_PASSWORD"]="pwd" - os.environ["POSTGRES_DB"]="test" + os.environ["SIMCORE_PIPELINE_ID"]=str(new_Pipeline.pipeline_id) return engine, session, new_Pipeline.pipeline_id, node_uuid @@ -44,7 +45,7 @@ def default_nodeports_configuration(engine, session): """initialise nodeports with default configuration file """ # prepare database with default configuration - default_config_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), r"../../src/simcore_sdk/config/connection_config.json") + default_config_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), r"connection_config.json") with open(default_config_path) as config_file: json_configuration = config_file.read() diff --git a/packages/simcore-sdk/src/simcore_sdk/config/connection_config.json b/packages/simcore-sdk/tests/nodeports/connection_config.json similarity index 96% rename from packages/simcore-sdk/src/simcore_sdk/config/connection_config.json rename to packages/simcore-sdk/tests/nodeports/connection_config.json index 5e5c4504d78..582153e42ce 100644 --- a/packages/simcore-sdk/src/simcore_sdk/config/connection_config.json +++ b/packages/simcore-sdk/tests/nodeports/connection_config.json @@ -13,7 +13,7 @@ "key": "in_5", "label": "some number", "desc": "numbering things", - "type": "int", + "type": "integer", "value": "666", "timestamp": "2018-05-23T15:34:53.511Z" } diff --git a/packages/simcore-sdk/tests/nodeports/docker-compose.yml b/packages/simcore-sdk/tests/nodeports/docker-compose.yml index aad812dc5fd..428bd12dd95 100644 --- a/packages/simcore-sdk/tests/nodeports/docker-compose.yml +++ b/packages/simcore-sdk/tests/nodeports/docker-compose.yml @@ -10,10 +10,11 @@ services: ports: - "5432:5432" minio: + restart: always image: minio/minio environment: - MINIO_ACCESS_KEY=s3access - MINIO_SECRET_KEY=s3secret ports: - - "9001:9000" + - "9000:9000" command: server /data \ No newline at end of file diff --git a/packages/simcore-sdk/tests/nodeports/test_config.py b/packages/simcore-sdk/tests/nodeports/test_config.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/simcore-sdk/tests/nodeports/test_io.py b/packages/simcore-sdk/tests/nodeports/test_io.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/simcore-sdk/tests/nodeports/test_item.py b/packages/simcore-sdk/tests/nodeports/test_item.py index 76da5974312..70752cf19bd 100644 --- a/packages/simcore-sdk/tests/nodeports/test_item.py +++ b/packages/simcore-sdk/tests/nodeports/test_item.py @@ -2,7 +2,7 @@ import datetime import pytest - +from pathlib import Path from simcore_sdk.nodeports import config, exceptions from simcore_sdk.nodeports._item import DataItem @@ -70,17 +70,42 @@ def test_invalid_type(): assert "Invalid protocol used" in str(excinfo.value) def test_invalid_value_type(): - item = create_item("int", "not an integer") + item = create_item("integer", "not an integer") #pylint: disable=W0612 with pytest.raises(ValueError, message="Expecting InvalidProtocolError") as excinfo: item.get() - -def test_set_new_value(): + +@pytest.mark.parametrize("item_type, item_value_to_set, expected_value", [ + ("integer", 26, "26"), + ("number", -746.4748, "-746.4748"), + ("file-url", __file__, "link.undefined.a key"), + ("bool", False, "False"), + ("string", "test-string", "test-string"), + ("folder-url", str(Path(__file__).parent), "link.undefined.a key") +]) +def test_set_new_value(bucket, item_type, item_value_to_set, expected_value): # pylint: disable=W0613 import mock mock_method = mock.Mock() - item = create_item("int", "null") + item = create_item(item_type, "null") item.new_data_cb = mock_method assert item.get() is None - item.set(26) + item.set(item_value_to_set) + + mock_method.assert_called_with(create_item(item_type, expected_value, mock.ANY)) + +@pytest.mark.parametrize("item_type, item_value_to_set", [ + ("integer", -746.4748), + ("number", "a string"), + ("file-url", str(Path(__file__).parent)), + ("bool", 123), + ("string", True), + ("folder-url", __file__) +]) +def test_set_new_invalid_value(bucket, item_type, item_value_to_set): # pylint: disable=W0613 + item = create_item(item_type, "null") + assert item.get() is None + with pytest.raises(exceptions.InvalidItemTypeError, message="Expecting InvalidItemTypeError") as excinfo: + item.set(item_value_to_set) + assert "Invalid item type" in str(excinfo.value) - mock_method.assert_called_with(create_item("int", "26", mock.ANY)) + \ No newline at end of file diff --git a/packages/simcore-sdk/tests/nodeports/test_itemstlist.py b/packages/simcore-sdk/tests/nodeports/test_itemstlist.py index c4e524287a3..3e3571c80cf 100644 --- a/packages/simcore-sdk/tests/nodeports/test_itemstlist.py +++ b/packages/simcore-sdk/tests/nodeports/test_itemstlist.py @@ -27,41 +27,41 @@ def test_default_list(): def test_reject_items_with_same_key(): from simcore_sdk.nodeports import exceptions with pytest.raises(exceptions.InvalidProtocolError, message="Expecting InvalidProtocolError"): - DataItemsList([create_item("1", "int", "333"), create_item("1", "int", "444"), create_item("3", "int", "333")]) + DataItemsList([create_item("1", "integer", "333"), create_item("1", "integer", "444"), create_item("3", "integer", "333")]) itemslist = DataItemsList() with pytest.raises(exceptions.InvalidProtocolError, message="Expecting InvalidProtocolError"): - itemslist.insert(0, create_item("4", "int", "333")) - itemslist.insert(0, create_item("5", "int", "333")) - itemslist.insert(0, create_item("5", "int", "333")) + itemslist.insert(0, create_item("4", "integer", "333")) + itemslist.insert(0, create_item("5", "integer", "333")) + itemslist.insert(0, create_item("5", "integer", "333")) - itemslist = DataItemsList([create_item("1", "int", "333"), create_item("2", "int", "444"), create_item("3", "int", "333")]) + itemslist = DataItemsList([create_item("1", "integer", "333"), create_item("2", "integer", "444"), create_item("3", "integer", "333")]) with pytest.raises(exceptions.InvalidProtocolError, message="Expecting InvalidProtocolError"): - itemslist[1] = create_item("1", "int", "333") + itemslist[1] = create_item("1", "integer", "333") with pytest.raises(AttributeError, message="Expecting AttributeError"): itemslist[1].key = "1" def test_adding_removing_items(): - itemslist = DataItemsList([create_item("1", "int", "333"), create_item("2", "int", "333"), create_item("3", "int", "333")]) + itemslist = DataItemsList([create_item("1", "integer", "333"), create_item("2", "integer", "333"), create_item("3", "integer", "333")]) assert len(itemslist) == 3 - itemslist.insert(0, create_item("4", "int", "333")) - itemslist.insert(0, create_item("5", "int", "333")) - itemslist.insert(0, create_item("6", "int", "333")) + itemslist.insert(0, create_item("4", "integer", "333")) + itemslist.insert(0, create_item("5", "integer", "333")) + itemslist.insert(0, create_item("6", "integer", "333")) del itemslist[1] assert len(itemslist) == 5 def test_accessing_by_key(): - itemslist = DataItemsList([create_item("1", "int", "333"), create_item("2", "int", "333"), create_item("3", "int", "333")]) + itemslist = DataItemsList([create_item("1", "integer", "333"), create_item("2", "integer", "333"), create_item("3", "integer", "333")]) for item in itemslist: assert itemslist[item.key] == item def test_access_by_wrong_key(): from simcore_sdk.nodeports import exceptions - itemslist = DataItemsList([create_item("1", "int", "333"), create_item("2", "int", "333"), create_item("3", "int", "333")], read_only=True) + itemslist = DataItemsList([create_item("1", "integer", "333"), create_item("2", "integer", "333"), create_item("3", "integer", "333")], read_only=True) with pytest.raises(exceptions.UnboundPortError, message="Expecting UnboundPortError"): print(itemslist["fdoiht"]) @@ -80,15 +80,15 @@ def test_adding_bad_items(): def test_read_only(): from simcore_sdk.nodeports import exceptions - itemslist = DataItemsList([create_item("1", "int", "333"), create_item("2", "int", "333"), create_item("3", "int", "333")], read_only=True) + itemslist = DataItemsList([create_item("1", "integer", "333"), create_item("2", "integer", "333"), create_item("3", "integer", "333")], read_only=True) assert len(itemslist) == 3 with pytest.raises(exceptions.ReadOnlyError, message="Expecting ReadOnlyError") as excinfo: - itemslist.insert(0, create_item("10", "int", "333")) + itemslist.insert(0, create_item("10", "integer", "333")) assert "Trying to modify read-only object" in str(excinfo.value) with pytest.raises(exceptions.ReadOnlyError, message="Expecting ReadOnlyError") as excinfo: - itemslist[1] = create_item("11", "int", "222") + itemslist[1] = create_item("11", "integer", "222") assert "Trying to modify read-only object" in str(excinfo.value) with pytest.raises(exceptions.ReadOnlyError, message="Expecting ReadOnlyError") as excinfo: @@ -100,11 +100,11 @@ def test_modifying_items_triggers_cb(): #pylint: disable=C0103 import mock mock_method = mock.Mock() - itemslist = DataItemsList([create_item("1", "int", "333"), create_item("2", "int", "333"), create_item("3", "int", "333")], change_cb=mock_method) - itemslist.insert(0, create_item("10", "int", "333")) + itemslist = DataItemsList([create_item("1", "integer", "333"), create_item("2", "integer", "333"), create_item("3", "integer", "333")], change_cb=mock_method) + itemslist.insert(0, create_item("10", "integer", "333")) mock_method.assert_called_once() mock_method.reset_mock() - itemslist[0] = create_item("10", "int", "4444") + itemslist[0] = create_item("10", "integer", "4444") mock_method.assert_called_once() mock_method.reset_mock() itemslist[0].set(234) @@ -113,7 +113,7 @@ def test_modifying_items_triggers_cb(): #pylint: disable=C0103 def test_modifying_item_changes_timestamp(): #pylint: disable=C0103 import dateutil.parser import time - itemslist = DataItemsList([create_item("1", "int", "333"), create_item("2", "int", "333"), create_item("3", "int", "333")]) + itemslist = DataItemsList([create_item("1", "integer", "333"), create_item("2", "integer", "333"), create_item("3", "integer", "333")]) original_timestamp = dateutil.parser.parse(itemslist[0].timestamp) time.sleep(0.1) itemslist[0].set(47475) diff --git a/packages/simcore-sdk/tests/nodeports/test_nodeports.py b/packages/simcore-sdk/tests/nodeports/test_nodeports.py index 35e0d59b393..22ab4f96203 100644 --- a/packages/simcore-sdk/tests/nodeports/test_nodeports.py +++ b/packages/simcore-sdk/tests/nodeports/test_nodeports.py @@ -2,6 +2,8 @@ #pylint: disable=W0212 #pylint: disable=C0111 import pytest +from pathlib import Path +from simcore_sdk.nodeports import config as node_config def test_access_with_key(default_nodeports_configuration): # pylint: disable=W0613, W0621 from simcore_sdk.nodeports.nodeports import PORTS @@ -10,31 +12,127 @@ def test_access_with_key(default_nodeports_configuration): # pylint: disable=W06 assert PORTS.inputs["in_5"] == PORTS.inputs[1] assert PORTS.outputs["out_1"] == PORTS.outputs[0] -def test_port_value_getters(default_nodeports_configuration): # pylint: disable=W0613, W0621 +@pytest.mark.parametrize("item_type, item_value", [ + ("integer", 26), + ("integer", 0), + ("integer", -52), + ("number", -746.4748), + ("number", 0.0), + ("number", 4566.11235), + ("bool", False), + ("bool", True), + ("string", "test-string"), + ("string", ""), +]) +def test_port_value_accessors_no_s3(special_nodeports_configuration, item_type, item_value): # pylint: disable=W0613, W0621 + import helpers + special_config = helpers.get_empty_config() #pylint: disable=E1101 + special_config["outputs"].append({ + "key": "out_15", + "label": "additional data", + "desc": "here some additional data", + "type": item_type, + "value": "null", + "timestamp": "2018-05-22T19:34:53.511Z" + }) + special_nodeports_configuration(special_config) from simcore_sdk.nodeports.nodeports import PORTS + assert PORTS.outputs["out_15"].get() is None - assert PORTS.inputs["in_1"].get() == "/home/jovyan/data/outputControllerOut.dat" - assert PORTS.inputs["in_5"].get() == 666 - assert PORTS.outputs["out_1"].get() is None + PORTS.outputs["out_15"].set(item_value) + assert PORTS.outputs["out_15"].value == str(item_value) + converted_value = PORTS.outputs["out_15"].get() + assert isinstance(converted_value, node_config.TYPE_TO_PYTHON_TYPE_MAP[item_type]["type"]) + assert converted_value == item_value -def test_port_value_setters(special_nodeports_configuration): # pylint: disable=W0613, W0621 +@pytest.mark.parametrize("item_type, item_value", [ + ("file-url", __file__), + ("folder-url", str(Path(__file__).parent)) +]) +def test_port_value_accessors_s3(special_nodeports_configuration, bucket, item_type, item_value): # pylint: disable=W0613, W0621 import helpers + import os + import tempfile special_config = helpers.get_empty_config() #pylint: disable=E1101 + item_key = "out_blah" special_config["outputs"].append({ - "key": "out_15", + "key": item_key, "label": "additional data", "desc": "here some additional data", - "type": "int", + "type": item_type, "value": "null", "timestamp": "2018-05-22T19:34:53.511Z" }) special_nodeports_configuration(special_config) from simcore_sdk.nodeports.nodeports import PORTS + assert PORTS.outputs[item_key].get() is None # check emptyness - assert PORTS.outputs["out_15"].get() is None + # this triggers an upload to S3 + configuration change + PORTS.outputs[item_key].set(item_value) + # this is the link to S3 storage + assert PORTS.outputs[item_key].value == ".".join(["link", os.environ["SIMCORE_NODE_UUID"], item_key]) + # this triggers a download from S3 to a location in /tempdir/simcorefiles/item_key or /tempdir/simcorefiles/item_key/item_key.simcore + converted_value = PORTS.outputs[item_key].get() + assert isinstance(converted_value, node_config.TYPE_TO_PYTHON_TYPE_MAP[item_type]["type"]) + + assert Path(converted_value).exists() + converted_value_to_check_for = str(Path(tempfile.gettempdir(), "simcorefiles", item_key)) + assert PORTS.outputs[item_key].get().startswith(converted_value_to_check_for) + +def test_file_integrity(special_nodeports_configuration, bucket): # pylint: disable=W0613, W0621 + import helpers + special_config = helpers.get_empty_config() #pylint: disable=E1101 + item_key = "out_blah" + special_config["outputs"].append({ + "key": item_key, + "label": "additional data", + "desc": "here some additional data", + "type": "file-url", + "value": "null", + "timestamp": "2018-05-22T19:34:53.511Z" + }) + special_nodeports_configuration(special_config) + from simcore_sdk.nodeports.nodeports import PORTS + assert PORTS.outputs[item_key].get() is None # check emptyness + + # this triggers an upload to S3 + configuration change + PORTS.outputs[item_key].set(__file__) + + downloaded_file_path = PORTS.outputs[item_key].get() + import filecmp + filecmp.clear_cache() + assert filecmp.cmp(__file__, downloaded_file_path, shallow=False) + +def test_folder_integrity(special_nodeports_configuration, bucket): # pylint: disable=W0613, W0621 + import helpers + special_config = helpers.get_empty_config() #pylint: disable=E1101 + item_key = "out_blah" + special_config["outputs"].append({ + "key": item_key, + "label": "additional data", + "desc": "here some additional data", + "type": "folder-url", + "value": "null", + "timestamp": "2018-05-22T19:34:53.511Z" + }) + special_nodeports_configuration(special_config) + from simcore_sdk.nodeports.nodeports import PORTS + assert PORTS.outputs[item_key].get() is None # check emptyness + + # this triggers an upload to S3 + configuration change + original_path = str(Path(__file__).parent) + PORTS.outputs[item_key].set(original_path) + downloaded_folder_path = PORTS.outputs[item_key].get() + + original_files = [f for f in Path(original_path).glob("*") if f.is_file()] + downloaded_files = list(Path(downloaded_folder_path).glob("*")) + + assert len(original_files) == len(downloaded_files) - PORTS.outputs["out_15"].set(26) - assert PORTS.outputs["out_15"].get() == 26 + import filecmp + for i in range(len(original_files)): + assert filecmp.cmp(original_files[i], downloaded_files[i]) + @pytest.mark.skip(reason="SAN: this does not pass on travis but does on my workstation") def test_adding_new_ports(special_nodeports_configuration): @@ -51,7 +149,7 @@ def test_adding_new_ports(special_nodeports_configuration): "key": "in_15", "label": "additional data", "desc": "here some additional data", - "type": "int", + "type": "integer", "value": "15", "timestamp": "2018-05-22T19:34:53.511Z" }) @@ -61,7 +159,7 @@ def test_adding_new_ports(special_nodeports_configuration): assert PORTS.inputs[0].key == "in_15" assert PORTS.inputs[0].label == "additional data" assert PORTS.inputs[0].desc == "here some additional data" - assert PORTS.inputs[0].type == "int" + assert PORTS.inputs[0].type == "integer" assert PORTS.inputs[0].value == "15" assert PORTS.inputs[0].timestamp == "2018-05-22T19:34:53.511Z" @@ -81,7 +179,7 @@ def test_adding_new_ports(special_nodeports_configuration): assert PORTS.inputs[0].key == "in_15" assert PORTS.inputs[0].label == "additional data" assert PORTS.inputs[0].desc == "here some additional data" - assert PORTS.inputs[0].type == "int" + assert PORTS.inputs[0].type == "integer" assert PORTS.inputs[0].value == "15" assert PORTS.inputs[0].timestamp == "2018-05-22T19:34:53.511Z" # # new output @@ -102,7 +200,7 @@ def test_removing_ports(special_nodeports_configuration): "key": "in_15", "label": "additional data", "desc": "here some additional data", - "type": "int", + "type": "integer", "value": "15", "timestamp": "2018-05-22T19:34:53.511Z" }) @@ -110,7 +208,7 @@ def test_removing_ports(special_nodeports_configuration): "key": "in_17", "label": "additional data", "desc": "here some additional data", - "type": "int", + "type": "integer", "value": "15", "timestamp": "2018-05-22T19:34:53.511Z" }) @@ -118,7 +216,7 @@ def test_removing_ports(special_nodeports_configuration): "key": "out_15", "label": "additional data", "desc": "here some additional data", - "type": "int", + "type": "integer", "value": "15", "timestamp": "2018-05-22T19:34:53.511Z" }) @@ -126,7 +224,7 @@ def test_removing_ports(special_nodeports_configuration): "key": "out_17", "label": "additional data", "desc": "here some additional data", - "type": "int", + "type": "integer", "value": "15", "timestamp": "2018-05-22T19:34:53.511Z" }) @@ -144,7 +242,7 @@ def test_removing_ports(special_nodeports_configuration): assert PORTS.inputs[0].key == "in_17" assert PORTS.inputs[0].label == "additional data" assert PORTS.inputs[0].desc == "here some additional data" - assert PORTS.inputs[0].type == "int" + assert PORTS.inputs[0].type == "integer" assert PORTS.inputs[0].value == "15" assert PORTS.inputs[0].timestamp == "2018-05-22T19:34:53.511Z" @@ -157,7 +255,7 @@ def test_removing_ports(special_nodeports_configuration): assert PORTS.outputs[0].key == "out_15" assert PORTS.outputs[0].label == "additional data" assert PORTS.outputs[0].desc == "here some additional data" - assert PORTS.outputs[0].type == "int" + assert PORTS.outputs[0].type == "integer" assert PORTS.outputs[0].value == "15" assert PORTS.outputs[0].timestamp == "2018-05-22T19:34:53.511Z" @@ -175,7 +273,7 @@ def test_changing_inputs_error(default_nodeports_configuration): # pylint: disab new_input = DataItem(key="dummy_1", label="new label", desc="new description", - type="int", + type="integer", value="233", timestamp="2018-06-04T09:46:43:343") with pytest.raises(exceptions.ReadOnlyError, message="Expecting ReadOnlyError") as excinfo: @@ -196,7 +294,7 @@ def test_changing_outputs_error(default_nodeports_configuration): # pylint: disa new_output = DataItem(key="dummy_1", label="new label", desc="new description", - type="int", + type="integer", value="233", timestamp="2018-06-04T09:46:43:343") diff --git a/packages/simcore-sdk/tests/nodeports/test_postgres.py b/packages/simcore-sdk/tests/nodeports/test_postgres.py deleted file mode 100644 index d76f1930cbf..00000000000 --- a/packages/simcore-sdk/tests/nodeports/test_postgres.py +++ /dev/null @@ -1,45 +0,0 @@ -import logging - -import psycopg2 -import pytest -# pylint:disable=unused-import -from pytest_docker import docker_ip, docker_services - -# pylint:disable=redefined-outer-name - -def is_responsive(dbname, user, password, host, port): - """Check if there is a db""" - try: - conn = psycopg2.connect(dbname=dbname, user=user, password=password, host=host, port=port) - conn.close() - except psycopg2.OperationalError as _ex: - logging.exception("Connection to db failed") - return False - - return True - -@pytest.mark.enable_travis -def test_postgres(docker_ip, docker_services): - """wait for postgres to be up""" - - dbname = 'test' - user = 'user' - password = 'pwd' - host = docker_ip - port = docker_services.port_for('postgres', 5432) - # Wait until we can connect - docker_services.wait_until_responsive( - check=lambda: is_responsive(dbname, user, password, host, port), - timeout=30.0, - pause=1.0, - ) - - connection_ok = False - try: - conn = psycopg2.connect(dbname=dbname, user=user, password=password, host=host, port=port) - conn.close() - connection_ok = True - except psycopg2.OperationalError as _ex: - pass - - assert connection_ok diff --git a/packages/simcore-sdk/tests/nodeports/test_serialization.py b/packages/simcore-sdk/tests/nodeports/test_serialization.py index 404960411d8..3beacb81862 100644 --- a/packages/simcore-sdk/tests/nodeports/test_serialization.py +++ b/packages/simcore-sdk/tests/nodeports/test_serialization.py @@ -15,7 +15,7 @@ def test_default_json_decoding(default_nodeports_configuration): assert PORTS.inputs[1].key == "in_5" assert PORTS.inputs[1].label == "some number" assert PORTS.inputs[1].desc == "numbering things" - assert PORTS.inputs[1].type == "int" + assert PORTS.inputs[1].type == "integer" assert PORTS.inputs[1].value == "666" assert PORTS.inputs[1].timestamp == "2018-05-23T15:34:53.511Z" @@ -35,7 +35,7 @@ def test_default_json_encoding(default_nodeports_configuration): json_data = json.dumps(PORTS, cls=_NodeportsEncoder) default_config_path = os.path.join(os.path.dirname( - os.path.realpath(__file__)), r"../../src/simcore_sdk/config/connection_config.json") + os.path.realpath(__file__)), r"connection_config.json") with open(default_config_path) as file_ptr: original_json_data = file_ptr.read() assert json.loads(json_data) == json.loads(original_json_data) diff --git a/services/dy-2Dgraph/use-cases/Makefile b/services/dy-2Dgraph/use-cases/Makefile index 8cde23b59c9..81f91edab37 100644 --- a/services/dy-2Dgraph/use-cases/Makefile +++ b/services/dy-2Dgraph/use-cases/Makefile @@ -1,4 +1,3 @@ -PLATFORM := $(shell uname) VERSION := $(shell cat /proc/version) # SAN this is a hack so that docker-compose works in the linux virtual environment under Windows ifneq (,$(findstring Microsoft,$(VERSION))) From 64d2a8ab82897a8a0325af92a3117dc17aa1b93e Mon Sep 17 00:00:00 2001 From: Manuel Guidon <33161876+mguidon@users.noreply.github.com> Date: Thu, 5 Jul 2018 18:37:55 +0200 Subject: [PATCH 066/127] Celery stability (#158) Fixes long standing issue of missed heartbeats by the Celery workers --- Makefile | 4 ++-- packages/simcore-sdk/requirements.txt | 5 +++-- scripts/check_requirements.sh | 5 +++++ services/docker-compose.swarm.yml.template | 13 ++++++++++--- services/sidecar/requirements.txt | 3 ++- services/web/server/requirements/common.txt | 3 ++- services/web/server/requirements/devel.txt | 6 +++--- services/web/server/src/async_sio.py | 3 ++- services/web/server/src/comp_backend_api.py | 7 ++++--- 9 files changed, 33 insertions(+), 16 deletions(-) create mode 100644 scripts/check_requirements.sh diff --git a/Makefile b/Makefile index 9663537233a..7d5fca3056d 100644 --- a/Makefile +++ b/Makefile @@ -88,7 +88,7 @@ test: make run_test make after_test -PLATFORM_VERSION=3.2 +PLATFORM_VERSION=3.4 push_platform_images: ${DOCKER} login masu.speag.com @@ -100,7 +100,7 @@ push_platform_images: ${DOCKER} push masu.speag.com/simcore/workbench/director:${PLATFORM_VERSION} setup-check: .env .vscode/settings.json - + .env: .env-devel $(info ##### $< is newer than $@ ####) @diff -uN $@ $< diff --git a/packages/simcore-sdk/requirements.txt b/packages/simcore-sdk/requirements.txt index 8748941c5f6..81e021a64f1 100644 --- a/packages/simcore-sdk/requirements.txt +++ b/packages/simcore-sdk/requirements.txt @@ -1,4 +1,5 @@ psycopg2==2.7.4 -sqlalchemy==1.2.5 +sqlalchemy==1.2.8 networkx==2.1 -tenacity==4.12.0 \ No newline at end of file +tenacity==4.12.0 +mock==2.0.0 diff --git a/scripts/check_requirements.sh b/scripts/check_requirements.sh new file mode 100644 index 00000000000..92fd3194ef2 --- /dev/null +++ b/scripts/check_requirements.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +# lists all python packages used throughout all the repository that are not tied to a specific version + +find . \( -name "requirements.txt" -o -name "common.txt" -o -name "devel.txt" -o -name "prod.txt" \) | xargs -I % grep -v "\-r " % | sort |uniq | awk '$0 !~ /==/' diff --git a/services/docker-compose.swarm.yml.template b/services/docker-compose.swarm.yml.template index 358e3a57251..26546128ab5 100644 --- a/services/docker-compose.swarm.yml.template +++ b/services/docker-compose.swarm.yml.template @@ -4,7 +4,7 @@ version: '3.4' services: director: - image: masu.speag.com/simcore/workbench/director:3.2 + image: masu.speag.com/simcore/workbench/director:3.4 #image: services_director:latest dns: - 172.16.8.15 @@ -37,7 +37,7 @@ services: - '/var/run/docker.sock:/var/run/docker.sock' webserver: - image: masu.speag.com/simcore/workbench/webserver:3.2 + image: masu.speag.com/simcore/workbench/webserver:3.4 #image: services_webserver:latest dns: - 172.16.8.15 @@ -87,7 +87,7 @@ services: ports: - 18080:8080 sidecar: - image: masu.speag.com/simcore/workbench/sidecar:3.2 + image: masu.speag.com/simcore/workbench/sidecar:3.4 #image: services_sidecar:latest environment: - POSTGRES_ENDPOINT=postgres @@ -109,6 +109,13 @@ services: - /var/run/docker.sock:/var/run/docker.sock ports: - "8000:8000" + flower: + image: ondrejit/flower:latest + command: --broker=amqp://simcore:simcore@rabbit:5672 + ports: + - 5555:5555 + depends_on: + - rabbit volumes: input: output: diff --git a/services/sidecar/requirements.txt b/services/sidecar/requirements.txt index f6d627b0c15..3ac92b8edb0 100644 --- a/services/sidecar/requirements.txt +++ b/services/sidecar/requirements.txt @@ -1,5 +1,6 @@ -celery==4.2.0 +celery==4.1.0 docker==3.3.0 +kombu==4.1.0 minio==4.0.0 networkx==2.1 pika==0.10.0 diff --git a/services/web/server/requirements/common.txt b/services/web/server/requirements/common.txt index 09d4d5aa1b7..9f6955a6145 100644 --- a/services/web/server/requirements/common.txt +++ b/services/web/server/requirements/common.txt @@ -1,7 +1,8 @@ aio-pika==2.9.0 aiohttp==3.3.2 aiohttp-swagger==1.0.5 -celery==4.2.0 +celery==4.1.0 +kombu==4.1.0 minio==4.0.0 networkx==2.1 psycopg2==2.7.4 diff --git a/services/web/server/requirements/devel.txt b/services/web/server/requirements/devel.txt index 87625082252..fb602a26327 100644 --- a/services/web/server/requirements/devel.txt +++ b/services/web/server/requirements/devel.txt @@ -1,4 +1,4 @@ -r common.txt -aiohttp-devtools -pylint -autopep8 +aiohttp-devtools==0.10.1 +pylint==1.9.2 +autopep8==1.3.5 diff --git a/services/web/server/src/async_sio.py b/services/web/server/src/async_sio.py index 9c27d6e2e89..9fbfa1b0d96 100644 --- a/services/web/server/src/async_sio.py +++ b/services/web/server/src/async_sio.py @@ -131,7 +131,8 @@ async def list_S3_objects(sid, data): for obj in objects: obj_info = {} obj_info['path'] = obj.bucket_name + '/' + obj.object_name - obj_info['lastModified'] = obj.last_modified.isoformat() + # @maiz: this does not work, please review + #obj_info['lastModified'] = obj.last_modified.isoformat() obj_info['size'] = obj.size data_out.append(obj_info) await SIO.emit('listObjects', data=data_out, room=sid) diff --git a/services/web/server/src/comp_backend_api.py b/services/web/server/src/comp_backend_api.py index d95f7b92572..957ef70537d 100644 --- a/services/web/server/src/comp_backend_api.py +++ b/services/web/server/src/comp_backend_api.py @@ -98,9 +98,10 @@ async def start_pipeline(request): if is_io_node: for ofile in node["outputs"]: current_filename_on_s3 = ofile['value'] - new_filename = node_id +"/" + ofile['key'] # out_1 - # copy the file - io_files.append({ 'from' : current_filename_on_s3, 'to' : new_filename }) + if current_filename_on_s3: + new_filename = node_id +"/" + ofile['key'] # out_1 + # copy the file + io_files.append({ 'from' : current_filename_on_s3, 'to' : new_filename }) for link in links: if link['node1Id'] == node_id: From ad93fb98efa56791dc96e68feac4c6bef6eae499 Mon Sep 17 00:00:00 2001 From: Pedro Crespo <32402063+pcrespov@users.noreply.github.com> Date: Fri, 6 Jul 2018 13:32:55 +0200 Subject: [PATCH 067/127] Feature/fakeserver for authentication (#106) Part of issue #19: Creates new ``qxapp.dev`` namespace to include developing and debugging tools. Specifically: - a fake back-end with a RESTful API enabled via url http://localhost:8080/index.html?qxenv:dev.enableFakeSrv:true - moved all mockup data - enabled url settings (to activate qx environment flag feature ) in docker configurations - create a fake RESTful API and connect authentication - fake user/pass = your email/z43 - start rest resources base class under ``io.rest.Resource`` **Notice structural changes** - all Development, testing and debugging tools under ``qxapp.dev`` - ``qxapp.data.Fake`` renamed as ``qxapp.dev.fake.Data`` **Notice new environment variables switchable via URL** - http://localhost:8080/ - http://localhost:8080/index.html?qxenv:dev.enableFakeSrv:true - http://localhost:8080/index.html?qxenv:dev.enableFakeSrv:true&qxenv:dev.disableLogin:true --- .gitignore | 1 - .vscode-template/README.md | 2 +- .vscode-template/settings.json | 12 +- services/web/client/.gitignore | 7 + services/web/client/Dockerfile | 6 +- services/web/client/README.md | 33 +- services/web/client/scripts/clean.sh | 2 +- .../web/client/scripts/install-contrib.sh | 12 - .../client/source/class/qxapp/Application.js | 66 +- .../client/source/class/qxapp/Preferences.js | 10 +- .../web/client/source/class/qxapp/__init__.js | 2 +- .../login/{Standard.js => BasicView.js} | 65 +- .../qxapp/components/login/BasicWindow.js | 41 - .../class/qxapp/components/login/Form.js | 68 +- .../class/qxapp/components/login/ILogin.js | 4 - .../class/qxapp/components/login/Login.js | 13 +- .../qxapp/components/workbench/Workbench.js | 10 +- .../servicesCatalogue/ServicesCatalogue.js | 2 +- .../workbench/widgets/FileManager.js | 2 +- .../source/class/qxapp/data/model/Project.js | 60 + .../class/qxapp/desktop/LayoutManager.js | 2 +- .../class/qxapp/desktop/NavigationBar.js | 2 +- .../source/class/qxapp/desktop/PrjBrowser.js | 8 +- .../source/class/qxapp/dev/Placeholders.js | 42 + .../client/source/class/qxapp/dev/__init__.js | 3 + .../source/class/qxapp/dev/fake/Data.js | 1014 +++++++++++++++++ .../class/qxapp/{data => dev/fake}/Fake.js | 10 +- .../class/qxapp/dev/fake/srv/__init__.js | 11 + .../class/qxapp/dev/fake/srv/db/Project.js | 23 + .../class/qxapp/dev/fake/srv/db/User.js | 42 + .../dev/fake/srv/restapi/Authentication.js | 104 ++ .../qxapp/dev/fake/srv/restapi/Project.js | 0 .../class/qxapp/dev/fake/srv/restapi/User.js | 51 + .../source/class/qxapp/io/rest/Resource.js | 33 + .../utils/{Placeholders.js => Avatar.js} | 26 +- .../web/client/source/translation/readme.txt | 1 + 36 files changed, 1568 insertions(+), 222 deletions(-) rename services/web/client/source/class/qxapp/components/login/{Standard.js => BasicView.js} (66%) delete mode 100644 services/web/client/source/class/qxapp/components/login/BasicWindow.js delete mode 100644 services/web/client/source/class/qxapp/components/login/ILogin.js create mode 100644 services/web/client/source/class/qxapp/data/model/Project.js create mode 100644 services/web/client/source/class/qxapp/dev/Placeholders.js create mode 100644 services/web/client/source/class/qxapp/dev/__init__.js create mode 100644 services/web/client/source/class/qxapp/dev/fake/Data.js rename services/web/client/source/class/qxapp/{data => dev/fake}/Fake.js (98%) create mode 100644 services/web/client/source/class/qxapp/dev/fake/srv/__init__.js create mode 100644 services/web/client/source/class/qxapp/dev/fake/srv/db/Project.js create mode 100644 services/web/client/source/class/qxapp/dev/fake/srv/db/User.js create mode 100644 services/web/client/source/class/qxapp/dev/fake/srv/restapi/Authentication.js create mode 100644 services/web/client/source/class/qxapp/dev/fake/srv/restapi/Project.js create mode 100644 services/web/client/source/class/qxapp/dev/fake/srv/restapi/User.js create mode 100644 services/web/client/source/class/qxapp/io/rest/Resource.js rename services/web/client/source/class/qxapp/utils/{Placeholders.js => Avatar.js} (90%) diff --git a/.gitignore b/.gitignore index 3741e740b2d..62f6391b5ac 100644 --- a/.gitignore +++ b/.gitignore @@ -119,7 +119,6 @@ services/docker-compose.swarm.yml # mac .DS_Store - # key-words in filename to ignore them *secret* *ignore* diff --git a/.vscode-template/README.md b/.vscode-template/README.md index c2f22c94f1d..8e5eb852b15 100644 --- a/.vscode-template/README.md +++ b/.vscode-template/README.md @@ -1,6 +1,6 @@ # [vscode] configuration folder -Recommended workspace settings for [vscode]. +Recommended workspace settings for [vscode]. **PLEASE** keep this file clean and entries sorted alphabetically (at least first entry). Duplicate and rename this folder as ``.vscode``. diff --git a/.vscode-template/settings.json b/.vscode-template/settings.json index 86866236239..2d43d583ead 100644 --- a/.vscode-template/settings.json +++ b/.vscode-template/settings.json @@ -1,6 +1,8 @@ { - "python.linting.pylintEnabled": true, - "python.linting.enabled": true, + "editor.tabSize": 2, + "editor.insertSpaces": true, + "editor.detectIndentation": false, + "eslint.alwaysShowStatus": true, "files.associations": { ".*rc": "ini", ".env*": "ini", @@ -10,13 +12,11 @@ "files.insertFinalNewline": true, "files.trimFinalNewlines": true, "files.trimTrailingWhitespace": true, - "editor.tabSize": 2, - "editor.insertSpaces": true, - "editor.detectIndentation": false, - "eslint.alwaysShowStatus": true, "python.formatting.autopep8Args": [ "-max-line-length", "140" ], + "python.linting.pylintEnabled": true, + "python.linting.enabled": true, "[python]":{ "editor.detectIndentation" : false, "editor.tabSize" : 4 diff --git a/services/web/client/.gitignore b/services/web/client/.gitignore index a0b35445b86..c6c2d0f4f65 100644 --- a/services/web/client/.gitignore +++ b/services/web/client/.gitignore @@ -8,3 +8,10 @@ contrib* node_modules/* source/resource/iconfont/fontawesome5 source/resource/iconfont/material + +# generator outputs +/api/ +/test/ + +# translations for the moment ignored +*.po diff --git a/services/web/client/Dockerfile b/services/web/client/Dockerfile index afdb99704cf..7972443aa64 100644 --- a/services/web/client/Dockerfile +++ b/services/web/client/Dockerfile @@ -43,7 +43,7 @@ WORKDIR /home/scu # 1. qooxdoo-sdk from source repository. # - Provides framework and generator.py tools to overcome limits of qx-compiler -# - This is a temporary solution +# - TODO: This is a temporary solution RUN git clone --depth 1 https://github.com/qooxdoo/qooxdoo.git ${QOOXDOO_PATH} && \ sed 's/6.0.0-alpha[^"]*/'$(date +"6.0.0-alpha-%Y%m%d")'/' ${QOOXDOO_PATH}/framework/Manifest.json > ${QOOXDOO_PATH}/framework/Manifest.json.$$ && \ mv ${QOOXDOO_PATH}/framework/Manifest.json.$$ ${QOOXDOO_PATH}/framework/Manifest.json @@ -72,7 +72,7 @@ VOLUME /home/scu/client ENTRYPOINT ["./scripts/entrypoint.sh"] # 4. serves -CMD ["serve"] +CMD ["serve", "--set", "qx.allowUrlSettings=true"] # ------------------------------------------------------------------------------------------ FROM base-stage as build @@ -93,4 +93,4 @@ RUN qx compile --target=build ENTRYPOINT [] -CMD ["qx"] +CMD ["qx", "serve", "--set", "qx.allowUrlSettings=true"] diff --git a/services/web/client/README.md b/services/web/client/README.md index c853002825b..8b616895112 100644 --- a/services/web/client/README.md +++ b/services/web/client/README.md @@ -19,7 +19,7 @@ cd path/to/web/client # build images 'client_qx:dev' docker-compose build -# installs theme and fires qx serve. Open http://localhost:8080/ +# installs theme and fires qx serve. Open http://localhost:8080/index.html?qxenv:dev.enableFakeSrv:true docker-compose up # open a new console, and type this to stop @@ -27,6 +27,20 @@ cd path/to/web/client docker-compose down ``` +For a fake backend, open http://localhost:8080/index.html?qxenv:dev.enableFakeSrv:true otherwise http://localhost:8080/ + +## URL environmet variables + +client's development container ``qx serve --set qx.allowUrlSettings=true`` and the following develompent settings are defined: + + - ``dev.enableFakeSrv: true/[false]`` : enables/disables fake server. Used exclusively for development. + - ``dev.disableLogin: true/[false]`` : enables/disables login page. Used exclusively for development. + + Examples: + - http://localhost:8080/ + - http://localhost:8080/index.html?qxenv:dev.enableFakeSrv:true + - http://localhost:8080/index.html?qxenv:dev.enableFakeSrv:true&qxenv:dev.disableLogin:true + ## docker This project uses a multi-stage ``Dockerfile`` that targets images for *development* @@ -51,6 +65,23 @@ docker-compose -f docker-compose.yml -f docker-compose.production.yml up cd path/to/web/client docker-compose down ``` +### Issues with the Windows host + +Development version of image doesn't work on a windows host. Modified files in the mounted volume don't trigger container operating system notifications, so watchers don't react to changes. This is a known limitation of docker on windows. + +- TODO: implement helper script for this? + +#### Workaround: + + http://blog.subjectify.us/miscellaneous/2017/04/24/docker-for-windows-watch-bindings.html + +Open terminal in windows host and type: + +```bash +pip install docker-windows-volume-watcher +docker-volume-watcher +``` + TODO: update doc below diff --git a/services/web/client/scripts/clean.sh b/services/web/client/scripts/clean.sh index f35c762b5e0..ff25a64de15 100755 --- a/services/web/client/scripts/clean.sh +++ b/services/web/client/scripts/clean.sh @@ -20,5 +20,5 @@ rm ${FONTS_DIR}/material 2> /dev/null # Runs 'qx clean' pushd ${CLIENT_DIR}; -docker run -itd -v $(pwd):/home/node/client --entrypoint qx client_qx:latest clean +docker run -itd -v $(pwd):/home/node/client --entrypoint qx client_qx:dev clean popd; diff --git a/services/web/client/scripts/install-contrib.sh b/services/web/client/scripts/install-contrib.sh index fbc381bd205..65d511784ca 100755 --- a/services/web/client/scripts/install-contrib.sh +++ b/services/web/client/scripts/install-contrib.sh @@ -23,15 +23,3 @@ qx contrib install ITISFoundation/qx-iconfont-material qx contrib install ITISFoundation/qx-iconfont-fontawesome5 popd; - - -# Creates links in /source/resource/iconfont/ -mkdir -p ${FONTS_DIR} -cd ${FONTS_DIR} - - -# TODO: with the next release of qx-compiler these lines can be removed -#rm * -#ln -s ../../../contrib/ITISFoundation_qx-iconfont-fontawesome5_v0.0.2/source/resource/iconfont/fontawesome5/ fontawesome5 -#ln -s ../../../contrib/ITISFoundation_qx-iconfont-material_v0.0.1/source/resource/iconfont/material/ material -#ls -l diff --git a/services/web/client/source/class/qxapp/Application.js b/services/web/client/source/class/qxapp/Application.js index 71b05646308..138e8546a07 100644 --- a/services/web/client/source/class/qxapp/Application.js +++ b/services/web/client/source/class/qxapp/Application.js @@ -5,7 +5,7 @@ License: MIT license Authors: undefined - +TODO: change name of app: osparc instead of qxapp ************************************************************************ */ /** @@ -18,15 +18,8 @@ qx.Class.define("qxapp.Application", { extend: qx.application.Standalone, - include: [qx.locale.MTranslation], - /* - ***************************************************************************** - MEMBERS - ***************************************************************************** - */ - members: { __layoutManager: null, @@ -43,34 +36,53 @@ qx.Class.define("qxapp.Application", { if (qx.core.Environment.get("qx.debug")) { // support native logging capabilities, e.g. Firebug for Firefox qx.log.appender.Native; - } - - /* - TODO: change name of app: osparc instead of qxapp - */ - // Document is the application root - let doc = this.getRoot(); + if (qx.core.Environment.get("dev.enableFakeSrv")) { + console.debug("Fake server enabled"); + qxapp.dev.fake.srv.restapi.User; + qxapp.dev.fake.srv.restapi.Authentication; + } + } // openning web socket qxapp.wrappers.WebSocket.getInstance().connect(); + if (qx.core.Environment.get("dev.disableLogin")) { + console.debug("Login was disabled"); + this.__startDesktop(); + } else { + this.__startLogin(); + } + }, + + __startDesktop: function() { + this.__layoutManager = new qxapp.desktop.LayoutManager(); + this.getRoot().add(this.__layoutManager, { + left: "0%", + top: "0%", + height: "100%", + width: "100%" + }); + }, + + __startLogin: function() { let login = new qxapp.components.login.Login(); + login.addListener("login", function(e) { - // FIXME: For the moment, password is not checked - // if (e.getData() === true) { - this.__layoutManager = new qxapp.desktop.LayoutManager(); - doc.remove(login); - doc.add(this.__layoutManager, { - left: "0%", - top: "0%", - height: "100%", - width: "100%" - }); - // } + // TODO: need to init user-id and token in data layer + if (e.getData() === true) { + this.getRoot().remove(login); + this.__startDesktop(); + } else { + console.log("Invalid user or password."); + // TODO: some kind of notification as in + // http://www.qooxdoo.org/5.0.1/pages/website/tutorial_web_developers.html + // flash("Invalid user name or password"); + } }, this); - doc.add(login, { + // TODO: center in document qx.ui.layout.Canvas + this.getRoot().add(login, { left: "10%", top: "10%", height: "30%" diff --git a/services/web/client/source/class/qxapp/Preferences.js b/services/web/client/source/class/qxapp/Preferences.js index 2917660e03f..b11ca76ca36 100644 --- a/services/web/client/source/class/qxapp/Preferences.js +++ b/services/web/client/source/class/qxapp/Preferences.js @@ -56,7 +56,7 @@ qx.Class.define("qxapp.Preferences", { }, __getGeneral: function() { - const iconUrl = qxapp.utils.Placeholders.getIcon("ion-ios-settings", 32); + const iconUrl = qxapp.dev.Placeholders.getIcon("ion-ios-settings", 32); let page = this.__createPage("General", iconUrl); // content @@ -78,7 +78,7 @@ qx.Class.define("qxapp.Preferences", { page.add(email); let img = new qx.ui.basic.Image().set({ - source: qxapp.utils.Placeholders.getGravatar(email.getValue() || "bizzy@itis.ethz.ch", 200) + source: qxapp.utils.Avatar.getUrl(email.getValue() || "bizzy@itis.ethz.ch", 200) }); page.add(img); @@ -86,7 +86,7 @@ qx.Class.define("qxapp.Preferences", { }, __getSecurity: function() { - const iconUrl = qxapp.utils.Placeholders.getIcon("fa-lock", 32); + const iconUrl = qxapp.dev.Placeholders.getIcon("fa-lock", 32); let page = this.__createPage("Security", iconUrl); // content @@ -112,7 +112,7 @@ qx.Class.define("qxapp.Preferences", { }, __getDisplay: function() { - const iconUrl = qxapp.utils.Placeholders.getIcon("fa-eye", 32); + const iconUrl = qxapp.dev.Placeholders.getIcon("fa-eye", 32); let page = this.__createPage("Display", iconUrl); let themes = qx.Theme.getAll(); @@ -146,7 +146,7 @@ qx.Class.define("qxapp.Preferences", { }, __getAdvanced: function() { - const iconUrl = qxapp.utils.Placeholders.getIcon("fa-rebel", 32); + const iconUrl = qxapp.dev.Placeholders.getIcon("fa-rebel", 32); let page = this.__createPage("Advanced", iconUrl); return page; diff --git a/services/web/client/source/class/qxapp/__init__.js b/services/web/client/source/class/qxapp/__init__.js index 4e637f9e3bd..f9c76d1179e 100644 --- a/services/web/client/source/class/qxapp/__init__.js +++ b/services/web/client/source/class/qxapp/__init__.js @@ -1,6 +1,6 @@ /**

app API Documentation

* - * Replace this text with an appropriate overview and introduction to your + * TODO: Replace this text with an appropriate overview and introduction to your * application. * */ diff --git a/services/web/client/source/class/qxapp/components/login/Standard.js b/services/web/client/source/class/qxapp/components/login/BasicView.js similarity index 66% rename from services/web/client/source/class/qxapp/components/login/Standard.js rename to services/web/client/source/class/qxapp/components/login/BasicView.js index c09b7abf2ba..5cc01682d92 100644 --- a/services/web/client/source/class/qxapp/components/login/Standard.js +++ b/services/web/client/source/class/qxapp/components/login/BasicView.js @@ -4,12 +4,12 @@ * Features: * - Login form * - Some decoration - * + * - HTTP requests */ /* eslint no-warning-comments: "off" */ -qx.Class.define("qxapp.components.login.Standard", { +qx.Class.define("qxapp.components.login.BasicView", { extend: qx.ui.container.Composite, @@ -41,7 +41,6 @@ qx.Class.define("qxapp.components.login.Standard", { */ members: { __form: null, - __token: null, __info: null, __createHeader: function() { @@ -108,33 +107,15 @@ qx.Class.define("qxapp.components.login.Standard", { }, __onSubmitLogin: function(e) { - // this is user's input var loginData = e.getData(); - let auth = new qx.io.request.authentication.Basic( - loginData.user, - loginData.password); - - // TODO: encapsulate entire request in separate class - // let req = new qxapp.io.request.Login(loginData()); - - // let serializer = function (object) { - // if (object instanceof qx.ui.form.ListItem) { - // return object.getLabel(); - // } - // }; - // console.debug("You are sending: " + - // qx.util.Serializer.toUriParameter(model, serializer)); - - // Requests authentication to server let req = new qx.io.request.Xhr(); req.set({ - // qx.io.request.authentication sets headers. - // Can send user+passorwd or user=token w/o password!? - authentication: auth, - url: "/login", - method: "POST", - requestData: qx.util.Serializer.toJson(loginData) + authentication: new qx.io.request.authentication.Basic( + loginData.username, + loginData.password), + url: "api/v1.0/token", + method: "GET" }); req.addListener("success", this.__onLoginSucceed, this); @@ -143,31 +124,23 @@ qx.Class.define("qxapp.components.login.Standard", { }, __onLoginSucceed: function(e) { - let req = e.getTarget(); - console.debug("Everything went fine!!"); - console.debug("status :", req.getStatus()); - console.debug("phase :", req.getPhase()); - console.debug("response: ", req.getResponse()); + const req = e.getTarget(); + console.debug("Login suceeded:", "status :", req.getStatus(), "phase :", req.getPhase(), "response: ", req.getResponse()); - this.__info = req.getResponse(); - this.__token = req.getResponse().userToken; - - // TODO: implement token-based authentication: we can request token and from that moment on, - // just use that... - - // TODO: fire success logged in and store token?? + qxapp.io.rest.Resource.setAutheticationHeader(req.getResponse().token, null); this.fireDataEvent("login", true); }, __onLoginFailed: function(e) { - // Display error page! - let req = e.getTarget(); - console.debug("Something went wrong!!"); - console.debug("status :", req.getStatus()); - console.debug("phase :", req.getPhase()); - console.debug("response: ", req.getResponse()); - - // TODO: invalidate form view and flash error! + const req = e.getTarget(); + console.debug("Login failed:", "status :", req.getStatus(), "phase :", req.getPhase(), "response: ", req.getResponse()); + + let msg = null; + if (req.getStatus() != 401) { + msg = "Unable to login. Server returned " + String(req.getStatus()); + } + this.__form.flashInvalidLogin(msg); + this.fireDataEvent("login", false); } diff --git a/services/web/client/source/class/qxapp/components/login/BasicWindow.js b/services/web/client/source/class/qxapp/components/login/BasicWindow.js deleted file mode 100644 index 3d3e75d41f3..00000000000 --- a/services/web/client/source/class/qxapp/components/login/BasicWindow.js +++ /dev/null @@ -1,41 +0,0 @@ -/* global qxapp */ - -qx.Class.define("qxapp.components.login.BasicWindow", { - extend: qx.ui.window.Window, - - construct: function() { - this.base(); - - this.setCaption("Login"); - this.setShowMinimize(false); - this.setShowMaximize(false); - this.setShowClose(false); - - this.setLayout(new qx.ui.layout.VBox()); - - let form = new qx.ui.form.Form(); - let userName = new qx.ui.form.TextField(); - // userName.setRequired(true); - form.add(userName, "Name"); - let password = new qx.ui.form.PasswordField(); - // password.setRequired(true); - form.add(password, "Password"); - let sendButton = new qx.ui.form.Button("Login"); - let scope = this; - sendButton.addListener("execute", function() { - if (form.validate()) { - if (qxapp.utils.Utils.inHouse(form.getGroups()[0].items[1].getValue())) { - this.fireDataEvent("Login", true); - this.close(); - } - } - }, scope); - form.addButton(sendButton); - - this.add(new qx.ui.form.renderer.Single(form)); - }, - - events: { - "Login": "qx.event.type.Event" - } -}); diff --git a/services/web/client/source/class/qxapp/components/login/Form.js b/services/web/client/source/class/qxapp/components/login/Form.js index 23c7a03b514..c1138004cc1 100644 --- a/services/web/client/source/class/qxapp/components/login/Form.js +++ b/services/web/client/source/class/qxapp/components/login/Form.js @@ -12,26 +12,34 @@ qx.Class.define("qxapp.components.login.Form", { construct: function() { this.base(arguments); - // Items - let username = new qx.ui.form.TextField(); - // TODO: add qx.util.Validate.checkEmail // TODO: add also login with user-id - username.setRequired(true); - username.setPlaceholder("email"); - this.add(username, "User", null, "user", null); + // FIXME: WARNING add [DOM] Password field is not contained in a form: (More info: https://goo.gl/9p2vKq) + + let username = new qx.ui.form.TextField(); + username.set({ + required: true, + placeholder: this.tr("Your email address"), + tabIndex: 1 + }); + this.add(username, "", qx.util.Validate.email(), "username", null); - // FIXME: add [DOM] Password field is not contained in a form: (More info: https://goo.gl/9p2vKq) let password = new qx.ui.form.PasswordField(); - password.setRequired(true); - this.add(password, "Password", null, "password", null); + password.set({ + required: true, + placeholder: this.tr("Your password"), + tabIndex: username.getTabIndex()+1 + }); + password.setPlaceholder(); + this.add(password, "", null, "password", null); // TODO: // let remember = new qx.ui.form.CheckBox(); // this.add(remember, "Remember Me", null, "remember"); // Buttons - let submit = new qx.ui.form.Button("Sign in"); + let submit = new qx.ui.form.Button(this.tr("Sign in")); this.addButton(submit); + submit.setTabIndex(password.getTabIndex()+1); // data binding this.__controller = new qx.data.controller.Form(null, this); @@ -41,10 +49,8 @@ qx.Class.define("qxapp.components.login.Form", { }, events: { - /** Whenever the login form is submitted - * - * Event data: The new text value of the field. - */ + + // Whenever the login form is submitted: Event data: The new text value of the field. "submit": "qx.event.type.Data" }, @@ -52,24 +58,34 @@ qx.Class.define("qxapp.components.login.Form", { __model: null, __controller: null, - __onSubmitButtonExecuted : function() { + __onSubmitButtonExecuted: function() { if (this.validate()) { - // copy current model and fire event this.fireDataEvent("submit", this.getData()); } }, - getData : function() { - /* - let serializer = function (object) { - if (object instanceof qx.ui.form.ListItem) { - return object.getLabel(); - } - }; - const data = qx.util.Serializer.toJson(this.__model, serializer); - */ + flashInvalidLogin: function(msg = null) { + let username = this.getItems().user; + let password = this.getItems().password; + + [username, password].forEach(w => { + w.set({ + invalidMessage: msg === null ? this.tr("Invalid user or password") : msg, + valid: false + }); + }); + }, + + getData: function() { + // let serializer = function (object) { + // if (object instanceof qx.ui.form.ListItem) { + // return object.getLabel(); + // } + // }; + // const data = qx.util.Serializer.toJson(this.__model, serializer); + const data = { - username: this.__model.getUser(), + username: this.__model.getUsername(), password: this.__model.getPassword() }; return data; diff --git a/services/web/client/source/class/qxapp/components/login/ILogin.js b/services/web/client/source/class/qxapp/components/login/ILogin.js deleted file mode 100644 index 536b8c1f9eb..00000000000 --- a/services/web/client/source/class/qxapp/components/login/ILogin.js +++ /dev/null @@ -1,4 +0,0 @@ -/** - * - * TODO: Create common interface for all types of login. e.g. openID or NIH or standard - */ diff --git a/services/web/client/source/class/qxapp/components/login/Login.js b/services/web/client/source/class/qxapp/components/login/Login.js index b8271e01e93..1b5d3047f11 100644 --- a/services/web/client/source/class/qxapp/components/login/Login.js +++ b/services/web/client/source/class/qxapp/components/login/Login.js @@ -1,7 +1,10 @@ -/* global qxapp */ - +/* global qxapp +*/ /* eslint no-warning-comments: "off" */ +/* + TODO: Create common interface for all types of login. e.g. openID or NIH or standard +*/ qx.Class.define("qxapp.components.login.Login", { extend: qx.ui.container.Composite, @@ -9,7 +12,7 @@ qx.Class.define("qxapp.components.login.Login", { this.base(arguments, new qx.ui.layout.HBox(30)); // standard login. i.e. using app database - let platformLogin = new qxapp.components.login.Standard(); + let platformLogin = new qxapp.components.login.BasicView(); this.add(platformLogin, { width: "60%" }); @@ -43,14 +46,14 @@ qx.Class.define("qxapp.components.login.Login", { let loginGroup = new qx.ui.container.Composite(layout); let loginOpenId = new qx.ui.form.Button().set({ - label: "Continue with openID" + label: this.tr("Continue with openID") // FIXME: icon size // icon: "https://upload.wikimedia.org/wikipedia/commons/8/88/Openid.svg", }); loginGroup.add(loginOpenId); let loginNIH = new qx.ui.form.Button().set({ - label: "Continue with NIH" + label: this.tr("Continue with NIH") // FIXME: icon size // icon: "qxapp/nih-419.png", }); diff --git a/services/web/client/source/class/qxapp/components/workbench/Workbench.js b/services/web/client/source/class/qxapp/components/workbench/Workbench.js index 221a872fbf3..682046a9e2d 100644 --- a/services/web/client/source/class/qxapp/components/workbench/Workbench.js +++ b/services/web/client/source/class/qxapp/components/workbench/Workbench.js @@ -152,7 +152,7 @@ qx.Class.define("qxapp.components.workbench.Workbench", { }, __getPlusButton: function() { - const icon = "@FontAwesome5Solid/plus/32"; // qxapp.utils.Placeholders.getIcon("fa-plus", 32); + const icon = "@FontAwesome5Solid/plus/32"; // qxapp.dev.Placeholders.getIcon("fa-plus", 32); let plusButton = new qx.ui.form.Button(null, icon); plusButton.set({ width: BUTTON_SIZE, @@ -170,7 +170,7 @@ qx.Class.define("qxapp.components.workbench.Workbench", { }, __getPlusMenuButton: function() { - const icon = "@FontAwesome5Solid/plus/32"; // qxapp.utils.Placeholders.getIcon("fa-plus", 32); + const icon = "@FontAwesome5Solid/plus/32"; // qxapp.dev.Placeholders.getIcon("fa-plus", 32); let plusButton = new qx.ui.form.MenuButton(null, icon, this.__getServicesMenu()); plusButton.set({ width: BUTTON_SIZE, @@ -929,17 +929,17 @@ qx.Class.define("qxapp.components.workbench.Workbench", { }, __getProducers: function() { - const producers = qxapp.data.Fake.getProducers(); + const producers = qxapp.dev.fake.Data.getProducers(); return this.__createMenuFromList(producers); }, __getComputationals: function() { - const computationals = qxapp.data.Fake.getComputationals(); + const computationals = qxapp.dev.fake.Data.getComputationals(); return this.__createMenuFromList(computationals); }, __getAnalyses: function() { - const analyses = qxapp.data.Fake.getAnalyses(); + const analyses = qxapp.dev.fake.Data.getAnalyses(); return this.__createMenuFromList(analyses); } } diff --git a/services/web/client/source/class/qxapp/components/workbench/servicesCatalogue/ServicesCatalogue.js b/services/web/client/source/class/qxapp/components/workbench/servicesCatalogue/ServicesCatalogue.js index 62e8ff2a572..e27268a91d9 100644 --- a/services/web/client/source/class/qxapp/components/workbench/servicesCatalogue/ServicesCatalogue.js +++ b/services/web/client/source/class/qxapp/components/workbench/servicesCatalogue/ServicesCatalogue.js @@ -32,7 +32,7 @@ qx.Class.define("qxapp.components.workbench.servicesCatalogue.ServicesCatalogue" let store = qxapp.data.Store.getInstance(); this.__allServices = store.getBuiltInServices(); - // this.__allServices = this.__allServices.concat(qxapp.data.Fake.getFakeServices()); + // this.__allServices = this.__allServices.concat(qxapp.qxapp.dev.fake.Data.getServices()); store.addListener("servicesRegistered", e => { this.__addNewData(e.getData()); }, this); diff --git a/services/web/client/source/class/qxapp/components/workbench/widgets/FileManager.js b/services/web/client/source/class/qxapp/components/workbench/widgets/FileManager.js index 25c331c1afa..89a2573e362 100644 --- a/services/web/client/source/class/qxapp/components/workbench/widgets/FileManager.js +++ b/services/web/client/source/class/qxapp/components/workbench/widgets/FileManager.js @@ -196,7 +196,7 @@ qx.Class.define("qxapp.components.workbench.widgets.FileManager", { this.__uploadFile(file, url); }, this); const data = { - bucketName: qxapp.data.Fake.getS3PublicBucketName(), + bucketName: qxapp.qxapp.dev.fake.Data.getS3PublicBucketName(), fileName: file.name }; socket.emit("presignedUrl", data); diff --git a/services/web/client/source/class/qxapp/data/model/Project.js b/services/web/client/source/class/qxapp/data/model/Project.js new file mode 100644 index 00000000000..8aa9624cf74 --- /dev/null +++ b/services/web/client/source/class/qxapp/data/model/Project.js @@ -0,0 +1,60 @@ +qx.Class.define("qxapp.data.model.Project", + { + extend: qx.core.Object, + + properties: { + id: { + check: "String", + event: "changeId", + nullable: true + }, + + name: { + check: "String", + init: "Unnamed" + }, + + description: { + check: "String", + nullable: true + }, + + thumbnail: { + check: "String", + nullable: true + }, + + createdOn: { + check: "Date", + nullable: true + } + + }, + + members: { + + toString: function() { + // return qx.dev.Debug.debugProperties(this, 3, false, 2); + let newLine = "\n"; + let indent = 4; + let html = false; + const maxLevel = 5; + let message = ""; + + let properties = this.constructor.$$properties; + for (let key in properties) { + message += newLine; + // print out the indentation + for (var j = 0; j < indent; j++) { + message += "-"; + } + message += " " + key + ": " + this.toString( + this["get" + qx.lang.String.firstUp(key)](), maxLevel - 1, html, indent + 1 + ); + } + return message; + } + + } + + }); diff --git a/services/web/client/source/class/qxapp/desktop/LayoutManager.js b/services/web/client/source/class/qxapp/desktop/LayoutManager.js index fbc42f0f0d7..96f453455e0 100644 --- a/services/web/client/source/class/qxapp/desktop/LayoutManager.js +++ b/services/web/client/source/class/qxapp/desktop/LayoutManager.js @@ -27,7 +27,7 @@ qx.Class.define("qxapp.desktop.LayoutManager", { this.__prjStack.setSelection([this.__PrjEditor]); this.__navBar.setCurrentStatus(e.getData().getName()); // this.__PrjEditor.showSettings(false); - this.__PrjEditor.setData(qxapp.data.Fake.getPrjData(e.getData().getPrjId())); + this.__PrjEditor.setData(qxapp.dev.fake.Data.getPrjData(e.getData().getPrjId())); }, this); }, diff --git a/services/web/client/source/class/qxapp/desktop/NavigationBar.js b/services/web/client/source/class/qxapp/desktop/NavigationBar.js index 391df597af4..2986a08ce9b 100644 --- a/services/web/client/source/class/qxapp/desktop/NavigationBar.js +++ b/services/web/client/source/class/qxapp/desktop/NavigationBar.js @@ -44,7 +44,7 @@ qx.Class.define("qxapp.desktop.NavigationBar", { let userBtn = this.__createUserBtn(); userBtn.set(commonBtnSettings); - userBtn.setIcon(qxapp.utils.Placeholders.getGravatar(dummyUser + "@itis.ethz.ch", 32)); + userBtn.setIcon(qxapp.utils.Avatar.getUrl(dummyUser + "@itis.ethz.ch", 32)); this.add(userBtn); diff --git a/services/web/client/source/class/qxapp/desktop/PrjBrowser.js b/services/web/client/source/class/qxapp/desktop/PrjBrowser.js index c48534e255c..16eadde0134 100644 --- a/services/web/client/source/class/qxapp/desktop/PrjBrowser.js +++ b/services/web/client/source/class/qxapp/desktop/PrjBrowser.js @@ -111,14 +111,14 @@ qx.Class.define("qxapp.desktop.PrjBrowser", { * Mockup data */ getFakeUserModel: function() { - let data = qxapp.data.Fake.getUserProjects(3, "bizzy"); - data.insertAt(0, qxapp.data.Fake.NEW_PROJECT_DESCRIPTOR); + let data = qxapp.dev.fake.Data.getUserProjects(3, "bizzy"); + data.insertAt(0, qxapp.dev.fake.Data.NEW_PROJECT_DESCRIPTOR); return data; }, getFakeTempModel: function() { - let data = qxapp.data.Fake.getTemplateProjects(); - data.insertAt(0, qxapp.data.Fake.NEW_PROJECT_DESCRIPTOR); + let data = qxapp.dev.fake.Data.getTemplateProjects(); + data.insertAt(0, qxapp.dev.fake.Data.NEW_PROJECT_DESCRIPTOR); return data; } diff --git a/services/web/client/source/class/qxapp/dev/Placeholders.js b/services/web/client/source/class/qxapp/dev/Placeholders.js new file mode 100644 index 00000000000..81b6bb77dd1 --- /dev/null +++ b/services/web/client/source/class/qxapp/dev/Placeholders.js @@ -0,0 +1,42 @@ +/* eslint new-cap: [2, {capIsNewExceptions: ["B", "D", "J", "K", "L", "MD5"]}] */ +/* eslint operator-assignment: ["off"] */ + +qx.Class.define("qxapp.dev.Placeholders", { + type: "static", + + statics: { + + /** + * Returns URL to an icon in collection + * + * See https://imgplaceholder.com/ + */ + getIcon: function(iconId, width, height = null) { + // see https://imgplaceholder.com/ + height = (height === null) ? width : height; + + const prefix = "https://imgplaceholder.com/"; + const shape = width + "x" + height; + const url = prefix + shape + "/transparent/757575/" + iconId; + + // e.g. // https://imgplaceholder.com/128x128/transparent/757575/fa-user + return url; + }, + + /** + * Returns URL to a rectangular place-holder image of given + * dimensions. + * + * See https://placeholder.com/ + */ + getImage: function(width, height = null) { + // + + height = (height === null) ? width : height; + const url = "//via.placeholder.com/" + width + "x" + height; + + // e.g. http://via.placeholder.com/350x150 + return url; + } + } +}); diff --git a/services/web/client/source/class/qxapp/dev/__init__.js b/services/web/client/source/class/qxapp/dev/__init__.js new file mode 100644 index 00000000000..6b574aaa5c7 --- /dev/null +++ b/services/web/client/source/class/qxapp/dev/__init__.js @@ -0,0 +1,3 @@ +/** + * Development, testing and debugging tools. + */ diff --git a/services/web/client/source/class/qxapp/dev/fake/Data.js b/services/web/client/source/class/qxapp/dev/fake/Data.js new file mode 100644 index 00000000000..5ce5d0cea81 --- /dev/null +++ b/services/web/client/source/class/qxapp/dev/fake/Data.js @@ -0,0 +1,1014 @@ +/** + * Collection of free function with fake data for testing + * + * TODO: Use faker https://scotch.io/tutorials/generate-fake-data-for-your-javascript-applications-using-faker + */ + +/* global window */ + +qx.Class.define("qxapp.dev.fake.Data", { + type: "static", + + statics: { + + /** + * Represents an empty project descriptor + */ + NEW_PROJECT_DESCRIPTOR: qx.data.marshal.Json.createModel({ + name: "New Project", + description: "Empty", + thumbnail: "https://imgplaceholder.com/171x96/cccccc/757575/ion-plus-round", + created: null, + prjId: null + }), + + getUsername: function() { + return "bizzy"; + }, + + getS3PublicBucketName: function() { + return "simcore"; + }, + + getObjectList: function() { + const objects = [ + { + "path": "simcore0/file0", + "lastModified": "blah", + "size": 10 + }, { + "path": "simcore0/bat/two/three/four/file1", + "lastModified": "blah", + "size": 11 + }, { + "path": "simcore/file2", + "lastModified": "blah", + "size": 12 + }, { + "path": "simcore/file3", + "lastModified": "blah", + "size": 13 + }, { + "path": "simcore2/file4", + "lastModified": "blah2", + "size": 14 + }, { + "path": "simcore2/file5", + "lastModified": "blah2", + "size": 15 + }, { + "path": "simcore0/one/file6", + "lastModified": "blah", + "size": 16 + }, { + "path": "simcore0/one/two/three/four/file7", + "lastModified": "blah", + "size": 17 + } + ]; + return objects; + }, + + /** + * Returns a qx array with projects associated to a user + */ + getUserProjects: function(count = 3, username = "bizzy") { + let rawData = []; + + for (var i = 0; i < count; i++) { + var item = qx.data.marshal.Json.createModel({ + name: "Project #" + (i + 1), + description: "This is a short description by " + username, + thumbnail: null, + created: null, + prjId: null + }); + rawData.push(item); + } + + // A wrapper around raw array to make it "bindable" + var data = new qx.data.Array(rawData); + return data; + }, + + getTemplateProjects: function() { + let rawData = []; + + let item1 = qx.data.marshal.Json.createModel({ + name: "Sleepers", + description: "Sample used for the unidirectional pipelining", + thumbnail: null, + created: null, + prjId: "temp1" + }); + rawData.push(item1); + + let item2 = qx.data.marshal.Json.createModel({ + name: "Single Cell", + description: "Colleen Clancy use case", + thumbnail: null, + created: null, + prjId: "temp2" + }); + rawData.push(item2); + + // A wrapper around raw array to make it "bindable" + var data = new qx.data.Array(rawData); + return data; + }, + + getPrjData: function(prjId) { + switch (prjId) { + case "temp1": { + let tempData = this.getTemp1Data(); + return tempData; + } + case "temp2": { + let tempData = this.getTemp2Data(); + return tempData; + } + } + return null; + }, + + getTemp1Data: function() { + const nNodes = 8; + let nodeIds = []; + for (let i=0; i ({ + key: k.toLowerCase(), + label: k + }) + ) + + }, + "defaultValue": "c" + }, { + "key": "in_9", + "label": "solverMode", + "description": "Solver Mode", + "type": "string", + "widget": "selectBox", + "cfg": { + structure: + ["0D", "1D", "2D"].map( + k => ({ + key: k.toLowerCase(), + label: k + }) + ) + + }, + "defaultValue": "0d" + }], + "outputs": [{ + "key": "out_1", + "label": "csv-url", + "description": "csv-url", + "type": "csv-url", + "defaultValue": null + }], + "settings": [] + }, { + "key": "Computational2", + "tag": "1.0", + "name": "Computational 2", + "description": "Computational 2", + "inputs": [{ + "key": "in_1", + "label": "Scene", + "description": "Scene", + "type": "scene", + "defaultValue": null + }], + "outputs": [{ + "key": "out_1", + "label": "Numbers", + "description": "Other numbers", + "type": "integer", + "defaultValue": null + }], + "settings": [] + }, { + "key": "masu.speag.com/simcore/services/comp/sleeper", + "tag": "0.0.1", + "name": "Sleeper", + "description": "Sleeper", + "inputs": [{ + "key": "in_1", + "label": "File-url", + "description": "File-url", + "type": "file-url", + "defaultValue": null + }, { + "key": "in_2", + "label": "Number", + "description": "Number", + "type": "integer", + "defaultValue": 0 + }, { + "key": "in_3", + "label": "Number", + "description": "Sleep extra sec", + "type": "integer", + "defaultValue": 0 + }], + "outputs": [{ + "key": "out_1", + "label": "File-url", + "description": "File-url", + "type": "file-url", + "defaultValue": null + }, { + "key": "out_2", + "label": "Number", + "description": "Number", + "type": "integer", + "defaultValue": 0 + }], + "settings": [] + }]; + return computationals; + }, + + getAnalyses: function() { + const analyses = [{ + "key": "jupyter-base-notebook", + "tag": "1.0", + "name": "Jupyter", + "description": "Jupyter", + "inputs": [{ + "key": "in_1", + "label": "Number", + "description": "Number", + "type": "integer", + "defaultValue": null + }], + "outputs": [], + "settings": [], + "viewer": { + "ip": "http://" + window.location.hostname, + "port": null + } + }, { + "key": "Analysis2", + "tag": "1.0", + "name": "Analysis 2", + "description": "Analysis 2", + "inputs": [{ + "key": "in_1", + "label": "Number", + "description": "Number", + "type": "integer", + "defaultValue": null + }], + "outputs": [], + "settings": [] + }, { + "key": "csv-table-graph", + "tag": "1.0", + "name": "CSV Viewer", + "description": "CSV Viewer", + "inputs": [{ + "key": "in_1", + "label": "csv-url", + "description": "csv-url", + "type": "file-url", + "defaultValue": null + }], + "outputs": [], + "settings": [], + "viewer": { + "ip": "http://" + window.location.hostname, + "port": null + } + }]; + return analyses; + } + } // statics + +}); diff --git a/services/web/client/source/class/qxapp/data/Fake.js b/services/web/client/source/class/qxapp/dev/fake/Fake.js similarity index 98% rename from services/web/client/source/class/qxapp/data/Fake.js rename to services/web/client/source/class/qxapp/dev/fake/Fake.js index 4ce9f46b619..2bec4d7da92 100644 --- a/services/web/client/source/class/qxapp/data/Fake.js +++ b/services/web/client/source/class/qxapp/dev/fake/Fake.js @@ -6,7 +6,7 @@ /* global window */ -qx.Class.define("qxapp.data.Fake", { +qx.Class.define("qxapp.dev.fake.Data", { type: "static", statics: { @@ -838,11 +838,11 @@ qx.Class.define("qxapp.data.Fake", { return temp2Data; }, - getFakeServices: function() { + getServices: function() { let fakeServices = []; - Array.prototype.push.apply(fakeServices, qxapp.data.Fake.getProducers()); - Array.prototype.push.apply(fakeServices, qxapp.data.Fake.getComputationals()); - Array.prototype.push.apply(fakeServices, qxapp.data.Fake.getAnalyses()); + Array.prototype.push.apply(fakeServices, qxapp.qxapp.dev.fake.Data.getProducers()); + Array.prototype.push.apply(fakeServices, qxapp.qxapp.dev.fake.Data.getComputationals()); + Array.prototype.push.apply(fakeServices, qxapp.qxapp.dev.fake.Data.getAnalyses()); return fakeServices; }, diff --git a/services/web/client/source/class/qxapp/dev/fake/srv/__init__.js b/services/web/client/source/class/qxapp/dev/fake/srv/__init__.js new file mode 100644 index 00000000000..3849866954e --- /dev/null +++ b/services/web/client/source/class/qxapp/dev/fake/srv/__init__.js @@ -0,0 +1,11 @@ +/** + * Fake server. It is activated using qx.Environment + * + * - Enable qx environment value via url parameter as + * http://localhost:8080/index.html?qxenv:dev.enableFakeSrv:true + * + * - This feature can be activated as + *
+ *    qx serve --set qx.allowUrlSettings=true
+ * 
+ */ diff --git a/services/web/client/source/class/qxapp/dev/fake/srv/db/Project.js b/services/web/client/source/class/qxapp/dev/fake/srv/db/Project.js new file mode 100644 index 00000000000..786b1aa273e --- /dev/null +++ b/services/web/client/source/class/qxapp/dev/fake/srv/db/Project.js @@ -0,0 +1,23 @@ +qx.Class.define("qxapp.dev.fake.srv.db.Project", { + type: "static", + + statics: { + DUMMYNAMES: ["My EM-Simulation", "FDTD-Simulation", "Some Neuro-Simulatoin", "Clancy Model", "DemoPrj", "LF Simulation"], + + /** + * Creates a json object for a given project id + */ + getObject: function(projectId) { + const name = qxapp.dev.fake.srv.db.Project.DUMMYNAMES[projectId]; + let project = { + id: projectId, + name: name, + description: "Short description of project " + name, + thumbnail: "https://imgplaceholder.com/171x96/cccccc/757575/ion-plus-round", + createdDate: new Date(1990 + name.length, 11, 25), + modifiedDate: new Date(1990 + name.length, 12, 25) + }; + return project; + } + } +}); diff --git a/services/web/client/source/class/qxapp/dev/fake/srv/db/User.js b/services/web/client/source/class/qxapp/dev/fake/srv/db/User.js new file mode 100644 index 00000000000..b3c2990fa4e --- /dev/null +++ b/services/web/client/source/class/qxapp/dev/fake/srv/db/User.js @@ -0,0 +1,42 @@ +qx.Class.define("qxapp.dev.fake.srv.db.User", { + type: "static", + + statics: { + DUMMYNAMES: ["bizzy", "crespo", "anderegg", "guidon", "tobi", "maiz", "zastrow"], + + /** + * Creates a json object for a given user id + */ + getObject: function(userId) { + const uname = qxapp.dev.fake.srv.db.User.DUMMYNAMES[userId]; + const uemail = qxapp.dev.fake.srv.db.User.getEmail(userId); + let user = { + id: userId, + username: uname, + fullname: qx.lang.String.capitalize(uname), + email: uemail, + avatarUrl: qxapp.utils.Avatar.getUrl(uemail, 200), + passwordHash: "z43", // This is supposed to be hashed + projects: [] // Ids of projects associated to it + }; + + const pnames = qxapp.dev.fake.srv.db.Project.DUMMYNAMES; + for (var i = 0; i < uname.length; i++) { + const pid = i % pnames.length; + user.projects.push(qxapp.dev.fake.srv.db.Project.getObject(pid)); + } + return user; + }, + + getEmail: function(userId) { + const userName = qxapp.dev.fake.srv.db.User.DUMMYNAMES[userId]; + let tail = "@itis.ethz.ch"; + + if (userName == "tobi") { + tail = "@oetiker.ch"; + } + return userName + tail; + } + + } +}); diff --git a/services/web/client/source/class/qxapp/dev/fake/srv/restapi/Authentication.js b/services/web/client/source/class/qxapp/dev/fake/srv/restapi/Authentication.js new file mode 100644 index 00000000000..429acd736c0 --- /dev/null +++ b/services/web/client/source/class/qxapp/dev/fake/srv/restapi/Authentication.js @@ -0,0 +1,104 @@ +/* eslint no-warning-comments: "off" */ +qx.Class.define("qxapp.dev.fake.srv.restapi.Authentication", { + type: "static", + + statics: { + REMEMBER: false, + + mockData: [{ + method: "GET", + url: "api/v1.0/token", + response: function(request) { + console.log("Received request:", request); + + // Defaults unauthorized + let status = 401; + let headers = { + "Content-Type": "application/json" + }; + let body = null; + + const login = qxapp.dev.fake.srv.restapi.Authentication.decodeAuthHeader(request.requestHeaders); + + const userId = qxapp.dev.fake.srv.restapi.Authentication.checkCredentials(login); + if (userId !== null) { + console.debug("User ", qxapp.dev.fake.srv.db.User.DUMMYNAMES[userId], "is logging in ..."); + status = 200; + body = { + token: qxapp.dev.fake.srv.restapi.Authentication.createToken(userId) + }; + } + + request.respond(status, headers, qx.lang.Json.stringify(body)); + } + }], + + createToken: function(userId, expiration=24) { + return "this-is-a-dummy-token-that-expires-in-" + String(expiration) + "hours-for-" + String(userId); + }, + + getUserIdFromToken: function(token) { + if (token.startsWith("this-is-a-dummy-token-that-expires-in-")) { + var parts = token.split("-"); + return parts.pop(); + } + return null; + }, + + checkCredentials: function(login) { + var userId = qxapp.dev.fake.srv.db.User.DUMMYNAMES.findIndex(function(userName, userIndex) { + const user = qxapp.dev.fake.srv.db.User.getObject(userIndex); + return (login.email == user.email || login.email == user.username) && login.password == user.passwordHash; + }); + return userId>=0? userId: null; + }, + + /** + * Gets {email, password} from header + * produced by qx.io.request.authentication.Basic + */ + decodeAuthHeader: function(requestHeaders) { + var res = { + email: null, + password: null + }; + var header = requestHeaders["Authorization"]; + + // Remove 'Basic $value' + var value = header.split(" ")[1]; + // parse '$username : $password' + var pair = qx.util.Base64.decode(value).split(":"); + res.email = pair[0]; + res.password = pair[1]; + + return res; + }, + + /** + * Parse {email:, password:} object extracting + * parameters from body + * + */ + parseLoginParameters: function(requestBody) { + var res = { + email: null, + password: null + }; + + var vars = requestBody.split("&"); + for (var i = 0; i < vars.length; ++i) { + var pair = vars[i].split("="); + res[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]); + } + return res; + } + }, + + defer: function(mystatics) { + if (qx.core.Environment.get("dev.enableFakeSrv")) { + console.debug("REST API Authentication enabled"); + qx.dev.FakeServer.getInstance().configure(mystatics.mockData); + } + } + +}); diff --git a/services/web/client/source/class/qxapp/dev/fake/srv/restapi/Project.js b/services/web/client/source/class/qxapp/dev/fake/srv/restapi/Project.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/services/web/client/source/class/qxapp/dev/fake/srv/restapi/User.js b/services/web/client/source/class/qxapp/dev/fake/srv/restapi/User.js new file mode 100644 index 00000000000..3c573c302d8 --- /dev/null +++ b/services/web/client/source/class/qxapp/dev/fake/srv/restapi/User.js @@ -0,0 +1,51 @@ +/* eslint no-warning-comments: "off" */ +qx.Class.define("qxapp.dev.fake.srv.restapi.User", { + type: "static", + + statics: { + mockData: [{ + method: "GET", + url: "api/v1.0/user/{id}", + response: function(request) { + let status = 200; // OK + let headers = { + "Content-Type": "application/json" + }; + + let parts = qx.util.StringSplit.split(request.url, "/"); + let userId = parts[parts.length - 1]; + let data = qxapp.dev.fake.srv.db.User.createMock(userId); + let body = qx.lang.Json.stringify(data); + request.respond(status, headers, body); + // FIXME: unite api/v1/uisers + } + }, { + method: "GET", + url: "api/v1.0/users/", + response: function(request) { + let users = qxapp.dev.fake.srv.db.User.DUMMYNAMES; + + let data = []; + for (let i = 0; i < users.length; i++) { + data.push({ + id: i, + username: users[i] + }); + } + request.respond(200, + { + "Content-Type": "application/json" + }, + qx.lang.Json.stringify(data)); + } + }] + }, + + defer: function(mystatics) { + if (qx.core.Environment.get("dev.enableFakeSrv")) { + console.debug("REST API enabled"); + qx.dev.FakeServer.getInstance().configure(mystatics.mockData); + } + } + +}); diff --git a/services/web/client/source/class/qxapp/io/rest/Resource.js b/services/web/client/source/class/qxapp/io/rest/Resource.js new file mode 100644 index 00000000000..142a5b2aced --- /dev/null +++ b/services/web/client/source/class/qxapp/io/rest/Resource.js @@ -0,0 +1,33 @@ +/** + * Base class for RESTful resources + */ +qx.Class.define("qxapp.io.rest.Resource", { + extend: qx.io.rest.Resource, + + statics: { + AUTHENTICATION: null, + + setAutheticationHeader: function(usernameOrToken, password=null) { + qxapp.io.rest.Resource.AUTHENTICATION = new qx.io.request.authentication.Basic(usernameOrToken, password); + } + }, + + construct: function(description) { + this.base(arguments, description); + + this.configureRequest(function(request, action, params, data) { + let headers = [{ + key: "Accept", + value: "application/json" + }]; + + if (this.AUTHENTICATION !== null) { + headers.concat(this.AUTHENTICATION.getAuthHeaders()); + } + + headers.forEach(function(item, index, array) { + request.setRequestHeader(item.key, item.value); + }); + }); + } +}); diff --git a/services/web/client/source/class/qxapp/utils/Placeholders.js b/services/web/client/source/class/qxapp/utils/Avatar.js similarity index 90% rename from services/web/client/source/class/qxapp/utils/Placeholders.js rename to services/web/client/source/class/qxapp/utils/Avatar.js index 5998ba218af..21fc458832f 100644 --- a/services/web/client/source/class/qxapp/utils/Placeholders.js +++ b/services/web/client/source/class/qxapp/utils/Avatar.js @@ -1,34 +1,12 @@ /* eslint new-cap: [2, {capIsNewExceptions: ["B", "D", "J", "K", "L", "MD5"]}] */ /* eslint operator-assignment: ["off"] */ -qx.Class.define("qxapp.utils.Placeholders", { +qx.Class.define("qxapp.utils.Avatar", { type: "static", statics: { - getIcon: function(iconId, width, height = null) { - // see https://imgplaceholder.com/ - height = (height === null) ? width : height; - - const prefix = "https://imgplaceholder.com/"; - const shape = width + "x" + height; - const url = prefix + shape + "/transparent/757575/" + iconId; - - // e.g. // https://imgplaceholder.com/128x128/transparent/757575/fa-user - return url; - }, - - getImage: function(width, height = null) { - // see https://placeholder.com/ - - height = (height === null) ? width : height; - const url = "//via.placeholder.com/" + width + "x" + height; - - // e.g. http://via.placeholder.com/350x150 - return url; - }, - - getGravatar: function(email, size = 100, defIcon = "identicon", rating = "g") { + getUrl: function(email, size = 100, defIcon = "identicon", rating = "g") { // MD5 (Message-Digest Algorithm) by WebToolkit let MD5 = function(s) { function L(k, d) { diff --git a/services/web/client/source/translation/readme.txt b/services/web/client/source/translation/readme.txt index 66975e60e5a..08513ca8c3d 100644 --- a/services/web/client/source/translation/readme.txt +++ b/services/web/client/source/translation/readme.txt @@ -1,3 +1,4 @@ This directory will contain translation (.po) files once you run the 'translation' job in your project. +NOTE: for the moment all translation files are in the .gitignore From c8bea969378bb50efca6daea394ab290287c808a Mon Sep 17 00:00:00 2001 From: Manuel Guidon <33161876+mguidon@users.noreply.github.com> Date: Fri, 6 Jul 2018 14:11:52 +0200 Subject: [PATCH 068/127] Socket io (#159) Add more logging for socketio and comp. services --- services/sidecar/src/sidecar/sidecar.py | 46 +++++++++++++++++++------ services/web/server/src/async_sio.py | 2 +- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/services/sidecar/src/sidecar/sidecar.py b/services/sidecar/src/sidecar/sidecar.py index ffd45364145..44a3ccda7da 100644 --- a/services/sidecar/src/sidecar/sidecar.py +++ b/services/sidecar/src/sidecar/sidecar.py @@ -67,7 +67,6 @@ def _process_task_input(self, port, input_ports): #parse the link assuming it is link.id.file.ending _parts = port_value.split(".") object_name = os.path.join(str(self._task.pipeline_id), _parts[1], ".".join(_parts[2:])) - #object_name = os.path.join(str(self._task.pipeline_id),*port_value.split(".")[1:]) input_file = os.path.join(self._executor.in_dir, port_name) _LOGGER.debug('Downloading from S3 %s/%s', self._s3.bucket, object_name) success = False @@ -138,7 +137,17 @@ def _pull_image(self): self._docker.client.images.pull(self._docker.image_name, tag=self._docker.image_tag) - def _bg_job(self, task, log_file): + def _log(self, channel, msg): + log_data = {"Channel" : "Log", "Node": self._task.node_id, "Message" : msg} + log_body = json.dumps(log_data) + channel.basic_publish(exchange=self._pika.log_channel, routing_key='', body=log_body) + + def _progress(self, channel, progress): + prog_data = {"Channel" : "Progress", "Node": self._task.node_id, "Progress" : progress} + prog_body = json.dumps(prog_data) + channel.basic_publish(exchange=self._pika.progress_channel, routing_key='', body=prog_body) + + def _bg_job(self, log_file): connection = pika.BlockingConnection(self._pika.parameters) channel = connection.channel() @@ -158,16 +167,11 @@ def _bg_job(self, task, log_file): clean_line = line.strip() if clean_line.lower().startswith("[progress]"): progress = clean_line.lower().lstrip("[progress]").rstrip("%").strip() - prog_data = {"Channel" : "Progress", "Node": task.node_id, "Progress" : progress} + self._progress(channel, progress) _LOGGER.debug('PROGRESS %s', progress) - prog_body = json.dumps(prog_data) - channel.basic_publish(exchange=self._pika.progress_channel, routing_key='', body=prog_body) else: - log_data = {"Channel" : "Log", "Node": task.node_id, "Message" : clean_line} + self._log(channel, clean_line) _LOGGER.debug('LOG %s', clean_line) - log_body = json.dumps(log_data) - channel.basic_publish(exchange=self._pika.log_channel, routing_key='', body=log_body) - connection.close() @@ -266,7 +270,7 @@ def process(self): log_file = os.path.join(self._executor.log_dir, "log.dat") Path(log_file).touch() - fut = self._executor.pool.submit(self._bg_job, self._task, log_file) + fut = self._executor.pool.submit(self._bg_job, log_file) try: docker_image = self._docker.image_name + ":" + self._docker.image_tag @@ -292,10 +296,30 @@ def process(self): _LOGGER.debug('DONE Processing Pipeline %s and node %s from container', self._task.pipeline_id, self._task.internal_id) def run(self): - _LOGGER.debug("ENTERING run") + connection = pika.BlockingConnection(self._pika.parameters) + + channel = connection.channel() + channel.exchange_declare(exchange=self._pika.log_channel, exchange_type='fanout', auto_delete=True) + + msg = "Preprocessing start..." + self._log(channel, msg) self.preprocess() + msg = "...preprocessing end" + self._log(channel, msg) + + msg = "Processing start..." + self._log(channel, msg) self.process() + msg = "...processing end" + self._log(channel, msg) + + msg = "Postprocessing start..." + self._log(channel, msg) self.postprocess() + msg = "...postprocessing end" + self._log(channel, msg) + connection.close() + def postprocess(self): _LOGGER.debug('Post-Processing Pipeline %s and node %s from container', self._task.pipeline_id, self._task.internal_id) diff --git a/services/web/server/src/async_sio.py b/services/web/server/src/async_sio.py index 9fbfa1b0d96..f1c6aa225bc 100644 --- a/services/web/server/src/async_sio.py +++ b/services/web/server/src/async_sio.py @@ -21,7 +21,7 @@ _LOGGER = logging.getLogger(__file__) -SIO = socketio.AsyncServer(async_mode='aiohttp') +SIO = socketio.AsyncServer(async_mode='aiohttp', logging=_LOGGER) CONFIG = config.CONFIG[os.environ.get('SIMCORE_WEB_CONFIG', 'default')] From e88e3a89d5d77b639dc2a7fcef6bab7ee8208d1b Mon Sep 17 00:00:00 2001 From: Pedro Crespo <32402063+pcrespov@users.noreply.github.com> Date: Fri, 6 Jul 2018 14:46:04 +0200 Subject: [PATCH 069/127] Fixes typos in client after bad merge (#160) --- .../web/client/source/class/qxapp/components/login/Form.js | 2 +- services/web/client/source/class/qxapp/dev/fake/Data.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/services/web/client/source/class/qxapp/components/login/Form.js b/services/web/client/source/class/qxapp/components/login/Form.js index c1138004cc1..b62cb7e5e15 100644 --- a/services/web/client/source/class/qxapp/components/login/Form.js +++ b/services/web/client/source/class/qxapp/components/login/Form.js @@ -8,6 +8,7 @@ qx.Class.define("qxapp.components.login.Form", { extend: qx.ui.form.Form, + include: [qx.locale.MTranslation], construct: function() { this.base(arguments); @@ -29,7 +30,6 @@ qx.Class.define("qxapp.components.login.Form", { placeholder: this.tr("Your password"), tabIndex: username.getTabIndex()+1 }); - password.setPlaceholder(); this.add(password, "", null, "password", null); // TODO: diff --git a/services/web/client/source/class/qxapp/dev/fake/Data.js b/services/web/client/source/class/qxapp/dev/fake/Data.js index 5ce5d0cea81..e9f0fbcfa22 100644 --- a/services/web/client/source/class/qxapp/dev/fake/Data.js +++ b/services/web/client/source/class/qxapp/dev/fake/Data.js @@ -728,9 +728,9 @@ qx.Class.define("qxapp.dev.fake.Data", { getServices: function() { let fakeServices = []; - Array.prototype.push.apply(fakeServices, qxapp.qxapp.dev.fake.Data.getProducers()); - Array.prototype.push.apply(fakeServices, qxapp.qxapp.dev.fake.Data.getComputationals()); - Array.prototype.push.apply(fakeServices, qxapp.qxapp.dev.fake.Data.getAnalyses()); + Array.prototype.push.apply(fakeServices, qxapp.dev.fake.Data.getProducers()); + Array.prototype.push.apply(fakeServices, qxapp.dev.fake.Data.getComputationals()); + Array.prototype.push.apply(fakeServices, qxapp.dev.fake.Data.getAnalyses()); return fakeServices; }, From ec9418e8a3497dfc0c36a6a4e6dc2fb88243b27c Mon Sep 17 00:00:00 2001 From: Sylvain <35365065+sanderegg@users.noreply.github.com> Date: Fri, 6 Jul 2018 15:23:54 +0200 Subject: [PATCH 070/127] #5 kember postprocessing (#157) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * added link def in configuration * removed int from available types. changed float to number * refactoring get value * changed type from int to integer * added exception for invalid item type error added exception for s3 transfer error * typo * nodeports now able to upload files and folders to S3 * pylint * Makefile usable from Windows bash * renamed methods * fixed type * fixed tests after renaming int to integer * added default values for SIMCORE_NODE_UUID and SIMCORE_PIPELINE_ID * moved environment variable inside init function * typo * added minio as a fixture * added unit tests that use minio * removed empty file * renamed minio fixture, pylint * fixed issue with converting booleans added test with setters * fixed conversions added test for folderûrl * pylint * moved getting env variable in init function * moved file to test folder moved json encoding/decoding of db configuration in io module removed unnecessary test_postgres module * simplifications * renamed io module to dbmanager * removed unnecessary test * get the ip directly from docker * moved creation of env variables to a better location use docker API to get the IP and port * skip 2 tests that do not run on travis * added Dockerfile for kember postpro case extended docker-compose accordingly * completed all graphs * create dummy file * fixed figure 7 and partly 6 * completed figure 1 with annotations * all plots but figure 5 missing now * autorun notebook completeted heatmap code * added button to show/hide raw code added auto slicing of data with a max display of 50k points for now all graphs are in now * code cleanup * added Makefile, docker-compose for jupyter notebook solo * makefile similar to root makefile * fix development dummy file * use jupyter notebook 1.3 * make pylint happy * fixed JS added hide_input * sort lines according to review @manuel --- packages/simcore-sdk/requirements.txt | 4 +- .../TestingDBConnectionwithSimcoreSDK.ipynb | 278 - services/dy-2Dgraph/use-cases/Makefile | 41 +- services/dy-2Dgraph/use-cases/cc/Dockerfile | 2 +- .../dy-2Dgraph/use-cases/cc/requirements.txt | 16 +- .../use-cases/docker-compose.devel.yml | 23 + .../dy-2Dgraph/use-cases/docker-compose.yml | 24 +- .../dy-2Dgraph/use-cases/kember/Dockerfile | 89 + services/dy-2Dgraph/use-cases/kember/boot.sh | 14 + .../use-cases/kember/develdbs3init.py | 107 + .../dy-2Dgraph/use-cases/kember/kember.ipynb | 54852 +--------------- .../use-cases/kember/kember_config.json | 4 +- .../use-cases/kember/requirements.txt | 9 + services/dy-jupyter/Makefile | 33 + services/dy-jupyter/base-notebook/Dockerfile | 24 +- services/dy-jupyter/docker-compose.yml | 22 + 16 files changed, 781 insertions(+), 54761 deletions(-) delete mode 100644 services/dy-2Dgraph/TestingDBConnectionwithSimcoreSDK.ipynb create mode 100644 services/dy-2Dgraph/use-cases/kember/Dockerfile create mode 100644 services/dy-2Dgraph/use-cases/kember/boot.sh create mode 100644 services/dy-2Dgraph/use-cases/kember/develdbs3init.py create mode 100644 services/dy-2Dgraph/use-cases/kember/requirements.txt create mode 100644 services/dy-jupyter/Makefile create mode 100644 services/dy-jupyter/docker-compose.yml diff --git a/packages/simcore-sdk/requirements.txt b/packages/simcore-sdk/requirements.txt index 81e021a64f1..ba4a097ce63 100644 --- a/packages/simcore-sdk/requirements.txt +++ b/packages/simcore-sdk/requirements.txt @@ -1,5 +1,5 @@ +mock==2.0.0 +networkx==2.1 psycopg2==2.7.4 sqlalchemy==1.2.8 -networkx==2.1 tenacity==4.12.0 -mock==2.0.0 diff --git a/services/dy-2Dgraph/TestingDBConnectionwithSimcoreSDK.ipynb b/services/dy-2Dgraph/TestingDBConnectionwithSimcoreSDK.ipynb deleted file mode 100644 index 0732221bb6a..00000000000 --- a/services/dy-2Dgraph/TestingDBConnectionwithSimcoreSDK.ipynb +++ /dev/null @@ -1,278 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Init" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "sys.path.append(r\"C:\\Users\\anderegg\\Documents\\dev\\OSPARC\\osparc-simcore-ssh\\packages\\simcore-sdk\\src\")\n", - "sys.path.append(r\"C:\\Users\\anderegg\\Documents\\dev\\OSPARC\\osparc-simcore-ssh\\packages\\s3wrapper\\src\")\n", - "\n", - "import logging\n", - "logging.basicConfig(level=logging.WARNING)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "os.environ[\"SIMCORE_NODE_UUID\"] = \"12345555\"\n", - "os.environ[\"PIPELINE_NODE_ID\"] = \"1\"\n", - "\n", - "os.environ[\"POSTGRES_ENDPOINT\"] = \"localhost:5432\"\n", - "os.environ[\"POSTGRES_USER\"] = \"simcore\"\n", - "os.environ[\"POSTGRES_PASSWORD\"] = \"simcore\"\n", - "os.environ[\"POSTGRES_DB\"] = \"simcoredb\"\n", - "\n", - "os.environ[\"S3_ENDPOINT\"] = \"localhost:9001\"\n", - "os.environ[\"S3_ACCESS_KEY\"] = \"12345678\"\n", - "os.environ[\"S3_SECRET_KEY\"] = \"12345678\"\n", - "os.environ[\"S3_BUCKET_NAME\"] = \"simcore\"\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Use of nodeports" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from simcore_sdk.nodeports import PORTS" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "print(len(PORTS.inputs))\n", - "print(PORTS.inputs[0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "print(PORTS.inputs[0].get())\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(PORTS.outputs[0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "PORTS.outputs[\"out_1\"].get()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "PORTS.outputs[\"out_1\"].set(\"Hey this still works or NOTTTTTT crazy shit man!!\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Set up database and S3 with some data from a configuration" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import sys\n", - "import tempfile\n", - "import json\n", - "import pandas as pd\n", - "import numpy as np\n", - "import tenacity\n", - "from pathlib import Path\n", - "\n", - "from sqlalchemy import create_engine\n", - "from sqlalchemy.orm import sessionmaker\n", - "\n", - "from simcore_sdk.models.pipeline_models import Base, ComputationalTask, ComputationalPipeline\n", - "from simcore_sdk.config.db import Config as db_config\n", - "\n", - "from simcore_sdk.config.s3 import Config as s3_config\n", - "from s3wrapper.s3_client import S3Client\n", - "\n", - "\n", - "class DbSettings(object):\n", - " def __init__(self):\n", - " self._db_config = db_config()\n", - " self.db = create_engine(self._db_config.endpoint, client_encoding='utf8')\n", - " self.Session = sessionmaker(self.db)\n", - " self.session = self.Session()\n", - "\n", - "class S3Settings(object):\n", - " def __init__(self):\n", - " self._config = s3_config()\n", - " self.client = S3Client(endpoint=self._config.endpoint,\n", - " access_key=self._config.access_key, secret_key=self._config.secret_key)\n", - " self.bucket = self._config.bucket_name\n", - " self.client.create_bucket(self.bucket)\n", - "@tenacity.retry(wait=tenacity.wait_fixed(2), stop=tenacity.stop_after_attempt(5) | tenacity.stop_after_delay(20))\n", - "def init_db():\n", - " db = DbSettings() \n", - " Base.metadata.create_all(db.db)\n", - " return db\n", - "\n", - "@tenacity.retry(wait=tenacity.wait_fixed(2), stop=tenacity.stop_after_attempt(5) | tenacity.stop_after_delay(20))\n", - "def init_s3():\n", - " s3 = S3Settings()\n", - " return s3\n", - "db = init_db()\n", - "new_Pipeline = ComputationalPipeline()\n", - "db.session.add(new_Pipeline)\n", - "\n", - "db.session.commit()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "node_uuid = os.environ.get(\"SIMCORE_NODE_UUID\")\n", - "configuration={\n", - " \"version\":\"0.1\",\n", - " \"inputs\": [\n", - " {\n", - " \"key\": \"in_1\",\n", - " \"label\": \"vm 1Hz\",\n", - " \"desc\": \"these are computed data out of a pipeline\",\n", - " \"type\": \"fileUrl\",\n", - " \"value\": \"link.\" + node_uuid + \".in_1\",\n", - " \"timestamp\": \"2018-05-23T15:34:53.511Z\"\n", - " },\n", - " {\n", - " \"key\": \"in_2\",\n", - " \"label\": \"all results 1Hz\",\n", - " \"desc\": \"computed data out of a pipeline\",\n", - " \"type\": \"fileUrl\",\n", - " \"value\": \"link.\" + node_uuid + \".in_2\",\n", - " \"timestamp\": \"2018-05-23T15:34:53.511Z\"\n", - " }\n", - " ],\n", - " \"outputs\": [ \n", - " ]\n", - "}\n", - "\n", - "#configuration = json.loads(json_configuration)\n", - "new_Node = ComputationalTask(pipeline_id=new_Pipeline.pipeline_id, node_id=node_uuid, input=configuration[\"inputs\"], output=configuration[\"outputs\"])\n", - "db.session.add(new_Node)\n", - "db.session.commit()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def create_dummy_table(number_of_rows, number_of_columns):\n", - " time = np.arange(number_of_rows).reshape(number_of_rows,1)\n", - " matrix = np.random.randn(number_of_rows, number_of_columns)\n", - " fullmatrix = np.hstack((time, matrix))\n", - " df = pd.DataFrame(fullmatrix)\n", - " return df\n", - "\n", - "# create a dummy file filled with dummy data\n", - "temp_file = tempfile.NamedTemporaryFile()\n", - "temp_file.close()\n", - "\n", - "# create a dummy table\n", - "number_of_rows = 5000\n", - "number_of_columns = 200\n", - "number_of_files = 20\n", - "s3 = init_s3()\n", - "# push the file to the S3 for each input item\n", - "for input_item in configuration[\"inputs\"]:\n", - " if input_item[\"type\"] == \"fileUrl\":\n", - " df = create_dummy_table(number_of_rows, number_of_columns)\n", - " # serialize to the file\n", - " with open(temp_file.name, \"w\") as file_pointer:\n", - " df.to_csv(path_or_buf=file_pointer, sep=\"\\t\", header=False, index=False) \n", - "\n", - " s3_object_name = Path(str(new_Pipeline.pipeline_id), node_uuid, input_item[\"key\"])\n", - " s3.client.upload_file(s3.bucket, s3_object_name.as_posix(), temp_file.name)\n", - " elif input_item[\"type\"] == \"folderUrl\":\n", - " for i in range(number_of_files):\n", - " df = create_dummy_table(number_of_rows, number_of_columns)\n", - " # serialize to the file\n", - " with open(temp_file.name, \"w\") as file_pointer:\n", - " df.to_csv(path_or_buf=file_pointer, sep=\"\\t\", header=False, index=False) \n", - "\n", - " s3_object_name = Path(str(new_Pipeline.pipeline_id), node_uuid, input_item[\"key\"], str(i) + \".dat\")\n", - " s3.client.upload_file(s3.bucket, s3_object_name.as_posix(), temp_file.name)\n", - "\n", - "Path(temp_file.name).unlink()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.5" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/services/dy-2Dgraph/use-cases/Makefile b/services/dy-2Dgraph/use-cases/Makefile index 81f91edab37..200e2372baf 100644 --- a/services/dy-2Dgraph/use-cases/Makefile +++ b/services/dy-2Dgraph/use-cases/Makefile @@ -2,10 +2,25 @@ VERSION := $(shell cat /proc/version) # SAN this is a hack so that docker-compose works in the linux virtual environment under Windows ifneq (,$(findstring Microsoft,$(VERSION))) export DOCKER_COMPOSE=docker-compose.exe +export DOCKER=docker.exe else export DOCKER_COMPOSE=docker-compose +export DOCKER=docker endif +all: + @echo 'run `make build-devel` to build your dev environment' + @echo 'run `make up-devel` to start your dev environment.' + @echo 'see Makefile for further targets' + +build-devel: + ${DOCKER_COMPOSE} -f docker-compose.yml -f docker-compose.devel.yml build --build-arg VCS_REF=`git rev-parse --short HEAD` --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` + +rebuild-devel: + ${DOCKER_COMPOSE} -f docker-compose.yml -f docker-compose.devel.yml build --no-cache --build-arg VCS_REF=`git rev-parse --short HEAD` --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` + +up-devel: + ${DOCKER_COMPOSE} -f docker-compose.yml -f docker-compose.devel.yml up build: ${DOCKER_COMPOSE} -f docker-compose.yml build --build-arg VCS_REF=`git rev-parse --short HEAD` --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` @@ -18,15 +33,17 @@ up: down: ${DOCKER_COMPOSE} -f docker-compose.yml down - -build-devel: - ${DOCKER_COMPOSE} -f docker-compose.yml -f docker-compose.devel.yml build --build-arg VCS_REF=`git rev-parse --short HEAD` --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` - -rebuild-devel: - ${DOCKER_COMPOSE} -f docker-compose.yml -f docker-compose.devel.yml build --no-cache --build-arg VCS_REF=`git rev-parse --short HEAD` --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` - -up-devel: - ${DOCKER_COMPOSE} -f docker-compose.yml -f docker-compose.devel.yml up - -down-devel: - ${DOCKER_COMPOSE} -f docker-compose.yml -f docker-compose.devel.yml down \ No newline at end of file + ${DOCKER_COMPOSE} -f docker-compose.yml -f docker-compose.devel.yml down + +SERVICES_VERSION=1.0 + +push_service_images: + ${DOCKER} login masu.speag.com + ${DOCKER} tag use-cases_cc-0d:latest masu.speag.com/simcore/services/dynamic/cc-0d-viewer:${SERVICES_VERSION} + ${DOCKER} push masu.speag.com/simcore/services/dynamic/cc-0d-viewer:${SERVICES_VERSION} + ${DOCKER} tag use-cases_cc-1d:latest masu.speag.com/simcore/services/dynamic/cc-1d-viewer:${SERVICES_VERSION} + ${DOCKER} push masu.speag.com/simcore/services/dynamic/cc-1d-viewer:${SERVICES_VERSION} + ${DOCKER} tag use-cases_cc-2d:latest masu.speag.com/simcore/services/dynamic/cc-2d-viewer:${SERVICES_VERSION} + ${DOCKER} push masu.speag.com/simcore/services/dynamic/cc-2d-viewer:${SERVICES_VERSION} + ${DOCKER} tag use-cases_kember:latest masu.speag.com/simcore/services/dynamic/kember-viewer:${SERVICES_VERSION} + ${DOCKER} push masu.speag.com/simcore/services/dynamic/kember-viewer:${SERVICES_VERSION} \ No newline at end of file diff --git a/services/dy-2Dgraph/use-cases/cc/Dockerfile b/services/dy-2Dgraph/use-cases/cc/Dockerfile index 828c4658201..ee28f23922f 100644 --- a/services/dy-2Dgraph/use-cases/cc/Dockerfile +++ b/services/dy-2Dgraph/use-cases/cc/Dockerfile @@ -1,4 +1,4 @@ -FROM masu.speag.com/simcore/services/jupyter-base-notebook:1.2 AS common +FROM masu.speag.com/simcore/services/jupyter-base-notebook:1.3 AS common LABEL maintainer="sanderegg" diff --git a/services/dy-2Dgraph/use-cases/cc/requirements.txt b/services/dy-2Dgraph/use-cases/cc/requirements.txt index bd81b05e1e8..3ded59c5c01 100644 --- a/services/dy-2Dgraph/use-cases/cc/requirements.txt +++ b/services/dy-2Dgraph/use-cases/cc/requirements.txt @@ -1,11 +1,11 @@ -psycopg2-binary==2.7.4 -sqlalchemy==1.2.8 +jupyter_contrib_nbextensions==0.5.0 +jupyter_dashboards==0.7.0 +matplotlib==2.2.2 minio==4.0.0 networkx==2.1 -tenacity==4.12.0 -plotly==2.6.0 -matplotlib==2.2.2 -tqdm==4.23.4 pandas==0.22.0 -jupyter_contrib_nbextensions==0.5.0 -jupyter_dashboards==0.7.0 \ No newline at end of file +plotly==2.6.0 +psycopg2-binary==2.7.4 +sqlalchemy==1.2.8 +tenacity==4.12.0 +tqdm==4.23.4 \ No newline at end of file diff --git a/services/dy-2Dgraph/use-cases/docker-compose.devel.yml b/services/dy-2Dgraph/use-cases/docker-compose.devel.yml index ff5bfc633bf..cbe4aec32c6 100644 --- a/services/dy-2Dgraph/use-cases/docker-compose.devel.yml +++ b/services/dy-2Dgraph/use-cases/docker-compose.devel.yml @@ -72,6 +72,29 @@ services: - ../../../packages/simcore-sdk/src:/home/jovyan/packages/packages/simcore-sdk/src - ../../../packages/s3wrapper/src:/home/jovyan/packages/packages/s3wrapper/src #-------------------------------------------------------------------- + kember: + image: services_kember-viewer-dev + build: + target: development + args: + JSON_CONFIGURATION: kember_config.json + environment: + - S3_ENDPOINT=${S3_ENDPOINT} + - S3_ACCESS_KEY=${S3_ACCESS_KEY} + - S3_SECRET_KEY=${S3_SECRET_KEY} + - S3_BUCKET_NAME=${S3_BUCKET_NAME} + - POSTGRES_ENDPOINT=${POSTGRES_ENDPOINT} + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - POSTGRES_DB=${POSTGRES_DB} + depends_on: + - postgres + - minio + volumes: + - ./kember/kember.ipynb:/home/jovyan/kember.ipynb + - ../../../packages/simcore-sdk/src:/home/jovyan/packages/packages/simcore-sdk/src + - ../../../packages/s3wrapper/src:/home/jovyan/packages/packages/s3wrapper/src + #-------------------------------------------------------------------- postgres: image: postgres:10 environment: diff --git a/services/dy-2Dgraph/use-cases/docker-compose.yml b/services/dy-2Dgraph/use-cases/docker-compose.yml index c7d9fdd2b91..00f44c6cd42 100644 --- a/services/dy-2Dgraph/use-cases/docker-compose.yml +++ b/services/dy-2Dgraph/use-cases/docker-compose.yml @@ -1,7 +1,6 @@ version: '3.4' services: cc-0d: - image: masu.speag.com/simcore/services/dynamic/cc-0d-viewer:1.0 build: context: cc target: production @@ -24,7 +23,6 @@ services: - '1234:8888' #-------------------------------------------------------------------- cc-1d: - image: masu.speag.com/simcore/services/dynamic/cc-1d-viewer:1.0 build: context: cc target: production @@ -47,7 +45,6 @@ services: - '1235:8888' #-------------------------------------------------------------------- cc-2d: - image: masu.speag.com/simcore/services/dynamic/cc-2d-viewer:1.0 build: context: cc target: production @@ -69,4 +66,23 @@ services: ports: - '1236:8888' #-------------------------------------------------------------------- - \ No newline at end of file + kember: + build: + context: kember + target: production + args: + NOTEBOOK_NAME: kember.ipynb + VCS_REF: + BUILD_DATE: + labels: + io.simcore.key: '{"key": "simcore/services/dynamic/kember-viewer"}' + io.simcore.outputs: '{"outputs": []}' + io.simcore.tag: '{"tag": "0.0.1"}' + io.simcore.name: '{"name": "kember-viewer"}' + io.simcore.description: '{"description": "Graph viewer for data generated by kember solver"}' + io.simcore.contact: '{"contact": "anderegg@itis.ethz.ch"}' + io.simcore.authors: '{"authors": [{"name": "Sylvain Anderegg", "email": "anderegg@itis.ethz.ch", "affiliation": "ITIS Foundation"}]}' + io.simcore.inputs: '{"inputs": [{"key": "outputController", "label": "Input", "desc": "Input for postprocessing", "type": "file-url", "value": "null"}]}' + io.simcore.viewer: '{"viewer":{"ip":null, "port":null}}' + ports: + - '1237:8888' \ No newline at end of file diff --git a/services/dy-2Dgraph/use-cases/kember/Dockerfile b/services/dy-2Dgraph/use-cases/kember/Dockerfile new file mode 100644 index 00000000000..c40cd26d70a --- /dev/null +++ b/services/dy-2Dgraph/use-cases/kember/Dockerfile @@ -0,0 +1,89 @@ +FROM masu.speag.com/simcore/services/jupyter-base-notebook:1.3 AS common + +LABEL maintainer="sanderegg" + +ENV SIMCORE_NODE_UUID="-1" \ + S3_ENDPOINT="=1" \ + S3_ACCESS_KEY="-1" \ + S3_SECRET_KEY="-1" \ + S3_BUCKET_NAME="-1" \ + POSTGRES_ENDPOINT="-1" \ + POSTGRES_USER="-1" \ + POSTGRES_PASSWORD="-1" \ + POSTGRES_DB="-1" + +EXPOSE 8888 + +# install git, ffmpeg +USER root +RUN apt-get update && \ + apt-get install -y \ + git +USER $NB_USER + +# install requirements, install jupyter notebook extensions and enable necessary ones +COPY --chown=jovyan:users requirements.txt . +RUN pip install --upgrade pip && \ + pip install --no-cache-dir -r requirements.txt && \ + pip install jupyterthemes && \ + jt -t oceans16 && \ + jupyter contrib nbextensions install --user && \ + jupyter dashboards quick-setup --sys-prefix && \ + jupyter nbextension enable hide_input/main && \ + jupyter nbextension enable init_cell/main + +ENV PYTHONPATH="./packages/packages/simcore-sdk/src:./packages/packages/s3wrapper/src" + +COPY --chown=jovyan:users boot.sh boot.sh +RUN chmod +x boot.sh + +# call git rev-parse — short HEAD in a bash +ARG VCS_REF +# call date -u +”%Y-%m-%dT%H:%M:%SZ” in a bash +ARG BUILD_DATE +# Labels. +LABEL org.label-schema.schema-version="1.0" \ + org.label-schema.build-date=${BUILD_DATE} \ + org.label-schema.url="https://www.itis.ethz.ch" \ + org.label-schema.vcs-url="https://github.com/ITISFoundation/osparc-simcore" \ + org.label-schema.vcs-ref=${VCS_REF} \ + org.label-schema.vendor="IT'IS foundation" +# service runtime settings +LABEL simcore.service.settings='[{"name": "ports", "type": "int", "value": 8888}, {"name": "constraints", "type": "string", "value": ["node.platform.os == linux"]}]' +# ----------------------------------------------------------------------------- +FROM common AS specialised +# set of arguments to copy the right notebook +ARG NOTEBOOK_NAME + +# env to automatically open the notebook +ENV NOTEBOOK_URL=${NOTEBOOK_NAME} +# ----------------------------------------------------------------------------- +FROM specialised AS development +# one can mount the packages +VOLUME /home/jovyan/packages/packages/simcore-sdk/src \ + /home/jovyan/packages/packages/s3wrapper/src +ARG JSON_CONFIGURATION +ENV USE_CASE_CONFIG_FILE=${JSON_CONFIGURATION} +# copy special configuration for development +COPY --chown=jovyan:users ${JSON_CONFIGURATION} . +# create dummy tables and dummy S3 data +ENV CREATE_DUMMY_TABLE=1 +COPY --chown=jovyan:users develdbs3init.py . +CMD [ "/bin/sh", "boot.sh" ] +# ----------------------------------------------------------------------------- +FROM specialised AS production +# set of arguments to copy the right notebook +ARG NOTEBOOK_NAME +# copy the notebook in the image +COPY --chown=jovyan:users ${NOTEBOOK_NAME} . +# download the simcore_sdk package +RUN mkdir packages && \ + cd packages && \ + git init && \ + git remote add origin -f https://github.com/ITISFoundation/osparc-simcore.git && \ + git config core.sparsecheckout true && \ + echo "packages/simcore-sdk/src/simcore_sdk/*" >> .git/info/sparse-checkout && \ + echo "packages/s3wrapper/src/s3wrapper/*" >> .git/info/sparse-checkout && \ + git pull --depth=1 origin master + +ENTRYPOINT [ "/bin/sh", "boot.sh" ] \ No newline at end of file diff --git a/services/dy-2Dgraph/use-cases/kember/boot.sh b/services/dy-2Dgraph/use-cases/kember/boot.sh new file mode 100644 index 00000000000..724ffdbbe70 --- /dev/null +++ b/services/dy-2Dgraph/use-cases/kember/boot.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +if test "${CREATE_DUMMY_TABLE}" = "1" +then + echo "Creating dummy tables ... using ${USE_CASE_CONFIG_FILE}" + result="$(python develdbs3init.py ${USE_CASE_CONFIG_FILE})" + echo "Received result node uuid of $result" + export SIMCORE_NODE_UUID="$result" +fi +jupyter trust ${NOTEBOOK_URL} +start-notebook.sh \ + --NotebookApp.token='' \ + --NotebookApp.tornado_settings="{\"headers\":{\"Content-Security-Policy\":\"frame-ancestors+'self'+http://osparc01.speag.com:9081;+report-uri/api/security/csp-report\"}}" \ + --NotebookApp.default_url=/notebooks/${NOTEBOOK_URL} \ No newline at end of file diff --git a/services/dy-2Dgraph/use-cases/kember/develdbs3init.py b/services/dy-2Dgraph/use-cases/kember/develdbs3init.py new file mode 100644 index 00000000000..e98aa78c4e7 --- /dev/null +++ b/services/dy-2Dgraph/use-cases/kember/develdbs3init.py @@ -0,0 +1,107 @@ +import json +import sys +import tempfile +import uuid +from pathlib import Path + +import tenacity +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker + +import numpy as np +import pandas as pd +from s3wrapper.s3_client import S3Client +from simcore_sdk.config.db import Config as db_config +from simcore_sdk.config.s3 import Config as s3_config +from simcore_sdk.models.pipeline_models import (Base, ComputationalPipeline, + ComputationalTask) + + +class DbSettings(object): + def __init__(self): + self._db_config = db_config() + self.db = create_engine(self._db_config.endpoint, client_encoding='utf8') + self.Session = sessionmaker(self.db) + self.session = self.Session() + +class S3Settings(object): + def __init__(self): + self._config = s3_config() + self.client = S3Client(endpoint=self._config.endpoint, + access_key=self._config.access_key, secret_key=self._config.secret_key) + self.bucket = self._config.bucket_name + self.client.create_bucket(self.bucket) + +@tenacity.retry(wait=tenacity.wait_fixed(2), stop=tenacity.stop_after_attempt(5) | tenacity.stop_after_delay(20)) +def init_db(): + db = DbSettings() + Base.metadata.create_all(db.db) + return db + +@tenacity.retry(wait=tenacity.wait_fixed(2), stop=tenacity.stop_after_attempt(5) | tenacity.stop_after_delay(20)) +def init_s3(): + s3 = S3Settings() + return s3 + +def create_dummy_table(number_of_rows, number_of_columns): + time = np.arange(number_of_rows).reshape(number_of_rows,1) + matrix = np.random.randn(number_of_rows, number_of_columns) + fullmatrix = np.hstack((time, matrix)) + df = pd.DataFrame(fullmatrix) + return df + +def create_dummy(json_configuration_file_path): + with open(json_configuration_file_path) as file_pointer: + json_configuration = file_pointer.read() + + db = init_db() + new_Pipeline = ComputationalPipeline() + db.session.add(new_Pipeline) + db.session.commit() + + node_uuid = str(uuid.uuid4()) + # correct configuration with node uuid + json_configuration = json_configuration.replace("SIMCORE_NODE_UUID", node_uuid) + configuration = json.loads(json_configuration) + # now create the node in the db with links to S3 + new_Node = ComputationalTask(pipeline_id=new_Pipeline.pipeline_id, node_id=node_uuid, input=configuration["inputs"], output=configuration["outputs"]) + db.session.add(new_Node) + db.session.commit() + + # create a dummy file filled with dummy data + temp_file = tempfile.NamedTemporaryFile() + temp_file.close() + + # create a dummy table + number_of_rows = 100 + number_of_columns = 6000 + number_of_files = 20 + s3 = init_s3() + # push the file to the S3 for each input item + for input_item in configuration["inputs"]: + if input_item["type"] == "file-url": + # there is a file available to upload from + df = create_dummy_table(number_of_rows, number_of_columns) + # serialize to the file + with open(temp_file.name, "w") as file_pointer: + df.to_csv(path_or_buf=file_pointer, sep=" ", header=False, index=False) + + s3_object_name = Path(str(new_Pipeline.pipeline_id), node_uuid, input_item["key"]) + s3.client.upload_file(s3.bucket, s3_object_name.as_posix(), temp_file.name) + elif input_item["type"] == "folder-url": + for i in range(number_of_files): + df = create_dummy_table(number_of_rows, number_of_columns) + # serialize to the file + with open(temp_file.name, "w") as file_pointer: + df.to_csv(path_or_buf=file_pointer, sep=" ", header=False, index=False) + + s3_object_name = Path(str(new_Pipeline.pipeline_id), node_uuid, input_item["key"], str(i) + ".dat") + s3.client.upload_file(s3.bucket, s3_object_name.as_posix(), temp_file.name) + + Path(temp_file.name).unlink() + + # print the node uuid so that it can be set as env variable from outside + print(node_uuid) + +if __name__ == "__main__": + create_dummy(sys.argv[1]) diff --git a/services/dy-2Dgraph/use-cases/kember/kember.ipynb b/services/dy-2Dgraph/use-cases/kember/kember.ipynb index 68bae2a947a..dc6d0a7372c 100644 --- a/services/dy-2Dgraph/use-cases/kember/kember.ipynb +++ b/services/dy-2Dgraph/use-cases/kember/kember.ipynb @@ -2,19 +2,46 @@ "cells": [ { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": { - "hide_input": false + "hideoutput": true, + "init_cell": true }, "outputs": [], "source": [ - "import os\n", - "os.environ[\"SIMCORE_CONFIG_PATH\"] = r\"C:\\Users\\anderegg\\Desktop\\alternative_config.json\"" + "from IPython.display import HTML\n", + "\n", + "HTML('''\n", + "
''')" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, + "metadata": { + "hide_input": true, + "init_cell": true + }, + "outputs": [], + "source": [ + "%%javascript\n", + "$('#menubar').hide();" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": { "extensions": { "jupyter_dashboards": { @@ -27,18 +54,17 @@ } } }, - "hide_input": false + "hide_input": true, + "init_cell": true }, "outputs": [], "source": [ - "import simcoreapi\n", - "from simcoreapi import PORTS\n", - "\n" + "from simcore_sdk.nodeports.nodeports import PORTS" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": { "extensions": { "jupyter_dashboards": { @@ -57,25284 +83,12 @@ } } }, - "hide_input": false + "hide_input": true, + "init_cell": true }, - "outputs": [ - { - "data": { - "text/html": [ - "" - ], - "text/vnd.plotly.v1+html": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "data": [ - { - "cells": { - "align": [ - "left" - ], - "fill": { - "color": "#F5F8FF" - }, - "values": [ - [ - 4.989999999999939, - 9.989999999999831, - 14.989999999999723, - 19.990000000000325, - 24.99000000000111, - 29.99000000000189, - 34.990000000001615, - 39.99000000000061, - 44.98999999999962, - 49.989999999998616, - 54.989999999997636, - 59.98999999999664, - 64.98999999999634, - 69.9899999999989, - 74.99000000000144, - 79.99000000000402, - 84.99000000000656, - 89.99000000000912, - 94.99000000001169, - 99.99000000001423, - 104.9900000000168, - 109.99000000001936, - 114.99000000002192, - 119.9900000000245, - 124.99000000002705, - 129.99000000002675, - 134.9900000000222, - 139.99000000001766, - 144.99000000001308, - 149.99000000000856, - 154.99000000000402, - 159.98999999999947, - 164.9899999999949, - 169.98999999999037, - 174.98999999998586, - 179.98999999998128, - 184.98999999997676, - 189.98999999997216, - 194.9899999999676, - 199.98999999996312, - 204.98999999995854, - 209.989999999954, - 214.98999999994945, - 219.98999999994493, - 224.98999999994038, - 229.9899999999358, - 234.98999999993129, - 239.98999999992668, - 244.98999999992213, - 249.98999999991761, - 254.9899999999131, - 259.98999999990855, - 264.989999999904, - 269.98999999989945, - 274.9899999998949, - 279.9899999998904, - 284.9899999998858, - 289.98999999988126, - 294.98999999987666, - 299.98999999987217, - 304.9899999998676, - 309.98999999986313, - 314.9899999998585, - 319.98999999985404, - 324.98999999984943, - 329.9899999998449, - 334.9899999998404, - 339.9899999998358, - 344.98999999983124, - 349.98999999982664, - 354.98999999982215, - 359.98999999981766, - 364.9899999998131, - 369.9899999998085, - 374.989999999804, - 379.98999999979935, - 384.98999999979486, - 389.98999999979037, - 394.98999999978577, - 399.98999999978116, - 404.9899999997768, - 409.9899999997721, - 414.98999999976763, - 419.98999999976303, - 424.98999999975854, - 429.98999999975393, - 434.9899999997494, - 439.9899999997448, - 444.9899999997403, - 449.98999999973574, - 454.9899999997312, - 459.98999999972665, - 464.98999999972216, - 469.9899999997176, - 474.989999999713, - 479.98999999970846, - 484.9899999997039, - 489.9899999996994, - 494.9899999996948, - 499.9899999996903, - 504.98999999968566, - 509.9899999996812, - 514.9899999996767, - 519.9899999996721, - 524.9899999996676, - 529.989999999663, - 534.9899999996585, - 539.9899999996541, - 544.9899999996494, - 549.9899999996449, - 554.9899999996403, - 559.9899999996359, - 564.9899999996313, - 569.9899999996268, - 574.9899999996221, - 579.9899999996176, - 584.989999999613, - 589.9899999996086, - 594.9899999996039, - 599.9899999995994, - 604.9899999995947, - 609.9899999995903, - 614.9899999995857, - 619.9899999995812, - 624.9899999995766, - 629.9899999995721, - 634.9899999995675, - 639.989999999563, - 644.9899999995584, - 649.9899999995539, - 654.9899999995494, - 659.9899999995448, - 664.9899999995403, - 669.9899999995357, - 674.9899999995313, - 679.9899999995266, - 684.9899999995221, - 689.9899999995175, - 694.989999999513, - 699.9899999995083, - 704.989999999504, - 709.9899999994992, - 714.9899999994948, - 719.9899999994902, - 724.9899999994858, - 729.9899999994813, - 734.9899999994766, - 739.989999999472, - 744.9899999994675, - 749.9899999994631, - 754.9899999994583, - 759.9899999994539, - 764.9899999994493, - 769.9899999994448, - 774.9899999994403, - 779.9899999994358, - 784.9899999994311, - 789.9899999994266, - 794.989999999422, - 799.9899999994176, - 804.9899999994128, - 809.9899999994084, - 814.9899999994037, - 819.9899999993993, - 824.9899999993947, - 829.9899999993903, - 834.9899999993856, - 839.9899999993811, - 844.9899999993767, - 849.989999999372, - 854.9899999993676, - 859.9899999993629, - 864.9899999993584, - 869.9899999993538, - 874.9899999993493, - 879.9899999993448, - 884.9899999993402, - 889.9899999993356, - 894.9899999993311, - 899.9899999993265, - 904.9899999993221, - 909.9899999993173, - 914.9899999993128, - 919.9899999993083, - 924.9899999993038, - 929.9899999992994, - 934.9899999992947, - 939.98999999929, - 944.9899999992856, - 949.989999999281, - 954.9899999992764, - 959.989999999272, - 964.9899999992674, - 969.9899999992627, - 974.9899999992584, - 979.9899999992537, - 984.9899999992492, - 989.9899999992447, - 994.98999999924, - 999.9899999992357, - 1004.9899999992309, - 1009.9899999992264, - 1014.9899999992219, - 1019.9899999992174, - 1024.9899999992128, - 1029.9899999992083, - 1034.9899999992037, - 1039.9899999991992, - 1044.9899999991949, - 1049.98999999919, - 1054.9899999991856, - 1059.989999999181, - 1064.9899999991762, - 1069.9899999991721, - 1074.9899999991674, - 1079.9899999991628, - 1084.9899999991583, - 1089.9899999991535, - 1094.9899999991494, - 1099.9899999991446, - 1104.98999999914, - 1109.9899999991355, - 1114.989999999131, - 1119.9899999991264, - 1124.9899999991221, - 1129.9899999991173, - 1134.9899999991128, - 1139.9899999991082, - 1144.9899999991035, - 1149.9899999990994, - 1154.9899999990946, - 1159.98999999909, - 1164.9899999990855, - 1169.989999999081, - 1174.9899999990766, - 1179.9899999990719, - 1184.9899999990673, - 1189.9899999990628, - 1194.9899999990582, - 1199.9899999990535, - 1204.9899999990491, - 1209.9899999990446, - 1214.98999999904, - 1219.9899999990355, - 1224.9899999990312, - 1229.9899999990264, - 1234.9899999990218, - 1239.989999999017, - 1244.9899999990128, - 1249.9899999990082, - 1254.9899999990034, - 1259.989999998999, - 1264.9899999989943, - 1269.98999999899, - 1274.9899999989855, - 1279.989999998981, - 1284.9899999989764, - 1289.9899999989716, - 1294.9899999989673, - 1299.9899999989627, - 1304.9899999989582, - 1309.9899999989536, - 1314.989999998949, - 1319.9899999989445, - 1324.98999999894, - 1329.9899999989354, - 1334.989999998931, - 1339.9899999989266, - 1344.9899999989218, - 1349.9899999989173, - 1354.9899999989127, - 1359.9899999989082, - 1364.9899999989036, - 1369.9899999988988, - 1374.9899999988943, - 1379.98999999889, - 1384.9899999988854, - 1389.9899999988806, - 1394.9899999988766, - 1399.9899999988718, - 1404.9899999988672, - 1409.9899999988627, - 1414.9899999988581, - 1419.9899999988534, - 1424.9899999988488, - 1429.9899999988445, - 1434.98999999884, - 1439.9899999988354, - 1444.9899999988309, - 1449.9899999988265, - 1454.9899999988218, - 1459.9899999988172, - 1464.989999998813, - 1469.989999998808, - 1474.9899999988033, - 1479.989999998799, - 1484.9899999987945, - 1489.98999999879, - 1494.9899999987854, - 1499.9899999987808, - 1504.9899999987765, - 1509.9899999987713, - 1514.9899999987674, - 1519.9899999987624, - 1524.9899999987579, - 1529.9899999987533, - 1534.989999998749, - 1539.9899999987445, - 1544.98999999874, - 1549.9899999987354, - 1554.9899999987308, - 1559.9899999987265, - 1564.9899999987217, - 1569.9899999987174, - 1574.9899999987124, - 1579.9899999987078, - 1584.9899999987035, - 1589.989999998699, - 1594.9899999986944, - 1599.9899999986899, - 1604.9899999986853, - 1609.9899999986808, - 1614.9899999986762, - 1619.9899999986715, - 1624.9899999986674, - 1629.9899999986624, - 1634.989999998658, - 1639.9899999986535, - 1644.989999998649, - 1649.9899999986444, - 1654.98999999864, - 1659.9899999986353, - 1664.9899999986308, - 1669.989999998626, - 1674.9899999986214, - 1679.9899999986173, - 1684.9899999986123, - 1689.989999998608, - 1694.9899999986035, - 1699.989999998599, - 1704.9899999985944, - 1709.9899999985898, - 1714.9899999985853, - 1719.9899999985805, - 1724.9899999985764, - 1729.9899999985714, - 1734.9899999985669, - 1739.9899999985626, - 1744.989999998558, - 1749.9899999985535, - 1754.989999998549, - 1759.9899999985446, - 1764.9899999985398, - 1769.9899999985353, - 1774.989999998531, - 1779.9899999985264, - 1784.9899999985214, - 1789.989999998517, - 1794.9899999985125, - 1799.989999998508, - 1804.9899999985034, - 1809.9899999984991, - 1814.9899999984946, - 1819.9899999984893, - 1824.9899999984848, - 1829.989999998481, - 1834.989999998476, - 1839.989999998472, - 1844.989999998467, - 1849.9899999984625, - 1854.989999998458, - 1859.9899999984534, - 1864.9899999984489, - 1869.9899999984445, - 1874.98999999844, - 1879.9899999984355, - 1884.9899999984307, - 1889.989999998426, - 1894.9899999984216, - 1899.989999998417, - 1904.9899999984125, - 1909.989999998408, - 1914.9899999984036, - 1919.9899999983988, - 1924.9899999983945, - 1929.9899999983895, - 1934.9899999983847, - 1939.9899999983807, - 1944.9899999983759, - 1949.9899999983718, - 1954.989999998367, - 1959.9899999983625, - 1964.989999998358, - 1969.9899999983534, - 1974.9899999983486, - 1979.9899999983445, - 1984.9899999983402, - 1989.9899999983352, - 1994.9899999983304, - 1999.989999998326, - 2004.9899999983213, - 2009.989999998317, - 2014.9899999983124, - 2019.9899999983081, - 2024.9899999983036, - 2029.9899999982986, - 2034.9899999982945, - 2039.9899999982895, - 2044.9899999982847, - 2049.9899999983263, - 2054.989999998435, - 2059.989999998544, - 2064.9899999986533, - 2069.9899999987624, - 2074.989999998872, - 2079.9899999989807, - 2084.98999999909, - 2089.989999999199, - 2094.9899999993077, - 2099.9899999994173, - 2104.9899999995264, - 2109.9899999996355, - 2114.9899999997447, - 2119.9899999998543, - 2124.989999999963, - 2129.990000000072, - 2134.9900000001808, - 2139.9900000002904, - 2144.9900000003995, - 2149.9900000005086, - 2154.990000000618, - 2159.990000000727, - 2164.990000000836, - 2169.990000000945, - 2174.9900000010543, - 2179.9900000011635, - 2184.990000001273, - 2189.9900000013813, - 2194.990000001491, - 2199.9900000016, - 2204.990000001709, - 2209.9900000018183, - 2214.9900000019275, - 2219.9900000020366, - 2224.9900000021453, - 2229.990000002255, - 2234.990000002364, - 2239.990000002473, - 2244.9900000025823, - 2249.9900000026914, - 2254.990000002801, - 2259.9900000029097, - 2264.9900000030193, - 2269.990000003128, - 2274.990000003237, - 2279.9900000033467, - 2284.9900000034554, - 2289.9900000035645, - 2294.9900000036732, - 2299.990000003783, - 2304.990000003892, - 2309.9900000040006, - 2314.9900000041102, - 2319.9900000042194, - 2324.9900000043285, - 2329.9900000044377, - 2334.9900000045473, - 2339.990000004656, - 2344.990000004765, - 2349.9900000048738, - 2354.9900000049834, - 2359.9900000050925, - 2364.9900000052016, - 2369.990000005311, - 2374.99000000542, - 2379.990000005529, - 2384.990000005638, - 2389.9900000057473, - 2394.9900000058565, - 2399.9900000059656, - 2404.990000006075, - 2409.990000006184, - 2414.990000006293, - 2419.990000006402, - 2424.9900000065113, - 2429.9900000066204, - 2434.9900000067296, - 2439.990000006839, - 2444.990000006948, - 2449.990000007057, - 2454.990000007166, - 2459.9900000072753, - 2464.9900000073844, - 2469.9900000074936, - 2474.990000007603, - 2479.9900000077123, - 2484.990000007821, - 2489.99000000793, - 2494.9900000080397, - 2499.9900000081484, - 2504.990000008257, - 2509.990000008367, - 2514.990000008476, - 2519.990000008585, - 2524.9900000086936, - 2529.9900000088032, - 2534.9900000089124, - 2539.990000009021, - 2544.9900000091307, - 2549.99000000924, - 2554.990000009349, - 2559.990000009458, - 2564.9900000095668, - 2569.9900000096764, - 2574.990000009785, - 2579.9900000098946, - 2584.9900000100038, - 2589.990000010113, - 2594.990000010222, - 2599.990000010331, - 2604.9900000104403, - 2609.990000010549, - 2614.9900000106586, - 2619.990000010768, - 2624.990000010877, - 2629.990000010986, - 2634.990000011095, - 2639.9900000112043, - 2644.990000011313, - 2649.9900000114226, - 2654.990000011532, - 2659.990000011641, - 2664.99000001175, - 2669.990000011859, - 2674.9900000119683, - 2679.990000012077, - 2684.9900000121866, - 2689.990000012296, - 2694.9900000124053, - 2699.990000012514, - 2704.990000012623, - 2709.9900000127327, - 2714.990000012841, - 2719.9900000129505, - 2724.99000001306, - 2729.990000013169, - 2734.990000013278, - 2739.990000013387, - 2744.9900000134962, - 2749.990000013605, - 2754.9900000137145, - 2759.9900000138236, - 2764.9900000139332, - 2769.990000014042, - 2774.990000014151, - 2779.99000001426, - 2784.990000014369, - 2789.990000014479, - 2794.990000014588, - 2799.990000014697, - 2804.990000014806, - 2809.990000014915, - 2814.9900000150237, - 2819.990000015133, - 2824.9900000152425, - 2829.990000015352, - 2834.9900000154607, - 2839.99000001557, - 2844.9900000156786, - 2849.990000015788, - 2854.9900000158973, - 2859.9900000160064, - 2864.9900000161156, - 2869.990000016225, - 2874.9900000163343, - 2879.990000016443, - 2884.990000016552, - 2889.990000016661, - 2894.9900000167704, - 2899.990000016879, - 2904.990000016989, - 2909.990000017098, - 2914.990000017207, - 2919.990000017316, - 2924.990000017425, - 2929.990000017535, - 2934.9900000176435, - 2939.990000017753, - 2944.990000017862, - 2949.9900000179714, - 2954.9900000180796, - 2959.990000018189, - 2964.9900000182984, - 2969.9900000184075, - 2974.9900000185166, - 2979.9900000186262, - 2984.990000018735, - 2989.990000018844, - 2994.990000018953, - 2999.9900000190623, - 3004.990000019172, - 3009.990000019281, - 3014.9900000193898, - 3019.990000019499, - 3024.990000019608, - 3029.9900000197167, - 3034.9900000198268, - 3039.9900000199355, - 3044.990000020045, - 3049.9900000201533, - 3054.990000020263, - 3059.9900000203716, - 3064.990000020481, - 3069.9900000205903, - 3074.9900000206994, - 3079.9900000208086, - 3084.9900000209173, - 3089.9900000210273, - 3094.990000021136, - 3099.990000021245, - 3104.9900000213543, - 3109.9900000214634, - 3114.990000021572, - 3119.9900000216817, - 3124.990000021791, - 3129.9900000219, - 3134.990000022009, - 3139.9900000221187, - 3144.990000022228, - 3149.9900000223365, - 3154.9900000224457, - 3159.990000022555, - 3164.9900000226644, - 3169.9900000227726, - 3174.990000022882, - 3179.9900000229914, - 3184.9900000231005, - 3189.990000023209, - 3194.990000023319, - 3199.990000023428, - 3204.990000023537, - 3209.990000023646, - 3214.9900000237553, - 3219.990000023865, - 3224.9900000239736, - 3229.990000024083, - 3234.990000024192, - 3239.990000024301, - 3244.9900000244106, - 3249.9900000245198, - 3254.9900000246284, - 3259.9900000247376, - 3264.9900000248467, - 3269.990000024956, - 3274.9900000250645, - 3279.990000025174, - 3284.9900000252833, - 3289.9900000253924, - 3294.9900000255016, - 3299.990000025611, - 3304.9900000257203, - 3309.990000025829, - 3314.990000025938, - 3319.9900000260473, - 3324.9900000261564, - 3329.990000026265, - 3334.990000026375, - 3339.990000026484, - 3344.990000026593, - 3349.990000026702, - 3354.990000026811, - 3359.990000026921, - 3364.9900000270286, - 3369.9900000271386, - 3374.990000027248, - 3379.9900000273574, - 3384.9900000274656, - 3389.990000027575, - 3394.9900000276843, - 3399.990000027793, - 3404.990000027902, - 3409.990000028012, - 3414.990000028121, - 3419.99000002823, - 3424.990000028339, - 3429.9900000284483, - 3434.990000028557, - 3439.9900000286666, - 3444.990000028776, - 3449.990000028885, - 3454.990000028994, - 3459.9900000291027, - 3464.9900000292128, - 3469.9900000293214, - 3474.9900000294306, - 3479.9900000295397, - 3484.990000029649, - 3489.9900000297584, - 3494.990000029867, - 3499.9900000299763, - 3504.990000030085, - 3509.9900000301946, - 3514.990000030304, - 3519.9900000304133, - 3524.990000030522, - 3529.990000030631, - 3534.99000003074, - 3539.990000030849, - 3544.990000030958, - 3549.990000031068, - 3554.990000031177, - 3559.990000031286, - 3564.990000031395, - 3569.9900000315038, - 3574.9900000316134, - 3579.9900000317225, - 3584.990000031832, - 3589.990000031941, - 3594.9900000320504, - 3599.9900000321586, - 3604.990000032268, - 3609.990000032377, - 3614.9900000324874, - 3619.9900000325956, - 3624.990000032705, - 3629.990000032814, - 3634.990000032923, - 3639.990000033032, - 3644.990000033141, - 3649.990000033251, - 3654.99000003336, - 3659.990000033469, - 3664.990000033578, - 3669.990000033687, - 3674.9900000337957, - 3679.990000033905, - 3684.9900000340144, - 3689.990000034124, - 3694.9900000342327, - 3699.990000034342, - 3704.9900000344514, - 3709.99000003456, - 3714.9900000346693, - 3719.990000034777, - 3724.9900000348875, - 3729.990000034997, - 3734.9900000351063, - 3739.990000035215, - 3744.990000035324, - 3749.990000035433, - 3754.9900000355424, - 3759.990000035652, - 3764.990000035761, - 3769.9900000358703, - 3774.990000035979, - 3779.990000036088, - 3784.9900000361968, - 3789.9900000363054, - 3794.990000036416, - 3799.990000036525, - 3804.990000036634, - 3809.9900000367434, - 3814.9900000368516, - 3819.990000036961, - 3824.9900000370703, - 3829.9900000371804, - 3834.9900000372886, - 3839.9900000373973, - 3844.990000037507, - 3849.990000037616, - 3854.990000037725, - 3859.9900000378334, - 3864.990000037944, - 3869.990000038053, - 3874.9900000381617, - 3879.990000038271, - 3884.9900000383795, - 3889.9900000384887, - 3894.9900000385987, - 3899.9900000387074, - 3904.990000038817, - 3909.9900000389257, - 3914.990000039035, - 3919.9900000391444, - 3924.990000039253, - 3929.9900000393613, - 3934.990000039472, - 3939.9900000395814, - 3944.990000039689, - 3949.9900000397993, - 3954.990000039908, - 3959.990000040017, - 3964.9900000401262, - 3969.990000040235, - 3974.990000040345, - 3979.9900000404537, - 3984.990000040563, - 3989.990000040672, - 3994.990000040781, - 3999.9900000408898, - 4004.9900000409993, - 4009.990000041109, - 4014.9900000412176, - 4019.9900000413268, - 4024.9900000414364, - 4029.9900000415446, - 4034.990000041654, - 4039.990000041763, - 4044.9900000418734, - 4049.990000041981, - 4054.9900000420903, - 4059.9900000422, - 4064.990000042309, - 4069.990000042418, - 4074.990000042527, - 4079.990000042637, - 4084.9900000427456, - 4089.990000042855, - 4094.990000042964, - 4099.990000043073, - 4104.990000043182, - 4109.990000043291, - 4114.9900000434, - 4119.990000043509, - 4124.990000043618, - 4129.9900000437265, - 4134.990000043837, - 4139.990000043946, - 4144.990000044055, - 4149.990000044164, - 4154.990000044273, - 4159.990000044381, - 4164.990000044491, - 4169.9900000446005, - 4174.99000004471, - 4179.990000044819, - 4184.990000044928, - 4189.990000045037, - 4194.990000045146, - 4199.990000045255, - 4204.990000045365, - 4209.9900000454745, - 4214.990000045583, - 4219.990000045692, - 4224.990000045801, - 4229.99000004591, - 4234.990000046019, - 4239.9900000461275, - 4244.990000046238, - 4249.990000046347, - 4254.990000046456, - 4259.990000046565, - 4264.990000046674, - 4269.990000046783, - 4274.990000046892, - 4279.990000047002, - 4284.990000047112, - 4289.990000047221, - 4294.990000047329, - 4299.990000047438, - 4304.990000047547, - 4309.990000047656, - 4314.9900000477655, - 4319.990000047875, - 4324.990000047984, - 4329.990000048093, - 4334.990000048202, - 4339.990000048311, - 4344.99000004842, - 4349.9900000485295, - 4354.990000048639, - 4359.990000048748, - 4364.990000048857, - 4369.990000048966, - 4374.990000049074, - 4379.990000049184, - 4384.9900000492935, - 4389.990000049403, - 4394.990000049512, - 4399.990000049621, - 4404.99000004973, - 4409.990000049839, - 4414.990000049948, - 4419.9900000500575, - 4424.9900000501675, - 4429.990000050276, - 4434.990000050385, - 4439.990000050494, - 4444.990000050603, - 4449.990000050712, - 4454.9900000508205, - 4459.990000050931, - 4464.99000005104, - 4469.990000051149, - 4474.990000051258, - 4479.990000051367, - 4484.990000051476, - 4489.990000051585, - 4494.990000051695, - 4499.990000051805, - 4504.990000051913, - 4509.990000052022, - 4514.990000052131, - 4519.99000005224, - 4524.990000052349, - 4529.990000052458, - 4534.990000052568, - 4539.990000052677, - 4544.990000052786, - 4549.990000052895, - 4554.990000053004, - 4559.990000053112, - 4564.990000053223, - 4569.990000053332, - 4574.990000053441, - 4579.99000005355, - 4584.990000053659, - 4589.990000053767, - 4594.990000053877, - 4599.9900000539865, - 4604.990000054096, - 4609.990000054205, - 4614.990000054314, - 4619.990000054423, - 4624.990000054532, - 4629.990000054641, - 4634.9900000547495, - 4639.9900000548605, - 4644.990000054969, - 4649.990000055078, - 4654.990000055187, - 4659.990000055296, - 4664.990000055405, - 4669.9900000555135, - 4674.990000055624, - 4679.990000055733, - 4684.990000055842, - 4689.990000055951, - 4694.99000005606, - 4699.990000056169, - 4704.990000056278, - 4709.9900000563875, - 4714.990000056498, - 4719.990000056606, - 4724.990000056715, - 4729.990000056824, - 4734.990000056933, - 4739.990000057042, - 4744.990000057152, - 4749.990000057261, - 4754.990000057371, - 4759.990000057479, - 4764.990000057588, - 4769.990000057697, - 4774.990000057805, - 4779.990000057916, - 4784.990000058025, - 4789.990000058134, - 4794.990000058243, - 4799.990000058352, - 4804.990000058461, - 4809.99000005857, - 4814.9900000586795, - 4819.990000058789, - 4824.990000058898, - 4829.990000059007, - 4834.990000059116, - 4839.990000059225, - 4844.990000059334, - 4849.9900000594425, - 4854.9900000595535, - 4859.990000059662, - 4864.990000059771, - 4869.99000005988, - 4874.990000059989, - 4879.990000060098, - 4884.9900000602065, - 4889.990000060317, - 4894.990000060426, - 4899.990000060535, - 4904.990000060644, - 4909.990000060753, - 4914.990000060862, - 4919.990000060971, - 4924.9900000610805, - 4929.99000006119, - 4934.990000061299, - 4939.990000061408, - 4944.990000061517, - 4949.990000061626, - 4954.990000061735, - 4959.990000061845, - 4964.990000061954, - 4969.990000062063, - 4974.990000062172, - 4979.990000062281, - 4984.99000006239, - 4989.990000062498, - 4994.990000062609, - 4999.990000062718, - 5004.990000062827, - 5009.990000062936, - 5014.990000063045, - 5019.990000063154, - 5024.990000063263, - 5029.9900000633725, - 5034.990000063482, - 5039.990000063591, - 5044.9900000637, - 5049.990000063809, - 5054.990000063918, - 5059.990000064027, - 5064.9900000641355, - 5069.9900000642465, - 5074.990000064355, - 5079.990000064464, - 5084.990000064573, - 5089.990000064682, - 5094.990000064791, - 5099.9900000648995, - 5104.9900000650105, - 5109.990000065119, - 5114.990000065228, - 5119.990000065337, - 5124.990000065446, - 5129.990000065555, - 5134.990000065664, - 5139.9900000657735, - 5144.990000065884, - 5149.990000065992, - 5154.990000066101, - 5159.99000006621, - 5164.990000066319, - 5169.990000066428, - 5174.990000066538, - 5179.990000066647, - 5184.990000066756, - 5189.990000066865, - 5194.990000066974, - 5199.990000067083, - 5204.990000067191, - 5209.990000067302, - 5214.990000067411, - 5219.99000006752, - 5224.990000067629, - 5229.990000067738, - 5234.990000067847, - 5239.990000067956, - 5244.9900000680655, - 5249.990000068175, - 5254.990000068285, - 5259.990000068393, - 5264.990000068502, - 5269.990000068611, - 5274.99000006872, - 5279.9900000688285, - 5284.9900000689395, - 5289.990000069048, - 5294.990000069157, - 5299.990000069266, - 5304.990000069375, - 5309.990000069484, - 5314.9900000695925, - 5319.990000069703, - 5324.990000069812, - 5329.990000069921, - 5334.99000007003, - 5339.990000070139, - 5344.990000070248, - 5349.990000070357, - 5354.990000070466, - 5359.990000070577, - 5364.990000070685, - 5369.990000070794, - 5374.990000070903, - 5379.990000071012, - 5384.990000071121, - 5389.990000071231, - 5394.99000007134, - 5399.990000071449, - 5404.990000071558, - 5409.990000071667, - 5414.990000071776, - 5419.990000071884, - 5424.9900000719945, - 5429.990000072104, - 5434.990000072213, - 5439.990000072322, - 5444.990000072431, - 5449.990000072539, - 5454.990000072649, - 5459.990000072758, - 5464.990000072868, - 5469.990000072978, - 5474.990000073086, - 5479.990000073195, - 5484.990000073304, - 5489.990000073413, - 5494.9900000735215, - 5499.990000073632, - 5504.990000073742, - 5509.99000007385, - 5514.990000073959, - 5519.990000074069, - 5524.990000074177, - 5529.9900000742855, - 5534.9900000743955, - 5539.990000074505, - 5544.990000074614, - 5549.990000074723, - 5554.990000074831, - 5559.990000074941, - 5564.99000007505, - 5569.9900000751595, - 5574.990000075269, - 5579.990000075379, - 5584.990000075487, - 5589.990000075596, - 5594.990000075705, - 5599.990000075814, - 5604.990000075924, - 5609.990000076033, - 5614.990000076143, - 5619.990000076251, - 5624.99000007636, - 5629.990000076468, - 5634.990000076578, - 5639.990000076688, - 5644.990000076797, - 5649.990000076906, - 5654.990000077016, - 5659.990000077124, - 5664.990000077232, - 5669.990000077342, - 5674.990000077451, - 5679.9900000775615, - 5684.990000077671, - 5689.99000007778, - 5694.990000077888, - 5699.990000077997, - 5704.990000078105, - 5709.990000078215, - 5714.9900000783255, - 5719.990000078434, - 5724.990000078543, - 5729.990000078652, - 5734.990000078761, - 5739.990000078871, - 5744.990000078979, - 5749.990000079089, - 5754.990000079198, - 5759.990000079307, - 5764.990000079417, - 5769.990000079525, - 5774.990000079634, - 5779.9900000797425, - 5784.990000079853, - 5789.990000079963, - 5794.990000080071, - 5799.990000080179, - 5804.990000080289, - 5809.990000080398, - 5814.990000080506, - 5819.9900000806165, - 5824.9900000807265, - 5829.990000080835, - 5834.990000080944, - 5839.990000081053, - 5844.990000081162, - 5849.99000008127, - 5854.9900000813805, - 5859.99000008149, - 5864.990000081599, - 5869.990000081708, - 5874.990000081816, - 5879.990000081926, - 5884.990000082035, - 5889.9900000821435, - 5894.990000082254, - 5899.990000082364, - 5904.990000082472, - 5909.990000082581, - 5914.99000008269, - 5919.990000082799, - 5924.9900000829075, - 5929.990000083018, - 5934.990000083128, - 5939.990000083236, - 5944.990000083345, - 5949.990000083455, - 5954.990000083563, - 5959.9900000836715, - 5964.9900000837815, - 5969.990000083892, - 5974.990000084, - 5979.990000084109, - 5984.990000084217, - 5989.990000084327, - 5994.990000084436, - 5999.9900000845455, - 6004.990000084655, - 6009.990000084765, - 6014.990000084873, - 6019.990000084982, - 6024.990000085091, - 6029.9900000852, - 6034.99000008531, - 6039.990000085419, - 6044.990000085529, - 6049.990000085637, - 6054.990000085746, - 6059.990000085854, - 6064.990000085964, - 6069.990000086073, - 6074.990000086183, - 6079.990000086292, - 6084.990000086402, - 6089.99000008651, - 6094.990000086618, - 6099.990000086728, - 6104.990000086837, - 6109.9900000869475, - 6114.990000087056, - 6119.990000087166, - 6124.990000087274, - 6129.990000087383, - 6134.990000087491, - 6139.990000087601, - 6144.990000087711, - 6149.99000008782, - 6154.990000087929, - 6159.990000088038, - 6164.990000088147, - 6169.990000088255, - 6174.990000088365, - 6179.9900000884745, - 6184.990000088584, - 6189.990000088693, - 6194.990000088803, - 6199.990000088911, - 6204.99000008902, - 6209.990000089128, - 6214.990000089239, - 6219.9900000893485, - 6224.990000089457, - 6229.990000089565, - 6234.990000089675, - 6239.990000089784, - 6244.990000089892, - 6249.9900000900025, - 6254.9900000901125, - 6259.990000090221, - 6264.99000009033, - 6269.990000090439, - 6274.990000090548, - 6279.990000090656, - 6284.990000090766, - 6289.9900000908765, - 6294.990000090985, - 6299.990000091094, - 6304.990000091202, - 6309.990000091312, - 6314.990000091421, - 6319.9900000915295, - 6324.99000009164, - 6329.99000009175, - 6334.990000091858, - 6339.990000091967, - 6344.990000092076, - 6349.990000092185, - 6354.9900000922935, - 6359.9900000924035, - 6364.990000092514, - 6369.990000092622, - 6374.990000092731, - 6379.990000092839, - 6384.990000092949, - 6389.9900000930575, - 6394.9900000931675, - 6399.990000093278, - 6404.990000093386, - 6409.990000093495, - 6414.990000093603, - 6419.990000093713, - 6424.990000093822, - 6429.9900000939315, - 6434.990000094041, - 6439.990000094151, - 6444.990000094259, - 6449.990000094368, - 6454.990000094477, - 6459.990000094586, - 6464.990000094696, - 6469.990000094805, - 6474.990000094915, - 6479.990000095023, - 6484.990000095132, - 6489.99000009524, - 6494.99000009535, - 6499.990000095459, - 6504.990000095569, - 6509.990000095678, - 6514.990000095788, - 6519.990000095896, - 6524.990000096004, - 6529.990000096114, - 6534.990000096223, - 6539.9900000963335, - 6544.990000096442, - 6549.990000096552, - 6554.99000009666, - 6559.990000096769, - 6564.990000096877, - 6569.990000096987, - 6574.990000097097, - 6579.990000097206, - 6584.990000097315, - 6589.990000097424, - 6594.990000097533, - 6599.990000097641, - 6604.990000097751, - 6609.990000097861, - 6614.99000009797, - 6619.990000098079, - 6624.990000098189, - 6629.990000098297, - 6634.990000098406, - 6639.990000098514, - 6644.990000098625, - 6649.9900000987345, - 6654.990000098843, - 6659.990000098951, - 6664.990000099061, - 6669.99000009917, - 6674.990000099278, - 6679.990000099388, - 6684.9900000994985, - 6689.990000099607, - 6694.990000099716, - 6699.990000099825, - 6704.990000099934, - 6709.990000100042, - 6714.990000100152, - 6719.9900001002625, - 6724.990000100371, - 6729.99000010048, - 6734.99000010059, - 6739.990000100698, - 6744.990000100807, - 6749.9900001009155, - 6754.9900001010255, - 6759.990000101136, - 6764.990000101244, - 6769.990000101353, - 6774.990000101462, - 6779.990000101571, - 6784.9900001016795, - 6789.9900001017895, - 6794.9900001019, - 6799.990000102008, - 6804.990000102117, - 6809.990000102227, - 6814.990000102335, - 6819.990000102443, - 6824.9900001025535, - 6829.9900001026635, - 6834.990000102772, - 6839.990000102881, - 6844.990000102989, - 6849.990000103099, - 6854.990000103208, - 6859.9900001033175, - 6864.990000103427, - 6869.990000103537, - 6874.990000103645, - 6879.990000103754, - 6884.990000103863, - 6889.990000103972, - 6894.9900001040805, - 6899.990000104191, - 6904.990000104301, - 6909.990000104409, - 6914.990000104518, - 6919.990000104626, - 6924.990000104736, - 6929.990000104845, - 6934.990000104955, - 6939.990000105064, - 6944.990000105174, - 6949.990000105282, - 6954.99000010539, - 6959.9900001055, - 6964.990000105609, - 6969.990000105719, - 6974.990000105828, - 6979.990000105938, - 6984.990000106046, - 6989.990000106155, - 6994.990000106263, - 6999.990000106373, - 7004.990000106482, - 7009.990000106592, - 7014.990000106701, - 7019.99000010681, - 7024.990000106919, - 7029.990000107027, - 7034.990000107137, - 7039.990000107247, - 7044.990000107356, - 7049.990000107465, - 7054.990000107575, - 7059.990000107683, - 7064.990000107792, - 7069.9900001079, - 7074.9900001080105, - 7079.9900001081205, - 7084.990000108229, - 7089.990000108337, - 7094.990000108447, - 7099.990000108556, - 7104.990000108664, - 7109.990000108774, - 7114.9900001088845, - 7119.990000108993, - 7124.990000109102, - 7129.990000109211, - 7134.99000010932, - 7139.990000109428, - 7144.990000109538, - 7149.9900001096485, - 7154.990000109757, - 7159.990000109866, - 7164.990000109976, - 7169.990000110084, - 7174.990000110193, - 7179.9900001103015, - 7184.990000110412, - 7189.990000110522, - 7194.99000011063, - 7199.990000110739, - 7204.990000110848, - 7209.990000110957, - 7214.9900001110655, - 7219.990000111175, - 7224.990000111286, - 7229.990000111394, - 7234.990000111503, - 7239.990000111613, - 7244.990000111721, - 7249.990000111829, - 7254.990000111939, - 7259.9900001120495, - 7264.990000112158, - 7269.990000112267, - 7274.990000112375, - 7279.990000112485, - 7284.990000112594, - 7289.990000112702, - 7294.990000112813, - 7299.990000112923, - 7304.990000113031, - 7309.990000113141, - 7314.990000113249, - 7319.990000113358, - 7324.9900001134665, - 7329.990000113577, - 7334.990000113687, - 7339.990000113795, - 7344.990000113904, - 7349.990000114012, - 7354.990000114122, - 7359.990000114231, - 7364.990000114341, - 7369.99000011445, - 7374.99000011456, - 7379.990000114668, - 7384.990000114776, - 7389.990000114886, - 7394.990000114995, - 7399.990000115104, - 7404.990000115214, - 7409.990000115324, - 7414.990000115432, - 7419.990000115541, - 7424.990000115649, - 7429.990000115759, - 7434.990000115869, - 7439.990000115978, - 7444.990000116087, - 7449.990000116196, - 7454.990000116305, - 7459.990000116413, - 7464.990000116523, - 7469.9900001166325, - 7474.990000116742, - 7479.990000116851, - 7484.990000116959, - 7489.990000117069, - 7494.990000117178, - 7499.990000117287, - 7504.990000117396, - 7509.9900001175065, - 7514.990000117615, - 7519.990000117725, - 7524.990000117833, - 7529.990000117942, - 7534.99000011805, - 7539.9900001181595, - 7544.9900001182705, - 7549.990000118379, - 7554.990000118488, - 7559.990000118597, - 7564.990000118706, - 7569.990000118814, - 7574.990000118924, - 7579.990000119034, - 7584.990000119143, - 7589.990000119252, - 7594.990000119362, - 7599.99000011947, - 7604.990000119579, - 7609.9900001196875, - 7614.9900001197975, - 7619.990000119908, - 7624.990000120016, - 7629.990000120125, - 7634.990000120234, - 7639.990000120343, - 7644.990000120451, - 7649.9900001205615, - 7654.9900001206715, - 7659.99000012078, - 7664.990000120889, - 7669.990000120999, - 7674.990000121107, - 7679.990000121215, - 7684.990000121325, - 7689.9900001214355, - 7694.990000121544, - 7699.990000121653, - 7704.990000121761, - 7709.990000121871, - 7714.99000012198, - 7719.9900001220885, - 7724.990000122199, - 7729.990000122309, - 7734.990000122417, - 7739.990000122526, - 7744.990000122635, - 7749.990000122744, - 7754.9900001228525, - 7759.990000122963, - 7764.990000123073, - 7769.990000123181, - 7774.990000123291, - 7779.990000123398, - 7784.990000123508, - 7789.990000123617, - 7794.990000123726, - 7799.990000123836, - 7804.990000123946, - 7809.990000124054, - 7814.990000124162, - 7819.990000124272, - 7824.990000124381, - 7829.99000012449, - 7834.9900001246, - 7839.99000012471, - 7844.990000124818, - 7849.990000124927, - 7854.990000125035, - 7859.990000125145, - 7864.990000125254, - 7869.990000125364, - 7874.990000125473, - 7879.990000125582, - 7884.990000125691, - 7889.990000125799, - 7894.990000125909, - 7899.9900001260185, - 7904.990000126128, - 7909.990000126237, - 7914.990000126347, - 7919.990000126455, - 7924.990000126564, - 7929.990000126673, - 7934.990000126782, - 7939.9900001268925, - 7944.990000127001, - 7949.990000127109, - 7954.990000127219, - 7959.990000127328, - 7964.990000127436, - 7969.990000127546, - 7974.9900001276565, - 7979.990000127765, - 7984.990000127874, - 7989.990000127983, - 7994.990000128092, - 7999.9900001282, - 8004.9900001283095, - 8009.9900001284195, - 8014.990000128529, - 8019.990000128638, - 8024.990000128748, - 8029.990000128856, - 8034.990000128965, - 8039.990000129073, - 8044.990000129182, - 8049.990000129294, - 8054.990000129402, - 8059.990000129511, - 8064.99000012962, - 8069.990000129729, - 8074.990000129837, - 8079.9900001299475, - 8084.9900001300575, - 8089.990000130166, - 8094.990000130275, - 8099.990000130385, - 8104.990000130493, - 8109.990000130601, - 8114.9900001307105, - 8119.9900001308215, - 8124.99000013093, - 8129.990000131039, - 8134.990000131147, - 8139.990000131257, - 8144.990000131366, - 8149.9900001314745, - 8154.990000131585, - 8159.990000131695, - 8164.990000131803, - 8169.990000131912, - 8174.990000132021, - 8179.99000013213, - 8184.9900001322385, - 8189.9900001323485, - 8194.990000132457, - 8199.990000132566, - 8204.990000132675, - 8209.990000132784, - 8214.990000132893, - 8219.990000133002, - 8224.990000133112, - 8229.99000013322, - 8234.99000013333, - 8239.990000133439, - 8244.990000133548, - 8249.990000133657, - 8254.990000133766, - 8259.990000133876, - 8264.990000133985, - 8269.990000134094, - 8274.990000134203, - 8279.990000134312, - 8284.990000134421, - 8289.99000013453, - 8294.990000134641, - 8299.990000134749, - 8304.990000134858, - 8309.990000134967, - 8314.990000135076, - 8319.990000135185, - 8324.990000135294, - 8329.990000135404, - 8334.990000135513, - 8339.990000135622, - 8344.990000135731, - 8349.990000135842, - 8354.99000013595, - 8359.990000136058, - 8364.990000136168, - 8369.990000136277, - 8374.990000136386, - 8379.990000136495, - 8384.990000136604, - 8389.990000136713, - 8394.990000136822, - 8399.990000136931, - 8404.99000013704, - 8409.99000013715, - 8414.990000137259, - 8419.990000137368, - 8424.990000137477, - 8429.990000137586, - 8434.990000137695, - 8439.990000137805, - 8444.990000137914, - 8449.990000138023, - 8454.990000138132, - 8459.990000138241, - 8464.99000013835, - 8469.99000013846, - 8474.990000138569, - 8479.990000138678, - 8484.990000138787, - 8489.990000138896, - 8494.990000139005, - 8499.990000139114, - 8504.990000139222, - 8509.990000139334, - 8514.990000139442, - 8519.990000139549, - 8524.99000013966, - 8529.990000139771, - 8534.990000139878, - 8539.990000139987, - 8544.990000140097, - 8549.990000140206, - 8554.990000140315, - 8559.990000140424, - 8564.990000140533, - 8569.990000140642, - 8574.990000140751, - 8579.990000140859, - 8584.99000014097, - 8589.990000141079, - 8594.990000141188, - 8599.990000141297, - 8604.990000141406, - 8609.990000141515, - 8614.990000141623, - 8619.990000141734, - 8624.990000141843, - 8629.990000141952, - 8634.990000142061, - 8639.99000014217, - 8644.990000142281, - 8649.990000142388, - 8654.990000142498, - 8659.990000142607, - 8664.990000142716, - 8669.990000142825, - 8674.990000142934, - 8679.990000143043, - 8684.990000143152, - 8689.990000143262, - 8694.99000014337, - 8699.99000014348, - 8704.990000143589, - 8709.990000143698, - 8714.990000143807, - 8719.990000143916, - 8724.990000144026, - 8729.990000144135, - 8734.990000144244, - 8739.990000144353, - 8744.990000144462, - 8749.990000144571, - 8754.99000014468, - 8759.99000014479, - 8764.990000144899, - 8769.990000145008, - 8774.990000145117, - 8779.990000145226, - 8784.990000145335, - 8789.990000145444, - 8794.990000145553, - 8799.990000145663, - 8804.990000145772, - 8809.990000145881, - 8814.990000145992, - 8819.9900001461, - 8824.990000146208, - 8829.990000146317, - 8834.990000146427, - 8839.990000146536, - 8844.990000146645, - 8849.990000146754, - 8854.990000146863, - 8859.990000146972, - 8864.990000147081, - 8869.99000014719, - 8874.9900001473, - 8879.990000147409, - 8884.990000147518, - 8889.990000147627, - 8894.990000147736, - 8899.990000147845, - 8904.990000147955, - 8909.990000148064, - 8914.990000148173, - 8919.990000148282, - 8924.990000148391, - 8929.9900001485, - 8934.99000014861, - 8939.99000014872, - 8944.990000148828, - 8949.990000148937, - 8954.990000149046, - 8959.990000149155, - 8964.990000149264, - 8969.990000149373, - 8974.990000149483, - 8979.990000149592, - 8984.990000149699, - 8989.99000014981, - 8994.990000149919, - 8999.990000150028, - 9004.990000150137, - 9009.990000150246, - 9014.990000150356, - 9019.990000150465, - 9024.990000150574, - 9029.990000150683, - 9034.990000150792, - 9039.9900001509, - 9044.990000151009, - 9049.990000151121, - 9054.990000151229, - 9059.990000151338, - 9064.990000151447, - 9069.990000151556, - 9074.990000151663, - 9079.990000151774, - 9084.990000151884, - 9089.990000151993, - 9094.990000152102, - 9099.990000152213, - 9104.99000015232, - 9109.99000015243, - 9114.990000152538, - 9119.990000152648, - 9124.990000152757, - 9129.990000152866, - 9134.990000152977, - 9139.990000153084, - 9144.990000153191, - 9149.990000153302, - 9154.990000153412, - 9159.99000015352, - 9164.99000015363, - 9169.99000015374, - 9174.990000153848, - 9179.990000153955, - 9184.990000154066, - 9189.990000154176, - 9194.990000154283, - 9199.990000154394, - 9204.990000154505, - 9209.990000154612, - 9214.990000154721, - 9219.990000154829, - 9224.99000015494, - 9229.990000155047, - 9234.990000155158, - 9239.990000155269, - 9244.990000155376, - 9249.990000155483, - 9254.990000155594, - 9259.990000155703, - 9264.990000155813, - 9269.990000155922, - 9274.99000015603, - 9279.99000015614, - 9284.99000015625, - 9289.990000156358, - 9294.99000015647, - 9299.990000156577, - 9304.990000156686, - 9309.990000156795, - 9314.990000156904, - 9319.990000157011, - 9324.990000157122, - 9329.990000157231, - 9334.99000015734, - 9339.99000015745, - 9344.99000015756, - 9349.990000157668, - 9354.990000157775, - 9359.990000157886, - 9364.990000157995, - 9369.990000158105, - 9374.990000158214, - 9379.990000158325, - 9384.990000158432, - 9389.99000015854, - 9394.99000015865, - 9399.99000015876, - 9404.990000158868, - 9409.990000158978, - 9414.990000159089, - 9419.990000159196, - 9424.990000159305, - 9429.990000159414, - 9434.990000159523, - 9439.990000159632, - 9444.990000159742, - 9449.99000015985, - 9454.99000015996, - 9459.990000160069, - 9464.990000160178, - 9469.990000160287, - 9474.990000160395, - 9479.990000160507, - 9484.990000160617, - 9489.990000160724, - 9494.990000160833, - 9499.990000160942, - 9504.990000161053, - 9509.99000016116, - 9514.990000161271, - 9519.990000161379, - 9524.990000161488, - 9529.990000161595, - 9534.990000161706, - 9539.990000161817, - 9544.990000161924, - 9549.990000162034, - 9554.990000162143, - 9559.990000162252, - 9564.99000016236, - 9569.99000016247, - 9574.99000016258, - 9579.990000162688, - 9584.990000162798, - 9589.990000162908, - 9594.990000163016, - 9599.990000163123, - 9604.990000163234, - 9609.990000163343, - 9614.990000163452, - 9619.99000016356, - 9624.99000016367, - 9629.99000016378, - 9634.990000163887, - 9639.990000163998, - 9644.990000164107, - 9649.990000164216, - 9654.990000164324, - 9659.990000164436, - 9664.990000164544, - 9669.990000164653, - 9674.990000164762, - 9679.990000164871, - 9684.990000164978, - 9689.99000016509, - 9694.9900001652, - 9699.990000165308, - 9704.990000165417, - 9709.990000165526, - 9714.990000165635, - 9719.990000165744, - 9724.990000165852, - 9729.990000165964, - 9734.990000166072, - 9739.990000166179, - 9744.99000016629, - 9749.990000166401, - 9754.990000166508, - 9759.990000166616, - 9764.990000166728, - 9769.990000166836, - 9774.990000166945, - 9779.990000167054, - 9784.990000167165, - 9789.990000167272, - 9794.99000016738, - 9799.99000016749, - 9804.9900001676, - 9809.990000167707, - 9814.990000167818, - 9819.990000167929, - 9824.990000168036, - 9829.990000168145, - 9834.990000168254, - 9839.990000168364, - 9844.990000168471, - 9849.990000168582, - 9854.990000168691, - 9859.9900001688, - 9864.99000016891, - 9869.990000169018, - 9874.990000169128, - 9879.990000169237, - 9884.990000169346, - 9889.990000169455, - 9894.990000169564, - 9899.990000169671, - 9904.99000016978, - 9909.990000169893, - 9914.99000017, - 9919.99000017011, - 9924.990000170219, - 9929.990000170328, - 9934.990000170435, - 9939.990000170546, - 9944.990000170656, - 9949.990000170765, - 9954.990000170874, - 9959.990000170985, - 9964.990000171092, - 9969.9900001712, - 9974.99000017131, - 9979.990000171421, - 9984.990000171529, - 9989.990000171638, - 9994.990000171749, - 9999.990000171856, - 10004.990000171963, - 10009.990000172074, - 10014.990000172183, - 10019.990000172293, - 10024.990000172402, - 10029.990000172513, - 10034.99000017262, - 10039.99000017273, - 10044.990000172838, - 10049.990000172947, - 10054.990000173055, - 10059.990000173166, - 10064.990000173277, - 10069.990000173384, - 10074.990000173493, - 10079.990000173602, - 10084.990000173711, - 10089.99000017382, - 10094.99000017393, - 10099.99000017404, - 10104.990000174148, - 10109.990000174257, - 10114.990000174366, - 10119.990000174475, - 10124.990000174585, - 10129.990000174694, - 10134.990000174803, - 10139.990000174912, - 10144.99000017502, - 10149.99000017513, - 10154.990000175241, - 10159.990000175349, - 10164.990000175458, - 10169.990000175567, - 10174.990000175676, - 10179.990000175783, - 10184.990000175894, - 10189.990000176003, - 10194.990000176113, - 10199.990000176222, - 10204.990000176329, - 10209.99000017644, - 10214.990000176547, - 10219.990000176658, - 10224.990000176767, - 10229.990000176876, - 10234.990000176986, - 10239.990000177097, - 10244.990000177204, - 10249.990000177311, - 10254.990000177422, - 10259.990000177531, - 10264.99000017764, - 10269.99000017775, - 10274.99000017786, - 10279.990000177968, - 10284.990000178077, - 10289.990000178186, - 10294.990000178295, - 10299.990000178404, - 10304.990000178514, - 10309.990000178625, - 10314.990000178732, - 10319.990000178841, - 10324.99000017895, - 10329.99000017906, - 10334.990000179167, - 10339.99000017928, - 10344.990000179389, - 10349.990000179496, - 10354.990000179605, - 10359.990000179714, - 10364.990000179825, - 10369.990000179932, - 10374.990000180042, - 10379.99000018015, - 10384.990000180258, - 10389.990000180367, - 10394.990000180478, - 10399.990000180589, - 10404.990000180696, - 10409.990000180806, - 10414.990000180915, - 10419.990000181024, - 10424.990000181131, - 10429.990000181242, - 10434.990000181353, - 10439.99000018146, - 10444.99000018157, - 10449.99000018168, - 10454.990000181788, - 10459.990000181895, - 10464.990000182006, - 10469.990000182115, - 10474.990000182224, - 10479.990000182332, - 10484.990000182444, - 10489.990000182552, - 10494.990000182659, - 10499.99000018277, - 10504.99000018288, - 10509.990000182988, - 10514.990000183096, - 10519.990000183208, - 10524.990000183316, - 10529.990000183425, - 10534.990000183534, - 10539.990000183643, - 10544.990000183752, - 10549.99000018386, - 10554.99000018397, - 10559.99000018408, - 10564.990000184189, - 10569.990000184298, - 10574.990000184407, - 10579.990000184516, - 10584.990000184624, - 10589.990000184736, - 10594.990000184844, - 10599.990000184953, - 10604.990000185062, - 10609.990000185173, - 10614.99000018528, - 10619.990000185391, - 10624.9900001855, - 10629.990000185608, - 10634.990000185717, - 10639.990000185826, - 10644.990000185937, - 10649.990000186044, - 10654.990000186152, - 10659.990000186262, - 10664.990000186372, - 10669.990000186479, - 10674.99000018659, - 10679.9900001867, - 10684.990000186808, - 10689.990000186917, - 10694.990000187026, - 10699.990000187136, - 10704.990000187243, - 10709.990000187354, - 10714.990000187465, - 10719.990000187572, - 10724.99000018768, - 10729.99000018779, - 10734.9900001879, - 10739.990000188009, - 10744.990000188118, - 10749.990000188227, - 10754.990000188336, - 10759.990000188443, - 10764.990000188553, - 10769.990000188665, - 10774.990000188773, - 10779.990000188882, - 10784.990000188991, - 10789.9900001891, - 10794.99000018921, - 10799.990000189318, - 10804.990000189428, - 10809.990000189537, - 10814.990000189646, - 10819.990000189757, - 10824.990000189864, - 10829.990000189971, - 10834.990000190082, - 10839.990000190191, - 10844.9900001903, - 10849.99000019041, - 10854.99000019052, - 10859.990000190628, - 10864.990000190735, - 10869.990000190846, - 10874.990000190955, - 10879.990000191065, - 10884.990000191174, - 10889.990000191285, - 10894.990000191392, - 10899.9900001915, - 10904.990000191608, - 10909.99000019172, - 10914.990000191827, - 10919.990000191938, - 10924.990000192049, - 10929.990000192156, - 10934.990000192265, - 10939.990000192374, - 10944.990000192483, - 10949.99000019259, - 10954.990000192702, - 10959.990000192809, - 10964.99000019292, - 10969.99000019303, - 10974.990000193138, - 10979.990000193247, - 10984.990000193357, - 10989.990000193466, - 10994.990000193575, - 10999.990000193684, - 11004.990000193791, - 11009.990000193902, - 11014.990000194011, - 11019.99000019412, - 11024.990000194228, - 11029.99000019434, - 11034.990000194448, - 11039.990000194555, - 11044.990000194666, - 11049.990000194775, - 11054.990000194883, - 11059.990000194995, - 11064.990000195105, - 11069.990000195212, - 11074.99000019532, - 11079.99000019543, - 11084.99000019554, - 11089.990000195647, - 11094.990000195758, - 11099.990000195869, - 11104.990000195976, - 11109.990000196083, - 11114.990000196194, - 11119.990000196303, - 11124.99000019641, - 11129.990000196522, - 11134.99000019663, - 11139.99000019674, - 11144.990000196849, - 11149.990000196958, - 11154.990000197067, - 11159.990000197175, - 11164.990000197286, - 11169.990000197395, - 11174.990000197506, - 11179.990000197613, - 11184.990000197722, - 11189.990000197831, - 11194.990000197939, - 11199.99000019805, - 11204.990000198159, - 11209.99000019827, - 11214.990000198377, - 11219.990000198486, - 11224.990000198597, - 11229.990000198704, - 11234.990000198814, - 11239.990000198923, - 11244.990000199034, - 11249.990000199141, - 11254.99000019925, - 11259.990000199361, - 11264.990000199468, - 11269.990000199576, - 11274.990000199687, - 11279.990000199796, - 11284.990000199905, - 11289.990000200014, - 11294.990000200125, - 11299.990000200232, - 11304.99000020034, - 11309.990000200449, - 11314.99000020056, - 11319.990000200669, - 11324.990000200778, - 11329.990000200889, - 11334.990000200996, - 11339.990000201104, - 11344.990000201216, - 11349.990000201324, - 11354.990000201433, - 11359.990000201544, - 11364.990000201653, - 11369.99000020176, - 11374.99000020187, - 11379.99000020198, - 11384.990000202088, - 11389.990000202195, - 11394.990000202308, - 11399.990000202417, - 11404.990000202524, - 11409.990000202632, - 11414.990000202744, - 11419.990000202852, - 11424.990000202959, - 11429.990000203072, - 11434.99000020318, - 11439.990000203288, - 11444.990000203396, - 11449.990000203506, - 11454.990000203616, - 11459.990000203723, - 11464.990000203834, - 11469.990000203943, - 11474.990000204052, - 11479.99000020416, - 11484.99000020427, - 11489.99000020438, - 11494.990000204487, - 11499.990000204598, - 11504.990000204707, - 11509.990000204816, - 11514.990000204923, - 11519.990000205034, - 11524.990000205144, - 11529.99000020525, - 11534.990000205362, - 11539.990000205471, - 11544.990000205578, - 11549.990000205691, - 11554.990000205798, - 11559.990000205908, - 11564.990000206015, - 11569.990000206126, - 11574.990000206235, - 11579.990000206346, - 11584.990000206453, - 11589.990000206562, - 11594.990000206672, - 11599.99000020678, - 11604.99000020689, - 11609.990000206999, - 11614.990000207106, - 11619.990000207217, - 11624.990000207326, - 11629.990000207437, - 11634.990000207545, - 11639.990000207654, - 11644.990000207763, - 11649.99000020787, - 11654.990000207981, - 11659.99000020809, - 11664.990000208201, - 11669.990000208309, - 11674.990000208418, - 11679.990000208529, - 11684.990000208636, - 11689.990000208745, - 11694.990000208854, - 11699.990000208965, - 11704.990000209073, - 11709.990000209182, - 11714.990000209289, - 11719.9900002094, - 11724.99000020951, - 11729.990000209618, - 11734.99000020973, - 11739.990000209837, - 11744.990000209946, - 11749.990000210057, - 11754.990000210164, - 11759.990000210271, - 11764.99000021038, - 11769.990000210493, - 11774.9900002106, - 11779.99000021071, - 11784.99000021082, - 11789.990000210928, - 11794.990000211035, - 11799.990000211144, - 11804.990000211255, - 11809.990000211365, - 11814.990000211475, - 11819.990000211585, - 11824.990000211692, - 11829.9900002118, - 11834.990000211908, - 11839.990000212021, - 11844.990000212129, - 11849.99000021224, - 11854.990000212349, - 11859.990000212456, - 11864.990000212563, - 11869.990000212674, - 11874.990000212783, - 11879.990000212892, - 11884.990000213003, - 11889.99000021311, - 11894.99000021322, - 11899.990000213327, - 11904.990000213438, - 11909.990000213547, - 11914.990000213655, - 11919.990000213767, - 11924.990000213877, - 11929.990000213984, - 11934.990000214091, - 11939.990000214202, - 11944.990000214311, - 11949.990000214422, - 11954.99000021453, - 11959.99000021464, - 11964.990000214748, - 11969.990000214855, - 11974.990000214966, - 11979.990000215075, - 11984.990000215183, - 11989.990000215294, - 11994.990000215403, - 11999.990000215512, - 12004.990000215621, - 12009.99000021573, - 12014.99000021584, - 12019.990000215947, - 12024.990000216058, - 12029.990000216167, - 12034.990000216278, - 12039.990000216385, - 12044.990000216494, - 12049.990000216603, - 12054.99000021671, - 12059.99000021682, - 12064.990000216929, - 12069.990000217042, - 12074.990000217149, - 12079.990000217258, - 12084.990000217369, - 12089.990000217476, - 12094.990000217584, - 12099.990000217695, - 12104.990000217806, - 12109.990000217913, - 12114.990000218022, - 12119.990000218133, - 12124.99000021824, - 12129.99000021835, - 12134.990000218459, - 12139.990000218568, - 12144.990000218677, - 12149.990000218786, - 12154.990000218897, - 12159.990000219004, - 12164.990000219112, - 12169.990000219224, - 12174.990000219332, - 12179.99000021944, - 12184.99000021955, - 12189.990000219657, - 12194.990000219768, - 12199.990000219876, - 12204.990000219988, - 12209.990000220096, - 12214.990000220205, - 12219.990000220316, - 12224.990000220425, - 12229.990000220532, - 12234.99000022064, - 12239.990000220749, - 12244.99000022086, - 12249.990000220967, - 12254.99000022108, - 12259.990000221189, - 12264.990000221296, - 12269.990000221404, - 12274.990000221514, - 12279.990000221624, - 12284.990000221731, - 12289.99000022184, - 12294.990000221953, - 12299.99000022206, - 12304.990000222171, - 12309.990000222278, - 12314.990000222388, - 12319.990000222495, - 12324.990000222606, - 12329.990000222715, - 12334.990000222824, - 12339.990000222931, - 12344.990000223042, - 12349.990000223152, - 12354.990000223259, - 12359.99000022337, - 12364.990000223479, - 12369.990000223588, - 12374.990000223695, - 12379.990000223806, - 12384.990000223916, - 12389.990000224023, - 12394.990000224134, - 12399.990000224243, - 12404.990000224354, - 12409.990000224461, - 12414.99000022457, - 12419.99000022468, - 12424.990000224787, - 12429.990000224898, - 12434.990000225007, - 12439.990000225118, - 12444.990000225225, - 12449.990000225334, - 12454.990000225444, - 12459.990000225553, - 12464.990000225662, - 12469.990000225771, - 12474.990000225878, - 12479.990000225991, - 12484.990000226098, - 12489.99000022621, - 12494.990000226317, - 12499.990000226426, - 12504.990000226535, - 12509.990000226642, - 12514.990000226753, - 12519.990000226862, - 12524.990000226973, - 12529.99000022708, - 12534.99000022719, - 12539.9900002273, - 12544.990000227408, - 12549.990000227517, - 12554.990000227626, - 12559.990000227737, - 12564.990000227845, - 12569.990000227954, - 12574.990000228065, - 12579.990000228172, - 12584.99000022828, - 12589.99000022839, - 12594.990000228501, - 12599.990000228609, - 12604.990000228718, - 12609.990000228829, - 12614.990000228936, - 12619.990000229043, - 12624.990000229152, - 12629.990000229265, - 12634.990000229373, - 12639.990000229482, - 12644.990000229589, - 12649.9900002297, - 12654.990000229807, - 12659.990000229916, - 12664.990000230027, - 12669.990000230137, - 12674.990000230247, - 12679.990000230357, - 12684.990000230464, - 12689.990000230571, - 12694.99000023068, - 12699.990000230791, - 12704.9900002309, - 12709.990000231008, - 12714.99000023112, - 12719.990000231228, - 12724.990000231335, - 12729.990000231446, - 12734.990000231555, - 12739.990000231664, - 12744.990000231775, - 12749.990000231885, - 12754.990000231992, - 12759.9900002321, - 12764.99000023221, - 12769.99000023232, - 12774.990000232428, - 12779.99000023254, - 12784.990000232649, - 12789.990000232756, - 12794.990000232863, - 12799.990000232974, - 12804.990000233083, - 12809.99000023319, - 12814.990000233302, - 12819.990000233409, - 12824.99000023352, - 12829.990000233627, - 12834.990000233738, - 12839.990000233847, - 12844.990000233955, - 12849.990000234066, - 12854.990000234175, - 12859.990000234284, - 12864.990000234393, - 12869.990000234502, - 12874.990000234611, - 12879.990000234719, - 12884.99000023483, - 12889.990000234939, - 12894.99000023505, - 12899.990000235157, - 12904.990000235266, - 12909.990000235375, - 12914.990000235483, - 12919.990000235592, - 12924.990000235703, - 12929.990000235814, - 12934.99000023592, - 12939.99000023603, - 12944.990000236141, - 12949.990000236248, - 12954.990000236356, - 12959.990000236467, - 12964.990000236578, - 12969.990000236685, - 12974.990000236794, - 12979.990000236905, - 12984.990000237012, - 12989.99000023712, - 12994.990000237229, - 12999.990000237342, - 13004.990000237449, - 13009.990000237558, - 13014.990000237669, - 13019.990000237776, - 13024.990000237884, - 13029.990000237996, - 13034.990000238104, - 13039.990000238213, - 13044.990000238322, - 13049.990000238433, - 13054.99000023854, - 13059.99000023865, - 13064.99000023876, - 13069.990000238868, - 13074.990000238977, - 13079.990000239088, - 13084.990000239197, - 13089.990000239304, - 13094.990000239412, - 13099.99000023952, - 13104.990000239632, - 13109.99000023974, - 13114.990000239852, - 13119.99000023996, - 13124.990000240068, - 13129.990000240176, - 13134.990000240286, - 13139.990000240396, - 13144.990000240503, - 13149.990000240612, - 13154.990000240725, - 13159.990000240832, - 13164.99000024094, - 13169.99000024105, - 13174.99000024116, - 13179.990000241267, - 13184.990000241378, - 13189.990000241487, - 13194.990000241596, - 13199.990000241703, - 13204.990000241814, - 13209.990000241924, - 13214.99000024203, - 13219.990000242142, - 13224.990000242251, - 13229.990000242358, - 13234.990000242471, - 13239.990000242578, - 13244.990000242688, - 13249.990000242795, - 13254.990000242906, - 13259.990000243015, - 13264.990000243126, - 13269.990000243233, - 13274.990000243342, - 13279.990000243452, - 13284.990000243559, - 13289.99000024367, - 13294.990000243779, - 13299.99000024389, - 13304.990000243997, - 13309.990000244106, - 13314.990000244215, - 13319.990000244325, - 13324.990000244434, - 13329.990000244543, - 13334.99000024465, - 13339.990000244761, - 13344.99000024487, - 13349.990000244981, - 13354.990000245089, - 13359.990000245198, - 13364.990000245307, - 13369.990000245414, - 13374.990000245525, - 13379.990000245634, - 13384.990000245745, - 13389.990000245853, - 13394.990000245962, - 13399.990000246069, - 13404.99000024618, - 13409.990000246291, - 13414.990000246398, - 13419.99000024651, - 13424.990000246617, - 13429.990000246726, - 13434.990000246837, - 13439.990000246944, - 13444.990000247051, - 13449.990000247162, - 13454.990000247273, - 13459.99000024738, - 13464.99000024749, - 13469.9900002476, - 13474.990000247708, - 13479.990000247815, - 13484.990000247924, - 13489.990000248037, - 13494.990000248144, - 13499.990000248254, - 13504.990000248365, - 13509.990000248472, - 13514.99000024858, - 13519.990000248692, - 13524.9900002488, - 13529.990000248908, - 13534.99000024902, - 13539.990000249129, - 13544.990000249236, - 13549.990000249343, - 13554.990000249452, - 13559.990000249563, - 13564.990000249672, - 13569.990000249783, - 13574.99000024989, - 13579.99000025, - 13584.990000250107, - 13589.990000250218, - 13594.990000250327, - 13599.990000250436, - 13604.990000250547, - 13609.990000250657, - 13614.990000250764, - 13619.990000250871, - 13624.990000250982, - 13629.990000251091, - 13634.9900002512, - 13639.990000251308, - 13644.99000025142, - 13649.990000251528, - 13654.990000251635, - 13659.990000251746, - 13664.990000251855, - 13669.990000251963, - 13674.990000252075, - 13679.990000252184, - 13684.990000252292, - 13689.9900002524, - 13694.99000025251, - 13699.99000025262, - 13704.990000252727, - 13709.990000252837, - 13714.990000252948, - 13719.990000253056, - 13724.990000253165, - 13729.990000253274, - 13734.990000253383, - 13739.99000025349, - 13744.990000253601, - 13749.990000253709, - 13754.990000253822, - 13759.990000253929, - 13764.990000254038, - 13769.990000254147, - 13774.990000254254, - 13779.990000254364, - 13784.990000254475, - 13789.990000254586, - 13794.990000254693, - 13799.990000254802, - 13804.990000254913, - 13809.99000025502, - 13814.99000025513, - 13819.990000255239, - 13824.99000025535, - 13829.990000255457, - 13834.990000255566, - 13839.990000255677, - 13844.990000255784, - 13849.990000255892, - 13854.990000256003, - 13859.990000256112, - 13864.99000025622, - 13869.99000025633, - 13874.99000025644, - 13879.990000256548, - 13884.990000256656, - 13889.990000256768, - 13894.990000256876, - 13899.990000256985, - 13904.990000257094, - 13909.990000257205, - 13914.990000257312, - 13919.99000025742, - 13924.990000257529, - 13929.990000257641, - 13934.990000257749, - 13939.99000025786, - 13944.990000257969, - 13949.990000258076, - 13954.990000258183, - 13959.990000258293, - 13964.990000258404, - 13969.990000258513, - 13974.990000258624, - 13979.990000258733, - 13984.99000025884, - 13989.99000025895, - 13994.990000259058, - 13999.990000259168, - 14004.990000259275, - 14009.990000259388, - 14014.990000259497, - 14019.990000259604, - 14024.990000259711, - 14029.990000259822, - 14034.990000259932, - 14039.99000026004, - 14044.99000026015, - 14049.990000260259, - 14054.990000260368, - 14059.990000260475, - 14064.990000260586, - 14069.990000260696, - 14074.990000260803, - 14079.990000260914, - 14084.990000261023, - 14089.990000261132, - 14094.99000026124, - 14099.99000026135, - 14104.99000026146, - 14109.990000261567, - 14114.990000261678, - 14119.990000261787, - 14124.990000261898, - 14129.990000262005, - 14134.990000262114, - 14139.990000262223, - 14144.99000026233, - 14149.990000262442, - 14154.990000262549, - 14159.990000262658, - 14164.99000026277, - 14169.990000262878, - 14174.990000262987, - 14179.990000263097, - 14184.990000263206, - 14189.990000263315, - 14194.990000263422, - 14199.990000263533, - 14204.990000263642, - 14209.990000263753, - 14214.99000026386, - 14219.99000026397, - 14224.990000264079, - 14229.990000264186, - 14234.990000264297, - 14239.990000264406, - 14244.990000264517, - 14249.990000264625, - 14254.990000264734, - 14259.990000264845, - 14264.990000264952, - 14269.990000265061, - 14274.990000265168, - 14279.990000265281, - 14284.990000265389, - 14289.990000265498, - 14294.990000265609, - 14299.990000265716, - 14304.990000265825, - 14309.990000265934, - 14314.990000266045, - 14319.990000266152, - 14324.990000266262, - 14329.990000266369, - 14334.990000266482, - 14339.990000266587, - 14344.9900002667, - 14349.99000026681, - 14354.990000266916, - 14359.990000267026, - 14364.990000267137, - 14369.990000267244, - 14374.990000267351, - 14379.99000026746, - 14384.990000267571, - 14389.99000026768, - 14394.990000267791, - 14399.9900002679, - 14404.990000268008, - 14409.990000268115, - 14414.990000268224, - 14419.990000268335, - 14424.990000268444, - 14429.990000268555, - 14434.990000268665, - 14439.990000268772, - 14444.99000026888, - 14449.990000268992, - 14454.9900002691, - 14459.990000269208, - 14464.99000026932, - 14469.990000269428, - 14474.990000269536, - 14479.990000269643, - 14484.990000269754, - 14489.990000269863, - 14494.990000269972, - 14499.990000270083, - 14504.99000027019, - 14509.9900002703, - 14514.990000270407, - 14519.990000270518, - 14524.990000270627, - 14529.990000270735, - 14534.990000270845, - 14539.990000270956, - 14544.990000271064, - 14549.990000271171, - 14554.990000271282, - 14559.990000271391, - 14564.990000271499, - 14569.99000027161, - 14574.99000027172, - 14579.990000271828, - 14584.990000271937, - 14589.990000272046, - 14594.990000272155, - 14599.990000272262, - 14604.990000272373, - 14609.990000272483, - 14614.990000272594, - 14619.9900002727, - 14624.99000027281, - 14629.99000027292, - 14634.990000273026, - 14639.990000273137, - 14644.990000273247, - 14649.990000273358, - 14654.990000273465, - 14659.990000273574, - 14664.990000273685, - 14669.990000273792, - 14674.9900002739, - 14679.990000274009, - 14684.990000274118, - 14689.990000274229, - 14694.990000274338, - 14699.990000274449, - 14704.990000274556, - 14709.990000274664, - 14714.990000274775, - 14719.990000274884, - 14724.990000274993, - 14729.990000275102, - 14734.990000275213, - 14739.99000027532, - 14744.990000275433, - 14749.990000275537, - 14754.990000275648, - 14759.990000275757, - 14764.990000275866, - 14769.990000275977, - 14774.990000276084, - 14779.990000276191, - 14784.9900002763, - 14789.990000276412, - 14794.990000276519, - 14799.990000276632, - 14804.99000027674, - 14809.990000276848, - 14814.990000276955, - 14819.990000277065, - 14824.990000277176, - 14829.990000277285, - 14834.990000277396, - 14839.990000277505, - 14844.990000277612, - 14849.99000027772, - 14854.990000277832, - 14859.99000027794, - 14864.990000278047, - 14869.99000027816, - 14874.990000278269, - 14879.990000278376, - 14884.990000278483, - 14889.990000278594, - 14894.990000278704, - 14899.99000027881, - 14904.990000278922, - 14909.990000279033, - 14914.99000027914, - 14919.990000279251, - 14924.990000279358, - 14929.990000279467, - 14934.990000279575, - 14939.990000279686, - 14944.990000279795, - 14949.990000279904, - 14954.990000280011, - 14959.990000280122, - 14964.990000280231, - 14969.990000280342, - 14974.99000028045, - 14979.990000280559, - 14984.99000028067, - 14989.990000280777, - 14994.990000280886, - 14999.990000280995, - 15004.990000281103, - 15009.990000281214, - 15014.990000281323, - 15019.990000281434, - 15024.990000281541, - 15029.99000028165, - 15034.99000028176, - 15039.990000281869, - 15044.990000281978, - 15049.990000282087, - 15054.990000282194, - 15059.990000282305, - 15064.990000282414, - 15069.990000282525, - 15074.990000282633, - 15079.990000282742, - 15084.990000282849, - 15089.990000282958, - 15094.99000028307, - 15099.990000283178, - 15104.99000028329, - 15109.990000283397, - 15114.990000283506, - 15119.990000283617, - 15124.990000283724, - 15129.990000283833, - 15134.990000283942, - 15139.990000284053, - 15144.99000028416, - 15149.990000284268, - 15154.99000028438, - 15159.990000284488, - 15164.990000284597, - 15169.990000284706, - 15174.990000284817, - 15179.990000284924, - 15184.990000285034, - 15189.990000285145, - 15194.990000285252, - 15199.99000028536, - 15204.990000285468, - 15209.990000285581, - 15214.990000285688, - 15219.990000285798, - 15224.990000285909, - 15229.990000286016, - 15234.990000286123, - 15239.990000286232, - 15244.990000286345, - 15249.990000286452, - 15254.990000286563, - 15259.99000028667, - 15264.990000286782, - 15269.990000286887, - 15274.990000286996, - 15279.990000287107, - 15284.990000287216, - 15289.990000287327, - 15294.990000287436, - 15299.990000287544, - 15304.990000287651, - 15309.990000287762, - 15314.990000287871, - 15319.99000028798, - 15324.990000288091, - 15329.9900002882, - 15334.990000288308, - 15339.990000288415, - 15344.990000288526, - 15349.990000288635, - 15354.990000288744, - 15359.990000288852, - 15364.990000288964, - 15369.990000289072, - 15374.990000289183, - 15379.99000028929, - 15384.9900002894, - 15389.990000289506, - 15394.990000289617, - 15399.990000289728, - 15404.990000289836, - 15409.990000289943, - 15414.990000290054, - 15419.990000290163, - 15424.99000029027, - 15429.990000290381, - 15434.99000029049, - 15439.9900002906, - 15444.990000290709, - 15449.990000290818, - 15454.990000290927, - 15459.990000291034, - 15464.990000291145, - 15469.990000291255, - 15474.990000291366, - 15479.990000291473, - 15484.990000291582, - 15489.990000291691, - 15494.990000291798, - 15499.99000029191, - 15504.990000292019, - 15509.99000029213, - 15514.990000292237, - 15519.990000292346, - 15524.990000292457, - 15529.990000292564, - 15534.990000292672, - 15539.990000292782, - 15544.990000292893, - 15549.990000293, - 15554.99000029311, - 15559.99000029322, - 15564.990000293328, - 15569.990000293436, - 15574.990000293545, - 15579.990000293656, - 15584.990000293765, - 15589.990000293874, - 15594.990000293985, - 15599.990000294092, - 15604.9900002942, - 15609.990000294309, - 15614.99000029442, - 15619.990000294529, - 15624.990000294638, - 15629.990000294749, - 15634.990000294856, - 15639.990000294963, - 15644.990000295073, - 15649.990000295184, - 15654.990000295293, - 15659.990000295404, - 15664.990000295513, - 15669.990000295618, - 15674.990000295733, - 15679.990000295837, - 15684.990000295948, - 15689.990000296057, - 15694.990000296168, - 15699.990000296277, - 15704.990000296384, - 15709.990000296491, - 15714.990000296602, - 15719.990000296712, - 15724.990000296819, - 15729.990000296932, - 15734.99000029704, - 15739.990000297148, - 15744.990000297255, - 15749.990000297366, - 15754.990000297475, - 15759.990000297583, - 15764.990000297694, - 15769.990000297805, - 15774.990000297912, - 15779.99000029802, - 15784.990000298132, - 15789.99000029824, - 15794.990000298347, - 15799.990000298458, - 15804.990000298567, - 15809.990000298676, - 15814.990000298783, - 15819.990000298894, - 15824.990000299003, - 15829.99000029911, - 15834.990000299222, - 15839.99000029933, - 15844.990000299442, - 15849.990000299551, - 15854.990000299658, - 15859.990000299767, - 15864.990000299875, - 15869.990000299986, - 15874.990000300095, - 15879.990000300206, - 15884.990000300313, - 15889.990000300422, - 15894.990000300531, - 15899.99000030064, - 15904.99000030075, - 15909.990000300859, - 15914.990000300966, - 15919.990000301077, - 15924.990000301186, - 15929.990000301297, - 15934.990000301405, - 15939.990000301514, - 15944.990000301623, - 15949.99000030173, - 15954.990000301841, - 15959.99000030195, - 15964.990000302061, - 15969.990000302168, - 15974.990000302278, - 15979.990000302389, - 15984.990000302496, - 15989.990000302605, - 15994.990000302714, - 15999.990000302825, - 16004.990000302932, - 16009.990000303042, - 16014.990000303149, - 16019.99000030326, - 16024.990000303369, - 16029.990000303478, - 16034.99000030359, - 16039.990000303696, - 16044.990000303806, - 16049.990000303917, - 16054.990000304024, - 16059.990000304131, - 16064.990000304244, - 16069.990000304353, - 16074.99000030446, - 16079.990000304568, - 16084.99000030468, - 16089.990000304788, - 16094.990000304895, - 16099.990000305004, - 16104.990000305117, - 16109.990000305224, - 16114.990000305335, - 16119.990000305444, - 16124.990000305552, - 16129.99000030566, - 16134.990000305768, - 16139.990000305881, - 16144.990000305988, - 16149.990000306096, - 16154.990000306208, - 16159.990000306316, - 16164.990000306423, - 16169.990000306534, - 16174.990000306643, - 16179.990000306752, - 16184.99000030686, - 16189.990000306967, - 16194.99000030708, - 16199.990000307187, - 16204.990000307298, - 16209.990000307407, - 16214.990000307516, - 16219.990000307624, - 16224.990000307736, - 16229.990000307844, - 16234.990000307951, - 16239.990000308062, - 16244.990000308171, - 16249.990000308282, - 16254.990000308391, - 16259.9900003085, - 16264.990000308608, - 16269.990000308715, - 16274.990000308826, - 16279.990000308935, - 16284.990000309042, - 16289.990000309153, - 16294.990000309264, - 16299.990000309372, - 16304.990000309483, - 16309.99000030959, - 16314.9900003097, - 16319.990000309806, - 16324.990000309917, - 16329.990000310027, - 16334.990000310137, - 16339.990000310245, - 16344.990000310354, - 16349.990000310463, - 16354.99000031057, - 16359.990000310681, - 16364.99000031079, - 16369.990000310901, - 16374.990000311009, - 16379.990000311118, - 16384.990000311045, - 16389.990000310245, - 16394.990000309444, - 16399.990000308644, - 16404.990000307844, - 16409.990000307043, - 16414.990000306247, - 16419.990000305443, - 16424.990000304642, - 16429.990000303842, - 16434.990000303038, - 16439.99000030224, - 16444.99000030144, - 16449.99000030064, - 16454.99000029984, - 16459.99000029904, - 16464.99000029824, - 16469.990000297443, - 16474.990000296642, - 16479.99000029584, - 16484.990000295038, - 16489.990000294238, - 16494.990000293434, - 16499.990000292637, - 16504.990000291837, - 16509.990000291036, - 16514.990000290236, - 16519.990000289436, - 16524.990000288635, - 16529.99000028784, - 16534.990000287034, - 16539.990000286234, - 16544.990000285434, - 16549.99000028463, - 16554.990000283833, - 16559.990000283033, - 16564.990000282232, - 16569.990000281432, - 16574.99000028063, - 16579.99000027983, - 16584.99000027903, - 16589.990000278234, - 16594.99000027743, - 16599.99000027663, - 16604.99000027583, - 16609.990000275033, - 16614.990000274232, - 16619.99000027343, - 16624.990000272628, - 16629.990000271828, - 16634.990000271027, - 16639.990000270227, - 16644.99000026943, - 16649.990000268626, - 16654.990000267826, - 16659.990000267026, - 16664.99000026622, - 16669.990000265425, - 16674.990000264625, - 16679.990000263824, - 16684.990000263024, - 16689.990000262223, - 16694.990000261423, - 16699.990000260626, - 16704.990000259822, - 16709.990000259022, - 16714.990000258218, - 16719.990000257418, - 16724.990000256617, - 16729.990000255817, - 16734.99000025502, - 16739.99000025422, - 16744.99000025342, - 16749.99000025262, - 16754.99000025182, - 16759.99000025102, - 16764.990000250218, - 16769.990000249418, - 16774.990000248617, - 16779.990000247813, - 16784.990000247017, - 16789.990000246216, - 16794.990000245416, - 16799.990000244616, - 16804.990000243815, - 16809.990000243015, - 16814.99000024222, - 16819.990000241414, - 16824.990000240614, - 16829.990000239814, - 16834.99000023901, - 16839.990000238213, - 16844.990000237412, - 16849.990000236612, - 16854.99000023581, - 16859.99000023501, - 16864.990000234207, - 16869.990000233407, - 16874.99000023261, - 16879.99000023181, - 16884.99000023101, - 16889.99000023021, - 16894.99000022941, - 16899.99000022861, - 16904.990000227812, - 16909.990000227008, - 16914.990000226207, - 16919.990000225407, - 16924.990000224607, - 16929.990000223806, - 16934.990000223006, - 16939.990000222206, - 16944.990000221405, - 16949.9900002206, - 16954.990000219805, - 16959.990000219004, - 16964.990000218204, - 16969.990000217404, - 16974.990000216603, - 16979.990000215803, - 16984.990000215006, - 16989.990000214202, - 16994.9900002134, - 16999.9900002126, - 17004.9900002118, - 17009.990000211, - 17014.9900002102, - 17019.9900002094, - 17024.9900002086, - 17029.9900002078, - 17034.990000207, - 17039.990000206202, - 17044.990000205402, - 17049.990000204598, - 17054.990000203798, - 17059.990000202997, - 17064.990000202193, - 17069.990000201396, - 17074.990000200596, - 17079.990000199796, - 17084.990000198995, - 17089.990000198195, - 17094.990000197395, - 17099.990000196594, - 17104.990000195794, - 17109.990000194994, - 17114.990000194193, - 17119.990000193393, - 17124.990000192593, - 17129.990000191792, - 17134.990000190992, - 17139.99000019019, - 17144.99000018939, - 17149.99000018859, - 17154.99000018779, - 17159.99000018699, - 17164.99000018619, - 17169.99000018539, - 17174.99000018459, - 17179.990000183792, - 17184.990000182992, - 17189.990000182188, - 17194.990000181388, - 17199.990000180587, - 17204.990000179787, - 17209.990000178987, - 17214.990000178186, - 17219.990000177386, - 17224.990000176585, - 17229.990000175785, - 17234.99000017498, - 17239.990000174184, - 17244.990000173384, - 17249.990000172584, - 17254.990000171783, - 17259.990000170983, - 17264.990000170183, - 17269.990000169382, - 17274.990000168582, - 17279.99000016778, - 17284.99000016698, - 17289.99000016618, - 17294.99000016538, - 17299.99000016458, - 17304.990000163783, - 17309.99000016298, - 17314.99000016218, - 17319.990000161382, - 17324.990000160582, - 17329.990000159778, - 17334.990000158978, - 17339.990000158177, - 17344.990000157377, - 17349.990000156577, - 17354.990000155776, - 17359.990000154976, - 17364.990000154176, - 17369.990000153375, - 17374.990000152575, - 17379.990000151774, - 17384.990000150974, - 17389.990000150174, - 17394.990000149373, - 17399.990000148573, - 17404.990000147773, - 17409.990000146972, - 17414.990000146172, - 17419.990000145368, - 17424.990000144568, - 17429.99000014377, - 17434.99000014297, - 17439.990000142167, - 17444.99000014137, - 17449.99000014057, - 17454.99000013977, - 17459.99000013897, - 17464.99000013817, - 17469.990000137368, - 17474.990000136568, - 17479.990000135767, - 17484.990000134967, - 17489.990000134167, - 17494.990000133366, - 17499.990000132566, - 17504.990000131766, - 17509.990000130965, - 17514.990000130165, - 17519.990000129364, - 17524.990000128564, - 17529.990000127764, - 17534.990000126963, - 17539.990000126163, - 17544.990000125363, - 17549.990000124562, - 17554.990000123762, - 17559.990000122958, - 17564.990000122158, - 17569.99000012136, - 17574.99000012056, - 17579.990000119757, - 17584.99000011896, - 17589.99000011816, - 17594.99000011736, - 17599.99000011656, - 17604.99000011576, - 17609.990000114958, - 17614.990000114158, - 17619.990000113357, - 17624.990000112557, - 17629.990000111757, - 17634.990000110956, - 17639.990000110156, - 17644.990000109356, - 17649.99000010856, - 17654.990000107755, - 17659.990000106955, - 17664.990000106154, - 17669.990000105354, - 17674.99000010455, - 17679.990000103753, - 17684.990000102953, - 17689.990000102152, - 17694.990000101352, - 17699.990000100548, - 17704.99000009975, - 17709.99000009895, - 17714.99000009815, - 17719.99000009735, - 17724.99000009655, - 17729.99000009575, - 17734.990000094953, - 17739.99000009415, - 17744.99000009335, - 17749.990000092548, - 17754.990000091748, - 17759.990000090947, - 17764.99000009015, - 17769.990000089347, - 17774.990000088546, - 17779.990000087746, - 17784.990000086946, - 17789.990000086145, - 17794.990000085345, - 17799.990000084545, - 17804.990000083744, - 17809.990000082944, - 17814.990000082144, - 17819.990000081347, - 17824.990000080543, - 17829.990000079742, - 17834.990000078942, - 17839.990000078138, - 17844.99000007734, - 17849.99000007654, - 17854.99000007574, - 17859.99000007494, - 17864.99000007414, - 17869.99000007334, - 17874.990000072543, - 17879.99000007174, - 17884.99000007094, - 17889.990000070142, - 17894.990000069338, - 17899.990000068534, - 17904.990000067737, - 17909.990000066937, - 17914.990000066136, - 17919.990000065336, - 17924.990000064536, - 17929.990000063735, - 17934.99000006294, - 17939.990000062135, - 17944.990000061334, - 17949.990000060534, - 17954.990000059734, - 17959.990000058933, - 17964.990000058133, - 17969.990000057333, - 17974.990000056532, - 17979.99000005573, - 17984.99000005493, - 17989.99000005413, - 17994.99000005333, - 17999.99000005253 - ], - [ - 0.1632386732448038, - 0.23449393274665095, - 0.1465357393992698, - 0.15940662890590665, - 0.1730958966565327, - 0.18267926056725656, - 0.19003475543213152, - 0.1965018158820037, - 0.2023410806733409, - 0.20769128678382864, - 0.21258748953410944, - 0.2169890342459736, - 0.22108398472224344, - 0.22484768946310996, - 0.2281516913622999, - 0.23112785652395906, - 0.23384059910304675, - 0.2361648666297173, - 0.2382888240918971, - 0.2401320337979313, - 0.24159155387766, - 0.2427835196941764, - 0.2439315242622588, - 0.2449428729947789, - 0.24590620041454225, - 0.2466412848624161, - 0.24718108935081545, - 0.2476580199848592, - 0.2480316804650339, - 0.24835440509321896, - 0.24863412045374186, - 0.2489005011249497, - 0.2491404794022556, - 0.2493584675469353, - 0.2495599645435488, - 0.2497433515583638, - 0.2498724913486837, - 0.2500031003504589, - 0.250159498694252, - 0.25032766164214565, - 0.25051416932491066, - 0.25065769789708364, - 0.2507936790585857, - 0.25084797397120256, - 0.25081457652359523, - 0.2507799440058172, - 0.25073542890112915, - 0.2506938640471956, - 0.250664255603908, - 0.2506464615404577, - 0.2506309755022069, - 0.25062153039343515, - 0.25060440177248394, - 0.2506326500491764, - 0.2506786679932952, - 0.2506897753974009, - 0.25063189718461576, - 0.25055194671937625, - 0.25047727462022074, - 0.2504118660834199, - 0.25034842011701786, - 0.2502867772424495, - 0.2502250799648256, - 0.2501643013743069, - 0.2501003474478164, - 0.250033470090728, - 0.2499679507734883, - 0.2498955753488516, - 0.2498125479080241, - 0.24972458385513754, - 0.24962650716153165, - 0.2495137023378444, - 0.2493691987146328, - 0.2491955482744705, - 0.24920797495128805, - 0.2492572870881512, - 0.2493000932094468, - 0.2493420328990824, - 0.2493844851820335, - 0.24942438545093995, - 0.2494615758043293, - 0.2494963080483126, - 0.2495286163827233, - 0.24955887113137015, - 0.24958718901199686, - 0.24961363083286875, - 0.2496384428816633, - 0.24966156574613865, - 0.2496829336095065, - 0.2497030335172841, - 0.24972006862708784, - 0.24973757108193956, - 0.24975389770562326, - 0.24976905231133034, - 0.2497832908975201, - 0.24979649592994624, - 0.2498088245907848, - 0.2498203369067012, - 0.24983104425747416, - 0.2498410672064339, - 0.2687802791909738, - 0.2720544151300142, - 0.2734711784075981, - 0.2749602172573818, - 0.2763770626897718, - 0.2777155334940444, - 0.2789675211919955, - 0.28014413402384863, - 0.2812529849713845, - 0.2822623256853385, - 0.2832043601850634, - 0.2841019411596397, - 0.284949760307469, - 0.2857929929335548, - 0.2866111148406998, - 0.2873890412490922, - 0.2881165253351849, - 0.28880492718844464, - 0.2894380704284004, - 0.2900335381374277, - 0.2905916840433951, - 0.2911231792151078, - 0.2916310438639922, - 0.2921110761058096, - 0.2925639810574765, - 0.2929919514231409, - 0.29339951836965616, - 0.29378282074584644, - 0.29414624856638183, - 0.2944894241450051, - 0.2948183023366998, - 0.29513524212840336, - 0.2954302743944009, - 0.29571003726484923, - 0.2959749806191839, - 0.2962251699914185, - 0.2964648730941527, - 0.296691598858695, - 0.2969090520184592, - 0.2971169667670248, - 0.2973161561327244, - 0.29750884883082884, - 0.2976984866682329, - 0.2978768003473175, - 0.2980514180195183, - 0.29822257761977905, - 0.2984038780119353, - 0.2985944981125624, - 0.2987818019218325, - 0.2988788353027225, - 0.29894280469208945, - 0.2990011565251445, - 0.2990567802544455, - 0.2991093813145758, - 0.299159051946711, - 0.29920595226525976, - 0.2992502368927173, - 0.29929205173280465, - 0.29933153452852945, - 0.29936881533969395, - 0.2994040169725905, - 0.29943725501527024, - 0.29946862253825857, - 0.29949825279775105, - 0.2995262080732665, - 0.2995525935777699, - 0.299577505685977, - 0.2996010349382638, - 0.2996232499992199, - 0.2996442321178389, - 0.29966403836091643, - 0.299682743956472, - 0.2997004163816633, - 0.2997170977726771, - 0.2997328521993549, - 0.29974772931439264, - 0.2997617674398554, - 0.2997750360933146, - 0.2997875679534364, - 0.2997993937215077, - 0.29981056702768016, - 0.29982110361770425, - 0.2998310631400201, - 0.2998404736522989, - 0.2998493603171387, - 0.299857751938032, - 0.2998656760890579, - 0.29987314582940866, - 0.29988019908644714, - 0.2998868664062764, - 0.2998931630279898, - 0.2998991092002662, - 0.29990472442776944, - 0.29991002713132914, - 0.2999150347050412, - 0.29991976357479755, - 0.2999242292522798, - 0.2999284463858459, - 0.2999324286574873, - 0.2999361879454845, - 0.2999397303439973, - 0.2999430821889596, - 0.2999462498934372, - 0.29994924143634416, - 0.2999520664801386, - 0.2999547342913097, - 0.29995725362145176, - 0.2999596327345385, - 0.2999618794345594, - 0.2999640010911581, - 0.2999660027327789, - 0.2999678850741909, - 0.2999696712014861, - 0.2999713591487269, - 0.2999729531998372, - 0.2999744585298869, - 0.2999758800782337, - 0.2999772225081873, - 0.29997849022321466, - 0.2999796873816855, - 0.29998081791052944, - 0.29998188551811683, - 0.2999828937064233, - 0.29998384578251713, - 0.2999847448694066, - 0.2999855939162843, - 0.2999863957082007, - 0.2999871528752013, - 0.2999878679009511, - 0.2999885431308844, - 0.2999891807798965, - 0.29998978293960865, - 0.29999035158523035, - 0.2999908885820385, - 0.2999913956914941, - 0.2999918745770219, - 0.29999232680946697, - 0.29999275387224605, - 0.29999315716621344, - 0.2999935380142585, - 0.2999938976656417, - 0.2999942373000941, - 0.29999455803168873, - 0.2999948609124918, - 0.29999514693601514, - 0.29999541704047594, - 0.2999956721118734, - 0.2999959129868944, - 0.29999614045565925, - 0.2999963552643131, - 0.29999655811747394, - 0.2999967496805411, - 0.29999693058188304, - 0.2999971014148921, - 0.29999726273993743, - 0.29999741508619865, - 0.29999755895340285, - 0.29999769481346483, - 0.2999978231120344, - 0.2999979442699568, - 0.2999980586846553, - 0.29999816673143515, - 0.2999982687647115, - 0.2999983551384782, - 0.2999984312795266, - 0.2999985171048611, - 0.2999985995997823, - 0.2999986775447624, - 0.29999875114836994, - 0.29999882065506245, - 0.2999988862932429, - 0.2999989482782348, - 0.2999990068133609, - 0.29999906209062843, - 0.2999991142913576, - 0.2999991635867786, - 0.2999992101385892, - 0.29999925409949085, - 0.29999929561368416, - 0.29999933481734314, - 0.2999993718390644, - 0.2999994068002879, - 0.2999994398156928, - 0.2999994709935762, - 0.2999995004362089, - 0.29999952824016857, - 0.2999995544966576, - 0.2999995792918036, - 0.29999960270693826, - 0.2999996248188695, - 0.2999996457001292, - 0.2999996654192107, - 0.2999996840407977, - 0.2999997016259727, - 0.2999997182324192, - 0.2999997339146096, - 0.2999997487239848, - 0.29999976270912176, - 0.2999997759158955, - 0.29999978838762664, - 0.29999980016522504, - 0.29999981128732445, - 0.2999998217904064, - 0.2999998317089244, - 0.2999998410754122, - 0.2999998499205947, - 0.29999985827348497, - 0.2999998661614833, - 0.29999987361046315, - 0.2999998806448595, - 0.2999998872877457, - 0.2999998935609122, - 0.29999989948493644, - 0.29999990507925084, - 0.2999999103622049, - 0.29999991535112874, - 0.29999992006238696, - 0.2999999245114323, - 0.2999999287128601, - 0.2999999326804504, - 0.2999999364272195, - 0.2999999399654564, - 0.2999999433067676, - 0.29999994646211314, - 0.2999999494418432, - 0.29999995225573195, - 0.2999999549130094, - 0.29999995742239244, - 0.2999999597921122, - 0.2999999620299415, - 0.2999999641432214, - 0.2999999661388826, - 0.2999999680234732, - 0.2999999698031741, - 0.2999999714838229, - 0.2999999730709331, - 0.29999997456970995, - 0.2999999759850702, - 0.2999999773216566, - 0.2999999785838532, - 0.29999997977580034, - 0.29999998090140795, - 0.29999998196436845, - 0.2999999829681682, - 0.2999999839160998, - 0.2999999848112731, - 0.2999999856566241, - 0.2999999864549261, - 0.2999999872087971, - 0.29999998792071075, - 0.2999999885930012, - 0.2999999892278743, - 0.2999999898274129, - 0.29999999039358344, - 0.299999990928243, - 0.2999999914331445, - 0.29999999190994564, - 0.2999999923602095, - 0.2999999927854133, - 0.299999993186952, - 0.29999999356614204, - 0.2999999939242278, - 0.2999999942623838, - 0.2999999945817196, - 0.2999999948832815, - 0.2999999951680601, - 0.2999999954369889, - 0.2999999956909498, - 0.299999995930777, - 0.29999999615725514, - 0.29999999637112873, - 0.2999999965730991, - 0.2999999967638284, - 0.2999999969439424, - 0.29999999711403164, - 0.2999999972746544, - 0.29999999742633743, - 0.2999999975695785, - 0.2999999977048472, - 0.2999999978325874, - 0.2999999979532175, - 0.2999999980671345, - 0.2999999981747111, - 0.2999999982763004, - 0.2999999983722354, - 0.299999998462831, - 0.2999999985483842, - 0.2999999986291761, - 0.2999999987054713, - 0.2999999987775203, - 0.29999999884555906, - 0.2999999989098112, - 0.2999999989704872, - 0.29999999902778657, - 0.2999999990818964, - 0.29999999913299485, - 0.2999999991812493, - 0.2999999992268181, - 0.2999999992698505, - 0.2999999993104879, - 0.2999999993488638, - 0.2999999993851037, - 0.2999999994193268, - 0.299999999451645, - 0.2999999994821643, - 0.2999999995109853, - 0.29999999953820194, - 0.2999999995639041, - 0.2999999995881758, - 0.2999999996110964, - 0.29999999963274143, - 0.2999999996531817, - 0.2999999996724845, - 0.2999999996907129, - 0.2999999997079265, - 0.2999999997241824, - 0.2999999997395333, - 0.2999999997540301, - 0.29999999976772, - 0.29999999978064784, - 0.2999999997928563, - 0.29999999980438513, - 0.2999999998152725, - 0.2999999998255537, - 0.2999999998352626, - 0.2999999998444315, - 0.29999999985309, - 0.2999999998612665, - 0.29999999986898784, - 0.2999999998762795, - 0.2999999998831652, - 0.299999999889668, - 0.2999999998958086, - 0.29999999990160764, - 0.2999999999070838, - 0.2999999999122551, - 0.29999999991713866, - 0.2999999999217507, - 0.29999999992610565, - 0.2999999999302182, - 0.2999999999341019, - 0.2999999999377699, - 0.2999999999412332, - 0.2999999999445042, - 0.2999999999475925, - 0.2999999999505093, - 0.29999999995326404, - 0.29999999995586496, - 0.2999999999583213, - 0.2999999999606412, - 0.29999999996283183, - 0.2999999999649006, - 0.2999999999668542, - 0.2999999999686989, - 0.2999999999704405, - 0.2999999999720865, - 0.2999999999736399, - 0.2999999999751069, - 0.29999999997649296, - 0.29999999997780025, - 0.299999999979036, - 0.29999999998020244, - 0.2999999999813055, - 0.2999999999823457, - 0.2999999999833284, - 0.2999999999842567, - 0.29999999998513205, - 0.2999999999859589, - 0.2999999999867411, - 0.2999999999874781, - 0.29999999998817617, - 0.29999999998883264, - 0.2999999999894547, - 0.2999999999900433, - 0.299999999990597, - 0.2999999999911196, - 0.2999999999916136, - 0.2999999999920805, - 0.2999999999925224, - 0.2999999999929387, - 0.2999999999933297, - 0.2999999999936995, - 0.29999999999405114, - 0.2999999999943842, - 0.2999999999946932, - 0.2999999999949904, - 0.29999999999526794, - 0.2999999999955307, - 0.2999999999957805, - 0.2999999999960137, - 0.2999999999962357, - 0.2999999999964464, - 0.2999999999966407, - 0.29999999999683497, - 0.2999999999970051, - 0.29999999999717164, - 0.2999999999973346, - 0.2999999999974776, - 0.29999999999761634, - 0.3000000928779081, - 0.3081173239541479, - 0.31063658378611697, - 0.3108584820648313, - 0.3104857222393635, - 0.3098836743524344, - 0.30931586872587075, - 0.308814173879659, - 0.3083632959947615, - 0.3079442693898781, - 0.30730235915155657, - 0.30682866972474515, - 0.3064759477852336, - 0.3061678258642109, - 0.3058845123313953, - 0.3056171243792804, - 0.3053540325715515, - 0.30511851386883426, - 0.3049011914412625, - 0.3046985210424221, - 0.30451103833939325, - 0.3043409840417517, - 0.30418929670756883, - 0.30405423074998833, - 0.30393781522082675, - 0.3038024279378405, - 0.3036285667377475, - 0.3034494010370661, - 0.3032755829463346, - 0.3031096073338045, - 0.30295179409876016, - 0.3028023013678914, - 0.30266027156824554, - 0.30252528288329755, - 0.30239709475754883, - 0.3022753977608038, - 0.30215986681325124, - 0.3020502034834646, - 0.3019461148752235, - 0.3018473110929372, - 0.3017433916985009, - 0.3016464148703209, - 0.3015604340026881, - 0.3014805236769285, - 0.30140511098089484, - 0.30133364404636565, - 0.30126585323496824, - 0.3012015140230915, - 0.30114044155482395, - 0.30108248032222923, - 0.30102745931465946, - 0.3009752352788392, - 0.3009256512942139, - 0.3008786179841821, - 0.3008339593328577, - 0.3007915610592932, - 0.3007513380291511, - 0.300713136600524, - 0.3006768920519132, - 0.3006424899408397, - 0.30060982906198297, - 0.30057883415628683, - 0.30054939395289265, - 0.30052146816534003, - 0.3004949642390106, - 0.3004697918038485, - 0.300445930537096, - 0.30042327308625155, - 0.30040176710418953, - 0.3003813289271997, - 0.3003619538420489, - 0.3003435697734624, - 0.30032609712740765, - 0.3003095123191323, - 0.3002937906432693, - 0.3002788692809936, - 0.3002646914191793, - 0.3002512229831181, - 0.3002384597317193, - 0.3002263521577693, - 0.3002148530524085, - 0.3002039227041676, - 0.3001935324685061, - 0.3001836901472825, - 0.3001743606606887, - 0.3001655084443837, - 0.30015710076563074, - 0.30014910218296803, - 0.3001415258309221, - 0.30013433967646563, - 0.30012751967061424, - 0.3001210066784127, - 0.30011484122121923, - 0.3001090054687702, - 0.3001034705087222, - 0.3000982177098422, - 0.3000932310197351, - 0.30008849803412524, - 0.30008400559104753, - 0.3000797412703055, - 0.30007569343526314, - 0.30007185108178874, - 0.30006820377532034, - 0.3000647288066558, - 0.30006143402270546, - 0.3000583127824476, - 0.30005535198619426, - 0.300052542018515, - 0.30004987483017176, - 0.30004734307030995, - 0.3000449208624724, - 0.3000426237724555, - 0.30004045467540763, - 0.3000383994178862, - 0.3000364497376113, - 0.3000345993580922, - 0.3000328429943922, - 0.3000311758100053, - 0.3000295932612114, - 0.30002809104733497, - 0.3000266650892591, - 0.3000253115157841, - 0.3000240266524428, - 0.3000228070113504, - 0.3000216492816901, - 0.3000205503207096, - 0.3000195071451945, - 0.3000185169233613, - 0.3000175769671757, - 0.3000166847250521, - 0.3000158377749293, - 0.3000150338176945, - 0.3000142706709416, - 0.3000135462630491, - 0.3000128586275552, - 0.3000122058978177, - 0.3000115863019525, - 0.3000109980232619, - 0.3000104296344649, - 0.3000098962001613, - 0.3000093927823475, - 0.3000089157059955, - 0.3000084630535126, - 0.30000803343272026, - 0.3000076256345357, - 0.3000072385407241, - 0.30000687109754565, - 0.30000652230677544, - 0.3000061912213908, - 0.30000587694258063, - 0.3000055786171976, - 0.30000529543540994, - 0.30000502662849765, - 0.3000047714667625, - 0.3000045288252655, - 0.30000429817989466, - 0.3000040797778471, - 0.300003872622791, - 0.3000036760256586, - 0.30000348941928784, - 0.3000033122883406, - 0.30000314414967744, - 0.3000029845462701, - 0.30000283304470304, - 0.3000026892336727, - 0.3000025527227823, - 0.3000024231414592, - 0.3000023001379437, - 0.29999521368757964, - 0.2999734977057741, - 0.29995850859574963, - 0.29995304372168624, - 0.2999533144815342, - 0.2999551385054764, - 0.29995728047460024, - 0.2999594203829261, - 0.2999614791262733, - 0.299963440199126, - 0.29996530320061193, - 0.2999670717280157, - 0.29996875023187153, - 0.2999703432059951, - 0.29997185498552903, - 0.2999732897029767, - 0.2999746512849644, - 0.2999759434592004, - 0.29997716976369504, - 0.29997833355618964, - 0.2999794380232842, - 0.2999804861891425, - 0.2999814809237735, - 0.2999824249508832, - 0.29998332085533364, - 0.29998417109022346, - 0.29998497798359985, - 0.2999857437448372, - 0.2999864704706845, - 0.29998716015100585, - 0.2999878146742323, - 0.2999884358325301, - 0.29998899395220824, - 0.2962827931962171, - 0.29512641810068263, - 0.2950475613984693, - 0.2952668772323826, - 0.2955554630338076, - 0.2958369537838649, - 0.2961118954714626, - 0.2963317338862511, - 0.29651765985098305, - 0.2966882339791905, - 0.2968488398305566, - 0.2970012189112311, - 0.29714611054933626, - 0.29728396920378103, - 0.2974151597623509, - 0.2975400111366279, - 0.29765883137087185, - 0.2977719122787974, - 0.29787944456738163, - 0.2979728839327095, - 0.2980672637240918, - 0.2981598200855453, - 0.29824865303812065, - 0.2983333896058325, - 0.2984140782467912, - 0.2984908744169119, - 0.29856395563735594, - 0.29863349884119983, - 0.2986996745605199, - 0.298762645655547, - 0.2988225672583777, - 0.2988795870314529, - 0.29893384549796154, - 0.2989854763790907, - 0.2990346069211368, - 0.2990813582084457, - 0.29912584546164644, - 0.2989152675540613, - 0.2988234810434371, - 0.2988406844228418, - 0.2988862521288186, - 0.2989374926608536, - 0.2989883695781115, - 0.2990373466270393, - 0.299084097047674, - 0.29912861605399044, - 0.2991709816519984, - 0.29921129032318033, - 0.2992496398641203, - 0.29928612493626017, - 0.2993208360352457, - 0.2993538593743696, - 0.2993852770067216, - 0.29941516700425497, - 0.2994436036451041, - 0.29947065759636143, - 0.2994963960892049, - 0.29952088308583946, - 0.29954417943841805, - 0.2995663430402474, - 0.2995415028189097, - 0.2993999739208416, - 0.2993774690206289, - 0.2993938028511817, - 0.2994195823393023, - 0.2994468604579166, - 0.2994735498508921, - 0.29949913754430624, - 0.29952353158090195, - 0.2995467509755068, - 0.29956884245169685, - 0.29958985815582634, - 0.2996098497630878, - 0.29962886698665386, - 0.2996469572662325, - 0.2996641657694211, - 0.2996805354730225, - 0.2996961072619149, - 0.2997109200288896, - 0.29972501077118346, - 0.2997384146827169, - 0.2997511652419548, - 0.29976329429551146, - 0.2997748321376906, - 0.2997858075861483, - 0.29979624805386906, - 0.29980617961763595, - 0.29981562708316123, - 0.2998246140470423, - 0.2998331629556973, - 0.299841295161429, - 0.29984903097575843, - 0.2998563897201505, - 0.2998633897742805, - 0.299870048621932, - 0.2998763828946707, - 0.29988240841338426, - 0.2998881402277945, - 0.2998935926540501, - 0.2998987793104805, - 0.2999037131516117, - 0.299908406500524, - 0.29991287107962605, - 0.2999171180399381, - 0.2999211579889399, - 0.2999250010170696, - 0.29992865672291996, - 0.2999321342372165, - 0.2999354422456235, - 0.29993858901043463, - 0.2999415823912118, - 0.2999444298644155, - 0.29994713854207744, - 0.29994971518956604, - 0.2999521662424798, - 0.29995449782272754, - 0.29995671575381344, - 0.29995882557538456, - 0.2999608325570665, - 0.29996274171162696, - 0.29996455780749154, - 0.2999662853806592, - 0.2999679287460271, - 0.2999694920081701, - 0.2999709790715921, - 0.2999723936504785, - 0.299973739277972, - 0.2999750193149992, - 0.2999762369586625, - 0.2999773952502264, - 0.2999784970827145, - 0.29997954520813497, - 0.2999805422443528, - 0.29998149068163016, - 0.29998239288884426, - 0.2999832511194062, - 0.2999840675168874, - 0.2999848441203751, - 0.29998558286956395, - 0.29998628560960194, - 0.2999869540956961, - 0.29998758999750186, - 0.2999881949032882, - 0.2999887703239061, - 0.2999893176965636, - 0.2999898383884139, - 0.2999903336999696, - 0.2999908048683532, - 0.2999912530703853, - 0.2999916794255241, - 0.2999920849986613, - 0.29999247080278235, - 0.2999928378014969, - 0.2999931869114433, - 0.2999935190045831, - 0.2999938349103725, - 0.2999941354178373, - 0.2999944212775446, - 0.2999946932034765, - 0.299994951874812, - 0.299995197937626, - 0.2999954320065007, - 0.2999956546660611, - 0.2999958664724354, - 0.29999606795464595, - 0.2999962596159279, - 0.2999964419349864, - 0.2999966153671929, - 0.2999967803457226, - 0.29999693728263693, - 0.2999970865699122, - 0.299997228580417, - 0.29999736366884594, - 0.2999974921726051, - 0.2999976144126533, - 0.2999981450433936, - 0.29999896138580845, - 0.2999992263366397, - 0.2999993218213008, - 0.2999993703861181, - 0.29999940523379764, - 0.2999994353359269, - 0.2999994631529922, - 0.2999994893948427, - 0.2999995142989218, - 0.29999953797356205, - 0.29999956049025595, - 0.29999958190854176, - 0.299999602282781, - 0.2999996216640753, - 0.2999559182637289, - 0.29990322122498325, - 0.2998922075710996, - 0.2998932447123321, - 0.2998973258497987, - 0.2999020362395896, - 0.29990673841454524, - 0.2999112703629249, - 0.2999155969221662, - 0.2999197164837077, - 0.3107614361601381, - 0.3155022875061535, - 0.3179365631714278, - 0.3196723543968782, - 0.32114886211695604, - 0.32247865843055484, - 0.32370958705371256, - 0.32486336433533064, - 0.32596669658464666, - 0.3270336666536333, - 0.3280938946136554, - 0.3291316690850405, - 0.3301283805001117, - 0.33107617129118083, - 0.3319730959108769, - 0.33281867136068044, - 0.3336142787252901, - 0.33436690915283485, - 0.3350830286916209, - 0.3357733875341425, - 0.33644525108125817, - 0.3370946146060442, - 0.3377121397788535, - 0.3382984934757483, - 0.33885585086226483, - 0.3393858543121341, - 0.3398896900846908, - 0.34036898831882395, - 0.3408296725667587, - 0.3412711412706007, - 0.34169221299448016, - 0.34209299923362463, - 0.3424733387187339, - 0.34283417015613976, - 0.3431770734088205, - 0.3435031776416226, - 0.34381333689961513, - 0.34410833220854525, - 0.34438895458845503, - 0.3446560180768159, - 0.3449098881657402, - 0.34515116341597085, - 0.3453804796856163, - 0.3455984204513328, - 0.3458055203994544, - 0.3460021644140073, - 0.3461888459504594, - 0.3463661310274067, - 0.34653493905386124, - 0.3466992679069609, - 0.34685757132038153, - 0.34700877240403577, - 0.347152800962912, - 0.34728992316747803, - 0.34742045000651833, - 0.34754469273513383, - 0.34766295212391785, - 0.3477755157949531, - 0.34788265791434353, - 0.3479846503620677, - 0.3480818175638484, - 0.348174349251272, - 0.34826243233188764, - 0.3483462701132396, - 0.3484260640524007, - 0.3485014175109426, - 0.34856736073306155, - 0.34862638092530124, - 0.34868085078659544, - 0.3487315645458415, - 0.3487790114965155, - 0.3488252724096992, - 0.34887705449190515, - 0.3489298127833226, - 0.3489810754578487, - 0.3490301761857013, - 0.3490769985205858, - 0.3491215865231429, - 0.3491640284203966, - 0.3492044220139756, - 0.34924286451581266, - 0.3492794496767975, - 0.3493142670872493, - 0.34934740211888216, - 0.34937893605121073, - 0.3494089462461182, - 0.349437508049226, - 0.34946470234183785, - 0.34949058798367355, - 0.3495152237141117, - 0.3495386685888401, - 0.3495609797830334, - 0.3495822119993903, - 0.3496024173827467, - 0.3496216455823541, - 0.3496399438541684, - 0.3496573571710736, - 0.349673928331649, - 0.3496896980648276, - 0.3497047051298407, - 0.33916831484615795, - 0.33437952390546866, - 0.3318500379792557, - 0.3300510618155028, - 0.3285378046104853, - 0.32713634977734074, - 0.3258153939269887, - 0.3245652826887452, - 0.3233683187603877, - 0.32223417505870033, - 0.3211576187395647, - 0.32010777759636394, - 0.3191055003009823, - 0.3181714704269134, - 0.3173093332979904, - 0.3164971500392064, - 0.3157090367343647, - 0.314952405538348, - 0.3142303791024645, - 0.3135254666421268, - 0.3128438941303409, - 0.3122134042870166, - 0.3116193556339415, - 0.3110532881770501, - 0.3105163455860901, - 0.3100064567305129, - 0.30952158011295483, - 0.3090581155319176, - 0.3086008818370922, - 0.3081774099185313, - 0.3077791778377831, - 0.3074016446498006, - 0.30704281776189657, - 0.30670149955252196, - 0.3063767559804198, - 0.30606775871688285, - 0.3057737373496888, - 0.305493964026514, - 0.3052277477016798, - 0.30497443126714785, - 0.3047333895887966, - 0.30450402786319475, - 0.30428578012028706, - 0.30407810781811706, - 0.3038804985113801, - 0.3037113662714263, - 0.30357482837714284, - 0.30341592628143194, - 0.3032549246477067, - 0.3030988300117976, - 0.302949438009081, - 0.302807019205391, - 0.30267141044123674, - 0.302542333457926, - 0.30241948748713193, - 0.3023025757820753, - 0.3021913128618555, - 0.3020854261418407, - 0.3019846559463196, - 0.3018887550706124, - 0.3017974882328066, - 0.3017106315135173, - 0.30162797181148776, - 0.3015493063221994, - 0.3014744420407197, - 0.3014031952882917, - 0.30133539126171377, - 0.3012708636044748, - 0.3012094539986028, - 0.3011510117762326, - 0.3010953935499457, - 0.3010424628609715, - 0.30098896411461906, - 0.30094011432883394, - 0.30091549948527274, - 0.3008796588698852, - 0.30083965787408024, - 0.3007998460035848, - 0.3007614478236409, - 0.3007230693599052, - 0.3006542958673575, - 0.3006094457337166, - 0.30057609179852185, - 0.3005471009030114, - 0.3005203125901241, - 0.3004950527602953, - 0.3004641824589394, - 0.3004197007505082, - 0.3003920828458965, - 0.30037096389230744, - 0.30035237750988275, - 0.30033513022514624, - 0.30031884586456725, - 0.3003033873099766, - 0.30028868826732, - 0.30027470430704645, - 0.3002613985728589, - 0.30024873756920445, - 0.3002366898808114, - 0.30022522574709914, - 0.3002199331093429, - 0.3002151215064212, - 0.30020648081334256, - 0.3001970011784544, - 0.30018761466084554, - 0.30017857633976114, - 0.3001699447146185, - 0.3001617219704809, - 0.30015389466319264, - 0.3001307648544453, - 0.30008572185270216, - 0.3000690760709208, - 0.30005588687179485, - 0.30004843938547304, - 0.3000446954628471, - 0.3000421221640514, - 0.3000399599484185, - 0.30003798546298616, - 0.3000361307894434, - 0.30003437310978925, - 0.3000327027988276, - 0.3000311141924106, - 0.2999957991204978, - 0.29997698701406234, - 0.2999725148403415, - 0.2999722395053417, - 0.29997312608940696, - 0.2999743006707966, - 0.2999755135406861, - 0.2999766948774613, - 0.29997782662211, - 0.299978905539853, - 0.2999799325742701, - 0.2999809097823498, - 0.29998183945519696, - 0.29998272386872715, - 0.2999835652158122, - 0.2999843655905445, - 0.2999851269873443, - 0.29998585130417066, - 0.2999865403467428, - 0.2999871958328975, - 0.2999878193968273, - 0.29998841259314696, - 0.29998897690076043, - 0.2999895137265482, - 0.2999900244088794, - 0.29999051022094075, - 0.29999097237391764, - 0.2999914120200081, - 0.29999183025529985, - 0.2999922281225009, - 0.2999926066135383, - 0.29999296667203296, - 0.2999933091956508, - 0.2999936350383417, - 0.29999394501246834, - 0.2999942398908313, - 0.2999945204085943, - 0.2999947872651208, - 0.2999950411257146, - 0.2999952826232768, - 0.2999955123598892, - 0.2999957309083112, - 0.29999593881340764, - 0.29999613659350965, - 0.2999963247417054, - 0.29999650372706965, - 0.2999966739958327, - 0.2999968359724937, - 0.29999699006087893, - 0.29999713664514754, - 0.2999972760907513, - 0.29999740874534336, - 0.29999753493964626, - 0.2999976549882766, - 0.2999970437015483, - 0.2999650975761006, - 0.2999536805554718, - 0.29995212571740354, - 0.29995336554228424, - 0.29995532721801965, - 0.2999574181195023, - 0.2999594716254869, - 0.2999614434556518, - 0.29996332433823103, - 0.2999651149010759, - 0.2999668184583565, - 0.299968438943814, - 0.29996998032381644, - 0.2999714464356601, - 0.2999728409478236, - 0.2999741673549701, - 0.2999500309468366, - 0.29993287653238776, - 0.2999303447351104, - 0.29993207806609523, - 0.2999349186354889, - 0.29993796284431384, - 0.2999409848844542, - 0.3037692309999924, - 0.3053338138752271, - 0.3056183726368093, - 0.3054621467346108, - 0.30514352514029924, - 0.3048654343911641, - 0.3046106085500009, - 0.3043719003253713, - 0.30414657431651576, - 0.3039330482107204, - 0.30373066982594515, - 0.3035385642562229, - 0.30335645017074875, - 0.3031838901520744, - 0.30302012098499104, - 0.3028647332476645, - 0.30271731636764165, - 0.3025778827776105, - 0.3024454271659209, - 0.3023229056938737, - 0.3022066283338734, - 0.3020942567505659, - 0.3019868903005424, - 0.3018848165223222, - 0.3017879341402705, - 0.3016959878086176, - 0.3016087739794898, - 0.3015260227940396, - 0.3014475546849533, - 0.3013731472646777, - 0.3013025209540176, - 0.30123550258323306, - 0.3011719991224856, - 0.3011116922616657, - 0.3010544913467833, - 0.301000270894746, - 0.3009488277640561, - 0.3009000280159536, - 0.3008537056039388, - 0.3008098499740085, - 0.3007682158161437, - 0.3007286977516704, - 0.3006912245327925, - 0.3006556436498465, - 0.30062193472908, - 0.3005899366089751, - 0.3005596236279869, - 0.3005308327819031, - 0.30050348534606897, - 0.30047762584592796, - 0.3004530981873797, - 0.3004297845901437, - 0.300407668728454, - 0.3003866166752787, - 0.30036673989507284, - 0.30034792020199, - 0.3003300738195023, - 0.30031303499809275, - 0.3002969358709898, - 0.3002816965428577, - 0.30026724936217714, - 0.3002534350268495, - 0.30024038711270845, - 0.3002280451807861, - 0.3002163486914665, - 0.3002052561272014, - 0.3001947153143522, - 0.3001846921026327, - 0.3001751936641329, - 0.3001661816745107, - 0.3001576048614896, - 0.3001495044136125, - 0.3001418333261656, - 0.3001345515607533, - 0.30012752627286593, - 0.3001209346009556, - 0.3001147167063352, - 0.3001088298463705, - 0.30010324893741475, - 0.3000979555355129, - 0.3000929339638344, - 0.30008816996871635, - 0.3000836502378676, - 0.3000793622130664, - 0.30007529400421024, - 0.3000714343389912, - 0.3000677725257485, - 0.3000642955850834, - 0.3000609896280901, - 0.3000578002134481, - 0.3000547389339006, - 0.3000518977026975, - 0.3000492253607634, - 0.3000466979271177, - 0.3000443027467678, - 0.30004203126247564, - 0.30003987652881065, - 0.30003783235536435, - 0.30003589300475075, - 0.30003405307984005, - 0.3000323074758621, - 0.3000306513550618, - 0.3000290801294875, - 0.30002758944698976, - 0.30002617517872565, - 0.3000248334075729, - 0.30002356041722944, - 0.30002235268190497, - 0.3000212068565457, - 0.3000201197675735, - 0.30001908840408964, - 0.3000181099095373, - 0.30001718157003565, - 0.3000163000749987, - 0.3000154641485752, - 0.3000146713126271, - 0.30001391920094594, - 0.3000132056714949, - 0.3000125287279722, - 0.3000118864886367, - 0.30001127717236603, - 0.3000106990907559, - 0.3000101506424324, - 0.3000096303082729, - 0.3000091366470828, - 0.30000866829156364, - 0.3000082239445142, - 0.30000780237522884, - 0.30000740241609203, - 0.3000070229593415, - 0.3000066629540005, - 0.30000632140296635, - 0.3000059973602489, - 0.3000056899283509, - 0.300005398255781, - 0.3000051215346983, - 0.30000485899867124, - 0.3000046099205561, - 0.3000043736104854, - 0.3000041494139526, - 0.3000039367100037, - 0.3000037349095149, - 0.3000035434535624, - 0.30000336181187154, - 0.3000031894813521, - 0.30000302598470274, - 0.300002870869088, - 0.30000272370488656, - 0.30000258408449904, - 0.3000024516212201, - 0.3000023259481683, - 0.3000022067172684, - 0.3000020935982875, - 0.3000019862779215, - 0.3000018844589267, - 0.30000178785929643, - 0.3000016962114793, - 0.3000016092616397, - 0.3000015267689521, - 0.3000014485049398, - 0.30000137425283513, - 0.3000013038069823, - 0.30000123697226794, - 0.3000011735635817, - 0.3000011134053015, - 0.3000010563308071, - 0.3000010021820194, - 0.3000009508089644, - 0.3000009020693536, - 0.30000085582819336, - 0.3000008119574114, - 0.3000007703354977, - 0.3000007308471743, - 0.3000006933830693, - 0.3000006578394193, - 0.3000006241177794, - 0.30000059212475155, - 0.3000005617717251, - 0.30000053297463003, - 0.3000005056537092, - 0.3000004797332928, - 0.3000004551415869, - 0.3000004318104825, - 0.3000004096753576, - 0.300000388674906, - 0.30000036875096264, - 0.30000034984834506, - 0.3000003319146983, - 0.300000314900352, - 0.3000002987581815, - 0.3000002834434775, - 0.3000002689138237, - 0.30000025512897804, - 0.30000024205076004, - 0.3000002296429471, - 0.3000002178711733, - 0.3000002067028349, - 0.30000019610699924, - 0.30000018605431844, - 0.3000001523993169, - 0.2972173768571529, - 0.2960922917367795, - 0.2958667259445047, - 0.2959548067999853, - 0.29612003899392125, - 0.29629839650443324, - 0.2964754198742553, - 0.29664636514874204, - 0.2968098516139667, - 0.29696565851407764, - 0.2971139570568419, - 0.2972550430747051, - 0.2973892443400016, - 0.2974977023490391, - 0.29760339909070577, - 0.29771451641181795, - 0.2978241659754333, - 0.29792983880954194, - 0.29803082689776395, - 0.2981270445273126, - 0.2982186151902761, - 0.2983057278519388, - 0.2983885871809001, - 0.2984673965372734, - 0.2985423523705047, - 0.2986136425808744, - 0.2986814462481863, - 0.2987459338226656, - 0.29880726746312336, - 0.29886560141321106, - 0.2989210823783284, - 0.29897384989073805, - 0.2990240366591509, - 0.2990476676335985, - 0.29906688275224363, - 0.2991026940331747, - 0.2991431658957543, - 0.299183895972014, - 0.2992234135783791, - 0.2992612696154888, - 0.2992973681052623, - 0.29933173323398865, - 0.2993644282670909, - 0.2993955274134113, - 0.29940205768304, - 0.2992878500624948, - 0.2992646610571608, - 0.2992804199675765, - 0.29930864130803475, - 0.29934008805816786, - 0.2993715976461016, - 0.2994021207558207, - 0.2994313414361353, - 0.2994591966937439, - 0.2994857093174293, - 0.2995109297746625, - 0.2995349160855318, - 0.2995577269164481, - 0.2995794192724294, - 0.29960004778599675, - 0.2996196645575355, - 0.2996383191833728, - 0.2996560588451264, - 0.2996729284164857, - 0.2996889705723496, - 0.29970422589526163, - 0.2997187329775413, - 0.29973252851873083, - 0.29974564741836873, - 0.299618336941258, - 0.29952023773508224, - 0.299502430010899, - 0.2995125123944174, - 0.2995314905079975, - 0.2995521545095968, - 0.2995701437405514, - 0.2995897071911726, - 0.29960933849725924, - 0.2996283635205596, - 0.29964657757010194, - 0.2996639390570953, - 0.29968046161311873, - 0.29969617667159265, - 0.2997111205368431, - 0.29972532995663714, - 0.2997388406455546, - 0.2997516868304233, - 0.2997639011479327, - 0.2997755146618673, - 0.29978655691928285, - 0.29979705601775863, - 0.2997886593877155, - 0.2997558717383724, - 0.2997517457084437, - 0.2997583529793785, - 0.29976830015201017, - 0.2997790300424159, - 0.2997896734118546, - 0.29979994614766164, - 0.29980976639043017, - 0.29981483361077765, - 0.2998170384212577, - 0.2998235260899014, - 0.2998313391900109, - 0.2998393395639102, - 0.2998471445619543, - 0.2998546341757981, - 0.2998617789393791, - 0.29986858021433016, - 0.2998750494921348, - 0.2998812012378732, - 0.2998870504329461, - 0.2998926117475448, - 0.29989789927755306, - 0.29990292647618355, - 0.29990770615207785, - 0.2999122504893983, - 0.29991657107453656, - 0.29992067892414315, - 0.29992458451269155, - 0.2999282977990063, - 0.2999318282515937, - 0.2999351848727627, - 0.2999383762215744, - 0.2999414104356604, - 0.29994429525197563, - 0.2999470380265259, - 0.299949645753122, - 0.2999521250812176, - 0.2999544823328608, - 0.29995672351881697, - 0.2999588543538967, - 0.2999608802715248, - 0.29996280643759593, - 0.2999646377636496, - 0.29996637891939204, - 0.2999680343446024, - 0.29996960826045715, - 0.2999711046802904, - 0.2999725274198292, - 0.2999738801069232, - 0.2999751661907939, - 0.2999763889508331, - 0.2999775515049609, - 0.29997865681757924, - 0.29997970770712845, - 0.2999807068532771, - 0.2999816568037514, - 0.2999825599808342, - 0.2999834186875412, - 0.2999833180954308, - 0.29997989130518016, - 0.29997896656956685, - 0.2999780262511749, - 0.29997834675135066, - 0.2999791480669135, - 0.299980082915, - 0.2999810317731037, - 0.2999819547460826, - 0.2999828395018168, - 0.2999836831998092, - 0.2999844862228788, - 0.29998525000514376, - 0.2999859762815117, - 0.2999866668303638, - 0.29998732338724604, - 0.2999879476177662, - 0.29998854111090384, - 0.2999891053792625, - 0.29998964186160804, - 0.299990151926084, - 0.29999063687354155, - 0.2999910979407996, - 0.2999915363037834, - 0.2999919530805145, - 0.29999234933396085, - 0.2999927260747492, - 0.2999930842637385, - 0.2999934248144724, - 0.2999937485955091, - 0.2999940564326364, - 0.299992712385221, - 0.29998312832009943, - 0.2999799524962041, - 0.299979544821216, - 0.29998006818411777, - 0.2999808819052999, - 0.2999817652449356, - 0.29998264314113043, - 0.29998349100591404, - 0.29998430169357043, - 0.2999850740424365, - 0.29998580890236165, - 0.2999865077594625, - 0.2999871722619621, - 0.2999878040585539, - 0.29998840474505795, - 0.29998897584852635, - 0.29998951882420904, - 0.29999003505686417, - 0.3101066530260838, - 0.31508114698698997, - 0.317846383030478, - 0.31979279866557536, - 0.3214064729909489, - 0.3228584750326343, - 0.3242104406534488, - 0.3254859210788241, - 0.3266951467561979, - 0.3278436240400425, - 0.3289351220416301, - 0.3299728814350694, - 0.330960160216683, - 0.3318990936727728, - 0.3327918383719955, - 0.3336405925049118, - 0.3344475080289884, - 0.3352148272920449, - 0.3359452083501462, - 0.3366400063430052, - 0.3373006453067196, - 0.3379286822381861, - 0.33852568311669634, - 0.3390931666790991, - 0.33963258710391425, - 0.34014533033716604, - 0.340632715067927, - 0.341095995216541, - 0.3415363628451078, - 0.341954951114528, - 0.3423528371618625, - 0.3427310448586298, - 0.3430905474408145, - 0.3434322700116357, - 0.34375709192153125, - 0.3440658490307789, - 0.3443594444030822, - 0.3446388196603303, - 0.34490449249036365, - 0.34515704748540943, - 0.3453971014574174, - 0.3456252623544228, - 0.3458421156023937, - 0.3460482202771624, - 0.3462441086771317, - 0.3464302870429026, - 0.3466072366358953, - 0.346775414901868, - 0.34693525662526425, - 0.3470871762582004, - 0.34723157883666245, - 0.3473688318609907, - 0.3474992834282391, - 0.34762326844622715, - 0.3477411067165611, - 0.3478531027112016, - 0.3479595475357759, - 0.348060782462901, - 0.34815705930095503, - 0.3482485800033914, - 0.3483355641332664, - 0.34841823114296844, - 0.3484967933901294, - 0.34857145402317097, - 0.34864240657115064, - 0.3487098351164507, - 0.34877391465669144, - 0.3488348115182235, - 0.3488926837735424, - 0.34894768164657297, - 0.34899994790084965, - 0.3490496182094807, - 0.34909682150711224, - 0.34914168032453585, - 0.3491843111067341, - 0.34922482451513553, - 0.3492633257148712, - 0.3492999146477592, - 0.3493346862917355, - 0.34936773090739875, - 0.3493991342723093, - 0.3494289779036521, - 0.349457339269838, - 0.3494842919916011, - 0.34950990603309834, - 0.34953424788352794, - 0.3495573807297207, - 0.3495793646201621, - 0.34960025662086536, - 0.3496201109635061, - 0.34963897918619496, - 0.3496569102672633, - 0.3496739507523988, - 0.3496901448754723, - 0.34970553467335885, - 0.3497201600950573, - 0.3497340591053909, - 0.3497472677835561, - 0.3497598204167791, - 0.3497717495893173, - 0.33965072457029305, - 0.3346412357284797, - 0.3318506299867729, - 0.3298923823069405, - 0.3282835077809229, - 0.3268481111925375, - 0.3255056587507482, - 0.3242393499953061, - 0.3230376180521908, - 0.32189558639839616, - 0.3208102063645755, - 0.31977864279134205, - 0.3187982185993201, - 0.3178663955247071, - 0.31698076326767977, - 0.3161672750784341, - 0.3153863074067064, - 0.3146319408444748, - 0.3139105910100677, - 0.3132234168932537, - 0.3125697043912217, - 0.3119481396081913, - 0.3113572517446121, - 0.31079556522580404, - 0.3102616503740717, - 0.30975413875880914, - 0.309271726323044, - 0.3088131723501975, - 0.30837729708273537, - 0.30791209478251885, - 0.3073802180811093, - 0.30696108320809234, - 0.3065970627517433, - 0.3062630820849512, - 0.3059498464138269, - 0.305653612106787, - 0.3053725914121196, - 0.3051057007854111, - 0.30485212447702753, - 0.3046111616507192, - 0.3043821721436252, - 0.3041645565780136, - 0.30395774846833523, - 0.3037612105476475, - 0.3035744326072697, - 0.3033969299064417, - 0.30322824182184954, - 0.30309349042622524, - 0.3029739640715731, - 0.3028388026233187, - 0.30270240854789165, - 0.3025700211154226, - 0.3024432387611746, - 0.3023224060739538, - 0.30220744381453585, - 0.30209813582849554, - 0.3019942279018171, - 0.3018954615263098, - 0.3018015851507516, - 0.3017123576583489, - 0.30162754917330553, - 0.3015469409622912, - 0.3014703250412398, - 0.30139750369789514, - 0.3013282890021005, - 0.301262502327897, - 0.301199973894995, - 0.30114054233145904, - 0.30108405425753915, - 0.3010303638899313, - 0.300979332665581, - 0.3009308288840906, - 0.3008847273678378, - 0.3008409091389186, - 0.3008081548549844, - 0.3007865341923972, - 0.3007544046432293, - 0.3007194365146455, - 0.3006846646623992, - 0.3006510828816593, - 0.300618978992564, - 0.3005883996584574, - 0.3005593108475215, - 0.3005316531332249, - 0.3005053606744324, - 0.3004803676552058, - 0.3004568349858219, - 0.3004345190056668, - 0.30041312891121, - 0.30039273182148224, - 0.30037332104881725, - 0.30035486249427, - 0.30033731413549586, - 0.3003206327094467, - 0.30030477594648064, - 0.3002897032715862, - 0.30027537597969683, - 0.3002617572327043, - 0.300248811998031, - 0.300230398773985, - 0.3002051781889237, - 0.300189898703193, - 0.3001787299458222, - 0.30016927483528194, - 0.3001606883372189, - 0.3001526650240166, - 0.3001450864368556, - 0.3001378993004051, - 0.3001310734523984, - 0.3001245872912874, - 0.3001184227241955, - 0.300112563395636, - 0.3001069940500626, - 0.30010170028707656, - 0.3000966684534098, - 0.3000918855832717, - 0.3000873393565113, - 0.3000830180639638, - 0.3000789105762928, - 0.3000750063149769, - 0.3000712952249485, - 0.3000677677486545, - 0.3000644148014281, - 0.30006122774808697, - 0.3000581983806945, - 0.3000553188974159, - 0.30005258188243, - 0.3000499802868291, - 0.3000475074104629, - 0.3000451568846856, - 0.30004292265595234, - 0.3000407989702312, - 0.30003878035818105, - 0.30003686162106885, - 0.3000350378173784, - 0.2999622527228853, - 0.2999240654010185, - 0.2999138898554593, - 0.2999133557701647, - 0.2999159976878538, - 0.2999195938266841, - 0.2999233855491626, - 0.2999271180525786, - 0.2999307098175159, - 0.2999341387228606, - 0.2999374028188509, - 0.2999405068249742, - 0.2999434574913801, - 0.29994626201378444, - 0.2999489274998844, - 0.29995146079748025, - 0.2999538684466338, - 0.29995615667400594, - 0.29995833140119355, - 0.2999603982573741, - 0.2999623625929571, - 0.29996422949311263, - 0.2999660037908292, - 0.2999676900793874, - 0.2999692927242353, - 0.29997081587428986, - 0.2999722634726708, - 0.2999736392669105, - 0.29997494681865633, - 0.2999761895128897, - 0.2999773705666903, - 0.2999784930375615, - 0.29997955983134883, - 0.2999805737097616, - 0.2999815372975204, - 0.2999824530891557, - 0.2999833234554627, - 0.2999841506496403, - 0.2999849368131229, - 0.29998568398112657, - 0.2999863940879136, - 0.2999870689718038, - 0.2999877103799331, - 0.29998831997277425, - 0.29998889932843703, - 0.29998944994675364, - 0.2999899732531617, - 0.29999047060239264, - 0.2999909432819816, - 0.2999913925155983, - 0.2999918194662157, - 0.29999222523912, - 0.2999926108847745, - 0.2999929774015357, - 0.2999933257382399, - 0.2999936567966588, - 0.299993971433834, - 0.2999942704642972, - 0.2999945546621757, - 0.2999948247631985, - 0.29999508146660303, - 0.2999951271745529, - 0.2999920923683815, - 0.29999106213721505, - 0.29999102942764416, - 0.30179097418265344, - 0.3025967132847597, - 0.3027986758895857, - 0.3027618199074105, - 0.3025631791029215, - 0.3024098245515611, - 0.3022776558224788, - 0.3021572240377584, - 0.30204482765430746, - 0.30193890566003834, - 0.3018386994745381, - 0.3017437569583353, - 0.30165374827782554, - 0.30156839726817103, - 0.30148745558600604, - 0.3014106927285437, - 0.30133789194882804, - 0.3012688483742664, - 0.3012033679600294, - 0.3011412667696426, - 0.3010823703938542, - 0.3010265134369499, - 0.30097353904344537, - 0.3009232984543361, - 0.3008756505881527, - 0.3008304616443387, - 0.3007876047273578, - 0.3007469594902956, - 0.3007084117968886, - 0.3006718534010109, - 0.30063718164270115, - 0.300604299159883, - 0.3005731136149609, - 0.3005435374355264, - 0.3005154875684443, - 0.30048888524663137, - 0.3004636557678683, - 0.30043972828503024, - 0.3004170356071375, - 0.3003955140106768, - 0.30037510306066045, - 0.3003557454409164, - 0.300337386793139, - 0.30031997556424384, - 0.3003034628616044, - 0.3002878023157501, - 0.3002729499501636, - 0.3002588640577824, - 0.30024550508388576, - 0.3002328355150197, - 0.300220819773653, - 0.3002094241182756, - 0.3001986165486447, - 0.3001883667159276, - 0.3001786458374768, - 0.30016942661600543, - 0.3001606831629361, - 0.3001523909256989, - 0.30014452661878804, - 0.300137068158373, - 0.3001299946002845, - 0.3001232860812003, - 0.3001169237628676, - 0.3001108897792026, - 0.3001051671861222, - 0.3000997399139617, - 0.3000945927223493, - 0.300089711157409, - 0.30008508151117536, - 0.3000806907830978, - 0.3000765266435323, - 0.3000725773991213, - 0.300068831959957, - 0.30006527980843684, - 0.30006191096973284, - 0.3000587159837789, - 0.3000556858787063, - 0.3000528121456495, - 0.3000500867148529, - 0.3000475019330105, - 0.30004505054177216, - 0.300042725657365, - 0.30004052075126003, - 0.3000384296318397, - 0.3000364464270137, - 0.30003456556772706, - 0.3000327817723212, - 0.3000310900317048, - 0.30002948559528564, - 0.30002796395763104, - 0.3000265208458169, - 0.30002515220742826, - 0.3000238541991789, - 0.30002262317612, - 0.3000214556814052, - 0.3000203484365824, - 0.30001929833238683, - 0.3000183024200122, - 0.30001735790282696, - 0.300016462128524, - 0.3000156125816727, - 0.3000148068766522, - 0.3000140427509549, - 0.3000133180588327, - 0.30001263076527096, - 0.3000119789402741, - 0.3000113607534474, - 0.3000107744688543, - 0.30001021844014386, - 0.3000096911059276, - 0.3000091909853923, - 0.3000087166741458, - 0.3000082668402703, - 0.30000784022058313, - 0.3000074356170898, - 0.30000705189361915, - 0.30000668797263497, - 0.3000063428322061, - 0.30000601550314177, - 0.3000057050662656, - 0.3000054106498373, - 0.3000051314271031, - 0.3000048666139761, - 0.30000461546683066, - 0.3000043772804197, - 0.300004151385889, - 0.3000039371489018, - 0.3000037339678585, - 0.3000035412722037, - 0.30000335852082666, - 0.30000318520054264, - 0.30000302082464897, - 0.3000028649315601, - 0.3000027170835107, - 0.3000025768653282, - 0.3000024438832644, - 0.30000231776389125, - 0.300002198153052, - 0.3000020847148652, - 0.30000197713078497, - 0.3000018750987038, - 0.3000017783321045, - 0.3000016865592546, - 0.3000015995224476, - 0.30000151697727384, - 0.3000014386919377, - 0.30000136444660563, - 0.3000012940327876, - 0.3000012272527552, - 0.30000116391898224, - 0.3000011038536206, - 0.30000104688799994, - 0.3000009928621549, - 0.30000094162437485, - 0.3000008930307788, - 0.3000008469449108, - 0.3000008032373554, - 0.30000076178537866, - 0.3000007224725787, - 0.3000006851885596, - 0.3000006498286253, - 0.30000061629348124, - 0.3000005844889558, - 0.30000055432573874, - 0.30000052571912905, - 0.3000004985887961, - 0.30000047285855425, - 0.300000448456151, - 0.3000004253130619, - 0.30000040336429784, - 0.3000003825482249, - 0.3000003628063884, - 0.30000034408335263, - 0.3000003263265405, - 0.3000003094860881, - 0.3000002935147065, - 0.30000027836754684, - 0.30000026400207325, - 0.3000002503779465, - 0.3000002374569079, - 0.300000225202674, - 0.3000002135808341, - 0.3000002025587527, - 0.300000192105478, - 0.3000001821916564, - 0.30000017278944896, - 0.3000001638724528, - 0.3000001554156284, - 0.3000001473952286, - 0.3000001397887304, - 0.3000001325747741, - 0.30000012573310225, - 0.30000011924450265, - 0.30000011309075425, - 0.3000001072545777, - 0.3000001017195834, - 0.3000000964702287, - 0.30000009149177304, - 0.30000008677023626, - 0.3000000671130601, - 0.2984636001042648, - 0.2978037621734362, - 0.2976632216703077, - 0.2977195747761736, - 0.2978277264755691, - 0.2979346190675414, - 0.2980376543698548, - 0.29813607467797465, - 0.29822975557468145, - 0.2983188018483796, - 0.2984033966069621, - 0.2984837450868714, - 0.2985600539480391, - 0.2986325238562682, - 0.2987013470304644, - 0.2987667066349519, - 0.298828776847919, - 0.2988799925568749, - 0.2989031437278249, - 0.29894450124633504, - 0.2989924357056989, - 0.29904121359764924, - 0.2990887565445717, - 0.2991343634285191, - 0.29917784558768257, - 0.2992192027341978, - 0.29925850165067386, - 0.2992934625788725, - 0.29932512178670256, - 0.2993575717403578, - 0.2993893451634875, - 0.2994198780828134, - 0.2994490082960266, - 0.29947672221221033, - 0.2995030595751893, - 0.2995280778640593, - 0.29955183906206245, - 0.2995744048047424, - 0.2995958346637134, - 0.2996161856006794, - 0.2996355118552228, - 0.2996538649905544, - 0.2996712939940377, - 0.2996878453940614, - 0.2997035633790444, - 0.29971848991345895, - 0.2997326648491367, - 0.2997461260313933, - 0.2997589093999689, - 0.2997710490849431, - 0.299782524390492, - 0.29979079458672986, - 0.2998000022896448, - 0.299809573354494, - 0.2998189749429441, - 0.2998280202632095, - 0.29983665401832793, - 0.2998448694796979, - 0.29985267741980665, - 0.2998600945019786, - 0.2998671389619798, - 0.29987382902126875, - 0.2998801823226101, - 0.29988621574738145, - 0.2998919453745044, - 0.2998973864910923, - 0.29990255362116064, - 0.2999074605598731, - 0.2999121204086722, - 0.2999165456096286, - 0.29992074797841817, - 0.2999247387357886, - 0.2999285285374784, - 0.29993212750266196, - 0.2999355452409638, - 0.2999387908781121, - 0.2999418730803077, - 0.2999448000773628, - 0.2999475796846747, - 0.2999502193240944, - 0.29995272604374434, - 0.2999551065368353, - 0.2999573671595408, - 0.2999595139479675, - 0.2999615526342711, - 0.29996348866196504, - 0.2999653272004508, - 0.29996707315882404, - 0.2999687307441923, - 0.2997955193817621, - 0.2997069534923072, - 0.29968448677460363, - 0.2996864766691061, - 0.29969709535944, - 0.2997104442682902, - 0.29972434124191155, - 0.2997374265730046, - 0.2997502428201553, - 0.29976269134345185, - 0.29977461673469763, - 0.2997859792486715, - 0.2997967825503208, - 0.29980704562086896, - 0.2998167922835123, - 0.2998260473286846, - 0.299834835106752, - 0.29984317904190205, - 0.2998511014887051, - 0.29985862371496586, - 0.2998657659299851, - 0.2998725473280653, - 0.29987898613606057, - 0.2998850996608517, - 0.2998909043353035, - 0.2998964157622214, - 0.2999016487562144, - 0.2999066173834835, - 0.29991133499962314, - 0.29991581428551706, - 0.29992006728142073, - 0.299924105419325, - 0.2999279395536875, - 0.2999315799906053, - 0.2999350365155212, - 0.2999383184195241, - 0.2999414345243252, - 0.2999443932059698, - 0.29994720241735034, - 0.29994986970958765, - 0.2999524022523246, - 0.2999548068530001, - 0.29995708997514503, - 0.2999592577557602, - 0.2999613160218077, - 0.2999632703058787, - 0.2999651258610586, - 0.2999668876750551, - 0.2999685604835973, - 0.2999701487831715, - 0.29997165684310384, - 0.2999730887170379, - 0.2999744482538297, - 0.29997573910789505, - 0.29997696474903063, - 0.29997812847174365, - 0.29997923340410226, - 0.2999802825161496, - 0.2999812786278838, - 0.29998222441683875, - 0.2999831224252819, - 0.2999839750670462, - 0.2999847846340209, - 0.2999855533023109, - 0.2999862831380847, - 0.2999869761031313, - 0.29998763406013035, - 0.2999882587776601, - 0.2999888519349529, - 0.29998941512640714, - 0.2999899498658734, - 0.29999045759072346, - 0.2999909396657144, - 0.2999913973866574, - 0.29999183198389834, - 0.2999922446256307, - 0.2999926364210279, - 0.2999930084232306, - 0.29999336163217466, - 0.2999936969972817, - 0.2999940154200089, - 0.29999431775626995, - 0.2999946048187423, - 0.29999487737904473, - 0.2999951361698153, - 0.29999538188668, - 0.2999956151901229, - 0.29999583670725993, - 0.2999959443071313, - 0.2999949244866725, - 0.29999462837412283, - 0.2999946922620793, - 0.2999948827625409, - 0.2999951122314472, - 0.2999953482911755, - 0.2999955792294933, - 0.29999580104694445, - 0.29999601261087505, - 0.2999962138430227, - 0.2999964050422239, - 0.2999965866318518, - 0.29999675906614376, - 0.2999969227959405, - 0.29999707825662325, - 0.29999722586431604, - 0.2999973660151426, - 0.2999974990855998, - 0.29999762543330755, - 0.2999977453978703, - 0.29999785930175626, - 0.2999979674511501, - 0.3099796472018232, - 0.3151046992825077, - 0.3180293931523355, - 0.3200793109061862, - 0.3217536062989563, - 0.3232415088560015, - 0.32461614503076114, - 0.3259070777748933, - 0.32712745746714866, - 0.32828418675184845, - 0.3293817303933158, - 0.33042354591105355, - 0.3314126236387727, - 0.3323516933774402, - 0.3332433060563366, - 0.33408986840247923, - 0.33489365981775804, - 0.3356570748724204, - 0.3363825245064572, - 0.3370715617383049, - 0.3377258395055456, - 0.33834704538773763, - 0.3389368263481073, - 0.33949676280198954, - 0.3400283614817993, - 0.3405330552258091, - 0.34101220523976816, - 0.3414671041677913, - 0.34189897935437763, - 0.3423089960713499, - 0.3426982606302493, - 0.3430678233554991, - 0.343418681413958, - 0.3437517815038348, - 0.34406802240848017, - 0.3443683557012118, - 0.3446537579209503, - 0.3449248236043139, - 0.34518219372756204, - 0.3454265302857095, - 0.3456584820397021, - 0.3458786725016686, - 0.34608769644080084, - 0.3462861195446129, - 0.3464744792179508, - 0.34665328576309884, - 0.34682302365866724, - 0.3469841528333069, - 0.3471371098972819, - 0.3472823093200273, - 0.347420144551169, - 0.3475509890858757, - 0.3476751974766348, - 0.34779310629388305, - 0.3479050350379728, - 0.3480113104749892, - 0.3481122818538738, - 0.34820817033814144, - 0.34829920465574915, - 0.3483856202097786, - 0.3484676474436971, - 0.3485455077337038, - 0.3486194122041503, - 0.3486895616278051, - 0.3487561467177108, - 0.3488193485500197, - 0.3488793390203397, - 0.3489362812976467, - 0.3489903302629527, - 0.3490416329286446, - 0.3490903288376199, - 0.3491365504425712, - 0.3491804234661515, - 0.3492220672428974, - 0.34926159504381044, - 0.3492991143844418, - 0.3493347273173367, - 0.3493685307096143, - 0.3494006165064469, - 0.3494310719811501, - 0.3494599799725647, - 0.3494874191103818, - 0.3495134640290105, - 0.3495381855705881, - 0.3495616509776663, - 0.3495839240761156, - 0.34960506544872666, - 0.3496251325999992, - 0.3496441801125526, - 0.3496622597955899, - 0.3496794208258186, - 0.3496957098812145, - 0.3497111712679808, - 0.3497258470410644, - 0.3497397771185453, - 0.34975299939020965, - 0.34976554982061697, - 0.34977746254691633, - 0.34978876997170555, - 0.3497995028511591, - 0.33981683920729705, - 0.33467124402128445, - 0.3317312170634273, - 0.32967441704589506, - 0.3280033984582577, - 0.326535523202997, - 0.32517244566388376, - 0.3238892679982299, - 0.32267521662407816, - 0.3215242616691806, - 0.32043225341480513, - 0.3193958449200715, - 0.3184120818544149, - 0.31747824357700805, - 0.3165917789819129, - 0.3157708074419872, - 0.31499225629607674, - 0.3142409855158182, - 0.3135230330920624, - 0.31283965176149753, - 0.3121901956361624, - 0.31157336180433354, - 0.3109876545281173, - 0.3104315566900082, - 0.3099035915354669, - 0.3094023433881441, - 0.3089264630967253, - 0.3084746678711911, - 0.30804573912585503, - 0.30763851968066136, - 0.30725191082241216, - 0.306884869409046, - 0.30653640508081986, - 0.30620557759776856, - 0.3058914943063374, - 0.3055933077321502, - 0.3053102132938197, - 0.3050414471321828, - 0.30478628404928704, - 0.30454403555165666, - 0.30431404799257283, - 0.30409570080837817, - 0.3038884048440416, - 0.3036916007634732, - 0.3035047575402943, - 0.30332737102500096, - 0.3031774601954175, - 0.3030386690651877, - 0.3028935117357869, - 0.3027504589146434, - 0.30261267479750925, - 0.3024811187651797, - 0.3023559347959158, - 0.30223697258923826, - 0.3021239820387478, - 0.3020166854841151, - 0.3019148042534415, - 0.3018180681257843, - 0.3017262184260169, - 0.3016390087594145, - 0.3015562048844001, - 0.30147758428310323, - 0.3014029356381256, - 0.3013320582925293, - 0.3012647617209288, - 0.3012008650212618, - 0.3011401964299602, - 0.30108259286077593, - 0.30102789946658803, - 0.3009759692232209, - 0.30092666253425704, - 0.3008798468557838, - 0.3008353963401072, - 0.3007931914974482, - 0.30075311887474, - 0.3007150707506505, - 0.3006789448460083, - 0.3006446440488604, - 0.3006120761534232, - 0.30058115361221643, - 0.3005517933007246, - 0.300523916293944, - 0.30049744765422065, - 0.3004723162298059, - 0.30044845446359103, - 0.3004257982115021, - 0.3004042865700709, - 0.3003838617127186, - 0.30036446873430744, - 0.3003460555035485, - 0.3003285725228632, - 0.3003119727953284, - 0.3002962116983389, - 0.3002812468636583, - 0.3002670380635246, - 0.3002535471025115, - 0.30024068844766105, - 0.30021272759395623, - 0.3001936088178025, - 0.30018067410160976, - 0.3001703639852442, - 0.3001613156561912, - 0.3001530045295823, - 0.300145212278052, - 0.3001378506683873, - 0.3001308749056058, - 0.300124256874184, - 0.3001179752708771, - 0.3001120118859302, - 0.3001063501844021, - 0.3001009747493105, - 0.30009587104848084, - 0.3000910253237454, - 0.3000864245271054, - 0.30008205627558515, - 0.3000779088141657, - 0.3000739709827464, - 0.30007023218559337, - 0.3000666823626335, - 0.3000633119623115, - 0.3000601119158611, - 0.30005707361289585, - 0.3000541888782342, - 0.3000514499499035, - 0.30004884945825244, - 0.3000463804061234, - 0.30004403615002423, - 0.3000418103822507, - 0.30003969711391554, - 0.3000376906588357, - 0.3000357856182323, - 0.300033976866201, - 0.3000322595359212, - 0.3000306290065623, - 0.30002908089084995, - 0.3000276110232601, - 0.3000262154488117, - 0.30002489041242464, - 0.3000236323488148, - 0.3000224378729035, - 0.3000213037707077, - 0.30002022699069225, - 0.3000192046355581, - 0.30001823395444904, - 0.3000173123355482, - 0.3000164372990495, - 0.3000156064904863, - 0.3000148176743983, - 0.3000140687283128, - 0.3000133576370376, - 0.3000126824872334, - 0.30001204146227145, - 0.3000114328373431, - 0.3000108549748165, - 0.30001030631983394, - 0.30000978539612605, - 0.3000092908020403, - 0.3000088212067692, - 0.3000083753467716, - 0.3000079520223681, - 0.30000755009451713, - 0.3000071684817501, - 0.3000068061572586, - 0.30000646214613397, - 0.3000061355227435, - 0.30000582540824045, - 0.30000553096819665, - 0.3000052514103613, - 0.3000049859825264, - 0.3000047339705033, - 0.3000044946962031, - 0.3000042675158082, - 0.3000040518180431, - 0.3000038470225278, - 0.3000036525782185, - 0.3000034679619229, - 0.30000329267689263, - 0.3000031262514877, - 0.300002968237906, - 0.3000028182109782, - 0.30000267576702777, - 0.3000025405227788, - 0.30000241211432976, - 0.3000022901961703, - 0.30000217444025584, - 0.30000206453512024, - 0.30000196018504105, - 0.30000186110924354, - 0.3000017670411428, - 0.3000016777276309, - 0.30000159292839, - 0.3000015124152502, - 0.30000143597157525, - 0.30000136339167816, - 0.3000012944802665, - 0.30000122905192056, - 0.3000011669305921, - 0.30000110794912976, - 0.3000010519488325, - 0.300001014758391, - 0.2990515701611274, - 0.2984177097037548, - 0.2982395940994874, - 0.29823423592395465, - 0.2981925116240484, - 0.29822770376928803, - 0.2983026598724484, - 0.2983894912432893, - 0.2984777887109176, - 0.2985617184421636, - 0.29863286281205403, - 0.29870097669318024, - 0.2987668575066583, - 0.2988301764572733, - 0.2988900260028729, - 0.29894670304352944, - 0.2990006351172443, - 0.2990517388441947, - 0.2990984060461527, - 0.29913907745532176, - 0.29917542849323553, - 0.2992090578676618, - 0.2992399031700147, - 0.29926788756186984, - 0.29929281040385003, - 0.2993149265881777, - 0.2993344799882925, - 0.299352683832224, - 0.29937439814652506, - 0.2993975647743846, - 0.2994200535068901, - 0.2994422313653505, - 0.29947422596556544, - 0.2995022537730901, - 0.29952730101983244, - 0.299550471368616, - 0.2995721429436558, - 0.2995925310819985, - 0.2996118018825467, - 0.2996299497172042, - 0.2996470595629632, - 0.2996631791438157, - 0.29967844913956937, - 0.2996928076350737, - 0.2997058621723209, - 0.29971815725739376, - 0.2997299085477132, - 0.2997410681450749, - 0.2997514959707942, - 0.29976109587604033, - 0.29977003367114097, - 0.29977828234073395, - 0.2997872367844687, - 0.29979730105550606, - 0.2998074135947904, - 0.2998171707616152, - 0.2998264884131515, - 0.2998353515881873, - 0.2998437696064264, - 0.29985176005692893, - 0.2998593428836751, - 0.29986653822157017, - 0.299873440477039, - 0.2998799852038615, - 0.2998859813372905, - 0.29989165642748145, - 0.2996976881356494, - 0.2992807689850994, - 0.2991572621878528, - 0.2991419997160108, - 0.29916555427435915, - 0.2992020959002199, - 0.29924212765881586, - 0.2992821822084793, - 0.2993210651734671, - 0.2993582772813557, - 0.2993938049682909, - 0.2994277314537989, - 0.2994600092712545, - 0.299490796414741, - 0.2995201625893441, - 0.2995482322519631, - 0.2995749990320857, - 0.29960063674668, - 0.2996250698784503, - 0.29964850132594145, - 0.29967098939397235, - 0.29969257333189725, - 0.2997134412739593, - 0.29973359780701925, - 0.2997531566506853, - 0.2997720197345577, - 0.29979040687479586, - 0.2998083024523773, - 0.2998257247552752, - 0.29984280219743625, - 0.2998598970041415, - 0.2998768698575659, - 0.2998938311854729, - 0.29991090469542403, - 0.2999283939882919, - 0.2999464913245039, - 0.2999655674267301, - 0.2999857480972117, - 0.30000669213497105, - 0.30002976888793914, - 0.3000549801585693, - 0.3000831691401849, - 0.3000976921800315, - 0.3000996707821066, - 0.3000971506901427, - 0.3000931265159673, - 0.300088702210939, - 0.3000842797212576, - 0.3000800084675087, - 0.30007592803030186, - 0.3000720579868973, - 0.3000683706081965, - 0.3000648960490154, - 0.3000616099322442, - 0.3000584631320074, - 0.3000554669704347, - 0.30005262061179666, - 0.3000499189261069, - 0.30004735543540817, - 0.3000449233958378, - 0.3000426161875264, - 0.3000404274479938, - 0.30003836316011634, - 0.3000364563705839, - 0.3000346077477484, - 0.3000328391315352, - 0.3000311558007791, - 0.3000295568637373, - 0.3000280392818661, - 0.30002659935817616, - 0.300025233282984, - 0.3000239373298767, - 0.3000227079220738, - 0.3000215416509891, - 0.3000204352773389, - 0.30001938572606857, - 0.3000183900792611, - 0.3000174455685693, - 0.3000165495677177, - 0.3000156995852735, - 0.30001489325775105, - 0.3000141283430452, - 0.2998018412650865, - 0.2994518626870357, - 0.2993511442011665, - 0.2993423682096685, - 0.29936637655081744, - 0.2994014335331999, - 0.2994396848390741, - 0.29947822307649746, - 0.29951600581925497, - 0.2995525644775276, - 0.2995883625844977, - 0.2996233536177977, - 0.2996575086016865, - 0.2996912589417184, - 0.29972416302438026, - 0.29975657984424675, - 0.29978944920652545, - 0.2998226237752469, - 0.299852017367737, - 0.2998680410590292, - 0.2998779601259147, - 0.2998854103540832, - 0.2998917507048635, - 0.2998974949755939, - 0.29990284315173604, - 0.29990787840206834, - 0.29991264012698626, - 0.2999171510603766, - 0.2999214273386629, - 0.2999254822548795, - 0.29992932767077296, - 0.2999329745597151, - 0.2999364332264159, - 0.29993971340587744, - 0.2999428243166857, - 0.2999457746965096, - 0.2999485728302072, - 0.2999512265744033, - 0.29995374338003866, - 0.29995613031347257, - 0.2999583940763906, - 0.2999605410246435, - 0.2999625771861026, - 0.2999645082775883, - 0.299966339720919, - 0.2999680766581391, - 0.2999697239659499, - 0.29997128626940794, - 0.2999727679549061, - 0.2999741731824911, - 0.2999755058975434, - 0.2999767698418537, - 0.29997796856412784, - 0.2999791054299534, - 0.2999801836312447, - 0.2999812061952103, - 0.2999821759928453, - 0.299983095746997, - 0.2999839680400087, - 0.29998479532096994, - 0.2999855799125907, - 0.29998632401772585, - 0.2999870297255592, - 0.299987699017468, - 0.2999883337725849, - 0.2999889357730784, - 0.29998950670915103, - 0.2999900481837889, - 0.2999905617172608, - 0.2999910487513861, - 0.2999915106535836, - 0.299991948720711, - 0.2999923641827046, - 0.2999927582060352, - 0.2999931318969798, - 0.29999348630472883, - 0.29999382242433514, - 0.2999941411995024, - 0.2999944435252384, - 0.299994730250367, - 0.2999950021799087, - 0.2999952600773466, - 0.2999955046667649, - 0.2999957366348834, - 0.29999595663298656, - 0.2999961652787506, - 0.29999636315797945, - 0.2999965508262472, - 0.2999967288104601, - 0.29999689761033405, - 0.2999970576997985, - 0.29999720952832964, - 0.2999973535222071, - 0.29999749008571497, - 0.2999976196022747, - 0.29999774243552285, - 0.2999978589303309, - 0.2999979694137763, - 0.2999980741960565, - 0.2999981735713625, - 0.29999826781870625, - 0.2999983572026993, - 0.29999844197430103, - 0.29999852237151986, - 0.2999985986200831, - 0.2999986709340691, - 0.29999873951650924, - 0.29999880455995903, - 0.2999988662470382, - 0.2999989247509422, - 0.2999989802359282, - 0.2998366358239701, - 0.29974400100004184, - 0.2997194632086486, - 0.2997199739808937, - 0.2997292675538518, - 0.2997413430979425, - 0.29975400261213897, - 0.29976645517243, - 0.29977842974974706, - 0.29978984671853903, - 0.2998006962639739, - 0.2998109934075266, - 0.2998207614040296, - 0.29983002564290073, - 0.2998388114368356, - 0.2998471432477135, - 0.29985504444243705, - 0.2998625372428227, - 0.2998696427452758, - 0.2998763809643239, - 0.29988277088312515, - 0.2998888305047692, - 0.29989457690219873, - 0.2999000262660064, - 0.2999051939499499, - 0.2999100945141652, - 0.2999147417661785, - 0.2999191487997997, - 0.2999233280320178, - 0.2999272912379816, - 0.29993104958417816, - 0.2999346136598945, - 0.2999379935070525, - 0.2999411986485029, - 0.2999442381148561, - 0.2999471204699277, - 0.29994985383486483, - 0.2999524459110303, - 0.299954904001698, - 0.2999572350326359, - 0.2999594455716136, - 0.2999615418469101, - 0.29996352976486385, - 0.2999654149265102, - 0.2999672026433655, - 0.29996889795239223, - 0.2999705056301896, - 0.2999720302064519, - 0.2999734759767314, - 0.2999261997502211, - 0.2995054782756996, - 0.2993456896644869, - 0.29931068748100353, - 0.29932084754401994, - 0.2993465318495767, - 0.2993768292288516, - 0.2994077592596184, - 0.2994379040803312, - 0.29946679154710204, - 0.2994942968699911, - 0.29952042125562794, - 0.2995452101002522, - 0.2995687228336893, - 0.2995910218765725, - 0.2996121686665666, - 0.2996322222954577, - 0.2996512391071212, - 0.2996692726458895, - 0.2996863737295968, - 0.2997025905640144, - 0.2997179688680887, - 0.29973255199889004, - 0.2997463810723935, - 0.29975949507886285, - 0.2997719309925778, - 0.29978372387601354, - 0.2997949069786621, - 0.29980551183077586, - 0.2998155683322553, - 0.2998251048369545, - 0.2998341482326171, - 0.29984272401669104, - 0.2998508563682127, - 0.2998585682159812, - 0.299865881303204, - 0.2998728162488011, - 0.29987939260554, - 0.2998855201570106, - 0.29989126094292645, - 0.2998968144869204, - 0.2999021243588857, - 0.2999071757913361, - 0.2999119719943801, - 0.2999165224066941, - 0.29992083834617256, - 0.2999249314217911, - 0.29992881296663515, - 0.29993249384786536, - 0.2999359844151761, - 0.2999392944995597, - 0.2999424334297629, - 0.2999454100544191, - 0.2999482327654572, - 0.2999509095211878, - 0.2999534478685331, - 0.2999558549642235, - 0.2999581375949489, - 0.2999603021964814, - 0.2999623548718172, - 0.2999643014083827, - 0.2999661472943529, - 0.2999678977341202, - 0.29996955766297184, - 0.29997113176100376, - 0.2999726244663156, - 0.2999740399875237, - 0.2999753823156286, - 0.2999766552352633, - 0.2999778623353681, - 0.2999790070193096, - 0.29998009251447244, - 0.2999811218813622, - 0.2999820980222334, - 0.2999830236892721, - 0.29998390149235643, - 0.299984733906411, - 0.2999855232783918, - 0.2999862718338973, - 0.2999869816834477, - 0.2999876548284315, - 0.299988293166751, - 0.2999888984981736, - 0.2999894725294041, - 0.2999900168788976, - 0.2999905330814244, - 0.2999910225923935, - 0.29999148679196, - 0.299991926988914, - 0.29999234442437017, - 0.2999927402752711, - 0.29999311565769976, - 0.2999934716300303, - 0.29999380919591145, - 0.2999941293070953, - 0.29999443286612, - 0.3001590094941381, - 0.30062995020811634, - 0.300776028509788, - 0.30080215562564633, - 0.30078520524548896, - 0.3007536912055408, - 0.3007180939774932, - 0.3006822233589856, - 0.30064742482780193, - 0.3006141355036408, - 0.3005824595974206, - 0.30055238113378074, - 0.30052384249308634, - 0.3004967733219929, - 0.3004711010906469, - 0.3004467548672988, - 0.300423666590497, - 0.300401771421943, - 0.3003810077653365, - 0.3003613171674168, - 0.3003426441809087, - 0.3003249362185566, - 0.30030814340879464, - 0.3002922184566801, - 0.3002771165112097, - 0.3002627950391903, - 0.3002492137055211, - 0.30023633425961826, - 0.3002241204276951, - 0.30021253781060464, - 0.3002015537869573, - 0.30019113742124903, - 0.30018125937673146, - 0.3001718918327889, - 0.300163008406585, - 0.3001545840787565, - 0.3001465951229476, - 0.3001390190389924, - 0.3001318344895357, - 0.30012502123994755, - 0.3001185601013286, - 0.30011243287647, - 0.3001066223085981, - 0.3001011120327767, - 0.3000958865298141, - 0.30009093108255586, - 0.3000862317344335, - 0.3000817752501615, - 0.3000775490784563, - 0.300073541316688, - 0.3000697406773604, - 0.30006613645631797, - 0.3000627185025995, - 0.3000594771898481, - 0.3000564033892014, - 0.30005348844357776, - 0.3000507241432988, - 0.30004810270296417, - 0.30004561673952396, - 0.30004325925148817, - 0.3000410235992061, - 0.300038903486166, - 0.3000368929412624, - 0.3000349863019775, - 0.3000331781984349, - 0.30003146353827553, - 0.3000298374923146, - 0.3000282954809416, - 0.3000268331612216, - 0.3000254464146629, - 0.3000241313356213, - 0.3000228842202944, - 0.3000217015562959, - 0.3000205800127606, - 0.30001951643096203, - 0.3000185078154197, - 0.3000175513254589, - 0.3000166442672121, - 0.3000157840860321, - 0.3000149683592978, - 0.3000141947895873, - 0.3000134611982136, - 0.3000127655190823, - 0.300012105792876, - 0.3000114801615361, - 0.30001088686302896, - 0.3000103242263823, - 0.3000097906669822, - 0.3000092846821066, - 0.3000088048466953, - 0.3000083498093349, - 0.3000079182884547, - 0.3000075090687141, - 0.3000071209975846, - 0.3000067529820973, - 0.3000064039857712, - 0.3000060730256898, - 0.3000057591697334, - 0.30000546153395585, - 0.300005179280092, - 0.30000491161320153, - 0.3000046577794234, - 0.3000044170638571, - 0.3000041887885508, - 0.3000039723105864, - 0.3000037670202751, - 0.3000035723394337, - 0.3000033877197624, - 0.30000321264129576, - 0.3000030466109411, - 0.30000288916109025, - 0.30000273984829906, - 0.300002598252042, - 0.3000024639735259, - 0.3000023366345672, - 0.3000022158765273, - 0.30000210135930283, - 0.3000019927603663, - 0.30000188977385783, - 0.3000017921097259, - 0.3000016994929083, - 0.3000016116625588, - 0.30000152837130983, - 0.30000144938457995, - 0.3000013744799104, - 0.300001303446338, - 0.300001236083805, - 0.3000011722025898, - 0.30000111162277593, - 0.3000010541737469, - 0.3000009996937027, - 0.3000009480292047, - 0.3000008990347452, - 0.300000852572335, - 0.3000008085111172, - 0.3000007667269983, - 0.3000007271022959, - 0.3000006895254114, - 0.3000006538905123, - 0.3000006200972365, - 0.3000005880504084, - 0.3000005576597703, - 0.3000005288397309, - 0.3000005015091205, - 0.3000004755909653, - 0.30000045101226835, - 0.3000004277038067, - 0.30000040559993385, - 0.3000003846383962, - 0.30000036476015834, - 0.3000003459092342, - 0.300000328032532, - 0.30000031107970304, - 0.30000029500300224, - 0.3000002797571505, - 0.3000002652992092, - 0.300000251588459, - 0.3000002385862852, - 0.3000002262560679, - 0.30000021456308035, - 0.3000002034743899, - 0.3000001929587664, - 0.3000001829865943, - 0.3000001735297874, - 0.30000016456171097, - 0.3000001560571079, - 0.3000001479920254, - 0.30000014034374894, - 0.3000001330907381, - 0.3000001262125653, - 0.30000011968985857, - 0.3000001135042477, - 0.3000001076383111, - 0.30000010207552785, - 0.3000000968002305, - 0.3000000917975632, - 0.30000008705343545, - 0.3000000825544857, - 0.30000007828804204, - 0.3000000742420906, - 0.30000007040523463, - 0.3000000667666695, - 0.30000006331614626, - 0.30000006004394714, - 0.3000351569988654, - 0.3002106546971793, - 0.30027384962687104, - 0.3002871656560597, - 0.30028248662217144, - 0.30027164740253964, - 0.3002590003390446, - 0.3002461309466897, - 0.3002336026067925, - 0.300221601828482, - 0.30021017685468554, - 0.30019932585865605, - 0.30018902951046994, - 0.30017926297011177, - 0.30017000027363344, - 0.30016121590825706, - 0.3001528853501748, - 0.3001449852209899, - 0.30013749330529355, - 0.30013038851896123, - 0.3001236508612, - 0.3001172613624527, - 0.3001112020325432, - 0.3001054558106063, - 0.3001000065172566, - 0.3000948597708929, - 0.3000899818422409, - 0.3000853409737617, - 0.30008094836228577, - 0.30007678625689593, - 0.3000728583821659, - 0.300069108366242, - 0.30006554276956665, - 0.30006215980166284, - 0.30005899235196426, - 0.3000559608299037, - 0.300053075349392, - 0.3000503350475769, - 0.3000477348958036, - 0.30004527763633226, - 0.3000429544194915, - 0.3000407409037478, - 0.3000386379229117, - 0.30003668062087124, - 0.3000348073297912, - 0.30003301689330153, - 0.30003131381317844, - 0.30002969682829955, - 0.30002816269300303, - 0.3000267075711714, - 0.30002532754448274, - 0.3000240187933662, - 0.3000227776572581, - 0.3000216042454889, - 0.30002051005415753, - 0.3000194584926125, - 0.3000184560570268, - 0.30001750349284145, - 0.30001659943809433, - 0.3000157229420324, - 0.300013041611165, - 0.3000110917367021, - 0.3000096594382239, - 0.3000084361350437, - 0.3000073039665923, - 0.3000062083061201, - 0.3000052838131612, - 0.3000047608763935, - 0.30000442219627543, - 0.3000041593922926, - 0.30000393176471835, - 0.3000037238889756, - 0.30000352971093064, - 0.3000033466607633, - 0.3000031734746375, - 0.3000030093880089, - 0.30000285383638314, - 0.3000027063438229, - 0.3000025664809547, - 0.30000243384872016, - 0.3000023080716897, - 0.3000021943312956, - 0.30000208708925485, - 0.30000198151397484, - 0.3000018799572269, - 0.3000017831169816, - 0.3000016910845425, - 0.3000016037353925, - 0.3000015208733547, - 0.3000014422835043, - 0.3000013677513369, - 0.3000012970694809, - 0.3000012300398175, - 0.3000011664739271, - 0.3000011061929252, - 0.3000010490271005, - 0.30000099481548137, - 0.3000009434054069, - 0.3000008946521013, - 0.3000008484182684, - 0.3000008045737075, - 0.3000007629949461, - 0.30000072356489194, - 0.3000006861725041, - 0.30000065071248033, - 0.3000006170849593, - 0.3000005851952418, - 0.3000005549535208, - 0.30000052627463164, - 0.3000004990778101, - 0.30000047328646623, - 0.30000044882796706, - 0.3000004256334349, - 0.3000004036375496, - 0.30000038277836744, - 0.3000003629971464, - 0.3000003442381793, - 0.3000003264486381, - 0.30000030957842444, - 0.3000002935800304, - 0.3000002784084009, - 0.3000002640208105, - 0.3000002503767428, - 0.30000023743777315, - 0.30000022516746355, - 0.30000021353125844, - 0.3000002024963898, - 0.3000001920317812, - 0.3000001821079627, - 0.30000017269698714, - 0.30000016377235184, - 0.3000001553089233, - 0.3000001472828684, - 0.3000001396715842, - 0.30000013245363594, - 0.3000001256086963, - 0.30000011911748997, - 0.30000011296173634, - 0.3000001071240993, - 0.3000001015881399, - 0.300000096338268, - 0.3000000913596987, - 0.30000008663841154, - 0.3000000821611117, - 0.3000000779151896, - 0.30000007388868805, - 0.3000000700702682, - 0.300000066449177, - 0.3000000630152161, - 0.3000000597587157, - 0.30000005667050433, - 0.30000005374188626, - 0.3000000509646128, - 0.3000000483308635, - 0.3000000458332208, - 0.300000043464651, - 0.3000000412184852, - 0.3000000390883956, - 0.300000037068386, - 0.3000000351527661, - 0.3000000333361408, - 0.3000000316133959, - 0.30000002997967906, - 0.3000000284303893, - 0.30000002696116385, - 0.3000000255678648, - 0.30000002424656913, - 0.3000000229935545, - 0.3000000218052937, - 0.3000000206784396, - 0.3000000196098198, - 0.30000001859642306, - 0.30000001763539685, - 0.3000000167240349, - 0.3000000158597701, - 0.3000000150401687, - 0.3000000142629233, - 0.3000000135258437, - 0.3000000128268551, - 0.3000000121639883, - 0.3000000115353778, - 0.3000000109392523, - 0.3000000103739339, - 0.3000000098378308, - 0.30000000932943083, - 0.3000000088473043, - 0.3000000083900933, - 0.30000000795651, - 0.3000000075453332, - 0.3000000071554058, - 0.3000000067856286, - 0.3000000064349609, - 0.3000000061024147, - 0.3000000057870543, - 0.3000000054879909, - 0.3000000052043824, - 0.30000000493543005, - 0.3000000046803766, - 0.3000000044385045, - 0.3000000042091314, - 0.3000000039916122, - 0.3000000037853332, - 0.3000000035897151, - 0.3000000034042057, - 0.300000003228283, - 0.3000000030614517, - 0.300000002903242, - 0.3000000027532084, - 0.3000000026109282, - 0.3000000024760007, - 0.3000000023480454, - 0.30000000222670337, - 0.3000000021116315, - 0.3000000020025068, - 0.3000000018990212, - 0.3000000018008835, - 0.30000000170781754, - 0.3000000016195611, - 0.3000000015358651, - 0.30000000145649464, - 0.300000001381226, - 0.3000000013098469, - 0.3000000012421565, - 0.3000000011779644, - 0.3000000011170895, - 0.3000000010593603, - 0.3000000010046148, - 0.3000000009526981, - 0.30000000090346457, - 0.30000000085677553, - 0.3000000008124993, - 0.300000000770511, - 0.30000000073069233, - 0.30000000069293176, - 0.30000000065712223, - 0.30000000062316345, - 0.30000000059095977, - 0.3000000005604199, - 0.3000000005314587, - 0.30000000050399395, - 0.3000000004779485, - 0.30000000045324904, - 0.3000000004298262, - 0.3000000004076133, - 0.3000000003865489, - 0.3000000003665728, - 0.3000000003476292, - 0.30000000032966434, - 0.300000000312628, - 0.3000000002964719, - 0.30000000028115104, - 0.300000000266622, - 0.30000000025284324, - 0.30000000023977674, - 0.3000000002273856, - 0.3000000002156348, - 0.30000000020449114, - 0.3000000001939233, - 0.30000000018390177, - 0.30000000017439804, - 0.3000000001653856, - 0.3000000001568387, - 0.3000000001487335, - 0.30000000014104744, - 0.30000000013375816, - 0.30000000012684586, - 0.3000000001202907, - 0.3000000001140745, - 0.3000000001081793, - 0.3000000001025889, - 0.3000000000972872, - 0.3000000000922595, - 0.3000000000874918, - 0.3000000000829702, - 0.3000000000786829, - 0.3000000000746163, - 0.3000000000707606, - 0.3000000000671037, - 0.3000000000636358, - 0.3000000000603473, - 0.3000000000572284, - 0.3000000000542712, - 0.3000000000514663, - 0.3000000000488068, - 0.3000000000462843, - 0.3000000000438929, - 0.3000000000416242, - 0.30000000003947314, - 0.3000000000374331, - 0.3000000000354992, - 0.3000000000336642, - 0.3000000000319251, - 0.3000000000302753, - 0.3000000000287109, - 0.30000000002722704, - 0.30000000002581945, - 0.3000000000244857, - 0.3000000000232196, - 0.30000000002202065, - 0.300000000020883, - 0.30000000001980365, - 0.3000000000187804, - 0.3000000000178099, - 0.3000000000168891, - 0.3000000000160156, - 0.3000000000151893, - 0.3000000000144024, - 0.30000000001366023, - 0.29999345804900635, - 0.2999894892178945, - 0.2999884195844586, - 0.2999884202659731, - 0.2999887974563509, - 0.2999892947794547, - 0.29998981816153364, - 0.2999903336705093, - 0.2999908296294664, - 0.2999913025682838, - 0.2999917520159585, - 0.2999921785715492, - 0.2999925831909317, - 0.29999296692435096, - 0.29999333082105, - 0.2999936758957659, - 0.29999400311806595, - 0.29999431341007143, - 0.2999946076472009, - 0.29999488665994944, - 0.2999951512359808, - 0.29999540212225256, - 0.2999956400270944, - 0.2999958656221908, - 0.2999960795444753, - 0.2999906523585177, - 0.2999240638898945, - 0.2998918989030425, - 0.29987717682365805, - 0.29986888839300857, - 0.29986258227096513, - 0.2998565872923754, - 0.2998508458592539, - 0.29985044219068946, - 0.2998550920312342, - 0.2998614473631381, - 0.29986819728543723, - 0.2998748664894993, - 0.2998812901309705, - 0.29988741812399106, - 0.2998932424467177, - 0.29989877015907634, - 0.2999040134049789, - 0.29990898572424346, - 0.2999137007077126, - 0.2999181715217405, - 0.2999224107544779, - 0.2999264303805325, - 0.2999302417684939, - 0.2999338557033149, - 0.2999372824131987, - 0.29994053159719397, - 0.2999436124521499, - 0.2999465336985596, - 0.2999493036051756, - 0.2999519300123864, - 0.29995442035440417, - 0.29995678168030104, - 0.2999590206739613, - 0.29996114367300125, - 0.2999631566867056, - 0.2999650654130389, - 0.2999668752547746, - 0.29996859133478604, - 0.2999496615037788, - 0.2999328685898434, - 0.29992900011424184, - 0.2999299486436551, - 0.2999325639958056, - 0.2999356812708576, - 0.2999388738161312, - 0.299941988905488, - 0.29994497526840563, - 0.2999478190385373, - 0.299950519975539, - 0.2999530826462139, - 0.29995551316181523, - 0.2999578179785578, - 0.2999600034639101, - 0.2999620757467206, - 0.2999640406722003, - 0.2999659037953053, - 0.2999676703878578, - 0.2999693454502748, - 0.299970933724536, - 0.2999724397071703, - 0.2999738676618208, - 0.2999752216312564, - 0.2999765054487937, - 0.29997772274914125, - 0.2999788769786907, - 0.29997997140526617, - 0.29998100912738057, - 0.2999819930830084, - 0.29998292605789945, - 0.2999838106934685, - 0.29998464949427456, - 0.2999854448351101, - 0.29998619896772344, - 0.29998691402719674, - 0.2999875920379889, - 0.2999882349196663, - 0.29998884449234026, - 0.2999894224818173 - ], - [ - 0.13982147077074153, - 0.04761577730536309, - 0.14432294028197426, - 0.16009465572497095, - 0.1557431858286894, - 0.15839561214469572, - 0.161997625778186, - 0.16519074739443762, - 0.16786269127868006, - 0.16999591164631522, - 0.17176022240290575, - 0.1732620887097633, - 0.17436095811297972, - 0.1751263139024587, - 0.17572754958935458, - 0.17617750362953555, - 0.17638220247260672, - 0.17656291299370908, - 0.1765850927229675, - 0.1765382788846156, - 0.17656691106058234, - 0.1766928746526986, - 0.1766539804568396, - 0.1765822529514563, - 0.17638213544325368, - 0.1762474916758483, - 0.17622313404802364, - 0.1761780783940657, - 0.17615365962976035, - 0.1761367617435853, - 0.17610768596751342, - 0.17605029100607986, - 0.1759754578869771, - 0.17588412910281806, - 0.17577215296660398, - 0.17564638612527225, - 0.17554722836457715, - 0.17543172244164498, - 0.17526822269079256, - 0.17506283610093107, - 0.17480635453602456, - 0.17456674297452632, - 0.17430726376865838, - 0.17410429806594402, - 0.1739937687081328, - 0.17389648657886425, - 0.173812313179605, - 0.1737353561909121, - 0.17365255087192838, - 0.17356153875287525, - 0.17347149603424125, - 0.17337672707215107, - 0.1732913841102326, - 0.1731696773465898, - 0.17301163184044713, - 0.17287826626736558, - 0.17281910369440284, - 0.17279951092444765, - 0.1727879333671124, - 0.17277913214752882, - 0.1727779936746171, - 0.17278636199241673, - 0.17280386232559014, - 0.1728314166944453, - 0.1728718859465456, - 0.1729263298707292, - 0.1729901345008746, - 0.17307181607472127, - 0.1731765997930182, - 0.17330100696697048, - 0.17345052884557796, - 0.17363076089212556, - 0.1738612285152988, - 0.17415568466542036, - 0.17429625427887502, - 0.17437463226345756, - 0.17445233703806684, - 0.17452452491315626, - 0.17458864654892786, - 0.1746483693906737, - 0.1747043248023561, - 0.17475672535684975, - 0.1748059756412016, - 0.17485200034337225, - 0.17489513329987896, - 0.17493550528812413, - 0.17497325097864447, - 0.17500865546871955, - 0.17504209219604974, - 0.17507325777576674, - 0.17510445381606496, - 0.1751323932464897, - 0.17515856301549682, - 0.17518329338119387, - 0.17520648695172414, - 0.17522840301605275, - 0.17524908318506088, - 0.17526856108938665, - 0.17528700623338206, - 0.17530439600304742, - 0.2141519908872876, - 0.21501251692888332, - 0.21816615536575465, - 0.22099581030713425, - 0.22364834979274795, - 0.22614840700207745, - 0.22851707172217076, - 0.2307593970039948, - 0.2328772834426541, - 0.2349137747030691, - 0.2368599579806489, - 0.2386958642979177, - 0.2404371035557756, - 0.2420456573194331, - 0.24353645737161306, - 0.2449331257198667, - 0.24625330179041144, - 0.2474944546343021, - 0.24867941278050795, - 0.24980045178059265, - 0.250861733159332, - 0.25186070750460604, - 0.2527952560520022, - 0.25367475910850057, - 0.25450347341757384, - 0.2552836843270309, - 0.2560144203047927, - 0.2567029786740569, - 0.25734943512955144, - 0.2579564956092423, - 0.2585235200758905, - 0.2590463348388783, - 0.2595402627698357, - 0.26000186736053643, - 0.26043260220923825, - 0.2608349315559049, - 0.2612070818491047, - 0.26155316851559024, - 0.261871449376032, - 0.2621637821884083, - 0.2624307977089448, - 0.2626720893374003, - 0.2628844234371851, - 0.26307653299330336, - 0.2632438817206675, - 0.2633860175482918, - 0.26349054511929365, - 0.26355385374213725, - 0.2635834614198732, - 0.2636741541955457, - 0.2637914604479134, - 0.2639050774531133, - 0.2640118769105321, - 0.26411262320372936, - 0.2642077462445739, - 0.26429756432731466, - 0.2643823732207294, - 0.2644624522613344, - 0.2645380652349007, - 0.2646094612172917, - 0.26467687539321444, - 0.2647405298309469, - 0.2648006522437454, - 0.2648574114706511, - 0.26491102857368576, - 0.26496167070177107, - 0.2650095017104995, - 0.26505466100661856, - 0.26509731282581744, - 0.2651375830129119, - 0.2651756174787454, - 0.26521153590415225, - 0.2652454438762059, - 0.2652774693720261, - 0.26530770978589235, - 0.26533626620425754, - 0.2653632439356673, - 0.2653887085248864, - 0.2654127517326385, - 0.2654354635863975, - 0.2654569058707716, - 0.26547716681323896, - 0.2654962947539026, - 0.2655143504749685, - 0.26553139987316005, - 0.26554749950167034, - 0.26556270227686035, - 0.2655770689139455, - 0.2655906428524205, - 0.2656034536509042, - 0.2656155509334192, - 0.26562697492109416, - 0.2656377630917369, - 0.26564795083085785, - 0.26565757155622016, - 0.26566665682581464, - 0.2656752364412288, - 0.2656833385453965, - 0.26569098974178784, - 0.265698216770336, - 0.26570504922882016, - 0.2657114973172949, - 0.2657175837094301, - 0.26572333116485425, - 0.2657287587358855, - 0.2657338842281153, - 0.2657387244535289, - 0.26574329528902096, - 0.2657476117278849, - 0.2657516879289433, - 0.26575553800177026, - 0.2657591848038064, - 0.2657626206423457, - 0.2657658637533964, - 0.2657689262940961, - 0.265771818386027, - 0.2657745495146969, - 0.26577712863837905, - 0.26577956421711385, - 0.2657818642401084, - 0.2657840362519181, - 0.2657860873771951, - 0.2657880243440585, - 0.26578985350616297, - 0.2657915808635429, - 0.2657932120822902, - 0.26579475251314344, - 0.2657962072090376, - 0.2657975809416775, - 0.2657988782171943, - 0.2658001032909206, - 0.2658012601813557, - 0.26580235268334124, - 0.2658033843805108, - 0.2658043586570469, - 0.2658052787087809, - 0.2658061475536734, - 0.26580696804171633, - 0.2658077428642834, - 0.2658084745629523, - 0.26580916553784906, - 0.2658098180555154, - 0.265810434256345, - 0.2658110161616048, - 0.2658115656800661, - 0.2658120846142641, - 0.2658125746664105, - 0.26581303744397955, - 0.2658134744649779, - 0.26581388716292603, - 0.2658142768915581, - 0.2658146449292664, - 0.2658149924832912, - 0.26581532069368224, - 0.2658156306370381, - 0.26581592333003784, - 0.2658161997327749, - 0.2658164607519088, - 0.2658167072436362, - 0.26581694001650125, - 0.2658171598340489, - 0.2658173674173244, - 0.26581756344724594, - 0.2658177556866775, - 0.2658179509990873, - 0.2658181208974873, - 0.26581827952964865, - 0.26581842926889043, - 0.2658185706773745, - 0.2658187042160522, - 0.2658188303224589, - 0.2658189494102265, - 0.2658190618699885, - 0.26581916807063666, - 0.2658192683605307, - 0.26581936306864323, - 0.2658194525056373, - 0.2658195369648825, - 0.2658196167234238, - 0.2658196920428857, - 0.265819763170332, - 0.26581983033907564, - 0.2658198937694434, - 0.2658199536695006, - 0.2658200102357318, - 0.26582006365368555, - 0.2658201140985853, - 0.2658201617358987, - 0.26582020672188805, - 0.2658202492041158, - 0.2658202893219321, - 0.2658203272069323, - 0.2658203629833872, - 0.2658203967686505, - 0.2658204286735449, - 0.2658204588027253, - 0.2658204872550213, - 0.2658205141237636, - 0.26582053949708584, - 0.26582056345821925, - 0.26582058608576026, - 0.2658206074539315, - 0.2658206276328264, - 0.2658206466886348, - 0.2658206646838641, - 0.2658206816775425, - 0.2658206977254129, - 0.265820712880115, - 0.26582072719135963, - 0.265820740706091, - 0.2658207534686405, - 0.2658207655208709, - 0.26582077690231715, - 0.2658207876503116, - 0.2658207978001112, - 0.26582080738500835, - 0.26582081643644395, - 0.2658208249841087, - 0.2658208330560404, - 0.2658208406787174, - 0.2658208478771424, - 0.2658208546749283, - 0.26582086109437403, - 0.2658208671565361, - 0.2658208728812988, - 0.2658208782874421, - 0.2658208833926984, - 0.2658208882138139, - 0.26582089276660337, - 0.2658208970660007, - 0.2658209011261085, - 0.2658209049602452, - 0.2658209085809873, - 0.2658209120002113, - 0.265820915229134, - 0.2658209182783452, - 0.265820921157849, - 0.2658209238770891, - 0.26582092644498634, - 0.2658209288699633, - 0.26582093115997485, - 0.2658209333225324, - 0.2658209353647296, - 0.2658209372932653, - 0.2658209391144655, - 0.2658209408343037, - 0.2658209424584224, - 0.2658209439921483, - 0.2658209454405121, - 0.26582094680826457, - 0.2658209480998938, - 0.2658209493196353, - 0.2658209504714901, - 0.26582095155923713, - 0.26582095258644284, - 0.2658209535564789, - 0.26582095447252563, - 0.265820955337589, - 0.26582095615450524, - 0.26582095692595503, - 0.265820957654469, - 0.265820958342436, - 0.2658209589921134, - 0.2658209596056317, - 0.26582096018500423, - 0.2658209607321306, - 0.26582096124880605, - 0.26582096173672537, - 0.265820962197488, - 0.2658209626326077, - 0.2658209630435094, - 0.2658209634315415, - 0.26582096379797754, - 0.26582096414401823, - 0.2658209644708003, - 0.2658209647793945, - 0.2658209650708133, - 0.2658209653460131, - 0.2658209656058963, - 0.26582096585131515, - 0.26582096608307515, - 0.2658209663019357, - 0.2658209665086156, - 0.2658209667037921, - 0.2658209668881058, - 0.26582096706216096, - 0.26582096722652965, - 0.26582096738174965, - 0.2658209675283309, - 0.2658209676667537, - 0.2658209677974724, - 0.2658209679209161, - 0.2658209680374894, - 0.2658209681475743, - 0.26582096825153223, - 0.2658209683497045, - 0.2658209684424125, - 0.2658209685299605, - 0.26582096861263593, - 0.2658209686907105, - 0.2658209687644393, - 0.2658209688340646, - 0.2658209688998149, - 0.2658209689619057, - 0.2658209690205413, - 0.26582096907591274, - 0.26582096912820263, - 0.2658209691775825, - 0.2658209692242138, - 0.2658209692682498, - 0.26582096930983523, - 0.2658209693491059, - 0.2658209693861905, - 0.26582096942121164, - 0.2658209694542836, - 0.2658209694855148, - 0.26582096951500755, - 0.26582096954285944, - 0.2658209695691608, - 0.2658209695939984, - 0.2658209696174538, - 0.2658209696396032, - 0.26582096966052005, - 0.2658209696802729, - 0.2658209696989263, - 0.2658209697165415, - 0.2658209697331764, - 0.2658209697488853, - 0.2658209697637201, - 0.2658209697777289, - 0.26582096979095826, - 0.2658209698034513, - 0.2658209698152492, - 0.2658209698263903, - 0.2658209698369113, - 0.2658209698468469, - 0.2658209698562294, - 0.2658209698650895, - 0.2658209698734567, - 0.26582096988135817, - 0.2658209698888199, - 0.2658209698958663, - 0.26582096990252074, - 0.2658209699088045, - 0.2658209699147385, - 0.2658209699203424, - 0.2658209699256346, - 0.26582096993063153, - 0.2658209699353507, - 0.2658209699398075, - 0.2658209699440164, - 0.2658209699479909, - 0.2658209699517438, - 0.2658209699552885, - 0.2658209699586349, - 0.2658209699617959, - 0.2658209699647806, - 0.26582096996759896, - 0.2658209699702609, - 0.2658209699727752, - 0.26582096997514765, - 0.2658209699773906, - 0.2658209699795072, - 0.2658209699815058, - 0.2658209699833937, - 0.26582096998517657, - 0.26582096998686083, - 0.2658209699884504, - 0.2658209699899503, - 0.26582096999137034, - 0.26582096999270705, - 0.26582096999397364, - 0.26582096999516786, - 0.2658209699962942, - 0.2658209699973577, - 0.265820969998364, - 0.26582096999931365, - 0.2658209700002103, - 0.2658209700010565, - 0.2658209700018578, - 0.2658209700026149, - 0.2658209700033288, - 0.2658209700040005, - 0.2658209700046367, - 0.26582097000523963, - 0.265820970005804, - 0.265820970006343, - 0.2658209700068481, - 0.2658209700073262, - 0.2658209700077772, - 0.2658209700082051, - 0.26582097000860416, - 0.26582097000898897, - 0.2658209700093417, - 0.26582097000968496, - 0.2658209700100062, - 0.26582097001030075, - 0.2658209700105933, - 0.26582097001086474, - 0.2658209700111149, - 0.2576329294502057, - 0.25311438518913604, - 0.2509703490566638, - 0.2495273584337692, - 0.2484043671219201, - 0.24737276235437344, - 0.2463615293131312, - 0.24537802925993454, - 0.2444342210858971, - 0.2437714166611227, - 0.24308360346387264, - 0.24232966530953676, - 0.2415825835982809, - 0.2408592228175667, - 0.2401640600692797, - 0.2395111658526473, - 0.23887270167140726, - 0.23825322247969516, - 0.23765422561992544, - 0.23707298524251594, - 0.2365046838187604, - 0.23594503706271536, - 0.235392754175446, - 0.2348433041705185, - 0.23432550445550074, - 0.2338751503386601, - 0.2334617482563775, - 0.23307308810737895, - 0.2327051479899797, - 0.23235615582813746, - 0.2320246093087076, - 0.2317098836986428, - 0.2314113019971934, - 0.2311279297840989, - 0.23085896277718596, - 0.23060366138142724, - 0.2303613242306428, - 0.23013128684304565, - 0.22991292477919276, - 0.2297146853773169, - 0.22952934479687145, - 0.2293475567705251, - 0.2291733084556199, - 0.2290074807233828, - 0.2288499694996653, - 0.2287004183662931, - 0.2285584624532705, - 0.22842372539524244, - 0.22829583023859676, - 0.22817443891688596, - 0.2280592155560344, - 0.2279498730615728, - 0.22784605279369086, - 0.22774752190831074, - 0.2276540098703685, - 0.2275652333938164, - 0.2274809866777319, - 0.227401016942629, - 0.2273251044117005, - 0.2272530561852687, - 0.2271846723629524, - 0.22711977610856776, - 0.2270581727811441, - 0.2269996868193365, - 0.22694420157259804, - 0.2268915020430221, - 0.22684148251375144, - 0.2267940095587413, - 0.22674897146336814, - 0.2267062036018745, - 0.2266655982067793, - 0.22662707583457206, - 0.2265905214397187, - 0.22655580276410145, - 0.22652284306535755, - 0.22649157033154285, - 0.2264619063617475, - 0.22643372911224474, - 0.22640697454449585, - 0.22638158310512105, - 0.2263574953168841, - 0.2263346563090751, - 0.22631296173435714, - 0.22629235562231398, - 0.22627279183327784, - 0.2262542231732999, - 0.22623662172319264, - 0.22621990002657896, - 0.2262040215782863, - 0.2261889477113035, - 0.22617467632818666, - 0.2261611259461052, - 0.2261482469924123, - 0.22613601724165197, - 0.22612440709943865, - 0.22611338683956786, - 0.2261029256485424, - 0.2260929952051132, - 0.2260835687741423, - 0.22607462082764745, - 0.2260661270916877, - 0.2260580645135269, - 0.2260504230393544, - 0.22604317055946205, - 0.22603628026484104, - 0.22602973774407306, - 0.22602352680182786, - 0.22601763099965105, - 0.2260120344435997, - 0.2260067386814151, - 0.22600171842636266, - 0.2259969419937333, - 0.2259924045735193, - 0.22598809623974156, - 0.2259840062742808, - 0.2259801238367351, - 0.2259764384567174, - 0.22597294014800898, - 0.22596961941890426, - 0.2259664672562612, - 0.2259634751036116, - 0.2259606348386065, - 0.2259579387511445, - 0.2259553795224889, - 0.22595295020541614, - 0.22595064420535216, - 0.2259484552624787, - 0.2259463774347385, - 0.22594440508170316, - 0.22594253284926574, - 0.22594075565510266, - 0.2259390686748821, - 0.22593746732916306, - 0.2259359472709652, - 0.225934504373972, - 0.2259331347213249, - 0.2259318345949949, - 0.2259306107063139, - 0.22592944530165315, - 0.2259283361464379, - 0.22592728250672256, - 0.2259262821451266, - 0.22592533250968505, - 0.22592443106543056, - 0.225923575376568, - 0.22592276312321025, - 0.2259219921012044, - 0.22592126021775305, - 0.2259205654861554, - 0.2259199060205205, - 0.225919280030682, - 0.22591868581734104, - 0.2259181217674603, - 0.2259175866719873, - 0.22591707937736186, - 0.22591659733771605, - 0.2259161396072136, - 0.2259157050696698, - 0.2259152925790124, - 0.225914901024294, - 0.2259145293449143, - 0.2259141765325237, - 0.2259138416295448, - 0.22591352372689866, - 0.22591322196162364, - 0.2259129355145583, - 0.22591266360811926, - 0.22591703902662386, - 0.22594096655590604, - 0.225962912964372, - 0.2259766856057467, - 0.2259845708505145, - 0.22599048748223735, - 0.22599569069139624, - 0.22600052128360906, - 0.2260050776475591, - 0.2260093944536921, - 0.22601348930603035, - 0.22601737492415994, - 0.22602106234021554, - 0.22602456175317365, - 0.2260278827715401, - 0.2260310344956261, - 0.22603402555705426, - 0.2260368641461929, - 0.22603955803557396, - 0.22604211460143103, - 0.22604454084396655, - 0.22604684340653555, - 0.2260490285938389, - 0.2260511023891893, - 0.2260530704708966, - 0.2260549382278101, - 0.2260567107740809, - 0.2260583929631588, - 0.22605998940108604, - 0.22606150445910786, - 0.22606294228564064, - 0.22606430681762965, - 0.2260656017913344, - 0.2297997081863128, - 0.2318770593208302, - 0.23283681545423654, - 0.23344572051859394, - 0.2339277826724867, - 0.2343676044935926, - 0.2347654770650346, - 0.23517268912065745, - 0.2355832653453307, - 0.23598034246673866, - 0.23635995917269925, - 0.2367217064838056, - 0.2370661076299896, - 0.2373939082072414, - 0.2377058850062083, - 0.2380027955375308, - 0.2382853656734795, - 0.2385542875693967, - 0.23881022031342056, - 0.23906284421884444, - 0.2393000614318653, - 0.2395230887679663, - 0.23973456121497544, - 0.2399355882315982, - 0.2401268247498327, - 0.24030878524666424, - 0.24048192985376265, - 0.240646688455212, - 0.2408034679615645, - 0.2409526549945169, - 0.24109461729489615, - 0.2412297047521505, - 0.24135825029999775, - 0.24148057074597834, - 0.2415969675546839, - 0.24170772759138706, - 0.24181312382921905, - 0.24215397769299285, - 0.24245475373893946, - 0.24263883648461626, - 0.2427849317464416, - 0.2429160730331533, - 0.2430387201120325, - 0.2431548324679156, - 0.2432651449670904, - 0.24337005212855586, - 0.2434698471256317, - 0.2435647867150756, - 0.2436551091917065, - 0.2437410396513163, - 0.2438227918098711, - 0.2439005688744139, - 0.24397456413970786, - 0.24404496149331065, - 0.2441119358792157, - 0.2441756537344025, - 0.24423627340293105, - 0.24429394552957165, - 0.2443488134341999, - 0.2444010134679724, - 0.2444762080641442, - 0.2447172260072881, - 0.24484958840742174, - 0.2449380948910728, - 0.2450120902861457, - 0.2450797351792912, - 0.2451433450116995, - 0.2452036558812441, - 0.2452609736421208, - 0.2453154831936659, - 0.24536733190619675, - 0.24541665229851095, - 0.2454635683679759, - 0.24550819751342065, - 0.24555065126215325, - 0.2455910356651653, - 0.24562945159337965, - 0.24566599499802766, - 0.2457007571525733, - 0.2457338248812891, - 0.24576528077628204, - 0.2457952034038221, - 0.24582366750058895, - 0.2458507441603399, - 0.2458765010114793, - 0.2459010023859753, - 0.24592430948003474, - 0.24594648050695356, - 0.2459675708425129, - 0.2459876331632899, - 0.246006717578227, - 0.24602487175378465, - 0.24604214103299865, - 0.2460585685487301, - 0.24607419533139754, - 0.2460890604114591, - 0.2461032009168924, - 0.246116652165932, - 0.2461294477552837, - 0.24614161964403186, - 0.2461531982334701, - 0.2461642124430261, - 0.2461746897824974, - 0.24618465642076004, - 0.24619413725113146, - 0.24620315595354106, - 0.2462117350536809, - 0.2462198959792629, - 0.2462276591135377, - 0.2462350438462091, - 0.2462420686218603, - 0.2462487509860224, - 0.2462551076289973, - 0.24626115442754465, - 0.2462669064845378, - 0.246272378166683, - 0.24627758314040574, - 0.2462825344059829, - 0.2462872443300137, - 0.2462917246763063, - 0.2462959866352625, - 0.24630004085182386, - 0.246303897452063, - 0.24630756606847146, - 0.2463110558640229, - 0.2463143755550537, - 0.24631753343303844, - 0.2463205373852949, - 0.2463233949146884, - 0.2463261131583672, - 0.2463286989055916, - 0.2463311586146898, - 0.24633349842919014, - 0.24633572419316235, - 0.24633784146581825, - 0.2463398555353946, - 0.2463417714323609, - 0.24634359394198385, - 0.2463453276162808, - 0.2463469767853881, - 0.2463485455683773, - 0.2463500378835401, - 0.24635145745817974, - 0.2463528078379165, - 0.2463540923955459, - 0.24635531433946226, - 0.24635647672167055, - 0.2463575824454112, - 0.2463586342724109, - 0.24635963482978016, - 0.2463605866165758, - 0.24636149201004195, - 0.24636235327154685, - 0.2463631725522337, - 0.2463639518983887, - 0.2463646932565575, - 0.2463653984784046, - 0.2463660693253373, - 0.24636670747290534, - 0.2463673145149885, - 0.2463678919677725, - 0.2463684412735409, - 0.2463689638042755, - 0.2463694608650834, - 0.24636993369745444, - 0.24637038348236506, - 0.2463708113432273, - 0.24637121834869424, - 0.2463716055153285, - 0.24637197381014264, - 0.2463723241530129, - 0.2463726574189789, - 0.24637297444042666, - 0.2463732760091687, - 0.2463735628784235, - 0.24637352680188626, - 0.2463728774115413, - 0.24637273199012136, - 0.2463727491528124, - 0.24637280757846314, - 0.24637287446394604, - 0.2463729411257254, - 0.24637300535400836, - 0.24637306667117895, - 0.2463731250590328, - 0.24637318061734426, - 0.2463732334724631, - 0.24637328375302195, - 0.24637333158364996, - 0.2463733770835134, - 0.2464091665704108, - 0.2464800618116536, - 0.2465105416109087, - 0.24652808206563465, - 0.2465416816668196, - 0.24655379138354225, - 0.24656508875692826, - 0.2465757753433696, - 0.2465859243003783, - 0.2465955734783085, - 0.2940457085554573, - 0.2950520025322981, - 0.2980645286909278, - 0.30151077274046323, - 0.3049694473992836, - 0.3083458685935457, - 0.31160948738001565, - 0.3147532371209417, - 0.31776099522540274, - 0.3206249372126888, - 0.3233212668471736, - 0.32586119450012146, - 0.32827096565364444, - 0.33056575708974395, - 0.3327574476974424, - 0.3348536569678699, - 0.33686327401200017, - 0.3387866590151712, - 0.34062479731281003, - 0.3423716570663449, - 0.3440242118920074, - 0.3455873594376828, - 0.3470757986133409, - 0.34849483559090594, - 0.349847279204388, - 0.3511362015939601, - 0.352364817968198, - 0.35353599996236545, - 0.35464770827384745, - 0.3557028425373817, - 0.3567061351451909, - 0.35766091139089445, - 0.3585706626301263, - 0.35943805312394816, - 0.36026457308990256, - 0.3610519731894832, - 0.3618021264567006, - 0.3625168546416716, - 0.363197842389538, - 0.3638465967211821, - 0.3644649533121911, - 0.3650545128343057, - 0.3656166876936892, - 0.36615285254632185, - 0.366664303850525, - 0.36715243313590223, - 0.3676184899317753, - 0.3680634965121214, - 0.3684883236994881, - 0.3688899873018916, - 0.36927046117837226, - 0.3696320734386104, - 0.3699761578036063, - 0.3703036393451851, - 0.3706153388743032, - 0.3709120227766773, - 0.3711944161334046, - 0.3714632077983731, - 0.3717190530597488, - 0.3719625691254233, - 0.3721942655974862, - 0.37241473164731503, - 0.3726245442047649, - 0.3728242283496071, - 0.37301427608481663, - 0.3731954868420153, - 0.37337384657788897, - 0.3735490399904275, - 0.3737194013417016, - 0.3738847647911291, - 0.3740451800085866, - 0.37419970092533067, - 0.3743406696890991, - 0.37447146956307503, - 0.3745949243245023, - 0.3747121071442893, - 0.3748235359925627, - 0.3749295531428398, - 0.3750304392926044, - 0.3751264481141596, - 0.3752178169984831, - 0.3753047706629722, - 0.37538752260705305, - 0.3754662759062762, - 0.3755412237913364, - 0.37561255014630174, - 0.3756804290213742, - 0.37574501447789505, - 0.3758064700998904, - 0.37586495162259603, - 0.3759206042359486, - 0.3759735651601854, - 0.3760239646946509, - 0.3760719267517743, - 0.3761175692256785, - 0.37616100430113775, - 0.3762023387350672, - 0.37624167412063003, - 0.37627910713745705, - 0.3763147297894189, - 0.32860818727799296, - 0.3276409487720505, - 0.32475249410977697, - 0.32141187373665725, - 0.31803981124039965, - 0.31478735255644136, - 0.3116827072772876, - 0.30872126812816536, - 0.3059099605947819, - 0.3032321953734501, - 0.3006808194472185, - 0.29827580811665866, - 0.2960024658633682, - 0.2938220949235745, - 0.2917197028497047, - 0.2897057578582086, - 0.2878000716299292, - 0.28599292649147623, - 0.28427507076052605, - 0.2826541478491442, - 0.2811338265984161, - 0.2796705985418565, - 0.27827249621721023, - 0.2769428727231, - 0.2756767190971722, - 0.2744708970231485, - 0.27332318518016513, - 0.2722315947558791, - 0.27121273300683657, - 0.2702343944488821, - 0.26929888007191033, - 0.26840732827156805, - 0.2675585748245997, - 0.26675083021929163, - 0.2659821909490506, - 0.2652507867140751, - 0.264554820481586, - 0.2638925771904001, - 0.263262423383006, - 0.2626628043113114, - 0.2620922404344206, - 0.26154932386606417, - 0.2610327149294536, - 0.26054113886004376, - 0.26007338266246993, - 0.2596153235219675, - 0.2591390344727993, - 0.25871157645229864, - 0.2583143073811182, - 0.2579390434916184, - 0.25758273416563543, - 0.25724388226042644, - 0.2569214742803943, - 0.2566146659543876, - 0.25632268896408755, - 0.2560448223956164, - 0.2557803831754899, - 0.25552872211566785, - 0.2552892216544809, - 0.2550612941466512, - 0.2548443803645553, - 0.25463794810951923, - 0.25444149090120244, - 0.2542545267335311, - 0.2540765968916868, - 0.2539072648265289, - 0.25374611508349404, - 0.25359275228326866, - 0.2534468001517284, - 0.2533079005967541, - 0.2531757128296513, - 0.2530499125290324, - 0.25293315997634164, - 0.2528218300768822, - 0.2526923266489918, - 0.2525769583747691, - 0.2524728750407399, - 0.2523755192208973, - 0.2522833595988729, - 0.252195877107395, - 0.2521484384006363, - 0.25208942953039315, - 0.2520242138914369, - 0.2519594612899095, - 0.25189705682170144, - 0.2518374424904655, - 0.251784741467686, - 0.25175685838290435, - 0.25171761807679915, - 0.25167524341027353, - 0.2516334432504178, - 0.2515932380017352, - 0.25155485522016224, - 0.2515182952219318, - 0.25148349546655663, - 0.25145037817901195, - 0.2514188640433241, - 0.2513888760425301, - 0.25136034044165434, - 0.2513331869467842, - 0.251302528843356, - 0.2512702842842208, - 0.251243429301273, - 0.2512191039363537, - 0.2511963142750214, - 0.25117473176006155, - 0.2511542241567339, - 0.2511347180115207, - 0.2511161586300482, - 0.25110892186674444, - 0.2511390760104103, - 0.25114452152819555, - 0.2511469428187993, - 0.25114629800898514, - 0.2511424520031019, - 0.2511378239960778, - 0.2511331403212726, - 0.2511286030520466, - 0.2511242627178361, - 0.25112012641696563, - 0.2511161890568345, - 0.25111244236754765, - 0.2511412276720382, - 0.2511648213581418, - 0.2511743069507064, - 0.2511794300411573, - 0.2511831771468572, - 0.25118641693678906, - 0.251189405286746, - 0.2511922210973843, - 0.2511948919908009, - 0.2511974305661944, - 0.2511998448653578, - 0.25120214140129105, - 0.2512043260419207, - 0.2512064042748621, - 0.2512083812932229, - 0.25121026202934565, - 0.25121205117310164, - 0.2512137531853104, - 0.2512153723093617, - 0.2512169125819365, - 0.2512183778431163, - 0.251219771745961, - 0.25122109776562845, - 0.2512223592080361, - 0.2512235592180999, - 0.2512247007875815, - 0.2512257867625392, - 0.2512268198504336, - 0.2512278026268667, - 0.2512287375420113, - 0.2512296269267156, - 0.251230472998316, - 0.2512312778661633, - 0.2512320435368844, - 0.2512327719193823, - 0.2512334648295951, - 0.2512341239950275, - 0.2512347510590525, - 0.2512353475850097, - 0.2512359150601076, - 0.2512364548991243, - 0.2512369684479375, - 0.2512374569868845, - 0.2512379217339477, - 0.2512383638477924, - 0.2512387844306586, - 0.251239184531106, - 0.251239565146631, - 0.25123992722615024, - 0.2512402716723696, - 0.2512405993440305, - 0.2512409110580558, - 0.2512412075915838, - 0.2512414896839069, - 0.25124175804041743, - 0.25127489119881, - 0.2512948898596972, - 0.25130486191059664, - 0.2513116796679705, - 0.25131739661154195, - 0.2513226135012287, - 0.25132751208818843, - 0.2513321531672432, - 0.25133656232882684, - 0.25134075464242217, - 0.2513447417750761, - 0.2513485340571338, - 0.2513521410938564, - 0.2513555719579586, - 0.2513588352608136, - 0.25136193918798194, - 0.2513879762460653, - 0.25141739026570736, - 0.2514321817486415, - 0.2514421886357955, - 0.2514505361818053, - 0.25145813931695377, - 0.2514652740608592, - 0.2476763308722768, - 0.24513637294951585, - 0.24386055546744925, - 0.24304911817648936, - 0.2424842872626261, - 0.2419271969262932, - 0.24139024627537034, - 0.24087812821670054, - 0.2403912717901308, - 0.2399292677549135, - 0.2394908782632503, - 0.2390752031024902, - 0.2386808140108645, - 0.23830656243813195, - 0.23795157021793104, - 0.23761492483494995, - 0.237295647795008, - 0.2369923574308682, - 0.23670478625883706, - 0.23642928793242146, - 0.23616651417149145, - 0.23591914725484314, - 0.23568524308573574, - 0.23546357921417496, - 0.2352533813299869, - 0.23505402972811, - 0.2348649293563291, - 0.23468558241077034, - 0.2345154280800244, - 0.2343539889735124, - 0.2342008973940055, - 0.23405571625384874, - 0.2339179243128785, - 0.2337872899549069, - 0.2336633713474376, - 0.2335457895785201, - 0.23343426305956386, - 0.2333284727345181, - 0.2332281769418893, - 0.23313294242412425, - 0.2330426319638643, - 0.2329569813941243, - 0.2328757429679165, - 0.2327987097512035, - 0.23272559158663786, - 0.2326562740173743, - 0.2325904677527857, - 0.2325280731141676, - 0.23246895118025265, - 0.2324127854633125, - 0.2323594917859651, - 0.23230898289503105, - 0.23226106445115036, - 0.2322157155170374, - 0.23217261066877976, - 0.2321316797108117, - 0.23209283455756585, - 0.23205609777296746, - 0.23202120309495694, - 0.23198806486305476, - 0.2319566147016745, - 0.2319268839303245, - 0.2318986497262437, - 0.2318718281503188, - 0.2318463694500633, - 0.231822211701985, - 0.2317993082046351, - 0.2317776047921334, - 0.23175701638537105, - 0.23173747832320316, - 0.2317189874885647, - 0.2317014129518197, - 0.23168472603335816, - 0.23166889107916586, - 0.23165400148683876, - 0.23163982566978875, - 0.2316263429004275, - 0.23161353969246185, - 0.23160138885247214, - 0.2315898595394929, - 0.23157892077762515, - 0.23156854259525456, - 0.2315586963586717, - 0.23154935483446296, - 0.2315404921622801, - 0.2315320837995951, - 0.23152410645931104, - 0.2315165396815144, - 0.23150937100194674, - 0.23150261061075336, - 0.2314962713819515, - 0.2314902009162283, - 0.2314844197635625, - 0.23147892749906876, - 0.2314737142370783, - 0.23146876735013594, - 0.2314640737530502, - 0.2314596206555716, - 0.2314553957952743, - 0.2314513874948509, - 0.2314475846608019, - 0.2314439767632636, - 0.2314405538104379, - 0.2314373063221372, - 0.23143422530393964, - 0.23143130222242286, - 0.2314285289815744, - 0.23142589790038465, - 0.2314234016915807, - 0.231421033441442, - 0.2314187865906528, - 0.23141665491613894, - 0.23141463251382416, - 0.2314127145237869, - 0.2314108946706609, - 0.2314091678812037, - 0.231407529531316, - 0.23140597513876296, - 0.2314045004172454, - 0.2314031012886668, - 0.2314017738800612, - 0.23140051451566315, - 0.2313993197076783, - 0.23139818614694616, - 0.23139711069388666, - 0.2313960903698393, - 0.2313951223488276, - 0.23139420394973656, - 0.23139333262888745, - 0.2313925059729932, - 0.2313917216924731, - 0.2313909776151163, - 0.23139027168005885, - 0.2313896019320819, - 0.2313889665161918, - 0.23138836367248355, - 0.2313877917312692, - 0.2313872491084497, - 0.23138673430112755, - 0.2313862458834487, - 0.2313857825026469, - 0.23138534287530235, - 0.2313849257837837, - 0.2313845300728779, - 0.2313841546465893, - 0.23138379846510396, - 0.2313834605419098, - 0.23138313994106474, - 0.2313828357746042, - 0.2313825472000824, - 0.23138227341823764, - 0.2313820136707791, - 0.231381767238288, - 0.2313815334382227, - 0.2313813116230299, - 0.2313811011783501, - 0.2313809015213184, - 0.23138071209894506, - 0.2313805323865917, - 0.2313803618865095, - 0.2313802001264656, - 0.2313800466584364, - 0.23137990105736386, - 0.2313797629199768, - 0.23137963186367802, - 0.2313795075254832, - 0.23137938956101356, - 0.2313792776435444, - 0.2313791714630988, - 0.23137907072559144, - 0.23137897515200925, - 0.23137888447764424, - 0.2313787984513557, - 0.2313787168348787, - 0.2313786394021603, - 0.2313785659387361, - 0.23137849624113524, - 0.2313784301163172, - 0.2313783673811376, - 0.23137830786183824, - 0.23137825139356966, - 0.23137819781993235, - 0.2313781469925437, - 0.2313780987706285, - 0.2313780530206273, - 0.23137800961582586, - 0.2313779684360064, - 0.23137792936711424, - 0.23137789230094005, - 0.23137785713482226, - 0.23137782377136296, - 0.2313777921181543, - 0.23137776208752725, - 0.2313777335963057, - 0.2313777065655789, - 0.2313776809204793, - 0.23137765658997905, - 0.2313776335066887, - 0.23137761160667575, - 0.23137759082928444, - 0.23414835354906896, - 0.2359810776493902, - 0.2369335176704826, - 0.2375479949974015, - 0.23804918177635015, - 0.2385060086382607, - 0.2389335910306885, - 0.2393378572855763, - 0.2397215168190287, - 0.2400861247427256, - 0.24043280360432825, - 0.2407624966687941, - 0.2410760576780309, - 0.24139186708154514, - 0.2416972554059873, - 0.2419782932955741, - 0.2422418798362897, - 0.2424912784748567, - 0.2427280273068136, - 0.2429530395099863, - 0.24316699182650164, - 0.24337046100541895, - 0.24356397225385734, - 0.2437480169526707, - 0.2439230596111077, - 0.24408954102989705, - 0.2442478801056949, - 0.2443984751273275, - 0.2445417048621473, - 0.24467792953815715, - 0.2448074917602771, - 0.2449307173755832, - 0.2450479162940558, - 0.2451799488088988, - 0.2453210912833919, - 0.2454394647124972, - 0.24554605071771496, - 0.245645326708239, - 0.24573901439358975, - 0.2458278628822145, - 0.2459122748321558, - 0.2459925251749389, - 0.24606883772184224, - 0.24614141219802066, - 0.2462195539936005, - 0.2464468852121547, - 0.24659781684076884, - 0.24670608476705275, - 0.24679665694010214, - 0.2468784727899787, - 0.2469547734695373, - 0.2470268086182375, - 0.24709512841982165, - 0.2471600338414345, - 0.2472217336996228, - 0.2472803996194009, - 0.247336185423165, - 0.2473892341205385, - 0.24743968056875865, - 0.2474876526142896, - 0.2475332716949889, - 0.24757665324438805, - 0.2476179070175167, - 0.2476571373803281, - 0.2476944435778232, - 0.2477299199865395, - 0.2477636563538045, - 0.2477957380249464, - 0.24782624615926024, - 0.24798210751721544, - 0.248164700684112, - 0.24826909298666475, - 0.2483430646029412, - 0.2484046027972362, - 0.24846034572043424, - 0.2485159233317037, - 0.2485667848222839, - 0.24861418246082265, - 0.2486589121249388, - 0.24870132464816266, - 0.2487416103143126, - 0.2487799002496416, - 0.24881630183110626, - 0.24885091114429445, - 0.2488838174607593, - 0.2489151049356283, - 0.24894485333256625, - 0.2489731384042077, - 0.24900003214656755, - 0.24902560300367346, - 0.24904991604917434, - 0.24908572048135685, - 0.2491598039397705, - 0.24920698639769875, - 0.24924200040667996, - 0.2492718577449463, - 0.2492990533789008, - 0.2493244964484617, - 0.2493485433441984, - 0.2493713565659832, - 0.2493963791784865, - 0.24942556908845004, - 0.2494494282245777, - 0.2494705737067075, - 0.2494901422787044, - 0.24950856136131025, - 0.2495260089762201, - 0.2495425751032659, - 0.2495583177743865, - 0.2495732826126623, - 0.24958750967940785, - 0.2496010359126201, - 0.2496138960321051, - 0.2496261229094932, - 0.2496377477497655, - 0.2496488002047341, - 0.2496593084604278, - 0.2496692993130459, - 0.24967879823870465, - 0.2496878294588938, - 0.249696416002406, - 0.2497045797641211, - 0.2497123415608547, - 0.2497197211844459, - 0.2497267374522279, - 0.2497334082550117, - 0.2497397506027028, - 0.2497457806676816, - 0.2497515138260345, - 0.249756964696766, - 0.24976214717907444, - 0.2497670744877921, - 0.2497717591870832, - 0.2497762132224824, - 0.249780447951353, - 0.2497844741718461, - 0.24978830215044, - 0.2497919416481112, - 0.2497954019452307, - 0.2497986918652245, - 0.24980181979707225, - 0.2498047937167014, - 0.24980762120732064, - 0.24981030947876104, - 0.2498128653858555, - 0.2498152954459233, - 0.2498176058553845, - 0.2498198025055612, - 0.2498218909977013, - 0.2498238766572582, - 0.24982621581135386, - 0.2498328934990831, - 0.2498372930170133, - 0.24984193845195024, - 0.2498453543099527, - 0.2498481379473018, - 0.24985062247244855, - 0.2498529284064208, - 0.24985510126853536, - 0.2498571603576217, - 0.2498591156998664, - 0.24986097393935916, - 0.2498627403905657, - 0.24986441975833834, - 0.2498660163950981, - 0.2498675343970336, - 0.24986897764408075, - 0.2498703498200683, - 0.2498716544256701, - 0.24987289478857036, - 0.2498740740723769, - 0.2498751952848376, - 0.2498762612855666, - 0.2498772747933529, - 0.2498782383931011, - 0.2498791545424281, - 0.2498800255779283, - 0.24988085372113605, - 0.2498816410841919, - 0.24988238967522705, - 0.24988310140348824, - 0.24988443856811465, - 0.24989630627226705, - 0.24990303440925055, - 0.24990699310636585, - 0.2499099035191279, - 0.24991237443166156, - 0.2499146208803213, - 0.24991672102587045, - 0.24991870535919675, - 0.2499205876641409, - 0.2499223757695353, - 0.2499240752878453, - 0.2499256909198432, - 0.24992722691434044, - 0.2499286872343938, - 0.2499300756213239, - 0.2499313956229711, - 0.2499326506092367, - 0.2499338437829335, - 0.29813823570477144, - 0.2990645532793753, - 0.30178343194832336, - 0.3050078565469889, - 0.3082953688688668, - 0.3114979584112624, - 0.3145695275048955, - 0.3174990824381732, - 0.3202875632107554, - 0.3229398163487731, - 0.32546182347207114, - 0.32785962937323354, - 0.330138629194718, - 0.3323048925736032, - 0.3343641916328338, - 0.33632187740982755, - 0.3381829782321668, - 0.3399521343051186, - 0.34163303465228434, - 0.34323031249047825, - 0.3447484031225524, - 0.3461913464362739, - 0.34756290242057064, - 0.3488666168641859, - 0.3501058503224051, - 0.35128379369904805, - 0.35240347888013834, - 0.3534677873821581, - 0.3544794580626869, - 0.3554410942715637, - 0.356355170586145, - 0.3572240391917114, - 0.3580499359387217, - 0.3588349860978391, - 0.35958120982940217, - 0.3602905273820681, - 0.3609646798752749, - 0.36160514442620817, - 0.36221372532062296, - 0.3627920909490425, - 0.3633417703015041, - 0.3638641962996408, - 0.36436072372354, - 0.36483263770386426, - 0.3652811587935947, - 0.3657074467368061, - 0.3661126036819689, - 0.3664976771067143, - 0.3668636625523125, - 0.3672115055598471, - 0.3675420923987685, - 0.3678562795728728, - 0.3681548860051204, - 0.3684386863451487, - 0.3687084154368411, - 0.3689647711990571, - 0.3692084163973399, - 0.3694399187568195, - 0.3696598595595682, - 0.3698688524199797, - 0.37006745663298496, - 0.3702561936563181, - 0.3704355554970497, - 0.370606008476508, - 0.37076799531573296, - 0.3709219365923824, - 0.3710682319406707, - 0.3712072611267925, - 0.37133938504810604, - 0.3714649466746595, - 0.3715842719411269, - 0.3716976705934622, - 0.3718054369931372, - 0.3719078508813263, - 0.37200517810508144, - 0.3720976713074372, - 0.3721855705832197, - 0.3722691041022933, - 0.3723484887018445, - 0.3724239304492507, - 0.37249562517699264, - 0.3725637589909967, - 0.3726285087537354, - 0.3726900425433201, - 0.3727485200898101, - 0.3728040931898332, - 0.3728569061006272, - 0.3729070959145005, - 0.3729547929147005, - 0.3730001209136001, - 0.3730431975740954, - 0.373084134715034, - 0.3731230386014757, - 0.3731600102205394, - 0.3731951455435408, - 0.3732285357751205, - 0.3732602675899932, - 0.3732904233579372, - 0.3733190813576111, - 0.3733463159797516, - 0.3251816225847713, - 0.32433251994303997, - 0.32168866160477155, - 0.3185286447861208, - 0.3152917650991993, - 0.3121221479762297, - 0.30908882363690704, - 0.3061968786351081, - 0.3034459905654792, - 0.30083133301004683, - 0.2983462444668065, - 0.2959843274843937, - 0.29373948527885085, - 0.2916059175707036, - 0.2895781095968081, - 0.2876243606481473, - 0.28576522719197656, - 0.28400911651729555, - 0.2823438701494063, - 0.2807623850778957, - 0.27925960599792715, - 0.2778313214603739, - 0.2764737357717625, - 0.2751833134435945, - 0.2739567191643211, - 0.2727907914239036, - 0.2716825281623641, - 0.2706290768730422, - 0.2696277265036163, - 0.268708877450401, - 0.2679715397974929, - 0.26719779932801363, - 0.2664304341737116, - 0.2656899757589075, - 0.2649823930493877, - 0.26430859396886325, - 0.2636677842011885, - 0.26305863267283697, - 0.2624796740623501, - 0.2619294461530135, - 0.2614065351187033, - 0.2609095889205185, - 0.2604373197320937, - 0.25998850266101503, - 0.25956197328774605, - 0.2591566248935415, - 0.25877140567538026, - 0.2583843037385105, - 0.2579933286498697, - 0.2576410762288112, - 0.2573136928998735, - 0.2570051003438703, - 0.2567126836664268, - 0.2564350585064843, - 0.2561712903437418, - 0.2559206229582235, - 0.2556823832935231, - 0.25545594745484257, - 0.25524072792724806, - 0.2550361681913081, - 0.2548417399475133, - 0.2546569412891227, - 0.25448129524628155, - 0.2543143484994744, - 0.2541556701903552, - 0.25400485080313423, - 0.2538615011053968, - 0.2537252511427837, - 0.2535957492839396, - 0.2534726613129381, - 0.2533556695667063, - 0.2532444721151984, - 0.2531387819821743, - 0.2530383264045753, - 0.2529364211049446, - 0.25282324542930923, - 0.25272574529860026, - 0.25263721337366835, - 0.2525544978999525, - 0.2524763700332921, - 0.2524022777189262, - 0.25233190904688874, - 0.2522650410569569, - 0.25220148721352914, - 0.2521410789797371, - 0.2520836591846085, - 0.2520288916055157, - 0.25197665792018337, - 0.2519271678802795, - 0.2518801861484121, - 0.25183554893740684, - 0.25179312652945723, - 0.25175280463568833, - 0.2517144777326153, - 0.25167804659056897, - 0.25164341725858363, - 0.2516105005602756, - 0.2515792117737692, - 0.2515494703824148, - 0.2515254726731128, - 0.25151533340632265, - 0.2514981866235816, - 0.25147874654925984, - 0.25145917913043964, - 0.2514402038410278, - 0.2514220376003434, - 0.2514047253691836, - 0.2513882542308956, - 0.25137259269742224, - 0.2513577042074982, - 0.25134355171983785, - 0.2513300992357371, - 0.2513173122648653, - 0.251305157929229, - 0.2512936049450437, - 0.251282623565137, - 0.251272185510264, - 0.2512622638990185, - 0.2512528331795452, - 0.2512438690640594, - 0.251235348466407, - 0.25122724944265185, - 0.25121955113457106, - 0.2512122337159425, - 0.25120527834148604, - 0.2511986670983311, - 0.25119238295988017, - 0.25118640974196244, - 0.25118073206115304, - 0.2511753352951518, - 0.2511702055451273, - 0.25116532959992033, - 0.251160694902022, - 0.2511562895152307, - 0.2511521020939125, - 0.25121688106722045, - 0.25126911781645705, - 0.2512945002144156, - 0.25131005007837104, - 0.25132187254306204, - 0.2513320899635796, - 0.25134144958050003, - 0.2513502239932396, - 0.2513585214998336, - 0.2513663930708949, - 0.2513738692459653, - 0.2513809728808171, - 0.25138772357183803, - 0.2513941392109221, - 0.2514002365500937, - 0.25140603142346823, - 0.25141153884978523, - 0.25141677309249555, - 0.2514217477039929, - 0.25142647556321474, - 0.2514309689098509, - 0.2514352393763312, - 0.2514392980180401, - 0.2514431553419716, - 0.251446821333946, - 0.2514503054844584, - 0.2514536168132561, - 0.2514567638926858, - 0.2514597548698861, - 0.25146259748787997, - 0.2514652991056171, - 0.2514678667170281, - 0.2514703069691289, - 0.2514726261792277, - 0.25147483035128176, - 0.2514769251914359, - 0.2514789161227999, - 0.2514808082994831, - 0.25148260661993993, - 0.2514843157396497, - 0.2514859400831729, - 0.2514874838555978, - 0.2514889510534325, - 0.25149034547494914, - 0.2514916707300182, - 0.2514929302494497, - 0.2514941272938798, - 0.2514952649622101, - 0.25149634619962763, - 0.2514973738052337, - 0.25149835043928626, - 0.2514992786300901, - 0.25150016078053977, - 0.2515009991743394, - 0.2515017959819176, - 0.2515025532660446, - 0.2515032729871737, - 0.2515039570085129, - 0.2515046071008523, - 0.25150522494714794, - 0.25150581214687473, - 0.2515063892094011, - 0.2515104055532425, - 0.2515130094844321, - 0.25151461605678915, - 0.24973549297808825, - 0.2484668849239761, - 0.2477770688010845, - 0.2473186217520701, - 0.24707580238188115, - 0.2468156802050485, - 0.2465567839661164, - 0.24630672861727906, - 0.24606790407626614, - 0.24584078465747536, - 0.2456251565374811, - 0.2454205711890142, - 0.245226512240228, - 0.2450424562752178, - 0.24486789441416565, - 0.2447023394192261, - 0.24454532748657634, - 0.24439641811418, - 0.24425519329809886, - 0.2441212565191284, - 0.2439942316887373, - 0.2438737621149643, - 0.24375950950893355, - 0.2436511530379186, - 0.2435483884255265, - 0.24345092709767024, - 0.24335849537237264, - 0.2432708336912957, - 0.24318769589089345, - 0.2431088485111636, - 0.24303407014007256, - 0.24296315079180594, - 0.2428958913171051, - 0.24283210284403586, - 0.2427716062476144, - 0.2427142316468036, - 0.24265981792747365, - 0.24260821228997026, - 0.2425592698200379, - 0.2425128530818898, - 0.2424688317322652, - 0.24242708215441844, - 0.2423874871109833, - 0.24234993541476504, - 0.242314321616506, - 0.2422805457087812, - 0.24224851284515944, - 0.24221813307387036, - 0.2421893210852044, - 0.2421619959719574, - 0.2421360810022351, - 0.24211150340397705, - 0.24208819416060906, - 0.2420660878172357, - 0.2420451222968349, - 0.2420252387259421, - 0.24200638126932186, - 0.24198849697318264, - 0.2419715356164707, - 0.24195544956984866, - 0.2419401936619434, - 0.24192572505250354, - 0.24191200311209715, - 0.2418989893080209, - 0.2418866470960941, - 0.2418749418180396, - 0.24186384060416186, - 0.2418533122810437, - 0.2418433272840048, - 0.2418338575740852, - 0.24182487655930854, - 0.2418163590200069, - 0.24180828103799984, - 0.24180061992943555, - 0.2417933541810854, - 0.2417864633899361, - 0.2417799282058955, - 0.2417737302774544, - 0.24176785220015415, - 0.2417622774677132, - 0.2417569904256758, - 0.2417519762274511, - 0.2417472207926236, - 0.2417427107674162, - 0.241738433487185, - 0.2417343769408608, - 0.24173052973722015, - 0.2417268810728957, - 0.2417234207020403, - 0.24172013890755506, - 0.24171702647380386, - 0.2417140746607335, - 0.2417112751793321, - 0.24170862016834985, - 0.2417061021722271, - 0.24170371412015554, - 0.24170144930622486, - 0.2416993013705907, - 0.2416972642816168, - 0.2416953323189343, - 0.2416935000573819, - 0.24169176235176876, - 0.24169011432242915, - 0.2416885513415155, - 0.2416870690200089, - 0.2416856631953888, - 0.24168432991994565, - 0.2416830654496972, - 0.2416818662338727, - 0.2416807289049434, - 0.24167965026916646, - 0.2416786272976143, - 0.24167765711767195, - 0.2416767370049683, - 0.2416758643757257, - 0.24167503677950786, - 0.24167425189233255, - 0.2416735075101525, - 0.24167280154266035, - 0.24167213200742302, - 0.2416714970243129, - 0.2416708948102275, - 0.2416703236740839, - 0.24166978201207104, - 0.2416692683031415, - 0.2416687811047446, - 0.2416683190487759, - 0.2416678808377295, - 0.2416674652410621, - 0.2416670710917339, - 0.24166669728292894, - 0.24166634276495244, - 0.24166600654227915, - 0.24166568767075935, - 0.2416653852549665, - 0.2416650984456841, - 0.2416648264375209, - 0.2416645684666479, - 0.241664323808655, - 0.241664091776516, - 0.2416638717186592, - 0.241663663017138, - 0.2416634650858963, - 0.24166327736912135, - 0.24166309933968386, - 0.24166293049765736, - 0.2416627703689157, - 0.2416626185038001, - 0.2416624744758558, - 0.24166233788063785, - 0.24166220833457064, - 0.2416620854738757, - 0.24166196895354636, - 0.2416618584463815, - 0.24166175364206435, - 0.2416616542462925, - 0.2416615599799542, - 0.2416614705783361, - 0.24166138579038934, - 0.2416613053780225, - 0.24166122911542645, - 0.2416611567884485, - 0.24166108819398602, - 0.24166102313941895, - 0.2416609614420671, - 0.24166090292867706, - 0.24166084743493715, - 0.24166079480501515, - 0.2416607448911193, - 0.2416606975530866, - 0.2416606526579871, - 0.2416606100797508, - 0.2416605696988123, - 0.2416605314017779, - 0.24166049508110574, - 0.2416604606348037, - 0.24166042796614146, - 0.2416603969833824, - 0.241660367599524, - 0.24166033973205325, - 0.24166031330271506, - 0.2416602882372929, - 0.24166026446540015, - 0.24166024192028354, - 0.2416602205386324, - 0.24166020026040666, - 0.2416601810286614, - 0.24166016278939284, - 0.2416601454913816, - 0.24166012908605375, - 0.24166011352734196, - 0.24166009877155498, - 0.2416600847772569, - 0.2416600715051508, - 0.24166005891796646, - 0.24166004698035826, - 0.24166003565880376, - 0.24166002492151106, - 0.2416600147383281, - 0.2416600050806613, - 0.24318408113872084, - 0.2442384830290167, - 0.2447907067384407, - 0.2451337827313032, - 0.24539914256045955, - 0.2456468171796632, - 0.2458806318763221, - 0.2461021563146157, - 0.24631233571576794, - 0.2465118635469097, - 0.2467013218162054, - 0.2468812345340007, - 0.2470520885741905, - 0.24721434227093345, - 0.24736842937763925, - 0.24751476124996755, - 0.247653728327749, - 0.24778973649055716, - 0.2479533072009869, - 0.2480933922270665, - 0.2482185121442481, - 0.2483343493615199, - 0.24844323579943625, - 0.2485462205316069, - 0.24864386278787956, - 0.2487365298101529, - 0.24882450893332636, - 0.24890989999896584, - 0.24899406223656556, - 0.24907191549803626, - 0.2491449725539289, - 0.2492140217910725, - 0.2492794707825445, - 0.24934157795157086, - 0.2494005404860347, - 0.2494565275679447, - 0.2495096930841895, - 0.2495601806328185, - 0.2496081256290641, - 0.2496536563126273, - 0.24969689433212944, - 0.24973795516063466, - 0.2497769484379669, - 0.24981397827618515, - 0.2498491435423304, - 0.24988253812418096, - 0.2499142511815927, - 0.24994436738479844, - 0.2499729671405601, - 0.25000012680688244, - 0.2500259188968913, - 0.2500531286425925, - 0.250078273762977, - 0.25010139962122924, - 0.2501230748020023, - 0.25014355122264564, - 0.2501629563255961, - 0.2501813692020305, - 0.2501988492412925, - 0.25021544694981523, - 0.2502312080820132, - 0.250246175260374, - 0.25026038865075795, - 0.2502738862801241, - 0.2502867042169665, - 0.25029887669719, - 0.2503104362266154, - 0.2503214136719256, - 0.25033183834464423, - 0.2503417380799794, - 0.2503511393113719, - 0.25036006714114944, - 0.2503685454075942, - 0.2503765967485937, - 0.25038424266209863, - 0.2503915035635223, - 0.25039839884025383, - 0.25040494690342546, - 0.25041116523707263, - 0.2504170704448161, - 0.25042267829419623, - 0.25042800375877644, - 0.2504330610581205, - 0.2504378636957625, - 0.2504424244952627, - 0.25044675563444785, - 0.2504508686779256, - 0.2504547746079663, - 0.25045848385382385, - 0.2506320602862792, - 0.25077256449092594, - 0.25084996315679065, - 0.2509020835509355, - 0.2509435714205267, - 0.2509799698287733, - 0.2510134092051353, - 0.2510452853891044, - 0.2510753515197174, - 0.25110364429566545, - 0.2511304108419511, - 0.25115578888884305, - 0.25117987128232044, - 0.25120273197252485, - 0.2512244358577861, - 0.251245042568538, - 0.2512646079783208, - 0.25128318485941903, - 0.2513008232138591, - 0.2513175704785935, - 0.2513334716795002, - 0.2513485695623251, - 0.2513629047112847, - 0.2513765156595512, - 0.2513894389933425, - 0.25140170945046475, - 0.2514133600137556, - 0.2514244219997718, - 0.2514349251429765, - 0.25144489767566824, - 0.2514543664038736, - 0.2514633567793974, - 0.2514718929682392, - 0.2514799979155529, - 0.2514876934073204, - 0.25149500012891274, - 0.25150193772069296, - 0.2515085248308068, - 0.25151477916531284, - 0.2515207175357717, - 0.2515263559044392, - 0.2515317094271671, - 0.2515367924941495, - 0.2515416187685964, - 0.25154620122346505, - 0.2515505521763269, - 0.25155468332248193, - 0.25155860576639105, - 0.25156233005152745, - 0.2515658661887161, - 0.2515692236830425, - 0.25157241155940285, - 0.2515754383867642, - 0.25157831230119393, - 0.2515810410277342, - 0.25158363190116073, - 0.251586091885705, - 0.2515884275937702, - 0.2515906453037059, - 0.2515927509766849, - 0.2515947502727249, - 0.2515966485659061, - 0.2515984509588135, - 0.2516001622962521, - 0.25160178717827303, - 0.25160332997253565, - 0.2516047948260481, - 0.2516061856763173, - 0.2516075062619276, - 0.2516087601325949, - 0.2516099506587039, - 0.25161108104037344, - 0.2516121543160524, - 0.25161317337069, - 0.2516141409434919, - 0.2516150596352781, - 0.25161593191547965, - 0.2516167601287732, - 0.2516175465013851, - 0.2516182931470728, - 0.25161900207280874, - 0.25161967518417583, - 0.2516203142904869, - 0.2516209211096516, - 0.2516214972727907, - 0.25162204432862273, - 0.25162256374762465, - 0.25162305692598885, - 0.2516235445791902, - 0.2516253122531549, - 0.25162654078468955, - 0.25162739234644305, - 0.2516280819111991, - 0.2516286921084803, - 0.2516292548146407, - 0.2516297828569179, - 0.2516302818887625, - 0.2516307548360327, - 0.2516312035629661, - 0.25163162949766593, - 0.2516320338681288, - 0.2516324177924236, - 0.2516327823142194, - 0.25163312841775154, - 0.25163345703502177, - 0.2516337690500105, - 0.2516340653016837, - 0.25163434658649186, - 0.25163461366060097, - 0.25163486724195433, - 0.2516351080122198, - 0.299991052141918, - 0.3007928578355393, - 0.30333236127063795, - 0.3064098004801856, - 0.3095810806914125, - 0.3126854412867265, - 0.3156678794312247, - 0.31851270714453145, - 0.32121870074776504, - 0.3237898149617292, - 0.32623171929939265, - 0.3285505131818073, - 0.3307522559391985, - 0.3328428010888496, - 0.33482774396063264, - 0.3367124112509829, - 0.3385018658043781, - 0.34020073399969325, - 0.3418130751332671, - 0.3433435325802377, - 0.3447964239538281, - 0.3461757407517082, - 0.3474852314362117, - 0.34872843935661824, - 0.34990872274799434, - 0.3510292677086097, - 0.3520930982660144, - 0.35310308508778354, - 0.354061953434072, - 0.3549722905885971, - 0.3558365528688505, - 0.35665707226475984, - 0.3574360627350455, - 0.3581756261825472, - 0.3588777581262371, - 0.3595442766068007, - 0.3601767499903194, - 0.3607770194495993, - 0.36134679674194464, - 0.3618876581960401, - 0.3624010815864898, - 0.3628884627353525, - 0.3633511240367149, - 0.3637903198243527, - 0.3642072404419899, - 0.3646030157214075, - 0.36497871813902294, - 0.3653353657577613, - 0.3656739249991833, - 0.36599531326728346, - 0.3663004014363046, - 0.3665900162112865, - 0.3668649423684777, - 0.36712592488196, - 0.3673736709423681, - 0.3676088345919856, - 0.3678319754045501, - 0.3680437348062097, - 0.36824471792693664, - 0.3684354826006643, - 0.3686165519180988, - 0.3687884199760107, - 0.3689515548544591, - 0.3691064005060872, - 0.3692533781960804, - 0.36939288773568224, - 0.3695253086027467, - 0.3696510009863927, - 0.3697703067714272, - 0.3698835504700432, - 0.36999104010516304, - 0.3700930680485123, - 0.370189911815965, - 0.3702818348224269, - 0.3703690870983297, - 0.3704519059697255, - 0.3705305167038092, - 0.3706051331216514, - 0.3706759581797877, - 0.3707431845222613, - 0.3708069950046145, - 0.3708675631912545, - 0.3709250538275523, - 0.3709796232879443, - 0.3710314200012745, - 0.37108058485452, - 0.3711272515760015, - 0.3711715470991244, - 0.3712135919076409, - 0.37125350036336174, - 0.3712913810172216, - 0.3713273369045381, - 0.3713614658252647, - 0.3713938606100124, - 0.37142460937254207, - 0.3714537957494376, - 0.3714814991275969, - 0.371507794860165, - 0.3715327544714903, - 0.3715564458516761, - 0.3232322329224647, - 0.3224858140566475, - 0.3200010126689307, - 0.3169716498282634, - 0.3138407075846085, - 0.31075481759110385, - 0.3077965087919434, - 0.30497837911527376, - 0.30229947679825225, - 0.2997550496474116, - 0.2973391461363996, - 0.2950455747053776, - 0.2928682539311144, - 0.2908013341135764, - 0.2888392333727923, - 0.2869585720075436, - 0.2851631757672948, - 0.2834694720099522, - 0.2818657985652321, - 0.28034490962875275, - 0.2789016044639869, - 0.27753157709571125, - 0.2762309764363083, - 0.2749962352102116, - 0.2738240000441481, - 0.2727110998018977, - 0.2716545285425228, - 0.27065143422615673, - 0.26969910982415524, - 0.2687949855667822, - 0.26793662184122397, - 0.2671217025458347, - 0.2663480288170593, - 0.2656135130874743, - 0.2649161734496817, - 0.2642541283073785, - 0.26362559129787383, - 0.2630288664718633, - 0.2624623437172679, - 0.2619244944147245, - 0.2614138673129868, - 0.26092908461308045, - 0.260468838250659, - 0.26003188636652, - 0.2596170499557597, - 0.2592232096865221, - 0.25883357865365325, - 0.2584506394353676, - 0.25809890849168604, - 0.2577697359880472, - 0.2574589882060546, - 0.2571646112354887, - 0.25688535772623433, - 0.2566203063563873, - 0.2563686807705813, - 0.2561297806651613, - 0.2559029548982372, - 0.255687590381366, - 0.255483106929678, - 0.2552889543918501, - 0.25510461068085394, - 0.2549295801870122, - 0.2547633923770587, - 0.2546056005035773, - 0.2544557803944637, - 0.25431352930908274, - 0.2541784648542978, - 0.2540502239560372, - 0.2539284618831011, - 0.2538128513204065, - 0.2537030814890849, - 0.2535988573110531, - 0.2534998986157913, - 0.25340593938720624, - 0.25331672704853303, - 0.25323202178337184, - 0.25315159589102565, - 0.2530752331744083, - 0.2530027283588671, - 0.2529338865403787, - 0.2528685226616162, - 0.252806461014485, - 0.2527475347677935, - 0.25269158551878657, - 0.2526384628673328, - 0.2525880240116285, - 0.2525401333643214, - 0.2524946621880335, - 0.2524514882492945, - 0.25241049548995986, - 0.2523715737152283, - 0.2523346182974214, - 0.25229952989473026, - 0.2522662141841653, - 0.25223458160800666, - 0.2522045471330544, - 0.2521760300220517, - 0.252164528872993, - 0.2521505545408743, - 0.2521325383977405, - 0.25211362687475314, - 0.2520949930751317, - 0.2520770417070957, - 0.2520599068276397, - 0.2520436042955915, - 0.25202811314859364, - 0.2520134002699281, - 0.2519994292756983, - 0.2519861637726696, - 0.2519735685156486, - 0.2519616097822323, - 0.251950255457729, - 0.2519394750144635, - 0.2519292394542143, - 0.25191952123938405, - 0.25191029422234384, - 0.25190153357636563, - 0.2518932157292996, - 0.2518853183003311, - 0.25187782003982445, - 0.2518707007721767, - 0.2518639413415356, - 0.2518575235602635, - 0.25185143015999906, - 0.2518456447451951, - 0.2518401517490028, - 0.25183493639138355, - 0.2518299846393458, - 0.25182528316918185, - 0.2518208193306182, - 0.2518165811127773, - 0.2518125571118621, - 0.2518087365004699, - 0.2518051089984601, - 0.25180166484529154, - 0.2517983947737613, - 0.2517952899850681, - 0.2517923421251386, - 0.2517895432621506, - 0.2517868858651868, - 0.2517843627839722, - 0.25178196722963914, - 0.2517796927564552, - 0.2517775332444813, - 0.2517754828831063, - 0.25177353615541104, - 0.2517716878233247, - 0.2517699329135289, - 0.2517682667040774, - 0.25176668471169, - 0.2517651826796922, - 0.2517637565665564, - 0.251762402535032, - 0.2517611169418181, - 0.2517598963277625, - 0.2517587374085509, - 0.25175763706587423, - 0.2517565923390329, - 0.2517556004169738, - 0.2517546586307277, - 0.2517537644462239, - 0.25175291545747497, - 0.25175210938010184, - 0.251751344045188, - 0.2517506173934427, - 0.25174992746965835, - 0.2517492724174548, - 0.2517486504742779, - 0.2517480599666625, - 0.25174749930572626, - 0.2517469669828941, - 0.251746461565843, - 0.2517459816946437, - 0.2517455260781056, - 0.2517450934902967, - 0.2517446827672519, - 0.25174429280383515, - 0.25174392255077, - 0.251743571011814, - 0.25174323724108044, - 0.25174292034049, - 0.2517426194573565, - 0.2517423337820907, - 0.2517420625460264, - 0.2517418050193453, - 0.25174156050911994, - 0.2517413283574451, - 0.25174110793966803, - 0.25174089866271115, - 0.25174069996346954, - 0.25174051130730385, - 0.2517403321865954, - 0.251740162119383, - 0.2517400006480647, - 0.2517398473381702, - 0.25173970177718713, - 0.2517395635734531, - 0.25173943235510404, - 0.2517393077690689, - 0.2517391894801219, - 0.2526225895026816, - 0.2535404714294605, - 0.2540256739828676, - 0.25433705317802, - 0.2546714667438212, - 0.2549429074992676, - 0.2551608576279873, - 0.25535173194353383, - 0.25552584524695954, - 0.2556888844645309, - 0.25585166854890684, - 0.2560067291201958, - 0.25615264739025273, - 0.2562902855072071, - 0.2564210225824559, - 0.2565452302018291, - 0.2566629145459221, - 0.2567746334643076, - 0.2568821788227491, - 0.256988497263528, - 0.2570927889210126, - 0.2571940509198385, - 0.25729265500528875, - 0.25738914313747124, - 0.2574842320032023, - 0.2575781976482057, - 0.2576712510862853, - 0.2577628610828894, - 0.25784796139151944, - 0.257927546712844, - 0.2580038161100068, - 0.25807745575464264, - 0.25813655100787736, - 0.25819383398206736, - 0.2582498020564685, - 0.2583036876123037, - 0.2583553288263421, - 0.25840474891587545, - 0.25845197898981936, - 0.2584971921415552, - 0.258540504974938, - 0.2585820197448733, - 0.258621773067651, - 0.2586599464018026, - 0.2586970525540806, - 0.2587329064000986, - 0.25876727032599833, - 0.2588003165464929, - 0.2588322514173337, - 0.25886334307636616, - 0.2588935543288862, - 0.2589229900631211, - 0.2589505983521353, - 0.25897538369123496, - 0.25899835023859097, - 0.25901999207946896, - 0.25904047204132685, - 0.25905988394456386, - 0.25907829521498194, - 0.2590957618004315, - 0.2591123337989421, - 0.2591280576338477, - 0.2591429101601609, - 0.2591569746651778, - 0.2591705092163451, - 0.2591834411039205, - 0.25932474038797626, - 0.25987365811568425, - 0.2601455529873329, - 0.2603096707698384, - 0.26043012448145125, - 0.2605310065254205, - 0.26062143605331023, - 0.2607049363792261, - 0.2607829186499887, - 0.260856183878767, - 0.2609250442059619, - 0.2609896998242717, - 0.2610504624861697, - 0.261107459328235, - 0.2611608408319686, - 0.2612107235282288, - 0.2612573208140121, - 0.2613006729332139, - 0.2613410396343633, - 0.2613784164602505, - 0.261412908807898, - 0.2614446284056547, - 0.2614735171282765, - 0.2614997057691971, - 0.2615231707893296, - 0.2615441009032129, - 0.26156244763817604, - 0.26157822752551163, - 0.2615915383426845, - 0.26160233695128404, - 0.26161030123961426, - 0.2616155455815589, - 0.261617963151019, - 0.26161746579023604, - 0.2616137600881902, - 0.2616064002620208, - 0.2615950797052458, - 0.2615794551397432, - 0.2615595763244645, - 0.2615341160789161, - 0.26150257046709585, - 0.2614634273869088, - 0.26143175379869144, - 0.2614125049956357, - 0.2613982831329469, - 0.2613862920100399, - 0.2613754740769511, - 0.2613654187837348, - 0.2613559505683153, - 0.2613469898939222, - 0.2613384874770296, - 0.2613304320387012, - 0.26132277309974555, - 0.2613154768646602, - 0.2613085823502274, - 0.26130205202062395, - 0.26129586083362544, - 0.26128998901616823, - 0.2612844192907669, - 0.26127913581710266, - 0.2612741237726492, - 0.26126936917203075, - 0.2612648563588766, - 0.26126050166574144, - 0.2612564059564578, - 0.26125253432013235, - 0.2612488666279751, - 0.26124538920143137, - 0.2612420910782693, - 0.2612389626073629, - 0.2612359949111631, - 0.26123317967129955, - 0.26123050903498163, - 0.26122797556698163, - 0.2612255722192344, - 0.26122329230762736, - 0.26122112949207543, - 0.2612190777583873, - 0.2612171314013614, - 0.261215285008853, - 0.2612135334466953, - 0.2612118718444173, - 0.26136418846279674, - 0.26181648705209554, - 0.2620324872433201, - 0.26215624424280426, - 0.2622424341764197, - 0.2623112906470985, - 0.2623704461713501, - 0.26242262487014617, - 0.26246920061196577, - 0.2625107208254952, - 0.2625470209861208, - 0.2625781998697491, - 0.2626044815870293, - 0.2626254907599764, - 0.2626417533747081, - 0.26265309470046816, - 0.2626586907816146, - 0.2626584029395256, - 0.2626553364261183, - 0.26266179571482506, - 0.2626727711406152, - 0.2626849787850672, - 0.2626972231996501, - 0.2627090829162318, - 0.2627204222579418, - 0.26273121042545355, - 0.26274145448990793, - 0.26275117460639325, - 0.2627603948752163, - 0.2627691400010153, - 0.2627774340986276, - 0.26278530029243674, - 0.2627927606076864, - 0.2627998359679656, - 0.2628065462300952, - 0.26281291023104264, - 0.2628189458375248, - 0.2628246699949596, - 0.2628300987745921, - 0.2628352474184505, - 0.2628401303820766, - 0.2628447613750914, - 0.26284915339967463, - 0.2628533187870713, - 0.2628572692322106, - 0.2628610158265379, - 0.2628645690891609, - 0.2628679389963792, - 0.2628711350096953, - 0.2628741661023799, - 0.26287704078466523, - 0.262879767127637, - 0.26288235278590066, - 0.2628848050190644, - 0.2628871307121297, - 0.2628893363948155, - 0.26289142825989625, - 0.2628934121805865, - 0.2628952937270308, - 0.26289707818194324, - 0.2628987705554396, - 0.26290037559910473, - 0.2629018978193301, - 0.2629033414899702, - 0.2629047106643395, - 0.2629060091865935, - 0.2629072407025215, - 0.2629084086697832, - 0.262909516367615, - 0.26291056690603937, - 0.26291156323459663, - 0.2629125081506223, - 0.2629134043071056, - 0.2629142542201348, - 0.2629150602759647, - 0.2629158247377141, - 0.2629165497517193, - 0.2629172373535632, - 0.2629178894737864, - 0.2629185079433109, - 0.26291909449858075, - 0.2629196507864345, - 0.26292017836873044, - 0.2629206787267329, - 0.2629211532652689, - 0.26292160331667525, - 0.262922030144535, - 0.26292243494722994, - 0.2629228188613015, - 0.2629231829646457, - 0.2629235282795355, - 0.26292385577548993, - 0.2629241663720039, - 0.2629244609411208, - 0.2629247403098864, - 0.26292500526266904, - 0.2629252565433629, - 0.2629254948574732, - 0.2629257208741025, - 0.2629259352278259, - 0.2629261385204709, - 0.2629263313228121, - 0.26292651417617, - 0.2629266875939317, - 0.2629268520629918, - 0.26292700804512226, - 0.2629271559782652, - 0.2629272962777645, - 0.2629274293375313, - 0.2629275555311489, - 0.262927675212926, - 0.2630833958841448, - 0.2632217069978162, - 0.26329526858494673, - 0.26334317091006304, - 0.26338049874020936, - 0.2634128979402731, - 0.2634425117314665, - 0.2634701834516068, - 0.26349627248290464, - 0.2635209565499088, - 0.2635443437961981, - 0.2635665144093517, - 0.26358753614914465, - 0.26360747020539804, - 0.2636263734690369, - 0.26364429946958434, - 0.26366129881380485, - 0.2636774194348837, - 0.2636927067669525, - 0.2637072038877217, - 0.2637209516452654, - 0.2637339887751206, - 0.26374635201016233, - 0.2637580761843841, - 0.263769194331137, - 0.2637797377762457, - 0.2637897362262815, - 0.2637992178522693, - 0.2638082093690601, - 0.263816736110602, - 0.2638248221013217, - 0.2638324901238129, - 0.2638397617830269, - 0.2638466575671471, - 0.26385319690531384, - 0.2638593982223667, - 0.263865278990758, - 0.2638708557797808, - 0.2638761443022566, - 0.2638811594588023, - 0.2638859153798167, - 0.2638904254652934, - 0.26389470242257285, - 0.26389875830214843, - 0.2639026045316194, - 0.26390625194788714, - 0.2639097108276881, - 0.26391299091655096, - 0.2639161014562549, - 0.26393302129354324, - 0.2644031185331916, - 0.2646790734105617, - 0.2648340142089384, - 0.2649410867224253, - 0.2650278662299614, - 0.26510469608100384, - 0.26517553117744724, - 0.26524195504883463, - 0.26530466722506, - 0.265364034141872, - 0.26542029337448336, - 0.265473629526795, - 0.2655242025960957, - 0.26557215873135565, - 0.26561763446073394, - 0.2656607584888877, - 0.2657016525826754, - 0.26574043210800624, - 0.26577720642675345, - 0.2658120792316131, - 0.2658451488482801, - 0.2658765085163045, - 0.2659062466533222, - 0.26593444710484343, - 0.2659611893808353, - 0.2659865488799635, - 0.2660105971022031, - 0.2660334018504367, - 0.2660550274216269, - 0.2660755347880965, - 0.2660949817694434, - 0.26611342319555537, - 0.26613091106120257, - 0.266147494672635, - 0.2661632207865985, - 0.2661781337421628, - 0.2661922755857337, - 0.26620577117196303, - 0.26621870908462675, - 0.2662308824709777, - 0.2662423864579412, - 0.2662532807803953, - 0.2662636062974497, - 0.2662733958764225, - 0.2662826785085925, - 0.2662914808804689, - 0.2662998280004181, - 0.26630774347328073, - 0.2663152496424814, - 0.2663223676809927, - 0.26632911766138434, - 0.2663355186162522, - 0.2663415885932933, - 0.26634734470672183, - 0.2663528031857101, - 0.2663579794202233, - 0.2663628880044337, - 0.26636754277788005, - 0.26637195686449244, - 0.2663761427095923, - 0.26638011211498336, - 0.26638387627222937, - 0.2663874457942046, - 0.26639083074501785, - 0.2663940406683881, - 0.2663970846145521, - 0.2663999711657798, - 0.2664027084605758, - 0.2664053042166217, - 0.26640776575253505, - 0.2664101000085091, - 0.26641231356587364, - 0.2664144126656566, - 0.26641640322617616, - 0.2664182908597285, - 0.2664200808884143, - 0.2664217783591395, - 0.26642338805784804, - 0.2664249145230127, - 0.2664263620584356, - 0.26642773474537856, - 0.2664290364540709, - 0.26643027085462273, - 0.26643144142737235, - 0.26643255147269673, - 0.2664336041203205, - 0.26643460233813626, - 0.2664355489405751, - 0.26643644659654103, - 0.2664372978369345, - 0.26643810506179005, - 0.2664388705470434, - 0.2664395964509457, - 0.2664402848201505, - 0.2664409375954843, - 0.2663559009015263, - 0.2657682469170531, - 0.2654849673407289, - 0.26531957402887824, - 0.2652010958144264, - 0.2651029389870557, - 0.2650151075933467, - 0.2649337585478493, - 0.2648573325217143, - 0.26478512216131583, - 0.2647167420404553, - 0.2646519322234497, - 0.2645904852638198, - 0.26453221888441986, - 0.2644769655733686, - 0.26442456845325296, - 0.2643748794856636, - 0.26432775855349083, - 0.2642830728810381, - 0.2642406965915392, - 0.2642005103272806, - 0.2641624009040668, - 0.2641262609889694, - 0.2640919887967569, - 0.26405948780274885, - 0.26402866647078593, - 0.263999437995364, - 0.2639717200571266, - 0.2639454345910158, - 0.2639205075664008, - 0.2638968687785807, - 0.2638744516510558, - 0.2638531930480217, - 0.2638330330965538, - 0.2638139150179791, - 0.2637957849679645, - 0.26377859188487235, - 0.2637622873459429, - 0.2637468254309245, - 0.2637321625927375, - 0.26371825753482997, - 0.263705071094868, - 0.2636925661344409, - 0.26368070743446337, - 0.26366946159598365, - 0.2636587969461188, - 0.2636486834488516, - 0.26363909262043506, - 0.2636299974491707, - 0.2636213723193365, - 0.26361319293903623, - 0.2636054362717877, - 0.2635980804716421, - 0.26359110482165754, - 0.2635844896755472, - 0.263578216402355, - 0.26357226733397604, - 0.26356662571539763, - 0.2635612756575152, - 0.2635562020923759, - 0.26355139073074463, - 0.26354682802185786, - 0.26354250111525995, - 0.2635383978246117, - 0.2635345065933683, - 0.26353081646222937, - 0.2635273170382766, - 0.2635239984656996, - 0.2635208513980394, - 0.263517866971867, - 0.2635150367818157, - 0.2635123528569135, - 0.2635098076381289, - 0.2635073939570852, - 0.2635051050158677, - 0.2635029343678816, - 0.26350087589969384, - 0.26349892381381645, - 0.26349707261237715, - 0.26349531708163315, - 0.2634936522772941, - 0.26349207351058784, - 0.2634905763350612, - 0.2634891565340566, - 0.2634878101088334, - 0.2634865332673064, - 0.2634853224133675, - 0.26348417413675684, - 0.26348308520345715, - 0.2634820525465868, - 0.2634810732577614, - 0.2634801445789035, - 0.2634792638944733, - 0.2634784287241023, - 0.26347763671561064, - 0.2634768856383766, - 0.2634761733770591, - 0.26347549792564084, - 0.26347485738177245, - 0.2634742499414217, - 0.2634736738937863, - 0.2634731276164813, - 0.2634726095709673, - 0.2634721182982141, - 0.26347165241459825, - 0.26347121060799944, - 0.2634707916341112, - 0.2634703943129297, - 0.2634700175254373, - 0.2634696602104468, - 0.2634693213616115, - 0.2634690000245947, - 0.2634686952943802, - 0.2634684063127229, - 0.2634681322657323, - 0.2634678723815802, - 0.2634676259283261, - 0.2634673922118566, - 0.2634671705739308, - 0.263466960390326, - 0.2634667610690787, - 0.2634665720488181, - 0.26346639279718675, - 0.2634662228093386, - 0.2634660616065179, - 0.2634659087347121, - 0.2634657637633706, - 0.26346562628419595, - 0.26346549590999024, - 0.2634653722735661, - 0.2634652550267123, - 0.26346514383921504, - 0.2634650383979238, - 0.26346493840587304, - 0.2634648435814446, - 0.26346475365757305, - 0.2634646683809965, - 0.2634645875115416, - 0.26346451082144634, - 0.26346443809472064, - 0.26346436912653604, - 0.26346430372264995, - 0.2634642416988581, - 0.2634641828804763, - 0.26346412710184697, - 0.2634640742058758, - 0.26346402404358565, - 0.2634639764736995, - 0.2634639313622405, - 0.263463888582156, - 0.2634638480129603, - 0.2634638095403939, - 0.2634637730561028, - 0.2634637384573316, - 0.2634637056466361, - 0.2634636745316083, - 0.26346364502461506, - 0.2634636170425529, - 0.2634635905066127, - 0.26346356534205856, - 0.2634635414780173, - 0.2634635188472777, - 0.2634634973861015, - 0.26346347703404555, - 0.26346345773379143, - 0.2634634394309804, - 0.2634634220740644, - 0.2634634056141601, - 0.26346339000490804, - 0.2634633752023481, - 0.26346336116478913, - 0.26346334785269565, - 0.26346333522857546, - 0.2634633232568744, - 0.2634633119038755, - 0.2634633011376021, - 0.26346329092773313, - 0.2634632812455132, - 0.26346327206367537, - 0.2634632633563567, - 0.2634632550990362, - 0.2634632472684555, - 0.26346323984256176, - 0.2634632328004409, - 0.2634467734296436, - 0.26324472522103465, - 0.2631329411617658, - 0.26306968385116464, - 0.2630256108698432, - 0.2629897029220791, - 0.2629578281738906, - 0.2629284059949921, - 0.2629008020990607, - 0.2628747347963685, - 0.26285005524753496, - 0.26282666605866223, - 0.2628044910523173, - 0.2627834639734409, - 0.26276352420470545, - 0.26274461508004593, - 0.2627266831644517, - 0.2627096778961357, - 0.26269355136746514, - 0.2626782581617034, - 0.2626637552146325, - 0.26265000168941866, - 0.2626369588601987, - 0.26262459000250066, - 0.262612860289652, - 0.2626017191680835, - 0.2625911396105289, - 0.2625811205061241, - 0.2625716110729701, - 0.2625625903656156, - 0.2625540020533073, - 0.2625458803812451, - 0.26253818699216425, - 0.26253089433339594, - 0.2625239328889133, - 0.26251735114848, - 0.26251111926606063, - 0.2625052130185149, - 0.2624996133044862, - 0.26249429698772564, - 0.2624892412064061, - 0.2624844561593886, - 0.2624799219107743, - 0.26247558625622314, - 0.2624714798958071, - 0.2624675985444705, - 0.262463922505149, - 0.2624604381770606, - 0.2624571345472008, - 0.26245400186890866, - 0.2624510311570705, - 0.2624482139862611, - 0.2624455424017107, - 0.262443008446805, - 0.2624405795817477, - 0.2624382884011902, - 0.2624361204076058, - 0.2624340662160734, - 0.2624321188285379, - 0.2624302723126951, - 0.26243036734522657, - 0.2624303660130597, - 0.2624300822858807, - 0.2624297932603247, - 0.2624296017537444, - 0.26242955557582914, - 0.2624295514182991, - 0.2624292617696869, - 0.262428842872237, - 0.2624283919433477, - 0.2624279444580227, - 0.2624275127514041, - 0.26242710063693075, - 0.26242670881442043, - 0.2624263368686367, - 0.26242598400670264, - 0.26242564932907864, - 0.26242533192809897, - 0.2624250309228024, - 0.26242474547027944, - 0.2624244747684176, - 0.26242421339918803, - 0.2624239619913977, - 0.2624237271327777, - 0.2624235057329892, - 0.26242329626370803, - 0.26242309780027523, - 0.2624229096599516, - 0.2624227312670976, - 0.262422562102387, - 0.2624224016831577, - 0.2624222495553269, - 0.262422105289622, - 0.2624219684794512, - 0.26242183873942065, - 0.2624217157041188, - 0.2624215990270444, - 0.2624214883796109, - 0.26242138345021776, - 0.2624212839433662, - 0.2624211895788304, - 0.2624211000908646, - 0.2624210152274587, - 0.2624209347496237, - 0.2624208584307218, - 0.2624207860558289, - 0.26242071742112594, - 0.26242065233332745, - 0.2624205906091361, - 0.2624205320747279, - 0.2624204765652597, - 0.26242042392441145, - 0.2624203740039364, - 0.2624203266632514, - 0.26242028176903914, - 0.26242023919486984, - 0.26242019882084794, - 0.2624201605332751, - 0.262420124224328, - 0.262420089791754, - 0.262420057138587, - 0.2624200261728713, - 0.26241999680740097, - 0.2624199689594797, - 0.2624199425506827, - 0.2624199175066409, - 0.2624198937568247, - 0.2624198712343509, - 0.26241984987579364, - 0.262419829621004, - 0.2624198104129415, - 0.26241979219751355, - 0.26241977492342217, - 0.2624197585420215, - 0.26241974300717885, - 0.26241972827514604, - 0.26241971430443506, - 0.26241970105570245, - 0.2624196884916382, - 0.2624196765768595, - 0.2624196652778125, - 0.26241965456267785, - 0.2624196444012805, - 0.26241963476500324, - 0.2624196256267093, - 0.26241961696066396, - 0.2624196087424634, - 0.2624196009489621, - 0.2624195935582142, - 0.2624195865494051, - 0.262419579902798, - 0.26241957359967233, - 0.2624195676222809, - 0.2624195619537889, - 0.2624195565782336, - 0.26241955148047674, - 0.262419546646161, - 0.2624195420616742, - 0.2624195377141029, - 0.26241953359120584, - 0.2624195296813723, - 0.2624195259735907, - 0.2624195224574197, - 0.26241951912295786, - 0.2624195159608137, - 0.2624195129620832, - 0.2624195101183208, - 0.2624195074215193, - 0.2624195048640825, - 0.26241950243880924, - 0.2624195001388686, - 0.26241949795778485, - 0.2624194958894152, - 0.2624194939279344, - 0.2624194920678192, - 0.2624194903038309, - 0.26241948863100145, - 0.2624194870446211, - 0.2624194855402217, - 0.26241948411356697, - 0.2624194827606384, - 0.2624194814776268, - 0.2624194802609188, - 0.26241947910708746, - 0.2624194780128836, - 0.26241947697522666, - 0.26241947599119314, - 0.2624194750580131, - 0.26241947417305805, - 0.26241947333383475, - 0.26241947253798154, - 0.26241947178325603, - 0.26241947106753394, - 0.2624194703887979, - 0.2624194697451383, - 0.2624194691347417, - 0.2624194685558883, - 0.2624194680069508, - 0.2624194674863799, - 0.2624194669927113, - 0.26241946652455445, - 0.26241946608059125, - 0.26241946565957064, - 0.262419465260308, - 0.262419464881678, - 0.2624194645226153, - 0.26241946418210843, - 0.2624194638591977, - 0.26241946355297463, - 0.2624194632625757, - 0.2624194629871852, - 0.262419462726026, - 0.262419462478363, - 0.2624194622434989, - 0.26241946202077165, - 0.2624194618095549, - 0.2624194616092532, - 0.2624194614193017, - 0.2624194612391681, - 0.26241946106834296, - 0.2624194609063455, - 0.2624194607527201, - 0.2624194606070336, - 0.2624194604688756, - 0.2624194603378577, - 0.26241946021361057, - 0.2624194600957842, - 0.26241945998404703, - 0.2624194598780843, - 0.262419459777597, - 0.26241945968230274, - 0.262419459591933, - 0.26241945950623385, - 0.2624194594249632, - 0.2624194593478927, - 0.2624194592748047, - 0.262419459205494, - 0.2624194591397653, - 0.26241945907743297, - 0.26241945901832203, - 0.26241945896226576, - 0.2624194589091063, - 0.262419458858694, - 0.2624194588108872, - 0.26241945876555073, - 0.2624194587225572, - 0.2624194586817854, - 0.2624194586431207, - 0.26241945860645405, - 0.2624194585716826, - 0.2624194585387074, - 0.26241945850743703, - 0.2624194584777823, - 0.26241945844966, - 0.2624194584229911, - 0.2624194583977003, - 0.2624194583737162, - 0.2624194583509721, - 0.2624194583294029, - 0.26241945830894875, - 0.2624194582895512, - 0.2624194582711565, - 0.2624194582537121, - 0.2624194582371693, - 0.2624194582214817, - 0.2624194582066045, - 0.2624194581924963, - 0.2624194581791172, - 0.26241945816642914, - 0.2624194581543972, - 0.26241945814298684, - 0.26241945813216616, - 0.2624194581219046, - 0.2624194581121734, - 0.26241945810294504, - 0.2624194580941939, - 0.26241945808589434, - 0.26241945807802397, - 0.2624194580705605, - 0.2624194580634825, - 0.2624194580567701, - 0.2624194580504056, - 0.2624194580443691, - 0.26241945803864497, - 0.2624194580332163, - 0.26241945802806865, - 0.26241945802318617, - 0.2624194580185566, - 0.26241945801416605, - 0.2624194580100028, - 0.2624194580060547, - 0.2624194580023104, - 0.26241945799875915, - 0.2624194579953917, - 0.262419457992199, - 0.2624194579891709, - 0.26241945798629834, - 0.2624194579835755, - 0.26241945798099275, - 0.2624194579785428, - 0.2624194579762203, - 0.2624194579740177, - 0.2624194579719292, - 0.2624194579699496, - 0.2624194579680699, - 0.2624194579662884, - 0.2624194579645996, - 0.2624194579629969, - 0.26242567160278396, - 0.262431515100785, - 0.2624346093605988, - 0.26243661106893, - 0.2624381631946485, - 0.26243950668411703, - 0.2624407330663291, - 0.2624418783422968, - 0.2624429578130552, - 0.2624439790017958, - 0.26244494645150745, - 0.2624458635092156, - 0.2624467329923954, - 0.26244755744057296, - 0.26244833921285904, - 0.26244908052811866, - 0.26244978348366665, - 0.2624504500657978, - 0.2624510821571028, - 0.2624516815424198, - 0.2624522499141075, - 0.26245278887691137, - 0.26245329995252503, - 0.2624537845839006, - 0.2624542441393253, - 0.2624558164611667, - 0.2625282329623021, - 0.2625784161410493, - 0.2626133344531829, - 0.2626430905270019, - 0.262671762445574, - 0.26270107458668657, - 0.262731210116682, - 0.26275736046255976, - 0.26277767106156713, - 0.26279514298878165, - 0.2628110450087622, - 0.26282587618230324, - 0.2628398472154303, - 0.26285306034997635, - 0.26286557628344465, - 0.2628774390997647, - 0.26288868559412976, - 0.26289934879575544, - 0.2629094593316717, - 0.2629190459854411, - 0.2629281359540315, - 0.2629367549899719, - 0.26294492749846665, - 0.2629526766154736, - 0.26296002427653603, - 0.2629669912801165, - 0.26297359734692866, - 0.2629798611759305, - 0.2629858004973137, - 0.26299143212272075, - 0.26299677199283084, - 0.26300183522249315, - 0.2630066361435046, - 0.2630111883451813, - 0.26301550471282314, - 0.263019597464187, - 0.2630234781840696, - 0.2630271578570986, - 0.26304896965082725, - 0.26307749436643746, - 0.2630937184376216, - 0.263104863675455, - 0.2631138554145312, - 0.26312179581678397, - 0.2631291073342225, - 0.26313595924231475, - 0.2631424261304629, - 0.2631485468088565, - 0.26315434622171097, - 0.26315984361707223, - 0.26316505560986114, - 0.26316999734648955, - 0.2631746829628798, - 0.2631791257786947, - 0.2631833383923325, - 0.26318733273787315, - 0.2631911201267688, - 0.2631947112828062, - 0.2631981163735586, - 0.2632013450395758, - 0.2632044064218306, - 0.26320730918764984, - 0.2632100615552813, - 0.2632126713171632, - 0.26321514586198685, - 0.2632174921956245, - 0.26321971696095803, - 0.2632218264566865, - 0.2632238266551629, - 0.2632257232193, - 0.26322752151860285, - 0.26322922664437104, - 0.26323084342411546, - 0.2632323764352214, - 0.26323383001791256, - 0.2632352082875372, - 0.2632365151462166, - 0.26323775429389784 - ], - [ - 0.0006525022759882177, - 0.00024053919425569859, - 0.00011637649186893063, - 0.000299120727212134, - 0.00025435216957613407, - 0.00027033426909589683, - 0.00028042448584688696, - 0.0002881783665370462, - 0.00029388108792838654, - 0.0002981320804843082, - 0.00030257085835192545, - 0.00030710852236709885, - 0.00031175421977170666, - 0.0003161592455751732, - 0.0003195427901974158, - 0.00032342344932274783, - 0.0003266939102298558, - 0.00032947568329015896, - 0.0003323704501371843, - 0.000334750559975819, - 0.00033602913212040127, - 0.00033772064447856184, - 0.00033928806441087283, - 0.00034095706029026456, - 0.00034248893541363745, - 0.00034330612210532675, - 0.0003441275583162055, - 0.00034490612506529977, - 0.000345350577872624, - 0.0003459295788285795, - 0.00034640986828102585, - 0.0003469546575324357, - 0.00034744198779860364, - 0.00034792891606474636, - 0.0003484907942997304, - 0.000348931939277388, - 0.00034926844853986136, - 0.00034973544828731336, - 0.00035032071962843523, - 0.000350944174244077, - 0.00035156028098752584, - 0.00035215998920951644, - 0.00035266514287838377, - 0.00035271383597861066, - 0.00035276684616248103, - 0.00035289771108857585, - 0.0003529424296882869, - 0.0003530067852196078, - 0.0003530989399706571, - 0.00035319957889502475, - 0.00035332076169509747, - 0.0003534416281552946, - 0.000353539181677111, - 0.00035387765464214, - 0.00035405100261536184, - 0.00035399426894249013, - 0.0003539746003278121, - 0.0003540535312765835, - 0.000354142777491296, - 0.0003542220045780022, - 0.00035428757879354657, - 0.00035436819446701316, - 0.00035445247657059435, - 0.00035454650436319717, - 0.0003546543523168427, - 0.00035478000816950296, - 0.00035490807590256063, - 0.0003550484114350449, - 0.0003552183206441897, - 0.00035541230336592796, - 0.0003556346932290448, - 0.0003558954211585665, - 0.0003562179919253128, - 0.00035663812137784614, - 0.00035684289390817004, - 0.0003568526154968508, - 0.00035686624952479423, - 0.000356878322752613, - 0.0003568827188266937, - 0.0003568866612901612, - 0.00035688998731192145, - 0.00035689311424631163, - 0.0003568965720219977, - 0.000356899372444367, - 0.0003569032831319604, - 0.000356906170074508, - 0.0003569096166746464, - 0.0003569126587354663, - 0.0003569152728370072, - 0.000356916098052317, - 0.000356916397161078, - 0.0003569202895331745, - 0.00035692257005759664, - 0.00035692519576281336, - 0.0003569281426170354, - 0.00035693069260219016, - 0.0003569337379128515, - 0.00035693642729634314, - 0.00035693924646512204, - 0.00035694212091553687, - 0.0003668554037672138, - 0.0003585380438621442, - 0.00035822776948495186, - 0.00035797833911408047, - 0.0003576866803503813, - 0.00035740215353317656, - 0.0003570961632868632, - 0.00035681743492677314, - 0.00035652408512891134, - 0.00035612572548747115, - 0.0003558257507184968, - 0.0003555347933481248, - 0.000355293126698245, - 0.0003551942553167431, - 0.00035509043582173733, - 0.00035499149839055, - 0.0003548764346824325, - 0.00035477102112301814, - 0.0003546342808974877, - 0.00035451468422931335, - 0.00035438689157636123, - 0.0003543080022854823, - 0.00035422777486434454, - 0.0003541518543602473, - 0.00035408258015347027, - 0.0003540227906512583, - 0.00035397056118461733, - 0.0003539162628214099, - 0.00035387554372468845, - 0.00035383043773474056, - 0.0003538282440755186, - 0.0003538040000272788, - 0.0003537843868368585, - 0.00035377637302386585, - 0.0003537700665021832, - 0.00035376670966777744, - 0.0003537747875844012, - 0.0003537866359634054, - 0.0003538072406295147, - 0.00035383583132911713, - 0.00035387347843737803, - 0.0003539307235912333, - 0.00035400478368454054, - 0.00035408773215920707, - 0.0003541993145986049, - 0.00035433235036897527, - 0.00035453315052313153, - 0.00035476151619865667, - 0.00035489411948621706, - 0.00035482336771538797, - 0.00035480378759833263, - 0.000354793949176574, - 0.0003547850367060397, - 0.00035477641928051537, - 0.00035476826712526043, - 0.00035476056946320687, - 0.0003547533011686143, - 0.00035474643823727836, - 0.000354739958056752, - 0.00035473383928064583, - 0.0003547280617531837, - 0.00035472258251112465, - 0.0003547174035085875, - 0.00035471250760789916, - 0.00035470783582218984, - 0.0003547033803946845, - 0.0003546992404395091, - 0.0003546952778051934, - 0.0003546915839030565, - 0.00035468806620637516, - 0.0003546847174723624, - 0.000354681612602222, - 0.0003546786690355915, - 0.00035467586821945503, - 0.00035467322917639434, - 0.0003546707245531494, - 0.00035466836646155716, - 0.00035466616213893824, - 0.00035466407315416624, - 0.00035466207823763154, - 0.000354660220929027, - 0.00035465840247135875, - 0.00035465675496520603, - 0.0003546551887528102, - 0.00035465370842196635, - 0.0003546523105055583, - 0.0003546509904646245, - 0.00035464967211964646, - 0.00035464849803375144, - 0.0003546473760799748, - 0.0003546463151006591, - 0.000354645313127444, - 0.00035464436692366776, - 0.00035464347338267233, - 0.00035464262957304307, - 0.00035464183272689194, - 0.0003546410802303978, - 0.00035464036961521385, - 0.0003546396949031368, - 0.00035463906027916785, - 0.0003546384319624201, - 0.000354637872457903, - 0.00035463733924119334, - 0.0003546368351624781, - 0.0003546363591221553, - 0.00035463590957766786, - 0.0003546354850533932, - 0.00035463508415665285, - 0.00035463470557241434, - 0.0003546343480588427, - 0.00035463397992038803, - 0.00035463366049935343, - 0.0003546333628999888, - 0.00035463307871233464, - 0.00035463281010632514, - 0.00035463255644698285, - 0.00035463231690621033, - 0.00035463209069750134, - 0.0003546318770787742, - 0.00035463167534931374, - 0.00035463148484740474, - 0.0003546313049481612, - 0.0003546311350614768, - 0.00035463097463008767, - 0.00035463082312774455, - 0.00035463068005748763, - 0.0003546305449500186, - 0.00035463041736215605, - 0.00035463029687538445, - 0.00035463018309448346, - 0.00035463007564622576, - 0.00035462997417816, - 0.0003546298783574507, - 0.00035462978786978403, - 0.00035462970241834205, - 0.00035462962172282727, - 0.000354629545518541, - 0.0003546294735555165, - 0.00035462940559770085, - 0.0003546293414221778, - 0.00035462928081843857, - 0.0003546292235876903, - 0.0003546291695422045, - 0.00035462911850469995, - 0.00035462907030776284, - 0.0003546290247932984, - 0.0003546289818120076, - 0.0003546289412229051, - 0.00035462890289284887, - 0.00035462886669610936, - 0.00035462883251395264, - 0.0003546288002342541, - 0.00035462876975112976, - 0.00035462874096458906, - 0.0003546287137802065, - 0.00035462868810881034, - 0.00035462866386619407, - 0.00035462864097283634, - 0.00035462861935364216, - 0.00035462859893769616, - 0.0003546285796580311, - 0.00035462856145140333, - 0.00035462854425809216, - 0.00035462845218386, - 0.00035462845179838685, - 0.00035462844177832346, - 0.00035462842813241023, - 0.00035462841499705685, - 0.00035462840259317576, - 0.00035462839088072813, - 0.00035462837982022725, - 0.0003546283693753156, - 0.00035462835951172985, - 0.0003546283501971169, - 0.00035462834140092235, - 0.0003546283330942928, - 0.00035462832524998196, - 0.00035462831784225735, - 0.0003546283108468197, - 0.00035462830424072436, - 0.0003546282980023004, - 0.00035462829211108603, - 0.00035462828654775515, - 0.00035462828129405967, - 0.0003546282763327669, - 0.00035462827164760134, - 0.00035462826722319654, - 0.0003546282630450377, - 0.00035462825909942026, - 0.00035462825537340304, - 0.0003546282518547618, - 0.00035462824853195663, - 0.00035462824539408624, - 0.00035462824243085936, - 0.00035462823963255496, - 0.00035462823698999453, - 0.00035462823449450883, - 0.00035462823213791366, - 0.0003546282299124777, - 0.0003546282278109029, - 0.0003546282258262944, - 0.00035462822395214053, - 0.00035462822218229704, - 0.0003546282205109563, - 0.00035462821893263646, - 0.0003546282174421601, - 0.00035462821603463913, - 0.0003546282147054548, - 0.0003546282134502488, - 0.0003546282122649028, - 0.00035462821114552945, - 0.00035462821008845586, - 0.0003546282090902158, - 0.000354628208147534, - 0.00035462820725731874, - 0.0003546282064166496, - 0.00035462820562276904, - 0.0003546282048730728, - 0.00035462820416510253, - 0.0003546282034965353, - 0.00035462820286517817, - 0.0003546282022689594, - 0.00035462820170592535, - 0.0003546282011742277, - 0.00035462820067212096, - 0.00035462820019796124, - 0.000354628199750191, - 0.00035462819932734213, - 0.0003546281989280274, - 0.00035462819855093715, - 0.0003546281981948343, - 0.00035462819785855154, - 0.00035462819754098466, - 0.0003546281972410926, - 0.0003546281969578915, - 0.00035462819669045126, - 0.00035462819643789715, - 0.00035462819619939837, - 0.00035462819597417434, - 0.00035462819576148505, - 0.00035462819556063415, - 0.0003546281953709608, - 0.00035462819519184484, - 0.00035462819502269743, - 0.0003546281948629641, - 0.00035462819471212073, - 0.00035462819456967315, - 0.00035462819443515364, - 0.0003546281943081208, - 0.00035462819418815753, - 0.00035462819407487234, - 0.00035462819396789183, - 0.0003546281938668654, - 0.0003546281937714622, - 0.00035462819368136755, - 0.000354628193596288, - 0.00035462819351594373, - 0.00035462819344007164, - 0.000354628193368421, - 0.0003546281933007585, - 0.00035462819323686266, - 0.0003546281931765232, - 0.0003546281931195411, - 0.00035462819306573056, - 0.00035462819301491574, - 0.0003546281929669284, - 0.0003546281929216118, - 0.0003546281928788178, - 0.0003546281928384043, - 0.0003546281928002418, - 0.00035462819276420283, - 0.0003546281927301692, - 0.00035462819269803007, - 0.00035462819266767924, - 0.00035462819263901813, - 0.00035462819261195217, - 0.00035462819258639226, - 0.00035462819256225554, - 0.00035462819253946165, - 0.0003546281925179366, - 0.00035462819249760966, - 0.0003546281924784138, - 0.00035462819246028643, - 0.0003546281924431676, - 0.00035462819242700186, - 0.0003546281924117358, - 0.00035462819239731976, - 0.00035462819238370544, - 0.0003546281923708493, - 0.00035462819235870867, - 0.0003546281923472437, - 0.00035462819233641666, - 0.0003546281923261927, - 0.0003546281923165371, - 0.00035462819230741913, - 0.00035462819229880867, - 0.00035462819229067737, - 0.00035462819228299883, - 0.00035462819227574747, - 0.00035462819226889976, - 0.0003546281922624333, - 0.00035462819225632653, - 0.00035462819225055955, - 0.0003546281922451135, - 0.00035462819223997113, - 0.0003546281922351145, - 0.00035462819223052843, - 0.00035462819222619737, - 0.00035462819222210716, - 0.0003546281922182453, - 0.00035462819221459776, - 0.0003546281922111533, - 0.00035462819220790086, - 0.00035462819220482915, - 0.0003546281922019287, - 0.0003546281921991893, - 0.00035462819219660244, - 0.00035462819219415995, - 0.00035462819219185293, - 0.00035462819218967434, - 0.00035462819218761734, - 0.0003546281921856746, - 0.00035462819218384003, - 0.00035462819218210753, - 0.00035462819218047136, - 0.00035462819217892653, - 0.00035462819217746763, - 0.0003546281921760893, - 0.00035462819217478846, - 0.00035462819217355984, - 0.0003546281921723996, - 0.0003546281921713037, - 0.000354628192170269, - 0.00035462819216929193, - 0.0003546281921683685, - 0.00035462819216749785, - 0.00035462819216667483, - 0.00035462819216589773, - 0.00035462819216516367, - 0.0003546281921644708, - 0.00035462819216381633, - 0.00035462819216319845, - 0.0003546281921626148, - 0.0003546281921620632, - 0.00035462819216154336, - 0.00035462819216105167, - 0.00035462819216058736, - 0.0003546281921601492, - 0.0003546281921597353, - 0.0003546281921593443, - 0.00035462819215897515, - 0.00035462819215862685, - 0.0003546281921582976, - 0.00035462819215798674, - 0.00035462819215769287, - 0.00035462819215741575, - 0.00035462819215715424, - 0.0003546281921569069, - 0.00035462819215667345, - 0.0003546281921564528, - 0.00035462819215624464, - 0.000354628192156048, - 0.0003546281921558627, - 0.0003546281921556872, - 0.000354628192155522, - 0.00035462819215536547, - 0.000354628192155218, - 0.000354628192155078, - 0.00035462819215494637, - 0.0003546281921548228, - 0.00035462819215470486, - 0.0003546281921545939, - 0.00035462819215449035, - 0.00035462819215439093, - 0.00035462819215429704, - 0.0003546281921542085, - 0.0003546281921541247, - 0.00035462819215404626, - 0.0003546281921539728, - 0.0003546281921539041, - 0.00035462819215383826, - 0.0003546281921537755, - 0.00035462819215371444, - 0.0003546281921536612, - 0.00035462819215360944, - 0.00035462819215355577, - 0.0003546281921535138, - 0.0003546281921534668, - 0.00035462819215342767, - 0.00035462819215338566, - 0.00035462819215335243, - 0.0003546281921533108, - 0.0003546281921532844, - 0.0003546281921532482, - 0.000354628192153222, - 0.00035462819215319495, - 0.0003546281921531605, - 0.00035462819215314014, - 0.00035462819215312144, - 0.00035470288089254286, - 0.0003621905801496471, - 0.0003604159882584384, - 0.0003597996825418117, - 0.0003596498241615985, - 0.0003596208154376813, - 0.00035963939918355056, - 0.00035966655097771963, - 0.0003597286872727181, - 0.0003597852278364208, - 0.0003599269435357531, - 0.00036010536702619383, - 0.0003602229282249486, - 0.000360326048835161, - 0.000360427561761023, - 0.0003604928722334359, - 0.0003605904051780954, - 0.0003607077469836237, - 0.0003608235802697357, - 0.0003609448498975389, - 0.0003610787991929613, - 0.0003612320214513535, - 0.00036140237190931566, - 0.0003615870449349132, - 0.00036179603170342033, - 0.0003618213500677205, - 0.0003618312241722997, - 0.0003618491909046544, - 0.0003618686090808143, - 0.0003618877264962242, - 0.0003619059761516674, - 0.0003619249132856967, - 0.00036194135211022407, - 0.00036195707210035297, - 0.00036197198455568735, - 0.0003619861801221176, - 0.00036199958329751066, - 0.00036201233714603374, - 0.00036202451633495327, - 0.0003620360455486975, - 0.00036200148754638096, - 0.0003620151790925702, - 0.00036202633079694083, - 0.0003620358140333449, - 0.00036204457711894617, - 0.0003620527743816837, - 0.00036206053280408496, - 0.0003620678851146147, - 0.000362074888019794, - 0.0003620815268907583, - 0.0003620878111070224, - 0.000362093712581366, - 0.0003620994690204396, - 0.0003621048762253877, - 0.0003621099661752021, - 0.000362114780518381, - 0.0003621194206873775, - 0.0003621237122022471, - 0.00036212794648923807, - 0.00036213186152656425, - 0.0003621355394106355, - 0.00036213916550673287, - 0.0003621424117105833, - 0.0003621456841150258, - 0.0003621486135048219, - 0.00036215155342083196, - 0.00036215434808905774, - 0.00036215690535456734, - 0.00036215938651499273, - 0.000362161684853454, - 0.0003621639532876698, - 0.00036216606373426513, - 0.00036216797886696783, - 0.00036216991868960764, - 0.00036217175870190696, - 0.00036217346563494025, - 0.00036217501912307585, - 0.0003621765848424248, - 0.0003621780803680766, - 0.0003621794963596804, - 0.00036218079715693885, - 0.0003621819580079842, - 0.00036218313481309436, - 0.000362184290345912, - 0.00036218538299954837, - 0.0003621864178438297, - 0.000362187330392404, - 0.0003621882513014273, - 0.0003621891403583248, - 0.0003621899809782743, - 0.00036219077604639953, - 0.0003621913860669892, - 0.00036219211583460786, - 0.00036219280105344775, - 0.000362193448565942, - 0.00036219406198692236, - 0.00036219464215996787, - 0.00036219519524596653, - 0.00036219572010361833, - 0.00036219621826885613, - 0.00036219669113310383, - 0.00036219713999036736, - 0.0003621975660618279, - 0.00036219791875281225, - 0.00036219830517889446, - 0.0003621986712041708, - 0.0003621990174909734, - 0.0003621993458548653, - 0.00036219965745946936, - 0.00036219995322256567, - 0.00036220014570682233, - 0.0003622004190549808, - 0.0003622006719141128, - 0.00036220091289816843, - 0.0003622011409131033, - 0.0003622013571390917, - 0.0003622015623325282, - 0.0003622017570951226, - 0.0003622019419672933, - 0.00036220211745396414, - 0.0003622022840323122, - 0.0003622024421547397, - 0.0003622025922505363, - 0.000362202734727165, - 0.0003622028699713925, - 0.00036220299835035074, - 0.0003622031202125361, - 0.0003622032358887524, - 0.0003622033456930116, - 0.0003622034499233864, - 0.00036220354886281833, - 0.0003622036427798857, - 0.00036220373192953414, - 0.00036220381655376814, - 0.0003622038968823062, - 0.0003622039731332064, - 0.00036220404551345816, - 0.0003622041032952853, - 0.0003622041471871986, - 0.0003622042114467798, - 0.00036220427086250975, - 0.0003622043267542821, - 0.00036220437967456894, - 0.00036220442987329124, - 0.0003622044775145909, - 0.00036220452273510165, - 0.0003622045656594946, - 0.0003622046064047924, - 0.00036220464508173367, - 0.0003622046817953446, - 0.00036220471664529587, - 0.0003622047497261932, - 0.00036220478112783763, - 0.0003622048109354715, - 0.0003622048362235808, - 0.0003622048631745003, - 0.0003622048888075082, - 0.00036220491303988467, - 0.0003622049360147068, - 0.000362204957816062, - 0.0003622049785088438, - 0.00036220499815072237, - 0.0003622050167954095, - 0.0003622050344936208, - 0.00036220505129342696, - 0.0003622050672404386, - 0.0003622050823779476, - 0.0003622050967470463, - 0.0003621454845079955, - 0.0003621054251375351, - 0.0003620985896484736, - 0.0003621006223053509, - 0.0003621018067010188, - 0.00036210193637306636, - 0.0003621017886301778, - 0.0003621015776351475, - 0.0003621013589464609, - 0.0003621011465975699, - 0.000362100943820344, - 0.0003621007510533299, - 0.00036210056802769353, - 0.00036210039430978065, - 0.0003621002294415208, - 0.00036210007297606716, - 0.00036209992448619236, - 0.0003620997835656247, - 0.0003620996498285873, - 0.0003620995229089126, - 0.0003620994024590845, - 0.0003620992881492979, - 0.00036209917966655833, - 0.0003620990767138272, - 0.0003620989790092076, - 0.00036209888628517127, - 0.0003620987982878288, - 0.00036209871477623266, - 0.00036209863552171765, - 0.0003620985603072751, - 0.00036209848892695913, - 0.00036209842118532033, - 0.0003620592533381576, - 0.00035806331926128114, - 0.0003588367922676921, - 0.00035902304523964025, - 0.0003590228262135256, - 0.0003589699157513355, - 0.00035891166706611443, - 0.0003588513819534889, - 0.00035880438810202014, - 0.0003587728642943527, - 0.00035874680403274496, - 0.0003587230732171936, - 0.0003587007792224445, - 0.00035867964091723165, - 0.00035865954501775645, - 0.0003586404255796856, - 0.0003586222312065241, - 0.0003586049160680404, - 0.00035858843738456305, - 0.000358564119036264, - 0.00035852932492715664, - 0.0003585176692384627, - 0.00035850516453663, - 0.00035849279548255024, - 0.0003584808971963139, - 0.00035846954039553115, - 0.0003584587241778834, - 0.00035844842921689736, - 0.00035843863212401723, - 0.0003584293092907417, - 0.0003584204378858206, - 0.00035841199608459533, - 0.00035840396309250736, - 0.00035839631911476535, - 0.00035838904531322, - 0.0003583821237614713, - 0.00035837553740109907, - 0.000358369269999738, - 0.000357434512019778, - 0.0003575026816649585, - 0.0003575214066874397, - 0.00035752106997449714, - 0.00035751578423460963, - 0.0003575094153615418, - 0.00035750299468330056, - 0.00035749678869975287, - 0.00035749085817434617, - 0.00035748520891855113, - 0.0003574798324361947, - 0.0003574747168612933, - 0.00035746984988447325, - 0.00035746521951967057, - 0.00035746081428939344, - 0.00035745662325420327, - 0.0003574526360011745, - 0.00035744884262223903, - 0.00035744523369070016, - 0.00035744180023811406, - 0.0003574385337320873, - 0.0003574354260550923, - 0.0003574324694843028, - 0.00035692423415816297, - 0.0003568733614377019, - 0.00035690239819412734, - 0.0003569078689869025, - 0.0003569065908623576, - 0.0003569036254954801, - 0.0003569003341318788, - 0.0003568970766695248, - 0.000356893943962191, - 0.00035689095480425867, - 0.0003568881088877416, - 0.0003568854010292957, - 0.0003568828249831875, - 0.0003568803744545001, - 0.00035687804336006265, - 0.0003568758258876478, - 0.00035687371650145995, - 0.0003568717099336888, - 0.00035686980117279727, - 0.000356867985451394, - 0.00035686625823443086, - 0.00035686461520790364, - 0.00035686305226808414, - 0.0003568615655112752, - 0.0003568601512240556, - 0.0003568588058740122, - 0.00035685752610091124, - 0.00035685630870831045, - 0.0003568551506555703, - 0.00035685404905026513, - 0.0003568530011409541, - 0.00035685200431031177, - 0.0003568510560685898, - 0.0003568501540473986, - 0.0003568492959937925, - 0.0003568484797646417, - 0.00035684770332127896, - 0.00035684696472441, - 0.0003568462621292682, - 0.0003568455937810061, - 0.00035684495801031494, - 0.00035684435322925215, - 0.00035684377792727807, - 0.0003568432306674814, - 0.0003568427100829912, - 0.000356842214873562, - 0.0003568417438023268, - 0.0003568412956927081, - 0.00035684086942547804, - 0.0003568404639359648, - 0.000356840078211391, - 0.00035683971128834665, - 0.0003568393622503813, - 0.00035683903022571496, - 0.00035683871438506185, - 0.0003568384139395582, - 0.00035683812813879054, - 0.00035683785626892635, - 0.0003568375976509252, - 0.00035683735163884634, - 0.00035683711761823366, - 0.0003568368950045829, - 0.0003568366832418795, - 0.0003568364818012112, - 0.00035683629017944744, - 0.000356836107897981, - 0.00035683593450153405, - 0.0003568357695570205, - 0.0003568356126524641, - 0.00035683546339597053, - 0.0003568353214147461, - 0.0003568351863541707, - 0.0003568350578769076, - 0.00035683493566206366, - 0.00035683481940438743, - 0.0003568347088135062, - 0.0003568346036132013, - 0.000356834503540718, - 0.0003568344083461076, - 0.0003568343177916072, - 0.00035683423165104155, - 0.0003568341497092605, - 0.00035683407176160083, - 0.0003568339976133752, - 0.0003568339270793868, - 0.000356833859983465, - 0.00035683379615802734, - 0.0003568337354436587, - 0.00035683367768871545, - 0.0003568336227489448, - 0.000356833570487125, - 0.00035683352077272456, - 0.00035683347348157337, - 0.0003568334284955544, - 0.000356833385702307, - 0.00035683334499494784, - 0.0003568333062718041, - 0.0003568332694361584, - 0.0003568332343960077, - 0.0003568332010638331, - 0.00035683316935638225, - 0.0003568331391944603, - 0.0003568331105027333, - 0.0003568330832095387, - 0.0003568330572467081, - 0.0003568330325493937, - 0.00035683300905591, - 0.00035683298670757975, - 0.0003568329654485828, - 0.00035683294522582135, - 0.00035683292598878653, - 0.00035683290768943036, - 0.00035683289028204705, - 0.0003568328737231584, - 0.00035683285797140693, - 0.000356835714807334, - 0.0003568356135683788, - 0.00035683546743329114, - 0.00035683542366391277, - 0.00035683540893068284, - 0.00035683540215464027, - 0.0003568353976525618, - 0.00035683539389173066, - 0.0003568353904542757, - 0.00035683538722194744, - 0.00035683538415723365, - 0.0003568353812445789, - 0.0003568353784745883, - 0.0003568353758397787, - 0.00035683537333341936, - 0.0003565887253039365, - 0.000356603982269533, - 0.00035661382186308365, - 0.0003566160303673424, - 0.0003566161442753178, - 0.0003566157199158104, - 0.00035661517367240877, - 0.00035661461592834137, - 0.00035661407519930387, - 0.00035661355813718744, - 0.000357577473256451, - 0.00035554107307529204, - 0.0003547501320530216, - 0.00035430636264272133, - 0.0003539161937148364, - 0.0003535038750440681, - 0.0003530810147148757, - 0.00035267790326149926, - 0.0003523283615269222, - 0.0003520411945637643, - 0.00035187983020536174, - 0.0003517176138006523, - 0.0003515601129273552, - 0.00035138612376328025, - 0.00035121551270665766, - 0.00035101895111807864, - 0.00035082491730650936, - 0.0003506325257223261, - 0.0003504638477656522, - 0.00035032373174154836, - 0.0003502277529285878, - 0.00035012834609937486, - 0.0003500237175641366, - 0.00034992256558384014, - 0.0003498248273799815, - 0.0003497307651806118, - 0.00034963886144960917, - 0.00034955499322934363, - 0.0003494884732720057, - 0.0003494242976344625, - 0.00034936277406334866, - 0.0003493026967062037, - 0.0003492410298064111, - 0.0003491818605606916, - 0.00034912497523320493, - 0.0003490702723213379, - 0.0003490175684247719, - 0.0003489668199299572, - 0.00034891815168681164, - 0.0003488713092755128, - 0.00034882522073842687, - 0.0003487805044036328, - 0.0003487368987767916, - 0.0003486945650425487, - 0.00034865291529597787, - 0.0003486115947765985, - 0.0003485711609416925, - 0.00034853100274852435, - 0.00034849769139152034, - 0.00034847384292128954, - 0.0003484504692175176, - 0.0003484277311798648, - 0.00034840600112972137, - 0.00034838530305719137, - 0.00034836559767463515, - 0.0003483468401454457, - 0.0003483289856988335, - 0.00034831199109991266, - 0.0003482958150119768, - 0.00034828054140568674, - 0.0003482662128386024, - 0.00034825255886476947, - 0.00034823955639237686, - 0.0003482271791002696, - 0.0003482153983707149, - 0.0003481969347300713, - 0.00034816394236349764, - 0.00034813092507316715, - 0.00034809719896011803, - 0.00034806262441690984, - 0.0003480268834552324, - 0.00034800712027631685, - 0.0003480009766654583, - 0.00034799382142175467, - 0.0003479865381484481, - 0.0003479794643336883, - 0.00034797268973544437, - 0.0003479662297583051, - 0.0003479600781257494, - 0.0003479542226064219, - 0.00034794864968943143, - 0.00034794334595762596, - 0.0003479382984750592, - 0.00034793349488090517, - 0.0003479289233966901, - 0.0003479245727903576, - 0.00034792045253543506, - 0.00034791655668963496, - 0.00034791284689653204, - 0.00034790931563413166, - 0.00034790595488627896, - 0.00034790275659347085, - 0.00034789971295500524, - 0.00034789681650817324, - 0.0003478940601394143, - 0.0003478914370756729, - 0.0003478889408703992, - 0.00034788656538850066, - 0.0003478843047914988, - 0.00034788215352325307, - 0.00034757180890136096, - 0.00034917080289447404, - 0.0003498234155136343, - 0.00035016772122703764, - 0.00035047728020033963, - 0.0003506494960896962, - 0.00035084426324025734, - 0.0003510267249968935, - 0.00035116812652020697, - 0.0003513329209765153, - 0.00035146756777379207, - 0.0003515025645643148, - 0.00035163947206959533, - 0.000351804836694398, - 0.00035198790614780594, - 0.00035213913569564847, - 0.00035224981289371584, - 0.00035235784284980127, - 0.0003524615654876791, - 0.0003524499627394365, - 0.0003525437493605492, - 0.0003526352424599154, - 0.0003527196176723501, - 0.00035279028113982666, - 0.00035286600326860286, - 0.0003529376830722427, - 0.00035300574586377036, - 0.00035302846213466834, - 0.00035307272183131527, - 0.0003531340826207353, - 0.0003531904684731064, - 0.0003532434515390408, - 0.0003532936691706604, - 0.0003533413951863813, - 0.00035338679144893576, - 0.00035342998294502734, - 0.00035347108006645786, - 0.00035351018534471616, - 0.0003535473956044903, - 0.00035358280276152513, - 0.0003536164942138069, - 0.00035364855310556734, - 0.00035367905854666743, - 0.00035370808581198485, - 0.000353735706528391, - 0.00035391534511634864, - 0.0003539457372841596, - 0.00035396392340555227, - 0.0003539857578870656, - 0.00035400794350064376, - 0.0003540294690872122, - 0.0003540500749966233, - 0.0003540697204235801, - 0.00035408842685732213, - 0.00035410623238477904, - 0.0003541231784085619, - 0.00035413930583809325, - 0.0003541546540467188, - 0.00035416926063406494, - 0.0003541831614205703, - 0.0003541963905068015, - 0.00035420898034876566, - 0.0003542209618351005, - 0.00035423236436214154, - 0.00035424321590584265, - 0.00035425354309034864, - 0.00035426337125330187, - 0.0003542727245080031, - 0.0003542816258025708, - 0.0003542900969762434, - 0.0003542981588129622, - 0.00035430583109236465, - 0.00035430156281151485, - 0.0003543421623571081, - 0.00035438399559905697, - 0.00035438663819487633, - 0.0003543916034470721, - 0.000354397187101922, - 0.0003544027529276081, - 0.0003543504404870773, - 0.0003543056745041404, - 0.0003543164081486588, - 0.0003543226603829248, - 0.00035432724587536665, - 0.00035433121034198417, - 0.0003543348668853279, - 0.00035426848991707016, - 0.000354265303932745, - 0.00035427180903501387, - 0.0003542755984496369, - 0.00035427845035439486, - 0.00035428094438732583, - 0.00035428325375148846, - 0.00035428543269848644, - 0.000354287500712845, - 0.0003542894669945685, - 0.000354291337583333, - 0.00035429311743729724, - 0.00035429481104516734, - 0.00035429642261159436, - 0.0003543259710755694, - 0.0003543259743014735, - 0.00035432652840971813, - 0.0003543276718264204, - 0.00035432894369990766, - 0.00035433020741045863, - 0.0003543314254504711, - 0.00035433258902882014, - 0.00035433369758849107, - 0.00035420063176029825, - 0.00035419632873264075, - 0.0003542033084833537, - 0.0003541827046645891, - 0.00035418515571203086, - 0.0003541862169356086, - 0.0003541867271612014, - 0.00035418706676745994, - 0.0003541873477025795, - 0.000354187602799625, - 0.00035418784198170186, - 0.0003541880685276989, - 0.0003541882837757868, - 0.00035406637777565965, - 0.0003540744684608438, - 0.0003540773328958524, - 0.0003540780337057824, - 0.00035407810980013087, - 0.00035407801182279754, - 0.00035407786949291013, - 0.000354077719930083, - 0.000354077573566817, - 0.00035407743315382786, - 0.00035407729923940675, - 0.0003540771717487209, - 0.0003540770504386107, - 0.00035407693502817223, - 0.00035407682523588445, - 0.0003540767207898122, - 0.0003540766214300769, - 0.0003540765269091128, - 0.00035407643699130966, - 0.0003540763514525064, - 0.0003540762700794482, - 0.00035407619266926367, - 0.0003540761190289609, - 0.000354076048974947, - 0.0003540759823325689, - 0.0003540759189356797, - 0.0003540758586262237, - 0.0003540758012538433, - 0.00035407574667550184, - 0.00035407569475513014, - 0.00035407564536328416, - 0.00035407559837682544, - 0.00035407555367861064, - 0.00035407551115720253, - 0.00035407547070659005, - 0.00035407543222592587, - 0.0003540753956192726, - 0.0003540753607953664, - 0.00035407532766738707, - 0.00035407529615274314, - 0.0003540752661728649, - 0.00035407523765300863, - 0.0003540752105220718, - 0.00035407518471241374, - 0.00035407516015968784, - 0.0003540751368026817, - 0.00035407511458316395, - 0.00035407509344573783, - 0.000354075073337706, - 0.0003540750542089375, - 0.0003540750360117408, - 0.0003540750187007495, - 0.0003540750022328042, - 0.00035407498656684993, - 0.0003540335602837976, - 0.00035397275405853066, - 0.0003539788616786457, - 0.00035398065961457265, - 0.0003539809682292742, - 0.00035398085594232553, - 0.00035398063238880684, - 0.00035398038617448323, - 0.00035398014232732483, - 0.00035397990761169227, - 0.00035397968356035587, - 0.0003539794702215912, - 0.00035397926723589187, - 0.00035397907414470533, - 0.00035397889047833714, - 0.00035397871578038794, - 0.00035397854961397257, - 0.0003538708647140204, - 0.00035387766425912584, - 0.00035388041549864834, - 0.0003538809153383052, - 0.0003538807708378247, - 0.00035388045514895373, - 0.0003539399937343673, - 0.0003614294041297215, - 0.0003609147289400536, - 0.0003606624274717924, - 0.0003605979673126288, - 0.00036061075921395085, - 0.00036063188973272834, - 0.00036064867694524767, - 0.0003606646156369705, - 0.00036067908498255385, - 0.00036069268481190865, - 0.00036070548963460766, - 0.00036071757762476137, - 0.00036072900357779735, - 0.0003607406910441123, - 0.0003607506058811202, - 0.00036076052978409697, - 0.0003607704946832208, - 0.00036078000793536417, - 0.0003607883679450335, - 0.0003608116824887648, - 0.00036081911868060247, - 0.0003608261083403815, - 0.0003608328545403983, - 0.00036083934793027515, - 0.00036084569413267527, - 0.00036085156576687213, - 0.0003608570456408549, - 0.0003608624810531685, - 0.0003608675637831748, - 0.00036087233257262817, - 0.00036087672988956604, - 0.0003608811850337909, - 0.0003608852733753825, - 0.00036088911310877856, - 0.0003608926974996084, - 0.0003608961818783674, - 0.00036089943765356213, - 0.0003609024438985973, - 0.00036090560655977296, - 0.00036090852716563987, - 0.00036091121975806304, - 0.0003609135824888698, - 0.00036091605980998165, - 0.000360918345303741, - 0.0003609203949838831, - 0.000360922604176512, - 0.00036092454376740896, - 0.00036092618248438944, - 0.0003609280546076283, - 0.0003609298733441991, - 0.0003609314719911189, - 0.0003609328916488232, - 0.000360934031714123, - 0.0003609354315458803, - 0.000360936831986026, - 0.0003609381534163293, - 0.0003609392226665405, - 0.00036094021299650566, - 0.0003609413479004633, - 0.00036094241832290534, - 0.0003609433587587747, - 0.0003609440159486437, - 0.000360944937476545, - 0.0003609458053086044, - 0.00036094662552221276, - 0.00036094740261716804, - 0.00036094806927926927, - 0.00036094863920997986, - 0.00036094930606650217, - 0.0003609497578434427, - 0.00036095033830661977, - 0.0003609509093275219, - 0.0003609514478450466, - 0.0003609517200188698, - 0.0003609520298925525, - 0.0003609525000916373, - 0.00036095293902898656, - 0.00036095335244358735, - 0.0003609537436330608, - 0.0003609541144183145, - 0.00036095446607715823, - 0.0003609547996688908, - 0.0003609551161464756, - 0.000360955416396325, - 0.0003609557012533964, - 0.0003609559715077975, - 0.00036095622790843665, - 0.0003609564412704883, - 0.0003609566664188792, - 0.0003609565083027243, - 0.0003609567076542941, - 0.00036095691306913414, - 0.00036095710249052786, - 0.00036095728024819295, - 0.0003609574482284816, - 0.0003609576073716223, - 0.0003609577582799368, - 0.00036095790142633686, - 0.0003609580372259786, - 0.00036095816606134006, - 0.0003609582882914167, - 0.00036095840425548194, - 0.0003609585142749708, - 0.000360958618654688, - 0.0003609587176837615, - 0.0003609588116364808, - 0.00036095890077306896, - 0.0003609589853404079, - 0.0003609590655727232, - 0.0003609591416922339, - 0.0003609592139097662, - 0.0003609592824253418, - 0.0003609593468736109, - 0.0003609594066337316, - 0.00036095946521821903, - 0.00036095952075756223, - 0.00036095957342965586, - 0.000360959623394781, - 0.0003609596707962751, - 0.00036095971576711, - 0.0003609597584324128, - 0.00036095979891054725, - 0.00036095983731369304, - 0.0003609598737482367, - 0.000360959908315098, - 0.00036095994111001934, - 0.00036095997222383323, - 0.0003609600017427152, - 0.00036096002974842384, - 0.000360960056318526, - 0.00036096008152661295, - 0.00036096010544250283, - 0.0003609601281324355, - 0.00036096014965925516, - 0.00036096017008258415, - 0.00036096018945898866, - 0.0003609602078421353, - 0.00036096022528293983, - 0.00036096024182970753, - 0.0003609602575282681, - 0.0003609602724221022, - 0.0003609602865524592, - 0.0003609602999584781, - 0.000360960312677288, - 0.0003609603247441162, - 0.0003609603361923847, - 0.00036096034705380097, - 0.0003609603573584482, - 0.0003609603671348671, - 0.0003609603764101342, - 0.00036096038520994046, - 0.00036096039355865784, - 0.0003609604014794098, - 0.00036096040899413485, - 0.0003609604161236462, - 0.0003609604228876897, - 0.00036096042930500063, - 0.0003609604353933524, - 0.00036096044116960775, - 0.00036096044664976547, - 0.0003609604518490036, - 0.0003609604567817225, - 0.00036096046146158434, - 0.0003609604659015508, - 0.0003609604701139193, - 0.00036096047411035684, - 0.00036096047790193196, - 0.0003609604814991466, - 0.00036096048491196335, - 0.00036096048814983567, - 0.00036096049122173014, - 0.00036096049413615583, - 0.0003609604969011845, - 0.00036096049952447453, - 0.00036096050201329146, - 0.00036096050437452886, - 0.0003609605066147264, - 0.00036096050874008837, - 0.0003609605107565021, - 0.000360960512669552, - 0.0003609605144845362, - 0.00036096051620648285, - 0.0003609605178401599, - 0.000360960519390093, - 0.00036096052086057447, - 0.00036096052225567747, - 0.0003609605235792657, - 0.0003609605248350051, - 0.0003609605260263739, - 0.00036096052715667146, - 0.00036096052822902873, - 0.00036096052924641586, - 0.0003609605302116505, - 0.0003609605311274062, - 0.00036096053199621836, - 0.0003609605328204951, - 0.00036096053360251765, - 0.00036096053434445373, - 0.00036096053504835665, - 0.0003609245424563649, - 0.0003564799936098014, - 0.00035670121305839456, - 0.00035677441081378536, - 0.00035678048601261916, - 0.00035676565595817053, - 0.0003567466730910468, - 0.00035672699223352296, - 0.000356707706894194, - 0.0003566891667322839, - 0.0003566714640568167, - 0.00035665460284086607, - 0.00035663855761641056, - 0.00035662329395600817, - 0.00035652784681060865, - 0.000356512677613197, - 0.0003565007631195609, - 0.00035648859816793713, - 0.0003564767230957729, - 0.0003564653222664128, - 0.0003564544418620019, - 0.0003564440806306224, - 0.000356434221622452, - 0.00035642484321952213, - 0.00035641592294364133, - 0.00035640743874710906, - 0.0003563993694272147, - 0.00035639169473684044, - 0.00035638439539072315, - 0.00035637745303689636, - 0.00035637085021749483, - 0.0003563645703272742, - 0.0003563585975726957, - 0.000356352916932502, - 0.00035622541551224435, - 0.00035622086502708244, - 0.0003562179574567167, - 0.0003562138196597123, - 0.00035620938995923896, - 0.0003562050045019527, - 0.0003562007734862844, - 0.00035619672853608414, - 0.00035619287420858803, - 0.00035618920593970537, - 0.00035618571628591406, - 0.0003558271394245833, - 0.0003557053696275342, - 0.00035571382653058287, - 0.0003557146420586982, - 0.00035571247282257195, - 0.0003557093808801095, - 0.0003557060821899021, - 0.0003557028204851847, - 0.0003556996752974245, - 0.0003556966692391152, - 0.00035569380535086295, - 0.00035569108009473807, - 0.0003556884878673948, - 0.000355686022560638, - 0.000355683678094354, - 0.00035568144859209684, - 0.0003556793284327204, - 0.000355677312259318, - 0.00035567539497373635, - 0.0003556735717264819, - 0.0003556718379054375, - 0.00035567018912453053, - 0.000355668621212756, - 0.0003556671302036689, - 0.00035566571232536164, - 0.0003550694749270636, - 0.00035508027005932014, - 0.00035508754559183617, - 0.00035508844092779735, - 0.00035508715759939623, - 0.0003550762479002065, - 0.0003550716216656541, - 0.0003550697922658766, - 0.00035506784515253724, - 0.0003550659122946708, - 0.0003550640461131625, - 0.0003550622618613598, - 0.0003550605619480663, - 0.00035505894446152835, - 0.0003550574061242748, - 0.00035505594331294637, - 0.0003550545524062541, - 0.0003550532298998398, - 0.00035505197244046317, - 0.00035505077683244287, - 0.00035504964003472327, - 0.00035504855915494663, - 0.00035489998039848613, - 0.0003548877226502108, - 0.00035489017927981225, - 0.00035489027959660754, - 0.00035488953816619466, - 0.0003548885422276362, - 0.00035488749429351163, - 0.0003548864628787317, - 0.00035488547006578864, - 0.000354857562977307, - 0.00035485601905493365, - 0.00035485569126023227, - 0.0003548550214144675, - 0.0003548542537911575, - 0.00035485347852167733, - 0.00035485272565095134, - 0.00035485200437468845, - 0.0003548513167119533, - 0.00035485066224849577, - 0.0003548500397803504, - 0.00035484944788163604, - 0.00035484888509907514, - 0.0003548483500170661, - 0.0003548478412779493, - 0.0003548473575868304, - 0.0003548468977111571, - 0.0003548464604785727, - 0.0003548460447742735, - 0.00035484564953828753, - 0.00035484527376281315, - 0.00035484491648966264, - 0.00035484457680782556, - 0.0003548442538511456, - 0.0003548439467961149, - 0.0003548436548597726, - 0.00035484337729770873, - 0.0003548431134021668, - 0.00035484286250023883, - 0.0003548426239521487, - 0.0003548423971496213, - 0.0003548421815143328, - 0.00035484197649643287, - 0.00035484178157314626, - 0.00035484159624743733, - 0.0003548414200467424, - 0.00035484125252176733, - 0.00035484109324533924, - 0.0003548409418113189, - 0.0003548407978335638, - 0.00035484066094494454, - 0.0003548405307964081, - 0.00035484040705608826, - 0.00035484028940845904, - 0.00035484017755353035, - 0.0003548400712060829, - 0.00035483997009494114, - 0.0003548398739622808, - 0.00035483978256297316, - 0.00035483969566395864, - 0.0003548280215591567, - 0.00035482522148031783, - 0.0003548219550708598, - 0.00035482090681619786, - 0.00035482096785527514, - 0.00035482092351442313, - 0.0003548208418227372, - 0.00035482075039870026, - 0.0003548206587024604, - 0.00035482056986465584, - 0.00035482048482641225, - 0.00035482040377611074, - 0.00035482032664769034, - 0.0003548202532932541, - 0.00035482018354265736, - 0.0003548201172238852, - 0.0003548200541698348, - 0.00035481999422039826, - 0.0003548199372229232, - 0.0003548198830321253, - 0.00035481983150982414, - 0.00035481978252462385, - 0.0003548197359515939, - 0.000354819691671953, - 0.00035481964957276914, - 0.00035481960954666984, - 0.00035481957149157035, - 0.0003548195353104136, - 0.0003548195009109213, - 0.0003548194682053585, - 0.000354819437110312, - 0.00035479457856931964, - 0.0003547865115854639, - 0.00035478730056616166, - 0.0003547875352071358, - 0.00035478754998417383, - 0.00035478749150129243, - 0.0003547874107286742, - 0.00035478732520049134, - 0.00035478724085426705, - 0.0003547871596107847, - 0.0003547870820039205, - 0.00035478700809283767, - 0.0003547869377781875, - 0.00035478687091152275, - 0.00035478680733297527, - 0.00035478674688404647, - 0.00035478668941179236, - 0.0003547866347700175, - 0.00035478658281945513, - 0.00035465289574712985, - 0.00035375268938295923, - 0.0003533289324035938, - 0.000353082518065193, - 0.00035290259046293667, - 0.0003527503843970704, - 0.00035261221909065326, - 0.00035248312963861663, - 0.00035236119148020304, - 0.00035224553366954427, - 0.00035213566713069433, - 0.000352032619431851, - 0.00035193583495072244, - 0.00035184376442910526, - 0.00035175620757904586, - 0.0003516729672425438, - 0.0003515938672232561, - 0.0003515203783869635, - 0.000351452177764842, - 0.0003513873849863365, - 0.00035132575532024134, - 0.0003512671581772438, - 0.0003512114536603513, - 0.00035115850223974216, - 0.00035110816898865986, - 0.0003510603248506679, - 0.0003510148468716477, - 0.0003509716180804762, - 0.0003509305272568714, - 0.0003508914686692424, - 0.0003508543418110147, - 0.0003508190511449357, - 0.00035078550585825204, - 0.00035075361962938104, - 0.00035072331040590844, - 0.00035069450019348415, - 0.0003506678804597531, - 0.00035064295745424, - 0.0003506192435668899, - 0.00035059669431039114, - 0.00035057525899295224, - 0.00035055488487818206, - 0.00035053552023257183, - 0.00035051711532203985, - 0.0003504996226797318, - 0.0003504829971222705, - 0.00035046719568166003, - 0.00035045217751128086, - 0.00035043790378627417, - 0.00035042435362339, - 0.0003504115125141061, - 0.00035039930725681465, - 0.0003503877063970312, - 0.0003503766804453114, - 0.0003503662010686213, - 0.000350356241227718, - 0.0003503468145248729, - 0.00035033812051751736, - 0.0003503298632122441, - 0.0003503220108830032, - 0.0003503145466942294, - 0.000350307452577738, - 0.0003503007105788168, - 0.00035029430335837435, - 0.00035028821434140013, - 0.0003502824277419754, - 0.00035027692854622413, - 0.00035027170248175016, - 0.0003502667359835522, - 0.00035026201615984766, - 0.00035025753075897597, - 0.00035025326813772515, - 0.0003502492172311501, - 0.0003502453675238707, - 0.000350241709022778, - 0.0003502382322310957, - 0.0003502349281237337, - 0.00035023178812385383, - 0.0003502288040806121, - 0.00035022596824799785, - 0.0003502232732647267, - 0.0003502207121351326, - 0.00035021827821100904, - 0.00035021596517434964, - 0.00035021376702094994, - 0.00035021167804482033, - 0.0003502096928233739, - 0.00035020780620335267, - 0.00035020601328744866, - 0.000350204309421591, - 0.00035020269018286787, - 0.0003502011513680416, - 0.000350199688982641, - 0.0003501982992305908, - 0.0003501969785043576, - 0.00035019572337558657, - 0.0003501945305862008, - 0.0003501933970399457, - 0.00035019231979435027, - 0.0003501912960530877, - 0.00035021391036655383, - 0.00035102259832521575, - 0.00035140164195453585, - 0.00035161882522367433, - 0.0003518308104438439, - 0.0003519681757172692, - 0.00035208910246616363, - 0.0003522105068913165, - 0.0003523179290595963, - 0.00035241992062502465, - 0.00035251684706996195, - 0.00035260896582628236, - 0.00035269651720763664, - 0.00035277972831595914, - 0.00035285881454216506, - 0.00035304346636314904, - 0.00035311555815943115, - 0.0003531850744829421, - 0.00035325207348501736, - 0.0003533160854282206, - 0.0003533770456314584, - 0.0003534350307773033, - 0.00035349016206464017, - 0.00035354257157546126, - 0.0003535923907555028, - 0.0003536397466094104, - 0.0003536847605801477, - 0.0003537275483558456, - 0.0003537682199908456, - 0.00035335328044549304, - 0.00035333932329780626, - 0.0003533826996265897, - 0.00035341682107380964, - 0.0003534465510343635, - 0.0003534738649200482, - 0.0003534994956670206, - 0.00035352374000178035, - 0.00035354674088307634, - 0.000353568585828184, - 0.0003535893411995688, - 0.00035360906421972417, - 0.0003536278072373872, - 0.00035364561929512525, - 0.00035366254675441906, - 0.00035367863358906106, - 0.0003536939215594478, - 0.0003537084503418693, - 0.00035386480688909255, - 0.0003538792282712186, - 0.0003538897081634958, - 0.0003539014466509393, - 0.0003539132440609373, - 0.00035392467908940643, - 0.00035393562460922366, - 0.0003539460546310859, - 0.0003539559772931451, - 0.00035396541170131223, - 0.00035397437995233143, - 0.0003539829044117549, - 0.00035399100680943285, - 0.00035399870796242117, - 0.00035400602771334846, - 0.00035401298494168313, - 0.0003540195975986262, - 0.00035402588274865217, - 0.0003540318566118895, - 0.0003540375346054091, - 0.00035404293138281093, - 0.00035404806087197514, - 0.00035405293631098056, - 0.0003540575702822654, - 0.00035406197474509136, - 0.00035406616106641167, - 0.0003540701400502037, - 0.0003541396283762647, - 0.0003541468846118027, - 0.0003541488990399463, - 0.00035415179857784744, - 0.00035415491784445574, - 0.00035415800847805455, - 0.00035416098965978686, - 0.0003541638383941916, - 0.0003541665514183165, - 0.0003541691320540601, - 0.00035417158567793087, - 0.0003541739181670207, - 0.0003541773336895565, - 0.0003541794398953814, - 0.00035418142253499735, - 0.0003541833220053802, - 0.00035418513286240974, - 0.00035418685600389433, - 0.00035418849456285857, - 0.0003541900523062033, - 0.00035419153308696336, - 0.00035419294066170475, - 0.00035419427863370037, - 0.0003541955504392437, - 0.0003541967593485616, - 0.0003541500178171983, - 0.000354147839330389, - 0.00035415000584769577, - 0.0003541513194283657, - 0.00035415229159005087, - 0.00035415312007039586, - 0.0003541538745653544, - 0.00035415458034091944, - 0.00035415524726542963, - 0.0003541558798354472, - 0.00035415648063934614, - 0.0003541570515555557, - 0.0003541575941687103, - 0.0003541581099157088, - 0.00035415860013842483, - 0.0003541590661040796, - 0.00035415950901434337, - 0.0003541599300104472, - 0.00035416033017681765, - 0.00035416071054411, - 0.00035416107209194615, - 0.00035416141575146366, - 0.00035416174240772603, - 0.0003541620529020047, - 0.00035416234803394714, - 0.00035416262856363646, - 0.00035416289521354803, - 0.0003541631486704136, - 0.00035416338958698486, - 0.0003541636185837187, - 0.00035416383625037266, - 0.0003541640431475269, - 0.0003541642398080235, - 0.0003541644267383415, - 0.00035416460441990244, - 0.0003541647733103057, - 0.00035391704122882117, - 0.000353924458325174, - 0.00035392764624759187, - 0.00035392849049275735, - 0.00035392853238483017, - 0.0003539283100908123, - 0.00035392800850551497, - 0.0003539276907579714, - 0.0003539273780475811, - 0.0003539270771531178, - 0.000353926789910405, - 0.000353926516476827, - 0.00035392625645498617, - 0.0003539260092787197, - 0.0003539257743450022, - 0.00035392555105834067, - 0.0003539253388450689, - 0.0003539251371573194, - 0.0003539249454734833, - 0.00035392476329751095, - 0.00035392459015784613, - 0.00035392442560628864, - 0.0003539242692168558, - 0.00035392412058468984, - 0.0003539239793250137, - 0.0003539238450721357, - 0.00035392371747850247, - 0.0003539235962138012, - 0.000353923480964102, - 0.0003539233714310478, - 0.00035392326733107966, - 0.0003539231683947044, - 0.0003539230743657963, - 0.00035392298500093347, - 0.0003539229000687704, - 0.0003539228193494331, - 0.00035392274263395667, - 0.0003539226697237406, - 0.00035392260043003615, - 0.00035392253457345484, - 0.0003539224719835084, - 0.00035392241249816464, - 0.00035392235596342785, - 0.00035392230223294115, - 0.0003539222511676081, - 0.00035392220263523016, - 0.00035392215651016784, - 0.0003539221126730124, - 0.00035392207101027834, - 0.00035392203141411025, - 0.00035392199378200085, - 0.000353921958016529, - 0.00035392192402510544, - 0.0003539218917197326, - 0.00035392186101677946, - 0.0003539218318367614, - 0.0003539218041041384, - 0.00035392177774711567, - 0.00035392175269746077, - 0.00035392172889032536, - 0.0003539217062640775, - 0.00035391582284677125, - 0.00035391112281162284, - 0.00035391140241537716, - 0.00035394672843691, - 0.00035754308229463615, - 0.00035744620732973555, - 0.00035740359913283255, - 0.00035739109323651636, - 0.00035739967507179284, - 0.0003574074669192476, - 0.00035741311811487763, - 0.00035741782120409904, - 0.00035742203840955487, - 0.00035742594793821406, - 0.00035742962237028653, - 0.00035743309483373553, - 0.00035743638352554936, - 0.0003574395008080688, - 0.00035744245659294436, - 0.00035744525960911564, - 0.00035744791788652297, - 0.00035745043894868603, - 0.00035745282989678987, - 0.00035745509745293663, - 0.00035745724798765693, - 0.0003574592875409904, - 0.0003574612218406349, - 0.00035746305631846603, - 0.0003574647961259532, - 0.00035746644614868665, - 0.00035746801102011765, - 0.00035746949513457816, - 0.0003574709026596249, - 0.0003574722375477417, - 0.0003574735035474402, - 0.0003574747042137848, - 0.0003574758429183791, - 0.0003574769228588279, - 0.00035747794706772316, - 0.000357478918421154, - 0.00035747983964678733, - 0.0003574807133315249, - 0.0003574815419287682, - 0.0003574823277653092, - 0.0003574830730478627, - 0.00035748377986926305, - 0.00035748445021434143, - 0.0003574850859655005, - 0.00035748568890799884, - 0.00035748626073496336, - 0.0003574868030521481, - 0.00035748731738243785, - 0.0003574878051701288, - 0.0003574882677849815, - 0.0003574887065260689, - 0.0003574891226254244, - 0.00035748951725149885, - 0.00035748989151244666, - 0.00035749024645923303, - 0.00035749058308858693, - 0.00035749090234580086, - 0.0003574912051273827, - 0.00035749149228357765, - 0.0003574917646207502, - 0.00035749202290365364, - 0.0003574922678575745, - 0.0003574925001703698, - 0.0003574927204943991, - 0.00035749292944835693, - 0.0003574931276190079, - 0.00035749331556283705, - 0.00035749349380761184, - 0.00035749366285386225, - 0.00035749382317628865, - 0.0003574939752250943, - 0.000357494119427248, - 0.0003574942561876861, - 0.00035749438589044663, - 0.0003574945088997481, - 0.00035749462556101534, - 0.000357494736201845, - 0.0003574948411329288, - 0.0003574949406489253, - 0.00035749503502928513, - 0.0003574951245390393, - 0.00035749520942954087, - 0.00035749528993917195, - 0.00035749536629401155, - 0.00035749543870847357, - 0.00035749550738590417, - 0.00035749557251915843, - 0.00035749563429113783, - 0.00035749569287530264, - 0.00035749574843616574, - 0.0003574958011297469, - 0.00035749585110401625, - 0.00035749589849930647, - 0.0003574959434487091, - 0.00035749598607844686, - 0.0003574960265082282, - 0.0003574960648515846, - 0.00035749610121618914, - 0.0003574961357041563, - 0.000357496168412333, - 0.00035749619943256715, - 0.0003574962288519669, - 0.000357496256753145, - 0.00035749628321445103, - 0.00035749630831019086, - 0.0003574963321108375, - 0.00035749635468322415, - 0.000357496376090737, - 0.0003574963963934911, - 0.0003574964156484982, - 0.0003574964339098293, - 0.00035749645122876345, - 0.00035749646765393387, - 0.00035749648323146505, - 0.00035749649800510016, - 0.00035749651201632485, - 0.00035749652530448416, - 0.0003574965379068932, - 0.0003574965498589409, - 0.000357496561194189, - 0.0003574965719444689, - 0.0003574965821399685, - 0.0003574965918093178, - 0.00035749660097966936, - 0.00035749660967677473, - 0.00035749661792505564, - 0.0003574966257476749, - 0.0003574966331665982, - 0.00035749664020266037, - 0.00035749664687561856, - 0.00035749665320421094, - 0.00035749665920620943, - 0.00035749666489846783, - 0.0003574966702969707, - 0.00035749667541687744, - 0.00035749668027256555, - 0.0003574966848776708, - 0.00035749668924512404, - 0.00035749669338719, - 0.00035749669731549973, - 0.00035749670104108484, - 0.0003574967045744069, - 0.0003574967079253878, - 0.00035749671110343764, - 0.0003574967141174803, - 0.0003574967169759801, - 0.0003574967196869636, - 0.000357496722258044, - 0.00035749672469644083, - 0.00035749672700900113, - 0.00035749672920221934, - 0.00035749673128225383, - 0.00035749673325494614, - 0.000357496735125835, - 0.00035749673690017506, - 0.0003574967385829475, - 0.0003574967401788791, - 0.00035749674169245084, - 0.00035749674312791295, - 0.0003574967444892965, - 0.000357496745780424, - 0.00035749674700492147, - 0.0003574967481662273, - 0.00035749674926760305, - 0.00035749675031214055, - 0.00035749675130277337, - 0.0003574967522422844, - 0.00035749675313331034, - 0.0003574967539783537, - 0.0003574967547797878, - 0.00035749675553986283, - 0.0003574967562607137, - 0.00035749675694436386, - 0.0003574967575927335, - 0.00035749675820764343, - 0.00035749675879082017, - 0.00035749675934390135, - 0.0003574967598684402, - 0.00035749676036590995, - 0.00035749676083770697, - 0.0003574967612851562, - 0.00035749676170951437, - 0.0003574967621119733, - 0.00035749676249366267, - 0.0003574967628556544, - 0.0003574967631989652, - 0.00035749676352455934, - 0.00035749676383335036, - 0.00035749676412620644, - 0.0003574967644039492, - 0.0003574967646673585, - 0.000357496764917174, - 0.0003574967651540977, - 0.00035749676537879486, - 0.00035749676559189626, - 0.0003574967657940005, - 0.00035749676598567464, - 0.0003574967661674572, - 0.00035749676633985877, - 0.0003574692048379271, - 0.00035464947122222363, - 0.00035471389260814044, - 0.00035473941479526456, - 0.00035474151158458583, - 0.0003547356472804636, - 0.00035472911196087706, - 0.0003547227207142882, - 0.00035471658322758985, - 0.00035471072918308365, - 0.00035470516022316, - 0.00035469986796451064, - 0.00035469484071758606, - 0.0003546900659832495, - 0.00035468553136726923, - 0.0003546812249026637, - 0.00035467713515103985, - 0.0003546732512220554, - 0.0003545778504893344, - 0.00035455297429653175, - 0.00035455108679495527, - 0.00035454844651439755, - 0.00035454555196302385, - 0.0003545426574621675, - 0.0003545398540800138, - 0.000354537171373094, - 0.0003545346160653378, - 0.0003545321865405677, - 0.00035451499545504646, - 0.00035451212756009456, - 0.00035451021106756034, - 0.00035450828517278606, - 0.00035450641340383963, - 0.0003545046197977788, - 0.0003545029104751112, - 0.0003545012849617629, - 0.0003544997404508339, - 0.00035449827339333186, - 0.00035449688008780584, - 0.0003544955568950455, - 0.00035449430031255267, - 0.00035449310699674604, - 0.00035449197376586684, - 0.00035449089759591584, - 0.00035448987561424267, - 0.00035448890509250113, - 0.000354487983439595, - 0.00035448710819485245, - 0.0003544862770214826, - 0.00035448548770035594, - 0.0003544847381240782, - 0.00035448080258638896, - 0.00035447461387928103, - 0.000354474084261154, - 0.0003544735250188204, - 0.000354472956941103, - 0.00035447240347844064, - 0.0003544718726401881, - 0.00035447136656620895, - 0.00035447088523868017, - 0.00035447042787225045, - 0.0003544699934330685, - 0.00035446958083137014, - 0.00035446918899179145, - 0.00035446881687794857, - 0.0003544684634999555, - 0.00035446812791564236, - 0.000354467809229482, - 0.00035446750659074344, - 0.00035446721919142203, - 0.00035446694626415726, - 0.00035446668708021467, - 0.000354466440947548, - 0.0003544662072089592, - 0.0003544659852403413, - 0.00035446577444901435, - 0.0003544655742721422, - 0.00035446538417523203, - 0.0003544652036507038, - 0.00035446503221653813, - 0.00035446486941498686, - 0.0003544647148113533, - 0.00035446456799282766, - 0.000354464428567389, - 0.00035446429616275716, - 0.000354464170425397, - 0.00035446405101957623, - 0.0003544639376264687, - 0.00035446382994330214, - 0.0003544587249900769, - 0.0003538646415545493, - 0.0003538719743787645, - 0.00035387588418023903, - 0.00035387677721577724, - 0.0003538765571561431, - 0.0003538759484588145, - 0.0003538752209169727, - 0.0003538724590042782, - 0.00035387175239358907, - 0.00035387106574528244, - 0.00035387040098562263, - 0.0003538697649655911, - 0.00035386915926387697, - 0.0003538685834833176, - 0.00035386803653686595, - 0.0003538675171267156, - 0.00035386702392120487, - 0.00035386655561874415, - 0.00035386611096957635, - 0.00035386568878187065, - 0.0003538652879220578, - 0.00035386490731310525, - 0.00035386454593211984, - 0.00035386420280778013, - 0.00035386387701779736, - 0.00035386356768646283, - 0.0003538632739823017, - 0.00035386299511584165, - 0.000353862730337496, - 0.00035386247893554284, - 0.00035386224023421786, - 0.000353862013591896, - 0.00035386179839936547, - 0.0003538615940781916, - 0.0003538614000791627, - 0.0003538612158808112, - 0.0003538610409880157, - 0.00035386087493066595, - 0.0003538607172624024, - 0.0003538605675594153, - 0.0003538604254193055, - 0.0003538602904600013, - 0.0003538601623187351, - 0.0003538600406510645, - 0.00035385992512994866, - 0.00035385981544486884, - 0.00035385971130099216, - 0.00035385961241838227, - 0.00035385951853124397, - 0.00035385942938720953, - 0.0003538593447466616, - 0.00035385926438208766, - 0.00035385918807746835, - 0.00035385911562769783, - 0.0003538590468380333, - 0.00035385898152356807, - 0.0003538589195087384, - 0.0003538588606268486, - 0.00035385880471962565, - 0.0003538587516367915, - 0.00035385870123566, - 0.0003538586533807544, - 0.00035385860794344046, - 0.0003538585648015841, - 0.00035385852383922, - 0.0003538584849462425, - 0.00035385844801810707, - 0.00035385841295555243, - 0.0003538583796643301, - 0.0003538583480549541, - 0.00035385831804245915, - 0.00035385828954617184, - 0.0003538582624894938, - 0.00035385823679969853, - 0.00035385821240773124, - 0.00035385818924802656, - 0.00035385816725833216, - 0.00035385814637953954, - 0.00035385812655552737, - 0.00035385810773300885, - 0.0003538580898613888, - 0.0003538580728926287, - 0.00035385805678111727, - 0.00035385804148354704, - 0.0003538580269587973, - 0.0003538580131678268, - 0.0003538580000735655, - 0.00035385798764081533, - 0.0003538555539793192, - 0.00035385398971959697, - 0.00035385403296716764, - 0.00035385404425501384, - 0.0003538540391747033, - 0.00035385402840335494, - 0.0003538540159502337, - 0.00035385400329328623, - 0.0003538539909640733, - 0.00035385397914109936, - 0.0003538539678717817, - 0.00035385395715546367, - 0.00035385394697442883, - 0.0003538539373054585, - 0.00035385392812411516, - 0.0003538539194062983, - 0.0003538539111287911, - 0.0003538539032694244, - 0.0003538538958071004, - 0.00035385388872177136, - 0.00035385388199439495, - 0.0003538538756068893, - 0.0003538538695420838, - 0.000353794445329522, - 0.0003532926168203326, - 0.000353044844049093, - 0.00035289851726038923, - 0.0003527928864578645, - 0.00035270505476608374, - 0.00035262632396587706, - 0.0003525533163488806, - 0.00035248465102764024, - 0.00035241969908394864, - 0.00035235811998845937, - 0.00035229968612399685, - 0.00035224421717987373, - 0.0003521915553540285, - 0.0003521415558307403, - 0.0003520940829867771, - 0.0003520490087528041, - 0.00035200780076450504, - 0.0003519694018493308, - 0.00035193291768979384, - 0.00035189826662018585, - 0.0003518653642653418, - 0.00035183412529084685, - 0.00035180446669874947, - 0.0003517763089479078, - 0.00035174957624387753, - 0.00035172419652368164, - 0.00035170010133237666, - 0.00035167722566498865, - 0.00035165550780110925, - 0.0003516348891421072, - 0.0003516153140544253, - 0.00035159672971999317, - 0.00035157908599391064, - 0.00035156233526921845, - 0.00035154711895103025, - 0.00035153301639775686, - 0.000351519616956876, - 0.00035150689122460894, - 0.00035149480869026465, - 0.0003514833381187399, - 0.0003514724489943832, - 0.00035146211202379614, - 0.00035145229927682834, - 0.0003514429841938145, - 0.00035143414154480113, - 0.00035142574737292065, - 0.000351417778933889, - 0.0003514102146360398, - 0.0003514030339824405, - 0.000351396217515585, - 0.0003513897467647614, - 0.0003513836041960323, - 0.00035137777316473487, - 0.0003513722378703851, - 0.00035136716792298785, - 0.00035136249332188164, - 0.000351358052810152, - 0.00035135383597965924, - 0.0003513498326724871, - 0.00035134603249971423, - 0.00035134242531355286, - 0.00035133900137363427, - 0.00035133575139369437, - 0.00035133266654392145, - 0.0003513297384373485, - 0.0003513269591109726, - 0.0003513243210055728, - 0.00035132181694571277, - 0.00035131944012043093, - 0.00035131718406479533, - 0.0003513150426423488, - 0.00035131301002843096, - 0.00035131108069433596, - 0.0003513092493922792, - 0.00035130751114112213, - 0.00035130586121282496, - 0.00035130429511958484, - 0.0003513028086016312, - 0.000351301397615637, - 0.0003513000583237234, - 0.00035129878708301784, - 0.000351297580435748, - 0.00035129643509983536, - 0.0003512953479599676, - 0.00035129431605912683, - 0.0003512933365905442, - 0.00035129240689006587, - 0.0003512915244289092, - 0.00035129068680678064, - 0.00035128989174535005, - 0.00035128913708205064, - 0.0003512884207642002, - 0.000351287740843415, - 0.00035128709547031117, - 0.00035128648288947637, - 0.00035128590143469046, - 0.0003512853495243977, - 0.00035128482565740295, - 0.0003512843284087891, - 0.00035127050561711034, - 0.00035171172693982284, - 0.0003519277318542577, - 0.0003520531476418522, - 0.0003521918139751545, - 0.00035227959029979656, - 0.0003523482841477194, - 0.00035241219142591817, - 0.0003524723996099639, - 0.000352529382144058, - 0.0003525834099273206, - 0.0003526346731889844, - 0.0003526833273291804, - 0.0003527295103919746, - 0.0003527733498553064, - 0.0003529105439237301, - 0.0003529532567451072, - 0.00035299253717280737, - 0.00035303036381163154, - 0.0003530664841792496, - 0.00035310085457432376, - 0.0003531335147135328, - 0.0003531645328287621, - 0.00035319398515119615, - 0.0003532219483504674, - 0.0003532484968277416, - 0.00035327370182329585, - 0.0003532976311986175, - 0.000353320349465641, - 0.00035334191790309133, - 0.00035336239470017133, - 0.00035338183510544465, - 0.0003534002915728633, - 0.00035341781390215565, - 0.0003534344493727718, - 0.00035345024287129236, - 0.00035346523701248447, - 0.0003534794722542636, - 0.00035349298700685093, - 0.00035350581773641043, - 0.0003535179990634429, - 0.00035352956385619887, - 0.0003535405433193667, - 0.0003535509670782704, - 0.00035356086325880455, - 0.0003535702585633264, - 0.00035367376439177144, - 0.00035368405149787004, - 0.000353691619335659, - 0.00035369941524948857, - 0.0003537070568187043, - 0.00035371440204249346, - 0.0003537214097517344, - 0.0003537280759890278, - 0.0003537344101441227, - 0.0003537404260521687, - 0.00035374613869037006, - 0.00035375156296819015, - 0.0003537567132996527, - 0.0003537616034670447, - 0.00035376624659246134, - 0.00035377065514856885, - 0.00035377484098296003, - 0.00035377881534656935, - 0.0003537825889226352, - 0.0003537861718549337, - 0.0003537895737748713, - 0.00035379280382730384, - 0.0003537958706950964, - 0.000353798782622456, - 0.0003538015474370866, - 0.0003538041725712315, - 0.00035380666508165264, - 0.00035380903166859896, - 0.0003538112786938178, - 0.0003538134121976557, - 0.0003538154379152976, - 0.00035381736129218175, - 0.00035381918749863945, - 0.0003538209214437928, - 0.00035382256778875064, - 0.0003538241309591405, - 0.00035382561515700253, - 0.00035382702437208836, - 0.00035382836239258267, - 0.00035382963281528927, - 0.0003538308390552985, - 0.0003538319843551685, - 0.00035383307179363875, - 0.0003538341042939118, - 0.0003538350846315048, - 0.0003538360154417157, - 0.00035383689922670455, - 0.00035383773836222013, - 0.00035383853510398725, - 0.00035383929159376904, - 0.0003538302008724206, - 0.00035378806910442846, - 0.0003537893953397936, - 0.0003537903396959693, - 0.0003537909964471436, - 0.0003537915543280838, - 0.000353792028502299, - 0.0003537924636579278, - 0.0003537928722715205, - 0.0003537932585393674, - 0.0003537936246504971, - 0.00035379397202001735, - 0.0003537943017434552, - 0.0003537946147681735, - 0.00035379491195893886, - 0.00035379519412382553, - 0.0003537954620252051, - 0.0003537957163851006, - 0.00035379595788836, - 0.0003537961871849628, - 0.00035379640489194026, - 0.00035379661159510054, - 0.00035379680785062984, - 0.0003537969941865977, - 0.00035379717110438, - 0.00035379733908001064, - 0.00035379749856546413, - 0.0003537976499898678, - 0.0003537977937606604, - 0.00035379793026468753, - 0.00035379805986924054, - 0.00035379818292304705, - 0.00035379829975720967, - 0.00035379841068609397, - 0.00035379851600817716, - 0.0003537986160068497, - 0.0003537987109511793, - 0.00035379880109663223, - 0.0003537988866857644, - 0.00035379896794887053, - 0.0003537990451046055, - 0.0003537991183605727, - 0.0003537991879138832, - 0.0003537992539516834, - 0.00035379931665166265, - 0.00035379937618252704, - 0.0003537994327044577, - 0.00035379948636953765, - 0.0003537995373221644, - 0.00035379958569943607, - 0.0003537996316315221, - 0.0003537996752420118, - 0.0003537997166482481, - 0.0003537997559616436, - 0.00035379979328797873, - 0.00035379982872768735, - 0.00035379986237612783, - 0.00035379989432383777, - 0.0003537999246567797, - 0.00035379995345657017, - 0.00035379998080070115, - 0.00035380000676274735, - 0.00035380003141256513, - 0.00035380005481647973, - 0.00035380007703746433, - 0.00035380009813530986, - 0.00035380011816678287, - 0.0003538001371857834, - 0.00035380015524348634, - 0.00035380017238847766, - 0.0003538001886668912, - 0.00035380020412252697, - 0.0003538002187969716, - 0.00035380023272970897, - 0.00035380024595822913, - 0.00035380025851812556, - 0.00035380027044319294, - 0.0003538002817655187, - 0.00035380029251556763, - 0.00035380030272226515, - 0.000353800312413074, - 0.00035380032161406983, - 0.00035380033035000964, - 0.0003538003386443985, - 0.00035380034651955565, - 0.00035380035399666974, - 0.00035380036109585974, - 0.0003538003678362277, - 0.0003538003742359096, - 0.0003538003803121254, - 0.00035380038608122437, - 0.00035380039155872943, - 0.00035380039675937886, - 0.00035380040169716585, - 0.0003538004063853773, - 0.00035380041083662685, - 0.00035380041506289246, - 0.00035380041907554486, - 0.00035380042288538137, - 0.00035380042650265343, - 0.00035380042993709345, - 0.00035380043319794283, - 0.00035380043629397543, - 0.0003537358099367121, - 0.000346885427209148, - 0.00034694800940432365, - 0.00034696310063312796, - 0.0003469780784599449, - 0.00034699307821728484, - 0.0003470044860236208, - 0.00034701122767149194, - 0.0003470160921710293, - 0.0003470207861689634, - 0.0003470072968979001, - 0.00034698234026744716, - 0.00034697076452091266, - 0.00034695877995793474, - 0.0003469469408064427, - 0.00034693368713524346, - 0.00034692090819121745, - 0.00034690750601769067, - 0.0003468936700669678, - 0.0003468787819373544, - 0.00034686326699443805, - 0.000346845943814303, - 0.00034682881942348955, - 0.00034680958398697147, - 0.00034678697275814007, - 0.00034676161014638324, - 0.0003467340975713647, - 0.0003467045695403116, - 0.000346681835978713, - 0.00034667020864925807, - 0.0003466578200476425, - 0.00034664265516413386, - 0.00034664977092287885, - 0.00034665983080468284, - 0.0003466585529730647, - 0.00034665725685716986, - 0.0003466563831146253, - 0.0003466553239588638, - 0.00034665433884311, - 0.0003466535834937916, - 0.0003466527248192062, - 0.0003466520701647349, - 0.0003466513264429817, - 0.00034665093465920897, - 0.0003466502892500137, - 0.000346648048633241, - 0.00034664752071307997, - 0.0003466470384692125, - 0.00034664684886661604, - 0.0003466464371358236, - 0.00034664607744582925, - 0.0003466457625911309, - 0.00034664548951791717, - 0.00034664519287695147, - 0.0003466450923179579, - 0.00034664460557712383, - 0.00034664411210952767, - 0.00034664363620798944, - 0.0003466431818265815, - 0.00034664274963870173, - 0.00034664233916903366, - 0.00034664194955216364, - 0.00034664157981273083, - 0.0003466415636420458, - 0.0003466412306811289, - 0.00034664013008487587, - 0.0003466398278228621, - 0.00034664346332800806, - 0.00034669038612486367, - 0.00034670977502398466, - 0.00034671539207380316, - 0.00034671594562556336, - 0.0003467146596330576, - 0.00034671275806653364, - 0.0003467106886900426, - 0.00034670861104473964, - 0.0003467065942559501, - 0.0003467046518606813, - 0.00034670278134177996, - 0.00034670098911486523, - 0.00034669926900896144, - 0.0003466976134520822, - 0.00034669601704471564, - 0.00034669447941780085, - 0.0003466929911834082, - 0.00034669155779657764, - 0.00034669016714817554, - 0.00034668881522263706, - 0.00034668749831254665, - 0.00034668620277240663, - 0.00034668492974646736, - 0.00034668366793946294, - 0.0003466824224279625, - 0.0003466811894663154, - 0.0003466799555462016, - 0.000346678727144323, - 0.0003466774971704162, - 0.0003466762342342404, - 0.0003466749414255419, - 0.00034667360881251275, - 0.0003466722324341326, - 0.00034667079266402013, - 0.00034666925093136127, - 0.0003466678796665805, - 0.0003466660755297688, - 0.00034666413230842187, - 0.0003466622635519918, - 0.0003466598678066323, - 0.00034665723676905667, - 0.0003466551898404892, - 0.0003466545120146868, - 0.00034665442736357536, - 0.0003466545551695102, - 0.00034665475372430785, - 0.0003466549708013038, - 0.00034665518711130266, - 0.00034665539532062115, - 0.00034665559371014915, - 0.0003466557827888221, - 0.00034665596211766133, - 0.0003466561284029105, - 0.0003466562892544864, - 0.000346656443238712, - 0.000346656589834029, - 0.0003466567290933112, - 0.0003466568612719902, - 0.0003466569866886477, - 0.00034665710567383416, - 0.00034665721855164813, - 0.00034665732561267235, - 0.0003466574213135028, - 0.0003466575147096445, - 0.0003466576051929326, - 0.0003466576917360263, - 0.00034665777409697613, - 0.00034665785232546834, - 0.0003466579265724109, - 0.00034665799701951154, - 0.00034665806385346577, - 0.00034665812725669944, - 0.0003466581874042462, - 0.0003466582444628838, - 0.00034665829859109636, - 0.00034665834993933035, - 0.0003466583986503427, - 0.00034665844485957183, - 0.0003466584886955063, - 0.0003466585302800368, - 0.00034665856972879443, - 0.000346664390487839, - 0.00034670553575836334, - 0.00034672163803069504, - 0.0003467259132422431, - 0.00034672583459218446, - 0.00034672418151789704, - 0.00034672199204729547, - 0.0003467196081135198, - 0.00034671720061360935, - 0.00034671480432565635, - 0.0003467124121124545, - 0.00034671001038209847, - 0.00034670761194716034, - 0.0003467051782272216, - 0.00034670273432285296, - 0.0003467002732027746, - 0.00034669772816787987, - 0.00034669505956156065, - 0.00034669243851758065, - 0.0003466909280489834, - 0.00034669015790715163, - 0.00034668967696217573, - 0.00034668931333467213, - 0.00034668900275945116, - 0.00034668872092067233, - 0.00034668845833677565, - 0.00034668821104918344, - 0.0003466879771695041, - 0.00034668775559845445, - 0.000346687545549865, - 0.0003466873463731739, - 0.00034668715748661835, - 0.0003466869783515149, - 0.0003466868084618177, - 0.0003466866473393892, - 0.0003466864945314278, - 0.0003466863496087468, - 0.0003466862121643952, - 0.00034668608181245673, - 0.0003466859581869417, - 0.00034668584094074993, - 0.0003466857297446951, - 0.00034668562428657773, - 0.0003466855242703087, - 0.0003466854294150774, - 0.00034668533945456445, - 0.000346685254136193, - 0.0003466851732204185, - 0.00034668509648005843, - 0.0003466850236996535, - 0.00034668495467486194, - 0.0003466848892118866, - 0.0003466848271269312, - 0.00034668476824568196, - 0.00034668471240282227, - 0.00034668465944156547, - 0.00034668460921321404, - 0.0003466845615767459, - 0.0003466845163984136, - 0.00034668447355137285, - 0.0003466844329153246, - 0.00034668439437617743, - 0.0003466843578257264, - 0.00034668432316135113, - 0.0003466842902857268, - 0.00034668425910654984, - 0.00034668422953628, - 0.00034668420149189494, - 0.00034668417489465604, - 0.0003466841496698873, - 0.00034668412574676705, - 0.0003466841030581267, - 0.00034668408154026525, - 0.00034668406113276865, - 0.0003466840417783388, - 0.0003466840234226368, - 0.00034668400601412457, - 0.0003466839895039265, - 0.0003466839738456875, - 0.00034668395899544466, - 0.00034668394491150383, - 0.0003466839315543222, - 0.00034668391888639777, - 0.00034668390687216295, - 0.0003466838954778872, - 0.0003466838846715784, - 0.00034668387442289653, - 0.00034668386470306715, - 0.0003466838554848, - 0.00034668384674221413, - 0.0003466838384507626, - 0.00034668383058716656, - 0.0003466838231293481, - 0.00034668381605636764, - 0.00034668380934836657, - 0.00034668380298651205, - 0.00034668379695294187, - 0.00034668379123071563, - 0.0003466837858037679, - 0.0003466837806568615, - 0.0003466837757755452, - 0.00034668377114611536, - 0.00034668376675557274, - 0.00034668376259159087, - 0.00034668375864247856, - 0.00034668375489714813, - 0.000346683751345085, - 0.0003466837479763149, - 0.00034668374478138015, - 0.00034668374175131003, - 0.000346683738877598, - 0.00034609848899775904, - 0.0003461056967268747, - 0.000346110150954249, - 0.00034611134908625715, - 0.00034611134800715084, - 0.0003461109256815383, - 0.00034611036916291243, - 0.0003461097836304012, - 0.0003461092069662526, - 0.0003461086521857051, - 0.0003461081231473247, - 0.0003461076203683525, - 0.00034610714317575425, - 0.0003461066905003891, - 0.00034610626116880283, - 0.0003461058540091034, - 0.0003461054678880881, - 0.0003461051017230252, - 0.00034610475448414884, - 0.0003461044251938101, - 0.00034610411292448407, - 0.00034610381679643637, - 0.0003461035359753514, - 0.0003461032696700184, - 0.0003461030171301158, - 0.00034610277764410524, - 0.00034610255053722577, - 0.0003461023351695956, - 0.000346102130934408, - 0.0003461019372562222, - 0.00034610175358934254, - 0.00034610157941628044, - 0.0003461014142462959, - 0.000346101257614017, - 0.00034610110907812606, - 0.000346100968220117, - 0.0003461008346431174, - 0.0003461007079707681, - 0.00034610058784616564, - 0.0003461004739308539, - 0.000346100365903872, - 0.00034610026346084966, - 0.00034610016631315016, - 0.0003461000741870551, - 0.0003460999868229968, - 0.0003460999039748232, - 0.00034609982540910586, - 0.00034609975090448306, - 0.00034609968025103545, - 0.0003451664643826116, - 0.0003447096761522168, - 0.00034472985464644194, - 0.0003447376319331992, - 0.0003447394057134317, - 0.000344739003408552, - 0.00034473785024367176, - 0.0003447364710566407, - 0.0003447350574441325, - 0.00034473367778395966, - 0.00034473235497324654, - 0.00034473109519822797, - 0.00034472989857760317, - 0.0003447287630963061, - 0.0003447276860558708, - 0.0003447266646058183, - 0.00034472569593513763, - 0.00034472477733821835, - 0.0003447239062345613, - 0.00034472308017162635, - 0.00034472229682165937, - 0.00034472155397651937, - 0.000344720849541966, - 0.0003447201815319428, - 0.00034471954806305, - 0.0003447189473492598, - 0.0003447183776968902, - 0.0003447178374998324, - 0.0003447173252350261, - 0.00034471683945816423, - 0.00034471637879962053, - 0.0003447159419605892, - 0.0003447155277094219, - 0.00034471513487815633, - 0.00034471476235922244, - 0.00034471440910231987, - 0.00034471407411145735, - 0.0003447137564421418, - 0.00034471277154558946, - 0.0003447124564648063, - 0.00034471219392498187, - 0.0003447119397056306, - 0.0003447116965405492, - 0.0003447114651738456, - 0.00034471124548361693, - 0.00034471103704681536, - 0.0003447108393484483, - 0.00034471065185802136, - 0.00034471047405687413, - 0.0003447103054473899, - 0.0003447101455555473, - 0.00034470999393104403, - 0.00034470985014656763, - 0.000344709713796794, - 0.0003447095844973165, - 0.00034470946188359014, - 0.00034470934560991515, - 0.00034470923534846344, - 0.00034470913078835883, - 0.0003447090316347988, - 0.00034470893760822424, - 0.0003447088484435316, - 0.00034470876388932527, - 0.00034470868370720743, - 0.0003447086076711091, - 0.00034470853556664945, - 0.0003447084671905333, - 0.0003447084023499772, - 0.0003447083408621661, - 0.0003447082825537379, - 0.0003447082272602939, - 0.00034470817482593795, - 0.0003447081251028328, - 0.0003447080779507864, - 0.00034470803323685624, - 0.00034470799083497204, - 0.000344707950625585, - 0.0003447079124953263, - 0.000344707876336689, - 0.000344707842047725, - 0.000344707809531759, - 0.00034470777869711285, - 0.00034470774945685067, - 0.00034470772172853005, - 0.00034470769543397216, - 0.0003447076704990411, - 0.0003447076468534335, - 0.00034470762443048185, - 0.0003447076031669659, - 0.00034470758300293367, - 0.0003447075638815339, - 0.0003447075457488543, - 0.0003447075285537709, - 0.0003447075122478022, - 0.00034470749678497555, - 0.0003447074821216932, - 0.0003447055749135561, - 0.00034465695558681783, - 0.00034463523474491126, - 0.0003446281368531013, - 0.0003446267761809048, - 0.0003446274910644677, - 0.00034462891097318543, - 0.0003446305319897954, - 0.00034463217077759686, - 0.0003446337624386658, - 0.00034463528573964655, - 0.00034463673545723217, - 0.00034463811215493457, - 0.00034463941840808286, - 0.00034464065741394593, - 0.0003446418324838788, - 0.00034464294686143836, - 0.00034464400366077987, - 0.00034464500584926127, - 0.0003446459562461175, - 0.00034464685752681984, - 0.00034464771222928776, - 0.0003446485227605433, - 0.00034464929140331184, - 0.00034465002032238267, - 0.0003446507115706822, - 0.0003446513670950452, - 0.00034465198874169514, - 0.0003446525782614425, - 0.0003446531373146167, - 0.0003446536674757392, - 0.0003446541702379616, - 0.0003446546470172674, - 0.00034465509915646334, - 0.0003446555279289572, - 0.0003446559345423484, - 0.00034465632014182623, - 0.0003446566858133968, - 0.00034465703258694075, - 0.00034465736143911426, - 0.0003446576732961001, - 0.00034465796903621466, - 0.00034465824949238315, - 0.0003446585154544854, - 0.0003446587676715785, - 0.00034465900685401034, - 0.00034465923367541537, - 0.00034465944877461587, - 0.00034465965275741977, - 0.0003446598461983249, - 0.0003446600296421409, - 0.00034466020360552046, - 0.00034466036857841583, - 0.0003446605250254576, - 0.00034466067338726543, - 0.000344660814081686, - 0.00034466094750497286, - 0.00034466107403290097, - 0.0003446611940218241, - 0.0003446613078096804, - 0.00034466141571694314, - 0.00034466151804752313, - 0.00034466161508962513, - 0.00034466170711655933, - 0.0003446617943875116, - 0.000344661877148273, - 0.0003446619556319306, - 0.0003446620300595274, - 0.0003446621006406813, - 0.00034466216757417803, - 0.00034466223104852984, - 0.0003446622912425065, - 0.0003446623483256386, - 0.0003446624024586958, - 0.00034466245379413863, - 0.00034466250247654955, - 0.000344662548643037, - 0.0003446625924236255, - 0.00034466263394161906, - 0.0003446626733139486, - 0.0003446627106515036, - 0.00034466274605944136, - 0.00034466277963748535, - 0.000344662811480205, - 0.00034466284167728286, - 0.0003446628703137658, - 0.0003446628974703056, - 0.00034466292322338606, - 0.00034466294764553976, - 0.000344662970805548, - 0.00034466299276863984, - 0.00034466301359667147, - 0.000344663033348304, - 0.0003446630520791654, - 0.00034466306984201026, - 0.0003446630866868647, - 0.00034466310266117214, - 0.000344663117809922, - 0.0003446631321757792, - 0.0003446631457992046, - 0.0003446631587185668, - 0.00034466317097025216, - 0.0003446631825887664, - 0.00034466319360683184, - 0.00034466320405548013, - 0.0003446632139641388, - 0.00034466322336071506, - 0.0003446632322716729, - 0.0003446632407221096, - 0.00034466324873582484, - 0.00034466325633538883, - 0.00034466326354220487, - 0.00034466327037657014, - 0.00034466327685773323, - 0.0003446632830039475, - 0.000344663288832524, - 0.00034466329435987755, - 0.000344663299601575, - 0.00034466330457238065, - 0.00034466330928629286, - 0.000344663313756589, - 0.0003446633179958584, - 0.0003446633220160412, - 0.00034466332582845974, - 0.00034466332944385077, - 0.0003446633328723975, - 0.0003446633361237558, - 0.0003446633392070829, - 0.0003446633421310625, - 0.00034466334490393017, - 0.00034466334753349465, - 0.0003446633500271625, - 0.00034466335239195735, - 0.00034466335463453825, - 0.0003446633567612224, - 0.0003446633587779983, - 0.00034466336069054654, - 0.00034466336250425344, - 0.00034466336422422797, - 0.00034466336585531327, - 0.00034466336740210385, - 0.0003446633688689554, - 0.00034466337026, - 0.00034466337157915437, - 0.0003446633728301353, - 0.00034466337401646444, - 0.0003446633751414839, - 0.00034466337620836187, - 0.0003446633772201034, - 0.00034466337817955786, - 0.0003446633790894272, - 0.00034466337995227417, - 0.0003446633807705291, - 0.00034466338154649664, - 0.00034466338228236136, - 0.0003446633829801964, - 0.00034466338364196725, - 0.00034466338426953746, - 0.000344663384864675, - 0.0003446633854290553, - 0.0003446633859642683, - 0.0003446633864718214, - 0.0003446633869531437, - 0.0003446633874095916, - 0.0003446633878424499, - 0.0003446633882529377, - 0.0003446633886422116, - 0.00034466338901136787, - 0.0003446633893614457, - 0.0003446633896934312, - 0.0003446633900082603, - 0.00034466339030681816, - 0.00034466339058994693, - 0.00034466339085844326, - 0.00034466339111306375, - 0.00034466339135452544, - 0.0003446633915835081, - 0.00034466339180065707, - 0.00034466339200658365, - 0.00034466339220186803, - 0.0003446633923870598, - 0.00034466339256268065, - 0.0003446633927292254, - 0.00034466339288716333, - 0.00034512938601080623, - 0.00034526020535191756, - 0.00034525175564966565, - 0.0003452486740426892, - 0.00034524799642941963, - 0.00034524818739625263, - 0.00034524867683755333, - 0.00034524925503665385, - 0.00034524984554221003, - 0.0003452504211371082, - 0.0003452509727600596, - 0.00034525149801323187, - 0.0003452519969141728, - 0.00034525247032708576, - 0.00034525291938501305, - 0.00034525334527840283, - 0.00034525374917907713, - 0.00034525413221416987, - 0.00034525449545843835, - 0.0003452548399332745, - 0.00034525516660809314, - 0.00034525547640251313, - 0.00034525577018874236, - 0.00034525604879396036, - 0.00034525631300261694, - 0.0003452565626556664, - 0.00034525679732307264, - 0.00034525702155149536, - 0.0003452572340457725, - 0.0003452574353862735, - 0.00034525762351564197, - 0.000345257804022612, - 0.00034525797641153254, - 0.0003452581403431918, - 0.00034525829242421265, - 0.00034525843792984336, - 0.0003452585772780692, - 0.0003452587099365917, - 0.000345258835929189, - 0.0003452589552431529, - 0.00034525906675550964, - 0.00034525917353714933, - 0.0003452592752993076, - 0.00034525936943148746, - 0.0003452594583654032, - 0.00034525954444607947, - 0.00034525962675028497, - 0.00034525970505015394, - 0.00034525977939593396, - 0.00034525984993399736, - 0.0003452599168396683, - 0.0003452599802927186, - 0.0003452600404686258, - 0.0003452600975329912, - 0.00034526014960114236, - 0.00034526019985755754, - 0.00034526024818835876, - 0.00034526029427276117, - 0.00034526033806868, - 0.00034525869756512885, - 0.00034525389514904604, - 0.0003452529466050057, - 0.0003452518990290663, - 0.0003452507791830825, - 0.00034524956488495516, - 0.00034524824247961705, - 0.00034524788547494247, - 0.00034524792911409347, - 0.00034524795370131765, - 0.000345247969456672, - 0.0003452479815902612, - 0.0003452479920581584, - 0.0003452480016008787, - 0.0003452480105083209, - 0.00034524801890286786, - 0.0003452480268441525, - 0.0003452480343678532, - 0.00034524804150008254, - 0.000345248048262748, - 0.0003452480546755686, - 0.00034524806075685266, - 0.0003452480662811507, - 0.0003452480709892361, - 0.00034524807589131736, - 0.00034524808072643697, - 0.0003452480853808208, - 0.00034524808982024986, - 0.00034524809403971914, - 0.000345248098044634, - 0.0003452481018438779, - 0.00034524810544726343, - 0.00034524810886460986, - 0.00034524811210542047, - 0.0003452481151787768, - 0.00034524811809331734, - 0.0003452481208572428, - 0.00034524812347833616, - 0.0003452481259639766, - 0.00034524812832116433, - 0.00034524813055653795, - 0.00034524813267639107, - 0.00034524813468669516, - 0.00034524813659311067, - 0.0003452481384010063, - 0.0003452481401154733, - 0.0003452481417413401, - 0.00034524814328318554, - 0.00034524814474535154, - 0.00034524814613195564, - 0.00034524814744690265, - 0.0003452481486938957, - 0.0003452481498764471, - 0.00034524815099788616, - 0.00034524815206137167, - 0.0003452481530698985, - 0.0003452481540263066, - 0.0003452481549332897, - 0.0003452481557934012, - 0.000345248156609064, - 0.00034524815738257516, - 0.00034524815811611264, - 0.00034524815881174244, - 0.00034524815947142363, - 0.00034524816009701376, - 0.0003452481606902748, - 0.0003452481612528768, - 0.00034524816178640473, - 0.00034524816229236177, - 0.000345248162772171, - 0.0003452481632271855, - 0.00034524816365868506, - 0.0003452481640678855, - 0.0003452481644559397, - 0.0003452481648239402, - 0.00034524816517292274, - 0.00034524816550387063, - 0.0003452481658177161, - 0.00034524816611534233, - 0.00034524816639758797, - 0.0003452481666652476, - 0.00034524816691907517, - 0.0003452481671597856, - 0.00034524816738805663, - 0.00034524816760453104, - 0.00034524816780981827, - 0.00034524816800449653, - 0.0003452481681891144, - 0.00034524816836419193, - 0.0003452481685302216, - 0.00034524816868767053, - 0.00034524816883698377, - 0.00034524816897858014, - 0.00034524816911285966, - 0.0003452481692401993, - 0.0003452481693609584, - 0.00034524816947547753, - 0.000345248169584078, - 0.0003452481696870661, - 0.00034524816978473254, - 0.000345248169877351, - 0.0003452481699651836, - 0.0003452481700484772, - 0.00034524817012746624, - 0.00034524817020237366, - 0.0003452481702734094, - 0.00034524817034077435, - 0.0003452481704046584, - 0.0003452481704652404, - 0.00034524817052269187, - 0.00034524817057717466, - 0.0003452481706288415, - 0.00034524817067783866, - 0.0003452481707243035, - 0.0003452481707683673, - 0.0003452481708101539, - 0.00034524817084978114, - 0.00034524817088736035, - 0.0003452481709229976, - 0.00034524817095679325, - 0.0003452481709888425, - 0.0003452481710192355, - 0.00034524817104805743, - 0.0003452481710753901, - 0.0003452481711013105, - 0.0003452481711258912, - 0.0003452481711492016, - 0.00034524817117130726, - 0.000345248171192271, - 0.0003452481712121509, - 0.00034524817123100386, - 0.0003452481712488822, - 0.0003452481712658367, - 0.000345248171281915, - 0.0003452481712971628, - 0.0003452481713116221, - 0.0003452481713253344, - 0.000345248171338338, - 0.0003452481713506697, - 0.0003452481713623641, - 0.0003452481713734544, - 0.00034524817138397113, - 0.00034524817139394443, - 0.0003452481714034023, - 0.00034524817141237164, - 0.00034524817142087737, - 0.0003452481714289436, - 0.00034524817143659293, - 0.000345248171443847, - 0.0003452481714507261, - 0.0003452481714572497, - 0.0003452481714634362, - 0.00034524817146930315, - 0.00034524817147486603, - 0.0003452481714801429, - 0.00034524817148514627, - 0.0003452481714898911, - 0.00034524817149439083, - 0.00034524817149865787, - 0.00034524817150270466, - 0.00034524817150654197, - 0.00034524817151018137, - 0.00034524817151363244, - 0.0003452481715169051, - 0.0003452481715200088, - 0.000345248171522952, - 0.00034524817152574216, - 0.0003452481715283904, - 0.0003452481715309004, - 0.0003452481715332807, - 0.00034524817153553815, - 0.00034524817153767885, - 0.0003452481715397089, - 0.00034524817154163407, - 0.0003452481715434598, - 0.00034524817154519123, - 0.00034524817154683315, - 0.00034524817154839006, - 0.0003452481715498667, - 0.00034524817155126683, - 0.00034524817155259487, - 0.00034524817155385417, - 0.0003452481715550482, - 0.0003452481715561808, - 0.0003452481715572548, - 0.0003452481715582732, - 0.000345248171559239, - 0.00034524817156015534, - 0.00034524817156102356, - 0.0003452481715618473, - 0.00034524817156262846, - 0.0003452481715633692, - 0.00034524817156407164, - 0.00034524817156473777, - 0.0003452481715653696, - 0.0003452481715659686, - 0.00034524817156653684, - 0.00034524817156707564, - 0.0003452481715675866, - 0.00034524817156807115, - 0.00034524817156853085, - 0.0003452481715689662, - 0.0003452481715693796, - 0.0003452481715697715, - 0.000345248171570143, - 0.00034524817157049553, - 0.0003452481715708297, - 0.0003452481715711465, - 0.0003452481715714472, - 0.0003452481715717321, - 0.00034524817157200247, - 0.0003452481715722587, - 0.00034524817157250185, - 0.00034524817157273235, - 0.000345248171572951, - 0.0003452481715731583, - 0.00034524817157335485, - 0.00034524817157354133, - 0.00034524817157371816, - 0.00034524817157388583, - 0.00034524817157404467, - 0.0003452481715741957, - 0.0003452481715743386, - 0.0003452481715744742, - 0.00034524817157460265, - 0.0003452481715747245, - 0.00034524817157484037, - 0.00034524817157495003, - 0.00034524817157505385, - 0.00034524817157515245, - 0.0003452481715752462, - 0.00034524817157533487, - 0.000345248171575419, - 0.0003452481715754988, - 0.00034524817157557415, - 0.00034524817157564593, - 0.000345248171575714, - 0.0003452481715757787, - 0.0003452481715758397, - 0.00034524817157589795, - 0.00034524817157595287, - 0.0003452481715760051, - 0.0003452481715760546, - 0.00034524817157610124, - 0.000345248171576146, - 0.00034524817157618765, - 0.0003452481715762282, - 0.0003452481715762661, - 0.0003452481715763014, - 0.00034522393380028143, - 0.00034522419737140485, - 0.00034522438408841373, - 0.00034522443580119845, - 0.0003452244375610389, - 0.000345224421690034, - 0.00034522440013522415, - 0.00034522437728320564, - 0.00034522435471888067, - 0.00034522433299026144, - 0.00034522431226286784, - 0.0003452242925623172, - 0.00034522427386419194, - 0.0003452242561272737, - 0.0003452242393057766, - 0.00034522422335379877, - 0.0003452242082268936, - 0.00034522419388257025, - 0.000345224180280412, - 0.00034522416738204414, - 0.00034522415515106174, - 0.0003452241435529366, - 0.00034522413255492416, - 0.0003452241221259743, - 0.0003452241122366424, - 0.0003450948410286536, - 0.00034499895988748553, - 0.00034498270282639303, - 0.00034496391418952746, - 0.000344943869743639, - 0.0003449212497237793, - 0.00034489744809126525, - 0.00034487633896357675, - 0.00034487564707044087, - 0.0003448756950004787, - 0.00034487551266904287, - 0.0003448752513553237, - 0.00034487497069141094, - 0.0003448746923468301, - 0.0003448744238812233, - 0.0003448741676364939, - 0.00034487392403991424, - 0.00034487369283025176, - 0.0003448734735121975, - 0.0003448732655240931, - 0.0003448730682991879, - 0.00034487288128739037, - 0.00034487270396238597, - 0.000344872535823371, - 0.0003448723763948371, - 0.0003448722252256665, - 0.00034487208188802346, - 0.0003448719459762028, - 0.0003448718171055055, - 0.0003448716949111576, - 0.0003448715790472813, - 0.0003448714691859169, - 0.00034487136501609456, - 0.0003448712662429553, - 0.0003448711725869153, - 0.00034487108378287524, - 0.0003448709995794693, - 0.00034487091973835465, - 0.00034487084403353566, - 0.00034477847910128833, - 0.00034477833529446717, - 0.00034477911721970717, - 0.00034477931014393297, - 0.0003447792824366687, - 0.0003447791778678877, - 0.000344779049632022, - 0.00034477891723626465, - 0.000344778787686878, - 0.0003447786633589007, - 0.0003447785449188257, - 0.0003447784324096617, - 0.0003447783256534112, - 0.00034477822440003296, - 0.0003447781283822541, - 0.0003447780373354349, - 0.00034477795100447953, - 0.00034477786914596694, - 0.00034477779152850913, - 0.0003447777179324939, - 0.0003447776481496101, - 0.0003447775819823089, - 0.00034477751924326595, - 0.0003447774597548585, - 0.0003447774033486655, - 0.0003447773498649915, - 0.00034477729915241556, - 0.0003447772510673607, - 0.00034477720547369, - 0.00034477716224232, - 0.0003447771212508545, - 0.00034477708238324047, - 0.00034477704552943623, - 0.0003447770105851024, - 0.00034477697745130515, - 0.00034477694603423736, - 0.00034477691624495136, - 0.00034477688799910885, - 0.00034477686121674064, - 0.00034477683582202106 - ], - [ - 7.440868026584713e-05, - 0.00046579782937695, - 0.00044669012026715243, - 0.00041167753313475867, - 0.00044409031025083713, - 0.00047394215017919675, - 0.00047297534531599503, - 0.00047180702028048923, - 0.0004712912300680073, - 0.0004722165039805798, - 0.00047375654869361423, - 0.00047555297326070203, - 0.00047827033791147754, - 0.0004813453518404209, - 0.00048398492882542783, - 0.00048670111856598567, - 0.0004898328090102612, - 0.0004918262951116836, - 0.0004941493314334836, - 0.0004964495752203244, - 0.0004982667907315226, - 0.0004994688404318571, - 0.0005011175911703786, - 0.0005027654368632133, - 0.0005047804390997286, - 0.00050630737416782, - 0.0005073389030185202, - 0.0005083769831748553, - 0.0005093118872875934, - 0.0005100538071188481, - 0.0005108073514570242, - 0.0005116045255385823, - 0.0005122894266797281, - 0.0005130151407851186, - 0.0005143753906002577, - 0.000515230430223379, - 0.0005159521274754632, - 0.000516745144557993, - 0.0005176744764000738, - 0.0005187526359070211, - 0.0005200300474922126, - 0.0005212184888304203, - 0.0005223374422303712, - 0.0005227096541713419, - 0.000523129016569378, - 0.0005235531744907964, - 0.0005238612758025203, - 0.0005240805167310469, - 0.0005243267117384815, - 0.0005245850675394344, - 0.0005248772053769322, - 0.0005251853153179773, - 0.0005254431765929976, - 0.0005258161584963541, - 0.0005261498150565405, - 0.0005261803395640676, - 0.0005266570231598309, - 0.0005272979371652798, - 0.0005279413237008007, - 0.0005285117912328354, - 0.0005291024304711595, - 0.0005297073392137204, - 0.000530419913368636, - 0.0005311642978155524, - 0.0005320152649398839, - 0.0005329711022821642, - 0.00053401928946681, - 0.0005351612630765567, - 0.0005365688796605229, - 0.0005380999326964844, - 0.000539878812763359, - 0.0005420578052938384, - 0.0005448992529689589, - 0.0005475126917170867, - 0.0005474146915176222, - 0.0005474475058797738, - 0.0005474835594011688, - 0.0005474562008622441, - 0.0005474167798728637, - 0.0005473816452132111, - 0.0005473496688493715, - 0.0005473204311903029, - 0.0005472935965865443, - 0.0005472699294867103, - 0.0005472488351870203, - 0.0005472295380509541, - 0.000547212790849501, - 0.000547198107090611, - 0.0005471848846104768, - 0.0005471742342908296, - 0.000547162132553705, - 0.0005471541090464993, - 0.0005471482550708606, - 0.0005471439807398344, - 0.000547141582729796, - 0.0005471405603275686, - 0.0005471412293341537, - 0.0005471432097551496, - 0.0005471457491352795, - 0.0005471495272850262, - 0.0005144248204347353, - 0.0005163672184959963, - 0.0005139137250367911, - 0.0005118355134384856, - 0.0005099032566960359, - 0.0005080747979975353, - 0.000506331521772684, - 0.0005046799259416932, - 0.0005031232074300434, - 0.0005016036655525707, - 0.0005002095199889534, - 0.0004988999442526781, - 0.0004976549103170512, - 0.0004965347617822163, - 0.0004955203371424421, - 0.0004945770784660368, - 0.0004936820103046851, - 0.0004928426728897273, - 0.0004920287626133258, - 0.0004912557413579076, - 0.0004905213115972057, - 0.0004898317123690757, - 0.0004891934069217828, - 0.0004885941164988191, - 0.0004880325606539498, - 0.00048749808837088537, - 0.000486991961249409, - 0.00048650991813863927, - 0.00048605492388432997, - 0.00048562397804607167, - 0.0004852209395577285, - 0.00048485132010553486, - 0.0004844973963802801, - 0.00048416468933153406, - 0.00048384822639853967, - 0.00048354915616944885, - 0.0004832715573292073, - 0.00048300593333606387, - 0.00048276045148353225, - 0.0004825313552454954, - 0.000482321679836282, - 0.0004821308612983298, - 0.0004819805938603191, - 0.0004819098399016807, - 0.00048185722483919336, - 0.0004818240095781036, - 0.00048182618363463086, - 0.00048186854867192277, - 0.00048194141359881486, - 0.0004819211475963328, - 0.00048185575973927453, - 0.0004817898304295835, - 0.00048172825079565167, - 0.0004816702485338804, - 0.00048161548827383067, - 0.0004815637820683551, - 0.0004815149595099128, - 0.000481468859819097, - 0.00048142533114199035, - 0.00048138423009124294, - 0.000481345421276337, - 0.0004813087768575913, - 0.000481274152908486, - 0.00048124147398604473, - 0.0004812105882854745, - 0.0004811814069863113, - 0.000481153837451233, - 0.0004811278150882454, - 0.00048110323123968515, - 0.0004810800256552762, - 0.00048105810341886345, - 0.00048103739882002764, - 0.0004810178614220212, - 0.0004809994043303657, - 0.00048098197720292433, - 0.0004809655203762329, - 0.0004809499651128278, - 0.00048093529060490813, - 0.0004809214377452967, - 0.0004809083463097358, - 0.0004808959901199219, - 0.00048088430586415215, - 0.0004808732783455334, - 0.0004808628748842461, - 0.00048085305171337013, - 0.000480843775767946, - 0.00048083501655112634, - 0.00048082673194496173, - 0.00048081889841095245, - 0.0004808115120399835, - 0.0004808045375368112, - 0.0004807979512149678, - 0.0004807917314617595, - 0.0004807858578779382, - 0.0004807803111971501, - 0.0004807750732251251, - 0.0004807701267802165, - 0.0004807654556370509, - 0.00048076104445603945, - 0.00048075687660044034, - 0.00048075293099069316, - 0.00048074921058952665, - 0.00048074570138763203, - 0.0004807423877798798, - 0.0004807392585981305, - 0.0004807363035745892, - 0.0004807335130171834, - 0.0004807308777723863, - 0.0004807283891960469, - 0.00048072603912511385, - 0.00048072381916520183, - 0.00048072170807342003, - 0.0004807197256885535, - 0.00048071785585473937, - 0.00048071609019565076, - 0.0004807144228049423, - 0.0004807128482147466, - 0.0004807113612606666, - 0.000480709957065218, - 0.0004807086310223458, - 0.00048070737878235333, - 0.00048070619623763114, - 0.00048070507950918564, - 0.00048070402493391565, - 0.00048070302905259363, - 0.000480702088598521, - 0.00048070120048681193, - 0.0004807003618042744, - 0.00048069956979985526, - 0.00048069882187561417, - 0.00048069811557820526, - 0.00048069744859082365, - 0.0004806968187256113, - 0.00048069622391648097, - 0.0004806956622123335, - 0.00048069513177066085, - 0.00048069463085150487, - 0.00048069415781174717, - 0.0004806937110997164, - 0.00048069328925010637, - 0.00048069289087915995, - 0.00048069251468013847, - 0.0004806921594190299, - 0.0004806918239305049, - 0.0004806915071140904, - 0.0004806912079305621, - 0.0004806909253985368, - 0.000480690658591249, - 0.000480690406633516, - 0.00048069016869886296, - 0.0004806899440068162, - 0.0004806897318203376, - 0.0004806895314434121, - 0.00048068934221876056, - 0.0004806891635256872, - 0.0004806889947780408, - 0.0004806888354222953, - 0.0004806886849357296, - 0.0004806885428247161, - 0.0004806884086231023, - 0.00048068828189067666, - 0.0004806881622117329, - 0.0004806880491936977, - 0.0004806879340261552, - 0.0004806878062739975, - 0.0004806877065166171, - 0.00048068761499857424, - 0.0004806875286720917, - 0.0004806874471456913, - 0.00048068737015603515, - 0.0004806872974513203, - 0.0004806872287930947, - 0.00048068716395614455, - 0.00048068710272779013, - 0.00048068704490719075, - 0.00048068699030468165, - 0.00048068693874115417, - 0.00048068689004747216, - 0.00048068684406390896, - 0.0004806868006396286, - 0.00048068675963219083, - 0.0004806867209070822, - 0.000480686684337277, - 0.00048068664980281786, - 0.0004806866171904249, - 0.00048068658639312365, - 0.0004806865573098903, - 0.0004806865298453285, - 0.0004806865039093462, - 0.0004806864794168696, - 0.0004806864562875583, - 0.00048068643444554255, - 0.00048068641381917627, - 0.0004806863943408012, - 0.0004806863759465236, - 0.00048068635857600713, - 0.0004806863421722725, - 0.00048068632668151124, - 0.0004806863120529119, - 0.0004806862982384878, - 0.000480686285192926, - 0.00048068627287343487, - 0.00048068626123960224, - 0.0004806862502532684, - 0.0004806862398783951, - 0.0004806862300809506, - 0.00048068622082879657, - 0.000480686212091586, - 0.00048068620384065743, - 0.00048068619604894636, - 0.0004806861886908943, - 0.0004806861817423658, - 0.0004806861751805673, - 0.00048068616898397625, - 0.00048068616313226515, - 0.00048068615760623966, - 0.00048068615238777365, - 0.0004806861474597483, - 0.000480686142806, - 0.0004806861384112626, - 0.0004806861342611209, - 0.000480686130341962, - 0.00048068612664092883, - 0.00048068612314588224, - 0.0004806861198453583, - 0.0004806861167285291, - 0.0004806861137851722, - 0.00048068611100563185, - 0.0004806861083807909, - 0.00048068610590203966, - 0.00048068610356124646, - 0.0004806861013507336, - 0.00048068609926325037, - 0.0004806860972919494, - 0.0004806860954303632, - 0.0004806860936723877, - 0.0004806860920122538, - 0.00048068609044451806, - 0.00048068608896403614, - 0.00048068608756595283, - 0.0004806860862456815, - 0.00048068608499889206, - 0.0004806860838214948, - 0.00048068608270962726, - 0.000480686081659642, - 0.0004806860806680958, - 0.00048068607973173497, - 0.0004806860788474888, - 0.00048068607801245714, - 0.00048068607722390086, - 0.00048068607647923134, - 0.0004806860757760081, - 0.00048068607511192403, - 0.0004806860744847999, - 0.0004806860738925803, - 0.0004806860733333209, - 0.0004806860728051882, - 0.0004806860723064492, - 0.00048068607183546886, - 0.0004806860713907014, - 0.0004806860709706875, - 0.0004806860705740505, - 0.00048068607019948953, - 0.0004806860698457749, - 0.0004806860695117462, - 0.0004806860691963091, - 0.00048068606889842784, - 0.0004806860686171252, - 0.0004806860683514801, - 0.00048068606810061816, - 0.00048068606786371885, - 0.00048068606764000517, - 0.000480686067428742, - 0.0004806860672292378, - 0.0004806860670408365, - 0.0004806860668629213, - 0.0004806860666949082, - 0.0004806860665362458, - 0.0004806860663864141, - 0.0004806860662449218, - 0.0004806860661113037, - 0.0004806860659851233, - 0.0004806860658659652, - 0.00048068606575343934, - 0.000480686065647176, - 0.00048068606554682727, - 0.0004806860654520629, - 0.00048068606536257307, - 0.00048068606527806396, - 0.0004806860651982584, - 0.0004806860651228945, - 0.000480686065051725, - 0.00048068606498451633, - 0.00048068606492104843, - 0.0004806860648611133, - 0.00048068606480451367, - 0.00048068606475106434, - 0.00048068606470058975, - 0.0004806860646529246, - 0.0004806860646079117, - 0.0004806860645654047, - 0.0004806860645252633, - 0.00048068606448735575, - 0.0004806860644515588, - 0.00048068606441775273, - 0.0004806860643858295, - 0.0004806860643556826, - 0.00048068606432721367, - 0.0004806860643003289, - 0.00048068606427494054, - 0.00048068606425096503, - 0.000480686064228324, - 0.00048068606420694334, - 0.0004806860641867527, - 0.00048068606416768557, - 0.0004806860641496797, - 0.00048068606413267587, - 0.0004806860641166182, - 0.0004806860641014548, - 0.00048068606408713504, - 0.0004806860640736122, - 0.0004806860640608422, - 0.000480686064048783, - 0.0004806860640373948, - 0.00048068606402664073, - 0.00048068606401648485, - 0.0004806860640068943, - 0.0004806860639978374, - 0.0004806860639892845, - 0.000480686063981208, - 0.00048068606397358085, - 0.00048068606396637834, - 0.0004806860639595765, - 0.00048068606395315313, - 0.0004806860639470872, - 0.0004806860639413594, - 0.0004806860639359499, - 0.0004806860639308417, - 0.00048068606392601766, - 0.0004806860639214622, - 0.00048068606391716016, - 0.00048068606391309793, - 0.0004806860639092612, - 0.00048068606390563846, - 0.0004806860639022173, - 0.00048068606389898633, - 0.0004806860638959353, - 0.0004806860638930543, - 0.0004806860638903339, - 0.00048068606388776414, - 0.0004806860638853379, - 0.000480686063883046, - 0.0004806860638808821, - 0.0004806860638788384, - 0.00048068606387690986, - 0.00048068606387508694, - 0.0004806860638733661, - 0.0004806860638717412, - 0.00048068606387020684, - 0.00048068606386875693, - 0.00048068606386738965, - 0.0004806860638660959, - 0.00048068606386487587, - 0.00048068606386372363, - 0.00048068606386263515, - 0.0004806860638616073, - 0.00048068606386063593, - 0.00048068606385971995, - 0.0004806860638588557, - 0.00048068606385803564, - 0.00048068606385726623, - 0.00048068606385653494, - 0.0004806860638558458, - 0.00048068606385519725, - 0.00048068606385458495, - 0.0004806860638540053, - 0.00048068606385345743, - 0.00048068606385294054, - 0.00048068606385245265, - 0.00048068606385198926, - 0.00048068606385155184, - 0.00048068606385114006, - 0.0004806860638507544, - 0.0004806860638503872, - 0.0004806860638500376, - 0.0004806860638497148, - 0.0004806860638494015, - 0.00048068606384911135, - 0.0004806860638488349, - 0.000480686063848575, - 0.0004806860638483269, - 0.0004806860638480994, - 0.00048068606384787385, - 0.00048068606384767473, - 0.0004806860638474736, - 0.000480686063847288, - 0.00048068606384712434, - 0.0004806860638469505, - 0.0004806860638467921, - 0.00047689809207411327, - 0.00041484946901793686, - 0.00041605979323068994, - 0.0004164085037943413, - 0.0004165206921514645, - 0.000418080589741097, - 0.0004181061839325575, - 0.0004181463998324605, - 0.00041823639578612886, - 0.0004183252365739253, - 0.0004221045232057898, - 0.00042217182227368224, - 0.00042227652007484687, - 0.0004223879028829906, - 0.0004224984020874882, - 0.000422605780222493, - 0.0004227042948416945, - 0.000422804042560126, - 0.00042290279915737294, - 0.0004229995049222559, - 0.0004230947724469707, - 0.0004231899774184697, - 0.00042328627988571116, - 0.0004233836999437638, - 0.00042348345204590364, - 0.00042357500213352094, - 0.0004236450201836868, - 0.0004237056585643461, - 0.0004237616664787157, - 0.0004238144232145583, - 0.00042386439165343536, - 0.000423911917400023, - 0.00042395703108309284, - 0.00042399978584610736, - 0.0004240403489517305, - 0.0004240788452602427, - 0.00042411538340349984, - 0.00042415006541654353, - 0.000424182988222175, - 0.0004242142410627628, - 0.00042424069802805603, - 0.00042426483317433154, - 0.000424290160505044, - 0.00042431490325704817, - 0.00042433856936691946, - 0.0004243610791382835, - 0.00042438246333378654, - 0.0004244027629625594, - 0.00042442202960754486, - 0.00042444031921974764, - 0.00042445767816063484, - 0.0004244741555555597, - 0.0004244897862295885, - 0.00042450463591946566, - 0.00042451872608532747, - 0.00042453209606165904, - 0.0004245447929425464, - 0.0004245568381670054, - 0.00042456827275012956, - 0.00042457912929255275, - 0.0004245894318460691, - 0.00042459920953670575, - 0.00042460848653937903, - 0.00042461729385787116, - 0.0004246256593372425, - 0.0004246335886452909, - 0.00042464112809161003, - 0.0004246482837272357, - 0.0004246550735495431, - 0.00042466151043296185, - 0.00042466762710787934, - 0.00042467343710312, - 0.00042467894462458033, - 0.00042468416828538784, - 0.0004246891350226938, - 0.00042469385132053785, - 0.0004246983234657553, - 0.0004247025609419828, - 0.0004247065911804618, - 0.0004247104199956919, - 0.0004247140528208426, - 0.0004247174962032105, - 0.00042472075546432116, - 0.00042472385566796097, - 0.00042472680377499686, - 0.00042472960375434485, - 0.0004247322610847561, - 0.0004247347744152816, - 0.0004247371657537943, - 0.0004247394380095212, - 0.00042474159552354033, - 0.00042474363018067186, - 0.000424745563227454, - 0.0004247474049257652, - 0.0004247491550213768, - 0.00042475081677429197, - 0.0004247523940010072, - 0.00042475389130409535, - 0.0004247553127182233, - 0.00042475666201030897, - 0.0004247579428179569, - 0.00042475915861141277, - 0.0004247603126893119, - 0.00042476140396105716, - 0.0004247624395471963, - 0.0004247634250365207, - 0.00042476436132358596, - 0.00042476525030331385, - 0.00042476609421449973, - 0.0004247668953022226, - 0.0004247676498070554, - 0.0004247683636551538, - 0.0004247690458477912, - 0.000424769694843452, - 0.0004247703114082978, - 0.00042477089681213913, - 0.0004247714525356703, - 0.000424771980058988, - 0.0004247724808066357, - 0.0004247729561359758, - 0.00042477340733681465, - 0.00042477383563383815, - 0.00042477424218965667, - 0.0004247746281078896, - 0.0004247749944361397, - 0.0004247753421688325, - 0.0004247756722499161, - 0.0004247759855754218, - 0.0004247762829958957, - 0.00042477656531870984, - 0.00042477683331025134, - 0.0004247770876980047, - 0.00042477732917252506, - 0.00042477755838931394, - 0.0004247777759705992, - 0.0004247779825070213, - 0.00042477817855924064, - 0.0004247783646594558, - 0.000424778537637638, - 0.00042477870329949287, - 0.0004247788617539372, - 0.0004247790124906362, - 0.0004247791556611609, - 0.00042477929158648523, - 0.0004247794206178464, - 0.00042477954310085776, - 0.0004247796593667902, - 0.00042477976973093667, - 0.0004247798744928061, - 0.0004247799739367599, - 0.0004247800683327415, - 0.00042478015793699436, - 0.000424780242992756, - 0.00042478032373091657, - 0.0004247804002606772, - 0.00042478047266860297, - 0.0004247805416046168, - 0.0004247806071075307, - 0.00042478066930290735, - 0.0004247807283457178, - 0.0004247807843926021, - 0.00042478083759475016, - 0.0004247808880963334, - 0.0004247809360343767, - 0.0004247809815389944, - 0.0004247810247337083, - 0.0004247810657357721, - 0.0004247811046564892, - 0.0004247796089559703, - 0.0004247709590808772, - 0.00042476346191174674, - 0.0004247593779087601, - 0.00042475763494968826, - 0.00042475662869141635, - 0.00042475584405389413, - 0.00042475514382610285, - 0.00042475449086749526, - 0.00042475387421044263, - 0.00042475328977414776, - 0.000424752735334897, - 0.0004247522092120905, - 0.00042475170992279607, - 0.0004247512360888629, - 0.00042475078640999935, - 0.00042475035965418013, - 0.0004247499546526991, - 0.00042474957029656137, - 0.0004247492055333392, - 0.0004247488593642622, - 0.0004247485308414754, - 0.0004247482190654429, - 0.0004247479231824835, - 0.00042474764238243246, - 0.0004247473758964252, - 0.0004247471229947892, - 0.00042474688298504927, - 0.00042474665521002885, - 0.0004247464390460514, - 0.0004247462339012331, - 0.000424746039213863, - 0.00042596991813657816, - 0.00045273638365908, - 0.00045170537213405615, - 0.0004508686982215418, - 0.00044996130723768, - 0.0004492999491208972, - 0.0004486484282065453, - 0.00044811036777525994, - 0.00044810382154583694, - 0.0004480906705578493, - 0.00044807625136909177, - 0.0004480620119743869, - 0.0004480483201353462, - 0.000448035251570781, - 0.00044802280390324656, - 0.0004480109546678211, - 0.0004479996770018733, - 0.00044798894385226834, - 0.000447978729068732, - 0.00044796900765447595, - 0.00044795748412828604, - 0.00044794748347608303, - 0.0004479387788050098, - 0.0004479307223796617, - 0.0004479231175412002, - 0.0004479158976111377, - 0.00044790903182188163, - 0.0004479024997413539, - 0.00044789628432077453, - 0.00044789036998481963, - 0.00044788474208775286, - 0.00044787938674053563, - 0.00044787429073957674, - 0.00044786944152417284, - 0.000447864827142841, - 0.0004478604362231291, - 0.00044785625794339023, - 0.0004478522820060577, - 0.0004477881318628621, - 0.0004477369109020514, - 0.0004477188229719447, - 0.00044771033996192274, - 0.0004477046285061717, - 0.0004476998311353174, - 0.0004476954386769748, - 0.0004476913060932332, - 0.00044768738693799846, - 0.00044768366171416555, - 0.0004476801185323502, - 0.0004476767478775682, - 0.00044767354118199445, - 0.00044767049042508623, - 0.0004476675880115372, - 0.0004476648267248589, - 0.00044766219970201836, - 0.0004476597004143789, - 0.0004476573226509369, - 0.0004476550605027384, - 0.00044765290834815813, - 0.0004476508608389173, - 0.0004476489128867905, - 0.0004476414381672175, - 0.0004475906735098126, - 0.0004475712744265342, - 0.0004475640568165855, - 0.0004475602548318865, - 0.00044755746256193603, - 0.0004475550280861932, - 0.0004475527718884877, - 0.0004475506416958617, - 0.00044754861964670594, - 0.00044754669731826037, - 0.0004475448690023499, - 0.0004475431298886013, - 0.00044754147556771864, - 0.00044753990189013045, - 0.00044753840492057714, - 0.00044753698091885646, - 0.0004475356263279472, - 0.00044753433776444367, - 0.00044753311200992245, - 0.00044753194600285335, - 0.0004475308368309406, - 0.00044752978172384435, - 0.0004475287780462613, - 0.000447527823291342, - 0.0004475269150744292, - 0.00044752605112710137, - 0.0004475252292915089, - 0.00044752444751498203, - 0.0004475237038449059, - 0.0004475229964238415, - 0.00044752232348488916, - 0.00044752168334727334, - 0.00044752107441214484, - 0.0004475204951585885, - 0.00044751994413982286, - 0.00044751941997958877, - 0.0004475189213687098, - 0.00044751844706182267, - 0.00044751799587426926, - 0.0004475175666791331, - 0.0004475171584044299, - 0.0004475167700304259, - 0.00044751640058709406, - 0.000447516049151688, - 0.0004475157148464405, - 0.00044751539683636965, - 0.00044751509432719227, - 0.0004475148065633427, - 0.0004475145328260832, - 0.00044751427243170977, - 0.0004475140247298453, - 0.00044751378910181267, - 0.0004475135649590935, - 0.00044751335174185344, - 0.000447513148917548, - 0.00044751295597958977, - 0.00044751277244608475, - 0.00044751259785862785, - 0.0004475124317811581, - 0.00044751227379887003, - 0.00044751212351717664, - 0.0004475119805607248, - 0.00044751184457245753, - 0.000447511715212721, - 0.00044751159215841913, - 0.00044751147510220236, - 0.0004475113637517048, - 0.00044751125782880946, - 0.00044751115706895685, - 0.0004475110612204825, - 0.00044751097004398934, - 0.0004475108833117489, - 0.0004475108008071336, - 0.000447510722324074, - 0.000447510647666546, - 0.0004475105766480799, - 0.0004475105090912961, - 0.0004475104448274597, - 0.0004475103836960617, - 0.0004475103255444163, - 0.0004475102702272801, - 0.00044751021760648966, - 0.00044751016755061534, - 0.00044751011993463533, - 0.00044751007463961993, - 0.000447510031552438, - 0.00044750999056547206, - 0.0004475099515763502, - 0.0004475099144876913, - 0.00044750987920685995, - 0.0004475098456457361, - 0.000447509813720496, - 0.00044750978335140047, - 0.00044750975446259853, - 0.00044750972698193517, - 0.00044750970084077285, - 0.00044750967597381963, - 0.0004475096523189666, - 0.00044750962981713146, - 0.0004475096084121126, - 0.00044750958805044727, - 0.0004475095686812789, - 0.0004475095502562296, - 0.00044750953272927987, - 0.0004475095160566538, - 0.0004475095001967077, - 0.00044750948510982987, - 0.0004475094707583374, - 0.00044750945710638585, - 0.0004475094441198767, - 0.0004475094317663745, - 0.0004475094200150238, - 0.00044750940883647413, - 0.00044750939820280527, - 0.0004475094623573783, - 0.0004475096797899712, - 0.00044750974529608186, - 0.0004475097608987245, - 0.0004475097630926192, - 0.00044750976178248476, - 0.0004475097596241331, - 0.00044750975732609324, - 0.00044750975507429884, - 0.00044750975291458714, - 0.00044750975085538244, - 0.000447509748895253, - 0.0004475097470303018, - 0.0004475097452561405, - 0.00044750974356841134, - 0.000447500961113351, - 0.0004474834918044051, - 0.0004474779450306498, - 0.0004474761086532918, - 0.000447475288503042, - 0.0004474747564895912, - 0.0004474743168617879, - 0.00044747391647573264, - 0.0004474735403974493, - 0.00044747318395547394, - 0.00044403129358326935, - 0.00044478589986113835, - 0.0004448869461417573, - 0.0004448099710642794, - 0.0004446847216611584, - 0.00044454309151243553, - 0.0004443968197881604, - 0.0004442502720293536, - 0.0004441095396699162, - 0.00044397796825069275, - 0.00044386247371699423, - 0.00044376070468176153, - 0.0004436663512434331, - 0.00044357653169420364, - 0.0004434893569946992, - 0.00044340419522383205, - 0.0004433199840163375, - 0.0004432379011695657, - 0.0004431587524750508, - 0.0004430850197987419, - 0.0004430181138456298, - 0.0004429573585688258, - 0.0004428995045820975, - 0.00044284394723009335, - 0.00044279075038743885, - 0.0004427398548666206, - 0.0004426911258675868, - 0.0004426444743944453, - 0.00044260102513720583, - 0.0004425605473894758, - 0.00044252229470033514, - 0.0004424859219177041, - 0.00044245104459233916, - 0.00044241748083596524, - 0.0004423853406790215, - 0.0004423546266681876, - 0.0004423252808338783, - 0.00044229723614703175, - 0.0004422704409847884, - 0.00044224486977995683, - 0.00044222039381626915, - 0.0004421969315507588, - 0.0004421744367592684, - 0.0004421528572099191, - 0.0004421321466927837, - 0.00044211222033134316, - 0.0004420930186836082, - 0.00044207453050870666, - 0.0004420567589695544, - 0.00044204068190064716, - 0.00044202593123843497, - 0.0004420120508436057, - 0.0004419988725217128, - 0.0004419863380005012, - 0.00044197440988685615, - 0.00044196305708669493, - 0.00044195225133001297, - 0.00044194196610219336, - 0.00044193217628261467, - 0.00044192285946053115, - 0.00044191401411808415, - 0.00044190561090420323, - 0.00044189761790718095, - 0.0004418900119999278, - 0.00044188277350968517, - 0.00044187580905916834, - 0.00044186770394795, - 0.0004418587308888005, - 0.0004418495071663128, - 0.0004418401943222326, - 0.0004418308763167035, - 0.000441821853424683, - 0.00044181513691800685, - 0.00044180975900389433, - 0.00044180495058871415, - 0.00044180046713757423, - 0.00044179622801408406, - 0.00044179220200262414, - 0.00044178837300393425, - 0.000441784729764141, - 0.00044178126278893534, - 0.0004417779634061756, - 0.0004417748234713824, - 0.00044177183526608957, - 0.0004417689914544959, - 0.00044176628505817196, - 0.0004417637096496528, - 0.0004417612620754932, - 0.0004417589347766214, - 0.0004417567206169661, - 0.000441754613715564, - 0.00044175260876232176, - 0.0004417507007899441, - 0.00044174888509713897, - 0.0004417471572177043, - 0.00044174551290375116, - 0.00044174394811352316, - 0.0004417424590009427, - 0.00044174104190600134, - 0.00044173969334571805, - 0.0004452556663278705, - 0.0004444942488681927, - 0.00044436418196814806, - 0.00044441921310619143, - 0.0004445290491894095, - 0.0004446469165841937, - 0.00044476204419968045, - 0.00044487365473150174, - 0.00044497820563503055, - 0.0004450784636222932, - 0.00044517479666695, - 0.00044526084945016435, - 0.0004453390873077539, - 0.00044541871287096776, - 0.00044550173574106833, - 0.0004455838074397207, - 0.00044565861862205233, - 0.00044572787751462334, - 0.00044579320678207323, - 0.0004458519748997684, - 0.00044590228495153397, - 0.0004459551395886962, - 0.00044600716921078866, - 0.00044605657483175334, - 0.0004461038890564932, - 0.0004461492144682785, - 0.0004461924358867294, - 0.0004462334863232756, - 0.00044626749126039014, - 0.0004463024892064118, - 0.0004463371741665257, - 0.0004463705916194949, - 0.0004464025113796775, - 0.000446432920191124, - 0.0004464618660260225, - 0.00044648941235080476, - 0.00044651562479701336, - 0.0004465405673571374, - 0.0004465643013760977, - 0.00044658688535958026, - 0.0004466083750175166, - 0.00044662882337187927, - 0.00044664828087879316, - 0.0004466667955504716, - 0.00044668441307293554, - 0.00044670422514007317, - 0.000446733436560832, - 0.0004467534789620108, - 0.00044676967637584034, - 0.0004467842435731922, - 0.00044679785900943886, - 0.00044681074406766573, - 0.0004468229853192248, - 0.00044683462886543733, - 0.00044684570797113465, - 0.00044685625119215744, - 0.00044686628479771067, - 0.0004468758335225352, - 0.00044688492082865273, - 0.0004468935690217126, - 0.00044690179932290586, - 0.0004469096319260527, - 0.00044691708604861866, - 0.000446924179979294, - 0.00044693093112298867, - 0.0004469373560435744, - 0.0004469434705045318, - 0.00044694928950763215, - 0.0004469548273297418, - 0.000446960097557853, - 0.0004469651131224192, - 0.00044696988632907813, - 0.0004469736840369657, - 0.0004469773991085354, - 0.0004469869054074423, - 0.00044699359329307317, - 0.00044699823432899744, - 0.0004470021373694545, - 0.0004470057020676405, - 0.00044700904412198076, - 0.00044700322082385764, - 0.00044700181425899317, - 0.00044700320818311193, - 0.0004470053465014073, - 0.0004470076177788427, - 0.00044700984798376974, - 0.0004470110688141176, - 0.0004470064994887631, - 0.000447005962427668, - 0.00044700696997017147, - 0.00044700837453441535, - 0.00044700984068685634, - 0.00044701127349763386, - 0.00044701264785851016, - 0.0004470139588339295, - 0.0004470152072367666, - 0.0004470163954417202, - 0.0004470175261738289, - 0.00044701860216139034, - 0.0004470196260398645, - 0.00044702179542412216, - 0.0004470245889100248, - 0.00044702609428441903, - 0.0004470271559004075, - 0.0004470280580815348, - 0.0004470288852266959, - 0.0004470296632291287, - 0.0004470304009289691, - 0.00044703110215251883, - 0.00044702934160550256, - 0.00044701815626373885, - 0.00044701449120197176, - 0.00044701213492488967, - 0.0004470108560082119, - 0.00044701061344792675, - 0.00044701067482168303, - 0.0004470108177890336, - 0.0004470109782635995, - 0.0004470111380125842, - 0.0004470112920460719, - 0.00044701143918892815, - 0.00044701157935585564, - 0.00044700359413042234, - 0.0004469974832449991, - 0.000446995574635846, - 0.0004469949350572352, - 0.00044699466629001815, - 0.00044699450855639267, - 0.000446994386745774, - 0.0004469942790104441, - 0.00044699417886981174, - 0.0004469940842830504, - 0.00044699399449788223, - 0.00044699390914154543, - 0.00044699382795829835, - 0.00044699375073336135, - 0.00044699367727063445, - 0.00044699360738593703, - 0.0004469935409047417, - 0.00044699347766121816, - 0.0004469934174976687, - 0.0004469933602640913, - 0.00044699330581779407, - 0.0004469932540230364, - 0.0004469932047506876, - 0.00044699315787790554, - 0.00044699311328783183, - 0.00044699307086929814, - 0.0004469930305165504, - 0.0004469929921289845, - 0.0004469929556108961, - 0.0004469929208712415, - 0.0004469928878234108, - 0.0004469928563850119, - 0.00044699282647766555, - 0.0004469927980268093, - 0.0004469927709615117, - 0.00044699274521429647, - 0.00044699272072097265, - 0.0004469926974204754, - 0.00044699267525471467, - 0.00044699265416842766, - 0.0004469926341090444, - 0.00044699261502655497, - 0.00044699259687338406, - 0.0004469925796042742, - 0.0004469925631761712, - 0.00044699254754811785, - 0.0004469925326811521, - 0.0004469925185382088, - 0.0004469925050840281, - 0.0004469924922850668, - 0.0004469924801094162, - 0.0004469924685267203, - 0.000446992457508103, - 0.0004469924470260932, - 0.0004469924370545316, - 0.00044698418357703605, - 0.0004469798111359608, - 0.00044697837951766355, - 0.0004469778219414033, - 0.0004469775230879261, - 0.00044697730541147675, - 0.00044697711751547363, - 0.00044697694430358533, - 0.0004469767811351288, - 0.0004469766263911546, - 0.00044697647933567307, - 0.00044697633949984666, - 0.00044697620650423117, - 0.00044697608000703986, - 0.0004469759596886792, - 0.000446975845246745, - 0.00044696996473787316, - 0.0004469635149241051, - 0.0004469613504111333, - 0.00044696051604344375, - 0.00044696007519919365, - 0.00044695975727535595, - 0.0004459556393645705, - 0.0004285708806258141, - 0.0004289798820382737, - 0.00042913996640069724, - 0.00043058527968485187, - 0.00043063035372366477, - 0.0004306779778998336, - 0.0004307251109251503, - 0.0004307704605020488, - 0.0004308137237393012, - 0.0004308548084032978, - 0.0004308938133317932, - 0.0004309307796543743, - 0.00043096586677381424, - 0.0004309991795975512, - 0.00043103077827238496, - 0.0004310607322921615, - 0.00043108913535915065, - 0.0004311161663322069, - 0.00043114178050437127, - 0.0004311666085896584, - 0.00043119044661361287, - 0.00043121262441246416, - 0.0004312334921420765, - 0.0004312532384538483, - 0.0004312719532782238, - 0.000431289697865674, - 0.0004313065297893119, - 0.00043132249044946206, - 0.0004313376366733642, - 0.0004313520111625847, - 0.0004313656365857104, - 0.00043137855385817975, - 0.00043139082292964503, - 0.0004314024461284348, - 0.000431413472486484, - 0.0004314239393728554, - 0.0004314338662512976, - 0.00043144328256153065, - 0.0004314522032259419, - 0.0004314606855228911, - 0.0004314687257339442, - 0.0004314763493829674, - 0.0004314835788655504, - 0.00043149043166426513, - 0.0004314969418829812, - 0.00043150310846415386, - 0.00043150896937937423, - 0.00043151452324004236, - 0.0004315197779141484, - 0.0004315247802334324, - 0.0004315295285420792, - 0.00043153402329259335, - 0.00043153828874400784, - 0.0004315423129190844, - 0.00043154614915846855, - 0.0004315497969703938, - 0.00043155326065596116, - 0.00043155652354722596, - 0.0004315596283433071, - 0.0004315625814116433, - 0.0004315653855666338, - 0.00043156802473434674, - 0.00043157053490911764, - 0.0004315729243866143, - 0.00043157519414525533, - 0.0004315773484952402, - 0.0004315793892966105, - 0.00043158132045027233, - 0.0004315831523893045, - 0.00043158489220605637, - 0.00043158653356747376, - 0.00043158809799458646, - 0.0004315895852811476, - 0.0004315909972611959, - 0.0004315923100600057, - 0.00043159356661153864, - 0.0004315947664835439, - 0.00043159590751356414, - 0.00043159699095962156, - 0.00043159801917524483, - 0.000431598994788131, - 0.00043159992042555696, - 0.0004316007986257902, - 0.00043160163181251554, - 0.0004316024222904581, - 0.00043160317224799817, - 0.00043160388376194597, - 0.00043160455851479315, - 0.00043160519657606077, - 0.0004316057942869645, - 0.00043160634607585565, - 0.0004316068824449447, - 0.00043160739634986393, - 0.00043160788562805036, - 0.000431608350409131, - 0.00043160879156355314, - 0.0004316092101714057, - 0.0004316096073438853, - 0.00043160998416463787, - 0.00043161034167176236, - 0.00043161068085354495, - 0.0004316110026487689, - 0.0004316113079484872, - 0.0004316115975982103, - 0.00043161187240015216, - 0.00043161213311542016, - 0.0004316123804661113, - 0.00043161261513730915, - 0.0004316128377789792, - 0.0004316130490077696, - 0.0004316132494087183, - 0.000431613439536873, - 0.0004316136199188299, - 0.0004316137909064291, - 0.00043161395317040384, - 0.00043161410716808255, - 0.00043161425328954085, - 0.0004316143919267239, - 0.00043161452345926804, - 0.0004316146482499996, - 0.0004316147666440477, - 0.000431614878969156, - 0.0004316149855363717, - 0.0004316150866408333, - 0.000431615182562562, - 0.00043161527356722854, - 0.00043161535990688673, - 0.0004316154418206704, - 0.0004316155195354549, - 0.00043161559326648617, - 0.0004316156632179764, - 0.0004316157295836688, - 0.0004316157925473762, - 0.00043161585228348814, - 0.00043161590895745514, - 0.0004316159627262466, - 0.00043161601373878486, - 0.00043161606213635916, - 0.00043161610805301576, - 0.0004316161516159291, - 0.0004316161929457553, - 0.00043161623215696494, - 0.0004316162693581607, - 0.00043161630465237864, - 0.00043161633813737233, - 0.00043161636990588485, - 0.00043161640004590554, - 0.00043161642864091216, - 0.00043161645577010466, - 0.00043161648150862205, - 0.000431616505927752, - 0.0004316165290951282, - 0.0004316165510749167, - 0.0004316165719279946, - 0.000431616591712119, - 0.00043161661048208536, - 0.0004316166282898805, - 0.0004316166451848269, - 0.0004316166612137177, - 0.00043161667642094834, - 0.00043161669084863834, - 0.00043161670453674753, - 0.00043161671752318747, - 0.0004316167298439272, - 0.0004316167415330907, - 0.0004316167526230537, - 0.000431616763144532, - 0.00043161677312666665, - 0.00043161678259710513, - 0.0004316167915820774, - 0.00043161680010646926, - 0.0004316168081938904, - 0.0004316168158667408, - 0.00043161682314627153, - 0.0004316168300526449, - 0.00043161683660498923, - 0.0004316168428214525, - 0.0004316168487192524, - 0.0004316168543147237, - 0.0004316168596233647, - 0.0004316168646598783, - 0.0004316168694382143, - 0.000431616873971607, - 0.0004316168782726125, - 0.0004316168823531432, - 0.00043161688622450097, - 0.0004316168898974083, - 0.00043161689338203806, - 0.0004316168966880416, - 0.00043161689982457527, - 0.0004316169028003265, - 0.0004316169056235372, - 0.0004316169083020266, - 0.00043161691084321347, - 0.00043161691325413617, - 0.000431616915541472, - 0.00043161691771155617, - 0.00043161691977039934, - 0.0004316169217237036, - 0.00043253412640410863, - 0.0004486789339450583, - 0.0004481761630437065, - 0.0004477339689214492, - 0.00044740894100308827, - 0.00044739415502261193, - 0.0004473832190864044, - 0.0004473739059263741, - 0.0004473654277357825, - 0.0004473574965226568, - 0.00044734999930369295, - 0.0004473428847693957, - 0.0004473361237103419, - 0.000447329695180946, - 0.00044732130447746796, - 0.0004473128054641789, - 0.00044730620513658205, - 0.00044730051131280566, - 0.0004472953001349629, - 0.0004472904150492332, - 0.0004472857937271332, - 0.0004472814070901955, - 0.0004472772380171296, - 0.0004472732738988413, - 0.00044726950402477794, - 0.00044726591865535634, - 0.00044726250868330536, - 0.00044725926550117783, - 0.00044725618094147517, - 0.00044725324724277405, - 0.0004472504570255539, - 0.0004472478032720166, - 0.0004472452793078696, - 0.00044724287878534407, - 0.0004472379574282642, - 0.00044723135132471886, - 0.00044722756545103167, - 0.0004472249089059233, - 0.00044722271216751376, - 0.00044722073793258116, - 0.00044721890040781297, - 0.0004472171667844813, - 0.000447215522870784, - 0.000447213961101141, - 0.0004472124763485457, - 0.00044721013248308323, - 0.00044718766518528135, - 0.0004471765483796724, - 0.0004471715288183944, - 0.0004471687056872376, - 0.00044716670030709403, - 0.000447165029838004, - 0.00044716352367744943, - 0.00044716212007693936, - 0.0004471607953095322, - 0.00044715953899781717, - 0.00044715834551689316, - 0.0004471572109954911, - 0.00044715613226682384, - 0.0004471551064986301, - 0.0004471541310599701, - 0.00044715320347067775, - 0.00044715232137980117, - 0.0004471514825543332, - 0.0004471506848717084, - 0.0004471499263137882, - 0.00044714920496153064, - 0.0004471485189900576, - 0.00044714786666401053, - 0.00044714724633315175, - 0.00044713024780840586, - 0.00044711052247341584, - 0.0004471026615788413, - 0.0004470991680328502, - 0.0004470972309041629, - 0.0004470958394647818, - 0.0004470942015725593, - 0.0004470929557108887, - 0.00044709192257415086, - 0.0004470909932342318, - 0.000447090128014776, - 0.00044708931174918426, - 0.0004470885378564003, - 0.000447087802802468, - 0.00044708710417333487, - 0.00044708644000234914, - 0.00044708580853376756, - 0.00044708520813787234, - 0.0004470846372788879, - 0.00044708409450136907, - 0.000447083578423125, - 0.0004470830877305321, - 0.00044708106975330507, - 0.00044707386578877843, - 0.00044707067284878536, - 0.0004470691869399824, - 0.0004470683145868968, - 0.00044706767279600217, - 0.0004470671277295905, - 0.0004470666321055571, - 0.00044706616872933967, - 0.00044706530854467014, - 0.00044706379069610184, - 0.0004470629600424717, - 0.00044706241252945214, - 0.00044706197631102937, - 0.0004470615908468369, - 0.0004470612345238696, - 0.00044706089927267433, - 0.0004470605817528111, - 0.0004470602802918729, - 0.00044705999382169375, - 0.00044705972150785344, - 0.0004470594626198972, - 0.0004470592164851613, - 0.0004470589824716791, - 0.0004470587599812296, - 0.0004470585484459594, - 0.0004470583473262922, - 0.0004470581561093293, - 0.0004470579743074634, - 0.00044705780145711015, - 0.00044705763711751456, - 0.0004470574808696256, - 0.000447057332315026, - 0.0004470571910749159, - 0.000447057056789146, - 0.0004470569291153009, - 0.0004470568077278239, - 0.00044705669231718924, - 0.00044705658258911045, - 0.0004470564782637917, - 0.00044705637907521326, - 0.000447056284770454, - 0.0004470561951090457, - 0.0004470561098623601, - 0.000447056028813027, - 0.0004470559517543773, - 0.00044705587848992004, - 0.00044705580883283694, - 0.00044705574260550966, - 0.00044705567963906483, - 0.00044705561977294365, - 0.00044705556285449367, - 0.00044705550873857814, - 0.00044705545728720666, - 0.0004470554083691833, - 0.0004470553618597716, - 0.00044705531764037713, - 0.00044705527559824433, - 0.0004470552356261705, - 0.00044705514786531203, - 0.00044705447367578957, - 0.00044705414419918293, - 0.0004470537952215444, - 0.00044705362071608085, - 0.0004470535278437892, - 0.0004470534650518389, - 0.00044705341420586534, - 0.000447053368936582, - 0.0004470533269629775, - 0.00044705328742641377, - 0.00044705324996520684, - 0.0004470532143932818, - 0.00044705318058849445, - 0.0004470531484537222, - 0.00044705311790322266, - 0.0004470530888577642, - 0.0004470530612428122, - 0.00044705303498777764, - 0.00044705301002564366, - 0.00044705298629272596, - 0.00044705296372848897, - 0.00044705294227538085, - 0.00044705292187868567, - 0.0004470529024863831, - 0.0004470528840490127, - 0.00044705286651955167, - 0.0004470528498532917, - 0.00044705283400772635, - 0.0004470528189424421, - 0.0004470528046190157, - 0.00044705272302852337, - 0.0004470512434988786, - 0.00044705055199389737, - 0.0004470502783080527, - 0.0004470501524218793, - 0.00044705007935379307, - 0.0004470500260606394, - 0.000447049981005327, - 0.00044704994011679716, - 0.000447049901917986, - 0.0004470498658350988, - 0.00044704983161078537, - 0.00044704979910036865, - 0.0004470497682009958, - 0.00044704973882691933, - 0.00044704971090079383, - 0.0004470496843505327, - 0.00044704965910810195, - 0.00044704963510899473, - 0.0004451124715554207, - 0.0004455122428047304, - 0.0004456029767533467, - 0.00044558858360856736, - 0.00044553996959531984, - 0.00044548162960613476, - 0.0004454219573794927, - 0.00044536376487213964, - 0.0004453079322544852, - 0.00044525467411342216, - 0.000445203978252304, - 0.0004451557728384373, - 0.0004451100316990145, - 0.00044506659816134005, - 0.0004450253251091665, - 0.00044498609414456836, - 0.0004449488016933336, - 0.0004449133670081666, - 0.0004448798086267701, - 0.0004448479874575172, - 0.00044481777003737693, - 0.000444789057596812, - 0.0004447617688664738, - 0.00044473583104460637, - 0.0004447111764843856, - 0.00044468774142764083, - 0.0004446654654592133, - 0.0004446442912181887, - 0.00044462416420371954, - 0.0004446050326185094, - 0.0004445868472298408, - 0.00044456956124089725, - 0.00044455313016965135, - 0.0004445375117341536, - 0.0004445226657436462, - 0.00044450855399511083, - 0.00044449515078442373, - 0.000444482455029774, - 0.00044447041002991815, - 0.00044445896967436105, - 0.0004444480990708121, - 0.0004444377682513466, - 0.00044442794985409876, - 0.00044441861826637443, - 0.0004444097492828193, - 0.0004444013199462168, - 0.0004443933084542591, - 0.0004443856940913077, - 0.00044437845717067273, - 0.00044437157905716663, - 0.00044436504366408787, - 0.0004443588337373166, - 0.0004443529322224034, - 0.0004443473234886539, - 0.00044434199290070654, - 0.0004443369266262499, - 0.00044433211158099973, - 0.00044432754336367236, - 0.0004443232120219751, - 0.00044431909958803615, - 0.00044431519274079227, - 0.000444311480405987, - 0.00044430795261905077, - 0.0004443046001071553, - 0.0004443014141272479, - 0.0004442983863948619, - 0.00044429550904556144, - 0.0004442927746085291, - 0.0004442901759850639, - 0.00044428770642941325, - 0.00044428535953100235, - 0.0004442831291977007, - 0.000444281009639976, - 0.0004442789953558545, - 0.00044427708111663563, - 0.0004442752619533165, - 0.00044427353314369366, - 0.0004442718902001053, - 0.0004442703288577803, - 0.0004442688450637703, - 0.00044426743496642766, - 0.00044426609490540636, - 0.0004442648214021617, - 0.0004442636111509211, - 0.0004442624610101017, - 0.00044426136799415527, - 0.0004442603292658202, - 0.0004442593421287546, - 0.000444258404020537, - 0.0004442575125060168, - 0.00044425666527099093, - 0.00044425586011619816, - 0.000444255094951609, - 0.00044425436779100115, - 0.0004442536767468036, - 0.00044425302002519627, - 0.00044425239592145476, - 0.00044425180281552364, - 0.0004442512391678124, - 0.0004442507035151986, - 0.0004461857332667161, - 0.0004457788426255858, - 0.0004456816623325685, - 0.00044569135189121887, - 0.00044573721024546376, - 0.00044579516464589373, - 0.0004458535328698169, - 0.00044591036772732715, - 0.0004459647349698621, - 0.000446016427771067, - 0.0004460655642866706, - 0.0004461122672531538, - 0.00044615665591530185, - 0.0004461988445068299, - 0.0004462389419143212, - 0.0004462804822061536, - 0.00044632003880379367, - 0.0004463558949346544, - 0.00044638934581981386, - 0.0004464209213678923, - 0.00044645085808506214, - 0.000446479287247275, - 0.00044650630096003516, - 0.00044653197535736346, - 0.00044655637881959334, - 0.0004465795749518209, - 0.00044660162372664003, - 0.00044662258198050907, - 0.00044664250367950254, - 0.0004466574774109716, - 0.0004466536944323569, - 0.0004466615799788828, - 0.0004466741194228555, - 0.0004466877994724709, - 0.00044670141336753517, - 0.00044671456441698984, - 0.0004467271365314329, - 0.0004467391101036962, - 0.0004467504980430458, - 0.0004467613235852197, - 0.0004467716126255457, - 0.0004467813910993663, - 0.0004467906841151392, - 0.00044679951569476717, - 0.0004468079087229876, - 0.00044681588496748583, - 0.000446823465121725, - 0.0004468333464302094, - 0.00044684567481471037, - 0.0004468543476655998, - 0.00044686142275517977, - 0.00044686774196780663, - 0.0004468736078070409, - 0.0004468791345138748, - 0.0004468843706654384, - 0.0004468893416561373, - 0.0004468940644287706, - 0.0004468985525961513, - 0.0004469028182344385, - 0.0004469068725230712, - 0.00044691072598440596, - 0.00044691438858385305, - 0.0004469178697808666, - 0.0004469211785621075, - 0.00044692432346766446, - 0.0004469273126141432, - 0.0004469301537159771, - 0.00044693285410546223, - 0.00044693542075172413, - 0.00044693786027871817, - 0.0004469401789823299, - 0.00044694238284662547, - 0.0004469444775592957, - 0.0004469464685263346, - 0.0004469491559487005, - 0.00044695385549580185, - 0.0004469567384834858, - 0.00044695882650884033, - 0.00044696058500793, - 0.00044696217837149023, - 0.0004469636659310965, - 0.00044696507059359766, - 0.0004469664025640963, - 0.0004469676675466856, - 0.00044696886958288916, - 0.00044697001203748644, - 0.000446971121962375, - 0.0004469721989763244, - 0.00044697319749832773, - 0.0004469741370762755, - 0.00044697502687778516, - 0.00044697587153107404, - 0.0004469766740172081, - 0.000446977436679975, - 0.0004469781615780829, - 0.00044697885061000615, - 0.0004469795055601544, - 0.000446980128117721, - 0.00044698071988595497, - 0.00044698075805318894, - 0.00044697912327966416, - 0.0004469787494872534, - 0.0004469788884815591, - 0.00044697919196891366, - 0.0004469795396012035, - 0.00044697989045500256, - 0.0004469802309987035, - 0.0004469805571265489, - 0.00044698086795846935, - 0.00044698116370127226, - 0.0004469814449116757, - 0.00044698171224316727, - 0.00044698196635981394, - 0.00044698220790763865, - 0.00044698243750581436, - 0.0004469826557446433, - 0.00044698286318583185, - 0.0004469830603635038, - 0.0004469832477854295, - 0.00044698342593428136, - 0.0004469835952688584, - 0.00044698375622526375, - 0.0004469839092180237, - 0.00044698405464115595, - 0.0004469841928691829, - 0.00044698432425809687, - 0.0004469844491462771, - 0.00044698456785536076, - 0.0004469846806910707, - 0.0004469847879440046, - 0.00044698488989038115, - 0.0004469849867927535, - 0.0004469850789006838, - 0.0004469851664513869, - 0.00044698524967034083, - 0.00044697640482697687, - 0.000446969813028525, - 0.00044696736461298254, - 0.00044696638637514285, - 0.0004469659216953757, - 0.0004469656403087573, - 0.0004469654280963125, - 0.00044696524543663045, - 0.0004469650783934329, - 0.00044696492189506755, - 0.00044696477393781726, - 0.0004469646335878154, - 0.00044696450029191824, - 0.0004469643736396468, - 0.0004469642532805876, - 0.0004469641388953905, - 0.00044696403018526005, - 0.0004469639268678456, - 0.0004469638286753627, - 0.0004469637353535015, - 0.000446963646660633, - 0.000446963562367137, - 0.0004469634822547906, - 0.00044696340611619757, - 0.00044696333375425056, - 0.00044696326498161964, - 0.00044696319962026594, - 0.00044696313750098264, - 0.00044696307846295557, - 0.00044696302235334767, - 0.00044696296902690274, - 0.00044696291834556975, - 0.00044696287017814495, - 0.000446962824399933, - 0.00044696278089242334, - 0.0004469627395429843, - 0.00044696270024457063, - 0.00044696266289544667, - 0.00044696262739892363, - 0.00044696259366310774, - 0.00044696256160066443, - 0.00044696253112859073, - 0.00044696250216800056, - 0.0004469624746439208, - 0.0004469624484850974, - 0.00044696242362381037, - 0.0004469623999956994, - 0.000446962377539596, - 0.0004469623561973656, - 0.0004469623359137583, - 0.00044696231663626356, - 0.00044696229831497566, - 0.00044696228090246516, - 0.0004469622643536545, - 0.00044696224862570197, - 0.0004469622336778916, - 0.0004469622194715259, - 0.00044696220596982824, - 0.00044696219313784493, - 0.0004469621809423568, - 0.00044696216935179276, - 0.0004469621572245465, - 0.00044696169403121884, - 0.0004469614445639548, - 0.00044637362210729473, - 0.00043824037901436845, - 0.0004383024037262042, - 0.000438330281568048, - 0.00043970030978392796, - 0.000439711305547298, - 0.00043972307417113445, - 0.00043973530606979095, - 0.00043974730343454934, - 0.00043975882855549483, - 0.0004397698133009253, - 0.0004397802513059961, - 0.0004397901581033024, - 0.00043979955641036114, - 0.00043980847072954446, - 0.000439816925393742, - 0.0004398249438855671, - 0.00043983254862591464, - 0.0004398397609342138, - 0.0004398466010502631, - 0.00043985308817698495, - 0.00043985924052913564, - 0.0004398650753825229, - 0.0004398706091218036, - 0.0004398758572862292, - 0.0004398808346131836, - 0.0004398855550795307, - 0.0004398900319408496, - 0.0004398942777686532, - 0.000439898304485688, - 0.00043990212339941416, - 0.00043990574523375745, - 0.00043990918015922314, - 0.00043991243782145643, - 0.00043991552736832813, - 0.00043991845747562197, - 0.0004399212363713992, - 0.00043992387185910157, - 0.00043992637133946584, - 0.00043992874183130517, - 0.0004399309899912193, - 0.00043993312213228605, - 0.00043993514424178987, - 0.0004399370619980347, - 0.00043993888078628886, - 0.0004399406057139082, - 0.00043994224162467743, - 0.0004399437931124122, - 0.0004399452645338592, - 0.0004399466600209302, - 0.000439947983492305, - 0.00043994923866443525, - 0.00043995042906198135, - 0.00043995155802770917, - 0.00043995262873187734, - 0.00043995364418114054, - 0.00043995460722699015, - 0.00043995552057376434, - 0.0004399563867862402, - 0.0004399572082968368, - 0.0004399579874124453, - 0.0004399587263209076, - 0.00043995942709715877, - 0.00043996009170905515, - 0.00043996072202289924, - 0.00043996131980868105, - 0.00043996188674504854, - 0.0004399624244240202, - 0.00043996293435545744, - 0.0004399634179713033, - 0.0004399638766296039, - 0.0004399643116183217, - 0.00043996472415895225, - 0.0004399651154099547, - 0.0004399654864700045, - 0.0004399658383810788, - 0.00043996617213138203, - 0.00043996648865812186, - 0.00043996678885013937, - 0.00043996707355040663, - 0.00043996734355839314, - 0.00043996759963231053, - 0.0004399678424912424, - 0.00043996807281716316, - 0.0004399682912568531, - 0.00043996849842371436, - 0.00043996869489949455, - 0.00043996888123591866, - 0.0004399690579562399, - 0.000439969225556708, - 0.00043996938450796357, - 0.000439969535256359, - 0.0004399696782252121, - 0.0004399698138159949, - 0.0004399699424094615, - 0.00043997006436671604, - 0.00043997018003022763, - 0.0004399702897247926, - 0.0004399703937584447, - 0.0004399704924233221, - 0.0004399705859964861, - 0.0004399706747407008, - 0.0004399707589051693, - 0.000439970838726235, - 0.00043997091442804384, - 0.0004399709862231746, - 0.00043997105431323625, - 0.0004399711188894329, - 0.00043997118013310135, - 0.0004399712382162207, - 0.0004399712933018947, - 0.00043997134554481015, - 0.0004399713950916701, - 0.0004399714420816084, - 0.00043997148664657736, - 0.0004399715289117206, - 0.00043997156899572287, - 0.0004399716070111449, - 0.0004399716430647376, - 0.00043997167725774397, - 0.0004399717096861811, - 0.0004399717404411121, - 0.0004399717696088999, - 0.0004399717972714509, - 0.00043997182350644434, - 0.0004399718483875512, - 0.00043997187198464025, - 0.0004399718943639747, - 0.00043997191558839833, - 0.0004399719357175112, - 0.00043997195480783836, - 0.0004399719729129877, - 0.0004399719900838002, - 0.00043997200636849325, - 0.0004399720218127962, - 0.0004399720364600785, - 0.000439972050351471, - 0.00043997206352598244, - 0.0004399720760206083, - 0.00043997208787043484, - 0.0004399720991087375, - 0.0004399721097670748, - 0.00043997211987537645, - 0.0004399721294620279, - 0.00043997213855394914, - 0.00043997214717667147, - 0.0004399721553544085, - 0.00043997216311012383, - 0.000439972170465597, - 0.0004399721774414825, - 0.00043997218405736923, - 0.00043997219033183613, - 0.00043997219628250165, - 0.00043997220192607667, - 0.0004399722072784082, - 0.0004399722123545269, - 0.0004399722171686865, - 0.00043997222173440586, - 0.00043997222606450615, - 0.00043997223017114685, - 0.0004399722340658595, - 0.00043997223775958113, - 0.00043997224126268416, - 0.0004399722445850057, - 0.0004399722477358747, - 0.00043997225072413975, - 0.000439972253558192, - 0.00043997225624598966, - 0.0004399722587950805, - 0.00043997226121262256, - 0.00043997226350540457, - 0.0004399722656798652, - 0.0004399722677421102, - 0.00043997226969793066, - 0.00043997227155281865, - 0.0004399722733119832, - 0.00043997227498036395, - 0.0004399722765626463, - 0.00043997227806327304, - 0.00043997227948645813, - 0.00043997228083619816, - 0.0004399722821162833, - 0.0004399722833303083, - 0.00043997228448168203, - 0.0004399722855736379, - 0.0004399722866092422, - 0.00043997228759140285, - 0.00043997228852287785, - 0.0004399722894062832, - 0.0004399722902440993, - 0.0004399722910386792, - 0.00043997229179225383, - 0.00043997229250693925, - 0.00043997229318474255, - 0.0004399722938275671, - 0.00043997229443721794, - 0.00043997229501540713, - 0.000439972295563758, - 0.00043997229608381085, - 0.0004399722965770256, - 0.00044052993953605274, - 0.00044821586766128106, - 0.0004478858294999461, - 0.0004475228210783248, - 0.00044709532241727577, - 0.0004470872241486536, - 0.0004470824998340385, - 0.00044707809296634817, - 0.0004470739377472612, - 0.00044707000285028575, - 0.0004470662701897701, - 0.0004470627269637532, - 0.00044705936265445527, - 0.00044705616788833137, - 0.0004470531339941525, - 0.0004470502528235554, - 0.00044704751667068806, - 0.00044704491822968045, - 0.000447042280381249, - 0.0004470380544151218, - 0.00044703490578058076, - 0.0004470323675938134, - 0.0004470301276031635, - 0.00044702806428242316, - 0.00044702612879982226, - 0.0004470242997473949, - 0.0004470225661539663, - 0.0004470209211091962, - 0.00044701927216323205, - 0.00044701755384481465, - 0.00044701604006176847, - 0.0004470146525444576, - 0.000447013353696514, - 0.00044701212729870537, - 0.0004470109652963339, - 0.0004470098627950263, - 0.0004470088161794998, - 0.0004470078224036086, - 0.00044700687871969646, - 0.0004470059825728544, - 0.000447005131557212, - 0.0004470043233956848, - 0.0004470035559287128, - 0.00044700282710655057, - 0.0004470021349830666, - 0.0004470014777102741, - 0.0004470008535332954, - 0.0004470002607856369, - 0.00044699969788472734, - 0.00044699916332768515, - 0.0004469986556873047, - 0.0004469981736082457, - 0.00044699758355166877, - 0.00044699706296198586, - 0.0004469966115943796, - 0.0004469961993028393, - 0.00044699581390190496, - 0.0004469954502056217, - 0.0004469951056846529, - 0.00044699477883498694, - 0.0004469944685649482, - 0.000446994173964008, - 0.00044699389421478465, - 0.0004469936285587847, - 0.00044699337628235545, - 0.0004469931367102711, - 0.00044699290920224074, - 0.00044699269315056565, - 0.00044699248797827937, - 0.00044699229313751785, - 0.00044699210810802314, - 0.0004469919323957422, - 0.00044699176553150244, - 0.0004469916070697579, - 0.00044699145658739814, - 0.00044699131368261904, - 0.0004469911779738495, - 0.0004469910490987326, - 0.00044699092671315763, - 0.0004469908104903421, - 0.0004469907001199585, - 0.00044699059530730576, - 0.00044699049577252316, - 0.0004469904012498419, - 0.00044699031148687636, - 0.0004469902262439497, - 0.0004469901452934539, - 0.00044699006841924285, - 0.0004469899954160537, - 0.00044698992608896036, - 0.00044698158195820075, - 0.0004469751890091417, - 0.00044697231678321854, - 0.00044697081014650585, - 0.00044696983653278154, - 0.00044696908308873654, - 0.0004469684316925267, - 0.00044696781061199923, - 0.000446967233008584, - 0.0004469666991129253, - 0.0004469661977239506, - 0.0004469657237366635, - 0.0004469652744701816, - 0.00044696484819043027, - 0.0004469644435545705, - 0.0004469640594012253, - 0.0004469636946702085, - 0.0004469633483708045, - 0.0004469630195683024, - 0.00044696270737744034, - 0.0004469624109585126, - 0.0004469621295145467, - 0.00044696186228894983, - 0.0004469616085633952, - 0.00044696136765586084, - 0.0004469611389187877, - 0.000446960921737332, - 0.0004469607155277123, - 0.00044696051973564004, - 0.000446960333834829, - 0.0004469601573255803, - 0.00044695998973343966, - 0.00044695983060792177, - 0.0004469596795212995, - 0.0004469595360674543, - 0.00044695939986078416, - 0.00044695927053516776, - 0.0004469591477429794, - 0.00044695903115415546, - 0.00044695892045530704, - 0.00044695881534887724, - 0.0004469587155523414, - 0.00044695862079744764, - 0.0004469585308294963, - 0.0004469584454066552, - 0.00044695836429930867, - 0.000446958287289441, - 0.0004469582141700513, - 0.0004469581447445958, - 0.00044695807882645926, - 0.0004469580162384549, - 0.00044695795681234734, - 0.0004469579003883997, - 0.0004469578468149456, - 0.00044695779594798, - 0.0004469577476507733, - 0.0004469577017935036, - 0.0004469576582529068, - 0.00044695761691194687, - 0.00044695757765949944, - 0.0004469575403900548, - 0.0004469575050034332, - 0.0004469574714045156, - 0.00044695743950298885, - 0.00044695740921310215, - 0.0004469573804534368, - 0.00044695735314668664, - 0.0004469573272194523, - 0.0004469573026020412, - 0.0004469572792282824, - 0.00044695725703534765, - 0.00044695723596358233, - 0.00044695721595634563, - 0.000446957196959859, - 0.0004469571789230602, - 0.00044695716179746583, - 0.0004469571455370432, - 0.00044695713009808416, - 0.00044695711543908906, - 0.00044695710152065505, - 0.00044695708830536936, - 0.00044695707575770946, - 0.0004469570638439474, - 0.00044695705253205916, - 0.0004469570417916388, - 0.00044695703159381583, - 0.0004469570219111785, - 0.00044695701271770086, - 0.0004469570034194617, - 0.0004469569303835037, - 0.00044695688634356114, - 0.0004469568625115589, - 0.0004469568466791128, - 0.0004469568341899828, - 0.0004469568232835914, - 0.00044695681328436036, - 0.0004469568039235748, - 0.0004469567950855754, - 0.00044695678671274034, - 0.00044695677876989003, - 0.00044695677123093066, - 0.00044695676407382215, - 0.00044695675727866125, - 0.0004469567508269329, - 0.0004469567447012013, - 0.00044695673888496415, - 0.0004469567333625744, - 0.00044695672811918184, - 0.0004469567231406897, - 0.00044695671841371446, - 0.00044695671392554914, - 0.0004457687704426209, - 0.00044587281293480166, - 0.00044587003515163026, - 0.00044582934422379727, - 0.00044577646879519005, - 0.0004457209358743197, - 0.00044566621444186346, - 0.0004456135113773984, - 0.00044556319169182355, - 0.00044551530971223416, - 0.00044546980766537684, - 0.0004454265897815071, - 0.0004453855498185742, - 0.000445346581172592, - 0.0004453095804813125, - 0.00044527444880213067, - 0.00044524109189086414, - 0.00044520942878858885, - 0.0004451793993249507, - 0.00044515090563932786, - 0.0004451238601065748, - 0.0004450981856809696, - 0.00044507381155936484, - 0.0004450506714015133, - 0.0004450287025547534, - 0.00044500784566123215, - 0.00044498804441380966, - 0.00044496924537264015, - 0.00044495139780916193, - 0.00044493445356478953, - 0.00044491836691930634, - 0.00044490309446687743, - 0.0004448885949986945, - 0.0004448748293916994, - 0.00044486176050298536, - 0.0004448493566796345, - 0.00044483759576381064, - 0.0004448264385504403, - 0.0004448158499394658, - 0.00044480579938788124, - 0.00044479625896494407, - 0.0004447872025566691, - 0.00044477860552408254, - 0.00044477044453449687, - 0.00044476269745992165, - 0.0004447553433026701, - 0.0004447483621330281, - 0.0004447417350332085, - 0.00044473544404531867, - 0.0004447294721224119, - 0.00044472380308218485, - 0.0004447184215630871, - 0.0004447133129826812, - 0.000444708463498121, - 0.00044470385996864064, - 0.00044469949072732385, - 0.00044469534775675823, - 0.0004446914177719791, - 0.00044468768841819217, - 0.000444684148913718, - 0.0004446807893904297, - 0.0004446776006196397, - 0.00044467457389364766, - 0.0004446717009668463, - 0.0004446689740200048, - 0.00044466638563399514, - 0.00044466392876771707, - 0.0004446615967382374, - 0.0004446593832023411, - 0.0004446572821391765, - 0.0004446552878338413, - 0.000444653394861823, - 0.00044465159807423836, - 0.000444649892583828, - 0.00044464827375166014, - 0.00044464673717451374, - 0.00044464527867290146, - 0.00044464389427970144, - 0.0004446425802293661, - 0.00044464133294768094, - 0.0004446401490420416, - 0.00044463902529222717, - 0.00044463795864163895, - 0.00044463694618899005, - 0.00044463598518041064, - 0.00044463507300195867, - 0.00044463420717251033, - 0.0004446333853370112, - 0.00044463260526006964, - 0.0004446318648198781, - 0.00044463116200244024, - 0.00044463049489609346, - 0.0004446298616863101, - 0.00044462926065076035, - 0.0004446286901546283, - 0.0004446281486461657, - 0.00044462763465247024, - 0.0004446271467754803, - 0.0004446266836881705, - 0.0004446262441309446, - 0.00044581333866021487, - 0.0004457072578538408, - 0.0004457080877982366, - 0.00044574721535517735, - 0.00044579892296690567, - 0.00044585438721416436, - 0.0004459086945097461, - 0.00044596081088905097, - 0.0004460104955768327, - 0.00044605773995553643, - 0.00044610261814970187, - 0.00044614523148870354, - 0.00044618568781316757, - 0.00044622409387783097, - 0.0004462605526724016, - 0.00044629603393721697, - 0.00044633019454331504, - 0.00044636200867183935, - 0.0004463919665536919, - 0.0004464203157588122, - 0.00044644719545087146, - 0.0004464727016710533, - 0.000446496912062942, - 0.00044651989526176065, - 0.000446541714523553, - 0.0004465624291879504, - 0.00044658209532303896, - 0.0004466007660585125, - 0.00044661849179726017, - 0.00044663532037696435, - 0.0004466512972087828, - 0.0004466664654034826, - 0.0004466808658891137, - 0.0004466945375219528, - 0.00044670751719153533, - 0.0004467198399202652, - 0.0004467315389579404, - 0.0004467426458714791, - 0.00044675319063009866, - 0.0004467632016861823, - 0.0004467727060520504, - 0.00044678172937284716, - 0.0004467902959957372, - 0.0004467984290356002, - 0.00044680615043740185, - 0.0004468134810354051, - 0.0004468211945365843, - 0.00044682914993328377, - 0.00044683602696163875, - 0.00044684228304575185, - 0.0004468481205603157, - 0.00044685362479909716, - 0.00044685883660499807, - 0.0004468637797349925, - 0.0004468684711243032, - 0.00044687292474895733, - 0.0004468771530917169, - 0.00044688116771013516, - 0.0004468849794676381, - 0.000446888598637576, - 0.00044689203495884523, - 0.0004468952976725502, - 0.0004468983955507659, - 0.00044690133692158767, - 0.0004469041296920657, - 0.00044690678136966776, - 0.00044690929908253554, - 0.00044691168959867615, - 0.0004469139593441664, - 0.00044691611442043065, - 0.0004469181606206432, - 0.00044692010344530333, - 0.0004469219481170207, - 0.000446923699594555, - 0.0004469253625861451, - 0.000446926941562167, - 0.0004469284407671493, - 0.0004469298642311837, - 0.00044693121578075966, - 0.00044693249904904843, - 0.0004469337174856717, - 0.00044693487436597336, - 0.00044693597279982385, - 0.00044693701573998164, - 0.0004469380059900294, - 0.00044693894621190995, - 0.00044693983893308406, - 0.0004469406865533224, - 0.00044694149135115753, - 0.0004469422554900093, - 0.0004469429810239996, - 0.0004469436699034746, - 0.0004469443239802475, - 0.00044694494501257677, - 0.0004469455346698922, - 0.00044694609453728294, - 0.00044694662611975764, - 0.0004469463725070592, - 0.000446946313318566, - 0.0004469465282246257, - 0.00044694683541847733, - 0.00044694716579253026, - 0.0004469474942370002, - 0.00044694781127016476, - 0.00044694811420511034, - 0.0004469484025488163, - 0.00044694867658791066, - 0.0004469489368767448, - 0.0004469491840472202, - 0.0004469494187387911, - 0.00044694964157336326, - 0.00044694985314693535, - 0.00044695005402744934, - 0.0004469502447549134, - 0.00044695042584233204, - 0.00044695059777688777, - 0.0004469507610211801, - 0.0004469509160144411, - 0.0004469510631737085, - 0.00044695120289494315, - 0.00044695133555409364, - 0.00044695146150810616, - 0.00044695158109588594, - 0.0004469516946392084, - 0.0004469518024435853, - 0.0004469519047990865, - 0.0004469520019811206, - 0.0004469520942511758, - 0.00044695218185752364, - 0.0004469522650358869, - 0.00044695234401007463, - 0.0004469524189925824, - 0.0004469524901851667, - 0.00044695255777938564, - 0.00044695262195711496, - 0.00044695268289103856, - 0.00044695274074511154, - 0.00044695279567500237, - 0.00044695284782851066, - 0.0004469528973459671, - 0.0004469529443606077, - 0.00044695298899893567, - 0.00044695303138105887, - 0.000446953071621016, - 0.00044695310982708025, - 0.0004469531461020536, - 0.0004469531805435405, - 0.0004469532132442134, - 0.00044695324429206, - 0.000446953273770621, - 0.00044695330175921455, - 0.00044695332833314983, - 0.0004469533535639293, - 0.0004469533775194416, - 0.00044695340026414403, - 0.00044695342185923563, - 0.00044695344236282285, - 0.0004469534618300744, - 0.00044695348031337137, - 0.0004469534978624468, - 0.00044695351452451955, - 0.00044695353034442304, - 0.00044695354536472353, - 0.00044695355962583633, - 0.000446953573166134, - 0.0004469535860220495, - 0.00044695359822817434, - 0.0004469536098173513, - 0.00044695362082076376, - 0.00044695363126801853, - 0.0004469536411872263, - 0.00044695365060507664, - 0.00044695365954690997, - 0.0004469536680367865, - 0.0004469536760975498, - 0.00044695368375088896, - 0.000446953691017397, - 0.00044695369791662595, - 0.00044695370446713945, - 0.00044695371068656335, - 0.0004469537165916316, - 0.0004469537221982339, - 0.0004469537275214553, - 0.00044695373257561924, - 0.0004469537373743251, - 0.00044695374193048427, - 0.00044695374625635683, - 0.000446953750363582, - 0.00044695375426321134, - 0.00044695375796573704, - 0.0004469537614811222, - 0.000446953764818825, - 0.00044695376798782697, - 0.0004469537709966544, - 0.00044695377385340333, - 0.00044695377656576014, - 0.0004469537791410237, - 0.00044695378158612285, - 0.0004469537839076367, - 0.00044599217666077453, - 0.0004340170965382463, - 0.00043394514304007434, - 0.0004338958338236937, - 0.0004338562792787169, - 0.0004351661692274128, - 0.0004351195812713065, - 0.00043507682343163636, - 0.00043503434222250993, - 0.0004349933340022232, - 0.00043495333870992666, - 0.00043491092871137136, - 0.00043486650899881034, - 0.0004348231292214829, - 0.00043477884222016257, - 0.00043473331871978345, - 0.0004346879777741608, - 0.000434639932189062, - 0.00043459091884557146, - 0.00043457913612247005, - 0.00043457996583752496, - 0.0004345809141830326, - 0.00043458201629406384, - 0.00043458378237967634, - 0.0004345856422693777, - 0.0004345880823573683, - 0.0004345905521685916, - 0.0004345933702032678, - 0.0004345965829160821, - 0.0004346006718704826, - 0.0004346053535721128, - 0.0004346110885203658, - 0.00043461689523222486, - 0.0004346244581529603, - 0.0004346318344547892, - 0.00043463961646110537, - 0.000434648099349575, - 0.00043465729460731177, - 0.0004346669997469353, - 0.00043467766954064413, - 0.0004346892162137013, - 0.0004347014784570012, - 0.0004347147739032957, - 0.00043472884484262907, - 0.00043474335442318483, - 0.0004347597846822838, - 0.0004347769158120412, - 0.000434795222459476, - 0.00043481422020198165, - 0.00043483577624284415, - 0.00043485889621575465, - 0.0004348828857578833, - 0.0004349095906821225, - 0.00043490827975443714, - 0.0004349070496766975, - 0.00043490592502301736, - 0.0004349048695113239, - 0.0004349038722347229, - 0.0004349029275523627, - 0.0004349020317837857, - 0.00043490118205833934, - 0.00043490037588351203, - 0.0004348996109803725, - 0.0004348988898223999, - 0.0004348982076322432, - 0.0004348975469673439, - 0.00043489691344305095, - 0.0004414701423143299, - 0.0004414166107197864, - 0.0004413841198198369, - 0.0004413581032826579, - 0.000441334802947255, - 0.0004413131672646241, - 0.00044129059386818564, - 0.00044126716538807684, - 0.00044124362867966883, - 0.00044121990209923485, - 0.00044119531638346876, - 0.00044116948104249256, - 0.00044114368292934726, - 0.00044111568325541785, - 0.0004410875338409751, - 0.0004410578601228084, - 0.00044102706124921526, - 0.0004409949006254175, - 0.0004409624266548361, - 0.00044092749674061514, - 0.0004408900927777461, - 0.0004408507642466692, - 0.0004408092266864108, - 0.0004407636246258615, - 0.0004407160861262402, - 0.0004406670093247241, - 0.00044061141193354407, - 0.00044055474894905047, - 0.00044049461690323465, - 0.0004404284701275748, - 0.00044035511317658184, - 0.00044027579938798214, - 0.0004401902109153055, - 0.00044009602232103565, - 0.0004399868755758165, - 0.0004398728475426719, - 0.00043973845065020515, - 0.0004395848513641353, - 0.0004394213066939466, - 0.00043922364989312833, - 0.000438996553883695, - 0.0004387724111142787, - 0.00043877489197249615, - 0.00043877627580147035, - 0.0004387772234374168, - 0.00043877798675371216, - 0.0004387786604757759, - 0.00043877928087683306, - 0.0004387796826081016, - 0.000438780232859704, - 0.000438780502180958, - 0.0004387809964926281, - 0.0004387806994983846, - 0.0004387811482510536, - 0.000438781571516626, - 0.0004387819721315786, - 0.00043878235183229136, - 0.00043878271190583146, - 0.0004387830534393391, - 0.00043878337741440717, - 0.00043878368474374737, - 0.0004387839762863341, - 0.000438783411597048, - 0.0004387836798490953, - 0.0004387839316942766, - 0.0004387841693643386, - 0.00043878439436676803, - 0.0004387846076418865, - 0.00043878480989962973, - 0.00043878500174582746, - 0.0004387851837300656, - 0.00043878535636436957, - 0.0004387855201309993, - 0.000438785675486158, - 0.00043878582286214, - 0.00043878596266885936, - 0.0004387860952951108, - 0.00043878622110969613, - 0.0004387863404624667, - 0.0004387864536853019, - 0.00043878656109303465, - 0.00043878666298432806, - 0.00044462017083607414, - 0.0004445216017069432, - 0.0004444403918252967, - 0.0004443629421318166, - 0.00044428498060046376, - 0.0004442095075500748, - 0.0004441236937939632, - 0.00044403857879944024, - 0.00044394614097390683, - 0.0004438522333786644, - 0.0004437458256437335, - 0.00044363449977764786, - 0.0004435120981805156, - 0.00044338320730793215, - 0.00044324882350729657, - 0.00044310355472744836, - 0.0004429322951534752, - 0.0004427556917191127, - 0.0004426838876201287, - 0.0004426836407312589, - 0.0004426828926544625, - 0.00044268199256691885, - 0.0004426810682677204, - 0.000442680165472441, - 0.0004426792995543356, - 0.00044267847472040985, - 0.00044267769111549387, - 0.0004426769474516335, - 0.0004426762419789965, - 0.00044267557284219866, - 0.0004426749382090002, - 0.00044267433631479806, - 0.00044267376547607053, - 0.0004426732240924715, - 0.0004426727106448656, - 0.0004426722236919988, - 0.00044267176186680137, - 0.0004426713238726767, - 0.0004426709084799093, - 0.00044267051452223, - 0.00044267014089354796, - 0.0004426697865448466, - 0.0004426694504812418, - 0.0004426691317591861, - 0.0004426688294838212, - 0.00044266854280646515, - 0.0004426682709222296, - 0.00044266801306776037, - 0.00044266776851909363, - 0.00044266753658962375, - 0.0004426673166281745, - 0.00044266710801717316, - 0.0004426669101709133, - 0.00044266672253391316, - 0.0004426665445793548, - 0.0004426663758076049, - 0.0004426662157448123, - 0.00044266606394157765, - 0.00044266591997169113, - 0.0004426657834309365, - 0.00044266565393595613, - 0.0004426655311231736, - 0.0004426654146477744, - 0.000442665304182737, - 0.00044266519941791503, - 0.0004426651000591657, - 0.0004426650058275249, - 0.0004426649164584241, - 0.0004426648317009462, - 0.00044266475131712245, - 0.0004426646750812637, - 0.00044266460277932635, - 0.0004426645342083125, - 0.0004426644691756992, - 0.00044266440749889785, - 0.0004426643490047418, - 0.00044266429352900037, - 0.00044266424091591726, - 0.0004426641910177738, - 0.00044266414369447364, - 0.0004426640988131497, - 0.00044266405624779093, - 0.00044266401587888935, - 0.00044266397759310324, - 0.00044266394128293976, - 0.0004426639068464525, - 0.0004426638741869564, - 0.00044266384321275536, - 0.00044266381383688464, - 0.000442663785976867, - 0.00044266375955448136, - 0.00044266373449554364, - 0.0004426637107296966, - 0.00044266368819021465, - 0.00044266366681381465, - 0.0004426636465404792, - 0.0004426636273132881, - 0.0004426636090782584, - 0.0004426635917841924, - 0.00044266357538253436, - 0.00044266355982723447, - 0.00044266354507461916, - 0.00044266353108326784, - 0.00044266351781389803, - 0.0004426635052292541, - 0.0004426634932940029, - 0.0004426634819746343, - 0.00044266347123936756, - 0.0004426634610580619, - 0.0004426634514021319, - 0.000442663442244467, - 0.0004426483696796498, - 0.0004426348331125784, - 0.0004426280908440457, - 0.0004426240133658873, - 0.0004426210049109832, - 0.00044261846980884063, - 0.0004426161834555453, - 0.0004426140588761081, - 0.0004426120602603701, - 0.000442610170932312, - 0.0004426083814784075, - 0.0004426066853420383, - 0.00044260507718330683, - 0.00044260355226341904, - 0.00044260210620891883, - 0.0004426007349170003, - 0.00044259943451344357, - 0.0004425982013304035, - 0.0004425970318918916, - 0.0004425959229024338, - 0.00044259487123721024, - 0.00044259387393304005, - 0.00044259292817995266, - 0.0004425920313132417, - 0.0004425911808059466, - 0.00044259037426172873, - 0.00044258960940811757, - 0.0004425888840901086, - 0.00044258819626408967, - 0.0004425875439920839, - 0.00044258692543628985, - 0.00044258633885390286, - 0.0004425857825922034, - 0.000442585255083903, - 0.00044258475484272645, - 0.00044258428045922463, - 0.0004425838305968037, - 0.0004425834039879587, - 0.00044258299943070254, - 0.0004425826157851795, - 0.0004425822519704535, - 0.0004425819069614621, - 0.0004425815797861291, - 0.0004425812695226255, - 0.0004425809752967716, - 0.0004425806962795746, - 0.0004425804316848929, - 0.0004425801807672205, - 0.000442579942819587, - 0.0004425787734182463, - 0.00044253262543744883, - 0.00044250606085977854, - 0.00044249217610248064, - 0.0004424832331658797, - 0.0004424763165131542, - 0.0004424703364075792, - 0.00044246487981337244, - 0.0004424597846924084, - 0.00044245498239200135, - 0.0004424504392765988, - 0.0004424461350982046, - 0.0004424420549677041, - 0.0004424381863620148, - 0.0004424345179964456, - 0.0004424310393885265, - 0.00044242774067877424, - 0.00044242461254748514, - 0.0004424216461679489, - 0.00044241883317396963, - 0.0004424161656334663, - 0.00044241363602506905, - 0.00044241123721652813, - 0.00044240896244446173, - 0.000442406805295234, - 0.0004424047596868532, - 0.0004424028198518161, - 0.0004424009803208443, - 0.0004423992359074627, - 0.00044239758169337617, - 0.00044239601301460254, - 0.00044239452544832274, - 0.0004423931148004106, - 0.0004423917770936077, - 0.00044239050855631015, - 0.0004423893056119339, - 0.00044238816486883163, - 0.0004423870831107297, - 0.00044238604938381747, - 0.00044238505468851056, - 0.000442384121466091, - 0.0004423832407307731, - 0.00044238240710687605, - 0.00044238161716910086, - 0.00044238086829230847, - 0.00044238015821776563, - 0.0004423794848889185, - 0.0004423788463871608, - 0.0004423782409047932, - 0.00044237766673191895, - 0.00044237712224865937, - 0.00044237660591948865, - 0.0004423761162884997, - 0.0004423756519751475, - 0.00044237521167030184, - 0.0004423747941325358, - 0.0004423743981846175, - 0.00044237402271018816, - 0.0004423736666506141, - 0.00044237332900200096, - 0.00044237300881236336, - 0.0004423727051789409, - 0.00044237241724565243, - 0.00044237214420068293, - 0.00044237188527419406, - 0.0004423716397361542, - 0.00044237140689427977, - 0.00044237118609208347, - 0.00044237097670702324, - 0.00044237077814874686, - 0.0004423705898574285, - 0.00044237041130218907, - 0.0004423702419795998, - 0.00044237008141226336, - 0.0004423699291474669, - 0.00044236978475590725, - 0.00044236964783047814, - 0.0004423695179851247, - 0.0004423693948537537, - 0.0004423692780892016, - 0.0004423691673622561, - 0.00044236906236072733, - 0.00044236896278856817, - 0.0004423688683650393, - 0.00044236877882391785, - 0.0004423686939127466, - 0.00044236861339212215, - 0.00044236853703502014, - 0.0004423684646261556, - 0.0004423683959613741, - 0.0004423683308470791, - 0.0004423682690996834, - 0.00044236821054509276, - 0.00044236815501821534, - 0.0004423681023624957, - 0.00044236805242947315, - 0.0004354905785913816, - 0.00043555138753379087, - 0.0004355789635027301, - 0.00043559370193141785, - 0.00043560343771485173, - 0.00043561110089909504, - 0.0004356177874332838, - 0.00043562391360999663, - 0.00043562964372153483, - 0.00043563504830235113, - 0.0004356401626975134, - 0.0004356450087558551, - 0.00043564960287995183, - 0.0004356539590275988, - 0.0004356580898444129, - 0.0004356620071039051, - 0.0004356657218902663, - 0.000435669244684939, - 0.000435672585416614, - 0.0004356757534967706, - 0.0004356787578489853, - 0.00043568160693510037, - 0.00043568430877944086, - 0.00043568687099155483, - 0.00043568930078769776, - 0.00043569160501117683, - 0.0004356937901516306, - 0.00043569586236330977, - 0.00043569782748241047, - 0.00043569969104351267, - 0.0004357014582951669, - 0.0004357031342146768, - 0.0004357047235221177, - 0.0004357062306936296, - 0.0004357076599740244, - 0.00043570901538874036, - 0.00043571030075517984, - 0.000435711519693461, - 0.00043571267563661257, - 0.00043571377184024353, - 0.0004357148113917119, - 0.00043571579721881986, - 0.0004357167320980602, - 0.0004357176186624353, - 0.00043571845940887317, - 0.0004357192567052599, - 0.0004357200127971081, - 0.00043572072981388197, - 0.00043572140977499456, - 0.000435722054595494, - 0.0004357226660914588, - 0.000435723245985112, - 0.0004357237959096712, - 0.00043572431741394925, - 0.0004357248119667154, - 0.0004357252809608326, - 0.0004357257257171802, - 0.0004357261474883743, - 0.0004357265474622949, - 0.0004357269267654324, - 0.0004357272864660594, - 0.0004357276275772402, - 0.0004357279510596837, - 0.0004357282578244485, - 0.00043572854873550964, - 0.00043572882461219214, - 0.0004357290862314772, - 0.0004357293343301919, - 0.00043572956960708376, - 0.000435729792724789, - 0.00043573000431169814, - 0.00043573020496372633, - 0.00043573039524599214, - 0.00043573057569440806, - 0.0004357307468171909, - 0.0004357309090962921, - 0.0004357310629887564, - 0.00043573120892800767, - 0.0004357313473250707, - 0.0004357314785697282, - 0.0004357316030316188, - 0.00043573172106127814, - 0.00043573183299112613, - 0.00043573193913640267, - 0.00043573203979605673, - 0.00043573213525358674, - 0.00043573222577784036, - 0.00043573231162377115, - 0.00043573239303315586, - 0.0004357324702352773, - 0.0004357325434475675, - 0.0004357326128762227, - 0.0004357326787167821, - 0.00043573274115468014, - 0.0004357328003657668, - 0.00043573285651680516, - 0.00043573290976593976, - 0.0004357329602631415, - 0.0004357330081506313, - 0.00043573305356327984, - 0.000435733096628988, - 0.00043573313746904623, - 0.0004357331761984767, - 0.00043573321292635775, - 0.00043573324775612985, - 0.00043573328078588786, - 0.0004357333121086571, - 0.00043573334181265554, - 0.00043573336998154144, - 0.0004357333966946502, - 0.0004357334220272167, - 0.000435733446050588, - 0.0004357334688324234, - 0.0004357334904368863, - 0.0004357335109248233, - 0.00043573353035393703, - 0.00043573354877894785, - 0.00043573356625174807, - 0.0004357335828215483, - 0.00043573359853501566, - 0.000435733613436406, - 0.0004357336275676877, - 0.0004357336409686601, - 0.00043573365367706565, - 0.0004357336657286969, - 0.0004357336771574957, - 0.0004357336879956505, - 0.00043573369827368616, - 0.0004357337080205492, - 0.00043573371726369136, - 0.0004357337260291449, - 0.00043573373434159686, - 0.00043573374222445865, - 0.00043573374969993147, - 0.0004357337567890695, - 0.0004357337635118384, - 0.0004357337698871726, - 0.00043573377593302735, - 0.00043573378166643053, - 0.0004357337871035293, - 0.000435733792259637, - 0.0004357337971492755, - 0.0004357338017862159, - 0.0004357338061835176, - 0.00043573381035356544, - 0.0004357338143081037, - 0.00043573381805827016, - 0.0004357338216146269, - 0.0004357338249871898, - 0.00043573382818545766, - 0.00043573383121843794, - 0.00043573383409467283, - 0.00043573383682226296, - 0.0004357338394088904, - 0.0004357338418618401, - 0.0004357338441880204, - 0.000435733846393983, - 0.00043573384848594085, - 0.00043573385046978536, - 0.0004357338523511044, - 0.00043573385413519616, - 0.0004357338558270855, - 0.0004357338574315375, - 0.0004357338589530707, - 0.0004357338603959707, - 0.00043573386176430114, - 0.00043573386306191593, - 0.0004357338642924695, - 0.00043573386545942764, - 0.00043573386656607687, - 0.00043573386761553416, - 0.00043573386861075526, - 0.00043573386955454295, - 0.00043573387044955553, - 0.00043573387129831317, - 0.00043573387210320714, - 0.00043573387286650374, - 0.000435733873590353, - 0.0004357338742767933, - 0.0004357338749277583, - 0.0004357338755450811, - 0.0004357338761305007, - 0.0004357338766856655, - 0.0004357338772121392, - 0.0004357352449653456, - 0.0004357559063257188, - 0.0004357669123097996, - 0.0004357726259232516, - 0.00043577628504959257, - 0.000435779104296992, - 0.0004357815371471921, - 0.00043578375524753056, - 0.000435785825798197, - 0.0004357877771749535, - 0.00043578962321140014, - 0.0004357913721898333, - 0.0004357930301756718, - 0.0004357946022592385, - 0.0004357960930230818, - 0.00043579750672243065, - 0.0004357988473591472, - 0.0004358001187159185, - 0.0004358013243753858, - 0.0004358024677333669, - 0.000435803552009579, - 0.00043580458025713285, - 0.0004358055553712872, - 0.0004358064800976609, - 0.00043580735703998457, - 0.0004358077537861075, - 0.0004358085456101103, - 0.00043580929499616844, - 0.0004358097935307631, - 0.0004358099638510879, - 0.0004358106073524109, - 0.0004358112151165188, - 0.00043581179052391237, - 0.000435811826036802, - 0.00043581232041188577, - 0.0004358128131246803, - 0.0004358132792988759, - 0.00043581372098504045, - 0.00043581413970000165, - 0.00043581427711204064, - 0.00043581465571978486, - 0.0004358150137159213, - 0.0004358153528220681, - 0.00043581513427306363, - 0.0004358154421066466, - 0.000435815732616461, - 0.0004358160075896817, - 0.0004358162681598455, - 0.0004358165151935384, - 0.00043581674943548763, - 0.00043581697156342666, - 0.0004358171822095232, - 0.0004358173819693782, - 0.0004358172818062732, - 0.0004358174637728576, - 0.0004358176353878552, - 0.0004358177976050213, - 0.00043581795124375083, - 0.0004358180968708573, - 0.00043581823494602496, - 0.0004358181805334605, - 0.00043581813851771936, - 0.00043581813260380926, - 0.00043581813209181067, - 0.0004358181255335295, - 0.0004358181076496933, - 0.0004358180881723335, - 0.00043581810089419126, - 0.00043581812889561687, - 0.0004358181613840655, - 0.0004358181943890065, - 0.000435818226500452, - 0.00043581825725286575, - 0.00043581828652718895, - 0.00043581831432978386, - 0.0004358183407108036, - 0.00043581836573413057, - 0.0004358183894663833, - 0.00043581841197297053, - 0.0004358184333167471, - 0.0004358184535576256, - 0.00043581835951698913, - 0.0004358183785356299, - 0.00043581839617832336, - 0.00043581841276315474, - 0.0004358184284368562, - 0.0004358184432805745, - 0.00043581845734980173, - 0.0004358184706892229, - 0.00043581848333827715, - 0.00043581849533327904, - 0.0004358185067082647, - 0.0004358185174953626, - 0.000435818527724986, - 0.0004358185374259558, - 0.0004358185466255963, - 0.0004358185553498166, - 0.0004358185636231865, - 0.00043581857146900496, - 0.00043581857890936715, - 0.00043581858596522624, - 0.00043581859265645276, - 0.0004358185990018898, - 0.0004358186050194074, - 0.0004358186107259521, - 0.0004358186161375937, - 0.00043581862126957233, - 0.0004358186261363407, - 0.0004358186307516042, - 0.00043581863512836, - 0.00043581863927893397, - 0.0004358186432150145, - 0.00043581864694768616, - 0.0004358186504874609, - 0.0004358186538443072, - 0.00043581865702767834, - 0.00043581866004653927, - 0.00043581866290939137, - 0.00043581866562429714, - 0.000435818668198902, - 0.0004358186706404563, - 0.000435818672955836, - 0.00043581867515156165, - 0.0004358186772338164, - 0.0004358186792084644, - 0.0004358186810810665, - 0.0004358186828568964, - 0.0004358186845409549, - 0.0004358186861379846, - 0.0004358186876524831, - 0.00043581868908871527, - 0.0004358186904507257, - 0.0004358186917423504, - 0.00043581869296722633, - 0.00043581869412880324, - 0.00043581869523035216, - 0.000435818696274975, - 0.0004358186972656142, - 0.0004358186982050589, - 0.00043581869909595504, - 0.0004358186999408114, - 0.00043581870074200737, - 0.00043581870150179885, - 0.00043581870222232606, - 0.00043581870290561786, - 0.00043581870355359866, - 0.00043581870416809285, - 0.00043581870475083135, - 0.0004358187053034551, - 0.00043581870582752016, - 0.00043581870632450277, - 0.00043581870679580237, - 0.0004358187072427461, - 0.00043581870766659257, - 0.0004358187080685355, - 0.0004358187084497068, - 0.00043581870881118, - 0.00043581870915397283, - 0.0004358187094790511, - 0.00043581870978732975, - 0.0004358187100796773, - 0.0004358187103569168, - 0.0004358187106198293, - 0.0004358187108691548, - 0.000435818711105596, - 0.000435818711329818, - 0.000435818711542453, - 0.00043581871174409913, - 0.0004358187119353247, - 0.000435818712116668, - 0.00043581871228864, - 0.00043581871245172493, - 0.0004358187126063817, - 0.00043581871275304623, - 0.0004358187128921313, - 0.0004358187130240291, - 0.0004358187131491104, - 0.00043581871326772785, - 0.0004358187133802154, - 0.0004358187134868897, - 0.00043581871358805137, - 0.0004358187136839851, - 0.00043581871377496126, - 0.000435818713861236, - 0.0004358187139430523, - 0.00043581871402064034, - 0.0004358187140942187, - 0.00043581871416399485, - 0.000435818714230165, - 0.00043581871429291565, - 0.00043581871435242366, - 0.00043581871440885616, - 0.00043581871446237244, - 0.00043581871451312313, - 0.00043581871456125097, - 0.0004358187146068918, - 0.00043581871465017414, - 0.0004358187146912193, - 0.0004358187147301437, - 0.00043581871476705656, - 0.00043581871480206165, - 0.00043581871483525786, - 0.0004358187148667386, - 0.00043581871489659237, - 0.0004358187149249034, - 0.0004358187149517514, - 0.00043581871497721186, - 0.0004358187150013567, - 0.0004358187150242537, - 0.0004358187150459672, - 0.000435818715066559, - 0.00043581871508608657, - 0.0004358187151046049, - 0.0004358187151221663, - 0.00043581871513882016, - 0.00043581871515461335, - 0.00043581871516959036, - 0.0004358187151837932, - 0.00043581871519726256, - 0.0004358187152100355, - 0.00043581871522214847, - 0.0004358187152336354, - 0.0004358187152445286, - 0.0004358187152548591, - 0.00043581871526465554, - 0.00043581871527394585, - 0.000435818715282756, - 0.0004358187152911108, - 0.00043581871529903396, - 0.00043581871530654764, - 0.00043581871531367297, - 0.0004358187153204302, - 0.000435818715326838, - 0.0004358187153329149, - 0.00043581871533867765, - 0.00043581871534414257, - 0.00043581871534932517, - 0.00043581871535423975, - 0.0004358187153589005, - 0.00043581871536332037, - 0.0004358187153675118, - 0.0004358187153714867, - 0.00043581871537525614, - 0.0004358187153788308, - 0.0004358187153822207, - 0.00043581871538543533, - 0.0004358187153884841, - 0.00043581871539137513, - 0.0004358187153941168, - 0.0004358187153967166, - 0.0004358187153991823, - 0.00043581871540152045, - 0.0004358187154037377, - 0.00043581871540584056, - 0.00043581871540783473, - 0.0004358187154097258, - 0.0004358187154115191, - 0.0004358187154132197, - 0.0004358187154148325, - 0.0004358187154163619, - 0.00043581871541781227, - 0.0004358187154191877, - 0.000435818715420492, - 0.000435818715421729, - 0.000435818715422902, - 0.0004358187154240143, - 0.00043581871542506926, - 0.00043581871542606966, - 0.0004358187154270184, - 0.0004358187154279181, - 0.0004358187154287712, - 0.0004358187154295804, - 0.0004358187154303476, - 0.0004358187154310752, - 0.0004358187154317654, - 0.0004358187154324196, - 0.00043581871543304016, - 0.0004358187154336287, - 0.0004358187154341864, - 0.000435818715434716, - 0.0004358187154352178, - 0.0004358187154356937, - 0.0004358187154361452, - 0.00043581871543657314, - 0.0004358187154369791, - 0.000435818715437364, - 0.00043581871543772906, - 0.0004358187154380753, - 0.00043581871543840354, - 0.0004358187154387148, - 0.00043581871543901004, - 0.00043581871543928977, - 0.0004358187154395555, - 0.0004358187154398073, - 0.000435818715440046, - 0.00043581871544027244, - 0.00043581871544048727, - 0.00043581871544069083, - 0.00043581871544088387, - 0.0004358187154410672, - 0.00043581871544124084, - 0.00043581871544140553, - 0.0004358187154415616, - 0.00043581871544170965, - 0.00043581871544185017, - 0.00043581871544198347, - 0.00043581871544210967, - 0.00043581871544222953, - 0.0004358180933290181, - 0.00043581750361166655, - 0.000435817214476616, - 0.0004358170433853293, - 0.0004358169193997645, - 0.0004358168160165439, - 0.000435816723244144, - 0.0004358166372233415, - 0.00043581655637714537, - 0.00043581647998251294, - 0.0004358164076402548, - 0.00043581633907806863, - 0.00043581627407713984, - 0.00043581621244458704, - 0.00043581615400292863, - 0.0004358160985858753, - 0.00043581604603648767, - 0.00043581599620622297, - 0.0004358159489543275, - 0.0004358159041473677, - 0.0004358158616588287, - 0.0004358158213687469, - 0.000435815783163368, - 0.00043581574693482415, - 0.00043581571258082913, - 0.000435815610120292, - 0.0004358082863055378, - 0.00043580330660207935, - 0.00043580003316604084, - 0.0004357973503443459, - 0.00043579481148001554, - 0.0004357922281518564, - 0.000435789577979607, - 0.0004357873392869815, - 0.0004357857102974839, - 0.00043578436319367835, - 0.0004357831593729709, - 0.0004357820452283189, - 0.0004357809989517755, - 0.0004357800106501241, - 0.00043577907495020963, - 0.00043577818824637996, - 0.0004357773476731215, - 0.00043577655071898633, - 0.00043577579507903886, - 0.0004357750785961449, - 0.0004357743992354731, - 0.00043577375507153007, - 0.00043577314428003196, - 0.0004357725651317462, - 0.0004357720159872272, - 0.00043577149529203785, - 0.00043577100157229915, - 0.0004357705334304987, - 0.00043577008954152885, - 0.00043576966864893236, - 0.00043576926956134516, - 0.000435768891149124, - 0.0004357685323411487, - 0.00043576819212179016, - 0.0004357678695280355, - 0.00043576756364676255, - 0.0004357672736121545, - 0.0004357669986032496, - 0.0004357649214640268, - 0.00043576210712627006, - 0.00043576063126822236, - 0.0004357597004226507, - 0.00043575899205169265, - 0.0004357583851104717, - 0.0004357578336601272, - 0.000435757319713045, - 0.0004357568357123398, - 0.000435756378021114, - 0.0004357559445016, - 0.0004357555336136678, - 0.00043575514407784304, - 0.0004357547747481248, - 0.00043575442456284484, - 0.0004357540925246124, - 0.0004357537776911569, - 0.0004357534791703081, - 0.0004357531961165959, - 0.0004357529277285324, - 0.00043575267324622166, - 0.000435752431949164, - 0.0004357522031541994, - 0.0004357519862135673, - 0.0004357517805130696, - 0.00043575158547033216, - 0.0004357514005331546, - 0.00043575122517794737, - 0.0004357510589082489, - 0.00043575090125332083, - 0.00043575075176681443, - 0.0004357506100255069, - 0.00043575047562810417, - 0.00043575034819410337, - 0.0004357502273627165, - 0.00043575011279184926, - 0.0004357500041571307, - 0.0004357499011509973, - 0.0004357498034818206, - 0.000435749710873082 - ], - [ - 5.443397405758446e-05, - 0.00012099585036214732, - 4.862249788776961e-05, - 5.014364518598133e-05, - 5.957977762765339e-05, - 6.427774060359395e-05, - 6.749239029679098e-05, - 7.03311771093398e-05, - 7.295953412020139e-05, - 7.545512698087246e-05, - 7.777891961488427e-05, - 7.9885418661771e-05, - 8.191658302694609e-05, - 8.384325800896645e-05, - 8.555635560693304e-05, - 8.711499514914302e-05, - 8.858978503824254e-05, - 8.985107377235836e-05, - 9.103610784218383e-05, - 9.208297669931484e-05, - 9.290108058955628e-05, - 9.353793916987968e-05, - 9.419166373312882e-05, - 9.477504110181547e-05, - 9.53639975730668e-05, - 9.581232939232183e-05, - 9.612132996359224e-05, - 9.639975800806115e-05, - 9.661699345329688e-05, - 9.680163129331116e-05, - 9.696577740551403e-05, - 9.712862773283314e-05, - 9.728108285859052e-05, - 9.742516805796371e-05, - 9.756534885485035e-05, - 9.769860799638086e-05, - 9.779527114474493e-05, - 9.789563397975373e-05, - 9.80217420511523e-05, - 9.816494873933729e-05, - 9.833117249077792e-05, - 9.846909315727578e-05, - 9.860810957869452e-05, - 9.86891120300607e-05, - 9.869771972327308e-05, - 9.87014768787287e-05, - 9.869705100617088e-05, - 9.869209363872143e-05, - 9.86952125348087e-05, - 9.870699223499748e-05, - 9.871977987402419e-05, - 9.87371996857463e-05, - 9.874811512046776e-05, - 9.879173258632832e-05, - 9.885593024471272e-05, - 9.889539596337158e-05, - 9.887814496966049e-05, - 9.88380879965364e-05, - 9.879900034079316e-05, - 9.87643912827046e-05, - 9.872921774188036e-05, - 9.869264185577729e-05, - 9.865402083579696e-05, - 9.861339417916044e-05, - 9.856797878507348e-05, - 9.851753895087989e-05, - 9.846567527094975e-05, - 9.840573266346935e-05, - 9.83343452763305e-05, - 9.825539694416672e-05, - 9.816483406435032e-05, - 9.805887499058571e-05, - 9.792349011536334e-05, - 9.775505309214428e-05, - 9.772512323895683e-05, - 9.773403592250874e-05, - 9.773938564290451e-05, - 9.774547070897028e-05, - 9.775385511911852e-05, - 9.776187648072951e-05, - 9.776928815446435e-05, - 9.777617536611187e-05, - 9.778245553440396e-05, - 9.778836590664229e-05, - 9.779387478796208e-05, - 9.779900384682369e-05, - 9.780384557764448e-05, - 9.780830600803512e-05, - 9.781225542315743e-05, - 9.781605092083656e-05, - 9.781811034402036e-05, - 9.782119702753248e-05, - 9.78240682764431e-05, - 9.782662478130182e-05, - 9.782903580568916e-05, - 9.783117676222196e-05, - 9.78331198766802e-05, - 9.783489782523912e-05, - 9.783646944610244e-05, - 9.783791183075628e-05, - 9.898688927423684e-05, - 0.00010074680707664294, - 0.00010078126258994489, - 0.00010093516240462868, - 0.00010109216539022989, - 0.00010124193594099158, - 0.00010137497390843, - 0.00010149589495984831, - 0.00010160889545204828, - 0.00010168622434849088, - 0.00010174665357406386, - 0.0001018087864451808, - 0.00010186552789283509, - 0.00010195097075316363, - 0.00010205125794647375, - 0.00010215176998671808, - 0.00010224253824621445, - 0.00010233033607156132, - 0.00010240079629250601, - 0.00010246530605939304, - 0.00010252333846700436, - 0.00010258107552828046, - 0.00010264122140979139, - 0.0001026990316534148, - 0.00010275382235540992, - 0.0001028062551592102, - 0.00010285913844852332, - 0.00010290859973664412, - 0.00010295696459853784, - 0.00010300352281106833, - 0.00010305140742551253, - 0.00010310354784600012, - 0.000103150291734379, - 0.00010319616895423878, - 0.00010324117858152382, - 0.0001032847517866423, - 0.0001033296526193572, - 0.00010337354859101692, - 0.0001034189175723899, - 0.00010346516415139784, - 0.00010351260356032312, - 0.00010356250093192171, - 0.00010361765698296934, - 0.00010367144644300175, - 0.0001037289499039884, - 0.00010379054129871322, - 0.00010386656093853606, - 0.00010395784293316673, - 0.00010405620542499872, - 0.00010409007675955611, - 0.0001040978974805693, - 0.00010410330716244167, - 0.00010410882708807328, - 0.00010411411096227244, - 0.00010411910328919317, - 0.00010412381707994828, - 0.00010412826795589947, - 0.00010413247060213205, - 0.00010413643886371691, - 0.00010414018581243936, - 0.00010414372379107498, - 0.00010414706433388526, - 0.00010415020483175432, - 0.00010415317938124928, - 0.00010415597009991321, - 0.00010415859560610408, - 0.00010416106974038004, - 0.00010416341110578243, - 0.00010416561763169004, - 0.00010416770551040019, - 0.00010416967144046212, - 0.00010417152817823137, - 0.00010417328899343738, - 0.00010417494663247768, - 0.00010417651342096614, - 0.00010417799297129417, - 0.00010417938141787936, - 0.00010418070190063868, - 0.00010418195093921745, - 0.00010418312410524836, - 0.0001041842363246218, - 0.00010418527580691964, - 0.00010418626341256304, - 0.00010418720108178612, - 0.00010418808687472684, - 0.000104188923326356, - 0.00010418971318084412, - 0.00010419044964226136, - 0.00010419114228771432, - 0.00010419180219810373, - 0.00010419242574339516, - 0.00010419301458470844, - 0.00010419357065167717, - 0.00010419409576980688, - 0.00010419459166170551, - 0.00010419505995400423, - 0.00010419550218279887, - 0.0001041959197986932, - 0.0001041963141016101, - 0.0001041966852765354, - 0.00010419702979014146, - 0.00010419735957984968, - 0.00010419767314480524, - 0.0001041979693925058, - 0.00010419824915244304, - 0.0001041985133413824, - 0.00010419876282645506, - 0.00010419899842606548, - 0.00010419922091303088, - 0.0001041994310171538, - 0.00010419962837496398, - 0.00010419980735740136, - 0.00010419998313942048, - 0.00010420015024944327, - 0.00010420030810715574, - 0.00010420045717773176, - 0.00010420059795126786, - 0.00010420073088982934, - 0.00010420085642949869, - 0.00010420097498207191, - 0.00010420108693642629, - 0.00010420119265979533, - 0.00010420129249897347, - 0.00010420138678145458, - 0.00010420147581650474, - 0.00010420155989617744, - 0.00010420163929627124, - 0.00010420171427723525, - 0.00010420178508502272, - 0.00010420185195189772, - 0.00010420191509719846, - 0.00010420197472805363, - 0.00010420203104006512, - 0.00010420208421794856, - 0.00010420213443613813, - 0.00010420218185935962, - 0.00010420222664317164, - 0.00010420226893447468, - 0.0001042023088719922, - 0.00010420234658672854, - 0.00010420238220239528, - 0.00010420241583581892, - 0.00010420244759732471, - 0.00010420247759109714, - 0.0001042025059155216, - 0.00010420253266350833, - 0.00010420255792279648, - 0.00010420258177624136, - 0.00010420260430208732, - 0.00010420262557422384, - 0.00010420264566242858, - 0.00010420266463259412, - 0.0001042026825469475, - 0.0001042026994642506, - 0.00010420271543999627, - 0.00010420273052658809, - 0.00010420274477351336, - 0.00010420275822750482, - 0.00010420277093269472, - 0.00010420278293075841, - 0.0001042027942610516, - 0.00010420280496074124, - 0.00010420281506492372, - 0.00010420281784059969, - 0.00010420281317530959, - 0.00010420282038260892, - 0.00010420282851395811, - 0.00010420283623552888, - 0.00010420284352471891, - 0.00010420285040785648, - 0.00010420285690788844, - 0.00010420286304615244, - 0.0001042028688427826, - 0.00010420287431679276, - 0.00010420287948613869, - 0.00010420288436777708, - 0.00010420288897772, - 0.00010420289333109028, - 0.00010420289744216761, - 0.00010420290132443646, - 0.00010420290499063183, - 0.00010420290845278, - 0.00010420291172223725, - 0.00010420291480972776, - 0.00010420291772537957, - 0.00010420292047875672, - 0.00010420292307889016, - 0.00010420292553430988, - 0.000104202927853069, - 0.00010420293004277431, - 0.00010420293211060881, - 0.00010420293406335439, - 0.00010420293590741708, - 0.00010420293764884571, - 0.00010420293929335279, - 0.00010420294084633243, - 0.00010420294231287902, - 0.00010420294369780225, - 0.0001042029450056458, - 0.00010420294624069912, - 0.00010420294740701371, - 0.00010420294850841569, - 0.00010420294954851714, - 0.0001042029505307304, - 0.00010420295145827713, - 0.00010420295233419992, - 0.0001042029531613716, - 0.0001042029539425063, - 0.0001042029546801656, - 0.00010420295537676952, - 0.00010420295603460264, - 0.00010420295665582322, - 0.00010420295724246872, - 0.000104202957796464, - 0.00010420295831962548, - 0.00010420295881366992, - 0.00010420295928021764, - 0.00010420295972079852, - 0.00010420296013685864, - 0.00010420296052976172, - 0.00010420296090079774, - 0.0001042029612511832, - 0.00010420296158206738, - 0.00010420296189453558, - 0.00010420296218961313, - 0.00010420296246826744, - 0.00010420296273141285, - 0.00010420296297991268, - 0.00010420296321458184, - 0.00010420296343619016, - 0.00010420296364546456, - 0.00010420296384309113, - 0.00010420296402971874, - 0.00010420296420595952, - 0.00010420296437239107, - 0.00010420296452956012, - 0.00010420296467798116, - 0.00010420296481814195, - 0.00010420296495050172, - 0.0001042029650754948, - 0.00010420296519353111, - 0.00010420296530499797, - 0.00010420296541026118, - 0.00010420296550966572, - 0.00010420296560353752, - 0.0001042029656921851, - 0.00010420296577589866, - 0.00010420296585495312, - 0.00010420296592960766, - 0.00010420296600010754, - 0.00010420296606668298, - 0.00010420296612955318, - 0.00010420296618892446, - 0.00010420296624499129, - 0.00010420296629793796, - 0.0001042029663479372, - 0.00010420296639515403, - 0.0001042029664397428, - 0.00010420296648185012, - 0.00010420296652161389, - 0.00010420296655916422, - 0.0001042029665946248, - 0.00010420296662811188, - 0.00010420296665973536, - 0.00010420296668959818, - 0.0001042029667177994, - 0.00010420296674443096, - 0.00010420296676958017, - 0.00010420296679333026, - 0.00010420296681575751, - 0.00010420296683693704, - 0.00010420296685693794, - 0.00010420296687582546, - 0.000104202966893662, - 0.00010420296691050552, - 0.00010420296692641168, - 0.00010420296694143262, - 0.00010420296695561744, - 0.00010420296696901284, - 0.00010420296698166281, - 0.00010420296699360833, - 0.00010420296700488954, - 0.00010420296701554266, - 0.000104202967025603, - 0.0001042029670351032, - 0.0001042029670440748, - 0.00010420296705254688, - 0.00010420296706054756, - 0.00010420296706810286, - 0.00010420296707523782, - 0.00010420296708197559, - 0.00010420296708833829, - 0.00010420296709434684, - 0.00010420296710002122, - 0.00010420296710537956, - 0.00010420296711043979, - 0.00010420296711521833, - 0.00010420296711973104, - 0.00010420296712399248, - 0.00010420296712801658, - 0.00010420296713181692, - 0.00010420296713540577, - 0.00010420296713879489, - 0.00010420296714199533, - 0.00010420296714501735, - 0.0001042029671478715, - 0.00010420296715056676, - 0.00010420296715311198, - 0.00010420296715551566, - 0.00010420296715778538, - 0.00010420296715992885, - 0.00010420296716195296, - 0.00010420296716386457, - 0.00010420296716566977, - 0.00010420296716737424, - 0.00010420296716898405, - 0.00010420296717050424, - 0.00010420296717193976, - 0.0001042029671732954, - 0.00010420296717457571, - 0.00010420296717578472, - 0.0001042029671769264, - 0.00010420296717800464, - 0.00010420296717902276, - 0.00010420296717998415, - 0.00010420296718089207, - 0.0001042029671817496, - 0.00010420296718255936, - 0.00010420296718332397, - 0.00010420296718404606, - 0.00010420296718472786, - 0.00010420296718537187, - 0.00010420296718597996, - 0.00010420296718655424, - 0.00010420296718709646, - 0.00010420296718760858, - 0.0001042029671880922, - 0.00010420296718854902, - 0.00010420296718898023, - 0.00010420296718938746, - 0.00010420296718977196, - 0.00010420296719013536, - 0.00010420296719047824, - 0.00010420296719080222, - 0.00010420296719110795, - 0.0001042029671913968, - 0.00010420296719166968, - 0.00010420296719192719, - 0.00010420296719217046, - 0.00010420296719240028, - 0.0001042029671926171, - 0.00010420296719282208, - 0.00010420296719301566, - 0.000104202967193198, - 0.00010420296719337058, - 0.00010420296719353371, - 0.00010420296719368764, - 0.00010420296719383288, - 0.00010420296719397028, - 0.0001042029671940992, - 0.00010420296719422208, - 0.00010420296719433699, - 0.00010420296719444678, - 0.00010420296719454996, - 0.00010420296719464724, - 0.00010420296719473922, - 0.00010420296719482525, - 0.00010420296719490704, - 0.00010420296719498522, - 0.00010420296719505712, - 0.00010420296719512747, - 0.00010420296719519117, - 0.00010420296719525285, - 0.00010420296719531215, - 0.00010420296719536728, - 0.00010420296719541858, - 0.00010420296719546736, - 0.0001042029671955137, - 0.00010420296719555805, - 0.00010420296719559862, - 0.00010420296719563602, - 0.00010420296719567186, - 0.00010420296719570783, - 0.0001042029671957414, - 0.00010420296719576989, - 0.00010420296719580113, - 0.00010420296719582697, - 0.00010420296719585313, - 0.00010420296719587804, - 0.0001042029671959006, - 0.00010420296719592212, - 0.00010420296719594458, - 0.00010420296719596087, - 0.00010420296719598484, - 0.00010420296719599799, - 0.0001042029671960141, - 0.00010420296719603496, - 0.00010420296719604476, - 0.00010420296719605716, - 0.00010420296719607474, - 0.0001106140366310527, - 0.00011318185766118293, - 0.00011384157580562745, - 0.00011398433612769699, - 0.00011391991845675004, - 0.00011384848461337, - 0.00011380971902719668, - 0.000113792960961056, - 0.0001137847161765237, - 0.00011358844176310171, - 0.00011348493030452483, - 0.00011346742968694654, - 0.00011347390263152884, - 0.00011348873680079504, - 0.00011350602256572261, - 0.00011351523230927478, - 0.00011353637382056611, - 0.00011356326663063479, - 0.00011359345304137527, - 0.00011362784298596165, - 0.0001136688291773813, - 0.00011371802066257336, - 0.00011377476703672463, - 0.00011384122761591892, - 0.00011389069961775511, - 0.00011390190620633032, - 0.00011390091549995295, - 0.00011389688464829068, - 0.00011389224741009839, - 0.00011388762730603447, - 0.00011388346964361902, - 0.00011387946794352068, - 0.00011387553096042452, - 0.00011387175119702976, - 0.00011386814887578272, - 0.00011386472039092808, - 0.00011386146600758113, - 0.00011385838135823716, - 0.00011385545483587392, - 0.00011384510192990044, - 0.00011383508816504818, - 0.00011383050549597636, - 0.00011382755670658191, - 0.00011382511732216862, - 0.00011382289479636623, - 0.00011382082175974055, - 0.00011381885895281346, - 0.00011381699310852244, - 0.00011381522749139368, - 0.00011381354793634243, - 0.00011381195473848171, - 0.00011381042734569328, - 0.00011380900386275383, - 0.00011380764113364771, - 0.00011380633967779003, - 0.0001138051195023215, - 0.00011380394515272813, - 0.00011380283886364544, - 0.00011380179175418792, - 0.00011380079255576043, - 0.00011379984571410252, - 0.00011379893410749511, - 0.00011379807869857925, - 0.00011379727316378144, - 0.00011379649139290081, - 0.00011379577581402437, - 0.00011379509203445105, - 0.00011379444115685183, - 0.00011379380451799099, - 0.0001137932176992174, - 0.00011379266743940828, - 0.00011379212815643301, - 0.0001137916125455331, - 0.000113791140127519, - 0.00011379069417557529, - 0.00011379026009467473, - 0.00011378983619252683, - 0.00011378945062577194, - 0.00011378909099696992, - 0.00011378874529476082, - 0.0001137884056399476, - 0.00011378806779164822, - 0.00011378776205206174, - 0.00011378748256185269, - 0.00011378722029665337, - 0.00011378696867298855, - 0.00011378671331370691, - 0.00011378648331473156, - 0.00011378626960051372, - 0.00011378606789396196, - 0.00011378584627211599, - 0.00011378564495667275, - 0.00011378546752681709, - 0.00011378530286005825, - 0.00011378514753879078, - 0.0001137849996948484, - 0.00011378485973910744, - 0.00011378472712282131, - 0.00011378460130175781, - 0.00011378448188425551, - 0.00011378436853298731, - 0.00011378426093680095, - 0.00011378414907471247, - 0.00011378404428944868, - 0.00011378394989149096, - 0.00011378386193172558, - 0.00011378377887603899, - 0.00011378370015162483, - 0.00011378362545362144, - 0.00011378354044948503, - 0.00011378345849376696, - 0.00011378338996618032, - 0.0001137833278903928, - 0.00011378326999197349, - 0.00011378321530553445, - 0.0001137831634666913, - 0.00011378311427806392, - 0.00011378306759127122, - 0.0001137830232756838, - 0.00011378298120998276, - 0.00011378294127970971, - 0.00011378290337640061, - 0.00011378286739714576, - 0.00011378283324427261, - 0.00011378280082506708, - 0.0001137827700515261, - 0.00011378274084011147, - 0.00011378271311152688, - 0.0001137826867905011, - 0.00011378266180558347, - 0.00011378263808895073, - 0.00011378261557622136, - 0.00011378259420628325, - 0.00011378257392112636, - 0.00011378255466568413, - 0.00011378253638768746, - 0.00011378251899741624, - 0.00011378249451491314, - 0.00011378247537181399, - 0.00011378245961038758, - 0.00011378244529775427, - 0.00011378243188193491, - 0.0001137824191917722, - 0.00011378240715749185, - 0.00011378239573716304, - 0.0001137823848973574, - 0.0001137823746080132, - 0.00011378236484103204, - 0.00011378235556985644, - 0.00011378234676930845, - 0.00011378233841549467, - 0.00011378233048573785, - 0.00011378232295851096, - 0.00011378231551490293, - 0.00011378230808309581, - 0.00011378230145449311, - 0.00011378229529448792, - 0.0001137822894820666, - 0.0001137822839738454, - 0.00011378227874763201, - 0.00011378227378734021, - 0.00011378226907900813, - 0.00011378226460972307, - 0.00011378226036731899, - 0.0001137822563402712, - 0.00011378225251764505, - 0.00011378224888906321, - 0.00011377765662163776, - 0.00011375977623841254, - 0.00011374589159703718, - 0.00011373937266141987, - 0.00011373757697882912, - 0.00011373716399423732, - 0.00011373711102095847, - 0.000113737149121429, - 0.00011373720831092729, - 0.00011373727048530118, - 0.00011373733105447448, - 0.00011373738894371863, - 0.00011373744398823916, - 0.00011373749625449949, - 0.00011373754586365342, - 0.00011373759294581496, - 0.00011373763762840988, - 0.00011373768003339583, - 0.00011373772027678125, - 0.00011373775846873157, - 0.0001137377947138142, - 0.00011373782911126993, - 0.00011373786175528382, - 0.00011373789273523929, - 0.00011373792213596208, - 0.00011373795003795652, - 0.00011373797651762048, - 0.00011373800164745928, - 0.0001137380254962813, - 0.00011373804812938684, - 0.0001137380696087486, - 0.00011373808999318066, - 0.0001137381093384967, - 0.00011081265860762793, - 0.00010963247762345288, - 0.0001093481076794836, - 0.00010932185471530295, - 0.00010936731548792292, - 0.00010941924651782717, - 0.00010947790011502988, - 0.0001095040656906141, - 0.00010950986443310738, - 0.0001095101453476328, - 0.00010950899099193766, - 0.0001095075065487831, - 0.00010950598908992196, - 0.00010950451650661528, - 0.000109503107337768, - 0.00010950176414000241, - 0.00010950048525197558, - 0.0001094992679813732, - 0.00010949808579788746, - 0.00010948987861223609, - 0.00010948570714629233, - 0.00010948398500399185, - 0.00010948297010564841, - 0.00010948217337384246, - 0.00010948146096825096, - 0.000109480795441612, - 0.0001094801654946712, - 0.00010947956696092004, - 0.00010947899765783884, - 0.00010947845599091297, - 0.00010947794057337096, - 0.00010947745012092176, - 0.0001094769834210298, - 0.00010947653932246472, - 0.00010947611673044724, - 0.00010947571460340614, - 0.00010947533195025934, - 0.00010928034722977566, - 0.00010915340194810992, - 0.00010911784452562602, - 0.00010910802524342744, - 0.00010910517179717328, - 0.00010910420733487845, - 0.00010910376185517712, - 0.00010910346537047469, - 0.00010910321764725924, - 0.00010910299123305764, - 0.00010910277832661052, - 0.00010910257644638932, - 0.0001091023845640818, - 0.00010910220206080025, - 0.00010910202844469664, - 0.00010910186327398706, - 0.0001091017061354212, - 0.00010910155663774571, - 0.00010910141440924432, - 0.000109101279096413, - 0.00010910115036297268, - 0.00010910102788900767, - 0.00010910091137015864, - 0.00010907257188728296, - 0.00010893362870478636, - 0.00010888797088349132, - 0.00010887552011553668, - 0.00010887210176718982, - 0.00010887111685966324, - 0.00010887078953210414, - 0.00010887064207656591, - 0.000108870545886544, - 0.00010887046623793722, - 0.00010887039365894402, - 0.00010887032547476967, - 0.00010887026084459448, - 0.0001088701994266891, - 0.00010887014101916657, - 0.0001088700854631066, - 0.0001088700326162433, - 0.00010886998234564076, - 0.00010886993452548514, - 0.00010886988903627056, - 0.00010886984576436144, - 0.00010886980460167416, - 0.00010886976544539671, - 0.0001088697281977298, - 0.00010886969276564157, - 0.00010886965906063372, - 0.0001088696269985224, - 0.00010886959649922769, - 0.00010886956748657278, - 0.00010886953988809364, - 0.00010886951363485782, - 0.0001088694886612946, - 0.00010886946490502724, - 0.00010886944230672168, - 0.00010886942080993459, - 0.00010886940036097364, - 0.00010886938090876504, - 0.00010886936240472356, - 0.00010886934480263191, - 0.00010886932805852634, - 0.0001088693121305848, - 0.00010886929697902592, - 0.0001088692825660054, - 0.00010886926885552506, - 0.00010886925581333944, - 0.00010886924340687512, - 0.00010886923160514388, - 0.0001088692203786688, - 0.00010886920969941083, - 0.00010886919954069636, - 0.000108869189877152, - 0.00010886918068464164, - 0.00010886917194020549, - 0.00010886916362200336, - 0.00010886915570925811, - 0.00010886914818220741, - 0.00010886914102205072, - 0.00010886913421090448, - 0.00010886912773175634, - 0.00010886912156842448, - 0.00010886911570551401, - 0.00010886911012838211, - 0.00010886910482309853, - 0.00010886909977641272, - 0.00010886909497571916, - 0.00010886909040902791, - 0.00010886908606493237, - 0.00010886908193258332, - 0.00010886907800165908, - 0.00010886907426234117, - 0.00010886907070529041, - 0.00010886906732162252, - 0.000108869064102886, - 0.00010886906104104208, - 0.00010886905812844267, - 0.00010886905535781328, - 0.0001088690527222335, - 0.00010886905021512098, - 0.00010886904783021368, - 0.00010886904556155517, - 0.0001088690434034782, - 0.00010886904135059355, - 0.00010886903939777355, - 0.00010886903754014066, - 0.00010886903577305526, - 0.00010886903409210356, - 0.00010886903249308696, - 0.00010886903097201188, - 0.00010886902952507923, - 0.00010886902814867522, - 0.00010886902683936182, - 0.00010886902559386851, - 0.00010886902440908503, - 0.00010886902328205122, - 0.0001088690222099537, - 0.00010886902119011412, - 0.00010886902021998464, - 0.0001088690192971424, - 0.00010886901841928292, - 0.0001088690175842128, - 0.00010886901678984728, - 0.00010886901603420194, - 0.00010886901531538929, - 0.00010886901463161335, - 0.00010886901398116718, - 0.00010886901336242624, - 0.00010886901277384512, - 0.00010886901221395308, - 0.000108869011681352, - 0.0001088690111747117, - 0.00010886901069276714, - 0.000108869010234314, - 0.00010886900979820736, - 0.00010886900938335834, - 0.00010886900898873032, - 0.00010886929479456065, - 0.00010886992040182006, - 0.00010887010906236532, - 0.00010887015988548226, - 0.00010887017345470101, - 0.00010887017702287596, - 0.00010887017790961891, - 0.00010887017807993186, - 0.00010887017806120178, - 0.00010887017799485859, - 0.000108870177918721, - 0.00010887017784279586, - 0.00010887017776963168, - 0.00010887017769978095, - 0.00010887017763326612, - 0.00010883873992835026, - 0.0001087911345777678, - 0.00010877725380046516, - 0.00010877351701149076, - 0.0001087725096433424, - 0.00010877223338605145, - 0.00010877215315472128, - 0.00010877212570180072, - 0.00010877211266825971, - 0.00010877210377203051, - 0.00010335863038294822, - 0.00010584232176543932, - 0.00010650232065890617, - 0.00010665290370932102, - 0.00010665159400039468, - 0.00010658685590401848, - 0.00010649338313303055, - 0.0001063850894511606, - 0.0001062808420700082, - 0.00010619057029111354, - 0.00010613628959068894, - 0.00010610755634450667, - 0.00010608725949637796, - 0.0001060673657584552, - 0.0001060436875176145, - 0.00010601432970240491, - 0.00010597766095201616, - 0.0001059375775857884, - 0.00010589735062882688, - 0.00010586452943393154, - 0.00010584384432530354, - 0.00010583225649680651, - 0.00010582086847696532, - 0.00010580866778574352, - 0.00010579620615246215, - 0.00010578366630509026, - 0.00010577095173915244, - 0.00010575824579578199, - 0.0001057493206635412, - 0.000105743274943275, - 0.00010573827079979224, - 0.00010573356536266682, - 0.00010572823972812983, - 0.00010572214014091744, - 0.00010571580345540504, - 0.00010570944596526844, - 0.00010570309816029928, - 0.00010569675992191744, - 0.00010569046899911328, - 0.00010568432178176917, - 0.0001056780875535602, - 0.00010567171046787394, - 0.00010566520843246652, - 0.0001056585772800343, - 0.00010565180910348625, - 0.00010564478582275269, - 0.00010563747842127744, - 0.00010562996327406667, - 0.00010562250200372205, - 0.000105618064602661, - 0.00010561537961705544, - 0.00010561325897028992, - 0.00010561133163647619, - 0.00010560952224548348, - 0.0001056078074398876, - 0.0001056061774356282, - 0.00010560462659600029, - 0.00010560315064713116, - 0.0001056017458450528, - 0.00010560041551056186, - 0.00010559921910850276, - 0.00010559812329604609, - 0.00010559709353370282, - 0.00010559611738880545, - 0.00010559518951519684, - 0.0001055939423367516, - 0.00010558816997747402, - 0.00010557921854531315, - 0.00010556885902149283, - 0.00010555758763897663, - 0.0001055456740005228, - 0.00010553439909241379, - 0.00010552945234252284, - 0.00010552756952254144, - 0.00010552663644927832, - 0.00010552600529980592, - 0.00010552548141845312, - 0.00010552500579823944, - 0.00010552456001914541, - 0.00010552413783049654, - 0.0001055237366550502, - 0.00010552335504781312, - 0.00010552299193482196, - 0.00010552264638404004, - 0.0001055223175353782, - 0.0001055220045783478, - 0.00010552170779807197, - 0.00010552143559589389, - 0.00010552118186626961, - 0.00010552094202938265, - 0.00010552071427798384, - 0.00010552049768701833, - 0.00010552029161467149, - 0.00010552009552164599, - 0.000105519908916147, - 0.0001055197313365856, - 0.00010551956234561788, - 0.00010551940152762913, - 0.00010551924848727716, - 0.000105519102848392, - 0.00011116318241286623, - 0.00010864709215516955, - 0.00010790366560040014, - 0.00010769198801219784, - 0.0001076517513079407, - 0.00010764740013795457, - 0.00010765257207982502, - 0.00010766319886275564, - 0.0001076677564571619, - 0.00010767521151440244, - 0.00010768473407857776, - 0.00010767474416024144, - 0.00010765861565656103, - 0.00010765850624287156, - 0.00010767999985058725, - 0.00010770853373084856, - 0.00010772477816445636, - 0.00010773485365439076, - 0.0001077428316208496, - 0.00010773787081760684, - 0.00010772062170435544, - 0.00010771853273019716, - 0.00010772135724711317, - 0.00010772349923277224, - 0.0001077266600940629, - 0.00010773051383510555, - 0.00010773443504486122, - 0.00010773714633465596, - 0.00010772558199827538, - 0.00010772308876239893, - 0.00010772455898029666, - 0.0001077271023930027, - 0.00010772985928930589, - 0.00010773258162906174, - 0.0001077352011797356, - 0.00010773770236267509, - 0.00010774008486707316, - 0.00010774235266539496, - 0.0001077445107928784, - 0.00010774656440994239, - 0.0001077485185355249, - 0.0001077503779772938, - 0.0001077521473193479, - 0.0001077538309264198, - 0.00010775543295255604, - 0.00010776956314691329, - 0.0001078080353870112, - 0.00010782196566361817, - 0.00010782724732455352, - 0.00010782992756697142, - 0.00010783179220475825, - 0.00010783336615340654, - 0.0001078348054031755, - 0.00010783615796160121, - 0.00010783744015028236, - 0.0001078386589166475, - 0.00010783981836236071, - 0.00010784092165704972, - 0.00010784197160263682, - 0.00010784297080292622, - 0.00010784392171756726, - 0.00010784482668199244, - 0.0001078456879172177, - 0.00010784650753647808, - 0.00010784728755076037, - 0.00010784802987384006, - 0.00010784873632700396, - 0.00010784940864352978, - 0.0001078500484729402, - 0.00010785065738504956, - 0.00010785123687381812, - 0.00010785178836101644, - 0.00010784990953741034, - 0.00010784908733323325, - 0.00010786623665198756, - 0.00010787404573455417, - 0.00010787668400516354, - 0.00010787777227874182, - 0.00010787839304625376, - 0.00010787817820153531, - 0.00010785120710238737, - 0.00010783995017648912, - 0.00010783683187939332, - 0.00010783611104103368, - 0.00010783607912372072, - 0.00010783623905091076, - 0.0001078321008688808, - 0.00010781362475557788, - 0.00010780740588101685, - 0.00010780569870892256, - 0.00010780530780639551, - 0.00010780529446246432, - 0.00010780538599371079, - 0.00010780550338380454, - 0.00010780562389193988, - 0.00010780574112191464, - 0.00010780585341746153, - 0.00010780596049007268, - 0.00010780606243941116, - 0.00010780615946906685, - 0.00010781037841013782, - 0.00010781553837644543, - 0.0001078171868890784, - 0.00010781772876216131, - 0.00010781794549050304, - 0.00010781806495820231, - 0.0001078181534578886, - 0.0001078182303636661, - 0.00010781830142499684, - 0.00010780804498508824, - 0.00010777504184325063, - 0.00010776411891772188, - 0.00010775618325265108, - 0.00010775206098073356, - 0.0001077508542256674, - 0.00010775051428549871, - 0.00010775042475649708, - 0.00010775040719753813, - 0.00010775041004035488, - 0.00010775041839654884, - 0.00010775042798067518, - 0.00010775043757161982, - 0.00010772436479471168, - 0.00010770774392936026, - 0.00010770282916525354, - 0.0001077014067219118, - 0.00010770099273521768, - 0.00010770086972690771, - 0.00010770083079655905, - 0.0001077008162778184, - 0.00010770080895830684, - 0.00010770080386720364, - 0.00010770079956379456, - 0.00010770079562559452, - 0.00010770079192406044, - 0.0001077007884157306, - 0.0001077007850819875, - 0.00010770078191167396, - 0.00010770077889606473, - 0.00010770077602740576, - 0.00010770077329847628, - 0.0001077007707024536, - 0.00010770076823285864, - 0.00010770076588353472, - 0.00010770076364862337, - 0.0001077007615225516, - 0.00010770075950002041, - 0.00010770075757598594, - 0.00010770075574565294, - 0.00010770075400445652, - 0.00010770075234805677, - 0.00010770075077232398, - 0.00010770074927332951, - 0.00010770074784733622, - 0.000107700746490789, - 0.00010770074520030545, - 0.00010770074397266848, - 0.00010770074280481808, - 0.00010770074169384141, - 0.0001077007406369694, - 0.000107700739631568, - 0.00010770073867512885, - 0.0001077007377652684, - 0.00010770073689971898, - 0.00010770073607632128, - 0.00010770073529302299, - 0.00010770073454787142, - 0.00010770073383900893, - 0.00010770073316466833, - 0.00010770073252316789, - 0.00010770073191290877, - 0.00010770073133236888, - 0.00010770073078010184, - 0.00010770073025473022, - 0.00010770072975494427, - 0.00010770072927949748, - 0.00010770048112820008, - 0.00010767491224439596, - 0.00010766341634159007, - 0.00010766006069945906, - 0.00010765909232926532, - 0.00010765881120192939, - 0.00010765872786487034, - 0.00010765870153535741, - 0.0001076586917170358, - 0.00010765868675715791, - 0.00010765868329893324, - 0.00010765868037182322, - 0.00010765867769184691, - 0.00010765867517271872, - 0.00010765867278523858, - 0.00010765867051683809, - 0.0001076586683599357, - 0.00010763951622228308, - 0.00010762243303939592, - 0.00010761732595968879, - 0.000107615854723289, - 0.00010761543046176448, - 0.00010761530714028832, - 0.00010761527036188904, - 0.00011061386182520798, - 0.00011213608960162, - 0.00011261441150606793, - 0.00011272824838386096, - 0.00011268480908920105, - 0.00011266248230498504, - 0.00011264854607758591, - 0.00011263773143900232, - 0.00011262837443483738, - 0.00011261966813795181, - 0.00011261153963188992, - 0.00011260371251309375, - 0.0001125963740464656, - 0.00011258954809469284, - 0.0001125830335547742, - 0.00011257680321887783, - 0.00011257086534163856, - 0.00011256556391318576, - 0.00011256040350972732, - 0.00011255781334926543, - 0.00011255581523207317, - 0.00011255227335691209, - 0.00011254828759783294, - 0.00011254432424536092, - 0.00011254051285354012, - 0.00011253686365528116, - 0.00011253340422947462, - 0.00011253010232632148, - 0.00011252699361998016, - 0.00011252406820843747, - 0.00011252125674142932, - 0.00011251856584431712, - 0.00011251607135980349, - 0.00011251364903330874, - 0.00011251135473885218, - 0.00011250920855015256, - 0.00011250716484703091, - 0.00011250522525389336, - 0.00011250335159170377, - 0.00011250164652461043, - 0.0001125000041621456, - 0.00011249842984527078, - 0.00011249693902723015, - 0.00011249550026995603, - 0.00011249417119248466, - 0.00011249288546797724, - 0.00011249170281143679, - 0.0001124905550139688, - 0.0001124894267475518, - 0.00011248842306805093, - 0.00011248747736151892, - 0.00011248654339080193, - 0.00011248566002037771, - 0.000112484752065392, - 0.00011248396420142583, - 0.00011248324737915484, - 0.0001124825761554095, - 0.00011248185122545164, - 0.00011248120869443628, - 0.00011248062681903581, - 0.00011248008382618398, - 0.00011247948411420415, - 0.0001124789518060322, - 0.000112478476571473, - 0.00011247803598583676, - 0.00011247762148545827, - 0.00011247721536825627, - 0.00011247681129147471, - 0.00011247643239851108, - 0.00011247607549769813, - 0.00011247570917837605, - 0.00011247539002939987, - 0.00011247509859987583, - 0.00011247482213247224, - 0.00011247446152866504, - 0.00011247417100614218, - 0.00011247392419754787, - 0.00011247369994152132, - 0.00011247349054927712, - 0.0001124732930362518, - 0.00011247310603757915, - 0.00011247292875718977, - 0.00011247276060947581, - 0.00011247260109654895, - 0.00011247244976566433, - 0.0001124723061939624, - 0.00011247216998252617, - 0.00011247203898707029, - 0.0001124719079014213, - 0.00011247174668687588, - 0.00011247155212711855, - 0.00011247141710380523, - 0.00011247130770613301, - 0.00011247121029366074, - 0.00011247112004374286, - 0.00011247103515784685, - 0.00011247095487419668, - 0.00011247087879131177, - 0.00011247080663754749, - 0.00011247073819234136, - 0.00011247067325907527, - 0.00011247061165550852, - 0.00011247055321020288, - 0.00011247049776100564, - 0.00011247044515424609, - 0.00011247039524418762, - 0.00011247034789258384, - 0.00011247030296828245, - 0.00011247026034685489, - 0.00011247021991025357, - 0.00011247018154648145, - 0.00011247014514928144, - 0.00011247011061698934, - 0.0001124700772693462, - 0.00011247004587204196, - 0.00011247001627666103, - 0.00011246998826482825, - 0.00011246996171152504, - 0.00011246993652706577, - 0.00011246991263620715, - 0.00011246988997091201, - 0.0001124698684677697, - 0.00011246984806700735, - 0.00011246982871204756, - 0.0001124698103492582, - 0.00011246979292777136, - 0.00011246977639933279, - 0.00011246976071816208, - 0.00011246974584082703, - 0.00011246973172612187, - 0.00011246971833495394, - 0.00011246970563023316, - 0.0001124696935767719, - 0.0001124696821411854, - 0.00011246967129180049, - 0.00011246966099856855, - 0.00011246965123297996, - 0.00011246964196798684, - 0.00011246963317792903, - 0.0001124696248384597, - 0.00011246961692648169, - 0.00011246960942008113, - 0.00011246960229846799, - 0.00011246959554191717, - 0.00011246958913171491, - 0.00011246958305010762, - 0.00011246957728025059, - 0.00011246957180616375, - 0.00011246956661268525, - 0.00011246956168543034, - 0.00011246955701075254, - 0.00011246955257570459, - 0.0001124695483680022, - 0.00011246954437599175, - 0.00011246954058861652, - 0.00011246953699538721, - 0.00011246953358635083, - 0.00011246953035206622, - 0.00011246952728357383, - 0.00011246952437237661, - 0.00011246952161041123, - 0.00011246951899002732, - 0.00011246951650396675, - 0.00011246951414534497, - 0.00011246951190762929, - 0.00011246950978462158, - 0.00011246950777044158, - 0.00011246950585951116, - 0.00011246950404653733, - 0.00011246950232649829, - 0.000112469500694631, - 0.0001124694991464147, - 0.00011246949767756245, - 0.00011246949628400491, - 0.00011246949496188286, - 0.00011246949370753428, - 0.00011246949251748521, - 0.0001124694913884398, - 0.0001124694903172696, - 0.00011246948930100943, - 0.00011246948833684454, - 0.00011246948742210327, - 0.00011246948655425344, - 0.00011246948573089, - 0.00011246948494973304, - 0.00011246948420861916, - 0.00011246948350549604, - 0.00011246948283841584, - 0.00011246948220553104, - 0.00011246948160508868, - 0.00011246948103542528, - 0.0001124694804949636, - 0.00011246947998220696, - 0.00011246947949573484, - 0.00011246947903419976, - 0.00011246947859632348, - 0.00011246947818089311, - 0.00011246947778675848, - 0.00011246947741282758, - 0.00011246947705806456, - 0.00011028485593667632, - 0.00010918962947447492, - 0.00010882546819815931, - 0.00010872418377000367, - 0.00010869577138560016, - 0.00010868578503671904, - 0.00010868221868096971, - 0.00010868089625001924, - 0.0001086803605716915, - 0.00010868010303304368, - 0.00010867994599456873, - 0.0001086798273065728, - 0.00010867972512358853, - 0.00010866511577701016, - 0.00010865075096089412, - 0.00010864540565300705, - 0.00010864350580991412, - 0.00010864281194752813, - 0.00010864254030055524, - 0.0001086424173796223, - 0.00010864234771491592, - 0.00010864229793720332, - 0.00010864225634252318, - 0.00010864221878734956, - 0.00010864218376837436, - 0.0001086421507060854, - 0.000108642119345908, - 0.00010864208954917624, - 0.00010864206122009328, - 0.00010864203428013596, - 0.00010864200865901363, - 0.00010864198429140358, - 0.00010864196111571388, - 0.00010862427678283748, - 0.00010860069589797578, - 0.00010859214324790841, - 0.00010858915774530884, - 0.00010858811625117966, - 0.00010858775266260116, - 0.0001085876254753751, - 0.00010858758073931072, - 0.00010858756477223756, - 0.00010858755885468644, - 0.00010858755645844781, - 0.00010857487303631106, - 0.000108455720313013, - 0.00010840535982281604, - 0.00010838779182280072, - 0.00010838171611272186, - 0.000108379640965656, - 0.00010837895696882838, - 0.00010837875552455248, - 0.00010837872031979868, - 0.00010837874129155362, - 0.00010837878019603762, - 0.00010837882379535483, - 0.00010837886755562326, - 0.00010837890997027895, - 0.00010837895058343168, - 0.00010837898930169956, - 0.00010837902615473482, - 0.00010837906121198352, - 0.0001083790945538504, - 0.00010837912626179903, - 0.00010837915641503796, - 0.00010837918508949875, - 0.00010837921235759928, - 0.00010837923828827976, - 0.00010837926294712299, - 0.0001082739756452371, - 0.0001081730816859749, - 0.00010813722128048898, - 0.00010812482380989562, - 0.00010812058155967764, - 0.00010811880228027337, - 0.00010811550539674784, - 0.00010811422277315884, - 0.0001081138298513857, - 0.00010811374497266873, - 0.00010811376457881972, - 0.0001081138180671279, - 0.0001081138810296868, - 0.000108113945100408, - 0.00010811400748039292, - 0.00010811406729943854, - 0.00010811412435232564, - 0.00010811417866006827, - 0.00010811423031772945, - 0.00010811427944178173, - 0.00010811432615202732, - 0.00010811437056552468, - 0.00010810212483786046, - 0.00010806543098454641, - 0.0001080514732005283, - 0.0001080466565608548, - 0.00010804502190033736, - 0.00010804449007814596, - 0.00010804433934184793, - 0.00010804431922782873, - 0.00010804434287223104, - 0.00010804135836270508, - 0.00010803548165889498, - 0.00010803333795592918, - 0.00010803262072356171, - 0.00010803239837684968, - 0.00010803234650709308, - 0.00010803235256494586, - 0.00010803237754507948, - 0.00010803240796682758, - 0.0001080324392064259, - 0.00010803246971166968, - 0.00010803249899391222, - 0.00010803252693120944, - 0.00010803255352655369, - 0.00010803257882407205, - 0.00010803260288004909, - 0.0001080326257529702, - 0.00010803264750016876, - 0.0001080326681767548, - 0.0001080326878353315, - 0.0001080327065259853, - 0.00010803272429636087, - 0.00010803274119176612, - 0.00010803275725528117, - 0.00010803277252786576, - 0.00010803278704846294, - 0.00010803280085409987, - 0.00010803281397997836, - 0.00010803282645956886, - 0.00010803283832469264, - 0.00010803284960560444, - 0.00010803286033107014, - 0.00010803287052843872, - 0.0001080328802237118, - 0.00010803288944161168, - 0.00010803289820564376, - 0.00010803290653815441, - 0.00010803291446039156, - 0.00010803292199255588, - 0.00010803292915385352, - 0.00010803293596254544, - 0.00010803294243599242, - 0.00010803294859070212, - 0.00010803295444236772, - 0.00010803296000591104, - 0.00010803296529551772, - 0.0001080329703246764, - 0.00010803297510621074, - 0.00010803297965231309, - 0.0001080329839745764, - 0.00010803244801120489, - 0.0001080288959552826, - 0.00010802731315397359, - 0.00010802565275237796, - 0.0001080249972208086, - 0.00010802477253726446, - 0.00010802469791340828, - 0.00010802467521031556, - 0.00010802467036971237, - 0.0001080246715788966, - 0.0001080246747454722, - 0.00010802467845612268, - 0.00010802468222699741, - 0.00010802468589650079, - 0.00010802468941457116, - 0.00010802469276955832, - 0.00010802469596286081, - 0.00010802469900013935, - 0.00010802470188827868, - 0.00010802470463434476, - 0.00010802470724523744, - 0.00010802470972758044, - 0.00010802471208769168, - 0.00010802471433158644, - 0.00010802471646498632, - 0.00010802471849333106, - 0.00010802472042179468, - 0.00010802472225529567, - 0.00010802472399850971, - 0.00010802472565588299, - 0.000108024727231642, - 0.00010802382298143656, - 0.00010801556107427381, - 0.00010801208818688907, - 0.000108010881616709, - 0.0001080104664202152, - 0.00010801032569493525, - 0.00010801028004463644, - 0.00010801026722797513, - 0.00010801026565540424, - 0.00010801026784285566, - 0.00010801027120038957, - 0.00010801027483594827, - 0.00010801027844629811, - 0.00010801028193221224, - 0.00010801028526495802, - 0.00010801028843998311, - 0.00010801029146085822, - 0.00010801029433371889, - 0.00010801029706535032, - 0.00010201343521104972, - 0.00010463739428614626, - 0.00010555453556701332, - 0.00010587800865594133, - 0.00010599521654519599, - 0.00010604060739239756, - 0.000106060845781729, - 0.00010607213541045612, - 0.00010608011035867191, - 0.00010608673641528349, - 0.00010609270444004868, - 0.0001060983750249842, - 0.00010610428769308333, - 0.00010611019015827396, - 0.00010611590050717996, - 0.00010612136383229019, - 0.0001061265777192255, - 0.00010613167329911986, - 0.00010613726233214688, - 0.00010614300298812371, - 0.0001061486232312364, - 0.00010615402281013036, - 0.00010615917535935102, - 0.00010616408007126164, - 0.00010616874465283826, - 0.00010617317939057064, - 0.0001061773950965376, - 0.00010618140240942778, - 0.000106185211568009, - 0.00010618883234876971, - 0.0001061922740600879, - 0.00010619554555535649, - 0.00010619865525198543, - 0.0001062016111517384, - 0.00010620442086086356, - 0.00010620709160950534, - 0.00010620970639710345, - 0.0001062124438902218, - 0.00010621516279179858, - 0.00010621778824514588, - 0.00010622029804630592, - 0.00010622268851758388, - 0.00010622496227494335, - 0.00010622712394722371, - 0.0001062291786849538, - 0.00010623113164668882, - 0.00010623298782759512, - 0.00010623475200759744, - 0.00010623642874102763, - 0.00010623802309408264, - 0.00010623954913057657, - 0.00010624100742962917, - 0.0001062423962806247, - 0.0001062437172740166, - 0.00010624497312378156, - 0.0001062461668316385, - 0.00010624730214570891, - 0.00010624843262720636, - 0.00010624956237922155, - 0.00010625065664738101, - 0.00010625170382935174, - 0.00010625270155455712, - 0.00010625365062328728, - 0.00010625455286981635, - 0.00010625541041489772, - 0.00010625622540673144, - 0.00010625699993351448, - 0.00010625773599614791, - 0.0001062584355019268, - 0.00010625910026544509, - 0.00010625973201188465, - 0.00010626033238099144, - 0.00010626090293115937, - 0.00010626144514340932, - 0.00010626196042521636, - 0.00010626245011415102, - 0.00010626291548135307, - 0.00010626335773482696, - 0.00010626377802257868, - 0.00010626417743559543, - 0.00010626455701067788, - 0.0001062649177331312, - 0.00010626526053932156, - 0.00010626558631911052, - 0.00010626589591815967, - 0.00010626619014012976, - 0.00010626646974876503, - 0.00010626673546987672, - 0.00010626698799322602, - 0.00010626722797431624, - 0.00010626745603609232, - 0.00010626767277056004, - 0.00010626787874032068, - 0.00010626807448003227, - 0.00010626826049779888, - 0.00010626843727648719, - 0.00010626860527498072, - 0.00010626876492937156, - 0.00010626891665409296, - 0.00010626906084299336, - 0.00011225463308219418, - 0.000109592671887202, - 0.00010864308131203593, - 0.00010829733499542482, - 0.00010817016857843108, - 0.00010812629618658034, - 0.00010810227757902506, - 0.0001080870766061148, - 0.00010807430063217762, - 0.00010806226603460806, - 0.00010805086128542331, - 0.00010804003350101657, - 0.00010802974652527598, - 0.00010801997090175126, - 0.00010801068035427385, - 0.00010802343201128832, - 0.00010803262275215312, - 0.00010803176899412228, - 0.00010802751153960759, - 0.00010802225999010318, - 0.00010801684730810096, - 0.00010801155529300699, - 0.00010800647364097787, - 0.00010800162536873142, - 0.00010799701060963096, - 0.00010799262189371536, - 0.00010798844946651435, - 0.0001079844831288131, - 0.00010798071286191065, - 0.00010794397007425066, - 0.00010782147019587328, - 0.00010777139504899988, - 0.00010775133646280516, - 0.00010774188418901695, - 0.00010773624313870887, - 0.0001077320441876109, - 0.00010772845777353518, - 0.00010772518993684608, - 0.00010772213322290966, - 0.00010771924528596644, - 0.00010771650666632171, - 0.00010771390609703012, - 0.00010771143538329684, - 0.00010770908761092808, - 0.00010770685651285633, - 0.00010770473623885314, - 0.00010770272126593093, - 0.00010771922846019888, - 0.00010774667867777459, - 0.00010775577199178764, - 0.0001077580469725479, - 0.00010775800026359106, - 0.00010775719097021297, - 0.00010775615691609843, - 0.00010775508237523694, - 0.00010775402930257756, - 0.0001077530173922025, - 0.00010775205179259396, - 0.00010775113269861938, - 0.00010775025866861457, - 0.00010774942776901864, - 0.00010774863796699302, - 0.00010774788726284991, - 0.00010774717373255712, - 0.00010774649553928011, - 0.00010774585093435308, - 0.00010774523825474744, - 0.00010774465591946297, - 0.00010774410242568724, - 0.00010774357634499658, - 0.00010774307631970108, - 0.000107742601059347, - 0.0001077421493373929, - 0.00010774171998804393, - 0.00010774737210875524, - 0.00010776267876791744, - 0.00010776822235843173, - 0.00010776993507798774, - 0.00010777033064713864, - 0.00010777028088896658, - 0.00010777008651725974, - 0.00010776985095374694, - 0.00010776960949063333, - 0.0001077693739071639, - 0.0001077691478807382, - 0.00010776893230944964, - 0.00010776889028058656, - 0.00010776893385244416, - 0.00010776883480769909, - 0.00010776868855258904, - 0.00010776853150418696, - 0.00010776837599707923, - 0.0001077682260306374, - 0.00010776808273833138, - 0.00010776794627615502, - 0.00010776781647418428, - 0.00010776769306100628, - 0.00010776757574068221, - 0.0001077674642188025, - 0.00010776325189436038, - 0.00010775138016951946, - 0.00010774683539850169, - 0.00010774521038060998, - 0.0001077445991680706, - 0.0001077443404197164, - 0.00010774420569987909, - 0.00010774411603912212, - 0.00010774404406733671, - 0.00010774398023115977, - 0.00010774392113250441, - 0.00010774386550295404, - 0.00010774381281394048, - 0.0001077437627967706, - 0.00010774371527672056, - 0.0001077436701155605, - 0.00010774362719151128, - 0.00010774358639213934, - 0.00010774354761171757, - 0.00010774351075014574, - 0.00010774347571241282, - 0.00010774344240825618, - 0.00010774341075189514, - 0.00010774338066179847, - 0.00010774335206047106, - 0.00010774332487425317, - 0.0001077432990331281, - 0.00010774327447054532, - 0.0001077432511232468, - 0.00010774322893110312, - 0.00010774320783696097, - 0.00010774318778649412, - 0.00010774316872806516, - 0.00010774315061259069, - 0.00010774313339341616, - 0.00010774311702619539, - 0.00010768801918477732, - 0.0001076533201159162, - 0.00010764124644356141, - 0.0001076371175692894, - 0.0001076357259789052, - 0.00010763527606591031, - 0.00010763514916720457, - 0.00010763513217709224, - 0.0001076351517330006, - 0.00010763518262149697, - 0.00010763521621707584, - 0.00010763524960698597, - 0.00010763528184402455, - 0.00010763531265547509, - 0.00010763534199837215, - 0.00010763536990638903, - 0.00010763539643720188, - 0.00010763542165447159, - 0.00010763544562175047, - 0.00010763546840048831, - 0.0001076354900494501, - 0.00010763551062460893, - 0.0001076355301792052, - 0.00010763554876385378, - 0.00010763556642666272, - 0.00010763558321335777, - 0.00010763559916739514, - 0.00010763561433007616, - 0.00010763562874065392, - 0.00010763564243643415, - 0.0001076356554528734, - 0.00010763566782366783, - 0.00010763567958084305, - 0.00010763569075483625, - 0.00010763570137457372, - 0.00010763571146754836, - 0.00010763572105988856, - 0.00010763573017642714, - 0.00010763573884076476, - 0.00010763574707533254, - 0.00010763575490144655, - 0.00010763576233936757, - 0.00010763576940835113, - 0.00010763577612669728, - 0.0001076357825117979, - 0.00010763578858018333, - 0.00010763579434756342, - 0.00010763579982886812, - 0.00010763580503828806, - 0.00010763580998930902, - 0.0001076358146947484, - 0.00010763581916678697, - 0.00010763582341700229, - 0.00010763582745639749, - 0.00010763583129542968, - 0.00010763583494403724, - 0.00010763583841166532, - 0.00010763584170729167, - 0.00010763584483944765, - 0.00010763584781624113, - 0.00010763585064537952, - 0.00010763576841452885, - 0.00010763311784293856, - 0.0001076318877052798, - 0.00010763146451259324, - 0.00010903997590641288, - 0.00010981217312870867, - 0.0001100971447804836, - 0.00011019122945799876, - 0.0001101379475790522, - 0.00011011409233502901, - 0.00011010205864179339, - 0.0001100945694538679, - 0.00011008891955015257, - 0.00011008409915351976, - 0.0001100797267048662, - 0.00011007565365539888, - 0.00011007181810970259, - 0.00011006819061375688, - 0.00011006475406312605, - 0.00011006149624601145, - 0.00011005840706560945, - 0.00011005547749595752, - 0.00011005269918046089, - 0.00011005006426915503, - 0.00011004756534509135, - 0.00011004519538441689, - 0.00011004294772957971, - 0.00011004081606801482, - 0.000110038794413449, - 0.00011003687708873159, - 0.00011003505870976013, - 0.00011003333417031124, - 0.0001100316986276836, - 0.0001100301474890938, - 0.00011002867639877442, - 0.00011002728122574292, - 0.00011002595805220132, - 0.00011002470316253388, - 0.00011002351303287387, - 0.00011002238432120779, - 0.0001100213138579896, - 0.00011002029863724256, - 0.00011001933580811651, - 0.00011001842266688115, - 0.00011001755664933721, - 0.0001100167353236126, - 0.00011001595638333567, - 0.0001100152176411564, - 0.00011001451702260764, - 0.0001100138525602747, - 0.00011001322238827624, - 0.00011001262473701967, - 0.00011001205792823552, - 0.00011001152037026316, - 0.0001100110105535802, - 0.00011001052704656678, - 0.00011001006849148227, - 0.00011000963360065413, - 0.0001100092211528618, - 0.00011000882998990591, - 0.00011000845901335942, - 0.00011000810718147882, - 0.00011000777350628218, - 0.00011000745705077307, - 0.00011000715692631067, - 0.00011000687229011232, - 0.00011000660234288841, - 0.00011000634632659737, - 0.0001100061035223181, - 0.00011000587324822991, - 0.00011000565485769788, - 0.00011000544773745678, - 0.00011000525130589138, - 0.00011000506501140066, - 0.00011000488833084846, - 0.00011000472076809672, - 0.0001100045618526118, - 0.00011000441113814072, - 0.00011000426820146104, - 0.00011000413264119131, - 0.0001100040040766634, - 0.000110003882146854, - 0.000110003766509371, - 0.00011000365683949199, - 0.00011000355282925142, - 0.00011000345418657771, - 0.00011000336063447164, - 0.00011000327191022754, - 0.000110003187764699, - 0.00011000310796159651, - 0.00011000303227682349, - 0.00011000296049784944, - 0.00011000289242311084, - 0.00011000282786144663, - 0.00011000276663156035, - 0.00011000270856151227, - 0.00011000265348823452, - 0.0001100026012570758, - 0.00011000255172136533, - 0.00011000250474200176, - 0.0001100024601870616, - 0.00011000241793143013, - 0.00011000237785644807, - 0.00011000233984958079, - 0.00011000230380410136, - 0.00011000226961879008, - 0.00011000223719765049, - 0.00011000220644964087, - 0.0001100021772884171, - 0.00011000214963209099, - 0.00011000212340300137, - 0.00011000209852749356, - 0.00011000207493571457, - 0.00011000205256141665, - 0.00011000203134176929, - 0.00011000201121718623, - 0.00011000199213115508, - 0.00011000197403008024, - 0.0001100019568631322, - 0.00011000194058210345, - 0.0001100019251412763, - 0.00011000191049729, - 0.00011000189660902373, - 0.00011000188343747707, - 0.00011000187094566294, - 0.00011000185909850308, - 0.0001100018478627298, - 0.00011000183720679077, - 0.00011000182710076392, - 0.00011000181751627007, - 0.00011000180842639448, - 0.00011000179980561279, - 0.0001100017916297164, - 0.0001100017838757459, - 0.0001100017765219282, - 0.00011000176954761277, - 0.00011000176293321477, - 0.00011000175666015979, - 0.00011000175071083335, - 0.00011000174506852854, - 0.00011000173971740142, - 0.00011000173464242542, - 0.000110001729829349, - 0.00011000172526465669, - 0.00011000172093553076, - 0.00011000171682981448, - 0.00011000171293597788, - 0.00011000170924308746, - 0.00011000170574077281, - 0.0001100017024191993, - 0.00011000169926903941, - 0.00011000169628144664, - 0.00011000169344803247, - 0.00011000169076083965, - 0.00011000168821232271, - 0.00011000168579532466, - 0.00011000168350305852, - 0.00011000168132908726, - 0.00011000167926730635, - 0.00011000167731192629, - 0.00011000167545745488, - 0.0001100016736986862, - 0.00011000167203068115, - 0.00011000167044875452, - 0.00011000166894846565, - 0.00011000166752560117, - 0.00011000166617616496, - 0.0001100016648963678, - 0.00011000166368261605, - 0.00011000166253150144, - 0.00011000166143979102, - 0.00011000166040441963, - 0.0001100016594224802, - 0.00011000165849121473, - 0.0001100016576080082, - 0.00011000165677038022, - 0.00011000165597597937, - 0.00011000165522257461, - 0.00011000165450804976, - 0.00011000165383039874, - 0.00011000165318771912, - 0.00011000165257820559, - 0.0001100016520001469, - 0.00011000165145191928, - 0.00011000165093198333, - 0.00011000165043887952, - 0.00011000164997122312, - 0.00011000164952770032, - 0.00011000164910706613, - 0.00011000164870813916, - 0.00011000164832979917, - 0.00011000164797098369, - 0.00011000164763068589, - 0.0001100016473079494, - 0.00011000164700186797, - 0.00011000164671158226, - 0.0001100016464362771, - 0.0001100016461751791, - 0.00011000164592755586, - 0.00011000164569271127, - 0.00011000164546998609, - 0.000110001645258755, - 0.0001100016450584248, - 0.00011000164486843211, - 0.00010879753360814586, - 0.00010816083283902165, - 0.0001079440587880784, - 0.0001078910822326325, - 0.00010788774935855892, - 0.00010788812455439327, - 0.00010788969441720047, - 0.00010789164007468703, - 0.00010789365834102352, - 0.00010789563897281269, - 0.0001078975438975272, - 0.00010789936193953061, - 0.00010790109185242237, - 0.0001079027359647002, - 0.00010790429780459304, - 0.00010790578121655186, - 0.0001079071900366933, - 0.00010790388229787728, - 0.00010787734951100782, - 0.00010786663446632656, - 0.00010786335301805224, - 0.00010786283252698155, - 0.0001078633114105254, - 0.00010786413100067619, - 0.00010786504608617491, - 0.00010786596636570883, - 0.00010786685952839159, - 0.00010786604602020219, - 0.00010786352118957324, - 0.00010786298076441309, - 0.00010786323029213364, - 0.00010786375368863008, - 0.00010786435810646818, - 0.00010786497234082454, - 0.0001078655707349179, - 0.00010786614465397337, - 0.00010786669179457498, - 0.00010786721217967258, - 0.00010786770665964152, - 0.00010786817635264056, - 0.00010786862243695482, - 0.00010786904607518671, - 0.00010786944838775762, - 0.00010786983044480549, - 0.00010787019326488232, - 0.00010787053781611447, - 0.00010787086501820323, - 0.00010787117574466085, - 0.00010787147082506116, - 0.00010787175104722268, - 0.00010787199944829909, - 0.000107870127614201, - 0.00010786922524467604, - 0.00010786902576132212, - 0.00010786908535668466, - 0.00010786923532156457, - 0.00010786941273507243, - 0.00010786959433471165, - 0.0001078697717078344, - 0.0001078699419927942, - 0.00010787010439404965, - 0.00010787025887658206, - 0.00010787040567720436, - 0.00010787054512203968, - 0.00010787067755873512, - 0.00010787080333165892, - 0.00010787092277316948, - 0.00010787103620088903, - 0.00010787114391719328, - 0.00010787124620951478, - 0.0001078713433509153, - 0.00010787143560074925, - 0.00010787152320532208, - 0.00010787160639854436, - 0.00010787168540254991, - 0.00010787176042828719, - 0.00010787183167608306, - 0.00010787189933617671, - 0.00010787196358922752, - 0.00010787202460679803, - 0.00010787208255181245, - 0.00010787213757898924, - 0.00010787218983525743, - 0.000107872239460147, - 0.00010787228658616154, - 0.00010787233133913292, - 0.00010787237383855611, - 0.0001078724141979088, - 0.00010787245252495504, - 0.0001077366823834415, - 0.00010765158323857948, - 0.00010761972906357792, - 0.00010760807369774736, - 0.00010760396576322408, - 0.0001076026693931059, - 0.00010760241298428496, - 0.00010760209584067961, - 0.00010760204934299658, - 0.00010760222745613748, - 0.00010760248087071097, - 0.00010760275303763808, - 0.00010760302326311754, - 0.0001076032842557982, - 0.00010760353371689555, - 0.00010760377119419892, - 0.00010760399690589279, - 0.00010760421130146087, - 0.0001076044148983594, - 0.00010760460822183776, - 0.00010760479178330771, - 0.00010760496607309561, - 0.0001076051315585372, - 0.00010760528868402231, - 0.00010760543787174094, - 0.00010760557952264676, - 0.00010760571401747344, - 0.0001076058417177322, - 0.00010760596296667604, - 0.0001076060780902199, - 0.00010760618739781325, - 0.00010760629118327304, - 0.00010760638972557368, - 0.00010760648328959455, - 0.00010760657212683512, - 0.00010760665647608828, - 0.00010760673656408356, - 0.00010760681260609712, - 0.00010760688480652758, - 0.00010760695335944946, - 0.0001076070184491316, - 0.00010760708025053482, - 0.0001076071389297792, - 0.0001076071946445948, - 0.00010760724754474129, - 0.00010760729777241492, - 0.0001076073454626254, - 0.00010760739074356445, - 0.00010760743373694592, - 0.00010760747455833576, - 0.00010760751331746116, - 0.00010760755011850644, - 0.00010760758506039159, - 0.00010760761823704035, - 0.00010760764973763052, - 0.00010760767964683648, - 0.00010760770804505263, - 0.00010760773500861329, - 0.0001076077606099962, - 0.00010760778491801732, - 0.00010760780799801684, - 0.00010760782991203261, - 0.00010760785071896938, - 0.00010760787047475627, - 0.00010760788923249627, - 0.00010760790704261036, - 0.0001076079239529718, - 0.00010760794000903459, - 0.00010760795525395776, - 0.00010760796972871924, - 0.00010760798347222757, - 0.00010760799652142448, - 0.0001076080089113862, - 0.00010760802067541722, - 0.00010760803184513787, - 0.00010760804245057388, - 0.00010760805252023164, - 0.0001076080620811782, - 0.00010760807115911268, - 0.00010760807977843724, - 0.00010760808796232083, - 0.00010760809573276056, - 0.0001076081031106443, - 0.00010760811011580295, - 0.00010760811676706636, - 0.00010760812308231286, - 0.00010760812907851874, - 0.00010760813477180078, - 0.00010760809217120092, - 0.00010760709895905596, - 0.00010760662814310921, - 0.00010760645566847452, - 0.00010760639540659035, - 0.000107606376925138, - 0.00010760637387267945, - 0.00010760637639866991, - 0.00010760638082683144, - 0.0001076063857908385, - 0.00010760639078829314, - 0.0001076063956396348, - 0.00010760640028568411, - 0.00010760640471190655, - 0.00010760640892008676, - 0.00010760641291775279, - 0.00010760641671423514, - 0.00010760642031920824, - 0.00010760642374216492, - 0.00010760642699223341, - 0.00010760643007812136, - 0.0001076064330081142, - 0.0001076064357900837, - 0.00010149696289379224, - 0.00010423260353211452, - 0.00010528276319283544, - 0.00010570032239547033, - 0.00010587991218551294, - 0.00010596927324897468, - 0.00010602375072244584, - 0.00010606411170417454, - 0.00010609818132134756, - 0.00010612893856641614, - 0.00010615754651626042, - 0.00010618448636388668, - 0.00010620998181585176, - 0.00010623415802074077, - 0.00010625710115268758, - 0.00010627888081369656, - 0.00010629955851716589, - 0.00010631935493967193, - 0.00010633865839006194, - 0.00010635722742048781, - 0.00010637494806866087, - 0.00010639180613565128, - 0.0001064078238392674, - 0.00010642303566908334, - 0.00010643747939498764, - 0.0001064511927608162, - 0.00010646421230749674, - 0.00010647657299191908, - 0.00010648830810127156, - 0.00010649944927533618, - 0.00010651002656652878, - 0.00010652006851147964, - 0.00010652960220446792, - 0.000106538653369191, - 0.00010654724642767252, - 0.00010655547360247043, - 0.00010656351057097531, - 0.00010657125006712863, - 0.00010657863868975393, - 0.00010658566825299818, - 0.00010659234719028828, - 0.00010659868960582867, - 0.00010660471118310004, - 0.00010661042767351, - 0.0001066158543544334, - 0.0001066210058506354, - 0.0001066258960911324, - 0.00010663053831579591, - 0.00010663494509951046, - 0.00010663912838183975, - 0.00010664309949772205, - 0.00010664686920755887, - 0.00010665044772613769, - 0.00010665384475022588, - 0.00010665706948480824, - 0.00010666014676826945, - 0.00010666313905849518, - 0.00010666601714530812, - 0.00010666876337228096, - 0.00010667137548486989, - 0.0001066738569189836, - 0.00010667621304008073, - 0.00010667844973472092, - 0.00010668057288976864, - 0.00010668258820591276, - 0.0001066845011367864, - 0.000106686316874987, - 0.00010668804035533258, - 0.00010668967626418184, - 0.00010669122905063744, - 0.0001066927029380614, - 0.00010669410193534464, - 0.0001066954298477278, - 0.00010669669028711734, - 0.00010669788668190348, - 0.00010669902228627531, - 0.00010670010018907526, - 0.00010670112332219605, - 0.0001067020944685585, - 0.00010670301626967918, - 0.00010670389123285508, - 0.00010670472173798576, - 0.00010670551004404278, - 0.00010670625829521796, - 0.0001067069685267527, - 0.00010670764267047597, - 0.00010670828256005716, - 0.00010670888993599562, - 0.00010670946645035269, - 0.00010671001367124659, - 0.00010671053308711667, - 0.000106711026110774, - 0.00010671149408324185, - 0.00010671193827740408, - 0.00010671235990146896, - 0.0001067127601022522, - 0.00010671313996830038, - 0.00010671350053284758, - 0.00010671384277662982, - 0.00010671416763054829, - 0.00011281593559823159, - 0.00011005559120490513, - 0.00010898357588128836, - 0.00010855050067286228, - 0.00010836263474538416, - 0.00010828012774926745, - 0.00010822643126951732, - 0.00010818403993186763, - 0.0001081470222826524, - 0.0001081130949789397, - 0.00010808134474997275, - 0.00010805137652903572, - 0.00010802299283537181, - 0.000107996073007828, - 0.00010797052764022823, - 0.0001079615359781792, - 0.00010795674225856498, - 0.00010794263637338672, - 0.0001079254950848706, - 0.00010790781345160841, - 0.00010789049851901071, - 0.00010787386177447284, - 0.000107857992717333, - 0.00010784289894805662, - 0.00010782855865573669, - 0.00010781494024338822, - 0.00010780200962762428, - 0.00010778973291731284, - 0.00010777807736158957, - 0.000107767011651463, - 0.00010775650598164091, - 0.0001077465320250026, - 0.00010773706287675567, - 0.000107728072989568, - 0.00010771953810753117, - 0.00010771143520180276, - 0.00010770374240887336, - 0.00010769643897172908, - 0.00010768950518389941, - 0.00010768292233630837, - 0.00010767667266679748, - 0.00010767073931220493, - 0.00010766510626286379, - 0.00010765975831940546, - 0.00010765468105174726, - 0.00010764986076015915, - 0.00010765881673715144, - 0.00010767334098757265, - 0.0001076766199021988, - 0.00010767556605109796, - 0.000107673004272743, - 0.00010766998770376844, - 0.00010766690491742174, - 0.00010766389606792722, - 0.00010766100861472205, - 0.0001076582555822014, - 0.00010765563734816644, - 0.000107653149785124, - 0.00010765078729533415, - 0.00010764854393565259, - 0.00010764641382810868, - 0.0001076443913037232, - 0.00010764247094699906, - 0.00010764064760371664, - 0.00010763891637543998, - 0.0001076372726094834, - 0.0001076357118875714, - 0.00010763423001440094, - 0.0001076328230065302, - 0.00010763148708172814, - 0.0001076302186488338, - 0.00010762901429810756, - 0.00010762787079207322, - 0.0001076267850568114, - 0.00010762575417369958, - 0.00010762477537156745, - 0.00010762384601924554, - 0.00010762296361849168, - 0.00010762212579727851, - 0.00010762133030341429, - 0.00010762057499848992, - 0.00010761985785213038, - 0.00010761917693653706, - 0.00010761853042130434, - 0.00010761791656850085, - 0.00010761733372799612, - 0.00010761678033302584, - 0.00010761625489597978, - 0.000107615756004403, - 0.00010761528231719903, - 0.00010761483256102368, - 0.00010761440552686418, - 0.0001076140000667866, - 0.00010761361509085291, - 0.0001076132495641891, - 0.00010761290250420372, - 0.00010761256332242912, - 0.000107599892314642, - 0.00010759238769929596, - 0.00010758940887413585, - 0.00010758815162675523, - 0.00010758754798293064, - 0.00010758719883914092, - 0.0001075869462173968, - 0.0001075867356931881, - 0.00010758654677976519, - 0.00010758637151846222, - 0.00010758620665068191, - 0.00010758605069024555, - 0.00010758590282750508, - 0.00010758576251871232, - 0.00010758562933176248, - 0.00010758550288787256, - 0.00010758538283918274, - 0.00010758526885981968, - 0.00010758516064203039, - 0.00010758505789423244, - 0.00010758496033981221, - 0.0001075848677162234, - 0.00010758477977422298, - 0.00010758469627717625, - 0.000107584617000415, - 0.00010758454173062724, - 0.00010758447026528368, - 0.00010758440241209168, - 0.00010758433798847838, - 0.00010758427682109969, - 0.00010758421874537128, - 0.00010758416360502801, - 0.00010758411125170364, - 0.0001075840615445318, - 0.00010758401434976472, - 0.00010758396954041485, - 0.00010758392699591313, - 0.00010758388660178509, - 0.00010758384824934192, - 0.000107583811835389, - 0.00010758377726194708, - 0.0001075837444359884, - 0.00010758371326918813, - 0.0001075836836776862, - 0.00010758365558186025, - 0.00010758362890611228, - 0.0001075836035786664, - 0.000107583579531374, - 0.00010758355669953055, - 0.00010758353502170156, - 0.00010758351443955912, - 0.0001075834948977224, - 0.00010758347634361106, - 0.00010758345872729991, - 0.00010758344200138969, - 0.000107583426120876, - 0.00010758341104302876, - 0.00010758339672727762, - 0.00010758338313510328, - 0.00010758337022993291, - 0.00010758335797704254, - 0.00010758334634346417, - 0.0001075833352978943, - 0.00010758332481061276, - 0.00010758331485340179, - 0.0001075833053994692, - 0.00010758329642337702, - 0.00010758328790097314, - 0.00010758327980932712, - 0.0001075832721266656, - 0.00010758326483231739, - 0.00010758325790665536, - 0.00010758325133104441, - 0.00010758324508779251, - 0.00010758323916010009, - 0.0001075832335320179, - 0.00010758322818840142, - 0.00010758322311487346, - 0.00010758321829778236, - 0.000107583213724167, - 0.00010758320938172106, - 0.00010758320525876054, - 0.00010758320134419051, - 0.00010758319762747923, - 0.0001075831940986254, - 0.00010758319074813487, - 0.00010758318756699128, - 0.00010758318454663637, - 0.00010758318167894254, - 0.00010758317895619351, - 0.0001075831763710638, - 0.0001075831739165965, - 0.0001075831715861888, - 0.00010758316937356905, - 0.00010758316727278387, - 0.00010758316527818098, - 0.00010758316338439422, - 0.00010758316158632676, - 0.00010758315987914108, - 0.00010758315825824392, - 0.00010758315671927275, - 0.0001075831552580876, - 0.00010758315387075766, - 0.00010685952386300949, - 0.00010627181573682348, - 0.0001060508623706164, - 0.00010597122102714258, - 0.00010586840021925912, - 0.00010582172200900743, - 0.00010581092684058474, - 0.00010581356908943885, - 0.00010582116657403372, - 0.00010582913456521552, - 0.00010583000562786845, - 0.0001058308949112444, - 0.00010583275647049116, - 0.00010583517804051219, - 0.00010583732389084818, - 0.0001058392538221729, - 0.00010584121512600576, - 0.00010584302584225184, - 0.00010584341592833566, - 0.00010584072604537594, - 0.00010583608493838697, - 0.00010583062959204474, - 0.00010582425899884584, - 0.00010581680089427424, - 0.00010580796762422409, - 0.00010579782909726895, - 0.00010578647037539828, - 0.0001057746456829928, - 0.00010576630318300593, - 0.00010576015023666396, - 0.00010575444300652074, - 0.00010574907205228537, - 0.00010575272489360438, - 0.00010575471719189587, - 0.00010575533103479814, - 0.00010575538125164064, - 0.00010575512918783391, - 0.00010575468920864288, - 0.00010575414766905442, - 0.0001057534627955022, - 0.00010575265099795589, - 0.00010575171747661494, - 0.00010575072886498716, - 0.00010574961098060844, - 0.00010574802982483756, - 0.00010574630728492544, - 0.00010574464155289815, - 0.00010574295988617924, - 0.00010574114069795076, - 0.00010573905923209652, - 0.00010573681674422514, - 0.00010573437818773064, - 0.00010573272695999937, - 0.00010573239602630592, - 0.00010573254248325661, - 0.00010573281106737918, - 0.00010573311347952282, - 0.0001057334181177894, - 0.00010573371375721272, - 0.00010573399672333944, - 0.00010573426612578305, - 0.0001057345220858073, - 0.0001057348210378001, - 0.00010573511205988148, - 0.00010573522706104964, - 0.00010573529907493264, - 0.0001056055440284124, - 0.00010523234950244872, - 0.00010509487455326075, - 0.00010504579968924409, - 0.00010502965692721658, - 0.00010502575229792088, - 0.0001050264075985742, - 0.00010502877502107828, - 0.0001050318259847355, - 0.00010503507797842554, - 0.00010503844530674373, - 0.00010504192518199909, - 0.00010504541733272874, - 0.00010504897618370844, - 0.00010505260813691688, - 0.00010505635314138323, - 0.00010506015748190432, - 0.00010506410761445012, - 0.00010506810056640482, - 0.00010507224877256998, - 0.00010507655940960364, - 0.00010508102863672116, - 0.00010508577625279216, - 0.00010509077128498133, - 0.00010509608627561566, - 0.00010510162310234057, - 0.00010510750574280788, - 0.00010511373373712382, - 0.00010512028845523077, - 0.00010512724926908409, - 0.00010513489531996999, - 0.00010514312659073732, - 0.00010515203134687884, - 0.00010516169301901856, - 0.00010517234551980582, - 0.00010518422794702184, - 0.00010519759265211528, - 0.00010521260075245448, - 0.00010522906794047908, - 0.00010524803865124608, - 0.00010526965674271658, - 0.00010529480080479602, - 0.00010531088119469248, - 0.000105316740927441, - 0.00010531879182548684, - 0.00010531943418502165, - 0.00010531955944346242, - 0.00010531949843373108, - 0.00010531937933530053, - 0.00010531924520958454, - 0.00010531911830790172, - 0.0001053189867697033, - 0.00010531887775782488, - 0.000105318789355879, - 0.00010531868201936504, - 0.00010531857143590072, - 0.00010531846327764742, - 0.00010531835946547064, - 0.00010531826053598256, - 0.00010531816652066635, - 0.00010531807727198267, - 0.00010531799258406844, - 0.00010531791804825654, - 0.00010531789609125532, - 0.00010531784419768654, - 0.00010531778305247844, - 0.0001053177206196789, - 0.00010531765974851512, - 0.00010531760139264232, - 0.0001053175458069295, - 0.0001053174929917676, - 0.00010531744285785956, - 0.00010531739528718312, - 0.00010531735015540452, - 0.00010531730733997928, - 0.00010531726672294964, - 0.00010531722819178035, - 0.00010531719163948208, - 0.00010531715696447215, - 0.00010531712407035154, - 0.00010531709286566237, - 0.00010531706326363835, - 0.00010517241651138806, - 0.00010486102916439486, - 0.00010475018957547138, - 0.00010471460450488414, - 0.00010470699905962647, - 0.00010470997223241456, - 0.00010471713036864296, - 0.00010472616864600063, - 0.00010473612803124408, - 0.00010474662592784084, - 0.0001047579418449131, - 0.00010477003786902744, - 0.00010478283528001243, - 0.00010479667360640197, - 0.0001048111824585035, - 0.0001048265924617499, - 0.00010484361244327071, - 0.00010486222917286733, - 0.00010487958985193415, - 0.0001048871720852021, - 0.00010489015194061216, - 0.00010489141639478704, - 0.0001048920367231854, - 0.00010489241046098477, - 0.00010489268537172271, - 0.00010489291661180841, - 0.00010489312498994664, - 0.0001048933185639725, - 0.00010489350064741152, - 0.00010489367277829764, - 0.00010489383582053377, - 0.00010489399037297452, - 0.00010489413692184844, - 0.00010489427589799868, - 0.00010489440769880834, - 0.00010489453269698944, - 0.00010489465124448107, - 0.0001048947636744886, - 0.00010489487030281109, - 0.00010489497142887296, - 0.0001048950673366194, - 0.00010489515829533164, - 0.00010489524456039264, - 0.00010489532637400488, - 0.00010489540396587158, - 0.00010489547755384455, - 0.00010489554734453148, - 0.00010489561353388074, - 0.00010489567630772805, - 0.00010489573584232016, - 0.00010489579230480918, - 0.0001048958458537221, - 0.00010489589663940402, - 0.00010489594480444444, - 0.00010489599048407246, - 0.00010489603380654176, - 0.00010489607489348568, - 0.00010489611386026156, - 0.00010489615081627447, - 0.0001048961858652841, - 0.00010489621910569495, - 0.0001048962506308343, - 0.00010489628052921407, - 0.00010489630888477832, - 0.0001048963357771388, - 0.00010489636128180041, - 0.00010489638547037061, - 0.00010489640841076248, - 0.00010489643016738493, - 0.00010489645080132252, - 0.00010489647037050767, - 0.0001048964889298842, - 0.00010489650653155977, - 0.00010489652322495438, - 0.00010489653905693671, - 0.00010489655407195659, - 0.00010489656831217215, - 0.00010489658181756408, - 0.00010489659462605129, - 0.00010489660677359562, - 0.00010489661829430182, - 0.00010489662922051686, - 0.0001048966395829177, - 0.00010489664941059776, - 0.00010489665873115032, - 0.00010489666757074332, - 0.00010489667595419616, - 0.00010489668390504624, - 0.00010489669144561706, - 0.00010489669859707898, - 0.0001048967053795106, - 0.00010489671181195608, - 0.00010489671791247436, - 0.00010489672369819411, - 0.00010489672918535924, - 0.00010489673438937571, - 0.00010489673932485418, - 0.00010489674400565268, - 0.00010489674844491257, - 0.0001048967526550974, - 0.00010489675664802888, - 0.0001048967604349169, - 0.00010489676402639386, - 0.00010489676743254352, - 0.0001048967706629296, - 0.00010489677372662114, - 0.00010489677663221994, - 0.00010489677938788387, - 0.00010489678200135012, - 0.000104896784479957, - 0.00010489678683066248, - 0.00010477144862109506, - 0.00010468455244745324, - 0.00010465244112524094, - 0.00010464096585225398, - 0.00010463711399123448, - 0.00010463606479029908, - 0.000104636034006077, - 0.00010463636188202548, - 0.00010463680504437478, - 0.00010463727427027055, - 0.00010463773737719059, - 0.00010463818326209988, - 0.00010463860858625544, - 0.00010463901284632928, - 0.00010463939655114591, - 0.0001046397605484265, - 0.00010464010577731883, - 0.00010464043317851093, - 0.00010464074366261563, - 0.00010464103810004341, - 0.00010464131731875793, - 0.00010464158210486589, - 0.00010464183320419123, - 0.00010464207132413188, - 0.0001046422971355704, - 0.00010464251127472768, - 0.00010464271434494548, - 0.0001046429069183797, - 0.00010464308953761309, - 0.00010464326271718237, - 0.00010464342694502748, - 0.00010464358268386704, - 0.00010464373037250128, - 0.00010464387042704836, - 0.00010464400324211736, - 0.00010464412919192014, - 0.00010464424863132509, - 0.00010464436189685796, - 0.00010464446930764744, - 0.00010464457116632906, - 0.00010464466775989306, - 0.000104644759360495, - 0.00010464484622622388, - 0.00010464492860182725, - 0.00010464500671940112, - 0.00010464508079904512, - 0.0001046451510494818, - 0.0001046452176686443, - 0.00010464528084423388, - 0.00010462068519313488, - 0.00010427181295500936, - 0.00010411264400817606, - 0.00010405455228570407, - 0.00010403406253490678, - 0.00010402744137089368, - 0.00010402590417703406, - 0.00010402620168406917, - 0.00010402713354211348, - 0.00010402825773043968, - 0.0001040294128217796, - 0.00010403054114348476, - 0.00010403162332237544, - 0.00010403265406055673, - 0.0001040336331735528, - 0.00010403456227787171, - 0.00010403544356958261, - 0.00010403627937667914, - 0.00010403707199765097, - 0.00010403782364577527, - 0.00010403853643233832, - 0.0001040392123640659, - 0.00010403985334562741, - 0.00010404046118383824, - 0.00010404103759232188, - 0.00010404158419618, - 0.00010404210253651833, - 0.00010404259407476534, - 0.00010404306019678886, - 0.00010404350221679715, - 0.00010404392138104667, - 0.00010404431887135084, - 0.00010404469580841598, - 0.00010404505325499924, - 0.00010404539221890508, - 0.0001040457136558268, - 0.00010404601847204151, - 0.0001040463075269654, - 0.00010404650498512534, - 0.00010404661243675733, - 0.00010404679979190824, - 0.00010404701215132187, - 0.00010404722639601904, - 0.00010404743432543879, - 0.0001040476332663997, - 0.00010404782257325204, - 0.00010404800233310396, - 0.00010404817288744716, - 0.00010404833465595142, - 0.00010404848807206028, - 0.00010404863355993766, - 0.00010404877152667606, - 0.00010404890236011636, - 0.00010404902642871304, - 0.0001040491440821138, - 0.00010404925565197968, - 0.00010404936145285504, - 0.00010404946178303337, - 0.00010404955692538766, - 0.00010404964714816608, - 0.0001040497327057474, - 0.00010404981383935832, - 0.00010404989077775064, - 0.00010404996373784862, - 0.0001040500329253602, - 0.0001040500985353564, - 0.00010405016075282168, - 0.00010405021975317626, - 0.00010405027570276804, - 0.00010405032875934417, - 0.00010405037907249636, - 0.00010405042678407944, - 0.0001040504720286145, - 0.0001040505149336662, - 0.0001040505556202038, - 0.00010405059420294176, - 0.00010405063079066111, - 0.00010405066548652004, - 0.00010405069838834142, - 0.00010405072958889126, - 0.00010405075917613776, - 0.00010405078723350048, - 0.00010405081384008658, - 0.00010405083907091208, - 0.0001040508629971136, - 0.00010405088568615081, - 0.00010405090720199367, - 0.00010405092760530555, - 0.00010405094695361269, - 0.00010405096530146603, - 0.00010405098270059784, - 0.00010405099920006341, - 0.0001040510148463821, - 0.00010405102968366839, - 0.00010405104375375563, - 0.00010405105709631312, - 0.00010414975633615905, - 0.0001045630631996176, - 0.00010471623222623167, - 0.00010477181324500002, - 0.00010479121923559224, - 0.00010479729917552346, - 0.00010479850599664971, - 0.00010479796390553104, - 0.00010479682590201088, - 0.00010479551589205476, - 0.00010479418819362862, - 0.00010479289752143026, - 0.0001047916618651646, - 0.00010479048574468668, - 0.00010478936880710564, - 0.0001047883090015368, - 0.00010478730374817544, - 0.00010478635036565874, - 0.00010478544622430576, - 0.00010478458879819113, - 0.00010478377568003934, - 0.0001047830045825823, - 0.00010478227333513362, - 0.00010478157987858524, - 0.00010478092226002162, - 0.00010478029862737228, - 0.00010477970722425169, - 0.0001047791463850343, - 0.00010477861453016964, - 0.00010477811016173816, - 0.000104777631859232, - 0.00010477717827555589, - 0.0001047767481332328, - 0.0001047763402208057, - 0.00010477595338942647, - 0.00010477558654962006, - 0.00010477523866821407, - 0.00010477490876543424, - 0.00010477459591213741, - 0.0001047742992272014, - 0.0001047740178750396, - 0.00010477375106325016, - 0.00010477349804038123, - 0.00010477325809381709, - 0.00010477303054777004, - 0.0001047728147613774, - 0.00010477261012689542, - 0.00010477241606799072, - 0.0001047722320381143, - 0.00010477205751896143, - 0.00010477189201901569, - 0.00010477173507216164, - 0.00010477158623637248, - 0.00010477144509246541, - 0.00010477131124292208, - 0.00010477118431076629, - 0.00010477106393850596, - 0.00010477094978712414, - 0.0001047708415351228, - 0.00010477073887762017, - 0.00010477064152549092, - 0.00010477054920455151, - 0.00010477046165478885, - 0.0001047703786296265, - 0.0001047702998952314, - 0.00010477022522985576, - 0.00010477015442321106, - 0.00010477008727587708, - 0.00010477002359873954, - 0.00010476996321245683, - 0.00010476990594695762, - 0.00010476985164095768, - 0.0001047698001415096, - 0.00010476975130356996, - 0.00010476970498959085, - 0.00010476966106913384, - 0.00010476961941850053, - 0.00010476957992038518, - 0.00010476954246354502, - 0.00010476950694248732, - 0.00010476947325716868, - 0.00010476944131271898, - 0.00010476941101916896, - 0.00010476938229119932, - 0.00010476935504790041, - 0.00010476932921254427, - 0.00010476930471236756, - 0.00010476928147836809, - 0.00010476925944510944, - 0.00010476923855053696, - 0.0001047692187358028, - 0.0001047691999451006, - 0.00010476918212550764, - 0.00010476916522683766, - 0.00010476914920149586, - 0.0001047691340043492, - 0.00010476911959259643, - 0.00010476910592564724, - 0.00010476909296501081, - 0.00010476908067418376, - 0.00010476906901855151, - 0.000104769057965286, - 0.00010476904748325623, - 0.00010476903754294172, - 0.00010476902811634549, - 0.00010476901917691956, - 0.00010476901069948549, - 0.00010476900266016851, - 0.00010476899503632575, - 0.00010476898780648522, - 0.00010476898095028564, - 0.00010476897444841685, - 0.00010476896828256663, - 0.00010476896243536976, - 0.0001047689568903577, - 0.00010476895163191357, - 0.00010476894664522766, - 0.00010476894191625552, - 0.00010476893743167798, - 0.00010476893317886484, - 0.0001047689291458384, - 0.00010476892532124058, - 0.00010476892169429884, - 0.00010476891825479864, - 0.00010476891499305307, - 0.0001047689118998751, - 0.00010476890896655447, - 0.00010476890618482864, - 0.00010476890354686284, - 0.00010476890104522809, - 0.00010476889867287895, - 0.0001047688964231332, - 0.00010476889428965528, - 0.00010476889226643596, - 0.00010476889034777712, - 0.00010476888852827576, - 0.00010476888680280656, - 0.00010476888516651028, - 0.00010476888361477824, - 0.00010476888214324019, - 0.0001047688807477517, - 0.00010476887942438227, - 0.0001047688781694053, - 0.00010476887697928585, - 0.00010476887585067246, - 0.00010476887478038583, - 0.00010476887376541215, - 0.00010476887280289244, - 0.00010476887189011596, - 0.00010476887102451269, - 0.00010476887020364384, - 0.00010476886942519783, - 0.0001047688686869818, - 0.00010476886798691723, - 0.00010476886732303217, - 0.00010476886669345676, - 0.00010476886609641812, - 0.00010476886553023472, - 0.00010476886499331188, - 0.00010476886448413752, - 0.0001047688640012771, - 0.00010476886354337091, - 0.00010476886310912991, - 0.00010476886269733079, - 0.0001047688623068131, - 0.00010476886193647773, - 0.00010476886158528146, - 0.00010476886125223488, - 0.0001047688609364006, - 0.00010476886063688852, - 0.00010476886035285539, - 0.00010476886008350132, - 0.00010476885982806748, - 0.00010476885958583442, - 0.00010476885935611936, - 0.00010476885913827708, - 0.00010476885893169288, - 0.00010476885873578514, - 0.00010476885855000092, - 0.00010476885837381888, - 0.0001047688582067414, - 0.00010476885804829936, - 0.00010476885789804549, - 0.00010476885775555658, - 0.00010478919980170332, - 0.00010493703150124352, - 0.0001050006378777066, - 0.00010502379765446329, - 0.0001050319472076702, - 0.00010503456581688584, - 0.00010503515910015746, - 0.00010503502265355954, - 0.00010503463468657043, - 0.0001050341711277128, - 0.00010503369614776352, - 0.00010503323262742237, - 0.00010503278821928763, - 0.0001050323649853096, - 0.00010503196295930003, - 0.00010503158146257071, - 0.00010503121958861212, - 0.0001050308763805206, - 0.00010503055089487376, - 0.00010503024222369499, - 0.00010502994950100672, - 0.00010502967190376064, - 0.0001050294086507625, - 0.00010502915900093903, - 0.00010502892225141698, - 0.0001050287129688021, - 0.00010502852062257422, - 0.00010502832625324256, - 0.000105028148217341, - 0.000105027981377589, - 0.00010502784344937364, - 0.00010502769273289979, - 0.0001050275423354416, - 0.00010502739748933349, - 0.00010502729430923496, - 0.00010502717643962257, - 0.00010502705619403262, - 0.00010502693902912512, - 0.00010502682675979156, - 0.00010502672600578227, - 0.00010502663858013467, - 0.00010502654742598072, - 0.0001050264579125198, - 0.00010502640164159716, - 0.00010502633844846175, - 0.00010502626739279929, - 0.00010502619588842712, - 0.00010502612655487606, - 0.00010502606024033344, - 0.0001050259971440114, - 0.00010502593723099755, - 0.00010502588038539446, - 0.0001050258264666724, - 0.00010502577696389136, - 0.00010502574732213784, - 0.00010502570843433182, - 0.00010502566739602071, - 0.00010502562693918829, - 0.0001050255880036256, - 0.00010502554544977124, - 0.00010502404668274692, - 0.00010502294244513745, - 0.00010502220395900356, - 0.00010502158688463869, - 0.00010502099878325667, - 0.00010502039690592923, - 0.00010501987432617398, - 0.0001050196462936229, - 0.00010501955539587964, - 0.0001050195157858095, - 0.00010501949545904856, - 0.00010501948255879527, - 0.00010501947268382769, - 0.00010501946419167886, - 0.00010501945646114208, - 0.00010501944924949648, - 0.00010501944245469996, - 0.00010501943602738264, - 0.00010501942993825993, - 0.00010501942416604668, - 0.00010501941869295695, - 0.00010501941753697082, - 0.0001050194179294498, - 0.00010501941521121874, - 0.00010501941148622222, - 0.00010501940752930934, - 0.00010501940361988132, - 0.00010501939985440812, - 0.0001050193962620428, - 0.00010501939284737642, - 0.0001050193896062333, - 0.0001050193865314986, - 0.0001050193836152575, - 0.00010501938084957347, - 0.00010501937822675896, - 0.00010501937573946651, - 0.00010501937338070441, - 0.00010501937114383571, - 0.00010501936902256272, - 0.00010501936701091259, - 0.00010501936510322025, - 0.00010501936329411391, - 0.00010501936157849832, - 0.00010501935995154244, - 0.00010501935840866464, - 0.00010501935694551926, - 0.00010501935555798653, - 0.00010501935424215848, - 0.00010501935299432991, - 0.00010501935181098646, - 0.00010501935068879643, - 0.0001050193496245982, - 0.00010501934861539616, - 0.00010501934765834762, - 0.00010501934675075717, - 0.00010501934589006936, - 0.00010501934507386028, - 0.00010501934429983123, - 0.00010501934356580201, - 0.00010501934286970658, - 0.0001050193422095836, - 0.000105019341583574, - 0.00010501934098991598, - 0.00010501934042693696, - 0.00010501933989305168, - 0.00010501933938675579, - 0.00010501933890662484, - 0.0001050193384513062, - 0.0001050193380195176, - 0.00010501933761004289, - 0.00010501933722172879, - 0.00010501933685348173, - 0.00010501933650426524, - 0.00010501933617309567, - 0.00010501933585904024, - 0.00010501933556121432, - 0.00010501933527877972, - 0.00010501933501094092, - 0.00010501933475694308, - 0.00010501933451607156, - 0.00010501933428764787, - 0.00010501933407102856, - 0.00010501933386560331, - 0.00010501933367079452, - 0.000105019333486053, - 0.00010501933331085868, - 0.00010501933314471767, - 0.000105019332987163, - 0.00010501933283774996, - 0.00010501933269605856, - 0.00010501933256168901, - 0.00010501933243426435, - 0.00010501933231342408, - 0.00010501933219882878, - 0.00010501933209015532, - 0.00010501933198709753, - 0.00010501933188936639, - 0.00010501933179668487, - 0.000105019331708794, - 0.00010501933162544488, - 0.00010501933154640252, - 0.00010501933147144542, - 0.00010501933140036213, - 0.00010501933133295191, - 0.00010501933126902568, - 0.00010501933120840276, - 0.00010501933115091308, - 0.0001050193310963936, - 0.00010501933104469207, - 0.00010501933099566206, - 0.00010501933094916647, - 0.00010501933090507288, - 0.00010501933086325816, - 0.00010501933082360459, - 0.00010501933078600009, - 0.00010501933075033884, - 0.000105019330716521, - 0.00010501933068445029, - 0.00010501933065403703, - 0.00010501933062519505, - 0.00010501933059784408, - 0.00010501933057190642, - 0.0001050193305473092, - 0.00010501933052398368, - 0.00010501933050186292, - 0.00010501933048088524, - 0.00010501933046099191, - 0.0001050193304421264, - 0.0001050193304242358, - 0.00010501933040727021, - 0.00010501933039118101, - 0.00010501933037592332, - 0.00010501933036145395, - 0.00010501933034773276, - 0.00010501933033472033, - 0.0001050193303223804, - 0.0001050193303106783, - 0.00010501933029958028, - 0.00010501933028905666, - 0.00010501933027907654, - 0.00010501933026961234, - 0.00010501933026063688, - 0.00010501933025212569, - 0.00010501933024405406, - 0.00010501933023639966, - 0.00010501933022914066, - 0.0001050193302222568, - 0.00010501933021572895, - 0.00010501933020953832, - 0.00010501933020366784, - 0.00010501933019810022, - 0.0001050193301928206, - 0.00010501933018781362, - 0.00010501933018306564, - 0.000105019330178563, - 0.00010501933017429294, - 0.00010501933017024368, - 0.00010501933016640392, - 0.00010501933016276203, - 0.00010501933015930859, - 0.00010501933015603361, - 0.00010501933015292784, - 0.00010501933014998253, - 0.0001050193301471896, - 0.0001050193301445409, - 0.0001050193301420289, - 0.00010501933013964696, - 0.00010501933013738784, - 0.00010501933013524577, - 0.00010501933013321446, - 0.00010501933013128812, - 0.00010501933012946121, - 0.00010501933012772859, - 0.00010501933012608572, - 0.00010501933012452748, - 0.00010501933012305, - 0.00010501933012164884, - 0.00010501933012031984, - 0.0001050193301190598, - 0.00010501933011786484, - 0.00010501933011673155, - 0.00010501933011565683, - 0.00010501933011463785, - 0.00010501933011367112, - 0.00010501933011275483, - 0.00010501933011188556, - 0.0001050193301110614, - 0.00010501933011027972, - 0.00010501933010953844, - 0.00010501933010883536, - 0.00010501933010816891, - 0.00010501933010753681, - 0.00010501933010693715, - 0.00010501933010636866, - 0.00010501933010582952, - 0.00010501933010531826, - 0.00010501933010483338, - 0.0001050193301043735, - 0.0001050193301039375, - 0.00010501933010352392, - 0.00010501933010313193, - 0.00010501933010275996, - 0.00010501933010240733, - 0.000105019330102073, - 0.00010501933010175568, - 0.00010501933010145494, - 0.00010501933010116968, - 0.00010501933010089922, - 0.00010501933010064282, - 0.00010501933010039948, - 0.0001050193301001688, - 0.00010501933009995, - 0.00010501933009974264, - 0.00010501933009954593, - 0.00010501933009935936, - 0.00010501933009918234, - 0.00010501933009901468, - 0.00010501933009885552, - 0.0001050193300987047, - 0.00010501933009856153, - 0.000105019330098426, - 0.00010501933009829716, - 0.00010501933009817502, - 0.00010501933009805931, - 0.00010501933009794954, - 0.00010501933009784562, - 0.000105019330097747, - 0.00010501933009765328, - 0.0001050193300975646, - 0.00010501933009748055, - 0.0001050193300974004, - 0.00010501933009732502, - 0.0001050193300972533, - 0.0001050193300971854, - 0.00010501933009712058, - 0.000105019330097059, - 0.00010501933009700154, - 0.00010501933009694592, - 0.00010501933009689424, - 0.00010501933009684517, - 0.0001050193300967981, - 0.0001050193300967536, - 0.00010501933009671124, - 0.00010501933009667061, - 0.00010501933009663284, - 0.00010501933009659736, - 0.00010501933009656226, - 0.00010501933009653095, - 0.00010501430045781612, - 0.00010501059822599412, - 0.0001050092260963923, - 0.00010500873475791512, - 0.00010500856929926147, - 0.00010500852383289482, - 0.00010500852204537979, - 0.00010500853567699654, - 0.00010500855428745492, - 0.00010500857404304832, - 0.0001050085935582635, - 0.00010500861235366945, - 0.00010500863028409208, - 0.00010500864732663465, - 0.00010500866350214702, - 0.00010500867884618666, - 0.00010500869339832444, - 0.00010500870719825507, - 0.00010500872028442544, - 0.00010500873269359069, - 0.00010500874446071582, - 0.00010500875561899643, - 0.00010500876619992724, - 0.00010500877623337792, - 0.0001050087857476754, - 0.00010500613432424921, - 0.00010495164408048337, - 0.00010492111486058858, - 0.00010490431623216392, - 0.00010489247145747127, - 0.00010488204980709615, - 0.00010487166094233944, - 0.00010486120061012236, - 0.00010485456599950913, - 0.00010485223734462364, - 0.00010485158168386574, - 0.00010485153744235148, - 0.00010485171007011844, - 0.00010485195348839832, - 0.00010485221392389352, - 0.000104852471876397, - 0.00010485272055614732, - 0.000104852957872761, - 0.00010485318345966175, - 0.0001048533975695656, - 0.00010485360066515792, - 0.00010485379326804144, - 0.00010485397590359578, - 0.0001048541490814266, - 0.0001048543132889916, - 0.00010485446899007603, - 0.00010485461662502362, - 0.0001048547566115847, - 0.00010485488934594783, - 0.00010485501520380799, - 0.00010485513454140517, - 0.00010485524769653036, - 0.000104855354989475, - 0.00010485545672393844, - 0.00010485555318788698, - 0.00010485564465436756, - 0.00010485573138228168, - 0.00010485581361711858, - 0.00010485589159164898, - 0.0001048406033212444, - 0.00010482402443879212, - 0.00010481782580105771, - 0.00010481563066687124, - 0.00010481491825309104, - 0.000104814751289436, - 0.00010481478188060799, - 0.00010481488105796644, - 0.00010481500116284957, - 0.00010481512472748857, - 0.00010481524548674956, - 0.00010481536132529464, - 0.0001048154716583116, - 0.00010481557645910924, - 0.00010481567589844753, - 0.00010481577021107128, - 0.00010481585964661616, - 0.0001048159444518341, - 0.00010481602486442563, - 0.00010481610111116231, - 0.00010481617340758084, - 0.00010481624195824234, - 0.00010481630695717935, - 0.00010481636858839937, - 0.00010481642702638408, - 0.00010481648243657876, - 0.00010481653497586034, - 0.00010481658479297516, - 0.00010481663202896384, - 0.0001048166768175609, - 0.00010481671928556977, - 0.00010481675955322452, - 0.0001048167977345304, - 0.00010481683393758572, - 0.00010481686826488688, - 0.00010481690081362138, - 0.00010481693167594017, - 0.00010481696093921918, - 0.00010481698868630849, - 0.00010481701499576451 - ], - [ - 0.27710783850728266, - 0.7877526868139513, - 0.7324860564758943, - 0.4512365336408757, - 0.473321365615943, - 0.469838687171929, - 0.4688151072995142, - 0.4678092358174101, - 0.4684109895904727, - 0.4703303677620912, - 0.4715780334030818, - 0.4719671429626188, - 0.4719185598910381, - 0.4718156216716689, - 0.4723363069174829, - 0.4718878026548353, - 0.4715732959589931, - 0.470948934684629, - 0.4700255746800121, - 0.4691470892790446, - 0.4689090382624603, - 0.467928720765729, - 0.4672979948035821, - 0.4664757634330996, - 0.4659133877236777, - 0.466054075891454, - 0.4659792140701944, - 0.4660566462373031, - 0.4662562197012425, - 0.4660690669498026, - 0.4659707544770298, - 0.4658043015277015, - 0.4655884386652867, - 0.4653920373785665, - 0.4647260548289322, - 0.4644134429954774, - 0.4642754933105169, - 0.4640576689281447, - 0.4637851339308215, - 0.4633514661526656, - 0.4630656467024086, - 0.4627615494426264, - 0.4624756090153329, - 0.4625498748049848, - 0.4625428231853498, - 0.4624903598513244, - 0.462411594171691, - 0.4623189121579771, - 0.4622123285870417, - 0.4621208023626913, - 0.4620025563766467, - 0.4619197449208511, - 0.4618420278543192, - 0.4615413987015431, - 0.461500886641234, - 0.4616299073261427, - 0.4615410016746671, - 0.4613377904860769, - 0.461130713895606, - 0.4609195004702552, - 0.4607112989705957, - 0.4604930686069169, - 0.4602612601001502, - 0.4600209714168373, - 0.4597542336406866, - 0.4594628534155928, - 0.4591715692977762, - 0.4588583654851964, - 0.4584997677916216, - 0.4581278489175573, - 0.4577302307910905, - 0.4573070016694519, - 0.4568439020345018, - 0.4563563533759893, - 0.4562584669669712, - 0.4563018625512282, - 0.4563346173414168, - 0.456359206562685, - 0.4563853640083724, - 0.4564112959658989, - 0.4564355493247929, - 0.4564592352002061, - 0.4564800759423678, - 0.4565003236576182, - 0.4565169427161432, - 0.45653172504289796, - 0.4565461644852225, - 0.45655989130034796, - 0.4565735260705302, - 0.4565939260789901, - 0.4566076709440612, - 0.4566154102669988, - 0.4566252303057198, - 0.456633699938957, - 0.4566411664752808, - 0.4566484017636823, - 0.4566543099498385, - 0.4566601034113891, - 0.4566651661194166, - 0.4566695711251413, - 0.4662239612063392, - 0.4734727946367118, - 0.4749106439881501, - 0.4766809706087031, - 0.478429004940437, - 0.4800276906359312, - 0.4816165016446787, - 0.4831388731384931, - 0.4846136822940989, - 0.4861428387793619, - 0.4873894061184204, - 0.4886168416784125, - 0.4896627795397773, - 0.4904273728477701, - 0.4911595713175562, - 0.4918711277140956, - 0.4925736251978392, - 0.4932305402078866, - 0.4938969225665117, - 0.4945333648526693, - 0.4951357353680232, - 0.4956336058770259, - 0.4961127641052671, - 0.4965648432929482, - 0.497017223770668, - 0.497452055061356, - 0.497876596857323, - 0.4982913945853025, - 0.4986771422793128, - 0.4989987432042878, - 0.4992616518140823, - 0.4995508481348777, - 0.4998137106154492, - 0.5000596505809104, - 0.5002944571122456, - 0.5005147015752556, - 0.5007227835409719, - 0.5009167678494211, - 0.5011001287546225, - 0.5012721361861768, - 0.5014311946836056, - 0.5015724291959863, - 0.5017043813175525, - 0.5018022952750183, - 0.5018853444622029, - 0.5019540506644858, - 0.5020045027136499, - 0.5020624033969218, - 0.5021998628864249, - 0.5023180312707464, - 0.5023825613839205, - 0.5024361488579772, - 0.5024875089925753, - 0.5025360128345275, - 0.5025819974206339, - 0.5026251908464199, - 0.5026659294079882, - 0.5027040568304979, - 0.5027404903666061, - 0.5027753542251088, - 0.5028081296701564, - 0.5028389535912466, - 0.5028682468666115, - 0.5028959474527065, - 0.5029219441100927, - 0.5029465734156636, - 0.5029696993420543, - 0.50299157893111, - 0.5030122087400164, - 0.5030317156934341, - 0.5030501461146933, - 0.5030675228174155, - 0.5030839521954945, - 0.5030994676948738, - 0.5031141227418083, - 0.5031279843418038, - 0.503141031938048, - 0.5031533696252816, - 0.5031650285000014, - 0.5031760386394708, - 0.5031864311181291, - 0.5031962643192903, - 0.5032055249086123, - 0.5032142807865739, - 0.5032225502573062, - 0.5032303595621618, - 0.5032377342690753, - 0.5032447242767875, - 0.5032512826817938, - 0.5032574890853997, - 0.5032633511624682, - 0.5032688872263903, - 0.5032741153872377, - 0.5032790527611122, - 0.5032837155114087, - 0.5032881189039498, - 0.5032922773569525, - 0.5032962044879626, - 0.503299916067781, - 0.5033034162558279, - 0.5033067302668472, - 0.5033098494018265, - 0.5033127994746454, - 0.5033155857243002, - 0.5033182169585646, - 0.5033207017956343, - 0.5033230483791825, - 0.503325264399255, - 0.5033273571183121, - 0.5033293333950951, - 0.5033312194382729, - 0.5033329668345159, - 0.5033346292461853, - 0.5033362015468432, - 0.5033376864704264, - 0.5033390887618531, - 0.5033404130200073, - 0.5033416635870247, - 0.5033428445629884, - 0.5033439598198923, - 0.5033450130143448, - 0.5033460075995851, - 0.5033469468367271, - 0.5033478338055024, - 0.5033486714142936, - 0.5033494624097172, - 0.5033502093855525, - 0.5033509147913073, - 0.503351580940195, - 0.5033522100167308, - 0.5033528040838866, - 0.5033533650898584, - 0.5033538948744511, - 0.5033543951750857, - 0.5033548676325307, - 0.5033553137962343, - 0.5033557351294556, - 0.5033561330140036, - 0.5033565087548264, - 0.5033568635842409, - 0.5033571986659943, - 0.5033575150990743, - 0.5033578139213035, - 0.5033580961127854, - 0.5033583625990387, - 0.5033586142541214, - 0.5033588519033982, - 0.5033590763263711, - 0.5033592882590987, - 0.5033594883967144, - 0.503359677395664, - 0.5033598558758496, - 0.5033600244226838, - 0.5033601835889899, - 0.5033603338968434, - 0.5033604758392521, - 0.5033606098817974, - 0.5033607364641218, - 0.5033608560014377, - 0.5033609688858289, - 0.5033610754875555, - 0.5033611761562915, - 0.5033612712222335, - 0.50336139437143, - 0.5033614532172875, - 0.5033615314710537, - 0.5033616082655596, - 0.5033616808908611, - 0.5033617494691808, - 0.5033618142299222, - 0.5033618753863015, - 0.5033619331389659, - 0.5033619876773435, - 0.503362039180331, - 0.5033620878168609, - 0.503362133746464, - 0.5033621771198035, - 0.5033622180791499, - 0.5033622567588592, - 0.5033622932858024, - 0.5033623277797891, - 0.5033623603539775, - 0.5033623911152049, - 0.5033624201643803, - 0.5033624475967823, - 0.5033624735023979, - 0.5033624979662079, - 0.5033625210684508, - 0.5033625428849108, - 0.5033625634871446, - 0.5033625829427372, - 0.5033626013154964, - 0.5033626186656979, - 0.5033626350502521, - 0.5033626505229041, - 0.5033626651343928, - 0.5033626789326694, - 0.50336269196298, - 0.5033627042680667, - 0.5033627158883037, - 0.503362726861806, - 0.5033627372245502, - 0.5033627470105426, - 0.5033627562518873, - 0.503362764978894, - 0.5033627732201802, - 0.5033627810027862, - 0.5033627883522489, - 0.503362795292659, - 0.5033628018467889, - 0.5033628080361493, - 0.5033628138810208, - 0.5033628194005965, - 0.5033628246129668, - 0.5033628295352374, - 0.5033628341835512, - 0.5033628385731566, - 0.503362842718452, - 0.5033628466330343, - 0.503362850329742, - 0.5033628538207122, - 0.5033628571173775, - 0.5033628602305659, - 0.5033628631704872, - 0.503362865946789, - 0.5033628685685575, - 0.5033628710444185, - 0.5033628733824785, - 0.5033628755904118, - 0.5033628776754588, - 0.5033628796444515, - 0.5033628815038698, - 0.5033628832597922, - 0.5033628849179869, - 0.5033628864838926, - 0.5033628879626459, - 0.5033628893590963, - 0.5033628906778268, - 0.5033628919231683, - 0.5033628930991818, - 0.5033628942097589, - 0.5033628952585083, - 0.5033628962489075, - 0.5033628971841684, - 0.5033628980673857, - 0.5033628989014467, - 0.5033628996890798, - 0.5033629004328811, - 0.5033629011352787, - 0.5033629017985929, - 0.5033629024249846, - 0.5033629030165142, - 0.5033629035751128, - 0.5033629041026307, - 0.5033629046007868, - 0.5033629050712135, - 0.5033629055154716, - 0.5033629059349908, - 0.5033629063311629, - 0.5033629067052909, - 0.5033629070585918, - 0.5033629073922338, - 0.5033629077073027, - 0.5033629080048377, - 0.5033629082858121, - 0.5033629085511441, - 0.5033629088017109, - 0.5033629090383352, - 0.5033629092617912, - 0.5033629094727979, - 0.5033629096720763, - 0.5033629098602544, - 0.5033629100379594, - 0.5033629102057848, - 0.5033629103642545, - 0.5033629105139187, - 0.5033629106552402, - 0.5033629107887035, - 0.5033629109147357, - 0.5033629110337553, - 0.5033629111461501, - 0.5033629112522897, - 0.5033629113525254, - 0.5033629114471765, - 0.5033629115365608, - 0.5033629116209731, - 0.5033629117006791, - 0.5033629117759559, - 0.5033629118470473, - 0.5033629119141703, - 0.5033629119775674, - 0.503362912037434, - 0.5033629120939731, - 0.5033629121473583, - 0.5033629121977724, - 0.5033629122453778, - 0.5033629122903429, - 0.5033629123327985, - 0.5033629123728974, - 0.5033629124107591, - 0.5033629124465121, - 0.5033629124802814, - 0.503362912512165, - 0.5033629125422789, - 0.5033629125707116, - 0.5033629125975619, - 0.5033629126229268, - 0.5033629126468689, - 0.5033629126694881, - 0.5033629126908411, - 0.5033629127110101, - 0.5033629127300552, - 0.5033629127480383, - 0.5033629127650288, - 0.5033629127810625, - 0.5033629127962037, - 0.5033629128105063, - 0.503362912824011, - 0.5033629128367746, - 0.5033629128488175, - 0.5033629128601925, - 0.5033629128709344, - 0.503362912881075, - 0.5033629128906579, - 0.5033629128997112, - 0.5033629129082485, - 0.5033629129163149, - 0.5033629129239295, - 0.5033629129311292, - 0.5033629129379198, - 0.5033629129443432, - 0.5033629129503951, - 0.5033629129561209, - 0.5033629129615189, - 0.5033629129666195, - 0.503362912971438, - 0.50336291297599, - 0.5033629129802819, - 0.5033629129843474, - 0.5033629129881751, - 0.5033629129917948, - 0.5033629129952055, - 0.5033629129984393, - 0.5033629130014875, - 0.5033629130043699, - 0.5033629130070818, - 0.5033629130096471, - 0.5033629130120731, - 0.5033629130143604, - 0.5033629130165198, - 0.5033629130185635, - 0.5033629130204925, - 0.5033629130223113, - 0.5033629130240255, - 0.5033629130256542, - 0.5033629130271875, - 0.5033629130286367, - 0.5033629130299998, - 0.5033629130312908, - 0.5033629130325105, - 0.5033629130336686, - 0.5033629130347479, - 0.5033629130357786, - 0.5033629130367454, - 0.5033629130376568, - 0.5033629130385273, - 0.5033629130393451, - 0.5033629130401135, - 0.5033629130408402, - 0.5033629130415285, - 0.5033629130421804, - 0.503362913042785, - 0.5033629130433661, - 0.5033629130439213, - 0.5033629130444363, - 0.5033629130449251, - 0.5033629130453822, - 0.503362913045822, - 0.5033629130462296, - 0.5033629130466141, - 0.5033629130469793, - 0.5033629130473251, - 0.5033629130476578, - 0.5033629130479595, - 0.5033629130482551, - 0.50336291304853, - 0.5033629130487891, - 0.503362913049031, - 0.503362913049261, - 0.5033629130494766, - 0.5033629130496865, - 0.5033629130498819, - 0.5033629130500611, - 0.5033629130502503, - 0.5033629130504074, - 0.5033629130505598, - 0.5033629130507177, - 0.5033629130508488, - 0.5033629130509748, - 0.5034553051943468, - 0.5156601814763266, - 0.5179910699559792, - 0.5185791304745997, - 0.518662327998772, - 0.5181746526784186, - 0.5179956696829622, - 0.5177924031909518, - 0.5175933250977929, - 0.5174157790690084, - 0.5160934173384716, - 0.5157664515448427, - 0.5155303952368376, - 0.5153215801539219, - 0.5151271972672418, - 0.5149319316216587, - 0.5147377971588267, - 0.5145568415881732, - 0.5143894461770023, - 0.5142292616814891, - 0.5140730858977899, - 0.513921600221724, - 0.5137786174721564, - 0.5136473803911049, - 0.5135301672890045, - 0.5134762435583161, - 0.5133938454854305, - 0.5133046630444532, - 0.5132173917583018, - 0.5131339299602597, - 0.5130546766609425, - 0.5129559105622071, - 0.5128838227777266, - 0.5128150958807305, - 0.5127501978842106, - 0.5126881117918423, - 0.5126318601506807, - 0.5125769261281016, - 0.512524433097395, - 0.5124746155211516, - 0.5124027163262552, - 0.5123515137131509, - 0.5123075224229765, - 0.5122672368988536, - 0.5122292320197044, - 0.5121933307441283, - 0.5121592954155699, - 0.5121270632112467, - 0.5120963891087961, - 0.5120674206528048, - 0.5120397990972151, - 0.5120137198343396, - 0.5119888447737765, - 0.5119653248499145, - 0.5119430100391086, - 0.5119218540085466, - 0.5119017172678668, - 0.5118826863438527, - 0.5118645500708893, - 0.5118473896647859, - 0.5118311697433848, - 0.5118156407350093, - 0.5118010073194105, - 0.5117870495099123, - 0.5117739295127662, - 0.5117613263851767, - 0.5117493977501155, - 0.5117381608214827, - 0.5117274679441767, - 0.5117172792562258, - 0.5117076039443921, - 0.5116984384047271, - 0.5116897893392687, - 0.5116815491277559, - 0.5116736950908339, - 0.5116662635409416, - 0.5116592390563742, - 0.5116525578240481, - 0.5116461841530987, - 0.5116401407310627, - 0.5116344235126137, - 0.5116290294749902, - 0.5116238930832115, - 0.5116189776511939, - 0.511614322227562, - 0.5116099063901206, - 0.5116057551347742, - 0.511601784929071, - 0.5115980043626767, - 0.5115944203450592, - 0.5115910474930646, - 0.5115878702608687, - 0.5115847894963804, - 0.5115818782255128, - 0.5115791184755031, - 0.5115765177969853, - 0.5115740456010872, - 0.5115716863567155, - 0.5115694471885105, - 0.5115673218289438, - 0.5115653044478495, - 0.5115633895448454, - 0.5115615719081791, - 0.5115598653163131, - 0.5115582399737342, - 0.5115566837996994, - 0.5115552082321095, - 0.511553808024245, - 0.5115524790367277, - 0.5115512175695909, - 0.5115500541812927, - 0.5115489047852235, - 0.5115478566109669, - 0.5115468321240512, - 0.5115458606400057, - 0.5115449387477067, - 0.5115440637352737, - 0.5115432331709432, - 0.5115424447839108, - 0.5115416964285479, - 0.5115409860708411, - 0.5115403117807844, - 0.5115396717266288, - 0.5115390641697175, - 0.5115384874597529, - 0.5115379400302735, - 0.5115374203943981, - 0.5115369271407653, - 0.5115364589297224, - 0.5115360144896685, - 0.511535592613555, - 0.511535192155677, - 0.5115348120285161, - 0.511534451199772, - 0.5115341086895846, - 0.5115337835678531, - 0.5115334749517126, - 0.5115331985334391, - 0.5115329142087477, - 0.5115326472837909, - 0.5115323962054619, - 0.5115321584950879, - 0.511531933015536, - 0.5115317190254093, - 0.5115315159098387, - 0.5115313231084502, - 0.5115311400954268, - 0.5115309663732772, - 0.5115308014701633, - 0.5115306449383329, - 0.5115304963527778, - 0.5115303553100919, - 0.5115302214273477, - 0.5115300943410536, - 0.5115300081756468, - 0.5115298930978407, - 0.5115297842528241, - 0.5115296810596265, - 0.5115295831383496, - 0.5115294901966757, - 0.5115294019753533, - 0.5115293182330539, - 0.5115292387419554, - 0.511529163286132, - 0.5115290916607044, - 0.5115290236712069, - 0.5115289591330814, - 0.5115288978711093, - 0.5115342889446264, - 0.5115263458994868, - 0.5114324726047333, - 0.5114276330187573, - 0.511427174037865, - 0.5114279180091411, - 0.5114289483276092, - 0.5114300106924673, - 0.5114310409563805, - 0.511432024462217, - 0.5114329593460413, - 0.5114338469782711, - 0.5114346894777833, - 0.5114354890687525, - 0.5114362479176986, - 0.5114369680952932, - 0.5114376515705235, - 0.5114383002131049, - 0.5114389157977742, - 0.5114395000089523, - 0.5114400544452753, - 0.5114405806239644, - 0.5114410799849554, - 0.5114415538948266, - 0.5114420036505594, - 0.5114424304830348, - 0.5114428355604577, - 0.5114432199914972, - 0.5114435848283418, - 0.5114439310695645, - 0.5114442596628795, - 0.5114445715076955, - 0.5113903015402785, - 0.5099980661176755, - 0.5089808878846092, - 0.5088444280668036, - 0.5089725035409688, - 0.5091567001485292, - 0.5093472359672347, - 0.509541080775589, - 0.5096553918256118, - 0.5097455729879027, - 0.5098264276379196, - 0.5099021091640009, - 0.5099738648576957, - 0.5100421480288133, - 0.5101071916390455, - 0.5101691641446441, - 0.5102282119571812, - 0.5102844711335868, - 0.5103380707128116, - 0.5104027980288992, - 0.5104461262718429, - 0.5104894788143073, - 0.5105329507219808, - 0.5105749622189892, - 0.510615137171696, - 0.5106534411710019, - 0.5106899294466182, - 0.5107246785512796, - 0.5107577679956992, - 0.5107892753987606, - 0.5108192752907864, - 0.5108478389011222, - 0.5108750342080094, - 0.5109009260553214, - 0.5109255762834701, - 0.5109490438602875, - 0.5109713850081085, - 0.5109926533261067, - 0.5112361169893235, - 0.5111433720723985, - 0.5111376302879761, - 0.5111556346886985, - 0.5111791158008719, - 0.5112031770240861, - 0.5112265404125174, - 0.5112489020982514, - 0.5112702190159054, - 0.5112905166137754, - 0.5113098370741838, - 0.5113282254271614, - 0.5113457258812518, - 0.5113623809065847, - 0.5113782310574679, - 0.511393314991089, - 0.5114076695364909, - 0.5114213297741953, - 0.51143432911598, - 0.5114466993822251, - 0.5114584708760013, - 0.5114696724540356, - 0.5114803315944298, - 0.5113732856262496, - 0.5112614570167945, - 0.5112329723858385, - 0.5112360228515018, - 0.5112471440368366, - 0.5112599370690201, - 0.5112727041670715, - 0.5112850117536496, - 0.5112967650999329, - 0.5113079595456914, - 0.5113186136526947, - 0.5113287512768043, - 0.5113383967919826, - 0.5113475738488653, - 0.5113563050817693, - 0.5113646120688587, - 0.511372515358598, - 0.5113800345123412, - 0.5113871881495632, - 0.5113939939922528, - 0.5114004689076325, - 0.5114066289488777, - 0.5114124893940712, - 0.5114180647832168, - 0.5114233689536465, - 0.5114284150736425, - 0.5114332156745682, - 0.5114377826814229, - 0.5114421274419706, - 0.5114462607545287, - 0.5114501928943359, - 0.5114539336388038, - 0.5114574922914435, - 0.5114608777047526, - 0.5114640983019136, - 0.5114671620975831, - 0.5114700767175229, - 0.5114728494174684, - 0.511475487100948, - 0.511477996336346, - 0.5114803833730842, - 0.5114826541570807, - 0.5114848143454244, - 0.5114868693203453, - 0.5114888242025549, - 0.5114906838638911, - 0.5114924529393994, - 0.5114941358387924, - 0.5114957367573914, - 0.5114972596865179, - 0.5114987084233814, - 0.5115000865805169, - 0.5115013975947306, - 0.5115026447356519, - 0.5115038311138306, - 0.511504959688456, - 0.5115060332747428, - 0.5115070545508871, - 0.5115080260647608, - 0.5115089502402028, - 0.5115098293830942, - 0.5115106656870565, - 0.5115114612389143, - 0.5115122180239058, - 0.5115129379306099, - 0.5115136227556552, - 0.5115142742081797, - 0.5115148939140848, - 0.5115154834201205, - 0.5115160441976809, - 0.5115165776465224, - 0.5115170850982136, - 0.5115175678194722, - 0.5115180270153151, - 0.511518463832066, - 0.5115188793602148, - 0.5115192746371122, - 0.5115196506495935, - 0.5115200083364159, - 0.5115203485905913, - 0.5115206722616309, - 0.5115209801576817, - 0.5115212730474817, - 0.5115215516623308, - 0.5115218166978944, - 0.511522068815944, - 0.5115223086460132, - 0.5115225367869572, - 0.5115227538084319, - 0.5115229602523714, - 0.5115231566342642, - 0.5115233434445117, - 0.5115235211495972, - 0.5115236901932869, - 0.5115238509977038, - 0.5115240039644251, - 0.5115241494754306, - 0.511524287894103, - 0.5115244195661071, - 0.5115245448202789, - 0.5115246639694118, - 0.5115247773110464, - 0.5115248851282564, - 0.5115249876902911, - 0.5115250852532822, - 0.5115251780608896, - 0.511525266344892, - 0.5115253503257615, - 0.5115254302132439, - 0.5115255062068459, - 0.5115255784963637, - 0.5115256472623354, - 0.5115257126765052, - 0.5115257749022329, - 0.5115258340949357, - 0.5114711361890399, - 0.5114717691460678, - 0.5114719773353033, - 0.5114720454332279, - 0.5114720750285121, - 0.5114720937318372, - 0.511472108986649, - 0.5114721228169269, - 0.5114721357903742, - 0.5114721480825163, - 0.5114721597624665, - 0.5114721708697013, - 0.5114721814347154, - 0.5114721914846357, - 0.5114722010447397, - 0.5113432929500547, - 0.5112992548181144, - 0.5112881543144786, - 0.5112871460594208, - 0.5112887594057343, - 0.5112909828006157, - 0.5112932820898192, - 0.5112955185526, - 0.5112976591100844, - 0.5112996987637732, - 0.5151392851352905, - 0.5185269343122164, - 0.5201102183791361, - 0.5212435657727383, - 0.5223208918235527, - 0.5233727339479093, - 0.5244340682046721, - 0.5253769239743843, - 0.5262439559899423, - 0.5269630834221678, - 0.5275210667996441, - 0.5280659769607796, - 0.5285904121336022, - 0.5291433963372457, - 0.5296769782929657, - 0.5302408977950858, - 0.5307880095180209, - 0.5313257991617407, - 0.5317973980620233, - 0.532212155628933, - 0.532555766496898, - 0.5329184289970496, - 0.5332861247672332, - 0.5336416955670766, - 0.5339929395867208, - 0.5343577100835816, - 0.5347206989983975, - 0.5350493338831456, - 0.5353331791492544, - 0.5356542371604982, - 0.5359345296074516, - 0.5361930629721761, - 0.5364516593957506, - 0.5366792852564897, - 0.5368636714417648, - 0.5370403909500682, - 0.5372089114330189, - 0.5373700454326692, - 0.5375234302691907, - 0.5376675059758463, - 0.5378055277342992, - 0.537948079287996, - 0.5381089776142391, - 0.5382663094193315, - 0.5384219398766379, - 0.5385856109454147, - 0.5387476911508212, - 0.5388661721051162, - 0.5389607221266592, - 0.5390429526056627, - 0.5391225081670851, - 0.5391985453095774, - 0.5392839295310714, - 0.5393912778855285, - 0.5395004042767181, - 0.539611395623395, - 0.5397258032148801, - 0.5398036757167031, - 0.5398569495057921, - 0.5399073001638292, - 0.5399549115966059, - 0.5400002788770373, - 0.5400434851864272, - 0.5400846258073754, - 0.5401237967203306, - 0.5401803606286569, - 0.5402566701589686, - 0.5403330642051419, - 0.5404115110051115, - 0.5404922047476759, - 0.5405766109079752, - 0.5406181789856429, - 0.5406425922388067, - 0.5406680408774434, - 0.540692939950145, - 0.5407168429937331, - 0.5407396562527452, - 0.5407613896598085, - 0.5407820823389797, - 0.5408017804199079, - 0.540820530486713, - 0.5408383776965823, - 0.5408553652908559, - 0.5408715345190087, - 0.5408869246827124, - 0.5409015734321245, - 0.5409154745365901, - 0.5409286716781564, - 0.5409412361695111, - 0.5409531956201423, - 0.5409645782814085, - 0.5409754116680454, - 0.5409857221604235, - 0.5409955349285505, - 0.5410048739507256, - 0.54101376205873, - 0.5410222209889389, - 0.5410302714336246, - 0.5410379330904594, - 0.5410452247099915, - 0.537190209834293, - 0.5344457233419697, - 0.5331442217924963, - 0.5323001531752345, - 0.5314805234402215, - 0.5307534839882031, - 0.5301669503976973, - 0.5296167748378258, - 0.5289713709354801, - 0.5284734205901389, - 0.5280116592352144, - 0.5275608933596342, - 0.5271250013900888, - 0.5264653342189715, - 0.525986643958407, - 0.5256351662488694, - 0.5252188703303565, - 0.5248914291516037, - 0.524580136161553, - 0.5242418135278903, - 0.5239442697183084, - 0.5236729742306462, - 0.5234195963298955, - 0.5232608721226609, - 0.5230340454641113, - 0.5228196297185589, - 0.5225609123392223, - 0.5223528304672339, - 0.5221583161341592, - 0.5219795669275826, - 0.5218129660480685, - 0.5216557628112253, - 0.5215067612696535, - 0.5213653678228798, - 0.5212311859254704, - 0.5211037463046763, - 0.5209827171004734, - 0.5208677852914945, - 0.5207585934773657, - 0.5206548993723487, - 0.5205563747688863, - 0.5204627714669448, - 0.5203738413598622, - 0.5202893423679413, - 0.5202090210915565, - 0.5198956458895636, - 0.5198487237155122, - 0.5197522855747153, - 0.5196867733461648, - 0.5196226075233804, - 0.5195610534764568, - 0.5195023700096351, - 0.5194465272810942, - 0.5193934165139089, - 0.5193429110049383, - 0.5192948836807124, - 0.5192492119674327, - 0.5192057789677216, - 0.5191644735720103, - 0.5191251902717485, - 0.5190878288979354, - 0.5190522943495041, - 0.5190184963296204, - 0.5189863490947878, - 0.518955771217058, - 0.5189266853594634, - 0.5188990180635664, - 0.5188726995488212, - 0.5188476635227256, - 0.5188238470013607, - 0.518801190139646, - 0.5187796360706355, - 0.5187011957472613, - 0.5185983526278208, - 0.5185369257704406, - 0.5185243092924691, - 0.5185084615448023, - 0.518492237383641, - 0.5184764662998651, - 0.5181664507258393, - 0.5181328604530288, - 0.5181104480983942, - 0.5180953315534997, - 0.518082792521618, - 0.5180713989197736, - 0.5180607144407043, - 0.5181324291583537, - 0.5181090356405704, - 0.518095500860271, - 0.5180860834431921, - 0.518078138938992, - 0.5180708754281155, - 0.5180640503455338, - 0.5180575814945442, - 0.5180514338582728, - 0.5180455866749113, - 0.5180400238421411, - 0.5180347311030344, - 0.5180296952040695, - 0.5180249036274912, - 0.5178538727187582, - 0.5178533288264603, - 0.5178501488494961, - 0.5178462675737535, - 0.5178423252305854, - 0.5178385016243443, - 0.5178348423312393, - 0.5178313542798192, - 0.5178280334874386, - 0.5178787063132839, - 0.5178505984934207, - 0.5178400756724104, - 0.5177987330323739, - 0.5177942897915023, - 0.5177923169933145, - 0.5177911158318775, - 0.5177901686553305, - 0.5177893240529723, - 0.5177299565469698, - 0.5177292085351234, - 0.5177284982261706, - 0.5177278228187832, - 0.517757093788155, - 0.5177439478665975, - 0.5177404866106311, - 0.5177399164656142, - 0.5177401603535949, - 0.5177406190920396, - 0.5177411208679218, - 0.5177416170613985, - 0.5177420945293748, - 0.5177425503154471, - 0.5177429843599126, - 0.5177433973996785, - 0.5176851463639097, - 0.5176855221955303, - 0.5176858797294877, - 0.5176862198544534, - 0.5176865434174059, - 0.5176868512245667, - 0.5176871440430322, - 0.5176874226025786, - 0.5176876875974982, - 0.5175918090939683, - 0.5175920505769058, - 0.5175922803005513, - 0.517592498837502, - 0.5175927067324586, - 0.5175929045036262, - 0.517593092643952, - 0.517593271622404, - 0.5175934418851253, - 0.5175936038565007, - 0.5175937579402828, - 0.5175939045205633, - 0.517594043962727, - 0.5175941766143584, - 0.5175943028061264, - 0.5175944228526133, - 0.5175945370530578, - 0.5175946456921466, - 0.5175947490406897, - 0.5175948473563263, - 0.5175949408841497, - 0.517595029857298, - 0.5175951144975713, - 0.5175951950159781, - 0.5175952716132366, - 0.5175953444803035, - 0.5175954137988182, - 0.5175954797415964, - 0.5175955424730248, - 0.5175956021494986, - 0.5175956589197668, - 0.5175957129253904, - 0.5175957643009697, - 0.5180057289871631, - 0.5179878838601257, - 0.5179792502337656, - 0.5179774380365684, - 0.5179776007015761, - 0.5179782984645269, - 0.5179791183496059, - 0.5179799431273512, - 0.5179807405569617, - 0.5179815027691986, - 0.5179822288358323, - 0.5179829197597767, - 0.5179835770374505, - 0.5179842022482465, - 0.5179847969393838, - 0.5179853625954757, - 0.5179859006324143, - 0.5179154289244322, - 0.5179026797429345, - 0.5178998645850997, - 0.5179000560768819, - 0.5179010647485401, - 0.5179022616479221, - 0.5177957010495937, - 0.5190418816471262, - 0.5197518520217695, - 0.5199534810092352, - 0.5195739626601844, - 0.5194640151860515, - 0.5193647821492597, - 0.5192765541827018, - 0.5191939570752722, - 0.5191177578186237, - 0.5190458827340575, - 0.5189799665539003, - 0.5189173288328341, - 0.5188607383324656, - 0.5188083343214309, - 0.5187621619221687, - 0.5187232815427141, - 0.5186859032941502, - 0.5186572678189045, - 0.5186375136694218, - 0.5177939094807352, - 0.5177541548533335, - 0.5177156505030889, - 0.5176790317688555, - 0.5176440098210882, - 0.5176107718728591, - 0.5175793227530926, - 0.5175498732134574, - 0.5175213342282836, - 0.5174944626573985, - 0.5174690677307547, - 0.5174452410832042, - 0.5174220580899412, - 0.5174004504768219, - 0.5173798777685388, - 0.5173604672542316, - 0.5173420104756198, - 0.5173245422884449, - 0.5173080995932892, - 0.5172921089491374, - 0.5172771157143892, - 0.5172629326661364, - 0.5172496546498956, - 0.5172370167925328, - 0.5172247534019343, - 0.5172134287250207, - 0.5172023997603669, - 0.5171921198773684, - 0.5171825487287526, - 0.5171731269084197, - 0.5171642585688311, - 0.5171560177351316, - 0.5171481676302117, - 0.5171409607813304, - 0.5171337127105337, - 0.5171269485339807, - 0.5171204721762328, - 0.5171146447960915, - 0.5171088284812362, - 0.5171032885427387, - 0.517098046298378, - 0.5170933847341131, - 0.5170887450861342, - 0.5170842560456347, - 0.5170800116388651, - 0.5170759900177263, - 0.5170721764852789, - 0.5170686875158576, - 0.5170653515647179, - 0.517062085519784, - 0.5170591555657742, - 0.5170562064530236, - 0.5170534216294098, - 0.5170507851141875, - 0.5170486249243396, - 0.5170463002671755, - 0.5170440329040066, - 0.5170418956064431, - 0.5170399159873384, - 0.5170379984337651, - 0.5170361797837271, - 0.5170344545996785, - 0.5170328179620731, - 0.5170312652852873, - 0.5170298697928967, - 0.5170284722985624, - 0.5170271464738572, - 0.517025888641195, - 0.5170247237353806, - 0.5170236436174745, - 0.5170228795541356, - 0.517021824963063, - 0.5170208475017576, - 0.5170199291056339, - 0.5170190608526285, - 0.5170182381573455, - 0.5170174579983138, - 0.5170167179610351, - 0.5170160159086244, - 0.5170153498660959, - 0.5170147179775918, - 0.5170141184884967, - 0.5170135497362811, - 0.5170130101443884, - 0.5170124982173926, - 0.5170120125366315, - 0.5170116077691289, - 0.5170111706116369, - 0.5170107558664478, - 0.5170103623843686, - 0.5170099890751618, - 0.5170096349044737, - 0.5170092988910278, - 0.5170091018651974, - 0.5170088107738029, - 0.5170085237062835, - 0.517008251447248, - 0.5170079931775282, - 0.5170077481589261, - 0.5170075157049187, - 0.5170072951689026, - 0.5170070859390403, - 0.5170068874354053, - 0.5170066991079879, - 0.517006520435051, - 0.5170063509216251, - 0.5170061900981259, - 0.5170060375190477, - 0.5170058927617392, - 0.5170057554251966, - 0.5170056251289955, - 0.5170055015122097, - 0.5170053842324205, - 0.5170052729647517, - 0.5170051674009951, - 0.5170050672487426, - 0.5170049722305817, - 0.5170048820833105, - 0.5170047965572273, - 0.5170047154154309, - 0.5170046384331699, - 0.5170045653972039, - 0.5170044961052384, - 0.5170044303653338, - 0.5170043679954129, - 0.5170043088227063, - 0.5170042526833253, - 0.5170041994217688, - 0.5170041488905056, - 0.5170041009495759, - 0.5170040554661932, - 0.5170040123143829, - 0.517003971374608, - 0.5170039325334858, - 0.5170038956834323, - 0.5170038607223739, - 0.517003827553483, - 0.5170037960848941, - 0.5170037662294314, - 0.5170037379044112, - 0.5170037110313791, - 0.5170036855359034, - 0.5170036613473665, - 0.5170036383987683, - 0.5170036166265591, - 0.5170035959704227, - 0.517003576373156, - 0.5170035577804675, - 0.5170035401408711, - 0.51700352340551, - 0.5170035075280182, - 0.5170034924644406, - 0.5170034781730408, - 0.5170034646142412, - 0.5170034517504795, - 0.5170034395461355, - 0.5170034279674023, - 0.5170034169822081, - 0.517003406560132, - 0.5170033966723114, - 0.5170033872913478, - 0.5170033783912642, - 0.5170033699474152, - 0.5170033619364087, - 0.5170033543360546, - 0.5170033471253058, - 0.517003340284191, - 0.5170033337937587, - 0.5170033276360364, - 0.5170033217939659, - 0.5170033162513671, - 0.5170033109928877, - 0.5170033060039644, - 0.5170033012707861, - 0.5170032967802266, - 0.5170032925198681, - 0.5170032884778964, - 0.517003284643123, - 0.5170032810049211, - 0.5170032775532206, - 0.5169646934550768, - 0.5189819116807601, - 0.518514740302223, - 0.5184222749064342, - 0.5184599840398774, - 0.5185080188948574, - 0.5185625191196527, - 0.5186174465478705, - 0.5186707890317824, - 0.5187219270207494, - 0.5187707231373657, - 0.5188172046328458, - 0.5188614527068148, - 0.5189035640294681, - 0.5194457420687971, - 0.5194766659720939, - 0.519510325441658, - 0.5195440149132734, - 0.5195766514865132, - 0.519607906968285, - 0.5196377156933201, - 0.5196661012883849, - 0.5196931163214513, - 0.5197188213467758, - 0.5197432776914305, - 0.5197665450321413, - 0.5197886806393176, - 0.5197568317329421, - 0.5197767639971241, - 0.5197957260521426, - 0.5198137649034602, - 0.5198309253020864, - 0.5198472498493075, - 0.5198627790976597, - 0.5198009154215378, - 0.5198038125980113, - 0.51981373130978, - 0.519825869667454, - 0.5198383604013639, - 0.5197722356767449, - 0.5197839293464929, - 0.5197950925227759, - 0.5198057249023896, - 0.5198158432138779, - 0.5198254693096909, - 0.5198360464917415, - 0.5197206126996478, - 0.5197062742500388, - 0.5197086116997576, - 0.5197164444750038, - 0.5197258479976684, - 0.5197354719419175, - 0.5197448619908053, - 0.5197538750902174, - 0.5197624758486303, - 0.5197706656675508, - 0.5197784580943379, - 0.5197858702708205, - 0.5197929199858501, - 0.5197996246780651, - 0.5198060011164044, - 0.5198120653154108, - 0.5198178325308921, - 0.5198233172825121, - 0.519828533384483, - 0.5198334939780856, - 0.5198382115637212, - 0.5198426980317826, - 0.5198469646922595, - 0.5198510223028755, - 0.519728140645478, - 0.5196838164429002, - 0.5196731086594355, - 0.5196743984111529, - 0.5196796145750804, - 0.5195992378352523, - 0.5196044325347322, - 0.5196102767089141, - 0.5196162701270773, - 0.5196221217887531, - 0.5196277390637365, - 0.5196330988441104, - 0.5196382017391625, - 0.5194525604323704, - 0.5194927117341134, - 0.5194970690862022, - 0.519501212452479, - 0.5195051522732625, - 0.519508898517451, - 0.5195124606795415, - 0.5195158477937021, - 0.5195190684531487, - 0.5192648174592482, - 0.5192502167656083, - 0.5192469179884961, - 0.5192482468435853, - 0.5192510671685329, - 0.5192542892837677, - 0.5192575405588663, - 0.5192606970574412, - 0.5192637209104577, - 0.5193626995905605, - 0.5193625936689721, - 0.5191067744903034, - 0.5191090779998323, - 0.519111511392322, - 0.5191139094848866, - 0.5190179869446846, - 0.5190201952054508, - 0.5190222983335775, - 0.5190242991946492, - 0.5190262020183011, - 0.5190280113487217, - 0.5190297316881429, - 0.5190313673804983, - 0.5190329225780859, - 0.51903440123672, - 0.519035807120408, - 0.5190371438090472, - 0.5190384147068663, - 0.5190396230508293, - 0.519040771918797, - 0.5190418642372873, - 0.5190429027889273, - 0.5190438902194953, - 0.5190448290446426, - 0.5190457216563151, - 0.5190465703287849, - 0.5190473772244686, - 0.5190481443994038, - 0.5190488738084905, - 0.51904956731046, - 0.5190502266725897, - 0.5190508535752115, - 0.5190514496159924, - 0.519052016313964, - 0.5189291008446, - 0.5189296133914683, - 0.5189301007053541, - 0.5189305640283213, - 0.5189310045413146, - 0.5189314233671584, - 0.5189318215734077, - 0.5189322001751034, - 0.5189325601373114, - 0.5189329023775958, - 0.518933227768395, - 0.5189335371391572, - 0.518933831278546, - 0.5189341109363891, - 0.5189343768256047, - 0.5199443113344568, - 0.5199428169363794, - 0.519842657214541, - 0.5198421443595977, - 0.5198421279898199, - 0.5198423298754338, - 0.5198425977493971, - 0.5198428787898076, - 0.5198431551395175, - 0.5198434210568336, - 0.5198436749825052, - 0.5198439167875186, - 0.5198441468189443, - 0.5198443655698151, - 0.5198445735654603, - 0.5198447713250075, - 0.5198449593488028, - 0.5198451381149649, - 0.5198453080788769, - 0.5198454696737919, - 0.5198456233117194, - 0.5197882087409689, - 0.5197883475269375, - 0.5197884794789775, - 0.5197886049335803, - 0.5197887242106859, - 0.5197888376144529, - 0.5197889454340862, - 0.5197890479445533, - 0.5197891454072657, - 0.5197892380707816, - 0.5199289471602256, - 0.5199250173398263, - 0.5199234491000922, - 0.5199231099900012, - 0.5199231906863169, - 0.5199234073115779, - 0.5199236618138324, - 0.5198182246570233, - 0.5198184766176542, - 0.5198187181974682, - 0.5198189485833286, - 0.5198191678669547, - 0.519819376435631, - 0.5198195747616979, - 0.5198197633303823, - 0.5198199426155344, - 0.5198201130720388, - 0.5198202751338855, - 0.5198204292142147, - 0.5219650995597, - 0.5239658338632602, - 0.525008096328311, - 0.5256977591117586, - 0.5262502843152267, - 0.5267415312157402, - 0.5271984200351764, - 0.5276307971647038, - 0.5280258510524903, - 0.5283996159104846, - 0.5287565847713401, - 0.5290956281971859, - 0.5294187761648771, - 0.5297274656951044, - 0.5300221825997751, - 0.5303026929459277, - 0.5305684017093872, - 0.5308183957110638, - 0.5309698364627905, - 0.53119753793932, - 0.5314147141463739, - 0.5316217681082936, - 0.5318191241886646, - 0.5320072037175911, - 0.5321864165431951, - 0.5323571582913477, - 0.5325198096414868, - 0.5326747363223929, - 0.5328222893713707, - 0.5329628054941484, - 0.5330966074661355, - 0.5332240045520518, - 0.533345292933925, - 0.5334607561424167, - 0.5335706654881671, - 0.533675280490942, - 0.5337735112510115, - 0.5338667884099533, - 0.5339556052002012, - 0.5340401342052852, - 0.534120565220828, - 0.5341970883822371, - 0.5342280144238081, - 0.5342976842555511, - 0.5343639579158982, - 0.5344269981353802, - 0.5344869601626127, - 0.5345439920524583, - 0.534598234964814, - 0.5346032015302994, - 0.5346516870641879, - 0.5346978008871919, - 0.5347416553459761, - 0.534783359061453, - 0.5348230161093213, - 0.5348607258326484, - 0.5348964122568987, - 0.5349298200674052, - 0.5349616090738302, - 0.5349918417015643, - 0.5350205874996508, - 0.535047916920476, - 0.5350737551301896, - 0.5350980913256338, - 0.5351212262386249, - 0.5351432187831697, - 0.535164125039195, - 0.5351839983718797, - 0.5352028895553259, - 0.535220846893906, - 0.5352379163393289, - 0.5352541416028219, - 0.5352695642622461, - 0.5352842238644029, - 0.5352981580226127, - 0.5353114025097391, - 0.5353239913469283, - 0.5353359568881908, - 0.5353473299009925, - 0.5353581396430869, - 0.5353684139357116, - 0.5353781792333322, - 0.5353874606900455, - 0.5353962822228618, - 0.5354046665719842, - 0.5354126353581293, - 0.5354202091372117, - 0.5354274074523314, - 0.5354342488832948, - 0.5354407510937315, - 0.5354469308759825, - 0.5354528041937587, - 0.5354583862228008, - 0.5354636913895272, - 0.5354687334078171, - 0.5354735253140174, - 0.5354780795002656, - 0.5354824077461396, - 0.5354865212488185, - 0.5354904306517203, - 0.5328381379619763, - 0.5310375416979616, - 0.5301020843906454, - 0.5293982384898152, - 0.5287708225008623, - 0.5283307502009217, - 0.5279240235992891, - 0.5274164563597347, - 0.5270511578793772, - 0.5267060457265851, - 0.5263798867529723, - 0.526071555511073, - 0.525780006056325, - 0.5255042618355501, - 0.5252434092339086, - 0.5248471348164913, - 0.5246168351974705, - 0.5243940831854372, - 0.5241814541143847, - 0.5239794872650919, - 0.5237879747352188, - 0.5234346650816606, - 0.5232617123675961, - 0.5230978230919346, - 0.5229425050176385, - 0.5227952912481371, - 0.5226557409735865, - 0.5225234386258528, - 0.5223979925567089, - 0.5225436119502835, - 0.5223787032337531, - 0.522253651042855, - 0.5221487379721826, - 0.5220540065482469, - 0.5219658049425155, - 0.5218827059318778, - 0.5218040642903189, - 0.5217295147929003, - 0.5216587972719189, - 0.5215050217338999, - 0.52144109283454, - 0.5213804180495935, - 0.5213228275343178, - 0.5212681610448209, - 0.5212162671073745, - 0.5211670024206274, - 0.5211202313578507, - 0.5208581129803107, - 0.5208283417704173, - 0.5207916745408349, - 0.5207536379613779, - 0.5207163984676016, - 0.5206806439386249, - 0.5206465510275042, - 0.5206141225862688, - 0.5205833043285911, - 0.52055402505323, - 0.5205262104144409, - 0.5204997875436773, - 0.5204746865124554, - 0.5204508407093837, - 0.5204281868485693, - 0.5204066648572888, - 0.5203862177282573, - 0.5203667913656881, - 0.5203483344348715, - 0.5203307982183316, - 0.5203141364792346, - 0.5202983053321174, - 0.5202832631205123, - 0.5202689703012299, - 0.5202553893348449, - 0.5202424845820954, - 0.5202302222058172, - 0.5201391200509362, - 0.5201351691351154, - 0.5201270125192614, - 0.5201174545078698, - 0.5201077446410853, - 0.5200983004270935, - 0.5200892502561593, - 0.5200806234232889, - 0.5200724157482648, - 0.5200646122040904, - 0.5200571946970458, - 0.5200501447196223, - 0.5199732106251949, - 0.5199668841654724, - 0.5199607980509554, - 0.5199549858921099, - 0.5199494522111681, - 0.5199441894591439, - 0.5199391863521643, - 0.5199344307488395, - 0.5199299106223783, - 0.5199256143756996, - 0.519921530930674, - 0.5196564927068671, - 0.5196526723379484, - 0.5194657235164121, - 0.5194562648349015, - 0.5194508600279886, - 0.5194472189272655, - 0.5194442767631798, - 0.5194416593354726, - 0.5194392333226585, - 0.5194369487736955, - 0.5193263752893517, - 0.5193243167596532, - 0.5193223610310975, - 0.5193205024361447, - 0.5193187359642814, - 0.5193170569832442, - 0.5193154611353391, - 0.5193139442944396, - 0.5193125025443607, - 0.519311132164961, - 0.5193098296211514, - 0.5193085915533117, - 0.5193074147684522, - 0.5193062962318348, - 0.5193052330591558, - 0.5193042225090457, - 0.5193032619759641, - 0.5193023489834739, - 0.5193014811778496, - 0.5193006563219591, - 0.5192998722894916, - 0.5192991270594616, - 0.5192984187109992, - 0.5192977454183694, - 0.5192971054462592, - 0.5192964971452945, - 0.5192959189477863, - 0.5192953693636713, - 0.5191724680283315, - 0.5191548323043562, - 0.5191495969321006, - 0.5191486919160402, - 0.5191492352676766, - 0.519150235296769, - 0.5191513523882014, - 0.5191524715152468, - 0.5191535549403153, - 0.5191545914640451, - 0.5191555789422835, - 0.5191565182661803, - 0.5191574112920506, - 0.5191582601320464, - 0.5191590669135293, - 0.5191598336997529, - 0.5191605624659785, - 0.5191612550944993, - 0.5191619133760323, - 0.5191625390131369, - 0.5191631336242046, - 0.5190684184949212, - 0.5190689579976365, - 0.5190694707449529, - 0.5190699580635088, - 0.5190704212141526, - 0.5190708613952818, - 0.5190712797458554, - 0.5190716773483968, - 0.5190720552317473, - 0.5190724143737622, - 0.5190727557038028, - 0.5190730801051587, - 0.5190733884173361, - 0.5190736814382266, - 0.5190739599261275, - 0.5190742246017797, - 0.5190744761501623, - 0.5190747152222882, - 0.5190749424369143, - 0.5190751583820944, - 0.5190753636167345, - 0.5190755586720145, - 0.5190757440527911, - 0.5190759202388632, - 0.5190760876862617, - 0.5190762468283895, - 0.5190763980771529, - 0.5190765418240472, - 0.5190766784411311, - 0.5190768082820335, - 0.5190769316828303, - 0.5190770489629418, - 0.5190771604259365, - 0.5190772663603361, - 0.5190773670403501, - 0.5190774627265827, - 0.5190775536667281, - 0.5190776400961837, - 0.5190777222386771, - 0.5190778003068299, - 0.5189836847472743, - 0.5189825143158511, - 0.5189819875824864, - 0.5188878713137184, - 0.5207274653902704, - 0.5209112430548658, - 0.5209584866627165, - 0.5205891097100795, - 0.5205436699482289, - 0.5205073876001087, - 0.5204759818009564, - 0.520447322261804, - 0.5204205697952304, - 0.5203953666125748, - 0.5203715357037477, - 0.5203489693930564, - 0.5203275879433317, - 0.5203073241026437, - 0.5202881172637861, - 0.5202699111898901, - 0.520252653066988, - 0.5202362930539556, - 0.5202207840224482, - 0.5202060813724101, - 0.5201921428807742, - 0.5201789285670446, - 0.5201664005696265, - 0.5201545230303641, - 0.5201432619859176, - 0.5201325852654793, - 0.5201224623942249, - 0.5201128645021963, - 0.5201037642382318, - 0.5200951356886886, - 0.520086954300645, - 0.5200791968093168, - 0.5200718411694729, - 0.5200648664905924, - 0.5200582529755599, - 0.5200519818626963, - 0.5200460353709646, - 0.5200403966480667, - 0.5200350497214432, - 0.5200299794518227, - 0.5200251714893626, - 0.5200206122320362, - 0.5200162887863481, - 0.5200121889300967, - 0.5200083010771288, - 0.5200046142439956, - 0.520001118018353, - 0.5199978025290817, - 0.5199946584179386, - 0.5199916768127569, - 0.5199888493020453, - 0.5199861679109282, - 0.5199836250783576, - 0.5199812136355367, - 0.5199789267854561, - 0.5199767580835405, - 0.5199747014192855, - 0.5199727509988561, - 0.5199709013286284, - 0.5199691471995674, - 0.5199674836724362, - 0.5199659060637593, - 0.5199644099325611, - 0.5199629910677478, - 0.5199616454761874, - 0.5199603693713865, - 0.5199591591627821, - 0.5199580114455715, - 0.519956922991067, - 0.5199558907375923, - 0.5199549117817952, - 0.5199539833704739, - 0.519953102892775, - 0.5199522678728216, - 0.5199514759627415, - 0.519950724936017, - 0.5199500126812129, - 0.5199493371960199, - 0.5199486965816034, - 0.5199480890372503, - 0.519947512855299, - 0.5199469664163079, - 0.5199464481845119, - 0.5199459567034828, - 0.5199454905920349, - 0.519945048540313, - 0.5199446293061439, - 0.5199442317115002, - 0.5199438546391982, - 0.5199434970297528, - 0.5199431578784032, - 0.5199428362322672, - 0.5199425311876759, - 0.5199422418876195, - 0.5199419675193574, - 0.519941707312089, - 0.5199414605348388, - 0.5199412264943518, - 0.5199410045331873, - 0.5199407940278363, - 0.5199405943869705, - 0.5199404050498214, - 0.5199402254845403, - 0.5199400551867454, - 0.5199398936781005, - 0.5199397405049594, - 0.5199395952370844, - 0.5199394574664624, - 0.5199393268061336, - 0.5199392028891135, - 0.5199390853673597, - 0.519938973910805, - 0.5199388682064043, - 0.5199387679572841, - 0.5199386728818866, - 0.5199385827132001, - 0.5199384971979727, - 0.5199384160960391, - 0.5199383391796425, - 0.5199382662327429, - 0.5199381970504896, - 0.5199381314385907, - 0.5199380692127733, - 0.5199380101982881, - 0.5199379542294009, - 0.5199379011489341, - 0.5199378508078157, - 0.5199378030646733, - 0.5199377577854275, - 0.5199377148429193, - 0.5199376741165576, - 0.519937635491965, - 0.5199375988606763, - 0.5199375641198233, - 0.5199375311718393, - 0.5199374999242072, - 0.5199374702891626, - 0.5199374421834926, - 0.5199374155282701, - 0.5199373902486354, - 0.5199373662736015, - 0.5199373435358434, - 0.5199373219715067, - 0.5199373015200343, - 0.5199372821239917, - 0.5199372637289156, - 0.5199372462831423, - 0.5199372297376915, - 0.5199372140460901, - 0.5199371991642763, - 0.5199371850504646, - 0.5199371716650196, - 0.5199371589703465, - 0.5199371469308006, - 0.5199371355125751, - 0.5199371246836035, - 0.5199371144134735, - 0.5199371046733486, - 0.5199370954358817, - 0.5199370866751184, - 0.5199370783664716, - 0.5199370704866001, - 0.5199370630133847, - 0.5199370559258333, - 0.5199370492040392, - 0.5199370428291397, - 0.519937036783217, - 0.5199370310493054, - 0.5199370256113058, - 0.519937020453934, - 0.5199370155627168, - 0.5199370109239136, - 0.5199370065245071, - 0.5199370023521338, - 0.5199369983950858, - 0.5199369946422396, - 0.5199369910830671, - 0.5199369877075697, - 0.5199369845062691, - 0.5199369814701774, - 0.5199369785907672, - 0.5199369758599526, - 0.5199369732700566, - 0.5199369708138233, - 0.5199369684843473, - 0.5199369662750833, - 0.5199369641798297, - 0.5199369621927062, - 0.5199369603081319, - 0.5199369585208099, - 0.5199369568257313, - 0.5199369552181242, - 0.5199369536934779, - 0.5199369522475128, - 0.5199369508761771, - 0.5199369495755981, - 0.5199369483421463, - 0.5199369471723463, - 0.5199369460629145, - 0.5198858744949403, - 0.5205461876114736, - 0.5203851646594179, - 0.5203637489049433, - 0.5204057746039824, - 0.5204268357534112, - 0.5204476695637174, - 0.520467845538391, - 0.520487156943314, - 0.5205055569943295, - 0.5205230573022732, - 0.5205396899494545, - 0.5205554933351774, - 0.5205705069321236, - 0.5205847693818928, - 0.5205983178400687, - 0.5206111877872149, - 0.5206234130119708, - 0.5205805638437861, - 0.5205838422251468, - 0.5205911926581457, - 0.5206003485165989, - 0.5206098646863897, - 0.5206192107308284, - 0.5205495348996071, - 0.5205581297851195, - 0.5205663094532869, - 0.5205740845508633, - 0.521055763354877, - 0.5210616584550296, - 0.5210678368937245, - 0.5210739492534978, - 0.521079846344367, - 0.5210854815788931, - 0.5210908465730331, - 0.5210959468128366, - 0.521100792553045, - 0.5211053954264274, - 0.5211097671930023, - 0.5211139192904878, - 0.5211178626841185, - 0.5211216078278575, - 0.5210664239395839, - 0.5210697766950149, - 0.5210729608567319, - 0.5210759848911916, - 0.5210788568409975, - 0.5210815843458579, - 0.521084174662644, - 0.5210866346844262, - 0.5210889709586325, - 0.5209705799396712, - 0.5209721355175884, - 0.5209738259625151, - 0.5209756420771154, - 0.5209774468588617, - 0.5208971232140399, - 0.5208987832412272, - 0.5209003639591683, - 0.5209018667153453, - 0.5209032944406123, - 0.5209046505374932, - 0.5209059384695901, - 0.5209071616134502, - 0.5207921769934793, - 0.5207932795293585, - 0.5207943265742682, - 0.5207953209188938, - 0.5207962652143052, - 0.5207971619785251, - 0.5207980136030785, - 0.5207988223592974, - 0.520799590404294, - 0.5208003197867325, - 0.520801012452233, - 0.5208016702485899, - 0.5208022949306247, - 0.5208028881649355, - 0.5208034515342601, - 0.5208039865417136, - 0.5208044946148127, - 0.5208049771092429, - 0.520805435312481, - 0.5208058704472409, - 0.5208062836746958, - 0.5208066760976027, - 0.5208070487632197, - 0.5208074026661123, - 0.5208077387507968, - 0.5207992112561982, - 0.5206861665438188, - 0.5206622611223887, - 0.5206552926169072, - 0.5206546723666029, - 0.5206563281012017, - 0.5206587402921108, - 0.5206613451205132, - 0.5205641815634693, - 0.5205666101276014, - 0.5205689874757231, - 0.5205712720064368, - 0.5205734514078694, - 0.5205755246185836, - 0.5205774946123279, - 0.5205793657032439, - 0.5205311621158111, - 0.5204227584737096, - 0.5204243428595907, - 0.5204258472762148, - 0.5204272757508799, - 0.5202498546745411, - 0.5202511486592581, - 0.5202523773147896, - 0.5202535439372732, - 0.5202546516568264, - 0.5202557034458235, - 0.5202567021268104, - 0.5202576503800543, - 0.5202585507506752, - 0.5202594056554601, - 0.5202602173893205, - 0.5202609881314275, - 0.5202617199510313, - 0.5202788901121205, - 0.5202795496505705, - 0.5202801758804698, - 0.5200223386756821, - 0.5200229072569048, - 0.5200234471219781, - 0.5200239597208256, - 0.520024446430194, - 0.5199260891144102, - 0.5199265286603284, - 0.5199269460056468, - 0.5199273422714435, - 0.5199277185221995, - 0.5199280757686662, - 0.5199284149705701, - 0.5199287370391862, - 0.5199290428397937, - 0.5199293331939707, - 0.5199296088818293, - 0.5199298706440904, - 0.5199301191840726, - 0.5199303551695804, - 0.5199305792346974, - 0.5199307919815056, - 0.5198065726953279, - 0.5198067646949104, - 0.5198069469957824, - 0.5198071200878266, - 0.5198072844361725, - 0.5198074404824786, - 0.5198075886460779, - 0.5198077293251421, - 0.5198078628977311, - 0.5198079897227993, - 0.519808110141182, - 0.5198082244765032, - 0.5198083330360358, - 0.5198084361115266, - 0.5198085339800099, - 0.5198086269045012, - 0.5198087151347417, - 0.5198087989078659, - 0.5198088784490223, - 0.5198089539719839, - 0.5198090256797351, - 0.5198090937650022, - 0.5198091584107739, - 0.5198092197908026, - 0.5198092780700571, - 0.5198093334051789, - 0.519809385944895, - 0.5198094358304152, - 0.5198094831958259, - 0.5198095281684304, - 0.5198095708691018, - 0.5197058950772825, - 0.519937711975829, - 0.5199376134231247, - 0.5199376095584071, - 0.5199376397742201, - 0.5199376811460872, - 0.5199377251737852, - 0.5199377687531815, - 0.5199378107955512, - 0.5199378509626472, - 0.5199378891935911, - 0.5199379255279389, - 0.5199379600397279, - 0.519937992812865, - 0.5199380239321435, - 0.5199380534799597, - 0.5199380815352854, - 0.5199381081733493, - 0.5199381334657055, - 0.5199381574803098, - 0.5199381802816949, - 0.5199382019311648, - 0.5199382224868939, - 0.5214154677678714, - 0.5226059273723489, - 0.5232910334653005, - 0.5237532619674847, - 0.5241226471170967, - 0.5244485793679596, - 0.5247499295027703, - 0.5250288014859454, - 0.5252783256576554, - 0.5255221861395147, - 0.5257481724456786, - 0.5259638774331554, - 0.5261697446718191, - 0.5263661798016928, - 0.5265535684198833, - 0.5267322824519933, - 0.5269026822874532, - 0.5270621522043255, - 0.5272136938251923, - 0.5273581586561157, - 0.5274958065813345, - 0.5276269185696928, - 0.5277517770781953, - 0.5278706585816014, - 0.5279838308563812, - 0.5280915520709539, - 0.5281940705702531, - 0.5282916249340485, - 0.5283844441486248, - 0.5284727478290709, - 0.5285567464668592, - 0.5286366416913318, - 0.5287126265393325, - 0.5287848857296319, - 0.5288535959395684, - 0.5289176003935763, - 0.5289782151070276, - 0.529035868039561, - 0.5290906806492481, - 0.529142781994071, - 0.529192300252827, - 0.5292393596021512, - 0.5292840791903031, - 0.5293265728969184, - 0.5293669493843666, - 0.5294053122546567, - 0.5294417602416381, - 0.5294763874122124, - 0.5295092833664253, - 0.5295405334328409, - 0.5295702188577326, - 0.529598416987639, - 0.5296252014452089, - 0.5296506422983313, - 0.5296748062226456, - 0.5296972446789648, - 0.5297183781117631, - 0.5297384586429765, - 0.5297575318379374, - 0.5297756453472529, - 0.5297928461494358, - 0.5298091795408522, - 0.5298246888225229, - 0.5298394152470801, - 0.5298533980610199, - 0.5298666745800518, - 0.5298792802742625, - 0.529891248854385, - 0.5299026123559714, - 0.5299134012204383, - 0.5299236443725888, - 0.5299333692946304, - 0.5299426020967619, - 0.5299513675844748, - 0.5299596893226635, - 0.5299675896966832, - 0.5299750899705326, - 0.5299822103422323, - 0.5299889699965558, - 0.5299953871552148, - 0.5300014791246472, - 0.5300072623414421, - 0.5300127524156355, - 0.5300179641718162, - 0.5300229116883011, - 0.5300276083343373, - 0.5300320668055414, - 0.5300362991575223, - 0.5300403168379352, - 0.5300441307168987, - 0.5300477511159346, - 0.5300511878354772, - 0.530054450180998, - 0.5300575469878923, - 0.5300604866450573, - 0.5300632771173568, - 0.5300659259669411, - 0.5300684403735207, - 0.5300708271536022, - 0.530073092778801, - 0.528350227000889, - 0.5271997996662093, - 0.5265800891482709, - 0.5261691951991713, - 0.5257173395069293, - 0.5254326769752629, - 0.5251720660446052, - 0.5249290582992758, - 0.5247009564726404, - 0.524486237067836, - 0.5242838502815698, - 0.5240929565329995, - 0.5239128250950443, - 0.5237427937904906, - 0.5235822518070505, - 0.5231426065754373, - 0.5229009850251067, - 0.522761260287311, - 0.5226280645526824, - 0.5225017234238444, - 0.5223821052404609, - 0.52226892234526, - 0.5221618434147728, - 0.522060534551548, - 0.5219646737471154, - 0.5218739554340802, - 0.5217880913883951, - 0.5216011497540427, - 0.5215237577506723, - 0.5214504796755787, - 0.5213810879559901, - 0.5213153684305439, - 0.5212531194897772, - 0.5211941512747881, - 0.5211382849315035, - 0.5210853519170434, - 0.5210351933544123, - 0.5209876594318514, - 0.5209426088434759, - 0.5208999082680907, - 0.5208594318832482, - 0.5208210609119178, - 0.5207846831993432, - 0.5207501928178544, - 0.5207174896975262, - 0.5206864792809294, - 0.5205164656674132, - 0.5204931143528224, - 0.5204677968909918, - 0.520442505476048, - 0.5204180359484479, - 0.5203946444013383, - 0.5203723865194698, - 0.5203512451463861, - 0.5203311778991687, - 0.5203121348703748, - 0.5202940651449336, - 0.5202769191385124, - 0.5202606493783726, - 0.5202452107070353, - 0.5202305602751085, - 0.5200299683178364, - 0.5200166991922647, - 0.5200041068225196, - 0.5199921563901192, - 0.5199808148970305, - 0.5199700510679275, - 0.5199598352577791, - 0.5199501393646166, - 0.5199409367470873, - 0.5199322021466617, - 0.5199239116141701, - 0.5199160424403286, - 0.5198073790918079, - 0.5198002544873964, - 0.519793491693025, - 0.5197870722456887, - 0.5196898171797232, - 0.5196839997336086, - 0.5196784774361088, - 0.5196732352533082, - 0.5196682589229221, - 0.5196635349141031, - 0.5196590503893981, - 0.5196547931687915, - 0.5196507516955915, - 0.5196469150041522, - 0.5196432726893171, - 0.5196398148774513, - 0.5196365321990304, - 0.5196334157626337, - 0.519630457130328, - 0.5196276482943437, - 0.5196249816549513, - 0.5196224499995005, - 0.5196200464825731, - 0.5195816011259818, - 0.5193147509149381, - 0.5193105582529106, - 0.5193078959421081, - 0.5193058694975854, - 0.5191542177109001, - 0.5191525920504468, - 0.519151074496963, - 0.5191496433193977, - 0.5191482881354909, - 0.5191470028503624, - 0.5191457830845256, - 0.5191446252066443, - 0.519143525966266, - 0.5191424823513358, - 0.5191414915300139, - 0.5191405508242695, - 0.5191396576956203, - 0.5191388097356493, - 0.5191380046584881, - 0.51913724029425, - 0.5191365145830236, - 0.5191358255692543, - 0.5191351713964224, - 0.5191345503020006, - 0.5191339606127104, - 0.5191334007399836, - 0.5191328691756504, - 0.5191323644879007, - 0.5191318853173734, - 0.5191314303735133, - 0.5191309984310809, - 0.5191305883268241, - 0.5191301989563575, - 0.5191298292711749, - 0.5191294782758143, - 0.5191291450251878, - 0.5191288286220056, - 0.5191285282143802, - 0.5191282429935049, - 0.5191279721914954, - 0.519127715079301, - 0.5191274709647529, - 0.5191272391906824, - 0.5191270191331621, - 0.519126810199818, - 0.5191266118282353, - 0.5191264234844383, - 0.5191262446614555, - 0.5191260748779589, - 0.5191259136769496, - 0.5191257606245421, - 0.5191256153087864, - 0.5191254773385684, - 0.5191253463425499, - 0.5191252219681596, - 0.519125103880665, - 0.5191249917622434, - 0.5191248853111622, - 0.5191247842409167, - 0.519124688279505, - 0.5191245971686773, - 0.5191245106632321, - 0.5191244285303708, - 0.5191243505490606, - 0.51912427650944, - 0.5191242062122653, - 0.5191241394683562, - 0.519124076098105, - 0.5191240159309719, - 0.5191239588050528, - 0.5191239045666168, - 0.5191238530697111, - 0.5191238041757533, - 0.5191237577531793, - 0.5191237136770559, - 0.5191236718287839, - 0.5191236320957573, - 0.5191235943710483, - 0.5191235585531516, - 0.5191235245456725, - 0.5191234922571141, - 0.5191234616005845, - 0.5191234324935912, - 0.5191234048578119, - 0.5191233786188827, - 0.5191233537062009, - 0.5191233300527271, - 0.5191233075948135, - 0.5191232862720366, - 0.5191232660270109, - 0.5191232468052639, - 0.5191232285550789, - 0.5191232112273404, - 0.5191231947754272, - 0.5191231791550753, - 0.5191231643242414, - 0.5191231502430319, - 0.5191231368735405, - 0.519123124179813, - 0.5191231121276809, - 0.5191231006847183, - 0.5191230898201347, - 0.5190657686871722, - 0.5502931109076044, - 0.5503683077446678, - 0.5505691870367274, - 0.5506526400380574, - 0.5503406041429261, - 0.5504118522136741, - 0.5504979817959028, - 0.5505725940084881, - 0.5506587563977154, - 0.5507425102797879, - 0.5508197447401512, - 0.5509004936197563, - 0.5509730975977936, - 0.5509055648177126, - 0.5510021858560803, - 0.5508919381354859, - 0.5509993005720498, - 0.5510786477123405, - 0.5511120725122187, - 0.5511265845800959, - 0.5511405126887959, - 0.5511532940600208, - 0.5511671823286821, - 0.5511831695464541, - 0.5511998776484154, - 0.5512172511651549, - 0.5512368826970169, - 0.5512458236913864, - 0.5512479719931662, - 0.5512496657120851, - 0.5512625299082444, - 0.5512263957640664, - 0.5512308606453016, - 0.5513489958490504, - 0.5513521144992239, - 0.5513541105961013, - 0.5513560439351464, - 0.5513575595137941, - 0.5513583011015286, - 0.5513588395212327, - 0.5513587078220121, - 0.5513583315106281, - 0.5513570627019999, - 0.5513560043838374, - 0.5512324397559056, - 0.551230252669912, - 0.5512276493877245, - 0.5512242986676328, - 0.5512205660270213, - 0.5512162495837095, - 0.5512115905834911, - 0.5512059985305588, - 0.5512080643633216, - 0.5512099009826985, - 0.5512123611964153, - 0.5512147419862993, - 0.5512170180342594, - 0.5512191840551022, - 0.5512212417124233, - 0.551223195068375, - 0.5512250489021623, - 0.5512268080931693, - 0.5512279223099432, - 0.5512295252830197, - 0.5519366269196232, - 0.5519380089153897, - 0.5510562129220837, - 0.5509353244206617, - 0.5508978166756994, - 0.5508909979368921, - 0.5508952884260956, - 0.5509033786020504, - 0.5509125063612077, - 0.5509217078520153, - 0.5509306660851995, - 0.5509392334060897, - 0.5509473893770691, - 0.5509551412332057, - 0.55096251776426, - 0.5509694994584581, - 0.5509761621124717, - 0.5509825086319254, - 0.5509885541650197, - 0.5509943359550229, - 0.5509998654808269, - 0.5510051618479596, - 0.551010250815078, - 0.5510151630900855, - 0.5512052160337632, - 0.5512096968159498, - 0.5512141342690803, - 0.5512185238956719, - 0.5512229197629736, - 0.5512273679277553, - 0.5512318918482171, - 0.5512365769610821, - 0.5512415902892843, - 0.5512469665763389, - 0.5512528007566624, - 0.5512592778868595, - 0.551266779051143, - 0.5512752192312383, - 0.5512850452259586, - 0.5512975427940432, - 0.5513120663136529, - 0.5513303816055183, - 0.5513541418619333, - 0.5513810344750707, - 0.5513851975508712, - 0.551385936440996, - 0.5513854350656773, - 0.5513845127720429, - 0.5513834719388123, - 0.5513824229491904, - 0.5513814233673479, - 0.5513804519540271, - 0.5513795534912632, - 0.5513786752148628, - 0.5513779176578779, - 0.5513771362986948, - 0.5513763870478173, - 0.5513756732887549, - 0.5513749950843475, - 0.5513743513084478, - 0.5513737404522078, - 0.5513731609206939, - 0.5513726111401555, - 0.5513720895951811, - 0.5513716746991578, - 0.5513712220557462, - 0.5513707824770373, - 0.5513703613952639, - 0.5513699604265286, - 0.5513695794913447, - 0.5513692179147812, - 0.5513688748338879, - 0.5513685493473371, - 0.551368240569379, - 0.5513679476483755, - 0.5513676697722011, - 0.5513674061688932, - 0.5513671561055757, - 0.551366918886805, - 0.5513666938527925, - 0.551366480377619, - 0.5513662778675205, - 0.5513660857592341, - 0.5513659035184216, - 0.5504257019470539, - 0.5503291942007659, - 0.5503009122493351, - 0.5502980704516964, - 0.5503045609945298, - 0.5503143891661562, - 0.5503256956915331, - 0.5503374811324829, - 0.5503497430198233, - 0.5503622092144463, - 0.5503755067556634, - 0.5503894733848461, - 0.5504044779757343, - 0.5504206144070912, - 0.5504377963095165, - 0.5504566335652242, - 0.5504789066973058, - 0.5505033849602455, - 0.5505181403708751, - 0.5505222894830352, - 0.5505247913719594, - 0.5505266326597427, - 0.5505281819395635, - 0.5505295782772135, - 0.5505308755266254, - 0.5505320958359179, - 0.550533249487797, - 0.5505343422598674, - 0.5505353781585308, - 0.5505363604375585, - 0.5505372919806475, - 0.5505381754478809, - 0.5505390133344721, - 0.5505398079967773, - 0.5505405616659084, - 0.5505412764565825, - 0.5505419543740351, - 0.5505425973199378, - 0.5505432070978897, - 0.5505437854185038, - 0.5505443339041899, - 0.5505448540937354, - 0.5505453474465997, - 0.5505458153469875, - 0.5505462591077407, - 0.5505466799740185, - 0.5505470791267698, - 0.5505474576860523, - 0.5505478167141724, - 0.5505481572186431, - 0.5505484801550322, - 0.5505487864296255, - 0.5505490769019633, - 0.5505493523872621, - 0.5505496136586915, - 0.5504957104671274, - 0.5504959471636034, - 0.5504961716473366, - 0.5504963845484037, - 0.5504965864643797, - 0.5504967779620157, - 0.5504969595788253, - 0.5504971318245941, - 0.5504972951828092, - 0.5504974501120211, - 0.5505659204638523, - 0.550566059593582, - 0.5505661915443897, - 0.5505663166866684, - 0.5505664353717118, - 0.5505665479326924, - 0.5505666546855943, - 0.55056675593009, - 0.5505668519504052, - 0.550566943016095, - 0.5505670293827951, - 0.5505671112929764, - 0.5505671889765786, - 0.5505195636202417, - 0.5505196337309232, - 0.5505197002238679, - 0.5505197632857489, - 0.5505198230935965, - 0.5505198798153329, - 0.5505199336101837, - 0.550519984629182, - 0.5505200330155596, - 0.5505200789051575, - 0.5505201224268064, - 0.5505201637026973, - 0.5505202028487124, - 0.5505202399747487, - 0.5505202751850421, - 0.550520308578438, - 0.5505203402486986, - 0.5505203702847309, - 0.5505203987708662, - 0.5505204257870807, - 0.5505204514092221, - 0.5505204757092232, - 0.5505204987553144, - 0.5505205206121871, - 0.5505205413412164, - 0.5505205610005932, - 0.5505205796455228, - 0.5505205973283394, - 0.5505206140986963, - 0.5505206300036746, - 0.5505206450879316, - 0.5505206593938189, - 0.5505206729614945, - 0.550427083378307, - 0.5504015658137954, - 0.55039442774699, - 0.5503941248190426, - 0.5503962332025154, - 0.550399119941482, - 0.550402186235167, - 0.5504052159334939, - 0.5504081343028312, - 0.5504109187073992, - 0.5504135655458816, - 0.5504160780201796, - 0.5504184616183033, - 0.5504207224534916, - 0.5504228666604669, - 0.5504249001826128, - 0.5504268287033902, - 0.5504286576306283, - 0.5504303920999133, - 0.5504320369846081, - 0.5504335969078049, - 0.5504350762546666, - 0.5504364791844495, - 0.5504378096420262, - 0.5504390713688939, - 0.5504402679136177, - 0.5504414026417553, - 0.5504424787452835, - 0.5504434992515095, - 0.550444467031566, - 0.5504453848084616, - 0.550446255164675, - 0.5504470805494387, - 0.5504478632855555, - 0.5504486055759717, - 0.5504493095098971, - 0.5504499770687045, - 0.5504506101314911, - 0.5505237947210969, - 0.5505243637939918, - 0.550524903458816, - 0.5505254152349299, - 0.5505259005632267, - 0.5505263608101869, - 0.5505267972717225, - 0.5505272111768206, - 0.5505276036909859, - 0.5505279759195147, - 0.550528328910625, - 0.5515849713685612, - 0.5514828135863901, - 0.5514378850154938, - 0.5514271347615554, - 0.5514288234610041, - 0.5514348244262829, - 0.5514421446402988, - 0.5514496905017767, - 0.5514570706860833, - 0.5514641531337517, - 0.5514709011054336, - 0.5514773125271449, - 0.5514833975684064, - 0.5514891703718402, - 0.5514946460199006, - 0.5514998394388673, - 0.5515047650187037, - 0.5515094364965967, - 0.5515138669369168, - 0.5515180687457306, - 0.5515220536969984, - 0.551525832962031, - 0.5515294171392238, - 0.5515328162828695, - 0.5515360399307954, - 0.5515390971306736, - 0.5515419964650561, - 0.5515447460751463, - 0.5515473536833537, - 0.5515498266147468, - 0.5515521718174061, - 0.5515543958817136, - 0.5515565050587158, - 0.5515585052775094, - 0.5515604021617633, - 0.5515622010454062, - 0.5515639069874814, - 0.5515655247862894, - 0.5535049730443711, - 0.5535063817422335, - 0.5535077463879601, - 0.5535090524823396, - 0.5535102955217102, - 0.5535114759659925, - 0.5535125960129645, - 0.5535136583991628, - 0.5535146659612985, - 0.5535156214790748, - 0.5535165276217822, - 0.5535173869331772, - 0.5535182018302305, - 0.5535189746067962, - 0.553519707438926, - 0.55352040239053, - 0.5535210614190176, - 0.5535216863807586, - 0.5535222790362416, - 0.5535228410550423, - 0.5535233740204903, - 0.5535238794341348, - 0.5535243587199487, - 0.5535248132283533, - 0.5535252442399939, - 0.5535256529693525, - 0.5535260405681629, - 0.5535264081286404, - 0.5535267566865794, - 0.5535270872242335, - 0.5535274006731109, - 0.5535276979165762, - 0.5535279797923512, - 0.553528247094841, - 0.5535285005774241, - 0.5535287409545228, - 0.5535289689036407, - 0.5535291850672668, - 0.5535293900546797, - 0.5535295844436597, - 0.5535297687821353, - 0.5535299435897038, - 0.5535301093591083, - 0.5535302665576125, - 0.5535304156283404, - 0.5535305569914997, - 0.5535306910455791, - 0.5535308181684644, - 0.5535309387185072, - 0.5535310530355461, - 0.5535311614418257, - 0.5535312642429598, - 0.5535313617287376, - 0.5535314541739885, - 0.5535315418393176, - 0.5535316249718694, - 0.5535317038059983, - 0.5535317785639517, - 0.5539925508477078, - 0.5541185906362561, - 0.5541589689307914, - 0.5541675307594144, - 0.5541641686768276, - 0.5541567320468371, - 0.5541481093953469, - 0.5541393526858821, - 0.5541308352189164, - 0.5541226800513777, - 0.5541149184535193, - 0.5541075484873765, - 0.5541005566374038, - 0.5540939257749488, - 0.5540876380691352, - 0.5540816760300923, - 0.5540760228632104, - 0.5540706625701365, - 0.5540655799577323, - 0.5540607606145024, - 0.5540561908764151, - 0.5540518577901895, - 0.5540477490769039, - 0.5540438530969385, - 0.5540401588165584, - 0.5540366557762392, - 0.5540333340605711, - 0.5540301842698113, - 0.5540271974929032, - 0.5540243652819004, - 0.5540049088191358, - 0.5540023603146207, - 0.5539999436693157, - 0.5539976520534242, - 0.5539954789916575, - 0.5539934183447429, - 0.5539914642919406, - 0.5539896113144431, - 0.5539878541796659, - 0.553986187926343, - 0.5539846078504304, - 0.5539831094917109, - 0.5539816886211452, - 0.5539803412288369, - 0.5539790635126448, - 0.5539778518674151, - 0.5539767028747412, - 0.5539756132932535, - 0.5539745800494569, - 0.5539736002290059, - 0.5539726710684527, - 0.5539717899474147, - 0.5539709543811643, - 0.5539701620135784, - 0.5539694106104954, - 0.5539686980533832, - 0.5539680223333285, - 0.5539673815453947, - 0.5539667738831971, - 0.5539661976338199, - 0.553965651172968, - 0.5539651329603791, - 0.5539646415354693, - 0.553964175513212, - 0.5539637335802227, - 0.5539633144910436, - 0.5539629170646382, - 0.5539625401810588, - 0.5539621827782721, - 0.5539618438491657, - 0.5539615224387188, - 0.5539612176412798, - 0.5539609285980519, - 0.553960654494626, - 0.5539603945587113, - 0.5539601480579542, - 0.5539599142978586, - 0.5539596926198408, - 0.5539594823993674, - 0.553959283044189, - 0.5539590939926803, - 0.5539589147122544, - 0.5539587446978502, - 0.5539585834705254, - 0.5539584305760898, - 0.5539582855838368, - 0.5539581480853191, - 0.5539580176932142, - 0.5539578940402141, - 0.553957776777996, - 0.553957665576252, - 0.5539575601217441, - 0.553957460117418, - 0.5539573652815799, - 0.5539572753471012, - 0.5539571900606525, - 0.5539571091820118, - 0.553957032483352, - 0.5539569597486429, - 0.5539568907730159, - 0.5539568253621819, - 0.5539567633318992, - 0.5539567045074526, - 0.5539566487231529, - 0.5539565958218788, - 0.553956545654622, - 0.5539564980800887, - 0.5539564529642733, - 0.5539564101801077, - 0.5539563696070787, - 0.5539563311309229, - 0.5539562946432577, - 0.5539562600413221, - 0.5539562272276503, - 0.5539561961098266, - 0.5539561666002043, - 0.5539561386156723, - 0.5539561120774043, - 0.5539560869106582, - 0.553956063044558, - 0.5539560404118736, - 0.5539560189488709, - 0.5539559985950875, - 0.5539559792932117, - 0.5539304593042808, - 0.5539304419993594, - 0.5539304255887659, - 0.5539304100262885, - 0.5539303952680862, - 0.5539303812725994, - 0.5539303680004108, - 0.5539303554141339, - 0.5539303434783236, - 0.5539303321593648, - 0.5539303214253766, - 0.5539303112461281, - 0.5539303015929457, - 0.5539302924386519, - 0.55393028375745, - 0.5539302755248996, - 0.5539302677178132, - 0.5539302603141976, - 0.5539302532932107, - 0.553930246635065, - 0.553930240321016, - 0.5539302343332877, - 0.5539302286550035, - 0.5539302232701743, - 0.5539302181636369, - 0.5539302133210052, - 0.5539302087286456, - 0.553930204373623, - 0.5539302002436634, - 0.55393019632715, - 0.5539301926130341, - 0.5539301890908719, - 0.5539301857507377, - 0.5539301825832176, - 0.5539301795793967, - 0.5539301767308201, - 0.5539301740294565, - 0.5539301714676977, - 0.5539301690383336, - 0.5539301667345193, - 0.5539301645497661, - 0.5539301624779235, - 0.5539301605131554, - 0.5539301586499233, - 0.5539301568829902, - 0.5539301552073681, - 0.5539301536183453, - 0.553930152111443, - 0.5539301506824168, - 0.5539301493272423, - 0.5539301480421039, - 0.5539301468233861, - 0.5539301456676441, - 0.5539301445716419, - 0.5539301435322719, - 0.5539301425466227, - 0.5539301416119099, - 0.5539301407255028, - 0.5539301398849077, - 0.5539301390877552, - 0.5532450007946573, - 0.5532895883153065, - 0.5533075789129971, - 0.5533117972050449, - 0.5533110160201178, - 0.5533085064164183, - 0.5533054724230537, - 0.553302353447915, - 0.5532993063714537, - 0.5532963838653309, - 0.5532936003349896, - 0.5532909562958567, - 0.5532884473757361, - 0.5532860676315102, - 0.5532838107635587, - 0.5532816705532388, - 0.5532796410135931, - 0.5532777164345996, - 0.5532758913899543, - 0.5532741607301459, - 0.5532725195709486, - 0.5532709632806914, - 0.5532694874675446, - 0.5532680879671754, - 0.5532667608309949, - 0.5532655501327778, - 0.5532643630634269, - 0.5532632332312679, - 0.5532621846456552, - 0.5532612204931882, - 0.5532602653543237, - 0.5532593527681816, - 0.5532584847734056, - 0.5532577146039135, - 0.5532569432245895, - 0.553256205719401, - 0.5532555034063955, - 0.5532548363119247, - 0.553254203298291, - 0.5532536304058697, - 0.553253065379594, - 0.5532525267089494, - 0.5532520148179013, - 0.5532515919816667, - 0.5532511367269548, - 0.5532507011510405, - 0.5532502866612397, - 0.5532498930662625, - 0.5532495196184329, - 0.5532491653992525, - 0.5532488294602541, - 0.5532485108733476, - 0.553248208747833, - 0.5532479514756706, - 0.5532476855527082, - 0.5532474298752735, - 0.5532471859713461, - 0.5532469541395144, - 0.5532467340915523, - 0.5536771953168086, - 0.5538006540806956, - 0.553933605313785, - 0.5540457436786027, - 0.5541388728034071, - 0.5542415031903751, - 0.5543538228651723, - 0.5543680914997838, - 0.5543679619512307, - 0.554367880445889, - 0.5543678185400304, - 0.5543677655262049, - 0.5543677173579696, - 0.5543676724580336, - 0.5543676301666588, - 0.554367590167458, - 0.5543675522748128, - 0.5543675163550068, - 0.5543674822968975, - 0.5543674500008642, - 0.5543674193745975, - 0.5543673903313296, - 0.5543673751998107, - 0.5543673506538811, - 0.5543673263567149, - 0.5543673029362937, - 0.554367280586032, - 0.5543672593389479, - 0.5543672391707016, - 0.5543672200376221, - 0.5543672018906854, - 0.5543671846805869, - 0.5543671683595219, - 0.5543671528817691, - 0.5543671382038308, - 0.5543671242844103, - 0.5543671110843144, - 0.5543670985663764, - 0.5543670866953412, - 0.5543670754377862, - 0.5543670647619948, - 0.5543670546379125, - 0.5543670450370289, - 0.5543670359322944, - 0.554367027298083, - 0.5543670191100704, - 0.554367011345201, - 0.5543670039816038, - 0.5543669969985481, - 0.5543669903763596, - 0.5543669840963951, - 0.5543669781409709, - 0.5543669724933082, - 0.5543669671375072, - 0.5543669620584826, - 0.5543669572419336, - 0.5543669526742963, - 0.5543669483427061, - 0.5543669442349646, - 0.5543669403395016, - 0.5543669366453506, - 0.5543669331421011, - 0.5543669298198952, - 0.5543669266693771, - 0.5543669236816682, - 0.5543669208483634, - 0.5543669181614744, - 0.5543669156134393, - 0.5543669131970838, - 0.5543669109056016, - 0.5543669087325347, - 0.5543669066717692, - 0.5543669047174993, - 0.5543669028642239, - 0.5543669011067227, - 0.5543668994400435, - 0.5543668978594947, - 0.5543668963606294, - 0.5543668949392204, - 0.5543668935912666, - 0.5543668923129741, - 0.5543668911007403, - 0.55436688995115, - 0.5543668888609705, - 0.5543668878271278, - 0.5543668868467074, - 0.5543668859169647, - 0.5543668850352651, - 0.5543668841991254, - 0.5543668834061992, - 0.5543668826542516, - 0.5543668819411591, - 0.5543668812649184, - 0.5543668806236266, - 0.5543668800154736, - 0.5543668794387495, - 0.5543668788918307, - 0.5543668783731744, - 0.5543668778813218, - 0.5543668774148851, - 0.5543668769725568, - 0.5543668765530821, - 0.5543668761552869, - 0.5543668757780538, - 0.5543668754203078, - 0.5543668750810578, - 0.5543668747593337, - 0.554366874454237, - 0.5543668741649078, - 0.554366873890528, - 0.5543668736303294, - 0.5543668733835787, - 0.5543668731495749, - 0.5543668729276695, - 0.5543668727172243, - 0.5543668725176639, - 0.5543668723284118, - 0.554366872148937, - 0.5543668719787412, - 0.5543668718173397, - 0.5543668716642817, - 0.5543668715191302, - 0.5543668713814802, - 0.5543668712509444, - 0.5543668711271558, - 0.5543668710097611, - 0.5543869731728461, - 0.5543869730677451, - 0.5543869729680824, - 0.5543869728735626, - 0.5543869727839306, - 0.554386972698932, - 0.5537467228195098, - 0.5537467227427975, - 0.5537467226700422, - 0.5537467226010555, - 0.5537467225356261, - 0.5537467224735784, - 0.5537467224147419, - 0.5537467223589426, - 0.5537467223060284, - 0.5537467222558501, - 0.5537467222082638, - 0.5537467221631371, - 0.5537467221203407, - 0.5537467220797528, - 0.5537467220412691, - 0.5537467220047706, - 0.5537467219701598, - 0.5537467219373388, - 0.5537467219062061, - 0.5537467218766924, - 0.5537467218486993, - 0.5537467218221559, - 0.5537467217969801, - 0.5537467217731056, - 0.5537467217504658, - 0.5537467217289969, - 0.5537467217086355, - 0.5537467216893269, - 0.5537467216710167, - 0.5537467216536535, - 0.5537467216371876, - 0.5537467216215707, - 0.5537467216067649, - 0.5537467215927188, - 0.5537467215794022, - 0.5537467215667744, - 0.5537467215547941, - 0.5537467215434356, - 0.5537467215326656, - 0.5537467215224509, - 0.5537467215127646, - 0.5537467215035807, - 0.5537467214948716, - 0.5537467214866086, - 0.5537467214787739, - 0.553746721471344, - 0.5537467214642999, - 0.5537467214576192, - 0.5537467214512828, - 0.5537467214452743, - 0.5537467214395735, - 0.5537467214341744, - 0.5537467214290461, - 0.5537467214241893, - 0.5537467214195787, - 0.5537467214152143, - 0.5537467214110685, - 0.5537467214071349, - 0.5537467214034072, - 0.5537467213998716, - 0.5537467213965254, - 0.553746721393345, - 0.5537467213903322, - 0.5537467213874696, - 0.5537467213847621, - 0.5537467213821872, - 0.5537467213797521, - 0.5537467213774375, - 0.5537467213752485, - 0.5537467213731684, - 0.5537467213711962, - 0.5537467213693269, - 0.5537467213675539, - 0.5537467213658692, - 0.5537467213642802, - 0.5537467213627633, - 0.5537467213613317, - 0.5537467213599729, - 0.5537467213586806, - 0.5537467213574587, - 0.5537467213562955, - 0.5537467213551999, - 0.5537937175296263, - 0.5537937175286438, - 0.5537937175277066, - 0.5537937175268236, - 0.5537937175259859, - 0.5537937175251905, - 0.5537937175244353, - 0.5537937175237178, - 0.5537937175230377, - 0.5537937175223936, - 0.553793717521783, - 0.553793717521202, - 0.5537937175206528, - 0.5537937175201324, - 0.5537937175196378, - 0.5537937175191718, - 0.5537937175187285, - 0.5537937175183038, - 0.5537937175179037, - 0.5537937175175229, - 0.5537937175171687, - 0.5537937175168274, - 0.5537937175165007, - 0.5537937175161961, - 0.5537937175159056, - 0.55379371751563, - 0.5537937175153689, - 0.5537937175151207, - 0.5537937175148862, - 0.5537937175146631, - 0.5537937175144526, - 0.5537937175142524, - 0.5537937175140608, - 0.5537937175138843, - 0.5537937175137118, - 0.5537887010712139, - 0.5537876442409855, - 0.5537873389759205, - 0.5537873148487863, - 0.5537873904306492, - 0.5537874986183493, - 0.5537876147513345, - 0.5537877298983267, - 0.5537878409504561, - 0.5537879469476701, - 0.5537880477168757, - 0.5537881433673513, - 0.5537882341041561, - 0.5537883201593287, - 0.5537884017668667, - 0.5537884791538334, - 0.5537885525374571, - 0.5537886221244395, - 0.5537886881110643, - 0.5537887506835409, - 0.5537888100185043, - 0.5537888662834388, - 0.5537889196371919, - 0.5537889702303795, - 0.5537890182058288, - 0.5539291233656525, - 0.5539393959799422, - 0.5539585010972436, - 0.5539842625952248, - 0.5540130602987932, - 0.5540463307908594, - 0.5540819371547951, - 0.5541094440615856, - 0.5541090563409947, - 0.5541099557065027, - 0.5541113121005506, - 0.5541127856638071, - 0.5541142525824257, - 0.5541156694425677, - 0.5541170225737134, - 0.5541183092304005, - 0.5541195306062238, - 0.5541206892440991, - 0.5541217880798689, - 0.5541228300924891, - 0.5541238181793892, - 0.5541247551151267, - 0.5541256435408528, - 0.5541264859648852, - 0.5541272847672541, - 0.5541280422054274, - 0.5541287604203222, - 0.5541294414422183, - 0.554130087196402, - 0.5541306995085782, - 0.5541312801100284, - 0.5541318306424523, - 0.5541323526626187, - 0.5541328476467524, - 0.5541333169946805, - 0.5541337620337973, - 0.5541341840228017, - 0.5541345841552554, - 0.5541349635629427, - 0.5547677784485522, - 0.5547633313150698, - 0.5547621576428392, - 0.5547622344995992, - 0.5547627497715911, - 0.5547634026945754, - 0.5547640828480965, - 0.5547647504523832, - 0.5547653919040147, - 0.5547660032624602, - 0.5547665841190133, - 0.5547671353223639, - 0.5547676581364887, - 0.5547681539305485, - 0.5547686240662059, - 0.5547690698582121, - 0.5547694925619973, - 0.554769893371275, - 0.5547702734191812, - 0.5547706337806352, - 0.5547709754750887, - 0.5547712994692716, - 0.5547716066799017, - 0.5547718979762349, - 0.5547721741825206, - 0.5547724360803479, - 0.5547726844108357, - 0.5547729198767083, - 0.5547731431443249, - 0.554773354845526, - 0.5547735555794396, - 0.5547737459141605, - 0.5547739263883729, - 0.5547740975128448, - 0.5547742597719173, - 0.5547744136248282, - 0.554774559507035, - 0.5547746978314452, - 0.5547748289895731, - 0.5547749533526638 - ] - ] - }, - "header": { - "align": [ - "left" - ], - "fill": { - "color": "#C2D4FF" - }, - "values": [ - "time [s]", - "rate", - "demand", - "move/(max - min) sympathetic efferent", - "threshold indirect parasympathetic efferent", - "direct parasympathetic efferent", - "recruitment = coefficient of variation" - ] - }, - "type": "table" - } - ], - "layout": {} - }, - "text/html": [ - "
" - ], - "text/vnd.plotly.v1+html": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ + "import plotly\n", "import plotly.offline as offline\n", "import plotly.figure_factory as ff\n", "import plotly.graph_objs as go\n", @@ -25343,23 +97,30 @@ "\n", "offline.init_notebook_mode(connected=True)\n", "\n", - "column_name_map = {0: {\"name\":\"time [s]\"}, 1: {\"name\":\"rate\"}, 2: {\"name\":\"demand\"}, \n", + "column_name_map = {0: {\"name\":\"time [s]\"}, \n", + " 1: {\"name\":\"rate\"}, \n", + " 2: {\"name\":\"demand\"}, \n", " 3: {\"name\":\"move/(max - min) sympathetic efferent\", \"scale\":1/0.0008}, \n", " 4: {\"name\":\"threshold indirect parasympathetic efferent\", \"scale\":-1.0},\n", " 5: {\"name\":\"direct parasympathetic efferent\", \"scale\":-1/0.0008}, \n", " 6: {\"name\":\"recruitment = coefficient of variation\"}}\n", - "data_path = PORTS.inputs[0].value\n", - "\n", - "data_frame = pd.read_csv(data_path, sep=',', names=[column_name_map[i][\"name\"] for i in column_name_map.keys()])\n", + "data_path = PORTS.inputs[0].get()\n", + "outputController = pd.read_csv(data_path, sep=' ', header=None, skipinitialspace=True)\n", + "column_rename_dict = {}\n", + "for i in column_name_map:\n", + " column_rename_dict[i] = column_name_map[i][\"name\"]\n", + "outputController.rename(inplace=True, columns=column_rename_dict)\n", "\n", "trace = go.Table(\n", " header=dict(\n", - " values=data_frame.columns,\n", + " values=[outputController.columns[i] for i in column_name_map.keys()],\n", + " #values=[column_name_map[i][\"name\"] for i in column_name_map.keys()],\n", " fill=dict(color=\"#C2D4FF\"),\n", " align=[\"left\"]\n", " ),\n", " cells=dict(\n", - " values=[data_frame[data_frame.columns[i]] for i in column_name_map.keys()],\n", + " values=[outputController[outputController.columns[i]] for i in column_name_map.keys()],\n", + " #values=[data_frame[0:8]],\n", " fill=dict(color=\"#F5F8FF\"),\n", " align=[\"left\"]\n", " )\n", @@ -25371,7 +132,35 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, + "metadata": { + "hide_input": true, + "init_cell": true + }, + "outputs": [], + "source": [ + "# define variables\n", + "NumberOfLayers = 3\n", + "_NumberOfCells = [600, 600, 600] # cells per layer\n", + "TotalNumberOfCells = sum(_NumberOfCells)\n", + "mrows, ncols = outputController.shape\n", + "#x=outputController(:,1); %time\n", + "#y1=outputController(:,2); %rate\n", + "#y2=outputController(:,3); %demand\n", + "#y3=outputController(:,4); %move/(max - min)% sympathetic efferent\n", + "#y4=-1*outputController(:,5); %threshold % indirect parasympathetic efferent\n", + "#y5=-1*outputController(:,6); %direct parasympathetic efferent\n", + "#y6=outputController(:,7); %recruitment = coefficient of variation\n", + "#y7=outputController(:,8); %first cell\n", + "FirstCellPosition=8-1; #initialize where cell information begins\n", + "\n", + "def NumberOfCells(matlab_index):\n", + " return _NumberOfCells[matlab_index-1]" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": { "extensions": { "jupyter_dashboards": { @@ -25390,29215 +179,396 @@ } } }, - "hide_input": false + "hide_input": true, + "init_cell": true }, "outputs": [], "source": [ - "def create_graph(data_frame, data_scaling, title, x_axis_title):\n", - " data = [\n", + "import random\n", + "\n", + "MAX_AMOUNT_OF_POINTS_TO_DISPLAY = 50000\n", + "\n", + "def create_graph(data_frame, title, x_axis_title, colors=None, \n", + " lineWidths=None, show_legend=True, names=None, annotations=None, **kwargs):\n", + " if not names:\n", + " names = data_frame.columns\n", + " if not lineWidths:\n", + " lineWidths = [2] * (data_frame.columns.size-1)\n", + " if not colors:\n", + " default_colors = [\"black\", \"red\", \"orange\",\"green\",\"blue\"]\n", + " colors = [default_colors[random.randrange(0, len(default_colors))] for i in (data_frame.columns.size-1)]\n", + "\n", + " # try to do some \"intelligent\" slicing to reduce memory footprint when rendering\n", + " (nrows, ncols) = data_frame.shape\n", + " SLICING=max(1, round(nrows * ncols / MAX_AMOUNT_OF_POINTS_TO_DISPLAY))\n", + " data = [ \n", " go.Scatter(\n", - " x=data_frame[data_frame.columns[0]],\n", - " y=data_frame[data_frame.columns[i]] * data_scaling[i], \n", - " opacity=0.5, \n", - " name=data_frame.columns[i]\n", + " x=data_frame.iloc[0::SLICING,0],\n", + " y=data_frame.iloc[0::SLICING,i],\n", + " opacity=0.8, \n", + " name=names[i-1],\n", + " marker=dict(\n", + " color = colors[i-1]\n", + " )\n", " ) for i in range(1,data_frame.columns.size)\n", " ]\n", + " if annotations:\n", + " data.extend(\n", + " [go.Scatter(\n", + " x=[note[\"text\"][\"x\"]],\n", + " y=[note[\"text\"][\"y\"]],\n", + " text=[note[\"text\"][\"value\"]],\n", + " mode=\"text\",\n", + " textfont=dict(\n", + " size=15,\n", + " color=note[\"text\"][\"color\"],\n", + " ),\n", + " showlegend=False,\n", + " ) for note in annotations if \"text\" in note]\n", + " )\n", "\n", + " graph_title = title\n", + " if SLICING > 1:\n", + " size_reduction_text = \"
(data downsampled for rendering by factor %s)\" %(str(SLICING))\n", + " graph_title = graph_title + size_reduction_text\n", + " \n", " layout = go.Layout(\n", - " title=title, \n", - " showlegend=True,\n", + " title=graph_title, \n", + " showlegend=show_legend,\n", " xaxis=dict(\n", " title=x_axis_title\n", + " ), \n", + " **kwargs\n", + " )\n", + " fig = go.Figure(data=data, layout=layout)\n", + " offline.iplot(fig, config={\"displayModeBar\": False})\n", + " \n", + "def create_heatmap(data_frame, title, x_axis, y_axis):\n", + " (nrows, ncols) = data_frame.shape\n", + " SLICING=max(1, round(nrows * ncols / MAX_AMOUNT_OF_POINTS_TO_DISPLAY))\n", + " trace = go.Heatmap(\n", + " z=data_frame.iloc[:,0::SLICING].as_matrix(),\n", + " x=x_axis.iloc[0::SLICING],\n", + " y=y_axis,\n", + " colorscale=\"Greys\",\n", + " )\n", + "\n", + " data = [trace]\n", + "\n", + " graph_title = title\n", + " if SLICING > 1:\n", + " size_reduction_text = \"
(data downsampled for rendering by factor %s)\" %(str(SLICING))\n", + " graph_title = graph_title + size_reduction_text\n", + " \n", + " layout = go.Layout(\n", + " title=graph_title, \n", + " showlegend=False,\n", + " xaxis=dict(\n", + " side=\"top\",\n", " ),\n", " yaxis=dict(\n", - " #range=[0,.5] \n", - " ))\n", + " autorange=\"reversed\",\n", + " )\n", + " )\n", " fig = go.Figure(data=data, layout=layout)\n", - " offline.iplot(fig, config={\"displayModeBar\": False})" + " offline.iplot(fig, config={\"displayModeBar\": False})\n" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": { - "hide_input": false + "hide_input": true, + "init_cell": true }, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "data": [ - { - "name": "rate", - "opacity": 0.5, - "type": "scatter", - "x": [ - 4.989999999999939, - 9.989999999999831, - 14.989999999999723, - 19.990000000000325, - 24.99000000000111, - 29.99000000000189, - 34.990000000001615, - 39.99000000000061, - 44.98999999999962, - 49.989999999998616, - 54.989999999997636, - 59.98999999999664, - 64.98999999999634, - 69.9899999999989, - 74.99000000000144, - 79.99000000000402, - 84.99000000000656, - 89.99000000000912, - 94.99000000001169, - 99.99000000001423, - 104.9900000000168, - 109.99000000001936, - 114.99000000002192, - 119.9900000000245, - 124.99000000002705, - 129.99000000002675, - 134.9900000000222, - 139.99000000001766, - 144.99000000001308, - 149.99000000000856, - 154.99000000000402, - 159.98999999999947, - 164.9899999999949, - 169.98999999999037, - 174.98999999998586, - 179.98999999998128, - 184.98999999997676, - 189.98999999997216, - 194.9899999999676, - 199.98999999996312, - 204.98999999995854, - 209.989999999954, - 214.98999999994945, - 219.98999999994493, - 224.98999999994038, - 229.9899999999358, - 234.98999999993129, - 239.98999999992668, - 244.98999999992213, - 249.98999999991761, - 254.9899999999131, - 259.98999999990855, - 264.989999999904, - 269.98999999989945, - 274.9899999998949, - 279.9899999998904, - 284.9899999998858, - 289.98999999988126, - 294.98999999987666, - 299.98999999987217, - 304.9899999998676, - 309.98999999986313, - 314.9899999998585, - 319.98999999985404, - 324.98999999984943, - 329.9899999998449, - 334.9899999998404, - 339.9899999998358, - 344.98999999983124, - 349.98999999982664, - 354.98999999982215, - 359.98999999981766, - 364.9899999998131, - 369.9899999998085, - 374.989999999804, - 379.98999999979935, - 384.98999999979486, - 389.98999999979037, - 394.98999999978577, - 399.98999999978116, - 404.9899999997768, - 409.9899999997721, - 414.98999999976763, - 419.98999999976303, - 424.98999999975854, - 429.98999999975393, - 434.9899999997494, - 439.9899999997448, - 444.9899999997403, - 449.98999999973574, - 454.9899999997312, - 459.98999999972665, - 464.98999999972216, - 469.9899999997176, - 474.989999999713, - 479.98999999970846, - 484.9899999997039, - 489.9899999996994, - 494.9899999996948, - 499.9899999996903, - 504.98999999968566, - 509.9899999996812, - 514.9899999996767, - 519.9899999996721, - 524.9899999996676, - 529.989999999663, - 534.9899999996585, - 539.9899999996541, - 544.9899999996494, - 549.9899999996449, - 554.9899999996403, - 559.9899999996359, - 564.9899999996313, - 569.9899999996268, - 574.9899999996221, - 579.9899999996176, - 584.989999999613, - 589.9899999996086, - 594.9899999996039, - 599.9899999995994, - 604.9899999995947, - 609.9899999995903, - 614.9899999995857, - 619.9899999995812, - 624.9899999995766, - 629.9899999995721, - 634.9899999995675, - 639.989999999563, - 644.9899999995584, - 649.9899999995539, - 654.9899999995494, - 659.9899999995448, - 664.9899999995403, - 669.9899999995357, - 674.9899999995313, - 679.9899999995266, - 684.9899999995221, - 689.9899999995175, - 694.989999999513, - 699.9899999995083, - 704.989999999504, - 709.9899999994992, - 714.9899999994948, - 719.9899999994902, - 724.9899999994858, - 729.9899999994813, - 734.9899999994766, - 739.989999999472, - 744.9899999994675, - 749.9899999994631, - 754.9899999994583, - 759.9899999994539, - 764.9899999994493, - 769.9899999994448, - 774.9899999994403, - 779.9899999994358, - 784.9899999994311, - 789.9899999994266, - 794.989999999422, - 799.9899999994176, - 804.9899999994128, - 809.9899999994084, - 814.9899999994037, - 819.9899999993993, - 824.9899999993947, - 829.9899999993903, - 834.9899999993856, - 839.9899999993811, - 844.9899999993767, - 849.989999999372, - 854.9899999993676, - 859.9899999993629, - 864.9899999993584, - 869.9899999993538, - 874.9899999993493, - 879.9899999993448, - 884.9899999993402, - 889.9899999993356, - 894.9899999993311, - 899.9899999993265, - 904.9899999993221, - 909.9899999993173, - 914.9899999993128, - 919.9899999993083, - 924.9899999993038, - 929.9899999992994, - 934.9899999992947, - 939.98999999929, - 944.9899999992856, - 949.989999999281, - 954.9899999992764, - 959.989999999272, - 964.9899999992674, - 969.9899999992627, - 974.9899999992584, - 979.9899999992537, - 984.9899999992492, - 989.9899999992447, - 994.98999999924, - 999.9899999992357, - 1004.9899999992309, - 1009.9899999992264, - 1014.9899999992219, - 1019.9899999992174, - 1024.9899999992128, - 1029.9899999992083, - 1034.9899999992037, - 1039.9899999991992, - 1044.9899999991949, - 1049.98999999919, - 1054.9899999991856, - 1059.989999999181, - 1064.9899999991762, - 1069.9899999991721, - 1074.9899999991674, - 1079.9899999991628, - 1084.9899999991583, - 1089.9899999991535, - 1094.9899999991494, - 1099.9899999991446, - 1104.98999999914, - 1109.9899999991355, - 1114.989999999131, - 1119.9899999991264, - 1124.9899999991221, - 1129.9899999991173, - 1134.9899999991128, - 1139.9899999991082, - 1144.9899999991035, - 1149.9899999990994, - 1154.9899999990946, - 1159.98999999909, - 1164.9899999990855, - 1169.989999999081, - 1174.9899999990766, - 1179.9899999990719, - 1184.9899999990673, - 1189.9899999990628, - 1194.9899999990582, - 1199.9899999990535, - 1204.9899999990491, - 1209.9899999990446, - 1214.98999999904, - 1219.9899999990355, - 1224.9899999990312, - 1229.9899999990264, - 1234.9899999990218, - 1239.989999999017, - 1244.9899999990128, - 1249.9899999990082, - 1254.9899999990034, - 1259.989999998999, - 1264.9899999989943, - 1269.98999999899, - 1274.9899999989855, - 1279.989999998981, - 1284.9899999989764, - 1289.9899999989716, - 1294.9899999989673, - 1299.9899999989627, - 1304.9899999989582, - 1309.9899999989536, - 1314.989999998949, - 1319.9899999989445, - 1324.98999999894, - 1329.9899999989354, - 1334.989999998931, - 1339.9899999989266, - 1344.9899999989218, - 1349.9899999989173, - 1354.9899999989127, - 1359.9899999989082, - 1364.9899999989036, - 1369.9899999988988, - 1374.9899999988943, - 1379.98999999889, - 1384.9899999988854, - 1389.9899999988806, - 1394.9899999988766, - 1399.9899999988718, - 1404.9899999988672, - 1409.9899999988627, - 1414.9899999988581, - 1419.9899999988534, - 1424.9899999988488, - 1429.9899999988445, - 1434.98999999884, - 1439.9899999988354, - 1444.9899999988309, - 1449.9899999988265, - 1454.9899999988218, - 1459.9899999988172, - 1464.989999998813, - 1469.989999998808, - 1474.9899999988033, - 1479.989999998799, - 1484.9899999987945, - 1489.98999999879, - 1494.9899999987854, - 1499.9899999987808, - 1504.9899999987765, - 1509.9899999987713, - 1514.9899999987674, - 1519.9899999987624, - 1524.9899999987579, - 1529.9899999987533, - 1534.989999998749, - 1539.9899999987445, - 1544.98999999874, - 1549.9899999987354, - 1554.9899999987308, - 1559.9899999987265, - 1564.9899999987217, - 1569.9899999987174, - 1574.9899999987124, - 1579.9899999987078, - 1584.9899999987035, - 1589.989999998699, - 1594.9899999986944, - 1599.9899999986899, - 1604.9899999986853, - 1609.9899999986808, - 1614.9899999986762, - 1619.9899999986715, - 1624.9899999986674, - 1629.9899999986624, - 1634.989999998658, - 1639.9899999986535, - 1644.989999998649, - 1649.9899999986444, - 1654.98999999864, - 1659.9899999986353, - 1664.9899999986308, - 1669.989999998626, - 1674.9899999986214, - 1679.9899999986173, - 1684.9899999986123, - 1689.989999998608, - 1694.9899999986035, - 1699.989999998599, - 1704.9899999985944, - 1709.9899999985898, - 1714.9899999985853, - 1719.9899999985805, - 1724.9899999985764, - 1729.9899999985714, - 1734.9899999985669, - 1739.9899999985626, - 1744.989999998558, - 1749.9899999985535, - 1754.989999998549, - 1759.9899999985446, - 1764.9899999985398, - 1769.9899999985353, - 1774.989999998531, - 1779.9899999985264, - 1784.9899999985214, - 1789.989999998517, - 1794.9899999985125, - 1799.989999998508, - 1804.9899999985034, - 1809.9899999984991, - 1814.9899999984946, - 1819.9899999984893, - 1824.9899999984848, - 1829.989999998481, - 1834.989999998476, - 1839.989999998472, - 1844.989999998467, - 1849.9899999984625, - 1854.989999998458, - 1859.9899999984534, - 1864.9899999984489, - 1869.9899999984445, - 1874.98999999844, - 1879.9899999984355, - 1884.9899999984307, - 1889.989999998426, - 1894.9899999984216, - 1899.989999998417, - 1904.9899999984125, - 1909.989999998408, - 1914.9899999984036, - 1919.9899999983988, - 1924.9899999983945, - 1929.9899999983895, - 1934.9899999983847, - 1939.9899999983807, - 1944.9899999983759, - 1949.9899999983718, - 1954.989999998367, - 1959.9899999983625, - 1964.989999998358, - 1969.9899999983534, - 1974.9899999983486, - 1979.9899999983445, - 1984.9899999983402, - 1989.9899999983352, - 1994.9899999983304, - 1999.989999998326, - 2004.9899999983213, - 2009.989999998317, - 2014.9899999983124, - 2019.9899999983081, - 2024.9899999983036, - 2029.9899999982986, - 2034.9899999982945, - 2039.9899999982895, - 2044.9899999982847, - 2049.9899999983263, - 2054.989999998435, - 2059.989999998544, - 2064.9899999986533, - 2069.9899999987624, - 2074.989999998872, - 2079.9899999989807, - 2084.98999999909, - 2089.989999999199, - 2094.9899999993077, - 2099.9899999994173, - 2104.9899999995264, - 2109.9899999996355, - 2114.9899999997447, - 2119.9899999998543, - 2124.989999999963, - 2129.990000000072, - 2134.9900000001808, - 2139.9900000002904, - 2144.9900000003995, - 2149.9900000005086, - 2154.990000000618, - 2159.990000000727, - 2164.990000000836, - 2169.990000000945, - 2174.9900000010543, - 2179.9900000011635, - 2184.990000001273, - 2189.9900000013813, - 2194.990000001491, - 2199.9900000016, - 2204.990000001709, - 2209.9900000018183, - 2214.9900000019275, - 2219.9900000020366, - 2224.9900000021453, - 2229.990000002255, - 2234.990000002364, - 2239.990000002473, - 2244.9900000025823, - 2249.9900000026914, - 2254.990000002801, - 2259.9900000029097, - 2264.9900000030193, - 2269.990000003128, - 2274.990000003237, - 2279.9900000033467, - 2284.9900000034554, - 2289.9900000035645, - 2294.9900000036732, - 2299.990000003783, - 2304.990000003892, - 2309.9900000040006, - 2314.9900000041102, - 2319.9900000042194, - 2324.9900000043285, - 2329.9900000044377, - 2334.9900000045473, - 2339.990000004656, - 2344.990000004765, - 2349.9900000048738, - 2354.9900000049834, - 2359.9900000050925, - 2364.9900000052016, - 2369.990000005311, - 2374.99000000542, - 2379.990000005529, - 2384.990000005638, - 2389.9900000057473, - 2394.9900000058565, - 2399.9900000059656, - 2404.990000006075, - 2409.990000006184, - 2414.990000006293, - 2419.990000006402, - 2424.9900000065113, - 2429.9900000066204, - 2434.9900000067296, - 2439.990000006839, - 2444.990000006948, - 2449.990000007057, - 2454.990000007166, - 2459.9900000072753, - 2464.9900000073844, - 2469.9900000074936, - 2474.990000007603, - 2479.9900000077123, - 2484.990000007821, - 2489.99000000793, - 2494.9900000080397, - 2499.9900000081484, - 2504.990000008257, - 2509.990000008367, - 2514.990000008476, - 2519.990000008585, - 2524.9900000086936, - 2529.9900000088032, - 2534.9900000089124, - 2539.990000009021, - 2544.9900000091307, - 2549.99000000924, - 2554.990000009349, - 2559.990000009458, - 2564.9900000095668, - 2569.9900000096764, - 2574.990000009785, - 2579.9900000098946, - 2584.9900000100038, - 2589.990000010113, - 2594.990000010222, - 2599.990000010331, - 2604.9900000104403, - 2609.990000010549, - 2614.9900000106586, - 2619.990000010768, - 2624.990000010877, - 2629.990000010986, - 2634.990000011095, - 2639.9900000112043, - 2644.990000011313, - 2649.9900000114226, - 2654.990000011532, - 2659.990000011641, - 2664.99000001175, - 2669.990000011859, - 2674.9900000119683, - 2679.990000012077, - 2684.9900000121866, - 2689.990000012296, - 2694.9900000124053, - 2699.990000012514, - 2704.990000012623, - 2709.9900000127327, - 2714.990000012841, - 2719.9900000129505, - 2724.99000001306, - 2729.990000013169, - 2734.990000013278, - 2739.990000013387, - 2744.9900000134962, - 2749.990000013605, - 2754.9900000137145, - 2759.9900000138236, - 2764.9900000139332, - 2769.990000014042, - 2774.990000014151, - 2779.99000001426, - 2784.990000014369, - 2789.990000014479, - 2794.990000014588, - 2799.990000014697, - 2804.990000014806, - 2809.990000014915, - 2814.9900000150237, - 2819.990000015133, - 2824.9900000152425, - 2829.990000015352, - 2834.9900000154607, - 2839.99000001557, - 2844.9900000156786, - 2849.990000015788, - 2854.9900000158973, - 2859.9900000160064, - 2864.9900000161156, - 2869.990000016225, - 2874.9900000163343, - 2879.990000016443, - 2884.990000016552, - 2889.990000016661, - 2894.9900000167704, - 2899.990000016879, - 2904.990000016989, - 2909.990000017098, - 2914.990000017207, - 2919.990000017316, - 2924.990000017425, - 2929.990000017535, - 2934.9900000176435, - 2939.990000017753, - 2944.990000017862, - 2949.9900000179714, - 2954.9900000180796, - 2959.990000018189, - 2964.9900000182984, - 2969.9900000184075, - 2974.9900000185166, - 2979.9900000186262, - 2984.990000018735, - 2989.990000018844, - 2994.990000018953, - 2999.9900000190623, - 3004.990000019172, - 3009.990000019281, - 3014.9900000193898, - 3019.990000019499, - 3024.990000019608, - 3029.9900000197167, - 3034.9900000198268, - 3039.9900000199355, - 3044.990000020045, - 3049.9900000201533, - 3054.990000020263, - 3059.9900000203716, - 3064.990000020481, - 3069.9900000205903, - 3074.9900000206994, - 3079.9900000208086, - 3084.9900000209173, - 3089.9900000210273, - 3094.990000021136, - 3099.990000021245, - 3104.9900000213543, - 3109.9900000214634, - 3114.990000021572, - 3119.9900000216817, - 3124.990000021791, - 3129.9900000219, - 3134.990000022009, - 3139.9900000221187, - 3144.990000022228, - 3149.9900000223365, - 3154.9900000224457, - 3159.990000022555, - 3164.9900000226644, - 3169.9900000227726, - 3174.990000022882, - 3179.9900000229914, - 3184.9900000231005, - 3189.990000023209, - 3194.990000023319, - 3199.990000023428, - 3204.990000023537, - 3209.990000023646, - 3214.9900000237553, - 3219.990000023865, - 3224.9900000239736, - 3229.990000024083, - 3234.990000024192, - 3239.990000024301, - 3244.9900000244106, - 3249.9900000245198, - 3254.9900000246284, - 3259.9900000247376, - 3264.9900000248467, - 3269.990000024956, - 3274.9900000250645, - 3279.990000025174, - 3284.9900000252833, - 3289.9900000253924, - 3294.9900000255016, - 3299.990000025611, - 3304.9900000257203, - 3309.990000025829, - 3314.990000025938, - 3319.9900000260473, - 3324.9900000261564, - 3329.990000026265, - 3334.990000026375, - 3339.990000026484, - 3344.990000026593, - 3349.990000026702, - 3354.990000026811, - 3359.990000026921, - 3364.9900000270286, - 3369.9900000271386, - 3374.990000027248, - 3379.9900000273574, - 3384.9900000274656, - 3389.990000027575, - 3394.9900000276843, - 3399.990000027793, - 3404.990000027902, - 3409.990000028012, - 3414.990000028121, - 3419.99000002823, - 3424.990000028339, - 3429.9900000284483, - 3434.990000028557, - 3439.9900000286666, - 3444.990000028776, - 3449.990000028885, - 3454.990000028994, - 3459.9900000291027, - 3464.9900000292128, - 3469.9900000293214, - 3474.9900000294306, - 3479.9900000295397, - 3484.990000029649, - 3489.9900000297584, - 3494.990000029867, - 3499.9900000299763, - 3504.990000030085, - 3509.9900000301946, - 3514.990000030304, - 3519.9900000304133, - 3524.990000030522, - 3529.990000030631, - 3534.99000003074, - 3539.990000030849, - 3544.990000030958, - 3549.990000031068, - 3554.990000031177, - 3559.990000031286, - 3564.990000031395, - 3569.9900000315038, - 3574.9900000316134, - 3579.9900000317225, - 3584.990000031832, - 3589.990000031941, - 3594.9900000320504, - 3599.9900000321586, - 3604.990000032268, - 3609.990000032377, - 3614.9900000324874, - 3619.9900000325956, - 3624.990000032705, - 3629.990000032814, - 3634.990000032923, - 3639.990000033032, - 3644.990000033141, - 3649.990000033251, - 3654.99000003336, - 3659.990000033469, - 3664.990000033578, - 3669.990000033687, - 3674.9900000337957, - 3679.990000033905, - 3684.9900000340144, - 3689.990000034124, - 3694.9900000342327, - 3699.990000034342, - 3704.9900000344514, - 3709.99000003456, - 3714.9900000346693, - 3719.990000034777, - 3724.9900000348875, - 3729.990000034997, - 3734.9900000351063, - 3739.990000035215, - 3744.990000035324, - 3749.990000035433, - 3754.9900000355424, - 3759.990000035652, - 3764.990000035761, - 3769.9900000358703, - 3774.990000035979, - 3779.990000036088, - 3784.9900000361968, - 3789.9900000363054, - 3794.990000036416, - 3799.990000036525, - 3804.990000036634, - 3809.9900000367434, - 3814.9900000368516, - 3819.990000036961, - 3824.9900000370703, - 3829.9900000371804, - 3834.9900000372886, - 3839.9900000373973, - 3844.990000037507, - 3849.990000037616, - 3854.990000037725, - 3859.9900000378334, - 3864.990000037944, - 3869.990000038053, - 3874.9900000381617, - 3879.990000038271, - 3884.9900000383795, - 3889.9900000384887, - 3894.9900000385987, - 3899.9900000387074, - 3904.990000038817, - 3909.9900000389257, - 3914.990000039035, - 3919.9900000391444, - 3924.990000039253, - 3929.9900000393613, - 3934.990000039472, - 3939.9900000395814, - 3944.990000039689, - 3949.9900000397993, - 3954.990000039908, - 3959.990000040017, - 3964.9900000401262, - 3969.990000040235, - 3974.990000040345, - 3979.9900000404537, - 3984.990000040563, - 3989.990000040672, - 3994.990000040781, - 3999.9900000408898, - 4004.9900000409993, - 4009.990000041109, - 4014.9900000412176, - 4019.9900000413268, - 4024.9900000414364, - 4029.9900000415446, - 4034.990000041654, - 4039.990000041763, - 4044.9900000418734, - 4049.990000041981, - 4054.9900000420903, - 4059.9900000422, - 4064.990000042309, - 4069.990000042418, - 4074.990000042527, - 4079.990000042637, - 4084.9900000427456, - 4089.990000042855, - 4094.990000042964, - 4099.990000043073, - 4104.990000043182, - 4109.990000043291, - 4114.9900000434, - 4119.990000043509, - 4124.990000043618, - 4129.9900000437265, - 4134.990000043837, - 4139.990000043946, - 4144.990000044055, - 4149.990000044164, - 4154.990000044273, - 4159.990000044381, - 4164.990000044491, - 4169.9900000446005, - 4174.99000004471, - 4179.990000044819, - 4184.990000044928, - 4189.990000045037, - 4194.990000045146, - 4199.990000045255, - 4204.990000045365, - 4209.9900000454745, - 4214.990000045583, - 4219.990000045692, - 4224.990000045801, - 4229.99000004591, - 4234.990000046019, - 4239.9900000461275, - 4244.990000046238, - 4249.990000046347, - 4254.990000046456, - 4259.990000046565, - 4264.990000046674, - 4269.990000046783, - 4274.990000046892, - 4279.990000047002, - 4284.990000047112, - 4289.990000047221, - 4294.990000047329, - 4299.990000047438, - 4304.990000047547, - 4309.990000047656, - 4314.9900000477655, - 4319.990000047875, - 4324.990000047984, - 4329.990000048093, - 4334.990000048202, - 4339.990000048311, - 4344.99000004842, - 4349.9900000485295, - 4354.990000048639, - 4359.990000048748, - 4364.990000048857, - 4369.990000048966, - 4374.990000049074, - 4379.990000049184, - 4384.9900000492935, - 4389.990000049403, - 4394.990000049512, - 4399.990000049621, - 4404.99000004973, - 4409.990000049839, - 4414.990000049948, - 4419.9900000500575, - 4424.9900000501675, - 4429.990000050276, - 4434.990000050385, - 4439.990000050494, - 4444.990000050603, - 4449.990000050712, - 4454.9900000508205, - 4459.990000050931, - 4464.99000005104, - 4469.990000051149, - 4474.990000051258, - 4479.990000051367, - 4484.990000051476, - 4489.990000051585, - 4494.990000051695, - 4499.990000051805, - 4504.990000051913, - 4509.990000052022, - 4514.990000052131, - 4519.99000005224, - 4524.990000052349, - 4529.990000052458, - 4534.990000052568, - 4539.990000052677, - 4544.990000052786, - 4549.990000052895, - 4554.990000053004, - 4559.990000053112, - 4564.990000053223, - 4569.990000053332, - 4574.990000053441, - 4579.99000005355, - 4584.990000053659, - 4589.990000053767, - 4594.990000053877, - 4599.9900000539865, - 4604.990000054096, - 4609.990000054205, - 4614.990000054314, - 4619.990000054423, - 4624.990000054532, - 4629.990000054641, - 4634.9900000547495, - 4639.9900000548605, - 4644.990000054969, - 4649.990000055078, - 4654.990000055187, - 4659.990000055296, - 4664.990000055405, - 4669.9900000555135, - 4674.990000055624, - 4679.990000055733, - 4684.990000055842, - 4689.990000055951, - 4694.99000005606, - 4699.990000056169, - 4704.990000056278, - 4709.9900000563875, - 4714.990000056498, - 4719.990000056606, - 4724.990000056715, - 4729.990000056824, - 4734.990000056933, - 4739.990000057042, - 4744.990000057152, - 4749.990000057261, - 4754.990000057371, - 4759.990000057479, - 4764.990000057588, - 4769.990000057697, - 4774.990000057805, - 4779.990000057916, - 4784.990000058025, - 4789.990000058134, - 4794.990000058243, - 4799.990000058352, - 4804.990000058461, - 4809.99000005857, - 4814.9900000586795, - 4819.990000058789, - 4824.990000058898, - 4829.990000059007, - 4834.990000059116, - 4839.990000059225, - 4844.990000059334, - 4849.9900000594425, - 4854.9900000595535, - 4859.990000059662, - 4864.990000059771, - 4869.99000005988, - 4874.990000059989, - 4879.990000060098, - 4884.9900000602065, - 4889.990000060317, - 4894.990000060426, - 4899.990000060535, - 4904.990000060644, - 4909.990000060753, - 4914.990000060862, - 4919.990000060971, - 4924.9900000610805, - 4929.99000006119, - 4934.990000061299, - 4939.990000061408, - 4944.990000061517, - 4949.990000061626, - 4954.990000061735, - 4959.990000061845, - 4964.990000061954, - 4969.990000062063, - 4974.990000062172, - 4979.990000062281, - 4984.99000006239, - 4989.990000062498, - 4994.990000062609, - 4999.990000062718, - 5004.990000062827, - 5009.990000062936, - 5014.990000063045, - 5019.990000063154, - 5024.990000063263, - 5029.9900000633725, - 5034.990000063482, - 5039.990000063591, - 5044.9900000637, - 5049.990000063809, - 5054.990000063918, - 5059.990000064027, - 5064.9900000641355, - 5069.9900000642465, - 5074.990000064355, - 5079.990000064464, - 5084.990000064573, - 5089.990000064682, - 5094.990000064791, - 5099.9900000648995, - 5104.9900000650105, - 5109.990000065119, - 5114.990000065228, - 5119.990000065337, - 5124.990000065446, - 5129.990000065555, - 5134.990000065664, - 5139.9900000657735, - 5144.990000065884, - 5149.990000065992, - 5154.990000066101, - 5159.99000006621, - 5164.990000066319, - 5169.990000066428, - 5174.990000066538, - 5179.990000066647, - 5184.990000066756, - 5189.990000066865, - 5194.990000066974, - 5199.990000067083, - 5204.990000067191, - 5209.990000067302, - 5214.990000067411, - 5219.99000006752, - 5224.990000067629, - 5229.990000067738, - 5234.990000067847, - 5239.990000067956, - 5244.9900000680655, - 5249.990000068175, - 5254.990000068285, - 5259.990000068393, - 5264.990000068502, - 5269.990000068611, - 5274.99000006872, - 5279.9900000688285, - 5284.9900000689395, - 5289.990000069048, - 5294.990000069157, - 5299.990000069266, - 5304.990000069375, - 5309.990000069484, - 5314.9900000695925, - 5319.990000069703, - 5324.990000069812, - 5329.990000069921, - 5334.99000007003, - 5339.990000070139, - 5344.990000070248, - 5349.990000070357, - 5354.990000070466, - 5359.990000070577, - 5364.990000070685, - 5369.990000070794, - 5374.990000070903, - 5379.990000071012, - 5384.990000071121, - 5389.990000071231, - 5394.99000007134, - 5399.990000071449, - 5404.990000071558, - 5409.990000071667, - 5414.990000071776, - 5419.990000071884, - 5424.9900000719945, - 5429.990000072104, - 5434.990000072213, - 5439.990000072322, - 5444.990000072431, - 5449.990000072539, - 5454.990000072649, - 5459.990000072758, - 5464.990000072868, - 5469.990000072978, - 5474.990000073086, - 5479.990000073195, - 5484.990000073304, - 5489.990000073413, - 5494.9900000735215, - 5499.990000073632, - 5504.990000073742, - 5509.99000007385, - 5514.990000073959, - 5519.990000074069, - 5524.990000074177, - 5529.9900000742855, - 5534.9900000743955, - 5539.990000074505, - 5544.990000074614, - 5549.990000074723, - 5554.990000074831, - 5559.990000074941, - 5564.99000007505, - 5569.9900000751595, - 5574.990000075269, - 5579.990000075379, - 5584.990000075487, - 5589.990000075596, - 5594.990000075705, - 5599.990000075814, - 5604.990000075924, - 5609.990000076033, - 5614.990000076143, - 5619.990000076251, - 5624.99000007636, - 5629.990000076468, - 5634.990000076578, - 5639.990000076688, - 5644.990000076797, - 5649.990000076906, - 5654.990000077016, - 5659.990000077124, - 5664.990000077232, - 5669.990000077342, - 5674.990000077451, - 5679.9900000775615, - 5684.990000077671, - 5689.99000007778, - 5694.990000077888, - 5699.990000077997, - 5704.990000078105, - 5709.990000078215, - 5714.9900000783255, - 5719.990000078434, - 5724.990000078543, - 5729.990000078652, - 5734.990000078761, - 5739.990000078871, - 5744.990000078979, - 5749.990000079089, - 5754.990000079198, - 5759.990000079307, - 5764.990000079417, - 5769.990000079525, - 5774.990000079634, - 5779.9900000797425, - 5784.990000079853, - 5789.990000079963, - 5794.990000080071, - 5799.990000080179, - 5804.990000080289, - 5809.990000080398, - 5814.990000080506, - 5819.9900000806165, - 5824.9900000807265, - 5829.990000080835, - 5834.990000080944, - 5839.990000081053, - 5844.990000081162, - 5849.99000008127, - 5854.9900000813805, - 5859.99000008149, - 5864.990000081599, - 5869.990000081708, - 5874.990000081816, - 5879.990000081926, - 5884.990000082035, - 5889.9900000821435, - 5894.990000082254, - 5899.990000082364, - 5904.990000082472, - 5909.990000082581, - 5914.99000008269, - 5919.990000082799, - 5924.9900000829075, - 5929.990000083018, - 5934.990000083128, - 5939.990000083236, - 5944.990000083345, - 5949.990000083455, - 5954.990000083563, - 5959.9900000836715, - 5964.9900000837815, - 5969.990000083892, - 5974.990000084, - 5979.990000084109, - 5984.990000084217, - 5989.990000084327, - 5994.990000084436, - 5999.9900000845455, - 6004.990000084655, - 6009.990000084765, - 6014.990000084873, - 6019.990000084982, - 6024.990000085091, - 6029.9900000852, - 6034.99000008531, - 6039.990000085419, - 6044.990000085529, - 6049.990000085637, - 6054.990000085746, - 6059.990000085854, - 6064.990000085964, - 6069.990000086073, - 6074.990000086183, - 6079.990000086292, - 6084.990000086402, - 6089.99000008651, - 6094.990000086618, - 6099.990000086728, - 6104.990000086837, - 6109.9900000869475, - 6114.990000087056, - 6119.990000087166, - 6124.990000087274, - 6129.990000087383, - 6134.990000087491, - 6139.990000087601, - 6144.990000087711, - 6149.99000008782, - 6154.990000087929, - 6159.990000088038, - 6164.990000088147, - 6169.990000088255, - 6174.990000088365, - 6179.9900000884745, - 6184.990000088584, - 6189.990000088693, - 6194.990000088803, - 6199.990000088911, - 6204.99000008902, - 6209.990000089128, - 6214.990000089239, - 6219.9900000893485, - 6224.990000089457, - 6229.990000089565, - 6234.990000089675, - 6239.990000089784, - 6244.990000089892, - 6249.9900000900025, - 6254.9900000901125, - 6259.990000090221, - 6264.99000009033, - 6269.990000090439, - 6274.990000090548, - 6279.990000090656, - 6284.990000090766, - 6289.9900000908765, - 6294.990000090985, - 6299.990000091094, - 6304.990000091202, - 6309.990000091312, - 6314.990000091421, - 6319.9900000915295, - 6324.99000009164, - 6329.99000009175, - 6334.990000091858, - 6339.990000091967, - 6344.990000092076, - 6349.990000092185, - 6354.9900000922935, - 6359.9900000924035, - 6364.990000092514, - 6369.990000092622, - 6374.990000092731, - 6379.990000092839, - 6384.990000092949, - 6389.9900000930575, - 6394.9900000931675, - 6399.990000093278, - 6404.990000093386, - 6409.990000093495, - 6414.990000093603, - 6419.990000093713, - 6424.990000093822, - 6429.9900000939315, - 6434.990000094041, - 6439.990000094151, - 6444.990000094259, - 6449.990000094368, - 6454.990000094477, - 6459.990000094586, - 6464.990000094696, - 6469.990000094805, - 6474.990000094915, - 6479.990000095023, - 6484.990000095132, - 6489.99000009524, - 6494.99000009535, - 6499.990000095459, - 6504.990000095569, - 6509.990000095678, - 6514.990000095788, - 6519.990000095896, - 6524.990000096004, - 6529.990000096114, - 6534.990000096223, - 6539.9900000963335, - 6544.990000096442, - 6549.990000096552, - 6554.99000009666, - 6559.990000096769, - 6564.990000096877, - 6569.990000096987, - 6574.990000097097, - 6579.990000097206, - 6584.990000097315, - 6589.990000097424, - 6594.990000097533, - 6599.990000097641, - 6604.990000097751, - 6609.990000097861, - 6614.99000009797, - 6619.990000098079, - 6624.990000098189, - 6629.990000098297, - 6634.990000098406, - 6639.990000098514, - 6644.990000098625, - 6649.9900000987345, - 6654.990000098843, - 6659.990000098951, - 6664.990000099061, - 6669.99000009917, - 6674.990000099278, - 6679.990000099388, - 6684.9900000994985, - 6689.990000099607, - 6694.990000099716, - 6699.990000099825, - 6704.990000099934, - 6709.990000100042, - 6714.990000100152, - 6719.9900001002625, - 6724.990000100371, - 6729.99000010048, - 6734.99000010059, - 6739.990000100698, - 6744.990000100807, - 6749.9900001009155, - 6754.9900001010255, - 6759.990000101136, - 6764.990000101244, - 6769.990000101353, - 6774.990000101462, - 6779.990000101571, - 6784.9900001016795, - 6789.9900001017895, - 6794.9900001019, - 6799.990000102008, - 6804.990000102117, - 6809.990000102227, - 6814.990000102335, - 6819.990000102443, - 6824.9900001025535, - 6829.9900001026635, - 6834.990000102772, - 6839.990000102881, - 6844.990000102989, - 6849.990000103099, - 6854.990000103208, - 6859.9900001033175, - 6864.990000103427, - 6869.990000103537, - 6874.990000103645, - 6879.990000103754, - 6884.990000103863, - 6889.990000103972, - 6894.9900001040805, - 6899.990000104191, - 6904.990000104301, - 6909.990000104409, - 6914.990000104518, - 6919.990000104626, - 6924.990000104736, - 6929.990000104845, - 6934.990000104955, - 6939.990000105064, - 6944.990000105174, - 6949.990000105282, - 6954.99000010539, - 6959.9900001055, - 6964.990000105609, - 6969.990000105719, - 6974.990000105828, - 6979.990000105938, - 6984.990000106046, - 6989.990000106155, - 6994.990000106263, - 6999.990000106373, - 7004.990000106482, - 7009.990000106592, - 7014.990000106701, - 7019.99000010681, - 7024.990000106919, - 7029.990000107027, - 7034.990000107137, - 7039.990000107247, - 7044.990000107356, - 7049.990000107465, - 7054.990000107575, - 7059.990000107683, - 7064.990000107792, - 7069.9900001079, - 7074.9900001080105, - 7079.9900001081205, - 7084.990000108229, - 7089.990000108337, - 7094.990000108447, - 7099.990000108556, - 7104.990000108664, - 7109.990000108774, - 7114.9900001088845, - 7119.990000108993, - 7124.990000109102, - 7129.990000109211, - 7134.99000010932, - 7139.990000109428, - 7144.990000109538, - 7149.9900001096485, - 7154.990000109757, - 7159.990000109866, - 7164.990000109976, - 7169.990000110084, - 7174.990000110193, - 7179.9900001103015, - 7184.990000110412, - 7189.990000110522, - 7194.99000011063, - 7199.990000110739, - 7204.990000110848, - 7209.990000110957, - 7214.9900001110655, - 7219.990000111175, - 7224.990000111286, - 7229.990000111394, - 7234.990000111503, - 7239.990000111613, - 7244.990000111721, - 7249.990000111829, - 7254.990000111939, - 7259.9900001120495, - 7264.990000112158, - 7269.990000112267, - 7274.990000112375, - 7279.990000112485, - 7284.990000112594, - 7289.990000112702, - 7294.990000112813, - 7299.990000112923, - 7304.990000113031, - 7309.990000113141, - 7314.990000113249, - 7319.990000113358, - 7324.9900001134665, - 7329.990000113577, - 7334.990000113687, - 7339.990000113795, - 7344.990000113904, - 7349.990000114012, - 7354.990000114122, - 7359.990000114231, - 7364.990000114341, - 7369.99000011445, - 7374.99000011456, - 7379.990000114668, - 7384.990000114776, - 7389.990000114886, - 7394.990000114995, - 7399.990000115104, - 7404.990000115214, - 7409.990000115324, - 7414.990000115432, - 7419.990000115541, - 7424.990000115649, - 7429.990000115759, - 7434.990000115869, - 7439.990000115978, - 7444.990000116087, - 7449.990000116196, - 7454.990000116305, - 7459.990000116413, - 7464.990000116523, - 7469.9900001166325, - 7474.990000116742, - 7479.990000116851, - 7484.990000116959, - 7489.990000117069, - 7494.990000117178, - 7499.990000117287, - 7504.990000117396, - 7509.9900001175065, - 7514.990000117615, - 7519.990000117725, - 7524.990000117833, - 7529.990000117942, - 7534.99000011805, - 7539.9900001181595, - 7544.9900001182705, - 7549.990000118379, - 7554.990000118488, - 7559.990000118597, - 7564.990000118706, - 7569.990000118814, - 7574.990000118924, - 7579.990000119034, - 7584.990000119143, - 7589.990000119252, - 7594.990000119362, - 7599.99000011947, - 7604.990000119579, - 7609.9900001196875, - 7614.9900001197975, - 7619.990000119908, - 7624.990000120016, - 7629.990000120125, - 7634.990000120234, - 7639.990000120343, - 7644.990000120451, - 7649.9900001205615, - 7654.9900001206715, - 7659.99000012078, - 7664.990000120889, - 7669.990000120999, - 7674.990000121107, - 7679.990000121215, - 7684.990000121325, - 7689.9900001214355, - 7694.990000121544, - 7699.990000121653, - 7704.990000121761, - 7709.990000121871, - 7714.99000012198, - 7719.9900001220885, - 7724.990000122199, - 7729.990000122309, - 7734.990000122417, - 7739.990000122526, - 7744.990000122635, - 7749.990000122744, - 7754.9900001228525, - 7759.990000122963, - 7764.990000123073, - 7769.990000123181, - 7774.990000123291, - 7779.990000123398, - 7784.990000123508, - 7789.990000123617, - 7794.990000123726, - 7799.990000123836, - 7804.990000123946, - 7809.990000124054, - 7814.990000124162, - 7819.990000124272, - 7824.990000124381, - 7829.99000012449, - 7834.9900001246, - 7839.99000012471, - 7844.990000124818, - 7849.990000124927, - 7854.990000125035, - 7859.990000125145, - 7864.990000125254, - 7869.990000125364, - 7874.990000125473, - 7879.990000125582, - 7884.990000125691, - 7889.990000125799, - 7894.990000125909, - 7899.9900001260185, - 7904.990000126128, - 7909.990000126237, - 7914.990000126347, - 7919.990000126455, - 7924.990000126564, - 7929.990000126673, - 7934.990000126782, - 7939.9900001268925, - 7944.990000127001, - 7949.990000127109, - 7954.990000127219, - 7959.990000127328, - 7964.990000127436, - 7969.990000127546, - 7974.9900001276565, - 7979.990000127765, - 7984.990000127874, - 7989.990000127983, - 7994.990000128092, - 7999.9900001282, - 8004.9900001283095, - 8009.9900001284195, - 8014.990000128529, - 8019.990000128638, - 8024.990000128748, - 8029.990000128856, - 8034.990000128965, - 8039.990000129073, - 8044.990000129182, - 8049.990000129294, - 8054.990000129402, - 8059.990000129511, - 8064.99000012962, - 8069.990000129729, - 8074.990000129837, - 8079.9900001299475, - 8084.9900001300575, - 8089.990000130166, - 8094.990000130275, - 8099.990000130385, - 8104.990000130493, - 8109.990000130601, - 8114.9900001307105, - 8119.9900001308215, - 8124.99000013093, - 8129.990000131039, - 8134.990000131147, - 8139.990000131257, - 8144.990000131366, - 8149.9900001314745, - 8154.990000131585, - 8159.990000131695, - 8164.990000131803, - 8169.990000131912, - 8174.990000132021, - 8179.99000013213, - 8184.9900001322385, - 8189.9900001323485, - 8194.990000132457, - 8199.990000132566, - 8204.990000132675, - 8209.990000132784, - 8214.990000132893, - 8219.990000133002, - 8224.990000133112, - 8229.99000013322, - 8234.99000013333, - 8239.990000133439, - 8244.990000133548, - 8249.990000133657, - 8254.990000133766, - 8259.990000133876, - 8264.990000133985, - 8269.990000134094, - 8274.990000134203, - 8279.990000134312, - 8284.990000134421, - 8289.99000013453, - 8294.990000134641, - 8299.990000134749, - 8304.990000134858, - 8309.990000134967, - 8314.990000135076, - 8319.990000135185, - 8324.990000135294, - 8329.990000135404, - 8334.990000135513, - 8339.990000135622, - 8344.990000135731, - 8349.990000135842, - 8354.99000013595, - 8359.990000136058, - 8364.990000136168, - 8369.990000136277, - 8374.990000136386, - 8379.990000136495, - 8384.990000136604, - 8389.990000136713, - 8394.990000136822, - 8399.990000136931, - 8404.99000013704, - 8409.99000013715, - 8414.990000137259, - 8419.990000137368, - 8424.990000137477, - 8429.990000137586, - 8434.990000137695, - 8439.990000137805, - 8444.990000137914, - 8449.990000138023, - 8454.990000138132, - 8459.990000138241, - 8464.99000013835, - 8469.99000013846, - 8474.990000138569, - 8479.990000138678, - 8484.990000138787, - 8489.990000138896, - 8494.990000139005, - 8499.990000139114, - 8504.990000139222, - 8509.990000139334, - 8514.990000139442, - 8519.990000139549, - 8524.99000013966, - 8529.990000139771, - 8534.990000139878, - 8539.990000139987, - 8544.990000140097, - 8549.990000140206, - 8554.990000140315, - 8559.990000140424, - 8564.990000140533, - 8569.990000140642, - 8574.990000140751, - 8579.990000140859, - 8584.99000014097, - 8589.990000141079, - 8594.990000141188, - 8599.990000141297, - 8604.990000141406, - 8609.990000141515, - 8614.990000141623, - 8619.990000141734, - 8624.990000141843, - 8629.990000141952, - 8634.990000142061, - 8639.99000014217, - 8644.990000142281, - 8649.990000142388, - 8654.990000142498, - 8659.990000142607, - 8664.990000142716, - 8669.990000142825, - 8674.990000142934, - 8679.990000143043, - 8684.990000143152, - 8689.990000143262, - 8694.99000014337, - 8699.99000014348, - 8704.990000143589, - 8709.990000143698, - 8714.990000143807, - 8719.990000143916, - 8724.990000144026, - 8729.990000144135, - 8734.990000144244, - 8739.990000144353, - 8744.990000144462, - 8749.990000144571, - 8754.99000014468, - 8759.99000014479, - 8764.990000144899, - 8769.990000145008, - 8774.990000145117, - 8779.990000145226, - 8784.990000145335, - 8789.990000145444, - 8794.990000145553, - 8799.990000145663, - 8804.990000145772, - 8809.990000145881, - 8814.990000145992, - 8819.9900001461, - 8824.990000146208, - 8829.990000146317, - 8834.990000146427, - 8839.990000146536, - 8844.990000146645, - 8849.990000146754, - 8854.990000146863, - 8859.990000146972, - 8864.990000147081, - 8869.99000014719, - 8874.9900001473, - 8879.990000147409, - 8884.990000147518, - 8889.990000147627, - 8894.990000147736, - 8899.990000147845, - 8904.990000147955, - 8909.990000148064, - 8914.990000148173, - 8919.990000148282, - 8924.990000148391, - 8929.9900001485, - 8934.99000014861, - 8939.99000014872, - 8944.990000148828, - 8949.990000148937, - 8954.990000149046, - 8959.990000149155, - 8964.990000149264, - 8969.990000149373, - 8974.990000149483, - 8979.990000149592, - 8984.990000149699, - 8989.99000014981, - 8994.990000149919, - 8999.990000150028, - 9004.990000150137, - 9009.990000150246, - 9014.990000150356, - 9019.990000150465, - 9024.990000150574, - 9029.990000150683, - 9034.990000150792, - 9039.9900001509, - 9044.990000151009, - 9049.990000151121, - 9054.990000151229, - 9059.990000151338, - 9064.990000151447, - 9069.990000151556, - 9074.990000151663, - 9079.990000151774, - 9084.990000151884, - 9089.990000151993, - 9094.990000152102, - 9099.990000152213, - 9104.99000015232, - 9109.99000015243, - 9114.990000152538, - 9119.990000152648, - 9124.990000152757, - 9129.990000152866, - 9134.990000152977, - 9139.990000153084, - 9144.990000153191, - 9149.990000153302, - 9154.990000153412, - 9159.99000015352, - 9164.99000015363, - 9169.99000015374, - 9174.990000153848, - 9179.990000153955, - 9184.990000154066, - 9189.990000154176, - 9194.990000154283, - 9199.990000154394, - 9204.990000154505, - 9209.990000154612, - 9214.990000154721, - 9219.990000154829, - 9224.99000015494, - 9229.990000155047, - 9234.990000155158, - 9239.990000155269, - 9244.990000155376, - 9249.990000155483, - 9254.990000155594, - 9259.990000155703, - 9264.990000155813, - 9269.990000155922, - 9274.99000015603, - 9279.99000015614, - 9284.99000015625, - 9289.990000156358, - 9294.99000015647, - 9299.990000156577, - 9304.990000156686, - 9309.990000156795, - 9314.990000156904, - 9319.990000157011, - 9324.990000157122, - 9329.990000157231, - 9334.99000015734, - 9339.99000015745, - 9344.99000015756, - 9349.990000157668, - 9354.990000157775, - 9359.990000157886, - 9364.990000157995, - 9369.990000158105, - 9374.990000158214, - 9379.990000158325, - 9384.990000158432, - 9389.99000015854, - 9394.99000015865, - 9399.99000015876, - 9404.990000158868, - 9409.990000158978, - 9414.990000159089, - 9419.990000159196, - 9424.990000159305, - 9429.990000159414, - 9434.990000159523, - 9439.990000159632, - 9444.990000159742, - 9449.99000015985, - 9454.99000015996, - 9459.990000160069, - 9464.990000160178, - 9469.990000160287, - 9474.990000160395, - 9479.990000160507, - 9484.990000160617, - 9489.990000160724, - 9494.990000160833, - 9499.990000160942, - 9504.990000161053, - 9509.99000016116, - 9514.990000161271, - 9519.990000161379, - 9524.990000161488, - 9529.990000161595, - 9534.990000161706, - 9539.990000161817, - 9544.990000161924, - 9549.990000162034, - 9554.990000162143, - 9559.990000162252, - 9564.99000016236, - 9569.99000016247, - 9574.99000016258, - 9579.990000162688, - 9584.990000162798, - 9589.990000162908, - 9594.990000163016, - 9599.990000163123, - 9604.990000163234, - 9609.990000163343, - 9614.990000163452, - 9619.99000016356, - 9624.99000016367, - 9629.99000016378, - 9634.990000163887, - 9639.990000163998, - 9644.990000164107, - 9649.990000164216, - 9654.990000164324, - 9659.990000164436, - 9664.990000164544, - 9669.990000164653, - 9674.990000164762, - 9679.990000164871, - 9684.990000164978, - 9689.99000016509, - 9694.9900001652, - 9699.990000165308, - 9704.990000165417, - 9709.990000165526, - 9714.990000165635, - 9719.990000165744, - 9724.990000165852, - 9729.990000165964, - 9734.990000166072, - 9739.990000166179, - 9744.99000016629, - 9749.990000166401, - 9754.990000166508, - 9759.990000166616, - 9764.990000166728, - 9769.990000166836, - 9774.990000166945, - 9779.990000167054, - 9784.990000167165, - 9789.990000167272, - 9794.99000016738, - 9799.99000016749, - 9804.9900001676, - 9809.990000167707, - 9814.990000167818, - 9819.990000167929, - 9824.990000168036, - 9829.990000168145, - 9834.990000168254, - 9839.990000168364, - 9844.990000168471, - 9849.990000168582, - 9854.990000168691, - 9859.9900001688, - 9864.99000016891, - 9869.990000169018, - 9874.990000169128, - 9879.990000169237, - 9884.990000169346, - 9889.990000169455, - 9894.990000169564, - 9899.990000169671, - 9904.99000016978, - 9909.990000169893, - 9914.99000017, - 9919.99000017011, - 9924.990000170219, - 9929.990000170328, - 9934.990000170435, - 9939.990000170546, - 9944.990000170656, - 9949.990000170765, - 9954.990000170874, - 9959.990000170985, - 9964.990000171092, - 9969.9900001712, - 9974.99000017131, - 9979.990000171421, - 9984.990000171529, - 9989.990000171638, - 9994.990000171749, - 9999.990000171856, - 10004.990000171963, - 10009.990000172074, - 10014.990000172183, - 10019.990000172293, - 10024.990000172402, - 10029.990000172513, - 10034.99000017262, - 10039.99000017273, - 10044.990000172838, - 10049.990000172947, - 10054.990000173055, - 10059.990000173166, - 10064.990000173277, - 10069.990000173384, - 10074.990000173493, - 10079.990000173602, - 10084.990000173711, - 10089.99000017382, - 10094.99000017393, - 10099.99000017404, - 10104.990000174148, - 10109.990000174257, - 10114.990000174366, - 10119.990000174475, - 10124.990000174585, - 10129.990000174694, - 10134.990000174803, - 10139.990000174912, - 10144.99000017502, - 10149.99000017513, - 10154.990000175241, - 10159.990000175349, - 10164.990000175458, - 10169.990000175567, - 10174.990000175676, - 10179.990000175783, - 10184.990000175894, - 10189.990000176003, - 10194.990000176113, - 10199.990000176222, - 10204.990000176329, - 10209.99000017644, - 10214.990000176547, - 10219.990000176658, - 10224.990000176767, - 10229.990000176876, - 10234.990000176986, - 10239.990000177097, - 10244.990000177204, - 10249.990000177311, - 10254.990000177422, - 10259.990000177531, - 10264.99000017764, - 10269.99000017775, - 10274.99000017786, - 10279.990000177968, - 10284.990000178077, - 10289.990000178186, - 10294.990000178295, - 10299.990000178404, - 10304.990000178514, - 10309.990000178625, - 10314.990000178732, - 10319.990000178841, - 10324.99000017895, - 10329.99000017906, - 10334.990000179167, - 10339.99000017928, - 10344.990000179389, - 10349.990000179496, - 10354.990000179605, - 10359.990000179714, - 10364.990000179825, - 10369.990000179932, - 10374.990000180042, - 10379.99000018015, - 10384.990000180258, - 10389.990000180367, - 10394.990000180478, - 10399.990000180589, - 10404.990000180696, - 10409.990000180806, - 10414.990000180915, - 10419.990000181024, - 10424.990000181131, - 10429.990000181242, - 10434.990000181353, - 10439.99000018146, - 10444.99000018157, - 10449.99000018168, - 10454.990000181788, - 10459.990000181895, - 10464.990000182006, - 10469.990000182115, - 10474.990000182224, - 10479.990000182332, - 10484.990000182444, - 10489.990000182552, - 10494.990000182659, - 10499.99000018277, - 10504.99000018288, - 10509.990000182988, - 10514.990000183096, - 10519.990000183208, - 10524.990000183316, - 10529.990000183425, - 10534.990000183534, - 10539.990000183643, - 10544.990000183752, - 10549.99000018386, - 10554.99000018397, - 10559.99000018408, - 10564.990000184189, - 10569.990000184298, - 10574.990000184407, - 10579.990000184516, - 10584.990000184624, - 10589.990000184736, - 10594.990000184844, - 10599.990000184953, - 10604.990000185062, - 10609.990000185173, - 10614.99000018528, - 10619.990000185391, - 10624.9900001855, - 10629.990000185608, - 10634.990000185717, - 10639.990000185826, - 10644.990000185937, - 10649.990000186044, - 10654.990000186152, - 10659.990000186262, - 10664.990000186372, - 10669.990000186479, - 10674.99000018659, - 10679.9900001867, - 10684.990000186808, - 10689.990000186917, - 10694.990000187026, - 10699.990000187136, - 10704.990000187243, - 10709.990000187354, - 10714.990000187465, - 10719.990000187572, - 10724.99000018768, - 10729.99000018779, - 10734.9900001879, - 10739.990000188009, - 10744.990000188118, - 10749.990000188227, - 10754.990000188336, - 10759.990000188443, - 10764.990000188553, - 10769.990000188665, - 10774.990000188773, - 10779.990000188882, - 10784.990000188991, - 10789.9900001891, - 10794.99000018921, - 10799.990000189318, - 10804.990000189428, - 10809.990000189537, - 10814.990000189646, - 10819.990000189757, - 10824.990000189864, - 10829.990000189971, - 10834.990000190082, - 10839.990000190191, - 10844.9900001903, - 10849.99000019041, - 10854.99000019052, - 10859.990000190628, - 10864.990000190735, - 10869.990000190846, - 10874.990000190955, - 10879.990000191065, - 10884.990000191174, - 10889.990000191285, - 10894.990000191392, - 10899.9900001915, - 10904.990000191608, - 10909.99000019172, - 10914.990000191827, - 10919.990000191938, - 10924.990000192049, - 10929.990000192156, - 10934.990000192265, - 10939.990000192374, - 10944.990000192483, - 10949.99000019259, - 10954.990000192702, - 10959.990000192809, - 10964.99000019292, - 10969.99000019303, - 10974.990000193138, - 10979.990000193247, - 10984.990000193357, - 10989.990000193466, - 10994.990000193575, - 10999.990000193684, - 11004.990000193791, - 11009.990000193902, - 11014.990000194011, - 11019.99000019412, - 11024.990000194228, - 11029.99000019434, - 11034.990000194448, - 11039.990000194555, - 11044.990000194666, - 11049.990000194775, - 11054.990000194883, - 11059.990000194995, - 11064.990000195105, - 11069.990000195212, - 11074.99000019532, - 11079.99000019543, - 11084.99000019554, - 11089.990000195647, - 11094.990000195758, - 11099.990000195869, - 11104.990000195976, - 11109.990000196083, - 11114.990000196194, - 11119.990000196303, - 11124.99000019641, - 11129.990000196522, - 11134.99000019663, - 11139.99000019674, - 11144.990000196849, - 11149.990000196958, - 11154.990000197067, - 11159.990000197175, - 11164.990000197286, - 11169.990000197395, - 11174.990000197506, - 11179.990000197613, - 11184.990000197722, - 11189.990000197831, - 11194.990000197939, - 11199.99000019805, - 11204.990000198159, - 11209.99000019827, - 11214.990000198377, - 11219.990000198486, - 11224.990000198597, - 11229.990000198704, - 11234.990000198814, - 11239.990000198923, - 11244.990000199034, - 11249.990000199141, - 11254.99000019925, - 11259.990000199361, - 11264.990000199468, - 11269.990000199576, - 11274.990000199687, - 11279.990000199796, - 11284.990000199905, - 11289.990000200014, - 11294.990000200125, - 11299.990000200232, - 11304.99000020034, - 11309.990000200449, - 11314.99000020056, - 11319.990000200669, - 11324.990000200778, - 11329.990000200889, - 11334.990000200996, - 11339.990000201104, - 11344.990000201216, - 11349.990000201324, - 11354.990000201433, - 11359.990000201544, - 11364.990000201653, - 11369.99000020176, - 11374.99000020187, - 11379.99000020198, - 11384.990000202088, - 11389.990000202195, - 11394.990000202308, - 11399.990000202417, - 11404.990000202524, - 11409.990000202632, - 11414.990000202744, - 11419.990000202852, - 11424.990000202959, - 11429.990000203072, - 11434.99000020318, - 11439.990000203288, - 11444.990000203396, - 11449.990000203506, - 11454.990000203616, - 11459.990000203723, - 11464.990000203834, - 11469.990000203943, - 11474.990000204052, - 11479.99000020416, - 11484.99000020427, - 11489.99000020438, - 11494.990000204487, - 11499.990000204598, - 11504.990000204707, - 11509.990000204816, - 11514.990000204923, - 11519.990000205034, - 11524.990000205144, - 11529.99000020525, - 11534.990000205362, - 11539.990000205471, - 11544.990000205578, - 11549.990000205691, - 11554.990000205798, - 11559.990000205908, - 11564.990000206015, - 11569.990000206126, - 11574.990000206235, - 11579.990000206346, - 11584.990000206453, - 11589.990000206562, - 11594.990000206672, - 11599.99000020678, - 11604.99000020689, - 11609.990000206999, - 11614.990000207106, - 11619.990000207217, - 11624.990000207326, - 11629.990000207437, - 11634.990000207545, - 11639.990000207654, - 11644.990000207763, - 11649.99000020787, - 11654.990000207981, - 11659.99000020809, - 11664.990000208201, - 11669.990000208309, - 11674.990000208418, - 11679.990000208529, - 11684.990000208636, - 11689.990000208745, - 11694.990000208854, - 11699.990000208965, - 11704.990000209073, - 11709.990000209182, - 11714.990000209289, - 11719.9900002094, - 11724.99000020951, - 11729.990000209618, - 11734.99000020973, - 11739.990000209837, - 11744.990000209946, - 11749.990000210057, - 11754.990000210164, - 11759.990000210271, - 11764.99000021038, - 11769.990000210493, - 11774.9900002106, - 11779.99000021071, - 11784.99000021082, - 11789.990000210928, - 11794.990000211035, - 11799.990000211144, - 11804.990000211255, - 11809.990000211365, - 11814.990000211475, - 11819.990000211585, - 11824.990000211692, - 11829.9900002118, - 11834.990000211908, - 11839.990000212021, - 11844.990000212129, - 11849.99000021224, - 11854.990000212349, - 11859.990000212456, - 11864.990000212563, - 11869.990000212674, - 11874.990000212783, - 11879.990000212892, - 11884.990000213003, - 11889.99000021311, - 11894.99000021322, - 11899.990000213327, - 11904.990000213438, - 11909.990000213547, - 11914.990000213655, - 11919.990000213767, - 11924.990000213877, - 11929.990000213984, - 11934.990000214091, - 11939.990000214202, - 11944.990000214311, - 11949.990000214422, - 11954.99000021453, - 11959.99000021464, - 11964.990000214748, - 11969.990000214855, - 11974.990000214966, - 11979.990000215075, - 11984.990000215183, - 11989.990000215294, - 11994.990000215403, - 11999.990000215512, - 12004.990000215621, - 12009.99000021573, - 12014.99000021584, - 12019.990000215947, - 12024.990000216058, - 12029.990000216167, - 12034.990000216278, - 12039.990000216385, - 12044.990000216494, - 12049.990000216603, - 12054.99000021671, - 12059.99000021682, - 12064.990000216929, - 12069.990000217042, - 12074.990000217149, - 12079.990000217258, - 12084.990000217369, - 12089.990000217476, - 12094.990000217584, - 12099.990000217695, - 12104.990000217806, - 12109.990000217913, - 12114.990000218022, - 12119.990000218133, - 12124.99000021824, - 12129.99000021835, - 12134.990000218459, - 12139.990000218568, - 12144.990000218677, - 12149.990000218786, - 12154.990000218897, - 12159.990000219004, - 12164.990000219112, - 12169.990000219224, - 12174.990000219332, - 12179.99000021944, - 12184.99000021955, - 12189.990000219657, - 12194.990000219768, - 12199.990000219876, - 12204.990000219988, - 12209.990000220096, - 12214.990000220205, - 12219.990000220316, - 12224.990000220425, - 12229.990000220532, - 12234.99000022064, - 12239.990000220749, - 12244.99000022086, - 12249.990000220967, - 12254.99000022108, - 12259.990000221189, - 12264.990000221296, - 12269.990000221404, - 12274.990000221514, - 12279.990000221624, - 12284.990000221731, - 12289.99000022184, - 12294.990000221953, - 12299.99000022206, - 12304.990000222171, - 12309.990000222278, - 12314.990000222388, - 12319.990000222495, - 12324.990000222606, - 12329.990000222715, - 12334.990000222824, - 12339.990000222931, - 12344.990000223042, - 12349.990000223152, - 12354.990000223259, - 12359.99000022337, - 12364.990000223479, - 12369.990000223588, - 12374.990000223695, - 12379.990000223806, - 12384.990000223916, - 12389.990000224023, - 12394.990000224134, - 12399.990000224243, - 12404.990000224354, - 12409.990000224461, - 12414.99000022457, - 12419.99000022468, - 12424.990000224787, - 12429.990000224898, - 12434.990000225007, - 12439.990000225118, - 12444.990000225225, - 12449.990000225334, - 12454.990000225444, - 12459.990000225553, - 12464.990000225662, - 12469.990000225771, - 12474.990000225878, - 12479.990000225991, - 12484.990000226098, - 12489.99000022621, - 12494.990000226317, - 12499.990000226426, - 12504.990000226535, - 12509.990000226642, - 12514.990000226753, - 12519.990000226862, - 12524.990000226973, - 12529.99000022708, - 12534.99000022719, - 12539.9900002273, - 12544.990000227408, - 12549.990000227517, - 12554.990000227626, - 12559.990000227737, - 12564.990000227845, - 12569.990000227954, - 12574.990000228065, - 12579.990000228172, - 12584.99000022828, - 12589.99000022839, - 12594.990000228501, - 12599.990000228609, - 12604.990000228718, - 12609.990000228829, - 12614.990000228936, - 12619.990000229043, - 12624.990000229152, - 12629.990000229265, - 12634.990000229373, - 12639.990000229482, - 12644.990000229589, - 12649.9900002297, - 12654.990000229807, - 12659.990000229916, - 12664.990000230027, - 12669.990000230137, - 12674.990000230247, - 12679.990000230357, - 12684.990000230464, - 12689.990000230571, - 12694.99000023068, - 12699.990000230791, - 12704.9900002309, - 12709.990000231008, - 12714.99000023112, - 12719.990000231228, - 12724.990000231335, - 12729.990000231446, - 12734.990000231555, - 12739.990000231664, - 12744.990000231775, - 12749.990000231885, - 12754.990000231992, - 12759.9900002321, - 12764.99000023221, - 12769.99000023232, - 12774.990000232428, - 12779.99000023254, - 12784.990000232649, - 12789.990000232756, - 12794.990000232863, - 12799.990000232974, - 12804.990000233083, - 12809.99000023319, - 12814.990000233302, - 12819.990000233409, - 12824.99000023352, - 12829.990000233627, - 12834.990000233738, - 12839.990000233847, - 12844.990000233955, - 12849.990000234066, - 12854.990000234175, - 12859.990000234284, - 12864.990000234393, - 12869.990000234502, - 12874.990000234611, - 12879.990000234719, - 12884.99000023483, - 12889.990000234939, - 12894.99000023505, - 12899.990000235157, - 12904.990000235266, - 12909.990000235375, - 12914.990000235483, - 12919.990000235592, - 12924.990000235703, - 12929.990000235814, - 12934.99000023592, - 12939.99000023603, - 12944.990000236141, - 12949.990000236248, - 12954.990000236356, - 12959.990000236467, - 12964.990000236578, - 12969.990000236685, - 12974.990000236794, - 12979.990000236905, - 12984.990000237012, - 12989.99000023712, - 12994.990000237229, - 12999.990000237342, - 13004.990000237449, - 13009.990000237558, - 13014.990000237669, - 13019.990000237776, - 13024.990000237884, - 13029.990000237996, - 13034.990000238104, - 13039.990000238213, - 13044.990000238322, - 13049.990000238433, - 13054.99000023854, - 13059.99000023865, - 13064.99000023876, - 13069.990000238868, - 13074.990000238977, - 13079.990000239088, - 13084.990000239197, - 13089.990000239304, - 13094.990000239412, - 13099.99000023952, - 13104.990000239632, - 13109.99000023974, - 13114.990000239852, - 13119.99000023996, - 13124.990000240068, - 13129.990000240176, - 13134.990000240286, - 13139.990000240396, - 13144.990000240503, - 13149.990000240612, - 13154.990000240725, - 13159.990000240832, - 13164.99000024094, - 13169.99000024105, - 13174.99000024116, - 13179.990000241267, - 13184.990000241378, - 13189.990000241487, - 13194.990000241596, - 13199.990000241703, - 13204.990000241814, - 13209.990000241924, - 13214.99000024203, - 13219.990000242142, - 13224.990000242251, - 13229.990000242358, - 13234.990000242471, - 13239.990000242578, - 13244.990000242688, - 13249.990000242795, - 13254.990000242906, - 13259.990000243015, - 13264.990000243126, - 13269.990000243233, - 13274.990000243342, - 13279.990000243452, - 13284.990000243559, - 13289.99000024367, - 13294.990000243779, - 13299.99000024389, - 13304.990000243997, - 13309.990000244106, - 13314.990000244215, - 13319.990000244325, - 13324.990000244434, - 13329.990000244543, - 13334.99000024465, - 13339.990000244761, - 13344.99000024487, - 13349.990000244981, - 13354.990000245089, - 13359.990000245198, - 13364.990000245307, - 13369.990000245414, - 13374.990000245525, - 13379.990000245634, - 13384.990000245745, - 13389.990000245853, - 13394.990000245962, - 13399.990000246069, - 13404.99000024618, - 13409.990000246291, - 13414.990000246398, - 13419.99000024651, - 13424.990000246617, - 13429.990000246726, - 13434.990000246837, - 13439.990000246944, - 13444.990000247051, - 13449.990000247162, - 13454.990000247273, - 13459.99000024738, - 13464.99000024749, - 13469.9900002476, - 13474.990000247708, - 13479.990000247815, - 13484.990000247924, - 13489.990000248037, - 13494.990000248144, - 13499.990000248254, - 13504.990000248365, - 13509.990000248472, - 13514.99000024858, - 13519.990000248692, - 13524.9900002488, - 13529.990000248908, - 13534.99000024902, - 13539.990000249129, - 13544.990000249236, - 13549.990000249343, - 13554.990000249452, - 13559.990000249563, - 13564.990000249672, - 13569.990000249783, - 13574.99000024989, - 13579.99000025, - 13584.990000250107, - 13589.990000250218, - 13594.990000250327, - 13599.990000250436, - 13604.990000250547, - 13609.990000250657, - 13614.990000250764, - 13619.990000250871, - 13624.990000250982, - 13629.990000251091, - 13634.9900002512, - 13639.990000251308, - 13644.99000025142, - 13649.990000251528, - 13654.990000251635, - 13659.990000251746, - 13664.990000251855, - 13669.990000251963, - 13674.990000252075, - 13679.990000252184, - 13684.990000252292, - 13689.9900002524, - 13694.99000025251, - 13699.99000025262, - 13704.990000252727, - 13709.990000252837, - 13714.990000252948, - 13719.990000253056, - 13724.990000253165, - 13729.990000253274, - 13734.990000253383, - 13739.99000025349, - 13744.990000253601, - 13749.990000253709, - 13754.990000253822, - 13759.990000253929, - 13764.990000254038, - 13769.990000254147, - 13774.990000254254, - 13779.990000254364, - 13784.990000254475, - 13789.990000254586, - 13794.990000254693, - 13799.990000254802, - 13804.990000254913, - 13809.99000025502, - 13814.99000025513, - 13819.990000255239, - 13824.99000025535, - 13829.990000255457, - 13834.990000255566, - 13839.990000255677, - 13844.990000255784, - 13849.990000255892, - 13854.990000256003, - 13859.990000256112, - 13864.99000025622, - 13869.99000025633, - 13874.99000025644, - 13879.990000256548, - 13884.990000256656, - 13889.990000256768, - 13894.990000256876, - 13899.990000256985, - 13904.990000257094, - 13909.990000257205, - 13914.990000257312, - 13919.99000025742, - 13924.990000257529, - 13929.990000257641, - 13934.990000257749, - 13939.99000025786, - 13944.990000257969, - 13949.990000258076, - 13954.990000258183, - 13959.990000258293, - 13964.990000258404, - 13969.990000258513, - 13974.990000258624, - 13979.990000258733, - 13984.99000025884, - 13989.99000025895, - 13994.990000259058, - 13999.990000259168, - 14004.990000259275, - 14009.990000259388, - 14014.990000259497, - 14019.990000259604, - 14024.990000259711, - 14029.990000259822, - 14034.990000259932, - 14039.99000026004, - 14044.99000026015, - 14049.990000260259, - 14054.990000260368, - 14059.990000260475, - 14064.990000260586, - 14069.990000260696, - 14074.990000260803, - 14079.990000260914, - 14084.990000261023, - 14089.990000261132, - 14094.99000026124, - 14099.99000026135, - 14104.99000026146, - 14109.990000261567, - 14114.990000261678, - 14119.990000261787, - 14124.990000261898, - 14129.990000262005, - 14134.990000262114, - 14139.990000262223, - 14144.99000026233, - 14149.990000262442, - 14154.990000262549, - 14159.990000262658, - 14164.99000026277, - 14169.990000262878, - 14174.990000262987, - 14179.990000263097, - 14184.990000263206, - 14189.990000263315, - 14194.990000263422, - 14199.990000263533, - 14204.990000263642, - 14209.990000263753, - 14214.99000026386, - 14219.99000026397, - 14224.990000264079, - 14229.990000264186, - 14234.990000264297, - 14239.990000264406, - 14244.990000264517, - 14249.990000264625, - 14254.990000264734, - 14259.990000264845, - 14264.990000264952, - 14269.990000265061, - 14274.990000265168, - 14279.990000265281, - 14284.990000265389, - 14289.990000265498, - 14294.990000265609, - 14299.990000265716, - 14304.990000265825, - 14309.990000265934, - 14314.990000266045, - 14319.990000266152, - 14324.990000266262, - 14329.990000266369, - 14334.990000266482, - 14339.990000266587, - 14344.9900002667, - 14349.99000026681, - 14354.990000266916, - 14359.990000267026, - 14364.990000267137, - 14369.990000267244, - 14374.990000267351, - 14379.99000026746, - 14384.990000267571, - 14389.99000026768, - 14394.990000267791, - 14399.9900002679, - 14404.990000268008, - 14409.990000268115, - 14414.990000268224, - 14419.990000268335, - 14424.990000268444, - 14429.990000268555, - 14434.990000268665, - 14439.990000268772, - 14444.99000026888, - 14449.990000268992, - 14454.9900002691, - 14459.990000269208, - 14464.99000026932, - 14469.990000269428, - 14474.990000269536, - 14479.990000269643, - 14484.990000269754, - 14489.990000269863, - 14494.990000269972, - 14499.990000270083, - 14504.99000027019, - 14509.9900002703, - 14514.990000270407, - 14519.990000270518, - 14524.990000270627, - 14529.990000270735, - 14534.990000270845, - 14539.990000270956, - 14544.990000271064, - 14549.990000271171, - 14554.990000271282, - 14559.990000271391, - 14564.990000271499, - 14569.99000027161, - 14574.99000027172, - 14579.990000271828, - 14584.990000271937, - 14589.990000272046, - 14594.990000272155, - 14599.990000272262, - 14604.990000272373, - 14609.990000272483, - 14614.990000272594, - 14619.9900002727, - 14624.99000027281, - 14629.99000027292, - 14634.990000273026, - 14639.990000273137, - 14644.990000273247, - 14649.990000273358, - 14654.990000273465, - 14659.990000273574, - 14664.990000273685, - 14669.990000273792, - 14674.9900002739, - 14679.990000274009, - 14684.990000274118, - 14689.990000274229, - 14694.990000274338, - 14699.990000274449, - 14704.990000274556, - 14709.990000274664, - 14714.990000274775, - 14719.990000274884, - 14724.990000274993, - 14729.990000275102, - 14734.990000275213, - 14739.99000027532, - 14744.990000275433, - 14749.990000275537, - 14754.990000275648, - 14759.990000275757, - 14764.990000275866, - 14769.990000275977, - 14774.990000276084, - 14779.990000276191, - 14784.9900002763, - 14789.990000276412, - 14794.990000276519, - 14799.990000276632, - 14804.99000027674, - 14809.990000276848, - 14814.990000276955, - 14819.990000277065, - 14824.990000277176, - 14829.990000277285, - 14834.990000277396, - 14839.990000277505, - 14844.990000277612, - 14849.99000027772, - 14854.990000277832, - 14859.99000027794, - 14864.990000278047, - 14869.99000027816, - 14874.990000278269, - 14879.990000278376, - 14884.990000278483, - 14889.990000278594, - 14894.990000278704, - 14899.99000027881, - 14904.990000278922, - 14909.990000279033, - 14914.99000027914, - 14919.990000279251, - 14924.990000279358, - 14929.990000279467, - 14934.990000279575, - 14939.990000279686, - 14944.990000279795, - 14949.990000279904, - 14954.990000280011, - 14959.990000280122, - 14964.990000280231, - 14969.990000280342, - 14974.99000028045, - 14979.990000280559, - 14984.99000028067, - 14989.990000280777, - 14994.990000280886, - 14999.990000280995, - 15004.990000281103, - 15009.990000281214, - 15014.990000281323, - 15019.990000281434, - 15024.990000281541, - 15029.99000028165, - 15034.99000028176, - 15039.990000281869, - 15044.990000281978, - 15049.990000282087, - 15054.990000282194, - 15059.990000282305, - 15064.990000282414, - 15069.990000282525, - 15074.990000282633, - 15079.990000282742, - 15084.990000282849, - 15089.990000282958, - 15094.99000028307, - 15099.990000283178, - 15104.99000028329, - 15109.990000283397, - 15114.990000283506, - 15119.990000283617, - 15124.990000283724, - 15129.990000283833, - 15134.990000283942, - 15139.990000284053, - 15144.99000028416, - 15149.990000284268, - 15154.99000028438, - 15159.990000284488, - 15164.990000284597, - 15169.990000284706, - 15174.990000284817, - 15179.990000284924, - 15184.990000285034, - 15189.990000285145, - 15194.990000285252, - 15199.99000028536, - 15204.990000285468, - 15209.990000285581, - 15214.990000285688, - 15219.990000285798, - 15224.990000285909, - 15229.990000286016, - 15234.990000286123, - 15239.990000286232, - 15244.990000286345, - 15249.990000286452, - 15254.990000286563, - 15259.99000028667, - 15264.990000286782, - 15269.990000286887, - 15274.990000286996, - 15279.990000287107, - 15284.990000287216, - 15289.990000287327, - 15294.990000287436, - 15299.990000287544, - 15304.990000287651, - 15309.990000287762, - 15314.990000287871, - 15319.99000028798, - 15324.990000288091, - 15329.9900002882, - 15334.990000288308, - 15339.990000288415, - 15344.990000288526, - 15349.990000288635, - 15354.990000288744, - 15359.990000288852, - 15364.990000288964, - 15369.990000289072, - 15374.990000289183, - 15379.99000028929, - 15384.9900002894, - 15389.990000289506, - 15394.990000289617, - 15399.990000289728, - 15404.990000289836, - 15409.990000289943, - 15414.990000290054, - 15419.990000290163, - 15424.99000029027, - 15429.990000290381, - 15434.99000029049, - 15439.9900002906, - 15444.990000290709, - 15449.990000290818, - 15454.990000290927, - 15459.990000291034, - 15464.990000291145, - 15469.990000291255, - 15474.990000291366, - 15479.990000291473, - 15484.990000291582, - 15489.990000291691, - 15494.990000291798, - 15499.99000029191, - 15504.990000292019, - 15509.99000029213, - 15514.990000292237, - 15519.990000292346, - 15524.990000292457, - 15529.990000292564, - 15534.990000292672, - 15539.990000292782, - 15544.990000292893, - 15549.990000293, - 15554.99000029311, - 15559.99000029322, - 15564.990000293328, - 15569.990000293436, - 15574.990000293545, - 15579.990000293656, - 15584.990000293765, - 15589.990000293874, - 15594.990000293985, - 15599.990000294092, - 15604.9900002942, - 15609.990000294309, - 15614.99000029442, - 15619.990000294529, - 15624.990000294638, - 15629.990000294749, - 15634.990000294856, - 15639.990000294963, - 15644.990000295073, - 15649.990000295184, - 15654.990000295293, - 15659.990000295404, - 15664.990000295513, - 15669.990000295618, - 15674.990000295733, - 15679.990000295837, - 15684.990000295948, - 15689.990000296057, - 15694.990000296168, - 15699.990000296277, - 15704.990000296384, - 15709.990000296491, - 15714.990000296602, - 15719.990000296712, - 15724.990000296819, - 15729.990000296932, - 15734.99000029704, - 15739.990000297148, - 15744.990000297255, - 15749.990000297366, - 15754.990000297475, - 15759.990000297583, - 15764.990000297694, - 15769.990000297805, - 15774.990000297912, - 15779.99000029802, - 15784.990000298132, - 15789.99000029824, - 15794.990000298347, - 15799.990000298458, - 15804.990000298567, - 15809.990000298676, - 15814.990000298783, - 15819.990000298894, - 15824.990000299003, - 15829.99000029911, - 15834.990000299222, - 15839.99000029933, - 15844.990000299442, - 15849.990000299551, - 15854.990000299658, - 15859.990000299767, - 15864.990000299875, - 15869.990000299986, - 15874.990000300095, - 15879.990000300206, - 15884.990000300313, - 15889.990000300422, - 15894.990000300531, - 15899.99000030064, - 15904.99000030075, - 15909.990000300859, - 15914.990000300966, - 15919.990000301077, - 15924.990000301186, - 15929.990000301297, - 15934.990000301405, - 15939.990000301514, - 15944.990000301623, - 15949.99000030173, - 15954.990000301841, - 15959.99000030195, - 15964.990000302061, - 15969.990000302168, - 15974.990000302278, - 15979.990000302389, - 15984.990000302496, - 15989.990000302605, - 15994.990000302714, - 15999.990000302825, - 16004.990000302932, - 16009.990000303042, - 16014.990000303149, - 16019.99000030326, - 16024.990000303369, - 16029.990000303478, - 16034.99000030359, - 16039.990000303696, - 16044.990000303806, - 16049.990000303917, - 16054.990000304024, - 16059.990000304131, - 16064.990000304244, - 16069.990000304353, - 16074.99000030446, - 16079.990000304568, - 16084.99000030468, - 16089.990000304788, - 16094.990000304895, - 16099.990000305004, - 16104.990000305117, - 16109.990000305224, - 16114.990000305335, - 16119.990000305444, - 16124.990000305552, - 16129.99000030566, - 16134.990000305768, - 16139.990000305881, - 16144.990000305988, - 16149.990000306096, - 16154.990000306208, - 16159.990000306316, - 16164.990000306423, - 16169.990000306534, - 16174.990000306643, - 16179.990000306752, - 16184.99000030686, - 16189.990000306967, - 16194.99000030708, - 16199.990000307187, - 16204.990000307298, - 16209.990000307407, - 16214.990000307516, - 16219.990000307624, - 16224.990000307736, - 16229.990000307844, - 16234.990000307951, - 16239.990000308062, - 16244.990000308171, - 16249.990000308282, - 16254.990000308391, - 16259.9900003085, - 16264.990000308608, - 16269.990000308715, - 16274.990000308826, - 16279.990000308935, - 16284.990000309042, - 16289.990000309153, - 16294.990000309264, - 16299.990000309372, - 16304.990000309483, - 16309.99000030959, - 16314.9900003097, - 16319.990000309806, - 16324.990000309917, - 16329.990000310027, - 16334.990000310137, - 16339.990000310245, - 16344.990000310354, - 16349.990000310463, - 16354.99000031057, - 16359.990000310681, - 16364.99000031079, - 16369.990000310901, - 16374.990000311009, - 16379.990000311118, - 16384.990000311045, - 16389.990000310245, - 16394.990000309444, - 16399.990000308644, - 16404.990000307844, - 16409.990000307043, - 16414.990000306247, - 16419.990000305443, - 16424.990000304642, - 16429.990000303842, - 16434.990000303038, - 16439.99000030224, - 16444.99000030144, - 16449.99000030064, - 16454.99000029984, - 16459.99000029904, - 16464.99000029824, - 16469.990000297443, - 16474.990000296642, - 16479.99000029584, - 16484.990000295038, - 16489.990000294238, - 16494.990000293434, - 16499.990000292637, - 16504.990000291837, - 16509.990000291036, - 16514.990000290236, - 16519.990000289436, - 16524.990000288635, - 16529.99000028784, - 16534.990000287034, - 16539.990000286234, - 16544.990000285434, - 16549.99000028463, - 16554.990000283833, - 16559.990000283033, - 16564.990000282232, - 16569.990000281432, - 16574.99000028063, - 16579.99000027983, - 16584.99000027903, - 16589.990000278234, - 16594.99000027743, - 16599.99000027663, - 16604.99000027583, - 16609.990000275033, - 16614.990000274232, - 16619.99000027343, - 16624.990000272628, - 16629.990000271828, - 16634.990000271027, - 16639.990000270227, - 16644.99000026943, - 16649.990000268626, - 16654.990000267826, - 16659.990000267026, - 16664.99000026622, - 16669.990000265425, - 16674.990000264625, - 16679.990000263824, - 16684.990000263024, - 16689.990000262223, - 16694.990000261423, - 16699.990000260626, - 16704.990000259822, - 16709.990000259022, - 16714.990000258218, - 16719.990000257418, - 16724.990000256617, - 16729.990000255817, - 16734.99000025502, - 16739.99000025422, - 16744.99000025342, - 16749.99000025262, - 16754.99000025182, - 16759.99000025102, - 16764.990000250218, - 16769.990000249418, - 16774.990000248617, - 16779.990000247813, - 16784.990000247017, - 16789.990000246216, - 16794.990000245416, - 16799.990000244616, - 16804.990000243815, - 16809.990000243015, - 16814.99000024222, - 16819.990000241414, - 16824.990000240614, - 16829.990000239814, - 16834.99000023901, - 16839.990000238213, - 16844.990000237412, - 16849.990000236612, - 16854.99000023581, - 16859.99000023501, - 16864.990000234207, - 16869.990000233407, - 16874.99000023261, - 16879.99000023181, - 16884.99000023101, - 16889.99000023021, - 16894.99000022941, - 16899.99000022861, - 16904.990000227812, - 16909.990000227008, - 16914.990000226207, - 16919.990000225407, - 16924.990000224607, - 16929.990000223806, - 16934.990000223006, - 16939.990000222206, - 16944.990000221405, - 16949.9900002206, - 16954.990000219805, - 16959.990000219004, - 16964.990000218204, - 16969.990000217404, - 16974.990000216603, - 16979.990000215803, - 16984.990000215006, - 16989.990000214202, - 16994.9900002134, - 16999.9900002126, - 17004.9900002118, - 17009.990000211, - 17014.9900002102, - 17019.9900002094, - 17024.9900002086, - 17029.9900002078, - 17034.990000207, - 17039.990000206202, - 17044.990000205402, - 17049.990000204598, - 17054.990000203798, - 17059.990000202997, - 17064.990000202193, - 17069.990000201396, - 17074.990000200596, - 17079.990000199796, - 17084.990000198995, - 17089.990000198195, - 17094.990000197395, - 17099.990000196594, - 17104.990000195794, - 17109.990000194994, - 17114.990000194193, - 17119.990000193393, - 17124.990000192593, - 17129.990000191792, - 17134.990000190992, - 17139.99000019019, - 17144.99000018939, - 17149.99000018859, - 17154.99000018779, - 17159.99000018699, - 17164.99000018619, - 17169.99000018539, - 17174.99000018459, - 17179.990000183792, - 17184.990000182992, - 17189.990000182188, - 17194.990000181388, - 17199.990000180587, - 17204.990000179787, - 17209.990000178987, - 17214.990000178186, - 17219.990000177386, - 17224.990000176585, - 17229.990000175785, - 17234.99000017498, - 17239.990000174184, - 17244.990000173384, - 17249.990000172584, - 17254.990000171783, - 17259.990000170983, - 17264.990000170183, - 17269.990000169382, - 17274.990000168582, - 17279.99000016778, - 17284.99000016698, - 17289.99000016618, - 17294.99000016538, - 17299.99000016458, - 17304.990000163783, - 17309.99000016298, - 17314.99000016218, - 17319.990000161382, - 17324.990000160582, - 17329.990000159778, - 17334.990000158978, - 17339.990000158177, - 17344.990000157377, - 17349.990000156577, - 17354.990000155776, - 17359.990000154976, - 17364.990000154176, - 17369.990000153375, - 17374.990000152575, - 17379.990000151774, - 17384.990000150974, - 17389.990000150174, - 17394.990000149373, - 17399.990000148573, - 17404.990000147773, - 17409.990000146972, - 17414.990000146172, - 17419.990000145368, - 17424.990000144568, - 17429.99000014377, - 17434.99000014297, - 17439.990000142167, - 17444.99000014137, - 17449.99000014057, - 17454.99000013977, - 17459.99000013897, - 17464.99000013817, - 17469.990000137368, - 17474.990000136568, - 17479.990000135767, - 17484.990000134967, - 17489.990000134167, - 17494.990000133366, - 17499.990000132566, - 17504.990000131766, - 17509.990000130965, - 17514.990000130165, - 17519.990000129364, - 17524.990000128564, - 17529.990000127764, - 17534.990000126963, - 17539.990000126163, - 17544.990000125363, - 17549.990000124562, - 17554.990000123762, - 17559.990000122958, - 17564.990000122158, - 17569.99000012136, - 17574.99000012056, - 17579.990000119757, - 17584.99000011896, - 17589.99000011816, - 17594.99000011736, - 17599.99000011656, - 17604.99000011576, - 17609.990000114958, - 17614.990000114158, - 17619.990000113357, - 17624.990000112557, - 17629.990000111757, - 17634.990000110956, - 17639.990000110156, - 17644.990000109356, - 17649.99000010856, - 17654.990000107755, - 17659.990000106955, - 17664.990000106154, - 17669.990000105354, - 17674.99000010455, - 17679.990000103753, - 17684.990000102953, - 17689.990000102152, - 17694.990000101352, - 17699.990000100548, - 17704.99000009975, - 17709.99000009895, - 17714.99000009815, - 17719.99000009735, - 17724.99000009655, - 17729.99000009575, - 17734.990000094953, - 17739.99000009415, - 17744.99000009335, - 17749.990000092548, - 17754.990000091748, - 17759.990000090947, - 17764.99000009015, - 17769.990000089347, - 17774.990000088546, - 17779.990000087746, - 17784.990000086946, - 17789.990000086145, - 17794.990000085345, - 17799.990000084545, - 17804.990000083744, - 17809.990000082944, - 17814.990000082144, - 17819.990000081347, - 17824.990000080543, - 17829.990000079742, - 17834.990000078942, - 17839.990000078138, - 17844.99000007734, - 17849.99000007654, - 17854.99000007574, - 17859.99000007494, - 17864.99000007414, - 17869.99000007334, - 17874.990000072543, - 17879.99000007174, - 17884.99000007094, - 17889.990000070142, - 17894.990000069338, - 17899.990000068534, - 17904.990000067737, - 17909.990000066937, - 17914.990000066136, - 17919.990000065336, - 17924.990000064536, - 17929.990000063735, - 17934.99000006294, - 17939.990000062135, - 17944.990000061334, - 17949.990000060534, - 17954.990000059734, - 17959.990000058933, - 17964.990000058133, - 17969.990000057333, - 17974.990000056532, - 17979.99000005573, - 17984.99000005493, - 17989.99000005413, - 17994.99000005333, - 17999.99000005253 - ], - "y": [ - 0.1632386732448038, - 0.23449393274665095, - 0.1465357393992698, - 0.15940662890590665, - 0.1730958966565327, - 0.18267926056725656, - 0.19003475543213152, - 0.1965018158820037, - 0.2023410806733409, - 0.20769128678382864, - 0.21258748953410944, - 0.2169890342459736, - 0.22108398472224344, - 0.22484768946310996, - 0.2281516913622999, - 0.23112785652395906, - 0.23384059910304675, - 0.2361648666297173, - 0.2382888240918971, - 0.2401320337979313, - 0.24159155387766, - 0.2427835196941764, - 0.2439315242622588, - 0.2449428729947789, - 0.24590620041454225, - 0.2466412848624161, - 0.24718108935081545, - 0.2476580199848592, - 0.2480316804650339, - 0.24835440509321896, - 0.24863412045374186, - 0.2489005011249497, - 0.2491404794022556, - 0.2493584675469353, - 0.2495599645435488, - 0.2497433515583638, - 0.2498724913486837, - 0.2500031003504589, - 0.250159498694252, - 0.25032766164214565, - 0.25051416932491066, - 0.25065769789708364, - 0.2507936790585857, - 0.25084797397120256, - 0.25081457652359523, - 0.2507799440058172, - 0.25073542890112915, - 0.2506938640471956, - 0.250664255603908, - 0.2506464615404577, - 0.2506309755022069, - 0.25062153039343515, - 0.25060440177248394, - 0.2506326500491764, - 0.2506786679932952, - 0.2506897753974009, - 0.25063189718461576, - 0.25055194671937625, - 0.25047727462022074, - 0.2504118660834199, - 0.25034842011701786, - 0.2502867772424495, - 0.2502250799648256, - 0.2501643013743069, - 0.2501003474478164, - 0.250033470090728, - 0.2499679507734883, - 0.2498955753488516, - 0.2498125479080241, - 0.24972458385513754, - 0.24962650716153165, - 0.2495137023378444, - 0.2493691987146328, - 0.2491955482744705, - 0.24920797495128805, - 0.2492572870881512, - 0.2493000932094468, - 0.2493420328990824, - 0.2493844851820335, - 0.24942438545093995, - 0.2494615758043293, - 0.2494963080483126, - 0.2495286163827233, - 0.24955887113137015, - 0.24958718901199686, - 0.24961363083286875, - 0.2496384428816633, - 0.24966156574613865, - 0.2496829336095065, - 0.2497030335172841, - 0.24972006862708784, - 0.24973757108193956, - 0.24975389770562326, - 0.24976905231133034, - 0.2497832908975201, - 0.24979649592994624, - 0.2498088245907848, - 0.2498203369067012, - 0.24983104425747416, - 0.2498410672064339, - 0.2687802791909738, - 0.2720544151300142, - 0.2734711784075981, - 0.2749602172573818, - 0.2763770626897718, - 0.2777155334940444, - 0.2789675211919955, - 0.28014413402384863, - 0.2812529849713845, - 0.2822623256853385, - 0.2832043601850634, - 0.2841019411596397, - 0.284949760307469, - 0.2857929929335548, - 0.2866111148406998, - 0.2873890412490922, - 0.2881165253351849, - 0.28880492718844464, - 0.2894380704284004, - 0.2900335381374277, - 0.2905916840433951, - 0.2911231792151078, - 0.2916310438639922, - 0.2921110761058096, - 0.2925639810574765, - 0.2929919514231409, - 0.29339951836965616, - 0.29378282074584644, - 0.29414624856638183, - 0.2944894241450051, - 0.2948183023366998, - 0.29513524212840336, - 0.2954302743944009, - 0.29571003726484923, - 0.2959749806191839, - 0.2962251699914185, - 0.2964648730941527, - 0.296691598858695, - 0.2969090520184592, - 0.2971169667670248, - 0.2973161561327244, - 0.29750884883082884, - 0.2976984866682329, - 0.2978768003473175, - 0.2980514180195183, - 0.29822257761977905, - 0.2984038780119353, - 0.2985944981125624, - 0.2987818019218325, - 0.2988788353027225, - 0.29894280469208945, - 0.2990011565251445, - 0.2990567802544455, - 0.2991093813145758, - 0.299159051946711, - 0.29920595226525976, - 0.2992502368927173, - 0.29929205173280465, - 0.29933153452852945, - 0.29936881533969395, - 0.2994040169725905, - 0.29943725501527024, - 0.29946862253825857, - 0.29949825279775105, - 0.2995262080732665, - 0.2995525935777699, - 0.299577505685977, - 0.2996010349382638, - 0.2996232499992199, - 0.2996442321178389, - 0.29966403836091643, - 0.299682743956472, - 0.2997004163816633, - 0.2997170977726771, - 0.2997328521993549, - 0.29974772931439264, - 0.2997617674398554, - 0.2997750360933146, - 0.2997875679534364, - 0.2997993937215077, - 0.29981056702768016, - 0.29982110361770425, - 0.2998310631400201, - 0.2998404736522989, - 0.2998493603171387, - 0.299857751938032, - 0.2998656760890579, - 0.29987314582940866, - 0.29988019908644714, - 0.2998868664062764, - 0.2998931630279898, - 0.2998991092002662, - 0.29990472442776944, - 0.29991002713132914, - 0.2999150347050412, - 0.29991976357479755, - 0.2999242292522798, - 0.2999284463858459, - 0.2999324286574873, - 0.2999361879454845, - 0.2999397303439973, - 0.2999430821889596, - 0.2999462498934372, - 0.29994924143634416, - 0.2999520664801386, - 0.2999547342913097, - 0.29995725362145176, - 0.2999596327345385, - 0.2999618794345594, - 0.2999640010911581, - 0.2999660027327789, - 0.2999678850741909, - 0.2999696712014861, - 0.2999713591487269, - 0.2999729531998372, - 0.2999744585298869, - 0.2999758800782337, - 0.2999772225081873, - 0.29997849022321466, - 0.2999796873816855, - 0.29998081791052944, - 0.29998188551811683, - 0.2999828937064233, - 0.29998384578251713, - 0.2999847448694066, - 0.2999855939162843, - 0.2999863957082007, - 0.2999871528752013, - 0.2999878679009511, - 0.2999885431308844, - 0.2999891807798965, - 0.29998978293960865, - 0.29999035158523035, - 0.2999908885820385, - 0.2999913956914941, - 0.2999918745770219, - 0.29999232680946697, - 0.29999275387224605, - 0.29999315716621344, - 0.2999935380142585, - 0.2999938976656417, - 0.2999942373000941, - 0.29999455803168873, - 0.2999948609124918, - 0.29999514693601514, - 0.29999541704047594, - 0.2999956721118734, - 0.2999959129868944, - 0.29999614045565925, - 0.2999963552643131, - 0.29999655811747394, - 0.2999967496805411, - 0.29999693058188304, - 0.2999971014148921, - 0.29999726273993743, - 0.29999741508619865, - 0.29999755895340285, - 0.29999769481346483, - 0.2999978231120344, - 0.2999979442699568, - 0.2999980586846553, - 0.29999816673143515, - 0.2999982687647115, - 0.2999983551384782, - 0.2999984312795266, - 0.2999985171048611, - 0.2999985995997823, - 0.2999986775447624, - 0.29999875114836994, - 0.29999882065506245, - 0.2999988862932429, - 0.2999989482782348, - 0.2999990068133609, - 0.29999906209062843, - 0.2999991142913576, - 0.2999991635867786, - 0.2999992101385892, - 0.29999925409949085, - 0.29999929561368416, - 0.29999933481734314, - 0.2999993718390644, - 0.2999994068002879, - 0.2999994398156928, - 0.2999994709935762, - 0.2999995004362089, - 0.29999952824016857, - 0.2999995544966576, - 0.2999995792918036, - 0.29999960270693826, - 0.2999996248188695, - 0.2999996457001292, - 0.2999996654192107, - 0.2999996840407977, - 0.2999997016259727, - 0.2999997182324192, - 0.2999997339146096, - 0.2999997487239848, - 0.29999976270912176, - 0.2999997759158955, - 0.29999978838762664, - 0.29999980016522504, - 0.29999981128732445, - 0.2999998217904064, - 0.2999998317089244, - 0.2999998410754122, - 0.2999998499205947, - 0.29999985827348497, - 0.2999998661614833, - 0.29999987361046315, - 0.2999998806448595, - 0.2999998872877457, - 0.2999998935609122, - 0.29999989948493644, - 0.29999990507925084, - 0.2999999103622049, - 0.29999991535112874, - 0.29999992006238696, - 0.2999999245114323, - 0.2999999287128601, - 0.2999999326804504, - 0.2999999364272195, - 0.2999999399654564, - 0.2999999433067676, - 0.29999994646211314, - 0.2999999494418432, - 0.29999995225573195, - 0.2999999549130094, - 0.29999995742239244, - 0.2999999597921122, - 0.2999999620299415, - 0.2999999641432214, - 0.2999999661388826, - 0.2999999680234732, - 0.2999999698031741, - 0.2999999714838229, - 0.2999999730709331, - 0.29999997456970995, - 0.2999999759850702, - 0.2999999773216566, - 0.2999999785838532, - 0.29999997977580034, - 0.29999998090140795, - 0.29999998196436845, - 0.2999999829681682, - 0.2999999839160998, - 0.2999999848112731, - 0.2999999856566241, - 0.2999999864549261, - 0.2999999872087971, - 0.29999998792071075, - 0.2999999885930012, - 0.2999999892278743, - 0.2999999898274129, - 0.29999999039358344, - 0.299999990928243, - 0.2999999914331445, - 0.29999999190994564, - 0.2999999923602095, - 0.2999999927854133, - 0.299999993186952, - 0.29999999356614204, - 0.2999999939242278, - 0.2999999942623838, - 0.2999999945817196, - 0.2999999948832815, - 0.2999999951680601, - 0.2999999954369889, - 0.2999999956909498, - 0.299999995930777, - 0.29999999615725514, - 0.29999999637112873, - 0.2999999965730991, - 0.2999999967638284, - 0.2999999969439424, - 0.29999999711403164, - 0.2999999972746544, - 0.29999999742633743, - 0.2999999975695785, - 0.2999999977048472, - 0.2999999978325874, - 0.2999999979532175, - 0.2999999980671345, - 0.2999999981747111, - 0.2999999982763004, - 0.2999999983722354, - 0.299999998462831, - 0.2999999985483842, - 0.2999999986291761, - 0.2999999987054713, - 0.2999999987775203, - 0.29999999884555906, - 0.2999999989098112, - 0.2999999989704872, - 0.29999999902778657, - 0.2999999990818964, - 0.29999999913299485, - 0.2999999991812493, - 0.2999999992268181, - 0.2999999992698505, - 0.2999999993104879, - 0.2999999993488638, - 0.2999999993851037, - 0.2999999994193268, - 0.299999999451645, - 0.2999999994821643, - 0.2999999995109853, - 0.29999999953820194, - 0.2999999995639041, - 0.2999999995881758, - 0.2999999996110964, - 0.29999999963274143, - 0.2999999996531817, - 0.2999999996724845, - 0.2999999996907129, - 0.2999999997079265, - 0.2999999997241824, - 0.2999999997395333, - 0.2999999997540301, - 0.29999999976772, - 0.29999999978064784, - 0.2999999997928563, - 0.29999999980438513, - 0.2999999998152725, - 0.2999999998255537, - 0.2999999998352626, - 0.2999999998444315, - 0.29999999985309, - 0.2999999998612665, - 0.29999999986898784, - 0.2999999998762795, - 0.2999999998831652, - 0.299999999889668, - 0.2999999998958086, - 0.29999999990160764, - 0.2999999999070838, - 0.2999999999122551, - 0.29999999991713866, - 0.2999999999217507, - 0.29999999992610565, - 0.2999999999302182, - 0.2999999999341019, - 0.2999999999377699, - 0.2999999999412332, - 0.2999999999445042, - 0.2999999999475925, - 0.2999999999505093, - 0.29999999995326404, - 0.29999999995586496, - 0.2999999999583213, - 0.2999999999606412, - 0.29999999996283183, - 0.2999999999649006, - 0.2999999999668542, - 0.2999999999686989, - 0.2999999999704405, - 0.2999999999720865, - 0.2999999999736399, - 0.2999999999751069, - 0.29999999997649296, - 0.29999999997780025, - 0.299999999979036, - 0.29999999998020244, - 0.2999999999813055, - 0.2999999999823457, - 0.2999999999833284, - 0.2999999999842567, - 0.29999999998513205, - 0.2999999999859589, - 0.2999999999867411, - 0.2999999999874781, - 0.29999999998817617, - 0.29999999998883264, - 0.2999999999894547, - 0.2999999999900433, - 0.299999999990597, - 0.2999999999911196, - 0.2999999999916136, - 0.2999999999920805, - 0.2999999999925224, - 0.2999999999929387, - 0.2999999999933297, - 0.2999999999936995, - 0.29999999999405114, - 0.2999999999943842, - 0.2999999999946932, - 0.2999999999949904, - 0.29999999999526794, - 0.2999999999955307, - 0.2999999999957805, - 0.2999999999960137, - 0.2999999999962357, - 0.2999999999964464, - 0.2999999999966407, - 0.29999999999683497, - 0.2999999999970051, - 0.29999999999717164, - 0.2999999999973346, - 0.2999999999974776, - 0.29999999999761634, - 0.3000000928779081, - 0.3081173239541479, - 0.31063658378611697, - 0.3108584820648313, - 0.3104857222393635, - 0.3098836743524344, - 0.30931586872587075, - 0.308814173879659, - 0.3083632959947615, - 0.3079442693898781, - 0.30730235915155657, - 0.30682866972474515, - 0.3064759477852336, - 0.3061678258642109, - 0.3058845123313953, - 0.3056171243792804, - 0.3053540325715515, - 0.30511851386883426, - 0.3049011914412625, - 0.3046985210424221, - 0.30451103833939325, - 0.3043409840417517, - 0.30418929670756883, - 0.30405423074998833, - 0.30393781522082675, - 0.3038024279378405, - 0.3036285667377475, - 0.3034494010370661, - 0.3032755829463346, - 0.3031096073338045, - 0.30295179409876016, - 0.3028023013678914, - 0.30266027156824554, - 0.30252528288329755, - 0.30239709475754883, - 0.3022753977608038, - 0.30215986681325124, - 0.3020502034834646, - 0.3019461148752235, - 0.3018473110929372, - 0.3017433916985009, - 0.3016464148703209, - 0.3015604340026881, - 0.3014805236769285, - 0.30140511098089484, - 0.30133364404636565, - 0.30126585323496824, - 0.3012015140230915, - 0.30114044155482395, - 0.30108248032222923, - 0.30102745931465946, - 0.3009752352788392, - 0.3009256512942139, - 0.3008786179841821, - 0.3008339593328577, - 0.3007915610592932, - 0.3007513380291511, - 0.300713136600524, - 0.3006768920519132, - 0.3006424899408397, - 0.30060982906198297, - 0.30057883415628683, - 0.30054939395289265, - 0.30052146816534003, - 0.3004949642390106, - 0.3004697918038485, - 0.300445930537096, - 0.30042327308625155, - 0.30040176710418953, - 0.3003813289271997, - 0.3003619538420489, - 0.3003435697734624, - 0.30032609712740765, - 0.3003095123191323, - 0.3002937906432693, - 0.3002788692809936, - 0.3002646914191793, - 0.3002512229831181, - 0.3002384597317193, - 0.3002263521577693, - 0.3002148530524085, - 0.3002039227041676, - 0.3001935324685061, - 0.3001836901472825, - 0.3001743606606887, - 0.3001655084443837, - 0.30015710076563074, - 0.30014910218296803, - 0.3001415258309221, - 0.30013433967646563, - 0.30012751967061424, - 0.3001210066784127, - 0.30011484122121923, - 0.3001090054687702, - 0.3001034705087222, - 0.3000982177098422, - 0.3000932310197351, - 0.30008849803412524, - 0.30008400559104753, - 0.3000797412703055, - 0.30007569343526314, - 0.30007185108178874, - 0.30006820377532034, - 0.3000647288066558, - 0.30006143402270546, - 0.3000583127824476, - 0.30005535198619426, - 0.300052542018515, - 0.30004987483017176, - 0.30004734307030995, - 0.3000449208624724, - 0.3000426237724555, - 0.30004045467540763, - 0.3000383994178862, - 0.3000364497376113, - 0.3000345993580922, - 0.3000328429943922, - 0.3000311758100053, - 0.3000295932612114, - 0.30002809104733497, - 0.3000266650892591, - 0.3000253115157841, - 0.3000240266524428, - 0.3000228070113504, - 0.3000216492816901, - 0.3000205503207096, - 0.3000195071451945, - 0.3000185169233613, - 0.3000175769671757, - 0.3000166847250521, - 0.3000158377749293, - 0.3000150338176945, - 0.3000142706709416, - 0.3000135462630491, - 0.3000128586275552, - 0.3000122058978177, - 0.3000115863019525, - 0.3000109980232619, - 0.3000104296344649, - 0.3000098962001613, - 0.3000093927823475, - 0.3000089157059955, - 0.3000084630535126, - 0.30000803343272026, - 0.3000076256345357, - 0.3000072385407241, - 0.30000687109754565, - 0.30000652230677544, - 0.3000061912213908, - 0.30000587694258063, - 0.3000055786171976, - 0.30000529543540994, - 0.30000502662849765, - 0.3000047714667625, - 0.3000045288252655, - 0.30000429817989466, - 0.3000040797778471, - 0.300003872622791, - 0.3000036760256586, - 0.30000348941928784, - 0.3000033122883406, - 0.30000314414967744, - 0.3000029845462701, - 0.30000283304470304, - 0.3000026892336727, - 0.3000025527227823, - 0.3000024231414592, - 0.3000023001379437, - 0.29999521368757964, - 0.2999734977057741, - 0.29995850859574963, - 0.29995304372168624, - 0.2999533144815342, - 0.2999551385054764, - 0.29995728047460024, - 0.2999594203829261, - 0.2999614791262733, - 0.299963440199126, - 0.29996530320061193, - 0.2999670717280157, - 0.29996875023187153, - 0.2999703432059951, - 0.29997185498552903, - 0.2999732897029767, - 0.2999746512849644, - 0.2999759434592004, - 0.29997716976369504, - 0.29997833355618964, - 0.2999794380232842, - 0.2999804861891425, - 0.2999814809237735, - 0.2999824249508832, - 0.29998332085533364, - 0.29998417109022346, - 0.29998497798359985, - 0.2999857437448372, - 0.2999864704706845, - 0.29998716015100585, - 0.2999878146742323, - 0.2999884358325301, - 0.29998899395220824, - 0.2962827931962171, - 0.29512641810068263, - 0.2950475613984693, - 0.2952668772323826, - 0.2955554630338076, - 0.2958369537838649, - 0.2961118954714626, - 0.2963317338862511, - 0.29651765985098305, - 0.2966882339791905, - 0.2968488398305566, - 0.2970012189112311, - 0.29714611054933626, - 0.29728396920378103, - 0.2974151597623509, - 0.2975400111366279, - 0.29765883137087185, - 0.2977719122787974, - 0.29787944456738163, - 0.2979728839327095, - 0.2980672637240918, - 0.2981598200855453, - 0.29824865303812065, - 0.2983333896058325, - 0.2984140782467912, - 0.2984908744169119, - 0.29856395563735594, - 0.29863349884119983, - 0.2986996745605199, - 0.298762645655547, - 0.2988225672583777, - 0.2988795870314529, - 0.29893384549796154, - 0.2989854763790907, - 0.2990346069211368, - 0.2990813582084457, - 0.29912584546164644, - 0.2989152675540613, - 0.2988234810434371, - 0.2988406844228418, - 0.2988862521288186, - 0.2989374926608536, - 0.2989883695781115, - 0.2990373466270393, - 0.299084097047674, - 0.29912861605399044, - 0.2991709816519984, - 0.29921129032318033, - 0.2992496398641203, - 0.29928612493626017, - 0.2993208360352457, - 0.2993538593743696, - 0.2993852770067216, - 0.29941516700425497, - 0.2994436036451041, - 0.29947065759636143, - 0.2994963960892049, - 0.29952088308583946, - 0.29954417943841805, - 0.2995663430402474, - 0.2995415028189097, - 0.2993999739208416, - 0.2993774690206289, - 0.2993938028511817, - 0.2994195823393023, - 0.2994468604579166, - 0.2994735498508921, - 0.29949913754430624, - 0.29952353158090195, - 0.2995467509755068, - 0.29956884245169685, - 0.29958985815582634, - 0.2996098497630878, - 0.29962886698665386, - 0.2996469572662325, - 0.2996641657694211, - 0.2996805354730225, - 0.2996961072619149, - 0.2997109200288896, - 0.29972501077118346, - 0.2997384146827169, - 0.2997511652419548, - 0.29976329429551146, - 0.2997748321376906, - 0.2997858075861483, - 0.29979624805386906, - 0.29980617961763595, - 0.29981562708316123, - 0.2998246140470423, - 0.2998331629556973, - 0.299841295161429, - 0.29984903097575843, - 0.2998563897201505, - 0.2998633897742805, - 0.299870048621932, - 0.2998763828946707, - 0.29988240841338426, - 0.2998881402277945, - 0.2998935926540501, - 0.2998987793104805, - 0.2999037131516117, - 0.299908406500524, - 0.29991287107962605, - 0.2999171180399381, - 0.2999211579889399, - 0.2999250010170696, - 0.29992865672291996, - 0.2999321342372165, - 0.2999354422456235, - 0.29993858901043463, - 0.2999415823912118, - 0.2999444298644155, - 0.29994713854207744, - 0.29994971518956604, - 0.2999521662424798, - 0.29995449782272754, - 0.29995671575381344, - 0.29995882557538456, - 0.2999608325570665, - 0.29996274171162696, - 0.29996455780749154, - 0.2999662853806592, - 0.2999679287460271, - 0.2999694920081701, - 0.2999709790715921, - 0.2999723936504785, - 0.299973739277972, - 0.2999750193149992, - 0.2999762369586625, - 0.2999773952502264, - 0.2999784970827145, - 0.29997954520813497, - 0.2999805422443528, - 0.29998149068163016, - 0.29998239288884426, - 0.2999832511194062, - 0.2999840675168874, - 0.2999848441203751, - 0.29998558286956395, - 0.29998628560960194, - 0.2999869540956961, - 0.29998758999750186, - 0.2999881949032882, - 0.2999887703239061, - 0.2999893176965636, - 0.2999898383884139, - 0.2999903336999696, - 0.2999908048683532, - 0.2999912530703853, - 0.2999916794255241, - 0.2999920849986613, - 0.29999247080278235, - 0.2999928378014969, - 0.2999931869114433, - 0.2999935190045831, - 0.2999938349103725, - 0.2999941354178373, - 0.2999944212775446, - 0.2999946932034765, - 0.299994951874812, - 0.299995197937626, - 0.2999954320065007, - 0.2999956546660611, - 0.2999958664724354, - 0.29999606795464595, - 0.2999962596159279, - 0.2999964419349864, - 0.2999966153671929, - 0.2999967803457226, - 0.29999693728263693, - 0.2999970865699122, - 0.299997228580417, - 0.29999736366884594, - 0.2999974921726051, - 0.2999976144126533, - 0.2999981450433936, - 0.29999896138580845, - 0.2999992263366397, - 0.2999993218213008, - 0.2999993703861181, - 0.29999940523379764, - 0.2999994353359269, - 0.2999994631529922, - 0.2999994893948427, - 0.2999995142989218, - 0.29999953797356205, - 0.29999956049025595, - 0.29999958190854176, - 0.299999602282781, - 0.2999996216640753, - 0.2999559182637289, - 0.29990322122498325, - 0.2998922075710996, - 0.2998932447123321, - 0.2998973258497987, - 0.2999020362395896, - 0.29990673841454524, - 0.2999112703629249, - 0.2999155969221662, - 0.2999197164837077, - 0.3107614361601381, - 0.3155022875061535, - 0.3179365631714278, - 0.3196723543968782, - 0.32114886211695604, - 0.32247865843055484, - 0.32370958705371256, - 0.32486336433533064, - 0.32596669658464666, - 0.3270336666536333, - 0.3280938946136554, - 0.3291316690850405, - 0.3301283805001117, - 0.33107617129118083, - 0.3319730959108769, - 0.33281867136068044, - 0.3336142787252901, - 0.33436690915283485, - 0.3350830286916209, - 0.3357733875341425, - 0.33644525108125817, - 0.3370946146060442, - 0.3377121397788535, - 0.3382984934757483, - 0.33885585086226483, - 0.3393858543121341, - 0.3398896900846908, - 0.34036898831882395, - 0.3408296725667587, - 0.3412711412706007, - 0.34169221299448016, - 0.34209299923362463, - 0.3424733387187339, - 0.34283417015613976, - 0.3431770734088205, - 0.3435031776416226, - 0.34381333689961513, - 0.34410833220854525, - 0.34438895458845503, - 0.3446560180768159, - 0.3449098881657402, - 0.34515116341597085, - 0.3453804796856163, - 0.3455984204513328, - 0.3458055203994544, - 0.3460021644140073, - 0.3461888459504594, - 0.3463661310274067, - 0.34653493905386124, - 0.3466992679069609, - 0.34685757132038153, - 0.34700877240403577, - 0.347152800962912, - 0.34728992316747803, - 0.34742045000651833, - 0.34754469273513383, - 0.34766295212391785, - 0.3477755157949531, - 0.34788265791434353, - 0.3479846503620677, - 0.3480818175638484, - 0.348174349251272, - 0.34826243233188764, - 0.3483462701132396, - 0.3484260640524007, - 0.3485014175109426, - 0.34856736073306155, - 0.34862638092530124, - 0.34868085078659544, - 0.3487315645458415, - 0.3487790114965155, - 0.3488252724096992, - 0.34887705449190515, - 0.3489298127833226, - 0.3489810754578487, - 0.3490301761857013, - 0.3490769985205858, - 0.3491215865231429, - 0.3491640284203966, - 0.3492044220139756, - 0.34924286451581266, - 0.3492794496767975, - 0.3493142670872493, - 0.34934740211888216, - 0.34937893605121073, - 0.3494089462461182, - 0.349437508049226, - 0.34946470234183785, - 0.34949058798367355, - 0.3495152237141117, - 0.3495386685888401, - 0.3495609797830334, - 0.3495822119993903, - 0.3496024173827467, - 0.3496216455823541, - 0.3496399438541684, - 0.3496573571710736, - 0.349673928331649, - 0.3496896980648276, - 0.3497047051298407, - 0.33916831484615795, - 0.33437952390546866, - 0.3318500379792557, - 0.3300510618155028, - 0.3285378046104853, - 0.32713634977734074, - 0.3258153939269887, - 0.3245652826887452, - 0.3233683187603877, - 0.32223417505870033, - 0.3211576187395647, - 0.32010777759636394, - 0.3191055003009823, - 0.3181714704269134, - 0.3173093332979904, - 0.3164971500392064, - 0.3157090367343647, - 0.314952405538348, - 0.3142303791024645, - 0.3135254666421268, - 0.3128438941303409, - 0.3122134042870166, - 0.3116193556339415, - 0.3110532881770501, - 0.3105163455860901, - 0.3100064567305129, - 0.30952158011295483, - 0.3090581155319176, - 0.3086008818370922, - 0.3081774099185313, - 0.3077791778377831, - 0.3074016446498006, - 0.30704281776189657, - 0.30670149955252196, - 0.3063767559804198, - 0.30606775871688285, - 0.3057737373496888, - 0.305493964026514, - 0.3052277477016798, - 0.30497443126714785, - 0.3047333895887966, - 0.30450402786319475, - 0.30428578012028706, - 0.30407810781811706, - 0.3038804985113801, - 0.3037113662714263, - 0.30357482837714284, - 0.30341592628143194, - 0.3032549246477067, - 0.3030988300117976, - 0.302949438009081, - 0.302807019205391, - 0.30267141044123674, - 0.302542333457926, - 0.30241948748713193, - 0.3023025757820753, - 0.3021913128618555, - 0.3020854261418407, - 0.3019846559463196, - 0.3018887550706124, - 0.3017974882328066, - 0.3017106315135173, - 0.30162797181148776, - 0.3015493063221994, - 0.3014744420407197, - 0.3014031952882917, - 0.30133539126171377, - 0.3012708636044748, - 0.3012094539986028, - 0.3011510117762326, - 0.3010953935499457, - 0.3010424628609715, - 0.30098896411461906, - 0.30094011432883394, - 0.30091549948527274, - 0.3008796588698852, - 0.30083965787408024, - 0.3007998460035848, - 0.3007614478236409, - 0.3007230693599052, - 0.3006542958673575, - 0.3006094457337166, - 0.30057609179852185, - 0.3005471009030114, - 0.3005203125901241, - 0.3004950527602953, - 0.3004641824589394, - 0.3004197007505082, - 0.3003920828458965, - 0.30037096389230744, - 0.30035237750988275, - 0.30033513022514624, - 0.30031884586456725, - 0.3003033873099766, - 0.30028868826732, - 0.30027470430704645, - 0.3002613985728589, - 0.30024873756920445, - 0.3002366898808114, - 0.30022522574709914, - 0.3002199331093429, - 0.3002151215064212, - 0.30020648081334256, - 0.3001970011784544, - 0.30018761466084554, - 0.30017857633976114, - 0.3001699447146185, - 0.3001617219704809, - 0.30015389466319264, - 0.3001307648544453, - 0.30008572185270216, - 0.3000690760709208, - 0.30005588687179485, - 0.30004843938547304, - 0.3000446954628471, - 0.3000421221640514, - 0.3000399599484185, - 0.30003798546298616, - 0.3000361307894434, - 0.30003437310978925, - 0.3000327027988276, - 0.3000311141924106, - 0.2999957991204978, - 0.29997698701406234, - 0.2999725148403415, - 0.2999722395053417, - 0.29997312608940696, - 0.2999743006707966, - 0.2999755135406861, - 0.2999766948774613, - 0.29997782662211, - 0.299978905539853, - 0.2999799325742701, - 0.2999809097823498, - 0.29998183945519696, - 0.29998272386872715, - 0.2999835652158122, - 0.2999843655905445, - 0.2999851269873443, - 0.29998585130417066, - 0.2999865403467428, - 0.2999871958328975, - 0.2999878193968273, - 0.29998841259314696, - 0.29998897690076043, - 0.2999895137265482, - 0.2999900244088794, - 0.29999051022094075, - 0.29999097237391764, - 0.2999914120200081, - 0.29999183025529985, - 0.2999922281225009, - 0.2999926066135383, - 0.29999296667203296, - 0.2999933091956508, - 0.2999936350383417, - 0.29999394501246834, - 0.2999942398908313, - 0.2999945204085943, - 0.2999947872651208, - 0.2999950411257146, - 0.2999952826232768, - 0.2999955123598892, - 0.2999957309083112, - 0.29999593881340764, - 0.29999613659350965, - 0.2999963247417054, - 0.29999650372706965, - 0.2999966739958327, - 0.2999968359724937, - 0.29999699006087893, - 0.29999713664514754, - 0.2999972760907513, - 0.29999740874534336, - 0.29999753493964626, - 0.2999976549882766, - 0.2999970437015483, - 0.2999650975761006, - 0.2999536805554718, - 0.29995212571740354, - 0.29995336554228424, - 0.29995532721801965, - 0.2999574181195023, - 0.2999594716254869, - 0.2999614434556518, - 0.29996332433823103, - 0.2999651149010759, - 0.2999668184583565, - 0.299968438943814, - 0.29996998032381644, - 0.2999714464356601, - 0.2999728409478236, - 0.2999741673549701, - 0.2999500309468366, - 0.29993287653238776, - 0.2999303447351104, - 0.29993207806609523, - 0.2999349186354889, - 0.29993796284431384, - 0.2999409848844542, - 0.3037692309999924, - 0.3053338138752271, - 0.3056183726368093, - 0.3054621467346108, - 0.30514352514029924, - 0.3048654343911641, - 0.3046106085500009, - 0.3043719003253713, - 0.30414657431651576, - 0.3039330482107204, - 0.30373066982594515, - 0.3035385642562229, - 0.30335645017074875, - 0.3031838901520744, - 0.30302012098499104, - 0.3028647332476645, - 0.30271731636764165, - 0.3025778827776105, - 0.3024454271659209, - 0.3023229056938737, - 0.3022066283338734, - 0.3020942567505659, - 0.3019868903005424, - 0.3018848165223222, - 0.3017879341402705, - 0.3016959878086176, - 0.3016087739794898, - 0.3015260227940396, - 0.3014475546849533, - 0.3013731472646777, - 0.3013025209540176, - 0.30123550258323306, - 0.3011719991224856, - 0.3011116922616657, - 0.3010544913467833, - 0.301000270894746, - 0.3009488277640561, - 0.3009000280159536, - 0.3008537056039388, - 0.3008098499740085, - 0.3007682158161437, - 0.3007286977516704, - 0.3006912245327925, - 0.3006556436498465, - 0.30062193472908, - 0.3005899366089751, - 0.3005596236279869, - 0.3005308327819031, - 0.30050348534606897, - 0.30047762584592796, - 0.3004530981873797, - 0.3004297845901437, - 0.300407668728454, - 0.3003866166752787, - 0.30036673989507284, - 0.30034792020199, - 0.3003300738195023, - 0.30031303499809275, - 0.3002969358709898, - 0.3002816965428577, - 0.30026724936217714, - 0.3002534350268495, - 0.30024038711270845, - 0.3002280451807861, - 0.3002163486914665, - 0.3002052561272014, - 0.3001947153143522, - 0.3001846921026327, - 0.3001751936641329, - 0.3001661816745107, - 0.3001576048614896, - 0.3001495044136125, - 0.3001418333261656, - 0.3001345515607533, - 0.30012752627286593, - 0.3001209346009556, - 0.3001147167063352, - 0.3001088298463705, - 0.30010324893741475, - 0.3000979555355129, - 0.3000929339638344, - 0.30008816996871635, - 0.3000836502378676, - 0.3000793622130664, - 0.30007529400421024, - 0.3000714343389912, - 0.3000677725257485, - 0.3000642955850834, - 0.3000609896280901, - 0.3000578002134481, - 0.3000547389339006, - 0.3000518977026975, - 0.3000492253607634, - 0.3000466979271177, - 0.3000443027467678, - 0.30004203126247564, - 0.30003987652881065, - 0.30003783235536435, - 0.30003589300475075, - 0.30003405307984005, - 0.3000323074758621, - 0.3000306513550618, - 0.3000290801294875, - 0.30002758944698976, - 0.30002617517872565, - 0.3000248334075729, - 0.30002356041722944, - 0.30002235268190497, - 0.3000212068565457, - 0.3000201197675735, - 0.30001908840408964, - 0.3000181099095373, - 0.30001718157003565, - 0.3000163000749987, - 0.3000154641485752, - 0.3000146713126271, - 0.30001391920094594, - 0.3000132056714949, - 0.3000125287279722, - 0.3000118864886367, - 0.30001127717236603, - 0.3000106990907559, - 0.3000101506424324, - 0.3000096303082729, - 0.3000091366470828, - 0.30000866829156364, - 0.3000082239445142, - 0.30000780237522884, - 0.30000740241609203, - 0.3000070229593415, - 0.3000066629540005, - 0.30000632140296635, - 0.3000059973602489, - 0.3000056899283509, - 0.300005398255781, - 0.3000051215346983, - 0.30000485899867124, - 0.3000046099205561, - 0.3000043736104854, - 0.3000041494139526, - 0.3000039367100037, - 0.3000037349095149, - 0.3000035434535624, - 0.30000336181187154, - 0.3000031894813521, - 0.30000302598470274, - 0.300002870869088, - 0.30000272370488656, - 0.30000258408449904, - 0.3000024516212201, - 0.3000023259481683, - 0.3000022067172684, - 0.3000020935982875, - 0.3000019862779215, - 0.3000018844589267, - 0.30000178785929643, - 0.3000016962114793, - 0.3000016092616397, - 0.3000015267689521, - 0.3000014485049398, - 0.30000137425283513, - 0.3000013038069823, - 0.30000123697226794, - 0.3000011735635817, - 0.3000011134053015, - 0.3000010563308071, - 0.3000010021820194, - 0.3000009508089644, - 0.3000009020693536, - 0.30000085582819336, - 0.3000008119574114, - 0.3000007703354977, - 0.3000007308471743, - 0.3000006933830693, - 0.3000006578394193, - 0.3000006241177794, - 0.30000059212475155, - 0.3000005617717251, - 0.30000053297463003, - 0.3000005056537092, - 0.3000004797332928, - 0.3000004551415869, - 0.3000004318104825, - 0.3000004096753576, - 0.300000388674906, - 0.30000036875096264, - 0.30000034984834506, - 0.3000003319146983, - 0.300000314900352, - 0.3000002987581815, - 0.3000002834434775, - 0.3000002689138237, - 0.30000025512897804, - 0.30000024205076004, - 0.3000002296429471, - 0.3000002178711733, - 0.3000002067028349, - 0.30000019610699924, - 0.30000018605431844, - 0.3000001523993169, - 0.2972173768571529, - 0.2960922917367795, - 0.2958667259445047, - 0.2959548067999853, - 0.29612003899392125, - 0.29629839650443324, - 0.2964754198742553, - 0.29664636514874204, - 0.2968098516139667, - 0.29696565851407764, - 0.2971139570568419, - 0.2972550430747051, - 0.2973892443400016, - 0.2974977023490391, - 0.29760339909070577, - 0.29771451641181795, - 0.2978241659754333, - 0.29792983880954194, - 0.29803082689776395, - 0.2981270445273126, - 0.2982186151902761, - 0.2983057278519388, - 0.2983885871809001, - 0.2984673965372734, - 0.2985423523705047, - 0.2986136425808744, - 0.2986814462481863, - 0.2987459338226656, - 0.29880726746312336, - 0.29886560141321106, - 0.2989210823783284, - 0.29897384989073805, - 0.2990240366591509, - 0.2990476676335985, - 0.29906688275224363, - 0.2991026940331747, - 0.2991431658957543, - 0.299183895972014, - 0.2992234135783791, - 0.2992612696154888, - 0.2992973681052623, - 0.29933173323398865, - 0.2993644282670909, - 0.2993955274134113, - 0.29940205768304, - 0.2992878500624948, - 0.2992646610571608, - 0.2992804199675765, - 0.29930864130803475, - 0.29934008805816786, - 0.2993715976461016, - 0.2994021207558207, - 0.2994313414361353, - 0.2994591966937439, - 0.2994857093174293, - 0.2995109297746625, - 0.2995349160855318, - 0.2995577269164481, - 0.2995794192724294, - 0.29960004778599675, - 0.2996196645575355, - 0.2996383191833728, - 0.2996560588451264, - 0.2996729284164857, - 0.2996889705723496, - 0.29970422589526163, - 0.2997187329775413, - 0.29973252851873083, - 0.29974564741836873, - 0.299618336941258, - 0.29952023773508224, - 0.299502430010899, - 0.2995125123944174, - 0.2995314905079975, - 0.2995521545095968, - 0.2995701437405514, - 0.2995897071911726, - 0.29960933849725924, - 0.2996283635205596, - 0.29964657757010194, - 0.2996639390570953, - 0.29968046161311873, - 0.29969617667159265, - 0.2997111205368431, - 0.29972532995663714, - 0.2997388406455546, - 0.2997516868304233, - 0.2997639011479327, - 0.2997755146618673, - 0.29978655691928285, - 0.29979705601775863, - 0.2997886593877155, - 0.2997558717383724, - 0.2997517457084437, - 0.2997583529793785, - 0.29976830015201017, - 0.2997790300424159, - 0.2997896734118546, - 0.29979994614766164, - 0.29980976639043017, - 0.29981483361077765, - 0.2998170384212577, - 0.2998235260899014, - 0.2998313391900109, - 0.2998393395639102, - 0.2998471445619543, - 0.2998546341757981, - 0.2998617789393791, - 0.29986858021433016, - 0.2998750494921348, - 0.2998812012378732, - 0.2998870504329461, - 0.2998926117475448, - 0.29989789927755306, - 0.29990292647618355, - 0.29990770615207785, - 0.2999122504893983, - 0.29991657107453656, - 0.29992067892414315, - 0.29992458451269155, - 0.2999282977990063, - 0.2999318282515937, - 0.2999351848727627, - 0.2999383762215744, - 0.2999414104356604, - 0.29994429525197563, - 0.2999470380265259, - 0.299949645753122, - 0.2999521250812176, - 0.2999544823328608, - 0.29995672351881697, - 0.2999588543538967, - 0.2999608802715248, - 0.29996280643759593, - 0.2999646377636496, - 0.29996637891939204, - 0.2999680343446024, - 0.29996960826045715, - 0.2999711046802904, - 0.2999725274198292, - 0.2999738801069232, - 0.2999751661907939, - 0.2999763889508331, - 0.2999775515049609, - 0.29997865681757924, - 0.29997970770712845, - 0.2999807068532771, - 0.2999816568037514, - 0.2999825599808342, - 0.2999834186875412, - 0.2999833180954308, - 0.29997989130518016, - 0.29997896656956685, - 0.2999780262511749, - 0.29997834675135066, - 0.2999791480669135, - 0.299980082915, - 0.2999810317731037, - 0.2999819547460826, - 0.2999828395018168, - 0.2999836831998092, - 0.2999844862228788, - 0.29998525000514376, - 0.2999859762815117, - 0.2999866668303638, - 0.29998732338724604, - 0.2999879476177662, - 0.29998854111090384, - 0.2999891053792625, - 0.29998964186160804, - 0.299990151926084, - 0.29999063687354155, - 0.2999910979407996, - 0.2999915363037834, - 0.2999919530805145, - 0.29999234933396085, - 0.2999927260747492, - 0.2999930842637385, - 0.2999934248144724, - 0.2999937485955091, - 0.2999940564326364, - 0.299992712385221, - 0.29998312832009943, - 0.2999799524962041, - 0.299979544821216, - 0.29998006818411777, - 0.2999808819052999, - 0.2999817652449356, - 0.29998264314113043, - 0.29998349100591404, - 0.29998430169357043, - 0.2999850740424365, - 0.29998580890236165, - 0.2999865077594625, - 0.2999871722619621, - 0.2999878040585539, - 0.29998840474505795, - 0.29998897584852635, - 0.29998951882420904, - 0.29999003505686417, - 0.3101066530260838, - 0.31508114698698997, - 0.317846383030478, - 0.31979279866557536, - 0.3214064729909489, - 0.3228584750326343, - 0.3242104406534488, - 0.3254859210788241, - 0.3266951467561979, - 0.3278436240400425, - 0.3289351220416301, - 0.3299728814350694, - 0.330960160216683, - 0.3318990936727728, - 0.3327918383719955, - 0.3336405925049118, - 0.3344475080289884, - 0.3352148272920449, - 0.3359452083501462, - 0.3366400063430052, - 0.3373006453067196, - 0.3379286822381861, - 0.33852568311669634, - 0.3390931666790991, - 0.33963258710391425, - 0.34014533033716604, - 0.340632715067927, - 0.341095995216541, - 0.3415363628451078, - 0.341954951114528, - 0.3423528371618625, - 0.3427310448586298, - 0.3430905474408145, - 0.3434322700116357, - 0.34375709192153125, - 0.3440658490307789, - 0.3443594444030822, - 0.3446388196603303, - 0.34490449249036365, - 0.34515704748540943, - 0.3453971014574174, - 0.3456252623544228, - 0.3458421156023937, - 0.3460482202771624, - 0.3462441086771317, - 0.3464302870429026, - 0.3466072366358953, - 0.346775414901868, - 0.34693525662526425, - 0.3470871762582004, - 0.34723157883666245, - 0.3473688318609907, - 0.3474992834282391, - 0.34762326844622715, - 0.3477411067165611, - 0.3478531027112016, - 0.3479595475357759, - 0.348060782462901, - 0.34815705930095503, - 0.3482485800033914, - 0.3483355641332664, - 0.34841823114296844, - 0.3484967933901294, - 0.34857145402317097, - 0.34864240657115064, - 0.3487098351164507, - 0.34877391465669144, - 0.3488348115182235, - 0.3488926837735424, - 0.34894768164657297, - 0.34899994790084965, - 0.3490496182094807, - 0.34909682150711224, - 0.34914168032453585, - 0.3491843111067341, - 0.34922482451513553, - 0.3492633257148712, - 0.3492999146477592, - 0.3493346862917355, - 0.34936773090739875, - 0.3493991342723093, - 0.3494289779036521, - 0.349457339269838, - 0.3494842919916011, - 0.34950990603309834, - 0.34953424788352794, - 0.3495573807297207, - 0.3495793646201621, - 0.34960025662086536, - 0.3496201109635061, - 0.34963897918619496, - 0.3496569102672633, - 0.3496739507523988, - 0.3496901448754723, - 0.34970553467335885, - 0.3497201600950573, - 0.3497340591053909, - 0.3497472677835561, - 0.3497598204167791, - 0.3497717495893173, - 0.33965072457029305, - 0.3346412357284797, - 0.3318506299867729, - 0.3298923823069405, - 0.3282835077809229, - 0.3268481111925375, - 0.3255056587507482, - 0.3242393499953061, - 0.3230376180521908, - 0.32189558639839616, - 0.3208102063645755, - 0.31977864279134205, - 0.3187982185993201, - 0.3178663955247071, - 0.31698076326767977, - 0.3161672750784341, - 0.3153863074067064, - 0.3146319408444748, - 0.3139105910100677, - 0.3132234168932537, - 0.3125697043912217, - 0.3119481396081913, - 0.3113572517446121, - 0.31079556522580404, - 0.3102616503740717, - 0.30975413875880914, - 0.309271726323044, - 0.3088131723501975, - 0.30837729708273537, - 0.30791209478251885, - 0.3073802180811093, - 0.30696108320809234, - 0.3065970627517433, - 0.3062630820849512, - 0.3059498464138269, - 0.305653612106787, - 0.3053725914121196, - 0.3051057007854111, - 0.30485212447702753, - 0.3046111616507192, - 0.3043821721436252, - 0.3041645565780136, - 0.30395774846833523, - 0.3037612105476475, - 0.3035744326072697, - 0.3033969299064417, - 0.30322824182184954, - 0.30309349042622524, - 0.3029739640715731, - 0.3028388026233187, - 0.30270240854789165, - 0.3025700211154226, - 0.3024432387611746, - 0.3023224060739538, - 0.30220744381453585, - 0.30209813582849554, - 0.3019942279018171, - 0.3018954615263098, - 0.3018015851507516, - 0.3017123576583489, - 0.30162754917330553, - 0.3015469409622912, - 0.3014703250412398, - 0.30139750369789514, - 0.3013282890021005, - 0.301262502327897, - 0.301199973894995, - 0.30114054233145904, - 0.30108405425753915, - 0.3010303638899313, - 0.300979332665581, - 0.3009308288840906, - 0.3008847273678378, - 0.3008409091389186, - 0.3008081548549844, - 0.3007865341923972, - 0.3007544046432293, - 0.3007194365146455, - 0.3006846646623992, - 0.3006510828816593, - 0.300618978992564, - 0.3005883996584574, - 0.3005593108475215, - 0.3005316531332249, - 0.3005053606744324, - 0.3004803676552058, - 0.3004568349858219, - 0.3004345190056668, - 0.30041312891121, - 0.30039273182148224, - 0.30037332104881725, - 0.30035486249427, - 0.30033731413549586, - 0.3003206327094467, - 0.30030477594648064, - 0.3002897032715862, - 0.30027537597969683, - 0.3002617572327043, - 0.300248811998031, - 0.300230398773985, - 0.3002051781889237, - 0.300189898703193, - 0.3001787299458222, - 0.30016927483528194, - 0.3001606883372189, - 0.3001526650240166, - 0.3001450864368556, - 0.3001378993004051, - 0.3001310734523984, - 0.3001245872912874, - 0.3001184227241955, - 0.300112563395636, - 0.3001069940500626, - 0.30010170028707656, - 0.3000966684534098, - 0.3000918855832717, - 0.3000873393565113, - 0.3000830180639638, - 0.3000789105762928, - 0.3000750063149769, - 0.3000712952249485, - 0.3000677677486545, - 0.3000644148014281, - 0.30006122774808697, - 0.3000581983806945, - 0.3000553188974159, - 0.30005258188243, - 0.3000499802868291, - 0.3000475074104629, - 0.3000451568846856, - 0.30004292265595234, - 0.3000407989702312, - 0.30003878035818105, - 0.30003686162106885, - 0.3000350378173784, - 0.2999622527228853, - 0.2999240654010185, - 0.2999138898554593, - 0.2999133557701647, - 0.2999159976878538, - 0.2999195938266841, - 0.2999233855491626, - 0.2999271180525786, - 0.2999307098175159, - 0.2999341387228606, - 0.2999374028188509, - 0.2999405068249742, - 0.2999434574913801, - 0.29994626201378444, - 0.2999489274998844, - 0.29995146079748025, - 0.2999538684466338, - 0.29995615667400594, - 0.29995833140119355, - 0.2999603982573741, - 0.2999623625929571, - 0.29996422949311263, - 0.2999660037908292, - 0.2999676900793874, - 0.2999692927242353, - 0.29997081587428986, - 0.2999722634726708, - 0.2999736392669105, - 0.29997494681865633, - 0.2999761895128897, - 0.2999773705666903, - 0.2999784930375615, - 0.29997955983134883, - 0.2999805737097616, - 0.2999815372975204, - 0.2999824530891557, - 0.2999833234554627, - 0.2999841506496403, - 0.2999849368131229, - 0.29998568398112657, - 0.2999863940879136, - 0.2999870689718038, - 0.2999877103799331, - 0.29998831997277425, - 0.29998889932843703, - 0.29998944994675364, - 0.2999899732531617, - 0.29999047060239264, - 0.2999909432819816, - 0.2999913925155983, - 0.2999918194662157, - 0.29999222523912, - 0.2999926108847745, - 0.2999929774015357, - 0.2999933257382399, - 0.2999936567966588, - 0.299993971433834, - 0.2999942704642972, - 0.2999945546621757, - 0.2999948247631985, - 0.29999508146660303, - 0.2999951271745529, - 0.2999920923683815, - 0.29999106213721505, - 0.29999102942764416, - 0.30179097418265344, - 0.3025967132847597, - 0.3027986758895857, - 0.3027618199074105, - 0.3025631791029215, - 0.3024098245515611, - 0.3022776558224788, - 0.3021572240377584, - 0.30204482765430746, - 0.30193890566003834, - 0.3018386994745381, - 0.3017437569583353, - 0.30165374827782554, - 0.30156839726817103, - 0.30148745558600604, - 0.3014106927285437, - 0.30133789194882804, - 0.3012688483742664, - 0.3012033679600294, - 0.3011412667696426, - 0.3010823703938542, - 0.3010265134369499, - 0.30097353904344537, - 0.3009232984543361, - 0.3008756505881527, - 0.3008304616443387, - 0.3007876047273578, - 0.3007469594902956, - 0.3007084117968886, - 0.3006718534010109, - 0.30063718164270115, - 0.300604299159883, - 0.3005731136149609, - 0.3005435374355264, - 0.3005154875684443, - 0.30048888524663137, - 0.3004636557678683, - 0.30043972828503024, - 0.3004170356071375, - 0.3003955140106768, - 0.30037510306066045, - 0.3003557454409164, - 0.300337386793139, - 0.30031997556424384, - 0.3003034628616044, - 0.3002878023157501, - 0.3002729499501636, - 0.3002588640577824, - 0.30024550508388576, - 0.3002328355150197, - 0.300220819773653, - 0.3002094241182756, - 0.3001986165486447, - 0.3001883667159276, - 0.3001786458374768, - 0.30016942661600543, - 0.3001606831629361, - 0.3001523909256989, - 0.30014452661878804, - 0.300137068158373, - 0.3001299946002845, - 0.3001232860812003, - 0.3001169237628676, - 0.3001108897792026, - 0.3001051671861222, - 0.3000997399139617, - 0.3000945927223493, - 0.300089711157409, - 0.30008508151117536, - 0.3000806907830978, - 0.3000765266435323, - 0.3000725773991213, - 0.300068831959957, - 0.30006527980843684, - 0.30006191096973284, - 0.3000587159837789, - 0.3000556858787063, - 0.3000528121456495, - 0.3000500867148529, - 0.3000475019330105, - 0.30004505054177216, - 0.300042725657365, - 0.30004052075126003, - 0.3000384296318397, - 0.3000364464270137, - 0.30003456556772706, - 0.3000327817723212, - 0.3000310900317048, - 0.30002948559528564, - 0.30002796395763104, - 0.3000265208458169, - 0.30002515220742826, - 0.3000238541991789, - 0.30002262317612, - 0.3000214556814052, - 0.3000203484365824, - 0.30001929833238683, - 0.3000183024200122, - 0.30001735790282696, - 0.300016462128524, - 0.3000156125816727, - 0.3000148068766522, - 0.3000140427509549, - 0.3000133180588327, - 0.30001263076527096, - 0.3000119789402741, - 0.3000113607534474, - 0.3000107744688543, - 0.30001021844014386, - 0.3000096911059276, - 0.3000091909853923, - 0.3000087166741458, - 0.3000082668402703, - 0.30000784022058313, - 0.3000074356170898, - 0.30000705189361915, - 0.30000668797263497, - 0.3000063428322061, - 0.30000601550314177, - 0.3000057050662656, - 0.3000054106498373, - 0.3000051314271031, - 0.3000048666139761, - 0.30000461546683066, - 0.3000043772804197, - 0.300004151385889, - 0.3000039371489018, - 0.3000037339678585, - 0.3000035412722037, - 0.30000335852082666, - 0.30000318520054264, - 0.30000302082464897, - 0.3000028649315601, - 0.3000027170835107, - 0.3000025768653282, - 0.3000024438832644, - 0.30000231776389125, - 0.300002198153052, - 0.3000020847148652, - 0.30000197713078497, - 0.3000018750987038, - 0.3000017783321045, - 0.3000016865592546, - 0.3000015995224476, - 0.30000151697727384, - 0.3000014386919377, - 0.30000136444660563, - 0.3000012940327876, - 0.3000012272527552, - 0.30000116391898224, - 0.3000011038536206, - 0.30000104688799994, - 0.3000009928621549, - 0.30000094162437485, - 0.3000008930307788, - 0.3000008469449108, - 0.3000008032373554, - 0.30000076178537866, - 0.3000007224725787, - 0.3000006851885596, - 0.3000006498286253, - 0.30000061629348124, - 0.3000005844889558, - 0.30000055432573874, - 0.30000052571912905, - 0.3000004985887961, - 0.30000047285855425, - 0.300000448456151, - 0.3000004253130619, - 0.30000040336429784, - 0.3000003825482249, - 0.3000003628063884, - 0.30000034408335263, - 0.3000003263265405, - 0.3000003094860881, - 0.3000002935147065, - 0.30000027836754684, - 0.30000026400207325, - 0.3000002503779465, - 0.3000002374569079, - 0.300000225202674, - 0.3000002135808341, - 0.3000002025587527, - 0.300000192105478, - 0.3000001821916564, - 0.30000017278944896, - 0.3000001638724528, - 0.3000001554156284, - 0.3000001473952286, - 0.3000001397887304, - 0.3000001325747741, - 0.30000012573310225, - 0.30000011924450265, - 0.30000011309075425, - 0.3000001072545777, - 0.3000001017195834, - 0.3000000964702287, - 0.30000009149177304, - 0.30000008677023626, - 0.3000000671130601, - 0.2984636001042648, - 0.2978037621734362, - 0.2976632216703077, - 0.2977195747761736, - 0.2978277264755691, - 0.2979346190675414, - 0.2980376543698548, - 0.29813607467797465, - 0.29822975557468145, - 0.2983188018483796, - 0.2984033966069621, - 0.2984837450868714, - 0.2985600539480391, - 0.2986325238562682, - 0.2987013470304644, - 0.2987667066349519, - 0.298828776847919, - 0.2988799925568749, - 0.2989031437278249, - 0.29894450124633504, - 0.2989924357056989, - 0.29904121359764924, - 0.2990887565445717, - 0.2991343634285191, - 0.29917784558768257, - 0.2992192027341978, - 0.29925850165067386, - 0.2992934625788725, - 0.29932512178670256, - 0.2993575717403578, - 0.2993893451634875, - 0.2994198780828134, - 0.2994490082960266, - 0.29947672221221033, - 0.2995030595751893, - 0.2995280778640593, - 0.29955183906206245, - 0.2995744048047424, - 0.2995958346637134, - 0.2996161856006794, - 0.2996355118552228, - 0.2996538649905544, - 0.2996712939940377, - 0.2996878453940614, - 0.2997035633790444, - 0.29971848991345895, - 0.2997326648491367, - 0.2997461260313933, - 0.2997589093999689, - 0.2997710490849431, - 0.299782524390492, - 0.29979079458672986, - 0.2998000022896448, - 0.299809573354494, - 0.2998189749429441, - 0.2998280202632095, - 0.29983665401832793, - 0.2998448694796979, - 0.29985267741980665, - 0.2998600945019786, - 0.2998671389619798, - 0.29987382902126875, - 0.2998801823226101, - 0.29988621574738145, - 0.2998919453745044, - 0.2998973864910923, - 0.29990255362116064, - 0.2999074605598731, - 0.2999121204086722, - 0.2999165456096286, - 0.29992074797841817, - 0.2999247387357886, - 0.2999285285374784, - 0.29993212750266196, - 0.2999355452409638, - 0.2999387908781121, - 0.2999418730803077, - 0.2999448000773628, - 0.2999475796846747, - 0.2999502193240944, - 0.29995272604374434, - 0.2999551065368353, - 0.2999573671595408, - 0.2999595139479675, - 0.2999615526342711, - 0.29996348866196504, - 0.2999653272004508, - 0.29996707315882404, - 0.2999687307441923, - 0.2997955193817621, - 0.2997069534923072, - 0.29968448677460363, - 0.2996864766691061, - 0.29969709535944, - 0.2997104442682902, - 0.29972434124191155, - 0.2997374265730046, - 0.2997502428201553, - 0.29976269134345185, - 0.29977461673469763, - 0.2997859792486715, - 0.2997967825503208, - 0.29980704562086896, - 0.2998167922835123, - 0.2998260473286846, - 0.299834835106752, - 0.29984317904190205, - 0.2998511014887051, - 0.29985862371496586, - 0.2998657659299851, - 0.2998725473280653, - 0.29987898613606057, - 0.2998850996608517, - 0.2998909043353035, - 0.2998964157622214, - 0.2999016487562144, - 0.2999066173834835, - 0.29991133499962314, - 0.29991581428551706, - 0.29992006728142073, - 0.299924105419325, - 0.2999279395536875, - 0.2999315799906053, - 0.2999350365155212, - 0.2999383184195241, - 0.2999414345243252, - 0.2999443932059698, - 0.29994720241735034, - 0.29994986970958765, - 0.2999524022523246, - 0.2999548068530001, - 0.29995708997514503, - 0.2999592577557602, - 0.2999613160218077, - 0.2999632703058787, - 0.2999651258610586, - 0.2999668876750551, - 0.2999685604835973, - 0.2999701487831715, - 0.29997165684310384, - 0.2999730887170379, - 0.2999744482538297, - 0.29997573910789505, - 0.29997696474903063, - 0.29997812847174365, - 0.29997923340410226, - 0.2999802825161496, - 0.2999812786278838, - 0.29998222441683875, - 0.2999831224252819, - 0.2999839750670462, - 0.2999847846340209, - 0.2999855533023109, - 0.2999862831380847, - 0.2999869761031313, - 0.29998763406013035, - 0.2999882587776601, - 0.2999888519349529, - 0.29998941512640714, - 0.2999899498658734, - 0.29999045759072346, - 0.2999909396657144, - 0.2999913973866574, - 0.29999183198389834, - 0.2999922446256307, - 0.2999926364210279, - 0.2999930084232306, - 0.29999336163217466, - 0.2999936969972817, - 0.2999940154200089, - 0.29999431775626995, - 0.2999946048187423, - 0.29999487737904473, - 0.2999951361698153, - 0.29999538188668, - 0.2999956151901229, - 0.29999583670725993, - 0.2999959443071313, - 0.2999949244866725, - 0.29999462837412283, - 0.2999946922620793, - 0.2999948827625409, - 0.2999951122314472, - 0.2999953482911755, - 0.2999955792294933, - 0.29999580104694445, - 0.29999601261087505, - 0.2999962138430227, - 0.2999964050422239, - 0.2999965866318518, - 0.29999675906614376, - 0.2999969227959405, - 0.29999707825662325, - 0.29999722586431604, - 0.2999973660151426, - 0.2999974990855998, - 0.29999762543330755, - 0.2999977453978703, - 0.29999785930175626, - 0.2999979674511501, - 0.3099796472018232, - 0.3151046992825077, - 0.3180293931523355, - 0.3200793109061862, - 0.3217536062989563, - 0.3232415088560015, - 0.32461614503076114, - 0.3259070777748933, - 0.32712745746714866, - 0.32828418675184845, - 0.3293817303933158, - 0.33042354591105355, - 0.3314126236387727, - 0.3323516933774402, - 0.3332433060563366, - 0.33408986840247923, - 0.33489365981775804, - 0.3356570748724204, - 0.3363825245064572, - 0.3370715617383049, - 0.3377258395055456, - 0.33834704538773763, - 0.3389368263481073, - 0.33949676280198954, - 0.3400283614817993, - 0.3405330552258091, - 0.34101220523976816, - 0.3414671041677913, - 0.34189897935437763, - 0.3423089960713499, - 0.3426982606302493, - 0.3430678233554991, - 0.343418681413958, - 0.3437517815038348, - 0.34406802240848017, - 0.3443683557012118, - 0.3446537579209503, - 0.3449248236043139, - 0.34518219372756204, - 0.3454265302857095, - 0.3456584820397021, - 0.3458786725016686, - 0.34608769644080084, - 0.3462861195446129, - 0.3464744792179508, - 0.34665328576309884, - 0.34682302365866724, - 0.3469841528333069, - 0.3471371098972819, - 0.3472823093200273, - 0.347420144551169, - 0.3475509890858757, - 0.3476751974766348, - 0.34779310629388305, - 0.3479050350379728, - 0.3480113104749892, - 0.3481122818538738, - 0.34820817033814144, - 0.34829920465574915, - 0.3483856202097786, - 0.3484676474436971, - 0.3485455077337038, - 0.3486194122041503, - 0.3486895616278051, - 0.3487561467177108, - 0.3488193485500197, - 0.3488793390203397, - 0.3489362812976467, - 0.3489903302629527, - 0.3490416329286446, - 0.3490903288376199, - 0.3491365504425712, - 0.3491804234661515, - 0.3492220672428974, - 0.34926159504381044, - 0.3492991143844418, - 0.3493347273173367, - 0.3493685307096143, - 0.3494006165064469, - 0.3494310719811501, - 0.3494599799725647, - 0.3494874191103818, - 0.3495134640290105, - 0.3495381855705881, - 0.3495616509776663, - 0.3495839240761156, - 0.34960506544872666, - 0.3496251325999992, - 0.3496441801125526, - 0.3496622597955899, - 0.3496794208258186, - 0.3496957098812145, - 0.3497111712679808, - 0.3497258470410644, - 0.3497397771185453, - 0.34975299939020965, - 0.34976554982061697, - 0.34977746254691633, - 0.34978876997170555, - 0.3497995028511591, - 0.33981683920729705, - 0.33467124402128445, - 0.3317312170634273, - 0.32967441704589506, - 0.3280033984582577, - 0.326535523202997, - 0.32517244566388376, - 0.3238892679982299, - 0.32267521662407816, - 0.3215242616691806, - 0.32043225341480513, - 0.3193958449200715, - 0.3184120818544149, - 0.31747824357700805, - 0.3165917789819129, - 0.3157708074419872, - 0.31499225629607674, - 0.3142409855158182, - 0.3135230330920624, - 0.31283965176149753, - 0.3121901956361624, - 0.31157336180433354, - 0.3109876545281173, - 0.3104315566900082, - 0.3099035915354669, - 0.3094023433881441, - 0.3089264630967253, - 0.3084746678711911, - 0.30804573912585503, - 0.30763851968066136, - 0.30725191082241216, - 0.306884869409046, - 0.30653640508081986, - 0.30620557759776856, - 0.3058914943063374, - 0.3055933077321502, - 0.3053102132938197, - 0.3050414471321828, - 0.30478628404928704, - 0.30454403555165666, - 0.30431404799257283, - 0.30409570080837817, - 0.3038884048440416, - 0.3036916007634732, - 0.3035047575402943, - 0.30332737102500096, - 0.3031774601954175, - 0.3030386690651877, - 0.3028935117357869, - 0.3027504589146434, - 0.30261267479750925, - 0.3024811187651797, - 0.3023559347959158, - 0.30223697258923826, - 0.3021239820387478, - 0.3020166854841151, - 0.3019148042534415, - 0.3018180681257843, - 0.3017262184260169, - 0.3016390087594145, - 0.3015562048844001, - 0.30147758428310323, - 0.3014029356381256, - 0.3013320582925293, - 0.3012647617209288, - 0.3012008650212618, - 0.3011401964299602, - 0.30108259286077593, - 0.30102789946658803, - 0.3009759692232209, - 0.30092666253425704, - 0.3008798468557838, - 0.3008353963401072, - 0.3007931914974482, - 0.30075311887474, - 0.3007150707506505, - 0.3006789448460083, - 0.3006446440488604, - 0.3006120761534232, - 0.30058115361221643, - 0.3005517933007246, - 0.300523916293944, - 0.30049744765422065, - 0.3004723162298059, - 0.30044845446359103, - 0.3004257982115021, - 0.3004042865700709, - 0.3003838617127186, - 0.30036446873430744, - 0.3003460555035485, - 0.3003285725228632, - 0.3003119727953284, - 0.3002962116983389, - 0.3002812468636583, - 0.3002670380635246, - 0.3002535471025115, - 0.30024068844766105, - 0.30021272759395623, - 0.3001936088178025, - 0.30018067410160976, - 0.3001703639852442, - 0.3001613156561912, - 0.3001530045295823, - 0.300145212278052, - 0.3001378506683873, - 0.3001308749056058, - 0.300124256874184, - 0.3001179752708771, - 0.3001120118859302, - 0.3001063501844021, - 0.3001009747493105, - 0.30009587104848084, - 0.3000910253237454, - 0.3000864245271054, - 0.30008205627558515, - 0.3000779088141657, - 0.3000739709827464, - 0.30007023218559337, - 0.3000666823626335, - 0.3000633119623115, - 0.3000601119158611, - 0.30005707361289585, - 0.3000541888782342, - 0.3000514499499035, - 0.30004884945825244, - 0.3000463804061234, - 0.30004403615002423, - 0.3000418103822507, - 0.30003969711391554, - 0.3000376906588357, - 0.3000357856182323, - 0.300033976866201, - 0.3000322595359212, - 0.3000306290065623, - 0.30002908089084995, - 0.3000276110232601, - 0.3000262154488117, - 0.30002489041242464, - 0.3000236323488148, - 0.3000224378729035, - 0.3000213037707077, - 0.30002022699069225, - 0.3000192046355581, - 0.30001823395444904, - 0.3000173123355482, - 0.3000164372990495, - 0.3000156064904863, - 0.3000148176743983, - 0.3000140687283128, - 0.3000133576370376, - 0.3000126824872334, - 0.30001204146227145, - 0.3000114328373431, - 0.3000108549748165, - 0.30001030631983394, - 0.30000978539612605, - 0.3000092908020403, - 0.3000088212067692, - 0.3000083753467716, - 0.3000079520223681, - 0.30000755009451713, - 0.3000071684817501, - 0.3000068061572586, - 0.30000646214613397, - 0.3000061355227435, - 0.30000582540824045, - 0.30000553096819665, - 0.3000052514103613, - 0.3000049859825264, - 0.3000047339705033, - 0.3000044946962031, - 0.3000042675158082, - 0.3000040518180431, - 0.3000038470225278, - 0.3000036525782185, - 0.3000034679619229, - 0.30000329267689263, - 0.3000031262514877, - 0.300002968237906, - 0.3000028182109782, - 0.30000267576702777, - 0.3000025405227788, - 0.30000241211432976, - 0.3000022901961703, - 0.30000217444025584, - 0.30000206453512024, - 0.30000196018504105, - 0.30000186110924354, - 0.3000017670411428, - 0.3000016777276309, - 0.30000159292839, - 0.3000015124152502, - 0.30000143597157525, - 0.30000136339167816, - 0.3000012944802665, - 0.30000122905192056, - 0.3000011669305921, - 0.30000110794912976, - 0.3000010519488325, - 0.300001014758391, - 0.2990515701611274, - 0.2984177097037548, - 0.2982395940994874, - 0.29823423592395465, - 0.2981925116240484, - 0.29822770376928803, - 0.2983026598724484, - 0.2983894912432893, - 0.2984777887109176, - 0.2985617184421636, - 0.29863286281205403, - 0.29870097669318024, - 0.2987668575066583, - 0.2988301764572733, - 0.2988900260028729, - 0.29894670304352944, - 0.2990006351172443, - 0.2990517388441947, - 0.2990984060461527, - 0.29913907745532176, - 0.29917542849323553, - 0.2992090578676618, - 0.2992399031700147, - 0.29926788756186984, - 0.29929281040385003, - 0.2993149265881777, - 0.2993344799882925, - 0.299352683832224, - 0.29937439814652506, - 0.2993975647743846, - 0.2994200535068901, - 0.2994422313653505, - 0.29947422596556544, - 0.2995022537730901, - 0.29952730101983244, - 0.299550471368616, - 0.2995721429436558, - 0.2995925310819985, - 0.2996118018825467, - 0.2996299497172042, - 0.2996470595629632, - 0.2996631791438157, - 0.29967844913956937, - 0.2996928076350737, - 0.2997058621723209, - 0.29971815725739376, - 0.2997299085477132, - 0.2997410681450749, - 0.2997514959707942, - 0.29976109587604033, - 0.29977003367114097, - 0.29977828234073395, - 0.2997872367844687, - 0.29979730105550606, - 0.2998074135947904, - 0.2998171707616152, - 0.2998264884131515, - 0.2998353515881873, - 0.2998437696064264, - 0.29985176005692893, - 0.2998593428836751, - 0.29986653822157017, - 0.299873440477039, - 0.2998799852038615, - 0.2998859813372905, - 0.29989165642748145, - 0.2996976881356494, - 0.2992807689850994, - 0.2991572621878528, - 0.2991419997160108, - 0.29916555427435915, - 0.2992020959002199, - 0.29924212765881586, - 0.2992821822084793, - 0.2993210651734671, - 0.2993582772813557, - 0.2993938049682909, - 0.2994277314537989, - 0.2994600092712545, - 0.299490796414741, - 0.2995201625893441, - 0.2995482322519631, - 0.2995749990320857, - 0.29960063674668, - 0.2996250698784503, - 0.29964850132594145, - 0.29967098939397235, - 0.29969257333189725, - 0.2997134412739593, - 0.29973359780701925, - 0.2997531566506853, - 0.2997720197345577, - 0.29979040687479586, - 0.2998083024523773, - 0.2998257247552752, - 0.29984280219743625, - 0.2998598970041415, - 0.2998768698575659, - 0.2998938311854729, - 0.29991090469542403, - 0.2999283939882919, - 0.2999464913245039, - 0.2999655674267301, - 0.2999857480972117, - 0.30000669213497105, - 0.30002976888793914, - 0.3000549801585693, - 0.3000831691401849, - 0.3000976921800315, - 0.3000996707821066, - 0.3000971506901427, - 0.3000931265159673, - 0.300088702210939, - 0.3000842797212576, - 0.3000800084675087, - 0.30007592803030186, - 0.3000720579868973, - 0.3000683706081965, - 0.3000648960490154, - 0.3000616099322442, - 0.3000584631320074, - 0.3000554669704347, - 0.30005262061179666, - 0.3000499189261069, - 0.30004735543540817, - 0.3000449233958378, - 0.3000426161875264, - 0.3000404274479938, - 0.30003836316011634, - 0.3000364563705839, - 0.3000346077477484, - 0.3000328391315352, - 0.3000311558007791, - 0.3000295568637373, - 0.3000280392818661, - 0.30002659935817616, - 0.300025233282984, - 0.3000239373298767, - 0.3000227079220738, - 0.3000215416509891, - 0.3000204352773389, - 0.30001938572606857, - 0.3000183900792611, - 0.3000174455685693, - 0.3000165495677177, - 0.3000156995852735, - 0.30001489325775105, - 0.3000141283430452, - 0.2998018412650865, - 0.2994518626870357, - 0.2993511442011665, - 0.2993423682096685, - 0.29936637655081744, - 0.2994014335331999, - 0.2994396848390741, - 0.29947822307649746, - 0.29951600581925497, - 0.2995525644775276, - 0.2995883625844977, - 0.2996233536177977, - 0.2996575086016865, - 0.2996912589417184, - 0.29972416302438026, - 0.29975657984424675, - 0.29978944920652545, - 0.2998226237752469, - 0.299852017367737, - 0.2998680410590292, - 0.2998779601259147, - 0.2998854103540832, - 0.2998917507048635, - 0.2998974949755939, - 0.29990284315173604, - 0.29990787840206834, - 0.29991264012698626, - 0.2999171510603766, - 0.2999214273386629, - 0.2999254822548795, - 0.29992932767077296, - 0.2999329745597151, - 0.2999364332264159, - 0.29993971340587744, - 0.2999428243166857, - 0.2999457746965096, - 0.2999485728302072, - 0.2999512265744033, - 0.29995374338003866, - 0.29995613031347257, - 0.2999583940763906, - 0.2999605410246435, - 0.2999625771861026, - 0.2999645082775883, - 0.299966339720919, - 0.2999680766581391, - 0.2999697239659499, - 0.29997128626940794, - 0.2999727679549061, - 0.2999741731824911, - 0.2999755058975434, - 0.2999767698418537, - 0.29997796856412784, - 0.2999791054299534, - 0.2999801836312447, - 0.2999812061952103, - 0.2999821759928453, - 0.299983095746997, - 0.2999839680400087, - 0.29998479532096994, - 0.2999855799125907, - 0.29998632401772585, - 0.2999870297255592, - 0.299987699017468, - 0.2999883337725849, - 0.2999889357730784, - 0.29998950670915103, - 0.2999900481837889, - 0.2999905617172608, - 0.2999910487513861, - 0.2999915106535836, - 0.299991948720711, - 0.2999923641827046, - 0.2999927582060352, - 0.2999931318969798, - 0.29999348630472883, - 0.29999382242433514, - 0.2999941411995024, - 0.2999944435252384, - 0.299994730250367, - 0.2999950021799087, - 0.2999952600773466, - 0.2999955046667649, - 0.2999957366348834, - 0.29999595663298656, - 0.2999961652787506, - 0.29999636315797945, - 0.2999965508262472, - 0.2999967288104601, - 0.29999689761033405, - 0.2999970576997985, - 0.29999720952832964, - 0.2999973535222071, - 0.29999749008571497, - 0.2999976196022747, - 0.29999774243552285, - 0.2999978589303309, - 0.2999979694137763, - 0.2999980741960565, - 0.2999981735713625, - 0.29999826781870625, - 0.2999983572026993, - 0.29999844197430103, - 0.29999852237151986, - 0.2999985986200831, - 0.2999986709340691, - 0.29999873951650924, - 0.29999880455995903, - 0.2999988662470382, - 0.2999989247509422, - 0.2999989802359282, - 0.2998366358239701, - 0.29974400100004184, - 0.2997194632086486, - 0.2997199739808937, - 0.2997292675538518, - 0.2997413430979425, - 0.29975400261213897, - 0.29976645517243, - 0.29977842974974706, - 0.29978984671853903, - 0.2998006962639739, - 0.2998109934075266, - 0.2998207614040296, - 0.29983002564290073, - 0.2998388114368356, - 0.2998471432477135, - 0.29985504444243705, - 0.2998625372428227, - 0.2998696427452758, - 0.2998763809643239, - 0.29988277088312515, - 0.2998888305047692, - 0.29989457690219873, - 0.2999000262660064, - 0.2999051939499499, - 0.2999100945141652, - 0.2999147417661785, - 0.2999191487997997, - 0.2999233280320178, - 0.2999272912379816, - 0.29993104958417816, - 0.2999346136598945, - 0.2999379935070525, - 0.2999411986485029, - 0.2999442381148561, - 0.2999471204699277, - 0.29994985383486483, - 0.2999524459110303, - 0.299954904001698, - 0.2999572350326359, - 0.2999594455716136, - 0.2999615418469101, - 0.29996352976486385, - 0.2999654149265102, - 0.2999672026433655, - 0.29996889795239223, - 0.2999705056301896, - 0.2999720302064519, - 0.2999734759767314, - 0.2999261997502211, - 0.2995054782756996, - 0.2993456896644869, - 0.29931068748100353, - 0.29932084754401994, - 0.2993465318495767, - 0.2993768292288516, - 0.2994077592596184, - 0.2994379040803312, - 0.29946679154710204, - 0.2994942968699911, - 0.29952042125562794, - 0.2995452101002522, - 0.2995687228336893, - 0.2995910218765725, - 0.2996121686665666, - 0.2996322222954577, - 0.2996512391071212, - 0.2996692726458895, - 0.2996863737295968, - 0.2997025905640144, - 0.2997179688680887, - 0.29973255199889004, - 0.2997463810723935, - 0.29975949507886285, - 0.2997719309925778, - 0.29978372387601354, - 0.2997949069786621, - 0.29980551183077586, - 0.2998155683322553, - 0.2998251048369545, - 0.2998341482326171, - 0.29984272401669104, - 0.2998508563682127, - 0.2998585682159812, - 0.299865881303204, - 0.2998728162488011, - 0.29987939260554, - 0.2998855201570106, - 0.29989126094292645, - 0.2998968144869204, - 0.2999021243588857, - 0.2999071757913361, - 0.2999119719943801, - 0.2999165224066941, - 0.29992083834617256, - 0.2999249314217911, - 0.29992881296663515, - 0.29993249384786536, - 0.2999359844151761, - 0.2999392944995597, - 0.2999424334297629, - 0.2999454100544191, - 0.2999482327654572, - 0.2999509095211878, - 0.2999534478685331, - 0.2999558549642235, - 0.2999581375949489, - 0.2999603021964814, - 0.2999623548718172, - 0.2999643014083827, - 0.2999661472943529, - 0.2999678977341202, - 0.29996955766297184, - 0.29997113176100376, - 0.2999726244663156, - 0.2999740399875237, - 0.2999753823156286, - 0.2999766552352633, - 0.2999778623353681, - 0.2999790070193096, - 0.29998009251447244, - 0.2999811218813622, - 0.2999820980222334, - 0.2999830236892721, - 0.29998390149235643, - 0.299984733906411, - 0.2999855232783918, - 0.2999862718338973, - 0.2999869816834477, - 0.2999876548284315, - 0.299988293166751, - 0.2999888984981736, - 0.2999894725294041, - 0.2999900168788976, - 0.2999905330814244, - 0.2999910225923935, - 0.29999148679196, - 0.299991926988914, - 0.29999234442437017, - 0.2999927402752711, - 0.29999311565769976, - 0.2999934716300303, - 0.29999380919591145, - 0.2999941293070953, - 0.29999443286612, - 0.3001590094941381, - 0.30062995020811634, - 0.300776028509788, - 0.30080215562564633, - 0.30078520524548896, - 0.3007536912055408, - 0.3007180939774932, - 0.3006822233589856, - 0.30064742482780193, - 0.3006141355036408, - 0.3005824595974206, - 0.30055238113378074, - 0.30052384249308634, - 0.3004967733219929, - 0.3004711010906469, - 0.3004467548672988, - 0.300423666590497, - 0.300401771421943, - 0.3003810077653365, - 0.3003613171674168, - 0.3003426441809087, - 0.3003249362185566, - 0.30030814340879464, - 0.3002922184566801, - 0.3002771165112097, - 0.3002627950391903, - 0.3002492137055211, - 0.30023633425961826, - 0.3002241204276951, - 0.30021253781060464, - 0.3002015537869573, - 0.30019113742124903, - 0.30018125937673146, - 0.3001718918327889, - 0.300163008406585, - 0.3001545840787565, - 0.3001465951229476, - 0.3001390190389924, - 0.3001318344895357, - 0.30012502123994755, - 0.3001185601013286, - 0.30011243287647, - 0.3001066223085981, - 0.3001011120327767, - 0.3000958865298141, - 0.30009093108255586, - 0.3000862317344335, - 0.3000817752501615, - 0.3000775490784563, - 0.300073541316688, - 0.3000697406773604, - 0.30006613645631797, - 0.3000627185025995, - 0.3000594771898481, - 0.3000564033892014, - 0.30005348844357776, - 0.3000507241432988, - 0.30004810270296417, - 0.30004561673952396, - 0.30004325925148817, - 0.3000410235992061, - 0.300038903486166, - 0.3000368929412624, - 0.3000349863019775, - 0.3000331781984349, - 0.30003146353827553, - 0.3000298374923146, - 0.3000282954809416, - 0.3000268331612216, - 0.3000254464146629, - 0.3000241313356213, - 0.3000228842202944, - 0.3000217015562959, - 0.3000205800127606, - 0.30001951643096203, - 0.3000185078154197, - 0.3000175513254589, - 0.3000166442672121, - 0.3000157840860321, - 0.3000149683592978, - 0.3000141947895873, - 0.3000134611982136, - 0.3000127655190823, - 0.300012105792876, - 0.3000114801615361, - 0.30001088686302896, - 0.3000103242263823, - 0.3000097906669822, - 0.3000092846821066, - 0.3000088048466953, - 0.3000083498093349, - 0.3000079182884547, - 0.3000075090687141, - 0.3000071209975846, - 0.3000067529820973, - 0.3000064039857712, - 0.3000060730256898, - 0.3000057591697334, - 0.30000546153395585, - 0.300005179280092, - 0.30000491161320153, - 0.3000046577794234, - 0.3000044170638571, - 0.3000041887885508, - 0.3000039723105864, - 0.3000037670202751, - 0.3000035723394337, - 0.3000033877197624, - 0.30000321264129576, - 0.3000030466109411, - 0.30000288916109025, - 0.30000273984829906, - 0.300002598252042, - 0.3000024639735259, - 0.3000023366345672, - 0.3000022158765273, - 0.30000210135930283, - 0.3000019927603663, - 0.30000188977385783, - 0.3000017921097259, - 0.3000016994929083, - 0.3000016116625588, - 0.30000152837130983, - 0.30000144938457995, - 0.3000013744799104, - 0.300001303446338, - 0.300001236083805, - 0.3000011722025898, - 0.30000111162277593, - 0.3000010541737469, - 0.3000009996937027, - 0.3000009480292047, - 0.3000008990347452, - 0.300000852572335, - 0.3000008085111172, - 0.3000007667269983, - 0.3000007271022959, - 0.3000006895254114, - 0.3000006538905123, - 0.3000006200972365, - 0.3000005880504084, - 0.3000005576597703, - 0.3000005288397309, - 0.3000005015091205, - 0.3000004755909653, - 0.30000045101226835, - 0.3000004277038067, - 0.30000040559993385, - 0.3000003846383962, - 0.30000036476015834, - 0.3000003459092342, - 0.300000328032532, - 0.30000031107970304, - 0.30000029500300224, - 0.3000002797571505, - 0.3000002652992092, - 0.300000251588459, - 0.3000002385862852, - 0.3000002262560679, - 0.30000021456308035, - 0.3000002034743899, - 0.3000001929587664, - 0.3000001829865943, - 0.3000001735297874, - 0.30000016456171097, - 0.3000001560571079, - 0.3000001479920254, - 0.30000014034374894, - 0.3000001330907381, - 0.3000001262125653, - 0.30000011968985857, - 0.3000001135042477, - 0.3000001076383111, - 0.30000010207552785, - 0.3000000968002305, - 0.3000000917975632, - 0.30000008705343545, - 0.3000000825544857, - 0.30000007828804204, - 0.3000000742420906, - 0.30000007040523463, - 0.3000000667666695, - 0.30000006331614626, - 0.30000006004394714, - 0.3000351569988654, - 0.3002106546971793, - 0.30027384962687104, - 0.3002871656560597, - 0.30028248662217144, - 0.30027164740253964, - 0.3002590003390446, - 0.3002461309466897, - 0.3002336026067925, - 0.300221601828482, - 0.30021017685468554, - 0.30019932585865605, - 0.30018902951046994, - 0.30017926297011177, - 0.30017000027363344, - 0.30016121590825706, - 0.3001528853501748, - 0.3001449852209899, - 0.30013749330529355, - 0.30013038851896123, - 0.3001236508612, - 0.3001172613624527, - 0.3001112020325432, - 0.3001054558106063, - 0.3001000065172566, - 0.3000948597708929, - 0.3000899818422409, - 0.3000853409737617, - 0.30008094836228577, - 0.30007678625689593, - 0.3000728583821659, - 0.300069108366242, - 0.30006554276956665, - 0.30006215980166284, - 0.30005899235196426, - 0.3000559608299037, - 0.300053075349392, - 0.3000503350475769, - 0.3000477348958036, - 0.30004527763633226, - 0.3000429544194915, - 0.3000407409037478, - 0.3000386379229117, - 0.30003668062087124, - 0.3000348073297912, - 0.30003301689330153, - 0.30003131381317844, - 0.30002969682829955, - 0.30002816269300303, - 0.3000267075711714, - 0.30002532754448274, - 0.3000240187933662, - 0.3000227776572581, - 0.3000216042454889, - 0.30002051005415753, - 0.3000194584926125, - 0.3000184560570268, - 0.30001750349284145, - 0.30001659943809433, - 0.3000157229420324, - 0.300013041611165, - 0.3000110917367021, - 0.3000096594382239, - 0.3000084361350437, - 0.3000073039665923, - 0.3000062083061201, - 0.3000052838131612, - 0.3000047608763935, - 0.30000442219627543, - 0.3000041593922926, - 0.30000393176471835, - 0.3000037238889756, - 0.30000352971093064, - 0.3000033466607633, - 0.3000031734746375, - 0.3000030093880089, - 0.30000285383638314, - 0.3000027063438229, - 0.3000025664809547, - 0.30000243384872016, - 0.3000023080716897, - 0.3000021943312956, - 0.30000208708925485, - 0.30000198151397484, - 0.3000018799572269, - 0.3000017831169816, - 0.3000016910845425, - 0.3000016037353925, - 0.3000015208733547, - 0.3000014422835043, - 0.3000013677513369, - 0.3000012970694809, - 0.3000012300398175, - 0.3000011664739271, - 0.3000011061929252, - 0.3000010490271005, - 0.30000099481548137, - 0.3000009434054069, - 0.3000008946521013, - 0.3000008484182684, - 0.3000008045737075, - 0.3000007629949461, - 0.30000072356489194, - 0.3000006861725041, - 0.30000065071248033, - 0.3000006170849593, - 0.3000005851952418, - 0.3000005549535208, - 0.30000052627463164, - 0.3000004990778101, - 0.30000047328646623, - 0.30000044882796706, - 0.3000004256334349, - 0.3000004036375496, - 0.30000038277836744, - 0.3000003629971464, - 0.3000003442381793, - 0.3000003264486381, - 0.30000030957842444, - 0.3000002935800304, - 0.3000002784084009, - 0.3000002640208105, - 0.3000002503767428, - 0.30000023743777315, - 0.30000022516746355, - 0.30000021353125844, - 0.3000002024963898, - 0.3000001920317812, - 0.3000001821079627, - 0.30000017269698714, - 0.30000016377235184, - 0.3000001553089233, - 0.3000001472828684, - 0.3000001396715842, - 0.30000013245363594, - 0.3000001256086963, - 0.30000011911748997, - 0.30000011296173634, - 0.3000001071240993, - 0.3000001015881399, - 0.300000096338268, - 0.3000000913596987, - 0.30000008663841154, - 0.3000000821611117, - 0.3000000779151896, - 0.30000007388868805, - 0.3000000700702682, - 0.300000066449177, - 0.3000000630152161, - 0.3000000597587157, - 0.30000005667050433, - 0.30000005374188626, - 0.3000000509646128, - 0.3000000483308635, - 0.3000000458332208, - 0.300000043464651, - 0.3000000412184852, - 0.3000000390883956, - 0.300000037068386, - 0.3000000351527661, - 0.3000000333361408, - 0.3000000316133959, - 0.30000002997967906, - 0.3000000284303893, - 0.30000002696116385, - 0.3000000255678648, - 0.30000002424656913, - 0.3000000229935545, - 0.3000000218052937, - 0.3000000206784396, - 0.3000000196098198, - 0.30000001859642306, - 0.30000001763539685, - 0.3000000167240349, - 0.3000000158597701, - 0.3000000150401687, - 0.3000000142629233, - 0.3000000135258437, - 0.3000000128268551, - 0.3000000121639883, - 0.3000000115353778, - 0.3000000109392523, - 0.3000000103739339, - 0.3000000098378308, - 0.30000000932943083, - 0.3000000088473043, - 0.3000000083900933, - 0.30000000795651, - 0.3000000075453332, - 0.3000000071554058, - 0.3000000067856286, - 0.3000000064349609, - 0.3000000061024147, - 0.3000000057870543, - 0.3000000054879909, - 0.3000000052043824, - 0.30000000493543005, - 0.3000000046803766, - 0.3000000044385045, - 0.3000000042091314, - 0.3000000039916122, - 0.3000000037853332, - 0.3000000035897151, - 0.3000000034042057, - 0.300000003228283, - 0.3000000030614517, - 0.300000002903242, - 0.3000000027532084, - 0.3000000026109282, - 0.3000000024760007, - 0.3000000023480454, - 0.30000000222670337, - 0.3000000021116315, - 0.3000000020025068, - 0.3000000018990212, - 0.3000000018008835, - 0.30000000170781754, - 0.3000000016195611, - 0.3000000015358651, - 0.30000000145649464, - 0.300000001381226, - 0.3000000013098469, - 0.3000000012421565, - 0.3000000011779644, - 0.3000000011170895, - 0.3000000010593603, - 0.3000000010046148, - 0.3000000009526981, - 0.30000000090346457, - 0.30000000085677553, - 0.3000000008124993, - 0.300000000770511, - 0.30000000073069233, - 0.30000000069293176, - 0.30000000065712223, - 0.30000000062316345, - 0.30000000059095977, - 0.3000000005604199, - 0.3000000005314587, - 0.30000000050399395, - 0.3000000004779485, - 0.30000000045324904, - 0.3000000004298262, - 0.3000000004076133, - 0.3000000003865489, - 0.3000000003665728, - 0.3000000003476292, - 0.30000000032966434, - 0.300000000312628, - 0.3000000002964719, - 0.30000000028115104, - 0.300000000266622, - 0.30000000025284324, - 0.30000000023977674, - 0.3000000002273856, - 0.3000000002156348, - 0.30000000020449114, - 0.3000000001939233, - 0.30000000018390177, - 0.30000000017439804, - 0.3000000001653856, - 0.3000000001568387, - 0.3000000001487335, - 0.30000000014104744, - 0.30000000013375816, - 0.30000000012684586, - 0.3000000001202907, - 0.3000000001140745, - 0.3000000001081793, - 0.3000000001025889, - 0.3000000000972872, - 0.3000000000922595, - 0.3000000000874918, - 0.3000000000829702, - 0.3000000000786829, - 0.3000000000746163, - 0.3000000000707606, - 0.3000000000671037, - 0.3000000000636358, - 0.3000000000603473, - 0.3000000000572284, - 0.3000000000542712, - 0.3000000000514663, - 0.3000000000488068, - 0.3000000000462843, - 0.3000000000438929, - 0.3000000000416242, - 0.30000000003947314, - 0.3000000000374331, - 0.3000000000354992, - 0.3000000000336642, - 0.3000000000319251, - 0.3000000000302753, - 0.3000000000287109, - 0.30000000002722704, - 0.30000000002581945, - 0.3000000000244857, - 0.3000000000232196, - 0.30000000002202065, - 0.300000000020883, - 0.30000000001980365, - 0.3000000000187804, - 0.3000000000178099, - 0.3000000000168891, - 0.3000000000160156, - 0.3000000000151893, - 0.3000000000144024, - 0.30000000001366023, - 0.29999345804900635, - 0.2999894892178945, - 0.2999884195844586, - 0.2999884202659731, - 0.2999887974563509, - 0.2999892947794547, - 0.29998981816153364, - 0.2999903336705093, - 0.2999908296294664, - 0.2999913025682838, - 0.2999917520159585, - 0.2999921785715492, - 0.2999925831909317, - 0.29999296692435096, - 0.29999333082105, - 0.2999936758957659, - 0.29999400311806595, - 0.29999431341007143, - 0.2999946076472009, - 0.29999488665994944, - 0.2999951512359808, - 0.29999540212225256, - 0.2999956400270944, - 0.2999958656221908, - 0.2999960795444753, - 0.2999906523585177, - 0.2999240638898945, - 0.2998918989030425, - 0.29987717682365805, - 0.29986888839300857, - 0.29986258227096513, - 0.2998565872923754, - 0.2998508458592539, - 0.29985044219068946, - 0.2998550920312342, - 0.2998614473631381, - 0.29986819728543723, - 0.2998748664894993, - 0.2998812901309705, - 0.29988741812399106, - 0.2998932424467177, - 0.29989877015907634, - 0.2999040134049789, - 0.29990898572424346, - 0.2999137007077126, - 0.2999181715217405, - 0.2999224107544779, - 0.2999264303805325, - 0.2999302417684939, - 0.2999338557033149, - 0.2999372824131987, - 0.29994053159719397, - 0.2999436124521499, - 0.2999465336985596, - 0.2999493036051756, - 0.2999519300123864, - 0.29995442035440417, - 0.29995678168030104, - 0.2999590206739613, - 0.29996114367300125, - 0.2999631566867056, - 0.2999650654130389, - 0.2999668752547746, - 0.29996859133478604, - 0.2999496615037788, - 0.2999328685898434, - 0.29992900011424184, - 0.2999299486436551, - 0.2999325639958056, - 0.2999356812708576, - 0.2999388738161312, - 0.299941988905488, - 0.29994497526840563, - 0.2999478190385373, - 0.299950519975539, - 0.2999530826462139, - 0.29995551316181523, - 0.2999578179785578, - 0.2999600034639101, - 0.2999620757467206, - 0.2999640406722003, - 0.2999659037953053, - 0.2999676703878578, - 0.2999693454502748, - 0.299970933724536, - 0.2999724397071703, - 0.2999738676618208, - 0.2999752216312564, - 0.2999765054487937, - 0.29997772274914125, - 0.2999788769786907, - 0.29997997140526617, - 0.29998100912738057, - 0.2999819930830084, - 0.29998292605789945, - 0.2999838106934685, - 0.29998464949427456, - 0.2999854448351101, - 0.29998619896772344, - 0.29998691402719674, - 0.2999875920379889, - 0.2999882349196663, - 0.29998884449234026, - 0.2999894224818173 - ] - }, - { - "name": "demand", - "opacity": 0.5, - "type": "scatter", - "x": [ - 4.989999999999939, - 9.989999999999831, - 14.989999999999723, - 19.990000000000325, - 24.99000000000111, - 29.99000000000189, - 34.990000000001615, - 39.99000000000061, - 44.98999999999962, - 49.989999999998616, - 54.989999999997636, - 59.98999999999664, - 64.98999999999634, - 69.9899999999989, - 74.99000000000144, - 79.99000000000402, - 84.99000000000656, - 89.99000000000912, - 94.99000000001169, - 99.99000000001423, - 104.9900000000168, - 109.99000000001936, - 114.99000000002192, - 119.9900000000245, - 124.99000000002705, - 129.99000000002675, - 134.9900000000222, - 139.99000000001766, - 144.99000000001308, - 149.99000000000856, - 154.99000000000402, - 159.98999999999947, - 164.9899999999949, - 169.98999999999037, - 174.98999999998586, - 179.98999999998128, - 184.98999999997676, - 189.98999999997216, - 194.9899999999676, - 199.98999999996312, - 204.98999999995854, - 209.989999999954, - 214.98999999994945, - 219.98999999994493, - 224.98999999994038, - 229.9899999999358, - 234.98999999993129, - 239.98999999992668, - 244.98999999992213, - 249.98999999991761, - 254.9899999999131, - 259.98999999990855, - 264.989999999904, - 269.98999999989945, - 274.9899999998949, - 279.9899999998904, - 284.9899999998858, - 289.98999999988126, - 294.98999999987666, - 299.98999999987217, - 304.9899999998676, - 309.98999999986313, - 314.9899999998585, - 319.98999999985404, - 324.98999999984943, - 329.9899999998449, - 334.9899999998404, - 339.9899999998358, - 344.98999999983124, - 349.98999999982664, - 354.98999999982215, - 359.98999999981766, - 364.9899999998131, - 369.9899999998085, - 374.989999999804, - 379.98999999979935, - 384.98999999979486, - 389.98999999979037, - 394.98999999978577, - 399.98999999978116, - 404.9899999997768, - 409.9899999997721, - 414.98999999976763, - 419.98999999976303, - 424.98999999975854, - 429.98999999975393, - 434.9899999997494, - 439.9899999997448, - 444.9899999997403, - 449.98999999973574, - 454.9899999997312, - 459.98999999972665, - 464.98999999972216, - 469.9899999997176, - 474.989999999713, - 479.98999999970846, - 484.9899999997039, - 489.9899999996994, - 494.9899999996948, - 499.9899999996903, - 504.98999999968566, - 509.9899999996812, - 514.9899999996767, - 519.9899999996721, - 524.9899999996676, - 529.989999999663, - 534.9899999996585, - 539.9899999996541, - 544.9899999996494, - 549.9899999996449, - 554.9899999996403, - 559.9899999996359, - 564.9899999996313, - 569.9899999996268, - 574.9899999996221, - 579.9899999996176, - 584.989999999613, - 589.9899999996086, - 594.9899999996039, - 599.9899999995994, - 604.9899999995947, - 609.9899999995903, - 614.9899999995857, - 619.9899999995812, - 624.9899999995766, - 629.9899999995721, - 634.9899999995675, - 639.989999999563, - 644.9899999995584, - 649.9899999995539, - 654.9899999995494, - 659.9899999995448, - 664.9899999995403, - 669.9899999995357, - 674.9899999995313, - 679.9899999995266, - 684.9899999995221, - 689.9899999995175, - 694.989999999513, - 699.9899999995083, - 704.989999999504, - 709.9899999994992, - 714.9899999994948, - 719.9899999994902, - 724.9899999994858, - 729.9899999994813, - 734.9899999994766, - 739.989999999472, - 744.9899999994675, - 749.9899999994631, - 754.9899999994583, - 759.9899999994539, - 764.9899999994493, - 769.9899999994448, - 774.9899999994403, - 779.9899999994358, - 784.9899999994311, - 789.9899999994266, - 794.989999999422, - 799.9899999994176, - 804.9899999994128, - 809.9899999994084, - 814.9899999994037, - 819.9899999993993, - 824.9899999993947, - 829.9899999993903, - 834.9899999993856, - 839.9899999993811, - 844.9899999993767, - 849.989999999372, - 854.9899999993676, - 859.9899999993629, - 864.9899999993584, - 869.9899999993538, - 874.9899999993493, - 879.9899999993448, - 884.9899999993402, - 889.9899999993356, - 894.9899999993311, - 899.9899999993265, - 904.9899999993221, - 909.9899999993173, - 914.9899999993128, - 919.9899999993083, - 924.9899999993038, - 929.9899999992994, - 934.9899999992947, - 939.98999999929, - 944.9899999992856, - 949.989999999281, - 954.9899999992764, - 959.989999999272, - 964.9899999992674, - 969.9899999992627, - 974.9899999992584, - 979.9899999992537, - 984.9899999992492, - 989.9899999992447, - 994.98999999924, - 999.9899999992357, - 1004.9899999992309, - 1009.9899999992264, - 1014.9899999992219, - 1019.9899999992174, - 1024.9899999992128, - 1029.9899999992083, - 1034.9899999992037, - 1039.9899999991992, - 1044.9899999991949, - 1049.98999999919, - 1054.9899999991856, - 1059.989999999181, - 1064.9899999991762, - 1069.9899999991721, - 1074.9899999991674, - 1079.9899999991628, - 1084.9899999991583, - 1089.9899999991535, - 1094.9899999991494, - 1099.9899999991446, - 1104.98999999914, - 1109.9899999991355, - 1114.989999999131, - 1119.9899999991264, - 1124.9899999991221, - 1129.9899999991173, - 1134.9899999991128, - 1139.9899999991082, - 1144.9899999991035, - 1149.9899999990994, - 1154.9899999990946, - 1159.98999999909, - 1164.9899999990855, - 1169.989999999081, - 1174.9899999990766, - 1179.9899999990719, - 1184.9899999990673, - 1189.9899999990628, - 1194.9899999990582, - 1199.9899999990535, - 1204.9899999990491, - 1209.9899999990446, - 1214.98999999904, - 1219.9899999990355, - 1224.9899999990312, - 1229.9899999990264, - 1234.9899999990218, - 1239.989999999017, - 1244.9899999990128, - 1249.9899999990082, - 1254.9899999990034, - 1259.989999998999, - 1264.9899999989943, - 1269.98999999899, - 1274.9899999989855, - 1279.989999998981, - 1284.9899999989764, - 1289.9899999989716, - 1294.9899999989673, - 1299.9899999989627, - 1304.9899999989582, - 1309.9899999989536, - 1314.989999998949, - 1319.9899999989445, - 1324.98999999894, - 1329.9899999989354, - 1334.989999998931, - 1339.9899999989266, - 1344.9899999989218, - 1349.9899999989173, - 1354.9899999989127, - 1359.9899999989082, - 1364.9899999989036, - 1369.9899999988988, - 1374.9899999988943, - 1379.98999999889, - 1384.9899999988854, - 1389.9899999988806, - 1394.9899999988766, - 1399.9899999988718, - 1404.9899999988672, - 1409.9899999988627, - 1414.9899999988581, - 1419.9899999988534, - 1424.9899999988488, - 1429.9899999988445, - 1434.98999999884, - 1439.9899999988354, - 1444.9899999988309, - 1449.9899999988265, - 1454.9899999988218, - 1459.9899999988172, - 1464.989999998813, - 1469.989999998808, - 1474.9899999988033, - 1479.989999998799, - 1484.9899999987945, - 1489.98999999879, - 1494.9899999987854, - 1499.9899999987808, - 1504.9899999987765, - 1509.9899999987713, - 1514.9899999987674, - 1519.9899999987624, - 1524.9899999987579, - 1529.9899999987533, - 1534.989999998749, - 1539.9899999987445, - 1544.98999999874, - 1549.9899999987354, - 1554.9899999987308, - 1559.9899999987265, - 1564.9899999987217, - 1569.9899999987174, - 1574.9899999987124, - 1579.9899999987078, - 1584.9899999987035, - 1589.989999998699, - 1594.9899999986944, - 1599.9899999986899, - 1604.9899999986853, - 1609.9899999986808, - 1614.9899999986762, - 1619.9899999986715, - 1624.9899999986674, - 1629.9899999986624, - 1634.989999998658, - 1639.9899999986535, - 1644.989999998649, - 1649.9899999986444, - 1654.98999999864, - 1659.9899999986353, - 1664.9899999986308, - 1669.989999998626, - 1674.9899999986214, - 1679.9899999986173, - 1684.9899999986123, - 1689.989999998608, - 1694.9899999986035, - 1699.989999998599, - 1704.9899999985944, - 1709.9899999985898, - 1714.9899999985853, - 1719.9899999985805, - 1724.9899999985764, - 1729.9899999985714, - 1734.9899999985669, - 1739.9899999985626, - 1744.989999998558, - 1749.9899999985535, - 1754.989999998549, - 1759.9899999985446, - 1764.9899999985398, - 1769.9899999985353, - 1774.989999998531, - 1779.9899999985264, - 1784.9899999985214, - 1789.989999998517, - 1794.9899999985125, - 1799.989999998508, - 1804.9899999985034, - 1809.9899999984991, - 1814.9899999984946, - 1819.9899999984893, - 1824.9899999984848, - 1829.989999998481, - 1834.989999998476, - 1839.989999998472, - 1844.989999998467, - 1849.9899999984625, - 1854.989999998458, - 1859.9899999984534, - 1864.9899999984489, - 1869.9899999984445, - 1874.98999999844, - 1879.9899999984355, - 1884.9899999984307, - 1889.989999998426, - 1894.9899999984216, - 1899.989999998417, - 1904.9899999984125, - 1909.989999998408, - 1914.9899999984036, - 1919.9899999983988, - 1924.9899999983945, - 1929.9899999983895, - 1934.9899999983847, - 1939.9899999983807, - 1944.9899999983759, - 1949.9899999983718, - 1954.989999998367, - 1959.9899999983625, - 1964.989999998358, - 1969.9899999983534, - 1974.9899999983486, - 1979.9899999983445, - 1984.9899999983402, - 1989.9899999983352, - 1994.9899999983304, - 1999.989999998326, - 2004.9899999983213, - 2009.989999998317, - 2014.9899999983124, - 2019.9899999983081, - 2024.9899999983036, - 2029.9899999982986, - 2034.9899999982945, - 2039.9899999982895, - 2044.9899999982847, - 2049.9899999983263, - 2054.989999998435, - 2059.989999998544, - 2064.9899999986533, - 2069.9899999987624, - 2074.989999998872, - 2079.9899999989807, - 2084.98999999909, - 2089.989999999199, - 2094.9899999993077, - 2099.9899999994173, - 2104.9899999995264, - 2109.9899999996355, - 2114.9899999997447, - 2119.9899999998543, - 2124.989999999963, - 2129.990000000072, - 2134.9900000001808, - 2139.9900000002904, - 2144.9900000003995, - 2149.9900000005086, - 2154.990000000618, - 2159.990000000727, - 2164.990000000836, - 2169.990000000945, - 2174.9900000010543, - 2179.9900000011635, - 2184.990000001273, - 2189.9900000013813, - 2194.990000001491, - 2199.9900000016, - 2204.990000001709, - 2209.9900000018183, - 2214.9900000019275, - 2219.9900000020366, - 2224.9900000021453, - 2229.990000002255, - 2234.990000002364, - 2239.990000002473, - 2244.9900000025823, - 2249.9900000026914, - 2254.990000002801, - 2259.9900000029097, - 2264.9900000030193, - 2269.990000003128, - 2274.990000003237, - 2279.9900000033467, - 2284.9900000034554, - 2289.9900000035645, - 2294.9900000036732, - 2299.990000003783, - 2304.990000003892, - 2309.9900000040006, - 2314.9900000041102, - 2319.9900000042194, - 2324.9900000043285, - 2329.9900000044377, - 2334.9900000045473, - 2339.990000004656, - 2344.990000004765, - 2349.9900000048738, - 2354.9900000049834, - 2359.9900000050925, - 2364.9900000052016, - 2369.990000005311, - 2374.99000000542, - 2379.990000005529, - 2384.990000005638, - 2389.9900000057473, - 2394.9900000058565, - 2399.9900000059656, - 2404.990000006075, - 2409.990000006184, - 2414.990000006293, - 2419.990000006402, - 2424.9900000065113, - 2429.9900000066204, - 2434.9900000067296, - 2439.990000006839, - 2444.990000006948, - 2449.990000007057, - 2454.990000007166, - 2459.9900000072753, - 2464.9900000073844, - 2469.9900000074936, - 2474.990000007603, - 2479.9900000077123, - 2484.990000007821, - 2489.99000000793, - 2494.9900000080397, - 2499.9900000081484, - 2504.990000008257, - 2509.990000008367, - 2514.990000008476, - 2519.990000008585, - 2524.9900000086936, - 2529.9900000088032, - 2534.9900000089124, - 2539.990000009021, - 2544.9900000091307, - 2549.99000000924, - 2554.990000009349, - 2559.990000009458, - 2564.9900000095668, - 2569.9900000096764, - 2574.990000009785, - 2579.9900000098946, - 2584.9900000100038, - 2589.990000010113, - 2594.990000010222, - 2599.990000010331, - 2604.9900000104403, - 2609.990000010549, - 2614.9900000106586, - 2619.990000010768, - 2624.990000010877, - 2629.990000010986, - 2634.990000011095, - 2639.9900000112043, - 2644.990000011313, - 2649.9900000114226, - 2654.990000011532, - 2659.990000011641, - 2664.99000001175, - 2669.990000011859, - 2674.9900000119683, - 2679.990000012077, - 2684.9900000121866, - 2689.990000012296, - 2694.9900000124053, - 2699.990000012514, - 2704.990000012623, - 2709.9900000127327, - 2714.990000012841, - 2719.9900000129505, - 2724.99000001306, - 2729.990000013169, - 2734.990000013278, - 2739.990000013387, - 2744.9900000134962, - 2749.990000013605, - 2754.9900000137145, - 2759.9900000138236, - 2764.9900000139332, - 2769.990000014042, - 2774.990000014151, - 2779.99000001426, - 2784.990000014369, - 2789.990000014479, - 2794.990000014588, - 2799.990000014697, - 2804.990000014806, - 2809.990000014915, - 2814.9900000150237, - 2819.990000015133, - 2824.9900000152425, - 2829.990000015352, - 2834.9900000154607, - 2839.99000001557, - 2844.9900000156786, - 2849.990000015788, - 2854.9900000158973, - 2859.9900000160064, - 2864.9900000161156, - 2869.990000016225, - 2874.9900000163343, - 2879.990000016443, - 2884.990000016552, - 2889.990000016661, - 2894.9900000167704, - 2899.990000016879, - 2904.990000016989, - 2909.990000017098, - 2914.990000017207, - 2919.990000017316, - 2924.990000017425, - 2929.990000017535, - 2934.9900000176435, - 2939.990000017753, - 2944.990000017862, - 2949.9900000179714, - 2954.9900000180796, - 2959.990000018189, - 2964.9900000182984, - 2969.9900000184075, - 2974.9900000185166, - 2979.9900000186262, - 2984.990000018735, - 2989.990000018844, - 2994.990000018953, - 2999.9900000190623, - 3004.990000019172, - 3009.990000019281, - 3014.9900000193898, - 3019.990000019499, - 3024.990000019608, - 3029.9900000197167, - 3034.9900000198268, - 3039.9900000199355, - 3044.990000020045, - 3049.9900000201533, - 3054.990000020263, - 3059.9900000203716, - 3064.990000020481, - 3069.9900000205903, - 3074.9900000206994, - 3079.9900000208086, - 3084.9900000209173, - 3089.9900000210273, - 3094.990000021136, - 3099.990000021245, - 3104.9900000213543, - 3109.9900000214634, - 3114.990000021572, - 3119.9900000216817, - 3124.990000021791, - 3129.9900000219, - 3134.990000022009, - 3139.9900000221187, - 3144.990000022228, - 3149.9900000223365, - 3154.9900000224457, - 3159.990000022555, - 3164.9900000226644, - 3169.9900000227726, - 3174.990000022882, - 3179.9900000229914, - 3184.9900000231005, - 3189.990000023209, - 3194.990000023319, - 3199.990000023428, - 3204.990000023537, - 3209.990000023646, - 3214.9900000237553, - 3219.990000023865, - 3224.9900000239736, - 3229.990000024083, - 3234.990000024192, - 3239.990000024301, - 3244.9900000244106, - 3249.9900000245198, - 3254.9900000246284, - 3259.9900000247376, - 3264.9900000248467, - 3269.990000024956, - 3274.9900000250645, - 3279.990000025174, - 3284.9900000252833, - 3289.9900000253924, - 3294.9900000255016, - 3299.990000025611, - 3304.9900000257203, - 3309.990000025829, - 3314.990000025938, - 3319.9900000260473, - 3324.9900000261564, - 3329.990000026265, - 3334.990000026375, - 3339.990000026484, - 3344.990000026593, - 3349.990000026702, - 3354.990000026811, - 3359.990000026921, - 3364.9900000270286, - 3369.9900000271386, - 3374.990000027248, - 3379.9900000273574, - 3384.9900000274656, - 3389.990000027575, - 3394.9900000276843, - 3399.990000027793, - 3404.990000027902, - 3409.990000028012, - 3414.990000028121, - 3419.99000002823, - 3424.990000028339, - 3429.9900000284483, - 3434.990000028557, - 3439.9900000286666, - 3444.990000028776, - 3449.990000028885, - 3454.990000028994, - 3459.9900000291027, - 3464.9900000292128, - 3469.9900000293214, - 3474.9900000294306, - 3479.9900000295397, - 3484.990000029649, - 3489.9900000297584, - 3494.990000029867, - 3499.9900000299763, - 3504.990000030085, - 3509.9900000301946, - 3514.990000030304, - 3519.9900000304133, - 3524.990000030522, - 3529.990000030631, - 3534.99000003074, - 3539.990000030849, - 3544.990000030958, - 3549.990000031068, - 3554.990000031177, - 3559.990000031286, - 3564.990000031395, - 3569.9900000315038, - 3574.9900000316134, - 3579.9900000317225, - 3584.990000031832, - 3589.990000031941, - 3594.9900000320504, - 3599.9900000321586, - 3604.990000032268, - 3609.990000032377, - 3614.9900000324874, - 3619.9900000325956, - 3624.990000032705, - 3629.990000032814, - 3634.990000032923, - 3639.990000033032, - 3644.990000033141, - 3649.990000033251, - 3654.99000003336, - 3659.990000033469, - 3664.990000033578, - 3669.990000033687, - 3674.9900000337957, - 3679.990000033905, - 3684.9900000340144, - 3689.990000034124, - 3694.9900000342327, - 3699.990000034342, - 3704.9900000344514, - 3709.99000003456, - 3714.9900000346693, - 3719.990000034777, - 3724.9900000348875, - 3729.990000034997, - 3734.9900000351063, - 3739.990000035215, - 3744.990000035324, - 3749.990000035433, - 3754.9900000355424, - 3759.990000035652, - 3764.990000035761, - 3769.9900000358703, - 3774.990000035979, - 3779.990000036088, - 3784.9900000361968, - 3789.9900000363054, - 3794.990000036416, - 3799.990000036525, - 3804.990000036634, - 3809.9900000367434, - 3814.9900000368516, - 3819.990000036961, - 3824.9900000370703, - 3829.9900000371804, - 3834.9900000372886, - 3839.9900000373973, - 3844.990000037507, - 3849.990000037616, - 3854.990000037725, - 3859.9900000378334, - 3864.990000037944, - 3869.990000038053, - 3874.9900000381617, - 3879.990000038271, - 3884.9900000383795, - 3889.9900000384887, - 3894.9900000385987, - 3899.9900000387074, - 3904.990000038817, - 3909.9900000389257, - 3914.990000039035, - 3919.9900000391444, - 3924.990000039253, - 3929.9900000393613, - 3934.990000039472, - 3939.9900000395814, - 3944.990000039689, - 3949.9900000397993, - 3954.990000039908, - 3959.990000040017, - 3964.9900000401262, - 3969.990000040235, - 3974.990000040345, - 3979.9900000404537, - 3984.990000040563, - 3989.990000040672, - 3994.990000040781, - 3999.9900000408898, - 4004.9900000409993, - 4009.990000041109, - 4014.9900000412176, - 4019.9900000413268, - 4024.9900000414364, - 4029.9900000415446, - 4034.990000041654, - 4039.990000041763, - 4044.9900000418734, - 4049.990000041981, - 4054.9900000420903, - 4059.9900000422, - 4064.990000042309, - 4069.990000042418, - 4074.990000042527, - 4079.990000042637, - 4084.9900000427456, - 4089.990000042855, - 4094.990000042964, - 4099.990000043073, - 4104.990000043182, - 4109.990000043291, - 4114.9900000434, - 4119.990000043509, - 4124.990000043618, - 4129.9900000437265, - 4134.990000043837, - 4139.990000043946, - 4144.990000044055, - 4149.990000044164, - 4154.990000044273, - 4159.990000044381, - 4164.990000044491, - 4169.9900000446005, - 4174.99000004471, - 4179.990000044819, - 4184.990000044928, - 4189.990000045037, - 4194.990000045146, - 4199.990000045255, - 4204.990000045365, - 4209.9900000454745, - 4214.990000045583, - 4219.990000045692, - 4224.990000045801, - 4229.99000004591, - 4234.990000046019, - 4239.9900000461275, - 4244.990000046238, - 4249.990000046347, - 4254.990000046456, - 4259.990000046565, - 4264.990000046674, - 4269.990000046783, - 4274.990000046892, - 4279.990000047002, - 4284.990000047112, - 4289.990000047221, - 4294.990000047329, - 4299.990000047438, - 4304.990000047547, - 4309.990000047656, - 4314.9900000477655, - 4319.990000047875, - 4324.990000047984, - 4329.990000048093, - 4334.990000048202, - 4339.990000048311, - 4344.99000004842, - 4349.9900000485295, - 4354.990000048639, - 4359.990000048748, - 4364.990000048857, - 4369.990000048966, - 4374.990000049074, - 4379.990000049184, - 4384.9900000492935, - 4389.990000049403, - 4394.990000049512, - 4399.990000049621, - 4404.99000004973, - 4409.990000049839, - 4414.990000049948, - 4419.9900000500575, - 4424.9900000501675, - 4429.990000050276, - 4434.990000050385, - 4439.990000050494, - 4444.990000050603, - 4449.990000050712, - 4454.9900000508205, - 4459.990000050931, - 4464.99000005104, - 4469.990000051149, - 4474.990000051258, - 4479.990000051367, - 4484.990000051476, - 4489.990000051585, - 4494.990000051695, - 4499.990000051805, - 4504.990000051913, - 4509.990000052022, - 4514.990000052131, - 4519.99000005224, - 4524.990000052349, - 4529.990000052458, - 4534.990000052568, - 4539.990000052677, - 4544.990000052786, - 4549.990000052895, - 4554.990000053004, - 4559.990000053112, - 4564.990000053223, - 4569.990000053332, - 4574.990000053441, - 4579.99000005355, - 4584.990000053659, - 4589.990000053767, - 4594.990000053877, - 4599.9900000539865, - 4604.990000054096, - 4609.990000054205, - 4614.990000054314, - 4619.990000054423, - 4624.990000054532, - 4629.990000054641, - 4634.9900000547495, - 4639.9900000548605, - 4644.990000054969, - 4649.990000055078, - 4654.990000055187, - 4659.990000055296, - 4664.990000055405, - 4669.9900000555135, - 4674.990000055624, - 4679.990000055733, - 4684.990000055842, - 4689.990000055951, - 4694.99000005606, - 4699.990000056169, - 4704.990000056278, - 4709.9900000563875, - 4714.990000056498, - 4719.990000056606, - 4724.990000056715, - 4729.990000056824, - 4734.990000056933, - 4739.990000057042, - 4744.990000057152, - 4749.990000057261, - 4754.990000057371, - 4759.990000057479, - 4764.990000057588, - 4769.990000057697, - 4774.990000057805, - 4779.990000057916, - 4784.990000058025, - 4789.990000058134, - 4794.990000058243, - 4799.990000058352, - 4804.990000058461, - 4809.99000005857, - 4814.9900000586795, - 4819.990000058789, - 4824.990000058898, - 4829.990000059007, - 4834.990000059116, - 4839.990000059225, - 4844.990000059334, - 4849.9900000594425, - 4854.9900000595535, - 4859.990000059662, - 4864.990000059771, - 4869.99000005988, - 4874.990000059989, - 4879.990000060098, - 4884.9900000602065, - 4889.990000060317, - 4894.990000060426, - 4899.990000060535, - 4904.990000060644, - 4909.990000060753, - 4914.990000060862, - 4919.990000060971, - 4924.9900000610805, - 4929.99000006119, - 4934.990000061299, - 4939.990000061408, - 4944.990000061517, - 4949.990000061626, - 4954.990000061735, - 4959.990000061845, - 4964.990000061954, - 4969.990000062063, - 4974.990000062172, - 4979.990000062281, - 4984.99000006239, - 4989.990000062498, - 4994.990000062609, - 4999.990000062718, - 5004.990000062827, - 5009.990000062936, - 5014.990000063045, - 5019.990000063154, - 5024.990000063263, - 5029.9900000633725, - 5034.990000063482, - 5039.990000063591, - 5044.9900000637, - 5049.990000063809, - 5054.990000063918, - 5059.990000064027, - 5064.9900000641355, - 5069.9900000642465, - 5074.990000064355, - 5079.990000064464, - 5084.990000064573, - 5089.990000064682, - 5094.990000064791, - 5099.9900000648995, - 5104.9900000650105, - 5109.990000065119, - 5114.990000065228, - 5119.990000065337, - 5124.990000065446, - 5129.990000065555, - 5134.990000065664, - 5139.9900000657735, - 5144.990000065884, - 5149.990000065992, - 5154.990000066101, - 5159.99000006621, - 5164.990000066319, - 5169.990000066428, - 5174.990000066538, - 5179.990000066647, - 5184.990000066756, - 5189.990000066865, - 5194.990000066974, - 5199.990000067083, - 5204.990000067191, - 5209.990000067302, - 5214.990000067411, - 5219.99000006752, - 5224.990000067629, - 5229.990000067738, - 5234.990000067847, - 5239.990000067956, - 5244.9900000680655, - 5249.990000068175, - 5254.990000068285, - 5259.990000068393, - 5264.990000068502, - 5269.990000068611, - 5274.99000006872, - 5279.9900000688285, - 5284.9900000689395, - 5289.990000069048, - 5294.990000069157, - 5299.990000069266, - 5304.990000069375, - 5309.990000069484, - 5314.9900000695925, - 5319.990000069703, - 5324.990000069812, - 5329.990000069921, - 5334.99000007003, - 5339.990000070139, - 5344.990000070248, - 5349.990000070357, - 5354.990000070466, - 5359.990000070577, - 5364.990000070685, - 5369.990000070794, - 5374.990000070903, - 5379.990000071012, - 5384.990000071121, - 5389.990000071231, - 5394.99000007134, - 5399.990000071449, - 5404.990000071558, - 5409.990000071667, - 5414.990000071776, - 5419.990000071884, - 5424.9900000719945, - 5429.990000072104, - 5434.990000072213, - 5439.990000072322, - 5444.990000072431, - 5449.990000072539, - 5454.990000072649, - 5459.990000072758, - 5464.990000072868, - 5469.990000072978, - 5474.990000073086, - 5479.990000073195, - 5484.990000073304, - 5489.990000073413, - 5494.9900000735215, - 5499.990000073632, - 5504.990000073742, - 5509.99000007385, - 5514.990000073959, - 5519.990000074069, - 5524.990000074177, - 5529.9900000742855, - 5534.9900000743955, - 5539.990000074505, - 5544.990000074614, - 5549.990000074723, - 5554.990000074831, - 5559.990000074941, - 5564.99000007505, - 5569.9900000751595, - 5574.990000075269, - 5579.990000075379, - 5584.990000075487, - 5589.990000075596, - 5594.990000075705, - 5599.990000075814, - 5604.990000075924, - 5609.990000076033, - 5614.990000076143, - 5619.990000076251, - 5624.99000007636, - 5629.990000076468, - 5634.990000076578, - 5639.990000076688, - 5644.990000076797, - 5649.990000076906, - 5654.990000077016, - 5659.990000077124, - 5664.990000077232, - 5669.990000077342, - 5674.990000077451, - 5679.9900000775615, - 5684.990000077671, - 5689.99000007778, - 5694.990000077888, - 5699.990000077997, - 5704.990000078105, - 5709.990000078215, - 5714.9900000783255, - 5719.990000078434, - 5724.990000078543, - 5729.990000078652, - 5734.990000078761, - 5739.990000078871, - 5744.990000078979, - 5749.990000079089, - 5754.990000079198, - 5759.990000079307, - 5764.990000079417, - 5769.990000079525, - 5774.990000079634, - 5779.9900000797425, - 5784.990000079853, - 5789.990000079963, - 5794.990000080071, - 5799.990000080179, - 5804.990000080289, - 5809.990000080398, - 5814.990000080506, - 5819.9900000806165, - 5824.9900000807265, - 5829.990000080835, - 5834.990000080944, - 5839.990000081053, - 5844.990000081162, - 5849.99000008127, - 5854.9900000813805, - 5859.99000008149, - 5864.990000081599, - 5869.990000081708, - 5874.990000081816, - 5879.990000081926, - 5884.990000082035, - 5889.9900000821435, - 5894.990000082254, - 5899.990000082364, - 5904.990000082472, - 5909.990000082581, - 5914.99000008269, - 5919.990000082799, - 5924.9900000829075, - 5929.990000083018, - 5934.990000083128, - 5939.990000083236, - 5944.990000083345, - 5949.990000083455, - 5954.990000083563, - 5959.9900000836715, - 5964.9900000837815, - 5969.990000083892, - 5974.990000084, - 5979.990000084109, - 5984.990000084217, - 5989.990000084327, - 5994.990000084436, - 5999.9900000845455, - 6004.990000084655, - 6009.990000084765, - 6014.990000084873, - 6019.990000084982, - 6024.990000085091, - 6029.9900000852, - 6034.99000008531, - 6039.990000085419, - 6044.990000085529, - 6049.990000085637, - 6054.990000085746, - 6059.990000085854, - 6064.990000085964, - 6069.990000086073, - 6074.990000086183, - 6079.990000086292, - 6084.990000086402, - 6089.99000008651, - 6094.990000086618, - 6099.990000086728, - 6104.990000086837, - 6109.9900000869475, - 6114.990000087056, - 6119.990000087166, - 6124.990000087274, - 6129.990000087383, - 6134.990000087491, - 6139.990000087601, - 6144.990000087711, - 6149.99000008782, - 6154.990000087929, - 6159.990000088038, - 6164.990000088147, - 6169.990000088255, - 6174.990000088365, - 6179.9900000884745, - 6184.990000088584, - 6189.990000088693, - 6194.990000088803, - 6199.990000088911, - 6204.99000008902, - 6209.990000089128, - 6214.990000089239, - 6219.9900000893485, - 6224.990000089457, - 6229.990000089565, - 6234.990000089675, - 6239.990000089784, - 6244.990000089892, - 6249.9900000900025, - 6254.9900000901125, - 6259.990000090221, - 6264.99000009033, - 6269.990000090439, - 6274.990000090548, - 6279.990000090656, - 6284.990000090766, - 6289.9900000908765, - 6294.990000090985, - 6299.990000091094, - 6304.990000091202, - 6309.990000091312, - 6314.990000091421, - 6319.9900000915295, - 6324.99000009164, - 6329.99000009175, - 6334.990000091858, - 6339.990000091967, - 6344.990000092076, - 6349.990000092185, - 6354.9900000922935, - 6359.9900000924035, - 6364.990000092514, - 6369.990000092622, - 6374.990000092731, - 6379.990000092839, - 6384.990000092949, - 6389.9900000930575, - 6394.9900000931675, - 6399.990000093278, - 6404.990000093386, - 6409.990000093495, - 6414.990000093603, - 6419.990000093713, - 6424.990000093822, - 6429.9900000939315, - 6434.990000094041, - 6439.990000094151, - 6444.990000094259, - 6449.990000094368, - 6454.990000094477, - 6459.990000094586, - 6464.990000094696, - 6469.990000094805, - 6474.990000094915, - 6479.990000095023, - 6484.990000095132, - 6489.99000009524, - 6494.99000009535, - 6499.990000095459, - 6504.990000095569, - 6509.990000095678, - 6514.990000095788, - 6519.990000095896, - 6524.990000096004, - 6529.990000096114, - 6534.990000096223, - 6539.9900000963335, - 6544.990000096442, - 6549.990000096552, - 6554.99000009666, - 6559.990000096769, - 6564.990000096877, - 6569.990000096987, - 6574.990000097097, - 6579.990000097206, - 6584.990000097315, - 6589.990000097424, - 6594.990000097533, - 6599.990000097641, - 6604.990000097751, - 6609.990000097861, - 6614.99000009797, - 6619.990000098079, - 6624.990000098189, - 6629.990000098297, - 6634.990000098406, - 6639.990000098514, - 6644.990000098625, - 6649.9900000987345, - 6654.990000098843, - 6659.990000098951, - 6664.990000099061, - 6669.99000009917, - 6674.990000099278, - 6679.990000099388, - 6684.9900000994985, - 6689.990000099607, - 6694.990000099716, - 6699.990000099825, - 6704.990000099934, - 6709.990000100042, - 6714.990000100152, - 6719.9900001002625, - 6724.990000100371, - 6729.99000010048, - 6734.99000010059, - 6739.990000100698, - 6744.990000100807, - 6749.9900001009155, - 6754.9900001010255, - 6759.990000101136, - 6764.990000101244, - 6769.990000101353, - 6774.990000101462, - 6779.990000101571, - 6784.9900001016795, - 6789.9900001017895, - 6794.9900001019, - 6799.990000102008, - 6804.990000102117, - 6809.990000102227, - 6814.990000102335, - 6819.990000102443, - 6824.9900001025535, - 6829.9900001026635, - 6834.990000102772, - 6839.990000102881, - 6844.990000102989, - 6849.990000103099, - 6854.990000103208, - 6859.9900001033175, - 6864.990000103427, - 6869.990000103537, - 6874.990000103645, - 6879.990000103754, - 6884.990000103863, - 6889.990000103972, - 6894.9900001040805, - 6899.990000104191, - 6904.990000104301, - 6909.990000104409, - 6914.990000104518, - 6919.990000104626, - 6924.990000104736, - 6929.990000104845, - 6934.990000104955, - 6939.990000105064, - 6944.990000105174, - 6949.990000105282, - 6954.99000010539, - 6959.9900001055, - 6964.990000105609, - 6969.990000105719, - 6974.990000105828, - 6979.990000105938, - 6984.990000106046, - 6989.990000106155, - 6994.990000106263, - 6999.990000106373, - 7004.990000106482, - 7009.990000106592, - 7014.990000106701, - 7019.99000010681, - 7024.990000106919, - 7029.990000107027, - 7034.990000107137, - 7039.990000107247, - 7044.990000107356, - 7049.990000107465, - 7054.990000107575, - 7059.990000107683, - 7064.990000107792, - 7069.9900001079, - 7074.9900001080105, - 7079.9900001081205, - 7084.990000108229, - 7089.990000108337, - 7094.990000108447, - 7099.990000108556, - 7104.990000108664, - 7109.990000108774, - 7114.9900001088845, - 7119.990000108993, - 7124.990000109102, - 7129.990000109211, - 7134.99000010932, - 7139.990000109428, - 7144.990000109538, - 7149.9900001096485, - 7154.990000109757, - 7159.990000109866, - 7164.990000109976, - 7169.990000110084, - 7174.990000110193, - 7179.9900001103015, - 7184.990000110412, - 7189.990000110522, - 7194.99000011063, - 7199.990000110739, - 7204.990000110848, - 7209.990000110957, - 7214.9900001110655, - 7219.990000111175, - 7224.990000111286, - 7229.990000111394, - 7234.990000111503, - 7239.990000111613, - 7244.990000111721, - 7249.990000111829, - 7254.990000111939, - 7259.9900001120495, - 7264.990000112158, - 7269.990000112267, - 7274.990000112375, - 7279.990000112485, - 7284.990000112594, - 7289.990000112702, - 7294.990000112813, - 7299.990000112923, - 7304.990000113031, - 7309.990000113141, - 7314.990000113249, - 7319.990000113358, - 7324.9900001134665, - 7329.990000113577, - 7334.990000113687, - 7339.990000113795, - 7344.990000113904, - 7349.990000114012, - 7354.990000114122, - 7359.990000114231, - 7364.990000114341, - 7369.99000011445, - 7374.99000011456, - 7379.990000114668, - 7384.990000114776, - 7389.990000114886, - 7394.990000114995, - 7399.990000115104, - 7404.990000115214, - 7409.990000115324, - 7414.990000115432, - 7419.990000115541, - 7424.990000115649, - 7429.990000115759, - 7434.990000115869, - 7439.990000115978, - 7444.990000116087, - 7449.990000116196, - 7454.990000116305, - 7459.990000116413, - 7464.990000116523, - 7469.9900001166325, - 7474.990000116742, - 7479.990000116851, - 7484.990000116959, - 7489.990000117069, - 7494.990000117178, - 7499.990000117287, - 7504.990000117396, - 7509.9900001175065, - 7514.990000117615, - 7519.990000117725, - 7524.990000117833, - 7529.990000117942, - 7534.99000011805, - 7539.9900001181595, - 7544.9900001182705, - 7549.990000118379, - 7554.990000118488, - 7559.990000118597, - 7564.990000118706, - 7569.990000118814, - 7574.990000118924, - 7579.990000119034, - 7584.990000119143, - 7589.990000119252, - 7594.990000119362, - 7599.99000011947, - 7604.990000119579, - 7609.9900001196875, - 7614.9900001197975, - 7619.990000119908, - 7624.990000120016, - 7629.990000120125, - 7634.990000120234, - 7639.990000120343, - 7644.990000120451, - 7649.9900001205615, - 7654.9900001206715, - 7659.99000012078, - 7664.990000120889, - 7669.990000120999, - 7674.990000121107, - 7679.990000121215, - 7684.990000121325, - 7689.9900001214355, - 7694.990000121544, - 7699.990000121653, - 7704.990000121761, - 7709.990000121871, - 7714.99000012198, - 7719.9900001220885, - 7724.990000122199, - 7729.990000122309, - 7734.990000122417, - 7739.990000122526, - 7744.990000122635, - 7749.990000122744, - 7754.9900001228525, - 7759.990000122963, - 7764.990000123073, - 7769.990000123181, - 7774.990000123291, - 7779.990000123398, - 7784.990000123508, - 7789.990000123617, - 7794.990000123726, - 7799.990000123836, - 7804.990000123946, - 7809.990000124054, - 7814.990000124162, - 7819.990000124272, - 7824.990000124381, - 7829.99000012449, - 7834.9900001246, - 7839.99000012471, - 7844.990000124818, - 7849.990000124927, - 7854.990000125035, - 7859.990000125145, - 7864.990000125254, - 7869.990000125364, - 7874.990000125473, - 7879.990000125582, - 7884.990000125691, - 7889.990000125799, - 7894.990000125909, - 7899.9900001260185, - 7904.990000126128, - 7909.990000126237, - 7914.990000126347, - 7919.990000126455, - 7924.990000126564, - 7929.990000126673, - 7934.990000126782, - 7939.9900001268925, - 7944.990000127001, - 7949.990000127109, - 7954.990000127219, - 7959.990000127328, - 7964.990000127436, - 7969.990000127546, - 7974.9900001276565, - 7979.990000127765, - 7984.990000127874, - 7989.990000127983, - 7994.990000128092, - 7999.9900001282, - 8004.9900001283095, - 8009.9900001284195, - 8014.990000128529, - 8019.990000128638, - 8024.990000128748, - 8029.990000128856, - 8034.990000128965, - 8039.990000129073, - 8044.990000129182, - 8049.990000129294, - 8054.990000129402, - 8059.990000129511, - 8064.99000012962, - 8069.990000129729, - 8074.990000129837, - 8079.9900001299475, - 8084.9900001300575, - 8089.990000130166, - 8094.990000130275, - 8099.990000130385, - 8104.990000130493, - 8109.990000130601, - 8114.9900001307105, - 8119.9900001308215, - 8124.99000013093, - 8129.990000131039, - 8134.990000131147, - 8139.990000131257, - 8144.990000131366, - 8149.9900001314745, - 8154.990000131585, - 8159.990000131695, - 8164.990000131803, - 8169.990000131912, - 8174.990000132021, - 8179.99000013213, - 8184.9900001322385, - 8189.9900001323485, - 8194.990000132457, - 8199.990000132566, - 8204.990000132675, - 8209.990000132784, - 8214.990000132893, - 8219.990000133002, - 8224.990000133112, - 8229.99000013322, - 8234.99000013333, - 8239.990000133439, - 8244.990000133548, - 8249.990000133657, - 8254.990000133766, - 8259.990000133876, - 8264.990000133985, - 8269.990000134094, - 8274.990000134203, - 8279.990000134312, - 8284.990000134421, - 8289.99000013453, - 8294.990000134641, - 8299.990000134749, - 8304.990000134858, - 8309.990000134967, - 8314.990000135076, - 8319.990000135185, - 8324.990000135294, - 8329.990000135404, - 8334.990000135513, - 8339.990000135622, - 8344.990000135731, - 8349.990000135842, - 8354.99000013595, - 8359.990000136058, - 8364.990000136168, - 8369.990000136277, - 8374.990000136386, - 8379.990000136495, - 8384.990000136604, - 8389.990000136713, - 8394.990000136822, - 8399.990000136931, - 8404.99000013704, - 8409.99000013715, - 8414.990000137259, - 8419.990000137368, - 8424.990000137477, - 8429.990000137586, - 8434.990000137695, - 8439.990000137805, - 8444.990000137914, - 8449.990000138023, - 8454.990000138132, - 8459.990000138241, - 8464.99000013835, - 8469.99000013846, - 8474.990000138569, - 8479.990000138678, - 8484.990000138787, - 8489.990000138896, - 8494.990000139005, - 8499.990000139114, - 8504.990000139222, - 8509.990000139334, - 8514.990000139442, - 8519.990000139549, - 8524.99000013966, - 8529.990000139771, - 8534.990000139878, - 8539.990000139987, - 8544.990000140097, - 8549.990000140206, - 8554.990000140315, - 8559.990000140424, - 8564.990000140533, - 8569.990000140642, - 8574.990000140751, - 8579.990000140859, - 8584.99000014097, - 8589.990000141079, - 8594.990000141188, - 8599.990000141297, - 8604.990000141406, - 8609.990000141515, - 8614.990000141623, - 8619.990000141734, - 8624.990000141843, - 8629.990000141952, - 8634.990000142061, - 8639.99000014217, - 8644.990000142281, - 8649.990000142388, - 8654.990000142498, - 8659.990000142607, - 8664.990000142716, - 8669.990000142825, - 8674.990000142934, - 8679.990000143043, - 8684.990000143152, - 8689.990000143262, - 8694.99000014337, - 8699.99000014348, - 8704.990000143589, - 8709.990000143698, - 8714.990000143807, - 8719.990000143916, - 8724.990000144026, - 8729.990000144135, - 8734.990000144244, - 8739.990000144353, - 8744.990000144462, - 8749.990000144571, - 8754.99000014468, - 8759.99000014479, - 8764.990000144899, - 8769.990000145008, - 8774.990000145117, - 8779.990000145226, - 8784.990000145335, - 8789.990000145444, - 8794.990000145553, - 8799.990000145663, - 8804.990000145772, - 8809.990000145881, - 8814.990000145992, - 8819.9900001461, - 8824.990000146208, - 8829.990000146317, - 8834.990000146427, - 8839.990000146536, - 8844.990000146645, - 8849.990000146754, - 8854.990000146863, - 8859.990000146972, - 8864.990000147081, - 8869.99000014719, - 8874.9900001473, - 8879.990000147409, - 8884.990000147518, - 8889.990000147627, - 8894.990000147736, - 8899.990000147845, - 8904.990000147955, - 8909.990000148064, - 8914.990000148173, - 8919.990000148282, - 8924.990000148391, - 8929.9900001485, - 8934.99000014861, - 8939.99000014872, - 8944.990000148828, - 8949.990000148937, - 8954.990000149046, - 8959.990000149155, - 8964.990000149264, - 8969.990000149373, - 8974.990000149483, - 8979.990000149592, - 8984.990000149699, - 8989.99000014981, - 8994.990000149919, - 8999.990000150028, - 9004.990000150137, - 9009.990000150246, - 9014.990000150356, - 9019.990000150465, - 9024.990000150574, - 9029.990000150683, - 9034.990000150792, - 9039.9900001509, - 9044.990000151009, - 9049.990000151121, - 9054.990000151229, - 9059.990000151338, - 9064.990000151447, - 9069.990000151556, - 9074.990000151663, - 9079.990000151774, - 9084.990000151884, - 9089.990000151993, - 9094.990000152102, - 9099.990000152213, - 9104.99000015232, - 9109.99000015243, - 9114.990000152538, - 9119.990000152648, - 9124.990000152757, - 9129.990000152866, - 9134.990000152977, - 9139.990000153084, - 9144.990000153191, - 9149.990000153302, - 9154.990000153412, - 9159.99000015352, - 9164.99000015363, - 9169.99000015374, - 9174.990000153848, - 9179.990000153955, - 9184.990000154066, - 9189.990000154176, - 9194.990000154283, - 9199.990000154394, - 9204.990000154505, - 9209.990000154612, - 9214.990000154721, - 9219.990000154829, - 9224.99000015494, - 9229.990000155047, - 9234.990000155158, - 9239.990000155269, - 9244.990000155376, - 9249.990000155483, - 9254.990000155594, - 9259.990000155703, - 9264.990000155813, - 9269.990000155922, - 9274.99000015603, - 9279.99000015614, - 9284.99000015625, - 9289.990000156358, - 9294.99000015647, - 9299.990000156577, - 9304.990000156686, - 9309.990000156795, - 9314.990000156904, - 9319.990000157011, - 9324.990000157122, - 9329.990000157231, - 9334.99000015734, - 9339.99000015745, - 9344.99000015756, - 9349.990000157668, - 9354.990000157775, - 9359.990000157886, - 9364.990000157995, - 9369.990000158105, - 9374.990000158214, - 9379.990000158325, - 9384.990000158432, - 9389.99000015854, - 9394.99000015865, - 9399.99000015876, - 9404.990000158868, - 9409.990000158978, - 9414.990000159089, - 9419.990000159196, - 9424.990000159305, - 9429.990000159414, - 9434.990000159523, - 9439.990000159632, - 9444.990000159742, - 9449.99000015985, - 9454.99000015996, - 9459.990000160069, - 9464.990000160178, - 9469.990000160287, - 9474.990000160395, - 9479.990000160507, - 9484.990000160617, - 9489.990000160724, - 9494.990000160833, - 9499.990000160942, - 9504.990000161053, - 9509.99000016116, - 9514.990000161271, - 9519.990000161379, - 9524.990000161488, - 9529.990000161595, - 9534.990000161706, - 9539.990000161817, - 9544.990000161924, - 9549.990000162034, - 9554.990000162143, - 9559.990000162252, - 9564.99000016236, - 9569.99000016247, - 9574.99000016258, - 9579.990000162688, - 9584.990000162798, - 9589.990000162908, - 9594.990000163016, - 9599.990000163123, - 9604.990000163234, - 9609.990000163343, - 9614.990000163452, - 9619.99000016356, - 9624.99000016367, - 9629.99000016378, - 9634.990000163887, - 9639.990000163998, - 9644.990000164107, - 9649.990000164216, - 9654.990000164324, - 9659.990000164436, - 9664.990000164544, - 9669.990000164653, - 9674.990000164762, - 9679.990000164871, - 9684.990000164978, - 9689.99000016509, - 9694.9900001652, - 9699.990000165308, - 9704.990000165417, - 9709.990000165526, - 9714.990000165635, - 9719.990000165744, - 9724.990000165852, - 9729.990000165964, - 9734.990000166072, - 9739.990000166179, - 9744.99000016629, - 9749.990000166401, - 9754.990000166508, - 9759.990000166616, - 9764.990000166728, - 9769.990000166836, - 9774.990000166945, - 9779.990000167054, - 9784.990000167165, - 9789.990000167272, - 9794.99000016738, - 9799.99000016749, - 9804.9900001676, - 9809.990000167707, - 9814.990000167818, - 9819.990000167929, - 9824.990000168036, - 9829.990000168145, - 9834.990000168254, - 9839.990000168364, - 9844.990000168471, - 9849.990000168582, - 9854.990000168691, - 9859.9900001688, - 9864.99000016891, - 9869.990000169018, - 9874.990000169128, - 9879.990000169237, - 9884.990000169346, - 9889.990000169455, - 9894.990000169564, - 9899.990000169671, - 9904.99000016978, - 9909.990000169893, - 9914.99000017, - 9919.99000017011, - 9924.990000170219, - 9929.990000170328, - 9934.990000170435, - 9939.990000170546, - 9944.990000170656, - 9949.990000170765, - 9954.990000170874, - 9959.990000170985, - 9964.990000171092, - 9969.9900001712, - 9974.99000017131, - 9979.990000171421, - 9984.990000171529, - 9989.990000171638, - 9994.990000171749, - 9999.990000171856, - 10004.990000171963, - 10009.990000172074, - 10014.990000172183, - 10019.990000172293, - 10024.990000172402, - 10029.990000172513, - 10034.99000017262, - 10039.99000017273, - 10044.990000172838, - 10049.990000172947, - 10054.990000173055, - 10059.990000173166, - 10064.990000173277, - 10069.990000173384, - 10074.990000173493, - 10079.990000173602, - 10084.990000173711, - 10089.99000017382, - 10094.99000017393, - 10099.99000017404, - 10104.990000174148, - 10109.990000174257, - 10114.990000174366, - 10119.990000174475, - 10124.990000174585, - 10129.990000174694, - 10134.990000174803, - 10139.990000174912, - 10144.99000017502, - 10149.99000017513, - 10154.990000175241, - 10159.990000175349, - 10164.990000175458, - 10169.990000175567, - 10174.990000175676, - 10179.990000175783, - 10184.990000175894, - 10189.990000176003, - 10194.990000176113, - 10199.990000176222, - 10204.990000176329, - 10209.99000017644, - 10214.990000176547, - 10219.990000176658, - 10224.990000176767, - 10229.990000176876, - 10234.990000176986, - 10239.990000177097, - 10244.990000177204, - 10249.990000177311, - 10254.990000177422, - 10259.990000177531, - 10264.99000017764, - 10269.99000017775, - 10274.99000017786, - 10279.990000177968, - 10284.990000178077, - 10289.990000178186, - 10294.990000178295, - 10299.990000178404, - 10304.990000178514, - 10309.990000178625, - 10314.990000178732, - 10319.990000178841, - 10324.99000017895, - 10329.99000017906, - 10334.990000179167, - 10339.99000017928, - 10344.990000179389, - 10349.990000179496, - 10354.990000179605, - 10359.990000179714, - 10364.990000179825, - 10369.990000179932, - 10374.990000180042, - 10379.99000018015, - 10384.990000180258, - 10389.990000180367, - 10394.990000180478, - 10399.990000180589, - 10404.990000180696, - 10409.990000180806, - 10414.990000180915, - 10419.990000181024, - 10424.990000181131, - 10429.990000181242, - 10434.990000181353, - 10439.99000018146, - 10444.99000018157, - 10449.99000018168, - 10454.990000181788, - 10459.990000181895, - 10464.990000182006, - 10469.990000182115, - 10474.990000182224, - 10479.990000182332, - 10484.990000182444, - 10489.990000182552, - 10494.990000182659, - 10499.99000018277, - 10504.99000018288, - 10509.990000182988, - 10514.990000183096, - 10519.990000183208, - 10524.990000183316, - 10529.990000183425, - 10534.990000183534, - 10539.990000183643, - 10544.990000183752, - 10549.99000018386, - 10554.99000018397, - 10559.99000018408, - 10564.990000184189, - 10569.990000184298, - 10574.990000184407, - 10579.990000184516, - 10584.990000184624, - 10589.990000184736, - 10594.990000184844, - 10599.990000184953, - 10604.990000185062, - 10609.990000185173, - 10614.99000018528, - 10619.990000185391, - 10624.9900001855, - 10629.990000185608, - 10634.990000185717, - 10639.990000185826, - 10644.990000185937, - 10649.990000186044, - 10654.990000186152, - 10659.990000186262, - 10664.990000186372, - 10669.990000186479, - 10674.99000018659, - 10679.9900001867, - 10684.990000186808, - 10689.990000186917, - 10694.990000187026, - 10699.990000187136, - 10704.990000187243, - 10709.990000187354, - 10714.990000187465, - 10719.990000187572, - 10724.99000018768, - 10729.99000018779, - 10734.9900001879, - 10739.990000188009, - 10744.990000188118, - 10749.990000188227, - 10754.990000188336, - 10759.990000188443, - 10764.990000188553, - 10769.990000188665, - 10774.990000188773, - 10779.990000188882, - 10784.990000188991, - 10789.9900001891, - 10794.99000018921, - 10799.990000189318, - 10804.990000189428, - 10809.990000189537, - 10814.990000189646, - 10819.990000189757, - 10824.990000189864, - 10829.990000189971, - 10834.990000190082, - 10839.990000190191, - 10844.9900001903, - 10849.99000019041, - 10854.99000019052, - 10859.990000190628, - 10864.990000190735, - 10869.990000190846, - 10874.990000190955, - 10879.990000191065, - 10884.990000191174, - 10889.990000191285, - 10894.990000191392, - 10899.9900001915, - 10904.990000191608, - 10909.99000019172, - 10914.990000191827, - 10919.990000191938, - 10924.990000192049, - 10929.990000192156, - 10934.990000192265, - 10939.990000192374, - 10944.990000192483, - 10949.99000019259, - 10954.990000192702, - 10959.990000192809, - 10964.99000019292, - 10969.99000019303, - 10974.990000193138, - 10979.990000193247, - 10984.990000193357, - 10989.990000193466, - 10994.990000193575, - 10999.990000193684, - 11004.990000193791, - 11009.990000193902, - 11014.990000194011, - 11019.99000019412, - 11024.990000194228, - 11029.99000019434, - 11034.990000194448, - 11039.990000194555, - 11044.990000194666, - 11049.990000194775, - 11054.990000194883, - 11059.990000194995, - 11064.990000195105, - 11069.990000195212, - 11074.99000019532, - 11079.99000019543, - 11084.99000019554, - 11089.990000195647, - 11094.990000195758, - 11099.990000195869, - 11104.990000195976, - 11109.990000196083, - 11114.990000196194, - 11119.990000196303, - 11124.99000019641, - 11129.990000196522, - 11134.99000019663, - 11139.99000019674, - 11144.990000196849, - 11149.990000196958, - 11154.990000197067, - 11159.990000197175, - 11164.990000197286, - 11169.990000197395, - 11174.990000197506, - 11179.990000197613, - 11184.990000197722, - 11189.990000197831, - 11194.990000197939, - 11199.99000019805, - 11204.990000198159, - 11209.99000019827, - 11214.990000198377, - 11219.990000198486, - 11224.990000198597, - 11229.990000198704, - 11234.990000198814, - 11239.990000198923, - 11244.990000199034, - 11249.990000199141, - 11254.99000019925, - 11259.990000199361, - 11264.990000199468, - 11269.990000199576, - 11274.990000199687, - 11279.990000199796, - 11284.990000199905, - 11289.990000200014, - 11294.990000200125, - 11299.990000200232, - 11304.99000020034, - 11309.990000200449, - 11314.99000020056, - 11319.990000200669, - 11324.990000200778, - 11329.990000200889, - 11334.990000200996, - 11339.990000201104, - 11344.990000201216, - 11349.990000201324, - 11354.990000201433, - 11359.990000201544, - 11364.990000201653, - 11369.99000020176, - 11374.99000020187, - 11379.99000020198, - 11384.990000202088, - 11389.990000202195, - 11394.990000202308, - 11399.990000202417, - 11404.990000202524, - 11409.990000202632, - 11414.990000202744, - 11419.990000202852, - 11424.990000202959, - 11429.990000203072, - 11434.99000020318, - 11439.990000203288, - 11444.990000203396, - 11449.990000203506, - 11454.990000203616, - 11459.990000203723, - 11464.990000203834, - 11469.990000203943, - 11474.990000204052, - 11479.99000020416, - 11484.99000020427, - 11489.99000020438, - 11494.990000204487, - 11499.990000204598, - 11504.990000204707, - 11509.990000204816, - 11514.990000204923, - 11519.990000205034, - 11524.990000205144, - 11529.99000020525, - 11534.990000205362, - 11539.990000205471, - 11544.990000205578, - 11549.990000205691, - 11554.990000205798, - 11559.990000205908, - 11564.990000206015, - 11569.990000206126, - 11574.990000206235, - 11579.990000206346, - 11584.990000206453, - 11589.990000206562, - 11594.990000206672, - 11599.99000020678, - 11604.99000020689, - 11609.990000206999, - 11614.990000207106, - 11619.990000207217, - 11624.990000207326, - 11629.990000207437, - 11634.990000207545, - 11639.990000207654, - 11644.990000207763, - 11649.99000020787, - 11654.990000207981, - 11659.99000020809, - 11664.990000208201, - 11669.990000208309, - 11674.990000208418, - 11679.990000208529, - 11684.990000208636, - 11689.990000208745, - 11694.990000208854, - 11699.990000208965, - 11704.990000209073, - 11709.990000209182, - 11714.990000209289, - 11719.9900002094, - 11724.99000020951, - 11729.990000209618, - 11734.99000020973, - 11739.990000209837, - 11744.990000209946, - 11749.990000210057, - 11754.990000210164, - 11759.990000210271, - 11764.99000021038, - 11769.990000210493, - 11774.9900002106, - 11779.99000021071, - 11784.99000021082, - 11789.990000210928, - 11794.990000211035, - 11799.990000211144, - 11804.990000211255, - 11809.990000211365, - 11814.990000211475, - 11819.990000211585, - 11824.990000211692, - 11829.9900002118, - 11834.990000211908, - 11839.990000212021, - 11844.990000212129, - 11849.99000021224, - 11854.990000212349, - 11859.990000212456, - 11864.990000212563, - 11869.990000212674, - 11874.990000212783, - 11879.990000212892, - 11884.990000213003, - 11889.99000021311, - 11894.99000021322, - 11899.990000213327, - 11904.990000213438, - 11909.990000213547, - 11914.990000213655, - 11919.990000213767, - 11924.990000213877, - 11929.990000213984, - 11934.990000214091, - 11939.990000214202, - 11944.990000214311, - 11949.990000214422, - 11954.99000021453, - 11959.99000021464, - 11964.990000214748, - 11969.990000214855, - 11974.990000214966, - 11979.990000215075, - 11984.990000215183, - 11989.990000215294, - 11994.990000215403, - 11999.990000215512, - 12004.990000215621, - 12009.99000021573, - 12014.99000021584, - 12019.990000215947, - 12024.990000216058, - 12029.990000216167, - 12034.990000216278, - 12039.990000216385, - 12044.990000216494, - 12049.990000216603, - 12054.99000021671, - 12059.99000021682, - 12064.990000216929, - 12069.990000217042, - 12074.990000217149, - 12079.990000217258, - 12084.990000217369, - 12089.990000217476, - 12094.990000217584, - 12099.990000217695, - 12104.990000217806, - 12109.990000217913, - 12114.990000218022, - 12119.990000218133, - 12124.99000021824, - 12129.99000021835, - 12134.990000218459, - 12139.990000218568, - 12144.990000218677, - 12149.990000218786, - 12154.990000218897, - 12159.990000219004, - 12164.990000219112, - 12169.990000219224, - 12174.990000219332, - 12179.99000021944, - 12184.99000021955, - 12189.990000219657, - 12194.990000219768, - 12199.990000219876, - 12204.990000219988, - 12209.990000220096, - 12214.990000220205, - 12219.990000220316, - 12224.990000220425, - 12229.990000220532, - 12234.99000022064, - 12239.990000220749, - 12244.99000022086, - 12249.990000220967, - 12254.99000022108, - 12259.990000221189, - 12264.990000221296, - 12269.990000221404, - 12274.990000221514, - 12279.990000221624, - 12284.990000221731, - 12289.99000022184, - 12294.990000221953, - 12299.99000022206, - 12304.990000222171, - 12309.990000222278, - 12314.990000222388, - 12319.990000222495, - 12324.990000222606, - 12329.990000222715, - 12334.990000222824, - 12339.990000222931, - 12344.990000223042, - 12349.990000223152, - 12354.990000223259, - 12359.99000022337, - 12364.990000223479, - 12369.990000223588, - 12374.990000223695, - 12379.990000223806, - 12384.990000223916, - 12389.990000224023, - 12394.990000224134, - 12399.990000224243, - 12404.990000224354, - 12409.990000224461, - 12414.99000022457, - 12419.99000022468, - 12424.990000224787, - 12429.990000224898, - 12434.990000225007, - 12439.990000225118, - 12444.990000225225, - 12449.990000225334, - 12454.990000225444, - 12459.990000225553, - 12464.990000225662, - 12469.990000225771, - 12474.990000225878, - 12479.990000225991, - 12484.990000226098, - 12489.99000022621, - 12494.990000226317, - 12499.990000226426, - 12504.990000226535, - 12509.990000226642, - 12514.990000226753, - 12519.990000226862, - 12524.990000226973, - 12529.99000022708, - 12534.99000022719, - 12539.9900002273, - 12544.990000227408, - 12549.990000227517, - 12554.990000227626, - 12559.990000227737, - 12564.990000227845, - 12569.990000227954, - 12574.990000228065, - 12579.990000228172, - 12584.99000022828, - 12589.99000022839, - 12594.990000228501, - 12599.990000228609, - 12604.990000228718, - 12609.990000228829, - 12614.990000228936, - 12619.990000229043, - 12624.990000229152, - 12629.990000229265, - 12634.990000229373, - 12639.990000229482, - 12644.990000229589, - 12649.9900002297, - 12654.990000229807, - 12659.990000229916, - 12664.990000230027, - 12669.990000230137, - 12674.990000230247, - 12679.990000230357, - 12684.990000230464, - 12689.990000230571, - 12694.99000023068, - 12699.990000230791, - 12704.9900002309, - 12709.990000231008, - 12714.99000023112, - 12719.990000231228, - 12724.990000231335, - 12729.990000231446, - 12734.990000231555, - 12739.990000231664, - 12744.990000231775, - 12749.990000231885, - 12754.990000231992, - 12759.9900002321, - 12764.99000023221, - 12769.99000023232, - 12774.990000232428, - 12779.99000023254, - 12784.990000232649, - 12789.990000232756, - 12794.990000232863, - 12799.990000232974, - 12804.990000233083, - 12809.99000023319, - 12814.990000233302, - 12819.990000233409, - 12824.99000023352, - 12829.990000233627, - 12834.990000233738, - 12839.990000233847, - 12844.990000233955, - 12849.990000234066, - 12854.990000234175, - 12859.990000234284, - 12864.990000234393, - 12869.990000234502, - 12874.990000234611, - 12879.990000234719, - 12884.99000023483, - 12889.990000234939, - 12894.99000023505, - 12899.990000235157, - 12904.990000235266, - 12909.990000235375, - 12914.990000235483, - 12919.990000235592, - 12924.990000235703, - 12929.990000235814, - 12934.99000023592, - 12939.99000023603, - 12944.990000236141, - 12949.990000236248, - 12954.990000236356, - 12959.990000236467, - 12964.990000236578, - 12969.990000236685, - 12974.990000236794, - 12979.990000236905, - 12984.990000237012, - 12989.99000023712, - 12994.990000237229, - 12999.990000237342, - 13004.990000237449, - 13009.990000237558, - 13014.990000237669, - 13019.990000237776, - 13024.990000237884, - 13029.990000237996, - 13034.990000238104, - 13039.990000238213, - 13044.990000238322, - 13049.990000238433, - 13054.99000023854, - 13059.99000023865, - 13064.99000023876, - 13069.990000238868, - 13074.990000238977, - 13079.990000239088, - 13084.990000239197, - 13089.990000239304, - 13094.990000239412, - 13099.99000023952, - 13104.990000239632, - 13109.99000023974, - 13114.990000239852, - 13119.99000023996, - 13124.990000240068, - 13129.990000240176, - 13134.990000240286, - 13139.990000240396, - 13144.990000240503, - 13149.990000240612, - 13154.990000240725, - 13159.990000240832, - 13164.99000024094, - 13169.99000024105, - 13174.99000024116, - 13179.990000241267, - 13184.990000241378, - 13189.990000241487, - 13194.990000241596, - 13199.990000241703, - 13204.990000241814, - 13209.990000241924, - 13214.99000024203, - 13219.990000242142, - 13224.990000242251, - 13229.990000242358, - 13234.990000242471, - 13239.990000242578, - 13244.990000242688, - 13249.990000242795, - 13254.990000242906, - 13259.990000243015, - 13264.990000243126, - 13269.990000243233, - 13274.990000243342, - 13279.990000243452, - 13284.990000243559, - 13289.99000024367, - 13294.990000243779, - 13299.99000024389, - 13304.990000243997, - 13309.990000244106, - 13314.990000244215, - 13319.990000244325, - 13324.990000244434, - 13329.990000244543, - 13334.99000024465, - 13339.990000244761, - 13344.99000024487, - 13349.990000244981, - 13354.990000245089, - 13359.990000245198, - 13364.990000245307, - 13369.990000245414, - 13374.990000245525, - 13379.990000245634, - 13384.990000245745, - 13389.990000245853, - 13394.990000245962, - 13399.990000246069, - 13404.99000024618, - 13409.990000246291, - 13414.990000246398, - 13419.99000024651, - 13424.990000246617, - 13429.990000246726, - 13434.990000246837, - 13439.990000246944, - 13444.990000247051, - 13449.990000247162, - 13454.990000247273, - 13459.99000024738, - 13464.99000024749, - 13469.9900002476, - 13474.990000247708, - 13479.990000247815, - 13484.990000247924, - 13489.990000248037, - 13494.990000248144, - 13499.990000248254, - 13504.990000248365, - 13509.990000248472, - 13514.99000024858, - 13519.990000248692, - 13524.9900002488, - 13529.990000248908, - 13534.99000024902, - 13539.990000249129, - 13544.990000249236, - 13549.990000249343, - 13554.990000249452, - 13559.990000249563, - 13564.990000249672, - 13569.990000249783, - 13574.99000024989, - 13579.99000025, - 13584.990000250107, - 13589.990000250218, - 13594.990000250327, - 13599.990000250436, - 13604.990000250547, - 13609.990000250657, - 13614.990000250764, - 13619.990000250871, - 13624.990000250982, - 13629.990000251091, - 13634.9900002512, - 13639.990000251308, - 13644.99000025142, - 13649.990000251528, - 13654.990000251635, - 13659.990000251746, - 13664.990000251855, - 13669.990000251963, - 13674.990000252075, - 13679.990000252184, - 13684.990000252292, - 13689.9900002524, - 13694.99000025251, - 13699.99000025262, - 13704.990000252727, - 13709.990000252837, - 13714.990000252948, - 13719.990000253056, - 13724.990000253165, - 13729.990000253274, - 13734.990000253383, - 13739.99000025349, - 13744.990000253601, - 13749.990000253709, - 13754.990000253822, - 13759.990000253929, - 13764.990000254038, - 13769.990000254147, - 13774.990000254254, - 13779.990000254364, - 13784.990000254475, - 13789.990000254586, - 13794.990000254693, - 13799.990000254802, - 13804.990000254913, - 13809.99000025502, - 13814.99000025513, - 13819.990000255239, - 13824.99000025535, - 13829.990000255457, - 13834.990000255566, - 13839.990000255677, - 13844.990000255784, - 13849.990000255892, - 13854.990000256003, - 13859.990000256112, - 13864.99000025622, - 13869.99000025633, - 13874.99000025644, - 13879.990000256548, - 13884.990000256656, - 13889.990000256768, - 13894.990000256876, - 13899.990000256985, - 13904.990000257094, - 13909.990000257205, - 13914.990000257312, - 13919.99000025742, - 13924.990000257529, - 13929.990000257641, - 13934.990000257749, - 13939.99000025786, - 13944.990000257969, - 13949.990000258076, - 13954.990000258183, - 13959.990000258293, - 13964.990000258404, - 13969.990000258513, - 13974.990000258624, - 13979.990000258733, - 13984.99000025884, - 13989.99000025895, - 13994.990000259058, - 13999.990000259168, - 14004.990000259275, - 14009.990000259388, - 14014.990000259497, - 14019.990000259604, - 14024.990000259711, - 14029.990000259822, - 14034.990000259932, - 14039.99000026004, - 14044.99000026015, - 14049.990000260259, - 14054.990000260368, - 14059.990000260475, - 14064.990000260586, - 14069.990000260696, - 14074.990000260803, - 14079.990000260914, - 14084.990000261023, - 14089.990000261132, - 14094.99000026124, - 14099.99000026135, - 14104.99000026146, - 14109.990000261567, - 14114.990000261678, - 14119.990000261787, - 14124.990000261898, - 14129.990000262005, - 14134.990000262114, - 14139.990000262223, - 14144.99000026233, - 14149.990000262442, - 14154.990000262549, - 14159.990000262658, - 14164.99000026277, - 14169.990000262878, - 14174.990000262987, - 14179.990000263097, - 14184.990000263206, - 14189.990000263315, - 14194.990000263422, - 14199.990000263533, - 14204.990000263642, - 14209.990000263753, - 14214.99000026386, - 14219.99000026397, - 14224.990000264079, - 14229.990000264186, - 14234.990000264297, - 14239.990000264406, - 14244.990000264517, - 14249.990000264625, - 14254.990000264734, - 14259.990000264845, - 14264.990000264952, - 14269.990000265061, - 14274.990000265168, - 14279.990000265281, - 14284.990000265389, - 14289.990000265498, - 14294.990000265609, - 14299.990000265716, - 14304.990000265825, - 14309.990000265934, - 14314.990000266045, - 14319.990000266152, - 14324.990000266262, - 14329.990000266369, - 14334.990000266482, - 14339.990000266587, - 14344.9900002667, - 14349.99000026681, - 14354.990000266916, - 14359.990000267026, - 14364.990000267137, - 14369.990000267244, - 14374.990000267351, - 14379.99000026746, - 14384.990000267571, - 14389.99000026768, - 14394.990000267791, - 14399.9900002679, - 14404.990000268008, - 14409.990000268115, - 14414.990000268224, - 14419.990000268335, - 14424.990000268444, - 14429.990000268555, - 14434.990000268665, - 14439.990000268772, - 14444.99000026888, - 14449.990000268992, - 14454.9900002691, - 14459.990000269208, - 14464.99000026932, - 14469.990000269428, - 14474.990000269536, - 14479.990000269643, - 14484.990000269754, - 14489.990000269863, - 14494.990000269972, - 14499.990000270083, - 14504.99000027019, - 14509.9900002703, - 14514.990000270407, - 14519.990000270518, - 14524.990000270627, - 14529.990000270735, - 14534.990000270845, - 14539.990000270956, - 14544.990000271064, - 14549.990000271171, - 14554.990000271282, - 14559.990000271391, - 14564.990000271499, - 14569.99000027161, - 14574.99000027172, - 14579.990000271828, - 14584.990000271937, - 14589.990000272046, - 14594.990000272155, - 14599.990000272262, - 14604.990000272373, - 14609.990000272483, - 14614.990000272594, - 14619.9900002727, - 14624.99000027281, - 14629.99000027292, - 14634.990000273026, - 14639.990000273137, - 14644.990000273247, - 14649.990000273358, - 14654.990000273465, - 14659.990000273574, - 14664.990000273685, - 14669.990000273792, - 14674.9900002739, - 14679.990000274009, - 14684.990000274118, - 14689.990000274229, - 14694.990000274338, - 14699.990000274449, - 14704.990000274556, - 14709.990000274664, - 14714.990000274775, - 14719.990000274884, - 14724.990000274993, - 14729.990000275102, - 14734.990000275213, - 14739.99000027532, - 14744.990000275433, - 14749.990000275537, - 14754.990000275648, - 14759.990000275757, - 14764.990000275866, - 14769.990000275977, - 14774.990000276084, - 14779.990000276191, - 14784.9900002763, - 14789.990000276412, - 14794.990000276519, - 14799.990000276632, - 14804.99000027674, - 14809.990000276848, - 14814.990000276955, - 14819.990000277065, - 14824.990000277176, - 14829.990000277285, - 14834.990000277396, - 14839.990000277505, - 14844.990000277612, - 14849.99000027772, - 14854.990000277832, - 14859.99000027794, - 14864.990000278047, - 14869.99000027816, - 14874.990000278269, - 14879.990000278376, - 14884.990000278483, - 14889.990000278594, - 14894.990000278704, - 14899.99000027881, - 14904.990000278922, - 14909.990000279033, - 14914.99000027914, - 14919.990000279251, - 14924.990000279358, - 14929.990000279467, - 14934.990000279575, - 14939.990000279686, - 14944.990000279795, - 14949.990000279904, - 14954.990000280011, - 14959.990000280122, - 14964.990000280231, - 14969.990000280342, - 14974.99000028045, - 14979.990000280559, - 14984.99000028067, - 14989.990000280777, - 14994.990000280886, - 14999.990000280995, - 15004.990000281103, - 15009.990000281214, - 15014.990000281323, - 15019.990000281434, - 15024.990000281541, - 15029.99000028165, - 15034.99000028176, - 15039.990000281869, - 15044.990000281978, - 15049.990000282087, - 15054.990000282194, - 15059.990000282305, - 15064.990000282414, - 15069.990000282525, - 15074.990000282633, - 15079.990000282742, - 15084.990000282849, - 15089.990000282958, - 15094.99000028307, - 15099.990000283178, - 15104.99000028329, - 15109.990000283397, - 15114.990000283506, - 15119.990000283617, - 15124.990000283724, - 15129.990000283833, - 15134.990000283942, - 15139.990000284053, - 15144.99000028416, - 15149.990000284268, - 15154.99000028438, - 15159.990000284488, - 15164.990000284597, - 15169.990000284706, - 15174.990000284817, - 15179.990000284924, - 15184.990000285034, - 15189.990000285145, - 15194.990000285252, - 15199.99000028536, - 15204.990000285468, - 15209.990000285581, - 15214.990000285688, - 15219.990000285798, - 15224.990000285909, - 15229.990000286016, - 15234.990000286123, - 15239.990000286232, - 15244.990000286345, - 15249.990000286452, - 15254.990000286563, - 15259.99000028667, - 15264.990000286782, - 15269.990000286887, - 15274.990000286996, - 15279.990000287107, - 15284.990000287216, - 15289.990000287327, - 15294.990000287436, - 15299.990000287544, - 15304.990000287651, - 15309.990000287762, - 15314.990000287871, - 15319.99000028798, - 15324.990000288091, - 15329.9900002882, - 15334.990000288308, - 15339.990000288415, - 15344.990000288526, - 15349.990000288635, - 15354.990000288744, - 15359.990000288852, - 15364.990000288964, - 15369.990000289072, - 15374.990000289183, - 15379.99000028929, - 15384.9900002894, - 15389.990000289506, - 15394.990000289617, - 15399.990000289728, - 15404.990000289836, - 15409.990000289943, - 15414.990000290054, - 15419.990000290163, - 15424.99000029027, - 15429.990000290381, - 15434.99000029049, - 15439.9900002906, - 15444.990000290709, - 15449.990000290818, - 15454.990000290927, - 15459.990000291034, - 15464.990000291145, - 15469.990000291255, - 15474.990000291366, - 15479.990000291473, - 15484.990000291582, - 15489.990000291691, - 15494.990000291798, - 15499.99000029191, - 15504.990000292019, - 15509.99000029213, - 15514.990000292237, - 15519.990000292346, - 15524.990000292457, - 15529.990000292564, - 15534.990000292672, - 15539.990000292782, - 15544.990000292893, - 15549.990000293, - 15554.99000029311, - 15559.99000029322, - 15564.990000293328, - 15569.990000293436, - 15574.990000293545, - 15579.990000293656, - 15584.990000293765, - 15589.990000293874, - 15594.990000293985, - 15599.990000294092, - 15604.9900002942, - 15609.990000294309, - 15614.99000029442, - 15619.990000294529, - 15624.990000294638, - 15629.990000294749, - 15634.990000294856, - 15639.990000294963, - 15644.990000295073, - 15649.990000295184, - 15654.990000295293, - 15659.990000295404, - 15664.990000295513, - 15669.990000295618, - 15674.990000295733, - 15679.990000295837, - 15684.990000295948, - 15689.990000296057, - 15694.990000296168, - 15699.990000296277, - 15704.990000296384, - 15709.990000296491, - 15714.990000296602, - 15719.990000296712, - 15724.990000296819, - 15729.990000296932, - 15734.99000029704, - 15739.990000297148, - 15744.990000297255, - 15749.990000297366, - 15754.990000297475, - 15759.990000297583, - 15764.990000297694, - 15769.990000297805, - 15774.990000297912, - 15779.99000029802, - 15784.990000298132, - 15789.99000029824, - 15794.990000298347, - 15799.990000298458, - 15804.990000298567, - 15809.990000298676, - 15814.990000298783, - 15819.990000298894, - 15824.990000299003, - 15829.99000029911, - 15834.990000299222, - 15839.99000029933, - 15844.990000299442, - 15849.990000299551, - 15854.990000299658, - 15859.990000299767, - 15864.990000299875, - 15869.990000299986, - 15874.990000300095, - 15879.990000300206, - 15884.990000300313, - 15889.990000300422, - 15894.990000300531, - 15899.99000030064, - 15904.99000030075, - 15909.990000300859, - 15914.990000300966, - 15919.990000301077, - 15924.990000301186, - 15929.990000301297, - 15934.990000301405, - 15939.990000301514, - 15944.990000301623, - 15949.99000030173, - 15954.990000301841, - 15959.99000030195, - 15964.990000302061, - 15969.990000302168, - 15974.990000302278, - 15979.990000302389, - 15984.990000302496, - 15989.990000302605, - 15994.990000302714, - 15999.990000302825, - 16004.990000302932, - 16009.990000303042, - 16014.990000303149, - 16019.99000030326, - 16024.990000303369, - 16029.990000303478, - 16034.99000030359, - 16039.990000303696, - 16044.990000303806, - 16049.990000303917, - 16054.990000304024, - 16059.990000304131, - 16064.990000304244, - 16069.990000304353, - 16074.99000030446, - 16079.990000304568, - 16084.99000030468, - 16089.990000304788, - 16094.990000304895, - 16099.990000305004, - 16104.990000305117, - 16109.990000305224, - 16114.990000305335, - 16119.990000305444, - 16124.990000305552, - 16129.99000030566, - 16134.990000305768, - 16139.990000305881, - 16144.990000305988, - 16149.990000306096, - 16154.990000306208, - 16159.990000306316, - 16164.990000306423, - 16169.990000306534, - 16174.990000306643, - 16179.990000306752, - 16184.99000030686, - 16189.990000306967, - 16194.99000030708, - 16199.990000307187, - 16204.990000307298, - 16209.990000307407, - 16214.990000307516, - 16219.990000307624, - 16224.990000307736, - 16229.990000307844, - 16234.990000307951, - 16239.990000308062, - 16244.990000308171, - 16249.990000308282, - 16254.990000308391, - 16259.9900003085, - 16264.990000308608, - 16269.990000308715, - 16274.990000308826, - 16279.990000308935, - 16284.990000309042, - 16289.990000309153, - 16294.990000309264, - 16299.990000309372, - 16304.990000309483, - 16309.99000030959, - 16314.9900003097, - 16319.990000309806, - 16324.990000309917, - 16329.990000310027, - 16334.990000310137, - 16339.990000310245, - 16344.990000310354, - 16349.990000310463, - 16354.99000031057, - 16359.990000310681, - 16364.99000031079, - 16369.990000310901, - 16374.990000311009, - 16379.990000311118, - 16384.990000311045, - 16389.990000310245, - 16394.990000309444, - 16399.990000308644, - 16404.990000307844, - 16409.990000307043, - 16414.990000306247, - 16419.990000305443, - 16424.990000304642, - 16429.990000303842, - 16434.990000303038, - 16439.99000030224, - 16444.99000030144, - 16449.99000030064, - 16454.99000029984, - 16459.99000029904, - 16464.99000029824, - 16469.990000297443, - 16474.990000296642, - 16479.99000029584, - 16484.990000295038, - 16489.990000294238, - 16494.990000293434, - 16499.990000292637, - 16504.990000291837, - 16509.990000291036, - 16514.990000290236, - 16519.990000289436, - 16524.990000288635, - 16529.99000028784, - 16534.990000287034, - 16539.990000286234, - 16544.990000285434, - 16549.99000028463, - 16554.990000283833, - 16559.990000283033, - 16564.990000282232, - 16569.990000281432, - 16574.99000028063, - 16579.99000027983, - 16584.99000027903, - 16589.990000278234, - 16594.99000027743, - 16599.99000027663, - 16604.99000027583, - 16609.990000275033, - 16614.990000274232, - 16619.99000027343, - 16624.990000272628, - 16629.990000271828, - 16634.990000271027, - 16639.990000270227, - 16644.99000026943, - 16649.990000268626, - 16654.990000267826, - 16659.990000267026, - 16664.99000026622, - 16669.990000265425, - 16674.990000264625, - 16679.990000263824, - 16684.990000263024, - 16689.990000262223, - 16694.990000261423, - 16699.990000260626, - 16704.990000259822, - 16709.990000259022, - 16714.990000258218, - 16719.990000257418, - 16724.990000256617, - 16729.990000255817, - 16734.99000025502, - 16739.99000025422, - 16744.99000025342, - 16749.99000025262, - 16754.99000025182, - 16759.99000025102, - 16764.990000250218, - 16769.990000249418, - 16774.990000248617, - 16779.990000247813, - 16784.990000247017, - 16789.990000246216, - 16794.990000245416, - 16799.990000244616, - 16804.990000243815, - 16809.990000243015, - 16814.99000024222, - 16819.990000241414, - 16824.990000240614, - 16829.990000239814, - 16834.99000023901, - 16839.990000238213, - 16844.990000237412, - 16849.990000236612, - 16854.99000023581, - 16859.99000023501, - 16864.990000234207, - 16869.990000233407, - 16874.99000023261, - 16879.99000023181, - 16884.99000023101, - 16889.99000023021, - 16894.99000022941, - 16899.99000022861, - 16904.990000227812, - 16909.990000227008, - 16914.990000226207, - 16919.990000225407, - 16924.990000224607, - 16929.990000223806, - 16934.990000223006, - 16939.990000222206, - 16944.990000221405, - 16949.9900002206, - 16954.990000219805, - 16959.990000219004, - 16964.990000218204, - 16969.990000217404, - 16974.990000216603, - 16979.990000215803, - 16984.990000215006, - 16989.990000214202, - 16994.9900002134, - 16999.9900002126, - 17004.9900002118, - 17009.990000211, - 17014.9900002102, - 17019.9900002094, - 17024.9900002086, - 17029.9900002078, - 17034.990000207, - 17039.990000206202, - 17044.990000205402, - 17049.990000204598, - 17054.990000203798, - 17059.990000202997, - 17064.990000202193, - 17069.990000201396, - 17074.990000200596, - 17079.990000199796, - 17084.990000198995, - 17089.990000198195, - 17094.990000197395, - 17099.990000196594, - 17104.990000195794, - 17109.990000194994, - 17114.990000194193, - 17119.990000193393, - 17124.990000192593, - 17129.990000191792, - 17134.990000190992, - 17139.99000019019, - 17144.99000018939, - 17149.99000018859, - 17154.99000018779, - 17159.99000018699, - 17164.99000018619, - 17169.99000018539, - 17174.99000018459, - 17179.990000183792, - 17184.990000182992, - 17189.990000182188, - 17194.990000181388, - 17199.990000180587, - 17204.990000179787, - 17209.990000178987, - 17214.990000178186, - 17219.990000177386, - 17224.990000176585, - 17229.990000175785, - 17234.99000017498, - 17239.990000174184, - 17244.990000173384, - 17249.990000172584, - 17254.990000171783, - 17259.990000170983, - 17264.990000170183, - 17269.990000169382, - 17274.990000168582, - 17279.99000016778, - 17284.99000016698, - 17289.99000016618, - 17294.99000016538, - 17299.99000016458, - 17304.990000163783, - 17309.99000016298, - 17314.99000016218, - 17319.990000161382, - 17324.990000160582, - 17329.990000159778, - 17334.990000158978, - 17339.990000158177, - 17344.990000157377, - 17349.990000156577, - 17354.990000155776, - 17359.990000154976, - 17364.990000154176, - 17369.990000153375, - 17374.990000152575, - 17379.990000151774, - 17384.990000150974, - 17389.990000150174, - 17394.990000149373, - 17399.990000148573, - 17404.990000147773, - 17409.990000146972, - 17414.990000146172, - 17419.990000145368, - 17424.990000144568, - 17429.99000014377, - 17434.99000014297, - 17439.990000142167, - 17444.99000014137, - 17449.99000014057, - 17454.99000013977, - 17459.99000013897, - 17464.99000013817, - 17469.990000137368, - 17474.990000136568, - 17479.990000135767, - 17484.990000134967, - 17489.990000134167, - 17494.990000133366, - 17499.990000132566, - 17504.990000131766, - 17509.990000130965, - 17514.990000130165, - 17519.990000129364, - 17524.990000128564, - 17529.990000127764, - 17534.990000126963, - 17539.990000126163, - 17544.990000125363, - 17549.990000124562, - 17554.990000123762, - 17559.990000122958, - 17564.990000122158, - 17569.99000012136, - 17574.99000012056, - 17579.990000119757, - 17584.99000011896, - 17589.99000011816, - 17594.99000011736, - 17599.99000011656, - 17604.99000011576, - 17609.990000114958, - 17614.990000114158, - 17619.990000113357, - 17624.990000112557, - 17629.990000111757, - 17634.990000110956, - 17639.990000110156, - 17644.990000109356, - 17649.99000010856, - 17654.990000107755, - 17659.990000106955, - 17664.990000106154, - 17669.990000105354, - 17674.99000010455, - 17679.990000103753, - 17684.990000102953, - 17689.990000102152, - 17694.990000101352, - 17699.990000100548, - 17704.99000009975, - 17709.99000009895, - 17714.99000009815, - 17719.99000009735, - 17724.99000009655, - 17729.99000009575, - 17734.990000094953, - 17739.99000009415, - 17744.99000009335, - 17749.990000092548, - 17754.990000091748, - 17759.990000090947, - 17764.99000009015, - 17769.990000089347, - 17774.990000088546, - 17779.990000087746, - 17784.990000086946, - 17789.990000086145, - 17794.990000085345, - 17799.990000084545, - 17804.990000083744, - 17809.990000082944, - 17814.990000082144, - 17819.990000081347, - 17824.990000080543, - 17829.990000079742, - 17834.990000078942, - 17839.990000078138, - 17844.99000007734, - 17849.99000007654, - 17854.99000007574, - 17859.99000007494, - 17864.99000007414, - 17869.99000007334, - 17874.990000072543, - 17879.99000007174, - 17884.99000007094, - 17889.990000070142, - 17894.990000069338, - 17899.990000068534, - 17904.990000067737, - 17909.990000066937, - 17914.990000066136, - 17919.990000065336, - 17924.990000064536, - 17929.990000063735, - 17934.99000006294, - 17939.990000062135, - 17944.990000061334, - 17949.990000060534, - 17954.990000059734, - 17959.990000058933, - 17964.990000058133, - 17969.990000057333, - 17974.990000056532, - 17979.99000005573, - 17984.99000005493, - 17989.99000005413, - 17994.99000005333, - 17999.99000005253 - ], - "y": [ - 0.13982147077074153, - 0.04761577730536309, - 0.14432294028197426, - 0.16009465572497095, - 0.1557431858286894, - 0.15839561214469572, - 0.161997625778186, - 0.16519074739443762, - 0.16786269127868006, - 0.16999591164631522, - 0.17176022240290575, - 0.1732620887097633, - 0.17436095811297972, - 0.1751263139024587, - 0.17572754958935458, - 0.17617750362953555, - 0.17638220247260672, - 0.17656291299370908, - 0.1765850927229675, - 0.1765382788846156, - 0.17656691106058234, - 0.1766928746526986, - 0.1766539804568396, - 0.1765822529514563, - 0.17638213544325368, - 0.1762474916758483, - 0.17622313404802364, - 0.1761780783940657, - 0.17615365962976035, - 0.1761367617435853, - 0.17610768596751342, - 0.17605029100607986, - 0.1759754578869771, - 0.17588412910281806, - 0.17577215296660398, - 0.17564638612527225, - 0.17554722836457715, - 0.17543172244164498, - 0.17526822269079256, - 0.17506283610093107, - 0.17480635453602456, - 0.17456674297452632, - 0.17430726376865838, - 0.17410429806594402, - 0.1739937687081328, - 0.17389648657886425, - 0.173812313179605, - 0.1737353561909121, - 0.17365255087192838, - 0.17356153875287525, - 0.17347149603424125, - 0.17337672707215107, - 0.1732913841102326, - 0.1731696773465898, - 0.17301163184044713, - 0.17287826626736558, - 0.17281910369440284, - 0.17279951092444765, - 0.1727879333671124, - 0.17277913214752882, - 0.1727779936746171, - 0.17278636199241673, - 0.17280386232559014, - 0.1728314166944453, - 0.1728718859465456, - 0.1729263298707292, - 0.1729901345008746, - 0.17307181607472127, - 0.1731765997930182, - 0.17330100696697048, - 0.17345052884557796, - 0.17363076089212556, - 0.1738612285152988, - 0.17415568466542036, - 0.17429625427887502, - 0.17437463226345756, - 0.17445233703806684, - 0.17452452491315626, - 0.17458864654892786, - 0.1746483693906737, - 0.1747043248023561, - 0.17475672535684975, - 0.1748059756412016, - 0.17485200034337225, - 0.17489513329987896, - 0.17493550528812413, - 0.17497325097864447, - 0.17500865546871955, - 0.17504209219604974, - 0.17507325777576674, - 0.17510445381606496, - 0.1751323932464897, - 0.17515856301549682, - 0.17518329338119387, - 0.17520648695172414, - 0.17522840301605275, - 0.17524908318506088, - 0.17526856108938665, - 0.17528700623338206, - 0.17530439600304742, - 0.2141519908872876, - 0.21501251692888332, - 0.21816615536575465, - 0.22099581030713425, - 0.22364834979274795, - 0.22614840700207745, - 0.22851707172217076, - 0.2307593970039948, - 0.2328772834426541, - 0.2349137747030691, - 0.2368599579806489, - 0.2386958642979177, - 0.2404371035557756, - 0.2420456573194331, - 0.24353645737161306, - 0.2449331257198667, - 0.24625330179041144, - 0.2474944546343021, - 0.24867941278050795, - 0.24980045178059265, - 0.250861733159332, - 0.25186070750460604, - 0.2527952560520022, - 0.25367475910850057, - 0.25450347341757384, - 0.2552836843270309, - 0.2560144203047927, - 0.2567029786740569, - 0.25734943512955144, - 0.2579564956092423, - 0.2585235200758905, - 0.2590463348388783, - 0.2595402627698357, - 0.26000186736053643, - 0.26043260220923825, - 0.2608349315559049, - 0.2612070818491047, - 0.26155316851559024, - 0.261871449376032, - 0.2621637821884083, - 0.2624307977089448, - 0.2626720893374003, - 0.2628844234371851, - 0.26307653299330336, - 0.2632438817206675, - 0.2633860175482918, - 0.26349054511929365, - 0.26355385374213725, - 0.2635834614198732, - 0.2636741541955457, - 0.2637914604479134, - 0.2639050774531133, - 0.2640118769105321, - 0.26411262320372936, - 0.2642077462445739, - 0.26429756432731466, - 0.2643823732207294, - 0.2644624522613344, - 0.2645380652349007, - 0.2646094612172917, - 0.26467687539321444, - 0.2647405298309469, - 0.2648006522437454, - 0.2648574114706511, - 0.26491102857368576, - 0.26496167070177107, - 0.2650095017104995, - 0.26505466100661856, - 0.26509731282581744, - 0.2651375830129119, - 0.2651756174787454, - 0.26521153590415225, - 0.2652454438762059, - 0.2652774693720261, - 0.26530770978589235, - 0.26533626620425754, - 0.2653632439356673, - 0.2653887085248864, - 0.2654127517326385, - 0.2654354635863975, - 0.2654569058707716, - 0.26547716681323896, - 0.2654962947539026, - 0.2655143504749685, - 0.26553139987316005, - 0.26554749950167034, - 0.26556270227686035, - 0.2655770689139455, - 0.2655906428524205, - 0.2656034536509042, - 0.2656155509334192, - 0.26562697492109416, - 0.2656377630917369, - 0.26564795083085785, - 0.26565757155622016, - 0.26566665682581464, - 0.2656752364412288, - 0.2656833385453965, - 0.26569098974178784, - 0.265698216770336, - 0.26570504922882016, - 0.2657114973172949, - 0.2657175837094301, - 0.26572333116485425, - 0.2657287587358855, - 0.2657338842281153, - 0.2657387244535289, - 0.26574329528902096, - 0.2657476117278849, - 0.2657516879289433, - 0.26575553800177026, - 0.2657591848038064, - 0.2657626206423457, - 0.2657658637533964, - 0.2657689262940961, - 0.265771818386027, - 0.2657745495146969, - 0.26577712863837905, - 0.26577956421711385, - 0.2657818642401084, - 0.2657840362519181, - 0.2657860873771951, - 0.2657880243440585, - 0.26578985350616297, - 0.2657915808635429, - 0.2657932120822902, - 0.26579475251314344, - 0.2657962072090376, - 0.2657975809416775, - 0.2657988782171943, - 0.2658001032909206, - 0.2658012601813557, - 0.26580235268334124, - 0.2658033843805108, - 0.2658043586570469, - 0.2658052787087809, - 0.2658061475536734, - 0.26580696804171633, - 0.2658077428642834, - 0.2658084745629523, - 0.26580916553784906, - 0.2658098180555154, - 0.265810434256345, - 0.2658110161616048, - 0.2658115656800661, - 0.2658120846142641, - 0.2658125746664105, - 0.26581303744397955, - 0.2658134744649779, - 0.26581388716292603, - 0.2658142768915581, - 0.2658146449292664, - 0.2658149924832912, - 0.26581532069368224, - 0.2658156306370381, - 0.26581592333003784, - 0.2658161997327749, - 0.2658164607519088, - 0.2658167072436362, - 0.26581694001650125, - 0.2658171598340489, - 0.2658173674173244, - 0.26581756344724594, - 0.2658177556866775, - 0.2658179509990873, - 0.2658181208974873, - 0.26581827952964865, - 0.26581842926889043, - 0.2658185706773745, - 0.2658187042160522, - 0.2658188303224589, - 0.2658189494102265, - 0.2658190618699885, - 0.26581916807063666, - 0.2658192683605307, - 0.26581936306864323, - 0.2658194525056373, - 0.2658195369648825, - 0.2658196167234238, - 0.2658196920428857, - 0.265819763170332, - 0.26581983033907564, - 0.2658198937694434, - 0.2658199536695006, - 0.2658200102357318, - 0.26582006365368555, - 0.2658201140985853, - 0.2658201617358987, - 0.26582020672188805, - 0.2658202492041158, - 0.2658202893219321, - 0.2658203272069323, - 0.2658203629833872, - 0.2658203967686505, - 0.2658204286735449, - 0.2658204588027253, - 0.2658204872550213, - 0.2658205141237636, - 0.26582053949708584, - 0.26582056345821925, - 0.26582058608576026, - 0.2658206074539315, - 0.2658206276328264, - 0.2658206466886348, - 0.2658206646838641, - 0.2658206816775425, - 0.2658206977254129, - 0.265820712880115, - 0.26582072719135963, - 0.265820740706091, - 0.2658207534686405, - 0.2658207655208709, - 0.26582077690231715, - 0.2658207876503116, - 0.2658207978001112, - 0.26582080738500835, - 0.26582081643644395, - 0.2658208249841087, - 0.2658208330560404, - 0.2658208406787174, - 0.2658208478771424, - 0.2658208546749283, - 0.26582086109437403, - 0.2658208671565361, - 0.2658208728812988, - 0.2658208782874421, - 0.2658208833926984, - 0.2658208882138139, - 0.26582089276660337, - 0.2658208970660007, - 0.2658209011261085, - 0.2658209049602452, - 0.2658209085809873, - 0.2658209120002113, - 0.265820915229134, - 0.2658209182783452, - 0.265820921157849, - 0.2658209238770891, - 0.26582092644498634, - 0.2658209288699633, - 0.26582093115997485, - 0.2658209333225324, - 0.2658209353647296, - 0.2658209372932653, - 0.2658209391144655, - 0.2658209408343037, - 0.2658209424584224, - 0.2658209439921483, - 0.2658209454405121, - 0.26582094680826457, - 0.2658209480998938, - 0.2658209493196353, - 0.2658209504714901, - 0.26582095155923713, - 0.26582095258644284, - 0.2658209535564789, - 0.26582095447252563, - 0.265820955337589, - 0.26582095615450524, - 0.26582095692595503, - 0.265820957654469, - 0.265820958342436, - 0.2658209589921134, - 0.2658209596056317, - 0.26582096018500423, - 0.2658209607321306, - 0.26582096124880605, - 0.26582096173672537, - 0.265820962197488, - 0.2658209626326077, - 0.2658209630435094, - 0.2658209634315415, - 0.26582096379797754, - 0.26582096414401823, - 0.2658209644708003, - 0.2658209647793945, - 0.2658209650708133, - 0.2658209653460131, - 0.2658209656058963, - 0.26582096585131515, - 0.26582096608307515, - 0.2658209663019357, - 0.2658209665086156, - 0.2658209667037921, - 0.2658209668881058, - 0.26582096706216096, - 0.26582096722652965, - 0.26582096738174965, - 0.2658209675283309, - 0.2658209676667537, - 0.2658209677974724, - 0.2658209679209161, - 0.2658209680374894, - 0.2658209681475743, - 0.26582096825153223, - 0.2658209683497045, - 0.2658209684424125, - 0.2658209685299605, - 0.26582096861263593, - 0.2658209686907105, - 0.2658209687644393, - 0.2658209688340646, - 0.2658209688998149, - 0.2658209689619057, - 0.2658209690205413, - 0.26582096907591274, - 0.26582096912820263, - 0.2658209691775825, - 0.2658209692242138, - 0.2658209692682498, - 0.26582096930983523, - 0.2658209693491059, - 0.2658209693861905, - 0.26582096942121164, - 0.2658209694542836, - 0.2658209694855148, - 0.26582096951500755, - 0.26582096954285944, - 0.2658209695691608, - 0.2658209695939984, - 0.2658209696174538, - 0.2658209696396032, - 0.26582096966052005, - 0.2658209696802729, - 0.2658209696989263, - 0.2658209697165415, - 0.2658209697331764, - 0.2658209697488853, - 0.2658209697637201, - 0.2658209697777289, - 0.26582096979095826, - 0.2658209698034513, - 0.2658209698152492, - 0.2658209698263903, - 0.2658209698369113, - 0.2658209698468469, - 0.2658209698562294, - 0.2658209698650895, - 0.2658209698734567, - 0.26582096988135817, - 0.2658209698888199, - 0.2658209698958663, - 0.26582096990252074, - 0.2658209699088045, - 0.2658209699147385, - 0.2658209699203424, - 0.2658209699256346, - 0.26582096993063153, - 0.2658209699353507, - 0.2658209699398075, - 0.2658209699440164, - 0.2658209699479909, - 0.2658209699517438, - 0.2658209699552885, - 0.2658209699586349, - 0.2658209699617959, - 0.2658209699647806, - 0.26582096996759896, - 0.2658209699702609, - 0.2658209699727752, - 0.26582096997514765, - 0.2658209699773906, - 0.2658209699795072, - 0.2658209699815058, - 0.2658209699833937, - 0.26582096998517657, - 0.26582096998686083, - 0.2658209699884504, - 0.2658209699899503, - 0.26582096999137034, - 0.26582096999270705, - 0.26582096999397364, - 0.26582096999516786, - 0.2658209699962942, - 0.2658209699973577, - 0.265820969998364, - 0.26582096999931365, - 0.2658209700002103, - 0.2658209700010565, - 0.2658209700018578, - 0.2658209700026149, - 0.2658209700033288, - 0.2658209700040005, - 0.2658209700046367, - 0.26582097000523963, - 0.265820970005804, - 0.265820970006343, - 0.2658209700068481, - 0.2658209700073262, - 0.2658209700077772, - 0.2658209700082051, - 0.26582097000860416, - 0.26582097000898897, - 0.2658209700093417, - 0.26582097000968496, - 0.2658209700100062, - 0.26582097001030075, - 0.2658209700105933, - 0.26582097001086474, - 0.2658209700111149, - 0.2576329294502057, - 0.25311438518913604, - 0.2509703490566638, - 0.2495273584337692, - 0.2484043671219201, - 0.24737276235437344, - 0.2463615293131312, - 0.24537802925993454, - 0.2444342210858971, - 0.2437714166611227, - 0.24308360346387264, - 0.24232966530953676, - 0.2415825835982809, - 0.2408592228175667, - 0.2401640600692797, - 0.2395111658526473, - 0.23887270167140726, - 0.23825322247969516, - 0.23765422561992544, - 0.23707298524251594, - 0.2365046838187604, - 0.23594503706271536, - 0.235392754175446, - 0.2348433041705185, - 0.23432550445550074, - 0.2338751503386601, - 0.2334617482563775, - 0.23307308810737895, - 0.2327051479899797, - 0.23235615582813746, - 0.2320246093087076, - 0.2317098836986428, - 0.2314113019971934, - 0.2311279297840989, - 0.23085896277718596, - 0.23060366138142724, - 0.2303613242306428, - 0.23013128684304565, - 0.22991292477919276, - 0.2297146853773169, - 0.22952934479687145, - 0.2293475567705251, - 0.2291733084556199, - 0.2290074807233828, - 0.2288499694996653, - 0.2287004183662931, - 0.2285584624532705, - 0.22842372539524244, - 0.22829583023859676, - 0.22817443891688596, - 0.2280592155560344, - 0.2279498730615728, - 0.22784605279369086, - 0.22774752190831074, - 0.2276540098703685, - 0.2275652333938164, - 0.2274809866777319, - 0.227401016942629, - 0.2273251044117005, - 0.2272530561852687, - 0.2271846723629524, - 0.22711977610856776, - 0.2270581727811441, - 0.2269996868193365, - 0.22694420157259804, - 0.2268915020430221, - 0.22684148251375144, - 0.2267940095587413, - 0.22674897146336814, - 0.2267062036018745, - 0.2266655982067793, - 0.22662707583457206, - 0.2265905214397187, - 0.22655580276410145, - 0.22652284306535755, - 0.22649157033154285, - 0.2264619063617475, - 0.22643372911224474, - 0.22640697454449585, - 0.22638158310512105, - 0.2263574953168841, - 0.2263346563090751, - 0.22631296173435714, - 0.22629235562231398, - 0.22627279183327784, - 0.2262542231732999, - 0.22623662172319264, - 0.22621990002657896, - 0.2262040215782863, - 0.2261889477113035, - 0.22617467632818666, - 0.2261611259461052, - 0.2261482469924123, - 0.22613601724165197, - 0.22612440709943865, - 0.22611338683956786, - 0.2261029256485424, - 0.2260929952051132, - 0.2260835687741423, - 0.22607462082764745, - 0.2260661270916877, - 0.2260580645135269, - 0.2260504230393544, - 0.22604317055946205, - 0.22603628026484104, - 0.22602973774407306, - 0.22602352680182786, - 0.22601763099965105, - 0.2260120344435997, - 0.2260067386814151, - 0.22600171842636266, - 0.2259969419937333, - 0.2259924045735193, - 0.22598809623974156, - 0.2259840062742808, - 0.2259801238367351, - 0.2259764384567174, - 0.22597294014800898, - 0.22596961941890426, - 0.2259664672562612, - 0.2259634751036116, - 0.2259606348386065, - 0.2259579387511445, - 0.2259553795224889, - 0.22595295020541614, - 0.22595064420535216, - 0.2259484552624787, - 0.2259463774347385, - 0.22594440508170316, - 0.22594253284926574, - 0.22594075565510266, - 0.2259390686748821, - 0.22593746732916306, - 0.2259359472709652, - 0.225934504373972, - 0.2259331347213249, - 0.2259318345949949, - 0.2259306107063139, - 0.22592944530165315, - 0.2259283361464379, - 0.22592728250672256, - 0.2259262821451266, - 0.22592533250968505, - 0.22592443106543056, - 0.225923575376568, - 0.22592276312321025, - 0.2259219921012044, - 0.22592126021775305, - 0.2259205654861554, - 0.2259199060205205, - 0.225919280030682, - 0.22591868581734104, - 0.2259181217674603, - 0.2259175866719873, - 0.22591707937736186, - 0.22591659733771605, - 0.2259161396072136, - 0.2259157050696698, - 0.2259152925790124, - 0.225914901024294, - 0.2259145293449143, - 0.2259141765325237, - 0.2259138416295448, - 0.22591352372689866, - 0.22591322196162364, - 0.2259129355145583, - 0.22591266360811926, - 0.22591703902662386, - 0.22594096655590604, - 0.225962912964372, - 0.2259766856057467, - 0.2259845708505145, - 0.22599048748223735, - 0.22599569069139624, - 0.22600052128360906, - 0.2260050776475591, - 0.2260093944536921, - 0.22601348930603035, - 0.22601737492415994, - 0.22602106234021554, - 0.22602456175317365, - 0.2260278827715401, - 0.2260310344956261, - 0.22603402555705426, - 0.2260368641461929, - 0.22603955803557396, - 0.22604211460143103, - 0.22604454084396655, - 0.22604684340653555, - 0.2260490285938389, - 0.2260511023891893, - 0.2260530704708966, - 0.2260549382278101, - 0.2260567107740809, - 0.2260583929631588, - 0.22605998940108604, - 0.22606150445910786, - 0.22606294228564064, - 0.22606430681762965, - 0.2260656017913344, - 0.2297997081863128, - 0.2318770593208302, - 0.23283681545423654, - 0.23344572051859394, - 0.2339277826724867, - 0.2343676044935926, - 0.2347654770650346, - 0.23517268912065745, - 0.2355832653453307, - 0.23598034246673866, - 0.23635995917269925, - 0.2367217064838056, - 0.2370661076299896, - 0.2373939082072414, - 0.2377058850062083, - 0.2380027955375308, - 0.2382853656734795, - 0.2385542875693967, - 0.23881022031342056, - 0.23906284421884444, - 0.2393000614318653, - 0.2395230887679663, - 0.23973456121497544, - 0.2399355882315982, - 0.2401268247498327, - 0.24030878524666424, - 0.24048192985376265, - 0.240646688455212, - 0.2408034679615645, - 0.2409526549945169, - 0.24109461729489615, - 0.2412297047521505, - 0.24135825029999775, - 0.24148057074597834, - 0.2415969675546839, - 0.24170772759138706, - 0.24181312382921905, - 0.24215397769299285, - 0.24245475373893946, - 0.24263883648461626, - 0.2427849317464416, - 0.2429160730331533, - 0.2430387201120325, - 0.2431548324679156, - 0.2432651449670904, - 0.24337005212855586, - 0.2434698471256317, - 0.2435647867150756, - 0.2436551091917065, - 0.2437410396513163, - 0.2438227918098711, - 0.2439005688744139, - 0.24397456413970786, - 0.24404496149331065, - 0.2441119358792157, - 0.2441756537344025, - 0.24423627340293105, - 0.24429394552957165, - 0.2443488134341999, - 0.2444010134679724, - 0.2444762080641442, - 0.2447172260072881, - 0.24484958840742174, - 0.2449380948910728, - 0.2450120902861457, - 0.2450797351792912, - 0.2451433450116995, - 0.2452036558812441, - 0.2452609736421208, - 0.2453154831936659, - 0.24536733190619675, - 0.24541665229851095, - 0.2454635683679759, - 0.24550819751342065, - 0.24555065126215325, - 0.2455910356651653, - 0.24562945159337965, - 0.24566599499802766, - 0.2457007571525733, - 0.2457338248812891, - 0.24576528077628204, - 0.2457952034038221, - 0.24582366750058895, - 0.2458507441603399, - 0.2458765010114793, - 0.2459010023859753, - 0.24592430948003474, - 0.24594648050695356, - 0.2459675708425129, - 0.2459876331632899, - 0.246006717578227, - 0.24602487175378465, - 0.24604214103299865, - 0.2460585685487301, - 0.24607419533139754, - 0.2460890604114591, - 0.2461032009168924, - 0.246116652165932, - 0.2461294477552837, - 0.24614161964403186, - 0.2461531982334701, - 0.2461642124430261, - 0.2461746897824974, - 0.24618465642076004, - 0.24619413725113146, - 0.24620315595354106, - 0.2462117350536809, - 0.2462198959792629, - 0.2462276591135377, - 0.2462350438462091, - 0.2462420686218603, - 0.2462487509860224, - 0.2462551076289973, - 0.24626115442754465, - 0.2462669064845378, - 0.246272378166683, - 0.24627758314040574, - 0.2462825344059829, - 0.2462872443300137, - 0.2462917246763063, - 0.2462959866352625, - 0.24630004085182386, - 0.246303897452063, - 0.24630756606847146, - 0.2463110558640229, - 0.2463143755550537, - 0.24631753343303844, - 0.2463205373852949, - 0.2463233949146884, - 0.2463261131583672, - 0.2463286989055916, - 0.2463311586146898, - 0.24633349842919014, - 0.24633572419316235, - 0.24633784146581825, - 0.2463398555353946, - 0.2463417714323609, - 0.24634359394198385, - 0.2463453276162808, - 0.2463469767853881, - 0.2463485455683773, - 0.2463500378835401, - 0.24635145745817974, - 0.2463528078379165, - 0.2463540923955459, - 0.24635531433946226, - 0.24635647672167055, - 0.2463575824454112, - 0.2463586342724109, - 0.24635963482978016, - 0.2463605866165758, - 0.24636149201004195, - 0.24636235327154685, - 0.2463631725522337, - 0.2463639518983887, - 0.2463646932565575, - 0.2463653984784046, - 0.2463660693253373, - 0.24636670747290534, - 0.2463673145149885, - 0.2463678919677725, - 0.2463684412735409, - 0.2463689638042755, - 0.2463694608650834, - 0.24636993369745444, - 0.24637038348236506, - 0.2463708113432273, - 0.24637121834869424, - 0.2463716055153285, - 0.24637197381014264, - 0.2463723241530129, - 0.2463726574189789, - 0.24637297444042666, - 0.2463732760091687, - 0.2463735628784235, - 0.24637352680188626, - 0.2463728774115413, - 0.24637273199012136, - 0.2463727491528124, - 0.24637280757846314, - 0.24637287446394604, - 0.2463729411257254, - 0.24637300535400836, - 0.24637306667117895, - 0.2463731250590328, - 0.24637318061734426, - 0.2463732334724631, - 0.24637328375302195, - 0.24637333158364996, - 0.2463733770835134, - 0.2464091665704108, - 0.2464800618116536, - 0.2465105416109087, - 0.24652808206563465, - 0.2465416816668196, - 0.24655379138354225, - 0.24656508875692826, - 0.2465757753433696, - 0.2465859243003783, - 0.2465955734783085, - 0.2940457085554573, - 0.2950520025322981, - 0.2980645286909278, - 0.30151077274046323, - 0.3049694473992836, - 0.3083458685935457, - 0.31160948738001565, - 0.3147532371209417, - 0.31776099522540274, - 0.3206249372126888, - 0.3233212668471736, - 0.32586119450012146, - 0.32827096565364444, - 0.33056575708974395, - 0.3327574476974424, - 0.3348536569678699, - 0.33686327401200017, - 0.3387866590151712, - 0.34062479731281003, - 0.3423716570663449, - 0.3440242118920074, - 0.3455873594376828, - 0.3470757986133409, - 0.34849483559090594, - 0.349847279204388, - 0.3511362015939601, - 0.352364817968198, - 0.35353599996236545, - 0.35464770827384745, - 0.3557028425373817, - 0.3567061351451909, - 0.35766091139089445, - 0.3585706626301263, - 0.35943805312394816, - 0.36026457308990256, - 0.3610519731894832, - 0.3618021264567006, - 0.3625168546416716, - 0.363197842389538, - 0.3638465967211821, - 0.3644649533121911, - 0.3650545128343057, - 0.3656166876936892, - 0.36615285254632185, - 0.366664303850525, - 0.36715243313590223, - 0.3676184899317753, - 0.3680634965121214, - 0.3684883236994881, - 0.3688899873018916, - 0.36927046117837226, - 0.3696320734386104, - 0.3699761578036063, - 0.3703036393451851, - 0.3706153388743032, - 0.3709120227766773, - 0.3711944161334046, - 0.3714632077983731, - 0.3717190530597488, - 0.3719625691254233, - 0.3721942655974862, - 0.37241473164731503, - 0.3726245442047649, - 0.3728242283496071, - 0.37301427608481663, - 0.3731954868420153, - 0.37337384657788897, - 0.3735490399904275, - 0.3737194013417016, - 0.3738847647911291, - 0.3740451800085866, - 0.37419970092533067, - 0.3743406696890991, - 0.37447146956307503, - 0.3745949243245023, - 0.3747121071442893, - 0.3748235359925627, - 0.3749295531428398, - 0.3750304392926044, - 0.3751264481141596, - 0.3752178169984831, - 0.3753047706629722, - 0.37538752260705305, - 0.3754662759062762, - 0.3755412237913364, - 0.37561255014630174, - 0.3756804290213742, - 0.37574501447789505, - 0.3758064700998904, - 0.37586495162259603, - 0.3759206042359486, - 0.3759735651601854, - 0.3760239646946509, - 0.3760719267517743, - 0.3761175692256785, - 0.37616100430113775, - 0.3762023387350672, - 0.37624167412063003, - 0.37627910713745705, - 0.3763147297894189, - 0.32860818727799296, - 0.3276409487720505, - 0.32475249410977697, - 0.32141187373665725, - 0.31803981124039965, - 0.31478735255644136, - 0.3116827072772876, - 0.30872126812816536, - 0.3059099605947819, - 0.3032321953734501, - 0.3006808194472185, - 0.29827580811665866, - 0.2960024658633682, - 0.2938220949235745, - 0.2917197028497047, - 0.2897057578582086, - 0.2878000716299292, - 0.28599292649147623, - 0.28427507076052605, - 0.2826541478491442, - 0.2811338265984161, - 0.2796705985418565, - 0.27827249621721023, - 0.2769428727231, - 0.2756767190971722, - 0.2744708970231485, - 0.27332318518016513, - 0.2722315947558791, - 0.27121273300683657, - 0.2702343944488821, - 0.26929888007191033, - 0.26840732827156805, - 0.2675585748245997, - 0.26675083021929163, - 0.2659821909490506, - 0.2652507867140751, - 0.264554820481586, - 0.2638925771904001, - 0.263262423383006, - 0.2626628043113114, - 0.2620922404344206, - 0.26154932386606417, - 0.2610327149294536, - 0.26054113886004376, - 0.26007338266246993, - 0.2596153235219675, - 0.2591390344727993, - 0.25871157645229864, - 0.2583143073811182, - 0.2579390434916184, - 0.25758273416563543, - 0.25724388226042644, - 0.2569214742803943, - 0.2566146659543876, - 0.25632268896408755, - 0.2560448223956164, - 0.2557803831754899, - 0.25552872211566785, - 0.2552892216544809, - 0.2550612941466512, - 0.2548443803645553, - 0.25463794810951923, - 0.25444149090120244, - 0.2542545267335311, - 0.2540765968916868, - 0.2539072648265289, - 0.25374611508349404, - 0.25359275228326866, - 0.2534468001517284, - 0.2533079005967541, - 0.2531757128296513, - 0.2530499125290324, - 0.25293315997634164, - 0.2528218300768822, - 0.2526923266489918, - 0.2525769583747691, - 0.2524728750407399, - 0.2523755192208973, - 0.2522833595988729, - 0.252195877107395, - 0.2521484384006363, - 0.25208942953039315, - 0.2520242138914369, - 0.2519594612899095, - 0.25189705682170144, - 0.2518374424904655, - 0.251784741467686, - 0.25175685838290435, - 0.25171761807679915, - 0.25167524341027353, - 0.2516334432504178, - 0.2515932380017352, - 0.25155485522016224, - 0.2515182952219318, - 0.25148349546655663, - 0.25145037817901195, - 0.2514188640433241, - 0.2513888760425301, - 0.25136034044165434, - 0.2513331869467842, - 0.251302528843356, - 0.2512702842842208, - 0.251243429301273, - 0.2512191039363537, - 0.2511963142750214, - 0.25117473176006155, - 0.2511542241567339, - 0.2511347180115207, - 0.2511161586300482, - 0.25110892186674444, - 0.2511390760104103, - 0.25114452152819555, - 0.2511469428187993, - 0.25114629800898514, - 0.2511424520031019, - 0.2511378239960778, - 0.2511331403212726, - 0.2511286030520466, - 0.2511242627178361, - 0.25112012641696563, - 0.2511161890568345, - 0.25111244236754765, - 0.2511412276720382, - 0.2511648213581418, - 0.2511743069507064, - 0.2511794300411573, - 0.2511831771468572, - 0.25118641693678906, - 0.251189405286746, - 0.2511922210973843, - 0.2511948919908009, - 0.2511974305661944, - 0.2511998448653578, - 0.25120214140129105, - 0.2512043260419207, - 0.2512064042748621, - 0.2512083812932229, - 0.25121026202934565, - 0.25121205117310164, - 0.2512137531853104, - 0.2512153723093617, - 0.2512169125819365, - 0.2512183778431163, - 0.251219771745961, - 0.25122109776562845, - 0.2512223592080361, - 0.2512235592180999, - 0.2512247007875815, - 0.2512257867625392, - 0.2512268198504336, - 0.2512278026268667, - 0.2512287375420113, - 0.2512296269267156, - 0.251230472998316, - 0.2512312778661633, - 0.2512320435368844, - 0.2512327719193823, - 0.2512334648295951, - 0.2512341239950275, - 0.2512347510590525, - 0.2512353475850097, - 0.2512359150601076, - 0.2512364548991243, - 0.2512369684479375, - 0.2512374569868845, - 0.2512379217339477, - 0.2512383638477924, - 0.2512387844306586, - 0.251239184531106, - 0.251239565146631, - 0.25123992722615024, - 0.2512402716723696, - 0.2512405993440305, - 0.2512409110580558, - 0.2512412075915838, - 0.2512414896839069, - 0.25124175804041743, - 0.25127489119881, - 0.2512948898596972, - 0.25130486191059664, - 0.2513116796679705, - 0.25131739661154195, - 0.2513226135012287, - 0.25132751208818843, - 0.2513321531672432, - 0.25133656232882684, - 0.25134075464242217, - 0.2513447417750761, - 0.2513485340571338, - 0.2513521410938564, - 0.2513555719579586, - 0.2513588352608136, - 0.25136193918798194, - 0.2513879762460653, - 0.25141739026570736, - 0.2514321817486415, - 0.2514421886357955, - 0.2514505361818053, - 0.25145813931695377, - 0.2514652740608592, - 0.2476763308722768, - 0.24513637294951585, - 0.24386055546744925, - 0.24304911817648936, - 0.2424842872626261, - 0.2419271969262932, - 0.24139024627537034, - 0.24087812821670054, - 0.2403912717901308, - 0.2399292677549135, - 0.2394908782632503, - 0.2390752031024902, - 0.2386808140108645, - 0.23830656243813195, - 0.23795157021793104, - 0.23761492483494995, - 0.237295647795008, - 0.2369923574308682, - 0.23670478625883706, - 0.23642928793242146, - 0.23616651417149145, - 0.23591914725484314, - 0.23568524308573574, - 0.23546357921417496, - 0.2352533813299869, - 0.23505402972811, - 0.2348649293563291, - 0.23468558241077034, - 0.2345154280800244, - 0.2343539889735124, - 0.2342008973940055, - 0.23405571625384874, - 0.2339179243128785, - 0.2337872899549069, - 0.2336633713474376, - 0.2335457895785201, - 0.23343426305956386, - 0.2333284727345181, - 0.2332281769418893, - 0.23313294242412425, - 0.2330426319638643, - 0.2329569813941243, - 0.2328757429679165, - 0.2327987097512035, - 0.23272559158663786, - 0.2326562740173743, - 0.2325904677527857, - 0.2325280731141676, - 0.23246895118025265, - 0.2324127854633125, - 0.2323594917859651, - 0.23230898289503105, - 0.23226106445115036, - 0.2322157155170374, - 0.23217261066877976, - 0.2321316797108117, - 0.23209283455756585, - 0.23205609777296746, - 0.23202120309495694, - 0.23198806486305476, - 0.2319566147016745, - 0.2319268839303245, - 0.2318986497262437, - 0.2318718281503188, - 0.2318463694500633, - 0.231822211701985, - 0.2317993082046351, - 0.2317776047921334, - 0.23175701638537105, - 0.23173747832320316, - 0.2317189874885647, - 0.2317014129518197, - 0.23168472603335816, - 0.23166889107916586, - 0.23165400148683876, - 0.23163982566978875, - 0.2316263429004275, - 0.23161353969246185, - 0.23160138885247214, - 0.2315898595394929, - 0.23157892077762515, - 0.23156854259525456, - 0.2315586963586717, - 0.23154935483446296, - 0.2315404921622801, - 0.2315320837995951, - 0.23152410645931104, - 0.2315165396815144, - 0.23150937100194674, - 0.23150261061075336, - 0.2314962713819515, - 0.2314902009162283, - 0.2314844197635625, - 0.23147892749906876, - 0.2314737142370783, - 0.23146876735013594, - 0.2314640737530502, - 0.2314596206555716, - 0.2314553957952743, - 0.2314513874948509, - 0.2314475846608019, - 0.2314439767632636, - 0.2314405538104379, - 0.2314373063221372, - 0.23143422530393964, - 0.23143130222242286, - 0.2314285289815744, - 0.23142589790038465, - 0.2314234016915807, - 0.231421033441442, - 0.2314187865906528, - 0.23141665491613894, - 0.23141463251382416, - 0.2314127145237869, - 0.2314108946706609, - 0.2314091678812037, - 0.231407529531316, - 0.23140597513876296, - 0.2314045004172454, - 0.2314031012886668, - 0.2314017738800612, - 0.23140051451566315, - 0.2313993197076783, - 0.23139818614694616, - 0.23139711069388666, - 0.2313960903698393, - 0.2313951223488276, - 0.23139420394973656, - 0.23139333262888745, - 0.2313925059729932, - 0.2313917216924731, - 0.2313909776151163, - 0.23139027168005885, - 0.2313896019320819, - 0.2313889665161918, - 0.23138836367248355, - 0.2313877917312692, - 0.2313872491084497, - 0.23138673430112755, - 0.2313862458834487, - 0.2313857825026469, - 0.23138534287530235, - 0.2313849257837837, - 0.2313845300728779, - 0.2313841546465893, - 0.23138379846510396, - 0.2313834605419098, - 0.23138313994106474, - 0.2313828357746042, - 0.2313825472000824, - 0.23138227341823764, - 0.2313820136707791, - 0.231381767238288, - 0.2313815334382227, - 0.2313813116230299, - 0.2313811011783501, - 0.2313809015213184, - 0.23138071209894506, - 0.2313805323865917, - 0.2313803618865095, - 0.2313802001264656, - 0.2313800466584364, - 0.23137990105736386, - 0.2313797629199768, - 0.23137963186367802, - 0.2313795075254832, - 0.23137938956101356, - 0.2313792776435444, - 0.2313791714630988, - 0.23137907072559144, - 0.23137897515200925, - 0.23137888447764424, - 0.2313787984513557, - 0.2313787168348787, - 0.2313786394021603, - 0.2313785659387361, - 0.23137849624113524, - 0.2313784301163172, - 0.2313783673811376, - 0.23137830786183824, - 0.23137825139356966, - 0.23137819781993235, - 0.2313781469925437, - 0.2313780987706285, - 0.2313780530206273, - 0.23137800961582586, - 0.2313779684360064, - 0.23137792936711424, - 0.23137789230094005, - 0.23137785713482226, - 0.23137782377136296, - 0.2313777921181543, - 0.23137776208752725, - 0.2313777335963057, - 0.2313777065655789, - 0.2313776809204793, - 0.23137765658997905, - 0.2313776335066887, - 0.23137761160667575, - 0.23137759082928444, - 0.23414835354906896, - 0.2359810776493902, - 0.2369335176704826, - 0.2375479949974015, - 0.23804918177635015, - 0.2385060086382607, - 0.2389335910306885, - 0.2393378572855763, - 0.2397215168190287, - 0.2400861247427256, - 0.24043280360432825, - 0.2407624966687941, - 0.2410760576780309, - 0.24139186708154514, - 0.2416972554059873, - 0.2419782932955741, - 0.2422418798362897, - 0.2424912784748567, - 0.2427280273068136, - 0.2429530395099863, - 0.24316699182650164, - 0.24337046100541895, - 0.24356397225385734, - 0.2437480169526707, - 0.2439230596111077, - 0.24408954102989705, - 0.2442478801056949, - 0.2443984751273275, - 0.2445417048621473, - 0.24467792953815715, - 0.2448074917602771, - 0.2449307173755832, - 0.2450479162940558, - 0.2451799488088988, - 0.2453210912833919, - 0.2454394647124972, - 0.24554605071771496, - 0.245645326708239, - 0.24573901439358975, - 0.2458278628822145, - 0.2459122748321558, - 0.2459925251749389, - 0.24606883772184224, - 0.24614141219802066, - 0.2462195539936005, - 0.2464468852121547, - 0.24659781684076884, - 0.24670608476705275, - 0.24679665694010214, - 0.2468784727899787, - 0.2469547734695373, - 0.2470268086182375, - 0.24709512841982165, - 0.2471600338414345, - 0.2472217336996228, - 0.2472803996194009, - 0.247336185423165, - 0.2473892341205385, - 0.24743968056875865, - 0.2474876526142896, - 0.2475332716949889, - 0.24757665324438805, - 0.2476179070175167, - 0.2476571373803281, - 0.2476944435778232, - 0.2477299199865395, - 0.2477636563538045, - 0.2477957380249464, - 0.24782624615926024, - 0.24798210751721544, - 0.248164700684112, - 0.24826909298666475, - 0.2483430646029412, - 0.2484046027972362, - 0.24846034572043424, - 0.2485159233317037, - 0.2485667848222839, - 0.24861418246082265, - 0.2486589121249388, - 0.24870132464816266, - 0.2487416103143126, - 0.2487799002496416, - 0.24881630183110626, - 0.24885091114429445, - 0.2488838174607593, - 0.2489151049356283, - 0.24894485333256625, - 0.2489731384042077, - 0.24900003214656755, - 0.24902560300367346, - 0.24904991604917434, - 0.24908572048135685, - 0.2491598039397705, - 0.24920698639769875, - 0.24924200040667996, - 0.2492718577449463, - 0.2492990533789008, - 0.2493244964484617, - 0.2493485433441984, - 0.2493713565659832, - 0.2493963791784865, - 0.24942556908845004, - 0.2494494282245777, - 0.2494705737067075, - 0.2494901422787044, - 0.24950856136131025, - 0.2495260089762201, - 0.2495425751032659, - 0.2495583177743865, - 0.2495732826126623, - 0.24958750967940785, - 0.2496010359126201, - 0.2496138960321051, - 0.2496261229094932, - 0.2496377477497655, - 0.2496488002047341, - 0.2496593084604278, - 0.2496692993130459, - 0.24967879823870465, - 0.2496878294588938, - 0.249696416002406, - 0.2497045797641211, - 0.2497123415608547, - 0.2497197211844459, - 0.2497267374522279, - 0.2497334082550117, - 0.2497397506027028, - 0.2497457806676816, - 0.2497515138260345, - 0.249756964696766, - 0.24976214717907444, - 0.2497670744877921, - 0.2497717591870832, - 0.2497762132224824, - 0.249780447951353, - 0.2497844741718461, - 0.24978830215044, - 0.2497919416481112, - 0.2497954019452307, - 0.2497986918652245, - 0.24980181979707225, - 0.2498047937167014, - 0.24980762120732064, - 0.24981030947876104, - 0.2498128653858555, - 0.2498152954459233, - 0.2498176058553845, - 0.2498198025055612, - 0.2498218909977013, - 0.2498238766572582, - 0.24982621581135386, - 0.2498328934990831, - 0.2498372930170133, - 0.24984193845195024, - 0.2498453543099527, - 0.2498481379473018, - 0.24985062247244855, - 0.2498529284064208, - 0.24985510126853536, - 0.2498571603576217, - 0.2498591156998664, - 0.24986097393935916, - 0.2498627403905657, - 0.24986441975833834, - 0.2498660163950981, - 0.2498675343970336, - 0.24986897764408075, - 0.2498703498200683, - 0.2498716544256701, - 0.24987289478857036, - 0.2498740740723769, - 0.2498751952848376, - 0.2498762612855666, - 0.2498772747933529, - 0.2498782383931011, - 0.2498791545424281, - 0.2498800255779283, - 0.24988085372113605, - 0.2498816410841919, - 0.24988238967522705, - 0.24988310140348824, - 0.24988443856811465, - 0.24989630627226705, - 0.24990303440925055, - 0.24990699310636585, - 0.2499099035191279, - 0.24991237443166156, - 0.2499146208803213, - 0.24991672102587045, - 0.24991870535919675, - 0.2499205876641409, - 0.2499223757695353, - 0.2499240752878453, - 0.2499256909198432, - 0.24992722691434044, - 0.2499286872343938, - 0.2499300756213239, - 0.2499313956229711, - 0.2499326506092367, - 0.2499338437829335, - 0.29813823570477144, - 0.2990645532793753, - 0.30178343194832336, - 0.3050078565469889, - 0.3082953688688668, - 0.3114979584112624, - 0.3145695275048955, - 0.3174990824381732, - 0.3202875632107554, - 0.3229398163487731, - 0.32546182347207114, - 0.32785962937323354, - 0.330138629194718, - 0.3323048925736032, - 0.3343641916328338, - 0.33632187740982755, - 0.3381829782321668, - 0.3399521343051186, - 0.34163303465228434, - 0.34323031249047825, - 0.3447484031225524, - 0.3461913464362739, - 0.34756290242057064, - 0.3488666168641859, - 0.3501058503224051, - 0.35128379369904805, - 0.35240347888013834, - 0.3534677873821581, - 0.3544794580626869, - 0.3554410942715637, - 0.356355170586145, - 0.3572240391917114, - 0.3580499359387217, - 0.3588349860978391, - 0.35958120982940217, - 0.3602905273820681, - 0.3609646798752749, - 0.36160514442620817, - 0.36221372532062296, - 0.3627920909490425, - 0.3633417703015041, - 0.3638641962996408, - 0.36436072372354, - 0.36483263770386426, - 0.3652811587935947, - 0.3657074467368061, - 0.3661126036819689, - 0.3664976771067143, - 0.3668636625523125, - 0.3672115055598471, - 0.3675420923987685, - 0.3678562795728728, - 0.3681548860051204, - 0.3684386863451487, - 0.3687084154368411, - 0.3689647711990571, - 0.3692084163973399, - 0.3694399187568195, - 0.3696598595595682, - 0.3698688524199797, - 0.37006745663298496, - 0.3702561936563181, - 0.3704355554970497, - 0.370606008476508, - 0.37076799531573296, - 0.3709219365923824, - 0.3710682319406707, - 0.3712072611267925, - 0.37133938504810604, - 0.3714649466746595, - 0.3715842719411269, - 0.3716976705934622, - 0.3718054369931372, - 0.3719078508813263, - 0.37200517810508144, - 0.3720976713074372, - 0.3721855705832197, - 0.3722691041022933, - 0.3723484887018445, - 0.3724239304492507, - 0.37249562517699264, - 0.3725637589909967, - 0.3726285087537354, - 0.3726900425433201, - 0.3727485200898101, - 0.3728040931898332, - 0.3728569061006272, - 0.3729070959145005, - 0.3729547929147005, - 0.3730001209136001, - 0.3730431975740954, - 0.373084134715034, - 0.3731230386014757, - 0.3731600102205394, - 0.3731951455435408, - 0.3732285357751205, - 0.3732602675899932, - 0.3732904233579372, - 0.3733190813576111, - 0.3733463159797516, - 0.3251816225847713, - 0.32433251994303997, - 0.32168866160477155, - 0.3185286447861208, - 0.3152917650991993, - 0.3121221479762297, - 0.30908882363690704, - 0.3061968786351081, - 0.3034459905654792, - 0.30083133301004683, - 0.2983462444668065, - 0.2959843274843937, - 0.29373948527885085, - 0.2916059175707036, - 0.2895781095968081, - 0.2876243606481473, - 0.28576522719197656, - 0.28400911651729555, - 0.2823438701494063, - 0.2807623850778957, - 0.27925960599792715, - 0.2778313214603739, - 0.2764737357717625, - 0.2751833134435945, - 0.2739567191643211, - 0.2727907914239036, - 0.2716825281623641, - 0.2706290768730422, - 0.2696277265036163, - 0.268708877450401, - 0.2679715397974929, - 0.26719779932801363, - 0.2664304341737116, - 0.2656899757589075, - 0.2649823930493877, - 0.26430859396886325, - 0.2636677842011885, - 0.26305863267283697, - 0.2624796740623501, - 0.2619294461530135, - 0.2614065351187033, - 0.2609095889205185, - 0.2604373197320937, - 0.25998850266101503, - 0.25956197328774605, - 0.2591566248935415, - 0.25877140567538026, - 0.2583843037385105, - 0.2579933286498697, - 0.2576410762288112, - 0.2573136928998735, - 0.2570051003438703, - 0.2567126836664268, - 0.2564350585064843, - 0.2561712903437418, - 0.2559206229582235, - 0.2556823832935231, - 0.25545594745484257, - 0.25524072792724806, - 0.2550361681913081, - 0.2548417399475133, - 0.2546569412891227, - 0.25448129524628155, - 0.2543143484994744, - 0.2541556701903552, - 0.25400485080313423, - 0.2538615011053968, - 0.2537252511427837, - 0.2535957492839396, - 0.2534726613129381, - 0.2533556695667063, - 0.2532444721151984, - 0.2531387819821743, - 0.2530383264045753, - 0.2529364211049446, - 0.25282324542930923, - 0.25272574529860026, - 0.25263721337366835, - 0.2525544978999525, - 0.2524763700332921, - 0.2524022777189262, - 0.25233190904688874, - 0.2522650410569569, - 0.25220148721352914, - 0.2521410789797371, - 0.2520836591846085, - 0.2520288916055157, - 0.25197665792018337, - 0.2519271678802795, - 0.2518801861484121, - 0.25183554893740684, - 0.25179312652945723, - 0.25175280463568833, - 0.2517144777326153, - 0.25167804659056897, - 0.25164341725858363, - 0.2516105005602756, - 0.2515792117737692, - 0.2515494703824148, - 0.2515254726731128, - 0.25151533340632265, - 0.2514981866235816, - 0.25147874654925984, - 0.25145917913043964, - 0.2514402038410278, - 0.2514220376003434, - 0.2514047253691836, - 0.2513882542308956, - 0.25137259269742224, - 0.2513577042074982, - 0.25134355171983785, - 0.2513300992357371, - 0.2513173122648653, - 0.251305157929229, - 0.2512936049450437, - 0.251282623565137, - 0.251272185510264, - 0.2512622638990185, - 0.2512528331795452, - 0.2512438690640594, - 0.251235348466407, - 0.25122724944265185, - 0.25121955113457106, - 0.2512122337159425, - 0.25120527834148604, - 0.2511986670983311, - 0.25119238295988017, - 0.25118640974196244, - 0.25118073206115304, - 0.2511753352951518, - 0.2511702055451273, - 0.25116532959992033, - 0.251160694902022, - 0.2511562895152307, - 0.2511521020939125, - 0.25121688106722045, - 0.25126911781645705, - 0.2512945002144156, - 0.25131005007837104, - 0.25132187254306204, - 0.2513320899635796, - 0.25134144958050003, - 0.2513502239932396, - 0.2513585214998336, - 0.2513663930708949, - 0.2513738692459653, - 0.2513809728808171, - 0.25138772357183803, - 0.2513941392109221, - 0.2514002365500937, - 0.25140603142346823, - 0.25141153884978523, - 0.25141677309249555, - 0.2514217477039929, - 0.25142647556321474, - 0.2514309689098509, - 0.2514352393763312, - 0.2514392980180401, - 0.2514431553419716, - 0.251446821333946, - 0.2514503054844584, - 0.2514536168132561, - 0.2514567638926858, - 0.2514597548698861, - 0.25146259748787997, - 0.2514652991056171, - 0.2514678667170281, - 0.2514703069691289, - 0.2514726261792277, - 0.25147483035128176, - 0.2514769251914359, - 0.2514789161227999, - 0.2514808082994831, - 0.25148260661993993, - 0.2514843157396497, - 0.2514859400831729, - 0.2514874838555978, - 0.2514889510534325, - 0.25149034547494914, - 0.2514916707300182, - 0.2514929302494497, - 0.2514941272938798, - 0.2514952649622101, - 0.25149634619962763, - 0.2514973738052337, - 0.25149835043928626, - 0.2514992786300901, - 0.25150016078053977, - 0.2515009991743394, - 0.2515017959819176, - 0.2515025532660446, - 0.2515032729871737, - 0.2515039570085129, - 0.2515046071008523, - 0.25150522494714794, - 0.25150581214687473, - 0.2515063892094011, - 0.2515104055532425, - 0.2515130094844321, - 0.25151461605678915, - 0.24973549297808825, - 0.2484668849239761, - 0.2477770688010845, - 0.2473186217520701, - 0.24707580238188115, - 0.2468156802050485, - 0.2465567839661164, - 0.24630672861727906, - 0.24606790407626614, - 0.24584078465747536, - 0.2456251565374811, - 0.2454205711890142, - 0.245226512240228, - 0.2450424562752178, - 0.24486789441416565, - 0.2447023394192261, - 0.24454532748657634, - 0.24439641811418, - 0.24425519329809886, - 0.2441212565191284, - 0.2439942316887373, - 0.2438737621149643, - 0.24375950950893355, - 0.2436511530379186, - 0.2435483884255265, - 0.24345092709767024, - 0.24335849537237264, - 0.2432708336912957, - 0.24318769589089345, - 0.2431088485111636, - 0.24303407014007256, - 0.24296315079180594, - 0.2428958913171051, - 0.24283210284403586, - 0.2427716062476144, - 0.2427142316468036, - 0.24265981792747365, - 0.24260821228997026, - 0.2425592698200379, - 0.2425128530818898, - 0.2424688317322652, - 0.24242708215441844, - 0.2423874871109833, - 0.24234993541476504, - 0.242314321616506, - 0.2422805457087812, - 0.24224851284515944, - 0.24221813307387036, - 0.2421893210852044, - 0.2421619959719574, - 0.2421360810022351, - 0.24211150340397705, - 0.24208819416060906, - 0.2420660878172357, - 0.2420451222968349, - 0.2420252387259421, - 0.24200638126932186, - 0.24198849697318264, - 0.2419715356164707, - 0.24195544956984866, - 0.2419401936619434, - 0.24192572505250354, - 0.24191200311209715, - 0.2418989893080209, - 0.2418866470960941, - 0.2418749418180396, - 0.24186384060416186, - 0.2418533122810437, - 0.2418433272840048, - 0.2418338575740852, - 0.24182487655930854, - 0.2418163590200069, - 0.24180828103799984, - 0.24180061992943555, - 0.2417933541810854, - 0.2417864633899361, - 0.2417799282058955, - 0.2417737302774544, - 0.24176785220015415, - 0.2417622774677132, - 0.2417569904256758, - 0.2417519762274511, - 0.2417472207926236, - 0.2417427107674162, - 0.241738433487185, - 0.2417343769408608, - 0.24173052973722015, - 0.2417268810728957, - 0.2417234207020403, - 0.24172013890755506, - 0.24171702647380386, - 0.2417140746607335, - 0.2417112751793321, - 0.24170862016834985, - 0.2417061021722271, - 0.24170371412015554, - 0.24170144930622486, - 0.2416993013705907, - 0.2416972642816168, - 0.2416953323189343, - 0.2416935000573819, - 0.24169176235176876, - 0.24169011432242915, - 0.2416885513415155, - 0.2416870690200089, - 0.2416856631953888, - 0.24168432991994565, - 0.2416830654496972, - 0.2416818662338727, - 0.2416807289049434, - 0.24167965026916646, - 0.2416786272976143, - 0.24167765711767195, - 0.2416767370049683, - 0.2416758643757257, - 0.24167503677950786, - 0.24167425189233255, - 0.2416735075101525, - 0.24167280154266035, - 0.24167213200742302, - 0.2416714970243129, - 0.2416708948102275, - 0.2416703236740839, - 0.24166978201207104, - 0.2416692683031415, - 0.2416687811047446, - 0.2416683190487759, - 0.2416678808377295, - 0.2416674652410621, - 0.2416670710917339, - 0.24166669728292894, - 0.24166634276495244, - 0.24166600654227915, - 0.24166568767075935, - 0.2416653852549665, - 0.2416650984456841, - 0.2416648264375209, - 0.2416645684666479, - 0.241664323808655, - 0.241664091776516, - 0.2416638717186592, - 0.241663663017138, - 0.2416634650858963, - 0.24166327736912135, - 0.24166309933968386, - 0.24166293049765736, - 0.2416627703689157, - 0.2416626185038001, - 0.2416624744758558, - 0.24166233788063785, - 0.24166220833457064, - 0.2416620854738757, - 0.24166196895354636, - 0.2416618584463815, - 0.24166175364206435, - 0.2416616542462925, - 0.2416615599799542, - 0.2416614705783361, - 0.24166138579038934, - 0.2416613053780225, - 0.24166122911542645, - 0.2416611567884485, - 0.24166108819398602, - 0.24166102313941895, - 0.2416609614420671, - 0.24166090292867706, - 0.24166084743493715, - 0.24166079480501515, - 0.2416607448911193, - 0.2416606975530866, - 0.2416606526579871, - 0.2416606100797508, - 0.2416605696988123, - 0.2416605314017779, - 0.24166049508110574, - 0.2416604606348037, - 0.24166042796614146, - 0.2416603969833824, - 0.241660367599524, - 0.24166033973205325, - 0.24166031330271506, - 0.2416602882372929, - 0.24166026446540015, - 0.24166024192028354, - 0.2416602205386324, - 0.24166020026040666, - 0.2416601810286614, - 0.24166016278939284, - 0.2416601454913816, - 0.24166012908605375, - 0.24166011352734196, - 0.24166009877155498, - 0.2416600847772569, - 0.2416600715051508, - 0.24166005891796646, - 0.24166004698035826, - 0.24166003565880376, - 0.24166002492151106, - 0.2416600147383281, - 0.2416600050806613, - 0.24318408113872084, - 0.2442384830290167, - 0.2447907067384407, - 0.2451337827313032, - 0.24539914256045955, - 0.2456468171796632, - 0.2458806318763221, - 0.2461021563146157, - 0.24631233571576794, - 0.2465118635469097, - 0.2467013218162054, - 0.2468812345340007, - 0.2470520885741905, - 0.24721434227093345, - 0.24736842937763925, - 0.24751476124996755, - 0.247653728327749, - 0.24778973649055716, - 0.2479533072009869, - 0.2480933922270665, - 0.2482185121442481, - 0.2483343493615199, - 0.24844323579943625, - 0.2485462205316069, - 0.24864386278787956, - 0.2487365298101529, - 0.24882450893332636, - 0.24890989999896584, - 0.24899406223656556, - 0.24907191549803626, - 0.2491449725539289, - 0.2492140217910725, - 0.2492794707825445, - 0.24934157795157086, - 0.2494005404860347, - 0.2494565275679447, - 0.2495096930841895, - 0.2495601806328185, - 0.2496081256290641, - 0.2496536563126273, - 0.24969689433212944, - 0.24973795516063466, - 0.2497769484379669, - 0.24981397827618515, - 0.2498491435423304, - 0.24988253812418096, - 0.2499142511815927, - 0.24994436738479844, - 0.2499729671405601, - 0.25000012680688244, - 0.2500259188968913, - 0.2500531286425925, - 0.250078273762977, - 0.25010139962122924, - 0.2501230748020023, - 0.25014355122264564, - 0.2501629563255961, - 0.2501813692020305, - 0.2501988492412925, - 0.25021544694981523, - 0.2502312080820132, - 0.250246175260374, - 0.25026038865075795, - 0.2502738862801241, - 0.2502867042169665, - 0.25029887669719, - 0.2503104362266154, - 0.2503214136719256, - 0.25033183834464423, - 0.2503417380799794, - 0.2503511393113719, - 0.25036006714114944, - 0.2503685454075942, - 0.2503765967485937, - 0.25038424266209863, - 0.2503915035635223, - 0.25039839884025383, - 0.25040494690342546, - 0.25041116523707263, - 0.2504170704448161, - 0.25042267829419623, - 0.25042800375877644, - 0.2504330610581205, - 0.2504378636957625, - 0.2504424244952627, - 0.25044675563444785, - 0.2504508686779256, - 0.2504547746079663, - 0.25045848385382385, - 0.2506320602862792, - 0.25077256449092594, - 0.25084996315679065, - 0.2509020835509355, - 0.2509435714205267, - 0.2509799698287733, - 0.2510134092051353, - 0.2510452853891044, - 0.2510753515197174, - 0.25110364429566545, - 0.2511304108419511, - 0.25115578888884305, - 0.25117987128232044, - 0.25120273197252485, - 0.2512244358577861, - 0.251245042568538, - 0.2512646079783208, - 0.25128318485941903, - 0.2513008232138591, - 0.2513175704785935, - 0.2513334716795002, - 0.2513485695623251, - 0.2513629047112847, - 0.2513765156595512, - 0.2513894389933425, - 0.25140170945046475, - 0.2514133600137556, - 0.2514244219997718, - 0.2514349251429765, - 0.25144489767566824, - 0.2514543664038736, - 0.2514633567793974, - 0.2514718929682392, - 0.2514799979155529, - 0.2514876934073204, - 0.25149500012891274, - 0.25150193772069296, - 0.2515085248308068, - 0.25151477916531284, - 0.2515207175357717, - 0.2515263559044392, - 0.2515317094271671, - 0.2515367924941495, - 0.2515416187685964, - 0.25154620122346505, - 0.2515505521763269, - 0.25155468332248193, - 0.25155860576639105, - 0.25156233005152745, - 0.2515658661887161, - 0.2515692236830425, - 0.25157241155940285, - 0.2515754383867642, - 0.25157831230119393, - 0.2515810410277342, - 0.25158363190116073, - 0.251586091885705, - 0.2515884275937702, - 0.2515906453037059, - 0.2515927509766849, - 0.2515947502727249, - 0.2515966485659061, - 0.2515984509588135, - 0.2516001622962521, - 0.25160178717827303, - 0.25160332997253565, - 0.2516047948260481, - 0.2516061856763173, - 0.2516075062619276, - 0.2516087601325949, - 0.2516099506587039, - 0.25161108104037344, - 0.2516121543160524, - 0.25161317337069, - 0.2516141409434919, - 0.2516150596352781, - 0.25161593191547965, - 0.2516167601287732, - 0.2516175465013851, - 0.2516182931470728, - 0.25161900207280874, - 0.25161967518417583, - 0.2516203142904869, - 0.2516209211096516, - 0.2516214972727907, - 0.25162204432862273, - 0.25162256374762465, - 0.25162305692598885, - 0.2516235445791902, - 0.2516253122531549, - 0.25162654078468955, - 0.25162739234644305, - 0.2516280819111991, - 0.2516286921084803, - 0.2516292548146407, - 0.2516297828569179, - 0.2516302818887625, - 0.2516307548360327, - 0.2516312035629661, - 0.25163162949766593, - 0.2516320338681288, - 0.2516324177924236, - 0.2516327823142194, - 0.25163312841775154, - 0.25163345703502177, - 0.2516337690500105, - 0.2516340653016837, - 0.25163434658649186, - 0.25163461366060097, - 0.25163486724195433, - 0.2516351080122198, - 0.299991052141918, - 0.3007928578355393, - 0.30333236127063795, - 0.3064098004801856, - 0.3095810806914125, - 0.3126854412867265, - 0.3156678794312247, - 0.31851270714453145, - 0.32121870074776504, - 0.3237898149617292, - 0.32623171929939265, - 0.3285505131818073, - 0.3307522559391985, - 0.3328428010888496, - 0.33482774396063264, - 0.3367124112509829, - 0.3385018658043781, - 0.34020073399969325, - 0.3418130751332671, - 0.3433435325802377, - 0.3447964239538281, - 0.3461757407517082, - 0.3474852314362117, - 0.34872843935661824, - 0.34990872274799434, - 0.3510292677086097, - 0.3520930982660144, - 0.35310308508778354, - 0.354061953434072, - 0.3549722905885971, - 0.3558365528688505, - 0.35665707226475984, - 0.3574360627350455, - 0.3581756261825472, - 0.3588777581262371, - 0.3595442766068007, - 0.3601767499903194, - 0.3607770194495993, - 0.36134679674194464, - 0.3618876581960401, - 0.3624010815864898, - 0.3628884627353525, - 0.3633511240367149, - 0.3637903198243527, - 0.3642072404419899, - 0.3646030157214075, - 0.36497871813902294, - 0.3653353657577613, - 0.3656739249991833, - 0.36599531326728346, - 0.3663004014363046, - 0.3665900162112865, - 0.3668649423684777, - 0.36712592488196, - 0.3673736709423681, - 0.3676088345919856, - 0.3678319754045501, - 0.3680437348062097, - 0.36824471792693664, - 0.3684354826006643, - 0.3686165519180988, - 0.3687884199760107, - 0.3689515548544591, - 0.3691064005060872, - 0.3692533781960804, - 0.36939288773568224, - 0.3695253086027467, - 0.3696510009863927, - 0.3697703067714272, - 0.3698835504700432, - 0.36999104010516304, - 0.3700930680485123, - 0.370189911815965, - 0.3702818348224269, - 0.3703690870983297, - 0.3704519059697255, - 0.3705305167038092, - 0.3706051331216514, - 0.3706759581797877, - 0.3707431845222613, - 0.3708069950046145, - 0.3708675631912545, - 0.3709250538275523, - 0.3709796232879443, - 0.3710314200012745, - 0.37108058485452, - 0.3711272515760015, - 0.3711715470991244, - 0.3712135919076409, - 0.37125350036336174, - 0.3712913810172216, - 0.3713273369045381, - 0.3713614658252647, - 0.3713938606100124, - 0.37142460937254207, - 0.3714537957494376, - 0.3714814991275969, - 0.371507794860165, - 0.3715327544714903, - 0.3715564458516761, - 0.3232322329224647, - 0.3224858140566475, - 0.3200010126689307, - 0.3169716498282634, - 0.3138407075846085, - 0.31075481759110385, - 0.3077965087919434, - 0.30497837911527376, - 0.30229947679825225, - 0.2997550496474116, - 0.2973391461363996, - 0.2950455747053776, - 0.2928682539311144, - 0.2908013341135764, - 0.2888392333727923, - 0.2869585720075436, - 0.2851631757672948, - 0.2834694720099522, - 0.2818657985652321, - 0.28034490962875275, - 0.2789016044639869, - 0.27753157709571125, - 0.2762309764363083, - 0.2749962352102116, - 0.2738240000441481, - 0.2727110998018977, - 0.2716545285425228, - 0.27065143422615673, - 0.26969910982415524, - 0.2687949855667822, - 0.26793662184122397, - 0.2671217025458347, - 0.2663480288170593, - 0.2656135130874743, - 0.2649161734496817, - 0.2642541283073785, - 0.26362559129787383, - 0.2630288664718633, - 0.2624623437172679, - 0.2619244944147245, - 0.2614138673129868, - 0.26092908461308045, - 0.260468838250659, - 0.26003188636652, - 0.2596170499557597, - 0.2592232096865221, - 0.25883357865365325, - 0.2584506394353676, - 0.25809890849168604, - 0.2577697359880472, - 0.2574589882060546, - 0.2571646112354887, - 0.25688535772623433, - 0.2566203063563873, - 0.2563686807705813, - 0.2561297806651613, - 0.2559029548982372, - 0.255687590381366, - 0.255483106929678, - 0.2552889543918501, - 0.25510461068085394, - 0.2549295801870122, - 0.2547633923770587, - 0.2546056005035773, - 0.2544557803944637, - 0.25431352930908274, - 0.2541784648542978, - 0.2540502239560372, - 0.2539284618831011, - 0.2538128513204065, - 0.2537030814890849, - 0.2535988573110531, - 0.2534998986157913, - 0.25340593938720624, - 0.25331672704853303, - 0.25323202178337184, - 0.25315159589102565, - 0.2530752331744083, - 0.2530027283588671, - 0.2529338865403787, - 0.2528685226616162, - 0.252806461014485, - 0.2527475347677935, - 0.25269158551878657, - 0.2526384628673328, - 0.2525880240116285, - 0.2525401333643214, - 0.2524946621880335, - 0.2524514882492945, - 0.25241049548995986, - 0.2523715737152283, - 0.2523346182974214, - 0.25229952989473026, - 0.2522662141841653, - 0.25223458160800666, - 0.2522045471330544, - 0.2521760300220517, - 0.252164528872993, - 0.2521505545408743, - 0.2521325383977405, - 0.25211362687475314, - 0.2520949930751317, - 0.2520770417070957, - 0.2520599068276397, - 0.2520436042955915, - 0.25202811314859364, - 0.2520134002699281, - 0.2519994292756983, - 0.2519861637726696, - 0.2519735685156486, - 0.2519616097822323, - 0.251950255457729, - 0.2519394750144635, - 0.2519292394542143, - 0.25191952123938405, - 0.25191029422234384, - 0.25190153357636563, - 0.2518932157292996, - 0.2518853183003311, - 0.25187782003982445, - 0.2518707007721767, - 0.2518639413415356, - 0.2518575235602635, - 0.25185143015999906, - 0.2518456447451951, - 0.2518401517490028, - 0.25183493639138355, - 0.2518299846393458, - 0.25182528316918185, - 0.2518208193306182, - 0.2518165811127773, - 0.2518125571118621, - 0.2518087365004699, - 0.2518051089984601, - 0.25180166484529154, - 0.2517983947737613, - 0.2517952899850681, - 0.2517923421251386, - 0.2517895432621506, - 0.2517868858651868, - 0.2517843627839722, - 0.25178196722963914, - 0.2517796927564552, - 0.2517775332444813, - 0.2517754828831063, - 0.25177353615541104, - 0.2517716878233247, - 0.2517699329135289, - 0.2517682667040774, - 0.25176668471169, - 0.2517651826796922, - 0.2517637565665564, - 0.251762402535032, - 0.2517611169418181, - 0.2517598963277625, - 0.2517587374085509, - 0.25175763706587423, - 0.2517565923390329, - 0.2517556004169738, - 0.2517546586307277, - 0.2517537644462239, - 0.25175291545747497, - 0.25175210938010184, - 0.251751344045188, - 0.2517506173934427, - 0.25174992746965835, - 0.2517492724174548, - 0.2517486504742779, - 0.2517480599666625, - 0.25174749930572626, - 0.2517469669828941, - 0.251746461565843, - 0.2517459816946437, - 0.2517455260781056, - 0.2517450934902967, - 0.2517446827672519, - 0.25174429280383515, - 0.25174392255077, - 0.251743571011814, - 0.25174323724108044, - 0.25174292034049, - 0.2517426194573565, - 0.2517423337820907, - 0.2517420625460264, - 0.2517418050193453, - 0.25174156050911994, - 0.2517413283574451, - 0.25174110793966803, - 0.25174089866271115, - 0.25174069996346954, - 0.25174051130730385, - 0.2517403321865954, - 0.251740162119383, - 0.2517400006480647, - 0.2517398473381702, - 0.25173970177718713, - 0.2517395635734531, - 0.25173943235510404, - 0.2517393077690689, - 0.2517391894801219, - 0.2526225895026816, - 0.2535404714294605, - 0.2540256739828676, - 0.25433705317802, - 0.2546714667438212, - 0.2549429074992676, - 0.2551608576279873, - 0.25535173194353383, - 0.25552584524695954, - 0.2556888844645309, - 0.25585166854890684, - 0.2560067291201958, - 0.25615264739025273, - 0.2562902855072071, - 0.2564210225824559, - 0.2565452302018291, - 0.2566629145459221, - 0.2567746334643076, - 0.2568821788227491, - 0.256988497263528, - 0.2570927889210126, - 0.2571940509198385, - 0.25729265500528875, - 0.25738914313747124, - 0.2574842320032023, - 0.2575781976482057, - 0.2576712510862853, - 0.2577628610828894, - 0.25784796139151944, - 0.257927546712844, - 0.2580038161100068, - 0.25807745575464264, - 0.25813655100787736, - 0.25819383398206736, - 0.2582498020564685, - 0.2583036876123037, - 0.2583553288263421, - 0.25840474891587545, - 0.25845197898981936, - 0.2584971921415552, - 0.258540504974938, - 0.2585820197448733, - 0.258621773067651, - 0.2586599464018026, - 0.2586970525540806, - 0.2587329064000986, - 0.25876727032599833, - 0.2588003165464929, - 0.2588322514173337, - 0.25886334307636616, - 0.2588935543288862, - 0.2589229900631211, - 0.2589505983521353, - 0.25897538369123496, - 0.25899835023859097, - 0.25901999207946896, - 0.25904047204132685, - 0.25905988394456386, - 0.25907829521498194, - 0.2590957618004315, - 0.2591123337989421, - 0.2591280576338477, - 0.2591429101601609, - 0.2591569746651778, - 0.2591705092163451, - 0.2591834411039205, - 0.25932474038797626, - 0.25987365811568425, - 0.2601455529873329, - 0.2603096707698384, - 0.26043012448145125, - 0.2605310065254205, - 0.26062143605331023, - 0.2607049363792261, - 0.2607829186499887, - 0.260856183878767, - 0.2609250442059619, - 0.2609896998242717, - 0.2610504624861697, - 0.261107459328235, - 0.2611608408319686, - 0.2612107235282288, - 0.2612573208140121, - 0.2613006729332139, - 0.2613410396343633, - 0.2613784164602505, - 0.261412908807898, - 0.2614446284056547, - 0.2614735171282765, - 0.2614997057691971, - 0.2615231707893296, - 0.2615441009032129, - 0.26156244763817604, - 0.26157822752551163, - 0.2615915383426845, - 0.26160233695128404, - 0.26161030123961426, - 0.2616155455815589, - 0.261617963151019, - 0.26161746579023604, - 0.2616137600881902, - 0.2616064002620208, - 0.2615950797052458, - 0.2615794551397432, - 0.2615595763244645, - 0.2615341160789161, - 0.26150257046709585, - 0.2614634273869088, - 0.26143175379869144, - 0.2614125049956357, - 0.2613982831329469, - 0.2613862920100399, - 0.2613754740769511, - 0.2613654187837348, - 0.2613559505683153, - 0.2613469898939222, - 0.2613384874770296, - 0.2613304320387012, - 0.26132277309974555, - 0.2613154768646602, - 0.2613085823502274, - 0.26130205202062395, - 0.26129586083362544, - 0.26128998901616823, - 0.2612844192907669, - 0.26127913581710266, - 0.2612741237726492, - 0.26126936917203075, - 0.2612648563588766, - 0.26126050166574144, - 0.2612564059564578, - 0.26125253432013235, - 0.2612488666279751, - 0.26124538920143137, - 0.2612420910782693, - 0.2612389626073629, - 0.2612359949111631, - 0.26123317967129955, - 0.26123050903498163, - 0.26122797556698163, - 0.2612255722192344, - 0.26122329230762736, - 0.26122112949207543, - 0.2612190777583873, - 0.2612171314013614, - 0.261215285008853, - 0.2612135334466953, - 0.2612118718444173, - 0.26136418846279674, - 0.26181648705209554, - 0.2620324872433201, - 0.26215624424280426, - 0.2622424341764197, - 0.2623112906470985, - 0.2623704461713501, - 0.26242262487014617, - 0.26246920061196577, - 0.2625107208254952, - 0.2625470209861208, - 0.2625781998697491, - 0.2626044815870293, - 0.2626254907599764, - 0.2626417533747081, - 0.26265309470046816, - 0.2626586907816146, - 0.2626584029395256, - 0.2626553364261183, - 0.26266179571482506, - 0.2626727711406152, - 0.2626849787850672, - 0.2626972231996501, - 0.2627090829162318, - 0.2627204222579418, - 0.26273121042545355, - 0.26274145448990793, - 0.26275117460639325, - 0.2627603948752163, - 0.2627691400010153, - 0.2627774340986276, - 0.26278530029243674, - 0.2627927606076864, - 0.2627998359679656, - 0.2628065462300952, - 0.26281291023104264, - 0.2628189458375248, - 0.2628246699949596, - 0.2628300987745921, - 0.2628352474184505, - 0.2628401303820766, - 0.2628447613750914, - 0.26284915339967463, - 0.2628533187870713, - 0.2628572692322106, - 0.2628610158265379, - 0.2628645690891609, - 0.2628679389963792, - 0.2628711350096953, - 0.2628741661023799, - 0.26287704078466523, - 0.262879767127637, - 0.26288235278590066, - 0.2628848050190644, - 0.2628871307121297, - 0.2628893363948155, - 0.26289142825989625, - 0.2628934121805865, - 0.2628952937270308, - 0.26289707818194324, - 0.2628987705554396, - 0.26290037559910473, - 0.2629018978193301, - 0.2629033414899702, - 0.2629047106643395, - 0.2629060091865935, - 0.2629072407025215, - 0.2629084086697832, - 0.262909516367615, - 0.26291056690603937, - 0.26291156323459663, - 0.2629125081506223, - 0.2629134043071056, - 0.2629142542201348, - 0.2629150602759647, - 0.2629158247377141, - 0.2629165497517193, - 0.2629172373535632, - 0.2629178894737864, - 0.2629185079433109, - 0.26291909449858075, - 0.2629196507864345, - 0.26292017836873044, - 0.2629206787267329, - 0.2629211532652689, - 0.26292160331667525, - 0.262922030144535, - 0.26292243494722994, - 0.2629228188613015, - 0.2629231829646457, - 0.2629235282795355, - 0.26292385577548993, - 0.2629241663720039, - 0.2629244609411208, - 0.2629247403098864, - 0.26292500526266904, - 0.2629252565433629, - 0.2629254948574732, - 0.2629257208741025, - 0.2629259352278259, - 0.2629261385204709, - 0.2629263313228121, - 0.26292651417617, - 0.2629266875939317, - 0.2629268520629918, - 0.26292700804512226, - 0.2629271559782652, - 0.2629272962777645, - 0.2629274293375313, - 0.2629275555311489, - 0.262927675212926, - 0.2630833958841448, - 0.2632217069978162, - 0.26329526858494673, - 0.26334317091006304, - 0.26338049874020936, - 0.2634128979402731, - 0.2634425117314665, - 0.2634701834516068, - 0.26349627248290464, - 0.2635209565499088, - 0.2635443437961981, - 0.2635665144093517, - 0.26358753614914465, - 0.26360747020539804, - 0.2636263734690369, - 0.26364429946958434, - 0.26366129881380485, - 0.2636774194348837, - 0.2636927067669525, - 0.2637072038877217, - 0.2637209516452654, - 0.2637339887751206, - 0.26374635201016233, - 0.2637580761843841, - 0.263769194331137, - 0.2637797377762457, - 0.2637897362262815, - 0.2637992178522693, - 0.2638082093690601, - 0.263816736110602, - 0.2638248221013217, - 0.2638324901238129, - 0.2638397617830269, - 0.2638466575671471, - 0.26385319690531384, - 0.2638593982223667, - 0.263865278990758, - 0.2638708557797808, - 0.2638761443022566, - 0.2638811594588023, - 0.2638859153798167, - 0.2638904254652934, - 0.26389470242257285, - 0.26389875830214843, - 0.2639026045316194, - 0.26390625194788714, - 0.2639097108276881, - 0.26391299091655096, - 0.2639161014562549, - 0.26393302129354324, - 0.2644031185331916, - 0.2646790734105617, - 0.2648340142089384, - 0.2649410867224253, - 0.2650278662299614, - 0.26510469608100384, - 0.26517553117744724, - 0.26524195504883463, - 0.26530466722506, - 0.265364034141872, - 0.26542029337448336, - 0.265473629526795, - 0.2655242025960957, - 0.26557215873135565, - 0.26561763446073394, - 0.2656607584888877, - 0.2657016525826754, - 0.26574043210800624, - 0.26577720642675345, - 0.2658120792316131, - 0.2658451488482801, - 0.2658765085163045, - 0.2659062466533222, - 0.26593444710484343, - 0.2659611893808353, - 0.2659865488799635, - 0.2660105971022031, - 0.2660334018504367, - 0.2660550274216269, - 0.2660755347880965, - 0.2660949817694434, - 0.26611342319555537, - 0.26613091106120257, - 0.266147494672635, - 0.2661632207865985, - 0.2661781337421628, - 0.2661922755857337, - 0.26620577117196303, - 0.26621870908462675, - 0.2662308824709777, - 0.2662423864579412, - 0.2662532807803953, - 0.2662636062974497, - 0.2662733958764225, - 0.2662826785085925, - 0.2662914808804689, - 0.2662998280004181, - 0.26630774347328073, - 0.2663152496424814, - 0.2663223676809927, - 0.26632911766138434, - 0.2663355186162522, - 0.2663415885932933, - 0.26634734470672183, - 0.2663528031857101, - 0.2663579794202233, - 0.2663628880044337, - 0.26636754277788005, - 0.26637195686449244, - 0.2663761427095923, - 0.26638011211498336, - 0.26638387627222937, - 0.2663874457942046, - 0.26639083074501785, - 0.2663940406683881, - 0.2663970846145521, - 0.2663999711657798, - 0.2664027084605758, - 0.2664053042166217, - 0.26640776575253505, - 0.2664101000085091, - 0.26641231356587364, - 0.2664144126656566, - 0.26641640322617616, - 0.2664182908597285, - 0.2664200808884143, - 0.2664217783591395, - 0.26642338805784804, - 0.2664249145230127, - 0.2664263620584356, - 0.26642773474537856, - 0.2664290364540709, - 0.26643027085462273, - 0.26643144142737235, - 0.26643255147269673, - 0.2664336041203205, - 0.26643460233813626, - 0.2664355489405751, - 0.26643644659654103, - 0.2664372978369345, - 0.26643810506179005, - 0.2664388705470434, - 0.2664395964509457, - 0.2664402848201505, - 0.2664409375954843, - 0.2663559009015263, - 0.2657682469170531, - 0.2654849673407289, - 0.26531957402887824, - 0.2652010958144264, - 0.2651029389870557, - 0.2650151075933467, - 0.2649337585478493, - 0.2648573325217143, - 0.26478512216131583, - 0.2647167420404553, - 0.2646519322234497, - 0.2645904852638198, - 0.26453221888441986, - 0.2644769655733686, - 0.26442456845325296, - 0.2643748794856636, - 0.26432775855349083, - 0.2642830728810381, - 0.2642406965915392, - 0.2642005103272806, - 0.2641624009040668, - 0.2641262609889694, - 0.2640919887967569, - 0.26405948780274885, - 0.26402866647078593, - 0.263999437995364, - 0.2639717200571266, - 0.2639454345910158, - 0.2639205075664008, - 0.2638968687785807, - 0.2638744516510558, - 0.2638531930480217, - 0.2638330330965538, - 0.2638139150179791, - 0.2637957849679645, - 0.26377859188487235, - 0.2637622873459429, - 0.2637468254309245, - 0.2637321625927375, - 0.26371825753482997, - 0.263705071094868, - 0.2636925661344409, - 0.26368070743446337, - 0.26366946159598365, - 0.2636587969461188, - 0.2636486834488516, - 0.26363909262043506, - 0.2636299974491707, - 0.2636213723193365, - 0.26361319293903623, - 0.2636054362717877, - 0.2635980804716421, - 0.26359110482165754, - 0.2635844896755472, - 0.263578216402355, - 0.26357226733397604, - 0.26356662571539763, - 0.2635612756575152, - 0.2635562020923759, - 0.26355139073074463, - 0.26354682802185786, - 0.26354250111525995, - 0.2635383978246117, - 0.2635345065933683, - 0.26353081646222937, - 0.2635273170382766, - 0.2635239984656996, - 0.2635208513980394, - 0.263517866971867, - 0.2635150367818157, - 0.2635123528569135, - 0.2635098076381289, - 0.2635073939570852, - 0.2635051050158677, - 0.2635029343678816, - 0.26350087589969384, - 0.26349892381381645, - 0.26349707261237715, - 0.26349531708163315, - 0.2634936522772941, - 0.26349207351058784, - 0.2634905763350612, - 0.2634891565340566, - 0.2634878101088334, - 0.2634865332673064, - 0.2634853224133675, - 0.26348417413675684, - 0.26348308520345715, - 0.2634820525465868, - 0.2634810732577614, - 0.2634801445789035, - 0.2634792638944733, - 0.2634784287241023, - 0.26347763671561064, - 0.2634768856383766, - 0.2634761733770591, - 0.26347549792564084, - 0.26347485738177245, - 0.2634742499414217, - 0.2634736738937863, - 0.2634731276164813, - 0.2634726095709673, - 0.2634721182982141, - 0.26347165241459825, - 0.26347121060799944, - 0.2634707916341112, - 0.2634703943129297, - 0.2634700175254373, - 0.2634696602104468, - 0.2634693213616115, - 0.2634690000245947, - 0.2634686952943802, - 0.2634684063127229, - 0.2634681322657323, - 0.2634678723815802, - 0.2634676259283261, - 0.2634673922118566, - 0.2634671705739308, - 0.263466960390326, - 0.2634667610690787, - 0.2634665720488181, - 0.26346639279718675, - 0.2634662228093386, - 0.2634660616065179, - 0.2634659087347121, - 0.2634657637633706, - 0.26346562628419595, - 0.26346549590999024, - 0.2634653722735661, - 0.2634652550267123, - 0.26346514383921504, - 0.2634650383979238, - 0.26346493840587304, - 0.2634648435814446, - 0.26346475365757305, - 0.2634646683809965, - 0.2634645875115416, - 0.26346451082144634, - 0.26346443809472064, - 0.26346436912653604, - 0.26346430372264995, - 0.2634642416988581, - 0.2634641828804763, - 0.26346412710184697, - 0.2634640742058758, - 0.26346402404358565, - 0.2634639764736995, - 0.2634639313622405, - 0.263463888582156, - 0.2634638480129603, - 0.2634638095403939, - 0.2634637730561028, - 0.2634637384573316, - 0.2634637056466361, - 0.2634636745316083, - 0.26346364502461506, - 0.2634636170425529, - 0.2634635905066127, - 0.26346356534205856, - 0.2634635414780173, - 0.2634635188472777, - 0.2634634973861015, - 0.26346347703404555, - 0.26346345773379143, - 0.2634634394309804, - 0.2634634220740644, - 0.2634634056141601, - 0.26346339000490804, - 0.2634633752023481, - 0.26346336116478913, - 0.26346334785269565, - 0.26346333522857546, - 0.2634633232568744, - 0.2634633119038755, - 0.2634633011376021, - 0.26346329092773313, - 0.2634632812455132, - 0.26346327206367537, - 0.2634632633563567, - 0.2634632550990362, - 0.2634632472684555, - 0.26346323984256176, - 0.2634632328004409, - 0.2634467734296436, - 0.26324472522103465, - 0.2631329411617658, - 0.26306968385116464, - 0.2630256108698432, - 0.2629897029220791, - 0.2629578281738906, - 0.2629284059949921, - 0.2629008020990607, - 0.2628747347963685, - 0.26285005524753496, - 0.26282666605866223, - 0.2628044910523173, - 0.2627834639734409, - 0.26276352420470545, - 0.26274461508004593, - 0.2627266831644517, - 0.2627096778961357, - 0.26269355136746514, - 0.2626782581617034, - 0.2626637552146325, - 0.26265000168941866, - 0.2626369588601987, - 0.26262459000250066, - 0.262612860289652, - 0.2626017191680835, - 0.2625911396105289, - 0.2625811205061241, - 0.2625716110729701, - 0.2625625903656156, - 0.2625540020533073, - 0.2625458803812451, - 0.26253818699216425, - 0.26253089433339594, - 0.2625239328889133, - 0.26251735114848, - 0.26251111926606063, - 0.2625052130185149, - 0.2624996133044862, - 0.26249429698772564, - 0.2624892412064061, - 0.2624844561593886, - 0.2624799219107743, - 0.26247558625622314, - 0.2624714798958071, - 0.2624675985444705, - 0.262463922505149, - 0.2624604381770606, - 0.2624571345472008, - 0.26245400186890866, - 0.2624510311570705, - 0.2624482139862611, - 0.2624455424017107, - 0.262443008446805, - 0.2624405795817477, - 0.2624382884011902, - 0.2624361204076058, - 0.2624340662160734, - 0.2624321188285379, - 0.2624302723126951, - 0.26243036734522657, - 0.2624303660130597, - 0.2624300822858807, - 0.2624297932603247, - 0.2624296017537444, - 0.26242955557582914, - 0.2624295514182991, - 0.2624292617696869, - 0.262428842872237, - 0.2624283919433477, - 0.2624279444580227, - 0.2624275127514041, - 0.26242710063693075, - 0.26242670881442043, - 0.2624263368686367, - 0.26242598400670264, - 0.26242564932907864, - 0.26242533192809897, - 0.2624250309228024, - 0.26242474547027944, - 0.2624244747684176, - 0.26242421339918803, - 0.2624239619913977, - 0.2624237271327777, - 0.2624235057329892, - 0.26242329626370803, - 0.26242309780027523, - 0.2624229096599516, - 0.2624227312670976, - 0.262422562102387, - 0.2624224016831577, - 0.2624222495553269, - 0.262422105289622, - 0.2624219684794512, - 0.26242183873942065, - 0.2624217157041188, - 0.2624215990270444, - 0.2624214883796109, - 0.26242138345021776, - 0.2624212839433662, - 0.2624211895788304, - 0.2624211000908646, - 0.2624210152274587, - 0.2624209347496237, - 0.2624208584307218, - 0.2624207860558289, - 0.26242071742112594, - 0.26242065233332745, - 0.2624205906091361, - 0.2624205320747279, - 0.2624204765652597, - 0.26242042392441145, - 0.2624203740039364, - 0.2624203266632514, - 0.26242028176903914, - 0.26242023919486984, - 0.26242019882084794, - 0.2624201605332751, - 0.262420124224328, - 0.262420089791754, - 0.262420057138587, - 0.2624200261728713, - 0.26241999680740097, - 0.2624199689594797, - 0.2624199425506827, - 0.2624199175066409, - 0.2624198937568247, - 0.2624198712343509, - 0.26241984987579364, - 0.262419829621004, - 0.2624198104129415, - 0.26241979219751355, - 0.26241977492342217, - 0.2624197585420215, - 0.26241974300717885, - 0.26241972827514604, - 0.26241971430443506, - 0.26241970105570245, - 0.2624196884916382, - 0.2624196765768595, - 0.2624196652778125, - 0.26241965456267785, - 0.2624196444012805, - 0.26241963476500324, - 0.2624196256267093, - 0.26241961696066396, - 0.2624196087424634, - 0.2624196009489621, - 0.2624195935582142, - 0.2624195865494051, - 0.262419579902798, - 0.26241957359967233, - 0.2624195676222809, - 0.2624195619537889, - 0.2624195565782336, - 0.26241955148047674, - 0.262419546646161, - 0.2624195420616742, - 0.2624195377141029, - 0.26241953359120584, - 0.2624195296813723, - 0.2624195259735907, - 0.2624195224574197, - 0.26241951912295786, - 0.2624195159608137, - 0.2624195129620832, - 0.2624195101183208, - 0.2624195074215193, - 0.2624195048640825, - 0.26241950243880924, - 0.2624195001388686, - 0.26241949795778485, - 0.2624194958894152, - 0.2624194939279344, - 0.2624194920678192, - 0.2624194903038309, - 0.26241948863100145, - 0.2624194870446211, - 0.2624194855402217, - 0.26241948411356697, - 0.2624194827606384, - 0.2624194814776268, - 0.2624194802609188, - 0.26241947910708746, - 0.2624194780128836, - 0.26241947697522666, - 0.26241947599119314, - 0.2624194750580131, - 0.26241947417305805, - 0.26241947333383475, - 0.26241947253798154, - 0.26241947178325603, - 0.26241947106753394, - 0.2624194703887979, - 0.2624194697451383, - 0.2624194691347417, - 0.2624194685558883, - 0.2624194680069508, - 0.2624194674863799, - 0.2624194669927113, - 0.26241946652455445, - 0.26241946608059125, - 0.26241946565957064, - 0.262419465260308, - 0.262419464881678, - 0.2624194645226153, - 0.26241946418210843, - 0.2624194638591977, - 0.26241946355297463, - 0.2624194632625757, - 0.2624194629871852, - 0.262419462726026, - 0.262419462478363, - 0.2624194622434989, - 0.26241946202077165, - 0.2624194618095549, - 0.2624194616092532, - 0.2624194614193017, - 0.2624194612391681, - 0.26241946106834296, - 0.2624194609063455, - 0.2624194607527201, - 0.2624194606070336, - 0.2624194604688756, - 0.2624194603378577, - 0.26241946021361057, - 0.2624194600957842, - 0.26241945998404703, - 0.2624194598780843, - 0.262419459777597, - 0.26241945968230274, - 0.262419459591933, - 0.26241945950623385, - 0.2624194594249632, - 0.2624194593478927, - 0.2624194592748047, - 0.262419459205494, - 0.2624194591397653, - 0.26241945907743297, - 0.26241945901832203, - 0.26241945896226576, - 0.2624194589091063, - 0.262419458858694, - 0.2624194588108872, - 0.26241945876555073, - 0.2624194587225572, - 0.2624194586817854, - 0.2624194586431207, - 0.26241945860645405, - 0.2624194585716826, - 0.2624194585387074, - 0.26241945850743703, - 0.2624194584777823, - 0.26241945844966, - 0.2624194584229911, - 0.2624194583977003, - 0.2624194583737162, - 0.2624194583509721, - 0.2624194583294029, - 0.26241945830894875, - 0.2624194582895512, - 0.2624194582711565, - 0.2624194582537121, - 0.2624194582371693, - 0.2624194582214817, - 0.2624194582066045, - 0.2624194581924963, - 0.2624194581791172, - 0.26241945816642914, - 0.2624194581543972, - 0.26241945814298684, - 0.26241945813216616, - 0.2624194581219046, - 0.2624194581121734, - 0.26241945810294504, - 0.2624194580941939, - 0.26241945808589434, - 0.26241945807802397, - 0.2624194580705605, - 0.2624194580634825, - 0.2624194580567701, - 0.2624194580504056, - 0.2624194580443691, - 0.26241945803864497, - 0.2624194580332163, - 0.26241945802806865, - 0.26241945802318617, - 0.2624194580185566, - 0.26241945801416605, - 0.2624194580100028, - 0.2624194580060547, - 0.2624194580023104, - 0.26241945799875915, - 0.2624194579953917, - 0.262419457992199, - 0.2624194579891709, - 0.26241945798629834, - 0.2624194579835755, - 0.26241945798099275, - 0.2624194579785428, - 0.2624194579762203, - 0.2624194579740177, - 0.2624194579719292, - 0.2624194579699496, - 0.2624194579680699, - 0.2624194579662884, - 0.2624194579645996, - 0.2624194579629969, - 0.26242567160278396, - 0.262431515100785, - 0.2624346093605988, - 0.26243661106893, - 0.2624381631946485, - 0.26243950668411703, - 0.2624407330663291, - 0.2624418783422968, - 0.2624429578130552, - 0.2624439790017958, - 0.26244494645150745, - 0.2624458635092156, - 0.2624467329923954, - 0.26244755744057296, - 0.26244833921285904, - 0.26244908052811866, - 0.26244978348366665, - 0.2624504500657978, - 0.2624510821571028, - 0.2624516815424198, - 0.2624522499141075, - 0.26245278887691137, - 0.26245329995252503, - 0.2624537845839006, - 0.2624542441393253, - 0.2624558164611667, - 0.2625282329623021, - 0.2625784161410493, - 0.2626133344531829, - 0.2626430905270019, - 0.262671762445574, - 0.26270107458668657, - 0.262731210116682, - 0.26275736046255976, - 0.26277767106156713, - 0.26279514298878165, - 0.2628110450087622, - 0.26282587618230324, - 0.2628398472154303, - 0.26285306034997635, - 0.26286557628344465, - 0.2628774390997647, - 0.26288868559412976, - 0.26289934879575544, - 0.2629094593316717, - 0.2629190459854411, - 0.2629281359540315, - 0.2629367549899719, - 0.26294492749846665, - 0.2629526766154736, - 0.26296002427653603, - 0.2629669912801165, - 0.26297359734692866, - 0.2629798611759305, - 0.2629858004973137, - 0.26299143212272075, - 0.26299677199283084, - 0.26300183522249315, - 0.2630066361435046, - 0.2630111883451813, - 0.26301550471282314, - 0.263019597464187, - 0.2630234781840696, - 0.2630271578570986, - 0.26304896965082725, - 0.26307749436643746, - 0.2630937184376216, - 0.263104863675455, - 0.2631138554145312, - 0.26312179581678397, - 0.2631291073342225, - 0.26313595924231475, - 0.2631424261304629, - 0.2631485468088565, - 0.26315434622171097, - 0.26315984361707223, - 0.26316505560986114, - 0.26316999734648955, - 0.2631746829628798, - 0.2631791257786947, - 0.2631833383923325, - 0.26318733273787315, - 0.2631911201267688, - 0.2631947112828062, - 0.2631981163735586, - 0.2632013450395758, - 0.2632044064218306, - 0.26320730918764984, - 0.2632100615552813, - 0.2632126713171632, - 0.26321514586198685, - 0.2632174921956245, - 0.26321971696095803, - 0.2632218264566865, - 0.2632238266551629, - 0.2632257232193, - 0.26322752151860285, - 0.26322922664437104, - 0.26323084342411546, - 0.2632323764352214, - 0.26323383001791256, - 0.2632352082875372, - 0.2632365151462166, - 0.26323775429389784 - ] - }, - { - "name": "move/(max - min) sympathetic efferent", - "opacity": 0.5, - "type": "scatter", - "x": [ - 4.989999999999939, - 9.989999999999831, - 14.989999999999723, - 19.990000000000325, - 24.99000000000111, - 29.99000000000189, - 34.990000000001615, - 39.99000000000061, - 44.98999999999962, - 49.989999999998616, - 54.989999999997636, - 59.98999999999664, - 64.98999999999634, - 69.9899999999989, - 74.99000000000144, - 79.99000000000402, - 84.99000000000656, - 89.99000000000912, - 94.99000000001169, - 99.99000000001423, - 104.9900000000168, - 109.99000000001936, - 114.99000000002192, - 119.9900000000245, - 124.99000000002705, - 129.99000000002675, - 134.9900000000222, - 139.99000000001766, - 144.99000000001308, - 149.99000000000856, - 154.99000000000402, - 159.98999999999947, - 164.9899999999949, - 169.98999999999037, - 174.98999999998586, - 179.98999999998128, - 184.98999999997676, - 189.98999999997216, - 194.9899999999676, - 199.98999999996312, - 204.98999999995854, - 209.989999999954, - 214.98999999994945, - 219.98999999994493, - 224.98999999994038, - 229.9899999999358, - 234.98999999993129, - 239.98999999992668, - 244.98999999992213, - 249.98999999991761, - 254.9899999999131, - 259.98999999990855, - 264.989999999904, - 269.98999999989945, - 274.9899999998949, - 279.9899999998904, - 284.9899999998858, - 289.98999999988126, - 294.98999999987666, - 299.98999999987217, - 304.9899999998676, - 309.98999999986313, - 314.9899999998585, - 319.98999999985404, - 324.98999999984943, - 329.9899999998449, - 334.9899999998404, - 339.9899999998358, - 344.98999999983124, - 349.98999999982664, - 354.98999999982215, - 359.98999999981766, - 364.9899999998131, - 369.9899999998085, - 374.989999999804, - 379.98999999979935, - 384.98999999979486, - 389.98999999979037, - 394.98999999978577, - 399.98999999978116, - 404.9899999997768, - 409.9899999997721, - 414.98999999976763, - 419.98999999976303, - 424.98999999975854, - 429.98999999975393, - 434.9899999997494, - 439.9899999997448, - 444.9899999997403, - 449.98999999973574, - 454.9899999997312, - 459.98999999972665, - 464.98999999972216, - 469.9899999997176, - 474.989999999713, - 479.98999999970846, - 484.9899999997039, - 489.9899999996994, - 494.9899999996948, - 499.9899999996903, - 504.98999999968566, - 509.9899999996812, - 514.9899999996767, - 519.9899999996721, - 524.9899999996676, - 529.989999999663, - 534.9899999996585, - 539.9899999996541, - 544.9899999996494, - 549.9899999996449, - 554.9899999996403, - 559.9899999996359, - 564.9899999996313, - 569.9899999996268, - 574.9899999996221, - 579.9899999996176, - 584.989999999613, - 589.9899999996086, - 594.9899999996039, - 599.9899999995994, - 604.9899999995947, - 609.9899999995903, - 614.9899999995857, - 619.9899999995812, - 624.9899999995766, - 629.9899999995721, - 634.9899999995675, - 639.989999999563, - 644.9899999995584, - 649.9899999995539, - 654.9899999995494, - 659.9899999995448, - 664.9899999995403, - 669.9899999995357, - 674.9899999995313, - 679.9899999995266, - 684.9899999995221, - 689.9899999995175, - 694.989999999513, - 699.9899999995083, - 704.989999999504, - 709.9899999994992, - 714.9899999994948, - 719.9899999994902, - 724.9899999994858, - 729.9899999994813, - 734.9899999994766, - 739.989999999472, - 744.9899999994675, - 749.9899999994631, - 754.9899999994583, - 759.9899999994539, - 764.9899999994493, - 769.9899999994448, - 774.9899999994403, - 779.9899999994358, - 784.9899999994311, - 789.9899999994266, - 794.989999999422, - 799.9899999994176, - 804.9899999994128, - 809.9899999994084, - 814.9899999994037, - 819.9899999993993, - 824.9899999993947, - 829.9899999993903, - 834.9899999993856, - 839.9899999993811, - 844.9899999993767, - 849.989999999372, - 854.9899999993676, - 859.9899999993629, - 864.9899999993584, - 869.9899999993538, - 874.9899999993493, - 879.9899999993448, - 884.9899999993402, - 889.9899999993356, - 894.9899999993311, - 899.9899999993265, - 904.9899999993221, - 909.9899999993173, - 914.9899999993128, - 919.9899999993083, - 924.9899999993038, - 929.9899999992994, - 934.9899999992947, - 939.98999999929, - 944.9899999992856, - 949.989999999281, - 954.9899999992764, - 959.989999999272, - 964.9899999992674, - 969.9899999992627, - 974.9899999992584, - 979.9899999992537, - 984.9899999992492, - 989.9899999992447, - 994.98999999924, - 999.9899999992357, - 1004.9899999992309, - 1009.9899999992264, - 1014.9899999992219, - 1019.9899999992174, - 1024.9899999992128, - 1029.9899999992083, - 1034.9899999992037, - 1039.9899999991992, - 1044.9899999991949, - 1049.98999999919, - 1054.9899999991856, - 1059.989999999181, - 1064.9899999991762, - 1069.9899999991721, - 1074.9899999991674, - 1079.9899999991628, - 1084.9899999991583, - 1089.9899999991535, - 1094.9899999991494, - 1099.9899999991446, - 1104.98999999914, - 1109.9899999991355, - 1114.989999999131, - 1119.9899999991264, - 1124.9899999991221, - 1129.9899999991173, - 1134.9899999991128, - 1139.9899999991082, - 1144.9899999991035, - 1149.9899999990994, - 1154.9899999990946, - 1159.98999999909, - 1164.9899999990855, - 1169.989999999081, - 1174.9899999990766, - 1179.9899999990719, - 1184.9899999990673, - 1189.9899999990628, - 1194.9899999990582, - 1199.9899999990535, - 1204.9899999990491, - 1209.9899999990446, - 1214.98999999904, - 1219.9899999990355, - 1224.9899999990312, - 1229.9899999990264, - 1234.9899999990218, - 1239.989999999017, - 1244.9899999990128, - 1249.9899999990082, - 1254.9899999990034, - 1259.989999998999, - 1264.9899999989943, - 1269.98999999899, - 1274.9899999989855, - 1279.989999998981, - 1284.9899999989764, - 1289.9899999989716, - 1294.9899999989673, - 1299.9899999989627, - 1304.9899999989582, - 1309.9899999989536, - 1314.989999998949, - 1319.9899999989445, - 1324.98999999894, - 1329.9899999989354, - 1334.989999998931, - 1339.9899999989266, - 1344.9899999989218, - 1349.9899999989173, - 1354.9899999989127, - 1359.9899999989082, - 1364.9899999989036, - 1369.9899999988988, - 1374.9899999988943, - 1379.98999999889, - 1384.9899999988854, - 1389.9899999988806, - 1394.9899999988766, - 1399.9899999988718, - 1404.9899999988672, - 1409.9899999988627, - 1414.9899999988581, - 1419.9899999988534, - 1424.9899999988488, - 1429.9899999988445, - 1434.98999999884, - 1439.9899999988354, - 1444.9899999988309, - 1449.9899999988265, - 1454.9899999988218, - 1459.9899999988172, - 1464.989999998813, - 1469.989999998808, - 1474.9899999988033, - 1479.989999998799, - 1484.9899999987945, - 1489.98999999879, - 1494.9899999987854, - 1499.9899999987808, - 1504.9899999987765, - 1509.9899999987713, - 1514.9899999987674, - 1519.9899999987624, - 1524.9899999987579, - 1529.9899999987533, - 1534.989999998749, - 1539.9899999987445, - 1544.98999999874, - 1549.9899999987354, - 1554.9899999987308, - 1559.9899999987265, - 1564.9899999987217, - 1569.9899999987174, - 1574.9899999987124, - 1579.9899999987078, - 1584.9899999987035, - 1589.989999998699, - 1594.9899999986944, - 1599.9899999986899, - 1604.9899999986853, - 1609.9899999986808, - 1614.9899999986762, - 1619.9899999986715, - 1624.9899999986674, - 1629.9899999986624, - 1634.989999998658, - 1639.9899999986535, - 1644.989999998649, - 1649.9899999986444, - 1654.98999999864, - 1659.9899999986353, - 1664.9899999986308, - 1669.989999998626, - 1674.9899999986214, - 1679.9899999986173, - 1684.9899999986123, - 1689.989999998608, - 1694.9899999986035, - 1699.989999998599, - 1704.9899999985944, - 1709.9899999985898, - 1714.9899999985853, - 1719.9899999985805, - 1724.9899999985764, - 1729.9899999985714, - 1734.9899999985669, - 1739.9899999985626, - 1744.989999998558, - 1749.9899999985535, - 1754.989999998549, - 1759.9899999985446, - 1764.9899999985398, - 1769.9899999985353, - 1774.989999998531, - 1779.9899999985264, - 1784.9899999985214, - 1789.989999998517, - 1794.9899999985125, - 1799.989999998508, - 1804.9899999985034, - 1809.9899999984991, - 1814.9899999984946, - 1819.9899999984893, - 1824.9899999984848, - 1829.989999998481, - 1834.989999998476, - 1839.989999998472, - 1844.989999998467, - 1849.9899999984625, - 1854.989999998458, - 1859.9899999984534, - 1864.9899999984489, - 1869.9899999984445, - 1874.98999999844, - 1879.9899999984355, - 1884.9899999984307, - 1889.989999998426, - 1894.9899999984216, - 1899.989999998417, - 1904.9899999984125, - 1909.989999998408, - 1914.9899999984036, - 1919.9899999983988, - 1924.9899999983945, - 1929.9899999983895, - 1934.9899999983847, - 1939.9899999983807, - 1944.9899999983759, - 1949.9899999983718, - 1954.989999998367, - 1959.9899999983625, - 1964.989999998358, - 1969.9899999983534, - 1974.9899999983486, - 1979.9899999983445, - 1984.9899999983402, - 1989.9899999983352, - 1994.9899999983304, - 1999.989999998326, - 2004.9899999983213, - 2009.989999998317, - 2014.9899999983124, - 2019.9899999983081, - 2024.9899999983036, - 2029.9899999982986, - 2034.9899999982945, - 2039.9899999982895, - 2044.9899999982847, - 2049.9899999983263, - 2054.989999998435, - 2059.989999998544, - 2064.9899999986533, - 2069.9899999987624, - 2074.989999998872, - 2079.9899999989807, - 2084.98999999909, - 2089.989999999199, - 2094.9899999993077, - 2099.9899999994173, - 2104.9899999995264, - 2109.9899999996355, - 2114.9899999997447, - 2119.9899999998543, - 2124.989999999963, - 2129.990000000072, - 2134.9900000001808, - 2139.9900000002904, - 2144.9900000003995, - 2149.9900000005086, - 2154.990000000618, - 2159.990000000727, - 2164.990000000836, - 2169.990000000945, - 2174.9900000010543, - 2179.9900000011635, - 2184.990000001273, - 2189.9900000013813, - 2194.990000001491, - 2199.9900000016, - 2204.990000001709, - 2209.9900000018183, - 2214.9900000019275, - 2219.9900000020366, - 2224.9900000021453, - 2229.990000002255, - 2234.990000002364, - 2239.990000002473, - 2244.9900000025823, - 2249.9900000026914, - 2254.990000002801, - 2259.9900000029097, - 2264.9900000030193, - 2269.990000003128, - 2274.990000003237, - 2279.9900000033467, - 2284.9900000034554, - 2289.9900000035645, - 2294.9900000036732, - 2299.990000003783, - 2304.990000003892, - 2309.9900000040006, - 2314.9900000041102, - 2319.9900000042194, - 2324.9900000043285, - 2329.9900000044377, - 2334.9900000045473, - 2339.990000004656, - 2344.990000004765, - 2349.9900000048738, - 2354.9900000049834, - 2359.9900000050925, - 2364.9900000052016, - 2369.990000005311, - 2374.99000000542, - 2379.990000005529, - 2384.990000005638, - 2389.9900000057473, - 2394.9900000058565, - 2399.9900000059656, - 2404.990000006075, - 2409.990000006184, - 2414.990000006293, - 2419.990000006402, - 2424.9900000065113, - 2429.9900000066204, - 2434.9900000067296, - 2439.990000006839, - 2444.990000006948, - 2449.990000007057, - 2454.990000007166, - 2459.9900000072753, - 2464.9900000073844, - 2469.9900000074936, - 2474.990000007603, - 2479.9900000077123, - 2484.990000007821, - 2489.99000000793, - 2494.9900000080397, - 2499.9900000081484, - 2504.990000008257, - 2509.990000008367, - 2514.990000008476, - 2519.990000008585, - 2524.9900000086936, - 2529.9900000088032, - 2534.9900000089124, - 2539.990000009021, - 2544.9900000091307, - 2549.99000000924, - 2554.990000009349, - 2559.990000009458, - 2564.9900000095668, - 2569.9900000096764, - 2574.990000009785, - 2579.9900000098946, - 2584.9900000100038, - 2589.990000010113, - 2594.990000010222, - 2599.990000010331, - 2604.9900000104403, - 2609.990000010549, - 2614.9900000106586, - 2619.990000010768, - 2624.990000010877, - 2629.990000010986, - 2634.990000011095, - 2639.9900000112043, - 2644.990000011313, - 2649.9900000114226, - 2654.990000011532, - 2659.990000011641, - 2664.99000001175, - 2669.990000011859, - 2674.9900000119683, - 2679.990000012077, - 2684.9900000121866, - 2689.990000012296, - 2694.9900000124053, - 2699.990000012514, - 2704.990000012623, - 2709.9900000127327, - 2714.990000012841, - 2719.9900000129505, - 2724.99000001306, - 2729.990000013169, - 2734.990000013278, - 2739.990000013387, - 2744.9900000134962, - 2749.990000013605, - 2754.9900000137145, - 2759.9900000138236, - 2764.9900000139332, - 2769.990000014042, - 2774.990000014151, - 2779.99000001426, - 2784.990000014369, - 2789.990000014479, - 2794.990000014588, - 2799.990000014697, - 2804.990000014806, - 2809.990000014915, - 2814.9900000150237, - 2819.990000015133, - 2824.9900000152425, - 2829.990000015352, - 2834.9900000154607, - 2839.99000001557, - 2844.9900000156786, - 2849.990000015788, - 2854.9900000158973, - 2859.9900000160064, - 2864.9900000161156, - 2869.990000016225, - 2874.9900000163343, - 2879.990000016443, - 2884.990000016552, - 2889.990000016661, - 2894.9900000167704, - 2899.990000016879, - 2904.990000016989, - 2909.990000017098, - 2914.990000017207, - 2919.990000017316, - 2924.990000017425, - 2929.990000017535, - 2934.9900000176435, - 2939.990000017753, - 2944.990000017862, - 2949.9900000179714, - 2954.9900000180796, - 2959.990000018189, - 2964.9900000182984, - 2969.9900000184075, - 2974.9900000185166, - 2979.9900000186262, - 2984.990000018735, - 2989.990000018844, - 2994.990000018953, - 2999.9900000190623, - 3004.990000019172, - 3009.990000019281, - 3014.9900000193898, - 3019.990000019499, - 3024.990000019608, - 3029.9900000197167, - 3034.9900000198268, - 3039.9900000199355, - 3044.990000020045, - 3049.9900000201533, - 3054.990000020263, - 3059.9900000203716, - 3064.990000020481, - 3069.9900000205903, - 3074.9900000206994, - 3079.9900000208086, - 3084.9900000209173, - 3089.9900000210273, - 3094.990000021136, - 3099.990000021245, - 3104.9900000213543, - 3109.9900000214634, - 3114.990000021572, - 3119.9900000216817, - 3124.990000021791, - 3129.9900000219, - 3134.990000022009, - 3139.9900000221187, - 3144.990000022228, - 3149.9900000223365, - 3154.9900000224457, - 3159.990000022555, - 3164.9900000226644, - 3169.9900000227726, - 3174.990000022882, - 3179.9900000229914, - 3184.9900000231005, - 3189.990000023209, - 3194.990000023319, - 3199.990000023428, - 3204.990000023537, - 3209.990000023646, - 3214.9900000237553, - 3219.990000023865, - 3224.9900000239736, - 3229.990000024083, - 3234.990000024192, - 3239.990000024301, - 3244.9900000244106, - 3249.9900000245198, - 3254.9900000246284, - 3259.9900000247376, - 3264.9900000248467, - 3269.990000024956, - 3274.9900000250645, - 3279.990000025174, - 3284.9900000252833, - 3289.9900000253924, - 3294.9900000255016, - 3299.990000025611, - 3304.9900000257203, - 3309.990000025829, - 3314.990000025938, - 3319.9900000260473, - 3324.9900000261564, - 3329.990000026265, - 3334.990000026375, - 3339.990000026484, - 3344.990000026593, - 3349.990000026702, - 3354.990000026811, - 3359.990000026921, - 3364.9900000270286, - 3369.9900000271386, - 3374.990000027248, - 3379.9900000273574, - 3384.9900000274656, - 3389.990000027575, - 3394.9900000276843, - 3399.990000027793, - 3404.990000027902, - 3409.990000028012, - 3414.990000028121, - 3419.99000002823, - 3424.990000028339, - 3429.9900000284483, - 3434.990000028557, - 3439.9900000286666, - 3444.990000028776, - 3449.990000028885, - 3454.990000028994, - 3459.9900000291027, - 3464.9900000292128, - 3469.9900000293214, - 3474.9900000294306, - 3479.9900000295397, - 3484.990000029649, - 3489.9900000297584, - 3494.990000029867, - 3499.9900000299763, - 3504.990000030085, - 3509.9900000301946, - 3514.990000030304, - 3519.9900000304133, - 3524.990000030522, - 3529.990000030631, - 3534.99000003074, - 3539.990000030849, - 3544.990000030958, - 3549.990000031068, - 3554.990000031177, - 3559.990000031286, - 3564.990000031395, - 3569.9900000315038, - 3574.9900000316134, - 3579.9900000317225, - 3584.990000031832, - 3589.990000031941, - 3594.9900000320504, - 3599.9900000321586, - 3604.990000032268, - 3609.990000032377, - 3614.9900000324874, - 3619.9900000325956, - 3624.990000032705, - 3629.990000032814, - 3634.990000032923, - 3639.990000033032, - 3644.990000033141, - 3649.990000033251, - 3654.99000003336, - 3659.990000033469, - 3664.990000033578, - 3669.990000033687, - 3674.9900000337957, - 3679.990000033905, - 3684.9900000340144, - 3689.990000034124, - 3694.9900000342327, - 3699.990000034342, - 3704.9900000344514, - 3709.99000003456, - 3714.9900000346693, - 3719.990000034777, - 3724.9900000348875, - 3729.990000034997, - 3734.9900000351063, - 3739.990000035215, - 3744.990000035324, - 3749.990000035433, - 3754.9900000355424, - 3759.990000035652, - 3764.990000035761, - 3769.9900000358703, - 3774.990000035979, - 3779.990000036088, - 3784.9900000361968, - 3789.9900000363054, - 3794.990000036416, - 3799.990000036525, - 3804.990000036634, - 3809.9900000367434, - 3814.9900000368516, - 3819.990000036961, - 3824.9900000370703, - 3829.9900000371804, - 3834.9900000372886, - 3839.9900000373973, - 3844.990000037507, - 3849.990000037616, - 3854.990000037725, - 3859.9900000378334, - 3864.990000037944, - 3869.990000038053, - 3874.9900000381617, - 3879.990000038271, - 3884.9900000383795, - 3889.9900000384887, - 3894.9900000385987, - 3899.9900000387074, - 3904.990000038817, - 3909.9900000389257, - 3914.990000039035, - 3919.9900000391444, - 3924.990000039253, - 3929.9900000393613, - 3934.990000039472, - 3939.9900000395814, - 3944.990000039689, - 3949.9900000397993, - 3954.990000039908, - 3959.990000040017, - 3964.9900000401262, - 3969.990000040235, - 3974.990000040345, - 3979.9900000404537, - 3984.990000040563, - 3989.990000040672, - 3994.990000040781, - 3999.9900000408898, - 4004.9900000409993, - 4009.990000041109, - 4014.9900000412176, - 4019.9900000413268, - 4024.9900000414364, - 4029.9900000415446, - 4034.990000041654, - 4039.990000041763, - 4044.9900000418734, - 4049.990000041981, - 4054.9900000420903, - 4059.9900000422, - 4064.990000042309, - 4069.990000042418, - 4074.990000042527, - 4079.990000042637, - 4084.9900000427456, - 4089.990000042855, - 4094.990000042964, - 4099.990000043073, - 4104.990000043182, - 4109.990000043291, - 4114.9900000434, - 4119.990000043509, - 4124.990000043618, - 4129.9900000437265, - 4134.990000043837, - 4139.990000043946, - 4144.990000044055, - 4149.990000044164, - 4154.990000044273, - 4159.990000044381, - 4164.990000044491, - 4169.9900000446005, - 4174.99000004471, - 4179.990000044819, - 4184.990000044928, - 4189.990000045037, - 4194.990000045146, - 4199.990000045255, - 4204.990000045365, - 4209.9900000454745, - 4214.990000045583, - 4219.990000045692, - 4224.990000045801, - 4229.99000004591, - 4234.990000046019, - 4239.9900000461275, - 4244.990000046238, - 4249.990000046347, - 4254.990000046456, - 4259.990000046565, - 4264.990000046674, - 4269.990000046783, - 4274.990000046892, - 4279.990000047002, - 4284.990000047112, - 4289.990000047221, - 4294.990000047329, - 4299.990000047438, - 4304.990000047547, - 4309.990000047656, - 4314.9900000477655, - 4319.990000047875, - 4324.990000047984, - 4329.990000048093, - 4334.990000048202, - 4339.990000048311, - 4344.99000004842, - 4349.9900000485295, - 4354.990000048639, - 4359.990000048748, - 4364.990000048857, - 4369.990000048966, - 4374.990000049074, - 4379.990000049184, - 4384.9900000492935, - 4389.990000049403, - 4394.990000049512, - 4399.990000049621, - 4404.99000004973, - 4409.990000049839, - 4414.990000049948, - 4419.9900000500575, - 4424.9900000501675, - 4429.990000050276, - 4434.990000050385, - 4439.990000050494, - 4444.990000050603, - 4449.990000050712, - 4454.9900000508205, - 4459.990000050931, - 4464.99000005104, - 4469.990000051149, - 4474.990000051258, - 4479.990000051367, - 4484.990000051476, - 4489.990000051585, - 4494.990000051695, - 4499.990000051805, - 4504.990000051913, - 4509.990000052022, - 4514.990000052131, - 4519.99000005224, - 4524.990000052349, - 4529.990000052458, - 4534.990000052568, - 4539.990000052677, - 4544.990000052786, - 4549.990000052895, - 4554.990000053004, - 4559.990000053112, - 4564.990000053223, - 4569.990000053332, - 4574.990000053441, - 4579.99000005355, - 4584.990000053659, - 4589.990000053767, - 4594.990000053877, - 4599.9900000539865, - 4604.990000054096, - 4609.990000054205, - 4614.990000054314, - 4619.990000054423, - 4624.990000054532, - 4629.990000054641, - 4634.9900000547495, - 4639.9900000548605, - 4644.990000054969, - 4649.990000055078, - 4654.990000055187, - 4659.990000055296, - 4664.990000055405, - 4669.9900000555135, - 4674.990000055624, - 4679.990000055733, - 4684.990000055842, - 4689.990000055951, - 4694.99000005606, - 4699.990000056169, - 4704.990000056278, - 4709.9900000563875, - 4714.990000056498, - 4719.990000056606, - 4724.990000056715, - 4729.990000056824, - 4734.990000056933, - 4739.990000057042, - 4744.990000057152, - 4749.990000057261, - 4754.990000057371, - 4759.990000057479, - 4764.990000057588, - 4769.990000057697, - 4774.990000057805, - 4779.990000057916, - 4784.990000058025, - 4789.990000058134, - 4794.990000058243, - 4799.990000058352, - 4804.990000058461, - 4809.99000005857, - 4814.9900000586795, - 4819.990000058789, - 4824.990000058898, - 4829.990000059007, - 4834.990000059116, - 4839.990000059225, - 4844.990000059334, - 4849.9900000594425, - 4854.9900000595535, - 4859.990000059662, - 4864.990000059771, - 4869.99000005988, - 4874.990000059989, - 4879.990000060098, - 4884.9900000602065, - 4889.990000060317, - 4894.990000060426, - 4899.990000060535, - 4904.990000060644, - 4909.990000060753, - 4914.990000060862, - 4919.990000060971, - 4924.9900000610805, - 4929.99000006119, - 4934.990000061299, - 4939.990000061408, - 4944.990000061517, - 4949.990000061626, - 4954.990000061735, - 4959.990000061845, - 4964.990000061954, - 4969.990000062063, - 4974.990000062172, - 4979.990000062281, - 4984.99000006239, - 4989.990000062498, - 4994.990000062609, - 4999.990000062718, - 5004.990000062827, - 5009.990000062936, - 5014.990000063045, - 5019.990000063154, - 5024.990000063263, - 5029.9900000633725, - 5034.990000063482, - 5039.990000063591, - 5044.9900000637, - 5049.990000063809, - 5054.990000063918, - 5059.990000064027, - 5064.9900000641355, - 5069.9900000642465, - 5074.990000064355, - 5079.990000064464, - 5084.990000064573, - 5089.990000064682, - 5094.990000064791, - 5099.9900000648995, - 5104.9900000650105, - 5109.990000065119, - 5114.990000065228, - 5119.990000065337, - 5124.990000065446, - 5129.990000065555, - 5134.990000065664, - 5139.9900000657735, - 5144.990000065884, - 5149.990000065992, - 5154.990000066101, - 5159.99000006621, - 5164.990000066319, - 5169.990000066428, - 5174.990000066538, - 5179.990000066647, - 5184.990000066756, - 5189.990000066865, - 5194.990000066974, - 5199.990000067083, - 5204.990000067191, - 5209.990000067302, - 5214.990000067411, - 5219.99000006752, - 5224.990000067629, - 5229.990000067738, - 5234.990000067847, - 5239.990000067956, - 5244.9900000680655, - 5249.990000068175, - 5254.990000068285, - 5259.990000068393, - 5264.990000068502, - 5269.990000068611, - 5274.99000006872, - 5279.9900000688285, - 5284.9900000689395, - 5289.990000069048, - 5294.990000069157, - 5299.990000069266, - 5304.990000069375, - 5309.990000069484, - 5314.9900000695925, - 5319.990000069703, - 5324.990000069812, - 5329.990000069921, - 5334.99000007003, - 5339.990000070139, - 5344.990000070248, - 5349.990000070357, - 5354.990000070466, - 5359.990000070577, - 5364.990000070685, - 5369.990000070794, - 5374.990000070903, - 5379.990000071012, - 5384.990000071121, - 5389.990000071231, - 5394.99000007134, - 5399.990000071449, - 5404.990000071558, - 5409.990000071667, - 5414.990000071776, - 5419.990000071884, - 5424.9900000719945, - 5429.990000072104, - 5434.990000072213, - 5439.990000072322, - 5444.990000072431, - 5449.990000072539, - 5454.990000072649, - 5459.990000072758, - 5464.990000072868, - 5469.990000072978, - 5474.990000073086, - 5479.990000073195, - 5484.990000073304, - 5489.990000073413, - 5494.9900000735215, - 5499.990000073632, - 5504.990000073742, - 5509.99000007385, - 5514.990000073959, - 5519.990000074069, - 5524.990000074177, - 5529.9900000742855, - 5534.9900000743955, - 5539.990000074505, - 5544.990000074614, - 5549.990000074723, - 5554.990000074831, - 5559.990000074941, - 5564.99000007505, - 5569.9900000751595, - 5574.990000075269, - 5579.990000075379, - 5584.990000075487, - 5589.990000075596, - 5594.990000075705, - 5599.990000075814, - 5604.990000075924, - 5609.990000076033, - 5614.990000076143, - 5619.990000076251, - 5624.99000007636, - 5629.990000076468, - 5634.990000076578, - 5639.990000076688, - 5644.990000076797, - 5649.990000076906, - 5654.990000077016, - 5659.990000077124, - 5664.990000077232, - 5669.990000077342, - 5674.990000077451, - 5679.9900000775615, - 5684.990000077671, - 5689.99000007778, - 5694.990000077888, - 5699.990000077997, - 5704.990000078105, - 5709.990000078215, - 5714.9900000783255, - 5719.990000078434, - 5724.990000078543, - 5729.990000078652, - 5734.990000078761, - 5739.990000078871, - 5744.990000078979, - 5749.990000079089, - 5754.990000079198, - 5759.990000079307, - 5764.990000079417, - 5769.990000079525, - 5774.990000079634, - 5779.9900000797425, - 5784.990000079853, - 5789.990000079963, - 5794.990000080071, - 5799.990000080179, - 5804.990000080289, - 5809.990000080398, - 5814.990000080506, - 5819.9900000806165, - 5824.9900000807265, - 5829.990000080835, - 5834.990000080944, - 5839.990000081053, - 5844.990000081162, - 5849.99000008127, - 5854.9900000813805, - 5859.99000008149, - 5864.990000081599, - 5869.990000081708, - 5874.990000081816, - 5879.990000081926, - 5884.990000082035, - 5889.9900000821435, - 5894.990000082254, - 5899.990000082364, - 5904.990000082472, - 5909.990000082581, - 5914.99000008269, - 5919.990000082799, - 5924.9900000829075, - 5929.990000083018, - 5934.990000083128, - 5939.990000083236, - 5944.990000083345, - 5949.990000083455, - 5954.990000083563, - 5959.9900000836715, - 5964.9900000837815, - 5969.990000083892, - 5974.990000084, - 5979.990000084109, - 5984.990000084217, - 5989.990000084327, - 5994.990000084436, - 5999.9900000845455, - 6004.990000084655, - 6009.990000084765, - 6014.990000084873, - 6019.990000084982, - 6024.990000085091, - 6029.9900000852, - 6034.99000008531, - 6039.990000085419, - 6044.990000085529, - 6049.990000085637, - 6054.990000085746, - 6059.990000085854, - 6064.990000085964, - 6069.990000086073, - 6074.990000086183, - 6079.990000086292, - 6084.990000086402, - 6089.99000008651, - 6094.990000086618, - 6099.990000086728, - 6104.990000086837, - 6109.9900000869475, - 6114.990000087056, - 6119.990000087166, - 6124.990000087274, - 6129.990000087383, - 6134.990000087491, - 6139.990000087601, - 6144.990000087711, - 6149.99000008782, - 6154.990000087929, - 6159.990000088038, - 6164.990000088147, - 6169.990000088255, - 6174.990000088365, - 6179.9900000884745, - 6184.990000088584, - 6189.990000088693, - 6194.990000088803, - 6199.990000088911, - 6204.99000008902, - 6209.990000089128, - 6214.990000089239, - 6219.9900000893485, - 6224.990000089457, - 6229.990000089565, - 6234.990000089675, - 6239.990000089784, - 6244.990000089892, - 6249.9900000900025, - 6254.9900000901125, - 6259.990000090221, - 6264.99000009033, - 6269.990000090439, - 6274.990000090548, - 6279.990000090656, - 6284.990000090766, - 6289.9900000908765, - 6294.990000090985, - 6299.990000091094, - 6304.990000091202, - 6309.990000091312, - 6314.990000091421, - 6319.9900000915295, - 6324.99000009164, - 6329.99000009175, - 6334.990000091858, - 6339.990000091967, - 6344.990000092076, - 6349.990000092185, - 6354.9900000922935, - 6359.9900000924035, - 6364.990000092514, - 6369.990000092622, - 6374.990000092731, - 6379.990000092839, - 6384.990000092949, - 6389.9900000930575, - 6394.9900000931675, - 6399.990000093278, - 6404.990000093386, - 6409.990000093495, - 6414.990000093603, - 6419.990000093713, - 6424.990000093822, - 6429.9900000939315, - 6434.990000094041, - 6439.990000094151, - 6444.990000094259, - 6449.990000094368, - 6454.990000094477, - 6459.990000094586, - 6464.990000094696, - 6469.990000094805, - 6474.990000094915, - 6479.990000095023, - 6484.990000095132, - 6489.99000009524, - 6494.99000009535, - 6499.990000095459, - 6504.990000095569, - 6509.990000095678, - 6514.990000095788, - 6519.990000095896, - 6524.990000096004, - 6529.990000096114, - 6534.990000096223, - 6539.9900000963335, - 6544.990000096442, - 6549.990000096552, - 6554.99000009666, - 6559.990000096769, - 6564.990000096877, - 6569.990000096987, - 6574.990000097097, - 6579.990000097206, - 6584.990000097315, - 6589.990000097424, - 6594.990000097533, - 6599.990000097641, - 6604.990000097751, - 6609.990000097861, - 6614.99000009797, - 6619.990000098079, - 6624.990000098189, - 6629.990000098297, - 6634.990000098406, - 6639.990000098514, - 6644.990000098625, - 6649.9900000987345, - 6654.990000098843, - 6659.990000098951, - 6664.990000099061, - 6669.99000009917, - 6674.990000099278, - 6679.990000099388, - 6684.9900000994985, - 6689.990000099607, - 6694.990000099716, - 6699.990000099825, - 6704.990000099934, - 6709.990000100042, - 6714.990000100152, - 6719.9900001002625, - 6724.990000100371, - 6729.99000010048, - 6734.99000010059, - 6739.990000100698, - 6744.990000100807, - 6749.9900001009155, - 6754.9900001010255, - 6759.990000101136, - 6764.990000101244, - 6769.990000101353, - 6774.990000101462, - 6779.990000101571, - 6784.9900001016795, - 6789.9900001017895, - 6794.9900001019, - 6799.990000102008, - 6804.990000102117, - 6809.990000102227, - 6814.990000102335, - 6819.990000102443, - 6824.9900001025535, - 6829.9900001026635, - 6834.990000102772, - 6839.990000102881, - 6844.990000102989, - 6849.990000103099, - 6854.990000103208, - 6859.9900001033175, - 6864.990000103427, - 6869.990000103537, - 6874.990000103645, - 6879.990000103754, - 6884.990000103863, - 6889.990000103972, - 6894.9900001040805, - 6899.990000104191, - 6904.990000104301, - 6909.990000104409, - 6914.990000104518, - 6919.990000104626, - 6924.990000104736, - 6929.990000104845, - 6934.990000104955, - 6939.990000105064, - 6944.990000105174, - 6949.990000105282, - 6954.99000010539, - 6959.9900001055, - 6964.990000105609, - 6969.990000105719, - 6974.990000105828, - 6979.990000105938, - 6984.990000106046, - 6989.990000106155, - 6994.990000106263, - 6999.990000106373, - 7004.990000106482, - 7009.990000106592, - 7014.990000106701, - 7019.99000010681, - 7024.990000106919, - 7029.990000107027, - 7034.990000107137, - 7039.990000107247, - 7044.990000107356, - 7049.990000107465, - 7054.990000107575, - 7059.990000107683, - 7064.990000107792, - 7069.9900001079, - 7074.9900001080105, - 7079.9900001081205, - 7084.990000108229, - 7089.990000108337, - 7094.990000108447, - 7099.990000108556, - 7104.990000108664, - 7109.990000108774, - 7114.9900001088845, - 7119.990000108993, - 7124.990000109102, - 7129.990000109211, - 7134.99000010932, - 7139.990000109428, - 7144.990000109538, - 7149.9900001096485, - 7154.990000109757, - 7159.990000109866, - 7164.990000109976, - 7169.990000110084, - 7174.990000110193, - 7179.9900001103015, - 7184.990000110412, - 7189.990000110522, - 7194.99000011063, - 7199.990000110739, - 7204.990000110848, - 7209.990000110957, - 7214.9900001110655, - 7219.990000111175, - 7224.990000111286, - 7229.990000111394, - 7234.990000111503, - 7239.990000111613, - 7244.990000111721, - 7249.990000111829, - 7254.990000111939, - 7259.9900001120495, - 7264.990000112158, - 7269.990000112267, - 7274.990000112375, - 7279.990000112485, - 7284.990000112594, - 7289.990000112702, - 7294.990000112813, - 7299.990000112923, - 7304.990000113031, - 7309.990000113141, - 7314.990000113249, - 7319.990000113358, - 7324.9900001134665, - 7329.990000113577, - 7334.990000113687, - 7339.990000113795, - 7344.990000113904, - 7349.990000114012, - 7354.990000114122, - 7359.990000114231, - 7364.990000114341, - 7369.99000011445, - 7374.99000011456, - 7379.990000114668, - 7384.990000114776, - 7389.990000114886, - 7394.990000114995, - 7399.990000115104, - 7404.990000115214, - 7409.990000115324, - 7414.990000115432, - 7419.990000115541, - 7424.990000115649, - 7429.990000115759, - 7434.990000115869, - 7439.990000115978, - 7444.990000116087, - 7449.990000116196, - 7454.990000116305, - 7459.990000116413, - 7464.990000116523, - 7469.9900001166325, - 7474.990000116742, - 7479.990000116851, - 7484.990000116959, - 7489.990000117069, - 7494.990000117178, - 7499.990000117287, - 7504.990000117396, - 7509.9900001175065, - 7514.990000117615, - 7519.990000117725, - 7524.990000117833, - 7529.990000117942, - 7534.99000011805, - 7539.9900001181595, - 7544.9900001182705, - 7549.990000118379, - 7554.990000118488, - 7559.990000118597, - 7564.990000118706, - 7569.990000118814, - 7574.990000118924, - 7579.990000119034, - 7584.990000119143, - 7589.990000119252, - 7594.990000119362, - 7599.99000011947, - 7604.990000119579, - 7609.9900001196875, - 7614.9900001197975, - 7619.990000119908, - 7624.990000120016, - 7629.990000120125, - 7634.990000120234, - 7639.990000120343, - 7644.990000120451, - 7649.9900001205615, - 7654.9900001206715, - 7659.99000012078, - 7664.990000120889, - 7669.990000120999, - 7674.990000121107, - 7679.990000121215, - 7684.990000121325, - 7689.9900001214355, - 7694.990000121544, - 7699.990000121653, - 7704.990000121761, - 7709.990000121871, - 7714.99000012198, - 7719.9900001220885, - 7724.990000122199, - 7729.990000122309, - 7734.990000122417, - 7739.990000122526, - 7744.990000122635, - 7749.990000122744, - 7754.9900001228525, - 7759.990000122963, - 7764.990000123073, - 7769.990000123181, - 7774.990000123291, - 7779.990000123398, - 7784.990000123508, - 7789.990000123617, - 7794.990000123726, - 7799.990000123836, - 7804.990000123946, - 7809.990000124054, - 7814.990000124162, - 7819.990000124272, - 7824.990000124381, - 7829.99000012449, - 7834.9900001246, - 7839.99000012471, - 7844.990000124818, - 7849.990000124927, - 7854.990000125035, - 7859.990000125145, - 7864.990000125254, - 7869.990000125364, - 7874.990000125473, - 7879.990000125582, - 7884.990000125691, - 7889.990000125799, - 7894.990000125909, - 7899.9900001260185, - 7904.990000126128, - 7909.990000126237, - 7914.990000126347, - 7919.990000126455, - 7924.990000126564, - 7929.990000126673, - 7934.990000126782, - 7939.9900001268925, - 7944.990000127001, - 7949.990000127109, - 7954.990000127219, - 7959.990000127328, - 7964.990000127436, - 7969.990000127546, - 7974.9900001276565, - 7979.990000127765, - 7984.990000127874, - 7989.990000127983, - 7994.990000128092, - 7999.9900001282, - 8004.9900001283095, - 8009.9900001284195, - 8014.990000128529, - 8019.990000128638, - 8024.990000128748, - 8029.990000128856, - 8034.990000128965, - 8039.990000129073, - 8044.990000129182, - 8049.990000129294, - 8054.990000129402, - 8059.990000129511, - 8064.99000012962, - 8069.990000129729, - 8074.990000129837, - 8079.9900001299475, - 8084.9900001300575, - 8089.990000130166, - 8094.990000130275, - 8099.990000130385, - 8104.990000130493, - 8109.990000130601, - 8114.9900001307105, - 8119.9900001308215, - 8124.99000013093, - 8129.990000131039, - 8134.990000131147, - 8139.990000131257, - 8144.990000131366, - 8149.9900001314745, - 8154.990000131585, - 8159.990000131695, - 8164.990000131803, - 8169.990000131912, - 8174.990000132021, - 8179.99000013213, - 8184.9900001322385, - 8189.9900001323485, - 8194.990000132457, - 8199.990000132566, - 8204.990000132675, - 8209.990000132784, - 8214.990000132893, - 8219.990000133002, - 8224.990000133112, - 8229.99000013322, - 8234.99000013333, - 8239.990000133439, - 8244.990000133548, - 8249.990000133657, - 8254.990000133766, - 8259.990000133876, - 8264.990000133985, - 8269.990000134094, - 8274.990000134203, - 8279.990000134312, - 8284.990000134421, - 8289.99000013453, - 8294.990000134641, - 8299.990000134749, - 8304.990000134858, - 8309.990000134967, - 8314.990000135076, - 8319.990000135185, - 8324.990000135294, - 8329.990000135404, - 8334.990000135513, - 8339.990000135622, - 8344.990000135731, - 8349.990000135842, - 8354.99000013595, - 8359.990000136058, - 8364.990000136168, - 8369.990000136277, - 8374.990000136386, - 8379.990000136495, - 8384.990000136604, - 8389.990000136713, - 8394.990000136822, - 8399.990000136931, - 8404.99000013704, - 8409.99000013715, - 8414.990000137259, - 8419.990000137368, - 8424.990000137477, - 8429.990000137586, - 8434.990000137695, - 8439.990000137805, - 8444.990000137914, - 8449.990000138023, - 8454.990000138132, - 8459.990000138241, - 8464.99000013835, - 8469.99000013846, - 8474.990000138569, - 8479.990000138678, - 8484.990000138787, - 8489.990000138896, - 8494.990000139005, - 8499.990000139114, - 8504.990000139222, - 8509.990000139334, - 8514.990000139442, - 8519.990000139549, - 8524.99000013966, - 8529.990000139771, - 8534.990000139878, - 8539.990000139987, - 8544.990000140097, - 8549.990000140206, - 8554.990000140315, - 8559.990000140424, - 8564.990000140533, - 8569.990000140642, - 8574.990000140751, - 8579.990000140859, - 8584.99000014097, - 8589.990000141079, - 8594.990000141188, - 8599.990000141297, - 8604.990000141406, - 8609.990000141515, - 8614.990000141623, - 8619.990000141734, - 8624.990000141843, - 8629.990000141952, - 8634.990000142061, - 8639.99000014217, - 8644.990000142281, - 8649.990000142388, - 8654.990000142498, - 8659.990000142607, - 8664.990000142716, - 8669.990000142825, - 8674.990000142934, - 8679.990000143043, - 8684.990000143152, - 8689.990000143262, - 8694.99000014337, - 8699.99000014348, - 8704.990000143589, - 8709.990000143698, - 8714.990000143807, - 8719.990000143916, - 8724.990000144026, - 8729.990000144135, - 8734.990000144244, - 8739.990000144353, - 8744.990000144462, - 8749.990000144571, - 8754.99000014468, - 8759.99000014479, - 8764.990000144899, - 8769.990000145008, - 8774.990000145117, - 8779.990000145226, - 8784.990000145335, - 8789.990000145444, - 8794.990000145553, - 8799.990000145663, - 8804.990000145772, - 8809.990000145881, - 8814.990000145992, - 8819.9900001461, - 8824.990000146208, - 8829.990000146317, - 8834.990000146427, - 8839.990000146536, - 8844.990000146645, - 8849.990000146754, - 8854.990000146863, - 8859.990000146972, - 8864.990000147081, - 8869.99000014719, - 8874.9900001473, - 8879.990000147409, - 8884.990000147518, - 8889.990000147627, - 8894.990000147736, - 8899.990000147845, - 8904.990000147955, - 8909.990000148064, - 8914.990000148173, - 8919.990000148282, - 8924.990000148391, - 8929.9900001485, - 8934.99000014861, - 8939.99000014872, - 8944.990000148828, - 8949.990000148937, - 8954.990000149046, - 8959.990000149155, - 8964.990000149264, - 8969.990000149373, - 8974.990000149483, - 8979.990000149592, - 8984.990000149699, - 8989.99000014981, - 8994.990000149919, - 8999.990000150028, - 9004.990000150137, - 9009.990000150246, - 9014.990000150356, - 9019.990000150465, - 9024.990000150574, - 9029.990000150683, - 9034.990000150792, - 9039.9900001509, - 9044.990000151009, - 9049.990000151121, - 9054.990000151229, - 9059.990000151338, - 9064.990000151447, - 9069.990000151556, - 9074.990000151663, - 9079.990000151774, - 9084.990000151884, - 9089.990000151993, - 9094.990000152102, - 9099.990000152213, - 9104.99000015232, - 9109.99000015243, - 9114.990000152538, - 9119.990000152648, - 9124.990000152757, - 9129.990000152866, - 9134.990000152977, - 9139.990000153084, - 9144.990000153191, - 9149.990000153302, - 9154.990000153412, - 9159.99000015352, - 9164.99000015363, - 9169.99000015374, - 9174.990000153848, - 9179.990000153955, - 9184.990000154066, - 9189.990000154176, - 9194.990000154283, - 9199.990000154394, - 9204.990000154505, - 9209.990000154612, - 9214.990000154721, - 9219.990000154829, - 9224.99000015494, - 9229.990000155047, - 9234.990000155158, - 9239.990000155269, - 9244.990000155376, - 9249.990000155483, - 9254.990000155594, - 9259.990000155703, - 9264.990000155813, - 9269.990000155922, - 9274.99000015603, - 9279.99000015614, - 9284.99000015625, - 9289.990000156358, - 9294.99000015647, - 9299.990000156577, - 9304.990000156686, - 9309.990000156795, - 9314.990000156904, - 9319.990000157011, - 9324.990000157122, - 9329.990000157231, - 9334.99000015734, - 9339.99000015745, - 9344.99000015756, - 9349.990000157668, - 9354.990000157775, - 9359.990000157886, - 9364.990000157995, - 9369.990000158105, - 9374.990000158214, - 9379.990000158325, - 9384.990000158432, - 9389.99000015854, - 9394.99000015865, - 9399.99000015876, - 9404.990000158868, - 9409.990000158978, - 9414.990000159089, - 9419.990000159196, - 9424.990000159305, - 9429.990000159414, - 9434.990000159523, - 9439.990000159632, - 9444.990000159742, - 9449.99000015985, - 9454.99000015996, - 9459.990000160069, - 9464.990000160178, - 9469.990000160287, - 9474.990000160395, - 9479.990000160507, - 9484.990000160617, - 9489.990000160724, - 9494.990000160833, - 9499.990000160942, - 9504.990000161053, - 9509.99000016116, - 9514.990000161271, - 9519.990000161379, - 9524.990000161488, - 9529.990000161595, - 9534.990000161706, - 9539.990000161817, - 9544.990000161924, - 9549.990000162034, - 9554.990000162143, - 9559.990000162252, - 9564.99000016236, - 9569.99000016247, - 9574.99000016258, - 9579.990000162688, - 9584.990000162798, - 9589.990000162908, - 9594.990000163016, - 9599.990000163123, - 9604.990000163234, - 9609.990000163343, - 9614.990000163452, - 9619.99000016356, - 9624.99000016367, - 9629.99000016378, - 9634.990000163887, - 9639.990000163998, - 9644.990000164107, - 9649.990000164216, - 9654.990000164324, - 9659.990000164436, - 9664.990000164544, - 9669.990000164653, - 9674.990000164762, - 9679.990000164871, - 9684.990000164978, - 9689.99000016509, - 9694.9900001652, - 9699.990000165308, - 9704.990000165417, - 9709.990000165526, - 9714.990000165635, - 9719.990000165744, - 9724.990000165852, - 9729.990000165964, - 9734.990000166072, - 9739.990000166179, - 9744.99000016629, - 9749.990000166401, - 9754.990000166508, - 9759.990000166616, - 9764.990000166728, - 9769.990000166836, - 9774.990000166945, - 9779.990000167054, - 9784.990000167165, - 9789.990000167272, - 9794.99000016738, - 9799.99000016749, - 9804.9900001676, - 9809.990000167707, - 9814.990000167818, - 9819.990000167929, - 9824.990000168036, - 9829.990000168145, - 9834.990000168254, - 9839.990000168364, - 9844.990000168471, - 9849.990000168582, - 9854.990000168691, - 9859.9900001688, - 9864.99000016891, - 9869.990000169018, - 9874.990000169128, - 9879.990000169237, - 9884.990000169346, - 9889.990000169455, - 9894.990000169564, - 9899.990000169671, - 9904.99000016978, - 9909.990000169893, - 9914.99000017, - 9919.99000017011, - 9924.990000170219, - 9929.990000170328, - 9934.990000170435, - 9939.990000170546, - 9944.990000170656, - 9949.990000170765, - 9954.990000170874, - 9959.990000170985, - 9964.990000171092, - 9969.9900001712, - 9974.99000017131, - 9979.990000171421, - 9984.990000171529, - 9989.990000171638, - 9994.990000171749, - 9999.990000171856, - 10004.990000171963, - 10009.990000172074, - 10014.990000172183, - 10019.990000172293, - 10024.990000172402, - 10029.990000172513, - 10034.99000017262, - 10039.99000017273, - 10044.990000172838, - 10049.990000172947, - 10054.990000173055, - 10059.990000173166, - 10064.990000173277, - 10069.990000173384, - 10074.990000173493, - 10079.990000173602, - 10084.990000173711, - 10089.99000017382, - 10094.99000017393, - 10099.99000017404, - 10104.990000174148, - 10109.990000174257, - 10114.990000174366, - 10119.990000174475, - 10124.990000174585, - 10129.990000174694, - 10134.990000174803, - 10139.990000174912, - 10144.99000017502, - 10149.99000017513, - 10154.990000175241, - 10159.990000175349, - 10164.990000175458, - 10169.990000175567, - 10174.990000175676, - 10179.990000175783, - 10184.990000175894, - 10189.990000176003, - 10194.990000176113, - 10199.990000176222, - 10204.990000176329, - 10209.99000017644, - 10214.990000176547, - 10219.990000176658, - 10224.990000176767, - 10229.990000176876, - 10234.990000176986, - 10239.990000177097, - 10244.990000177204, - 10249.990000177311, - 10254.990000177422, - 10259.990000177531, - 10264.99000017764, - 10269.99000017775, - 10274.99000017786, - 10279.990000177968, - 10284.990000178077, - 10289.990000178186, - 10294.990000178295, - 10299.990000178404, - 10304.990000178514, - 10309.990000178625, - 10314.990000178732, - 10319.990000178841, - 10324.99000017895, - 10329.99000017906, - 10334.990000179167, - 10339.99000017928, - 10344.990000179389, - 10349.990000179496, - 10354.990000179605, - 10359.990000179714, - 10364.990000179825, - 10369.990000179932, - 10374.990000180042, - 10379.99000018015, - 10384.990000180258, - 10389.990000180367, - 10394.990000180478, - 10399.990000180589, - 10404.990000180696, - 10409.990000180806, - 10414.990000180915, - 10419.990000181024, - 10424.990000181131, - 10429.990000181242, - 10434.990000181353, - 10439.99000018146, - 10444.99000018157, - 10449.99000018168, - 10454.990000181788, - 10459.990000181895, - 10464.990000182006, - 10469.990000182115, - 10474.990000182224, - 10479.990000182332, - 10484.990000182444, - 10489.990000182552, - 10494.990000182659, - 10499.99000018277, - 10504.99000018288, - 10509.990000182988, - 10514.990000183096, - 10519.990000183208, - 10524.990000183316, - 10529.990000183425, - 10534.990000183534, - 10539.990000183643, - 10544.990000183752, - 10549.99000018386, - 10554.99000018397, - 10559.99000018408, - 10564.990000184189, - 10569.990000184298, - 10574.990000184407, - 10579.990000184516, - 10584.990000184624, - 10589.990000184736, - 10594.990000184844, - 10599.990000184953, - 10604.990000185062, - 10609.990000185173, - 10614.99000018528, - 10619.990000185391, - 10624.9900001855, - 10629.990000185608, - 10634.990000185717, - 10639.990000185826, - 10644.990000185937, - 10649.990000186044, - 10654.990000186152, - 10659.990000186262, - 10664.990000186372, - 10669.990000186479, - 10674.99000018659, - 10679.9900001867, - 10684.990000186808, - 10689.990000186917, - 10694.990000187026, - 10699.990000187136, - 10704.990000187243, - 10709.990000187354, - 10714.990000187465, - 10719.990000187572, - 10724.99000018768, - 10729.99000018779, - 10734.9900001879, - 10739.990000188009, - 10744.990000188118, - 10749.990000188227, - 10754.990000188336, - 10759.990000188443, - 10764.990000188553, - 10769.990000188665, - 10774.990000188773, - 10779.990000188882, - 10784.990000188991, - 10789.9900001891, - 10794.99000018921, - 10799.990000189318, - 10804.990000189428, - 10809.990000189537, - 10814.990000189646, - 10819.990000189757, - 10824.990000189864, - 10829.990000189971, - 10834.990000190082, - 10839.990000190191, - 10844.9900001903, - 10849.99000019041, - 10854.99000019052, - 10859.990000190628, - 10864.990000190735, - 10869.990000190846, - 10874.990000190955, - 10879.990000191065, - 10884.990000191174, - 10889.990000191285, - 10894.990000191392, - 10899.9900001915, - 10904.990000191608, - 10909.99000019172, - 10914.990000191827, - 10919.990000191938, - 10924.990000192049, - 10929.990000192156, - 10934.990000192265, - 10939.990000192374, - 10944.990000192483, - 10949.99000019259, - 10954.990000192702, - 10959.990000192809, - 10964.99000019292, - 10969.99000019303, - 10974.990000193138, - 10979.990000193247, - 10984.990000193357, - 10989.990000193466, - 10994.990000193575, - 10999.990000193684, - 11004.990000193791, - 11009.990000193902, - 11014.990000194011, - 11019.99000019412, - 11024.990000194228, - 11029.99000019434, - 11034.990000194448, - 11039.990000194555, - 11044.990000194666, - 11049.990000194775, - 11054.990000194883, - 11059.990000194995, - 11064.990000195105, - 11069.990000195212, - 11074.99000019532, - 11079.99000019543, - 11084.99000019554, - 11089.990000195647, - 11094.990000195758, - 11099.990000195869, - 11104.990000195976, - 11109.990000196083, - 11114.990000196194, - 11119.990000196303, - 11124.99000019641, - 11129.990000196522, - 11134.99000019663, - 11139.99000019674, - 11144.990000196849, - 11149.990000196958, - 11154.990000197067, - 11159.990000197175, - 11164.990000197286, - 11169.990000197395, - 11174.990000197506, - 11179.990000197613, - 11184.990000197722, - 11189.990000197831, - 11194.990000197939, - 11199.99000019805, - 11204.990000198159, - 11209.99000019827, - 11214.990000198377, - 11219.990000198486, - 11224.990000198597, - 11229.990000198704, - 11234.990000198814, - 11239.990000198923, - 11244.990000199034, - 11249.990000199141, - 11254.99000019925, - 11259.990000199361, - 11264.990000199468, - 11269.990000199576, - 11274.990000199687, - 11279.990000199796, - 11284.990000199905, - 11289.990000200014, - 11294.990000200125, - 11299.990000200232, - 11304.99000020034, - 11309.990000200449, - 11314.99000020056, - 11319.990000200669, - 11324.990000200778, - 11329.990000200889, - 11334.990000200996, - 11339.990000201104, - 11344.990000201216, - 11349.990000201324, - 11354.990000201433, - 11359.990000201544, - 11364.990000201653, - 11369.99000020176, - 11374.99000020187, - 11379.99000020198, - 11384.990000202088, - 11389.990000202195, - 11394.990000202308, - 11399.990000202417, - 11404.990000202524, - 11409.990000202632, - 11414.990000202744, - 11419.990000202852, - 11424.990000202959, - 11429.990000203072, - 11434.99000020318, - 11439.990000203288, - 11444.990000203396, - 11449.990000203506, - 11454.990000203616, - 11459.990000203723, - 11464.990000203834, - 11469.990000203943, - 11474.990000204052, - 11479.99000020416, - 11484.99000020427, - 11489.99000020438, - 11494.990000204487, - 11499.990000204598, - 11504.990000204707, - 11509.990000204816, - 11514.990000204923, - 11519.990000205034, - 11524.990000205144, - 11529.99000020525, - 11534.990000205362, - 11539.990000205471, - 11544.990000205578, - 11549.990000205691, - 11554.990000205798, - 11559.990000205908, - 11564.990000206015, - 11569.990000206126, - 11574.990000206235, - 11579.990000206346, - 11584.990000206453, - 11589.990000206562, - 11594.990000206672, - 11599.99000020678, - 11604.99000020689, - 11609.990000206999, - 11614.990000207106, - 11619.990000207217, - 11624.990000207326, - 11629.990000207437, - 11634.990000207545, - 11639.990000207654, - 11644.990000207763, - 11649.99000020787, - 11654.990000207981, - 11659.99000020809, - 11664.990000208201, - 11669.990000208309, - 11674.990000208418, - 11679.990000208529, - 11684.990000208636, - 11689.990000208745, - 11694.990000208854, - 11699.990000208965, - 11704.990000209073, - 11709.990000209182, - 11714.990000209289, - 11719.9900002094, - 11724.99000020951, - 11729.990000209618, - 11734.99000020973, - 11739.990000209837, - 11744.990000209946, - 11749.990000210057, - 11754.990000210164, - 11759.990000210271, - 11764.99000021038, - 11769.990000210493, - 11774.9900002106, - 11779.99000021071, - 11784.99000021082, - 11789.990000210928, - 11794.990000211035, - 11799.990000211144, - 11804.990000211255, - 11809.990000211365, - 11814.990000211475, - 11819.990000211585, - 11824.990000211692, - 11829.9900002118, - 11834.990000211908, - 11839.990000212021, - 11844.990000212129, - 11849.99000021224, - 11854.990000212349, - 11859.990000212456, - 11864.990000212563, - 11869.990000212674, - 11874.990000212783, - 11879.990000212892, - 11884.990000213003, - 11889.99000021311, - 11894.99000021322, - 11899.990000213327, - 11904.990000213438, - 11909.990000213547, - 11914.990000213655, - 11919.990000213767, - 11924.990000213877, - 11929.990000213984, - 11934.990000214091, - 11939.990000214202, - 11944.990000214311, - 11949.990000214422, - 11954.99000021453, - 11959.99000021464, - 11964.990000214748, - 11969.990000214855, - 11974.990000214966, - 11979.990000215075, - 11984.990000215183, - 11989.990000215294, - 11994.990000215403, - 11999.990000215512, - 12004.990000215621, - 12009.99000021573, - 12014.99000021584, - 12019.990000215947, - 12024.990000216058, - 12029.990000216167, - 12034.990000216278, - 12039.990000216385, - 12044.990000216494, - 12049.990000216603, - 12054.99000021671, - 12059.99000021682, - 12064.990000216929, - 12069.990000217042, - 12074.990000217149, - 12079.990000217258, - 12084.990000217369, - 12089.990000217476, - 12094.990000217584, - 12099.990000217695, - 12104.990000217806, - 12109.990000217913, - 12114.990000218022, - 12119.990000218133, - 12124.99000021824, - 12129.99000021835, - 12134.990000218459, - 12139.990000218568, - 12144.990000218677, - 12149.990000218786, - 12154.990000218897, - 12159.990000219004, - 12164.990000219112, - 12169.990000219224, - 12174.990000219332, - 12179.99000021944, - 12184.99000021955, - 12189.990000219657, - 12194.990000219768, - 12199.990000219876, - 12204.990000219988, - 12209.990000220096, - 12214.990000220205, - 12219.990000220316, - 12224.990000220425, - 12229.990000220532, - 12234.99000022064, - 12239.990000220749, - 12244.99000022086, - 12249.990000220967, - 12254.99000022108, - 12259.990000221189, - 12264.990000221296, - 12269.990000221404, - 12274.990000221514, - 12279.990000221624, - 12284.990000221731, - 12289.99000022184, - 12294.990000221953, - 12299.99000022206, - 12304.990000222171, - 12309.990000222278, - 12314.990000222388, - 12319.990000222495, - 12324.990000222606, - 12329.990000222715, - 12334.990000222824, - 12339.990000222931, - 12344.990000223042, - 12349.990000223152, - 12354.990000223259, - 12359.99000022337, - 12364.990000223479, - 12369.990000223588, - 12374.990000223695, - 12379.990000223806, - 12384.990000223916, - 12389.990000224023, - 12394.990000224134, - 12399.990000224243, - 12404.990000224354, - 12409.990000224461, - 12414.99000022457, - 12419.99000022468, - 12424.990000224787, - 12429.990000224898, - 12434.990000225007, - 12439.990000225118, - 12444.990000225225, - 12449.990000225334, - 12454.990000225444, - 12459.990000225553, - 12464.990000225662, - 12469.990000225771, - 12474.990000225878, - 12479.990000225991, - 12484.990000226098, - 12489.99000022621, - 12494.990000226317, - 12499.990000226426, - 12504.990000226535, - 12509.990000226642, - 12514.990000226753, - 12519.990000226862, - 12524.990000226973, - 12529.99000022708, - 12534.99000022719, - 12539.9900002273, - 12544.990000227408, - 12549.990000227517, - 12554.990000227626, - 12559.990000227737, - 12564.990000227845, - 12569.990000227954, - 12574.990000228065, - 12579.990000228172, - 12584.99000022828, - 12589.99000022839, - 12594.990000228501, - 12599.990000228609, - 12604.990000228718, - 12609.990000228829, - 12614.990000228936, - 12619.990000229043, - 12624.990000229152, - 12629.990000229265, - 12634.990000229373, - 12639.990000229482, - 12644.990000229589, - 12649.9900002297, - 12654.990000229807, - 12659.990000229916, - 12664.990000230027, - 12669.990000230137, - 12674.990000230247, - 12679.990000230357, - 12684.990000230464, - 12689.990000230571, - 12694.99000023068, - 12699.990000230791, - 12704.9900002309, - 12709.990000231008, - 12714.99000023112, - 12719.990000231228, - 12724.990000231335, - 12729.990000231446, - 12734.990000231555, - 12739.990000231664, - 12744.990000231775, - 12749.990000231885, - 12754.990000231992, - 12759.9900002321, - 12764.99000023221, - 12769.99000023232, - 12774.990000232428, - 12779.99000023254, - 12784.990000232649, - 12789.990000232756, - 12794.990000232863, - 12799.990000232974, - 12804.990000233083, - 12809.99000023319, - 12814.990000233302, - 12819.990000233409, - 12824.99000023352, - 12829.990000233627, - 12834.990000233738, - 12839.990000233847, - 12844.990000233955, - 12849.990000234066, - 12854.990000234175, - 12859.990000234284, - 12864.990000234393, - 12869.990000234502, - 12874.990000234611, - 12879.990000234719, - 12884.99000023483, - 12889.990000234939, - 12894.99000023505, - 12899.990000235157, - 12904.990000235266, - 12909.990000235375, - 12914.990000235483, - 12919.990000235592, - 12924.990000235703, - 12929.990000235814, - 12934.99000023592, - 12939.99000023603, - 12944.990000236141, - 12949.990000236248, - 12954.990000236356, - 12959.990000236467, - 12964.990000236578, - 12969.990000236685, - 12974.990000236794, - 12979.990000236905, - 12984.990000237012, - 12989.99000023712, - 12994.990000237229, - 12999.990000237342, - 13004.990000237449, - 13009.990000237558, - 13014.990000237669, - 13019.990000237776, - 13024.990000237884, - 13029.990000237996, - 13034.990000238104, - 13039.990000238213, - 13044.990000238322, - 13049.990000238433, - 13054.99000023854, - 13059.99000023865, - 13064.99000023876, - 13069.990000238868, - 13074.990000238977, - 13079.990000239088, - 13084.990000239197, - 13089.990000239304, - 13094.990000239412, - 13099.99000023952, - 13104.990000239632, - 13109.99000023974, - 13114.990000239852, - 13119.99000023996, - 13124.990000240068, - 13129.990000240176, - 13134.990000240286, - 13139.990000240396, - 13144.990000240503, - 13149.990000240612, - 13154.990000240725, - 13159.990000240832, - 13164.99000024094, - 13169.99000024105, - 13174.99000024116, - 13179.990000241267, - 13184.990000241378, - 13189.990000241487, - 13194.990000241596, - 13199.990000241703, - 13204.990000241814, - 13209.990000241924, - 13214.99000024203, - 13219.990000242142, - 13224.990000242251, - 13229.990000242358, - 13234.990000242471, - 13239.990000242578, - 13244.990000242688, - 13249.990000242795, - 13254.990000242906, - 13259.990000243015, - 13264.990000243126, - 13269.990000243233, - 13274.990000243342, - 13279.990000243452, - 13284.990000243559, - 13289.99000024367, - 13294.990000243779, - 13299.99000024389, - 13304.990000243997, - 13309.990000244106, - 13314.990000244215, - 13319.990000244325, - 13324.990000244434, - 13329.990000244543, - 13334.99000024465, - 13339.990000244761, - 13344.99000024487, - 13349.990000244981, - 13354.990000245089, - 13359.990000245198, - 13364.990000245307, - 13369.990000245414, - 13374.990000245525, - 13379.990000245634, - 13384.990000245745, - 13389.990000245853, - 13394.990000245962, - 13399.990000246069, - 13404.99000024618, - 13409.990000246291, - 13414.990000246398, - 13419.99000024651, - 13424.990000246617, - 13429.990000246726, - 13434.990000246837, - 13439.990000246944, - 13444.990000247051, - 13449.990000247162, - 13454.990000247273, - 13459.99000024738, - 13464.99000024749, - 13469.9900002476, - 13474.990000247708, - 13479.990000247815, - 13484.990000247924, - 13489.990000248037, - 13494.990000248144, - 13499.990000248254, - 13504.990000248365, - 13509.990000248472, - 13514.99000024858, - 13519.990000248692, - 13524.9900002488, - 13529.990000248908, - 13534.99000024902, - 13539.990000249129, - 13544.990000249236, - 13549.990000249343, - 13554.990000249452, - 13559.990000249563, - 13564.990000249672, - 13569.990000249783, - 13574.99000024989, - 13579.99000025, - 13584.990000250107, - 13589.990000250218, - 13594.990000250327, - 13599.990000250436, - 13604.990000250547, - 13609.990000250657, - 13614.990000250764, - 13619.990000250871, - 13624.990000250982, - 13629.990000251091, - 13634.9900002512, - 13639.990000251308, - 13644.99000025142, - 13649.990000251528, - 13654.990000251635, - 13659.990000251746, - 13664.990000251855, - 13669.990000251963, - 13674.990000252075, - 13679.990000252184, - 13684.990000252292, - 13689.9900002524, - 13694.99000025251, - 13699.99000025262, - 13704.990000252727, - 13709.990000252837, - 13714.990000252948, - 13719.990000253056, - 13724.990000253165, - 13729.990000253274, - 13734.990000253383, - 13739.99000025349, - 13744.990000253601, - 13749.990000253709, - 13754.990000253822, - 13759.990000253929, - 13764.990000254038, - 13769.990000254147, - 13774.990000254254, - 13779.990000254364, - 13784.990000254475, - 13789.990000254586, - 13794.990000254693, - 13799.990000254802, - 13804.990000254913, - 13809.99000025502, - 13814.99000025513, - 13819.990000255239, - 13824.99000025535, - 13829.990000255457, - 13834.990000255566, - 13839.990000255677, - 13844.990000255784, - 13849.990000255892, - 13854.990000256003, - 13859.990000256112, - 13864.99000025622, - 13869.99000025633, - 13874.99000025644, - 13879.990000256548, - 13884.990000256656, - 13889.990000256768, - 13894.990000256876, - 13899.990000256985, - 13904.990000257094, - 13909.990000257205, - 13914.990000257312, - 13919.99000025742, - 13924.990000257529, - 13929.990000257641, - 13934.990000257749, - 13939.99000025786, - 13944.990000257969, - 13949.990000258076, - 13954.990000258183, - 13959.990000258293, - 13964.990000258404, - 13969.990000258513, - 13974.990000258624, - 13979.990000258733, - 13984.99000025884, - 13989.99000025895, - 13994.990000259058, - 13999.990000259168, - 14004.990000259275, - 14009.990000259388, - 14014.990000259497, - 14019.990000259604, - 14024.990000259711, - 14029.990000259822, - 14034.990000259932, - 14039.99000026004, - 14044.99000026015, - 14049.990000260259, - 14054.990000260368, - 14059.990000260475, - 14064.990000260586, - 14069.990000260696, - 14074.990000260803, - 14079.990000260914, - 14084.990000261023, - 14089.990000261132, - 14094.99000026124, - 14099.99000026135, - 14104.99000026146, - 14109.990000261567, - 14114.990000261678, - 14119.990000261787, - 14124.990000261898, - 14129.990000262005, - 14134.990000262114, - 14139.990000262223, - 14144.99000026233, - 14149.990000262442, - 14154.990000262549, - 14159.990000262658, - 14164.99000026277, - 14169.990000262878, - 14174.990000262987, - 14179.990000263097, - 14184.990000263206, - 14189.990000263315, - 14194.990000263422, - 14199.990000263533, - 14204.990000263642, - 14209.990000263753, - 14214.99000026386, - 14219.99000026397, - 14224.990000264079, - 14229.990000264186, - 14234.990000264297, - 14239.990000264406, - 14244.990000264517, - 14249.990000264625, - 14254.990000264734, - 14259.990000264845, - 14264.990000264952, - 14269.990000265061, - 14274.990000265168, - 14279.990000265281, - 14284.990000265389, - 14289.990000265498, - 14294.990000265609, - 14299.990000265716, - 14304.990000265825, - 14309.990000265934, - 14314.990000266045, - 14319.990000266152, - 14324.990000266262, - 14329.990000266369, - 14334.990000266482, - 14339.990000266587, - 14344.9900002667, - 14349.99000026681, - 14354.990000266916, - 14359.990000267026, - 14364.990000267137, - 14369.990000267244, - 14374.990000267351, - 14379.99000026746, - 14384.990000267571, - 14389.99000026768, - 14394.990000267791, - 14399.9900002679, - 14404.990000268008, - 14409.990000268115, - 14414.990000268224, - 14419.990000268335, - 14424.990000268444, - 14429.990000268555, - 14434.990000268665, - 14439.990000268772, - 14444.99000026888, - 14449.990000268992, - 14454.9900002691, - 14459.990000269208, - 14464.99000026932, - 14469.990000269428, - 14474.990000269536, - 14479.990000269643, - 14484.990000269754, - 14489.990000269863, - 14494.990000269972, - 14499.990000270083, - 14504.99000027019, - 14509.9900002703, - 14514.990000270407, - 14519.990000270518, - 14524.990000270627, - 14529.990000270735, - 14534.990000270845, - 14539.990000270956, - 14544.990000271064, - 14549.990000271171, - 14554.990000271282, - 14559.990000271391, - 14564.990000271499, - 14569.99000027161, - 14574.99000027172, - 14579.990000271828, - 14584.990000271937, - 14589.990000272046, - 14594.990000272155, - 14599.990000272262, - 14604.990000272373, - 14609.990000272483, - 14614.990000272594, - 14619.9900002727, - 14624.99000027281, - 14629.99000027292, - 14634.990000273026, - 14639.990000273137, - 14644.990000273247, - 14649.990000273358, - 14654.990000273465, - 14659.990000273574, - 14664.990000273685, - 14669.990000273792, - 14674.9900002739, - 14679.990000274009, - 14684.990000274118, - 14689.990000274229, - 14694.990000274338, - 14699.990000274449, - 14704.990000274556, - 14709.990000274664, - 14714.990000274775, - 14719.990000274884, - 14724.990000274993, - 14729.990000275102, - 14734.990000275213, - 14739.99000027532, - 14744.990000275433, - 14749.990000275537, - 14754.990000275648, - 14759.990000275757, - 14764.990000275866, - 14769.990000275977, - 14774.990000276084, - 14779.990000276191, - 14784.9900002763, - 14789.990000276412, - 14794.990000276519, - 14799.990000276632, - 14804.99000027674, - 14809.990000276848, - 14814.990000276955, - 14819.990000277065, - 14824.990000277176, - 14829.990000277285, - 14834.990000277396, - 14839.990000277505, - 14844.990000277612, - 14849.99000027772, - 14854.990000277832, - 14859.99000027794, - 14864.990000278047, - 14869.99000027816, - 14874.990000278269, - 14879.990000278376, - 14884.990000278483, - 14889.990000278594, - 14894.990000278704, - 14899.99000027881, - 14904.990000278922, - 14909.990000279033, - 14914.99000027914, - 14919.990000279251, - 14924.990000279358, - 14929.990000279467, - 14934.990000279575, - 14939.990000279686, - 14944.990000279795, - 14949.990000279904, - 14954.990000280011, - 14959.990000280122, - 14964.990000280231, - 14969.990000280342, - 14974.99000028045, - 14979.990000280559, - 14984.99000028067, - 14989.990000280777, - 14994.990000280886, - 14999.990000280995, - 15004.990000281103, - 15009.990000281214, - 15014.990000281323, - 15019.990000281434, - 15024.990000281541, - 15029.99000028165, - 15034.99000028176, - 15039.990000281869, - 15044.990000281978, - 15049.990000282087, - 15054.990000282194, - 15059.990000282305, - 15064.990000282414, - 15069.990000282525, - 15074.990000282633, - 15079.990000282742, - 15084.990000282849, - 15089.990000282958, - 15094.99000028307, - 15099.990000283178, - 15104.99000028329, - 15109.990000283397, - 15114.990000283506, - 15119.990000283617, - 15124.990000283724, - 15129.990000283833, - 15134.990000283942, - 15139.990000284053, - 15144.99000028416, - 15149.990000284268, - 15154.99000028438, - 15159.990000284488, - 15164.990000284597, - 15169.990000284706, - 15174.990000284817, - 15179.990000284924, - 15184.990000285034, - 15189.990000285145, - 15194.990000285252, - 15199.99000028536, - 15204.990000285468, - 15209.990000285581, - 15214.990000285688, - 15219.990000285798, - 15224.990000285909, - 15229.990000286016, - 15234.990000286123, - 15239.990000286232, - 15244.990000286345, - 15249.990000286452, - 15254.990000286563, - 15259.99000028667, - 15264.990000286782, - 15269.990000286887, - 15274.990000286996, - 15279.990000287107, - 15284.990000287216, - 15289.990000287327, - 15294.990000287436, - 15299.990000287544, - 15304.990000287651, - 15309.990000287762, - 15314.990000287871, - 15319.99000028798, - 15324.990000288091, - 15329.9900002882, - 15334.990000288308, - 15339.990000288415, - 15344.990000288526, - 15349.990000288635, - 15354.990000288744, - 15359.990000288852, - 15364.990000288964, - 15369.990000289072, - 15374.990000289183, - 15379.99000028929, - 15384.9900002894, - 15389.990000289506, - 15394.990000289617, - 15399.990000289728, - 15404.990000289836, - 15409.990000289943, - 15414.990000290054, - 15419.990000290163, - 15424.99000029027, - 15429.990000290381, - 15434.99000029049, - 15439.9900002906, - 15444.990000290709, - 15449.990000290818, - 15454.990000290927, - 15459.990000291034, - 15464.990000291145, - 15469.990000291255, - 15474.990000291366, - 15479.990000291473, - 15484.990000291582, - 15489.990000291691, - 15494.990000291798, - 15499.99000029191, - 15504.990000292019, - 15509.99000029213, - 15514.990000292237, - 15519.990000292346, - 15524.990000292457, - 15529.990000292564, - 15534.990000292672, - 15539.990000292782, - 15544.990000292893, - 15549.990000293, - 15554.99000029311, - 15559.99000029322, - 15564.990000293328, - 15569.990000293436, - 15574.990000293545, - 15579.990000293656, - 15584.990000293765, - 15589.990000293874, - 15594.990000293985, - 15599.990000294092, - 15604.9900002942, - 15609.990000294309, - 15614.99000029442, - 15619.990000294529, - 15624.990000294638, - 15629.990000294749, - 15634.990000294856, - 15639.990000294963, - 15644.990000295073, - 15649.990000295184, - 15654.990000295293, - 15659.990000295404, - 15664.990000295513, - 15669.990000295618, - 15674.990000295733, - 15679.990000295837, - 15684.990000295948, - 15689.990000296057, - 15694.990000296168, - 15699.990000296277, - 15704.990000296384, - 15709.990000296491, - 15714.990000296602, - 15719.990000296712, - 15724.990000296819, - 15729.990000296932, - 15734.99000029704, - 15739.990000297148, - 15744.990000297255, - 15749.990000297366, - 15754.990000297475, - 15759.990000297583, - 15764.990000297694, - 15769.990000297805, - 15774.990000297912, - 15779.99000029802, - 15784.990000298132, - 15789.99000029824, - 15794.990000298347, - 15799.990000298458, - 15804.990000298567, - 15809.990000298676, - 15814.990000298783, - 15819.990000298894, - 15824.990000299003, - 15829.99000029911, - 15834.990000299222, - 15839.99000029933, - 15844.990000299442, - 15849.990000299551, - 15854.990000299658, - 15859.990000299767, - 15864.990000299875, - 15869.990000299986, - 15874.990000300095, - 15879.990000300206, - 15884.990000300313, - 15889.990000300422, - 15894.990000300531, - 15899.99000030064, - 15904.99000030075, - 15909.990000300859, - 15914.990000300966, - 15919.990000301077, - 15924.990000301186, - 15929.990000301297, - 15934.990000301405, - 15939.990000301514, - 15944.990000301623, - 15949.99000030173, - 15954.990000301841, - 15959.99000030195, - 15964.990000302061, - 15969.990000302168, - 15974.990000302278, - 15979.990000302389, - 15984.990000302496, - 15989.990000302605, - 15994.990000302714, - 15999.990000302825, - 16004.990000302932, - 16009.990000303042, - 16014.990000303149, - 16019.99000030326, - 16024.990000303369, - 16029.990000303478, - 16034.99000030359, - 16039.990000303696, - 16044.990000303806, - 16049.990000303917, - 16054.990000304024, - 16059.990000304131, - 16064.990000304244, - 16069.990000304353, - 16074.99000030446, - 16079.990000304568, - 16084.99000030468, - 16089.990000304788, - 16094.990000304895, - 16099.990000305004, - 16104.990000305117, - 16109.990000305224, - 16114.990000305335, - 16119.990000305444, - 16124.990000305552, - 16129.99000030566, - 16134.990000305768, - 16139.990000305881, - 16144.990000305988, - 16149.990000306096, - 16154.990000306208, - 16159.990000306316, - 16164.990000306423, - 16169.990000306534, - 16174.990000306643, - 16179.990000306752, - 16184.99000030686, - 16189.990000306967, - 16194.99000030708, - 16199.990000307187, - 16204.990000307298, - 16209.990000307407, - 16214.990000307516, - 16219.990000307624, - 16224.990000307736, - 16229.990000307844, - 16234.990000307951, - 16239.990000308062, - 16244.990000308171, - 16249.990000308282, - 16254.990000308391, - 16259.9900003085, - 16264.990000308608, - 16269.990000308715, - 16274.990000308826, - 16279.990000308935, - 16284.990000309042, - 16289.990000309153, - 16294.990000309264, - 16299.990000309372, - 16304.990000309483, - 16309.99000030959, - 16314.9900003097, - 16319.990000309806, - 16324.990000309917, - 16329.990000310027, - 16334.990000310137, - 16339.990000310245, - 16344.990000310354, - 16349.990000310463, - 16354.99000031057, - 16359.990000310681, - 16364.99000031079, - 16369.990000310901, - 16374.990000311009, - 16379.990000311118, - 16384.990000311045, - 16389.990000310245, - 16394.990000309444, - 16399.990000308644, - 16404.990000307844, - 16409.990000307043, - 16414.990000306247, - 16419.990000305443, - 16424.990000304642, - 16429.990000303842, - 16434.990000303038, - 16439.99000030224, - 16444.99000030144, - 16449.99000030064, - 16454.99000029984, - 16459.99000029904, - 16464.99000029824, - 16469.990000297443, - 16474.990000296642, - 16479.99000029584, - 16484.990000295038, - 16489.990000294238, - 16494.990000293434, - 16499.990000292637, - 16504.990000291837, - 16509.990000291036, - 16514.990000290236, - 16519.990000289436, - 16524.990000288635, - 16529.99000028784, - 16534.990000287034, - 16539.990000286234, - 16544.990000285434, - 16549.99000028463, - 16554.990000283833, - 16559.990000283033, - 16564.990000282232, - 16569.990000281432, - 16574.99000028063, - 16579.99000027983, - 16584.99000027903, - 16589.990000278234, - 16594.99000027743, - 16599.99000027663, - 16604.99000027583, - 16609.990000275033, - 16614.990000274232, - 16619.99000027343, - 16624.990000272628, - 16629.990000271828, - 16634.990000271027, - 16639.990000270227, - 16644.99000026943, - 16649.990000268626, - 16654.990000267826, - 16659.990000267026, - 16664.99000026622, - 16669.990000265425, - 16674.990000264625, - 16679.990000263824, - 16684.990000263024, - 16689.990000262223, - 16694.990000261423, - 16699.990000260626, - 16704.990000259822, - 16709.990000259022, - 16714.990000258218, - 16719.990000257418, - 16724.990000256617, - 16729.990000255817, - 16734.99000025502, - 16739.99000025422, - 16744.99000025342, - 16749.99000025262, - 16754.99000025182, - 16759.99000025102, - 16764.990000250218, - 16769.990000249418, - 16774.990000248617, - 16779.990000247813, - 16784.990000247017, - 16789.990000246216, - 16794.990000245416, - 16799.990000244616, - 16804.990000243815, - 16809.990000243015, - 16814.99000024222, - 16819.990000241414, - 16824.990000240614, - 16829.990000239814, - 16834.99000023901, - 16839.990000238213, - 16844.990000237412, - 16849.990000236612, - 16854.99000023581, - 16859.99000023501, - 16864.990000234207, - 16869.990000233407, - 16874.99000023261, - 16879.99000023181, - 16884.99000023101, - 16889.99000023021, - 16894.99000022941, - 16899.99000022861, - 16904.990000227812, - 16909.990000227008, - 16914.990000226207, - 16919.990000225407, - 16924.990000224607, - 16929.990000223806, - 16934.990000223006, - 16939.990000222206, - 16944.990000221405, - 16949.9900002206, - 16954.990000219805, - 16959.990000219004, - 16964.990000218204, - 16969.990000217404, - 16974.990000216603, - 16979.990000215803, - 16984.990000215006, - 16989.990000214202, - 16994.9900002134, - 16999.9900002126, - 17004.9900002118, - 17009.990000211, - 17014.9900002102, - 17019.9900002094, - 17024.9900002086, - 17029.9900002078, - 17034.990000207, - 17039.990000206202, - 17044.990000205402, - 17049.990000204598, - 17054.990000203798, - 17059.990000202997, - 17064.990000202193, - 17069.990000201396, - 17074.990000200596, - 17079.990000199796, - 17084.990000198995, - 17089.990000198195, - 17094.990000197395, - 17099.990000196594, - 17104.990000195794, - 17109.990000194994, - 17114.990000194193, - 17119.990000193393, - 17124.990000192593, - 17129.990000191792, - 17134.990000190992, - 17139.99000019019, - 17144.99000018939, - 17149.99000018859, - 17154.99000018779, - 17159.99000018699, - 17164.99000018619, - 17169.99000018539, - 17174.99000018459, - 17179.990000183792, - 17184.990000182992, - 17189.990000182188, - 17194.990000181388, - 17199.990000180587, - 17204.990000179787, - 17209.990000178987, - 17214.990000178186, - 17219.990000177386, - 17224.990000176585, - 17229.990000175785, - 17234.99000017498, - 17239.990000174184, - 17244.990000173384, - 17249.990000172584, - 17254.990000171783, - 17259.990000170983, - 17264.990000170183, - 17269.990000169382, - 17274.990000168582, - 17279.99000016778, - 17284.99000016698, - 17289.99000016618, - 17294.99000016538, - 17299.99000016458, - 17304.990000163783, - 17309.99000016298, - 17314.99000016218, - 17319.990000161382, - 17324.990000160582, - 17329.990000159778, - 17334.990000158978, - 17339.990000158177, - 17344.990000157377, - 17349.990000156577, - 17354.990000155776, - 17359.990000154976, - 17364.990000154176, - 17369.990000153375, - 17374.990000152575, - 17379.990000151774, - 17384.990000150974, - 17389.990000150174, - 17394.990000149373, - 17399.990000148573, - 17404.990000147773, - 17409.990000146972, - 17414.990000146172, - 17419.990000145368, - 17424.990000144568, - 17429.99000014377, - 17434.99000014297, - 17439.990000142167, - 17444.99000014137, - 17449.99000014057, - 17454.99000013977, - 17459.99000013897, - 17464.99000013817, - 17469.990000137368, - 17474.990000136568, - 17479.990000135767, - 17484.990000134967, - 17489.990000134167, - 17494.990000133366, - 17499.990000132566, - 17504.990000131766, - 17509.990000130965, - 17514.990000130165, - 17519.990000129364, - 17524.990000128564, - 17529.990000127764, - 17534.990000126963, - 17539.990000126163, - 17544.990000125363, - 17549.990000124562, - 17554.990000123762, - 17559.990000122958, - 17564.990000122158, - 17569.99000012136, - 17574.99000012056, - 17579.990000119757, - 17584.99000011896, - 17589.99000011816, - 17594.99000011736, - 17599.99000011656, - 17604.99000011576, - 17609.990000114958, - 17614.990000114158, - 17619.990000113357, - 17624.990000112557, - 17629.990000111757, - 17634.990000110956, - 17639.990000110156, - 17644.990000109356, - 17649.99000010856, - 17654.990000107755, - 17659.990000106955, - 17664.990000106154, - 17669.990000105354, - 17674.99000010455, - 17679.990000103753, - 17684.990000102953, - 17689.990000102152, - 17694.990000101352, - 17699.990000100548, - 17704.99000009975, - 17709.99000009895, - 17714.99000009815, - 17719.99000009735, - 17724.99000009655, - 17729.99000009575, - 17734.990000094953, - 17739.99000009415, - 17744.99000009335, - 17749.990000092548, - 17754.990000091748, - 17759.990000090947, - 17764.99000009015, - 17769.990000089347, - 17774.990000088546, - 17779.990000087746, - 17784.990000086946, - 17789.990000086145, - 17794.990000085345, - 17799.990000084545, - 17804.990000083744, - 17809.990000082944, - 17814.990000082144, - 17819.990000081347, - 17824.990000080543, - 17829.990000079742, - 17834.990000078942, - 17839.990000078138, - 17844.99000007734, - 17849.99000007654, - 17854.99000007574, - 17859.99000007494, - 17864.99000007414, - 17869.99000007334, - 17874.990000072543, - 17879.99000007174, - 17884.99000007094, - 17889.990000070142, - 17894.990000069338, - 17899.990000068534, - 17904.990000067737, - 17909.990000066937, - 17914.990000066136, - 17919.990000065336, - 17924.990000064536, - 17929.990000063735, - 17934.99000006294, - 17939.990000062135, - 17944.990000061334, - 17949.990000060534, - 17954.990000059734, - 17959.990000058933, - 17964.990000058133, - 17969.990000057333, - 17974.990000056532, - 17979.99000005573, - 17984.99000005493, - 17989.99000005413, - 17994.99000005333, - 17999.99000005253 - ], - "y": [ - 0.8156278449852722, - 0.30067399281962326, - 0.1454706148361633, - 0.3739009090151675, - 0.3179402119701676, - 0.33791783636987105, - 0.3505306073086087, - 0.36022295817130773, - 0.3673513599104832, - 0.3726651006053852, - 0.3782135729399068, - 0.38388565295887356, - 0.3896927747146333, - 0.3951990569689665, - 0.39942848774676976, - 0.4042793116534348, - 0.4083673877873198, - 0.4118446041126987, - 0.4154630626714804, - 0.41843819996977377, - 0.4200364151505016, - 0.4221508055982023, - 0.42411008051359106, - 0.4261963253628307, - 0.4281111692670468, - 0.42913265263165845, - 0.4301594478952569, - 0.43113265633162473, - 0.43168822234078, - 0.43241197353572436, - 0.4330123353512823, - 0.4336933219155446, - 0.43430248474825456, - 0.434911145080933, - 0.435613492874663, - 0.43616492409673496, - 0.4365855606748267, - 0.4371693103591417, - 0.43790089953554406, - 0.43868021780509625, - 0.4394503512344073, - 0.44019998651189557, - 0.4408314285979797, - 0.4408922949732633, - 0.4409585577031013, - 0.4411221388607198, - 0.4411780371103586, - 0.44125848152450975, - 0.4413736749633214, - 0.44149947361878095, - 0.44165095211887184, - 0.44180203519411826, - 0.44192397709638875, - 0.44234706830267495, - 0.4425637532692023, - 0.44249283617811264, - 0.4424682504097651, - 0.44256691409572935, - 0.44267847186412, - 0.44277750572250274, - 0.4428594734919332, - 0.44296024308376647, - 0.44306559571324294, - 0.44318313045399643, - 0.4433179403960533, - 0.4434750102118787, - 0.4436350948782008, - 0.44381051429380614, - 0.44402290080523715, - 0.44426537920740994, - 0.44454336653630605, - 0.4448692764482082, - 0.44527248990664103, - 0.4457976517223077, - 0.44605361738521254, - 0.4460657693710635, - 0.4460828119059928, - 0.4460979034407662, - 0.4461033985333671, - 0.4461083266127015, - 0.4461124841399018, - 0.44611639280788956, - 0.4461207150274971, - 0.4461242155554587, - 0.44612910391495053, - 0.44613271259313503, - 0.446137020843308, - 0.4461408234193329, - 0.44614409104625896, - 0.44614512256539623, - 0.4461454964513475, - 0.4461503619164681, - 0.4461532125719958, - 0.4461564947035167, - 0.4461601782712942, - 0.4461633657527377, - 0.4461671723910644, - 0.4461705341204289, - 0.44617405808140254, - 0.4461776511444211, - 0.45856925470901727, - 0.44817255482768026, - 0.44778471185618984, - 0.44747292389260057, - 0.44710835043797664, - 0.4467526919164707, - 0.44637020410857897, - 0.44602179365846645, - 0.4456551064111392, - 0.44515715685933893, - 0.444782188398121, - 0.44441849168515596, - 0.44411640837280625, - 0.44399281914592886, - 0.44386304477717164, - 0.4437393729881875, - 0.44359554335304063, - 0.44346377640377266, - 0.4432928511218596, - 0.44314335528664167, - 0.44298361447045154, - 0.4428850028568529, - 0.44278471858043067, - 0.4426898179503091, - 0.4426032251918378, - 0.4425284883140729, - 0.4424632014807717, - 0.4423953285267624, - 0.44234442965586057, - 0.4422880471684257, - 0.4422853050943983, - 0.4422550000340985, - 0.44223048354607314, - 0.4422204662798323, - 0.442212583127729, - 0.4422083870847218, - 0.4422184844805015, - 0.44223329495425673, - 0.4422590507868934, - 0.4422947891613964, - 0.44234184804672255, - 0.4424134044890416, - 0.44250597960567567, - 0.44260966519900885, - 0.44274914324825615, - 0.44291543796121907, - 0.44316643815391443, - 0.44345189524832085, - 0.4436176493577713, - 0.443529209644235, - 0.4435047344979158, - 0.44349243647071745, - 0.44348129588254964, - 0.4434705241006442, - 0.4434603339065755, - 0.4434507118290086, - 0.4434416264607679, - 0.4434330477965979, - 0.44342494757094003, - 0.4434172991008073, - 0.4434100771914796, - 0.4434032281389058, - 0.44339675438573434, - 0.4433906345098739, - 0.4433847947777373, - 0.4433792254933556, - 0.4433740505493864, - 0.4433690972564917, - 0.44336447987882066, - 0.44336008275796895, - 0.443355896840453, - 0.4433520157527775, - 0.4433483362944894, - 0.4433448352743188, - 0.4433415364704929, - 0.44333840569143673, - 0.44333545807694646, - 0.4433327026736728, - 0.4433300914427078, - 0.44332759779703945, - 0.44332527616128375, - 0.4433230030891984, - 0.44332094370650754, - 0.44331898594101277, - 0.44331713552745794, - 0.4433153881319479, - 0.4433137380807807, - 0.4433120901495581, - 0.4433106225421893, - 0.44330922009996854, - 0.4433078938758239, - 0.44330664140930504, - 0.4433054586545847, - 0.44330434172834043, - 0.44330328696630383, - 0.44330229090861495, - 0.4433013502879972, - 0.4433004620190173, - 0.443299618628921, - 0.4432988253489598, - 0.44329803995302514, - 0.44329734057237874, - 0.44329667405149165, - 0.44329604395309763, - 0.4432954489026942, - 0.4432948869720848, - 0.44329435631674147, - 0.44329385519581604, - 0.44329338196551793, - 0.4432929350735534, - 0.443292474900485, - 0.44329207562419176, - 0.443291703624986, - 0.4432913483904183, - 0.44329101263290643, - 0.4432906955587286, - 0.4432903961327629, - 0.4432901133718767, - 0.44328984634846774, - 0.44328959418664216, - 0.4432893560592559, - 0.44328913118520147, - 0.443288918826846, - 0.4432887182876096, - 0.4432885289096807, - 0.4432883500718595, - 0.4432881811875232, - 0.44328802170269505, - 0.44328787109423057, - 0.4432877288681043, - 0.4432875945577822, - 0.4432874677227, - 0.4432873479468134, - 0.44328723483723004, - 0.4432871280229276, - 0.4432870271535341, - 0.44328693189817625, - 0.4432868419443956, - 0.44328675699712605, - 0.44328667677772227, - 0.44328660102304823, - 0.4432865294846129, - 0.44328646192775567, - 0.44328639813087495, - 0.44328633788470356, - 0.443286280991623, - 0.44328622726500955, - 0.4432861765286314, - 0.4432861286160611, - 0.4432860833701367, - 0.4432860406424408, - 0.4432860002928176, - 0.4432859621889122, - 0.4432859262057363, - 0.4432858922252581, - 0.4432858601360129, - 0.44328582983274256, - 0.44328580121604544, - 0.44328577419205273, - 0.4432857486721202, - 0.4432857245725389, - 0.44328570181425414, - 0.4432856803226152, - 0.44328556522982504, - 0.4432855647479836, - 0.44328555222290433, - 0.4432855351655128, - 0.44328551874632105, - 0.4432855032414697, - 0.44328548860091016, - 0.44328547477528407, - 0.4432854617191445, - 0.4432854493896623, - 0.44328543774639617, - 0.44328542675115296, - 0.443285416367866, - 0.44328540656247745, - 0.4432853973028217, - 0.4432853885585246, - 0.4432853803009055, - 0.44328537250287553, - 0.4432853651388575, - 0.44328535818469395, - 0.4432853516175746, - 0.4432853454159586, - 0.44328533955950167, - 0.44328533402899567, - 0.4432853288062971, - 0.4432853238742753, - 0.4432853192167538, - 0.4432853148184523, - 0.4432853106649458, - 0.4432853067426078, - 0.4432853030385742, - 0.4432852995406937, - 0.4432852962374932, - 0.443285293118136, - 0.4432852901723921, - 0.4432852873905971, - 0.4432852847636286, - 0.443285282282868, - 0.44328527994017564, - 0.4432852777278713, - 0.44328527563869535, - 0.44328527366579557, - 0.4432852718027001, - 0.44328527004329893, - 0.44328526838181853, - 0.443285266812811, - 0.4432852653311285, - 0.4432852639319118, - 0.44328526261056983, - 0.44328526136276974, - 0.4432852601844175, - 0.4432852590716484, - 0.44328525802081203, - 0.4432852570284613, - 0.44328525609134095, - 0.4432852552063782, - 0.44328525437066907, - 0.4432852535814727, - 0.44328525283619924, - 0.4432852521324067, - 0.4432852514677846, - 0.4432852508401512, - 0.4432852502474516, - 0.44328524968773875, - 0.44328524915917766, - 0.4432852486600342, - 0.44328524818867143, - 0.4432852477435429, - 0.4432852473231894, - 0.44328524692623084, - 0.44328524655136575, - 0.4432852461973644, - 0.44328524586306406, - 0.4432852455473714, - 0.44328524524924795, - 0.44328524496771793, - 0.4432852447018563, - 0.4432852444507927, - 0.44328524421370097, - 0.44328524398980607, - 0.4432852437783718, - 0.44328524357870513, - 0.4432852433901509, - 0.44328524321209145, - 0.44328524304394207, - 0.44328524288515103, - 0.4432852427351969, - 0.4432852425935904, - 0.4432852424598648, - 0.44328524233358174, - 0.44328524221432775, - 0.44328524210170944, - 0.44328524199535996, - 0.4432852418949297, - 0.44328524180008955, - 0.44328524171052625, - 0.4432852416259481, - 0.44328524154607835, - 0.44328524147065396, - 0.4432852413994264, - 0.4432852413321632, - 0.44328524126864466, - 0.44328524120866053, - 0.44328524115201473, - 0.44328524109852224, - 0.44328524104800543, - 0.44328524100030225, - 0.4432852409552535, - 0.4432852409127115, - 0.44328524087253757, - 0.443285240834599, - 0.4432852407987727, - 0.4432852407649402, - 0.4432852407329903, - 0.44328524070281944, - 0.44328524067432706, - 0.44328524064742075, - 0.4432852406220121, - 0.44328524059801727, - 0.44328524057535806, - 0.44328524055395946, - 0.44328524053375234, - 0.4432852405146698, - 0.4432852404966497, - 0.4432852404796318, - 0.4432852404635616, - 0.44328524044838585, - 0.44328524043405465, - 0.4432852404205208, - 0.44328524040774087, - 0.4432852403956714, - 0.4432852403842739, - 0.44328524037351086, - 0.4432852403633467, - 0.44328524035374856, - 0.44328524034468436, - 0.4432852403361247, - 0.4432852403280416, - 0.44328524032040817, - 0.44328524031319944, - 0.4432852403063919, - 0.4432852402999639, - 0.4432852402938931, - 0.4432852402881605, - 0.4432852402827467, - 0.44328524027763394, - 0.44328524027280664, - 0.4432852402682472, - 0.4432852402639416, - 0.4432852402598761, - 0.44328524025603644, - 0.4432852402524109, - 0.44328524024898663, - 0.44328524024575305, - 0.44328524024269994, - 0.4432852402398162, - 0.4432852402370929, - 0.44328524023452165, - 0.44328524023209326, - 0.44328524022980004, - 0.44328524022763444, - 0.4432852402255892, - 0.4432852402236582, - 0.4432852402218345, - 0.4432852402201116, - 0.4432852402184856, - 0.4432852402169498, - 0.4432852402154995, - 0.4432852402141297, - 0.4432852402128363, - 0.4432852402116149, - 0.4432852402104607, - 0.4432852402093723, - 0.44328524020834353, - 0.44328524020737214, - 0.4432852402064546, - 0.4432852402055885, - 0.4432852402047704, - 0.44328524020399807, - 0.44328524020326854, - 0.443285240202579, - 0.4432852402019292, - 0.4432852402013146, - 0.4432852402007342, - 0.4432852402001865, - 0.4432852401996691, - 0.4432852401991804, - 0.44328524019871896, - 0.4432852401982836, - 0.44328524019787197, - 0.44328524019748344, - 0.44328524019711607, - 0.4432852401967697, - 0.4432852401964428, - 0.4432852401961336, - 0.4432852401958418, - 0.44328524019556603, - 0.4432852401953058, - 0.44328524019506005, - 0.44328524019482834, - 0.443285240194609, - 0.4432852401944025, - 0.44328524019420684, - 0.4432852401940225, - 0.44328524019384746, - 0.443285240193683, - 0.44328524019352855, - 0.44328524019338106, - 0.4432852401932424, - 0.44328524019311294, - 0.44328524019298865, - 0.4432852401928713, - 0.44328524019276067, - 0.44328524019265586, - 0.44328524019255783, - 0.443285240192466, - 0.44328524019238014, - 0.4432852401922978, - 0.4432852401922194, - 0.44328524019214305, - 0.4432852401920765, - 0.4432852401920118, - 0.4432852401919447, - 0.44328524019189225, - 0.4432852401918335, - 0.4432852401917846, - 0.4432852401917321, - 0.4432852401916905, - 0.4432852401916385, - 0.4432852401916055, - 0.44328524019156024, - 0.4432852401915275, - 0.4432852401914937, - 0.44328524019145066, - 0.4432852401914252, - 0.4432852401914018, - 0.44337860111567856, - 0.45273822518705886, - 0.450519985323048, - 0.44974960317726465, - 0.4495622802019981, - 0.4495260192971016, - 0.4495492489794382, - 0.44958318872214953, - 0.4496608590908976, - 0.44973153479552597, - 0.44990867941969137, - 0.4501317087827423, - 0.4502786602811858, - 0.4504075610439513, - 0.45053445220127875, - 0.45061609029179484, - 0.45073800647261925, - 0.4508846837295296, - 0.45102947533716964, - 0.4511810623719236, - 0.4513484989912016, - 0.45154002681419186, - 0.45175296488664457, - 0.4519838061686415, - 0.4522450396292754, - 0.4522766875846506, - 0.45228903021537464, - 0.452311488630818, - 0.4523357613510179, - 0.4523596581202803, - 0.4523824701895843, - 0.4524061416071209, - 0.4524266901377801, - 0.4524463401254412, - 0.45246498069460916, - 0.452482725152647, - 0.4524994791218883, - 0.4525154214325422, - 0.4525306454186916, - 0.4525450569358719, - 0.4525018594329762, - 0.4525189738657127, - 0.452532913496176, - 0.4525447675416811, - 0.4525557213986827, - 0.45256596797710463, - 0.4525756660051062, - 0.45258485639326834, - 0.45259361002474247, - 0.45260190861344785, - 0.452609763883778, - 0.4526171407267075, - 0.45262433627554954, - 0.4526310952817346, - 0.45263745771900266, - 0.45264347564797625, - 0.4526492758592219, - 0.4526546402528089, - 0.45265993311154756, - 0.4526648269082053, - 0.4526694242632944, - 0.4526739568834161, - 0.4526780146382291, - 0.4526821051437822, - 0.45268576688102735, - 0.4526894417760399, - 0.4526929351113222, - 0.45269613169320916, - 0.4526992331437409, - 0.4527021060668175, - 0.45270494160958724, - 0.45270757966783143, - 0.4527099735837098, - 0.45271239836200955, - 0.4527146983773837, - 0.4527168320436753, - 0.4527187739038448, - 0.45272073105303096, - 0.45272260046009577, - 0.4527243704496005, - 0.45272599644617356, - 0.45272744750998023, - 0.45272891851636793, - 0.45273036293239, - 0.45273172874943546, - 0.4527330223047871, - 0.452734162990505, - 0.45273531412678414, - 0.452736425447906, - 0.4527374762228429, - 0.45273847005799944, - 0.4527392325837365, - 0.4527401447932598, - 0.45274100131680967, - 0.4527418107074275, - 0.45274257748365293, - 0.4527433026999598, - 0.45274399405745813, - 0.4527446501295229, - 0.45274527283607013, - 0.4527458639163798, - 0.4527464249879592, - 0.4527469575772849, - 0.4527473984410153, - 0.45274788147361805, - 0.4527483390052135, - 0.45274877186371676, - 0.45274918231858163, - 0.4527495718243367, - 0.4527499415282071, - 0.4527501821335279, - 0.452750523818726, - 0.452750839892641, - 0.45275114112271053, - 0.45275142614137914, - 0.45275169642386465, - 0.4527519529156602, - 0.45275219636890324, - 0.45275242745911665, - 0.4527526468174552, - 0.45275285504039026, - 0.4527530526934246, - 0.4527532403131704, - 0.4527534184089563, - 0.45275358746424066, - 0.45275374793793843, - 0.45275390026567014, - 0.4527540448609405, - 0.4527541821162645, - 0.452754312404233, - 0.4527544360785229, - 0.4527545534748571, - 0.4527546649119177, - 0.45275477069221015, - 0.4527548711028827, - 0.45275496641650803, - 0.4527550568918227, - 0.4527551291191066, - 0.4527551839839983, - 0.4527552643084748, - 0.4527553385781372, - 0.4527554084428526, - 0.4527554745932112, - 0.45275553734161406, - 0.45275559689323863, - 0.4527556534188771, - 0.45275570707436824, - 0.4527557580059905, - 0.45275580635216706, - 0.45275585224418075, - 0.45275589580661985, - 0.45275593715774154, - 0.45275597640979703, - 0.4527560136693393, - 0.452756045279476, - 0.45275607896812536, - 0.45275611100938523, - 0.45275614129985586, - 0.4527561700183835, - 0.4527561972700775, - 0.45275622313605474, - 0.45275624768840295, - 0.4527562709942619, - 0.452756293117026, - 0.4527563141167837, - 0.4527563340505482, - 0.4527563529724345, - 0.4527563709338079, - 0.45268185563499436, - 0.45263178142191884, - 0.452623237060592, - 0.4526257778816886, - 0.4526272583762735, - 0.452627420466333, - 0.45262723578772224, - 0.4526269720439344, - 0.45262669868307615, - 0.4526264332469624, - 0.45262617977543, - 0.45262593881666235, - 0.45262571003461693, - 0.4526254928872258, - 0.452625286801901, - 0.45262509122008393, - 0.45262490560774044, - 0.4526247294570309, - 0.45262456228573417, - 0.45262440363614076, - 0.4526242530738556, - 0.45262411018662235, - 0.4526239745831979, - 0.452623845892284, - 0.4526237237615095, - 0.4526236078564641, - 0.452623497859786, - 0.45262339347029085, - 0.45262329440214705, - 0.4526232003840939, - 0.4526231111586989, - 0.4526230264816504, - 0.452574066672697, - 0.4475791490766014, - 0.4485459903346151, - 0.4487788065495503, - 0.44877853276690705, - 0.44871239468916935, - 0.448639583832643, - 0.44856422744186114, - 0.4485054851275252, - 0.4484660803679409, - 0.4484335050409312, - 0.44840384152149204, - 0.4483759740280556, - 0.44834955114653957, - 0.44832443127219557, - 0.448300531974607, - 0.4482777890081551, - 0.44825614508505046, - 0.4482355467307038, - 0.44820514879532997, - 0.4481616561589458, - 0.4481470865480784, - 0.4481314556707875, - 0.44811599435318783, - 0.44810112149539233, - 0.4480869254944139, - 0.4480734052223542, - 0.4480605365211217, - 0.44804829015502157, - 0.4480366366134271, - 0.4480255473572758, - 0.44801499510574416, - 0.4480049538656342, - 0.4479953988934567, - 0.447986306641525, - 0.44797765470183915, - 0.44796942175137383, - 0.44796158749967246, - 0.4467931400247225, - 0.44687835208119814, - 0.44690175835929963, - 0.44690133746812144, - 0.44689473029326204, - 0.44688676920192727, - 0.4468787433541257, - 0.4468709858746911, - 0.4468635727179327, - 0.4468565111481889, - 0.4468497905452434, - 0.4468433960766166, - 0.44683731235559154, - 0.44683152439958823, - 0.4468260178617418, - 0.4468207790677541, - 0.4468157950014681, - 0.4468110532777988, - 0.4468065421133752, - 0.4468022502976426, - 0.4467981671651091, - 0.4467942825688654, - 0.44679058685537854, - 0.4461552926977037, - 0.44609170179712737, - 0.44612799774265915, - 0.44613483623362815, - 0.446133238577947, - 0.4461295318693501, - 0.4461254176648485, - 0.446121345836906, - 0.4461174299527388, - 0.4461136935053233, - 0.44611013610967704, - 0.44610675128661964, - 0.4461035312289844, - 0.4461004680681251, - 0.4460975542000783, - 0.44609478235955974, - 0.4460921456268249, - 0.446089637417111, - 0.4460872514659966, - 0.4460849818142425, - 0.44608282279303857, - 0.44608076900987953, - 0.4460788153351052, - 0.44607695688909405, - 0.4460751890300695, - 0.4460735073425153, - 0.446071907626139, - 0.44607038588538805, - 0.4460689383194629, - 0.44606756131283143, - 0.4460662514261926, - 0.44606500538788973, - 0.44606382008573725, - 0.4460626925592483, - 0.4460616199922406, - 0.44606059970580214, - 0.4460596291515987, - 0.44605870590551255, - 0.44605782766158525, - 0.4460569922262576, - 0.44605619751289366, - 0.4460554415365652, - 0.4460547224090976, - 0.44605403833435175, - 0.446053387603739, - 0.4460527685919525, - 0.4460521797529085, - 0.44605161961588513, - 0.44605108678184757, - 0.446050579919956, - 0.44605009776423876, - 0.4460496391104333, - 0.4460492028129766, - 0.4460487877821437, - 0.4460483929813273, - 0.4460480174244477, - 0.4460476601734882, - 0.44604732033615796, - 0.4460469970636565, - 0.4460466895485579, - 0.4460463970227921, - 0.44604611875572864, - 0.44604585405234937, - 0.446045602251514, - 0.4460453627243093, - 0.44604513487247627, - 0.44604491812691754, - 0.4460447119462756, - 0.44604451581558013, - 0.4460443292449632, - 0.44604415176843265, - 0.4460439829427134, - 0.4460438223461345, - 0.44604366957757957, - 0.44604352425548427, - 0.44604338601688276, - 0.4460432545165016, - 0.4460431294258975, - 0.44604301043263456, - 0.446042897239509, - 0.44604278956380194, - 0.44604268713657563, - 0.44604258970200106, - 0.446042497016719, - 0.4460424088492335, - 0.4460423249793313, - 0.44604224519753416, - 0.44604216930457335, - 0.4460420971108943, - 0.44604202843618096, - 0.44604196310890626, - 0.4460419009659057, - 0.4460418418519667, - 0.44604178561944297, - 0.4460417321278837, - 0.4460416812436848, - 0.4460416328397552, - 0.446041586795198, - 0.4460415429950096, - 0.44604150132979137, - 0.4460414616954778, - 0.4460414239930754, - 0.4460413881284166, - 0.44604135401192335, - 0.44604132155838516, - 0.44604129068674214, - 0.4460412613198875, - 0.4460412333844747, - 0.4460412068107285, - 0.4460411815322767, - 0.44604115748598316, - 0.44604113461178796, - 0.4460411128525588, - 0.446041092153948, - 0.44604107246425867, - 0.4460446435091675, - 0.4460445169604735, - 0.44604433429161394, - 0.44604427957989096, - 0.44604426116335355, - 0.44604425269330034, - 0.4460442470657023, - 0.44604424236466333, - 0.4460442380678446, - 0.4460442340274343, - 0.44604423019654205, - 0.4460442265557236, - 0.4460442230932354, - 0.44604421979972336, - 0.4460442166667742, - 0.44573590662992063, - 0.44575497783691626, - 0.44576727732885457, - 0.445770037959178, - 0.4457701803441472, - 0.44576964989476303, - 0.44576896709051095, - 0.44576826991042673, - 0.44576759399912985, - 0.4457669476714843, - 0.44697184157056374, - 0.4444263413441151, - 0.443437665066277, - 0.44288295330340166, - 0.4423952421435455, - 0.4418798438050851, - 0.4413512683935946, - 0.44084737907687405, - 0.44041045190865274, - 0.4400514932047054, - 0.4398497877567022, - 0.4396470172508154, - 0.439450141159194, - 0.43923265470410033, - 0.4390193908833221, - 0.4387736888975983, - 0.4385311466331367, - 0.43829065715290766, - 0.4380798097070652, - 0.43790466467693545, - 0.43778469116073476, - 0.43766043262421855, - 0.43752964695517077, - 0.4374032069798002, - 0.4372810342249769, - 0.43716345647576477, - 0.4370485768120115, - 0.43694374153667953, - 0.4368605915900071, - 0.4367803720430781, - 0.4367034675791858, - 0.43662837088275464, - 0.4365512872580139, - 0.4364773257008645, - 0.43640621904150617, - 0.43633784040167234, - 0.4362719605309649, - 0.4362085249124465, - 0.4361476896085145, - 0.436089136594391, - 0.43603152592303357, - 0.435975630504541, - 0.4359211234709895, - 0.4358682063031859, - 0.4358161441199723, - 0.43576449347074814, - 0.4357139511771156, - 0.43566375343565544, - 0.43562211423940045, - 0.43559230365161195, - 0.43556308652189696, - 0.43553466397483104, - 0.4355075014121517, - 0.4354816288214892, - 0.43545699709329394, - 0.4354335501818071, - 0.4354112321235419, - 0.43538998887489083, - 0.43536976876497097, - 0.4353506767571084, - 0.435332766048253, - 0.43531569858096186, - 0.43529944549047106, - 0.435283973875337, - 0.43526924796339367, - 0.4352461684125891, - 0.43520492795437205, - 0.4351636563414589, - 0.43512149870014755, - 0.4350782805211373, - 0.4350336043190405, - 0.4350089003453961, - 0.4350012208318229, - 0.4349922767771933, - 0.43498317268556014, - 0.43497433041711037, - 0.43496586216930544, - 0.43495778719788136, - 0.43495009765718673, - 0.43494277825802735, - 0.4349358121117893, - 0.43492918244703244, - 0.434922873093824, - 0.43491686860113143, - 0.43491115424586263, - 0.43490571598794703, - 0.4349005656692938, - 0.4348956958620437, - 0.43489105862066507, - 0.43488664454266457, - 0.4348824436078487, - 0.43487844574183854, - 0.4348746411937566, - 0.43487102063521654, - 0.4348675751742679, - 0.4348642963445911, - 0.434861176087999, - 0.4348582067356258, - 0.4348553809893735, - 0.43485269190406634, - 0.4344647611267012, - 0.43646350361809255, - 0.4372792693920429, - 0.43770965153379704, - 0.4380966002504245, - 0.43831187011212025, - 0.4385553290503217, - 0.4387834062461169, - 0.43896015815025874, - 0.4391661512206441, - 0.4393344597172401, - 0.4393782057053935, - 0.43954934008699414, - 0.4397560458679975, - 0.43998488268475744, - 0.4401739196195606, - 0.4403122661171448, - 0.4404473035622516, - 0.44057695685959886, - 0.4405624534242957, - 0.44067968670068647, - 0.4407940530748942, - 0.44089952209043765, - 0.4409878514247833, - 0.44108250408575356, - 0.44117210384030336, - 0.44125718232971295, - 0.4412855776683354, - 0.4413409022891441, - 0.4414176032759191, - 0.44148808559138303, - 0.441554314423801, - 0.44161708646332554, - 0.4416767439829766, - 0.4417334893111697, - 0.44178747868128415, - 0.44183885008307233, - 0.4418877316808952, - 0.44193424450561286, - 0.4419785034519064, - 0.4420206177672586, - 0.4420606913819592, - 0.44209882318333427, - 0.44213510726498106, - 0.44216963316048874, - 0.4423941813954358, - 0.4424321716051995, - 0.44245490425694034, - 0.44248219735883204, - 0.4425099293758047, - 0.4425368363590153, - 0.4425625937457791, - 0.4425871505294751, - 0.44261053357165264, - 0.4426327904809738, - 0.44265397301070236, - 0.44267413229761654, - 0.44269331755839847, - 0.4427115757925812, - 0.4427289517757129, - 0.4427454881335019, - 0.4427612254359571, - 0.4427762022938756, - 0.4427904554526769, - 0.44280401988230333, - 0.4428169288629358, - 0.44282921406662734, - 0.4428409056350039, - 0.4428520322532135, - 0.44286262122030423, - 0.44287269851620276, - 0.44288228886545583, - 0.44287695351439355, - 0.44292770294638517, - 0.4429799944988212, - 0.4429832977435954, - 0.44298950430884015, - 0.44299648387740254, - 0.4430034411595101, - 0.4429380506088466, - 0.44288209313017546, - 0.44289551018582346, - 0.44290332547865596, - 0.4429090573442083, - 0.4429140129274802, - 0.44291858360665987, - 0.4428356123963377, - 0.4428316299159313, - 0.44283976129376734, - 0.4428444980620461, - 0.44284806294299356, - 0.4428511804841573, - 0.4428540671893606, - 0.44285679087310803, - 0.44285937589105623, - 0.4428618337432106, - 0.4428641719791662, - 0.44286639679662154, - 0.4428685138064592, - 0.44287052826449297, - 0.4429074638444618, - 0.4429074678768419, - 0.44290816051214765, - 0.44290958978302547, - 0.4429111796248846, - 0.4429127592630733, - 0.4429142818130889, - 0.44291573628602515, - 0.44291712198561384, - 0.4427507897003728, - 0.44274541091580094, - 0.44275413560419213, - 0.44272838083073635, - 0.44273144464003855, - 0.44273277116951076, - 0.44273340895150176, - 0.44273383345932493, - 0.4427341846282244, - 0.44273450349953125, - 0.4427348024771273, - 0.4427350856596236, - 0.4427353547197335, - 0.44258297221957454, - 0.44259308557605476, - 0.44259666611981546, - 0.44259754213222796, - 0.4425976372501636, - 0.4425975147784969, - 0.44259733686613767, - 0.44259714991260374, - 0.44259696695852124, - 0.4425967914422848, - 0.4425966240492584, - 0.4425964646859011, - 0.44259631304826336, - 0.4425961687852153, - 0.44259603154485555, - 0.44259590098726526, - 0.4425957767875961, - 0.442595658636391, - 0.4425955462391371, - 0.442595439315633, - 0.44259533759931025, - 0.4425952408365796, - 0.4425951487862011, - 0.4425950612186838, - 0.4425949779157111, - 0.4425948986695996, - 0.4425948232827796, - 0.44259475156730416, - 0.4425946833443773, - 0.4425946184439127, - 0.4425945567041052, - 0.4425944979710318, - 0.4425944420982633, - 0.44259438894650316, - 0.4425943383832376, - 0.4425942902824073, - 0.44259424452409074, - 0.442594200994208, - 0.4425941595842338, - 0.4425941201909289, - 0.44259408271608114, - 0.44259404706626077, - 0.4425940131525898, - 0.44259398089051716, - 0.4425939501996098, - 0.4425939210033521, - 0.4425938932289549, - 0.4425938668071723, - 0.4425938416721325, - 0.44259381776117185, - 0.442593795014676, - 0.4425937733759369, - 0.44259375279100527, - 0.44259373320856243, - 0.442541950354747, - 0.4424659425731633, - 0.44247357709830715, - 0.4424758245182158, - 0.44247621028659273, - 0.4424760699279069, - 0.44247579048600855, - 0.44247548271810405, - 0.442475177909156, - 0.44247488451461536, - 0.44247460445044484, - 0.44247433777698897, - 0.4424740840448648, - 0.44247384268088163, - 0.44247361309792144, - 0.4424733947254849, - 0.4424731870174657, - 0.4423385808925255, - 0.4423470803239073, - 0.44235051937331044, - 0.4423511441728815, - 0.4423509635472809, - 0.4423505689361922, - 0.44242499216795916, - 0.4517867551621519, - 0.451143411175067, - 0.45082803433974045, - 0.450747459140786, - 0.4507634490174386, - 0.45078986216591044, - 0.4508108461815596, - 0.45083076954621315, - 0.4508488562281923, - 0.4508658560148858, - 0.4508818620432596, - 0.4508969720309517, - 0.45091125447224667, - 0.4509258638051404, - 0.45093825735140025, - 0.4509506622301212, - 0.450963118354026, - 0.4509750099192052, - 0.4509854599312919, - 0.451014603110956, - 0.45102389835075307, - 0.4510326354254769, - 0.4510410681754979, - 0.45104918491284396, - 0.4510571176658441, - 0.4510644572085902, - 0.4510713070510686, - 0.4510781013164606, - 0.45108445472896846, - 0.45109041571578523, - 0.45109591236195756, - 0.4511014812922386, - 0.4511065917192282, - 0.4511113913859732, - 0.45111587187451047, - 0.4511202273479592, - 0.4511242970669527, - 0.45112805487324664, - 0.4511320081997162, - 0.4511356589570498, - 0.45113902469757877, - 0.45114197811108725, - 0.45114507476247706, - 0.45114793162967626, - 0.4511504937298539, - 0.45115325522064, - 0.4511556797092612, - 0.4511577281054868, - 0.4511600682595354, - 0.4511623416802489, - 0.45116433998889865, - 0.451166114561029, - 0.45116753964265377, - 0.45116928943235035, - 0.4511710399825325, - 0.4511726917704116, - 0.4511740283331756, - 0.4511752662456321, - 0.45117668487557916, - 0.4511780229036317, - 0.4511791984484684, - 0.45118001993580464, - 0.45118117184568124, - 0.4511822566357555, - 0.45118328190276596, - 0.45118425327146006, - 0.45118508659908657, - 0.4511857990124748, - 0.4511866325831277, - 0.45118719730430334, - 0.4511879228832747, - 0.45118863665940234, - 0.4511893098063083, - 0.45118965002358724, - 0.45119003736569063, - 0.45119062511454666, - 0.4511911737862332, - 0.45119169055448416, - 0.451192179541326, - 0.4511926430228931, - 0.4511930825964478, - 0.4511934995861135, - 0.4511938951830945, - 0.4511942704954063, - 0.45119462656674547, - 0.4511949643847469, - 0.45119528488554583, - 0.45119555158811037, - 0.45119583302359895, - 0.45119563537840535, - 0.45119588456786763, - 0.45119614133641767, - 0.4511963781131598, - 0.45119660031024117, - 0.451196810285602, - 0.4511970092145279, - 0.451197197849921, - 0.4511973767829211, - 0.45119754653247324, - 0.4511977075766751, - 0.4511978603642709, - 0.45119800531935245, - 0.4511981428437135, - 0.45119827331836, - 0.4511983971047019, - 0.451198514545601, - 0.4511986259663362, - 0.45119873167550983, - 0.451198831965904, - 0.45119892711529236, - 0.45119901738720775, - 0.45119910303167726, - 0.4511991835920136, - 0.4511992582921645, - 0.4511993315227738, - 0.45119940094695277, - 0.45119946678706985, - 0.4511995292434762, - 0.45119958849534386, - 0.4511996447088875, - 0.45119969804051596, - 0.4511997486381841, - 0.4511997966421163, - 0.45119984218529585, - 0.4511998853938725, - 0.45119992638752415, - 0.45119996527979156, - 0.451200002178394, - 0.4512000371855298, - 0.45120007039815746, - 0.4512001019082662, - 0.45120013180312857, - 0.4512001601655444, - 0.45120018707406895, - 0.4512002126032302, - 0.45120023682373583, - 0.4512002598026691, - 0.4512002816036748, - 0.4512003022871344, - 0.4512003219103351, - 0.45120034052762775, - 0.45120035819057397, - 0.4512003749480976, - 0.45120039084661, - 0.45120040593014527, - 0.4512004202404809, - 0.4512004338172512, - 0.45120044669806025, - 0.4512004589185839, - 0.45120047051266776, - 0.4512004815124256, - 0.4512004919483223, - 0.45120050184926225, - 0.4512005112426686, - 0.45120052015455775, - 0.45120052860961213, - 0.4512005366312508, - 0.4512005442416905, - 0.4512005514620097, - 0.45120055831220685, - 0.4512005648112545, - 0.4512005709771531, - 0.45120057682698045, - 0.4512005823769385, - 0.4512005876423992, - 0.45120059263794604, - 0.45120059737741497, - 0.45120060187393324, - 0.45120060613995416, - 0.45120061018729457, - 0.45120061402716266, - 0.4512006176701948, - 0.4512006211264806, - 0.45120062440559316, - 0.4512006275166143, - 0.45120063046816106, - 0.45120063326840804, - 0.45120063592511045, - 0.45120063844562763, - 0.45120064083694, - 0.45120064310567026, - 0.45120064525810355, - 0.45120064730019993, - 0.45120064923761627, - 0.4512006510757181, - 0.4512006528195968, - 0.4512006544740821, - 0.45120065604375637, - 0.45120065753296734, - 0.45120065894583933, - 0.4512006602862859, - 0.4512006615580198, - 0.4512006627645631, - 0.4512006639092577, - 0.45120066499527295, - 0.45120066602561887, - 0.4512006670031471, - 0.4512006679305672, - 0.4512006688104458, - 0.45115567807045615, - 0.44559999201225176, - 0.4458765163229932, - 0.4459680135172317, - 0.4459756075157739, - 0.44595706994771317, - 0.44593334136380847, - 0.4459087402919037, - 0.4458846336177425, - 0.44586145841535485, - 0.4458393300710209, - 0.44581825355108257, - 0.4457981970205132, - 0.4457791174450102, - 0.4456598085132608, - 0.44564084701649626, - 0.44562595389945114, - 0.44561074770992143, - 0.44559590386971615, - 0.44558165283301604, - 0.44556805232750235, - 0.445555100788278, - 0.445542777028065, - 0.4455310540244027, - 0.4455199036795517, - 0.4455092984338863, - 0.44549921178401836, - 0.44548961842105056, - 0.44548049423840397, - 0.4454718162961204, - 0.44546356277186855, - 0.44545571290909275, - 0.4454482469658696, - 0.44544114616562747, - 0.44528176939030545, - 0.44527608128385304, - 0.4452724468208959, - 0.4452672745746404, - 0.4452617374490487, - 0.44525625562744087, - 0.4452509668578555, - 0.44524591067010516, - 0.44524109276073504, - 0.4452365074246317, - 0.4452321453573926, - 0.4447839242807291, - 0.44463171203441776, - 0.44464228316322857, - 0.4446433025733727, - 0.44464059102821496, - 0.4446367261001369, - 0.4446326027373776, - 0.44462852560648086, - 0.4446245941217806, - 0.444620836548894, - 0.4446172566885787, - 0.4446138501184226, - 0.4446106098342435, - 0.4446075282007975, - 0.4446045976179425, - 0.44460181074012106, - 0.4445991605409005, - 0.44459664032414753, - 0.44459424371717043, - 0.44459196465810236, - 0.4445897973817968, - 0.4445877364056632, - 0.444585776515945, - 0.44458391275458614, - 0.444582140406702, - 0.4438368436588295, - 0.44385033757415016, - 0.4438594319897952, - 0.4438605511597467, - 0.4438589469992453, - 0.4438453098752581, - 0.44383952708206764, - 0.4438372403323458, - 0.4438348064406715, - 0.4438323903683385, - 0.4438300576414531, - 0.4438278273266998, - 0.44382570243508285, - 0.44382368057691046, - 0.44382175765534354, - 0.44381992914118296, - 0.4438181905078176, - 0.44381653737479976, - 0.443814965550579, - 0.4438134710405536, - 0.44381205004340407, - 0.4438106989436833, - 0.44362497549810764, - 0.4436096533127635, - 0.4436127240997653, - 0.4436128494957594, - 0.4436119227077433, - 0.44361067778454527, - 0.44360936786688954, - 0.44360807859841467, - 0.4436068375822358, - 0.44357195372163377, - 0.44357002381866706, - 0.44356961407529033, - 0.44356877676808437, - 0.4435678172389469, - 0.4435668481520967, - 0.44356590706368915, - 0.4435650054683606, - 0.44356414588994164, - 0.4435633278106197, - 0.44356254972543796, - 0.4435618098520451, - 0.44356110637384394, - 0.4435604375213326, - 0.44355980159743663, - 0.443559196983538, - 0.4435586221389464, - 0.4435580755982159, - 0.44355755596784185, - 0.44355706192285943, - 0.44355659220351645, - 0.4435561456120783, - 0.44355572100978197, - 0.443555317313932, - 0.44355493349514363, - 0.44355456857471576, - 0.4435542216221359, - 0.44355389175270854, - 0.44355357812529855, - 0.4435532799401859, - 0.4435529964370266, - 0.443552726892916, - 0.4435524706205411, - 0.4435522269664328, - 0.4435519953092967, - 0.443551775058428, - 0.44355156565220916, - 0.44355136655667404, - 0.44355117726414867, - 0.44355099729195474, - 0.4435508261811807, - 0.44355066349551014, - 0.4435505088201103, - 0.4435503617605738, - 0.44355022194191296, - 0.4435500890076036, - 0.4435499626186764, - 0.443549842452851, - 0.44354972820371646, - 0.4435496195799483, - 0.44353502694894587, - 0.44353152685039726, - 0.4435274438385748, - 0.44352613352024733, - 0.4435262098190939, - 0.4435261543930289, - 0.4435260522784215, - 0.4435259379983753, - 0.4435258233780755, - 0.4435257123308198, - 0.44352560603301533, - 0.4435255047201384, - 0.4435254083096129, - 0.44352531661656763, - 0.4435252294283217, - 0.44352514652985653, - 0.4435250677122935, - 0.44352499277549784, - 0.443524921528654, - 0.44352485379015666, - 0.4435247893872802, - 0.4435247281557798, - 0.4435246699394924, - 0.44352461458994125, - 0.4435245619659614, - 0.4435245119333373, - 0.44352446436446297, - 0.443524419138017, - 0.4435243761386516, - 0.44352433525669815, - 0.44352429638789004, - 0.4434932232116496, - 0.4434831394818298, - 0.44348412570770207, - 0.4434844190089197, - 0.4434844374802173, - 0.44348436437661554, - 0.44348426341084274, - 0.4434841565006142, - 0.4434840510678338, - 0.44348394951348086, - 0.44348385250490063, - 0.44348376011604707, - 0.4434836722227344, - 0.44348358863940346, - 0.4434835091662191, - 0.4434834336050581, - 0.44348336176474046, - 0.44348329346252185, - 0.44348322852431893, - 0.4433161196839123, - 0.44219086172869904, - 0.44166116550449225, - 0.44135314758149125, - 0.44112823807867085, - 0.44093798049633803, - 0.4407652738633166, - 0.4406039120482708, - 0.4404514893502538, - 0.4403069170869303, - 0.4401695839133679, - 0.44004077428981375, - 0.43991979368840306, - 0.43980470553638157, - 0.43969525947380733, - 0.4395912090531797, - 0.4394923340290701, - 0.4394004729837044, - 0.4393152222060525, - 0.43923423123292066, - 0.4391571941503017, - 0.4390839477215548, - 0.43901431707543914, - 0.4389481277996777, - 0.4388852112358248, - 0.43882540606333487, - 0.43876855858955965, - 0.43871452260059524, - 0.43866315907108927, - 0.438614335836553, - 0.43856792726376836, - 0.4385238139311696, - 0.43848188232281504, - 0.4384420245367263, - 0.43840413800738554, - 0.4383681252418552, - 0.4383348505746914, - 0.4383036968178, - 0.4382740544586124, - 0.4382458678879889, - 0.4382190737411903, - 0.43819360609772756, - 0.4381694002907148, - 0.4381463941525498, - 0.43812452834966475, - 0.4381037464028381, - 0.43808399460207503, - 0.4380652218891011, - 0.4380473797328427, - 0.4380304420292375, - 0.43801439064263265, - 0.4379991340710183, - 0.43798463299628904, - 0.4379708505566392, - 0.43795775133577663, - 0.4379453015346475, - 0.43793351815609116, - 0.43792265064689667, - 0.43791232901530514, - 0.437902513603754, - 0.43789318336778676, - 0.43788431572217246, - 0.437875888223521, - 0.43786787919796794, - 0.43786026792675015, - 0.4378530346774693, - 0.43784616068278015, - 0.4378396281021877, - 0.43783341997944025, - 0.4378275201998096, - 0.43782191344871996, - 0.43781658517215644, - 0.4378115215389376, - 0.4378067094048384, - 0.4378021362784725, - 0.4377977902888696, - 0.4377936601546671, - 0.4377897351548173, - 0.43778600510076515, - 0.4377824603099973, - 0.4377790915809084, - 0.4377758901689157, - 0.4377728477637613, - 0.43776995646793704, - 0.4377672087761874, - 0.4377645975560254, - 0.4377621160292174, - 0.43775975775419085, - 0.43775751660931084, - 0.4377553867769888, - 0.43775336272858484, - 0.437751439210052, - 0.43774961122830125, - 0.4377478740382385, - 0.43774622313044703, - 0.4377446542194832, - 0.43774316323275103, - 0.4377417462999321, - 0.4377403997429378, - 0.4377391200663597, - 0.4377673879581923, - 0.4387782479065197, - 0.43925205244316984, - 0.4395235315295929, - 0.4397885130548049, - 0.4399602196465865, - 0.44011137808270456, - 0.44026313361414565, - 0.44039741132449534, - 0.4405249007812808, - 0.44064605883745245, - 0.44076120728285295, - 0.44087064650954577, - 0.4409746603949489, - 0.44107351817770635, - 0.4413043329539363, - 0.4413944476992889, - 0.44148134310367765, - 0.4415650918562717, - 0.44164510678527574, - 0.441721307039323, - 0.44179378847162915, - 0.44186270258080024, - 0.44192821446932656, - 0.4419904884443785, - 0.442049683261763, - 0.4421059507251846, - 0.442159435444807, - 0.442210274988557, - 0.4416916005568663, - 0.44167415412225786, - 0.4417283745332371, - 0.44177102634226206, - 0.44180818879295436, - 0.4418423311500603, - 0.4418743695837758, - 0.4419046750022254, - 0.44193342610384545, - 0.44196073228523, - 0.441986676499461, - 0.4420113302746552, - 0.442034759046734, - 0.44205702411890657, - 0.4420781834430238, - 0.44209829198632633, - 0.44211740194930976, - 0.44213556292733663, - 0.4423310086113657, - 0.44234903533902326, - 0.44236213520436973, - 0.44237680831367415, - 0.4423915550761716, - 0.44240584886175804, - 0.44241953076152957, - 0.44243256828885735, - 0.44244497161643137, - 0.4424567646266403, - 0.4424679749404143, - 0.4424786305146936, - 0.4424887585117911, - 0.44249838495302646, - 0.4425075346416856, - 0.4425162311771039, - 0.4425244969982827, - 0.4425323534358152, - 0.44253982076486187, - 0.4425469182567614, - 0.44255366422851367, - 0.44256007608996895, - 0.4425661703887257, - 0.44257196285283174, - 0.4425774684313642, - 0.4425827013330146, - 0.4425876750627546, - 0.44267453547033087, - 0.4426836057647534, - 0.4426861237999329, - 0.4426897482223093, - 0.44269364730556965, - 0.4426975105975682, - 0.4427012370747336, - 0.4427047979927395, - 0.4427081892728956, - 0.44271141506757516, - 0.4427144820974136, - 0.4427173977087759, - 0.44272166711194566, - 0.44272429986922673, - 0.44272677816874667, - 0.44272915250672523, - 0.4427314160780122, - 0.4427335700048679, - 0.4427356182035732, - 0.44273756538275416, - 0.44273941635870423, - 0.44274117582713096, - 0.44274284829212546, - 0.4427444380490546, - 0.442745949185702, - 0.4426875222714979, - 0.44268479916298625, - 0.4426875073096197, - 0.4426891492854571, - 0.4426903644875636, - 0.44269140008799485, - 0.442692343206693, - 0.4426932254261493, - 0.44269405908178705, - 0.442694849794309, - 0.4426956007991827, - 0.4426963144444446, - 0.44269699271088786, - 0.44269763739463597, - 0.44269825017303105, - 0.4426988326300995, - 0.4426993862679292, - 0.44269991251305896, - 0.44270041272102206, - 0.4427008881801375, - 0.4427013401149327, - 0.44270176968932956, - 0.44270217800965755, - 0.44270256612750586, - 0.4427029350424339, - 0.4427032857045456, - 0.44270361901693506, - 0.442703935838017, - 0.44270423698373107, - 0.4427045232296484, - 0.4427047953129658, - 0.4427050539344086, - 0.44270529976002937, - 0.4427055334229269, - 0.44270575552487806, - 0.4427059666378821, - 0.4423963015360265, - 0.44240557290646754, - 0.4424095578094898, - 0.4424106131159467, - 0.4424106654810377, - 0.44241038761351537, - 0.4424100106318937, - 0.44240961344746427, - 0.4424092225594764, - 0.4424088464413973, - 0.44240848738800626, - 0.4424081455960337, - 0.44240782056873273, - 0.4424075115983996, - 0.4424072179312527, - 0.4424069388229258, - 0.44240667355633617, - 0.44240642144664927, - 0.4424061818418541, - 0.4424059541218887, - 0.4424057376973077, - 0.4424055320078608, - 0.4424053365210698, - 0.4424051507308623, - 0.4424049741562671, - 0.44240480634016965, - 0.4424046468481281, - 0.4424044952672515, - 0.4424043512051275, - 0.4424042142888097, - 0.4424040841638496, - 0.4424039604933805, - 0.4424038429572454, - 0.44240373125116683, - 0.442403625085963, - 0.44240352418679135, - 0.44240342829244583, - 0.4424033371546758, - 0.4424032505375452, - 0.4424031682168186, - 0.4424030899793855, - 0.4424030156227058, - 0.4424029449542848, - 0.44240287779117643, - 0.4424028139595101, - 0.4424027532940377, - 0.4424026956377098, - 0.4424026408412655, - 0.44240258876284794, - 0.4424025392676378, - 0.44240249222750105, - 0.44240244752066127, - 0.4424024050313818, - 0.44240236464966576, - 0.4424023262709743, - 0.44240228979595175, - 0.442402255130173, - 0.4424022221838946, - 0.442402190871826, - 0.4424021611129067, - 0.44240213283009683, - 0.44239477855846404, - 0.44238890351452853, - 0.44238925301922144, - 0.44243341054613755, - 0.4469288528682952, - 0.4468077591621694, - 0.4467544989160407, - 0.44673886654564543, - 0.44674959383974105, - 0.44675933364905945, - 0.44676639764359705, - 0.4467722765051238, - 0.4467775480119436, - 0.4467824349227676, - 0.4467870279628582, - 0.4467913685421694, - 0.4467954794069367, - 0.446799376010086, - 0.4468030707411805, - 0.44680657451139455, - 0.4468098973581537, - 0.44681304868585753, - 0.44681603737098735, - 0.4468188718161708, - 0.4468215599845712, - 0.44682410942623796, - 0.4468265273007936, - 0.4468288203980825, - 0.44683099515744146, - 0.4468330576858583, - 0.44683501377514706, - 0.4468368689182227, - 0.44683862832453114, - 0.4468402969346771, - 0.44684187943430026, - 0.446843380267231, - 0.44684480364797385, - 0.44684615357353485, - 0.446847433834654, - 0.44684864802644253, - 0.44684979955848414, - 0.4468508916644061, - 0.44685192741096025, - 0.4468529097066365, - 0.44685384130982836, - 0.4468547248365788, - 0.44685556276792676, - 0.44685635745687563, - 0.44685711113499854, - 0.4468578259187042, - 0.44685850381518516, - 0.44685914672804733, - 0.44685975646266096, - 0.4468603347312269, - 0.44686088315758615, - 0.44686140328178053, - 0.4468618965643736, - 0.4468623643905583, - 0.4468628080740413, - 0.44686322886073365, - 0.4468636279322511, - 0.44686400640922835, - 0.44686436535447205, - 0.4468647057759378, - 0.44686502862956706, - 0.4468653348219681, - 0.44686562521296225, - 0.4468659006179989, - 0.44686616181044614, - 0.44686640952375983, - 0.4468666444535463, - 0.4468668672595148, - 0.4468670785673278, - 0.4468672789703608, - 0.4468674690313679, - 0.44686764928406003, - 0.44686782023460764, - 0.4468679823630583, - 0.4468681361246851, - 0.4468682819512692, - 0.4468684202523063, - 0.446868551416161, - 0.44686867581115663, - 0.44686879378660643, - 0.4468689056737991, - 0.44686901178692606, - 0.44686911242396493, - 0.44686920786751444, - 0.446869298385592, - 0.4468693842323802, - 0.446869465648948, - 0.4468695428639223, - 0.4468696160941283, - 0.4468696855452072, - 0.4468697514121836, - 0.4468698138800203, - 0.44686987312413307, - 0.4468699293108864, - 0.4468699825980586, - 0.4468700331352852, - 0.4468700810644808, - 0.44687012652023644, - 0.4468701696301954, - 0.44687021051541626, - 0.44687024929070895, - 0.4468702860649586, - 0.44687032094143125, - 0.4468703540180638, - 0.4468703853877386, - 0.44687041513854686, - 0.4468704433540302, - 0.44687047011342124, - 0.4468704954918639, - 0.4468705195606228, - 0.44687054238728663, - 0.4468705640359543, - 0.44687058456741735, - 0.4468706040393313, - 0.4468706225063752, - 0.44687064002040605, - 0.4468706566306052, - 0.4468706723836165, - 0.44687068732367613, - 0.4468707014927363, - 0.4468707149305861, - 0.4468707276749606, - 0.44687073976164726, - 0.4468707512245867, - 0.44687076209596843, - 0.44687077240631956, - 0.4468707821845936, - 0.44687079145824776, - 0.4468708002533255, - 0.4468708085945232, - 0.44687081650526367, - 0.4468708240077618, - 0.4468708311230848, - 0.4468708378712134, - 0.4468708442710968, - 0.44687085034070695, - 0.4468708560970885, - 0.44687086155640504, - 0.4468708667339875, - 0.44687087164437467, - 0.446870876301356, - 0.4468708807180086, - 0.44687088490673477, - 0.44687088887929705, - 0.4468708926468504, - 0.44687089621997517, - 0.4468708996087045, - 0.44687090282255504, - 0.44687090587055106, - 0.4468709087612514, - 0.4468709115027742, - 0.4468709141028173, - 0.44687091656868266, - 0.44687091890729375, - 0.4468709211252188, - 0.4468709232286844, - 0.44687092522359884, - 0.44687092711556353, - 0.44687092890989116, - 0.44687093061162064, - 0.44687093222553004, - 0.44687093375615183, - 0.4468709352077841, - 0.44687093658450383, - 0.4468709378901757, - 0.4468709391284667, - 0.4468709403028555, - 0.4468709414166379, - 0.4468709424729421, - 0.4468709434747347, - 0.44687094442482855, - 0.4468709453258921, - 0.4468709461804548, - 0.4468709469909169, - 0.44687094775955427, - 0.4468709484885252, - 0.4468709491798767, - 0.44687094983555026, - 0.44687095045738745, - 0.4468709510471337, - 0.44687095160644524, - 0.446870952136893, - 0.4468709526399666, - 0.44687095311707836, - 0.446870953569568, - 0.44687095399870647, - 0.4468709544056992, - 0.446870954791688, - 0.44687095515775804, - 0.4468709555049365, - 0.44687095583419817, - 0.4468709561464675, - 0.4468709564426221, - 0.4468709567234936, - 0.44687095698987034, - 0.4468709572425006, - 0.44687095748209327, - 0.44687095770932145, - 0.44687095792482345, - 0.44683650604740893, - 0.44331183902777954, - 0.44339236576017554, - 0.4434242684940807, - 0.4434268894807323, - 0.4434195591005795, - 0.44341138995109636, - 0.44340340089286023, - 0.4433957290344873, - 0.44338841147885455, - 0.44338145027895004, - 0.4433748349556383, - 0.44336855089698257, - 0.4433625824790619, - 0.4433569142090865, - 0.4433515311283296, - 0.44334641893879984, - 0.44334156402756925, - 0.44322231311166804, - 0.4431912178706647, - 0.4431888584936941, - 0.4431855581429969, - 0.4431819399537798, - 0.4431783218277094, - 0.44317481760001726, - 0.4431714642163675, - 0.44316827008167226, - 0.4431652331757096, - 0.4431437443188081, - 0.4431401594501182, - 0.4431377638344504, - 0.44313535646598257, - 0.44313301675479955, - 0.4431307747472235, - 0.44312863809388897, - 0.4431266062022036, - 0.44312467556354235, - 0.44312284174166483, - 0.4431211001097573, - 0.4431194461188069, - 0.44311787539069086, - 0.44311638374593254, - 0.44311496720733357, - 0.4431136219948948, - 0.44311234451780335, - 0.4431111313656264, - 0.44310997929949375, - 0.44310888524356556, - 0.4431078462768533, - 0.44310685962544494, - 0.44310592265509774, - 0.4431010032329862, - 0.4430932673491013, - 0.4430926053264425, - 0.4430919062735255, - 0.44309119617637877, - 0.4430905043480508, - 0.4430898408002351, - 0.4430892082077612, - 0.4430886065483502, - 0.44308803484031306, - 0.4430874917913356, - 0.44308697603921265, - 0.44308648623973934, - 0.4430860210974357, - 0.4430855793749444, - 0.44308515989455294, - 0.4430847615368525, - 0.4430843832384293, - 0.44308402398927754, - 0.44308368283019656, - 0.44308335885026834, - 0.44308305118443503, - 0.443082759011199, - 0.4430824815504266, - 0.4430822180612679, - 0.4430819678401777, - 0.44308173021904, - 0.44308150456337975, - 0.44308129027067267, - 0.4430810867687336, - 0.44308089351419166, - 0.44308070999103455, - 0.4430805357092363, - 0.4430803702034464, - 0.4430802130317463, - 0.4430800637744703, - 0.4430799220330859, - 0.4430797874291277, - 0.4430734062375961, - 0.44233080194318664, - 0.4423399679734556, - 0.44234485522529876, - 0.44234597151972155, - 0.44234569644517885, - 0.4423449355735181, - 0.44234402614621593, - 0.44234057375534774, - 0.44233969049198635, - 0.442338832181603, - 0.44233800123202827, - 0.4423372062069889, - 0.4423364490798462, - 0.442335729354147, - 0.44233504567108245, - 0.4423343964083945, - 0.4423337799015061, - 0.4423331945234302, - 0.4423326387119704, - 0.4423321109773383, - 0.44233160990257225, - 0.44233113414138153, - 0.4423306824151498, - 0.44233025350972516, - 0.4423298462722467, - 0.4423294596080785, - 0.4423290924778771, - 0.4423287438948021, - 0.44232841292187, - 0.44232809866942857, - 0.4423278002927723, - 0.44232751698987, - 0.4423272479992068, - 0.4423269925977395, - 0.44232675009895334, - 0.44232651985101396, - 0.4423263012350196, - 0.4423260936633324, - 0.44232589657800303, - 0.44232570944926913, - 0.4423255317741319, - 0.44232536307500164, - 0.4423252028984189, - 0.4423250508138306, - 0.4423249064124358, - 0.44232476930608605, - 0.4423246391262402, - 0.44232451552297786, - 0.44232439816405494, - 0.4423242867340119, - 0.442324180933327, - 0.44232408047760957, - 0.44232398509683546, - 0.4423238945346223, - 0.4423238085475416, - 0.4423237269044601, - 0.442323649385923, - 0.4423235757835608, - 0.44232350589953207, - 0.4423234395459894, - 0.442323376544575, - 0.44232331672594305, - 0.44232325992930055, - 0.44232320600198016, - 0.442323154799025, - 0.44232310618280307, - 0.44232306002263383, - 0.44232301619444053, - 0.44232297458041264, - 0.4423229350686926, - 0.4423228975530739, - 0.4423228619327148, - 0.4423228281118673, - 0.44232279599962315, - 0.44232276550966404, - 0.4423227365600332, - 0.4423227090729152, - 0.4423226829744244, - 0.4423226581944092, - 0.44232263466626104, - 0.44232261232673603, - 0.44232259111578587, - 0.4423225709763966, - 0.4423225518544338, - 0.4423225336984966, - 0.44232251645978354, - 0.44232250009195684, - 0.4423224845510192, - 0.442319442474149, - 0.4423174871494962, - 0.44231754120895955, - 0.4423175553187673, - 0.44231754896837916, - 0.44231753550419367, - 0.44231751993779217, - 0.4423175041166078, - 0.4423174887050916, - 0.4423174739263742, - 0.4423174598397271, - 0.4423174464443296, - 0.44231743371803606, - 0.44231742163182314, - 0.442317410155144, - 0.44231739925787283, - 0.44231738891098893, - 0.4423173790867805, - 0.4423173697588755, - 0.4423173609022142, - 0.4423173524929937, - 0.4423173445086116, - 0.4423173369276047, - 0.4422430566619025, - 0.44161577102541577, - 0.4413060550613662, - 0.44112314657548657, - 0.44099110807233066, - 0.44088131845760464, - 0.44078290495734634, - 0.44069164543610073, - 0.4406058137845503, - 0.4405246238549358, - 0.44044764998557423, - 0.4403746076549961, - 0.44030527147484216, - 0.44023944419253563, - 0.4401769447884254, - 0.4401176037334714, - 0.4400612609410051, - 0.44000975095563133, - 0.4399617523116635, - 0.4399161471122423, - 0.4398728332752323, - 0.4398317053316772, - 0.43979265661355854, - 0.43975558337343684, - 0.4397203861848848, - 0.43968697030484694, - 0.43965524565460207, - 0.4396251266654708, - 0.43959653208123584, - 0.43956938475138657, - 0.439543611427634, - 0.43951914256803165, - 0.43949591214999145, - 0.4394738574923883, - 0.43945291908652306, - 0.4394338986887878, - 0.43941627049719606, - 0.439399521196095, - 0.4393836140307612, - 0.4393685108628308, - 0.4393541726484249, - 0.439340561242979, - 0.43932764002974517, - 0.43931537409603544, - 0.4393037302422681, - 0.43929267693100144, - 0.4392821842161508, - 0.43927222366736124, - 0.4392627682950498, - 0.4392537924780506, - 0.43924527189448126, - 0.4392371834559517, - 0.4392295052450404, - 0.4392222164559186, - 0.43921529733798137, - 0.4392089599037348, - 0.43920311665235207, - 0.43919756601269, - 0.43919229497457407, - 0.43918729084060887, - 0.4391825406246428, - 0.4391780316419411, - 0.4391737517170428, - 0.43916968924211797, - 0.4391658331799018, - 0.4391621730466856, - 0.4391586988887158, - 0.439155401256966, - 0.43915227118214095, - 0.43914930015053866, - 0.43914648008099416, - 0.439143803302936, - 0.4391412625355387, - 0.4391388508679199, - 0.439136561740349, - 0.43913438892640266, - 0.4391323265160312, - 0.43913036889948104, - 0.43912851075203896, - 0.4391267470195463, - 0.43912507290465425, - 0.4391234838537723, - 0.439121975544685, - 0.4391205438747942, - 0.4391191849499595, - 0.4391178950739085, - 0.4391166707381802, - 0.43911550861258236, - 0.4391144055361365, - 0.4391133585084758, - 0.4391123646816876, - 0.4391114213525633, - 0.43911052595525024, - 0.4391096760542687, - 0.43910886933788895, - 0.43910810361184544, - 0.4391073767933631, - 0.43910668690549715, - 0.4391060320717537, - 0.43910541051098634, - 0.4390881320213879, - 0.43963965867477856, - 0.4399096648178221, - 0.44006643455231526, - 0.4402397674689431, - 0.4403494878747457, - 0.44043535518464927, - 0.4405152392823977, - 0.4405904995124548, - 0.4406617276800725, - 0.4407292624091508, - 0.44079334148623045, - 0.44085415916147547, - 0.4409118879899682, - 0.440966687319133, - 0.44113817990466264, - 0.441191570931384, - 0.4412406714660092, - 0.4412879547645394, - 0.441333105224062, - 0.4413760682179047, - 0.44141689339191603, - 0.44145566603595265, - 0.44149248143899517, - 0.44152743543808426, - 0.441560621034677, - 0.44159212727911984, - 0.44162203899827185, - 0.44165043683205124, - 0.4416773973788642, - 0.4417029933752142, - 0.4417272938818058, - 0.4417503644660791, - 0.4417722673776946, - 0.4417930617159648, - 0.44181280358911545, - 0.4418315462656056, - 0.4418493403178295, - 0.44186623375856365, - 0.441882272170513, - 0.4418974988293036, - 0.4419119548202486, - 0.4419256791492084, - 0.441938708847838, - 0.44195107907350567, - 0.441962823204158, - 0.4420922054897143, - 0.44210506437233754, - 0.44211452416957375, - 0.4421242690618607, - 0.44213382102338034, - 0.44214300255311684, - 0.442151762189668, - 0.4421600949862848, - 0.4421680126801534, - 0.44217553256521086, - 0.4421826733629626, - 0.4421894537102377, - 0.44219589162456585, - 0.44220200433380585, - 0.44220780824057665, - 0.4422133189357111, - 0.4422185512287, - 0.4422235191832117, - 0.442228236153294, - 0.4422327148186671, - 0.4422369672185891, - 0.4422410047841298, - 0.44224483836887046, - 0.44224847827807, - 0.44225193429635823, - 0.44225521571403936, - 0.4422583313520658, - 0.44226128958574873, - 0.44226409836727226, - 0.4422667652470696, - 0.442269297394122, - 0.44227170161522716, - 0.4422739843732993, - 0.442276151804741, - 0.4422782097359383, - 0.4422801636989256, - 0.4422820189462532, - 0.44228378046511047, - 0.44228545299072836, - 0.4422870410191116, - 0.44228854881912316, - 0.4422899804439606, - 0.44229133974204843, - 0.44229263036738975, - 0.442293855789381, - 0.4422950193021446, - 0.4422961240333807, - 0.44229717295277515, - 0.4422981688799841, - 0.4422991144922113, - 0.44228775109052576, - 0.44223508638053555, - 0.44223674417474196, - 0.44223792461996164, - 0.4422387455589295, - 0.44223944291010475, - 0.4422400356278738, - 0.44224057957240975, - 0.4422410903394006, - 0.44224157317420926, - 0.44224203081312136, - 0.4422424650250217, - 0.442242877179319, - 0.44224326846021683, - 0.44224363994867355, - 0.4422439926547819, - 0.4422443275315064, - 0.44224464548137576, - 0.44224494736045, - 0.4422452339812035, - 0.4422455061149253, - 0.4422457644938757, - 0.4422460098132873, - 0.44224624273324714, - 0.442246463880475, - 0.4422466738500133, - 0.44224687320683015, - 0.44224706248733475, - 0.44224724220082545, - 0.44224741283085944, - 0.4422475748365507, - 0.4422477286538088, - 0.4422478746965121, - 0.4422480133576175, - 0.44224814501022147, - 0.44224827000856215, - 0.4422483886889741, - 0.4422485013707903, - 0.44224860835720553, - 0.44224870993608817, - 0.44224880638075686, - 0.4422488979507159, - 0.442248984892354, - 0.44224906743960424, - 0.4422491458145783, - 0.4422492202281588, - 0.4422492908805721, - 0.44224935796192205, - 0.4422494216527055, - 0.4422494821242951, - 0.44224953953940266, - 0.44224959405251474, - 0.4422496458103101, - 0.4422496949520545, - 0.44224974160997343, - 0.44224978590960917, - 0.44224982797015977, - 0.4422498679047972, - 0.4422499058209746, - 0.4422499418207127, - 0.44224997600087645, - 0.4422500084534342, - 0.4422500392657064, - 0.44225006852059967, - 0.44225009629683043, - 0.4422501226691373, - 0.4422501477084786, - 0.4422501714822292, - 0.44225019405435795, - 0.44225021548559706, - 0.44225023583361406, - 0.4422502551531587, - 0.44225027349621454, - 0.4422502909121362, - 0.44225030744778643, - 0.44225032314765694, - 0.44225033805399117, - 0.4422503522068984, - 0.4422503656444595, - 0.44225037840283143, - 0.4422503905163425, - 0.4422504020175873, - 0.44225041293751205, - 0.4422504233054981, - 0.44225043314944457, - 0.44225044249583717, - 0.44225045136982466, - 0.44225045979528466, - 0.442250467794887, - 0.44225047539015677, - 0.44225048260153044, - 0.4422504894484118, - 0.44225049594922355, - 0.44225050212145733, - 0.44225050798172166, - 0.44225051354578354, - 0.44225051882861555, - 0.4422505238444311, - 0.4422505286067267, - 0.4422505331283168, - 0.44225053742136683, - 0.44225054149742854, - 0.44225054536746927, - 0.4421697624208901, - 0.433606784011435, - 0.4336850117554046, - 0.43370387579140995, - 0.4337225980749311, - 0.43374134777160606, - 0.433755607529526, - 0.4337640345893649, - 0.4337701152137866, - 0.43377598271120427, - 0.43375912112237514, - 0.43372792533430893, - 0.43371345565114083, - 0.4336984749474184, - 0.43368367600805335, - 0.4336671089190543, - 0.4336511352390218, - 0.43363438252211334, - 0.43361708758370976, - 0.433598477421693, - 0.43357908374304754, - 0.43355742976787875, - 0.43353602427936194, - 0.4335119799837143, - 0.4334837159476751, - 0.43345201268297906, - 0.43341762196420586, - 0.4333807119253895, - 0.4333522949733913, - 0.4333377608115726, - 0.4333222750595531, - 0.4333033189551673, - 0.43331221365359857, - 0.43332478850585354, - 0.4333231912163309, - 0.43332157107146235, - 0.4333204788932816, - 0.43331915494857975, - 0.4333179235538875, - 0.43331697936723945, - 0.43331590602400777, - 0.4333150877059186, - 0.43331415805372714, - 0.4333136683240112, - 0.43331286156251714, - 0.43331006079155127, - 0.43330940089134995, - 0.4333087980865156, - 0.43330856108327004, - 0.43330804641977955, - 0.4333075968072866, - 0.43330720323891364, - 0.4333068618973965, - 0.43330649109618935, - 0.4333063653974474, - 0.4333057569714048, - 0.4333051401369096, - 0.4333045452599868, - 0.4333039772832269, - 0.43330343704837715, - 0.43330292396129205, - 0.43330243694020454, - 0.43330197476591353, - 0.43330195455255727, - 0.4333015383514111, - 0.43330016260609483, - 0.4332997847785776, - 0.4333043291600101, - 0.4333629826560796, - 0.4333872187799808, - 0.43339424009225397, - 0.43339493203195417, - 0.433393324541322, - 0.43339094758316704, - 0.4333883608625533, - 0.43338576380592453, - 0.4333832428199377, - 0.4333808148258516, - 0.43337847667722496, - 0.4333762363935815, - 0.4333740862612018, - 0.43337201681510273, - 0.4333700213058946, - 0.43336809927225106, - 0.43336623897926024, - 0.43336444724572204, - 0.43336270893521944, - 0.4333610190282963, - 0.4333593728906833, - 0.4333577534655083, - 0.4333561621830842, - 0.43335458492432866, - 0.4333530280349532, - 0.43335148683289426, - 0.433349944432752, - 0.4333484089304038, - 0.43334687146302026, - 0.4333452927928005, - 0.43334367678192737, - 0.43334201101564096, - 0.43334029054266576, - 0.4333384908300252, - 0.4333365636642016, - 0.43333484958322566, - 0.43333259441221095, - 0.4333301653855273, - 0.4333278294399897, - 0.43332483475829037, - 0.43332154596132083, - 0.4333189873006115, - 0.4333181400183585, - 0.4333180342044692, - 0.43331819396188775, - 0.43331844215538484, - 0.43331871350162976, - 0.4333189838891283, - 0.43331924415077644, - 0.43331949213768645, - 0.4333197284860276, - 0.4333199526470767, - 0.43332016050363814, - 0.433320361568108, - 0.43332055404839, - 0.43332073729253623, - 0.433320911366639, - 0.4333210765899877, - 0.43332123336080963, - 0.4333213820922927, - 0.4333215231895602, - 0.4333216570158404, - 0.4333217766418785, - 0.4333218933870556, - 0.43332200649116576, - 0.4333221146700329, - 0.43332221762122014, - 0.4333223154068354, - 0.43332240821551365, - 0.43332249627438946, - 0.4333225798168322, - 0.4333226590708743, - 0.43332273425530776, - 0.43332280557860475, - 0.4333228732388705, - 0.43332293742416295, - 0.43332299831292836, - 0.4333230560744648, - 0.43332311086938285, - 0.433323162850046, - 0.433323212160993, - 0.43333048810979874, - 0.4333819196979542, - 0.4334020475383688, - 0.4334073915528039, - 0.4334072932402306, - 0.4334052268973713, - 0.43340249005911935, - 0.43339951014189976, - 0.4333965007670117, - 0.43339350540707045, - 0.43339051514056814, - 0.43338751297762307, - 0.4333845149339504, - 0.433381472784027, - 0.4333784179035662, - 0.43337534150346824, - 0.4333721602098498, - 0.4333688244519508, - 0.4333655481469758, - 0.43336366006122923, - 0.43336269738393957, - 0.43336209620271965, - 0.4333616416683402, - 0.4333612534493139, - 0.4333609011508404, - 0.4333605729209696, - 0.4333602638114793, - 0.4333599714618801, - 0.43335969449806805, - 0.43335943193733123, - 0.43335918296646736, - 0.4333589468582729, - 0.4333587229393936, - 0.4333585105772721, - 0.4333583091742365, - 0.43335811816428477, - 0.4333579370109335, - 0.43335776520549396, - 0.4333576022655709, - 0.4333574477336771, - 0.4333573011759374, - 0.4333571621808689, - 0.43335703035822215, - 0.4333569053378859, - 0.43335678676884676, - 0.43335667431820557, - 0.4333565676702412, - 0.4333564665255231, - 0.43335637060007304, - 0.4333562796245669, - 0.43335619334357744, - 0.43335611151485826, - 0.433356033908664, - 0.43335596030710244, - 0.43335589050352785, - 0.43335582430195685, - 0.43335576151651756, - 0.4333557019709324, - 0.43335564549801703, - 0.4333555919392161, - 0.43335554114415575, - 0.4333554929702218, - 0.43335544728215797, - 0.4333554039516889, - 0.43335536285715853, - 0.4333553238831873, - 0.43335528692035, - 0.4333552518648687, - 0.43335521861832005, - 0.43335518708735915, - 0.4333551571834588, - 0.43335512882265836, - 0.43335510192533155, - 0.4333550764159608, - 0.43335505222292353, - 0.433355029278296, - 0.4333550075176557, - 0.43335498687990814, - 0.4333549673071094, - 0.4333549487443058, - 0.4333549311393798, - 0.43335491444290275, - 0.4333548986079972, - 0.4333548835902037, - 0.43335486934735895, - 0.43335485583947303, - 0.43335484302862065, - 0.4333548308788339, - 0.433354819356, - 0.4333548084277677, - 0.4333547980634533, - 0.43335478823395823, - 0.4333547789116851, - 0.4333547700704595, - 0.4333547616854582, - 0.4333547537331401, - 0.43335474619117736, - 0.43335473903839455, - 0.4333547322547099, - 0.43335472582107687, - 0.43335471971943146, - 0.4333547139326442, - 0.43335470844446594, - 0.4333547032394886, - 0.4333546983030982, - 0.43335469362143514, - 0.4333546891813563, - 0.43335468497039364, - 0.4333546809767252, - 0.43335467718913756, - 0.43335467359699753, - 0.4326231112471988, - 0.4326321209085934, - 0.4326376886928113, - 0.43263918635782145, - 0.43263918500893855, - 0.4326386571019229, - 0.43263796145364053, - 0.43263722953800154, - 0.4326365087078158, - 0.43263581523213135, - 0.4326351539341559, - 0.4326345254604406, - 0.4326339289696928, - 0.4326333631254864, - 0.43263282646100354, - 0.4326323175113792, - 0.43263183486011014, - 0.4326313771537815, - 0.43263094310518607, - 0.4326305314922626, - 0.4326301411556051, - 0.43262977099554545, - 0.43262941996918924, - 0.432629087087523, - 0.4326287714126447, - 0.43262847205513155, - 0.4326281881715322, - 0.43262791896199454, - 0.43262766366801, - 0.4326274215702778, - 0.43262719198667815, - 0.4326269742703506, - 0.43262676780786985, - 0.43262657201752125, - 0.4326263863476576, - 0.43262621027514625, - 0.4326260433038967, - 0.43262588496346016, - 0.43262573480770705, - 0.43262559241356735, - 0.43262545737984, - 0.43262532932606207, - 0.4326252078914377, - 0.4326250927338189, - 0.432624983528746, - 0.432624879968529, - 0.4326247817613823, - 0.4326246886306038, - 0.4326246003137943, - 0.4314580804782645, - 0.430887095190271, - 0.43091231830805243, - 0.430922039916499, - 0.4309242571417896, - 0.43092375426069, - 0.4309223128045897, - 0.43092058882080087, - 0.4309188218051656, - 0.4309170972299496, - 0.43091544371655816, - 0.43091386899778494, - 0.43091237322200393, - 0.43091095387038264, - 0.43090960756983854, - 0.43090833075727286, - 0.43090711991892205, - 0.43090597167277295, - 0.43090488279320166, - 0.4309038502145329, - 0.4309028710270742, - 0.4309019424706492, - 0.4309010619274575, - 0.4309002269149285, - 0.4308994350788125, - 0.43089868418657473, - 0.43089797212111275, - 0.4308972968747905, - 0.4308966565437826, - 0.4308960493227053, - 0.43089547349952567, - 0.43089492745073654, - 0.4308944096367774, - 0.43089391859769544, - 0.43089345294902803, - 0.4308930113778998, - 0.43089259263932167, - 0.43089219555267727, - 0.4308909644319868, - 0.4308905705810078, - 0.43089024240622736, - 0.4308899246320383, - 0.4308896206756865, - 0.430889331467307, - 0.43088905685452117, - 0.43088879630851923, - 0.43088854918556035, - 0.4308883148225267, - 0.4308880925710927, - 0.43088788180923737, - 0.4308876819444341, - 0.43088749241380503, - 0.4308873126832095, - 0.43088714224599245, - 0.4308869806216456, - 0.4308868273544877, - 0.43088668201239394, - 0.4308865441855793, - 0.43088641348544854, - 0.4308862895434985, - 0.4308861720102803, - 0.43088606055441453, - 0.4308859548616566, - 0.4308858546340093, - 0.4308857595888864, - 0.4308856694583118, - 0.4308855839881667, - 0.4308855029374715, - 0.43088542607770763, - 0.43088535319217236, - 0.4308852840753674, - 0.43088521853242245, - 0.430885156378541, - 0.43088509743848297, - 0.4308850415460703, - 0.43088498854371504, - 0.43088493828198127, - 0.43088489061915786, - 0.43088484542086125, - 0.4308848025596562, - 0.4308847619146987, - 0.43088472337139105, - 0.43088468682106335, - 0.4308846521606626, - 0.4308846192924652, - 0.43088458812380137, - 0.43088455856679186, - 0.43088453053810233, - 0.43088450395870737, - 0.4308844787536671, - 0.43088445485191734, - 0.43088443218606787, - 0.4308844106922136, - 0.43088439030975273, - 0.43088437098121946, - 0.4308843526521165, - 0.4308819686419451, - 0.4308211944835223, - 0.4307940434311391, - 0.43078517106637665, - 0.430783470226131, - 0.4307843638305846, - 0.4307861387164818, - 0.4307881649872442, - 0.4307902134719961, - 0.43079220304833227, - 0.4307941071745582, - 0.4307959193215402, - 0.43079764019366823, - 0.43079927301010357, - 0.4308008217674324, - 0.4308022906048485, - 0.43080368357679794, - 0.4308050045759748, - 0.43080625731157657, - 0.43080744530764686, - 0.4308085719085248, - 0.43080964028660973, - 0.43081065345067915, - 0.4308116142541398, - 0.4308125254029783, - 0.43081338946335274, - 0.4308142088688065, - 0.4308149859271189, - 0.43081572282680314, - 0.4308164216432709, - 0.43081708434467403, - 0.430817712797452, - 0.4308183087715843, - 0.43081887394557916, - 0.4308194099111965, - 0.43081991817793547, - 0.4308204001772828, - 0.43082085726674596, - 0.4308212907336759, - 0.43082170179889284, - 0.4308220916201251, - 0.43082246129526836, - 0.43082281186547894, - 0.4308231443181067, - 0.43082345958947316, - 0.4308237585675129, - 0.4308240420942692, - 0.43082431096826984, - 0.4308245659467747, - 0.4308248077479061, - 0.4308250370526761, - 0.43082525450690057, - 0.4308254607230198, - 0.430825656281822, - 0.4308258417340818, - 0.43082601760210754, - 0.43082618438121606, - 0.43082634254112623, - 0.43082649252728017, - 0.43082663476210054, - 0.43082676964617894, - 0.4308268975594039, - 0.4308270188620314, - 0.43082713389569915, - 0.4308272429843895, - 0.4308273464353412, - 0.43082744453991323, - 0.4308275375744092, - 0.43082762580085165, - 0.43082770946772253, - 0.4308277888106623, - 0.4308278640531331, - 0.4308279354070482, - 0.4308280030733697, - 0.4308280672426733, - 0.43082812809568694, - 0.4308281858037963, - 0.43082824052953184, - 0.4308282924270238, - 0.4308283416424358, - 0.4308283883143795, - 0.4308284325743017, - 0.4308284745468567, - 0.43082851435025626, - 0.4308285520966036, - 0.43082858789220724, - 0.430828621837882, - 0.4308286540292326, - 0.4308286845569247, - 0.430828713506935, - 0.4308287409607998, - 0.43082876699583933, - 0.43082879168537996, - 0.43082881509895676, - 0.4308288373025128, - 0.43082885835858087, - 0.43082887832646516, - 0.43082889726240253, - 0.430828915219724, - 0.43082893224900576, - 0.4308289483982085, - 0.4308289637128152, - 0.430828978235958, - 0.4308289920085398, - 0.4308290050693502, - 0.43082901745517355, - 0.43082902920089383, - 0.43082904033959113, - 0.430829050902637, - 0.43082906091978107, - 0.430829070419236, - 0.4308290794277561, - 0.4308290879707127, - 0.4308290960721665, - 0.4308291037549344, - 0.430829111040655, - 0.43082911794984696, - 0.43082912450196875, - 0.4308291307154758, - 0.4308291366078661, - 0.43082914219573626, - 0.43082914749482304, - 0.4308291525200515, - 0.4308291572855747, - 0.43082916180481345, - 0.4308291660904969, - 0.4308291701546948, - 0.4308291740088536, - 0.43082917766382817, - 0.4308291811299127, - 0.4308291844168683, - 0.43082918753395316, - 0.43082919048994667, - 0.4308291932931728, - 0.43082919595152797, - 0.43082919847249784, - 0.43082920086318316, - 0.4308292031303168, - 0.43082920528028495, - 0.4308292073191416, - 0.4308292092526298, - 0.43082921108619426, - 0.43082921282500003, - 0.43082921447394296, - 0.4308292160376691, - 0.43082921752058057, - 0.4308292189268549, - 0.43082922026045234, - 0.43082922152512926, - 0.43082922272444735, - 0.430829223861784, - 0.4308292249403427, - 0.43082922596316137, - 0.4308292269331208, - 0.4308292278529517, - 0.4308292287252455, - 0.43082922955245906, - 0.43082923033692183, - 0.43082923108084376, - 0.43082923178631916, - 0.4308292324553354, - 0.4308292330897767, - 0.43082923369142967, - 0.4308292342619895, - 0.43082923480306234, - 0.4308292353161721, - 0.4308292358027645, - 0.4308292362642098, - 0.4308292367018071, - 0.430829237116789, - 0.4308292375103254, - 0.4308292378835227, - 0.4308292382374337, - 0.43082923857305405, - 0.4308292388913297, - 0.4308292391931568, - 0.4308292394793852, - 0.4308292397508213, - 0.4308292400082296, - 0.43082924025233504, - 0.43082924048382476, - 0.4308292407033508, - 0.43082924091153174, - 0.43082924110895415, - 0.4314117325135078, - 0.43157525668989694, - 0.4315646945620821, - 0.4315608425533615, - 0.43155999553677454, - 0.4315602342453158, - 0.43156084604694167, - 0.4315615687958173, - 0.43156230692776254, - 0.4315630264213853, - 0.4315637159500745, - 0.43156437251653984, - 0.43156499614271604, - 0.4315655879088572, - 0.4315661492312663, - 0.43156668159800354, - 0.4315671864738464, - 0.43156766526771234, - 0.43156811932304795, - 0.4315685499165931, - 0.43156895826011643, - 0.4315693455031414, - 0.4315697127359279, - 0.43157006099245043, - 0.4315703912532712, - 0.431570703319583, - 0.4315709966538408, - 0.4315712769393692, - 0.43157154255721564, - 0.43157179423284187, - 0.43157202939455247, - 0.431572255028265, - 0.43157247051441566, - 0.43157267542898975, - 0.4315728655302658, - 0.4315730474123042, - 0.4315732215975865, - 0.43157338742073964, - 0.43157354491148625, - 0.43157369405394114, - 0.43157383344438704, - 0.4315739669214367, - 0.4315740941241345, - 0.43157421178935934, - 0.43157432295675396, - 0.43157443055759936, - 0.43157453343785623, - 0.4315746313126924, - 0.43157472424491744, - 0.4315748124174967, - 0.4315748960495854, - 0.43157497536589823, - 0.43157505058578227, - 0.431575121916239, - 0.43157518700142794, - 0.43157524982194695, - 0.4315753102354485, - 0.43157536784095146, - 0.43157542258585, - 0.43157337195641104, - 0.43156736893630754, - 0.4315661832562571, - 0.43156487378633285, - 0.43156347397885314, - 0.43156195610619397, - 0.4315603030995213, - 0.4315598568436781, - 0.43155991139261685, - 0.43155994212664706, - 0.43155996182084005, - 0.4315599769878265, - 0.431559990072698, - 0.4315600020010984, - 0.43156001313540115, - 0.4315600236285848, - 0.4315600335551906, - 0.43156004295981654, - 0.43156005187510316, - 0.431560060328435, - 0.4315600683444607, - 0.4315600759460658, - 0.4315600828514384, - 0.43156008873654517, - 0.4315600948641467, - 0.4315601009080462, - 0.43156010672602596, - 0.4315601122753123, - 0.4315601175496489, - 0.43156012255579246, - 0.43156012730484733, - 0.43156013180907926, - 0.4315601360807623, - 0.43156014013177557, - 0.43156014397347103, - 0.4315601476166467, - 0.43156015107155354, - 0.4315601543479202, - 0.4315601574549707, - 0.4315601604014554, - 0.4315601631956724, - 0.43156016584548884, - 0.43156016835836897, - 0.43156017074138836, - 0.4315601730012579, - 0.43156017514434164, - 0.43156017717667516, - 0.4315601791039819, - 0.4315601809316894, - 0.43156018266494456, - 0.4315601843086283, - 0.43156018586736966, - 0.4315601873455589, - 0.4315601887473577, - 0.4315601900767146, - 0.4315601913373731, - 0.43156019253288325, - 0.43156019366661214, - 0.4315601947417515, - 0.43156019576133003, - 0.43156019672821894, - 0.4315601976451408, - 0.43156019851467803, - 0.4315601993392795, - 0.43156020012126717, - 0.4315602008628435, - 0.43156020156609604, - 0.4315602022330059, - 0.4315602028654522, - 0.43156020346521373, - 0.4315602040339819, - 0.4315602045733563, - 0.4315602050848569, - 0.4315602055699246, - 0.43156020602992523, - 0.43156020646615345, - 0.4315602068798383, - 0.4315602072721451, - 0.4315602076441779, - 0.43156020799698497, - 0.4315602083315595, - 0.431560208648844, - 0.431560208949732, - 0.43156020923507077, - 0.4315602095056638, - 0.43156020976227283, - 0.43156021000562067, - 0.431560210236393, - 0.4315602104552399, - 0.431560210662777, - 0.4315602108595882, - 0.4315602110462297, - 0.4315602112232252, - 0.4315602113910746, - 0.43156021155024915, - 0.431560211701198, - 0.4315602118443469, - 0.4315602119800975, - 0.4315602121088326, - 0.4315602122309157, - 0.43156021234668873, - 0.4315602124564795, - 0.43156021256059646, - 0.4315602126593328, - 0.4315602127529671, - 0.43156021284176177, - 0.4315602129259679, - 0.43156021300582303, - 0.43156021308155046, - 0.43156021315336485, - 0.4315602132214683, - 0.4315602132860519, - 0.4315602133472983, - 0.43156021340537937, - 0.43156021346045914, - 0.43156021351269236, - 0.4315602135622264, - 0.43156021360920044, - 0.43156021365374697, - 0.43156021369599157, - 0.4315602137360531, - 0.43156021377404435, - 0.4315602138100718, - 0.43156021384423765, - 0.4315602138766381, - 0.43156021390736404, - 0.431560213936502, - 0.4315602139641341, - 0.4315602139903388, - 0.4315602140151886, - 0.43156021403875483, - 0.43156021406110273, - 0.43156021408229583, - 0.43156021410239376, - 0.4315602141214535, - 0.4315602141395276, - 0.43156021415666795, - 0.43156021417292245, - 0.4315602141883371, - 0.43156021420295515, - 0.431560214216818, - 0.43156021422996393, - 0.4315602142424305, - 0.4315602142542529, - 0.43156021426546454, - 0.4315602142760967, - 0.4315602142861795, - 0.43156021429574115, - 0.43156021430480873, - 0.43156021431340763, - 0.4315602143215621, - 0.43156021432929526, - 0.43156021433662894, - 0.43156021434358255, - 0.4315602143501786, - 0.4315602143564328, - 0.4315602143623639, - 0.4315602143679885, - 0.4315602143733223, - 0.4315602143783808, - 0.4315602143831775, - 0.43156021438772674, - 0.43156021439204056, - 0.4315602143961314, - 0.43156021440001097, - 0.43156021440369, - 0.4315602144071777, - 0.431560214410488, - 0.4315602144136255, - 0.43156021441660086, - 0.43156021441942266, - 0.4315602144220986, - 0.43156021442463616, - 0.43156021442704257, - 0.4315602144293248, - 0.43156021443148906, - 0.4315602144335414, - 0.4315602144354876, - 0.4315602144373334, - 0.43156021443908354, - 0.4315602144407436, - 0.43156021444231774, - 0.43156021444381026, - 0.431560214445226, - 0.43156021444656856, - 0.43156021444784154, - 0.4315602144490488, - 0.43156021445019416, - 0.43156021445127946, - 0.43156021445230913, - 0.4315602144532856, - 0.4315602144542115, - 0.4315602144550895, - 0.4315602144559222, - 0.431560214456712, - 0.4315602144574608, - 0.43156021445817105, - 0.43156021445884457, - 0.4315602144594833, - 0.43156021446008896, - 0.43156021446066356, - 0.4315602144612078, - 0.43156021446172455, - 0.4315602144622144, - 0.4315602144626788, - 0.43156021446311943, - 0.4315602144635371, - 0.4315602144639331, - 0.431560214464309, - 0.43156021446466514, - 0.4315602144650031, - 0.4315602144653234, - 0.4315602144656273, - 0.4315602144659154, - 0.43156021446618875, - 0.4315602144664479, - 0.43156021446669357, - 0.43156021446692666, - 0.4315602144671477, - 0.4315602144673573, - 0.4315602144675558, - 0.4315602144677446, - 0.43156021446792325, - 0.43156021446809273, - 0.4315602144682533, - 0.43156021446840565, - 0.4315602144685505, - 0.43156021446868753, - 0.4315602144688173, - 0.43156021446894055, - 0.43156021446905773, - 0.4315602144691686, - 0.43156021446927373, - 0.4315602144693735, - 0.4315602144694677, - 0.4315602144695574, - 0.43156021446964254, - 0.43156021446972337, - 0.4315602144697996, - 0.4315602144698724, - 0.4315602144699411, - 0.4315602144700064, - 0.43156021447006826, - 0.43156021447012655, - 0.4315602144701825, - 0.43156021447023457, - 0.43156021447028525, - 0.4315602144703326, - 0.43156021447037674, - 0.4315299172503518, - 0.43153024671425605, - 0.43153048011051715, - 0.43153054475149805, - 0.4315305469512986, - 0.43153052711254253, - 0.43153050016903016, - 0.43153047160400704, - 0.4315304433986008, - 0.4315304162378268, - 0.4315303903285848, - 0.4315303657028965, - 0.43153034233023996, - 0.4315303201590921, - 0.4315302991322208, - 0.43153027919224846, - 0.431530260283617, - 0.4315302423532128, - 0.431530225350515, - 0.4315302092275552, - 0.4315301939388272, - 0.4315301794411708, - 0.4315301656936552, - 0.43153015265746786, - 0.431530140295803, - 0.431368551285817, - 0.43124869985935693, - 0.4312283785329913, - 0.4312048927369093, - 0.4311798371795487, - 0.4311515621547241, - 0.43112181011408157, - 0.43109542370447096, - 0.4310945588380511, - 0.43109461875059835, - 0.4310943908363036, - 0.4310940641941546, - 0.43109371336426366, - 0.4310933654335376, - 0.43109302985152914, - 0.43109270954561735, - 0.43109240504989277, - 0.4310921160378147, - 0.43109184189024685, - 0.43109158190511637, - 0.43109133537398486, - 0.43109110160923797, - 0.43109087995298245, - 0.43109066977921373, - 0.4310904704935464, - 0.4310902815320831, - 0.4310901023600293, - 0.4310899324702535, - 0.43108977138188187, - 0.431089618638947, - 0.43108947380910156, - 0.4310893364823961, - 0.4310892062701182, - 0.4310890828036941, - 0.43108896573364414, - 0.43108885472859404, - 0.4310887494743367, - 0.4310886496729433, - 0.43108855504191956, - 0.4309730988766104, - 0.43097291911808394, - 0.43097389652463397, - 0.4309741376799162, - 0.4309741030458359, - 0.4309739723348596, - 0.4309738120400275, - 0.4309736465453308, - 0.43097348460859747, - 0.43097332919862585, - 0.4309731811485321, - 0.43097304051207713, - 0.430972907066764, - 0.43097278050004123, - 0.4309726604778176, - 0.43097254666929363, - 0.43097243875559943, - 0.4309723364324587, - 0.4309722394106364, - 0.43097214741561735, - 0.4309720601870126, - 0.4309719774778861, - 0.43097189905408245, - 0.4309718246935731, - 0.4309717541858319, - 0.4309716873312394, - 0.43097162394051947, - 0.4309715638342009, - 0.4309715068421125, - 0.4309714528029, - 0.43097140156356817, - 0.4309713529790506, - 0.4309713069117953, - 0.430971263231378, - 0.43097122181413144, - 0.4309711825427967, - 0.4309711453061892, - 0.43097110999888605, - 0.4309710765209258, - 0.43097104477752635 - ] - }, - { - "name": "direct parasympathetic efferent", - "opacity": 0.5, - "type": "scatter", - "x": [ - 4.989999999999939, - 9.989999999999831, - 14.989999999999723, - 19.990000000000325, - 24.99000000000111, - 29.99000000000189, - 34.990000000001615, - 39.99000000000061, - 44.98999999999962, - 49.989999999998616, - 54.989999999997636, - 59.98999999999664, - 64.98999999999634, - 69.9899999999989, - 74.99000000000144, - 79.99000000000402, - 84.99000000000656, - 89.99000000000912, - 94.99000000001169, - 99.99000000001423, - 104.9900000000168, - 109.99000000001936, - 114.99000000002192, - 119.9900000000245, - 124.99000000002705, - 129.99000000002675, - 134.9900000000222, - 139.99000000001766, - 144.99000000001308, - 149.99000000000856, - 154.99000000000402, - 159.98999999999947, - 164.9899999999949, - 169.98999999999037, - 174.98999999998586, - 179.98999999998128, - 184.98999999997676, - 189.98999999997216, - 194.9899999999676, - 199.98999999996312, - 204.98999999995854, - 209.989999999954, - 214.98999999994945, - 219.98999999994493, - 224.98999999994038, - 229.9899999999358, - 234.98999999993129, - 239.98999999992668, - 244.98999999992213, - 249.98999999991761, - 254.9899999999131, - 259.98999999990855, - 264.989999999904, - 269.98999999989945, - 274.9899999998949, - 279.9899999998904, - 284.9899999998858, - 289.98999999988126, - 294.98999999987666, - 299.98999999987217, - 304.9899999998676, - 309.98999999986313, - 314.9899999998585, - 319.98999999985404, - 324.98999999984943, - 329.9899999998449, - 334.9899999998404, - 339.9899999998358, - 344.98999999983124, - 349.98999999982664, - 354.98999999982215, - 359.98999999981766, - 364.9899999998131, - 369.9899999998085, - 374.989999999804, - 379.98999999979935, - 384.98999999979486, - 389.98999999979037, - 394.98999999978577, - 399.98999999978116, - 404.9899999997768, - 409.9899999997721, - 414.98999999976763, - 419.98999999976303, - 424.98999999975854, - 429.98999999975393, - 434.9899999997494, - 439.9899999997448, - 444.9899999997403, - 449.98999999973574, - 454.9899999997312, - 459.98999999972665, - 464.98999999972216, - 469.9899999997176, - 474.989999999713, - 479.98999999970846, - 484.9899999997039, - 489.9899999996994, - 494.9899999996948, - 499.9899999996903, - 504.98999999968566, - 509.9899999996812, - 514.9899999996767, - 519.9899999996721, - 524.9899999996676, - 529.989999999663, - 534.9899999996585, - 539.9899999996541, - 544.9899999996494, - 549.9899999996449, - 554.9899999996403, - 559.9899999996359, - 564.9899999996313, - 569.9899999996268, - 574.9899999996221, - 579.9899999996176, - 584.989999999613, - 589.9899999996086, - 594.9899999996039, - 599.9899999995994, - 604.9899999995947, - 609.9899999995903, - 614.9899999995857, - 619.9899999995812, - 624.9899999995766, - 629.9899999995721, - 634.9899999995675, - 639.989999999563, - 644.9899999995584, - 649.9899999995539, - 654.9899999995494, - 659.9899999995448, - 664.9899999995403, - 669.9899999995357, - 674.9899999995313, - 679.9899999995266, - 684.9899999995221, - 689.9899999995175, - 694.989999999513, - 699.9899999995083, - 704.989999999504, - 709.9899999994992, - 714.9899999994948, - 719.9899999994902, - 724.9899999994858, - 729.9899999994813, - 734.9899999994766, - 739.989999999472, - 744.9899999994675, - 749.9899999994631, - 754.9899999994583, - 759.9899999994539, - 764.9899999994493, - 769.9899999994448, - 774.9899999994403, - 779.9899999994358, - 784.9899999994311, - 789.9899999994266, - 794.989999999422, - 799.9899999994176, - 804.9899999994128, - 809.9899999994084, - 814.9899999994037, - 819.9899999993993, - 824.9899999993947, - 829.9899999993903, - 834.9899999993856, - 839.9899999993811, - 844.9899999993767, - 849.989999999372, - 854.9899999993676, - 859.9899999993629, - 864.9899999993584, - 869.9899999993538, - 874.9899999993493, - 879.9899999993448, - 884.9899999993402, - 889.9899999993356, - 894.9899999993311, - 899.9899999993265, - 904.9899999993221, - 909.9899999993173, - 914.9899999993128, - 919.9899999993083, - 924.9899999993038, - 929.9899999992994, - 934.9899999992947, - 939.98999999929, - 944.9899999992856, - 949.989999999281, - 954.9899999992764, - 959.989999999272, - 964.9899999992674, - 969.9899999992627, - 974.9899999992584, - 979.9899999992537, - 984.9899999992492, - 989.9899999992447, - 994.98999999924, - 999.9899999992357, - 1004.9899999992309, - 1009.9899999992264, - 1014.9899999992219, - 1019.9899999992174, - 1024.9899999992128, - 1029.9899999992083, - 1034.9899999992037, - 1039.9899999991992, - 1044.9899999991949, - 1049.98999999919, - 1054.9899999991856, - 1059.989999999181, - 1064.9899999991762, - 1069.9899999991721, - 1074.9899999991674, - 1079.9899999991628, - 1084.9899999991583, - 1089.9899999991535, - 1094.9899999991494, - 1099.9899999991446, - 1104.98999999914, - 1109.9899999991355, - 1114.989999999131, - 1119.9899999991264, - 1124.9899999991221, - 1129.9899999991173, - 1134.9899999991128, - 1139.9899999991082, - 1144.9899999991035, - 1149.9899999990994, - 1154.9899999990946, - 1159.98999999909, - 1164.9899999990855, - 1169.989999999081, - 1174.9899999990766, - 1179.9899999990719, - 1184.9899999990673, - 1189.9899999990628, - 1194.9899999990582, - 1199.9899999990535, - 1204.9899999990491, - 1209.9899999990446, - 1214.98999999904, - 1219.9899999990355, - 1224.9899999990312, - 1229.9899999990264, - 1234.9899999990218, - 1239.989999999017, - 1244.9899999990128, - 1249.9899999990082, - 1254.9899999990034, - 1259.989999998999, - 1264.9899999989943, - 1269.98999999899, - 1274.9899999989855, - 1279.989999998981, - 1284.9899999989764, - 1289.9899999989716, - 1294.9899999989673, - 1299.9899999989627, - 1304.9899999989582, - 1309.9899999989536, - 1314.989999998949, - 1319.9899999989445, - 1324.98999999894, - 1329.9899999989354, - 1334.989999998931, - 1339.9899999989266, - 1344.9899999989218, - 1349.9899999989173, - 1354.9899999989127, - 1359.9899999989082, - 1364.9899999989036, - 1369.9899999988988, - 1374.9899999988943, - 1379.98999999889, - 1384.9899999988854, - 1389.9899999988806, - 1394.9899999988766, - 1399.9899999988718, - 1404.9899999988672, - 1409.9899999988627, - 1414.9899999988581, - 1419.9899999988534, - 1424.9899999988488, - 1429.9899999988445, - 1434.98999999884, - 1439.9899999988354, - 1444.9899999988309, - 1449.9899999988265, - 1454.9899999988218, - 1459.9899999988172, - 1464.989999998813, - 1469.989999998808, - 1474.9899999988033, - 1479.989999998799, - 1484.9899999987945, - 1489.98999999879, - 1494.9899999987854, - 1499.9899999987808, - 1504.9899999987765, - 1509.9899999987713, - 1514.9899999987674, - 1519.9899999987624, - 1524.9899999987579, - 1529.9899999987533, - 1534.989999998749, - 1539.9899999987445, - 1544.98999999874, - 1549.9899999987354, - 1554.9899999987308, - 1559.9899999987265, - 1564.9899999987217, - 1569.9899999987174, - 1574.9899999987124, - 1579.9899999987078, - 1584.9899999987035, - 1589.989999998699, - 1594.9899999986944, - 1599.9899999986899, - 1604.9899999986853, - 1609.9899999986808, - 1614.9899999986762, - 1619.9899999986715, - 1624.9899999986674, - 1629.9899999986624, - 1634.989999998658, - 1639.9899999986535, - 1644.989999998649, - 1649.9899999986444, - 1654.98999999864, - 1659.9899999986353, - 1664.9899999986308, - 1669.989999998626, - 1674.9899999986214, - 1679.9899999986173, - 1684.9899999986123, - 1689.989999998608, - 1694.9899999986035, - 1699.989999998599, - 1704.9899999985944, - 1709.9899999985898, - 1714.9899999985853, - 1719.9899999985805, - 1724.9899999985764, - 1729.9899999985714, - 1734.9899999985669, - 1739.9899999985626, - 1744.989999998558, - 1749.9899999985535, - 1754.989999998549, - 1759.9899999985446, - 1764.9899999985398, - 1769.9899999985353, - 1774.989999998531, - 1779.9899999985264, - 1784.9899999985214, - 1789.989999998517, - 1794.9899999985125, - 1799.989999998508, - 1804.9899999985034, - 1809.9899999984991, - 1814.9899999984946, - 1819.9899999984893, - 1824.9899999984848, - 1829.989999998481, - 1834.989999998476, - 1839.989999998472, - 1844.989999998467, - 1849.9899999984625, - 1854.989999998458, - 1859.9899999984534, - 1864.9899999984489, - 1869.9899999984445, - 1874.98999999844, - 1879.9899999984355, - 1884.9899999984307, - 1889.989999998426, - 1894.9899999984216, - 1899.989999998417, - 1904.9899999984125, - 1909.989999998408, - 1914.9899999984036, - 1919.9899999983988, - 1924.9899999983945, - 1929.9899999983895, - 1934.9899999983847, - 1939.9899999983807, - 1944.9899999983759, - 1949.9899999983718, - 1954.989999998367, - 1959.9899999983625, - 1964.989999998358, - 1969.9899999983534, - 1974.9899999983486, - 1979.9899999983445, - 1984.9899999983402, - 1989.9899999983352, - 1994.9899999983304, - 1999.989999998326, - 2004.9899999983213, - 2009.989999998317, - 2014.9899999983124, - 2019.9899999983081, - 2024.9899999983036, - 2029.9899999982986, - 2034.9899999982945, - 2039.9899999982895, - 2044.9899999982847, - 2049.9899999983263, - 2054.989999998435, - 2059.989999998544, - 2064.9899999986533, - 2069.9899999987624, - 2074.989999998872, - 2079.9899999989807, - 2084.98999999909, - 2089.989999999199, - 2094.9899999993077, - 2099.9899999994173, - 2104.9899999995264, - 2109.9899999996355, - 2114.9899999997447, - 2119.9899999998543, - 2124.989999999963, - 2129.990000000072, - 2134.9900000001808, - 2139.9900000002904, - 2144.9900000003995, - 2149.9900000005086, - 2154.990000000618, - 2159.990000000727, - 2164.990000000836, - 2169.990000000945, - 2174.9900000010543, - 2179.9900000011635, - 2184.990000001273, - 2189.9900000013813, - 2194.990000001491, - 2199.9900000016, - 2204.990000001709, - 2209.9900000018183, - 2214.9900000019275, - 2219.9900000020366, - 2224.9900000021453, - 2229.990000002255, - 2234.990000002364, - 2239.990000002473, - 2244.9900000025823, - 2249.9900000026914, - 2254.990000002801, - 2259.9900000029097, - 2264.9900000030193, - 2269.990000003128, - 2274.990000003237, - 2279.9900000033467, - 2284.9900000034554, - 2289.9900000035645, - 2294.9900000036732, - 2299.990000003783, - 2304.990000003892, - 2309.9900000040006, - 2314.9900000041102, - 2319.9900000042194, - 2324.9900000043285, - 2329.9900000044377, - 2334.9900000045473, - 2339.990000004656, - 2344.990000004765, - 2349.9900000048738, - 2354.9900000049834, - 2359.9900000050925, - 2364.9900000052016, - 2369.990000005311, - 2374.99000000542, - 2379.990000005529, - 2384.990000005638, - 2389.9900000057473, - 2394.9900000058565, - 2399.9900000059656, - 2404.990000006075, - 2409.990000006184, - 2414.990000006293, - 2419.990000006402, - 2424.9900000065113, - 2429.9900000066204, - 2434.9900000067296, - 2439.990000006839, - 2444.990000006948, - 2449.990000007057, - 2454.990000007166, - 2459.9900000072753, - 2464.9900000073844, - 2469.9900000074936, - 2474.990000007603, - 2479.9900000077123, - 2484.990000007821, - 2489.99000000793, - 2494.9900000080397, - 2499.9900000081484, - 2504.990000008257, - 2509.990000008367, - 2514.990000008476, - 2519.990000008585, - 2524.9900000086936, - 2529.9900000088032, - 2534.9900000089124, - 2539.990000009021, - 2544.9900000091307, - 2549.99000000924, - 2554.990000009349, - 2559.990000009458, - 2564.9900000095668, - 2569.9900000096764, - 2574.990000009785, - 2579.9900000098946, - 2584.9900000100038, - 2589.990000010113, - 2594.990000010222, - 2599.990000010331, - 2604.9900000104403, - 2609.990000010549, - 2614.9900000106586, - 2619.990000010768, - 2624.990000010877, - 2629.990000010986, - 2634.990000011095, - 2639.9900000112043, - 2644.990000011313, - 2649.9900000114226, - 2654.990000011532, - 2659.990000011641, - 2664.99000001175, - 2669.990000011859, - 2674.9900000119683, - 2679.990000012077, - 2684.9900000121866, - 2689.990000012296, - 2694.9900000124053, - 2699.990000012514, - 2704.990000012623, - 2709.9900000127327, - 2714.990000012841, - 2719.9900000129505, - 2724.99000001306, - 2729.990000013169, - 2734.990000013278, - 2739.990000013387, - 2744.9900000134962, - 2749.990000013605, - 2754.9900000137145, - 2759.9900000138236, - 2764.9900000139332, - 2769.990000014042, - 2774.990000014151, - 2779.99000001426, - 2784.990000014369, - 2789.990000014479, - 2794.990000014588, - 2799.990000014697, - 2804.990000014806, - 2809.990000014915, - 2814.9900000150237, - 2819.990000015133, - 2824.9900000152425, - 2829.990000015352, - 2834.9900000154607, - 2839.99000001557, - 2844.9900000156786, - 2849.990000015788, - 2854.9900000158973, - 2859.9900000160064, - 2864.9900000161156, - 2869.990000016225, - 2874.9900000163343, - 2879.990000016443, - 2884.990000016552, - 2889.990000016661, - 2894.9900000167704, - 2899.990000016879, - 2904.990000016989, - 2909.990000017098, - 2914.990000017207, - 2919.990000017316, - 2924.990000017425, - 2929.990000017535, - 2934.9900000176435, - 2939.990000017753, - 2944.990000017862, - 2949.9900000179714, - 2954.9900000180796, - 2959.990000018189, - 2964.9900000182984, - 2969.9900000184075, - 2974.9900000185166, - 2979.9900000186262, - 2984.990000018735, - 2989.990000018844, - 2994.990000018953, - 2999.9900000190623, - 3004.990000019172, - 3009.990000019281, - 3014.9900000193898, - 3019.990000019499, - 3024.990000019608, - 3029.9900000197167, - 3034.9900000198268, - 3039.9900000199355, - 3044.990000020045, - 3049.9900000201533, - 3054.990000020263, - 3059.9900000203716, - 3064.990000020481, - 3069.9900000205903, - 3074.9900000206994, - 3079.9900000208086, - 3084.9900000209173, - 3089.9900000210273, - 3094.990000021136, - 3099.990000021245, - 3104.9900000213543, - 3109.9900000214634, - 3114.990000021572, - 3119.9900000216817, - 3124.990000021791, - 3129.9900000219, - 3134.990000022009, - 3139.9900000221187, - 3144.990000022228, - 3149.9900000223365, - 3154.9900000224457, - 3159.990000022555, - 3164.9900000226644, - 3169.9900000227726, - 3174.990000022882, - 3179.9900000229914, - 3184.9900000231005, - 3189.990000023209, - 3194.990000023319, - 3199.990000023428, - 3204.990000023537, - 3209.990000023646, - 3214.9900000237553, - 3219.990000023865, - 3224.9900000239736, - 3229.990000024083, - 3234.990000024192, - 3239.990000024301, - 3244.9900000244106, - 3249.9900000245198, - 3254.9900000246284, - 3259.9900000247376, - 3264.9900000248467, - 3269.990000024956, - 3274.9900000250645, - 3279.990000025174, - 3284.9900000252833, - 3289.9900000253924, - 3294.9900000255016, - 3299.990000025611, - 3304.9900000257203, - 3309.990000025829, - 3314.990000025938, - 3319.9900000260473, - 3324.9900000261564, - 3329.990000026265, - 3334.990000026375, - 3339.990000026484, - 3344.990000026593, - 3349.990000026702, - 3354.990000026811, - 3359.990000026921, - 3364.9900000270286, - 3369.9900000271386, - 3374.990000027248, - 3379.9900000273574, - 3384.9900000274656, - 3389.990000027575, - 3394.9900000276843, - 3399.990000027793, - 3404.990000027902, - 3409.990000028012, - 3414.990000028121, - 3419.99000002823, - 3424.990000028339, - 3429.9900000284483, - 3434.990000028557, - 3439.9900000286666, - 3444.990000028776, - 3449.990000028885, - 3454.990000028994, - 3459.9900000291027, - 3464.9900000292128, - 3469.9900000293214, - 3474.9900000294306, - 3479.9900000295397, - 3484.990000029649, - 3489.9900000297584, - 3494.990000029867, - 3499.9900000299763, - 3504.990000030085, - 3509.9900000301946, - 3514.990000030304, - 3519.9900000304133, - 3524.990000030522, - 3529.990000030631, - 3534.99000003074, - 3539.990000030849, - 3544.990000030958, - 3549.990000031068, - 3554.990000031177, - 3559.990000031286, - 3564.990000031395, - 3569.9900000315038, - 3574.9900000316134, - 3579.9900000317225, - 3584.990000031832, - 3589.990000031941, - 3594.9900000320504, - 3599.9900000321586, - 3604.990000032268, - 3609.990000032377, - 3614.9900000324874, - 3619.9900000325956, - 3624.990000032705, - 3629.990000032814, - 3634.990000032923, - 3639.990000033032, - 3644.990000033141, - 3649.990000033251, - 3654.99000003336, - 3659.990000033469, - 3664.990000033578, - 3669.990000033687, - 3674.9900000337957, - 3679.990000033905, - 3684.9900000340144, - 3689.990000034124, - 3694.9900000342327, - 3699.990000034342, - 3704.9900000344514, - 3709.99000003456, - 3714.9900000346693, - 3719.990000034777, - 3724.9900000348875, - 3729.990000034997, - 3734.9900000351063, - 3739.990000035215, - 3744.990000035324, - 3749.990000035433, - 3754.9900000355424, - 3759.990000035652, - 3764.990000035761, - 3769.9900000358703, - 3774.990000035979, - 3779.990000036088, - 3784.9900000361968, - 3789.9900000363054, - 3794.990000036416, - 3799.990000036525, - 3804.990000036634, - 3809.9900000367434, - 3814.9900000368516, - 3819.990000036961, - 3824.9900000370703, - 3829.9900000371804, - 3834.9900000372886, - 3839.9900000373973, - 3844.990000037507, - 3849.990000037616, - 3854.990000037725, - 3859.9900000378334, - 3864.990000037944, - 3869.990000038053, - 3874.9900000381617, - 3879.990000038271, - 3884.9900000383795, - 3889.9900000384887, - 3894.9900000385987, - 3899.9900000387074, - 3904.990000038817, - 3909.9900000389257, - 3914.990000039035, - 3919.9900000391444, - 3924.990000039253, - 3929.9900000393613, - 3934.990000039472, - 3939.9900000395814, - 3944.990000039689, - 3949.9900000397993, - 3954.990000039908, - 3959.990000040017, - 3964.9900000401262, - 3969.990000040235, - 3974.990000040345, - 3979.9900000404537, - 3984.990000040563, - 3989.990000040672, - 3994.990000040781, - 3999.9900000408898, - 4004.9900000409993, - 4009.990000041109, - 4014.9900000412176, - 4019.9900000413268, - 4024.9900000414364, - 4029.9900000415446, - 4034.990000041654, - 4039.990000041763, - 4044.9900000418734, - 4049.990000041981, - 4054.9900000420903, - 4059.9900000422, - 4064.990000042309, - 4069.990000042418, - 4074.990000042527, - 4079.990000042637, - 4084.9900000427456, - 4089.990000042855, - 4094.990000042964, - 4099.990000043073, - 4104.990000043182, - 4109.990000043291, - 4114.9900000434, - 4119.990000043509, - 4124.990000043618, - 4129.9900000437265, - 4134.990000043837, - 4139.990000043946, - 4144.990000044055, - 4149.990000044164, - 4154.990000044273, - 4159.990000044381, - 4164.990000044491, - 4169.9900000446005, - 4174.99000004471, - 4179.990000044819, - 4184.990000044928, - 4189.990000045037, - 4194.990000045146, - 4199.990000045255, - 4204.990000045365, - 4209.9900000454745, - 4214.990000045583, - 4219.990000045692, - 4224.990000045801, - 4229.99000004591, - 4234.990000046019, - 4239.9900000461275, - 4244.990000046238, - 4249.990000046347, - 4254.990000046456, - 4259.990000046565, - 4264.990000046674, - 4269.990000046783, - 4274.990000046892, - 4279.990000047002, - 4284.990000047112, - 4289.990000047221, - 4294.990000047329, - 4299.990000047438, - 4304.990000047547, - 4309.990000047656, - 4314.9900000477655, - 4319.990000047875, - 4324.990000047984, - 4329.990000048093, - 4334.990000048202, - 4339.990000048311, - 4344.99000004842, - 4349.9900000485295, - 4354.990000048639, - 4359.990000048748, - 4364.990000048857, - 4369.990000048966, - 4374.990000049074, - 4379.990000049184, - 4384.9900000492935, - 4389.990000049403, - 4394.990000049512, - 4399.990000049621, - 4404.99000004973, - 4409.990000049839, - 4414.990000049948, - 4419.9900000500575, - 4424.9900000501675, - 4429.990000050276, - 4434.990000050385, - 4439.990000050494, - 4444.990000050603, - 4449.990000050712, - 4454.9900000508205, - 4459.990000050931, - 4464.99000005104, - 4469.990000051149, - 4474.990000051258, - 4479.990000051367, - 4484.990000051476, - 4489.990000051585, - 4494.990000051695, - 4499.990000051805, - 4504.990000051913, - 4509.990000052022, - 4514.990000052131, - 4519.99000005224, - 4524.990000052349, - 4529.990000052458, - 4534.990000052568, - 4539.990000052677, - 4544.990000052786, - 4549.990000052895, - 4554.990000053004, - 4559.990000053112, - 4564.990000053223, - 4569.990000053332, - 4574.990000053441, - 4579.99000005355, - 4584.990000053659, - 4589.990000053767, - 4594.990000053877, - 4599.9900000539865, - 4604.990000054096, - 4609.990000054205, - 4614.990000054314, - 4619.990000054423, - 4624.990000054532, - 4629.990000054641, - 4634.9900000547495, - 4639.9900000548605, - 4644.990000054969, - 4649.990000055078, - 4654.990000055187, - 4659.990000055296, - 4664.990000055405, - 4669.9900000555135, - 4674.990000055624, - 4679.990000055733, - 4684.990000055842, - 4689.990000055951, - 4694.99000005606, - 4699.990000056169, - 4704.990000056278, - 4709.9900000563875, - 4714.990000056498, - 4719.990000056606, - 4724.990000056715, - 4729.990000056824, - 4734.990000056933, - 4739.990000057042, - 4744.990000057152, - 4749.990000057261, - 4754.990000057371, - 4759.990000057479, - 4764.990000057588, - 4769.990000057697, - 4774.990000057805, - 4779.990000057916, - 4784.990000058025, - 4789.990000058134, - 4794.990000058243, - 4799.990000058352, - 4804.990000058461, - 4809.99000005857, - 4814.9900000586795, - 4819.990000058789, - 4824.990000058898, - 4829.990000059007, - 4834.990000059116, - 4839.990000059225, - 4844.990000059334, - 4849.9900000594425, - 4854.9900000595535, - 4859.990000059662, - 4864.990000059771, - 4869.99000005988, - 4874.990000059989, - 4879.990000060098, - 4884.9900000602065, - 4889.990000060317, - 4894.990000060426, - 4899.990000060535, - 4904.990000060644, - 4909.990000060753, - 4914.990000060862, - 4919.990000060971, - 4924.9900000610805, - 4929.99000006119, - 4934.990000061299, - 4939.990000061408, - 4944.990000061517, - 4949.990000061626, - 4954.990000061735, - 4959.990000061845, - 4964.990000061954, - 4969.990000062063, - 4974.990000062172, - 4979.990000062281, - 4984.99000006239, - 4989.990000062498, - 4994.990000062609, - 4999.990000062718, - 5004.990000062827, - 5009.990000062936, - 5014.990000063045, - 5019.990000063154, - 5024.990000063263, - 5029.9900000633725, - 5034.990000063482, - 5039.990000063591, - 5044.9900000637, - 5049.990000063809, - 5054.990000063918, - 5059.990000064027, - 5064.9900000641355, - 5069.9900000642465, - 5074.990000064355, - 5079.990000064464, - 5084.990000064573, - 5089.990000064682, - 5094.990000064791, - 5099.9900000648995, - 5104.9900000650105, - 5109.990000065119, - 5114.990000065228, - 5119.990000065337, - 5124.990000065446, - 5129.990000065555, - 5134.990000065664, - 5139.9900000657735, - 5144.990000065884, - 5149.990000065992, - 5154.990000066101, - 5159.99000006621, - 5164.990000066319, - 5169.990000066428, - 5174.990000066538, - 5179.990000066647, - 5184.990000066756, - 5189.990000066865, - 5194.990000066974, - 5199.990000067083, - 5204.990000067191, - 5209.990000067302, - 5214.990000067411, - 5219.99000006752, - 5224.990000067629, - 5229.990000067738, - 5234.990000067847, - 5239.990000067956, - 5244.9900000680655, - 5249.990000068175, - 5254.990000068285, - 5259.990000068393, - 5264.990000068502, - 5269.990000068611, - 5274.99000006872, - 5279.9900000688285, - 5284.9900000689395, - 5289.990000069048, - 5294.990000069157, - 5299.990000069266, - 5304.990000069375, - 5309.990000069484, - 5314.9900000695925, - 5319.990000069703, - 5324.990000069812, - 5329.990000069921, - 5334.99000007003, - 5339.990000070139, - 5344.990000070248, - 5349.990000070357, - 5354.990000070466, - 5359.990000070577, - 5364.990000070685, - 5369.990000070794, - 5374.990000070903, - 5379.990000071012, - 5384.990000071121, - 5389.990000071231, - 5394.99000007134, - 5399.990000071449, - 5404.990000071558, - 5409.990000071667, - 5414.990000071776, - 5419.990000071884, - 5424.9900000719945, - 5429.990000072104, - 5434.990000072213, - 5439.990000072322, - 5444.990000072431, - 5449.990000072539, - 5454.990000072649, - 5459.990000072758, - 5464.990000072868, - 5469.990000072978, - 5474.990000073086, - 5479.990000073195, - 5484.990000073304, - 5489.990000073413, - 5494.9900000735215, - 5499.990000073632, - 5504.990000073742, - 5509.99000007385, - 5514.990000073959, - 5519.990000074069, - 5524.990000074177, - 5529.9900000742855, - 5534.9900000743955, - 5539.990000074505, - 5544.990000074614, - 5549.990000074723, - 5554.990000074831, - 5559.990000074941, - 5564.99000007505, - 5569.9900000751595, - 5574.990000075269, - 5579.990000075379, - 5584.990000075487, - 5589.990000075596, - 5594.990000075705, - 5599.990000075814, - 5604.990000075924, - 5609.990000076033, - 5614.990000076143, - 5619.990000076251, - 5624.99000007636, - 5629.990000076468, - 5634.990000076578, - 5639.990000076688, - 5644.990000076797, - 5649.990000076906, - 5654.990000077016, - 5659.990000077124, - 5664.990000077232, - 5669.990000077342, - 5674.990000077451, - 5679.9900000775615, - 5684.990000077671, - 5689.99000007778, - 5694.990000077888, - 5699.990000077997, - 5704.990000078105, - 5709.990000078215, - 5714.9900000783255, - 5719.990000078434, - 5724.990000078543, - 5729.990000078652, - 5734.990000078761, - 5739.990000078871, - 5744.990000078979, - 5749.990000079089, - 5754.990000079198, - 5759.990000079307, - 5764.990000079417, - 5769.990000079525, - 5774.990000079634, - 5779.9900000797425, - 5784.990000079853, - 5789.990000079963, - 5794.990000080071, - 5799.990000080179, - 5804.990000080289, - 5809.990000080398, - 5814.990000080506, - 5819.9900000806165, - 5824.9900000807265, - 5829.990000080835, - 5834.990000080944, - 5839.990000081053, - 5844.990000081162, - 5849.99000008127, - 5854.9900000813805, - 5859.99000008149, - 5864.990000081599, - 5869.990000081708, - 5874.990000081816, - 5879.990000081926, - 5884.990000082035, - 5889.9900000821435, - 5894.990000082254, - 5899.990000082364, - 5904.990000082472, - 5909.990000082581, - 5914.99000008269, - 5919.990000082799, - 5924.9900000829075, - 5929.990000083018, - 5934.990000083128, - 5939.990000083236, - 5944.990000083345, - 5949.990000083455, - 5954.990000083563, - 5959.9900000836715, - 5964.9900000837815, - 5969.990000083892, - 5974.990000084, - 5979.990000084109, - 5984.990000084217, - 5989.990000084327, - 5994.990000084436, - 5999.9900000845455, - 6004.990000084655, - 6009.990000084765, - 6014.990000084873, - 6019.990000084982, - 6024.990000085091, - 6029.9900000852, - 6034.99000008531, - 6039.990000085419, - 6044.990000085529, - 6049.990000085637, - 6054.990000085746, - 6059.990000085854, - 6064.990000085964, - 6069.990000086073, - 6074.990000086183, - 6079.990000086292, - 6084.990000086402, - 6089.99000008651, - 6094.990000086618, - 6099.990000086728, - 6104.990000086837, - 6109.9900000869475, - 6114.990000087056, - 6119.990000087166, - 6124.990000087274, - 6129.990000087383, - 6134.990000087491, - 6139.990000087601, - 6144.990000087711, - 6149.99000008782, - 6154.990000087929, - 6159.990000088038, - 6164.990000088147, - 6169.990000088255, - 6174.990000088365, - 6179.9900000884745, - 6184.990000088584, - 6189.990000088693, - 6194.990000088803, - 6199.990000088911, - 6204.99000008902, - 6209.990000089128, - 6214.990000089239, - 6219.9900000893485, - 6224.990000089457, - 6229.990000089565, - 6234.990000089675, - 6239.990000089784, - 6244.990000089892, - 6249.9900000900025, - 6254.9900000901125, - 6259.990000090221, - 6264.99000009033, - 6269.990000090439, - 6274.990000090548, - 6279.990000090656, - 6284.990000090766, - 6289.9900000908765, - 6294.990000090985, - 6299.990000091094, - 6304.990000091202, - 6309.990000091312, - 6314.990000091421, - 6319.9900000915295, - 6324.99000009164, - 6329.99000009175, - 6334.990000091858, - 6339.990000091967, - 6344.990000092076, - 6349.990000092185, - 6354.9900000922935, - 6359.9900000924035, - 6364.990000092514, - 6369.990000092622, - 6374.990000092731, - 6379.990000092839, - 6384.990000092949, - 6389.9900000930575, - 6394.9900000931675, - 6399.990000093278, - 6404.990000093386, - 6409.990000093495, - 6414.990000093603, - 6419.990000093713, - 6424.990000093822, - 6429.9900000939315, - 6434.990000094041, - 6439.990000094151, - 6444.990000094259, - 6449.990000094368, - 6454.990000094477, - 6459.990000094586, - 6464.990000094696, - 6469.990000094805, - 6474.990000094915, - 6479.990000095023, - 6484.990000095132, - 6489.99000009524, - 6494.99000009535, - 6499.990000095459, - 6504.990000095569, - 6509.990000095678, - 6514.990000095788, - 6519.990000095896, - 6524.990000096004, - 6529.990000096114, - 6534.990000096223, - 6539.9900000963335, - 6544.990000096442, - 6549.990000096552, - 6554.99000009666, - 6559.990000096769, - 6564.990000096877, - 6569.990000096987, - 6574.990000097097, - 6579.990000097206, - 6584.990000097315, - 6589.990000097424, - 6594.990000097533, - 6599.990000097641, - 6604.990000097751, - 6609.990000097861, - 6614.99000009797, - 6619.990000098079, - 6624.990000098189, - 6629.990000098297, - 6634.990000098406, - 6639.990000098514, - 6644.990000098625, - 6649.9900000987345, - 6654.990000098843, - 6659.990000098951, - 6664.990000099061, - 6669.99000009917, - 6674.990000099278, - 6679.990000099388, - 6684.9900000994985, - 6689.990000099607, - 6694.990000099716, - 6699.990000099825, - 6704.990000099934, - 6709.990000100042, - 6714.990000100152, - 6719.9900001002625, - 6724.990000100371, - 6729.99000010048, - 6734.99000010059, - 6739.990000100698, - 6744.990000100807, - 6749.9900001009155, - 6754.9900001010255, - 6759.990000101136, - 6764.990000101244, - 6769.990000101353, - 6774.990000101462, - 6779.990000101571, - 6784.9900001016795, - 6789.9900001017895, - 6794.9900001019, - 6799.990000102008, - 6804.990000102117, - 6809.990000102227, - 6814.990000102335, - 6819.990000102443, - 6824.9900001025535, - 6829.9900001026635, - 6834.990000102772, - 6839.990000102881, - 6844.990000102989, - 6849.990000103099, - 6854.990000103208, - 6859.9900001033175, - 6864.990000103427, - 6869.990000103537, - 6874.990000103645, - 6879.990000103754, - 6884.990000103863, - 6889.990000103972, - 6894.9900001040805, - 6899.990000104191, - 6904.990000104301, - 6909.990000104409, - 6914.990000104518, - 6919.990000104626, - 6924.990000104736, - 6929.990000104845, - 6934.990000104955, - 6939.990000105064, - 6944.990000105174, - 6949.990000105282, - 6954.99000010539, - 6959.9900001055, - 6964.990000105609, - 6969.990000105719, - 6974.990000105828, - 6979.990000105938, - 6984.990000106046, - 6989.990000106155, - 6994.990000106263, - 6999.990000106373, - 7004.990000106482, - 7009.990000106592, - 7014.990000106701, - 7019.99000010681, - 7024.990000106919, - 7029.990000107027, - 7034.990000107137, - 7039.990000107247, - 7044.990000107356, - 7049.990000107465, - 7054.990000107575, - 7059.990000107683, - 7064.990000107792, - 7069.9900001079, - 7074.9900001080105, - 7079.9900001081205, - 7084.990000108229, - 7089.990000108337, - 7094.990000108447, - 7099.990000108556, - 7104.990000108664, - 7109.990000108774, - 7114.9900001088845, - 7119.990000108993, - 7124.990000109102, - 7129.990000109211, - 7134.99000010932, - 7139.990000109428, - 7144.990000109538, - 7149.9900001096485, - 7154.990000109757, - 7159.990000109866, - 7164.990000109976, - 7169.990000110084, - 7174.990000110193, - 7179.9900001103015, - 7184.990000110412, - 7189.990000110522, - 7194.99000011063, - 7199.990000110739, - 7204.990000110848, - 7209.990000110957, - 7214.9900001110655, - 7219.990000111175, - 7224.990000111286, - 7229.990000111394, - 7234.990000111503, - 7239.990000111613, - 7244.990000111721, - 7249.990000111829, - 7254.990000111939, - 7259.9900001120495, - 7264.990000112158, - 7269.990000112267, - 7274.990000112375, - 7279.990000112485, - 7284.990000112594, - 7289.990000112702, - 7294.990000112813, - 7299.990000112923, - 7304.990000113031, - 7309.990000113141, - 7314.990000113249, - 7319.990000113358, - 7324.9900001134665, - 7329.990000113577, - 7334.990000113687, - 7339.990000113795, - 7344.990000113904, - 7349.990000114012, - 7354.990000114122, - 7359.990000114231, - 7364.990000114341, - 7369.99000011445, - 7374.99000011456, - 7379.990000114668, - 7384.990000114776, - 7389.990000114886, - 7394.990000114995, - 7399.990000115104, - 7404.990000115214, - 7409.990000115324, - 7414.990000115432, - 7419.990000115541, - 7424.990000115649, - 7429.990000115759, - 7434.990000115869, - 7439.990000115978, - 7444.990000116087, - 7449.990000116196, - 7454.990000116305, - 7459.990000116413, - 7464.990000116523, - 7469.9900001166325, - 7474.990000116742, - 7479.990000116851, - 7484.990000116959, - 7489.990000117069, - 7494.990000117178, - 7499.990000117287, - 7504.990000117396, - 7509.9900001175065, - 7514.990000117615, - 7519.990000117725, - 7524.990000117833, - 7529.990000117942, - 7534.99000011805, - 7539.9900001181595, - 7544.9900001182705, - 7549.990000118379, - 7554.990000118488, - 7559.990000118597, - 7564.990000118706, - 7569.990000118814, - 7574.990000118924, - 7579.990000119034, - 7584.990000119143, - 7589.990000119252, - 7594.990000119362, - 7599.99000011947, - 7604.990000119579, - 7609.9900001196875, - 7614.9900001197975, - 7619.990000119908, - 7624.990000120016, - 7629.990000120125, - 7634.990000120234, - 7639.990000120343, - 7644.990000120451, - 7649.9900001205615, - 7654.9900001206715, - 7659.99000012078, - 7664.990000120889, - 7669.990000120999, - 7674.990000121107, - 7679.990000121215, - 7684.990000121325, - 7689.9900001214355, - 7694.990000121544, - 7699.990000121653, - 7704.990000121761, - 7709.990000121871, - 7714.99000012198, - 7719.9900001220885, - 7724.990000122199, - 7729.990000122309, - 7734.990000122417, - 7739.990000122526, - 7744.990000122635, - 7749.990000122744, - 7754.9900001228525, - 7759.990000122963, - 7764.990000123073, - 7769.990000123181, - 7774.990000123291, - 7779.990000123398, - 7784.990000123508, - 7789.990000123617, - 7794.990000123726, - 7799.990000123836, - 7804.990000123946, - 7809.990000124054, - 7814.990000124162, - 7819.990000124272, - 7824.990000124381, - 7829.99000012449, - 7834.9900001246, - 7839.99000012471, - 7844.990000124818, - 7849.990000124927, - 7854.990000125035, - 7859.990000125145, - 7864.990000125254, - 7869.990000125364, - 7874.990000125473, - 7879.990000125582, - 7884.990000125691, - 7889.990000125799, - 7894.990000125909, - 7899.9900001260185, - 7904.990000126128, - 7909.990000126237, - 7914.990000126347, - 7919.990000126455, - 7924.990000126564, - 7929.990000126673, - 7934.990000126782, - 7939.9900001268925, - 7944.990000127001, - 7949.990000127109, - 7954.990000127219, - 7959.990000127328, - 7964.990000127436, - 7969.990000127546, - 7974.9900001276565, - 7979.990000127765, - 7984.990000127874, - 7989.990000127983, - 7994.990000128092, - 7999.9900001282, - 8004.9900001283095, - 8009.9900001284195, - 8014.990000128529, - 8019.990000128638, - 8024.990000128748, - 8029.990000128856, - 8034.990000128965, - 8039.990000129073, - 8044.990000129182, - 8049.990000129294, - 8054.990000129402, - 8059.990000129511, - 8064.99000012962, - 8069.990000129729, - 8074.990000129837, - 8079.9900001299475, - 8084.9900001300575, - 8089.990000130166, - 8094.990000130275, - 8099.990000130385, - 8104.990000130493, - 8109.990000130601, - 8114.9900001307105, - 8119.9900001308215, - 8124.99000013093, - 8129.990000131039, - 8134.990000131147, - 8139.990000131257, - 8144.990000131366, - 8149.9900001314745, - 8154.990000131585, - 8159.990000131695, - 8164.990000131803, - 8169.990000131912, - 8174.990000132021, - 8179.99000013213, - 8184.9900001322385, - 8189.9900001323485, - 8194.990000132457, - 8199.990000132566, - 8204.990000132675, - 8209.990000132784, - 8214.990000132893, - 8219.990000133002, - 8224.990000133112, - 8229.99000013322, - 8234.99000013333, - 8239.990000133439, - 8244.990000133548, - 8249.990000133657, - 8254.990000133766, - 8259.990000133876, - 8264.990000133985, - 8269.990000134094, - 8274.990000134203, - 8279.990000134312, - 8284.990000134421, - 8289.99000013453, - 8294.990000134641, - 8299.990000134749, - 8304.990000134858, - 8309.990000134967, - 8314.990000135076, - 8319.990000135185, - 8324.990000135294, - 8329.990000135404, - 8334.990000135513, - 8339.990000135622, - 8344.990000135731, - 8349.990000135842, - 8354.99000013595, - 8359.990000136058, - 8364.990000136168, - 8369.990000136277, - 8374.990000136386, - 8379.990000136495, - 8384.990000136604, - 8389.990000136713, - 8394.990000136822, - 8399.990000136931, - 8404.99000013704, - 8409.99000013715, - 8414.990000137259, - 8419.990000137368, - 8424.990000137477, - 8429.990000137586, - 8434.990000137695, - 8439.990000137805, - 8444.990000137914, - 8449.990000138023, - 8454.990000138132, - 8459.990000138241, - 8464.99000013835, - 8469.99000013846, - 8474.990000138569, - 8479.990000138678, - 8484.990000138787, - 8489.990000138896, - 8494.990000139005, - 8499.990000139114, - 8504.990000139222, - 8509.990000139334, - 8514.990000139442, - 8519.990000139549, - 8524.99000013966, - 8529.990000139771, - 8534.990000139878, - 8539.990000139987, - 8544.990000140097, - 8549.990000140206, - 8554.990000140315, - 8559.990000140424, - 8564.990000140533, - 8569.990000140642, - 8574.990000140751, - 8579.990000140859, - 8584.99000014097, - 8589.990000141079, - 8594.990000141188, - 8599.990000141297, - 8604.990000141406, - 8609.990000141515, - 8614.990000141623, - 8619.990000141734, - 8624.990000141843, - 8629.990000141952, - 8634.990000142061, - 8639.99000014217, - 8644.990000142281, - 8649.990000142388, - 8654.990000142498, - 8659.990000142607, - 8664.990000142716, - 8669.990000142825, - 8674.990000142934, - 8679.990000143043, - 8684.990000143152, - 8689.990000143262, - 8694.99000014337, - 8699.99000014348, - 8704.990000143589, - 8709.990000143698, - 8714.990000143807, - 8719.990000143916, - 8724.990000144026, - 8729.990000144135, - 8734.990000144244, - 8739.990000144353, - 8744.990000144462, - 8749.990000144571, - 8754.99000014468, - 8759.99000014479, - 8764.990000144899, - 8769.990000145008, - 8774.990000145117, - 8779.990000145226, - 8784.990000145335, - 8789.990000145444, - 8794.990000145553, - 8799.990000145663, - 8804.990000145772, - 8809.990000145881, - 8814.990000145992, - 8819.9900001461, - 8824.990000146208, - 8829.990000146317, - 8834.990000146427, - 8839.990000146536, - 8844.990000146645, - 8849.990000146754, - 8854.990000146863, - 8859.990000146972, - 8864.990000147081, - 8869.99000014719, - 8874.9900001473, - 8879.990000147409, - 8884.990000147518, - 8889.990000147627, - 8894.990000147736, - 8899.990000147845, - 8904.990000147955, - 8909.990000148064, - 8914.990000148173, - 8919.990000148282, - 8924.990000148391, - 8929.9900001485, - 8934.99000014861, - 8939.99000014872, - 8944.990000148828, - 8949.990000148937, - 8954.990000149046, - 8959.990000149155, - 8964.990000149264, - 8969.990000149373, - 8974.990000149483, - 8979.990000149592, - 8984.990000149699, - 8989.99000014981, - 8994.990000149919, - 8999.990000150028, - 9004.990000150137, - 9009.990000150246, - 9014.990000150356, - 9019.990000150465, - 9024.990000150574, - 9029.990000150683, - 9034.990000150792, - 9039.9900001509, - 9044.990000151009, - 9049.990000151121, - 9054.990000151229, - 9059.990000151338, - 9064.990000151447, - 9069.990000151556, - 9074.990000151663, - 9079.990000151774, - 9084.990000151884, - 9089.990000151993, - 9094.990000152102, - 9099.990000152213, - 9104.99000015232, - 9109.99000015243, - 9114.990000152538, - 9119.990000152648, - 9124.990000152757, - 9129.990000152866, - 9134.990000152977, - 9139.990000153084, - 9144.990000153191, - 9149.990000153302, - 9154.990000153412, - 9159.99000015352, - 9164.99000015363, - 9169.99000015374, - 9174.990000153848, - 9179.990000153955, - 9184.990000154066, - 9189.990000154176, - 9194.990000154283, - 9199.990000154394, - 9204.990000154505, - 9209.990000154612, - 9214.990000154721, - 9219.990000154829, - 9224.99000015494, - 9229.990000155047, - 9234.990000155158, - 9239.990000155269, - 9244.990000155376, - 9249.990000155483, - 9254.990000155594, - 9259.990000155703, - 9264.990000155813, - 9269.990000155922, - 9274.99000015603, - 9279.99000015614, - 9284.99000015625, - 9289.990000156358, - 9294.99000015647, - 9299.990000156577, - 9304.990000156686, - 9309.990000156795, - 9314.990000156904, - 9319.990000157011, - 9324.990000157122, - 9329.990000157231, - 9334.99000015734, - 9339.99000015745, - 9344.99000015756, - 9349.990000157668, - 9354.990000157775, - 9359.990000157886, - 9364.990000157995, - 9369.990000158105, - 9374.990000158214, - 9379.990000158325, - 9384.990000158432, - 9389.99000015854, - 9394.99000015865, - 9399.99000015876, - 9404.990000158868, - 9409.990000158978, - 9414.990000159089, - 9419.990000159196, - 9424.990000159305, - 9429.990000159414, - 9434.990000159523, - 9439.990000159632, - 9444.990000159742, - 9449.99000015985, - 9454.99000015996, - 9459.990000160069, - 9464.990000160178, - 9469.990000160287, - 9474.990000160395, - 9479.990000160507, - 9484.990000160617, - 9489.990000160724, - 9494.990000160833, - 9499.990000160942, - 9504.990000161053, - 9509.99000016116, - 9514.990000161271, - 9519.990000161379, - 9524.990000161488, - 9529.990000161595, - 9534.990000161706, - 9539.990000161817, - 9544.990000161924, - 9549.990000162034, - 9554.990000162143, - 9559.990000162252, - 9564.99000016236, - 9569.99000016247, - 9574.99000016258, - 9579.990000162688, - 9584.990000162798, - 9589.990000162908, - 9594.990000163016, - 9599.990000163123, - 9604.990000163234, - 9609.990000163343, - 9614.990000163452, - 9619.99000016356, - 9624.99000016367, - 9629.99000016378, - 9634.990000163887, - 9639.990000163998, - 9644.990000164107, - 9649.990000164216, - 9654.990000164324, - 9659.990000164436, - 9664.990000164544, - 9669.990000164653, - 9674.990000164762, - 9679.990000164871, - 9684.990000164978, - 9689.99000016509, - 9694.9900001652, - 9699.990000165308, - 9704.990000165417, - 9709.990000165526, - 9714.990000165635, - 9719.990000165744, - 9724.990000165852, - 9729.990000165964, - 9734.990000166072, - 9739.990000166179, - 9744.99000016629, - 9749.990000166401, - 9754.990000166508, - 9759.990000166616, - 9764.990000166728, - 9769.990000166836, - 9774.990000166945, - 9779.990000167054, - 9784.990000167165, - 9789.990000167272, - 9794.99000016738, - 9799.99000016749, - 9804.9900001676, - 9809.990000167707, - 9814.990000167818, - 9819.990000167929, - 9824.990000168036, - 9829.990000168145, - 9834.990000168254, - 9839.990000168364, - 9844.990000168471, - 9849.990000168582, - 9854.990000168691, - 9859.9900001688, - 9864.99000016891, - 9869.990000169018, - 9874.990000169128, - 9879.990000169237, - 9884.990000169346, - 9889.990000169455, - 9894.990000169564, - 9899.990000169671, - 9904.99000016978, - 9909.990000169893, - 9914.99000017, - 9919.99000017011, - 9924.990000170219, - 9929.990000170328, - 9934.990000170435, - 9939.990000170546, - 9944.990000170656, - 9949.990000170765, - 9954.990000170874, - 9959.990000170985, - 9964.990000171092, - 9969.9900001712, - 9974.99000017131, - 9979.990000171421, - 9984.990000171529, - 9989.990000171638, - 9994.990000171749, - 9999.990000171856, - 10004.990000171963, - 10009.990000172074, - 10014.990000172183, - 10019.990000172293, - 10024.990000172402, - 10029.990000172513, - 10034.99000017262, - 10039.99000017273, - 10044.990000172838, - 10049.990000172947, - 10054.990000173055, - 10059.990000173166, - 10064.990000173277, - 10069.990000173384, - 10074.990000173493, - 10079.990000173602, - 10084.990000173711, - 10089.99000017382, - 10094.99000017393, - 10099.99000017404, - 10104.990000174148, - 10109.990000174257, - 10114.990000174366, - 10119.990000174475, - 10124.990000174585, - 10129.990000174694, - 10134.990000174803, - 10139.990000174912, - 10144.99000017502, - 10149.99000017513, - 10154.990000175241, - 10159.990000175349, - 10164.990000175458, - 10169.990000175567, - 10174.990000175676, - 10179.990000175783, - 10184.990000175894, - 10189.990000176003, - 10194.990000176113, - 10199.990000176222, - 10204.990000176329, - 10209.99000017644, - 10214.990000176547, - 10219.990000176658, - 10224.990000176767, - 10229.990000176876, - 10234.990000176986, - 10239.990000177097, - 10244.990000177204, - 10249.990000177311, - 10254.990000177422, - 10259.990000177531, - 10264.99000017764, - 10269.99000017775, - 10274.99000017786, - 10279.990000177968, - 10284.990000178077, - 10289.990000178186, - 10294.990000178295, - 10299.990000178404, - 10304.990000178514, - 10309.990000178625, - 10314.990000178732, - 10319.990000178841, - 10324.99000017895, - 10329.99000017906, - 10334.990000179167, - 10339.99000017928, - 10344.990000179389, - 10349.990000179496, - 10354.990000179605, - 10359.990000179714, - 10364.990000179825, - 10369.990000179932, - 10374.990000180042, - 10379.99000018015, - 10384.990000180258, - 10389.990000180367, - 10394.990000180478, - 10399.990000180589, - 10404.990000180696, - 10409.990000180806, - 10414.990000180915, - 10419.990000181024, - 10424.990000181131, - 10429.990000181242, - 10434.990000181353, - 10439.99000018146, - 10444.99000018157, - 10449.99000018168, - 10454.990000181788, - 10459.990000181895, - 10464.990000182006, - 10469.990000182115, - 10474.990000182224, - 10479.990000182332, - 10484.990000182444, - 10489.990000182552, - 10494.990000182659, - 10499.99000018277, - 10504.99000018288, - 10509.990000182988, - 10514.990000183096, - 10519.990000183208, - 10524.990000183316, - 10529.990000183425, - 10534.990000183534, - 10539.990000183643, - 10544.990000183752, - 10549.99000018386, - 10554.99000018397, - 10559.99000018408, - 10564.990000184189, - 10569.990000184298, - 10574.990000184407, - 10579.990000184516, - 10584.990000184624, - 10589.990000184736, - 10594.990000184844, - 10599.990000184953, - 10604.990000185062, - 10609.990000185173, - 10614.99000018528, - 10619.990000185391, - 10624.9900001855, - 10629.990000185608, - 10634.990000185717, - 10639.990000185826, - 10644.990000185937, - 10649.990000186044, - 10654.990000186152, - 10659.990000186262, - 10664.990000186372, - 10669.990000186479, - 10674.99000018659, - 10679.9900001867, - 10684.990000186808, - 10689.990000186917, - 10694.990000187026, - 10699.990000187136, - 10704.990000187243, - 10709.990000187354, - 10714.990000187465, - 10719.990000187572, - 10724.99000018768, - 10729.99000018779, - 10734.9900001879, - 10739.990000188009, - 10744.990000188118, - 10749.990000188227, - 10754.990000188336, - 10759.990000188443, - 10764.990000188553, - 10769.990000188665, - 10774.990000188773, - 10779.990000188882, - 10784.990000188991, - 10789.9900001891, - 10794.99000018921, - 10799.990000189318, - 10804.990000189428, - 10809.990000189537, - 10814.990000189646, - 10819.990000189757, - 10824.990000189864, - 10829.990000189971, - 10834.990000190082, - 10839.990000190191, - 10844.9900001903, - 10849.99000019041, - 10854.99000019052, - 10859.990000190628, - 10864.990000190735, - 10869.990000190846, - 10874.990000190955, - 10879.990000191065, - 10884.990000191174, - 10889.990000191285, - 10894.990000191392, - 10899.9900001915, - 10904.990000191608, - 10909.99000019172, - 10914.990000191827, - 10919.990000191938, - 10924.990000192049, - 10929.990000192156, - 10934.990000192265, - 10939.990000192374, - 10944.990000192483, - 10949.99000019259, - 10954.990000192702, - 10959.990000192809, - 10964.99000019292, - 10969.99000019303, - 10974.990000193138, - 10979.990000193247, - 10984.990000193357, - 10989.990000193466, - 10994.990000193575, - 10999.990000193684, - 11004.990000193791, - 11009.990000193902, - 11014.990000194011, - 11019.99000019412, - 11024.990000194228, - 11029.99000019434, - 11034.990000194448, - 11039.990000194555, - 11044.990000194666, - 11049.990000194775, - 11054.990000194883, - 11059.990000194995, - 11064.990000195105, - 11069.990000195212, - 11074.99000019532, - 11079.99000019543, - 11084.99000019554, - 11089.990000195647, - 11094.990000195758, - 11099.990000195869, - 11104.990000195976, - 11109.990000196083, - 11114.990000196194, - 11119.990000196303, - 11124.99000019641, - 11129.990000196522, - 11134.99000019663, - 11139.99000019674, - 11144.990000196849, - 11149.990000196958, - 11154.990000197067, - 11159.990000197175, - 11164.990000197286, - 11169.990000197395, - 11174.990000197506, - 11179.990000197613, - 11184.990000197722, - 11189.990000197831, - 11194.990000197939, - 11199.99000019805, - 11204.990000198159, - 11209.99000019827, - 11214.990000198377, - 11219.990000198486, - 11224.990000198597, - 11229.990000198704, - 11234.990000198814, - 11239.990000198923, - 11244.990000199034, - 11249.990000199141, - 11254.99000019925, - 11259.990000199361, - 11264.990000199468, - 11269.990000199576, - 11274.990000199687, - 11279.990000199796, - 11284.990000199905, - 11289.990000200014, - 11294.990000200125, - 11299.990000200232, - 11304.99000020034, - 11309.990000200449, - 11314.99000020056, - 11319.990000200669, - 11324.990000200778, - 11329.990000200889, - 11334.990000200996, - 11339.990000201104, - 11344.990000201216, - 11349.990000201324, - 11354.990000201433, - 11359.990000201544, - 11364.990000201653, - 11369.99000020176, - 11374.99000020187, - 11379.99000020198, - 11384.990000202088, - 11389.990000202195, - 11394.990000202308, - 11399.990000202417, - 11404.990000202524, - 11409.990000202632, - 11414.990000202744, - 11419.990000202852, - 11424.990000202959, - 11429.990000203072, - 11434.99000020318, - 11439.990000203288, - 11444.990000203396, - 11449.990000203506, - 11454.990000203616, - 11459.990000203723, - 11464.990000203834, - 11469.990000203943, - 11474.990000204052, - 11479.99000020416, - 11484.99000020427, - 11489.99000020438, - 11494.990000204487, - 11499.990000204598, - 11504.990000204707, - 11509.990000204816, - 11514.990000204923, - 11519.990000205034, - 11524.990000205144, - 11529.99000020525, - 11534.990000205362, - 11539.990000205471, - 11544.990000205578, - 11549.990000205691, - 11554.990000205798, - 11559.990000205908, - 11564.990000206015, - 11569.990000206126, - 11574.990000206235, - 11579.990000206346, - 11584.990000206453, - 11589.990000206562, - 11594.990000206672, - 11599.99000020678, - 11604.99000020689, - 11609.990000206999, - 11614.990000207106, - 11619.990000207217, - 11624.990000207326, - 11629.990000207437, - 11634.990000207545, - 11639.990000207654, - 11644.990000207763, - 11649.99000020787, - 11654.990000207981, - 11659.99000020809, - 11664.990000208201, - 11669.990000208309, - 11674.990000208418, - 11679.990000208529, - 11684.990000208636, - 11689.990000208745, - 11694.990000208854, - 11699.990000208965, - 11704.990000209073, - 11709.990000209182, - 11714.990000209289, - 11719.9900002094, - 11724.99000020951, - 11729.990000209618, - 11734.99000020973, - 11739.990000209837, - 11744.990000209946, - 11749.990000210057, - 11754.990000210164, - 11759.990000210271, - 11764.99000021038, - 11769.990000210493, - 11774.9900002106, - 11779.99000021071, - 11784.99000021082, - 11789.990000210928, - 11794.990000211035, - 11799.990000211144, - 11804.990000211255, - 11809.990000211365, - 11814.990000211475, - 11819.990000211585, - 11824.990000211692, - 11829.9900002118, - 11834.990000211908, - 11839.990000212021, - 11844.990000212129, - 11849.99000021224, - 11854.990000212349, - 11859.990000212456, - 11864.990000212563, - 11869.990000212674, - 11874.990000212783, - 11879.990000212892, - 11884.990000213003, - 11889.99000021311, - 11894.99000021322, - 11899.990000213327, - 11904.990000213438, - 11909.990000213547, - 11914.990000213655, - 11919.990000213767, - 11924.990000213877, - 11929.990000213984, - 11934.990000214091, - 11939.990000214202, - 11944.990000214311, - 11949.990000214422, - 11954.99000021453, - 11959.99000021464, - 11964.990000214748, - 11969.990000214855, - 11974.990000214966, - 11979.990000215075, - 11984.990000215183, - 11989.990000215294, - 11994.990000215403, - 11999.990000215512, - 12004.990000215621, - 12009.99000021573, - 12014.99000021584, - 12019.990000215947, - 12024.990000216058, - 12029.990000216167, - 12034.990000216278, - 12039.990000216385, - 12044.990000216494, - 12049.990000216603, - 12054.99000021671, - 12059.99000021682, - 12064.990000216929, - 12069.990000217042, - 12074.990000217149, - 12079.990000217258, - 12084.990000217369, - 12089.990000217476, - 12094.990000217584, - 12099.990000217695, - 12104.990000217806, - 12109.990000217913, - 12114.990000218022, - 12119.990000218133, - 12124.99000021824, - 12129.99000021835, - 12134.990000218459, - 12139.990000218568, - 12144.990000218677, - 12149.990000218786, - 12154.990000218897, - 12159.990000219004, - 12164.990000219112, - 12169.990000219224, - 12174.990000219332, - 12179.99000021944, - 12184.99000021955, - 12189.990000219657, - 12194.990000219768, - 12199.990000219876, - 12204.990000219988, - 12209.990000220096, - 12214.990000220205, - 12219.990000220316, - 12224.990000220425, - 12229.990000220532, - 12234.99000022064, - 12239.990000220749, - 12244.99000022086, - 12249.990000220967, - 12254.99000022108, - 12259.990000221189, - 12264.990000221296, - 12269.990000221404, - 12274.990000221514, - 12279.990000221624, - 12284.990000221731, - 12289.99000022184, - 12294.990000221953, - 12299.99000022206, - 12304.990000222171, - 12309.990000222278, - 12314.990000222388, - 12319.990000222495, - 12324.990000222606, - 12329.990000222715, - 12334.990000222824, - 12339.990000222931, - 12344.990000223042, - 12349.990000223152, - 12354.990000223259, - 12359.99000022337, - 12364.990000223479, - 12369.990000223588, - 12374.990000223695, - 12379.990000223806, - 12384.990000223916, - 12389.990000224023, - 12394.990000224134, - 12399.990000224243, - 12404.990000224354, - 12409.990000224461, - 12414.99000022457, - 12419.99000022468, - 12424.990000224787, - 12429.990000224898, - 12434.990000225007, - 12439.990000225118, - 12444.990000225225, - 12449.990000225334, - 12454.990000225444, - 12459.990000225553, - 12464.990000225662, - 12469.990000225771, - 12474.990000225878, - 12479.990000225991, - 12484.990000226098, - 12489.99000022621, - 12494.990000226317, - 12499.990000226426, - 12504.990000226535, - 12509.990000226642, - 12514.990000226753, - 12519.990000226862, - 12524.990000226973, - 12529.99000022708, - 12534.99000022719, - 12539.9900002273, - 12544.990000227408, - 12549.990000227517, - 12554.990000227626, - 12559.990000227737, - 12564.990000227845, - 12569.990000227954, - 12574.990000228065, - 12579.990000228172, - 12584.99000022828, - 12589.99000022839, - 12594.990000228501, - 12599.990000228609, - 12604.990000228718, - 12609.990000228829, - 12614.990000228936, - 12619.990000229043, - 12624.990000229152, - 12629.990000229265, - 12634.990000229373, - 12639.990000229482, - 12644.990000229589, - 12649.9900002297, - 12654.990000229807, - 12659.990000229916, - 12664.990000230027, - 12669.990000230137, - 12674.990000230247, - 12679.990000230357, - 12684.990000230464, - 12689.990000230571, - 12694.99000023068, - 12699.990000230791, - 12704.9900002309, - 12709.990000231008, - 12714.99000023112, - 12719.990000231228, - 12724.990000231335, - 12729.990000231446, - 12734.990000231555, - 12739.990000231664, - 12744.990000231775, - 12749.990000231885, - 12754.990000231992, - 12759.9900002321, - 12764.99000023221, - 12769.99000023232, - 12774.990000232428, - 12779.99000023254, - 12784.990000232649, - 12789.990000232756, - 12794.990000232863, - 12799.990000232974, - 12804.990000233083, - 12809.99000023319, - 12814.990000233302, - 12819.990000233409, - 12824.99000023352, - 12829.990000233627, - 12834.990000233738, - 12839.990000233847, - 12844.990000233955, - 12849.990000234066, - 12854.990000234175, - 12859.990000234284, - 12864.990000234393, - 12869.990000234502, - 12874.990000234611, - 12879.990000234719, - 12884.99000023483, - 12889.990000234939, - 12894.99000023505, - 12899.990000235157, - 12904.990000235266, - 12909.990000235375, - 12914.990000235483, - 12919.990000235592, - 12924.990000235703, - 12929.990000235814, - 12934.99000023592, - 12939.99000023603, - 12944.990000236141, - 12949.990000236248, - 12954.990000236356, - 12959.990000236467, - 12964.990000236578, - 12969.990000236685, - 12974.990000236794, - 12979.990000236905, - 12984.990000237012, - 12989.99000023712, - 12994.990000237229, - 12999.990000237342, - 13004.990000237449, - 13009.990000237558, - 13014.990000237669, - 13019.990000237776, - 13024.990000237884, - 13029.990000237996, - 13034.990000238104, - 13039.990000238213, - 13044.990000238322, - 13049.990000238433, - 13054.99000023854, - 13059.99000023865, - 13064.99000023876, - 13069.990000238868, - 13074.990000238977, - 13079.990000239088, - 13084.990000239197, - 13089.990000239304, - 13094.990000239412, - 13099.99000023952, - 13104.990000239632, - 13109.99000023974, - 13114.990000239852, - 13119.99000023996, - 13124.990000240068, - 13129.990000240176, - 13134.990000240286, - 13139.990000240396, - 13144.990000240503, - 13149.990000240612, - 13154.990000240725, - 13159.990000240832, - 13164.99000024094, - 13169.99000024105, - 13174.99000024116, - 13179.990000241267, - 13184.990000241378, - 13189.990000241487, - 13194.990000241596, - 13199.990000241703, - 13204.990000241814, - 13209.990000241924, - 13214.99000024203, - 13219.990000242142, - 13224.990000242251, - 13229.990000242358, - 13234.990000242471, - 13239.990000242578, - 13244.990000242688, - 13249.990000242795, - 13254.990000242906, - 13259.990000243015, - 13264.990000243126, - 13269.990000243233, - 13274.990000243342, - 13279.990000243452, - 13284.990000243559, - 13289.99000024367, - 13294.990000243779, - 13299.99000024389, - 13304.990000243997, - 13309.990000244106, - 13314.990000244215, - 13319.990000244325, - 13324.990000244434, - 13329.990000244543, - 13334.99000024465, - 13339.990000244761, - 13344.99000024487, - 13349.990000244981, - 13354.990000245089, - 13359.990000245198, - 13364.990000245307, - 13369.990000245414, - 13374.990000245525, - 13379.990000245634, - 13384.990000245745, - 13389.990000245853, - 13394.990000245962, - 13399.990000246069, - 13404.99000024618, - 13409.990000246291, - 13414.990000246398, - 13419.99000024651, - 13424.990000246617, - 13429.990000246726, - 13434.990000246837, - 13439.990000246944, - 13444.990000247051, - 13449.990000247162, - 13454.990000247273, - 13459.99000024738, - 13464.99000024749, - 13469.9900002476, - 13474.990000247708, - 13479.990000247815, - 13484.990000247924, - 13489.990000248037, - 13494.990000248144, - 13499.990000248254, - 13504.990000248365, - 13509.990000248472, - 13514.99000024858, - 13519.990000248692, - 13524.9900002488, - 13529.990000248908, - 13534.99000024902, - 13539.990000249129, - 13544.990000249236, - 13549.990000249343, - 13554.990000249452, - 13559.990000249563, - 13564.990000249672, - 13569.990000249783, - 13574.99000024989, - 13579.99000025, - 13584.990000250107, - 13589.990000250218, - 13594.990000250327, - 13599.990000250436, - 13604.990000250547, - 13609.990000250657, - 13614.990000250764, - 13619.990000250871, - 13624.990000250982, - 13629.990000251091, - 13634.9900002512, - 13639.990000251308, - 13644.99000025142, - 13649.990000251528, - 13654.990000251635, - 13659.990000251746, - 13664.990000251855, - 13669.990000251963, - 13674.990000252075, - 13679.990000252184, - 13684.990000252292, - 13689.9900002524, - 13694.99000025251, - 13699.99000025262, - 13704.990000252727, - 13709.990000252837, - 13714.990000252948, - 13719.990000253056, - 13724.990000253165, - 13729.990000253274, - 13734.990000253383, - 13739.99000025349, - 13744.990000253601, - 13749.990000253709, - 13754.990000253822, - 13759.990000253929, - 13764.990000254038, - 13769.990000254147, - 13774.990000254254, - 13779.990000254364, - 13784.990000254475, - 13789.990000254586, - 13794.990000254693, - 13799.990000254802, - 13804.990000254913, - 13809.99000025502, - 13814.99000025513, - 13819.990000255239, - 13824.99000025535, - 13829.990000255457, - 13834.990000255566, - 13839.990000255677, - 13844.990000255784, - 13849.990000255892, - 13854.990000256003, - 13859.990000256112, - 13864.99000025622, - 13869.99000025633, - 13874.99000025644, - 13879.990000256548, - 13884.990000256656, - 13889.990000256768, - 13894.990000256876, - 13899.990000256985, - 13904.990000257094, - 13909.990000257205, - 13914.990000257312, - 13919.99000025742, - 13924.990000257529, - 13929.990000257641, - 13934.990000257749, - 13939.99000025786, - 13944.990000257969, - 13949.990000258076, - 13954.990000258183, - 13959.990000258293, - 13964.990000258404, - 13969.990000258513, - 13974.990000258624, - 13979.990000258733, - 13984.99000025884, - 13989.99000025895, - 13994.990000259058, - 13999.990000259168, - 14004.990000259275, - 14009.990000259388, - 14014.990000259497, - 14019.990000259604, - 14024.990000259711, - 14029.990000259822, - 14034.990000259932, - 14039.99000026004, - 14044.99000026015, - 14049.990000260259, - 14054.990000260368, - 14059.990000260475, - 14064.990000260586, - 14069.990000260696, - 14074.990000260803, - 14079.990000260914, - 14084.990000261023, - 14089.990000261132, - 14094.99000026124, - 14099.99000026135, - 14104.99000026146, - 14109.990000261567, - 14114.990000261678, - 14119.990000261787, - 14124.990000261898, - 14129.990000262005, - 14134.990000262114, - 14139.990000262223, - 14144.99000026233, - 14149.990000262442, - 14154.990000262549, - 14159.990000262658, - 14164.99000026277, - 14169.990000262878, - 14174.990000262987, - 14179.990000263097, - 14184.990000263206, - 14189.990000263315, - 14194.990000263422, - 14199.990000263533, - 14204.990000263642, - 14209.990000263753, - 14214.99000026386, - 14219.99000026397, - 14224.990000264079, - 14229.990000264186, - 14234.990000264297, - 14239.990000264406, - 14244.990000264517, - 14249.990000264625, - 14254.990000264734, - 14259.990000264845, - 14264.990000264952, - 14269.990000265061, - 14274.990000265168, - 14279.990000265281, - 14284.990000265389, - 14289.990000265498, - 14294.990000265609, - 14299.990000265716, - 14304.990000265825, - 14309.990000265934, - 14314.990000266045, - 14319.990000266152, - 14324.990000266262, - 14329.990000266369, - 14334.990000266482, - 14339.990000266587, - 14344.9900002667, - 14349.99000026681, - 14354.990000266916, - 14359.990000267026, - 14364.990000267137, - 14369.990000267244, - 14374.990000267351, - 14379.99000026746, - 14384.990000267571, - 14389.99000026768, - 14394.990000267791, - 14399.9900002679, - 14404.990000268008, - 14409.990000268115, - 14414.990000268224, - 14419.990000268335, - 14424.990000268444, - 14429.990000268555, - 14434.990000268665, - 14439.990000268772, - 14444.99000026888, - 14449.990000268992, - 14454.9900002691, - 14459.990000269208, - 14464.99000026932, - 14469.990000269428, - 14474.990000269536, - 14479.990000269643, - 14484.990000269754, - 14489.990000269863, - 14494.990000269972, - 14499.990000270083, - 14504.99000027019, - 14509.9900002703, - 14514.990000270407, - 14519.990000270518, - 14524.990000270627, - 14529.990000270735, - 14534.990000270845, - 14539.990000270956, - 14544.990000271064, - 14549.990000271171, - 14554.990000271282, - 14559.990000271391, - 14564.990000271499, - 14569.99000027161, - 14574.99000027172, - 14579.990000271828, - 14584.990000271937, - 14589.990000272046, - 14594.990000272155, - 14599.990000272262, - 14604.990000272373, - 14609.990000272483, - 14614.990000272594, - 14619.9900002727, - 14624.99000027281, - 14629.99000027292, - 14634.990000273026, - 14639.990000273137, - 14644.990000273247, - 14649.990000273358, - 14654.990000273465, - 14659.990000273574, - 14664.990000273685, - 14669.990000273792, - 14674.9900002739, - 14679.990000274009, - 14684.990000274118, - 14689.990000274229, - 14694.990000274338, - 14699.990000274449, - 14704.990000274556, - 14709.990000274664, - 14714.990000274775, - 14719.990000274884, - 14724.990000274993, - 14729.990000275102, - 14734.990000275213, - 14739.99000027532, - 14744.990000275433, - 14749.990000275537, - 14754.990000275648, - 14759.990000275757, - 14764.990000275866, - 14769.990000275977, - 14774.990000276084, - 14779.990000276191, - 14784.9900002763, - 14789.990000276412, - 14794.990000276519, - 14799.990000276632, - 14804.99000027674, - 14809.990000276848, - 14814.990000276955, - 14819.990000277065, - 14824.990000277176, - 14829.990000277285, - 14834.990000277396, - 14839.990000277505, - 14844.990000277612, - 14849.99000027772, - 14854.990000277832, - 14859.99000027794, - 14864.990000278047, - 14869.99000027816, - 14874.990000278269, - 14879.990000278376, - 14884.990000278483, - 14889.990000278594, - 14894.990000278704, - 14899.99000027881, - 14904.990000278922, - 14909.990000279033, - 14914.99000027914, - 14919.990000279251, - 14924.990000279358, - 14929.990000279467, - 14934.990000279575, - 14939.990000279686, - 14944.990000279795, - 14949.990000279904, - 14954.990000280011, - 14959.990000280122, - 14964.990000280231, - 14969.990000280342, - 14974.99000028045, - 14979.990000280559, - 14984.99000028067, - 14989.990000280777, - 14994.990000280886, - 14999.990000280995, - 15004.990000281103, - 15009.990000281214, - 15014.990000281323, - 15019.990000281434, - 15024.990000281541, - 15029.99000028165, - 15034.99000028176, - 15039.990000281869, - 15044.990000281978, - 15049.990000282087, - 15054.990000282194, - 15059.990000282305, - 15064.990000282414, - 15069.990000282525, - 15074.990000282633, - 15079.990000282742, - 15084.990000282849, - 15089.990000282958, - 15094.99000028307, - 15099.990000283178, - 15104.99000028329, - 15109.990000283397, - 15114.990000283506, - 15119.990000283617, - 15124.990000283724, - 15129.990000283833, - 15134.990000283942, - 15139.990000284053, - 15144.99000028416, - 15149.990000284268, - 15154.99000028438, - 15159.990000284488, - 15164.990000284597, - 15169.990000284706, - 15174.990000284817, - 15179.990000284924, - 15184.990000285034, - 15189.990000285145, - 15194.990000285252, - 15199.99000028536, - 15204.990000285468, - 15209.990000285581, - 15214.990000285688, - 15219.990000285798, - 15224.990000285909, - 15229.990000286016, - 15234.990000286123, - 15239.990000286232, - 15244.990000286345, - 15249.990000286452, - 15254.990000286563, - 15259.99000028667, - 15264.990000286782, - 15269.990000286887, - 15274.990000286996, - 15279.990000287107, - 15284.990000287216, - 15289.990000287327, - 15294.990000287436, - 15299.990000287544, - 15304.990000287651, - 15309.990000287762, - 15314.990000287871, - 15319.99000028798, - 15324.990000288091, - 15329.9900002882, - 15334.990000288308, - 15339.990000288415, - 15344.990000288526, - 15349.990000288635, - 15354.990000288744, - 15359.990000288852, - 15364.990000288964, - 15369.990000289072, - 15374.990000289183, - 15379.99000028929, - 15384.9900002894, - 15389.990000289506, - 15394.990000289617, - 15399.990000289728, - 15404.990000289836, - 15409.990000289943, - 15414.990000290054, - 15419.990000290163, - 15424.99000029027, - 15429.990000290381, - 15434.99000029049, - 15439.9900002906, - 15444.990000290709, - 15449.990000290818, - 15454.990000290927, - 15459.990000291034, - 15464.990000291145, - 15469.990000291255, - 15474.990000291366, - 15479.990000291473, - 15484.990000291582, - 15489.990000291691, - 15494.990000291798, - 15499.99000029191, - 15504.990000292019, - 15509.99000029213, - 15514.990000292237, - 15519.990000292346, - 15524.990000292457, - 15529.990000292564, - 15534.990000292672, - 15539.990000292782, - 15544.990000292893, - 15549.990000293, - 15554.99000029311, - 15559.99000029322, - 15564.990000293328, - 15569.990000293436, - 15574.990000293545, - 15579.990000293656, - 15584.990000293765, - 15589.990000293874, - 15594.990000293985, - 15599.990000294092, - 15604.9900002942, - 15609.990000294309, - 15614.99000029442, - 15619.990000294529, - 15624.990000294638, - 15629.990000294749, - 15634.990000294856, - 15639.990000294963, - 15644.990000295073, - 15649.990000295184, - 15654.990000295293, - 15659.990000295404, - 15664.990000295513, - 15669.990000295618, - 15674.990000295733, - 15679.990000295837, - 15684.990000295948, - 15689.990000296057, - 15694.990000296168, - 15699.990000296277, - 15704.990000296384, - 15709.990000296491, - 15714.990000296602, - 15719.990000296712, - 15724.990000296819, - 15729.990000296932, - 15734.99000029704, - 15739.990000297148, - 15744.990000297255, - 15749.990000297366, - 15754.990000297475, - 15759.990000297583, - 15764.990000297694, - 15769.990000297805, - 15774.990000297912, - 15779.99000029802, - 15784.990000298132, - 15789.99000029824, - 15794.990000298347, - 15799.990000298458, - 15804.990000298567, - 15809.990000298676, - 15814.990000298783, - 15819.990000298894, - 15824.990000299003, - 15829.99000029911, - 15834.990000299222, - 15839.99000029933, - 15844.990000299442, - 15849.990000299551, - 15854.990000299658, - 15859.990000299767, - 15864.990000299875, - 15869.990000299986, - 15874.990000300095, - 15879.990000300206, - 15884.990000300313, - 15889.990000300422, - 15894.990000300531, - 15899.99000030064, - 15904.99000030075, - 15909.990000300859, - 15914.990000300966, - 15919.990000301077, - 15924.990000301186, - 15929.990000301297, - 15934.990000301405, - 15939.990000301514, - 15944.990000301623, - 15949.99000030173, - 15954.990000301841, - 15959.99000030195, - 15964.990000302061, - 15969.990000302168, - 15974.990000302278, - 15979.990000302389, - 15984.990000302496, - 15989.990000302605, - 15994.990000302714, - 15999.990000302825, - 16004.990000302932, - 16009.990000303042, - 16014.990000303149, - 16019.99000030326, - 16024.990000303369, - 16029.990000303478, - 16034.99000030359, - 16039.990000303696, - 16044.990000303806, - 16049.990000303917, - 16054.990000304024, - 16059.990000304131, - 16064.990000304244, - 16069.990000304353, - 16074.99000030446, - 16079.990000304568, - 16084.99000030468, - 16089.990000304788, - 16094.990000304895, - 16099.990000305004, - 16104.990000305117, - 16109.990000305224, - 16114.990000305335, - 16119.990000305444, - 16124.990000305552, - 16129.99000030566, - 16134.990000305768, - 16139.990000305881, - 16144.990000305988, - 16149.990000306096, - 16154.990000306208, - 16159.990000306316, - 16164.990000306423, - 16169.990000306534, - 16174.990000306643, - 16179.990000306752, - 16184.99000030686, - 16189.990000306967, - 16194.99000030708, - 16199.990000307187, - 16204.990000307298, - 16209.990000307407, - 16214.990000307516, - 16219.990000307624, - 16224.990000307736, - 16229.990000307844, - 16234.990000307951, - 16239.990000308062, - 16244.990000308171, - 16249.990000308282, - 16254.990000308391, - 16259.9900003085, - 16264.990000308608, - 16269.990000308715, - 16274.990000308826, - 16279.990000308935, - 16284.990000309042, - 16289.990000309153, - 16294.990000309264, - 16299.990000309372, - 16304.990000309483, - 16309.99000030959, - 16314.9900003097, - 16319.990000309806, - 16324.990000309917, - 16329.990000310027, - 16334.990000310137, - 16339.990000310245, - 16344.990000310354, - 16349.990000310463, - 16354.99000031057, - 16359.990000310681, - 16364.99000031079, - 16369.990000310901, - 16374.990000311009, - 16379.990000311118, - 16384.990000311045, - 16389.990000310245, - 16394.990000309444, - 16399.990000308644, - 16404.990000307844, - 16409.990000307043, - 16414.990000306247, - 16419.990000305443, - 16424.990000304642, - 16429.990000303842, - 16434.990000303038, - 16439.99000030224, - 16444.99000030144, - 16449.99000030064, - 16454.99000029984, - 16459.99000029904, - 16464.99000029824, - 16469.990000297443, - 16474.990000296642, - 16479.99000029584, - 16484.990000295038, - 16489.990000294238, - 16494.990000293434, - 16499.990000292637, - 16504.990000291837, - 16509.990000291036, - 16514.990000290236, - 16519.990000289436, - 16524.990000288635, - 16529.99000028784, - 16534.990000287034, - 16539.990000286234, - 16544.990000285434, - 16549.99000028463, - 16554.990000283833, - 16559.990000283033, - 16564.990000282232, - 16569.990000281432, - 16574.99000028063, - 16579.99000027983, - 16584.99000027903, - 16589.990000278234, - 16594.99000027743, - 16599.99000027663, - 16604.99000027583, - 16609.990000275033, - 16614.990000274232, - 16619.99000027343, - 16624.990000272628, - 16629.990000271828, - 16634.990000271027, - 16639.990000270227, - 16644.99000026943, - 16649.990000268626, - 16654.990000267826, - 16659.990000267026, - 16664.99000026622, - 16669.990000265425, - 16674.990000264625, - 16679.990000263824, - 16684.990000263024, - 16689.990000262223, - 16694.990000261423, - 16699.990000260626, - 16704.990000259822, - 16709.990000259022, - 16714.990000258218, - 16719.990000257418, - 16724.990000256617, - 16729.990000255817, - 16734.99000025502, - 16739.99000025422, - 16744.99000025342, - 16749.99000025262, - 16754.99000025182, - 16759.99000025102, - 16764.990000250218, - 16769.990000249418, - 16774.990000248617, - 16779.990000247813, - 16784.990000247017, - 16789.990000246216, - 16794.990000245416, - 16799.990000244616, - 16804.990000243815, - 16809.990000243015, - 16814.99000024222, - 16819.990000241414, - 16824.990000240614, - 16829.990000239814, - 16834.99000023901, - 16839.990000238213, - 16844.990000237412, - 16849.990000236612, - 16854.99000023581, - 16859.99000023501, - 16864.990000234207, - 16869.990000233407, - 16874.99000023261, - 16879.99000023181, - 16884.99000023101, - 16889.99000023021, - 16894.99000022941, - 16899.99000022861, - 16904.990000227812, - 16909.990000227008, - 16914.990000226207, - 16919.990000225407, - 16924.990000224607, - 16929.990000223806, - 16934.990000223006, - 16939.990000222206, - 16944.990000221405, - 16949.9900002206, - 16954.990000219805, - 16959.990000219004, - 16964.990000218204, - 16969.990000217404, - 16974.990000216603, - 16979.990000215803, - 16984.990000215006, - 16989.990000214202, - 16994.9900002134, - 16999.9900002126, - 17004.9900002118, - 17009.990000211, - 17014.9900002102, - 17019.9900002094, - 17024.9900002086, - 17029.9900002078, - 17034.990000207, - 17039.990000206202, - 17044.990000205402, - 17049.990000204598, - 17054.990000203798, - 17059.990000202997, - 17064.990000202193, - 17069.990000201396, - 17074.990000200596, - 17079.990000199796, - 17084.990000198995, - 17089.990000198195, - 17094.990000197395, - 17099.990000196594, - 17104.990000195794, - 17109.990000194994, - 17114.990000194193, - 17119.990000193393, - 17124.990000192593, - 17129.990000191792, - 17134.990000190992, - 17139.99000019019, - 17144.99000018939, - 17149.99000018859, - 17154.99000018779, - 17159.99000018699, - 17164.99000018619, - 17169.99000018539, - 17174.99000018459, - 17179.990000183792, - 17184.990000182992, - 17189.990000182188, - 17194.990000181388, - 17199.990000180587, - 17204.990000179787, - 17209.990000178987, - 17214.990000178186, - 17219.990000177386, - 17224.990000176585, - 17229.990000175785, - 17234.99000017498, - 17239.990000174184, - 17244.990000173384, - 17249.990000172584, - 17254.990000171783, - 17259.990000170983, - 17264.990000170183, - 17269.990000169382, - 17274.990000168582, - 17279.99000016778, - 17284.99000016698, - 17289.99000016618, - 17294.99000016538, - 17299.99000016458, - 17304.990000163783, - 17309.99000016298, - 17314.99000016218, - 17319.990000161382, - 17324.990000160582, - 17329.990000159778, - 17334.990000158978, - 17339.990000158177, - 17344.990000157377, - 17349.990000156577, - 17354.990000155776, - 17359.990000154976, - 17364.990000154176, - 17369.990000153375, - 17374.990000152575, - 17379.990000151774, - 17384.990000150974, - 17389.990000150174, - 17394.990000149373, - 17399.990000148573, - 17404.990000147773, - 17409.990000146972, - 17414.990000146172, - 17419.990000145368, - 17424.990000144568, - 17429.99000014377, - 17434.99000014297, - 17439.990000142167, - 17444.99000014137, - 17449.99000014057, - 17454.99000013977, - 17459.99000013897, - 17464.99000013817, - 17469.990000137368, - 17474.990000136568, - 17479.990000135767, - 17484.990000134967, - 17489.990000134167, - 17494.990000133366, - 17499.990000132566, - 17504.990000131766, - 17509.990000130965, - 17514.990000130165, - 17519.990000129364, - 17524.990000128564, - 17529.990000127764, - 17534.990000126963, - 17539.990000126163, - 17544.990000125363, - 17549.990000124562, - 17554.990000123762, - 17559.990000122958, - 17564.990000122158, - 17569.99000012136, - 17574.99000012056, - 17579.990000119757, - 17584.99000011896, - 17589.99000011816, - 17594.99000011736, - 17599.99000011656, - 17604.99000011576, - 17609.990000114958, - 17614.990000114158, - 17619.990000113357, - 17624.990000112557, - 17629.990000111757, - 17634.990000110956, - 17639.990000110156, - 17644.990000109356, - 17649.99000010856, - 17654.990000107755, - 17659.990000106955, - 17664.990000106154, - 17669.990000105354, - 17674.99000010455, - 17679.990000103753, - 17684.990000102953, - 17689.990000102152, - 17694.990000101352, - 17699.990000100548, - 17704.99000009975, - 17709.99000009895, - 17714.99000009815, - 17719.99000009735, - 17724.99000009655, - 17729.99000009575, - 17734.990000094953, - 17739.99000009415, - 17744.99000009335, - 17749.990000092548, - 17754.990000091748, - 17759.990000090947, - 17764.99000009015, - 17769.990000089347, - 17774.990000088546, - 17779.990000087746, - 17784.990000086946, - 17789.990000086145, - 17794.990000085345, - 17799.990000084545, - 17804.990000083744, - 17809.990000082944, - 17814.990000082144, - 17819.990000081347, - 17824.990000080543, - 17829.990000079742, - 17834.990000078942, - 17839.990000078138, - 17844.99000007734, - 17849.99000007654, - 17854.99000007574, - 17859.99000007494, - 17864.99000007414, - 17869.99000007334, - 17874.990000072543, - 17879.99000007174, - 17884.99000007094, - 17889.990000070142, - 17894.990000069338, - 17899.990000068534, - 17904.990000067737, - 17909.990000066937, - 17914.990000066136, - 17919.990000065336, - 17924.990000064536, - 17929.990000063735, - 17934.99000006294, - 17939.990000062135, - 17944.990000061334, - 17949.990000060534, - 17954.990000059734, - 17959.990000058933, - 17964.990000058133, - 17969.990000057333, - 17974.990000056532, - 17979.99000005573, - 17984.99000005493, - 17989.99000005413, - 17994.99000005333, - 17999.99000005253 - ], - "y": [ - -0.06804246757198057, - -0.15124481295268416, - -0.060778122359712014, - -0.06267955648247667, - -0.07447472203456675, - -0.08034717575449243, - -0.08436548787098871, - -0.08791397138667474, - -0.09119941765025173, - -0.09431890872609057, - -0.09722364951860533, - -0.09985677332721374, - -0.10239572878368261, - -0.10480407251120806, - -0.1069454445086663, - -0.10889374393642877, - -0.11073723129780318, - -0.11231384221544795, - -0.11379513480272979, - -0.11510372087414356, - -0.11612635073694536, - -0.1169224239623496, - -0.11773957966641103, - -0.11846880137726934, - -0.11920499696633349, - -0.1197654117404023, - -0.1201516624544903, - -0.12049969751007644, - -0.1207712418166211, - -0.12100203911663895, - -0.12120722175689254, - -0.12141078466604142, - -0.12160135357323815, - -0.12178146007245465, - -0.12195668606856294, - -0.12212325999547607, - -0.12224408893093117, - -0.12236954247469216, - -0.12252717756394037, - -0.12270618592417161, - -0.1229139656134724, - -0.12308636644659472, - -0.12326013697336816, - -0.12336139003757587, - -0.12337214965409135, - -0.12337684609841088, - -0.1233713137577136, - -0.12336511704840179, - -0.12336901566851087, - -0.12338374029374685, - -0.12339972484253024, - -0.12342149960718288, - -0.1234351439005847, - -0.1234896657329104, - -0.1235699128058909, - -0.12361924495421447, - -0.12359768121207561, - -0.1235476099956705, - -0.12349875042599145, - -0.12345548910338076, - -0.12341152217735045, - -0.12336580231972162, - -0.1233175260447462, - -0.12326674272395054, - -0.12320997348134184, - -0.12314692368859986, - -0.12308209408868719, - -0.1230071658293367, - -0.12291793159541313, - -0.1228192461802084, - -0.1227060425804379, - -0.12257359373823214, - -0.12240436264420416, - -0.12219381636518034, - -0.12215640404869604, - -0.12216754490313592, - -0.12217423205363064, - -0.12218183838621284, - -0.12219231889889816, - -0.12220234560091188, - -0.12221161019308044, - -0.12222021920763984, - -0.12222806941800494, - -0.12223545738330285, - -0.12224234348495261, - -0.1222487548085296, - -0.12225480697205561, - -0.12226038251004391, - -0.12226531927894678, - -0.1222700636510457, - -0.12227263793002545, - -0.1222764962844156, - -0.12228008534555387, - -0.12228328097662727, - -0.12228629475711145, - -0.12228897095277745, - -0.12229139984585025, - -0.1222936222815489, - -0.12229558680762805, - -0.12229738978844534, - -0.12373361159279606, - -0.12593350884580368, - -0.1259765782374311, - -0.12616895300578584, - -0.12636520673778737, - -0.12655241992623947, - -0.1267187173855375, - -0.1268698686998104, - -0.12701111931506034, - -0.1271077804356136, - -0.1271833169675798, - -0.127260983056476, - -0.12733190986604387, - -0.12743871344145455, - -0.1275640724330922, - -0.1276897124833976, - -0.12780317280776807, - -0.12791292008945165, - -0.1280009953656325, - -0.1280816325742413, - -0.12815417308375546, - -0.12822634441035058, - -0.12830152676223924, - -0.12837378956676848, - -0.1284422779442624, - -0.12850781894901275, - -0.12857392306065415, - -0.12863574967080516, - -0.1286962057481723, - -0.1287544035138354, - -0.12881425928189066, - -0.12887943480750017, - -0.12893786466797375, - -0.12899521119279847, - -0.12905147322690477, - -0.12910593973330287, - -0.1291620657741965, - -0.12921693573877116, - -0.12927364696548738, - -0.1293314551892473, - -0.1293907544504039, - -0.12945312616490215, - -0.12952207122871168, - -0.12958930805375218, - -0.1296611873799855, - -0.12973817662339152, - -0.12983320117317007, - -0.1299473036664584, - -0.1300702567812484, - -0.13011259594944513, - -0.13012237185071163, - -0.1301291339530521, - -0.1301360338600916, - -0.13014263870284054, - -0.13014887911149145, - -0.13015477134993533, - -0.13016033494487433, - -0.13016558825266505, - -0.13017054857964613, - -0.1301752322655492, - -0.13017965473884371, - -0.13018383041735657, - -0.1301877560396929, - -0.1301914742265616, - -0.13019496262489152, - -0.1301982445076301, - -0.13020133717547505, - -0.13020426388222803, - -0.13020702203961257, - -0.13020963188800025, - -0.13021208930057765, - -0.1302144102227892, - -0.13021661124179673, - -0.1302186832905971, - -0.13022064177620768, - -0.13022249121411772, - -0.13022422677234918, - -0.13022587737579835, - -0.1302274386740218, - -0.13022890513156046, - -0.13023029540577724, - -0.13023159475864954, - -0.1302328292657038, - -0.13023400135223265, - -0.13023510859340856, - -0.130236154157945, - -0.13023714147605514, - -0.1302380620528267, - -0.1302389278596429, - -0.13023975274762967, - -0.13024053217924395, - -0.13024126823088555, - -0.13024196331459645, - -0.1302426197122586, - -0.13024323957713188, - -0.1302438249425053, - -0.1302443777284986, - -0.1302448997483665, - -0.13024539262701262, - -0.13024585659566926, - -0.1302462872376768, - -0.1302466994748121, - -0.13024709143100655, - -0.13024746174063223, - -0.1302478114405538, - -0.130248141676728, - -0.13024845353306883, - -0.13024874803258185, - -0.1302490261412886, - -0.13024928877144223, - -0.130249535468705, - -0.1302497591967517, - -0.13024997892427562, - -0.13025018781180409, - -0.13025038513394468, - -0.1302505714721647, - -0.13025074743908482, - -0.1302509136122867, - -0.13025107053687335, - -0.13025121872758988, - -0.13025135867053286, - -0.13025149082474416, - -0.13025161562371684, - -0.13025173347681823, - -0.13025184477063093, - -0.1302519498702218, - -0.13025204912033905, - -0.13025214284654404, - -0.1302522313562784, - -0.13025231493987213, - -0.13025239387149806, - -0.13025246841006705, - -0.1302525388000814, - -0.1302526052724357, - -0.13025266804517266, - -0.1302527273241995, - -0.13025278330396456, - -0.13025283616809336, - -0.13025288608999025, - -0.13025293323341067, - -0.1302529777529941, - -0.13025301979477366, - -0.1302530594966559, - -0.13025309698887141, - -0.130253132394402, - -0.1302531658293854, - -0.1302531974034956, - -0.1302532272203017, - -0.13025325537760915, - -0.1302532819677798, - -0.13025330707803573, - -0.13025333079074264, - -0.13025335318368436, - -0.13025337433031325, - -0.13025339429999533, - -0.1302534131582351, - -0.1302534309668917, - -0.13025344778438103, - -0.1302534636658684, - -0.13025347866344802, - -0.1302534928263145, - -0.13025350620092654, - -0.13025351883115466, - -0.1302535223007496, - -0.130253516469137, - -0.13025352547826116, - -0.13025353564244765, - -0.1302535452944111, - -0.13025355440589864, - -0.1302535630098206, - -0.13025357113486055, - -0.13025357880769053, - -0.13025358605347825, - -0.13025359289599095, - -0.13025359935767336, - -0.13025360545972134, - -0.13025361122215, - -0.13025361666386284, - -0.1302536218027095, - -0.13025362665554557, - -0.13025363123828979, - -0.130253635565975, - -0.13025363965279657, - -0.1302536435121597, - -0.13025364715672447, - -0.1302536505984459, - -0.1302536538486127, - -0.13025365691788734, - -0.13025365981633624, - -0.13025366255346787, - -0.130253665138261, - -0.130253667579193, - -0.13025366988427134, - -0.13025367206105715, - -0.13025367411669098, - -0.13025367605791555, - -0.13025367789109876, - -0.13025367962225282, - -0.13025368125705725, - -0.1302536828008739, - -0.13025368425876713, - -0.13025368563551962, - -0.13025368693564643, - -0.13025368816341298, - -0.13025368932284642, - -0.1302536904177499, - -0.1302536914517145, - -0.13025369242813287, - -0.130253693350207, - -0.1302536942209619, - -0.1302536950432533, - -0.13025369581977903, - -0.1302536965530859, - -0.13025369724558, - -0.13025369789953184, - -0.1302536985170874, - -0.13025369910027204, - -0.13025369965099814, - -0.1302537001710733, - -0.13025370066220215, - -0.13025370112599716, - -0.130253701563979, - -0.13025370197758424, - -0.13025370236816947, - -0.13025370273701642, - -0.1302537030853343, - -0.13025370341426606, - -0.13025370372489084, - -0.1302537040182273, - -0.1302537042952377, - -0.1302537045568307, - -0.13025370480386392, - -0.13025370503714842, - -0.1302537052574494, - -0.13025370546548884, - -0.13025370566195016, - -0.13025370584747645, - -0.13025370602267744, - -0.13025370618812715, - -0.1302537063443685, - -0.1302537064919139, - -0.13025370663124747, - -0.13025370676282647, - -0.13025370688708215, - -0.1302537070044219, - -0.13025370711523138, - -0.1302537072198733, - -0.1302537073186914, - -0.1302537074120096, - -0.13025370750013443, - -0.13025370758335372, - -0.13025370766194147, - -0.13025370773615558, - -0.1302537078062391, - -0.13025370787242246, - -0.1302537079349215, - -0.13025370799394254, - -0.1302537080496785, - -0.13025370810231265, - -0.13025370815201737, - -0.1302537081989553, - -0.130253708243281, - -0.13025370828513985, - -0.1302537083246692, - -0.13025370836199773, - -0.13025370839724926, - -0.13025370843053868, - -0.1302537084619752, - -0.13025370849166282, - -0.1302537085196969, - -0.1302537085461713, - -0.1302537085711724, - -0.13025370859478183, - -0.1302537086170775, - -0.1302537086381319, - -0.13025370865801458, - -0.13025370867679079, - -0.1302537086945218, - -0.13025370871126604, - -0.1302537087270785, - -0.13025370874201042, - -0.13025370875611192, - -0.13025370876942832, - -0.13025370878200376, - -0.13025370879387901, - -0.1302537088050935, - -0.1302537088156836, - -0.13025370882568443, - -0.13025370883512857, - -0.13025370884404727, - -0.13025370885246948, - -0.13025370886042287, - -0.13025370886793355, - -0.13025370887502652, - -0.13025370888172444, - -0.13025370888804974, - -0.1302537088940229, - -0.13025370889966378, - -0.1302537089049906, - -0.13025370891002072, - -0.13025370891477114, - -0.13025370891925722, - -0.1302537089234936, - -0.13025370892749416, - -0.1302537089312717, - -0.13025370893483937, - -0.13025370893820845, - -0.13025370894139, - -0.13025370894439456, - -0.13025370894723173, - -0.13025370894991106, - -0.1302537089524412, - -0.1302537089548307, - -0.1302537089570872, - -0.1302537089592178, - -0.13025370896123006, - -0.1302537089631303, - -0.1302537089649247, - -0.13025370896661925, - -0.13025370896821964, - -0.1302537089697309, - -0.130253708971158, - -0.1302537089725058, - -0.13025370897377844, - -0.13025370897498018, - -0.1302537089761151, - -0.130253708977187, - -0.1302537089781992, - -0.13025370897915495, - -0.13025370898005756, - -0.13025370898090982, - -0.13025370898171484, - -0.13025370898247496, - -0.1302537089831928, - -0.13025370898387056, - -0.13025370898451072, - -0.13025370898511526, - -0.13025370898568628, - -0.1302537089862253, - -0.13025370898673433, - -0.13025370898721494, - -0.1302537089876692, - -0.1302537089880978, - -0.13025370898850278, - -0.13025370898888494, - -0.130253708989246, - -0.1302537089895871, - -0.13025370898990898, - -0.13025370899021307, - -0.13025370899050034, - -0.13025370899077138, - -0.1302537089910276, - -0.1302537089912696, - -0.1302537089914975, - -0.1302537089917132, - -0.13025370899191713, - -0.13025370899210956, - -0.1302537089922911, - -0.13025370899246286, - -0.130253708992624, - -0.1302537089927776, - -0.13025370899292124, - -0.13025370899305846, - -0.13025370899318744, - -0.13025370899330904, - -0.13025370899342403, - -0.13025370899353156, - -0.1302537089936338, - -0.13025370899373154, - -0.1302537089938214, - -0.13025370899390934, - -0.13025370899398897, - -0.13025370899406605, - -0.13025370899414018, - -0.1302537089942091, - -0.13025370899427322, - -0.1302537089943342, - -0.13025370899439212, - -0.13025370899444755, - -0.13025370899449829, - -0.13025370899454503, - -0.13025370899458982, - -0.1302537089946348, - -0.13025370899467675, - -0.13025370899471236, - -0.13025370899475142, - -0.13025370899478372, - -0.13025370899481642, - -0.13025370899484753, - -0.13025370899487576, - -0.13025370899490266, - -0.13025370899493072, - -0.1302537089949511, - -0.13025370899498107, - -0.1302537089949975, - -0.13025370899501762, - -0.1302537089950437, - -0.13025370899505595, - -0.13025370899507144, - -0.13025370899509342, - -0.1382675457888159, - -0.14147732207647867, - -0.1423019697570343, - -0.14248042015962123, - -0.14239989807093756, - -0.1423106057667125, - -0.14226214878399585, - -0.14224120120132, - -0.14223089522065463, - -0.14198555220387712, - -0.14185616288065606, - -0.14183428710868318, - -0.14184237828941104, - -0.1418609210009938, - -0.14188252820715327, - -0.14189404038659348, - -0.14192046727570765, - -0.14195408328829348, - -0.1419918163017191, - -0.14203480373245206, - -0.14208603647172663, - -0.14214752582821671, - -0.1422184587959058, - -0.14230153451989866, - -0.1423633745221939, - -0.1423773827579129, - -0.1423761443749412, - -0.14237110581036336, - -0.14236530926262297, - -0.1423595341325431, - -0.14235433705452377, - -0.14234933492940086, - -0.14234441370053064, - -0.1423396889962872, - -0.1423351860947284, - -0.1423309004886601, - -0.14232683250947642, - -0.14232297669779645, - -0.1423193185448424, - -0.14230637741237553, - -0.1422938602063102, - -0.14228813186997044, - -0.1422844458832274, - -0.14228139665271078, - -0.14227861849545778, - -0.1422760271996757, - -0.1422735736910168, - -0.14227124138565306, - -0.1422690343642421, - -0.14226693492042805, - -0.14226494342310214, - -0.1422630341821166, - -0.1422612548284423, - -0.14225955141705962, - -0.14225792459723755, - -0.14225639937790188, - -0.14225493144091017, - -0.1422535485795568, - -0.1422522396927349, - -0.14225099069470054, - -0.14224980714262817, - -0.14224866763436889, - -0.14224759837322407, - -0.1422465914547268, - -0.142245614241126, - -0.14224471976753045, - -0.14224386504306383, - -0.14224305144606478, - -0.14224225564748874, - -0.14224152212402175, - -0.14224083429926035, - -0.14224016019554125, - -0.14223951568191637, - -0.14223892515939876, - -0.14223836771946913, - -0.1422378251183434, - -0.14223729524065853, - -0.14223681328221494, - -0.1422363637462124, - -0.14223593161845102, - -0.1422355070499345, - -0.14223508473956029, - -0.14223470256507717, - -0.14223435320231587, - -0.14223402537081672, - -0.1422337108412357, - -0.14223339164213364, - -0.14223310414341445, - -0.14223283700064215, - -0.14223258486745244, - -0.14223230784014498, - -0.14223205619584095, - -0.14223183440852136, - -0.14223162857507282, - -0.14223143442348848, - -0.14223124961856048, - -0.1422310746738843, - -0.14223090890352663, - -0.14223075162719725, - -0.1422306023553194, - -0.14223046066623413, - -0.1422303261710012, - -0.1422301863433906, - -0.14223005536181085, - -0.1422299373643637, - -0.14222982741465698, - -0.14222972359504873, - -0.14222962518953103, - -0.1422295318170268, - -0.14222942556185628, - -0.1422293231172087, - -0.1422292374577254, - -0.14222915986299098, - -0.14222908748996685, - -0.14222901913191807, - -0.14222895433336413, - -0.1422288928475799, - -0.14222883448908902, - -0.14222877909460474, - -0.14222872651247845, - -0.14222867659963714, - -0.14222862922050075, - -0.1422285842464322, - -0.14222854155534076, - -0.14222850103133386, - -0.14222846256440763, - -0.14222842605013933, - -0.1422283913894086, - -0.14222835848812637, - -0.14222832725697934, - -0.1422282976111884, - -0.1422282694702767, - -0.14222824275785406, - -0.14222821740140795, - -0.14222819333210515, - -0.1422281704846093, - -0.1422281487467703, - -0.14222811814364142, - -0.14222809421476748, - -0.14222807451298447, - -0.14222805662219284, - -0.14222803985241864, - -0.14222802398971524, - -0.1422280089468648, - -0.1422279946714538, - -0.14222798112169674, - -0.14222796826001652, - -0.14222795605129004, - -0.14222794446232054, - -0.14222793346163556, - -0.14222792301936835, - -0.1422279131071723, - -0.1422279036981387, - -0.14222789439362865, - -0.14222788510386977, - -0.14222787681811638, - -0.1422278691181099, - -0.14222786185258326, - -0.14222785496730675, - -0.14222784843454, - -0.14222784223417526, - -0.14222783634876016, - -0.14222783076215384, - -0.14222782545914875, - -0.142227820425339, - -0.1422278156470563, - -0.142227811111329, - -0.1422220707770472, - -0.14219972029801567, - -0.14218236449629648, - -0.14217421582677484, - -0.1421719712235364, - -0.14217145499279665, - -0.1421713887761981, - -0.14217143640178626, - -0.1421715103886591, - -0.14217158810662647, - -0.1421716638180931, - -0.1421717361796483, - -0.14217180498529894, - -0.14217187031812437, - -0.14217193232956676, - -0.1421719911822687, - -0.14217204703551237, - -0.1421721000417448, - -0.14217215034597658, - -0.14217219808591447, - -0.14217224339226775, - -0.1421722863890874, - -0.14217232719410478, - -0.1421723659190491, - -0.1421724026699526, - -0.14217243754744566, - -0.1421724706470256, - -0.1421725020593241, - -0.14217253187035161, - -0.14217256016173355, - -0.14217258701093574, - -0.14217261249147584, - -0.14217263667312088, - -0.1385158232595349, - -0.1370405970293161, - -0.1366851345993545, - -0.1366523183941287, - -0.13670914435990364, - -0.13677405814728397, - -0.13684737514378736, - -0.13688008211326763, - -0.13688733054138422, - -0.136887681684541, - -0.1368862387399221, - -0.13688438318597887, - -0.13688248636240244, - -0.1368806456332691, - -0.13687888417221, - -0.136877205175003, - -0.13687560656496947, - -0.13687408497671652, - -0.13687260724735933, - -0.13686234826529511, - -0.13685713393286542, - -0.1368549812549898, - -0.1368537126320605, - -0.13685271671730306, - -0.1368518262103137, - -0.136850994302015, - -0.136850206868339, - -0.13684945870115006, - -0.13684874707229855, - -0.1368480699886412, - -0.1368474257167137, - -0.1368468126511522, - -0.13684622927628726, - -0.1368456741530809, - -0.13684514591305905, - -0.1368446432542577, - -0.13684416493782417, - -0.13660043403721958, - -0.1364417524351374, - -0.13639730565703254, - -0.1363850315542843, - -0.1363814647464666, - -0.13638025916859806, - -0.1363797023189714, - -0.13637933171309335, - -0.13637902205907404, - -0.13637873904132206, - -0.13637847290826316, - -0.13637822055798665, - -0.13637798070510226, - -0.13637775257600032, - -0.13637753555587082, - -0.13637732909248382, - -0.1363771326692765, - -0.13637694579718215, - -0.1363767680115554, - -0.13637659887051626, - -0.13637643795371585, - -0.13637628486125958, - -0.1363761392126983, - -0.1363407148591037, - -0.13616703588098295, - -0.13610996360436414, - -0.13609440014442084, - -0.13609012720898728, - -0.13608889607457905, - -0.13608848691513017, - -0.1360883025957074, - -0.13608818235818, - -0.13608808279742152, - -0.13608799207368003, - -0.1360879068434621, - -0.1360878260557431, - -0.13608774928336137, - -0.1360876762739582, - -0.13608760682888324, - -0.13608754077030413, - -0.13608747793205095, - -0.13608741815685643, - -0.13608736129533822, - -0.13608730720545179, - -0.1360872557520927, - -0.13608720680674588, - -0.13608716024716225, - -0.13608711595705197, - -0.13608707382579216, - -0.136087033748153, - -0.13608699562403462, - -0.13608695935821596, - -0.13608692486011706, - -0.13608689204357227, - -0.13608686082661825, - -0.13608683113128406, - -0.13608680288340208, - -0.13608677601241823, - -0.13608675045121704, - -0.1360867261359563, - -0.13608670300590445, - -0.13608668100328988, - -0.13608666007315792, - -0.136086640163231, - -0.1360866212237824, - -0.13608660320750676, - -0.13608658606940632, - -0.1360865697666743, - -0.1360865542585939, - -0.13608653950642985, - -0.136086525473336, - -0.13608651212426354, - -0.13608649942587045, - -0.13608648734644, - -0.13608647585580205, - -0.13608646492525686, - -0.1360864545275042, - -0.13608644463657263, - -0.13608643522775926, - -0.1360864262775634, - -0.1360864177636306, - -0.13608640966469543, - -0.1360864019605306, - -0.1360863946318925, - -0.13608638766047765, - -0.13608638102887316, - -0.1360863747205159, - -0.13608636871964896, - -0.13608636301128488, - -0.13608635758116547, - -0.13608635241572914, - -0.13608634750207385, - -0.13608634282792645, - -0.13608633838161302, - -0.13608633415202814, - -0.1360863301286075, - -0.1360863263013026, - -0.13608632266055334, - -0.1360863191972666, - -0.13608631590279188, - -0.13608631276890124, - -0.13608630978776712, - -0.13608630695194396, - -0.13608630425434776, - -0.13608630168824193, - -0.13608629924721694, - -0.13608629692517582, - -0.13608629471631908, - -0.13608629261512944, - -0.1360862906163587, - -0.13608628871501485, - -0.13608628690634905, - -0.13608628518584404, - -0.13608628354920227, - -0.13608628199233563, - -0.1360862805113563, - -0.13608627910256402, - -0.13608627776244211, - -0.13608627648764265, - -0.1360862752749808, - -0.136086274121428, - -0.13608627302410364, - -0.13608627198026602, - -0.1360862709873091, - -0.13608627004275242, - -0.1360862691442366, - -0.1360862682895167, - -0.13608626747645897, - -0.1360862667030328, - -0.1360862659673064, - -0.13608626526744136, - -0.13608626460169002, - -0.13608626396838963, - -0.13608626336595891, - -0.1360862627928925, - -0.13608626224775922, - -0.1360862617291979, - -0.13608626123591291, - -0.1360866184932008, - -0.13608740050227508, - -0.13608763632795665, - -0.13608769985685282, - -0.13608771681837625, - -0.13608772127859495, - -0.13608772238702363, - -0.1360877225999148, - -0.13608772257650223, - -0.13608772249357323, - -0.13608772239840125, - -0.13608772230349483, - -0.1360877222120396, - -0.1360877221247262, - -0.13608772204158265, - -0.1360484249104378, - -0.13598891822220976, - -0.13597156725058146, - -0.13596689626436345, - -0.135965637054178, - -0.1359652917325643, - -0.1359651914434016, - -0.1359651571272509, - -0.13596514083532463, - -0.13596512971503813, - -0.12919828797868527, - -0.13230290220679916, - -0.1331279008236327, - -0.13331612963665126, - -0.13331449250049335, - -0.1332335698800231, - -0.13311672891628817, - -0.13298136181395073, - -0.13285105258751026, - -0.13273821286389192, - -0.13267036198836119, - -0.13263444543063332, - -0.13260907437047245, - -0.13258420719806902, - -0.13255460939701813, - -0.13251791212800615, - -0.1324720761900202, - -0.1324219719822355, - -0.1323716882860336, - -0.13233066179241443, - -0.13230480540662942, - -0.13229032062100815, - -0.13227608559620666, - -0.1322608347321794, - -0.13224525769057768, - -0.13222958288136283, - -0.13221368967394054, - -0.1321978072447275, - -0.13218665082942652, - -0.13217909367909375, - -0.1321728384997403, - -0.13216695670333353, - -0.1321602996601623, - -0.1321526751761468, - -0.13214475431925632, - -0.13213680745658554, - -0.1321288727003741, - -0.13212094990239678, - -0.1321130862488916, - -0.13210540222721145, - -0.13209760944195026, - -0.13208963808484242, - -0.13208151054058315, - -0.1320732216000429, - -0.1320647613793578, - -0.13205598227844087, - -0.1320468480265968, - -0.13203745409258333, - -0.13202812750465256, - -0.13202258075332624, - -0.1320192245213193, - -0.1320165737128624, - -0.13201416454559523, - -0.13201190280685435, - -0.1320097592998595, - -0.13200772179453524, - -0.13200578324500037, - -0.13200393830891397, - -0.132002182306316, - -0.13200051938820231, - -0.13199902388562845, - -0.13199765412005762, - -0.13199636691712852, - -0.13199514673600682, - -0.13199398689399605, - -0.13199242792093951, - -0.13198521247184253, - -0.13197402318164145, - -0.13196107377686603, - -0.13194698454872078, - -0.1319320925006535, - -0.13191799886551725, - -0.13191181542815356, - -0.1319094619031768, - -0.13190829556159792, - -0.1319075066247574, - -0.1319068517730664, - -0.1319062572477993, - -0.13190570002393176, - -0.13190517228812068, - -0.13190467081881277, - -0.1319041938097664, - -0.13190373991852744, - -0.13190330798005004, - -0.13190289691922275, - -0.13190250572293474, - -0.13190213474758997, - -0.13190179449486736, - -0.13190147733283702, - -0.1319011775367283, - -0.1319008928474798, - -0.1319006221087729, - -0.13190036451833936, - -0.13190011940205748, - -0.13189988614518375, - -0.131899664170732, - -0.13189945293202235, - -0.1318992519095364, - -0.13189906060909645, - -0.13189887856048998, - -0.13895397801608278, - -0.13580886519396193, - -0.13487958200050018, - -0.1346149850152473, - -0.13456468913492586, - -0.13455925017244322, - -0.13456571509978127, - -0.13457899857844455, - -0.13458469557145236, - -0.13459401439300306, - -0.13460591759822219, - -0.13459343020030182, - -0.1345732695707013, - -0.13457313280358946, - -0.13459999981323406, - -0.1346356671635607, - -0.13465597270557045, - -0.13466856706798844, - -0.134678539526062, - -0.13467233852200855, - -0.1346507771304443, - -0.13464816591274645, - -0.13465169655889145, - -0.1346543740409653, - -0.1346583251175786, - -0.13466314229388193, - -0.13466804380607653, - -0.13467143291831996, - -0.13465697749784422, - -0.13465386095299867, - -0.13465569872537084, - -0.13465887799125337, - -0.13466232411163237, - -0.13466572703632718, - -0.1346690014746695, - -0.13467212795334385, - -0.13467510608384145, - -0.1346779408317437, - -0.13468063849109801, - -0.134683205512428, - -0.13468564816940612, - -0.13468797247161723, - -0.13469018414918488, - -0.13469228865802477, - -0.13469429119069504, - -0.1347119539336416, - -0.134760044233764, - -0.1347774570795227, - -0.1347840591556919, - -0.13478740945871429, - -0.1347897402559478, - -0.1347917076917582, - -0.1347935067539694, - -0.13479519745200153, - -0.13479680018785295, - -0.13479832364580938, - -0.1347997729529509, - -0.13480115207131216, - -0.13480246450329603, - -0.13480371350365777, - -0.1348049021469591, - -0.13480603335249056, - -0.13480710989652214, - -0.1348081344205976, - -0.13480910943845045, - -0.13481003734230007, - -0.13481092040875495, - -0.13481176080441223, - -0.13481256059117525, - -0.13481332173131194, - -0.13481404609227265, - -0.13481473545127054, - -0.13481238692176292, - -0.13481135916654155, - -0.13483279581498445, - -0.1348425571681927, - -0.13484585500645443, - -0.13484721534842728, - -0.1348479913078172, - -0.13484772275191914, - -0.13481400887798423, - -0.1347999377206114, - -0.13479603984924166, - -0.1347951388012921, - -0.1347950989046509, - -0.13479529881363844, - -0.134790126086101, - -0.13476703094447234, - -0.13475925735127106, - -0.1347571233861532, - -0.1347566347579944, - -0.1347566180780804, - -0.1347567324921385, - -0.13475687922975568, - -0.13475702986492485, - -0.1347571764023933, - -0.1347573167718269, - -0.13475745061259084, - -0.13475757804926394, - -0.13475769933633355, - -0.13476297301267226, - -0.1347694229705568, - -0.134771483611348, - -0.13477216095270164, - -0.13477243186312882, - -0.1347725811977529, - -0.13477269182236074, - -0.1347727879545826, - -0.13477287678124605, - -0.1347600562313603, - -0.13471880230406327, - -0.13470514864715236, - -0.13469522906581385, - -0.13469007622591694, - -0.13468856778208427, - -0.1346881428568734, - -0.13468803094562135, - -0.13468800899692265, - -0.1346880125504436, - -0.13468802299568605, - -0.13468803497584397, - -0.13468804696452477, - -0.1346554559933896, - -0.13463467991170033, - -0.13462853645656692, - -0.13462675840238975, - -0.13462624091902212, - -0.13462608715863464, - -0.13462603849569882, - -0.134626020347273, - -0.13462601119788356, - -0.13462600483400455, - -0.13462599945474318, - -0.13462599453199314, - -0.13462598990507554, - -0.13462598551966326, - -0.13462598135248438, - -0.13462597738959245, - -0.1346259736200809, - -0.1346259700342572, - -0.13462596662309534, - -0.134625963378067, - -0.1346259602910733, - -0.1346259573544184, - -0.13462595456077922, - -0.13462595190318952, - -0.1346259493750255, - -0.13462594696998242, - -0.13462594468206618, - -0.13462594250557064, - -0.13462594043507095, - -0.13462593846540497, - -0.1346259365916619, - -0.1346259348091703, - -0.13462593311348625, - -0.13462593150038182, - -0.1346259299658356, - -0.1346259285060226, - -0.13462592711730176, - -0.13462592579621174, - -0.13462592453946, - -0.13462592334391107, - -0.13462592220658548, - -0.13462592112464872, - -0.13462592009540159, - -0.13462591911627875, - -0.13462591818483927, - -0.13462591729876117, - -0.1346259164558354, - -0.13462591565395984, - -0.13462591489113596, - -0.1346259141654611, - -0.1346259134751273, - -0.13462591281841277, - -0.13462591219368034, - -0.13462591159937184, - -0.1346256014102501, - -0.13459364030549495, - -0.13457927042698759, - -0.13457507587432382, - -0.13457386541158164, - -0.13457351400241174, - -0.13457340983108793, - -0.13457337691919677, - -0.13457336464629474, - -0.13457335844644738, - -0.13457335412366656, - -0.13457335046477903, - -0.13457334711480864, - -0.1345733439658984, - -0.13457334098154822, - -0.1345733381460476, - -0.13457333544991965, - -0.13454939527785384, - -0.1345280412992449, - -0.13452165744961098, - -0.13451981840411126, - -0.1345192880772056, - -0.1345191339253604, - -0.13451908795236128, - -0.13826732728150998, - -0.140170112002025, - -0.1407680143825849, - -0.1409103104798262, - -0.1408560113615013, - -0.1408281028812313, - -0.1408106825969824, - -0.14079716429875289, - -0.14078546804354672, - -0.14077458517243976, - -0.1407644245398624, - -0.1407546406413672, - -0.140745467558082, - -0.14073693511836605, - -0.14072879194346774, - -0.1407210040235973, - -0.1407135816770482, - -0.14070695489148222, - -0.14070050438715914, - -0.14069726668658178, - -0.14069476904009146, - -0.14069034169614011, - -0.14068535949729116, - -0.14068040530670115, - -0.14067564106692515, - -0.14067107956910144, - -0.14066675528684328, - -0.14066262790790185, - -0.1406587420249752, - -0.14065508526054685, - -0.14065157092678665, - -0.1406482073053964, - -0.14064508919975435, - -0.14064206129163592, - -0.14063919342356523, - -0.1406365106876907, - -0.14063395605878865, - -0.14063153156736669, - -0.1406291894896297, - -0.14062705815576304, - -0.140625005202682, - -0.14062303730658848, - -0.14062117378403768, - -0.14061937533744504, - -0.14061771399060582, - -0.14061610683497155, - -0.140614628514296, - -0.140613193767461, - -0.14061178343443975, - -0.14061052883506367, - -0.14060934670189865, - -0.1406081792385024, - -0.14060707502547215, - -0.14060594008174, - -0.1406049552517823, - -0.14060405922394356, - -0.14060322019426189, - -0.14060231403181456, - -0.14060151086804534, - -0.14060078352379476, - -0.14060010478272997, - -0.14059935514275518, - -0.14059868975754025, - -0.14059809571434126, - -0.14059754498229596, - -0.14059702685682285, - -0.14059651921032035, - -0.1405960141143434, - -0.14059554049813885, - -0.14059509437212267, - -0.14059463647297007, - -0.14059423753674985, - -0.1405938732498448, - -0.1405935276655903, - -0.1405930769108313, - -0.14059271375767773, - -0.14059240524693484, - -0.14059212492690165, - -0.1405918631865964, - -0.14059161629531475, - -0.14059138254697395, - -0.14059116094648721, - -0.14059095076184477, - -0.1405907513706862, - -0.1405905622070804, - -0.140590382742453, - -0.14059021247815773, - -0.14059004873383787, - -0.14058988487677662, - -0.14058968335859484, - -0.14058944015889818, - -0.14058927137975655, - -0.14058913463266626, - -0.14058901286707592, - -0.14058890005467858, - -0.14058879394730855, - -0.14058869359274584, - -0.1405885984891397, - -0.14058850829693437, - -0.1405884227404267, - -0.1405883415738441, - -0.14058826456938564, - -0.1405881915127536, - -0.14058812220125705, - -0.1405880564428076, - -0.14058799405523453, - -0.1405879348657298, - -0.14058787871035305, - -0.1405878254335686, - -0.14058777488781696, - -0.14058772693310181, - -0.1405876814366018, - -0.14058763827123666, - -0.14058759658668274, - -0.14058755734005246, - -0.1405875203458263, - -0.1405874853310353, - -0.1405874521394063, - -0.14058742065883223, - -0.14058739079525895, - -0.14058736246364, - -0.14058733558471212, - -0.1405873100837592, - -0.14058728589005945, - -0.14058726293657275, - -0.1405872411597142, - -0.14058722049916597, - -0.1405872008977026, - -0.1405871823010338, - -0.14058716465765234, - -0.14058714791869242, - -0.14058713203779144, - -0.14058711697096488, - -0.14058710267648175, - -0.14058708911475062, - -0.14058707624821068, - -0.14058706404122495, - -0.14058705245998354, - -0.1405870414724113, - -0.14058703104807463, - -0.1405870211581021, - -0.1405870117751014, - -0.14058700287308498, - -0.14058699442739647, - -0.14058698641464365, - -0.14058697881263452, - -0.14058697160031325, - -0.14058696475770469, - -0.14058695826585657, - -0.14058695210678793, - -0.14058694626344068, - -0.14058694071963074, - -0.14058693546000275, - -0.14058693046998968, - -0.14058692573577067, - -0.14058692124423403, - -0.14058691698293854, - -0.14058691294008277, - -0.14058690910446728, - -0.14058690546547076, - -0.14058690201301405, - -0.14058689873753413, - -0.14058689562995844, - -0.14058689268168123, - -0.1405868898845366, - -0.14058688723077697, - -0.14058688471305197, - -0.14058688232438896, - -0.14058688005817166, - -0.14058687790812285, - -0.14058687586828875, - -0.14058687393301836, - -0.14058687209695306, - -0.14058687035500614, - -0.14058686870235357, - -0.14058686713441784, - -0.14058686564685652, - -0.14058686423554975, - -0.140586862896587, - -0.14058686162626177, - -0.14058686042105567, - -0.1405868592776291, - -0.1405868581928168, - -0.1405868571636125, - -0.1405868561871663, - -0.14058685526077394, - -0.14058685438187005, - -0.1405868535480198, - -0.1405868527569138, - -0.14058685200636084, - -0.14058685129428158, - -0.1405868506187045, - -0.1405868499777587, - -0.14058684936966853, - -0.14058684879274969, - -0.14058684824540435, - -0.1405868477261164, - -0.1405868472334481, - -0.14058684676603447, - -0.1405868463225807, - -0.1378560699208454, - -0.13648703684309366, - -0.13603183524769913, - -0.1359052297125046, - -0.1358697142320002, - -0.1358572312958988, - -0.13585277335121212, - -0.13585112031252405, - -0.13585045071461438, - -0.1358501287913046, - -0.1358499324932109, - -0.135849784133216, - -0.13584965640448565, - -0.1358313947212627, - -0.13581343870111764, - -0.1358067570662588, - -0.13580438226239264, - -0.13580351493441015, - -0.13580317537569406, - -0.13580302172452788, - -0.1358029346436449, - -0.13580287242150416, - -0.13580282042815398, - -0.13580277348418696, - -0.13580272971046795, - -0.13580268838260676, - -0.135802649182385, - -0.1358026119364703, - -0.1358025765251166, - -0.13580254285016996, - -0.13580251082376704, - -0.1358024803642545, - -0.13580245139464234, - -0.13578034597854685, - -0.13575086987246973, - -0.13574017905988553, - -0.13573644718163605, - -0.13573514531397457, - -0.13573469082825146, - -0.13573453184421888, - -0.1357344759241384, - -0.13573445596529696, - -0.13573444856835806, - -0.13573444557305978, - -0.13571859129538882, - -0.13556965039126626, - -0.13550669977852003, - -0.1354847397785009, - -0.13547714514090234, - -0.13547455120707, - -0.13547369621103547, - -0.1354734444056906, - -0.13547340039974834, - -0.13547342661444203, - -0.13547347524504702, - -0.13547352974419355, - -0.13547358444452906, - -0.13547363746284868, - -0.1354736882292896, - -0.13547373662712445, - -0.13547378269341853, - -0.1354738265149794, - -0.135473868192313, - -0.1354739078272488, - -0.13547394551879746, - -0.13547398136187344, - -0.1354740154469991, - -0.1354740478603497, - -0.13547407868390374, - -0.13534246955654639, - -0.13521635210746863, - -0.1351715266006112, - -0.13515602976236954, - -0.13515072694959704, - -0.13514850285034172, - -0.1351443817459348, - -0.13514277846644854, - -0.13514228731423214, - -0.1351421812158359, - -0.13514220572352464, - -0.13514227258390987, - -0.1351423512871085, - -0.13514243137551, - -0.13514250935049116, - -0.13514258412429817, - -0.13514265544040704, - -0.13514272332508534, - -0.1351427878971618, - -0.13514284930222717, - -0.13514290769003415, - -0.13514296320690586, - -0.13512765604732557, - -0.13508178873068302, - -0.13506434150066038, - -0.1350583207010685, - -0.1350562773754217, - -0.13505561259768245, - -0.1350554241773099, - -0.13505539903478592, - -0.1350554285902888, - -0.13505169795338134, - -0.13504435207361873, - -0.13504167244491147, - -0.13504077590445215, - -0.1350404979710621, - -0.13504043313386635, - -0.13504044070618232, - -0.13504047193134935, - -0.13504050995853448, - -0.1350405490080324, - -0.1350405871395871, - -0.13504062374239026, - -0.1350406586640118, - -0.13504069190819212, - -0.13504072353009006, - -0.13504075360006138, - -0.13504078219121277, - -0.13504080937521096, - -0.13504083522094348, - -0.13504085979416436, - -0.1350408831574816, - -0.13504090537045108, - -0.13504092648970764, - -0.13504094656910146, - -0.1350409656598322, - -0.13504098381057866, - -0.13504100106762484, - -0.13504101747497296, - -0.13504103307446108, - -0.1350410479058658, - -0.13504106200700555, - -0.13504107541383767, - -0.1350410881605484, - -0.13504110027963975, - -0.1350411118020146, - -0.1350411227570547, - -0.135041133172693, - -0.13504114307548945, - -0.13504115249069484, - -0.1350411614423169, - -0.1350411699531818, - -0.13504117804499052, - -0.13504118573837764, - -0.13504119305295964, - -0.1350412000073888, - -0.13504120661939717, - -0.1350412129058455, - -0.13504121888276344, - -0.13504122456539136, - -0.13504122996822052, - -0.1350405600140061, - -0.13503611994410325, - -0.135034141442467, - -0.13503206594047246, - -0.13503124652601076, - -0.13503096567158057, - -0.13503087239176034, - -0.13503084401289445, - -0.13503083796214047, - -0.13503083947362074, - -0.13503084343184024, - -0.13503084807015336, - -0.13503085278374677, - -0.13503085737062598, - -0.13503086176821394, - -0.1350308659619479, - -0.13503086995357602, - -0.1350308737501742, - -0.13503087736034836, - -0.13503088079293096, - -0.1350308840565468, - -0.13503088715947556, - -0.13503089010961458, - -0.13503089291448306, - -0.1350308955812329, - -0.13503089811666383, - -0.13503090052724334, - -0.13503090281911959, - -0.13503090499813714, - -0.13503090706985374, - -0.1350309090395525, - -0.1350297787267957, - -0.13501945134284227, - -0.13501511023361135, - -0.13501360202088625, - -0.135013083025269, - -0.13501290711866906, - -0.13501285005579555, - -0.13501283403496891, - -0.1350128320692553, - -0.13501283480356957, - -0.13501283900048697, - -0.13501284354493534, - -0.13501284805787264, - -0.1350128524152653, - -0.13501285658119752, - -0.13501286054997888, - -0.13501286432607276, - -0.13501286791714862, - -0.1350128713316879, - -0.12751679401381216, - -0.13079674285768284, - -0.13194316945876663, - -0.13234751081992666, - -0.132494020681495, - -0.13255075924049695, - -0.13257605722716126, - -0.13259016926307016, - -0.13260013794833989, - -0.13260842051910438, - -0.13261588055006085, - -0.13262296878123025, - -0.13263035961635417, - -0.13263773769784246, - -0.13264487563397495, - -0.13265170479036273, - -0.1326582221490319, - -0.13266459162389982, - -0.1326715779151836, - -0.13267875373515464, - -0.1326857790390455, - -0.13269252851266294, - -0.13269896919918878, - -0.13270510008907704, - -0.13271093081604782, - -0.13271647423821328, - -0.13272174387067198, - -0.13272675301178471, - -0.13273151446001125, - -0.13273604043596213, - -0.1327403425751099, - -0.1327444319441956, - -0.1327483190649818, - -0.132752013939673, - -0.13275552607607946, - -0.13275886451188168, - -0.13276213299637932, - -0.13276555486277725, - -0.13276895348974824, - -0.13277223530643234, - -0.1327753725578824, - -0.13277836064697984, - -0.1327812028436792, - -0.13278390493402964, - -0.13278647335619226, - -0.13278891455836103, - -0.1327912347844939, - -0.1327934400094968, - -0.13279553592628454, - -0.1327975288676033, - -0.1327994364132207, - -0.13280125928703645, - -0.13280299535078088, - -0.13280464659252075, - -0.13280621640472695, - -0.13280770853954812, - -0.13280912768213615, - -0.13281054078400795, - -0.13281195297402695, - -0.13281332080922625, - -0.13281462978668968, - -0.1328158769431964, - -0.13281706327910908, - -0.13281819108727044, - -0.13281926301862215, - -0.1328202817584143, - -0.1328212499168931, - -0.1328221699951849, - -0.1328230443774085, - -0.13282387533180637, - -0.13282466501485582, - -0.1328254154762393, - -0.13282612866394922, - -0.13282680642926165, - -0.13282745053152045, - -0.1328280626426888, - -0.13282864435169134, - -0.1328291971685337, - -0.13282972252822334, - -0.13283022179449427, - -0.13283069626334734, - -0.132831147166414, - -0.13283157567415196, - -0.13283198289888815, - -0.1328323698976996, - -0.1328327376751622, - -0.1328330871859563, - -0.1328334193373459, - -0.13283373499153253, - -0.1328340349678953, - -0.1328343200451154, - -0.13283459096320005, - -0.13283484842540086, - -0.13283509310004032, - -0.1328353256222486, - -0.13283554659560898, - -0.1328357565937259, - -0.13283595616171445, - -0.13283614581761619, - -0.1328363260537417, - -0.14031829135274274, - -0.1369908398590025, - -0.1358038516400449, - -0.13537166874428103, - -0.13521271072303886, - -0.13515787023322542, - -0.13512784697378133, - -0.1351088457576435, - -0.13509287579022203, - -0.13507783254326008, - -0.13506357660677915, - -0.1350500418762707, - -0.13503718315659496, - -0.13502496362718908, - -0.1350133504428423, - -0.1350292900141104, - -0.1350407784401914, - -0.13503971124265285, - -0.1350343894245095, - -0.13502782498762897, - -0.13502105913512621, - -0.13501444411625874, - -0.13500809205122236, - -0.13500203171091427, - -0.1349962632620387, - -0.1349907773671442, - -0.13498556183314295, - -0.13498060391101638, - -0.1349758910773883, - -0.1349299625928133, - -0.13477683774484162, - -0.13471424381124986, - -0.13468917057850646, - -0.1346773552362712, - -0.13467030392338608, - -0.13466505523451364, - -0.13466057221691896, - -0.1346564874210576, - -0.13465266652863708, - -0.13464905660745805, - -0.13464563333290214, - -0.13464238262128764, - -0.13463929422912105, - -0.1346363595136601, - -0.1346335706410704, - -0.1346309202985664, - -0.13462840158241365, - -0.1346490355752486, - -0.13468334834721823, - -0.13469471498973454, - -0.13469755871568487, - -0.13469750032948882, - -0.1346964887127662, - -0.13469519614512304, - -0.13469385296904618, - -0.13469253662822195, - -0.13469127174025314, - -0.13469006474074244, - -0.13468891587327422, - -0.1346878233357682, - -0.1346867847112733, - -0.13468579745874126, - -0.1346848590785624, - -0.1346839671656964, - -0.13468311942410013, - -0.13468231366794137, - -0.1346815478184343, - -0.1346808198993287, - -0.13468012803210905, - -0.13467947043124573, - -0.13467884539962635, - -0.13467825132418376, - -0.13467768667174113, - -0.1346771499850549, - -0.13468421513594406, - -0.13470334845989682, - -0.13471027794803966, - -0.13471241884748467, - -0.1347129133089233, - -0.13471285111120823, - -0.13471260814657468, - -0.13471231369218367, - -0.13471201186329165, - -0.13471171738395488, - -0.13471143485092277, - -0.13471116538681205, - -0.1347111128507332, - -0.1347111673155552, - -0.13471104350962385, - -0.1347108606907363, - -0.1347106643802337, - -0.13471046999634903, - -0.13471028253829676, - -0.13471010342291423, - -0.13470993284519378, - -0.13470977059273034, - -0.13470961632625786, - -0.13470946967585276, - -0.13470933027350313, - -0.13470406486795047, - -0.13468922521189933, - -0.13468354424812712, - -0.13468151297576247, - -0.13468074896008825, - -0.1346804255246455, - -0.13468025712484885, - -0.13468014504890266, - -0.13468005508417089, - -0.1346799752889497, - -0.13467990141563052, - -0.13467983187869256, - -0.1346797660174256, - -0.13467970349596325, - -0.1346796440959007, - -0.13467958764445062, - -0.1346795339893891, - -0.13467948299017418, - -0.13467943451464695, - -0.13467938843768218, - -0.13467934464051604, - -0.13467930301032022, - -0.13467926343986894, - -0.1346792258272481, - -0.13467919007558882, - -0.13467915609281644, - -0.13467912379141012, - -0.13467909308818166, - -0.1346790639040585, - -0.1346790361638789, - -0.1346790097962012, - -0.13467898473311765, - -0.13467896091008144, - -0.13467893826573837, - -0.1346789167417702, - -0.13467889628274424, - -0.13461002398097166, - -0.13456665014489524, - -0.13455155805445176, - -0.13454639696161175, - -0.1345446574736315, - -0.13454409508238788, - -0.13454393645900573, - -0.1345439152213653, - -0.13454393966625075, - -0.1345439782768712, - -0.1345440202713448, - -0.13454406200873245, - -0.1345441023050307, - -0.13454414081934385, - -0.13454417749796518, - -0.13454421238298628, - -0.13454424554650235, - -0.1345442770680895, - -0.1345443070271881, - -0.1345443355006104, - -0.13454436256181262, - -0.13454438828076115, - -0.1345444127240065, - -0.13454443595481724, - -0.1345444580333284, - -0.13454447901669722, - -0.13454449895924392, - -0.1345445179125952, - -0.13454453592581742, - -0.1345445530455427, - -0.13454456931609174, - -0.13454458477958478, - -0.13454459947605382, - -0.13454461344354532, - -0.13454462671821715, - -0.13454463933443545, - -0.1345446513248607, - -0.13454466272053392, - -0.13454467355095595, - -0.13454468384416568, - -0.13454469362680818, - -0.13454470292420947, - -0.13454471176043892, - -0.1345447201583716, - -0.13454472813974735, - -0.13454473572522915, - -0.13454474293445426, - -0.13454474978608513, - -0.13454475629786009, - -0.13454476248663627, - -0.13454476836843549, - -0.13454477395848372, - -0.13454477927125286, - -0.13454478432049685, - -0.1345447891192871, - -0.13454479368004654, - -0.13454479801458166, - -0.1345448021341146, - -0.13454480604930957, - -0.13454480977030142, - -0.13454481330672438, - -0.13454471051816105, - -0.1345413973036732, - -0.13453985963159976, - -0.13453933064074156, - -0.1362999698830161, - -0.13726521641088585, - -0.1376214309756045, - -0.13773903682249844, - -0.13767243447381525, - -0.13764261541878625, - -0.13762757330224173, - -0.13761821181733488, - -0.1376111494376907, - -0.1376051239418997, - -0.13759965838108276, - -0.1375945670692486, - -0.13758977263712824, - -0.1375852382671961, - -0.13758094257890757, - -0.1375768703075143, - -0.13757300883201182, - -0.1375693468699469, - -0.13756587397557613, - -0.13756258033644378, - -0.13755945668136418, - -0.1375564942305211, - -0.13755368466197465, - -0.13755102008501852, - -0.13754849301681124, - -0.13754609636091447, - -0.13754382338720017, - -0.13754166771288903, - -0.1375396232846045, - -0.13753768436136726, - -0.13753584549846803, - -0.13753410153217865, - -0.13753244756525165, - -0.13753087895316735, - -0.13752939129109235, - -0.13752798040150974, - -0.137526642322487, - -0.1375253732965532, - -0.13752416976014564, - -0.13752302833360144, - -0.13752194581167151, - -0.13752091915451575, - -0.1375199454791696, - -0.1375190220514455, - -0.13751814627825953, - -0.13751731570034337, - -0.1375165279853453, - -0.1375157809212746, - -0.1375150724102944, - -0.13751440046282895, - -0.13751376319197525, - -0.13751315880820847, - -0.13751258561435284, - -0.13751204200081765, - -0.13751152644107725, - -0.1375110374873824, - -0.13751057376669928, - -0.13751013397684853, - -0.13750971688285274, - -0.13750932131346635, - -0.13750894615788833, - -0.1375085903626404, - -0.13750825292861052, - -0.1375079329082467, - -0.13750762940289762, - -0.1375073415602874, - -0.13750706857212236, - -0.13750680967182097, - -0.13750656413236423, - -0.13750633126425083, - -0.13750611041356056, - -0.1375059009601209, - -0.13750570231576476, - -0.1375055139226759, - -0.1375053352518263, - -0.13750516580148914, - -0.13750500509582925, - -0.1375048526835675, - -0.13750470813671375, - -0.13750457104936498, - -0.13750444103656428, - -0.13750431773322214, - -0.13750420079308956, - -0.13750408988778443, - -0.13750398470587374, - -0.13750388495199564, - -0.13750379034602936, - -0.1375037006223118, - -0.13750361552888854, - -0.13750353482680827, - -0.13750345828945043, - -0.13750338570189033, - -0.13750331686029316, - -0.13750325157134477, - -0.13750318965170666, - -0.1375031309275022, - -0.13750307523382702, - -0.13750302241428766, - -0.13750297232056008, - -0.13750292481197599, - -0.1375028797551267, - -0.13750283702348762, - -0.1375027964970631, - -0.1375027580620511, - -0.13750272161052138, - -0.13750268704011373, - -0.13750265425375172, - -0.13750262315936695, - -0.1375025936696432, - -0.13750256570177083, - -0.1375025391772116, - -0.13750251402148278, - -0.13750249016394386, - -0.13750246753760031, - -0.13750244607891526, - -0.1375024257276293, - -0.13750240642659536, - -0.1375023881216125, - -0.13750237076127966, - -0.13750235429684635, - -0.13750233868207867, - -0.13750232387312886, - -0.13750230982841224, - -0.13750229650848847, - -0.1375022838759549, - -0.1375022718953376, - -0.1375022605329931, - -0.137502249757016, - -0.1375022395371455, - -0.13750222984468236, - -0.13750222065241025, - -0.13750221193451598, - -0.13750220366651847, - -0.13750219582519974, - -0.1375021883885417, - -0.13750218133566067, - -0.13750217464675177, - -0.13750216830303177, - -0.13750216228668624, - -0.13750215658082085, - -0.13750215116941344, - -0.1375021460372681, - -0.13750214116997234, - -0.13750213655385932, - -0.13750213217596602, - -0.1375021280239991, - -0.13750212408629925, - -0.13750212035180828, - -0.1375021168100406, - -0.13750211345104957, - -0.13750211026540338, - -0.13750210724415582, - -0.13750210437882315, - -0.13750210166135907, - -0.13750209908413294, - -0.13750209663990787, - -0.1375020943218186, - -0.13750209212335776, - -0.13750209003835143, - -0.13750208806094313, - -0.13750208618558207, - -0.13750208440700146, - -0.1375020827202062, - -0.13750208112045975, - -0.13750207960327004, - -0.1375020781643768, - -0.13750207679973878, - -0.13750207550552454, - -0.13750207427810024, - -0.1375020731140184, - -0.13750207201001025, - -0.1375020709629753, - -0.13750206996997422, - -0.13750206902821827, - -0.1375020681350622, - -0.1375020672879984, - -0.13750206648464888, - -0.137502065722757, - -0.1375020650001836, - -0.13750206431489911, - -0.13750206366497916, - -0.1375020630485994, - -0.1375020624640289, - -0.1375020619096254, - -0.13750206138383267, - -0.13750206088517394, - -0.13750206041224897, - -0.1375020599637296, - -0.13750205953835737, - -0.13750205913493674, - -0.13750205875233495, - -0.13750205838947782, - -0.13750205804534638, - -0.13750205771897386, - -0.13750205740944482, - -0.1375020571158891, - -0.13750205683748262, - -0.13750205657344375, - -0.137502056323031, - -0.13750205608554014, - -0.13599691701018232, - -0.13520104104877706, - -0.134930073485098, - -0.13486385279079063, - -0.13485968669819864, - -0.1348601556929916, - -0.13486211802150058, - -0.1348645500933588, - -0.1348670729262794, - -0.13486954871601586, - -0.134871929871909, - -0.13487420242441325, - -0.13487636481552795, - -0.13487841995587527, - -0.1348803722557413, - -0.13488222652068982, - -0.1348839875458666, - -0.1348798528723466, - -0.13484668688875978, - -0.1348332930829082, - -0.1348291912725653, - -0.13482854065872693, - -0.13482913926315676, - -0.13483016375084525, - -0.13483130760771864, - -0.13483245795713605, - -0.1348335744104895, - -0.13483255752525275, - -0.13482940148696654, - -0.13482872595551637, - -0.13482903786516703, - -0.1348296921107876, - -0.13483044763308522, - -0.13483121542603066, - -0.13483196341864737, - -0.13483268081746672, - -0.13483336474321872, - -0.13483401522459074, - -0.1348346333245519, - -0.1348352204408007, - -0.13483577804619354, - -0.13483630759398338, - -0.13483681048469703, - -0.13483728805600687, - -0.1348377415811029, - -0.13483817227014308, - -0.13483858127275405, - -0.13483896968082607, - -0.13483933853132646, - -0.13483968880902836, - -0.13483999931037385, - -0.13483765951775123, - -0.13483653155584505, - -0.13483628220165264, - -0.13483635669585584, - -0.1348365441519557, - -0.13483676591884053, - -0.13483699291838955, - -0.134837214634793, - -0.13483742749099276, - -0.13483763049256206, - -0.13483782359572757, - -0.13483800709650545, - -0.1348381814025496, - -0.1348383469484189, - -0.13483850416457366, - -0.13483865346646184, - -0.13483879525111128, - -0.1348389298964916, - -0.13483905776189348, - -0.13483917918864413, - -0.13483929450093657, - -0.1348394040066526, - -0.13483950799818045, - -0.1348396067531874, - -0.134839700535359, - -0.13483978959510382, - -0.1348398741702209, - -0.1348399544865344, - -0.13484003075849754, - -0.13484010318976555, - -0.13484017197373654, - -0.1348402372940718, - -0.13484029932518374, - -0.13484035823270193, - -0.13484041417391615, - -0.13484046729819515, - -0.134840517747386, - -0.1348405656561938, - -0.13467085297930187, - -0.13456447904822436, - -0.13452466132947238, - -0.1345100921221842, - -0.1345049572040301, - -0.13450333674138237, - -0.1345030162303562, - -0.13450261980084952, - -0.13450256167874572, - -0.13450278432017185, - -0.13450310108838873, - -0.1345034412970476, - -0.13450377907889693, - -0.13450410531974774, - -0.13450441714611944, - -0.13450471399274866, - -0.134504996132366, - -0.1345052641268261, - -0.13450551862294924, - -0.1345057602772972, - -0.13450598972913463, - -0.1345062075913695, - -0.1345064144481715, - -0.13450661085502788, - -0.13450679733967616, - -0.13450697440330844, - -0.1345071425218418, - -0.13450730214716525, - -0.13450745370834505, - -0.1345075976127749, - -0.13450773424726656, - -0.13450786397909129, - -0.1345079871569671, - -0.13450810411199318, - -0.13450821515854391, - -0.13450832059511034, - -0.13450842070510444, - -0.1345085157576214, - -0.13450860600815948, - -0.13450869169931182, - -0.1345087730614145, - -0.13450885031316853, - -0.134508923662224, - -0.1345089933057435, - -0.13450905943092661, - -0.13450912221551864, - -0.13450918182828175, - -0.13450923842945556, - -0.1345092921711824, - -0.13450934319791968, - -0.13450939164682646, - -0.13450943764813306, - -0.13450948132548948, - -0.13450952279630043, - -0.13450956217203816, - -0.1345095995585456, - -0.1345096350563158, - -0.13450966876076662, - -0.13450970076249524, - -0.13450973114752166, - -0.13450975999752104, - -0.13450978739004077, - -0.13450981339871174, - -0.13450983809344533, - -0.13450986154062033, - -0.13450988380326295, - -0.13450990494121476, - -0.13450992501129325, - -0.1345099440674472, - -0.13450996216089905, - -0.13450997934028447, - -0.1345099956517806, - -0.13451001113923275, - -0.13451002584427152, - -0.13451003980642234, - -0.13451005306321734, - -0.13451006565028956, - -0.13451007760147274, - -0.13451008894889085, - -0.13451009972304653, - -0.13451010995290105, - -0.1345101196659507, - -0.13451012888830538, - -0.1345101376447537, - -0.13451014595883296, - -0.13451015385289108, - -0.13451016134814842, - -0.13451016846475097, - -0.13451011521400114, - -0.13450887369881995, - -0.13450828517888652, - -0.13450806958559317, - -0.13450799425823795, - -0.13450797115642252, - -0.13450796734084933, - -0.13450797049833738, - -0.1345079760335393, - -0.13450798223854812, - -0.1345079884853664, - -0.13450799454954349, - -0.13450800035710514, - -0.13450800588988318, - -0.13450801115010844, - -0.134508016147191, - -0.13450802089279393, - -0.1345080253990103, - -0.13450802967770614, - -0.13450803374029177, - -0.1345080375976517, - -0.13450804126014276, - -0.13450804473760464, - -0.1268712036172403, - -0.13029075441514315, - -0.1316034539910443, - -0.13212540299433792, - -0.13234989023189117, - -0.13246159156121834, - -0.1325296884030573, - -0.13258013963021817, - -0.13262272665168445, - -0.13266117320802018, - -0.13269693314532552, - -0.13273060795485836, - -0.13276247726981472, - -0.13279269752592596, - -0.13282137644085948, - -0.1328486010171207, - -0.13287444814645735, - -0.1328991936745899, - -0.13292332298757742, - -0.13294653427560976, - -0.1329686850858261, - -0.1329897576695641, - -0.13300977979908424, - -0.13302879458635417, - -0.13304684924373456, - -0.13306399095102026, - -0.13308026538437093, - -0.13309571623989885, - -0.13311038512658946, - -0.13312431159417024, - -0.133137533208161, - -0.13315008563934955, - -0.1331620027555849, - -0.13317331671148874, - -0.13318405803459066, - -0.13319434200308805, - -0.13320438821371913, - -0.1332140625839108, - -0.1332232983621924, - -0.13323208531624772, - -0.13324043398786034, - -0.13324836200728585, - -0.13325588897887505, - -0.13326303459188749, - -0.13326981794304174, - -0.13327625731329426, - -0.1332823701139155, - -0.1332881728947449, - -0.13329368137438807, - -0.1332989104772997, - -0.13330387437215255, - -0.1333085865094486, - -0.13331305965767212, - -0.13331730593778235, - -0.1333213368560103, - -0.1333251834603368, - -0.13332892382311898, - -0.13333252143163515, - -0.1333359542153512, - -0.13333921935608736, - -0.1333423211487295, - -0.1333452663001009, - -0.13334806216840114, - -0.1333507161122108, - -0.13335323525739096, - -0.133355626420983, - -0.13335789609373375, - -0.1333600504441657, - -0.1333620953302273, - -0.1333640363132968, - -0.13336587867257674, - -0.1333676274191808, - -0.13336928730965975, - -0.13337086285889668, - -0.13337235835237934, - -0.13337377785784413, - -0.13337512523634407, - -0.13337640415274507, - -0.13337761808569812, - -0.13337877033709897, - -0.13337986404106886, - -0.1333809021724822, - -0.13338188755505348, - -0.13338282286902245, - -0.13338371065844087, - -0.13338455333809496, - -0.13338535320007144, - -0.1333861124199945, - -0.13338683306294086, - -0.13338751708905824, - -0.13338816635889583, - -0.1333887826384675, - -0.13338936760405232, - -0.1333899228467551, - -0.13339044987683618, - -0.13339095012781524, - -0.13339142496037548, - -0.13339187566605948, - -0.1333923034707873, - -0.13339270953818536, - -0.1410199194977895, - -0.13756948900613142, - -0.13622946985161044, - -0.13568812584107784, - -0.1354532934317302, - -0.13535015968658431, - -0.13528303908689665, - -0.13523004991483453, - -0.1351837778533155, - -0.13514136872367463, - -0.13510168093746594, - -0.13506422066129464, - -0.13502874104421475, - -0.134995091259785, - -0.1349631595502853, - -0.13495191997272402, - -0.13494592782320622, - -0.1349282954667334, - -0.13490686885608824, - -0.1348847668145105, - -0.1348631231487634, - -0.13484232721809106, - -0.13482249089666626, - -0.1348036236850708, - -0.13478569831967085, - -0.13476867530423528, - -0.13475251203453034, - -0.13473716614664105, - -0.13472259670198697, - -0.13470876456432876, - -0.13469563247705113, - -0.13468316503125327, - -0.13467132859594458, - -0.13466009123696, - -0.13464942263441396, - -0.13463929400225344, - -0.13462967801109169, - -0.13462054871466134, - -0.13461188147987427, - -0.13460365292038545, - -0.13459584083349685, - -0.13458842414025615, - -0.13458138282857973, - -0.13457469789925683, - -0.1345683513146841, - -0.13456232595019893, - -0.1345735209214393, - -0.1345916762344658, - -0.13459577487774851, - -0.13459445756387245, - -0.13459125534092875, - -0.13458748462971054, - -0.13458363114677718, - -0.13457987008490901, - -0.13457626076840257, - -0.13457281947775177, - -0.13456954668520804, - -0.134566437231405, - -0.1345634841191677, - -0.13456067991956575, - -0.13455801728513586, - -0.134555489129654, - -0.13455308868374882, - -0.13455080950464582, - -0.13454864546929998, - -0.13454659076185424, - -0.13454463985946424, - -0.13454278751800117, - -0.13454102875816273, - -0.13453935885216017, - -0.13453777331104225, - -0.13453626787263445, - -0.1345348384900915, - -0.13453348132101425, - -0.13453219271712447, - -0.1345309692144593, - -0.13452980752405694, - -0.1345287045231146, - -0.13452765724659815, - -0.13452666287926787, - -0.1345257187481124, - -0.13452482231516297, - -0.13452397117067133, - -0.13452316302663042, - -0.13452239571062607, - -0.13452166715999514, - -0.1345209754162823, - -0.1345203186199747, - -0.13451969500550376, - -0.1345191028964988, - -0.1345185407012796, - -0.13451800690858023, - -0.13451750008348326, - -0.13451701886356615, - -0.13451656195523637, - -0.13451612813025465, - -0.1345157041530364, - -0.1344998653933025, - -0.13449048462411994, - -0.1344867610926698, - -0.13448518953344404, - -0.1344844349786633, - -0.13448399854892615, - -0.134483682771746, - -0.13448341961648513, - -0.1344831834747065, - -0.13448296439807778, - -0.13448275831335238, - -0.13448256336280692, - -0.13448237853438136, - -0.1344822031483904, - -0.1344820366647031, - -0.1344818786098407, - -0.1344817285489784, - -0.1344815860747746, - -0.13448145080253798, - -0.13448132236779053, - -0.13448120042476527, - -0.13448108464527925, - -0.13448097471777873, - -0.1344808703464703, - -0.13448077125051874, - -0.13448067716328405, - -0.1344805878316046, - -0.1344805030151146, - -0.13448042248559797, - -0.1344803460263746, - -0.1344802734317141, - -0.134480204506285, - -0.13448013906462955, - -0.13448007693066474, - -0.1344800179372059, - -0.13447996192551856, - -0.1344799087448914, - -0.13447985825223135, - -0.1344798103116774, - -0.13447976479423623, - -0.13447972157743385, - -0.1344796805449855, - -0.13447964158648515, - -0.13447960459710775, - -0.1344795694773253, - -0.13447953613264035, - -0.13447950447333298, - -0.1344794744142175, - -0.13447944587441318, - -0.13447941877712696, - -0.1344793930494489, - -0.134479368622153, - -0.1344793454295138, - -0.13447932340912488, - -0.13447930250173712, - -0.134479282651095, - -0.13447926380378594, - -0.13447924590909702, - -0.1344792289188791, - -0.13447921278741615, - -0.13447919747130319, - -0.1344791829293302, - -0.13447916912236788, - -0.13447915601326596, - -0.13447914356675222, - -0.1344791317493365, - -0.13447912052922129, - -0.13447910987621642, - -0.1344790997616589, - -0.134479090158332, - -0.13447908104039674, - -0.1344790723833192, - -0.1344790641638055, - -0.13447905635974064, - -0.1344790489501251, - -0.13447904191502238, - -0.13447903523550178, - -0.13447902889359184, - -0.13447902287222796, - -0.13447901715520874, - -0.13447901172715132, - -0.1344790065734507, - -0.13447900168023813, - -0.13447899703434904, - -0.13447899262328175, - -0.1344789884351686, - -0.1344789844587391, - -0.13447898068329547, - -0.13447897709867818, - -0.1344789736952419, - -0.13447897046382976, - -0.13447896739574564, - -0.134478964482736, - -0.1344789617169613, - -0.13447895909097984, - -0.13447895659772624, - -0.13447895423049278, - -0.13447895198290846, - -0.13447894984892636, - -0.1344789478228049, - -0.13447894589909093, - -0.1344789440726095, - -0.1344789423384471, - -0.13357440482876187, - -0.13283976967102934, - -0.13256357796327048, - -0.13246402628392823, - -0.1323355002740739, - -0.1322771525112593, - -0.13226365855073094, - -0.13226696136179855, - -0.13227645821754214, - -0.1322864182065194, - -0.13228750703483555, - -0.1322886186390555, - -0.13229094558811394, - -0.13229397255064024, - -0.13229665486356024, - -0.13229906727771612, - -0.1323015189075072, - -0.1323037823028148, - -0.13230426991041958, - -0.13230090755671992, - -0.1322951061729837, - -0.13228828699005593, - -0.1322803237485573, - -0.13227100111784282, - -0.1322599595302801, - -0.1322472863715862, - -0.13223308796924785, - -0.132218307103741, - -0.1322078789787574, - -0.13220018779582995, - -0.13219305375815094, - -0.1321863400653567, - -0.13219090611700549, - -0.13219339648986983, - -0.1321941637934977, - -0.1321942265645508, - -0.1321939114847924, - -0.1321933615108036, - -0.13219268458631803, - -0.13219182849437774, - -0.13219081374744485, - -0.13218964684576867, - -0.13218841108123394, - -0.13218701372576055, - -0.13218503728104697, - -0.1321828841061568, - -0.1321808019411227, - -0.13217869985772404, - -0.13217642587243844, - -0.13217382404012065, - -0.13217102093028144, - -0.1321679727346633, - -0.13216590869999922, - -0.13216549503288239, - -0.13216567810407076, - -0.13216601383422397, - -0.13216639184940351, - -0.13216677264723675, - -0.1321671421965159, - -0.13216749590417431, - -0.1321678326572288, - -0.13216815260725912, - -0.13216852629725012, - -0.13216889007485186, - -0.13216903382631204, - -0.1321691238436658, - -0.1320069300355155, - -0.1315404368780609, - -0.13136859319157593, - -0.1313072496115551, - -0.13128707115902072, - -0.1312821903724011, - -0.13128300949821775, - -0.13128596877634785, - -0.13128978248091938, - -0.13129384747303194, - -0.13129805663342967, - -0.13130240647749886, - -0.13130677166591093, - -0.13131122022963554, - -0.1313157601711461, - -0.13132044142672905, - -0.1313251968523804, - -0.13133013451806264, - -0.131335125708006, - -0.13134031096571247, - -0.13134569926200454, - -0.13135128579590144, - -0.1313572203159902, - -0.13136346410622665, - -0.13137010784451958, - -0.1313770288779257, - -0.13138438217850987, - -0.13139216717140476, - -0.13140036056903845, - -0.13140906158635512, - -0.1314186191499625, - -0.13142890823842165, - -0.13144003918359856, - -0.1314521162737732, - -0.13146543189975726, - -0.1314802849337773, - -0.1314969908151441, - -0.1315157509405681, - -0.13153633492559885, - -0.1315600483140576, - -0.13158707092839572, - -0.13161850100599504, - -0.1316386014933656, - -0.13164592615930126, - -0.13164848978185856, - -0.13164929273127707, - -0.13164944930432804, - -0.13164937304216384, - -0.13164922416912567, - -0.13164905651198067, - -0.13164889788487716, - -0.13164873346212913, - -0.1316485971972811, - -0.13164848669484874, - -0.13164835252420629, - -0.13164821429487591, - -0.13164807909705928, - -0.1316479493318383, - -0.1316478256699782, - -0.13164770815083293, - -0.13164759658997835, - -0.13164749073008555, - -0.13164739756032068, - -0.13164737011406916, - -0.13164730524710816, - -0.13164722881559807, - -0.13164715077459863, - -0.1316470746856439, - -0.1316470017408029, - -0.13164693225866186, - -0.1316468662397095, - -0.13164680357232444, - -0.1316467441089789, - -0.13164668769425564, - -0.1316466341749741, - -0.13164658340368707, - -0.13164653523972544, - -0.1316464895493526, - -0.13164644620559018, - -0.13164640508793943, - -0.13164636608207797, - -0.13164632907954793, - -0.13146552063923508, - -0.13107628645549357, - -0.13093773696933922, - -0.13089325563110518, - -0.1308837488245331, - -0.1308874652905182, - -0.1308964129608037, - -0.1309077108075008, - -0.1309201600390551, - -0.13093328240980104, - -0.13094742730614137, - -0.1309625473362843, - -0.13097854410001555, - -0.13099584200800246, - -0.13101397807312937, - -0.13103324057718738, - -0.1310545155540884, - -0.13107778646608417, - -0.1310994873149177, - -0.13110896510650263, - -0.1311126899257652, - -0.13111427049348381, - -0.13111504590398176, - -0.13111551307623096, - -0.1311158567146534, - -0.13111614576476052, - -0.13111640623743331, - -0.13111664820496563, - -0.1311168758092644, - -0.13111709097287205, - -0.13111729477566722, - -0.13111748796621814, - -0.13111767115231054, - -0.13111784487249833, - -0.13111800962351042, - -0.1311181658712368, - -0.13111831405560134, - -0.13111845459311075, - -0.13111858787851385, - -0.1311187142860912, - -0.13111883417077425, - -0.13111894786916456, - -0.1311190557004908, - -0.1311191579675061, - -0.13111925495733948, - -0.13111934694230568, - -0.13111943418066435, - -0.13111951691735094, - -0.13111959538466006, - -0.1311196698029002, - -0.13111974038101148, - -0.13111980731715261, - -0.13111987079925502, - -0.13111993100555555, - -0.13111998810509057, - -0.1311200422581772, - -0.1311200936168571, - -0.13112014232532695, - -0.1311201885203431, - -0.1311202323316051, - -0.1311202738821187, - -0.13112031328854287, - -0.1311203506615176, - -0.1311203861059729, - -0.1311204197214235, - -0.1311204516022505, - -0.13112048183796327, - -0.1311205105134531, - -0.13112053770923116, - -0.13112056350165316, - -0.13112058796313458, - -0.13112061116235527, - -0.13112063316444972, - -0.13112065403119297, - -0.13112067382117087, - -0.13112069258994574, - -0.1311207103902152, - -0.1311207272719551, - -0.1311207432825641, - -0.13112075846699453, - -0.13112077286787727, - -0.13112078652564607, - -0.1311207994786471, - -0.1311208117632472, - -0.1311208234139379, - -0.13112083446342915, - -0.1311208449427452, - -0.13112085488130779, - -0.13112086430702133, - -0.13112087324634872, - -0.13112088172438824, - -0.1311208897649451, - -0.13112089739059296, - -0.13112090462274265, - -0.13112091148169905, - -0.13112091798671963, - -0.13112092415606771, - -0.13112093000706584, - -0.1311209355561407, - -0.13112094081887177, - -0.1311209458100361, - -0.13112095054364614, - -0.13112095503299231, - -0.1311209592906794, - -0.131120963328662, - -0.13112096715827642, - -0.13112097079027493, - -0.13112097423485483, - -0.13112097750168764, - -0.13112098059994623, - -0.1311209835383281, - -0.13096431077636883, - -0.13085569055931653, - -0.13081555140655118, - -0.13080120731531747, - -0.1307963924890431, - -0.13079508098787385, - -0.13079504250759624, - -0.13079545235253184, - -0.13079600630546848, - -0.13079659283783818, - -0.13079717172148825, - -0.13079772907762485, - -0.1307982607328193, - -0.1307987660579116, - -0.1307992456889324, - -0.13079970068553312, - -0.13080013222164855, - -0.13080054147313866, - -0.13080092957826955, - -0.13080129762505427, - -0.1308016466484474, - -0.13080197763108237, - -0.13080229150523903, - -0.13080258915516485, - -0.130802871419463, - -0.1308031390934096, - -0.13080339293118184, - -0.13080363364797462, - -0.13080386192201637, - -0.13080407839647795, - -0.13080428368128436, - -0.1308044783548338, - -0.1308046629656266, - -0.13080483803381046, - -0.1308050040526467, - -0.13080516148990018, - -0.13080531078915636, - -0.13080545237107247, - -0.1308055866345593, - -0.13080571395791132, - -0.1308058346998663, - -0.13080594920061875, - -0.13080605778277984, - -0.13080616075228407, - -0.1308062583992514, - -0.1308063509988064, - -0.13080643881185225, - -0.13080652208580537, - -0.13080660105529235, - -0.1307758564914186, - -0.1303397661937617, - -0.13014080501022007, - -0.13006819035713008, - -0.13004257816863346, - -0.1300343017136171, - -0.13003238022129257, - -0.13003275210508647, - -0.13003391692764185, - -0.1300353221630496, - -0.1300367660272245, - -0.13003817642935595, - -0.1300395291529693, - -0.1300408175756959, - -0.130042041466941, - -0.13004320284733964, - -0.13004430446197826, - -0.13004534922084893, - -0.13004633999706372, - -0.1300472795572191, - -0.1300481705404229, - -0.13004901545508238, - -0.13004981668203425, - -0.1300505764797978, - -0.13005129699040235, - -0.130051980245225, - -0.13005262817064792, - -0.13005324259345666, - -0.13005382524598608, - -0.13005437777099643, - -0.13005490172630835, - -0.13005539858918855, - -0.13005586976051997, - -0.13005631656874905, - -0.13005674027363134, - -0.1300571420697835, - -0.1300575230900519, - -0.13005788440870675, - -0.1300581312314067, - -0.13005826554594666, - -0.13005849973988529, - -0.13005876518915235, - -0.1300590329950238, - -0.1300592929067985, - -0.13005954158299962, - -0.13005977821656506, - -0.13006000291637995, - -0.13006021610930896, - -0.13006041831993928, - -0.13006061009007536, - -0.13006079194992207, - -0.13006096440834508, - -0.13006112795014546, - -0.1300612830358913, - -0.13006143010264226, - -0.1300615695649746, - -0.1300617018160688, - -0.1300618272287917, - -0.13006194615673458, - -0.1300620589352076, - -0.13006216588218425, - -0.1300622672991979, - -0.1300623634721883, - -0.13006245467231078, - -0.13006254115670024, - -0.1300626231691955, - -0.1300627009410271, - -0.13006277469147032, - -0.13006284462846004, - -0.1300629109491802, - -0.13006297384062043, - -0.1300630334800993, - -0.13006309003576813, - -0.13006314366708274, - -0.13006319452525475, - -0.1300632427536772, - -0.1300632884883264, - -0.13006333185815006, - -0.13006337298542678, - -0.13006341198611407, - -0.1300634489701722, - -0.1300634840418756, - -0.13006351730010823, - -0.1300635488386401, - -0.130063578746392, - -0.13006360710768852, - -0.1300636340024921, - -0.13006365950663193, - -0.13006368369201585, - -0.13006370662683253, - -0.1300637283757473, - -0.13006374900007925, - -0.13006376855797763, - -0.1300637871045855, - -0.13006380469219453, - -0.1300638213703914, - -0.1301871954201988, - -0.130703828999522, - -0.1308952902827896, - -0.13096476655625003, - -0.1309890240444903, - -0.1309966239694043, - -0.13099813249581213, - -0.1309974548819138, - -0.1309960323775136, - -0.13099439486506845, - -0.13099273524203578, - -0.13099112190178783, - -0.13098957733145575, - -0.13098810718085835, - -0.13098671100888204, - -0.130985386251921, - -0.1309841296852193, - -0.13098293795707341, - -0.1309818077803822, - -0.1309807359977389, - -0.13097971960004917, - -0.13097875572822787, - -0.13097784166891702, - -0.13097697484823154, - -0.13097615282502703, - -0.13097537328421535, - -0.13097463403031462, - -0.13097393298129287, - -0.13097326816271204, - -0.1309726377021727, - -0.13097203982404, - -0.13097147284444485, - -0.130970935166541, - -0.13097042527600714, - -0.13096994173678309, - -0.13096948318702506, - -0.1309690483352676, - -0.1309686359567928, - -0.13096824489017175, - -0.13096787403400176, - -0.1309675223437995, - -0.1309671888290627, - -0.13096687255047654, - -0.13096657261727138, - -0.13096628818471254, - -0.13096601845172176, - -0.13096576265861928, - -0.1309655200849884, - -0.13096529004764287, - -0.1309650718987018, - -0.1309648650237696, - -0.13096466884020205, - -0.1309644827954656, - -0.13096430636558176, - -0.1309641390536526, - -0.13096398038845786, - -0.13096382992313244, - -0.13096368723390517, - -0.1309635519189035, - -0.1309634235970252, - -0.13096330190686364, - -0.1309631865056894, - -0.13096307706848606, - -0.13096297328703313, - -0.13096287486903924, - -0.13096278153731972, - -0.13096269302901384, - -0.13096260909484636, - -0.13096252949842443, - -0.13096245401557102, - -0.130962382433697, - -0.1309623145511971, - -0.13096225017688698, - -0.13096218912946245, - -0.13096213123698855, - -0.1309620763364173, - -0.13096202427312567, - -0.13096197490048148, - -0.13096192807943127, - -0.13096188367810915, - -0.13096184157146085, - -0.1309618016408987, - -0.1309617637739612, - -0.13096172786399915, - -0.13096169380987552, - -0.13096166151568034, - -0.13096163089045945, - -0.1309616018479601, - -0.1309615743063868, - -0.1309615481881712, - -0.1309615234197535, - -0.13096149993137574, - -0.13096147765688454, - -0.13096145653354707, - -0.1309614365018698, - -0.1309614175054365, - -0.13096139949074553, - -0.13096138240705904, - -0.1309613662062635, - -0.1309613508427297, - -0.13096133627318937, - -0.1309613224566075, - -0.1309613093540703, - -0.13096129692867714, - -0.13096128514543187, - -0.13096127397114946, - -0.13096126337435685, - -0.13096125332521064, - -0.1309612437954072, - -0.13096123475810653, - -0.13096122618785705, - -0.13096121806052108, - -0.1309612103532083, - -0.1309612030442122, - -0.13096119611294713, - -0.13096118953989197, - -0.13096118330653458, - -0.1309611773953194, - -0.13096117178959746, - -0.13096116647358105, - -0.130961161432298, - -0.13096115665155073, - -0.13096115211787354, - -0.1309611478184983, - -0.13096114374131634, - -0.13096113987484387, - -0.13096113620819308, - -0.1309611327310358, - -0.13096112943357854, - -0.13096112630653511, - -0.1309611233410987, - -0.1309611205289165, - -0.1309611178620691, - -0.13096111533304494, - -0.1309611129347214, - -0.1309611106603447, - -0.1309611085035082, - -0.13096110645813785, - -0.1309611045184728, - -0.13096110267905023, - -0.13096110093468963, - -0.13096109928047783, - -0.13096109771175662, - -0.13096109622410732, - -0.1309610948133406, - -0.1309610934754823, - -0.1309610922067652, - -0.13096109100361555, - -0.13096108986264496, - -0.13096108878064086, - -0.1309610877545548, - -0.1309610867814973, - -0.13096108585872726, - -0.13096108498364653, - -0.1309610841537902, - -0.13096108336682094, - -0.13096108262052264, - -0.1309610819127934, - -0.13096108124163985, - -0.1309610806051719, - -0.13096108000159637, - -0.13096107942921364, - -0.1309610788864124, - -0.1309610783716635, - -0.13096107788351638, - -0.13096107742059715, - -0.1309610769816018, - -0.1309610765652936, - -0.13096107617050076, - -0.13096107579611066, - -0.13096107544106925, - -0.13096107510437666, - -0.13096107478508434, - -0.13096107448229302, - -0.13096107419514919, - -0.13096107392284634, - -0.1309610736646161, - -0.13096107341973143, - -0.13096107318750114, - -0.1309610729672736, - -0.13096107275842675, - -0.1309610725603742, - -0.13096107237255686, - -0.13096107219444572, - -0.13098649975212914, - -0.1311712893765544, - -0.13125079734713327, - -0.1312797470680791, - -0.13128993400958774, - -0.1312932072711073, - -0.13129394887519683, - -0.13129377831694944, - -0.13129329335821305, - -0.131292713909641, - -0.1312921201847044, - -0.13129154078427796, - -0.13129098527410954, - -0.13129045623163701, - -0.13128995369912505, - -0.13128947682821338, - -0.13128902448576515, - -0.13128859547565075, - -0.1312881886185922, - -0.13128780277961874, - -0.1312874368762584, - -0.1312870898797008, - -0.1312867608134531, - -0.1312864487511738, - -0.13128615281427122, - -0.13128589121100262, - -0.13128565077821777, - -0.1312854078165532, - -0.13128518527167626, - -0.13128497672198625, - -0.13128480431171705, - -0.13128461591612475, - -0.131284427919302, - -0.13128424686166687, - -0.1312841178865437, - -0.1312839705495282, - -0.13128382024254076, - -0.1312836737864064, - -0.13128353344973945, - -0.13128340750722783, - -0.13128329822516835, - -0.1312831842824759, - -0.13128307239064974, - -0.13128300205199644, - -0.1312829230605772, - -0.13128283424099912, - -0.1312827448605339, - -0.13128265819359508, - -0.1312825753004168, - -0.13128249643001424, - -0.13128242153874695, - -0.13128235048174308, - -0.1312822830833405, - -0.13128222120486419, - -0.1312821841526723, - -0.13128213554291476, - -0.13128208424502588, - -0.13128203367398536, - -0.131281985004532, - -0.13128193181221404, - -0.13128005835343365, - -0.1312786780564218, - -0.13127775494875446, - -0.13127698360579837, - -0.13127624847907085, - -0.13127549613241155, - -0.1312748429077175, - -0.13127455786702863, - -0.13127444424484955, - -0.13127439473226188, - -0.1312743693238107, - -0.1312743531984941, - -0.1312743408547846, - -0.13127433023959859, - -0.1312743205764276, - -0.1312743115618706, - -0.13127430306837495, - -0.1312742950342283, - -0.1312742874228249, - -0.13127428020755835, - -0.13127427336619618, - -0.13127427192121352, - -0.13127427241181225, - -0.13127426901402342, - -0.13127426435777778, - -0.13127425941163667, - -0.13127425452485167, - -0.13127424981801014, - -0.1312742453275535, - -0.13127424105922053, - -0.13127423700779162, - -0.13127423316437326, - -0.13127422951907186, - -0.13127422606196684, - -0.1312742227834487, - -0.13127421967433314, - -0.13127421672588052, - -0.13127421392979463, - -0.1312742112782034, - -0.13127420876364074, - -0.13127420637902532, - -0.1312742041176424, - -0.1312742019731229, - -0.13127419993942804, - -0.1312741980108308, - -0.1312741961818991, - -0.13127419444748317, - -0.1312741928026981, - -0.1312741912429124, - -0.1312741897637331, - -0.13127418836099555, - -0.13127418703074775, - -0.1312741857692452, - -0.13127418457293452, - -0.13127418343844646, - -0.1312741823625867, - -0.13127418134232535, - -0.13127418037478905, - -0.1312741794572525, - -0.13127417858713322, - -0.1312741777619795, - -0.1312741769794675, - -0.13127417623739498, - -0.13127417553367118, - -0.1312741748663146, - -0.13127417423344473, - -0.13127417363328106, - -0.13127417306413275, - -0.131274172524397, - -0.13127417201255362, - -0.13127417152716098, - -0.13127417106685216, - -0.13127417063033156, - -0.13127417021636958, - -0.1312741698238003, - -0.1312741694515179, - -0.13127416909847464, - -0.13127416876367615, - -0.13127416844617884, - -0.13127416814508944, - -0.13127416785955984, - -0.1312741675887857, - -0.13127416733200414, - -0.13127416708849315, - -0.13127416685756624, - -0.13127416663857336, - -0.1312741664308971, - -0.13127416623395374, - -0.13127416604718745, - -0.1312741658700732, - -0.13127416570211126, - -0.13127416554283045, - -0.1312741653917801, - -0.13127416524853597, - -0.13127416511269416, - -0.1312741649838719, - -0.13127416486170798, - -0.1312741647458561, - -0.1312741646359925, - -0.1312741645318061, - -0.13127416443300316, - -0.13127416433930678, - -0.13127416425045266, - -0.1312741641661899, - -0.13127416408628212, - -0.13127416401050346, - -0.13127416393864136, - -0.13127416387049198, - -0.1312741638058651, - -0.1312741637445776, - -0.13127416368645808, - -0.1312741636313411, - -0.1312741635790727, - -0.13127416352950574, - -0.13127416348250012, - -0.13127416343792356, - -0.13127416339565126, - -0.13127416335556286, - -0.1312741633175463, - -0.1312741632814938, - -0.1312741632473051, - -0.13127416321488303, - -0.1312741631841365, - -0.13127416315497958, - -0.13127416312732865, - -0.13127416310110657, - -0.13127416307623987, - -0.131274163052658, - -0.13127416303029477, - -0.13127416300908776, - -0.13127416298897626, - -0.13127416296990416, - -0.13127416295181743, - -0.13127416293466596, - -0.1312741629184004, - -0.1312741629029755, - -0.13127416288834787, - -0.13127416287447535, - -0.13127416286132082, - -0.1312741628488457, - -0.13127416283701543, - -0.1312741628257961, - -0.1312741628151571, - -0.13127416280506757, - -0.13127416279549958, - -0.1312741627864258, - -0.131274162777821, - -0.1312741627696612, - -0.1312741627619229, - -0.1312741627545848, - -0.13127416274762527, - -0.13127416274102574, - -0.13127416273476702, - -0.13127416272883205, - -0.13127416272320375, - -0.13127416271786618, - -0.1312741627128046, - -0.1312741627080049, - -0.13127416270345255, - -0.13127416269913575, - -0.131274162695042, - -0.1312741626911598, - -0.13127416268747816, - -0.131274162683987, - -0.13127416268067613, - -0.13127416267753614, - -0.13127416267455871, - -0.1312741626717348, - -0.1312741626690572, - -0.13127416266651806, - -0.13127416266411016, - -0.1312741626618265, - -0.13127416265966074, - -0.13127416265760716, - -0.13127416265565936, - -0.1312741626538125, - -0.13127416265206104, - -0.1312741626503998, - -0.13127416264882477, - -0.13127416264733105, - -0.13127416264591443, - -0.13127416264457104, - -0.1312741626432973, - -0.1312741626420889, - -0.13127416264094355, - -0.13127416263985695, - -0.13127416263882674, - -0.13127416263784966, - -0.13127416263692304, - -0.1312741626360442, - -0.13127416263521113, - -0.13127416263442102, - -0.13127416263367145, - -0.13127416263296082, - -0.1312741626322869, - -0.13127416263164782, - -0.13127416263104172, - -0.13127416263046687, - -0.1312741626299219, - -0.1312741626294049, - -0.13127416262891492, - -0.13127416262844996, - -0.13127416262800917, - -0.13127416262759126, - -0.1312741626271946, - -0.13127416262681868, - -0.1312741626264621, - -0.131274162626124, - -0.13127416262580352, - -0.13127416262549935, - -0.131274162625211, - -0.1312741626249375, - -0.1312741626246783, - -0.13127416262443242, - -0.13127416262419922, - -0.13127416262397792, - -0.13127416262376834, - -0.1312741626235694, - -0.13127416262338087, - -0.1312741626232019, - -0.13127416262303251, - -0.13127416262287145, - -0.13127416262271877, - -0.13127416262257413, - -0.1312741626224369, - -0.131274162622307, - -0.13127416262218375, - -0.1312741626220666, - -0.13127416262195576, - -0.13127416262185068, - -0.1312741626217505, - -0.13127416262165628, - -0.13127416262156663, - -0.13127416262148175, - -0.13127416262140074, - -0.13127416262132374, - -0.1312741626212519, - -0.13127416262118238, - -0.1312741626211178, - -0.13127416262105646, - -0.13127416262099761, - -0.131274162620942, - -0.13127416262088906, - -0.13127416262083827, - -0.13127416262079106, - -0.1312741626207467, - -0.13127416262070282, - -0.1312741626206637, - -0.13126787557227015, - -0.13126324778249265, - -0.13126153262049037, - -0.1312609184473939, - -0.13126071162407685, - -0.13126065479111854, - -0.13126065255672476, - -0.1312606695962457, - -0.13126069285931866, - -0.1312607175538104, - -0.13126074194782938, - -0.1312607654420868, - -0.1312607878551151, - -0.1312608091582933, - -0.13126082937768377, - -0.13126084855773332, - -0.13126086674790555, - -0.13126088399781885, - -0.1312609003555318, - -0.13126091586698838, - -0.13126093057589477, - -0.13126094452374554, - -0.13126095774990906, - -0.1312609702917224, - -0.13126098218459425, - -0.13125766790531151, - -0.1311895551006042, - -0.13115139357573571, - -0.1311303952902049, - -0.1311155893218391, - -0.13110256225887018, - -0.1310895761779243, - -0.13107650076265295, - -0.1310682074993864, - -0.13106529668077954, - -0.13106447710483218, - -0.13106442180293934, - -0.13106463758764805, - -0.1310649418604979, - -0.1310652674048669, - -0.13106558984549624, - -0.13106590069518415, - -0.13106619734095126, - -0.13106647932457718, - -0.131066746961957, - -0.1310670008314474, - -0.1310672415850518, - -0.13106746987949472, - -0.13106768635178326, - -0.1310678916112395, - -0.13106808623759503, - -0.13106827078127953, - -0.13106844576448087, - -0.1310686116824348, - -0.13106876900476, - -0.13106891817675645, - -0.13106905962066295, - -0.13106919373684375, - -0.13106932090492304, - -0.13106944148485872, - -0.13106955581795945, - -0.1310696642278521, - -0.13106976702139822, - -0.13106986448956123, - -0.13105075415155548, - -0.13103003054849016, - -0.13102228225132215, - -0.13101953833358906, - -0.1310186478163638, - -0.131018439111795, - -0.13101847735076, - -0.13101860132245804, - -0.13101875145356195, - -0.13101890590936072, - -0.13101905685843696, - -0.1310192016566183, - -0.1310193395728895, - -0.13101947057388655, - -0.13101959487305942, - -0.13101971276383909, - -0.1310198245582702, - -0.13101993056479264, - -0.13102003108053203, - -0.13102012638895288, - -0.13102021675947603, - -0.1310203024478029, - -0.1310203836964742, - -0.1310204607354992, - -0.1310205337829801, - -0.13102060304572344, - -0.13102066871982543, - -0.13102073099121894, - -0.1310207900362048, - -0.13102084602195113, - -0.1310208991069622, - -0.13102094944153064, - -0.131020997168163, - -0.13102104242198215, - -0.1310210853311086, - -0.13102112601702673, - -0.13102116459492522, - -0.13102120117402397, - -0.1310212358578856, - -0.13102126874470565 - ] - } - ], - "layout": { - "showlegend": true, - "title": "Heart Rate(r)", - "xaxis": { - "title": "time(sec)" - }, - "yaxis": {} - } - }, - "text/html": [ - "
" - ], - "text/vnd.plotly.v1+html": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "title=\"Heart Rate(r)\"\n", "heart_axis_colums = [0,1,2,3,5]\n", - "heart_rate_data = data_frame.filter(items=[data_frame.columns[i] for i in heart_axis_colums])\n", - "heart_rate_data_scaling = [column_name_map[i][\"scale\"] if \"scale\" in column_name_map[i] else 1 for i in heart_axis_colums]\n", + "heart_rate_data = outputController.filter(items=[outputController.columns[i] for i in heart_axis_colums])\n", + "heart_rate_data[heart_rate_data.columns[3]] = heart_rate_data[heart_rate_data.columns[3]].apply(lambda x: x/0.0008)\n", + "heart_rate_data[heart_rate_data.columns[4]] = heart_rate_data[heart_rate_data.columns[4]].apply(lambda x: x*-1.0/0.0008)\n", + "colors = [\"magenta\", \"black\", \"red\", \"blue\"]\n", + "\n", + "dpos = 0.55\n", + "annotations = [\n", + " {\"text\":{\"x\":2800, \"y\":0.05, \"value\":\"I1\", \"color\":\"red\"}}, \n", + " {\"text\":{\"x\":6300, \"y\":0.05, \"value\":\"I2\", \"color\":\"red\"}},\n", + " {\"text\":{\"x\":9800, \"y\":0.05, \"value\":\"I3\", \"color\":\"red\"}},\n", + " {\"text\":{\"x\":4800, \"y\":dpos, \"value\":\"D1\", \"color\":\"black\"}},\n", + " {\"text\":{\"x\":8300, \"y\":dpos, \"value\":\"D2\", \"color\":\"black\"}},\n", + " {\"text\":{\"x\":11800, \"y\":dpos, \"value\":\"D3\", \"color\":\"black\"}},\n", + " {\"text\":{\"x\":3800, \"y\":0.1, \"value\":\"R1\", \"color\":\"blue\"}},\n", + " {\"text\":{\"x\":7300, \"y\":0.1, \"value\":\"R2\", \"color\":\"blue\"}},\n", + " {\"text\":{\"x\":10800, \"y\":0.1, \"value\":\"R3\", \"color\":\"blue\"}},\n", + "]\n", + "\n", + "line_opacity = .5\n", + "shapes = [\n", + " {\"type\":\"line\",\"x0\":2500,\"y0\":-.8,\"x1\":2500,\"y1\":.8,\"opacity\":line_opacity,\"line\":{\"color\":\"red\",\"width\":1.5}},\n", + " {\"type\":\"line\",\"x0\":6000,\"y0\":-.8,\"x1\":6000,\"y1\":.8,\"opacity\":line_opacity,\"line\":{\"color\":\"red\",\"width\":1.5}},\n", + " {\"type\":\"line\",\"x0\":9500,\"y0\":-.8,\"x1\":9500,\"y1\":.8,\"opacity\":line_opacity,\"line\":{\"color\":\"red\",\"width\":1.5}},\n", + " {\"type\":\"line\",\"x0\":4500,\"y0\":-.8,\"x1\":4500,\"y1\":.8,\"opacity\":line_opacity,\"line\":{\"color\":\"black\",\"width\":1.5}},\n", + " {\"type\":\"line\",\"x0\":8000,\"y0\":-.8,\"x1\":8000,\"y1\":.8,\"opacity\":line_opacity,\"line\":{\"color\":\"black\",\"width\":1.5}},\n", + " {\"type\":\"line\",\"x0\":11500,\"y0\":-.8,\"x1\":11500,\"y1\":.8,\"opacity\":line_opacity,\"line\":{\"color\":\"black\",\"width\":1.5}},\n", + " {\"type\":\"line\",\"x0\":3500,\"y0\":-.8,\"x1\":3500,\"y1\":.8,\"opacity\":line_opacity,\"line\":{\"color\":\"blue\",\"width\":1.5}},\n", + " {\"type\":\"line\",\"x0\":7000,\"y0\":-.8,\"x1\":7000,\"y1\":.8,\"opacity\":line_opacity,\"line\":{\"color\":\"blue\",\"width\":1.5}},\n", + " {\"type\":\"line\",\"x0\":10500,\"y0\":-.8,\"x1\":10500,\"y1\":.8,\"opacity\":line_opacity,\"line\":{\"color\":\"blue\",\"width\":1.5}},\n", + "]\n", + "\n", "create_graph(data_frame=heart_rate_data, \n", - " data_scaling=heart_rate_data_scaling, \n", " title=title, \n", - " x_axis_title=\"time(sec)\")" + " colors=colors,\n", + " x_axis_title=\"\\u03C4(sec)\",\n", + " annotations=annotations,\n", + " yaxis=dict(range=[-0.4, 0.8]),\n", + " shapes=shapes)" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": { - "hide_input": false + "hide_input": true, + "init_cell": true }, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "data": [ - { - "name": "recruitment = coefficient of variation", - "opacity": 0.5, - "type": "scatter", - "x": [ - 2504.990000008257, - 2509.990000008367, - 2514.990000008476, - 2519.990000008585, - 2524.9900000086936, - 2529.9900000088032, - 2534.9900000089124, - 2539.990000009021, - 2544.9900000091307, - 2549.99000000924, - 2554.990000009349, - 2559.990000009458, - 2564.9900000095668, - 2569.9900000096764, - 2574.990000009785, - 2579.9900000098946, - 2584.9900000100038, - 2589.990000010113, - 2594.990000010222, - 2599.990000010331, - 2604.9900000104403, - 2609.990000010549, - 2614.9900000106586, - 2619.990000010768, - 2624.990000010877, - 2629.990000010986, - 2634.990000011095, - 2639.9900000112043, - 2644.990000011313, - 2649.9900000114226, - 2654.990000011532, - 2659.990000011641, - 2664.99000001175, - 2669.990000011859, - 2674.9900000119683, - 2679.990000012077, - 2684.9900000121866, - 2689.990000012296, - 2694.9900000124053, - 2699.990000012514, - 2704.990000012623, - 2709.9900000127327, - 2714.990000012841, - 2719.9900000129505, - 2724.99000001306, - 2729.990000013169, - 2734.990000013278, - 2739.990000013387, - 2744.9900000134962, - 2749.990000013605, - 2754.9900000137145, - 2759.9900000138236, - 2764.9900000139332, - 2769.990000014042, - 2774.990000014151, - 2779.99000001426, - 2784.990000014369, - 2789.990000014479, - 2794.990000014588, - 2799.990000014697, - 2804.990000014806, - 2809.990000014915, - 2814.9900000150237, - 2819.990000015133, - 2824.9900000152425, - 2829.990000015352, - 2834.9900000154607, - 2839.99000001557, - 2844.9900000156786, - 2849.990000015788, - 2854.9900000158973, - 2859.9900000160064, - 2864.9900000161156, - 2869.990000016225, - 2874.9900000163343, - 2879.990000016443, - 2884.990000016552, - 2889.990000016661, - 2894.9900000167704, - 2899.990000016879, - 2904.990000016989, - 2909.990000017098, - 2914.990000017207, - 2919.990000017316, - 2924.990000017425, - 2929.990000017535, - 2934.9900000176435, - 2939.990000017753, - 2944.990000017862, - 2949.9900000179714, - 2954.9900000180796, - 2959.990000018189, - 2964.9900000182984, - 2969.9900000184075, - 2974.9900000185166, - 2979.9900000186262, - 2984.990000018735, - 2989.990000018844, - 2994.990000018953, - 2999.9900000190623 - ], - "y": [ - 0.5156601814763266, - 0.5179910699559792, - 0.5185791304745997, - 0.518662327998772, - 0.5181746526784186, - 0.5179956696829622, - 0.5177924031909518, - 0.5175933250977929, - 0.5174157790690084, - 0.5160934173384716, - 0.5157664515448427, - 0.5155303952368376, - 0.5153215801539219, - 0.5151271972672418, - 0.5149319316216587, - 0.5147377971588267, - 0.5145568415881732, - 0.5143894461770023, - 0.5142292616814891, - 0.5140730858977899, - 0.513921600221724, - 0.5137786174721564, - 0.5136473803911049, - 0.5135301672890045, - 0.5134762435583161, - 0.5133938454854305, - 0.5133046630444532, - 0.5132173917583018, - 0.5131339299602597, - 0.5130546766609425, - 0.5129559105622071, - 0.5128838227777266, - 0.5128150958807305, - 0.5127501978842106, - 0.5126881117918423, - 0.5126318601506807, - 0.5125769261281016, - 0.512524433097395, - 0.5124746155211516, - 0.5124027163262552, - 0.5123515137131509, - 0.5123075224229765, - 0.5122672368988536, - 0.5122292320197044, - 0.5121933307441283, - 0.5121592954155699, - 0.5121270632112467, - 0.5120963891087961, - 0.5120674206528048, - 0.5120397990972151, - 0.5120137198343396, - 0.5119888447737765, - 0.5119653248499145, - 0.5119430100391086, - 0.5119218540085466, - 0.5119017172678668, - 0.5118826863438527, - 0.5118645500708893, - 0.5118473896647859, - 0.5118311697433848, - 0.5118156407350093, - 0.5118010073194105, - 0.5117870495099123, - 0.5117739295127662, - 0.5117613263851767, - 0.5117493977501155, - 0.5117381608214827, - 0.5117274679441767, - 0.5117172792562258, - 0.5117076039443921, - 0.5116984384047271, - 0.5116897893392687, - 0.5116815491277559, - 0.5116736950908339, - 0.5116662635409416, - 0.5116592390563742, - 0.5116525578240481, - 0.5116461841530987, - 0.5116401407310627, - 0.5116344235126137, - 0.5116290294749902, - 0.5116238930832115, - 0.5116189776511939, - 0.511614322227562, - 0.5116099063901206, - 0.5116057551347742, - 0.511601784929071, - 0.5115980043626767, - 0.5115944203450592, - 0.5115910474930646, - 0.5115878702608687, - 0.5115847894963804, - 0.5115818782255128, - 0.5115791184755031, - 0.5115765177969853, - 0.5115740456010872, - 0.5115716863567155, - 0.5115694471885105, - 0.5115673218289438, - 0.5115653044478495 - ] - } - ], - "layout": { - "showlegend": true, - "title": "Parasympathetic Cell Activity: Cardiac Level", - "xaxis": { - "title": "time(sec)" - }, - "yaxis": {} - } - }, - "text/html": [ - "
" - ], - "text/vnd.plotly.v1+html": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "title = \"Parasympathetic Cell Activity: Cardiac Level\"\n", - "NumberOfLayers=3; #number of layers\n", - "NumberOfCells=[600, 600, 600]; #cells per layer\n", - "TotalNumberOfCells = sum(NumberOfCells);\n", - "FirstCellPosition=7 #initialize where cell information begins\n", - "FirstParasympathetic=500\n", + "FirstParasympathetic=500-1\n", "start_index = FirstCellPosition+0*TotalNumberOfCells+FirstParasympathetic\n", - "final_index = FirstCellPosition+0*TotalNumberOfCells+NumberOfCells[0]-1\n", - "\n", - "cardiac_level_cell_activity_columns = [0, 6]\n", - "cardiac_level_cell_activity_data = data_frame.iloc[FirstParasympathetic:NumberOfCells[0]].filter(items=[data_frame.columns[i] for i in cardiac_level_cell_activity_columns])\n", - "cardiac_level_cell_activity_scaling = [column_name_map[i][\"scale\"] if \"scale\" in column_name_map[i] else 1 for i in cardiac_level_cell_activity_columns]\n", - "create_graph(data_frame=cardiac_level_cell_activity_data, \n", - " data_scaling=cardiac_level_cell_activity_scaling, \n", - " title=title, x_axis_title=\"time(sec)\")" + "final_index = FirstCellPosition+0*TotalNumberOfCells+NumberOfCells(1)-1+1\n", + "parasympathetic_cell_activity_columns = [0]\n", + "parasympathetic_cell_activity_columns.extend(range(start_index, final_index))\n", + "parasympathetic_cell_activity_data = outputController.filter(items=[outputController.columns[i] for i in parasympathetic_cell_activity_columns])\n", + "create_graph(data_frame=parasympathetic_cell_activity_data, \n", + " title=title, x_axis_title=\"time(sec)\", show_legend=False,\n", + " colors=[\"blue\"]*(len(parasympathetic_cell_activity_columns)-1))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "hide_input": true + "hide_input": true, + "init_cell": true }, "outputs": [], "source": [ "title = \"Cell Activity: Cardiac(r), Intrathoracic(g), Central(b)\"\n", - "cardiac_level_cell_activity_columns = [0, 6]\n", - "cardiac_level_cell_activity_data = data_frame.filter(items=[data_frame.columns[i] for i in cardiac_level_cell_activity_columns])\n", - "cardiac_level_cell_activity_scaling = [column_name_map[i][\"scale\"] if \"scale\" in column_name_map[i] else 1 for i in cardiac_level_cell_activity_columns]\n", - "create_graph(data_frame=cardiac_level_cell_activity_data, \n", - " data_scaling=cardiac_level_cell_activity_scaling, \n", - " title=title, x_axis_title=\"time(sec)\")" + "cell_activity_columns = [0]\n", + "# cardiac\n", + "start_index = FirstCellPosition+0*TotalNumberOfCells\n", + "final_index = FirstCellPosition+0*TotalNumberOfCells+NumberOfCells(1)-1+1\n", + "cell_activity_columns.extend(range(start_index, final_index))\n", + "colors = [\"red\"]*(final_index - start_index)\n", + "# intrathoracic\n", + "start_index = FirstCellPosition+0*TotalNumberOfCells+NumberOfCells(1)\n", + "final_index = FirstCellPosition+0*TotalNumberOfCells+NumberOfCells(1)+NumberOfCells(2)-1+1\n", + "cell_activity_columns.extend(range(start_index, final_index))\n", + "colors.extend([\"green\"]*(final_index - start_index))\n", + "# central\n", + "start_index = FirstCellPosition+0*TotalNumberOfCells+NumberOfCells(1)+NumberOfCells(2)\n", + "final_index = FirstCellPosition+0*TotalNumberOfCells+NumberOfCells(1)+NumberOfCells(2)+NumberOfCells(3)-1+1\n", + "cell_activity_columns.extend(range(start_index, final_index))\n", + "colors.extend([\"blue\"]*(final_index - start_index))\n", + "\n", + "cell_activity_data = outputController.filter(items=[outputController.columns[i] for i in cell_activity_columns])\n", + "create_graph(data_frame=cell_activity_data, \n", + " title=title, x_axis_title=\"time(sec)\", show_legend=False,\n", + " colors=colors)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hide_input": true, + "init_cell": true + }, + "outputs": [], + "source": [ + "title = \"Heart Throughput: Cardiac(r), Intrathoracic(g), Central(b)\"\n", + "heart_throughput_columns = [0]\n", + "# cardiac\n", + "start_index = FirstCellPosition+1*TotalNumberOfCells\n", + "final_index = FirstCellPosition+1*TotalNumberOfCells+NumberOfCells(1)-1+1\n", + "heart_throughput_columns.extend(range(start_index, final_index))\n", + "colors = [\"red\"]*(final_index - start_index)\n", + "# intrathoracic\n", + "start_index = FirstCellPosition+1*TotalNumberOfCells+NumberOfCells(1)\n", + "final_index = FirstCellPosition+1*TotalNumberOfCells+NumberOfCells(1)+NumberOfCells(2)-1+1\n", + "heart_throughput_columns.extend(range(start_index, final_index))\n", + "colors.extend([\"green\"]*(final_index - start_index))\n", + "# central\n", + "start_index = FirstCellPosition+1*TotalNumberOfCells+NumberOfCells(1)+NumberOfCells(2)\n", + "final_index = FirstCellPosition+1*TotalNumberOfCells+NumberOfCells(1)+NumberOfCells(2)+NumberOfCells(3)-1+1\n", + "heart_throughput_columns.extend(range(start_index, final_index))\n", + "colors.extend([\"blue\"]*(final_index - start_index))\n", + "\n", + "data = outputController.filter(items=[outputController.columns[i] for i in heart_throughput_columns])\n", + "create_graph(data_frame=data, \n", + " title=title, x_axis_title=\"time(sec)\", show_legend=False,\n", + " colors=colors)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hide_input": true, + "init_cell": true + }, + "outputs": [], + "source": [ + "title = \"Blood Throughput: Cardiac(r), Intrathoracic(g), Central(b)\"\n", + "blood_throughput_columns = [0]\n", + "# cardiac\n", + "start_index = FirstCellPosition+2*TotalNumberOfCells\n", + "final_index = FirstCellPosition+2*TotalNumberOfCells+NumberOfCells(1)-1+1\n", + "blood_throughput_columns.extend(range(start_index, final_index))\n", + "colors = [\"red\"]*(final_index - start_index)\n", + "# intrathoracic\n", + "start_index = FirstCellPosition+2*TotalNumberOfCells+NumberOfCells(1)\n", + "final_index = FirstCellPosition+2*TotalNumberOfCells+NumberOfCells(1)+NumberOfCells(2)-1+1\n", + "blood_throughput_columns.extend(range(start_index, final_index))\n", + "colors.extend([\"green\"]*(final_index - start_index))\n", + "# central\n", + "start_index = FirstCellPosition+2*TotalNumberOfCells+NumberOfCells(1)+NumberOfCells(2)\n", + "final_index = FirstCellPosition+2*TotalNumberOfCells+NumberOfCells(1)+NumberOfCells(2)+NumberOfCells(3)-1+1\n", + "blood_throughput_columns.extend(range(start_index, final_index))\n", + "colors.extend([\"blue\"]*(final_index - start_index))\n", + "\n", + "data = outputController.filter(items=[outputController.columns[i] for i in blood_throughput_columns])\n", + "create_graph(data_frame=data, \n", + " title=title, x_axis_title=\"time(sec)\", show_legend=False,\n", + " colors=colors)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "hide_input": true + "hide_input": true, + "init_cell": true }, "outputs": [], "source": [ - "import pprint\n", - "print(\"There are \", len(simcore._inputs), \" inputs\")\n", - "for _in in simcore._inputs:\n", - " pprint.pprint(_in._asdict)\n", + "#carpet plot full network data set\n", + "import math\n", + "def fix(value):\n", + " if value > 0:\n", + " return math.floor(value)\n", + " return math.ceil(value)\n", + "\n", + "title = \"Cell Activity Level, Heart and Blood Throughput {layersnumber} Layers and {cellsperlayer} Cells per Layer'\".format(layersnumber=NumberOfLayers, cellsperlayer=\" \".join(map(str,_NumberOfCells)))\n", + "carpet_plot_columns = [0]\n", + "start_index = FirstCellPosition\n", + "final_index = FirstCellPosition+TotalNumberOfCells-1+1\n", + "carpet_plot_columns.extend(range(start_index, final_index))\n", + "\n", + "# this does not work with plotly, too much memory involved here\n", + "f = lambda x: fix(50.0*x)\n", + "data_scaled = outputController.filter(items=[outputController.columns[i] for i in range(start_index, final_index)]).applymap(f)\n", + "#data_scaled.insert(0, \"time\", outputController[outputController.columns[0]])\n", + "data_scaled = data_scaled.transpose()\n", "\n", - "print(\"There are \", len(simcore._outputs), \" outputs\")\n", - "for _out in simcore._outputs:\n", - " pprint.pprint(_out._asdict)\n" + "create_heatmap(data_frame=data_scaled, x_axis=outputController.iloc[:,0], y_axis=[i for i in range(1800)], title=title)\n", + "\n" ] }, { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "hide_input": true, + "init_cell": true + }, "outputs": [], - "source": [] + "source": [ + "#plot layer average neighbour importance (repeated on next figure)\n", + "title = \"Relative Weight in Hierarchy\"\n", + "average_neighbour_importance_columns = [0]\n", + "start_index = ncols-1-2*NumberOfLayers-NumberOfLayers-1\n", + "final_index = ncols-1-2*NumberOfLayers-1\n", + "average_neighbour_importance_columns.extend(range(start_index, final_index))\n", + "\n", + "colors = [\"rgb({r}, {g}, {b})\".format(r=255.0*(1 - i/NumberOfLayers), g=255.0*abs(.5-i/NumberOfLayers), b=255.0*abs(.25-i/NumberOfLayers)) for i in range(1, final_index-start_index + 1)]\n", + "lineWidth = [2 + 2 * i/NumberOfLayers for i in range(1, final_index-start_index + 1)]\n", + "\n", + "names = ['Cardiac','Intrathoracic','Central']\n", + "data = outputController.filter(items=[outputController.columns[i] for i in average_neighbour_importance_columns])\n", + "data.iloc[:,1:] = data.iloc[:,1:].div(outputController.iloc[:,ncols-1], axis=0)\n", + "\n", + "\n", + "ipos = 0.32\n", + "rpos = ipos\n", + "annotations = [\n", + " {\"text\":{\"x\":2800, \"y\":ipos, \"value\":\"I1\", \"color\":\"red\"}}, \n", + " {\"text\":{\"x\":6300, \"y\":ipos, \"value\":\"I2\", \"color\":\"red\"}},\n", + " {\"text\":{\"x\":9800, \"y\":ipos, \"value\":\"I3\", \"color\":\"red\"}},\n", + " {\"text\":{\"x\":4800, \"y\":.35, \"value\":\"D1\", \"color\":\"black\"}},\n", + " {\"text\":{\"x\":8300, \"y\":.35, \"value\":\"D2\", \"color\":\"black\"}},\n", + " {\"text\":{\"x\":11800, \"y\":.35, \"value\":\"D3\", \"color\":\"black\"}},\n", + " {\"text\":{\"x\":3800, \"y\":rpos, \"value\":\"R1\", \"color\":\"blue\"}},\n", + " {\"text\":{\"x\":7300, \"y\":rpos, \"value\":\"R2\", \"color\":\"blue\"}},\n", + " {\"text\":{\"x\":10800, \"y\":rpos, \"value\":\"R3\", \"color\":\"blue\"}},\n", + "]\n", + "\n", + "line_opacity = .5\n", + "shapes = [\n", + " {\"type\":\"line\",\"x0\":2500,\"y0\":0,\"x1\":2500,\"y1\":.8,\"opacity\":line_opacity,\"line\":{\"color\":\"red\",\"width\":1.5}},\n", + " {\"type\":\"line\",\"x0\":6000,\"y0\":0,\"x1\":6000,\"y1\":.8,\"opacity\":line_opacity,\"line\":{\"color\":\"red\",\"width\":1.5}},\n", + " {\"type\":\"line\",\"x0\":9500,\"y0\":0,\"x1\":9500,\"y1\":.8,\"opacity\":line_opacity,\"line\":{\"color\":\"red\",\"width\":1.5}},\n", + " {\"type\":\"line\",\"x0\":4500,\"y0\":0,\"x1\":4500,\"y1\":.8,\"opacity\":line_opacity,\"line\":{\"color\":\"black\",\"width\":1.5}},\n", + " {\"type\":\"line\",\"x0\":8000,\"y0\":0,\"x1\":8000,\"y1\":.8,\"opacity\":line_opacity,\"line\":{\"color\":\"black\",\"width\":1.5}},\n", + " {\"type\":\"line\",\"x0\":11500,\"y0\":0,\"x1\":11500,\"y1\":.8,\"opacity\":line_opacity,\"line\":{\"color\":\"black\",\"width\":1.5}},\n", + " {\"type\":\"line\",\"x0\":3500,\"y0\":0,\"x1\":3500,\"y1\":.8,\"opacity\":line_opacity,\"line\":{\"color\":\"blue\",\"width\":1.5}},\n", + " {\"type\":\"line\",\"x0\":7000,\"y0\":0,\"x1\":7000,\"y1\":.8,\"opacity\":line_opacity,\"line\":{\"color\":\"blue\",\"width\":1.5}},\n", + " {\"type\":\"line\",\"x0\":10500,\"y0\":0,\"x1\":10500,\"y1\":.8,\"opacity\":line_opacity,\"line\":{\"color\":\"blue\",\"width\":1.5}},\n", + "]\n", + "\n", + "create_graph(data_frame=data, \n", + " title=title, x_axis_title=\"time(sec)\", show_legend=True,\n", + " colors=colors,\n", + " lineWidths=lineWidth,\n", + " names=names,\n", + " annotations=annotations,\n", + " yaxis=dict(range=[0,0.4]),\n", + " shapes=shapes)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hide_input": true, + "init_cell": true + }, + "outputs": [], + "source": [ + "# plot layer neighbour importance standard deviation (shifted by +1 from\n", + "# previous graph which plots the layer neighbour importance average\n", + "title = \"Layer: Neighbour Importance Standard Deviation\"\n", + "average_neighbour_importance_std_columns = [0]\n", + "start_index = ncols-1-2*NumberOfLayers+1-1\n", + "final_index = ncols-1-1+1\n", + "average_neighbour_importance_std_columns.extend(range(start_index, final_index, 2))\n", + "\n", + "colors = [\"rgb({r}, {g}, {b})\".format(r=255.0*(1 - i/2.0/NumberOfLayers), g=255.0*(1 - i/2.0/NumberOfLayers), b=255.0*(1 - i/2.0/NumberOfLayers)) for i in range(1, final_index-start_index, 2)]\n", + "lineWidth = [1 + 2 * i/NumberOfLayers for i in range(1, final_index-start_index, 2)]\n", + "names = ['Cardiac','Intrathoracic','Central']\n", + "data = outputController.filter(items=[outputController.columns[i] for i in average_neighbour_importance_std_columns])\n", + "create_graph(data_frame=data, \n", + " title=title, x_axis_title=\"time(sec)\", show_legend=True,\n", + " colors=colors,\n", + " lineWidths=lineWidth,\n", + " names=names)" + ] } ], "metadata": { + "celltoolbar": "Initialization Cell", "extensions": { "jupyter_dashboards": { "activeView": "grid_default", @@ -54633,7 +603,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.6.4" } }, "nbformat": 4, diff --git a/services/dy-2Dgraph/use-cases/kember/kember_config.json b/services/dy-2Dgraph/use-cases/kember/kember_config.json index 9763c2821a0..fe3f14019c3 100644 --- a/services/dy-2Dgraph/use-cases/kember/kember_config.json +++ b/services/dy-2Dgraph/use-cases/kember/kember_config.json @@ -4,9 +4,9 @@ { "key": "in_1", "label": "computational data", - "description": "these are computed data out of a pipeline", + "desc": "these are computed data out of a pipeline", "type": "file-url", - "value": "/home/jovyan/data/outputControllerOut.dat", + "value": "link.SIMCORE_NODE_UUID.in_1", "timestamp": "2018-05-23T15:34:53.511Z" } ], diff --git a/services/dy-2Dgraph/use-cases/kember/requirements.txt b/services/dy-2Dgraph/use-cases/kember/requirements.txt new file mode 100644 index 00000000000..f61399ca7d3 --- /dev/null +++ b/services/dy-2Dgraph/use-cases/kember/requirements.txt @@ -0,0 +1,9 @@ +jupyter_contrib_nbextensions==0.5.0 +jupyter_dashboards==0.7.0 +minio==4.0.0 +networkx==2.1 +pandas==0.22.0 +plotly==2.6.0 +psycopg2-binary==2.7.4 +sqlalchemy==1.2.8 +tenacity==4.12.0 \ No newline at end of file diff --git a/services/dy-jupyter/Makefile b/services/dy-jupyter/Makefile new file mode 100644 index 00000000000..b22d02d1d8c --- /dev/null +++ b/services/dy-jupyter/Makefile @@ -0,0 +1,33 @@ +VERSION := $(shell cat /proc/version) +# SAN this is a hack so that docker-compose works in the linux virtual environment under Windows +ifneq (,$(findstring Microsoft,$(VERSION))) +export DOCKER_COMPOSE=docker-compose.exe +export DOCKER=docker.exe +else +export DOCKER_COMPOSE=docker-compose +export DOCKER=docker +endif + +all: + @echo 'run `make build` to build' + @echo 'run `make up` to start' + @echo 'see Makefile for further targets' + +build: + ${DOCKER_COMPOSE} -f docker-compose.yml build --build-arg VCS_REF=`git rev-parse --short HEAD` --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` + +rebuild: + ${DOCKER_COMPOSE} -f docker-compose.yml build --no-cache --build-arg VCS_REF=`git rev-parse --short HEAD` --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` + +up: + ${DOCKER_COMPOSE} -f docker-compose.yml up + +down: + ${DOCKER_COMPOSE} -f docker-compose.yml down + +SERVICES_VERSION=1.3 +JUPYTER_SERVICE_NAME=masu.speag.com/simcore/services/jupyter-base-notebook +push_service_images: + ${DOCKER} login masu.speag.com + ${DOCKER} tag dy-jupyter_jupyter-base-notebook:latest ${JUPYTER_SERVICE_NAME}:${SERVICES_VERSION} + ${DOCKER} push ${JUPYTER_SERVICE_NAME}:${SERVICES_VERSION} \ No newline at end of file diff --git a/services/dy-jupyter/base-notebook/Dockerfile b/services/dy-jupyter/base-notebook/Dockerfile index e2cea8536ec..d0be3fb431a 100644 --- a/services/dy-jupyter/base-notebook/Dockerfile +++ b/services/dy-jupyter/base-notebook/Dockerfile @@ -3,23 +3,21 @@ FROM jupyter/base-notebook LABEL maintainer="sanderegg" -# call date -u +”%Y-%m-%dT%H:%M:%SZ” in a bash +EXPOSE 8888 + ARG VCS_REF ARG BUILD_DATE -# call git rev-parse — short HEAD in a bash -ARG BUILD_VERSION # Labels. -LABEL org.label-schema.schema-version="1.0" -LABEL org.label-schema.build-date=$BUILD_DATE -LABEL org.label-schema.name="simcore/services/base-notebook" -LABEL org.label-schema.description="Jupyter base-notebook" -LABEL org.label-schema.url="http://jupyter.org/" -LABEL org.label-schema.vcs-url="https://github.com/jupyter/docker-stacks" -LABEL org.label-schema.vcs-ref=$VCS_REF -LABEL org.label-schema.vendor="IT'IS foundation" -LABEL org.label-schema.version=$BUILD_VERSION -LABEL org.label-schema.docker.cmd="docker run -it --rm -p 8888:8888 jupyter/base-notebook start-notebook.sh --NotebookApp.token=''" +LABEL org.label-schema.schema-version="1.0" \ + org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.name="simcore/services/base-notebook" \ + org.label-schema.description="Jupyter base-notebook" \ + org.label-schema.url="http://jupyter.org/" \ + org.label-schema.vcs-url="https://github.com/jupyter/docker-stacks" \ + org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.vendor="IT'IS foundation" \ + org.label-schema.docker.cmd="docker run -it --rm -p 8888:8888 jupyter/base-notebook start-notebook.sh --NotebookApp.token=''" # service runtime settings LABEL simcore.service.settings='[{"name": "ports", "type": "int", "value": 8888}, {"name": "constraints", "type": "string", "value": ["node.platform.os == linux"]}]' diff --git a/services/dy-jupyter/docker-compose.yml b/services/dy-jupyter/docker-compose.yml new file mode 100644 index 00000000000..a4370da80da --- /dev/null +++ b/services/dy-jupyter/docker-compose.yml @@ -0,0 +1,22 @@ +version: '3.4' +services: + jupyter-base-notebook: + build: + context: base-notebook + args: + VCS_REF: + BUILD_DATE: + labels: + io.simcore.key: '{"key": "simcore/services/jupyter-base-notebook"}' + io.simcore.outputs: '{"outputs": []}' + io.simcore.tag: '{"tag": "1.2.1"}' + io.simcore.name: '{"name": "jupyter-base-notebook"}' + io.simcore.description: '{"description": "Jupyter notebook using base docker image"}' + io.simcore.contact: '{"contact": "anderegg@itis.ethz.ch"}' + io.simcore.authors: '{"authors": [{"name": "Sylvain Anderegg", "email": "anderegg@itis.ethz.ch", "affiliation": "ITIS Foundation"}]}' + io.simcore.inputs: '{"inputs": []}' + io.simcore.viewer: '{"viewer":{"ip":null, "port":null}}' + ports: + - '8888:8888' + #-------------------------------------------------------------------- + \ No newline at end of file From 92342019d453cbbd964e28cdbf0d0094d9f2db73 Mon Sep 17 00:00:00 2001 From: Manuel Guidon <33161876+mguidon@users.noreply.github.com> Date: Fri, 6 Jul 2018 19:34:59 +0200 Subject: [PATCH 071/127] Login hotfix (#161) - Remove login form temporarily - Add broad try catch block for testing --- Makefile | 2 +- services/sidecar/src/sidecar/sidecar.py | 8 +- .../client/source/class/qxapp/Application.js | 14 +- services/web/server/src/comp_backend_api.py | 170 +++++++++--------- 4 files changed, 98 insertions(+), 96 deletions(-) diff --git a/Makefile b/Makefile index 7d5fca3056d..9c1dc6f1cb8 100644 --- a/Makefile +++ b/Makefile @@ -88,7 +88,7 @@ test: make run_test make after_test -PLATFORM_VERSION=3.4 +PLATFORM_VERSION=3.5 push_platform_images: ${DOCKER} login masu.speag.com diff --git a/services/sidecar/src/sidecar/sidecar.py b/services/sidecar/src/sidecar/sidecar.py index 44a3ccda7da..e80186884d2 100644 --- a/services/sidecar/src/sidecar/sidecar.py +++ b/services/sidecar/src/sidecar/sidecar.py @@ -247,12 +247,8 @@ def initialize(self, task): self._executor.log_dir = os.path.join("/", "log", task.job_id) self._docker.env = ["INPUT_FOLDER=" + self._executor.in_dir, - "OUTPUT_FOLDER=" + self._executor.out_dir, - "LOG_FOLDER=" + self._executor.log_dir] - - # self._docker.env = ["INPUT_FOLDER=/input", - # "OUTPUT_FOLDER=/output", - # "LOG_FOLDER=/log"] + "OUTPUT_FOLDER=" + self._executor.out_dir, + "LOG_FOLDER=" + self._executor.log_dir] def preprocess(self): diff --git a/services/web/client/source/class/qxapp/Application.js b/services/web/client/source/class/qxapp/Application.js index 138e8546a07..6ba61066ffa 100644 --- a/services/web/client/source/class/qxapp/Application.js +++ b/services/web/client/source/class/qxapp/Application.js @@ -47,12 +47,14 @@ qx.Class.define("qxapp.Application", { // openning web socket qxapp.wrappers.WebSocket.getInstance().connect(); - if (qx.core.Environment.get("dev.disableLogin")) { - console.debug("Login was disabled"); - this.__startDesktop(); - } else { - this.__startLogin(); - } + this.__startDesktop(); + // FIXME: PC check how to enable url parameters when served with python server + // if (qx.core.Environment.get("dev.disableLogin")) { + // console.debug("Login was disabled"); + // this.__startDesktop(); + // } else { + // this.__startLogin(); + // } }, __startDesktop: function() { diff --git a/services/web/server/src/comp_backend_api.py b/services/web/server/src/comp_backend_api.py index 957ef70537d..b54c4d79db9 100644 --- a/services/web/server/src/comp_backend_api.py +++ b/services/web/server/src/comp_backend_api.py @@ -70,8 +70,7 @@ async def start_pipeline(request): request_data = await request.json() - # with open('mock/SleepersPipeline.json') as f: - # mockup = json.load(f) + response = {} nodes = request_data['nodes'] links = request_data['links'] @@ -79,87 +78,92 @@ async def start_pipeline(request): dag_adjacency_list = dict() tasks = dict() - io_files = [] - for node in nodes: - _LOGGER.debug("NODE %s ", node) - - node_id = node['uuid'] - # find connections - successor_nodes = [] - task = {} - is_io_node = False - if node['key'] == 'FileManager': - is_io_node = True - - task["input"] = node["inputs"] - task["output"] = node["outputs"] - task["image"] = {"name" : node['key'], "tag" : node['tag']} - - if is_io_node: - for ofile in node["outputs"]: - current_filename_on_s3 = ofile['value'] - if current_filename_on_s3: - new_filename = node_id +"/" + ofile['key'] # out_1 - # copy the file - io_files.append({ 'from' : current_filename_on_s3, 'to' : new_filename }) - - for link in links: - if link['node1Id'] == node_id: - successor_node_id = link['node2Id'] - if successor_node_id not in successor_nodes and not is_io_node: - successor_nodes.append(successor_node_id) - if link['node2Id'] == node_id: - # there might be something coming in - predecessor_node_id = link['node1Id'] - output_port = link['port1Id'] - input_port = link['port2Id'] - # we use predecessor_node_id.output_port as id fo the input - for t in task['input']: - if t['key'] == input_port: - t['value'] = 'link.' + predecessor_node_id + "." + output_port - - if not is_io_node: - # a node can have an empty successor - #if len(successor_nodes): - dag_adjacency_list[node_id] = successor_nodes - tasks[node_id] = task - - pipeline = ComputationalPipeline(dag_adjacency_list=dag_adjacency_list, state=0) - - db_session.add(pipeline) - db_session.flush() - - pipeline_id = pipeline.pipeline_id - - # now we know the id, lets copy over data - if io_files: - _config = s3_config() - s3_client = S3Client(endpoint=_config.endpoint, - access_key=_config.access_key, secret_key=_config.secret_key) - for io_file in io_files: - _from = io_file['from'] - _to = str(pipeline_id) + "/" + io_file['to'] - _LOGGER.debug("COPYING from %s to %s", _from, _to ) - - s3_client.copy_object(_config.bucket_name, _to, _from) - - - pipeline_name = "request_data" - internal_id = 1 - - for node_id in tasks: - task = tasks[node_id] - new_task = ComputationalTask(pipeline_id=pipeline_id, node_id=node_id, internal_id=internal_id, image=task['image'], - input=task['input'], output=task['output'], submit=datetime.datetime.utcnow()) - internal_id = internal_id+1 - db_session.add(new_task) - - db_session.commit() - - task = celery.send_task('comp.task', args=(pipeline_id,), kwargs={}) + #pylint:disable=too-many-nested-blocks + try: + io_files = [] + for node in nodes: + _LOGGER.debug("NODE %s ", node) + + node_id = node['uuid'] + # find connections + successor_nodes = [] + task = {} + is_io_node = False + if node['key'] == 'FileManager': + is_io_node = True + + task["input"] = node["inputs"] + task["output"] = node["outputs"] + task["image"] = {"name" : node['key'], "tag" : node['tag']} + + if is_io_node: + for ofile in node["outputs"]: + current_filename_on_s3 = ofile['value'] + if current_filename_on_s3: + new_filename = node_id +"/" + ofile['key'] # out_1 + # copy the file + io_files.append({ 'from' : current_filename_on_s3, 'to' : new_filename }) + + for link in links: + if link['node1Id'] == node_id: + successor_node_id = link['node2Id'] + if successor_node_id not in successor_nodes and not is_io_node: + successor_nodes.append(successor_node_id) + if link['node2Id'] == node_id: + # there might be something coming in + predecessor_node_id = link['node1Id'] + output_port = link['port1Id'] + input_port = link['port2Id'] + # we use predecessor_node_id.output_port as id fo the input + for t in task['input']: + if t['key'] == input_port: + t['value'] = 'link.' + predecessor_node_id + "." + output_port + + if not is_io_node: + # a node can have an empty successor + #if len(successor_nodes): + dag_adjacency_list[node_id] = successor_nodes + tasks[node_id] = task + + pipeline = ComputationalPipeline(dag_adjacency_list=dag_adjacency_list, state=0) + + db_session.add(pipeline) + db_session.flush() + + pipeline_id = pipeline.pipeline_id + + # now we know the id, lets copy over data + if io_files: + _config = s3_config() + s3_client = S3Client(endpoint=_config.endpoint, + access_key=_config.access_key, secret_key=_config.secret_key) + for io_file in io_files: + _from = io_file['from'] + _to = str(pipeline_id) + "/" + io_file['to'] + _LOGGER.debug("COPYING from %s to %s", _from, _to ) + + s3_client.copy_object(_config.bucket_name, _to, _from) + + + pipeline_name = "request_data" + internal_id = 1 + + for node_id in tasks: + task = tasks[node_id] + new_task = ComputationalTask(pipeline_id=pipeline_id, node_id=node_id, internal_id=internal_id, image=task['image'], + input=task['input'], output=task['output'], submit=datetime.datetime.utcnow()) + internal_id = internal_id+1 + db_session.add(new_task) + + db_session.commit() + + task = celery.send_task('comp.task', args=(pipeline_id,), kwargs={}) + + response['pipeline_name'] = pipeline_name + response['pipeline_id'] = str(pipeline_id) + #pylint:disable=broad-except + except Exception as _e: + _LOGGER.info(_e) - response = {} - response['pipeline_name'] = pipeline_name - response['pipeline_id'] = str(pipeline_id) return web.json_response(response) From 84796591653101b87ba285a7f0d4f8e32253eb41 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 4 Jul 2018 15:01:11 +0200 Subject: [PATCH 072/127] updated fake data --- .../source/class/qxapp/dev/fake/Data.js | 233 ++++++++++++------ 1 file changed, 164 insertions(+), 69 deletions(-) diff --git a/services/web/client/source/class/qxapp/dev/fake/Data.js b/services/web/client/source/class/qxapp/dev/fake/Data.js index e9f0fbcfa22..88815edd4b3 100644 --- a/services/web/client/source/class/qxapp/dev/fake/Data.js +++ b/services/web/client/source/class/qxapp/dev/fake/Data.js @@ -22,6 +22,118 @@ qx.Class.define("qxapp.dev.fake.Data", { prjId: null }), + nodeMap: function() { + return { + "service/computational/itis/tutti:0.0.0-alpha": { + key: "service/computational/itis/tutti", + tag: "0.0.0-alpha", + name: "a little test node", + description: "just the bare minimum", + authors: [ + { + name: "Tobias Oetiker", + email: "oetiker@itis.ethz.ch" + } + ], + contact: "oetiker@itis.ethz.ch", + inputs: { + in_nummber: { + displayOrder: "001", + label: "Number Test", + description: "Test Input for Number", + type: "number", + defaultValue: 5.3 + }, + in_int: { + displayOrder: "002", + label: "Integer Test", + description: "Test Input for Integer", + type: "number", + defaultValue: 2 + }, + in_bool: { + displayOrder: "003", + label: "Boolean Test", + description: "Test Input for Boolean", + defaultValue: true + }, + in_str: { + displayOrder: "004", + label: "String Test", + description: "Test Input for String", + defaultValue: "Gugus" + }, + in_area: { + displayOrder: "005", + label: "Widget TextArea Test", + description: "Test Input for String", + defaultValue: "Gugus\nDu\nDa", + widget: { + type: "TextArea", + minHeight: 50 + } + }, + in_sb: { + displayOrder: "006", + label: "Widget SelectBox Test", + description: "Test Input for SelectBox", + defaultValue: "dog", + widget: { + type: "SelectBox", + structure: [ + { + key: "dog", + label: "A Dog" + }, + { + key: "cat", + label: "A Cat" + } + ] + } + }, + in_file: { + displayOrder: "007", + label: "FileInput Test", + description: "Test Input File", + type: "data:*/*" + }, + in_image: { + displayOrder: "007", + label: "FileInput Test", + description: "Test Input File", + type: "data:[image/jpeg,image/png]" + } + }, + outputs: { + out_number: { + label: "Number Test", + description: "Test Output for Number", + displayOrder: "001", + type: "number" + }, + out_integer: { + label: "Integer Test", + description: "Test Output for Integer", + displayOrder: "002", + type: "integer" + }, + out_bool: { + label: "Boolean Test", + description: "Test Output for Boolean", + displayOrder: "003", + type: "boolean" + }, + out_png: { + label: "Png Test", + description: "Test Output for PNG Image", + displayOrder: "004", + type: "data:image/png" + } + } + } + }; + }, getUsername: function() { return "bizzy"; }, @@ -131,13 +243,58 @@ qx.Class.define("qxapp.dev.fake.Data", { return null; }, - getTemp1Data: function() { + getProject1: function() { + return { + "UUID1": { + type: "service/dynamic/itis/file-picker", + version: "0.0.0", + output: { + out_1: "s3://itis-minion/bucket1/file1" + }, + position: { + x: 10, + y: 10 + } + }, + "UUID2": { + type: "service/computational/itis/sleeper", + version "0.0.1-alpha", + input: { + in_number: "data,3.5", + in_integer: "data,4", + in_image: "link://UUID1/out_1" + }, + position: { + x: 120, + y: 10 + } + }, + "UUID3": { + type: "service/computational/itis/sleeper", + version: "0.0.1-alpha", + input: { + in_number: "link://UUID2/out_number", + in_string: "data,Hello,blablabla", + in_bool: "data,true", + in_image: "link://UUID2/out_png", + in_file: "s3://itis-minion/bucket2/file12" + }, + position: { + x: 260, + y: 10 + } + } + } + }, + + getTemp1Data: function(){ const nNodes = 8; let nodeIds = []; for (let i=0; i Date: Wed, 4 Jul 2018 16:34:51 +0200 Subject: [PATCH 073/127] update samples --- .../source/class/qxapp/dev/fake/Data.js | 82 +++++++++++-------- 1 file changed, 48 insertions(+), 34 deletions(-) diff --git a/services/web/client/source/class/qxapp/dev/fake/Data.js b/services/web/client/source/class/qxapp/dev/fake/Data.js index 88815edd4b3..7ed046b638c 100644 --- a/services/web/client/source/class/qxapp/dev/fake/Data.js +++ b/services/web/client/source/class/qxapp/dev/fake/Data.js @@ -245,43 +245,57 @@ qx.Class.define("qxapp.dev.fake.Data", { getProject1: function() { return { - "UUID1": { - type: "service/dynamic/itis/file-picker", - version: "0.0.0", - output: { - out_1: "s3://itis-minion/bucket1/file1" - }, - position: { - x: 10, - y: 10 - } + name: "Sample Project", + description: "A little fake project without actual backend", + notes: "# title\nThere be dragons inside", + owner: "UUID-OF-TOBI", + collaborators: { + "UUID-OF-PEDRO": [ + "read", + "write" + ] }, - "UUID2": { - type: "service/computational/itis/sleeper", - version "0.0.1-alpha", - input: { - in_number: "data,3.5", - in_integer: "data,4", - in_image: "link://UUID1/out_1" + creationDate: "2018-07-02T16:01:00Z", + lastChangeDate: "2018-07-02T16:02:22Z", + workbench: { + "UUID1": { + type: "service/dynamic/itis/file-picker", + version: "0.0.0", + output: { + out_1: "s3://itis-minion/bucket1/file1" + }, + position: { + x: 10, + y: 10 + } }, - position: { - x: 120, - y: 10 - } - }, - "UUID3": { - type: "service/computational/itis/sleeper", - version: "0.0.1-alpha", - input: { - in_number: "link://UUID2/out_number", - in_string: "data,Hello,blablabla", - in_bool: "data,true", - in_image: "link://UUID2/out_png", - in_file: "s3://itis-minion/bucket2/file12" + "UUID2": { + type: "service/computational/itis/sleeper", + version: "0.0.1-alpha", + input: { + in_number: "num:3.5", + in_integer: "int:4", + in_image: "link://UUID1/out_1" + }, + position: { + x: 120, + y: 10 + } }, - position: { - x: 260, - y: 10 + "UUID3": { + type: "service/computational/itis/sleeper", + version: "0.0.1-alpha", + input: { + in_number: "link://UUID2/out_number", + in_string: "str:Hello,blablabla", + in_bool: "bool:true", + in_image: "link://UUID2/out_png", + in_file: "s3://itis-minion/bucket2/file12" + }, + position: { + x: 260, + y: 10 + } } } } From 95d796be5dc6fec8827049c684e8246c400991af Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 4 Jul 2018 16:44:15 +0200 Subject: [PATCH 074/127] updated examples --- .../source/class/qxapp/dev/fake/Data.js | 117 +++++++++--------- 1 file changed, 60 insertions(+), 57 deletions(-) diff --git a/services/web/client/source/class/qxapp/dev/fake/Data.js b/services/web/client/source/class/qxapp/dev/fake/Data.js index 7ed046b638c..ea332145162 100644 --- a/services/web/client/source/class/qxapp/dev/fake/Data.js +++ b/services/web/client/source/class/qxapp/dev/fake/Data.js @@ -134,6 +134,65 @@ qx.Class.define("qxapp.dev.fake.Data", { } }; }, + projectList: function() { + return [ + { + name: "Sample Project", + description: "A little fake project without actual backend", + notes: "# title\nThere be dragons inside", + owner: "UUID-OF-TOBI", + collaborators: { + "UUID-OF-PEDRO": [ + "read", + "write" + ] + }, + creationDate: "2018-07-02T16:01:00Z", + lastChangeDate: "2018-07-02T16:02:22Z", + workbench: { + "UUID1": { + type: "service/dynamic/itis/file-picker", + version: "0.0.0", + output: { + out_1: "s3://itis-minion/bucket1/file1" + }, + position: { + x: 10, + y: 10 + } + }, + "UUID2": { + type: "service/computational/itis/sleeper", + version: "0.0.1-alpha", + input: { + in_number: "num:3.5", + in_integer: "int:4", + in_image: "link://UUID1/out_1" + }, + position: { + x: 120, + y: 10 + } + }, + "UUID3": { + type: "service/computational/itis/sleeper", + version: "0.0.1-alpha", + input: { + in_number: "link://UUID2/out_number", + in_string: "str:Hello,blablabla", + in_bool: "bool:true", + in_image: "link://UUID2/out_png", + in_file: "s3://itis-minion/bucket2/file12" + }, + position: { + x: 260, + y: 10 + } + } + } + } + ]; + }, getUsername: function() { return "bizzy"; }, @@ -243,63 +302,7 @@ qx.Class.define("qxapp.dev.fake.Data", { return null; }, - getProject1: function() { - return { - name: "Sample Project", - description: "A little fake project without actual backend", - notes: "# title\nThere be dragons inside", - owner: "UUID-OF-TOBI", - collaborators: { - "UUID-OF-PEDRO": [ - "read", - "write" - ] - }, - creationDate: "2018-07-02T16:01:00Z", - lastChangeDate: "2018-07-02T16:02:22Z", - workbench: { - "UUID1": { - type: "service/dynamic/itis/file-picker", - version: "0.0.0", - output: { - out_1: "s3://itis-minion/bucket1/file1" - }, - position: { - x: 10, - y: 10 - } - }, - "UUID2": { - type: "service/computational/itis/sleeper", - version: "0.0.1-alpha", - input: { - in_number: "num:3.5", - in_integer: "int:4", - in_image: "link://UUID1/out_1" - }, - position: { - x: 120, - y: 10 - } - }, - "UUID3": { - type: "service/computational/itis/sleeper", - version: "0.0.1-alpha", - input: { - in_number: "link://UUID2/out_number", - in_string: "str:Hello,blablabla", - in_bool: "bool:true", - in_image: "link://UUID2/out_png", - in_file: "s3://itis-minion/bucket2/file12" - }, - position: { - x: 260, - y: 10 - } - } - } - } - }, + getTemp1Data: function(){ const nNodes = 8; From b90e3042da3a8faa5a59f8b6d1cba42b8e796b68 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 10 Jul 2018 09:52:05 +0200 Subject: [PATCH 075/127] don't need Fake.js anymore ... --- .../source/class/qxapp/dev/fake/Data.js | 3 + .../source/class/qxapp/dev/fake/Fake.js | 1193 ----------------- 2 files changed, 3 insertions(+), 1193 deletions(-) delete mode 100644 services/web/client/source/class/qxapp/dev/fake/Fake.js diff --git a/services/web/client/source/class/qxapp/dev/fake/Data.js b/services/web/client/source/class/qxapp/dev/fake/Data.js index b07019eaba3..2b2a24639d9 100644 --- a/services/web/client/source/class/qxapp/dev/fake/Data.js +++ b/services/web/client/source/class/qxapp/dev/fake/Data.js @@ -187,6 +187,9 @@ qx.Class.define("qxapp.dev.fake.Data", { x: 260, y: 10 } + }, + "UUID4": { + } } } diff --git a/services/web/client/source/class/qxapp/dev/fake/Fake.js b/services/web/client/source/class/qxapp/dev/fake/Fake.js deleted file mode 100644 index a79b9fd973d..00000000000 --- a/services/web/client/source/class/qxapp/dev/fake/Fake.js +++ /dev/null @@ -1,1193 +0,0 @@ -/** - * Collection of free function with fake data for testing - * - * TODO: Use faker https://scotch.io/tutorials/generate-fake-data-for-your-javascript-applications-using-faker - */ - -/* global window */ - -qx.Class.define("qxapp.dev.fake.Data", { - type: "static", - - statics: { - - /** - * Represents an empty project descriptor - */ - NEW_PROJECT_DESCRIPTOR: qx.data.marshal.Json.createModel({ - name: "New Project", - description: "Empty", - thumbnail: "https://imgplaceholder.com/171x96/cccccc/757575/ion-plus-round", - created: null, - prjId: null - }), - - - nodeMap: function() { - return { - "service/computational/itis/tutti:0.0.0-alpha": { - key: "service/computational/itis/tutti", - tag: "0.0.0-alpha", - name: "a little test node", - description: "just the bare minimum", - authors: [ - { - name: "Tobias Oetiker", - email: "oetiker@itis.ethz.ch" - } - ], - contact: "oetiker@itis.ethz.ch", - inputs: { - in_nummber: { - displayOrder: "001", - label: "Number Test", - description: "Test Input for Number", - type: "number", - defaultValue: 5.3 - }, - in_int: { - displayOrder: "002", - label: "Integer Test", - description: "Test Input for Integer", - type: "number", - defaultValue: 2 - }, - in_bool: { - displayOrder: "003", - label: "Boolean Test", - description: "Test Input for Boolean", - defaultValue: true - }, - in_str: { - displayOrder: "004", - label: "String Test", - description: "Test Input for String", - defaultValue: "Gugus" - }, - in_area: { - displayOrder: "005", - label: "Widget TextArea Test", - description: "Test Input for String", - defaultValue: "Gugus\nDu\nDa", - widget: { - type: "TextArea", - minHeight: 50 - } - }, - in_sb: { - displayOrder: "006", - label: "Widget SelectBox Test", - description: "Test Input for SelectBox", - defaultValue: "dog", - widget: { - type: "SelectBox", - structure: [ - { - key: "dog", - label: "A Dog" - }, - { - key: "cat", - label: "A Cat" - } - ] - } - }, - in_file: { - displayOrder: "007", - label: "FileInput Test", - description: "Test Input File", - type: "data:*/*" - }, - in_image: { - displayOrder: "007", - label: "FileInput Test", - description: "Test Input File", - type: "data:[image/jpeg,image/png]" - } - }, - outputs: { - out_number: { - label: "Number Test", - description: "Test Output for Number", - displayOrder: "001", - type: "number" - }, - out_integer: { - label: "Integer Test", - description: "Test Output for Integer", - displayOrder: "002", - type: "integer" - }, - out_bool: { - label: "Boolean Test", - description: "Test Output for Boolean", - displayOrder: "003", - type: "boolean" - }, - out_png: { - label: "Png Test", - description: "Test Output for PNG Image", - displayOrder: "004", - type: "data:image/png" - } - } - } - }; - }, - projectList: function() { - return [ - { - name: "Sample Project", - description: "A little fake project without actual backend", - notes: "# title\nThere be dragons inside", - owner: "UUID-OF-TOBI", - collaborators: { - "UUID-OF-PEDRO": [ - "read", - "write" - ] - }, - creationDate: "2018-07-02T16:01:00Z", - lastChangeDate: "2018-07-02T16:02:22Z", - workbench: { - "UUID1": { - type: "service/dynamic/itis/file-picker", - version: "0.0.0", - output: { - out_1: "s3://itis-minion/bucket1/file1" - }, - position: { - x: 10, - y: 10 - } - }, - "UUID2": { - type: "service/computational/itis/sleeper", - version: "0.0.1-alpha", - input: { - in_number: "num:3.5", - in_integer: "int:4", - in_image: "link://UUID1/out_1" - }, - position: { - x: 120, - y: 10 - } - }, - "UUID3": { - type: "service/computational/itis/sleeper", - version: "0.0.1-alpha", - input: { - in_number: "link://UUID2/out_number", - in_string: "str:Hello,blablabla", - in_bool: "bool:true", - in_image: "link://UUID2/out_png", - in_file: "s3://itis-minion/bucket2/file12" - }, - position: { - x: 260, - y: 10 - } - } - } - } - ]; - }, - - getUsername: function() { - return "bizzy"; - }, - - getS3PublicBucketName: function() { - return "simcore"; - }, - - getObjectList: function() { - const objects = [ - { - "path": "simcore0/file0", - "lastModified": "blah", - "size": 10 - }, { - "path": "simcore0/bat/two/three/four/file1", - "lastModified": "blah", - "size": 11 - }, { - "path": "simcore/file2", - "lastModified": "blah", - "size": 12 - }, { - "path": "simcore/file3", - "lastModified": "blah", - "size": 13 - }, { - "path": "simcore2/file4", - "lastModified": "blah2", - "size": 14 - }, { - "path": "simcore2/file5", - "lastModified": "blah2", - "size": 15 - }, { - "path": "simcore0/one/file6", - "lastModified": "blah", - "size": 16 - }, { - "path": "simcore0/one/two/three/four/file7", - "lastModified": "blah", - "size": 17 - } - ]; - return objects; - }, - - /** - * Returns a qx array with projects associated to a user - */ - getUserProjects: function(count = 3, username = "bizzy") { - let rawData = []; - - for (var i = 0; i < count; i++) { - var item = qx.data.marshal.Json.createModel({ - name: "Project #" + (i + 1), - description: "This is a short description by " + username, - thumbnail: null, - created: null, - prjId: null - }); - rawData.push(item); - } - - // A wrapper around raw array to make it "bindable" - var data = new qx.data.Array(rawData); - return data; - }, - - getTemplateProjects: function() { - let rawData = []; - - let item1 = qx.data.marshal.Json.createModel({ - name: "Sleepers", - description: "Sample used for the unidirectional pipelining", - thumbnail: null, - created: null, - prjId: "temp1" - }); - rawData.push(item1); - - let item2 = qx.data.marshal.Json.createModel({ - name: "Single Cell", - description: "Colleen Clancy use case", - thumbnail: null, - created: null, - prjId: "temp2" - }); - rawData.push(item2); - - // A wrapper around raw array to make it "bindable" - var data = new qx.data.Array(rawData); - return data; - }, - - getPrjData: function(prjId) { - switch (prjId) { - case "temp1": { - let tempData = this.getTemp1Data(); - return tempData; - } - case "temp2": { - let tempData = this.getTemp2Data(); - return tempData; - } - } - return null; - }, - - - getTemp1Data: function() { - - const nNodes = 8; - let nodeIds = []; - for (let i=0; i ({ - key: k.toLowerCase(), - label: k - }) - ) - - }, - "defaultValue": "c" - }, { - "key": "in_9", - "label": "solverMode", - "description": "Solver Mode", - "type": "string", - "widget": "selectBox", - "cfg": { - structure: - ["0D", "1D", "2D"].map( - k => ({ - key: k.toLowerCase(), - label: k - }) - ) - - }, - "defaultValue": "0d" - }], - "outputs": [{ - "key": "out_1", - "label": "csv-url", - "description": "csv-url", - "type": "csv-url", - "defaultValue": null - }], - "settings": [] - }, { - "key": "Computational2", - "tag": "1.0", - "name": "Computational 2", - "description": "Computational 2", - "inputs": [{ - "key": "in_1", - "label": "Scene", - "description": "Scene", - "type": "scene", - "defaultValue": null - }], - "outputs": [{ - "key": "out_1", - "label": "Numbers", - "description": "Other numbers", - "type": "integer", - "defaultValue": null - }], - "settings": [] - }, { - "key": "masu.speag.com/simcore/services/comp/sleeper", - "tag": "0.0.1", - "name": "Sleeper", - "description": "Sleeper", - "inputs": [{ - "key": "in_1", - "label": "File-url", - "description": "File-url", - "type": "file-url", - "defaultValue": null - }, { - "key": "in_2", - "label": "Number", - "description": "Number", - "type": "integer", - "defaultValue": 0 - }, { - "key": "in_3", - "label": "Number", - "description": "Sleep extra sec", - "type": "integer", - "defaultValue": 0 - }], - "outputs": [{ - "key": "out_1", - "label": "File-url", - "description": "File-url", - "type": "file-url", - "defaultValue": null - }, { - "key": "out_2", - "label": "Number", - "description": "Number", - "type": "integer", - "defaultValue": 0 - }], - "settings": [] - }]; - return computationals; - }, - - getAnalyses: function() { - const analyses = [{ - "key": "jupyter-base-notebook", - "tag": "1.0", - "name": "Jupyter", - "description": "Jupyter", - "inputs": [{ - "key": "in_1", - "label": "Number", - "description": "Number", - "type": "integer", - "defaultValue": null - }], - "outputs": [], - "settings": [], - "viewer": { - "ip": "http://" + window.location.hostname, - "port": null - } - }, { - "key": "Analysis2", - "tag": "1.0", - "name": "Analysis 2", - "description": "Analysis 2", - "inputs": [{ - "key": "in_1", - "label": "Number", - "description": "Number", - "type": "integer", - "defaultValue": null - }], - "outputs": [], - "settings": [] - }, { - "key": "csv-table-graph", - "tag": "1.0", - "name": "CSV Viewer", - "description": "CSV Viewer", - "inputs": [{ - "key": "in_1", - "label": "csv-url", - "description": "csv-url", - "type": "file-url", - "defaultValue": null - }], - "outputs": [], - "settings": [], - "viewer": { - "ip": "http://" + window.location.hostname, - "port": null - } - }]; - return analyses; - } - } // statics - -}); From c01aa845aeff551618b1342779a4401c1b1931c1 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 10 Jul 2018 10:28:49 +0200 Subject: [PATCH 076/127] remove inband signalling --- .../source/resource/qxapp/project-v0.0.1.json | 175 ++++++++++++++++-- 1 file changed, 160 insertions(+), 15 deletions(-) diff --git a/services/web/client/source/resource/qxapp/project-v0.0.1.json b/services/web/client/source/resource/qxapp/project-v0.0.1.json index 432d1af06c1..b1d58600a25 100644 --- a/services/web/client/source/resource/qxapp/project-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/project-v0.0.1.json @@ -93,15 +93,97 @@ "description": "values of input properties", "patternProperties": { "^[_a-z0-9]+$": { - "type": "string", - "pattern": "^(bool:(true|false)|int:-?\\d+,num:^([-+]?\\d*\\.?\\d+)([eE][-+]?\\d+)?|str:.+|link://[^/\\s]+/\\S+|s3://[^/\\s]+/[^/\\s]+/.+$", - "examples": [ - "int:3", - "bool:true" - "str:Hello World", - "s3://system/bucket/file", - "link://UUID1/out_2" + "oneOf": [ + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ "integer" ] + }, + "value": { + "type": "integer" + } + } + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ "number" ] + }, + "value": { + "type": "number" + } + } + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ "boolean" ] + }, + "value": { + "type": "boolean" + } + } + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ "string" ] + }, + "value": { + "type": "string" + } + } + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ "link" ] + }, + "value": { + "type": "object", + "properties": { + "nodeUuid": { + "type": "string" + }, + "property": { + "type": "string" + } + } + } + } + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ "data" ] + }, + "value": { + "type": "object", + "properties": { + "store": { + "type": "string" + }, + "path": { + "type": "string" + } + } + } + } + } ] + } } } }, @@ -109,13 +191,76 @@ "type": "object", "patternProperties": { "^[_a-z0-9]+$": { - "type": "string", - "pattern": "^(bool:(true|false)|int:-?\\d+,num:^([-+]?\\d*\\.?\\d+)([eE][-+]?\\d+)?|str:.+|link://[^/\\s]+/\\S+|s3://[^/\\s]+/[^/\\s]+/.+$", - "examples": [ - "bool:false", - "s3://system/bucket/file", - "link://UUID1/out_2" - ] + "oneOf": [ + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ "integer" ] + }, + "value": { + "type": "integer" + } + } + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ "number" ] + }, + "value": { + "type": "number" + } + } + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ "boolean" ] + }, + "value": { + "type": "boolean" + } + } + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ "string" ] + }, + "value": { + "type": "string" + } + } + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ "data" ] + }, + "value": { + "type": "object", + "properties": { + "store": { + "type": "string" + }, + "path": { + "type": "string" + } + } + } + } + } + ] } } }, From a32c604b01d37a2ec6f48028ee802228764eda12 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 10 Jul 2018 10:57:44 +0200 Subject: [PATCH 077/127] cleanup formats and sync fake data --- .../source/class/qxapp/dev/fake/Data.js | 56 ++++-- .../resource/qxapp/node-meta-v0.0.1.json | 6 +- .../source/resource/qxapp/project-v0.0.1.json | 175 ++++-------------- 3 files changed, 87 insertions(+), 150 deletions(-) diff --git a/services/web/client/source/class/qxapp/dev/fake/Data.js b/services/web/client/source/class/qxapp/dev/fake/Data.js index 2b2a24639d9..fe3e6ae076d 100644 --- a/services/web/client/source/class/qxapp/dev/fake/Data.js +++ b/services/web/client/source/class/qxapp/dev/fake/Data.js @@ -36,7 +36,7 @@ qx.Class.define("qxapp.dev.fake.Data", { ], contact: "oetiker@itis.ethz.ch", inputs: { - in_nummber: { + in_number: { displayOrder: "001", label: "Number Test", description: "Test Input for Number", @@ -153,7 +153,10 @@ qx.Class.define("qxapp.dev.fake.Data", { type: "service/dynamic/itis/file-picker", version: "0.0.0", output: { - out_1: "s3://itis-minion/bucket1/file1" + out_1: { + store: "s3-z43", + path: "/bucket1/file1" + } }, position: { x: 10, @@ -164,9 +167,12 @@ qx.Class.define("qxapp.dev.fake.Data", { type: "service/computational/itis/sleeper", version: "0.0.1-alpha", input: { - in_number: "num:3.5", - in_integer: "int:4", - in_image: "link://UUID1/out_1" + in_number: 3.5 + in_integer: 4 + in_image: { + nodeUuid: "UUID1", + property: "out_1" + } }, position: { x: 120, @@ -177,11 +183,20 @@ qx.Class.define("qxapp.dev.fake.Data", { type: "service/computational/itis/sleeper", version: "0.0.1-alpha", input: { - in_number: "link://UUID2/out_number", - in_string: "str:Hello,blablabla", - in_bool: "bool:true", - in_image: "link://UUID2/out_png", - in_file: "s3://itis-minion/bucket2/file12" + in_number: { + nodeUuid: "UUID2", + property: "out_number" + }, + in_string: "Hello,blablabla", + in_bool: true, + in_image: { + nodeUuid: "UUID2", + property: "out_png" + } + in_file: { + store: "s3-z43", + path: "/bucket2/file12" + } }, position: { x: 260, @@ -189,8 +204,25 @@ qx.Class.define("qxapp.dev.fake.Data", { } }, "UUID4": { - - } + type: "service/computational/itis/tutti", + version: "0.0.0-alpha", + input: { + in_number: 3.3, + in_int: 372, + in_bool: true, + in_str: "Ooops, Again", + in_area: "some\nmore", + in_sb: "cat", + in_file: { + store: "s3-z43", + path: "bucket33/file.data" + }, + in_image: { + store: "s3-z43", + path: "bucket32/file.png" + } + } + } } } ]; diff --git a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json index c99eb22f2b5..40b1b59615f 100644 --- a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json @@ -97,7 +97,7 @@ "type": "object", "description": "definition of the inputs of this node", "patternProperties": { - "^[_a-z0-9]+$": { + "^[-_a-zA-Z0-9]+$": { "type": "object", "description": "all the input configurable for this service", "additionalProperties": false, @@ -105,7 +105,7 @@ "displayOrder", "label", "description", - "type", + "type" ], "properties": { "displayOrder": { @@ -247,7 +247,7 @@ "type": "object", "description": "definition of the outputs of this node", "patternProperties": { - "^[_a-z0-9]+$": { + "^[-_a-zA-Z0-9]+$": { "type": "object", "description": "all the output produced by this node", "additionalProperties": false, diff --git a/services/web/client/source/resource/qxapp/project-v0.0.1.json b/services/web/client/source/resource/qxapp/project-v0.0.1.json index b1d58600a25..7ed291c2804 100644 --- a/services/web/client/source/resource/qxapp/project-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/project-v0.0.1.json @@ -69,6 +69,13 @@ "patternProperties": { "^\\S+$": { "type": "object", + "additionalProperties": false, + "required": [ + "type", + "version", + "inputs", + "position" + ], "properties": { "type": { "type": "string", @@ -88,97 +95,44 @@ "0.0.1" ] }, - "input": { + "inputs": { "type": "object", "description": "values of input properties", "patternProperties": { - "^[_a-z0-9]+$": { + "^[-_a-zA-Z0-9]+$": { "oneOf": [ { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ "integer" ] - }, - "value": { - "type": "integer" - } - } + "type": ["integer","boolean","string","number"] }, { "type": "object", + "additionalProperties": false, + "required": [ + "nodeUuid", + "property" + ], "properties": { - "type": { - "type": "string", - "enum": [ "number" ] - }, - "value": { - "type": "number" - } - } - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ "boolean" ] - }, - "value": { - "type": "boolean" - } - } - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ "string" ] - }, - "value": { + "nodeUuid": { "type": "string" - } - } - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ "link" ] }, - "value": { - "type": "object", - "properties": { - "nodeUuid": { - "type": "string" - }, - "property": { - "type": "string" - } - } - } + "property": { + "type": "string" + } } }, { "type": "object", + "additionalProperties": false, + "required": [ + "store", + "path" + ], "properties": { - "type": { - "type": "string", - "enum": [ "data" ] + "store": { + "type": "string" }, - "value": { - "type": "object", - "properties": { - "store": { - "type": "string" - }, - "path": { - "type": "string" - } - } + "path": { + "type": "string" } } } @@ -187,76 +141,27 @@ } } }, - "output": { + "outputs": { "type": "object", "patternProperties": { - "^[_a-z0-9]+$": { - "oneOf": [ + "^[-_a-zA-Z0-9]+$": { + "oneOf": "oneOf": [ { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ "integer" ] - }, - "value": { - "type": "integer" - } - } + "type": ["integer","boolean","string","number"] }, { "type": "object", + "additionalProperties": false, + "required": [ + "store", + "path" + ], "properties": { - "type": { - "type": "string", - "enum": [ "number" ] - }, - "value": { - "type": "number" - } - } - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ "boolean" ] - }, - "value": { - "type": "boolean" - } - } - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ "string" ] - }, - "value": { + "store": { "type": "string" - } - } - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ "data" ] }, - "value": { - "type": "object", - "properties": { - "store": { - "type": "string" - }, - "path": { - "type": "string" - } - } + "path": { + "type": "string" } } } From 55551a906cf5954ef97071c1dfefe44462bd7f91 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 10 Jul 2018 11:20:15 +0200 Subject: [PATCH 078/127] allow comalCase properties --- .../source/class/qxapp/dev/fake/Data.js | 86 +++++++++---------- .../resource/qxapp/node-meta-v0.0.1.json | 22 +++-- 2 files changed, 53 insertions(+), 55 deletions(-) diff --git a/services/web/client/source/class/qxapp/dev/fake/Data.js b/services/web/client/source/class/qxapp/dev/fake/Data.js index fe3e6ae076d..6eecac28f46 100644 --- a/services/web/client/source/class/qxapp/dev/fake/Data.js +++ b/services/web/client/source/class/qxapp/dev/fake/Data.js @@ -36,34 +36,34 @@ qx.Class.define("qxapp.dev.fake.Data", { ], contact: "oetiker@itis.ethz.ch", inputs: { - in_number: { - displayOrder: "001", + inNumber: { + displayOrder: 0, label: "Number Test", description: "Test Input for Number", type: "number", defaultValue: 5.3 }, - in_int: { - displayOrder: "002", + inInt: { + displayOrder: 1, label: "Integer Test", description: "Test Input for Integer", type: "number", defaultValue: 2 }, - in_bool: { - displayOrder: "003", + inBool: { + displayOrder: 2, label: "Boolean Test", description: "Test Input for Boolean", defaultValue: true }, - in_str: { - displayOrder: "004", + inStr: { + displayOrder: 3, label: "String Test", description: "Test Input for String", defaultValue: "Gugus" }, - in_area: { - displayOrder: "005", + inArea: { + displayOrder: 4, label: "Widget TextArea Test", description: "Test Input for String", defaultValue: "Gugus\nDu\nDa", @@ -72,8 +72,8 @@ qx.Class.define("qxapp.dev.fake.Data", { minHeight: 50 } }, - in_sb: { - displayOrder: "006", + inSb: { + displayOrder: 5, label: "Widget SelectBox Test", description: "Test Input for SelectBox", defaultValue: "dog", @@ -91,42 +91,42 @@ qx.Class.define("qxapp.dev.fake.Data", { ] } }, - in_file: { - displayOrder: "007", + inFile: { + displayOrder: 6, label: "FileInput Test", description: "Test Input File", type: "data:*/*" }, - in_image: { - displayOrder: "007", + inImage: { + displayOrder: 7, label: "FileInput Test", description: "Test Input File", type: "data:[image/jpeg,image/png]" } }, outputs: { - out_number: { + outNumber: { label: "Number Test", description: "Test Output for Number", - displayOrder: "001", + displayOrder: 0, type: "number" }, - out_integer: { + outInteger: { label: "Integer Test", description: "Test Output for Integer", - displayOrder: "002", + displayOrder: 1, type: "integer" }, - out_bool: { + outBool: { label: "Boolean Test", description: "Test Output for Boolean", - displayOrder: "003", + displayOrder: 2, type: "boolean" }, - out_png: { + outPng: { label: "Png Test", description: "Test Output for PNG Image", - displayOrder: "004", + displayOrder: 3, type: "data:image/png" } } @@ -153,7 +153,7 @@ qx.Class.define("qxapp.dev.fake.Data", { type: "service/dynamic/itis/file-picker", version: "0.0.0", output: { - out_1: { + out1: { store: "s3-z43", path: "/bucket1/file1" } @@ -167,9 +167,9 @@ qx.Class.define("qxapp.dev.fake.Data", { type: "service/computational/itis/sleeper", version: "0.0.1-alpha", input: { - in_number: 3.5 - in_integer: 4 - in_image: { + inNumber: 3.5, + inInteger: 4, + inImage: { nodeUuid: "UUID1", property: "out_1" } @@ -183,17 +183,17 @@ qx.Class.define("qxapp.dev.fake.Data", { type: "service/computational/itis/sleeper", version: "0.0.1-alpha", input: { - in_number: { + inNumber: { nodeUuid: "UUID2", property: "out_number" }, - in_string: "Hello,blablabla", - in_bool: true, - in_image: { + inString: "Hello,blablabla", + inBool: true, + inImage: { nodeUuid: "UUID2", property: "out_png" - } - in_file: { + }, + inFile: { store: "s3-z43", path: "/bucket2/file12" } @@ -207,22 +207,22 @@ qx.Class.define("qxapp.dev.fake.Data", { type: "service/computational/itis/tutti", version: "0.0.0-alpha", input: { - in_number: 3.3, - in_int: 372, - in_bool: true, - in_str: "Ooops, Again", - in_area: "some\nmore", - in_sb: "cat", - in_file: { + inNumber: 3.3, + inInt: 372, + inBool: true, + inStr: "Ooops, Again", + inArea: "some\nmore", + inSb: "cat", + inFile: { store: "s3-z43", path: "bucket33/file.data" }, - in_image: { + inImage: { store: "s3-z43", path: "bucket32/file.png" } } - } + } } } ]; diff --git a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json index 40b1b59615f..a7cb8a85977 100644 --- a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json @@ -109,12 +109,11 @@ ], "properties": { "displayOrder": { - "type": "string", - "description": "use this to alphabetically sort the properties for display", - "pattern": "^\\d{3}(\\.\\d{3})*", + "type": "number", + "description": "use this to numerically sort the properties for display", "examples": [ - "001.001", - "001.002.001" + 1, + -0.2 ] }, "label": { @@ -259,13 +258,12 @@ ], "properties": { "displayOrder": { - "type": "string", - "description": "use this to alphabetically sort the properties for display", - "pattern": "^\\d{3}(\\.\\d{3})*", - "examples": [ - "001.001", - "001.002.001" - ] + "type": "number", + "description": "use this to numerically sort the properties for display", + "examples": [ + 1, + -0.2 + ] }, "label": { "type": "string", From 2a56a1e6b0f20551a2478bc9d8ab8e70d797be3a Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 10 Jul 2018 11:26:26 +0200 Subject: [PATCH 079/127] fix syntax --- .../source/resource/qxapp/project-v0.0.1.json | 360 +++++++++--------- 1 file changed, 190 insertions(+), 170 deletions(-) diff --git a/services/web/client/source/resource/qxapp/project-v0.0.1.json b/services/web/client/source/resource/qxapp/project-v0.0.1.json index 7ed291c2804..3b9942e1e88 100644 --- a/services/web/client/source/resource/qxapp/project-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/project-v0.0.1.json @@ -1,188 +1,208 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "simcore project", - "description": "Description of a simcore project", - "type": "object", - "additionalProperties": false, - "required": [ - ], - "properties": { - "name": { - "type": "string", - "description": "project name", - "examples": [ - "Temporal Distortion Simulator" - ] - }, - "description": { - "type": "string", - "description": "longer one-line description about the project", - "examples": [ - "Dabbling in temporal transitions ..." - ] - }, - "notes": { - "type": "string", - "description": "longer project description. using common mark", - "examples": [ - "# title\nSome Text `with` common mark markup" - ] - }, - "owner": { - "type": "string", - "description": "user uuid" - }, - "collaborators": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "simcore project", + "description": "Description of a simcore project", + "type": "object", + "additionalProperties": false, + "required": [ + "name", + "description", + "notes", + "owner", + "collaborators", + "creationDate", + "lastChangeDate", + "workbench" + ], + "properties": { + "name": { + "type": "string", + "description": "project name", + "examples": [ + "Temporal Distortion Simulator" + ] + }, + "description": { + "type": "string", + "description": "longer one-line description about the project", + "examples": [ + "Dabbling in temporal transitions ..." + ] + }, + "notes": { + "type": "string", + "description": "longer project description. using common mark", + "examples": [ + "# title\nSome Text `with` common mark markup" + ] + }, + "owner": { + "type": "string", + "description": "user uuid" + }, + "collaborators": { + "type": "array", + "items": { + "type": "object", + "description": "UUIDs of the users/groups who should get access to this", + "patternProperties": { + "^\\S+$": { "type": "array", "items": { - "type": "object", - "description": "UUIDs of the users/groups who should get access to this", - "patternProperties": { - "^\\S+$": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "read", - "write" - ] + "type": "string", + "enum": [ + "read", + "write" + ] + } + } + } + } + }, + "creationDate": { + "type": "string", + "description": "project creation date", + "pattern": "\\d{4}-(12|11|10|[1-9])-(31|30|[12]\\d|[1-9])T(2[0-4]|1\\d|[1-9])(:(\\d|[0-5]\\d)){2}Z", + "examples": [ + "2018-07-01T11:13:43Z" + ] + }, + "lastChangeDate": { + "type": "string", + "description": "last save date", + "pattern": "\\d{4}-(12|`11|10|[1-9])-(31|30|[12]\\d|[1-9])T(2[0-4]|1\\d|[1-9])(:(\\d|[0-5]\\d)){2}Z", + "examples": [ + "2018-07-01T11:13:43Z" + ] + }, + "workbench": { + "type": "object", + "patternProperties": { + "^\\S+$": { + "type": "object", + "additionalProperties": false, + "required": [ + "type", + "version", + "inputs", + "position" + ], + "properties": { + "type": { + "type": "string", + "description": "distinctive name for the node based on the docker registry path", + "pattern": "^(service)/(computational|dynamic)/([^\\s/]+)$", + "examples": [ + "service/computational/sleeper", + "service/dynamic/3dviewer" + ] + }, + "version": { + "type": "string", + "description": "semantic version number of the node", + "pattern": "^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){2}(-(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*)(\\.(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*))*)?(\\+[-\\da-zA-Z]+(\\.[-\\da-zA-Z-]+)*)?$", + "examples": [ + "1.0.0", + "0.0.1" + ] + }, + "inputs": { + "type": "object", + "description": "values of input properties", + "patternProperties": { + "^[-_a-zA-Z0-9]+$": { + "oneOf": [ + { + "type": [ + "integer", + "boolean", + "string", + "number" + ] + }, + { + "type": "object", + "additionalProperties": false, + "required": [ + "nodeUuid", + "property" + ], + "properties": { + "nodeUuid": { + "type": "string" + }, + "property": { + "type": "string" + } } - } + }, + { + "type": "object", + "additionalProperties": false, + "required": [ + "store", + "path" + ], + "properties": { + "store": { + "type": "string" + }, + "path": { + "type": "string" + } + } + } + ] + } } } - }, - "creationDate": { - "type": "string", - "description": "project creation date", - "pattern": "\\d{4}-(12|11|10|[1-9])-(31|30|[12]\\d|[1-9])T(2[0-4]|1\\d|[1-9])(:(\\d|[0-5]\\d)){2}Z", - "examples": [ - "2018-07-01T11:13:43Z" - ] - }, - "lastChangeDate": { - "type": "string", - "description": "last save date", - "pattern": "\\d{4}-(12|`11|10|[1-9])-(31|30|[12]\\d|[1-9])T(2[0-4]|1\\d|[1-9])(:(\\d|[0-5]\\d)){2}Z", - }, - "workbench": { + }, + "outputs": { "type": "object", "patternProperties": { - "^\\S+$": { + "^[-_a-zA-Z0-9]+$": { + "oneOf": [ + { + "type": [ + "integer", + "boolean", + "string", + "number" + ] + }, + { "type": "object", "additionalProperties": false, "required": [ - "type", - "version", - "inputs", - "position" + "store", + "path" ], "properties": { - "type": { - "type": "string", - "description": "distinctive name for the node based on the docker registry path", - "pattern": "^(service)/(computational|dynamic)/([^\\s/]+)$", - "examples": [ - "service/computational/sleeper", - "service/dynamic/3dviewer" - ] - }, - "version": { - "type": "string", - "description": "semantic version number of the node", - "pattern": "^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){2}(-(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*)(\\.(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*))*)?(\\+[-\\da-zA-Z]+(\\.[-\\da-zA-Z-]+)*)?$", - "examples": [ - "1.0.0", - "0.0.1" - ] - }, - "inputs": { - "type": "object", - "description": "values of input properties", - "patternProperties": { - "^[-_a-zA-Z0-9]+$": { - "oneOf": [ - { - "type": ["integer","boolean","string","number"] - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "nodeUuid", - "property" - ], - "properties": { - "nodeUuid": { - "type": "string" - }, - "property": { - "type": "string" - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "store", - "path" - ], - "properties": { - "store": { - "type": "string" - }, - "path": { - "type": "string" - } - } - } - ] - } - } - } - }, - "outputs": { - "type": "object", - "patternProperties": { - "^[-_a-zA-Z0-9]+$": { - "oneOf": "oneOf": [ - { - "type": ["integer","boolean","string","number"] - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "store", - "path" - ], - "properties": { - "store": { - "type": "string" - }, - "path": { - "type": "string" - } - } - } - ] - } - } - }, - "position": { - "type": "object", - "properties": { - "x": { - "type": "integer" - }, - "y": { - "type": "integer" - } - } - } + "store": { + "type": "string" + }, + "path": { + "type": "string" + } } - } + } + ] + } + } + }, + "position": { + "type": "object", + "properties": { + "x": { + "type": "integer" + }, + "y": { + "type": "integer" + } } + } } + } } + } } From 5c1e4872be5c2920138d0d7afc22c90915f1f042 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 10 Jul 2018 20:52:57 +0200 Subject: [PATCH 080/127] make os check more portable --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9c1dc6f1cb8..b7e258e7ddf 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # author: Sylvain Anderegg # TODO: add flavours by combinging docker-compose files. Namely development, test and production. -VERSION := $(shell cat /proc/version) +VERSION := $(shell uname -a) # SAN this is a hack so that docker-compose works in the linux virtual environment under Windows ifneq (,$(findstring Microsoft,$(VERSION))) export DOCKER_COMPOSE=docker-compose.exe From 8424c89772fa19046ac5e576e494227b10f16f9b Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 10 Jul 2018 20:55:08 +0200 Subject: [PATCH 081/127] move schema check so that it actually gets executed --- .../client/source/class/qxapp/Application.js | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/services/web/client/source/class/qxapp/Application.js b/services/web/client/source/class/qxapp/Application.js index 030c70cd8e1..ef55b31a521 100644 --- a/services/web/client/source/class/qxapp/Application.js +++ b/services/web/client/source/class/qxapp/Application.js @@ -48,6 +48,7 @@ qx.Class.define("qxapp.Application", { qxapp.wrappers.WebSocket.getInstance().connect(); this.__startDesktop(); + this.__schemaCheck(); // FIXME: PC check how to enable url parameters when served with python server // if (qx.core.Environment.get("dev.disableLogin")) { // console.debug("Login was disabled"); @@ -55,6 +56,7 @@ qx.Class.define("qxapp.Application", { // } else { // this.__startLogin(); // } + }, __startDesktop: function() { @@ -89,41 +91,39 @@ qx.Class.define("qxapp.Application", { top: "10%", height: "30%" }); + }, + __schemaCheck: function() { /** a little ajv test */ - let loader = new qx.io.request.Xhr("/resource/qxapp/node-meta-v0.0.1.json"); - loader.addListener("success", e => { + let nodeCheck = new qx.io.request.Xhr("/resource/qxapp/node-meta-v0.0.1.json"); + nodeCheck.addListener("success", e => { + let data = e.getTarget().getResponse(); + try { + let ajv = new qxapp.wrappers.Ajv(data); + let map = qxapp.dev.fake.Data.getNodeMap(); + for (let key in map) { + let check = ajv.validate(map[key]); + console.log("validation result " + key + ":", check); + } + } catch (err) { + console.error(err); + } + }); + nodeCheck.send(); + let projectCheck = new qx.io.request.Xhr("/resource/qxapp/project-v0.0.1.json"); + projectCheck.addListener("success", e => { let data = e.getTarget().getResponse(); - let ajv = new qxapp.wrappers.Ajv(data); - let good = ajv.validate({ - key: "service/computational/sleeper", - tag: "0.0.0-alpha", - name: "a little test node", - description: "just the bare minimum", - authors: [ - { - name: "Tobias Oetiker", - email: "oetiker@itis.ethz.ch" - } - ], - contact: "oetiker@itis.ethz.ch", - inputs: {}, - outputs: {} - }); - console.log("validation result good", good); - let bad = ajv.validate({ - key: "service/computational/sleeper", - tag: "d0.0.0-alpha", - name: "a little test node", - description: "just the bare minimum", - authors: [ - ], - contact: "oetiker@itis.ethz.ch", - inputs: {}, - outputs: {} - }); - console.log("validation result bad", bad); + try { + let ajv = new qxapp.wrappers.Ajv(data); + let list = qxapp.dev.fake.Data.getProjectList(); + list.forEach((project, i) => { + let check = ajv.validate(project); + console.log("validation result " + i + ":", check); + }); + } catch (err) { + console.error(err); + } }); - loader.send(); + projectCheck.send(); } } }); From cd15a2d4e02d5079bd288f1a8b1afaee865135e6 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 10 Jul 2018 20:55:34 +0200 Subject: [PATCH 082/127] fix path --- .../components/workbench/servicesCatalogue/ServicesCatalogue.js | 2 +- .../class/qxapp/components/workbench/widgets/FileManager.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/services/web/client/source/class/qxapp/components/workbench/servicesCatalogue/ServicesCatalogue.js b/services/web/client/source/class/qxapp/components/workbench/servicesCatalogue/ServicesCatalogue.js index e27268a91d9..f969bf9c907 100644 --- a/services/web/client/source/class/qxapp/components/workbench/servicesCatalogue/ServicesCatalogue.js +++ b/services/web/client/source/class/qxapp/components/workbench/servicesCatalogue/ServicesCatalogue.js @@ -32,7 +32,7 @@ qx.Class.define("qxapp.components.workbench.servicesCatalogue.ServicesCatalogue" let store = qxapp.data.Store.getInstance(); this.__allServices = store.getBuiltInServices(); - // this.__allServices = this.__allServices.concat(qxapp.qxapp.dev.fake.Data.getServices()); + // this.__allServices = this.__allServices.concat(qxapp.dev.fake.Data.getServices()); store.addListener("servicesRegistered", e => { this.__addNewData(e.getData()); }, this); diff --git a/services/web/client/source/class/qxapp/components/workbench/widgets/FileManager.js b/services/web/client/source/class/qxapp/components/workbench/widgets/FileManager.js index 89a2573e362..0a7b32481b4 100644 --- a/services/web/client/source/class/qxapp/components/workbench/widgets/FileManager.js +++ b/services/web/client/source/class/qxapp/components/workbench/widgets/FileManager.js @@ -196,7 +196,7 @@ qx.Class.define("qxapp.components.workbench.widgets.FileManager", { this.__uploadFile(file, url); }, this); const data = { - bucketName: qxapp.qxapp.dev.fake.Data.getS3PublicBucketName(), + bucketName: qxapp.dev.fake.Data.getS3PublicBucketName(), fileName: file.name }; socket.emit("presignedUrl", data); From 0fafacf7565d34b49d1135a188223711b49f3e5a Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 10 Jul 2018 20:55:53 +0200 Subject: [PATCH 083/127] fiz schema and sample data to actually comply --- .../source/class/qxapp/dev/fake/Data.js | 22 +++-- .../resource/qxapp/node-meta-v0.0.1.json | 4 +- .../source/resource/qxapp/project-v0.0.1.json | 95 ++++++++++--------- 3 files changed, 65 insertions(+), 56 deletions(-) diff --git a/services/web/client/source/class/qxapp/dev/fake/Data.js b/services/web/client/source/class/qxapp/dev/fake/Data.js index 6eecac28f46..86b1e4be889 100644 --- a/services/web/client/source/class/qxapp/dev/fake/Data.js +++ b/services/web/client/source/class/qxapp/dev/fake/Data.js @@ -21,7 +21,7 @@ qx.Class.define("qxapp.dev.fake.Data", { created: null, prjId: null }), - nodeMap: function() { + getNodeMap: function() { return { "service/computational/itis/tutti:0.0.0-alpha": { key: "service/computational/itis/tutti", @@ -47,23 +47,26 @@ qx.Class.define("qxapp.dev.fake.Data", { displayOrder: 1, label: "Integer Test", description: "Test Input for Integer", - type: "number", + type: "integer", defaultValue: 2 }, inBool: { displayOrder: 2, label: "Boolean Test", + type: "boolean", description: "Test Input for Boolean", defaultValue: true }, inStr: { displayOrder: 3, + type: "string", label: "String Test", description: "Test Input for String", defaultValue: "Gugus" }, inArea: { displayOrder: 4, + type: "string", label: "Widget TextArea Test", description: "Test Input for String", defaultValue: "Gugus\nDu\nDa", @@ -77,6 +80,7 @@ qx.Class.define("qxapp.dev.fake.Data", { label: "Widget SelectBox Test", description: "Test Input for SelectBox", defaultValue: "dog", + type: "string", widget: { type: "SelectBox", structure: [ @@ -133,7 +137,7 @@ qx.Class.define("qxapp.dev.fake.Data", { } }; }, - projectList: function() { + getProjectList: function() { return [ { name: "Sample Project", @@ -152,7 +156,7 @@ qx.Class.define("qxapp.dev.fake.Data", { "UUID1": { type: "service/dynamic/itis/file-picker", version: "0.0.0", - output: { + outputs: { out1: { store: "s3-z43", path: "/bucket1/file1" @@ -166,7 +170,7 @@ qx.Class.define("qxapp.dev.fake.Data", { "UUID2": { type: "service/computational/itis/sleeper", version: "0.0.1-alpha", - input: { + inputs: { inNumber: 3.5, inInteger: 4, inImage: { @@ -182,7 +186,7 @@ qx.Class.define("qxapp.dev.fake.Data", { "UUID3": { type: "service/computational/itis/sleeper", version: "0.0.1-alpha", - input: { + inputs: { inNumber: { nodeUuid: "UUID2", property: "out_number" @@ -206,7 +210,7 @@ qx.Class.define("qxapp.dev.fake.Data", { "UUID4": { type: "service/computational/itis/tutti", version: "0.0.0-alpha", - input: { + inputs: { inNumber: 3.3, inInt: 372, inBool: true, @@ -221,6 +225,10 @@ qx.Class.define("qxapp.dev.fake.Data", { store: "s3-z43", path: "bucket32/file.png" } + }, + position: { + x: 400, + y: 10 } } } diff --git a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json index a7cb8a85977..0c5f034f26d 100644 --- a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json @@ -132,7 +132,7 @@ }, "type": { "type": "string", - "pattern": "^(number|integer|boolean|string|data:(([^/\\s,]+/[^/\\s,]+)|\\[([^/\\s,]+/[^/\\s,]+)(,([^/\\s]+/[^/,\\s]+)*\\])$", + "pattern": "^(number|integer|boolean|string|data:([^/\\s,]+/[^/\\s,]+|\\[[^/\\s,]+/[^/\\s,]+(,[^/\\s]+/[^/,\\s]+)*\\]))$", "description": "data type expected on this input glob matching for data type is allowed", "examples": [ "number", @@ -281,7 +281,7 @@ }, "type": { "type": "string", - "pattern": "^(number|integer|boolean|string|data:([^/\\s\\*,]+/[^/\\s\\*,]+)$", + "pattern": "^(number|integer|boolean|string|data:[^/\\s\\*,]+/[^/\\s\\*,]+)$", "description": "data type expected on this output", "examples": [ "number", diff --git a/services/web/client/source/resource/qxapp/project-v0.0.1.json b/services/web/client/source/resource/qxapp/project-v0.0.1.json index 3b9942e1e88..a812eea916b 100644 --- a/services/web/client/source/resource/qxapp/project-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/project-v0.0.1.json @@ -41,8 +41,6 @@ "description": "user uuid" }, "collaborators": { - "type": "array", - "items": { "type": "object", "description": "UUIDs of the users/groups who should get access to this", "patternProperties": { @@ -57,12 +55,11 @@ } } } - } }, "creationDate": { "type": "string", "description": "project creation date", - "pattern": "\\d{4}-(12|11|10|[1-9])-(31|30|[12]\\d|[1-9])T(2[0-4]|1\\d|[1-9])(:(\\d|[0-5]\\d)){2}Z", + "pattern": "\\d{4}-(12|11|10|0?[1-9])-(31|30|[0-2]?\\d)T(2[0-3]|1\\d|0?[1-9])(:(\\d|[0-5]\\d)){2}Z", "examples": [ "2018-07-01T11:13:43Z" ] @@ -70,7 +67,7 @@ "lastChangeDate": { "type": "string", "description": "last save date", - "pattern": "\\d{4}-(12|`11|10|[1-9])-(31|30|[12]\\d|[1-9])T(2[0-4]|1\\d|[1-9])(:(\\d|[0-5]\\d)){2}Z", + "pattern": "\\d{4}-(12|11|10|0?[1-9])-(31|30|[0-2]?\\d)T(2[0-3]|1\\d|0?[1-9])(:(\\d|[0-5]\\d)){2}Z", "examples": [ "2018-07-01T11:13:43Z" ] @@ -84,14 +81,13 @@ "required": [ "type", "version", - "inputs", "position" ], "properties": { "type": { "type": "string", "description": "distinctive name for the node based on the docker registry path", - "pattern": "^(service)/(computational|dynamic)/([^\\s/]+)$", + "pattern": "^(service)/(computational|dynamic)(/[^\\s/]+)+$", "examples": [ "service/computational/sleeper", "service/dynamic/3dviewer" @@ -155,49 +151,54 @@ ] } } - } - }, - "outputs": { - "type": "object", - "patternProperties": { - "^[-_a-zA-Z0-9]+$": { - "oneOf": [ - { - "type": [ - "integer", - "boolean", - "string", - "number" - ] - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "store", - "path" - ], - "properties": { - "store": { - "type": "string" - }, - "path": { - "type": "string" + }, + "outputs": { + "type": "object", + "patternProperties": { + "^[-_a-zA-Z0-9]+$": { + "oneOf": [ + { + "type": [ + "integer", + "boolean", + "string", + "number" + ] + }, + { + "type": "object", + "additionalProperties": false, + "required": [ + "store", + "path" + ], + "properties": { + "store": { + "type": "string" + }, + "path": { + "type": "string" + } } } - } - ] + ] + } } - } - }, - "position": { - "type": "object", - "properties": { - "x": { - "type": "integer" - }, - "y": { - "type": "integer" + }, + "position": { + "type": "object", + "additionalProperties": false, + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "integer" + }, + "y": { + "type": "integer" + } } } } From fa090dcdf2173b065fa398215bd4c524ffb7fff8 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 11 Jul 2018 11:25:32 +0200 Subject: [PATCH 084/127] fix syntax so that the generator does not complain --- .../client/source/class/qxapp/wrappers/Ajv.js | 61 ++++++++++++++++--- 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/services/web/client/source/class/qxapp/wrappers/Ajv.js b/services/web/client/source/class/qxapp/wrappers/Ajv.js index 53afeeb1199..0197cc3e1d6 100644 --- a/services/web/client/source/class/qxapp/wrappers/Ajv.js +++ b/services/web/client/source/class/qxapp/wrappers/Ajv.js @@ -34,7 +34,54 @@ qx.Class.define("qxapp.wrappers.Ajv", { /* eslint-disable */ // https://raw.githubusercontent.com/epoberezkin/ajv-dist/master/dist/ajv.bundle.js -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Ajv = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i Date: Wed, 11 Jul 2018 11:26:42 +0200 Subject: [PATCH 085/127] sync --- .../source/resource/qxapp/project-v0.0.1.json | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/services/web/client/source/resource/qxapp/project-v0.0.1.json b/services/web/client/source/resource/qxapp/project-v0.0.1.json index a812eea916b..abdd74702ef 100644 --- a/services/web/client/source/resource/qxapp/project-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/project-v0.0.1.json @@ -41,20 +41,20 @@ "description": "user uuid" }, "collaborators": { - "type": "object", - "description": "UUIDs of the users/groups who should get access to this", - "patternProperties": { - "^\\S+$": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "read", - "write" - ] - } + "type": "object", + "description": "UUIDs of the users/groups who should get access to this", + "patternProperties": { + "^\\S+$": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "read", + "write" + ] } } + } }, "creationDate": { "type": "string", From 6b240e5493b2611c56c8cef01708a1ba7b718e5b Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 11 Jul 2018 11:37:34 +0200 Subject: [PATCH 086/127] fix coding style compliance --- services/web/client/source/class/qxapp/Application.js | 1 - 1 file changed, 1 deletion(-) diff --git a/services/web/client/source/class/qxapp/Application.js b/services/web/client/source/class/qxapp/Application.js index ef55b31a521..c3729274238 100644 --- a/services/web/client/source/class/qxapp/Application.js +++ b/services/web/client/source/class/qxapp/Application.js @@ -56,7 +56,6 @@ qx.Class.define("qxapp.Application", { // } else { // this.__startLogin(); // } - }, __startDesktop: function() { From 2d16d82dc9dcab229b6ed93f4f3313862ae5eb88 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 17 Jul 2018 11:32:06 +0200 Subject: [PATCH 087/127] merged --- services/web/client/source/class/qxapp/Application.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/client/source/class/qxapp/Application.js b/services/web/client/source/class/qxapp/Application.js index 8969e2bb96c..bfb9b552444 100644 --- a/services/web/client/source/class/qxapp/Application.js +++ b/services/web/client/source/class/qxapp/Application.js @@ -93,7 +93,7 @@ qx.Class.define("qxapp.Application", { } this.assert(view!==null); - // Update root document and currentness + // Update root document and currentness let doc = this.getRoot(); if (doc.hasChildren() && this.__current) { doc.remove(this.__current); From 89e3a855c2edb91226cb66d3630d2898bbfecbec Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 17 Jul 2018 11:32:30 +0200 Subject: [PATCH 088/127] I think we can use the content element directly --- .../qxapp/components/workbench/SvgWidget.js | 27 ++++++------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/services/web/client/source/class/qxapp/components/workbench/SvgWidget.js b/services/web/client/source/class/qxapp/components/workbench/SvgWidget.js index 444a54428cf..b35b59818e8 100644 --- a/services/web/client/source/class/qxapp/components/workbench/SvgWidget.js +++ b/services/web/client/source/class/qxapp/components/workbench/SvgWidget.js @@ -5,27 +5,16 @@ qx.Class.define("qxapp.components.workbench.SvgWidget", { construct: function() { this.base(); - - this.addListenerOnce("appear", function() { + this.addListenerOnce("appear", () => { + let el = this.getContentElement().getDomElement(); + qx.bom.element.Attribute.set(el, "id", LINKS_LAYER_ID); this.__svgWrapper = new qxapp.wrappers.SvgWrapper(); - this.__svgWrapper.addListener(("SvgLibReady"), function(e) { - let ready = e.getData(); - if (ready) { - let svgPlaceholder = qx.dom.Element.create("div"); - qx.bom.element.Attribute.set(svgPlaceholder, "id", LINKS_LAYER_ID); - qx.bom.element.Style.set(svgPlaceholder, "width", "100%"); - qx.bom.element.Style.set(svgPlaceholder, "height", "100%"); - this.getContentElement().getDomElement() - .appendChild(svgPlaceholder); - this.__linksCanvas = this.__svgWrapper.createEmptyCanvas(LINKS_LAYER_ID); - this.fireDataEvent("SvgWidgetReady", true); - } else { - console.log("svg.js was not loaded"); - } - }, this); - + this.__svgWrapper.addListener(("SvgLibReady"), () => { + this.__linksCanvas = this.__svgWrapper.createEmptyCanvas(LINKS_LAYER_ID); + this.fireDataEvent("SvgWidgetReady", true); + }); this.__svgWrapper.init(); - }, this); + }); }, events: { From 68b33a67fb15048ec669d0c315d70cf7e0ba4866 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 17 Jul 2018 11:32:59 +0200 Subject: [PATCH 089/127] create a new project editor for each project --- .../source/class/qxapp/desktop/LayoutManager.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/services/web/client/source/class/qxapp/desktop/LayoutManager.js b/services/web/client/source/class/qxapp/desktop/LayoutManager.js index 96f453455e0..4ef3ca9f6a5 100644 --- a/services/web/client/source/class/qxapp/desktop/LayoutManager.js +++ b/services/web/client/source/class/qxapp/desktop/LayoutManager.js @@ -14,6 +14,7 @@ qx.Class.define("qxapp.desktop.LayoutManager", { this.add(this.__navBar); this.__prjStack = this.__getPrjStack(); + this.add(this.__prjStack, { flex: 1 }); @@ -24,10 +25,14 @@ qx.Class.define("qxapp.desktop.LayoutManager", { }, this); this.__prjBrowser.addListener("StartPrj", function(e) { + let project = e.getData(); + if (this.__prjEditor) { + this.__prjStack.remove(this.__prjEditor); + } + this.__prjEditor = new qxapp.desktop.PrjEditor(project.getProjectId()); this.__prjStack.setSelection([this.__PrjEditor]); - this.__navBar.setCurrentStatus(e.getData().getName()); + this.__navBar.setCurrentStatus(project.getName()); // this.__PrjEditor.showSettings(false); - this.__PrjEditor.setData(qxapp.dev.fake.Data.getPrjData(e.getData().getPrjId())); }, this); }, @@ -37,7 +42,7 @@ qx.Class.define("qxapp.desktop.LayoutManager", { __navBar: null, __prjStack: null, __prjBrowser: null, - __PrjEditor: null, + __prjEditor: null, __createNavigationBar: function() { let navBar = new qxapp.desktop.NavigationBar(); @@ -51,9 +56,6 @@ qx.Class.define("qxapp.desktop.LayoutManager", { this.__prjBrowser = new qxapp.desktop.PrjBrowser(); prjStack.add(this.__prjBrowser); - this.__PrjEditor = new qxapp.desktop.PrjEditor(); - prjStack.add(this.__PrjEditor); - return prjStack; } } From 5127674424708cce95782c86724187261ada5db4 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 17 Jul 2018 11:33:31 +0200 Subject: [PATCH 090/127] we get to know the project at creation time --- .../client/source/class/qxapp/desktop/PrjEditor.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/services/web/client/source/class/qxapp/desktop/PrjEditor.js b/services/web/client/source/class/qxapp/desktop/PrjEditor.js index ad15d7757c4..3e1b3892dbe 100644 --- a/services/web/client/source/class/qxapp/desktop/PrjEditor.js +++ b/services/web/client/source/class/qxapp/desktop/PrjEditor.js @@ -2,7 +2,7 @@ qx.Class.define("qxapp.desktop.PrjEditor", { extend: qx.ui.splitpane.Pane, - construct: function() { + construct: function(projectId) { this.base(arguments, "horizontal"); let splitter = this.__splitter = this.getChildControl("splitter"); @@ -33,9 +33,11 @@ qx.Class.define("qxapp.desktop.PrjEditor", { } }); - - - let workbench = this.__workbench = new qxapp.components.workbench.Workbench(); + let workbenchData = {}; + if (projectId !== null) { + workbenchData = qxapp.dev.fake.Data.getProjectList()[projectId].workbench; + } + let workbench = this.__workbench = new qxapp.components.workbench.Workbench(workbenchData); this.add(workbench, 1); workbench.addListenerOnce("appear", () => { @@ -137,10 +139,6 @@ qx.Class.define("qxapp.desktop.PrjEditor", { win.moveTo(150, 150); return win; - }, - - setData: function(newData) { - this.__workbench.setData(newData); } } }); From 3e256de4d324f08f695a30a7faab0bb3cb260466 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 17 Jul 2018 11:33:54 +0200 Subject: [PATCH 091/127] we get to know the project at creation time --- .../qxapp/components/workbench/Workbench.js | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/services/web/client/source/class/qxapp/components/workbench/Workbench.js b/services/web/client/source/class/qxapp/components/workbench/Workbench.js index 450e5d148be..49f8fb3a92e 100644 --- a/services/web/client/source/class/qxapp/components/workbench/Workbench.js +++ b/services/web/client/source/class/qxapp/components/workbench/Workbench.js @@ -7,7 +7,7 @@ const BUTTON_SPACING = 10; qx.Class.define("qxapp.components.workbench.Workbench", { extend: qx.ui.container.Composite, - construct: function() { + construct: function(workbenchData) { this.base(); let canvas = new qx.ui.layout.Canvas(); @@ -24,6 +24,14 @@ qx.Class.define("qxapp.components.workbench.Workbench", { }); this.__svgWidget = new qxapp.components.workbench.SvgWidget(); + // this gets fired once the widget has appeared and the library has been loaded + // due to the qx rendering, this will always happen after setup, so we are + // sure to catch this event + this.__svgWidget.addListenerOnce("SvgWidgetReady", function() { + // Will be called only the first time Svg lib is loaded + this.__loadProject(workbenchData); + }, this); + this.__desktop.add(this.__svgWidget, { left: 0, top: 0, @@ -43,20 +51,6 @@ qx.Class.define("qxapp.components.workbench.Workbench", { this.__selectedItemChanged(null); } }, this); - - this.__svgWidget.addListener("SvgWidgetReady", function() { - // Will be called only the first time Svg lib is loaded - this.__deserializeData(); - }, this); - - this.__svgWidget.addListener("SvgWidgetReady", function() { - this.__svgWidget.addListener("appear", function() { - // Will be called once Svg lib is loaded and appears - this.__deserializeData(); - }, this); - }, this); - - this.__logger = new qxapp.components.workbench.logger.LoggerView(); this.__desktop.add(this.__logger); @@ -758,8 +752,8 @@ qx.Class.define("qxapp.components.workbench.Workbench", { return pipeline; }, - setData: function(pipeData) { - this.__myData = pipeData; + setProjectData: function(data) { + this.__myData = data; }, __deserializeData: function() { From 717d2ac83a5aa1a55612ffab9304266c3d476e62 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 17 Jul 2018 11:34:26 +0200 Subject: [PATCH 092/127] switch to new 'compliant' data model --- .../source/class/qxapp/desktop/PrjBrowser.js | 66 ++++++++++++------- 1 file changed, 41 insertions(+), 25 deletions(-) diff --git a/services/web/client/source/class/qxapp/desktop/PrjBrowser.js b/services/web/client/source/class/qxapp/desktop/PrjBrowser.js index 16eadde0134..9654e5b8b1b 100644 --- a/services/web/client/source/class/qxapp/desktop/PrjBrowser.js +++ b/services/web/client/source/class/qxapp/desktop/PrjBrowser.js @@ -6,8 +6,8 @@ qx.Class.define("qxapp.desktop.PrjBrowser", { construct: function() { this.base(arguments, new qx.ui.layout.VBox()); - this.__createUserList(); - this.__createTempList(); + this.__createProjectList(); + this.__createTemplateList(); }, events: { @@ -20,7 +20,7 @@ qx.Class.define("qxapp.desktop.PrjBrowser", { __controller2: null, __list2: null, - __createUserList: function() { + __createProjectList: function() { // layout let prjLst = this.__list = new qx.ui.form.List(); prjLst.set({ @@ -33,7 +33,8 @@ qx.Class.define("qxapp.desktop.PrjBrowser", { // controller - let prjCtr = this.__controller = new qx.data.controller.List(qxapp.desktop.PrjBrowser.getFakeUserModel(), prjLst, "name"); + let prjCtr = this.__controller = new qx.data.controller.List(this.__getFakeProjectModel(), prjLst, "name" + ); this.__setDelegate(prjCtr); // FIXME: selection does not work if model is not passed in the constructor!!!! // prjCtr.setModel(); @@ -45,7 +46,7 @@ qx.Class.define("qxapp.desktop.PrjBrowser", { }, this); }, - __createTempList: function() { + __createTemplateList: function() { // layout let prjLst = this.__list2 = new qx.ui.form.List(); prjLst.set({ @@ -58,7 +59,7 @@ qx.Class.define("qxapp.desktop.PrjBrowser", { // controller - let prjCtr = this.__controller2 = new qx.data.controller.List(qxapp.desktop.PrjBrowser.getFakeTempModel(), prjLst, "name"); + let prjCtr = this.__controller2 = new qx.data.controller.List(this.__getFakeTemplateModel(), prjLst, "name"); this.__setDelegate(prjCtr); // FIXME: selection does not work if model is not passed in the constructor!!!! // prjCtr.setModel(); @@ -71,7 +72,7 @@ qx.Class.define("qxapp.desktop.PrjBrowser", { }, /** - * Delegates apperance and binding of each project item + * Delegates appearance and binding of each project item */ __setDelegate: function(projectController) { let delegate = { @@ -81,44 +82,59 @@ qx.Class.define("qxapp.desktop.PrjBrowser", { iconPosition: "top", gap: 0, rich: true, - allowGrowY: false, - maxWidth: 200 + allowGrowY: false + }); + item.getChildControl("icon").set({ + height: 96, + width: 176 }); }, // Item's data binding - bindItem: function(controler, item, id) { - controler.bindProperty("name", "label", { + bindItem: function(controller, item, id) { + controller.bindProperty("name", "label", { converter: function(data, model, source, target) { return "" + data + ""; // + model.getDescription(); } }, item, id); - controler.bindProperty("thumbnail", "icon", { + controller.bindProperty("thumbnail", "icon", { converter: function(data) { - return data === null ? "http://via.placeholder.com/171x96" : data; + return data === null ? "https://placeimg.com/171/96/tech/grayscale/?random.jpg" : data; } }, item, id); } }; projectController.setDelegate(delegate); - } - - }, // members - - statics: { + }, /** * Mockup data */ - getFakeUserModel: function() { - let data = qxapp.dev.fake.Data.getUserProjects(3, "bizzy"); - data.insertAt(0, qxapp.dev.fake.Data.NEW_PROJECT_DESCRIPTOR); - return data; + __getFakeModel: function() { + return new qx.data.Array( + qxapp.dev.fake.Data.getProjectList().map( + (p, i) => qx.data.marshal.Json.createModel({ + name: p.name, + thumbnail: "https://placeimg.com/171/96/tech/grayscale/?"+i+".jpg", + projectId: i, + created: p.creationDate + }) + ) + ); + }, + + __getFakeProjectModel: function() { + return this.__getFakeModel(); }, - getFakeTempModel: function() { - let data = qxapp.dev.fake.Data.getTemplateProjects(); - data.insertAt(0, qxapp.dev.fake.Data.NEW_PROJECT_DESCRIPTOR); + __getFakeTemplateModel: function() { + let data = this.__getFakeModel(); + data.insertAt(0, qx.data.marshal.Json.createModel({ + name: this.tr("New Project"), + thumbnail: "@MaterialIcons/create/40", + projectId: null, + created: null + })); return data; } From 7f185e43fefc7ed4feaa3e6332b44412cf55756c Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 17 Jul 2018 11:34:47 +0200 Subject: [PATCH 093/127] lets call it 'projectId' --- .../source/class/qxapp/dev/fake/Data.js | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/services/web/client/source/class/qxapp/dev/fake/Data.js b/services/web/client/source/class/qxapp/dev/fake/Data.js index 86b1e4be889..874d0370658 100644 --- a/services/web/client/source/class/qxapp/dev/fake/Data.js +++ b/services/web/client/source/class/qxapp/dev/fake/Data.js @@ -19,7 +19,7 @@ qx.Class.define("qxapp.dev.fake.Data", { description: "Empty", thumbnail: "https://imgplaceholder.com/171x96/cccccc/757575/ion-plus-round", created: null, - prjId: null + projectId: null }), getNodeMap: function() { return { @@ -232,6 +232,21 @@ qx.Class.define("qxapp.dev.fake.Data", { } } } + }, + { + name: "Sample Project II", + description: "An empty project", + notes: "# title\nThere be dragons inside", + owner: "UUID-OF-TOBI", + collaborators: { + "UUID-OF-PEDRO": [ + "read", + "write" + ] + }, + creationDate: "2018-07-08T16:01:00Z", + lastChangeDate: "2018-07-09T16:02:22Z", + workbench: {} } ]; }, @@ -294,7 +309,7 @@ qx.Class.define("qxapp.dev.fake.Data", { description: "This is a short description by " + username, thumbnail: null, created: null, - prjId: null + projectId: null }); rawData.push(item); } @@ -312,7 +327,7 @@ qx.Class.define("qxapp.dev.fake.Data", { description: "Sample used for the unidirectional pipelining", thumbnail: null, created: null, - prjId: "temp1" + projectId: "temp1" }); rawData.push(item1); @@ -321,7 +336,7 @@ qx.Class.define("qxapp.dev.fake.Data", { description: "Colleen Clancy use case", thumbnail: null, created: null, - prjId: "temp2" + projectId: "temp2" }); rawData.push(item2); @@ -330,8 +345,8 @@ qx.Class.define("qxapp.dev.fake.Data", { return data; }, - getPrjData: function(prjId) { - switch (prjId) { + getPrjData: function(projectId) { + switch (projectId) { case "temp1": { let tempData = this.getTemp1Data(); return tempData; From 146e14bf8a33c1bd638c298e491684577553bfd4 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 17 Jul 2018 11:37:04 +0200 Subject: [PATCH 094/127] ignore backup files --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 62f6391b5ac..077764b5f82 100644 --- a/.gitignore +++ b/.gitignore @@ -122,3 +122,7 @@ services/docker-compose.swarm.yml # key-words in filename to ignore them *secret* *ignore* + +# backup files +*~ +*.bak From 790da50766e939aca4b68bbb1d025986d0831a88 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 18 Jul 2018 10:23:39 +0200 Subject: [PATCH 095/127] moved functionality to nodeBase --- .../source/class/qxapp/components/workbench/SettingsView.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/services/web/client/source/class/qxapp/components/workbench/SettingsView.js b/services/web/client/source/class/qxapp/components/workbench/SettingsView.js index 868d9c70654..74c995dce03 100644 --- a/services/web/client/source/class/qxapp/components/workbench/SettingsView.js +++ b/services/web/client/source/class/qxapp/components/workbench/SettingsView.js @@ -73,9 +73,6 @@ qx.Class.define("qxapp.components.workbench.SettingsView", { this.__dynamicViewer.removeAll(); let viewerButton = node.getViewerButton(); if (viewerButton) { - viewerButton.addListener("execute", function(e) { - this.fireDataEvent("ShowViewer", node.getMetadata()); - }, this); this.__dynamicViewer.add(viewerButton); } } From 5a38ca12c90d6111d2220224c8eeb0b267691e17 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 18 Jul 2018 10:26:11 +0200 Subject: [PATCH 096/127] lets call it metaData --- .../web/client/source/class/qxapp/data/Converters.js | 12 ++++++------ services/web/client/source/class/qxapp/data/Store.js | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/services/web/client/source/class/qxapp/data/Converters.js b/services/web/client/source/class/qxapp/data/Converters.js index a6c435fcdc1..446e918a944 100644 --- a/services/web/client/source/class/qxapp/data/Converters.js +++ b/services/web/client/source/class/qxapp/data/Converters.js @@ -3,8 +3,8 @@ qx.Class.define("qxapp.data.Converters", { type: "static", statics: { - registryToMetadata: function(data) { - let metadata = {}; + registryToMetaData: function(data) { + let metaData = {}; [ "key", "name", @@ -16,16 +16,16 @@ qx.Class.define("qxapp.data.Converters", { "outputs", "settings" ].forEach(field => { - metadata[field] = null; + metaData[field] = null; if (Object.prototype.hasOwnProperty.call(data, field)) { - metadata[field] = data[field]; + metaData[field] = data[field]; } }); // for dynamic services if (data.viewer) { - metadata["viewer"] = data["viewer"]; + metaData["viewer"] = data["viewer"]; } - return metadata; + return metaData; } } }); diff --git a/services/web/client/source/class/qxapp/data/Store.js b/services/web/client/source/class/qxapp/data/Store.js index 95e589ead4d..5c47049ce44 100644 --- a/services/web/client/source/class/qxapp/data/Store.js +++ b/services/web/client/source/class/qxapp/data/Store.js @@ -55,8 +55,8 @@ qx.Class.define("qxapp.data.Store", { const repo = listOfRepositories[key]; const nTags = repo.length; for (let i=0; i0 && repo["details"][0].length>0) { const repoData = repo["details"][0][0]; - let newMetadata = qxapp.data.Converters.registryToMetadata(repoData); - services.push(newMetadata); + let newMetaData = qxapp.data.Converters.registryToMetaData(repoData); + services.push(newMetaData); } } this.fireDataEvent("interactiveServicesRegistered", services); From 1b67fa64bbb5af3c00f2101e9ffbcc7fdbe142c8 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 18 Jul 2018 10:30:07 +0200 Subject: [PATCH 097/127] improve consistancy * in node - tag -> version * in project - type -> key no inband signalling * in node add new type attribute --- .../web/client/source/class/qxapp/dev/fake/Data.js | 13 +++++++------ .../source/resource/qxapp/node-meta-v0.0.1.json | 13 +++++++++++-- .../source/resource/qxapp/project-v0.0.1.json | 8 ++++---- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/services/web/client/source/class/qxapp/dev/fake/Data.js b/services/web/client/source/class/qxapp/dev/fake/Data.js index 874d0370658..314cef60543 100644 --- a/services/web/client/source/class/qxapp/dev/fake/Data.js +++ b/services/web/client/source/class/qxapp/dev/fake/Data.js @@ -25,7 +25,8 @@ qx.Class.define("qxapp.dev.fake.Data", { return { "service/computational/itis/tutti:0.0.0-alpha": { key: "service/computational/itis/tutti", - tag: "0.0.0-alpha", + version: "0.0.0-alpha", + type: "computational", name: "a little test node", description: "just the bare minimum", authors: [ @@ -154,7 +155,7 @@ qx.Class.define("qxapp.dev.fake.Data", { lastChangeDate: "2018-07-02T16:02:22Z", workbench: { "UUID1": { - type: "service/dynamic/itis/file-picker", + key: "service/dynamic/itis/file-picker", version: "0.0.0", outputs: { out1: { @@ -168,7 +169,7 @@ qx.Class.define("qxapp.dev.fake.Data", { } }, "UUID2": { - type: "service/computational/itis/sleeper", + key: "service/computational/itis/sleeper", version: "0.0.1-alpha", inputs: { inNumber: 3.5, @@ -184,7 +185,7 @@ qx.Class.define("qxapp.dev.fake.Data", { } }, "UUID3": { - type: "service/computational/itis/sleeper", + key: "service/computational/itis/sleeper", version: "0.0.1-alpha", inputs: { inNumber: { @@ -208,13 +209,13 @@ qx.Class.define("qxapp.dev.fake.Data", { } }, "UUID4": { - type: "service/computational/itis/tutti", + key: "service/computational/itis/tutti", version: "0.0.0-alpha", inputs: { inNumber: 3.3, inInt: 372, inBool: true, - inStr: "Ooops, Again", + inStr: "Ooops, Agnodain", inArea: "some\nmore", inSb: "cat", inFile: { diff --git a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json index 0c5f034f26d..8e32e0754d5 100644 --- a/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/node-meta-v0.0.1.json @@ -7,8 +7,9 @@ "additionalProperties": false, "required": [ "key", + "version", + "type", "name", - "tag", "description", "authors", "contact", @@ -25,7 +26,7 @@ "service/dynamic/itis/3dviewer" ] }, - "tag": { + "version": { "type": "string", "description": "semantic version number", "pattern": "^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){2}(-(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*)(\\.(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*))*)?(\\+[-\\da-zA-Z]+(\\.[-\\da-zA-Z-]+)*)?$", @@ -34,6 +35,14 @@ "0.0.1" ] }, + "type": { + "type": "string", + "description": "service type", + "enum": ["computational","dynamic"], + "examples": [ + "computational" + ] + }, "name": { "type": "string", "description": "short, human readable name for the node", diff --git a/services/web/client/source/resource/qxapp/project-v0.0.1.json b/services/web/client/source/resource/qxapp/project-v0.0.1.json index abdd74702ef..a6b9866e6c1 100644 --- a/services/web/client/source/resource/qxapp/project-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/project-v0.0.1.json @@ -79,12 +79,12 @@ "type": "object", "additionalProperties": false, "required": [ - "type", - "version", + "key", + "tag", "position" ], "properties": { - "type": { + "key": { "type": "string", "description": "distinctive name for the node based on the docker registry path", "pattern": "^(service)/(computational|dynamic)(/[^\\s/]+)+$", @@ -93,7 +93,7 @@ "service/dynamic/3dviewer" ] }, - "version": { + "tag": { "type": "string", "description": "semantic version number of the node", "pattern": "^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){2}(-(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*)(\\.(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*))*)?(\\+[-\\da-zA-Z]+(\\.[-\\da-zA-Z-]+)*)?$", From 47850d8a750c30ebaa9bb6c049e5a1ee19b10b6f Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 18 Jul 2018 10:36:45 +0200 Subject: [PATCH 098/127] WIP sync to for rebase --- .../qxapp/components/workbench/NodeBase.js | 102 ++++++++------ .../qxapp/components/workbench/Workbench.js | 126 ++++++++---------- .../source/class/qxapp/desktop/PrjEditor.js | 4 +- 3 files changed, 112 insertions(+), 120 deletions(-) diff --git a/services/web/client/source/class/qxapp/components/workbench/NodeBase.js b/services/web/client/source/class/qxapp/components/workbench/NodeBase.js index 405b593d927..0d4e4390471 100644 --- a/services/web/client/source/class/qxapp/components/workbench/NodeBase.js +++ b/services/web/client/source/class/qxapp/components/workbench/NodeBase.js @@ -4,7 +4,7 @@ const portHeight = 16; qx.Class.define("qxapp.components.workbench.NodeBase", { extend: qx.ui.window.Window, - construct: function(uuid) { + construct: function(nodeImageId, uuid, nodeData) { this.base(); this.set({ @@ -16,9 +16,13 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { resizable: false, allowMaximize: false, minWidth: nodeWidth, - maxWidth: nodeWidth + maxWidth: nodeWidth, + // custom + nodeImageId: nodeImageId, + nodeId: uuid || qxapp.utils.Utils.uuidv4() }); + let nodeLayout = new qx.ui.layout.VBox(5, null, "separator-vertical"); this.setLayout(nodeLayout); @@ -58,14 +62,7 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { this.add(progressBox); - - this.__inputPorts = []; - this.__outputPorts = []; - if (uuid === undefined) { - this.setNodeId(qxapp.utils.Utils.uuidv4()); - } else { - this.setNodeId(uuid); - } + this.__populateNode(qxapp.dev.fake.Data.getNodeMap()[nodeType]); }, properties: { @@ -79,10 +76,6 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { nullable: false }, - metadata: { - apply : "__applyMetadata" - }, - propsWidget: { check: "qxapp.components.form.renderer.PropForm" }, @@ -109,6 +102,11 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { __progressLabel: null, __settingsForm: null, __progressBar: null, + __metaData: null, + + getMetaData: function() { + return this.__metaData; + }, getInputPorts: function() { return this.__inputPorts; @@ -146,40 +144,30 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { return bounds; }, - __applyMetadata: function(metaData, old) { - if (metaData != undefined) { - this.set({ - serviceName: metaData.name, - nodeImageId: metaData.key - }); - let props = metaData.inputs.concat(metaData.settings); - this.__addSettings(props); - this.__addViewerButton(metaData); - this.__addInputPorts(metaData.inputs); - this.__addOutputPorts(metaData.outputs); - } + __populateNode: function(metaData) { + this.__inputPorts = []; + this.__outputPorts = []; + this.__metaData = metaData; + // let props = metaData.inputs.concat(metaData.settings); + this.__addSettings(metaData.inputs); + this.__addViewerButton(); + this.__addInputPorts(metaData.inputs); + this.__addOutputPorts(metaData.outputs); }, setServiceName: function(name) { this.setCaption(name); }, - __addSettings: function(settings) { - let form = this.__settingsForm = new qxapp.components.form.Auto(settings); + __addSettings: function(inputs) { + let form = this.__settingsForm = new qxapp.components.form.Auto(inputs); this.__settingsForm.addListener("changeData", function(e) { let settingsForm = e.getData(); for (var settingKey in settingsForm) { - if (this.getMetadata().inputs) { - for (let i=0; i { + // Will be called only the first time Svg lib is loaded + this.__loadProject(workbenchData); + }); + } this.__desktop.add(this.__svgWidget, { left: 0, @@ -51,6 +53,7 @@ qx.Class.define("qxapp.components.workbench.Workbench", { this.__selectedItemChanged(null); } }, this); + // TODO how about making the LoggerView a singleton then it could be accessed from everywhere this.__logger = new qxapp.components.workbench.logger.LoggerView(); this.__desktop.add(this.__logger); @@ -310,14 +313,14 @@ qx.Class.define("qxapp.components.workbench.Workbench", { }, this); node.addListener("dblclick", function(e) { - if (node.getMetadata().key === "FileManager") { + if (node.getMetaData().key === "FileManager") { let fileManager = new qxapp.components.workbench.widgets.FileManager(); fileManager.addListener("FileSelected", function(data) { const filePath = data.getData().filePath; const splitted = filePath.split("/"); const fileName = splitted[splitted.length-1]; - node.getMetadata().outputs[0].value = filePath; - node.getMetadata().outputs[1].value = null; + node.getMetaData().outputs[0].value = filePath; + node.getMetaData().outputs[1].value = null; node.getPortByIndex(false, 0).ui.setLabel(fileName); node.getPortByIndex(false, 0).ui.getToolTip().setLabel(fileName); node.getPortByIndex(false, 1).ui.setLabel(""); @@ -329,8 +332,8 @@ qx.Class.define("qxapp.components.workbench.Workbench", { const folderPath = data.getData().filePath; const splitted = folderPath.split("/"); const folderName = splitted[splitted.length-1]; - node.getMetadata().outputs[0].value = null; - node.getMetadata().outputs[1].value = folderPath; + node.getMetaData().outputs[0].value = null; + node.getMetaData().outputs[1].value = folderPath; node.getPortByIndex(false, 0).ui.setLabel(""); node.getPortByIndex(false, 0).ui.getToolTip().setLabel(""); node.getPortByIndex(false, 1).ui.setLabel(folderName); @@ -350,31 +353,10 @@ qx.Class.define("qxapp.components.workbench.Workbench", { qx.ui.core.queue.Layout.flush(); }, - __createNode: function(nodeMetaData) { - let nodeBase = new qxapp.components.workbench.NodeBase(nodeMetaData.uuid); - nodeBase.setMetadata(nodeMetaData); + __createNode: function(nodeImageId, uuid, nodeData) { + let nodeBase = new qxapp.components.workbench.NodeBase(nodeImageId, uuid, nodeData); + - const imageId = nodeBase.getNodeImageId(); - if (imageId.includes("dynamic")) { - const slotName = "startDynamic"; - let socket = qxapp.wrappers.WebSocket.getInstance(); - socket.on(slotName, function(val) { - if (val["service_uuid"] === nodeBase.getNodeId()) { - let portNumber = val["containers"][0].published_ports[0]; - nodeBase.getMetadata().viewer.port = portNumber; - nodeBase.getMetadata().viewer.ip = "http://" + window.location.hostname; - nodeBase.getViewerButton().setEnabled(portNumber !== null); - const servUrl = nodeBase.getMetadata().viewer.ip +":"+ nodeBase.getMetadata().viewer.port; - this.__logger.debug(nodeBase.getMetadata().name, "Service ready on " + servUrl); - this.__logger.info(nodeBase.getMetadata().name, "Service ready"); - } - }, this); - let data = { - serviceName: nodeBase.getMetadata().name, - nodeId: nodeBase.getNodeId() - }; - socket.emit(slotName, data); - } const evType = "pointermove"; nodeBase.addListener("LinkDragStart", function(e) { @@ -387,12 +369,12 @@ qx.Class.define("qxapp.components.workbench.Workbench", { event.addAction("move"); // Register supported types - event.addType("osparc-metadata"); + event.addType("osparc-metaData"); let dragData = { dragNodeId: dragNodeId, dragPortId: dragPortId }; - event.addData("osparc-metadata", dragData); + event.addData("osparc-metaData", dragData); this.__tempLinkNodeId = dragData.dragNodeId; this.__tempLinkPortId = dragData.dragPortId; @@ -411,9 +393,9 @@ qx.Class.define("qxapp.components.workbench.Workbench", { let dropPortId = data.portId; let compatible = false; - if (event.supportsType("osparc-metadata")) { - const dragNodeId = event.getData("osparc-metadata").dragNodeId; - const dragPortId = event.getData("osparc-metadata").dragPortId; + if (event.supportsType("osparc-metaData")) { + const dragNodeId = event.getData("osparc-metaData").dragNodeId; + const dragPortId = event.getData("osparc-metaData").dragPortId; const dragTarget = this.__getNode(dragNodeId).getPort(dragPortId); const dropTarget = this.__getNode(dropNodeId).getPort(dropPortId); compatible = this.__arePortsCompatible(dragTarget, dropTarget); @@ -430,9 +412,9 @@ qx.Class.define("qxapp.components.workbench.Workbench", { let dropNodeId = data.nodeId; let dropPortId = data.portId; - if (event.supportsType("osparc-metadata")) { - let dragNodeId = event.getData("osparc-metadata").dragNodeId; - let dragPortId = event.getData("osparc-metadata").dragPortId; + if (event.supportsType("osparc-metaData")) { + let dragNodeId = event.getData("osparc-metaData").dragNodeId; + let dragPortId = event.getData("osparc-metaData").dragPortId; let nodeA = this.__getNode(dragNodeId); let portA = nodeA.getPort(dragPortId); let nodeB = this.__getNode(dropNodeId); @@ -732,12 +714,12 @@ qx.Class.define("qxapp.components.workbench.Workbench", { for (let i = 0; i < this.__nodes.length; i++) { let node = {}; node["uuid"] = this.__nodes[i].getNodeId(); - node["key"] = this.__nodes[i].getMetadata().key; - node["tag"] = this.__nodes[i].getMetadata().tag; - node["name"] = this.__nodes[i].getMetadata().name; - node["inputs"] = this.__nodes[i].getMetadata().inputs; - node["outputs"] = this.__nodes[i].getMetadata().outputs; - node["settings"] = this.__nodes[i].getMetadata().settings; + node["key"] = this.__nodes[i].getMetaData().key; + node["tag"] = this.__nodes[i].getMetaData().tag; + node["name"] = this.__nodes[i].getMetaData().name; + node["inputs"] = this.__nodes[i].getMetaData().inputs; + node["outputs"] = this.__nodes[i].getMetaData().outputs; + node["settings"] = this.__nodes[i].getMetaData().settings; pipeline["nodes"].push(node); } for (let i = 0; i < this.__links.length; i++) { @@ -752,37 +734,33 @@ qx.Class.define("qxapp.components.workbench.Workbench", { return pipeline; }, - setProjectData: function(data) { - this.__myData = data; - }, - - __deserializeData: function() { - this.removeAll(); - if (this.__myData === null) { - return; - } - - // add nodes - let nodesMetaData = this.__myData.nodes; - for (let i = 0; i < nodesMetaData.length; i++) { - let nodeMetaData = nodesMetaData[i]; - let node = this.__createNode(nodeMetaData); - node.setNodeId(nodeMetaData.uuid); - if (nodeMetaData.position) { - this.__addNodeToWorkbench(node, nodeMetaData.position); + __loadProject: function(workbenchData) { + for (let nodeUuid in workbenchData) { + let nodeData = workbenchData[nodeUuid]; + let node = this.__createNode(nodeData.key + "-" + nodeData.version, nodeUuid, nodeData); + if (nodeData.position) { + this.__addNodeToWorkbench(node, nodeData.position); } else { this.__addNodeToWorkbench(node); } } - - // add links - let links = this.__myData.links; - for (let i = 0; i < links.length; i++) { - let node1 = this.__getNode(links[i].node1Id); - let port1 = node1.getPort(links[i].port1Id); - let node2 = this.__getNode(links[i].node2Id); - let port2 = node2.getPort(links[i].port2Id); - this.__addLink(node1, port1, node2, port2, links[i].uuid); + if (workbenchData.inputs) { + for (let nodeUuid in workbenchData) { + let nodeData = workbenchData[nodeUuid]; + let node1 = this.__getNode(nodeUuid); + let inputs = nodeData.inputs; + if (inputs) { + for (let port1Id in inputs) { + let node2Uuid = inputs[port1Key].nodeUuid; + if (node2Uuid) { + let port1 = node1.getPort(port1Id); + let node2 = this.__getNode(nodeUuid); + let port2 = node2.getPort(inputs[port1].property); + this.__addLink(node1, port1, node2, port2); + } + } + } + } } }, diff --git a/services/web/client/source/class/qxapp/desktop/PrjEditor.js b/services/web/client/source/class/qxapp/desktop/PrjEditor.js index 3e1b3892dbe..403721a2607 100644 --- a/services/web/client/source/class/qxapp/desktop/PrjEditor.js +++ b/services/web/client/source/class/qxapp/desktop/PrjEditor.js @@ -66,8 +66,8 @@ qx.Class.define("qxapp.desktop.PrjEditor", { }, this); this.__settingsView.addListener("ShowViewer", function(e) { - let url = "http://" + window.location.hostname + ":" + e.getData().viewer.port; - let viewerWin = this.__createBrowserWindow(url, e.getData().name); + let data = e.getData(); + let viewerWin = this.__createBrowserWindow(data.url, data.name); this.__workbench.addWindowToDesktop(viewerWin); }, this); From 5e2b3678a18a0e5384c40c9d3f9d7732927f4dbe Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Wed, 18 Jul 2018 11:57:58 +0200 Subject: [PATCH 099/127] SettingsEditionDone -> SettingsEdited --- .../source/class/qxapp/components/workbench/SettingsView.js | 4 ++-- services/web/client/source/class/qxapp/desktop/PrjEditor.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/services/web/client/source/class/qxapp/components/workbench/SettingsView.js b/services/web/client/source/class/qxapp/components/workbench/SettingsView.js index 74c995dce03..8846d873129 100644 --- a/services/web/client/source/class/qxapp/components/workbench/SettingsView.js +++ b/services/web/client/source/class/qxapp/components/workbench/SettingsView.js @@ -19,7 +19,7 @@ qx.Class.define("qxapp.components.workbench.SettingsView", { }, events: { - "SettingsEditionDone": "qx.event.type.Event", + "SettingsEdited": "qx.event.type.Event", "ShowViewer": "qx.event.type.Data" }, @@ -54,7 +54,7 @@ qx.Class.define("qxapp.components.workbench.SettingsView", { this.add(titleBox); doneBtn.addListener("execute", function() { - this.fireEvent("SettingsEditionDone"); + this.fireEvent("SettingsEdited"); }, this); }, diff --git a/services/web/client/source/class/qxapp/desktop/PrjEditor.js b/services/web/client/source/class/qxapp/desktop/PrjEditor.js index 403721a2607..a40980227a5 100644 --- a/services/web/client/source/class/qxapp/desktop/PrjEditor.js +++ b/services/web/client/source/class/qxapp/desktop/PrjEditor.js @@ -61,7 +61,7 @@ qx.Class.define("qxapp.desktop.PrjEditor", { this.showSettings(false); - this.__settingsView.addListener("SettingsEditionDone", function() { + this.__settingsView.addListener("SettingsEdited", function() { this.showSettings(false); }, this); From 1d5f0b43507c4287cc8fe2d42ad23ed9232305b4 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 7 Aug 2018 08:59:16 +0200 Subject: [PATCH 100/127] sync updates --- services/web/client/package.json | 1 + .../qxapp/components/workbench/NodeBase.js | 115 ++++++++++-------- .../qxapp/components/workbench/Workbench.js | 2 +- .../class/qxapp/desktop/LayoutManager.js | 5 +- .../source/class/qxapp/desktop/PrjBrowser.js | 6 +- .../source/class/qxapp/desktop/PrjEditor.js | 10 +- .../source/class/qxapp/dev/fake/Data.js | 95 +++++++++++---- .../source/resource/qxapp/project-v0.0.1.json | 4 +- 8 files changed, 146 insertions(+), 92 deletions(-) diff --git a/services/web/client/package.json b/services/web/client/package.json index 3401a6c7088..364a37cce5c 100644 --- a/services/web/client/package.json +++ b/services/web/client/package.json @@ -1,5 +1,6 @@ { "dependencies": { + "cookie-parser": "^1.4.3", "qxcompiler": "^0.2.13" }, "scripts": { diff --git a/services/web/client/source/class/qxapp/components/workbench/NodeBase.js b/services/web/client/source/class/qxapp/components/workbench/NodeBase.js index 0d4e4390471..cd95efce872 100644 --- a/services/web/client/source/class/qxapp/components/workbench/NodeBase.js +++ b/services/web/client/source/class/qxapp/components/workbench/NodeBase.js @@ -61,8 +61,12 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { }); this.add(progressBox); - - this.__populateNode(qxapp.dev.fake.Data.getNodeMap()[nodeType]); + let metaData = qxapp.dev.fake.Data.getNodeMap()[nodeImageId]; + if (metaData) { + this.__populateNode(metaData); + } else { + console.error("Invalid ImageID - Not populating "+nodeImageId); + } }, properties: { @@ -91,7 +95,7 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { "LinkDragOver": "qx.event.type.Data", "LinkDrop": "qx.event.type.Data", "LinkDragEnd": "qx.event.type.Data", - "NodeMoving": "qx.event.type.Event" + "NodeMoving": "qx.event.type.Event" }, members: { @@ -145,21 +149,20 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { }, __populateNode: function(metaData) { - this.__inputPorts = []; - this.__outputPorts = []; this.__metaData = metaData; - // let props = metaData.inputs.concat(metaData.settings); - this.__addSettings(metaData.inputs); - this.__addViewerButton(); - this.__addInputPorts(metaData.inputs); - this.__addOutputPorts(metaData.outputs); - }, - - setServiceName: function(name) { - this.setCaption(name); + // this.__creteSettings(metaData.inputs); + this.setCaption(metaData.name + " " + metaData.version); + this.__createViewerButton(); + this.__outputPorts = {}; + this.__inputPorts = {}; + this.__createPorts("Input", metaData.inputs); + this.__createPorts("Output", metaData.outputs); }, __addSettings: function(inputs) { + if (inputs === null) { + return; + } let form = this.__settingsForm = new qxapp.components.form.Auto(inputs); this.__settingsForm.addListener("changeData", function(e) { let settingsForm = e.getData(); @@ -176,7 +179,7 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { this.setPropsWidget(new qxapp.components.form.renderer.PropForm(form)); }, - __addViewerButton: function() { + __createViewerButton: function() { let metaData = this.__metaData; if (metaData.type == "dynamic") { const slotName = "startDynamic"; @@ -210,17 +213,7 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { } }, - __addInputPort: function(inputData) { - let label = this.__createPort(true, inputData); - this.getInputPorts().push(label); - this.__inputPortsUI.add(label.ui); - }, - __addOutputPort: function(outputData) { - let label = this.__createPort(false, outputData); - this.getOutputPorts().push(label); - this.__outputPortsUI.add(label.ui); - }, getPort: function(portId) { const nInPorts = this.getInputPorts().length; @@ -248,39 +241,55 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { } return null; }, - - __addInputPorts: function(inputs) { - for (let inputData of inputs) { - this.__addInputPort(inputData); + __createPorts: function(type, ports) { + if (!ports) { + return; } + Object.keys(ports).sort((a, b) => { + let x = ports[a].displayOrder; + let y = ports[b].displayOrder; + if (x > y) { + return 1; + } + if (x < y) { + return -1; + } + return 0; + }) + .forEach(portId => { + switch (type) { + case "Output": + this.__addOutputPort(portId, ports[portId]); + break; + case "Input": + this.__addInputPort(portId, ports[portId]); + break; + } + }); }, - - __addOutputPorts: function(outputs) { - for (let outputData of outputs) { - this.__addOutputPort(outputData); - } + __addInputPort: function(portId, inputData) { + let label = this.__createPort(true, portId, inputData); + this.getInputPorts().push(label); + this.__inputPortsUI.add(label.ui); }, - __createPort: function(isInput, portData) { + __addOutputPort: function(portId, outputData) { + let label = this.__createPort(false, portId, outputData); + this.getOutputPorts().push(label); + this.__outputPortsUI.add(label.ui); + }, + __createPort: function(isInput, portId, portData) { let label = {}; - label.portId = portData.key; + label.portId = portId; label.isInput = isInput; label.portType = portData.type; - - let icon = null; - switch (portData.type) { - case "file-url": - icon = "@FontAwesome5Solid/file/" + (portHeight-2).toString(); - break; - case "folder-url": - icon = "@FontAwesome5Solid/folder/" + (portHeight-2).toString(); - break; - default: - icon = "@FontAwesome5Solid/edit/" + (portHeight-2).toString(); - break; + let iconSize = (portHeight-2).toString(); + let icon = "@FontAwesome5Solid/edit/" + iconSize; + if (portData.type.match(/^data:/)) { + icon = "@FontAwesome5Solid/file/" + (portHeight-2).toString(); } const alignX = (isInput) ? "left" : "right"; - label.ui = new qx.ui.basic.Atom(portData.key, icon).set({ + label.ui = new qx.ui.basic.Atom(portData.label, icon).set({ height: portHeight, draggable: true, droppable: true, @@ -288,9 +297,9 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { alignX: alignX, allowGrowX: false }); - label.ui.portId = portData.key; + // label.ui.portId = portId; - var tooltip = new qx.ui.tooltip.ToolTip(portData.key, icon); + var tooltip = new qx.ui.tooltip.ToolTip(portData.description, icon); tooltip.setShowTimeout(50); label.ui.setToolTip(tooltip); @@ -304,7 +313,9 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { const eData = { event: e, nodeId: this.getNodeId(), - portId: label.portId + portId: portId, + isInput: isInput, + dataType: portData.type }; this.fireDataEvent(eventPair[1], eData); }, this); diff --git a/services/web/client/source/class/qxapp/components/workbench/Workbench.js b/services/web/client/source/class/qxapp/components/workbench/Workbench.js index f25c1c943d1..41ac96fc883 100644 --- a/services/web/client/source/class/qxapp/components/workbench/Workbench.js +++ b/services/web/client/source/class/qxapp/components/workbench/Workbench.js @@ -53,7 +53,7 @@ qx.Class.define("qxapp.components.workbench.Workbench", { this.__selectedItemChanged(null); } }, this); - // TODO how about making the LoggerView a singleton then it could be accessed from everywhere + // TODO how about making the LoggerView a singleton then it could be accessed from anywhere this.__logger = new qxapp.components.workbench.logger.LoggerView(); this.__desktop.add(this.__logger); diff --git a/services/web/client/source/class/qxapp/desktop/LayoutManager.js b/services/web/client/source/class/qxapp/desktop/LayoutManager.js index 4ef3ca9f6a5..c81f215a1c4 100644 --- a/services/web/client/source/class/qxapp/desktop/LayoutManager.js +++ b/services/web/client/source/class/qxapp/desktop/LayoutManager.js @@ -24,13 +24,14 @@ qx.Class.define("qxapp.desktop.LayoutManager", { this.__navBar.setCurrentStatus("Browser"); }, this); - this.__prjBrowser.addListener("StartPrj", function(e) { + this.__prjBrowser.addListener("StartProject", function(e) { let project = e.getData(); if (this.__prjEditor) { this.__prjStack.remove(this.__prjEditor); } this.__prjEditor = new qxapp.desktop.PrjEditor(project.getProjectId()); - this.__prjStack.setSelection([this.__PrjEditor]); + this.__prjStack.add(this.__prjEditor); + this.__prjStack.setSelection([this.__prjEditor]); this.__navBar.setCurrentStatus(project.getName()); // this.__PrjEditor.showSettings(false); }, this); diff --git a/services/web/client/source/class/qxapp/desktop/PrjBrowser.js b/services/web/client/source/class/qxapp/desktop/PrjBrowser.js index 9654e5b8b1b..b37fc929ab3 100644 --- a/services/web/client/source/class/qxapp/desktop/PrjBrowser.js +++ b/services/web/client/source/class/qxapp/desktop/PrjBrowser.js @@ -11,7 +11,7 @@ qx.Class.define("qxapp.desktop.PrjBrowser", { }, events: { - "StartPrj": "qx.event.type.Data" + "StartProject": "qx.event.type.Data" }, members: { @@ -42,7 +42,7 @@ qx.Class.define("qxapp.desktop.PrjBrowser", { // Monitors change in selection prjCtr.getSelection().addListener("change", function(e) { const selectedItem = e.getTarget().toArray()[0]; - this.fireDataEvent("StartPrj", selectedItem); + this.fireDataEvent("StartProject", selectedItem); }, this); }, @@ -67,7 +67,7 @@ qx.Class.define("qxapp.desktop.PrjBrowser", { // Monitors change in selection prjCtr.getSelection().addListener("change", function(e) { const selectedItem = e.getTarget().toArray()[0]; - this.fireDataEvent("StartPrj", selectedItem); + this.fireDataEvent("StartProject", selectedItem); }, this); }, diff --git a/services/web/client/source/class/qxapp/desktop/PrjEditor.js b/services/web/client/source/class/qxapp/desktop/PrjEditor.js index a40980227a5..1765237245f 100644 --- a/services/web/client/source/class/qxapp/desktop/PrjEditor.js +++ b/services/web/client/source/class/qxapp/desktop/PrjEditor.js @@ -71,11 +71,11 @@ qx.Class.define("qxapp.desktop.PrjEditor", { this.__workbench.addWindowToDesktop(viewerWin); }, this); - this.__settingsView.addListener("NodeProgress", function(e) { - const nodeId = e.getData()[0]; - const progress = e.getData()[1]; - this.__workbench.updateProgress(nodeId, progress); - }, this); + // this.__settingsView.addListener("NodeProgress", function(e) { + // const nodeId = e.getData()[0]; + // const progress = e.getData()[1]; + // this.__workbench.updateProgress(nodeId, progress); + // }, this); this.__workbench.addListener("NodeDoubleClicked", function(e) { let node = e.getData(); diff --git a/services/web/client/source/class/qxapp/dev/fake/Data.js b/services/web/client/source/class/qxapp/dev/fake/Data.js index 314cef60543..9bfd3687bc9 100644 --- a/services/web/client/source/class/qxapp/dev/fake/Data.js +++ b/services/web/client/source/class/qxapp/dev/fake/Data.js @@ -23,7 +23,60 @@ qx.Class.define("qxapp.dev.fake.Data", { }), getNodeMap: function() { return { - "service/computational/itis/tutti:0.0.0-alpha": { + "service/dynamic/itis/file-picker-0.0.0":{ + key: "service/dynamic/itis/file-picker", + version: "0.0.0", + type: "dynamic", + name: "filepicker service", + description: "dummy file picker", + authors: [ + { + name: "Odei Maiz", + email: "maiz@itis.ethz.ch" + } + ], + contact: "maiz@itis.ethz.ch", + outputs: { + outFile: { + displayOrder: 0, + label: "File", + description: "Chosen File", + type: "string" + } + }, + inputs: {} + }, + "service/computational/itis/sleeper-0.0.0":{ + key: "service/computational/itis/sleeper", + version: "0.0.0", + type: "computational", + name: "sleeper service", + description: "dummy sleepr service", + authors: [ + { + name: "Odei Maiz", + email: "maiz@itis.ethz.ch" + } + ], + contact: "maiz@itis.ethz.ch", + inputs: { + inNumber: { + displayOrder: 0, + label: "In", + description: "Chosen Number", + type: "number" + } + }, + outputs: { + outNumber: { + displayOrder: 0, + label: "Out", + description: "Chosen Number", + type: "number" + } + } + }, + "service/computational/itis/tutti-0.0.0-alpha": { key: "service/computational/itis/tutti", version: "0.0.0-alpha", type: "computational", @@ -98,14 +151,14 @@ qx.Class.define("qxapp.dev.fake.Data", { }, inFile: { displayOrder: 6, - label: "FileInput Test", + label: "File", description: "Test Input File", type: "data:*/*" }, inImage: { displayOrder: 7, - label: "FileInput Test", - description: "Test Input File", + label: "Image", + description: "Test Input Image", type: "data:[image/jpeg,image/png]" } }, @@ -158,7 +211,7 @@ qx.Class.define("qxapp.dev.fake.Data", { key: "service/dynamic/itis/file-picker", version: "0.0.0", outputs: { - out1: { + outFile: { store: "s3-z43", path: "/bucket1/file1" } @@ -170,14 +223,12 @@ qx.Class.define("qxapp.dev.fake.Data", { }, "UUID2": { key: "service/computational/itis/sleeper", - version: "0.0.1-alpha", + version: "0.0.0", inputs: { - inNumber: 3.5, - inInteger: 4, - inImage: { - nodeUuid: "UUID1", - property: "out_1" - } + inNumber: 3.5 + }, + outputs: { + outNumber: 33 }, position: { x: 120, @@ -186,22 +237,12 @@ qx.Class.define("qxapp.dev.fake.Data", { }, "UUID3": { key: "service/computational/itis/sleeper", - version: "0.0.1-alpha", + version: "0.0.0", inputs: { - inNumber: { - nodeUuid: "UUID2", - property: "out_number" - }, - inString: "Hello,blablabla", - inBool: true, - inImage: { - nodeUuid: "UUID2", - property: "out_png" - }, - inFile: { - store: "s3-z43", - path: "/bucket2/file12" - } + inNumber: 3.5 + }, + outputs: { + outNumber: 33 }, position: { x: 260, diff --git a/services/web/client/source/resource/qxapp/project-v0.0.1.json b/services/web/client/source/resource/qxapp/project-v0.0.1.json index a6b9866e6c1..76b633f9009 100644 --- a/services/web/client/source/resource/qxapp/project-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/project-v0.0.1.json @@ -80,7 +80,7 @@ "additionalProperties": false, "required": [ "key", - "tag", + "version", "position" ], "properties": { @@ -93,7 +93,7 @@ "service/dynamic/3dviewer" ] }, - "tag": { + "version": { "type": "string", "description": "semantic version number of the node", "pattern": "^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){2}(-(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*)(\\.(0|[1-9]\\d*|\\d*[-a-zA-Z][-\\da-zA-Z]*))*)?(\\+[-\\da-zA-Z]+(\\.[-\\da-zA-Z-]+)*)?$", From b6300f4ab2c2226c4b5be99a1bf238b0ee420bf3 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 7 Aug 2018 09:58:02 +0200 Subject: [PATCH 101/127] sorting input and outputs --- .../source/class/qxapp/components/workbench/NodeBase.js | 8 +++++--- .../class/qxapp/components/workbench/SettingsView.js | 7 ------- .../web/client/source/class/qxapp/desktop/PrjEditor.js | 8 ++++---- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/services/web/client/source/class/qxapp/components/workbench/NodeBase.js b/services/web/client/source/class/qxapp/components/workbench/NodeBase.js index cd95efce872..9ea5fccefdd 100644 --- a/services/web/client/source/class/qxapp/components/workbench/NodeBase.js +++ b/services/web/client/source/class/qxapp/components/workbench/NodeBase.js @@ -198,7 +198,8 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { button.addListener("execute", function(e) { this.getPropsWidget().fireDataEvent("ShowViewer", { url: srvUrl, - name: metaData.name + name: metaData.name, + nodeId: this.getNodeId() }); }, this); console.debug(metaData.name, "Service ready on " + srvUrl); @@ -241,6 +242,7 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { } return null; }, + __createPorts: function(type, ports) { if (!ports) { return; @@ -269,13 +271,13 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { }, __addInputPort: function(portId, inputData) { let label = this.__createPort(true, portId, inputData); - this.getInputPorts().push(label); + this.getInputPorts()[portId] = label; this.__inputPortsUI.add(label.ui); }, __addOutputPort: function(portId, outputData) { let label = this.__createPort(false, portId, outputData); - this.getOutputPorts().push(label); + this.getOutputPorts()[portId]=label; this.__outputPortsUI.add(label.ui); }, __createPort: function(isInput, portId, portData) { diff --git a/services/web/client/source/class/qxapp/components/workbench/SettingsView.js b/services/web/client/source/class/qxapp/components/workbench/SettingsView.js index 6284ee50b8a..8846d873129 100644 --- a/services/web/client/source/class/qxapp/components/workbench/SettingsView.js +++ b/services/web/client/source/class/qxapp/components/workbench/SettingsView.js @@ -73,13 +73,6 @@ qx.Class.define("qxapp.components.workbench.SettingsView", { this.__dynamicViewer.removeAll(); let viewerButton = node.getViewerButton(); if (viewerButton) { - viewerButton.addListener("execute", function(e) { - const data = { - metadata: node.getMetadata(), - nodeId: node.getNodeId() - }; - this.fireDataEvent("ShowViewer", data); - }, this); this.__dynamicViewer.add(viewerButton); } } diff --git a/services/web/client/source/class/qxapp/desktop/PrjEditor.js b/services/web/client/source/class/qxapp/desktop/PrjEditor.js index 43ad19af5f8..ef566920cc1 100644 --- a/services/web/client/source/class/qxapp/desktop/PrjEditor.js +++ b/services/web/client/source/class/qxapp/desktop/PrjEditor.js @@ -78,11 +78,11 @@ qx.Class.define("qxapp.desktop.PrjEditor", { const slotName = "openDynamic"; let socket = qxapp.wrappers.WebSocket.getInstance(); - let data = { - serviceName: metadata.name, - nodeId: nodeId + let args = { + serviceName: data.name, + nodeId: data.nodeId }; - socket.emit(slotName, data); + socket.emit(slotName, args); }, this); // this.__settingsView.addListener("NodeProgress", function(e) { From d098bd3c8d840488f7a4bd59a0f4e227f91c5037 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 7 Aug 2018 11:40:30 +0200 Subject: [PATCH 102/127] make settings view shows again with new data model --- .eslintrc.json | 3 +- .../class/qxapp/components/form/Auto.js | 200 ++++++++++-------- .../qxapp/components/workbench/NodeBase.js | 26 +-- .../qxapp/components/workbench/Workbench.js | 14 +- .../source/class/qxapp/desktop/PrjEditor.js | 10 +- 5 files changed, 139 insertions(+), 114 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index eab48cbacec..46e54654ad0 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -2,7 +2,8 @@ "extends": "eslint:recommended", "parser": "babel-eslint", "globals": { - "osparc": false + "osparc": false, + "window": false }, "rules": { "max-len": [ diff --git a/services/web/client/source/class/qxapp/components/form/Auto.js b/services/web/client/source/class/qxapp/components/form/Auto.js index b3448a68387..9808bcf5146 100644 --- a/services/web/client/source/class/qxapp/components/form/Auto.js +++ b/services/web/client/source/class/qxapp/components/form/Auto.js @@ -10,28 +10,40 @@ * Create a form. The argument to the form * widget defines the structure of the form. * - * [ - * { - * key: 'xyc', // unique name - * label: 'label', - * type: string|integer|bool, - * widget: 'text', - * cfg: {}, // widget specific configuration - * set: {} // normal qx porperties to apply + * { + * key: { + * displayOrder: 5, + label: "Widget SelectBox Test", + description: "Test Input for SelectBox", + defaultValue: "dog", + type: "string", + widget: { + type: "SelectBox", + structure: [ + { + key: "dog", + label: "A Dog" + }, + { + key: "cat", + label: "A Cat" + } + ] + } * }, - * .... - * ] + * ... + * } * * The default widgets for data types are as follows: * * string: text * integer: spinner * bool: checkBox + * number: text + * data: file-upload/selection * - * The following widgets are supported: - * header: { label: "header text"}, - * text: { }, - * selectBox: { cfg: { structure: [ {key: x, label: y}, ...] } }, + * The following widget types are supported: + * selectBox: { structure: [ {key: x, label: y}, ...] }, * date: { }, // following unix tradition, dates are represented in epoc seconds * password: {}, * textArea: {}, @@ -60,9 +72,9 @@ qx.Class.define("qxapp.components.form.Auto", { let formCtrl = this.__formCtrl = new qx.data.controller.Form(null, this); this.__boxCtrl = {}; this.__typeMap = {}; - - content.forEach(this.__addField, this); - + for (let key in content) { + this.__addField(content[key], key); + } let model = this.__model = formCtrl.createModel(true); model.addListener("changeBubble", function(e) { @@ -256,8 +268,14 @@ qx.Class.define("qxapp.components.form.Auto", { } } }, - __setupTextField: function(s) { - this.__formCtrl.addBindingOptions(s.key, + __setupTextArea: function(s, key, control) { + if (s.widget.minHeight) { + control.setMinHeight(s.widget.minHeight); + } + this.__setupTextField(s, key, control); + }, + __setupTextField: function(s, key) { + this.__formCtrl.addBindingOptions(key, { // model2target converter : function(data) { return String(data); @@ -270,14 +288,37 @@ qx.Class.define("qxapp.components.form.Auto", { } ); }, - __setupSpinner: function(s) { + __setupNumberField: function(s, key) { if (!s.set) { s.set = {}; } if (s.defaultValue) { - s.set.value = parseInt(s.defaultValue); + s.set.value = qx.lang.Type.isNumber(s.defaultValue) ? String(s.defaultValue) : s.defaultValue; } - this.__formCtrl.addBindingOptions(s.key, + this.__formCtrl.addBindingOptions(key, + { // model2target + converter : function(data) { + if (qx.lang.Type.isNumber(d)) { + return String(d); + } + return d; + } + }, + { // target2model + converter : function(data) { + return parseFloat(data); + } + } + ); + }, + __setupSpinner: function(s, key) { + if (!s.set) { + s.set = {}; + } + if (s.defaultValue) { + s.set.value = parseInt(String(s.defaultValue)); + } + this.__formCtrl.addBindingOptions(key, { // model2target converter : function(data) { let d = String(data); @@ -294,34 +335,35 @@ qx.Class.define("qxapp.components.form.Auto", { } ); }, - __setupSelectBox: function(s, control) { - let controller = this.__boxCtrl[s.key] = new qx.data.controller.List(null, control, "label"); + + __setupSelectBox: function(s, key, control) { + let controller = this.__boxCtrl[key] = new qx.data.controller.List(null, control, "label"); controller.setDelegate({ bindItem : function(ctrl, item, index) { ctrl.bindProperty("key", "model", null, item, index); ctrl.bindProperty("label", "label", null, item, index); } }); - let cfg = s.cfg; + let cfg = s.widget; if (cfg.structure) { cfg.structure.forEach(function(item) { item.label = item.label ? this["tr"](item.label) : null; }, this); } else { - cfg.strucuture = [{ + cfg.structure = [{ label : "", key : null }]; } - if (s.set.value) { - s.set.value = [s.set.value]; + if (s.defaultValue) { + s.set.value = [s.defaultValue]; } // console.log(cfg.structure); let sbModel = qx.data.marshal.Json.createModel(cfg.structure); controller.setModel(sbModel); }, - __setupComboBox: function(s, control) { - let ctrl = this.__boxCtrl[s.key] = new qx.data.controller.List(null, control); + __setupComboBox: function(s, key, control) { + let ctrl = this.__boxCtrl[key] = new qx.data.controller.List(null, control); let cfg = s.cfg; if (cfg.structure) { cfg.structure.forEach(function(item) { @@ -333,14 +375,11 @@ qx.Class.define("qxapp.components.form.Auto", { let sbModel = qx.data.marshal.Json.createModel(cfg.structure); ctrl.setModel(sbModel); }, - __setupBoolField: function(s, control) { + __setupBoolField: function(s, key, control) { if (!s.set) { s.set = {}; } - if (s.defaultValue) { - s.set.value = s.defaultValue; - } - this.__formCtrl.addBindingOptions(s.key, + this.__formCtrl.addBindingOptions(key, { // model2target converter : function(data) { return data; @@ -353,8 +392,8 @@ qx.Class.define("qxapp.components.form.Auto", { } ); }, - __setupFileButton: function(s) { - this.__formCtrl.addBindingOptions(s.key, + __setupFileButton: function(s, key) { + this.__formCtrl.addBindingOptions(key, { // model2target converter : function(data) { return String(data); @@ -367,58 +406,45 @@ qx.Class.define("qxapp.components.form.Auto", { } ); }, - __addField: function(s) { - // FIXME: OM why null? - if (s === null) { - return; - } - let option = { - exposable: s.exposable - }; // for passing info into the form renderer - - if (s.widget == "header") { - this.addGroupHeader(s.label ? this["tr"](s.label):null, option); - return; - } - - if (!s.key) { - throw new Error("the key property is required"); - } + __addField: function(s, key) { if (s.defaultValue) { if (!s.set) { s.set = {}; } s.set.value = s.defaultValue; } - // FIXME: This should go away - if (s.value) { - if (!s.set) { - s.set = {}; - } - s.set.value = s.value; - } + if (!s.widget) { + let type = s.type; + if (type.match(/^data:/)) { + type = "data"; + } s.widget = { - string: "text", - integer: "spinner", - number: "spinner", - bool: "checkBox", - "file-url": "fileButton", - "folder-url": "fileButton" - }[s.type]; + type: { + string: "Text", + integer: "Spinner", + number: "Number", + boolean: "CheckBox", + data: "FileButton" + }[type] + }; } let control; let setup; - switch (s.widget) { - case "date": + switch (s.widget.type) { + case "Date": control = new qx.ui.form.DateField(); setup = this.__setupDateField; break; - case "text": + case "Text": control = new qx.ui.form.TextField(); setup = this.__setupTextField; break; - case "spinner": + case "Number": + control = new qx.ui.form.TextField(); + setup = this.__setupNumberField; + break; + case "Spinner": control = new qx.ui.form.Spinner(); control.set({ maximum: 10000, @@ -426,42 +452,38 @@ qx.Class.define("qxapp.components.form.Auto", { }); setup = this.__setupSpinner; break; - case "password": + case "Password": control = new qx.ui.form.PasswordField(); setup = this.__setupTextField; break; - case "textArea": + case "TextArea": control = new qx.ui.form.TextArea(); - setup = this.__setupTextField; - break; - case "hiddenText": - control = new qx.ui.form.TextField(); - control.exclude(); - setup = this.__setupTextField; + setup = this.__setupTextArea; break; - case "checkBox": + case "CheckBox": control = new qx.ui.form.CheckBox(); setup = this.__setupBoolField; break; - case "selectBox": + case "SelectBox": control = new qx.ui.form.SelectBox(); setup = this.__setupSelectBox; break; - case "comboBox": + case "ComboBox": control = new qx.ui.form.ComboBox(); setup = this.__setupComboBox; break; - case "fileButton": + case "FileButton": control = new qx.ui.form.TextField(); setup = this.__setupFileButton; break; default: - throw new Error("unknown widget type " + s.widget); + throw new Error("unknown widget type " + s.widget.type); } - this.__ctrlMap[s.key] = control; - this.add(control, s.label ? this["tr"](s.label):null, null, s.key, null, option); + this.__ctrlMap[key] = control; + let option = {}; // could use this to pass on info to the form renderer + this.add(control, s.label ? this["tr"](s.label):null, null, key, null, option); - setup.call(this, s, control); + setup.call(this, s, key, control); if (s.set) { if (s.set.filter) { @@ -476,7 +498,7 @@ qx.Class.define("qxapp.components.form.Auto", { console.log(s.set); control.set(s.set); } - this.__ctrlMap[s.key] = control; + this.__ctrlMap[key] = control; } } }); diff --git a/services/web/client/source/class/qxapp/components/workbench/NodeBase.js b/services/web/client/source/class/qxapp/components/workbench/NodeBase.js index 9ea5fccefdd..8130727df5a 100644 --- a/services/web/client/source/class/qxapp/components/workbench/NodeBase.js +++ b/services/web/client/source/class/qxapp/components/workbench/NodeBase.js @@ -157,6 +157,7 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { this.__inputPorts = {}; this.__createPorts("Input", metaData.inputs); this.__createPorts("Output", metaData.outputs); + this.__addSettings(metaData.inputs); }, __addSettings: function(inputs) { @@ -164,18 +165,19 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { return; } let form = this.__settingsForm = new qxapp.components.form.Auto(inputs); - this.__settingsForm.addListener("changeData", function(e) { - let settingsForm = e.getData(); - for (var settingKey in settingsForm) { - if (this.__metaData.inputs) { - for (let i=0; i { let nodeButton = new qx.ui.menu.Button(nodeMetaData.label); nodeButton.addListener("execute", function() { - let nodeItem = this.__createNode(nodeMetaData); + let nodeItem = this.__createNode("fix-my-name", null, nodeMetaData); this.__addNodeToWorkbench(nodeItem); }, this); @@ -339,7 +339,7 @@ qx.Class.define("qxapp.components.workbench.Workbench", { }, this); node.addListener("dblclick", function(e) { - if (node.getMetadata().key === "FileManager") { + if (node.getMetaData().key === "FileManager") { const width = 800; const height = 600; let fileManager = new qxapp.components.widgets.FileManager(); @@ -353,8 +353,8 @@ qx.Class.define("qxapp.components.workbench.Workbench", { const isDirectory = data.getData().isDirectory; const activeIndex = isDirectory ? dirPortIndex : filePortIndex; const inactiveIndex = isDirectory ? filePortIndex : dirPortIndex; - node.getMetadata().outputs[activeIndex].value = itemPath; - node.getMetadata().outputs[inactiveIndex].value = null; + node.getMetaData().outputs[activeIndex].value = itemPath; + node.getMetaData().outputs[inactiveIndex].value = null; node.getPortByIndex(false, activeIndex).ui.setLabel(itemName); node.getPortByIndex(false, activeIndex).ui.getToolTip().setLabel(itemName); node.getPortByIndex(false, inactiveIndex).ui.setLabel(""); @@ -772,7 +772,7 @@ qx.Class.define("qxapp.components.workbench.Workbench", { let inputs = nodeData.inputs; if (inputs) { for (let port1Id in inputs) { - let node2Uuid = inputs[port1Key].nodeUuid; + let node2Uuid = inputs[port1Id].nodeUuid; if (node2Uuid) { let port1 = node1.getPort(port1Id); let node2 = this.__getNode(nodeUuid); diff --git a/services/web/client/source/class/qxapp/desktop/PrjEditor.js b/services/web/client/source/class/qxapp/desktop/PrjEditor.js index ef566920cc1..353967c687e 100644 --- a/services/web/client/source/class/qxapp/desktop/PrjEditor.js +++ b/services/web/client/source/class/qxapp/desktop/PrjEditor.js @@ -66,14 +66,14 @@ qx.Class.define("qxapp.desktop.PrjEditor", { }, this); this.__settingsView.addListener("ShowViewer", function(e) { - let data = e.getData(); let viewerWin = this.__createBrowserWindow(data.url, data.name); - // const metadata = e.getData().metadata; - // const nodeId = e.getData().nodeId; - // let url = "http://" + window.location.hostname + ":" + metadata.viewer.port; - // let viewerWin = this.__createBrowserWindow(url, metadata.name); + // const metadata = e.getData().metadata; + // const nodeId = e.getData().nodeId; + // let url = "http://" + window.location.hostname + ":" + metadata.viewer.port; + // let viewerWin = this.__createBrowserWindow(url, metadata.name); + this.__workbench.addWindowToDesktop(viewerWin); const slotName = "openDynamic"; From 2599eaf65845fa3e82ad166f1f442e739debfac0 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 7 Aug 2018 13:31:31 +0200 Subject: [PATCH 103/127] Load Data from project file into nodes --- .../web/client/source/class/qxapp/components/form/Auto.js | 6 +++--- .../source/class/qxapp/components/workbench/NodeBase.js | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/services/web/client/source/class/qxapp/components/form/Auto.js b/services/web/client/source/class/qxapp/components/form/Auto.js index 9808bcf5146..c81c59483a1 100644 --- a/services/web/client/source/class/qxapp/components/form/Auto.js +++ b/services/web/client/source/class/qxapp/components/form/Auto.js @@ -298,10 +298,10 @@ qx.Class.define("qxapp.components.form.Auto", { this.__formCtrl.addBindingOptions(key, { // model2target converter : function(data) { - if (qx.lang.Type.isNumber(d)) { - return String(d); + if (qx.lang.Type.isNumber(data)) { + return String(data); } - return d; + return data; } }, { // target2model diff --git a/services/web/client/source/class/qxapp/components/workbench/NodeBase.js b/services/web/client/source/class/qxapp/components/workbench/NodeBase.js index 8130727df5a..c7f5938ae8d 100644 --- a/services/web/client/source/class/qxapp/components/workbench/NodeBase.js +++ b/services/web/client/source/class/qxapp/components/workbench/NodeBase.js @@ -63,7 +63,7 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { this.add(progressBox); let metaData = qxapp.dev.fake.Data.getNodeMap()[nodeImageId]; if (metaData) { - this.__populateNode(metaData); + this.__populateNode(metaData, nodeData); } else { console.error("Invalid ImageID - Not populating "+nodeImageId); } @@ -148,7 +148,7 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { return bounds; }, - __populateNode: function(metaData) { + __populateNode: function(metaData,nodeData) { this.__metaData = metaData; // this.__creteSettings(metaData.inputs); this.setCaption(metaData.name + " " + metaData.version); @@ -158,6 +158,7 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { this.__createPorts("Input", metaData.inputs); this.__createPorts("Output", metaData.outputs); this.__addSettings(metaData.inputs); + this.__settingsForm.setData(nodeData.inputs); }, __addSettings: function(inputs) { From f53184cb2c15573bc38e4ea9a936ab03859e30c9 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Tue, 7 Aug 2018 13:45:04 +0200 Subject: [PATCH 104/127] fix linting problems --- services/web/client/source/boot/nojs.html | 2 +- .../client/source/class/qxapp/components/workbench/NodeBase.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/services/web/client/source/boot/nojs.html b/services/web/client/source/boot/nojs.html index cf82df8ad60..91b82ebbf0a 100644 --- a/services/web/client/source/boot/nojs.html +++ b/services/web/client/source/boot/nojs.html @@ -12,7 +12,7 @@
-
+


diff --git a/services/web/client/source/class/qxapp/components/workbench/NodeBase.js b/services/web/client/source/class/qxapp/components/workbench/NodeBase.js index c7f5938ae8d..9a4985ffdef 100644 --- a/services/web/client/source/class/qxapp/components/workbench/NodeBase.js +++ b/services/web/client/source/class/qxapp/components/workbench/NodeBase.js @@ -148,7 +148,7 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { return bounds; }, - __populateNode: function(metaData,nodeData) { + __populateNode: function(metaData, nodeData) { this.__metaData = metaData; // this.__creteSettings(metaData.inputs); this.setCaption(metaData.name + " " + metaData.version); From fd7f6eb0e3e5ae4bd25e4053559ef26d035cc719 Mon Sep 17 00:00:00 2001 From: Tobias Oetiker Date: Thu, 9 Aug 2018 13:52:43 +0200 Subject: [PATCH 105/127] get settings view to work --- .../class/qxapp/components/form/Auto.js | 5 +++ .../qxapp/components/workbench/NodeBase.js | 2 +- .../qxapp/components/workbench/Workbench.js | 37 +++++++++---------- .../source/class/qxapp/dev/fake/Data.js | 5 ++- .../source/resource/qxapp/project-v0.0.1.json | 2 +- 5 files changed, 28 insertions(+), 23 deletions(-) diff --git a/services/web/client/source/class/qxapp/components/form/Auto.js b/services/web/client/source/class/qxapp/components/form/Auto.js index c81c59483a1..03393d2822a 100644 --- a/services/web/client/source/class/qxapp/components/form/Auto.js +++ b/services/web/client/source/class/qxapp/components/form/Auto.js @@ -189,6 +189,11 @@ qx.Class.define("qxapp.components.form.Auto", { this.__settingData = true; for (let key in data) { + if (typeof data[key] == "object" && data[key].nodeUuid) { + this.getControl(key).setEnabled(false); + continue; + } + this.getControl(key).setEnabled(true); let upkey = qx.lang.String.firstUp(key); let setter = "set" + upkey; let value = data[key]; diff --git a/services/web/client/source/class/qxapp/components/workbench/NodeBase.js b/services/web/client/source/class/qxapp/components/workbench/NodeBase.js index 9a4985ffdef..5a38e37d2a7 100644 --- a/services/web/client/source/class/qxapp/components/workbench/NodeBase.js +++ b/services/web/client/source/class/qxapp/components/workbench/NodeBase.js @@ -288,7 +288,7 @@ qx.Class.define("qxapp.components.workbench.NodeBase", { label.portId = portId; label.isInput = isInput; label.portType = portData.type; - let iconSize = (portHeight-2).toString(); + let iconSize = (portHeight-4).toString(); let icon = "@FontAwesome5Solid/edit/" + iconSize; if (portData.type.match(/^data:/)) { icon = "@FontAwesome5Solid/file/" + (portHeight-2).toString(); diff --git a/services/web/client/source/class/qxapp/components/workbench/Workbench.js b/services/web/client/source/class/qxapp/components/workbench/Workbench.js index a4ed14281de..88ad33ab77a 100644 --- a/services/web/client/source/class/qxapp/components/workbench/Workbench.js +++ b/services/web/client/source/class/qxapp/components/workbench/Workbench.js @@ -58,6 +58,7 @@ qx.Class.define("qxapp.components.workbench.Workbench", { this.__desktop.add(this.__logger); this.__nodes = []; + this.__nodeMap = {}; this.__links = []; let loggerButton = this.__getShowLoggerButton(); @@ -116,6 +117,7 @@ qx.Class.define("qxapp.components.workbench.Workbench", { members: { __nodes: null, + __nodeMap: null, __links: null, __desktop: null, __svgWidget: null, @@ -521,7 +523,9 @@ qx.Class.define("qxapp.components.workbench.Workbench", { } return null; }, + __addLinkNew: function(from, to) { + }, __addLink: function(node1, port1, node2, port2, linkId) { // swap node-ports to have node1 as input and node2 as output if (port1.isInput) { @@ -756,27 +760,20 @@ qx.Class.define("qxapp.components.workbench.Workbench", { __loadProject: function(workbenchData) { for (let nodeUuid in workbenchData) { let nodeData = workbenchData[nodeUuid]; - let node = this.__createNode(nodeData.key + "-" + nodeData.version, nodeUuid, nodeData); - if (nodeData.position) { - this.__addNodeToWorkbench(node, nodeData.position); - } else { - this.__addNodeToWorkbench(node); - } + let node = this.__nodeMap[nodeUuid] = + this.__createNode(nodeData.key + "-" + nodeData.version, nodeUuid, nodeData); + this.__addNodeToWorkbench(node, nodeData.position); } - if (workbenchData.inputs) { - for (let nodeUuid in workbenchData) { - let nodeData = workbenchData[nodeUuid]; - let node1 = this.__getNode(nodeUuid); - let inputs = nodeData.inputs; - if (inputs) { - for (let port1Id in inputs) { - let node2Uuid = inputs[port1Id].nodeUuid; - if (node2Uuid) { - let port1 = node1.getPort(port1Id); - let node2 = this.__getNode(nodeUuid); - let port2 = node2.getPort(inputs[port1].property); - this.__addLink(node1, port1, node2, port2); - } + for (let nodeUuid in workbenchData) { + let nodeData = workbenchData[nodeUuid]; + if (nodeData.inputs) { + for (let prop in nodeData.inputs) { + let link = nodeData.inputs[prop]; + if (typeof link == "object" && link.nodeUuid) { + this.__addLinkNew(link, { + nodeUuid: nodeUuid, + input: prop + }); } } } diff --git a/services/web/client/source/class/qxapp/dev/fake/Data.js b/services/web/client/source/class/qxapp/dev/fake/Data.js index 9bfd3687bc9..c5d30563245 100644 --- a/services/web/client/source/class/qxapp/dev/fake/Data.js +++ b/services/web/client/source/class/qxapp/dev/fake/Data.js @@ -253,7 +253,10 @@ qx.Class.define("qxapp.dev.fake.Data", { key: "service/computational/itis/tutti", version: "0.0.0-alpha", inputs: { - inNumber: 3.3, + inNumber: { + nodeUuid: "UUID3", + output: "outNumber" + }, inInt: 372, inBool: true, inStr: "Ooops, Agnodain", diff --git a/services/web/client/source/resource/qxapp/project-v0.0.1.json b/services/web/client/source/resource/qxapp/project-v0.0.1.json index 76b633f9009..dc92c02692a 100644 --- a/services/web/client/source/resource/qxapp/project-v0.0.1.json +++ b/services/web/client/source/resource/qxapp/project-v0.0.1.json @@ -127,7 +127,7 @@ "nodeUuid": { "type": "string" }, - "property": { + "output": { "type": "string" } } From f9505f16d6c8870fa9c87f655c7dee15972f8981 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Wed, 24 Oct 2018 14:06:33 +0200 Subject: [PATCH 106/127] dy-modeling client follows similar dockerfile to the one used in the front-end --- services/dy-modeling/client/Dockerfile | 98 ++++++++++++++++--- services/dy-modeling/client/Manifest.json | 4 +- services/dy-modeling/client/compile.json | 4 +- services/dy-modeling/client/docker/clean.sh | 24 +++++ .../dy-modeling/client/docker/entrypoint.sh | 69 +++++++++++++ .../client/docker/install-contrib.sh | 25 +++++ services/dy-modeling/client/package.json | 5 + services/dy-modeling/server/Dockerfile | 2 +- 8 files changed, 212 insertions(+), 19 deletions(-) create mode 100644 services/dy-modeling/client/docker/clean.sh create mode 100644 services/dy-modeling/client/docker/entrypoint.sh create mode 100644 services/dy-modeling/client/docker/install-contrib.sh create mode 100644 services/dy-modeling/client/package.json diff --git a/services/dy-modeling/client/Dockerfile b/services/dy-modeling/client/Dockerfile index 686dc655e54..036272e813b 100644 --- a/services/dy-modeling/client/Dockerfile +++ b/services/dy-modeling/client/Dockerfile @@ -1,16 +1,64 @@ -FROM node:8.9.2 AS common +FROM node:8.9.2 AS base-stage + +# Used to qx compile and/or serve (dev) client-side code + +# +# + /home/scu/ $HOME +# + client/ $PWD, WORKDIR, VOLUME( only devel) +# + docker/ scripts and config to install contributions and run entrypoint +# + source/ +# + source-output/ $QOOXDOO_OUTDIR +# + packages.json specifies qx-compiler +# + ... +# + .npm-global/ global npm folder +# + bin/ * +# + node_modules/ local npm folder +# + .bin/ * +# - qx qx compiler executable +# + qooxdoo-sdk/ $QOOXDOO_PATH +# + framework contains qx library +# + tool/ +# + bin/ * contains generator.py +# +# * = in $PATH +# + + +# non-root user uid=1000 +# TODO: create instead uid=5000. +RUN groupmod --new-name scu node && \ + usermod --login scu --move-home --home /home/scu node +USER scu + + +ENV HOME /home/scu ENV NPM_CONFIG_LOGLEVEL warn -# + /home/node/ -# + app/source-output/ -# + app/source/ -# + app/*.json +ENV NPM_CONFIG_PREFIX $HOME/.npm-global +ENV QOOXDOO_PATH $HOME/qooxdoo-sdk +ENV QOOXDOO_OUTDIR $HOME/client/source-output +ENV PATH "${QOOXDOO_PATH}/tool/bin:${HOME}/node_modules/.bin/:${NPM_CONFIG_PREFIX}/bin:${PATH}" + + +WORKDIR /home/scu -WORKDIR /home/node/ -RUN npm install qxcompiler +# 1. qooxdoo-sdk from source repository. +# - Provides framework and generator.py tools to overcome limits of qx-compiler +# - TODO: This is a temporary solution +RUN git clone --depth 1 https://github.com/qooxdoo/qooxdoo.git ${QOOXDOO_PATH} && \ + sed 's/6.0.0-alpha[^"]*/'$(date +"6.0.0-alpha-%Y%m%d")'/' ${QOOXDOO_PATH}/framework/Manifest.json > ${QOOXDOO_PATH}/framework/Manifest.json.$$ && \ + mv ${QOOXDOO_PATH}/framework/Manifest.json.$$ ${QOOXDOO_PATH}/framework/Manifest.json -ENV PATH="/home/node/node_modules/.bin/:${PATH}" +# 2. installs qx-compiler (see specs in package.json) +COPY --chown=scu:scu package*.json ./ -WORKDIR /home/node/qxapp +RUN npm install npm@latest && \ + npm install + +# owned by scu now +RUN mkdir $HOME/client +WORKDIR /home/scu/client + +EXPOSE 8080 # call git rev-parse — short HEAD in a bash ARG VCS_REF @@ -25,13 +73,33 @@ LABEL org.label-schema.schema-version="1.0" \ org.label-schema.vendor="IT'IS foundation" #-----------------Development----------------------- -FROM common as development +FROM base-stage as development + +# NOTE: cannot expose contrib and source-output volumes (to keep them inside) +# within container does not work well because links remain in host + +VOLUME /home/scu/client -CMD ["qx", "compile", "--watch"] +# 3. installs contribs and qx serve -> source-output/ +# NOTE: expects docker available via volume bound +ENTRYPOINT ["./docker/entrypoint.sh"] + +# 4. serves +CMD ["serve"] #-----------------Production---------------------- -FROM common AS production +FROM base-stage AS production + + +# 3. prepares docker +COPY --chown=scu:scu docker docker +RUN chmod +x docker/*.sh + +# 4. Installs qooxdoo contributions in $WORKDIR/contrib/ within container +COPY --chown=scu:scu compile.json compile.json +RUN ./docker/install-contrib.sh -COPY source /home/node/qxapp/source -COPY *.json ./ -RUN qx compile --target=build \ No newline at end of file +# 5. compiles source -> build-output/ +COPY --chown=scu:scu source source +COPY --chown=scu:scu Manifest.json Manifest.json +RUN qx compile --target=build diff --git a/services/dy-modeling/client/Manifest.json b/services/dy-modeling/client/Manifest.json index 7a48f18b4a1..8b37291f475 100644 --- a/services/dy-modeling/client/Manifest.json +++ b/services/dy-modeling/client/Manifest.json @@ -3,7 +3,7 @@ { "name" : "qxapp", - "summary" : "This is a sample", + "summary" : "3D Modeler for the oSPARC platform", "description" : "", "homepage" : "", @@ -17,7 +17,7 @@ ], "version" : "1.0.0", - "qooxdoo-range": "6.0.0-alpha" + "qooxdoo-range": "^6.0.0" }, "provides" : diff --git a/services/dy-modeling/client/compile.json b/services/dy-modeling/client/compile.json index 3febd60c8fa..19f192130f3 100644 --- a/services/dy-modeling/client/compile.json +++ b/services/dy-modeling/client/compile.json @@ -14,6 +14,8 @@ } ], "defaultTarget": "source", + "locales": ["en"], + "lint-check": true, "applications": [ { @@ -24,7 +26,7 @@ ], "libraries": [ - "../node_modules/qooxdoo-sdk/framework", + "../qooxdoo-sdk/framework", "." ], diff --git a/services/dy-modeling/client/docker/clean.sh b/services/dy-modeling/client/docker/clean.sh new file mode 100644 index 00000000000..ff25a64de15 --- /dev/null +++ b/services/dy-modeling/client/docker/clean.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# FIXME: for the moment this has to run in sudo until Dockerfile works with non-root user + +echo "Cleaning qooxdoo outputs ..." + +source $(dirname $0)/.env + +# WARNING: do not call this script with 'source' +echo "client dir: " ${CLIENT_DIR} +echo "fonts dir : " ${FONTS_DIR} + +# Removes contrib folder and json file +rm -r ${CLIENT_DIR}/contrib 2> /dev/null +rm ${CLIENT_DIR}/contrib.json 2> /dev/null + +# Removes links to +rm ${FONTS_DIR}/fontawesome5 2> /dev/null +rm ${FONTS_DIR}/material 2> /dev/null + +# Runs 'qx clean' +pushd ${CLIENT_DIR}; +docker run -itd -v $(pwd):/home/node/client --entrypoint qx client_qx:dev clean +popd; diff --git a/services/dy-modeling/client/docker/entrypoint.sh b/services/dy-modeling/client/docker/entrypoint.sh new file mode 100644 index 00000000000..9d159122b25 --- /dev/null +++ b/services/dy-modeling/client/docker/entrypoint.sh @@ -0,0 +1,69 @@ +#!/bin/bash +# +# +GENERATOR=${QOOXDOO_PATH}/tool/bin/generator.py + +version() +{ + echo qooxdoo-compiler: $(qx --help 2>&1 >/dev/null | grep Versions | cut -c28-) + echo qooxdoo-sdk : $(cat ${QOOXDOO_PATH}/version.txt) + echo http-server : $(npm -g info http-server version) +} + +run_qx() +{ + echo "Booting qooxdoo ..." + + source $(dirname $0)/.env + echo "- script dir: " ${SCRIPT_DIR} + echo "- client dir: " ${CLIENT_DIR} + echo "- fonts dir : " ${FONTS_DIR} + + # TODO: add argument to avoid installing contributions + ${SCRIPT_DIR}/install-contrib.sh + + echo Running \'qx "$@"\' ... + qx "$@" + + # TODO: if create, then copy config.json in the output as well +} + + +run_gtor() +{ + # Option 1: chdir project folder and execute $GENERATOR <-- + echo Running \'python $GENERATOR "$@"\' ... + python $GENERATOR "$@" + + # Option 2: copy stup in project folder, chdir project folder and execute stub there +} + + +run_srv() +{ + # Mainly to serve api and test applicaitons. + # test-source needs of qooxdoo-sdk and for that reason it is + # convenient to use the qx-devel image since it already contains + # the proper sdk at the right location + echo Running \'http-server "$@"\' ... + http-server "$@" +} + + +case $1 in + --version ) + version + ;; + test | test-source| api ) + run_gtor $@ + ;; + gtor ) + run_gtor ${@:2} + ;; + srv ) + run_srv ${@:2} + ;; + * ) + run_qx $@ + ;; +esac diff --git a/services/dy-modeling/client/docker/install-contrib.sh b/services/dy-modeling/client/docker/install-contrib.sh new file mode 100644 index 00000000000..65d511784ca --- /dev/null +++ b/services/dy-modeling/client/docker/install-contrib.sh @@ -0,0 +1,25 @@ +#!/bin/bash +echo "Installing qooxdoo contrib ..." + +source $(dirname $0)/.env + +# TODO: if env not defined, set defaults +echo "- script dir: " ${SCRIPT_DIR} +echo "- client dir: " ${CLIENT_DIR} +echo "- fonts dir : " ${FONTS_DIR} + +# Installs thems and iconfonts +pushd ${CLIENT_DIR}; + +echo "Updating contributions ..." +qx contrib update + +echo "Listing contributions ..." +qx contrib list + +echo "Installing contributions ..." +qx contrib install ITISFoundation/qx-osparc-theme +qx contrib install ITISFoundation/qx-iconfont-material +qx contrib install ITISFoundation/qx-iconfont-fontawesome5 + +popd; diff --git a/services/dy-modeling/client/package.json b/services/dy-modeling/client/package.json new file mode 100644 index 00000000000..70093b8593d --- /dev/null +++ b/services/dy-modeling/client/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "qxcompiler": "^0.2.13" + } +} diff --git a/services/dy-modeling/server/Dockerfile b/services/dy-modeling/server/Dockerfile index 06e1ca000b4..268351f744a 100644 --- a/services/dy-modeling/server/Dockerfile +++ b/services/dy-modeling/server/Dockerfile @@ -48,7 +48,7 @@ CMD ["nodemon", "-L", "start"] #---------------------Production------------------ FROM common AS production WORKDIR /home/node/ -COPY --from=dy-modeling_client:latest /home/node/qxapp/build-output source-output +COPY --from=dy-modeling_client:latest /home/scu/client/build-output source-output COPY source /home/node/source RUN npm install -y From 74150ba4b7f1c0b4a204b9def1472c692da88588 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Wed, 24 Oct 2018 14:48:45 +0200 Subject: [PATCH 107/127] dependencies label added to dy-modeling image --- services/dy-modeling/docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/services/dy-modeling/docker-compose.yml b/services/dy-modeling/docker-compose.yml index b85a5b7834c..6baf93a105b 100644 --- a/services/dy-modeling/docker-compose.yml +++ b/services/dy-modeling/docker-compose.yml @@ -23,6 +23,7 @@ services: io.simcore.key: '{"key": "simcore/services/dynamic/modeler"}' io.simcore.outputs: '{"outputs": []}' io.simcore.tag: '{"tag": "0.0.1"}' + io.simcore.dependencies: '[{"key": "simcore/services/dynamic/modeler/xrpc-worker", "tag": "1.9"}]' io.simcore.name: '{"name": "modeler"}' io.simcore.description: '{"description": "Modeler viewer"}' io.simcore.contact: '{"contact": "anderegg@itis.ethz.ch"}' From 79bc052f0fdffeef0fd83b368cab18a815718875 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Wed, 24 Oct 2018 14:49:18 +0200 Subject: [PATCH 108/127] dy-modeling key and tag fixed --- services/dy-modeling/Makefile | 4 ++-- services/dy-modeling/docker-compose.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/services/dy-modeling/Makefile b/services/dy-modeling/Makefile index df7e5c76295..8f563cc8457 100644 --- a/services/dy-modeling/Makefile +++ b/services/dy-modeling/Makefile @@ -7,7 +7,7 @@ else export DOCKER_COMPOSE=docker-compose export DOCKER=docker endif - +export MODELER_VERSION=2.2.0 all: @echo 'run `make build-devel` to build your dev environment' @echo 'run `make up-devel` to start your dev environment.' @@ -35,7 +35,7 @@ down: ${DOCKER_COMPOSE} -f docker-compose.yml down ${DOCKER_COMPOSE} -f docker-compose.yml -f docker-compose.devel.yml down -MODELER_VERSION=2.1 + MODELER_MASU_REGISTRY_NAME=masu.speag.com/simcore/services/dynamic/modeler/webserver push_service_images: ${DOCKER} login masu.speag.com diff --git a/services/dy-modeling/docker-compose.yml b/services/dy-modeling/docker-compose.yml index 6baf93a105b..648d786c92a 100644 --- a/services/dy-modeling/docker-compose.yml +++ b/services/dy-modeling/docker-compose.yml @@ -20,9 +20,9 @@ services: VCS_REF: BUILD_DATE: labels: - io.simcore.key: '{"key": "simcore/services/dynamic/modeler"}' + io.simcore.key: '{"key": "simcore/services/dynamic/modeler/webserver"}' io.simcore.outputs: '{"outputs": []}' - io.simcore.tag: '{"tag": "0.0.1"}' + io.simcore.tag: '{"tag": "${MODELER_VERSION}"}' io.simcore.dependencies: '[{"key": "simcore/services/dynamic/modeler/xrpc-worker", "tag": "1.9"}]' io.simcore.name: '{"name": "modeler"}' io.simcore.description: '{"description": "Modeler viewer"}' From a5bc95c4b07f95b238871746297a23e6a4a9fd54 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Wed, 24 Oct 2018 14:50:00 +0200 Subject: [PATCH 109/127] dy-modeling client fixed --- .../class/qxapp/{components => component}/AvailableServices.js | 0 .../source/class/qxapp/{components => component}/EntityList.js | 0 .../source/class/qxapp/{components => component}/MenuBar.js | 0 .../source/class/qxapp/{components => component}/Preferences.js | 0 .../source/class/qxapp/{components => component}/ThreeView.js | 0 .../source/class/qxapp/{components => component}/UserMenu.js | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename services/dy-modeling/client/source/class/qxapp/{components => component}/AvailableServices.js (100%) rename services/dy-modeling/client/source/class/qxapp/{components => component}/EntityList.js (100%) rename services/dy-modeling/client/source/class/qxapp/{components => component}/MenuBar.js (100%) rename services/dy-modeling/client/source/class/qxapp/{components => component}/Preferences.js (100%) rename services/dy-modeling/client/source/class/qxapp/{components => component}/ThreeView.js (100%) rename services/dy-modeling/client/source/class/qxapp/{components => component}/UserMenu.js (100%) diff --git a/services/dy-modeling/client/source/class/qxapp/components/AvailableServices.js b/services/dy-modeling/client/source/class/qxapp/component/AvailableServices.js similarity index 100% rename from services/dy-modeling/client/source/class/qxapp/components/AvailableServices.js rename to services/dy-modeling/client/source/class/qxapp/component/AvailableServices.js diff --git a/services/dy-modeling/client/source/class/qxapp/components/EntityList.js b/services/dy-modeling/client/source/class/qxapp/component/EntityList.js similarity index 100% rename from services/dy-modeling/client/source/class/qxapp/components/EntityList.js rename to services/dy-modeling/client/source/class/qxapp/component/EntityList.js diff --git a/services/dy-modeling/client/source/class/qxapp/components/MenuBar.js b/services/dy-modeling/client/source/class/qxapp/component/MenuBar.js similarity index 100% rename from services/dy-modeling/client/source/class/qxapp/components/MenuBar.js rename to services/dy-modeling/client/source/class/qxapp/component/MenuBar.js diff --git a/services/dy-modeling/client/source/class/qxapp/components/Preferences.js b/services/dy-modeling/client/source/class/qxapp/component/Preferences.js similarity index 100% rename from services/dy-modeling/client/source/class/qxapp/components/Preferences.js rename to services/dy-modeling/client/source/class/qxapp/component/Preferences.js diff --git a/services/dy-modeling/client/source/class/qxapp/components/ThreeView.js b/services/dy-modeling/client/source/class/qxapp/component/ThreeView.js similarity index 100% rename from services/dy-modeling/client/source/class/qxapp/components/ThreeView.js rename to services/dy-modeling/client/source/class/qxapp/component/ThreeView.js diff --git a/services/dy-modeling/client/source/class/qxapp/components/UserMenu.js b/services/dy-modeling/client/source/class/qxapp/component/UserMenu.js similarity index 100% rename from services/dy-modeling/client/source/class/qxapp/components/UserMenu.js rename to services/dy-modeling/client/source/class/qxapp/component/UserMenu.js From 4c1df411b0e247e5e612d74032e47f4ce86f2cfa Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Wed, 24 Oct 2018 15:44:37 +0200 Subject: [PATCH 110/127] check "io.simcore.dependencies" label for getting dependencies --- .../src/simcore_service_director/producer.py | 13 ++++++++++++- .../src/simcore_service_director/registry_proxy.py | 12 +++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/services/director/src/simcore_service_director/producer.py b/services/director/src/simcore_service_director/producer.py index e45903a6ed2..ecf3d0afc30 100644 --- a/services/director/src/simcore_service_director/producer.py +++ b/services/director/src/simcore_service_director/producer.py @@ -266,6 +266,14 @@ def __get_repos_from_key(service_key): return list_of_images +def __get_dependant_repos(service_key, service_tag): + list_of_images = {} + # look for dependencies + dependent_repositories = registry_proxy.list_interactive_service_dependencies(service_key, service_tag) + for repo in dependent_repositories: + list_of_images[repo] = registry_proxy.retrieve_list_of_images_in_repo(repo) + return list_of_images + def __find_service_tag(list_of_images, docker_image_path, service_name, service_tag): available_tags_list = sorted(list_of_images[docker_image_path]['tags']) # not tags available... probably an undefined service there... @@ -371,8 +379,11 @@ def start_service(service_key, service_tag, service_uuid): # first check the uuid is available docker_client = __get_docker_client() __check_service_uuid_available(docker_client, service_uuid) - # find the service dependencies + list_of_images = __get_repos_from_key(service_key) + # find the service dependencies + list_of_dependencies = __get_dependant_repos(service_key, service_tag) + list_of_images.update(list_of_dependencies) # create services __login_docker_registry(docker_client) diff --git a/services/director/src/simcore_service_director/registry_proxy.py b/services/director/src/simcore_service_director/registry_proxy.py index 346427a83c3..f507105e532 100644 --- a/services/director/src/simcore_service_director/registry_proxy.py +++ b/services/director/src/simcore_service_director/registry_proxy.py @@ -11,6 +11,7 @@ INTERACTIVE_SERVICES_PREFIX = 'simcore/services/dynamic/' COMPUTATIONAL_SERVICES_PREFIX = 'simcore/services/comp/' +DEPENDENCIES_LABEL_KEY = 'io.simcore.dependencies' _SESSION = Session() _logger = logging.getLogger(__name__) @@ -42,7 +43,15 @@ def retrieve_list_of_images_in_repo(repository_name): _logger.info("retrieved list of images in %s: %s",repository_name, result_json) return result_json -def list_interactive_service_dependencies(service_key): +def list_interactive_service_dependencies(service_key, service_tag): + image_labels = retrieve_labels_of_image(service_key, service_tag) + dependency_keys = [] + if DEPENDENCIES_LABEL_KEY in image_labels: + dependencies = json.loads(image_labels[DEPENDENCIES_LABEL_KEY]) + for dependency in dependencies: + dependency_keys.append(dependency['key']) + return dependency_keys + ''' #TODO: dependencies should be explicitely listed in the main service labels... this is currently not good. prefix = INTERACTIVE_SERVICES_PREFIX # check if the service has a dependency @@ -61,6 +70,7 @@ def list_interactive_service_dependencies(service_key): continue dependencies.append(repo) return dependencies + ''' def retrieve_labels_of_image(image, tag): request_result = __registry_request(image + '/manifests/' + tag) From fdfae9da5f41d91998e21b2468f75b159f8e4c03 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Wed, 24 Oct 2018 16:00:12 +0200 Subject: [PATCH 111/127] moved to get_depedencies function --- services/director/src/simcore_service_director/producer.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/services/director/src/simcore_service_director/producer.py b/services/director/src/simcore_service_director/producer.py index ecf3d0afc30..90eaaf96098 100644 --- a/services/director/src/simcore_service_director/producer.py +++ b/services/director/src/simcore_service_director/producer.py @@ -257,10 +257,6 @@ def __get_repos_from_key(service_key): log.info("entries %s", list_of_images) if not list_of_images[service_key]: raise exceptions.ServiceNotAvailableError(service_key) - # look for dependencies - dependent_repositories = registry_proxy.list_interactive_service_dependencies(service_key) - for repo in dependent_repositories: - list_of_images[repo] = registry_proxy.retrieve_list_of_images_in_repo(repo) log.debug("Service %s has the following list of images available: %s", service_key, list_of_images) From 3101ee755f664df3ad9d03f0cc6c44430c92fd8d Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Wed, 24 Oct 2018 16:14:10 +0200 Subject: [PATCH 112/127] removed unsed code --- .../registry_proxy.py | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/services/director/src/simcore_service_director/registry_proxy.py b/services/director/src/simcore_service_director/registry_proxy.py index f507105e532..26c98a0df42 100644 --- a/services/director/src/simcore_service_director/registry_proxy.py +++ b/services/director/src/simcore_service_director/registry_proxy.py @@ -51,26 +51,6 @@ def list_interactive_service_dependencies(service_key, service_tag): for dependency in dependencies: dependency_keys.append(dependency['key']) return dependency_keys - ''' - #TODO: dependencies should be explicitely listed in the main service labels... this is currently not good. - prefix = INTERACTIVE_SERVICES_PREFIX - # check if the service has a dependency - service_name_suffixes = str(service_key)[len(prefix):] - try: - service_name_suffixes.index("/") - except ValueError: - return list() - # ok let's get the dependencies - dependencies = [] - repos = __retrieve_list_of_repositories() - service_name = get_service_first_name(service_key) - for repo in repos: - if get_service_first_name(repo) == service_name: - if repo == service_key: - continue - dependencies.append(repo) - return dependencies - ''' def retrieve_labels_of_image(image, tag): request_result = __registry_request(image + '/manifests/' + tag) From 46515b036857778856de963c079e044e81cceeac Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Wed, 24 Oct 2018 16:45:31 +0200 Subject: [PATCH 113/127] io.simcore.dependencies -> simcore.service.dependencies --- .../director/src/simcore_service_director/registry_proxy.py | 2 +- services/dy-modeling/docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/services/director/src/simcore_service_director/registry_proxy.py b/services/director/src/simcore_service_director/registry_proxy.py index 26c98a0df42..f0e4473da10 100644 --- a/services/director/src/simcore_service_director/registry_proxy.py +++ b/services/director/src/simcore_service_director/registry_proxy.py @@ -11,7 +11,7 @@ INTERACTIVE_SERVICES_PREFIX = 'simcore/services/dynamic/' COMPUTATIONAL_SERVICES_PREFIX = 'simcore/services/comp/' -DEPENDENCIES_LABEL_KEY = 'io.simcore.dependencies' +DEPENDENCIES_LABEL_KEY = 'simcore.service.dependencies' _SESSION = Session() _logger = logging.getLogger(__name__) diff --git a/services/dy-modeling/docker-compose.yml b/services/dy-modeling/docker-compose.yml index 648d786c92a..2048a0c85df 100644 --- a/services/dy-modeling/docker-compose.yml +++ b/services/dy-modeling/docker-compose.yml @@ -23,13 +23,13 @@ services: io.simcore.key: '{"key": "simcore/services/dynamic/modeler/webserver"}' io.simcore.outputs: '{"outputs": []}' io.simcore.tag: '{"tag": "${MODELER_VERSION}"}' - io.simcore.dependencies: '[{"key": "simcore/services/dynamic/modeler/xrpc-worker", "tag": "1.9"}]' io.simcore.name: '{"name": "modeler"}' io.simcore.description: '{"description": "Modeler viewer"}' io.simcore.contact: '{"contact": "anderegg@itis.ethz.ch"}' io.simcore.authors: '{"authors": [{"name": "Sylvain Anderegg", "email": "anderegg@itis.ethz.ch", "affiliation": "ITIS Foundation"}]}' io.simcore.inputs: '{"inputs": []}' io.simcore.viewer: '{"viewer":{"ip":null, "port":null}}' + simcore.service.dependencies: '[{"key": "simcore/services/dynamic/modeler/xrpc-worker", "tag": "1.9"}]' ports: - '8080:9090' depends_on: From e5f5628152e5617e6394398a44bc1f5b34fb8958 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Wed, 24 Oct 2018 16:46:46 +0200 Subject: [PATCH 114/127] webserver needs to know about the OSPARC_PUBLIC_URL --- services/docker-compose.deploy.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/services/docker-compose.deploy.yml b/services/docker-compose.deploy.yml index e89762109ae..1f7c442e718 100644 --- a/services/docker-compose.deploy.yml +++ b/services/docker-compose.deploy.yml @@ -20,6 +20,7 @@ services: - node.platform.os == linux - node.role == manager environment: + - OSPARC_PUBLIC_URL=http://osparc01.itis.ethz.ch:9081 - POSTGRES_ENDPOINT=postgres - POSTGRES_USER=simcore - POSTGRES_PASSWORD=simcore From 3bcc7d22ca991389b75d5c81f0bc6bf9177d4d2b Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Wed, 24 Oct 2018 17:04:02 +0200 Subject: [PATCH 115/127] webserver needs to know about the OSPARC_PUBLIC_URL --- services/docker-compose.deploy.devel.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/services/docker-compose.deploy.devel.yml b/services/docker-compose.deploy.devel.yml index aa1f62e5310..f0491b6d84e 100644 --- a/services/docker-compose.deploy.devel.yml +++ b/services/docker-compose.deploy.devel.yml @@ -51,6 +51,7 @@ services: constraints: - node.platform.os == linux environment: + - OSPARC_PUBLIC_URL=http://osparc01.itis.ethz.ch:9081 - POSTGRES_ENDPOINT=postgres - POSTGRES_USER=simcore - POSTGRES_PASSWORD=simcore From c87d4193adf5b7c6f0082178d0b1ead3a0588b3f Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Thu, 25 Oct 2018 09:50:03 +0200 Subject: [PATCH 116/127] Use specific tag number intead of "latest" for dependencies --- services/director/src/simcore_service_director/producer.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/services/director/src/simcore_service_director/producer.py b/services/director/src/simcore_service_director/producer.py index 90eaaf96098..ab174cbca8b 100644 --- a/services/director/src/simcore_service_director/producer.py +++ b/services/director/src/simcore_service_director/producer.py @@ -263,9 +263,12 @@ def __get_repos_from_key(service_key): return list_of_images def __get_dependant_repos(service_key, service_tag): + list_of_images = __get_repos_from_key(service_key) + tag = __find_service_tag(list_of_images, service_key, 'Unkonwn name', service_tag) + list_of_images = {} # look for dependencies - dependent_repositories = registry_proxy.list_interactive_service_dependencies(service_key, service_tag) + dependent_repositories = registry_proxy.list_interactive_service_dependencies(service_key, tag) for repo in dependent_repositories: list_of_images[repo] = registry_proxy.retrieve_list_of_images_in_repo(repo) return list_of_images From d85b1fb6b1beea3b5056761758e97ac337ab28a1 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Thu, 25 Oct 2018 09:54:27 +0200 Subject: [PATCH 117/127] increase PLATFORM_VERSION number --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index e5415e3bebd..4e64c24af9a 100644 --- a/Makefile +++ b/Makefile @@ -116,7 +116,7 @@ test: make run_test make after_test -PLATFORM_VERSION=3.13 +PLATFORM_VERSION=3.16 push_platform_images: ${DOCKER} login masu.speag.com From 952bec3a947c04745635c899ef264510189ec9a1 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Thu, 25 Oct 2018 09:57:34 +0200 Subject: [PATCH 118/127] Modeler has one input and one output --- services/dy-modeling/docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/dy-modeling/docker-compose.yml b/services/dy-modeling/docker-compose.yml index 2048a0c85df..b0fa70a1515 100644 --- a/services/dy-modeling/docker-compose.yml +++ b/services/dy-modeling/docker-compose.yml @@ -21,13 +21,13 @@ services: BUILD_DATE: labels: io.simcore.key: '{"key": "simcore/services/dynamic/modeler/webserver"}' - io.simcore.outputs: '{"outputs": []}' io.simcore.tag: '{"tag": "${MODELER_VERSION}"}' io.simcore.name: '{"name": "modeler"}' io.simcore.description: '{"description": "Modeler viewer"}' io.simcore.contact: '{"contact": "anderegg@itis.ethz.ch"}' io.simcore.authors: '{"authors": [{"name": "Sylvain Anderegg", "email": "anderegg@itis.ethz.ch", "affiliation": "ITIS Foundation"}]}' - io.simcore.inputs: '{"inputs": []}' + io.simcore.inputs: '{"inputs": [{"key": "input_1", "label": "Entities in", "desc": "List of entities", "type": "file-url", "value": "null"}]}' + io.simcore.outputs: '{"outputs": [{"key": "output_1", "label": "Entities out", "desc": "List of entities", "type": "file-url", "value": "null"}]}' io.simcore.viewer: '{"viewer":{"ip":null, "port":null}}' simcore.service.dependencies: '[{"key": "simcore/services/dynamic/modeler/xrpc-worker", "tag": "1.9"}]' ports: From 8e81704e6b44c7744e702c615463b90e79b5f1c0 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Thu, 25 Oct 2018 09:58:18 +0200 Subject: [PATCH 119/127] Increased Modeler's version number --- services/dy-modeling/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/dy-modeling/Makefile b/services/dy-modeling/Makefile index 8f563cc8457..75de8a73d81 100644 --- a/services/dy-modeling/Makefile +++ b/services/dy-modeling/Makefile @@ -7,7 +7,7 @@ else export DOCKER_COMPOSE=docker-compose export DOCKER=docker endif -export MODELER_VERSION=2.2.0 +export MODELER_VERSION=2.2.1 all: @echo 'run `make build-devel` to build your dev environment' @echo 'run `make up-devel` to start your dev environment.' From 04c3c5b38bcd854e781430d65a64eb0c7784222d Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Thu, 25 Oct 2018 11:40:35 +0200 Subject: [PATCH 120/127] fixed the hostname to xrpc-worker --- services/dy-modeling/server/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/dy-modeling/server/Dockerfile b/services/dy-modeling/server/Dockerfile index 268351f744a..ab53cecb567 100644 --- a/services/dy-modeling/server/Dockerfile +++ b/services/dy-modeling/server/Dockerfile @@ -35,7 +35,7 @@ LABEL org.label-schema.schema-version="1.0" \ org.label-schema.vcs-url="https://github.com/ITISFoundation/osparc-simcore" \ org.label-schema.vcs-ref=${VCS_REF} \ org.label-schema.vendor="IT'IS foundation" -LABEL simcore.service.settings='[{"name": "ports", "type": "int", "value": 9090}, {"name": "constraints", "type": "string", "value": ["node.platform.os == linux"]}, {"name": "env", "type": "string", "value": ["CS_S4L_HOSTNAME=xrpc-worker_%service_uuid%"]}]' +LABEL simcore.service.settings='[{"name": "ports", "type": "int", "value": 9090}, {"name": "constraints", "type": "string", "value": ["node.platform.os == linux"]}, {"name": "env", "type": "string", "value": ["CS_S4L_HOSTNAME=modeler_xrpc-worker_%service_uuid%"]}]' #--------------------Development------------------ FROM common AS development From e957a239d0711f127c134f2b56d5c14e207a5c56 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Thu, 25 Oct 2018 12:23:38 +0200 Subject: [PATCH 121/127] Show fancy-dummy screenshots in right-middle view --- .../source/class/qxapp/desktop/PrjEditor.js | 34 ++++++++++++++++++ .../resource/qxapp/screenshot_container.png | Bin 0 -> 48315 bytes .../resource/qxapp/screenshot_file-picker.png | Bin 0 -> 15033 bytes .../source/resource/qxapp/screenshot_form.png | Bin 0 -> 28201 bytes .../resource/qxapp/screenshot_modeler.png | Bin 0 -> 172977 bytes .../resource/qxapp/screenshot_notebook.png | Bin 0 -> 110894 bytes .../resource/qxapp/screenshot_postpro.png | Bin 0 -> 302443 bytes .../resource/qxapp/screenshot_workbench.png | Bin 0 -> 43854 bytes 8 files changed, 34 insertions(+) create mode 100644 services/web/client/source/resource/qxapp/screenshot_container.png create mode 100644 services/web/client/source/resource/qxapp/screenshot_file-picker.png create mode 100644 services/web/client/source/resource/qxapp/screenshot_form.png create mode 100644 services/web/client/source/resource/qxapp/screenshot_modeler.png create mode 100644 services/web/client/source/resource/qxapp/screenshot_notebook.png create mode 100644 services/web/client/source/resource/qxapp/screenshot_postpro.png create mode 100644 services/web/client/source/resource/qxapp/screenshot_workbench.png diff --git a/services/web/client/source/class/qxapp/desktop/PrjEditor.js b/services/web/client/source/class/qxapp/desktop/PrjEditor.js index ac2059900f9..d002fee5664 100644 --- a/services/web/client/source/class/qxapp/desktop/PrjEditor.js +++ b/services/web/client/source/class/qxapp/desktop/PrjEditor.js @@ -175,6 +175,31 @@ qx.Class.define("qxapp.desktop.PrjEditor", { this.__workbenchView.loadModel(nodeModel); } } + + // SHow screenshots in the ExtraView + if (nodeId === "root") { + this.showScreenshotInExtraView("workbench"); + } else { + let nodeModel = this.getProjectModel().getWorkbenchModel().getNodeModel(nodeId); + if (nodeModel.isContainer()) { + this.showScreenshotInExtraView("container"); + } else { + let nodeKey = nodeModel.getMetaData().key; + if (nodeKey.includes("file-picker")) { + this.showScreenshotInExtraView("file-picker"); + } else if (nodeKey.includes("modeler")) { + this.showScreenshotInExtraView("modeler"); + } else if (nodeKey.includes("3d-viewer")) { + this.showScreenshotInExtraView("postpro"); + } else if (nodeKey.includes("viewer")) { + this.showScreenshotInExtraView("notebook"); + } else if (nodeKey.includes("jupyter")) { + this.showScreenshotInExtraView("notebook"); + } else { + this.showScreenshotInExtraView("form"); + } + } + } }, __workbenchModelChanged: function() { @@ -199,6 +224,15 @@ qx.Class.define("qxapp.desktop.PrjEditor", { this.__sidePanel.setMidView(widget); }, + showScreenshotInExtraView: function(name) { + let imageWidget = new qx.ui.basic.Image("qxapp/screenshot_"+name+".png").set({ + maxHeight: 300, + maxWidth: 600, + scale: true + }); + this.__sidePanel.setMidView(imageWidget); + }, + getLogger: function() { return this.__loggerView; }, diff --git a/services/web/client/source/resource/qxapp/screenshot_container.png b/services/web/client/source/resource/qxapp/screenshot_container.png new file mode 100644 index 0000000000000000000000000000000000000000..652d6ef0cfea0368f70bf267e051f041f5963fde GIT binary patch literal 48315 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

@813@g7Mmqi1R%w#|Q5E@4C?z;$Zg1_6lX`J> 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 literal 0 HcmV?d00001 diff --git a/services/web/client/source/resource/qxapp/screenshot_form.png b/services/web/client/source/resource/qxapp/screenshot_form.png new file mode 100644 index 0000000000000000000000000000000000000000..95ee7f932a6494d332bbddd471935c597463b913 GIT binary patch literal 28201 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%0AM+b4#=YihlKFE?bU$}=|3M``8s#<0x?9H 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

;xxp8mgXLBwI&Ym7o6y-mU(aCiikt2xW&WJ;(se z9@(WmmE|~uyXOs_H7VGZApr`+S9@J@p>e%cgm8c}UZ!}b<_Lowl-gQ#+{+*kf7l{S zkd<0#mNT*f*#wInB2I7zFevHE>`VQT5$bm({e|;&zT7z751OYF(}_m4YvBVxBx;^B z=Iba3knyt0N@AqgDRt~9KWDnD7NJHT7XY3MB^tUor z7M}u^3r|fg&o*aGlSHsGh97c6t)O~i=$~8qmzNy?^J&bR^p;Rmb(q^KoVZUbLHRtZask1wy}&;q(N;y95h>6pV|1Fq;CueFW#TcIzlOy4tS=u>47-s#1j4FI0m z7*8E_cxn4GizcL*YJHL)8IkO@ZDt3lqw&wqEUEhSIU|l88wjO(gFy{=&&)~~JP9uv z!N@Vj^kMB)Ie4Lbm{bV2`B1TfVvbt5RzP}d=YoxQuMJ)22IMP}H>*)J+83J%O^gTG zzyn${+tt=$)hbq!@!i$01iXBY@!O`IUUTH*rdi?LqRuqGa045KTDO?xNYjbmUz+?7 zCQ(>fff`xzP#f=_9MGDMfRv6Kz)#x4ROmlLwMt(I48X3!b#>$X81ir`-Au(7-(;s@ zt0Y;oz~kJB@uzj8$xGxd@`qb(3}ilZhzoYm5h?952@df|Y}K7f_Qko$$L%Hwzz)H|KTco{99;Uo@l#mf<) zkqTK(=Dcj5Vo9n<%mB1GukpL<#AA+vs&{wk@8LB~ehCd}z64u}J$Le)F`Y0yu(P$@ zK*-0kiw=dTg%z+#7M9rQX_v9gWjF*F@04ICO8TqgqHy*!-G#VLZSYW;vV% zhA|5IexkwiGJq%N{C-=G?Ox6Iq`Ea+L=dJA(edVroCw0PiT&Wkl%y{k!*upezCg>c z5mUg=IVVh2&)}eMk9E3ta4os9-|^AQpydMe_9e}OULJ1t0eL#u1!jQ4bz}p;O@;#) z-l=au61fyTQ2+_Du-Kd*=lw%BjMn3Qc1PNCb77h7!Rc8JOv4^LtQ#(!`H;7Cx^#-i6mSDdi~rd0z*IsS8F zHG=eaUb(r|)WV^PfVJz3shy17Pm$+&f$kdaChmAGdH+u|S*H!*F9jcAKAoEE)Ht8T zS&}AaRY(&G>g|&8E|ITwD<33No>qbpzujE{DrFR8E4QqQDj+DwG-u|kJAg-PB3#RsA&XMjE7KP=cp z$nuXyr4tAT-Yt4BCkdP!yqaeKNQI|_+i{8)4mCA@bt`FW>XNdB;jNJd=9t?W&?|7f zek&@-rp(`Ofbpq)^ z_jq59Pmuk$$>#@T_~{(_mqXSfmV3t-u%(OHz2``#b~PtR zL7J!$kC-SQhP?%eJm?Q}v$r!eP|Bo~fhW)>#&TpGNMhc(HlnyCgmBc;NVTv}_Bb9) zC_7U*cdt0#?RLN*RFYkdSjm6a6AB$}Ck%SO#!%>jV>El$#a~p+E)bW8nG9@6 ztf85k<>f}AEB8_lHqRcw@R_a6Flw#!#c zS?uh*>fW?(){Es@9HD!J1239JnAQ>)8APsNXn=9=Y{_?b-!~37VS>XO(|*i>JU8F5 z9;(ct{TNz1%4_B!-Q_MYZhOBl_bgJ0I82d$OHY6~2h(xPnHt%sKDMcAo|EBOroF7L zWTqZ|2lE{)ISkJ`x~! zOS*+6vqFpy-fh)#fbV12c3)1154W|IQv;04-xR_5b7PA-A+4{2zeur1tG&1iU+0i6 z8wzPU1Qv`scE%*66gjyK$^3UFAXDAIqxP6bw}se$Pi63*94f?IShg{++WdCUFvkKd zs@uV+J2*JFcX;W#HJWtShmk67YV_B=!P?8EwQqK&Zd(udaygxg_wnO)*D!cY8h_uc z5>i8gl!_@=20w%aVbJ_;(5?L~-X?x#|LFs|P_NDtI!)Rt*OBZM2+XWIZjrdUi z6$4*O)UHQ*Vy{xU;taBarNhFwbuOx^Ez$|xE}4QLrhuRH6VFIRX?r!#9K-x7*%IoY zdB*HK4b6^A5oX{~59s&9-VD{~t6|PT)Tn=8bc2H}V+r8NF#E=yBN@j8v{v+0fuH^7 z#|*_ys8}lSHJ4-})4iD%l+MJqMpeyZ}HXnFdeET#fa?L+6I$tiM`cB}oNIJ`x_ z-|u#L5rzd^WIsk2bow%9fZd$jNMRy);q$s=KfNi+FN(q_ice~sHppSa>iQE5%1Zjcr8OQSO=J{`OS=@%#9XXU?vhgIXAk7@#rxh>ki z0`qBTSz%d^Dnr!SLa7RM2=Qts)Qm}4{-~aRgPMuH?39l`k^-3cCKYVaKl$LEupS*) z1go(Mqhn-nW8+~EXDgMo^pR+bPV&N%|1+_EvfQS zKIR2P(>?l{X}+`+Er@zYn{wcIP*IXoinqt1$B+Ag4j<@F)J1BQP3nh)^6!9}#-oDD=Yg~yi04sueLlIQ94<80ls#RuOZ2Iyv1GQiZdsXiUIbc*&EFQnv9`2f zQ)mwaigvVpF@(|WkM5pKGvCcS17lpFV;!0Rv}jULR-+PJe5V(a@L9_wR{V41E?-w& zLEhD~?T^l1%l+z_8Ii$xsG`a8!gz1U7LfqSf=Q$N7TBRq=-C?ZI))jI5bPa73ur3=8Z zqW^oWE)^I04$|nPh*^K2G2CmbrJ4rSNXhiy3k%8yYyi*&Z&xO4uFwExWpg{>gn_I_ z%XpuEt-lUTx^1g&z`-BNxJqPqG9vVRkd76*l^6-S)?`eTBN%%{uxF3I40<13G-Aj( z2nnf+6`$0zDhXK(FvDgO%cHZa30JlT-;TeVdntQ+&)?4>}(`xT( znzx*`s%$ZzT!Xs-dQ1NAgV<8%!>k`rGkH~7!>{NE=B@N`epg`(4|5&>^)POu7r#*6 zgFMQ+ro;V_&$SU#Qm~-cG|C!*P{E^6{A~n48ha zrVkbB6I{A|XOPFwv#dYpe;ew#q_~=l7rwG`D+-J8d48A!rpjpJzrFtHQfnme8v8J? zwXi2{>oijIq+Uxl0a7b~oJKqBzJGbccfah)4@5k=w_N4y9-lj{gwx0}I8jz$XQ;He z#tu1Mh85g{~h!*gy|NYe(Pf|@g4~`=}!5&34I4NiHfv)x6u#d1% zf7-!?9DW(fno;19b-y&PsEhv{r2O7HlN(UManJr6JufM#q}R~PQ53Rdj!>%Uc!U1F|Y_-1B`D^|`twLe`iO3ls zqqp2)lU3IL@cc+!K|5%J=BdZl!Cl`#eUUu-@B87@45Y?+yaJ_r+4%0;+#S+KBf0#G zBLxnhDm-p7_qEVlwXMCGaq#Gp5d3iVRmzeaAoIfY$^w2WoG^ZlQ~s zL2HaVc3d(vPD~N;L{Gh0|HvuN8l0lK3?83=&1v|x{jl*y2UHNu6L$Lky~^%3{g3r zL(<-aCh|_JH8%hgZH&iqNb|!Jz1O!D;??G85QsJA z`mG}8=&)Bq21avPACsELGN)ID7L+XQ7fHT>%)NIR2NueGqK@?pR__Dcs4J%T^K_3` zcRs8ah0)})lD!=KjKj$3D2YRX;^z)(;SOw_86)SZQoI@yGvfR0lUK^h$kz^_A8vsl zxk+>B9yK%=d$jr>4~GFkeo2wGPp=Ny2lylJcQ2MsA*o0HGfFA#)n?~JEA-*G?`EgM zY6DHcvfu{=KOC?XXJLAm1;bx1=a_FLIqDixd%6@-R`K>U43j`WhWdqB*!d4>3HliW z-xRwv8==M#8IkC92^A zUUuG^uKC0_VE-sc9l~4%M>HRkjicvllnqv;en%^gM~IZ>RdjjgTj0gTyeL>A-ih~0 zw@jHaqlqfT<#*wSt{JLMik|~a^Oil|{Zs3_EPF03v3HN(9h&)!g9C7>oUzIbGT+E1 z6y>>+XT;fzMg?AxURucMyx;vgm`#Gr)&Jfj$X^0TivDV20jceNy{9blD{qP>hWop> zxBvBBO=IH#PJEF(+->mV#uWU=>wj)Iw!O;*xY_pB)0F$B=2I0&!m{;JfKW0J>jP$F z96C*E>Q_P)4wR5<=Eimwv;%nVVV&qzm45#T`V=oO7AXE?0R|_gOaiMr6l$@-0#q+Z zqyhly{nqm|EiT*)6}Xyi_uC$JHk|)qSdbl2wSib?7-P+0aNnA;_0f6$az7K3S{nPT zgU>r(o%Q4>qWG!cUQ`}JKBh8Xzp-X-@|o3FKr+~Z33(8>4GS$!Apsui^WBoA_gPph;gCqJ?>17z@ga$82bM)+wa#w zz55R!*mNm~hI4HW2<#~*5_e5SPL~RnM=D2X6nB*}6ppqkhc>$vSGmnUzi2K!{_4GX zwE%-D0nGRZ-^9&*fZe0I!~3d0B!`mKQ-cv8j$?*45IEDWp|v#|&tzW_Z!*w;3vag) zOKKadSt8q>f4@J`je$x`1z z+4{krMFy7vdxx5Ub)~@!uR`K7}m$4RFM!UpY2+HbKmFp%`BwyGruEf5TIDce)?acRF6*Jl>&Um z1GYmM`vbhSAh*2@aND~gq{yqOMir0Q6dP+GnS13l99qgPJQ-MVsk^lD2E&$UfBTZ& zn!eG*WJ5O2sNmyECzBAGP)rh3D}T=(BrN_YspW>9%S)_K_5BIu#>4L z_B5tZV~p!1fB`EkJYRKZ;P!vmW^|fV^)q_V-xk^;WCNqJOunuE{Es`JYx1Gdo7%n87p+SS;@ddK9h-Yc;OwANbAz9?Of$rcKhyAZ=a?_hG*x6=BbgilxV6;4%iJ zS$sCX)p5HNBUgvg0FCpzpw}VMpc6n9JG)#wF~RH6SCIWOrY-el2RL~bj}BVRF)ybv z;YU-fSBhMI=|;JOr+6XxDUQ7_ARyv_{u|}1`a2s z&^PKPoDFxUnHpOk-l<}DbG-NhA~A?GsYClvas>S$v5-@G0iARG5*B9Lj7A%Zb#aQl z&}O1n(?5mVtI=?HNtuex$K(}F)^Kp}NCgWQFf{sxaKxmatvp zxaO&RCX3dagRE=UN7wC{WUzGPr2GN=gD@0S)h$Z7rjdEWNEk=zD~JQ@7R51l7R_Vg z#9x@zm`KPym@p3wtN7`BZq}Oo#@L~r|Bp6Ku{o2q_Rrj{AdNZgc41?|T*dAx-|NLN zn)T04CO`4U!;$3M*cbdqS-DSL?gT&&1TLYI#G#trJ|j{7WQ>i0M6wsDuT`NjeP%5Q4syYPhG;8+)h=R77=eo|IJdlo9FTM51ZX4$f&?J3(g3CPmt(uGdFn;> zDGuBd>r~PmmQ9nYgHRl3TdO>!np21tGvZksp+yGMzY?X)n<}gK`-MX$+B%K?B^>^q zauDk6i9uNhe2D1T4&#r_)pk!P_*-?rx(=V(aju2z7wdm*0Z9NY<0DP;*l|ba?3cm+ zhyC?GaKUqr46u^#a6r#{0qrGoXrxI&CO7);5PEMLH*a293pMzDTR~S2@X0)LCz~u} zf)-WojyeLxz@0GzLPvs#O=g}krm<^;@&R#F`)l74Z!TzBE%f4SSL=07Gry9?y+oy? zcERHCx>y3xUiZLbN^97!@396rA6Ec2Wed5exLPwXiv_XtV()bA06M*9^p(&eRHK^k zQw%_J$&*i3A>W~SoY8j%-MblrDbS$9F9B%5N3P07Hslsv#d=6VJ;g<>lIHVxAH{kGLRYQ3FH_6^ChQ4L4$hFxxX* zUzP4Q7RaCPQ`Sbci$KPFY|gq)F1jO~h5OfQYg`or&98D+BliV}*f0P+70Gy9)X+I% z4OA3=B3A>dMqX3H8Db8tfFcQHw};mX55L-2PG@ru+CjVHqYGKcfPCt3To#MD8kqE0 zl+lAHj0jMzh5k~Yea3eau$=uxq6iBeOlWCy3Fd-i}jHecS6PEsP&X`EN57|J3OQaLMI zsW&zKakiM*V?2e~gMdxTy5#&!==8+pR)6~|DYg$FYpaL-VWWh?(y!#Sfuujo*yIW$ z`$iq0qe{##=&!5+RakF40bA>DVV1DfvfiUP^{zB1PEAcs?oj`xk>3-v^9CcZx36hx z1gs6{AUJ8)c%0nV4$HLLekxvkpE26D09tQw`a~m_B9TLLNVApL{z(tcyjDq6S7q?;E@lbAOwp&^C*rPuN$ia84WzN zdYRY8UOIkWDS%S{Iho2|D~_yZp`55Q=+$wz^WA62a*A*SbOkZ#UmjipwGRYxDQH96 z4xu-wyC;UJuB10w;mZ#w6z;jr0IFN{&yFoxV`*bxRfg_KPMK(g7;hJrjbw?^{p!DX ze!y5VtZbIfM2D4=7t}mlYr;0>s$rQQ!|mk}&aZI<2uvGExef-(4@P0R)MK-^ovL|)84WD0rWBfUh56QZOeQ5^VA8m_KQOoUWBY_AUvYu?J0WDhZ>*&h4! zThs9KVUFR>^7bqJ3g5ko*|i&upV^YtoYpFM%_6K81mKqufCi;26Nwj05~?Ug?=uG$ zB?dZkLeuCL{lEH;?Z+(*z=5-A&HPjJMnCDbnP73o%p`T3Y6OMA5PyrcaEAW)#a{XO zsl3)#sJF0f(t?<}a;sM=l#MWgPxgshOmjO(=v>GRhqOv=BE^eWJ>Aduj00E z&T00G6&j^^Q%~ENLK0?;k&l^vfE}^Rixhi-5#hF7h_OROM@6EVcj+NM@NM<}Y8V7I zMb6jp`QG-KRu+0+B=N7AmMJWx6V6%AEC)5(xnNL^xjD*L21VUJ`Q_?z?YW%%T=wIn z5U7s;Y9m2XHz3OECjzmb>|}yo)L>Q{*wQdd3)0uKOT%^cIWI=1Q!*3@}!u_xHNc5rvM ze!6P(1yJ6Q?+6V6G3M=$C8Z+(9IVv_F2JH=n13a+)jdxAohdJPExB}iqzQQ{kIUYi z0L{vKCQzfaQ7FAzA`U?zGsgHWUTSy{*M<|UzKs3XPJ|q)6?9n3r_huO<*R~2a*5aY z2%#iPfcAObrX58{FqBj|R*a2wn4Ypgm{P?cPu6bS9xP{jXyC4Wz03}Sl`Vr)6Fx#y zxm9i!>q|#jMZw1<^$_n6T`efHgtjh3gLlmVvav{n{&fe@3V<`HWR^;5!h5k6`lWcy zrOt>Y<-ys&5QIp?=8jl8NL}W2`GKomT|qwCbRFG)@ z)%AL#eyWM?fMbxaw`K;PBXexkSFDPo-1?6tosz{OWV3YMY~_i|JsJNa?3Q+Mu+pw``W!^< z>gsZ9NZ1n|)Tdw`dVR{d{A+RBa2%qq@^PY=1rT;^7Bm~n5lFMVR~~D!YY*ymTEEnD z;T!o@Cw};0VfyP%Zn^#0@KhyZ+b2O#S9{8i;4G+^V zfLI{%MhjxvTv{RPhtrh|#U-Q*tx|uTy2-o^>TV;ei2mLZe|ELe;%4D9wGfqPdU;&BGtWK@UA{-ctJ#E&W6AVl7s_~EL+rFQ^^7P<7=Mo zXX$&tk4*p{+`vg4+pXC4f$FKSmpzEg*H4qJB%23oQ%iS=*vLDw{hhb{e&PN_PtU%X z3C-T`hRo%zyg{YcR*fC>Kzp9zKYyuk-TU;|_vMJjKzEyStawuKk|CC2^L6S{BDq8Ybmf zD!1%bVu>dW-RITr*E;&24|}7m8oqVN7pH5(H=h>B+#9-8N*g_?;|ZzQ2V_MKySW3> zb$)txW&REo=%LuyD)-l}d0WjDfTZ+B7^uy#E|G+N1mQr`6f-^!n$Wu1dE4jNmB9d& zp|4SGoBK#bC2-O^I`oCI#3om>p}+6g!SB6J42U;K0iAX5Uu2V99h+mtNrViT9?Cqd z$>gzF+Xw^Zhtb?Lh>PRY$E1{25rE!Ou^-k#7;=aOj4QoRQGDc>V3C=JOe~*CUk%Yf z90;y0vn16`hO~ZaSAYHT8^`(W?u`nN&sX4S!lku86?yI)4AOXLC&PvbTdjvB#Bnii zz{N$T>Xiyz*%vv55#P(_SX*<|7ruithz|%!E+sfd>@>$*QDXxung*2s5q}J+ieYTC z$=dYO0>At3xu;V;kVuXJs%;b6kT@YCBejrv(gFi`{|kI)1({H=ZHv zhd{3g{#{5yuS(e(TOgntyoX6G*U&x~~urRJYPZpI^zaOpT*bZHGU z27TAw*`A0|TzxUHTdRy{On$<9zMxkI-VkQwSgksK7sSay*1)LepQcp83 z9MIbHpdYne02WOHuB$CmI7oYR@O$LKtfqB*7ffV>U6yyl4t=Y&0F~-2UVh~{6K}m{ z;oaspa<1J7(5!3Kz>pr^{9{puHm*^resU^Q5wRi$TuN{q^K5}^)g<4FaawB8(>kCH zsgb8wIoJBV#kln5a%PNS#xc`ladEopPfs-QTY&k~kA(vS8D6;moKg~CycXKBh4IAz zwnGn?)g|L~tIF`6b#5Q*Ims}7O*ATsnj{qg0>((pL}42`wobyc3=FI)+nRnN56^Blm%cc;#H4-yW4Lkm z5*UlPZBM+*JDsa8?+%R>Uwq8r7ytEe<=7w#3jhr<;so6TybAOcKJ<)-k0iXrZBqRz zFu;mJ=vP8kg%+&g_xu2tIrR{^XqCOR|$8s-|a>7mAvxCME0LiC}9|8tZ(!0gtbl+jh5c;oV#)78k zu;lYN9o=h9P|f>UC}Eycn?16)qbDvdWn2InAq*K}If=jqj62SS!20nrZCdaoLJ@5e z7N{h?WU1k~qsFcchv$WP{alW-=p+jH1d>FiXvq221w@l|fXb4qlKU&ryW}77BV_4; zd%VBbl7t&*kZ3C2aj7*xC4s9Z(`9LI--bU)KN!sYi`SM0bP;Mc$;J*p{;g}jh3 zH-t$YF8SFht5;dR7+q8?RZ@Zwd|BM{jadhvzQN!&{%QQr>e@Cb6FHED42n|7!}L+TD$c*RR%KH1s!bHl?na1L zo+G|PkAQx7bbo>rhI8y`+o;# z>4${gJr2y)95|o;;hzJBk1hBY+!7c3A2<@5B$jIb=Q5&-X1Ski282)Udv!1IQ4s># z^Ga-M(6!0x56*x`${mEu?^s%e&k$V;KuGH}q#{L+5{4-}0Er*fAH9xy0tP6x#>dLC zg~mTE_@yTfCbiMc7Kf!JaBrf}2r-Dp^N<(_1iQVxS|S9%a<}Ju*Rb4=L-cyb9cR>K zn9bI$?(V?|MN@cwM6A9BO|wvtZOt@uO~-)5^^rtxwA8{0MZ^_&yUUQJXp zujP!R>oXxqr(!!=kT85gdW!SP?nQ8xu>uK&fyif-dMzg=*p~{2t-HJ-auEB(g8tNA z^tRCMAugm~a(DO&S3CLKnhdqCscEL&L}hnYXO__}5_HM}<9Uy(qmgt1skKtE9!@B+O>PdXGc-F#_hx79^Ju z8gmG2rfJGLC{0OAsa)m^PB^Z6Uk%GA^SP=}^w$PbTebby6KNn`zv zthWSSCHjwGJUkg%jnXIQ+h+8IH?JngCp@(zh=5s|i;w_in&cqAVJ6_b-RWsAG ztfj+O&F{PxY(dzfFQYGt%vr|4WB04#!ZQg_`~Y!&dGTSJVHJJs``2W$G)U3~Q}( zD&c{+txGy(ZyW$YTm#UxQ#2_&uWc^|q-%DfBOlDDY#&KT0htZgNks2Y>lY|BnVnv; zlUe|Zfp1nOo@1f7BzwEXtd1G(<%89)0gloimAP`B9WFM#yK0eiEvBXxTeU)ANO9aa z(-5fpj0yCD(0Bj<wxXal=ugbCfJP2*dad8L!5-TYY z#6$SK#1mpB-RnH^0i*(ED|wVIk&o=W@}qPwbpVDN(S1f({?J$}gX8t{3)x3+nX`BA0; zXpfdOuug9|Df%@AC4{4!<|is;A+wJbUdgapo}m))t@Mq$Q(?dmD`Fz2hBjugtvtX> z>&n?~kMXwKEfXU7Z8-*fM^l)`ql8iiz^0-*+Bnw|p??HwF{XSVq6vajh8k{3xI=VR zxm<=F#uEd#otSr?A(qdI9p=C`Y4v>WxVpqp%N#`wZ*?bY zDU~VNz+5CSYApL~E7U7%2uQvV-}@M)`Q*FU=XHH_d-wy}PAz_W8dWnG-T-uG+Vp|) zJ9y(V1igORmjgVfmRVYLyZ6$-ssG4gC$L2Gcw9@Z4(RB4pPRpa9e8)q&~a)BlWg<7 z`5?R&HRh`iU|?(&ctbwhlZg2=9$Iw=hl`2&-}|&&!|WbGvIxy;7mF^BkYdVaW;&mn z8Ai{50#4Nx^ZQOjO1GrLsFqh9Qom?HfP@*Cvv{Me`(A_JEW|cvK&{r-0B%OGuS=7% z%7^McD|SG+z;&!;%EyGsv}Qf{{;cY)ct`X`OD;2NK8?t{Rg!}HCeOYU541+I|BQxU zxunGw|XzB3YjjZ`#$fD7E`r_EA83L22CgO1_| zMNwR%j)sF_aWDQl3`y`+F@i?UM(X)SJ)q_j*TJ{}5}1WAc{|U+Q6szaT3Te4$wH1` zVp}qZGceE0BD0{RnUfExxcgC>ai)w&c?a1U*a6e?a{dqM%&eR5jEVN5Bu3hEKtI|4*lCt zeClpfVe`KFUq8{lU0lukas3*N$7f)xo3i^({TKJo^_X*x0M)Rf83wg@to=53|LDTz zvo(!wSnG+dsy?O_rPd}bqn1ahVLEcdo4j#K3POTIHTNhzm7Ns22dIo8xr%%Z~#c0O0b;4LeJpR>2m~j_5}T6)FWP?QP7K0Pf|u zolvM}A|5td9$zq_DVV=Q`Sl(c{&axdG(S)Q>yC$?G%%sHG ztW+kCsFpXqV^AURQE_EF8ZxN>0P`{h^Vo_*`{uRV$8f(n@2dLS&l*pBg?W`jH5OP; z*2flMH$Xq$R|+uR|3litT^KD;DzC4vmr*ai;rD~LxYKD-)5Ai`Hr! zM(@u@@`B_R)Hpe`XDn@&yJT@u2z3AtidSN)Y!7fXjzux^z)OCU3iUO)vp{*nfi?{1 zBAeCCRj2rCy_ZxIhwjun@T~p9x49OI(p(n+t4=0fJzjc5@Bs?a1bf5$*gm42!9ntM zm-o>$Id-bBQKLq}H?|#sI%{VPqyRY(>II5(`u71M{u!hqR(nU!96{7%xx3k}k8&vY z5*^Mhxli{T2R-EIS;u$J^IRi0r(|}2AZAZS4arS$zb`G^eX}%;C+c_-p#DpGB`Zi0 zwdi}qlkc0V;2a?$jRt!oU2r;VT8JOD*~>^@O`EM`D~GJvI4ejU{Lz-9dFh?ue#*w2 zm6g>^EwFP*2y%Axw(?#1bY1|!@jIgjmTi2#*^K(O;2=tPg@ zW85hMpm9FsJxq+|qp^|M-J;%96d?gV51$<4Q&`+w2nL8fh_*bRqN4!KO^bY~W+iVW zc@$mCQKy54o0!ea-L>b$JB(`rj|e1SQXQ2KxXx6%H<}nE7xYa{f+_4{LTb^(<+dsz z(Owj@1z8=&U$|V7M=xwiL-f8+VgkX zKxpT~d2PX!Vyp~b^o}j9taN`2@*a?tT*_AXI{#$Hpe6PLzxG@7+KmPyjo$CvGcNoQ zmSjIL_)w9oOYRZyGT;kH{S$&d#+w3YIa9(^x^l$eOGA|H0PEn(1i1P_ECMfEt>jm3 z>X`Ju{mZ-yR;b4qv)(} zzu6W8`$2;l98*>aY586=0n7qJ=Q_>%$y2BQ%ng| z5u8{w`O>&#*m{O$RBsc-`NTnIKd=EINZfz#eOe2^uG~m}JOt&!jXcX09~2g21@6CR zZNbIH!OKhTF6i*X7amUg?7FN z8Rh)w1jiLI^V?ig)pd@ZJ9KGe5nENc804XR$$J0FWsQPC$xfOk%biQ8V zu>bHuRf2L?YnT|%1n*Sq2qVD)8$=lx0}Hia`yGo$U4W=cw0YO2(E*|qlyeO39%CH( z^ny=|TWR?zBBe&XziQLWz5a#LJtp{D3O99vAmXbqSq3bT)W0UC4EZBWrNS^aq_*k9 z1DwRz1i^B=VW@U4`|n?Ff+-{i>meTyb$Bhi{=f^T-hZ^jyi83=0Z-BgfC75eSfH}B z%P$TwM|z?^jcdrUOBu#?a?E>3R2Rk=`!jUaxm`33B={g&GY&O85kZ-Z=SV=r$XTqe zA6*h=3o+?i`kJ)T8zEV7<%ya9BjpoD5gIj;dWm-QqQ|L@^Mj3;jAT4w3PE@Y%OCi6 zI*ejNExpxQFEl#$f(YBW-{uYuuc5N|t19i%(r@@2Tui`Nl-QnZ<^8oJhD4i< zofw0LU#y+qa+>C%qtq~jX{nZ*zBmN>s8NU#xlR>Gv;XM15W}=bTNL%(YYnKR5^+_` zreA)lkuJTE2pYqiLUYe_g%JL9aP!fWppJ`+v!#CPeHbU~SMkU9=J-3ixNty=RFQ$? zy-dNo_#oXO%vMqrFf7=n3?qjI8e^6?07W#gQWu>JzHQRTV=fFnWiE}u-1y~B`J@ORrYnpDo6z+}P-IDO6 zN*|f|nAuCI6hXiW6Z_9jb@Wsd)+O^Lu$*>h)}o(9%#R4u5q|dc&nfSPTwp)RUlmws z{5CKZIe2%2o9XJ<>KQ3~Sou8zBY#zFK5{72+D-J17U{W7u-@3Alp2NmP=>9G9GN~U zlS64`0&Hf8vW41prYWaqW5c3($sbOksdp2~R=SWVHweN)-h8_FXGk73`ua3sNP;gt z1fjEa56gLPW!@Znp2Nw(@3jPZHe0YedKe8{V}$h0tS}GDPh%&W!e`BUOUS!U)Grq8 z-ta8r_cC_IIL{FEAacE^FjqFr{{8uCHHz*wU6SK0q~`NlS?th@2R(oM;bNu>sxT&Y zr@b5UOA-bb;ZDxoyUsO0FYS-; zy4PP{uKepi*Y@#WZL6gFHqRtbwQ2Xh_=MV(D$)J8#O8N!uAFIFoB%&>dN|vhYD}xI zjNTBJ78i1xBwV*p6gZ}O*fc;%Z@a3`a4@x2HvEjx`yH^fzPjOhC#r7daK9bMR1<&O zyHXy!xp;22it5@<3ZaFUp16)nZC#>kl^c_^*yTuws5pZ|k&dzO0HGh=`Kl80UM|s& zGXjKd4oht#_9iB5!)lSUOd==*NN0F!@wiW!6zZ(HP6c9Jq zlxFW+UzZLHs^x5X9?srDPJ1dlF`4!6Y zi|EpX^CzFqrkE`D;BW+uz;*#T!VfPtyK3y-?-CwiT*@>WzpCP5oa7UzKHGaVGT{1( zll=8||BemGFMc=9$tc~WmaM+QS(tAeLu9VCUQ#lA!l=>Sx2}|p!>x`m}EY zg~HAi3)u08Be)1W!ajxcn*wx0=5Kiz5wf4RAr2ruFBynR@b$0N6i=>R6=A+d%5FKW z-#>s%IlArIDHRwsl<0seoc3QLaBBYGUI@rSH)Yp{8t59mKzO#@w>a#C{;W>ITvg(A zNE*-PC+~#Q-&wZPIWInJ6Lz9+fA@vLImOJjc>?k`2T|A)ZW8X+sDAh=ls+pE;)kz@ zY!DBsZc0j}h9y|_rcUF}7YXP)hmSJ4Zg@$S^G5mIREWA{{dIGN8_XYL{~jLjcz9RDVvAAB;h?pg+>oY#fSdGNzd1%zp~4lr9)c<)RuR1`yH;F@%tmwLuH)q?66(DQFsMA68`^mfGXt1#~rahmy3s2~23)VxX zM~o#%Qc%oo{(wPa0vfy+vUZb<2|4bDw%ml#_tHD4X4BqPO^NtN+`rd1VjrSnw9xXd z40fd@Pu}GZY0dt3FkdRM#QwQIu9S+14~`Z100G>AkNQp2yM8rExs&Kz`=TL8F56DVx&4rK3^<_y zV+0yY3Z3yndEr4w^aF>q>9q!XQ2q@Bp*Yauy{T+UMg^r=r z0plw8h7)mOQCKiAZ?os_@l!>J^^OJ4a>-Mz&bINzu9XAmwL#1E2H}z7r;EPn&*W=@ z!^!IbXAfuCG0pf}b3bYH^uO*7D4kfEIK4qqwPTGyVc{nFkH0cO`|IZ)Loi*LC9guG z^oZIw_tHyF?S$*^Fn{3VHCmM66Qh4d@?yr)z6|5B@UVEV89;>htdYt0Dm37$06K6% z-On(O%rPV@`^`Sh#hMd{lMpl93Sq?QYUwZ~(pAz%aO~xR?DX7tH)IZ`XLJP7tnshB zNr>c`Dx^5lgSWpJ?f!KB8ds$#`4tuG`pbqvD?;3FlZ99c(T_-Ih{b#8q-p61oQ|a6 zs=)Zp&f{NxAsgNcA@Z z19C)gouyHiv}z;FuPh#! zrM$E=VMI=T5q%^+E|59WSAN=c7UvQ<&GzE1swrvX*sMUQK)ed@@BEo9Q!?*UmIEF{ zmuRR(BS;baKI-$`tjWqX!>8rKz&m)6?l z@7{xcW5vX@%v^bvaH<-sTwCJ4`93_IFYxNLdJOeF5|t@4swk&+=&G z(Jp|y-eDVD*;b8wpA0`?An1X0s1Nze zOX76nsn8Gyjo9ywtz`2|i<$O8(lyKb= z^OoXtD9&R688vS;#bYvz&(l^3>3>RjXH?mC6;gJU(SRD zrN2aM6A*$>J)Q*cR{8(;TV({fTbQDZ*X>T{9ly%CW27S>vJMG|4qihdh&-wODO!YT z?esF!Zs+-O$W4ql%AQPjd|zEKDe^=>5`s)bn;}g0GZMFPunBDs_F$L#zJ3>NC4%@t zVXOzj_EO)IiIPC)vyssm4nf8wKFV;(>fYRTXF4d;b`Y{#c?Z=~q;~I9Tiv)sW>NOGqVeFrGc&%gZc^Z(7L42Ceu`D zZsm5{V{mE_M_gk0M858oCoe)=typUAna~N2nCWcYjPaWqo~PeZGun0na+;PE43VDs zROc5DwB~r#hPrwL6qbwhNXLD#{q4nM@vTWb7Z}-Jvl2-qD%tKURlxD^&bz4@emeMR`s|%?oRsTs zv*HxLz$U4FGs=%^`o@K+B|7u}MB4XUm)8HTjYTs9Pm=a>yL)5r-FY&l8<}o$OGBGq zgTPArO-Swld9sVCw(*qkB z0#kr|1Zl9?78vs&+_c2>`L6dV!1fv69vRJG059|2vp{}=D-3_hZxMg)=~+eD=7~!3 ztoo>MvSQP1p7t_25y*#2aT+uGwUgc(8mI5NaQT|F9|Bp3vpk@lqZ53QB0i|z$!ZsM z7UN+^ID@Ow}m zUmZTQS@VU0-kX#Q*>mzm-sVWfboe7H+_~Ff>U7kvB?1_%TH56@`TA2yt~-- z6qB)%X)rPE4RUTD$ZV*0sIDb5aAX)wj{d#3g`1>U=_(Ba%@()-wW75TPNa~-fa>VP z`Od1a<#rFt2BY{Fy~IFkIs&oXz!P&7srH|MqYK(6eXhW_1}f%yNvHM|Ak{UnIsPD#_}gY8AJ8Oh`y zgHe|rrfC}N%rjanx4f>fM!zR{T)F|=?+m9k{IP?hl;=BkbJw=;cs0M7wo@XKwx@0 z^0P4~1str{eoyjP1l?upQK)o-r4jgZR^kf**MlEdd?hZ?vONs*0J3zW?O$k{loQFwF^a*EFafP#b3oLoez8Gr9yHu1UdR(MTK@=}Mq8?fb<7ylP8 z>x6y@IdxuY_thO=MK$zU4ev#L*0URk-cH-g@3=@#@#=3dV8La?3bPSp9e#p{6=+Or zp7@M3`ib)x%mps)x0Os^rVrI%eA%?G_{7C9=wbgtrE+HTgFTc`mrAwge&rQ&Gm?k& zd7UK^h0XEN(ZkKE`vTF!8YcYc9$yp1a<`d9_iGyS7Tw{Ra)6zLh+%L*?JotXTu*FM z2iXHNKWlq%xB%{!50zop1`kv*Rz2L?!cem6CRFn4d6$;T{d6!nuD+X9TFXMy7fQs~ zPDRYTi?_<1G{bR%p`2%&8WMCj{r5ltT`$3JmTjR@z}F zlFY%+OxQ?26|r{PmbBOWNs=f{=2^H7!uykNY=sqs7;eQIAEOazwtQb7F zH*;2`6rS6}$#VGOzMr89eH)|Gvb~X+aFI(q zbENMwA3@v2gwOo~)1z&8mUimv-{a61)UQ7pdC1&cys1-#Hx;4f(Q>?mNGy78rEQ#R zTG3Vd+;`zpe!#}I%J;opqe^yVSuV(Ix!O$2%X{tUyUWoe6^3*FqisHK7~jaju#NFv z>|f|nsGAnxOd$R`f$Wtk?)~LggtplG%E}fF@uSbeQ?vV&qD})D&BHV?LfwUk`UFZP z?5uI>Hsmpkf?26ADuZ9)qhU!4JGUEkuHj}0?f^NWt7E%wSmQx$H6)#8)ZW;DSyh~x z5fA69EK`kyyub1BTP$u_M}f+fKbrXr&t!}P@;82ZIvA;xtgDrkG9~142=FwiAu`&% zh^0Ses3kdq&zCT`uNt-l$da0EuYW>07c0CnH$ZVxnM%Hkb`3AoxA~h?kM;SQ|7rZk3Mie)q;!Q!CoMGzI*TWjCxb{4 z7_)T#XgXLMjz*09>9mI1(vPfRKjHpgU8S6y&EWE~U+!ihu$~!S*_$jWk*S6tdcy6u zXa1n(wtm9G#s;~8i|@mB`5PbipB)SeAL12%3JBiV*f_v_IKthy)lw6s?|nLTyOVWa zBJ6cmoPIN2B({IC@BNY7|ETM*rMtWPjW{5kO8zx4;Ieet!#^J;erwj?yw>w3YhL#a z@%@*@e_6!NME=2M=$k&amBs*m528x?5J99(jPRZ|`EMj{z2(CB3EVlY7zlC#-$3$B z5c`5wM!EHe+iv$CNpc%@rt3RBs(}_v0qtO<2W@f3@%jbA$nxSUPEA$+8yu*quejT|3nzvWLjh>>6ombH3AW ze-STv7neoPIUGc&HqlVOvMVjV7LpNWO(6!}&9AL*;R;R3B1zux_XM4oSnuxs<61Mn z5c>SsxQxGPS>RWVY2lzEaZU-xJXmZ|%&ke*1%s0UI(n)6S7n}jcXM}dxjF1GS%jaR zHKwE-@wYS*1}1m@bo4tlaCvDA47z-5MIsm(Qxj){yFB8co$v1M4(uJh)6(ba?5xVN z5)z&v#@E%Y5Ls8;?JxOtwEk;fS$Od>bJOy!I{?f7`gGH&Taro;Ox*A7JGs;J2z$Y6*h{L%>Kmt(Am)U>s{G?MhBh4*+4d(_&5Yzd(n0wX zg;9iv^<+BnwU7%+%+fELH*Vj2ZRtl4w|GvdA z-%ABc8uG8LoVI6IiiZysef~@UzdQ6dL7-Fp4j>Hd_eWZ?wBNley!pW>Mw2u4aHeKL zKvV!5&iRhSv2?Qt|McW!xl79BHjnDASlDSf;AR&=2xnOaW0g zv)}8YSnAv|CkjYgwS-%izXY>sx3+PQ6vVG)NHl%W`I(mE@13=tT`PB#g-P;_JjXOe zVfb*4t7Oe{pk5+N!7G^+n8Y$4M^J;vxf)EDY#!RKbVIh)13v5dK25+sFMPNFRBTv{fx3m${9mq7a-i_Y4`u8^0p465tuc13))AWzs zCzmxi_B%VywGuo(^=Wom2?FH4_oWi;k3a@-!ue7t$V@mHzoLKXGTL3~vX*c8g(m;T z&C-LP^XpY7ZH*(@%EP@qw?prxo7{iRpcLgw97H6dO`?3RlbKESz&Gm((gM2yL7lv! z42l?L1EdTp6_PA3ABH%5=I*}pQzoWI=ue|g7qCk&6UV8dwj%qC65+H))oRcPkyH`Oov4u(0s;x%#OKmUnIlmK>UO?%q1GfML2QeYls%zG zx^~)IX;xBFhyb@d56kNi-;`emJK%y#Y&v;S~1^pb~r!Ogv+PRm(i$7Q>wO;^g0&*s>{q=92RTo(%be7K$z2OILg zr+Rxu{q&0L;dbZ&SPkATs#BNxmRCZ7kY?^!kp8JBz4Kd`=*-Lvhdx2?zxUFnKp{Og z^2w{-98iG#xefJ~fZlvM=hr8K7CvVkzpuR!y$#8_%fBD1&j?8<4mwjfMb!`Z8*57A zw;|Xu(Yvs`806xE%L|;+YZ93_>9D_+mKIZx=C$iV{W3T-Bn+xN!-HD8QQ<$0rQl9M2HP0MA>49oB>##$qiN(^$36FJgy z-wXy8a>CA#u;ItEuv3j#L?maWXCUl|^vn!G1Po%7`r{ieaFyQ2=BviUtO5*E`L5@| zrB9bXVbsZjcDP27OpzxMF?WJJUzom-v5O03sX>pDqal`{eG!{~qJ|m=yR|6)B$|yo z3C(Ikm-yOknA`3I=@uZQTXnE-FtZ0X^`b_vldR4Aw^J>81;3sAN2C%YeiB*OxFH& zutW9qNWQ?q*g)v!=lL7MINJZm)?2tm)rEcAduABAyBjHKkwI!Cq`Prw5D-B^q+w9H zOFAW_1VK@T9O;r2FldmL?)*l5-uHgq)u5Lq{E~Mv zoy!WCjC1flw|lkzV@iDI&u9{JPsG9BZn*KoTule8JD_o-$+96Mb8adk z%(+s*71Mr3G4oE!>rx@Yqf{$7rD36F5sdK)wiINX8q|*1okiaW7lr^iAg7UnmlCpu z#R(n+9^zlZ9t^3bGD~uoIK~At(PvXOV8c4kdSwja9t`SQq<~WmB#IgcS~76nZGR0T zPX9F(4a6|^tVezA>J9KEI3&oYv5$`}X=`>~lXO*UApspW7~Ox3Ho6h&X^0K9%Z-%L zSsSQ#d_L56z8R8HrC(6cmej)agwZW(O(AA^@IoA5L_K=!_uv@YyYz5r$C||BJr8N> zLLTfJtE*9Up%3v?+h%nld6bv)k^7ADiU8Bu(J@IFBC)aBmgzIu|9M2OF#Rm2%nha; zpNOXQQU>$K8(n9$7AoW8;}}u;n;GM_bHlSI|7Hos`rPr%sq&&y5?@t(!~s{#FbTh` z;72q&-Y4kSJ%3*7R)9YgLfUI$nkAiz_br7}(E|+c;Ln}U7HDA> z8gUty#ZAFOFJD1nXMU-Mo(_p@AnSM=Qy26~nq#hQCHU}7Nv~$b%?!A#xwOIr&C%t7 z8`mSF%C%=8H`KJ#`0MqY)EfUa39p~4Q?ruyen3Ps#Ngyhc*Ux5Me4e2UkWPdAbu_K z-xn`GJx%FbeV<*U39_f&d8!d}g9!>F?^uXtnDS&f$^P@jdR7nh>HLkG(_xM?4SvEV zUrV+MSn;Z=E)I>qd$J8x0ioQw7e*i+Z0PT|U7LL2ra)K&c}OB|y!dUj;C=iLyZF6W zb>(8@DtL?#Gf~-9P)tk1+jJ($pz%pKYS$u!2mOll@!MFUQd`VjR66AaDFNwswoBMnhNRt7>TVrJ`hQQz zr1P-4h1bAkkhA(Z@Gx`z!g|N_{XH^M{(P?KpPyz6MIV{<1TnEgiY01Y72i=T!dNrGsSuwBrR77JQm9mjxqqb#p@R%#j757By<562)r3%-2|?WNLZ}o7LN=!Un|; z@K+MyQXmV^9Oy#<0dQeW=+W`HxCNu*hXx9rdtAXZ3agh407$#XXA%)!)7QLmUX8;$0T8;1`B2+q}$cU8-Scny@ z3STI{y+ssRS&1trW-F|Dy*d5uG!?i*B)&pepjqPjIpdNy=fxfLD}#t*9C3-l3SkL- zIP22mc;)FA%L<)ry?%Y>swn}{Nesz}kGvd2C1jm#jqX5$Lu1AzM##E4bmPZ+J9^L2 z-djYQpkzIfoYu8Z!9E(Sto{&6ySCGm$g$1nGISc|$| zHn8lfyz=CZ&4I z9w|6KS^M6_L*p~+(ynBvFb*lt&XvzS?R~K^JaI38=gwuZ)!!MWVmq7T zU~y;vHu$&Q@9XQRa=P{O&E#aGuJ#HiF#VOo5NONIzD}s&PDmM2%|j8wFF7o8s0xW+ ze9f4hk)}3}kh>?swVEdxbf4AU#kX+q)s=&g+Y`QbO89J7l!~IOy)J$3NS@)CgB1Pu zV0x!5f^Ds#+K(wTKg@^GWk0>gsWH#AzDN`X^>y>uze4j$F^f;SEq$!tK9YDM3ON1Q zp~r`H{v#M_%ILKi$&kuynR|GwcDQ?AzG%?UhItbAD!~NbRk3=Am6n9|PwwHfb%U@r zc;{2_N4RU~%893#+iO+k@JV%hL3Hv(%2)nq#%)>o)DSmZphs%u4KjH+#}ZR6+?At2 z@@~Qxv{vtaeTB!#WtY=^g-->FjXV<;jQ?CXD$G(q%S!agW^TlBP+YYQxKsUxrMpPg z#GBKKV_P{SN&lKzPTPugHy)+J^HHwUR{)yVZ>C`HjQ9C?IOMa5ls^%c-B76Juuv%9 zBvMU&$>A!9Ed0x=n5Ma2COx;ErfJAv1Xx76(xOea^SVwje*OKtBx(E*LI!2h#r=O!4y}nYSh2ma5kA%hNI54DwB!Bvv^{2S6Q8<>u(6loY!D zxJ+Q71I@!aS)s@nT#AjE|&A~NB($yodjBx zmGK>k1glOGyWoajCs(f|rgom<+)WnOCB*Tz$spO*L1}d3xlw+y<;m-4)wvAcq)lJi zI?(uVcja?4Zf>_P&%qi)n(<^Vy15m{4JkL^Y#AM`M5Z?_1|tt6j6fumgh{$GTdh)&KtRfS>~|hQd9b>F*@eFl$DOAXvdRqIe~^#Y zM`gSuk9+e=W+awf#E=# zB9a=u^aqQe6z+EDHUwQ87+`Z_T$d`l>A+1RPB>H$yn$tReiEt)!K~Hm$5tFRK?q10 z6ozSRI+X4aes$@)967baH8nEnm!+YxYw{8=5q+L7HzXcvEP`QI58p5>D9&L#l^pdc1ytj`c&GmKclgGKr3Wb zCM=|0z+8X_Vi(6UO8_y4=v*TyH9;m7^52Ar8{OW9k9EWI+9IxhD}F!ijsi5TeZEcM5$OAJR{S1#vRPj z1}lpBTSU7;vrs-I=YU|_6gFk9IAIqHGB>i_UfNI=$PrBW^t>w6TIkfh<2)U`^g1}< zKoov|-?+}Q0mo_C;Oj}U@u;P8@Rm57G6RRO zQXBkuw9_B$VeX=oG?+X2U26HK8!cJ_efPxckU0AN$G86Q`L(a`?AU+A(|XDOn#@yC z6xNo6p~%fD6Ul_Rl=RtUGxD=};X3eaWS1LwiY<9jh=5Ha{XjC)30&${2l|Ygzaj?1 z+hcZTdPmA#1eWi9#CTo`8o71L0V|pPytDp|ByLi>*nDdAh`W4cUv6393{nryw$OU} zJ|c0Heu69Nf)v(+SQioy`2Onw)CcK_yo*4_DszL?uOz4A4wWG}`)aiA$k;+*0(|Hr zc^|PZzq+xG>6A-9+$(DDqF@q2dm-SRUrV&}H=J`Q7K9qF=#ju;@!^!%T`)0tXAMFc zMUb3nOu5=;L71>F8EVd9n!s|BuybaNN1zPj8vb;wV#^3{P7FBdg-m<*!suEJDOa1a zKh=2FGzF!gRq(roXSMiDj4Au3ziS&{NVe5`e&Gm<=cOOA_Swth%`H+fVQ{w$ogE^t zU;9kfu7D=89;EVjL$}EL4?DCVJNlSMWt@dilM~ve6|rkxT-by`fuTAef~8@|FQhzQ zSSVZt&J^F`LsM{%IYfot_3a6eN{Ym1#fD;qgND~2tc`c{NP%tcdY(iQkQRz1o#nvz z6UzYs)QTE2`BCH%U0TJyV;859;yIXZ+rR|M3iJIA9tILaqi}>9cnb78iq~TT4X28? zX_iEBthfS!Roa*%h>Yn#YFoMpC`p=N1?^71Fgqwt>6ZEGWLX1?ysmPKuUdx z9&S)_)l0rfNm1D=_v*%G^v;FeuP30F*QXzkCcp&QQWu?u{eF_#k-l^DWzLUxUR{GS z)?3@YE-M=ATkx>Wuc;`+G%&eW8Ko@`h;$beCe`xx1!m@EZue9~i}xw5=M%uQ&zy?p z`p3Y1ZBZ|&kY8HA5Z0>)|0~|B5&!Gs8L6k2jI{!+Q3CR{fD2l}UCvKe1KY`KaqKk$ zPr)crMNnBj0%VWth>eJ)S$L0oN;7lo1oDBjX9@aY{2KHuRvkpgr%UF8m??onMFsZps#Gl41j*PZ!jlrspTg`J)na+}5x7d;7>o zdS*$h2}AAVLS6#0$l~x%_$ z?iMPdIo;s+(bG(SeTRJK9i~(xqg3uLdp9HU=dG=!gGYq%jm^EkdK-CNDc~D=vKrl3 zj$oRb6Yo5HoGV*vmo5GSYTDlk?v^2Q4~fRHo9kMWwr@#HPtb1v!}|_j|A#4^qc*qt zII8QN(T3mx>RbleOj5^Cz=RJy{B8LIn#C&B;0boLZ`eDl=)ysQL`;ST&RW<5+^yEd z%^(LU++mneXhUerp(VSQ{PqRFUC7sm8YIaCqjMe7cw}#$!cD&hYV1kUEh(hY5qx3; z@4nri5)sr~Et6!Tpb)&SXB3WNAo-LRns_l(hK&1aUp`*Izk>Zv0j@QPxkioKL!(Z+ zfe`c>t&NwTN8m3iBF^mRD5fmSry@sJ0Fo4*5YBn2fRD!VkbP{D{ zp_P`QQ%Dt5I2-nTGdj6v=3IWYj;4>{Z+)7w?(yGq_EW;*)B~;4XEiO$Sh-^QE=a1~ zi0L5Ai5FY~ge}W1GYX8dG#TJ`xQQ>G69`vm4=o_DDnM^x)rC`sVYqUoAbOD2olgEK zF`UpQz2yYZN5Ey{YiQc~4_r7v8=kv_+~jE2Nm%5r z*0o!TKk6NJ3C*tN`7FA7k84Vx5`r(6wnqwIZohqcRkF5Ksl5fc_}uzG2tp9MH0?Z= z9s3~-`hl!M0X0=-h$rl*mn72dM>$}F%kyBA(j9s}Oy5X^03$*1NENu~bSiKgO^L?k z{V+B>O;OFp=#BSSl)Jd=K}O7-U>2DXO6h%k7?gA|b^IDkNide^vhDEXoTgxnA)hxC z@-6vDaUkAOPFNFebLVMa*IKs4;OwZjsde5{N$?4*!$SCO;n-n9O418yTxBjL8^C#* zM0(j*n0o~z&BTzOyn6ps(u%lYKo$h^rA83I?FbPuq3KV}jj0MA8^q!?L_AFN2VQE# zZiZBv;f5pPaD9GYa8arcWT;zYD5me8t=x!?Z!lALPRtUr=!#lvqp4!(?c;YDl9O|R zDA;cIDLBl0Vv*Y#hW+7zO!M0jin3~q@e}r8b-`%$*5E_c-iypqLHDS|MQEK`5=&c~ zGy|)hms9J{hQ?`oK|un2Dn35&H47Qil8Ad3ZpfVFY--yanOm zJtc!to!}RM2ifK`q7TrwS*c%@yOV%l2y*joEkfVvx$oqlE4Umu^fK_CVWqNr7_h?` zz{}-shGXeB31}^^@i1p{tc_aiP>Q4=$!;0A5G&_FDToAQhnB8}QjdXq35f4kgYJPR zXgTC021?FlkuR*7uS0|FE%C1;i>=}UjZE--ij(gwfwq9?!~6H?kQ`IwTAI}gj7afc zP%w?Vt5MpDx|RxK>DJ8h*DCa^z-9%)#k3HuxpIafV?s&`RkUc+rIY!*ycb!Qzv~b& z&{+3Qpw_S-bYDq#BOZF=<~}%VpO$}mf6%y4)Mh4DTgt0dLH3gu5thz+0$Wa{!KVk( zB&`XKUWT=pTAJOLTM|2`^>-st?eSI=CMAdIqc+?u#b;wlPa0CH!z2pV188ur&dbp) z_AVtqEi8ZcM|(maY|kQAF9eg1T=(;*CQ{WVPWlJw2)_U6=8Q*A)gcq);`019c#SRF z*e0L`4d_H>hrg^iQ?i3Lcu1W668}P3z~MdKV}~*%bie#Q}PseOlFdm$?=q>OF@3Z z4ojV#lXjJ3UWX}$haZ1k3CX$5wv)f|uo&kYe98Mv5jK|ymP@25AaW}+{IJ9&*o6C- zEl@)AE^oYasDJXV9ldRL^@-4^UZ=hCxIVsArci;_FysJuOqp2-f#042et(mrU+6+A z9Vbaf++9D%?wLkSGEYs9azkx=sF7M|!3*_Q>xUl>E;EGsUu&gx2q=KN9{71aF zYC!=v=L)rHuk6QA=?%Y3@06Y3r49U$WVptwttLzAIN$dyhz>Dq>FXam!D`W;=SQ%X zMdVgSr@sp=jKOHWGb1AQyJIAEi5PfkCrO{I>M1Lb^>?qrza;bx;F21uMO(uH?w;^>TZIv_{>Yyo=s!! zm>3-eE}jwpnXDuJAP*CkS5zo1rnEgRMGG%Rb8hDa*zW<$>p7Y)(5{3%d7If!b3xf~ z^MW#bQs33wr_V1=cG?^T?@X4Ax$U!D&M$mBJC&JlW^OzDKat<^Zn2&j%%M`>0vtgp zVe0mVL26lyJ(R9D0uY7myY+y|zY?i_rre%T8{1nLi`>NBdjJdiKWM`ZU^BF>Und$OK^812Lm+J<>W2P=L)f^4T2~8 z6>%cS2)+W=;<#X>Grj|bF=*v7K)=2DyYb{uMitGwF8Z^G%S;Tz37##RBou~PBqt;v zEj;Q>!olL~u`ZOu@%iciE#N$1uK_;wCri&c1EsjTy^Lgrs18ONgwy@%!;p?t5qEO1 zM>!wSSA>~8De?V4ivt3KsXP+vt!sH!&K(R)({=UzyA-E?MOU;54v^Fxz&TesM}rm` zh)iP#?lp(6f_Q$@(Z>0558v_X4+1%$a2leRgSTU0R2W`fB_vCuEna+rYw-|ka$n-W^3wMH&O6OiF&N%nO2Tmy z#6^GGGJ!&Vf6VLZNTLCU`P6l=KK<3JU$ZyYbMZs>LLww3zYFyVsOA?H6>ZP@?|A*; zj2bteD`E7V@K5{u9+?ET;1j_&!-3nLt^onlfxn$C(>MPRxVXXr!~U~Op6vVQttVIM zG4nR|_F)%a<}L+3*$)_3CuF*uQ##E>Wpznn4{w_i|@MpSX(_i z5lz<)+!(L^`0vSXmj-p>ztR9Rd=FoNF@u}PL#x-Ez0m>dvxP0EVTUSd6jWC-QgiODEK z2H>vU{e6+hE?~iEPsnPpHhi+VS{TTF&VIwfp1{uDnT`TfLmvNF6QNf_q@#shK+nQb z@TVw)+{bOEGeph?>`5+j9Q|6t1=VLeP?F`-j9$MRaUNjlcvL@i>-0JyQLlI6Q#c`t zQ=@V`#&;XYa{mot28C=5WK}Gd%|YE)*pM6-T4i_Nk@c|X7=7kYh>;Q&dRQ$rH@P`n zg1X$&2q~8yz`MEpWhQ6b-Q!XrXng#l)m=z$!t6vJALlHXHs-*9VYNv<7-+F>OS5Qu zfOy*yG%!LXsZ}wZ>%#6?$uCguXy05bom|CibWIe$MpPfI>b=b@) zm)`_KzG-1%kBfCP@1(r8&Vr}@&Ig=OPNtug5%Dajwx5AZ%MBO%No47n8S~pMm7Mqd zeHU0`y~oO%NT%}codB-rhQ&pjv)D(N#M?`fAi48r_Uv1yBZZ0RtSQVjBbH<^NF!Nk zAlL4W2iWhmLw?``i=DQcAPHe%H?qrs%RTPSS7kOX3=*!XXCTUuw}0rv*YAaHAD5y~ zyyu50=YQz8rqw+E<*PrmoM(AOMe1-_Q`5thNIyTnV!6)C*|Q<q zP64@G*&vl1B&@d#5r5gWVFeaciha#MV_NN??bT%IW zm6aEOKN5ytUZzhHwK>)XRtialUEtnVMw`%Y%ds+ONzc!Q&MCt=Pe5J8jze2jp$ZX6 zxk%|*5y5#~Yu*|{R+j^i#~bcjmJ&D)!)B_sQiFQ0&# zq%9Eorj6$Bq*Ca}N7);q9tubt}#rxvd{2 z{DnUxTpunqW-$=T|H;odDLI;c?h#^Qb|=Ztc4G-HGnTy>ZMFG?da|D0Kd>I=A=@1x zS@ZCdR(uO$LGcprNo2*JEergxQv7adB~|>S|YClID((GkGvR_$q@Xk^Ifd zs~6hvUj(50M7$1`H|zPWJX$^ch5@~IeYxlc{&m0i4Kd9f7;cCw{wyF^UJkM&!{CQh z2uobj)N~5@pb&jYQzt>Cf?uy;JnrZPtrTYp$TNdp?rQM@twnNpvD`lK7|lG91BWD( zYy>~COzYEG7c|7wz|W|+SF!@GoUX!C(>(UnOl=TU)-Iz8L6&zUg>#Uds&d@0=ciW~ zMaWpo4ziRf!S2SL;a2X0%|xz8dK*Hi_0KX(t9AH{DdYzoSj`+PF>MR>eL~=6_M}1R zP%}^L3j$J=vclyJLZvM>{}3N7L{Fo;^5bt(o;H@eTMB||(;<6$-0Yi};*qg?@8lil zJR{VW_TXz6Y0&Wd)Qz!g)201o-%*@-3KeD75fln~6R4VgHd?0gZ-I=PC(YTJ{;+Ffofoquac_UOn_? zGh#i0D$w5?L;|iqF<8HD@@m`ad-CgQdPZjN-!m^gVp|;zOF~gNWMJ)l7?+d5Nvm&< zUq~nHDT5YsRP|p_(8>2P=4~LEr6<3uePQV~+sf6`;^K*0>njPCPR`d=2;e0@7{^7X z=jZRp?nPAM)A{5J2l~Owkn7ryG~`Hf2~O)Tusbzhf8l+=dM0bB zB551EpOQ~{+Sgjw24kvGL@Kv;g%nJy_kL_-|36;>ue-VK4i6i#3g-V1I@V=&vE#(X zENGmvvgnX5+-)x4z$Q_oVF5tEg|Xzox4|i#gLlcV9yt{E%u_7V$Me5i@&h@%_q?uC zavuieujxM}fa<;gY;*K=lwo)D0M${l9N&hO3<^(Z9*7MCzm?=KF(sx1$rh!sX>$^z z&dz|tI}x1irnr&CKg67^!u5k%VVhrdr+&>X<#2XpU9Ue?Fwb0e#CrXTX0?yLKYAZa zdQ5xz7#C|&aRW# z!hJhy2WiCXASl2TNS>@2^Z=^>@>Nte?lM}MVxHBrfMuos01LkYNR-;BgfuhdKhxKL zf8Cf^BUUBxxh;H^&}{{Ee3;Oi1vJ3;4?IMnTi{+iQdV0-t)lG>N#|+5c56 z;eP<#+@EzbjV~yT^HP?tPmjVzN7ID>I?`=5s~G~-j#42nQ}D2x0{M?B>wYdSHjT^b zrtN4+aArps0gVk+U47dCo;Sy?5VJwW!2Tanx_Qj|{{7DcEB1x5Hvt@YiZonFgxI~a_&}P zrr7OS;-5G!I**n;uo)t>1|KB;v#5vw>{Oa5C3@-|C4 z@4{YA3{C>tqJV={ASj!bBC)4AL&4m>HuO!A4~$O8=u1}n##P-V<7~hMv9Hj(sS}b= z2s~LK+0ColVR~FMSL9ptKob5$K!ls_7~4qFQ7yBTKz#42)*aQ)Oe_5|@Lm=cS?(c~ zT#ik9*(xCs5naG`hgEP)@=P{9Rx|Qv3j3cdZ{ySJT}kf`g%iIk30_U!ERDVdQ-PLZ zzvS)S1~wb$L3yE;mBqV+h5JD|9!l&hT`lN|gSRqzx!Dhxd(E>S&x|VIEZ_UvAV|yp zf5FR`;FS2JHzY!MiRKln{O#l{KVq{Jz!GL9=cU=M&Anu&nZuX4 z&E%zn0eQoFG$c1`5%S`PfpdYD&-{^Z_@ z`aI9VgaQ^`pS7euo)}D@&JKO(DO9cD`A;zLAwVgES0^GT6n6x|$SzG&7Ewe{fR)%u zNBxdc5~`0d^5cn?uT5IUB?Sq9q(g^2h@swW@!f{tojV%oL6SHs91d&;K$Sb9>k=?T zicyV_oG|wA;J!|bKO-e)TA}N7#}c;L$f58_&!F{SJ}(_}hb%u#O|+REKF8h#$CkU{ zfh9j@H{RN|&f3Zb3t|P>YomxiS)1xsGrsW|JkQeWW9gOIlGKR_gt(67hv&cV2{nH6 zhL?xPuoCnJcINS3)Ml3)WV9Y39U028nMN+CQC5d;lWhC=-PZ|j+D)yqDRfI3(bdRc z*0>DYRIIw#X}ym0-?%K>%u(^W^31Guf{h-1dDPIFNjN2&w|MW;{fEZmr0k=&_MEEp zf@=6ZIWF7DPbr3zz#=n&3X6HuE%x=HuJ79hArd9`_|9f~#g1#Bs7$@H>~7hr8Uatt z7_^SsYDey>CuJ;XsVLv`W|Ne+Uh@zJhj7xlS?D{8|b}X^=d}^W?m7+}2Py4URqv6_`X)+GBY*4wB zmv7o>y+9}^yu28RNaN#fOaA`{OZyIO*ay!raYPT6tF_=@)!or&M_o5Gmjb__J!JpmD8vm)L^U*7LFsdxswie-j)fr-izw3 zXER{nUgkqR@VI{txxB6d^L48;<;D^{vyI(7NUL3+NZ35lsDV6Kn2e1mGS_8Ro(vO9 zBrAUX!4l%nu4Mn(z2xzSd zfBWEG5!IV!9O5NWdx76FFGcUV%AH%8ODj+34?-e1HVf3mw-u4B#NG7_pOiQ*4>ug8 z1!@}L?(B71^USPiSLv(UtNpSIxD&4x;PON_I9Ts*UCHV?F_=V}9P|uTfCJ%b6&o=i^dq&YOY1ipe9dp{{VHs*|EIDBUN1~HtsbgBsG zf{L!4;XD$^v(7VO3E0j47mB~{LQAq4_3mED+A4^}{q*Wj&S}}LIj5KAPZJ|vR)B@< zmZr~P)7(|wnhNYVpv$|vr)MVr<}BaR-I^XF>iRdLdiHkna@`hOS2m=9E5O!-RLrsT zo~|=5pzAV1CLmrq$20onpar^zSphOq+_H)3@7(ic!H$S|4uHUzR`Q7RByUHG=8cV> z8@zoEu!t>!CoW}KCfkON5@Vzdhdf`@opj?FcCR3>Xjxd5gA~IO;GaKyu*>Aodt)IT zK#7x`FJU7Xs#QdLdazVyaZW;2O974DqhsyzwNQXb_>*qGVL@})2oiSJ6|;Y2(N@UK zYj;R0k>aLJ$}9x z(g`fGo_fG7*7uE7@F88ovXaWVVB+!;ATO4J&jW|2UzWZ4B0-tBak_3||NEc%z0}!! zO8PIT`#)No#xy0@dsZB56<$)++}L-M1j5oq zwJx`DT}PdoLwWoHkysURok4*XfRE}-W79s&$mhBOv6}uo?M&TdDP8p9neWJpdhhXE z>zGKHrG~L%eQGJc&*njI)U{e!`9g#ApIP zJ5<8-doyr>+^c^E$<=k_CPl{YwmICy)1!#IsL%6W*B2!4?k@yb zlRJ3T%AKC`QZJ5KWOlC4erh-7Hd$Wpy!fAWg)jH{Uv~!c2jz$OnGHAo*q86~R8Ats zg0bPSzRI9l;q}q)mCuv)n9;>!$S9MffDq!xizvDiBa(3&#CZz%DR)QSIr1XGK8NfY zQY%=83c3JJNl9@7*2;WMQSdyOpbC;gCqc)3B|?hGDRR3+kLSbk-NXHKk*D#hd8)y< zr&tK~JJLc@<_J$d%p!REobUtJmZX4W=m~fLX>tc$1fw3;FBvYz&3eoutP>*;_e-1b zC&L#m-JI9R_T(3ckWXysB^svk-ymCr!JxhzgC8X9!yFfE3rp`0M7cq>*X%3N6clcK z0?V)LNI>y`C9#?=ogAyLkndzo@y5odM$MnkQHI~`{{;8F*Pgux6g+HQO^tbxS*o)i z{a^mnwd5!q4@mbF^!=W>FH^kmqI16(jn3sL;*Rg&eE_S0 z)Og1BFoT2m%TT5k1#mXthL&OFc(+^ndlL(>@B;F#D!ziN@`8kiXCnQ|zaS@CIw2Nn z2kA^2*R?Xm@^zyJ@48_ebOvPLoU~-lZK>#TN9zot`d=6;m0`C!s2Kkwzi|XCO>_l0 zwX1R@&WV{-%b$kKcerP)t!CxE5@bz0Ga3RmMbEE_K3yTNZ0)r z9?Wh--br2r%S1B`GufL6_aL5Lj`T9+3niuB3C)|D;F+4a zx_bd6m+#SC3^}zl5Gynfa3;sx($HJ-7u%j{{15mDy2YMD7h%$D;eT~2BpfykI2jOj zAC<)`aUw?~wz9d=iSCGd(&-$HI)TmEIc0GOHD>mz_l4af@>VRk4%ZvuxjKZu$?Fh@7#9_7H&gy`AVq(z?N`p5c$E zm3Ud>`bQ~@O=dp=uj00GwDVIpz99{c)9QDhY&s7>;5Qth*e8uscTT2u zcrT_W;F5QQP!bA=$tb~Xm|Z`@dRPHb z2`Pn13Sw-Xp6R|5ZnilNb+@QiI)3J_dztR0{6y%8n8fMeA77bN8wA+;Kj^GWZBeX- zBze5LF=i|rJ>IpD_X@Pt+|vFqZQ>)f`O9N6Iy*TWumy~=8p%;Q{4N|T{eG8}Hu>Kn zm@E?Rn&e%&_VFgah^ty9iOrh(u*(d{l!!K(o_+A4bsZ&bBQ_RN+U>P&PQ*n*PI_Pg zDe*8e+~#1I)zZ-?0Z24mce-v$P7oG<*OThugy=rBL7ZPDgV#Qi!gxps%opIv2(5d^ux+~Vq(5> z>&+u*GKfw*mRBHBa#ddo31tyD_V{JX*yoMDD=4`PD(qqSIN4PDygMM}@A!mo7X?YxMys*5j{X&(Cgd`CmLl zY*&A3rH&lD@5_20NbX`yz5^S+2enSU9<)G5KFV*Uc2Hqq0Mpf zkEqR+bn_lQG-odecOD@(A?P3IOO%c;t8Fp1m(;U!}|^2fR}?xpBdWAd+y=p8-awqnDO^WUEz}|xB^-#-F+JB zUM?7E+OK;TX>iVo){xpN^|YOz4Q)YB0{V65!=on~7VlhU8q?2{xs}+cem-ho9Z6yg z4b>M@4i(eIpE%n`D6W zSH(GKMoPLq{Lu=9B8>5z|B%oDqKhQXDkevS!T9FyE!XQ*pxdZwgM zxZ0YdLVcFlySY@^vTA~FOi_Q;Q>DKu{upBR4|ceV+sgiziJ2vB$=*9q71PQepU|DU z+QE4E58q4^Ni<*bMGQ+H#9p9rWY@M^PMD1?EqAtCFI;bMs+LVSb|{14BXaNl#T#ty zd2J;E+>BPsy^#4>?V$$Dw(8;C_B_3z3Ac-hmUtc;7Z2U8i!llAVkcsMfJ7!aCoHmz zuv)S05^~eaWdRm&Q8XI{5eNpv;Usb>gK^O2`ac__{c_ivDM+nYOI(@9-cGSjj+hZR1jRlf{M zNxqalb1uUsb}J^^9=gmN4_NNBtI2fOnU92-(Iq$o$(L*|R|oyR%bhzAz0HNV-qd=M zrv=n|%2v1{Qr1`Ra?h2Ffup~KQUY6r(SZt8y5=A78S%>BB*PZJznipm__-|Rzgs&T zG!S?yclE-55hdnoC5!I6>=dDUd6|y!ngr%YZKL$RkXyvLHo3kuSh}vaY`A~!w}p24 zVXiTv&8LTblsrZDaI>(7vP1)5J^zgA^UI(?$J>6Va~i|7 zU19Xcz64|B9mMk@w{AW2(sn}YCVrG1C>aFVApcl2n4a%7uGd!4pR!>lL z_Sa!9DUQ&AbSjWfhtEdN*IoBlFZ4oxlBNGz9*q52Uu)FeN_|IsWJ3)f!|a+C0&PT< z12b70+@ zJFMg51u?cZ{LvEZ@>-xDSP>F;4t_{Ylz5u7`;{}q3`QIxQAutTbwK(Jg9~tOi{O2U zr==!VZr3pc6bp#w@p~hS;%j+NLw=G+;jqb|v3V9{1?uZt7(*PDY(%0>H?)cfv$FD~u@v3Aj@>QT2?x9Zu=Lz}FDTzVXmh+~rb2^OF#bP+1B;CJ(6IS1!YLcRYey#lDZiH--pmr{g!0 zDNh&^pHdaJM}d8Tmjbzg;P#+rW%tjy-z>gvOFanPVrR7~vtWv@8F}1~Z<9!je!zlM zxo>-|`0xaIXB#ruMF2zruhZ2Qat5aernss#SKwSbA1E0gvu(lnIn3egCnIBe`dAfX zl)a$CHM})Lvs8{6L=3-(n9LVlCCM+A1Bhobxal1J1qaq~RS&0Mz4xTKKjH&bY2y3Q zMq2R&;aCMJr$|A(oPlsuquyJtL~SOCvm%9sQyij!=dnGlBf;$ldBTIA;ihm;hy^M z-&Yrwk6-Psr(h)DZ{{fYGK6|%BQHlkk zt33J+tgi215NpEIjQ$%RIfYnu za9Z0V!r0!xL`@6#qlMWe!-LCmx3j2=u{o01j#?8;81QPW0cX|5$vU3DZ#c=96_JUS zrMl2d&Hpu($^0@iat|LfMrj`_(;zCg7jlB_>7_v4K>)sIT}crixUJaO=I;;;WJX)x7(?2PYf_LRb+VtQY&<#fL_yBYI zf5Z8eaP5Vg9=jI{SO63j>Cdlz01aQzE8;r8aJvAt0?#6sFjf!52Rn@W^i$$MlG_s? zK`kU3UxIZCr0;}3>i29UoS^sf*Jn2$DbfzrN5*tL11Rj)1YxA_b__nucQLe5mZ z^=?2lPBoEScgdk_9Ujg^9k^5%v;O>zTDXOp{M+~X#q)nP(6`8}$ku$y$3>VGH&E(q zoQat7gtC%nh{A!TAnpZ^StwR7Eo1opD1px}EG)fx`iut(2Bp}&3#E#%aa>ENPm-}V zSHZxXJhLj=_>q}gdbur`Rp~-|=peY=(TsD2{p?~LlGrV6O5l1IpeMe|$~qEv5kuf% z7xfzs$5dZpr=gZOBOBT1>m{3?v#|hS4ld$I8u03A0~0e$Lpv4Y>^wJ*a}x z`_~$E<{X)-m-*ZwwjnAB8qSk(|D5zR`MTFu)$-8){B&Whzp}Dw(d?u%)B5BWPM$}C zocDux7c++T&hJv4Vo-K+z8UKKn{AhuSKBHV$?v_b1P5e-c4MWc#suc@S|j*cjn5O^ z6p{~;rW0;<0!bQf_Ilbj$IMu~Zcc0GJhG<@R2;qMs;IL5*x&xyPo3x<`}zGiI)dW# zsZ*V}xBY$R_w;tltVEb$-RgxLs|=V(qCQbaO z{s5<!rhz0(}r?4gI}Ae=MJ362;!yLDm;f;P5ZsdomV;g-7NF{O15& za;@Lm;Z4mpPurVGHyvb<>Wn^HTrNM_9NLPX&bg6Qz$lM@?b9>jZ7RSR%BN!=KDF^M zW6f%iyE2IAxrN1^Ttn8|E2bmCS3rs$2+|?Sx=h`Y@w6RY>_U9Q*;baOnXX+M2WV=yD zqQ7>4KfoK=0<0nC^pZPHko7eO&T;{zT`k+;nu4F6)L(p)+etshIEWh};#->MPX2Zk z8`GYB>FB{MjAgF+^w+`X9WG;n6JDDh(`{FMS|?L&Eh6`9M9m-mXuEMbIbG6jwgdY9 zZ|=LClBfHn5;XDLBB2r%o-O1w!3Q!lI4p@IV4o{gWAep44P_usr`e6_?*rt$7IlBq zFEM(nSSSVW3=!3Xw-yOHfB^%v03r>}=&^H_PK#9xVyX{5FR?Gym$?UsOsB>WXjM=_ zmfcJ&_`)8?7S5B2P!p@Wi=3Z`@RUKKkg+i$4yDl>Q(&d57EBWyw1`b6|fSXKVH#7I3_@%ZeZb< zq~4T+xl$6tZ>QuFj8`J@rcL{*shN9~W3D9F{}kEq6eC!EcC$P0B$li8y#e-T zsh)xDvHIr(vVNY~?br5aRiPdKZ{o|_Q_4`c(;LrJIeRa-{{A{e%(5Wb-xrJL%O?u2 zA0&cau1wt~)h9AF5p8J`G-8b{pj`+KydY~Tsnu7jC*z5B0~exv05sC*;nOEWRIXNs z%HMRqJML(u?Y{X*AWkH*x^?7y8utTm#Lr}KQr!gIxf)QcI&r-o&i&fr9j%ytbZQh! zauTUvk0Px6)-ow4^xCUkT5axKQi&I!aRxrt+#uTX>Q3|B-OCddr%cbnGjZAT>^)4? zv=Y7TtgePX_z#h+f%;d;GT63_Vgeyzdu_+nEH-w z%4grsB2pvSr)#p;d46sBzenhDO5+C<2G6QPxSUr)0&7+}JHoQsAn!MimS}@6oPs}& zt2O!CW}top_g|+ON!AV{j#kdi$oHyBNaVE1-ve$|Jb$*L58#k>m3CQw|Knzo-%U}8k_-fr|frez1G1dclO-&dq$HI1OKRgn6H!tcRuWu|@+^bb2aS|x`Mp3+T@vG^C7)Lj zW!{u?pF#5e%AdB;GgaWgxT12_!UWF6g}p@VN9Os6(Y{W+jd8c;7VRW#>!a+`hSYFW z>9AS!NrS6{3<=j1DRB-tJGdk+NC*b4cw;{t5)$^Vjhd@_MY4XdP=Zb(``vt6S+W_U zBCkv+K886m4&l7vICB&Za{2;nHa9-6Fj(eiiDFDBnzj^Gn>Zzs!pRo-3AmeMn;j2d zE_~r_JO1r8$ukpnUS2sob8+HaTNWJV_fLWrF`5XS+}|C%2*>@$*X*9b*;U!D`PkgE zesO&o9^PzzHf~=;vlXZS=IJCbw*I>Cciq=?oM_uQ0yZ{m8`~F~B<>M=9=4I7t!vd7 zQEp5=4<3UHG8}uL*}X~3KZ0TM$^es-y!~^G7C-Ps^MBYA3i5A6?dEq~n-(%AQi@4^ zf)+pwNsubXz?C4TuUZmCo?{c%g|_a8hpRx6$xt=l$yB5p^`#wr@a>^3WNvhhnk{x zz0E=!pPOj|PBxY2J9ho*LVk@x$kzTbH(abeO^Yizw}HB~3p@Xnqp=rCWCg_BCgvpJ znk97L$Ek%1$Q#8ho@&^K3ls~?*hli9@~*^A74hq4Rp&meG!o)4uR#!;Ukl_6muVQj(mv)GI4i18vpQP zUB(2hN+AnK)m=upk_hTRsGn5Cbc2}f$FZB48e)32;6kxxjsk=_f;WYJfGm4~nfK`0 znQPx1J?EfO4#x>wclVRmaPTRSm7zYF5>dz7^G{=;mL~b)N7A$yy%OP&SM~b6O3fU` z2?O(2P;Q`jQ?j4pX-H(!PQFp$W(q#hyHko^0zNw++tm-G&v)7t!xt2qJ^5B5!qzHJ zI4(}y2^sw?zp~gBHdTUVpc~RN3UmDFJEbCjFALT=fQyVaYhHU}^U;jF!bV4^OV8b7 zd#%lOkyGx_SL~s+n6v#(*@TmAujx+7C95_Y+AB%lpO-av9ubz72aMuvQmNT4=@y@8 z9o|i_|EOQ_TEIu;eBb^e;{>3P`S(6s`^WdLvlG(LAg6P0o4{;u?ki>#ipO)(Lzqo^ znZT7GXCu}JDH!-8@Q(X3P(uHZzE)ks>Ji3a;5(B|@Xjr@TBPY%EQ14AJ|l7v02s^3 zE3y0XaL*P(w>Hj{&1A^ZdV#vWSRa&20^{j_#XWAooLnEL-g zZ6?qq*lU4w@)ObY-`}7^!bUZ@zWSH1_^juA{b(B1=VDC-;hYYff9AP4-M(?~)2kEL zw~uxGOIWZAi;qpL3PdwSsGPTl-`YM}E`dTa)t0^ex8-5}0zmfUQOB=qQ z4b^9`A`XN*TvK<<;8mzi(kz>6b9?0ZVFW`ON32v`Blw&EQgs-g`+B;Fg!S?(9l5C| zpu}t<;*dSa<>a|BvzP2+9_Hu`RJk=-Ub9dXQEl4g9DW6wv*+G~kyHx7vFLI3oXa%< z-ul*hmYs>Z+w_R?TQAsI3sNNRg34Q1Ba>thYmcWZ@iDEw{fYOLKJ5XUzr}hlZY-3?tu-hA+-;i(u?QuBWHKy~%RrNa zmiXH3>V-THFN5o(c z(SnkjTTgv|L+~j3KRc*T$Z)?0H(A5Bxy4I-zE-7$Hj@ewediXbPHu)y_?)utvG;_2 zcwxO2eVXx%tsVCmZY@A5FV99{&z{`<;z@T<{!^4Lf_K&jiwOyLB_>D(he(o_<8dD)Q_;4`LoR^xu z*v7ts(4^rRYRvABHApiKt1d$ZnqRZ;KH|I0$I__V#a} zGWXkpva%LGhQ1j2*8O>EnMH7R&&m25%$xLA`#QDTEPFW;A}&g`IedW90!RleneUY0 zu!8Fo=vAQi^Yn~4)AWz7(SF+iUXx2fPBf$7$sKB1t+4761FWxb@hw|TSc2W!&vAbX zTv;i(3;~QW1e)tQ1jXkG;ePrc!BJHZqZ5Pq=#o55(&`A{HWrK`gH2-i#Y*hjeqp^ASpV%ypAr2^2ZJvK*kQjZIZjE3RA2&db$Kui zMF8|;^}Y#+O7#^YrZ*dUU5Q#?AcN)MBsM?Dv%j*`1;WL|oUR)u0% ztxLL=R4cl*Te7PZ)HoFczK`aRUAV@_Cv=Tu?n{?oF{1>fZpOOX?1+bOl%N>BudX*B z>YK_`v{VBHZfwGydV+5|iMFgv(ge4 z>yA)ho~0fjZF6D0omC|6agWt552onE&1XqO~mWk^<}ezM5y>%8KCAurdIOjSZWHa`^p!N>tTte5zA1@v2=b9JoJ^ zs__&~O}F13?+nsGxtt#1Td$p;0>rW?+xcLd3?^aS%ffk$_cOK>FV;#yWlse1i1ce} zuRba#R=}0bE1}|9`4-`<^yT(wGL_-==pOMjVurrf$;Rch=i=oswmVU{B-+{U-THkTso#g*ruN zxnY_o+A~x&>an!Fk5M0E=hFZq5&;+39j$7M5;g?QitBjqskip3__}!yKdY^6CYm4o zCMxFgV@j)@Fy^kiFiY1kv_fRw)OpZ$=rWDOD;#s7>)UmIm?||$HnG&{tlDVd#L;eD zlFAe$L;!2;W9ZDJeSPv>b(a-)A$@O~LP@h##Y|CRA>GO!99IakvgYjn723AZhktDD zBQ|eKyC>D2D}%q_gwOQ#XH~`YCCq2p{fU%TWQaO&6>ph(Gl_ROhlh6{boSIHs^qDA zC<4V{u$L}CKJs%nGA_?38Cw7COQ4XOIzqsQi`#+q)6l1s6R@{Wa)c3>0sE*ib2Pk} z>eX5bM3}z!2r}jXEHU$gpPYAOj;bJuUjTj*aIy~Dvo0gn#2^KE#wS0G=n?jfOyaDu zIN?1)+0i~^Z%;-(sVyGSiF?fIu1Mlbgi3RL!>js}{_qXjkOgH(h^>FX$@={x8S%?B z*=NqU(7h1U6SEKe&6km(kOM1ePZPE3Da_U|glO@~8`WX>p|;+h2kpS}L|40}sSRG> zBD;$YT#K+`#vK{+vADr1d%p|Lkcn3z=RM0f4YaJQlw6f#_u4x%03P9YQ#<|tj{6_m zVb9>9Y3|_O{V&6pxC|NP&N;7$tJrV+HLKUy2n8-!%&g%L32_qZfv_XBiJfrWgl>*V zt1eL=B1kSuhx|Fn*ca|%4+BGyOpsalsL2))ex~H>2!uLF`RCYgJRQhIEBJomD=AgxW(tdH ziw~S>Dfs2!=Q*kTR2|iOAX;z^`K1+(txBgp8R8n@V$pf3#Hi2i^o}cuKy2z)910Z_ zu7nWMv?t$fumvpS>yZrSCDb-?>!r80lAehnWOY6^k@4WqX1CB$D*c$qwmhB=149G7 zLY-Wd%P0X>GtOQ2X4^L&D|RShU@7N6?m#g z60a#J(S4h7)00QvN<;@*GH|!DRvqLBdqqX)rGWKHViTioLPZBDvVk2qh^|u0f2p>^ zF^75{L<)9W@WsBZmGWD738CT5;__5G{_ez&J}}Jp@YQCvUX&*EL$x;UDuMk^*X)~% zD)6aMlG+?rc@SA)^{=4VV14y?*$252t~;{#N44mCy#%wNp}o=QPjUz3_1dLQvb~|% zS!gzCXnp$HSs+U1fHdXhY$~_(!aWxb*-l;u_~g`g)pe5C{?nt|S+hk#j`OHK;64XC zl$!aR%|dA4&8=3wDlTkz*-%iBUxtI$Gl?~B7sR#HRvb9GT0 z$OA~dka?>)bKj7=gE{Dt{B8wL$~(a`a32GMkQN<+8}dGbaq($h$}aB3-UMz70EhVr zi2Dur=c|LHeaL+5Z`ftBs>9!aA4$q6@Bvw4-s&rXQ{SdpZ0S*~&lHYd#pO|Jh8jfa zB?n2wx(Mas7R5nyK)uDYn4#ozRHi(U`#R~f{n+qsruHX15CR+v=0je)KdG2v(%o*B zezvV|`8-eb>@CNFdA0CJR<~G`VqKl+Zot)+-G_4u)Xxlh4wOM(W{ru>#|GMUCuL4b zJO^g2FL`Jxc?4~ohvz?&>F)nS6s_<3MzdtVZrnkgw)u6alU_jZroO&6kMjowGNOA$ zpz=^^9O18h7*O;77k*c9S1kGoImP@8&-80tvh9XaJaw;D@IyO8*f#wZ+#*y9B+o4I z%qGmtTs0{_G>Uva@Z&q}dAs;wP6s$QoUx14kGvm}2(=Na{@GZemNfT*=&kM>rU<^X z60>Ioj5kCaI8vydtgvn-H;C zJP(v4aa_oM`G!$3AR5U%Q?NnFgu$XM%A#W zWqS3k+HDVmAbE@m^6Y559DkEzn}tZ@d1&I5SGbOEYSP06#-1Y~y0Z7xR%y>5vQu|5 zF<4M{R8tl`z8T(0sz}niMl->kpKJOM>oHt+r#BF#eQ+yMz;N`uWC;KEpCr+E>H;u* ztz)?Tju#n{=2R%!fq$>a;E8_LX1DQY61!p>d_LwOK07H| z)1;vx-H9hC@9L+Lw=bX7lgjv&)My`6SgE~(=9hoI)Xdf#6N1Y~E#y9-`1VnmEbtP! zGvtuz;!o9a$Fs}NLsJ36^mF>9<28!jE4jFnMXH1Nn6I=Fy3Ss=MKE&gOWfV17HCOg zC9N0s5qHotb&Of-(eG!k5~CrJkuO^w^_6@55-&`p&;Q#Oe8iPbODN&4n@c8^fUL`UUXT87cVmM4c@QGbg%s9>I z+S;{;$s7N=;v2Dl{1nzP$E%i|t5mFkqim|-*aDR>Yvu^~Zv+e>=YQtZ#x{QiFr}$rI%hV}W%=ML|2XkxpNw^&F@IxIN`Y@T4*jLE7L;qk1^oOk*xi#+>%h;ISFS`jUNT~Q5iz~_F3ssIbcj4V=Z z$fTJ&lBN5(T&);j6{2OJ7gJZuc=f_yLw!dL7y4k6J+XH7m?-jj)_pP^v8PASZ>XeT z6%{z^EcuohsY6>xN?7TtOu!t221u7UnH&kuxvLozJ_BT0pI5P8_x@p#xzxHkrq)#2 zq1C-KUtaQkm7TAj-|;8&*vRez>qSaz1DaF282RX4u8gn;l>JDo(%Tzi`wm3wJf?k9 zs&*0-M7x_5<9|8*ycPa?2uM;909)E>E2EV zmJKz)552>+v%)TIE;sxb0e&0t(if#s~D z>Cyhse)VS0(W6(mc7Xo7kaSh_(n)kH9azlbv?KY1Mp7JGVoo=43xJvXesfZJ0QPVd zlV>WINV@29brAKm=<>OPDOR#4A4}Oy$6t!Nx50`J+IfI#NBrKGy$g}&0C*oiTb$+8 z|NGo?wK)B0mb_K**RTt;*(F4Fizs74_M8ZXO2NjnmSGQby2{^d3t8SV;jL8wSviKk zM<00;=CbFRR8>39KQ{o=4lDi3SD}d_Qh*Oc%@6pyDU4Dl8{ITi3tzpIdhw+bY`Wbl zI1iysecWQ)tDy5S66{3%TUE@s?q$T}$f$S^h^?N|n|u#4x;_8wNPzdS`8cHiWd(5? zmui`gFV#&hh6ocqJgU`yA{eRtXJMkYHco&f>@#n;8X}yQx@;yXW=la+Ftr1!XMG2SM}9ytP)RCs>dBl*@#(n4N(=YlVM1qMY)Jq0={e7q z6|JmX=5Dn=uVs2-*MSqA!+k;r!S=7=qA`((GgQU668|~jM(^S7vJb)Z!BV7G*so_s zhGa6ljXCxAumLhQKCB$}dvoFR!{V!#S3bO?4`-XcwbZjdnI9?MhEhRvpFFq4nkcuqCj zfh5T>dzC^;A4x_gqpXi_6$=vkFZ`n0)BJjVRI1V`VAI7M$_U{YTzh)w zxs&Q%Z?L!4y)s(sLVm8Pb;eOMlvI#{&|@h4F55bIZcA5zUMl8)#7L3H$rp#ogk~16 zwlD1m??P;E-aK6F1=@D)M}~*d+8klS%4d6DH`+JDlK(=At?vb^)E|Z#)7l1$w(K1r z63o#RpD!J;N7@2;FGx4&Hb^G^@m6kLj+m#?EQ>c~CGm5f`~!eHC$yyolcc${MKth2 zO~XVvsSY+?_Cq=>`>&jKqk`H}=t2FD%DJodm@m1G(yJTczZzh~VF=6K%QUvc@ zS!H~5Yn z^9#GQk4e;gX#(|Yb@Fq8FxQ5k*~^7vUi17lvJa$g={(PyUoysg_Ww_o)Sj!mX0IX7 zPN|fuFQR?g*#?NaI~VW&iH#`W793<@OHQ}n7C!C^OcO!G$+3muHduEwCHM*4>4uQ* zLf~GfmY5j5$cHJC%5DXiU;@TpM@1)z_WtWp#bbK>>~KEZdhnBedi*y~#Q;}W-U7Dmln8oz89l8XT2j?uH$}U1@E2wBQL_#kd^F}vfbf!ybC}H<5B}%&|V-LL5b2dO& z?PDWY!TmHeZn z;VXo$rVDk}00?QidbvkeY6}kR1}_5J%<=a$>jXBo;8D-WE6uU-^Up%SNb-3Uio6RH z(t9)ounyMdl86i;dmx9^wt4B2DH*@_d;orUxh(fUZJC;pXH+X{je3B-QE<1!Y>7Mt z`e1Az2j(`<3WB?RQt>WWvW6q;A{@QEnWY3+(?Es}?r-gZtP4u#`0j@Fe%{d+)Jq!{ z&~%z~swA1acJ)&=v32SDtIHXuPXn+mzW{fC!AbdqE&f`KP?oV@&;F~y!Li5E>9@t6 z;;$)Pqb;oS8Ww3A{lq*^97w`zbab}7&T^pL-SNywKjC94Au0pPez)kO6gFiuVzf^D zy0pcP*Um5*3n|*ux&eOcmz?}+JjL6^!}C)7i_*V3Y|gE;TG+p&Js^YE8niR%XapBN zS_vteNS!yqTxO=whP(%lqV(kF;3_y9s2P|l(iP?%o%gKjE8+&~vZgD@f&4q}22)om zL>j%boJW#UT2D6nZ1>LwSSOQVA?}ITbwyG*PZ?thsra3Y`cJa&V%uVcm-MN0mOz4L za}1X@KE*xPbSl{H_vXBxq+XVig3TN|ZCmD8*7@2kzYEyl#6)~z4Q&?n>&lvHaTdnl3>?d#b1^jq1HZk&Od}~_%;2Wp1pb6VXR<7 z@4(~XP=w@(*&h&LS^U}Nm1tlVD?G$cl=}vhu;8_zPz6gE??5Lt$3OYX;j{rVDi)nP zu+Cr=;CE66-7Ty+NX;t{!xV%$V_u&I%Xz+2`&Wlnqw&AVDQhr<8Td|M{wM>71fX}L zW}it+u4}qyFA*h;nr+FYiww+tnSA;LGRmMnAPO{-dPY83IOXvwY1yYqA*WR-c;0vu z`>0F8jx?s97$sEv`s!%b&B3_s6!SZU6b=-E@gI%zlRBvLLt#2vagFg#!t!V6Or_+8 z#1#vJnR@w)WJOtvz33YM4EGR8Bdk&)Nb)hve%Ip^9Db3!@HD%N@>5i+vv^#%Aikee$ zZRu!a)WlZlMlJD%@Kxez?(RmiUavLw6wH5z@BettHJrWb1BZlQL;46iU!~O}d||MD zcVXn?Ma>{ciA>v-SrT5jZ-J!~WNv~2G6V}a$oeF!*?b$44VmPT2{Pn_8z-DZ#)3qP znSw5891^O&zZq>`PQb=uNp-I7o!wW_q)&O~yEnvyx*_b$vts}eZ{~PIRm|dH4RFnZ zSdnw|i+2;$X=$_^nK+$1@Tg(3Sava;@yKjxgZz{ZU8{o!u-97ES3c+b?svMNS>xt# zHV8_6{aP^d{hL}F2iCFsQ<}(T=Bck^-JrEX#bCo?-g?Uqj=DFp8%9OY*BObKNtc&- zZF2E~ySo^aN;#cBn(rW<=-M$9tq=qm3l%_%2i=m1N>BCP8GHqDSfQTaAwbJ}X@O!F z1Llh9X=TCa5S;(2TI|B^!ts7yfQI&eD;SyoJAsj=%Yh28r#MXdyou^A`PK`oxRzt@ zn$%9(0pfh%GtovmenhgMW{oC>>9Tj(2aenVJ4R`jMr+#marv=0XbZ^idv7C^Y3L9! z4N2HIR=o07q9to!ml%D0Li~sgBWp04sQ`6tX-FAv^^~zVaT~eJ)t!)|w{=WB$aL-; zY%N%*4n2sT=$&jK)8n_~r8F?Y=sL3{e!vpx9P5IG6e`C2K|;N$D|mA3JhKg|%gljW z!V8o6oi0j7jxmxQ&jp_jS-$dRJi=Qp(8^eI`JqUiK>FTXh=&^F( zK@}vkA9C-Hc_iKa?x*mvzl}dGQZ>fC>e|E!+wqv~O8iUGpTt(F*J%Vv%S-|M{X?x_ zZ#a$_?$*Rq%w`NM_$VkvLbZ*Qa&^jndqxnsCEMz0ke9Vkb(r+VWGUQuTmb-%eGya`@xgXBpBC|dc^>d{K^W7 zqW^qN>W0;EVwV{fg+NsKzD5;DMMO|LWO|4og9)9BUo-2MTn9k%mXt0Yty)|%Mh{hx2b@JG@9Av zUZHMX3V-Vzi)VObI7Q3rGztn&f;A=S(F6G3{4D&l2`GVO+5DA zDoH8&q8lfZWYi@9e1_xuKwP&k?+$&^r!XFqQ-RLI`V03dCEqTo0wwJFGjhHNpctq& zz}uYj_t*Z>A<6vI7IA&jmptAypuy>922nw~;X^GqgD`eqW3>9uREEhCd(Ps%-5$_~ zlQd+N;2sGce`H_jXdoFSjt+wka32(O%OuuxQx3VJ1e=v3`;XaP0S)(?h?vbhV-Jvs zciJWxFQnl+DtF)q@DF@^85UiKg8gg%d$0W&Bx_s#H0tHeoZkB@yQdHC?WRL?tV1i` z6{@4IIdIjb)roWYoN0Co!OTmGhxZ|5=tOM%o^v}P0G=vV- zZqRopdwe2aRN_ocaYN**DG;5y48JeD5m}BfL$FRXFam}|mWJ}V=RFxy(+%e4i_25D zz@_E`<7c372rCkTb8%6|uwLJ!D!iXbKqywZK#$ze6yW+qj{IWBh+xwGQzgh}eZ9Me zA8IN`dyC84&3o$r1LoYW@IkUah>|u0a+NQc=S1jpP@(scBe+&(^i9*k8=}JT=Zr0% z(n85b05F+i5MNKI`@gFAoLet0sdPYc^Yi^WcdvKOo0^$9{}%NMN?6;R=qw2LUlBjY ziI*uC*{!$z8*j42{Z)jc5-$>A{+0?<+nh^Z?kHVgmLMFX`^fIQI)H8KAKs9i7 zAT|OtPm71e+6EprRslhc{NGD|cL-(SFEz&`FJ z^u||wiG%4>^r_TAWe{lukH^>e&rugu@}$OPT;Qj#)q36fOfK~wBGB7zlrlcdK6Z5< zzQmTMkyQU`sr|&K>5y#vphtP;@Mu^qte|Ebw`Kz>RG$7W@+ipN7r}XO1X5x-r$dc z4LKGd7QI^i!!QnQ3jb{&*HUvHb`ou7BL3gO&8=lpSrvC4w+lb%k2uwqla=NBy_Dzm zC}Kw-0>{tKFBbCq^{X2D&grm|pEH>gLj_F-yB>f3Z}9%A56w>NOtU>FcQcgi3$eG! z10ros`kHrcPszK8s=GhP&D#fYs0B0jJ|&&)9*J$GF6J9;L35}QE8K=K4hmVBW{cFP z6&YbEP&_udDomu{fou-L8&wZpKcQv1re2aOczQ*WVOB(8(7q^x9qKAiQ53k5*hXp& z8HVNEI;`lm_>`cYaUbQ{#w4~Fp3 zR5pt2+fWH}{#y40Pu70|trEkOL%WWfu%eB17P?}k4MMi-==rWPF6URhzd?1x8Cz6a zNp(gT+SBZp9!ZMyli!|?&>t5ClA0%~G05+?8^#X4-9^WwYui}*K3RKsozeE;-*4K= z{gwE+QvS;K2Rpgl>}SBVX*coh+X4X8S(L5=5W%Fj*0~pVXPU$#j)vZNsGe^p4=G^N z@>|c3*M7}?jCG#aJ=$CO`erQ%^F|NzMS!rJ{X^~1^m)b6 zh!d|1(MN?I`-RD2>&|2HqyE}Stf?nC_{C8G+;b81AW5bGpD=>?k?@aIj^pADqK_E~ri8VD&O>*siW|e!t2&k=hHZ(sc{WJn4q=EJg(glTe z$rQ6ln0??*(gkHPq;eT?OHh#V*Q)z4L2%v|T!2h@7i6|!)T z%8r})YHIeb%2)o9{M~Sv_KSfc(4=HU6$;88=^A(D7$$&eYQ5aSrtot$ez&2wfGmo) z2mLxihZVIDL9_t47cx(uf^H%BYmNI{o;4P*+{cbSlZE(GoG}+Fg^nvfn)MSj{5rM> zR8=+qWnA1yLaF=!WPkU)_5h3)lG{|U63zMZp^e$b>X|Z7c~Tm3Mwy45314(1batH9 z+eb`7iJzeQ&*x^V7jB21&u}mf9F;zyq&psApN&_V8K0lQ4DEv7-xo8`nAQinv-Wcd zu4nl}@jk@Q85ZvK<-e`l_iYBGXu^BB^;C>FFUmRSxUtpIzoPXafrQYP_a3%aF3^!B z<8V+n6VwngG+nTfMfi=>9GuJfcj;+S1mw;EaeClKZnjlf#1XVW`xo$!#oEYSyS8*b zOMTvzk(Jf@<%`J#7Q4x}&QecR38tiAmhxwa3K)YN+R!M|Uby~O^UK6uYq@Ufgy=diW&q;+HV z!xNvg>oZ4&gn$S_fKQUY)C9mFHXBvm`>ehpez7Bdw+$$0{BTA9pvmRP4X^VhuTu{0 zH0KlF=H1TY*PX(<3*pDE`b+)6IK0d6@_)z8Ts3%)%hE1iq*hTa1xZYP37%DS8BqZ_ zw8(_Rl*lVTHLt^rxz*yDlZ$?%aknfp0Idj3`^aEsJK7o`5;X`jI5LhkEza0$Y0!G70UVnEjQAPDr9iw6H65A$><<_P0zqn4 z4W)&~g078g!{jI>DvjZD8&K~tK~~?2S7xA}4Fb&NtG;^Lo!7%_4f%FeAWH=7xZ zQEP@6%K69LG09;IQJ0sc(qHQKF9iz7^VQ^9uZ_19bR69sw38(5nn~%5RiK&9ZxsIW z@Q&qgJBq-)EKOSq!I6E8E?XR8YGU1H(-Yfqi<7s=z4Wr)_m`@>-#O4H9s5z{L>JL{ zP2^jxyW?z9t|(#5G62rGlI1$mA#JHvmBV?0m^_KR%*eaRbJFz&=uNymR5;>qT1K+{ zfFd2bWe$|bv|^)ZEibW7)h;mzusZ!d$GSkn`5T14Drv!<(y#3^a@YdT%R zH8zwQ+(z7CJe&*;H1#prAE%Z)FB&{B-h|ef&0|+Mw=%z2b=oP7D}f@iQvQI0J-jRKoLT} zGkmoVY7o%rE;}oHmS`|=nq9Z# zLi7ou1AvXsrgHL5n^%B0cPA`-`;O6o zzdQmQqEpOmw*Ac5{UOlxQYWO$cN@X!OTxUHk956tygf*&TPbU(8Qml7z&mz^Ab#q+ zaqx=;yMJdwXY#mE^!2Yb&q-eI-1mK|&>sdr#|H_d(I+1x=6!?dV*au_(pOdox@+xA z`ovR;&emOjb#gN~_~%`Ez|9REePJ6O$t^~qbJxYh1=KsJ$w_ESu)q?&As{NRAz4W- zyl(dTleJxunO~diVF%AownYv1a0h+v_Ont!Zip7e;FP>Y{uhp;Ue4Ij3>T4JK+ zwODFf?w3a=cpAGYBV`z>x=tjk9Y@h8O|(b2HxMEL$|dwMxs`R>=X`5F6QmGkS5ns@Isd1g3AInO_~X%F7l z#MiX9{hj(RGq2u^LlHfu0~ZI;@~d z)s>3DCR|RH@Fj-=wMAWse!7VKlz{1ZE#BcgzVw7N|84f!xJlIm3r$ahr6HAcJ)iki zpQa##a*^#Y+5^h2g(I-^mAr7pvvd8UecD?|4QU6*EZ16RA~0+lgz$MPLhHqmfvFqG zgrno0zTWAnIY?(#0CS^=cqZK*dmHz@rY zV6$h#go)r(MAoFG3RIvhNJqQF3Z^^4T0{HF(Oxqugl0_GXhvq{C)cFQ!6U34ThZb@ z$9Jg~!oFd)>zc4W3ByGmdxwmjhnf>JGZ9}x0sq0i@~D27Yv^1aqoR>2TAEDxVo9!Z z#cnruq9^I+ni1h|$@b-L<$#hJO9vX7xT4D_b)rV-Clfakq>8AlCTp0vMPCl70}CsA z7Pknjl3pzj-)q50eU2_f3L2|N-#>;Tzy+WO!rck9&AeV%hVafCAbB5F9DIG5jSi%H z5v7?9HC3zUad(rKzyxqCmF#$dQ_uund~yCAzo{#)AacFY%Pg_}V)Ar@j6kW4R=}2d z1MstJfb5S?WRlTfjV;AylTU%n-faP@&p_Tws7fvHn(#1&L1$nZL~XHW1lzB&cTwCyt|_5cov$4>ZjgRo%=M% z_g|NJ)e4^ihy5j&$+g|i9SVD;l#k8YlTtyKUmcvfMjW`-HZ+)_I335}&%d-i+jcNi zU3;UaieFgJDR=AQJUjiuah3{y?5NbvP7`#nej6O8$bk~{1sx+fb{(kX`Sv>wCw{dC z44tm1*KKZWWNwQWaMW!VA@96zY(%%TC=P}wC@35~#*@+F11&5v;Fu4@ug-q_?-}5p z;2D+4e>`wu#h{z*7q})>>LdhfDvbv`XtQY;nmM%vykarHSuyV7bNmKR|L|MK%#ykO z^~(qi@^_5^)HmbSUs14yLrgqxe0hOFZ&5MMa8+oSKARMNH*Aj&@!Hk6yWuvEcgCj?p850*N;%I1 z0=-UL{X)p|HP=!k9g*6YYFGM}-#F@o7U({xU-1844iO_Ws@ zc%#gWcyU(WS(i3*2qvhIt2nc-&07*8>%LBmna$rUs`}RWv+gG+Vcvl^lpX9i7&(aS z;wjk@MsX;J-F*@&BJv68!R>7jc(n8`qr>75e+5wyV-02B4+3){Z9MPT^C9wF`v?_1 z$)sf!ud-DQiiLN)#2Wotc1PF%5l(}7hNpu=-Uq1Aqb~cWBew6{oNNv7I;_FbZBx+y z?l{@-WfZgV1}Y{JN3-=UwFy|?WHkGrxcl)`+-VMI2_OgG0X4qYxFCguue|)H+rDnv zukPaQ4nnagCudzHzOFC`%q zMNoY-SyLnmrp;+V&+85x1kef%mG+JhM0+q<$4Xv-k__4h z+^M{;Kypxlr&JVv^I0}1mR=8e?U}@Wh2yjn?)s;&D*`=PvOIlWzu8k*qZ75MhF&HW zGB$Ce)?x-yZv$adi?+y!y+JIQS>n#5+-tHiB%k>~8+_+;VAn6Tb*b`?-M1MGEF%af95+9w@*8m3G7Fi20 zs}zS?8JW01S$>e&A#p4p4V|2T!Zlh9)0~#Z>b-AB=~B!(86;TDEL_>S#ZO!-S=x9U4{wN-# z{V*!zzZ`Pxtq}v58>AY%0#fJ_4JQGu!{&&UAW0xikP>Hk%mM@la*h)AEwo97lY$|9 zheZP9;7A0}!H%YVaVe|YBr7xXDvi5SaNj$>12QzxBP5tc^xTzpHsQ^u1YhE8GOIlT zuA;1qLQDnpYJn&NEu!kq#PReG~RRXf}ifX%D1Vvz6y^%gQVu4}#dM zBi~eBs&U*1y{8;B#bwD&kY?yN3;p_745Y}(i-!gpr1N9M72qRt?EcAbz4D=N$4D^& zp*~vOKO=)t9eIzc(?bIJ_mt-_L(&KHbGLdH2V9F?+GH>S$xpE9z@n4RdNf;R{Le1U z4KsS=e-t)v^Ee`NdzN-~C;)XdoB42smBy8)2&uO-oK)nIWs|#p-4XZE`LdV@=A89! z^X%8}-{@m)^YksvqKYF{&5G!Z|7|>0Tm?7{P>Mp3$0#?Hv_n>uKnR$}0JMEOJUf0`AUj8|eY`Imx7+SO(f zYAf1|yWnDoS>`j)D9!GoXh}Ot7y0mb8|;D-qW2*7dm}a;iK<-)Au{(-CFsHq?`p`) zBn zP#^9sCv#26S9ASxN>ZVE#0UDDf&dzgtbYH(4W`^hGbdh_O&!Dpl<&-gRKdB`eDc=n zow@ila=clC?$X8~Lo5rzpxE?Np~V9lt@e->-ebC&&H%09++7LdfYw+&+p%A7C(K5uG76q@mK zlrN=@M)bX6YoNe=ff(qoWQwZ43o4TrIt$zWULW~F7{q(_@o?Y^y7v7ruu8jmgUKcZ zp+uDU@d_z=-a>Xm^|FdhO8OP3lT5ASIiOQ{*!pUBdaMJj#-On4s~!u=XOImm4quY& zMIhajpTh{+nQXq+oY^f0dRwe12VGB?wL3lL=4VV-%K8SMxGo`FG(S-nB!~3l?yd$W z!l|58SS<+x^YhDPLU2tG5LyMjsg@U4WL`3&`uyV5I4J*&2$GJGvfJ+Up-D16h}@(O z(m*PT9m|5EBXi(HPG<&8Tjyn+*8?^_Kq@8O~hL%F2Kz<8;L+u-a&; zl3#Hzq+mL_;lqxd5i*5Fhp|8q_=`|8seA&+Z}^p~w}xF%5&(zLy)X+`76zAfF#4;# zWx!?%p5HcqzM#7-KLe(x(i-PnxqZvT;U1Ye#32=>Eq;*NOqrOdn|+;{#_i^OD}8qd z)QwL+??~AEZV|Xb={i|E0V1CkKzBGoh}^6y18)&PY!;!Uplowv*WX?T@LpJ_3tl5XCQ?Quc7Mw&b^bt^K# zc;;#cg&RWe`e%`0yiRY~{n^)DF0gSu;9iPA3ZHu3mAibav*QI$X-8#0?BA=@ z;~^MaNvs!X7GLst`~M(r1D8#L5F}9s*rcs}*1)q5i2CQHIhz6V2Y|cXc^mNvSy~^Q zk~-}?$D21tBgGS1oD~21cThtn!T!&*Dk+vJ_~}@En#16zQs)nRh!E!H0*M4~~42l|)25tAgS$ep4>Rk4g9wt~~Y< zP>H~@!zyZ@q5aa>N-q>nb`CjTE9|*s;N$cmr$rhPUf{R^Cuoqs zJqESK48*;ag_UnjO_C9*2+c@h>imug-rX;C64+So`4`N|tl2`>!rOfx6^w;mdp+4{ z_}22M0SNth1GvllHMmIB+G2$8W6XW6u@x>Hiu!GsWltOSCbC|*8vHB>rg&XuK+0)f z70FXkmW8dxBsZe{N@Ux-eA(ybWQB1jm*3J_%^77j4Y9FXd}jIRZWHGb;zMHiMqs|@ zuCHTG%RB5wphnokvu6hs%f(n*f)vxVBk$|H1Qi4JRG_By#& z$iPg0%R?41Ge#=Drd3&SC*u@O;>i96H6n|sc4GN`>ZDX5>nE{c9~T|*9_v=fsQ)Rt zeIEQNc!7R)u!;W5{idgyI9!a;%^*2rS?b%7ECYRBh5Wc-1e6Di3>k7M1c(R8jLJ8W zaaadT4Qj{L!>rwNQs49V3%dIyj}1_G??6w!w&2?YW5uWH?@6~yU-WbIrkV7-*zT`~ zmcEV5xjMl81jHtt!z6eO>{8p|DpT;7HKN|^FAI{K=c&=&yxaB^>Fu;eCvrKmR~w8v z&Ur7MJr^@aoMDN*0TDcdZv;;7YDiX&uvUPs`%G}|YZLk@&5eJjuC7W#L~NxcC1`B+ z+ddha!krp+i(kidLRW6D*X>_dFOL7R|CG$3wsEsRI5?Q))Ai>MSuN-*RzQcw;mNfG z?7Sm{;NX>ai~JTUynOJi;-ON?Ic9+euGd`(wqoCtMiaN)$BOS9DYg3RKCL8>1k$MC zNa@`&4cF`4hGMM*Xz0p5vCfj`*ZAWpaYj@S*-OsyvEB(?v^SpzDb&hep z*Q?^ch!o_8PH&}U)%e1=0V$_IsPAjW=UB&rN;WuSEU5N?aLvj<*kdo~uk*di*{K|2=+8tf#5@s`aRk+1zDE?-;ul|3NNlof5n7th?&q=(xCibG_X9 z?j2|5-VLIMKYS%kG4H69|Bs-u%ILHqpIF5zg{rq1{|ITICQUh8bqk1vaX`oFBdL&4=c%6Oulru6bJMg0A$T_(A>wN zUB?$*{VmztZ`uix@P62Y6A&AIi+)AUYqjC9R6CZmJvk^}sT3ZkXM|S@MNya0opIee z#&&=NylPVSjJZ$jq`W=wDB6aKFC1y|(z=eKeS9JuH(%o;)s+?ZHrv?Nu|nNe*8{<9 z$@L`iWZna`4!^KY7aJpcHg)J5LPfl3JWw6|qy13KMwB1$LkPE2UmhH`b3iC(xTv4t z{7pW1z#o`J`0#Pfu*EGHx9iJ~v$R|GvCruoT{A2*TfBM0x*QH|J|y_mLETg+xV~|q(I{Sb@K2FrSpaHuqReU&(xU0 zFZ2xmk!?Rga{V+hbJj&l4H1}E@$yp;sQp%pN|f3tyH8R`bCH$Jb*mXxXF*8Jnu-Tu z*M?dT!lZoZKp3%Vo3;1KK;0kG(&GFG%`RqPVkkcR)5`~xG&qIt4*s~Hy4@PLeHQ!! z#S47t*BD6}0mtj7*jydWa)vft<9mBh?7`+gEVD;~l zH_@MjB29Ls+wtKQZ?+1xttyDV@ijxPgU$XZ`h7uw(qH0Tw+0U`ZiVEz(%ipWnpAPO z$<&LgPGYM_B`o3c+I|GPG*@bpI_!LQ*_GC_q;ZzEpeN@s&6 z2^_h^7@&9%5P@F63pQq~i7#OjSlKy2>34QP0d+w1#dWe=XsT#EXcF;g<4KQvbZ*th zHl4oyef5G)HWoLE!sx8%7sBEDZyY%}nJ!c|xBl#+q1b8=)Wwo)x3AHO(x17E6y0@{SkruAF%a zgsO5)gLdW#YK{j^m;bGV@*;f;eKXyFdJIoyF$+rL`8i-DVLR( z_l;$la`UL>Dm8$TSIAvha)OeXKeMt0B3@>{(C_4_TCx_#9Z00YdXBl8I; z`UQn2cY5;W%TmSjPrFpuh#Yyy%UzfIxc2vx_%)AhJyZ}yF06KMX}tsl zjjj>X>5lrA^!MK~Mu$;YZ$#>e3iX^!UOKUb-~_p*7vM0Q9uzNe z=_;LY5`SoEMf0Y{Bm^&$)p{Hz68i!`7vWj7o_b7g2Dlqr3TQ`|{IYoI3O9EzXJ*Mw z$%~-ry!D!Gb;fg{bvQp$V^mjRV1rXqT$CF@>d)x`!}Jpp#Na4sJp!|rYveK|Q=3X*vf$%uL#|%?k@Hx5_P(QX)2*k1F9U zZ?i;aEfbsXo%VF$d5s+}2L5WEt`+u}?fo)MOoCmg!4~ib^pCfPy2U76OKc*+Q1U%B zY)uE9mSe-1ul7eRK9Von~s501>2P+$<(yKv$Z>L&FiuSgNG6pDZt9HzFG) z97et=shbyM(2w_w9eL}ak&^#r=WmmQ^$Z*)Jrzboj8wum^0M2=aOqpow%5vR#ftY| zW|zjgEdL1xGNZie3M!kA+da7-Ts=Ifo*Inn@%9_;oF&7p4W%@6;%|sgSFiN?IpH~% zEm6~tlZR*5(L3XWVIy7(-NxZUC#WhO=)9%c@*e>Kq-T@>jbl*YvG+7^;XBomR+-e) z^@_z3P$p0-PP{x>K~byWrny__f4?F~ko`$NXSKJT z6;687x5Dunl@1Uk{f@f@+$?bbWD?dnM0tHl-!kI#OlhCuX>AfAf7pMtrE?e`S012ndBFfEcb%0C?0Mx8jtJo;blUC*;AOeN>yRNf3ri8F#T+16JG9#hK1RV20J zeG^du+}c$cNxrtTG}dR}-te-M+j_2_97YL9k$bLO--@%%a3mRV|Gr1fV`9`S(emZ*W9+SGV{X3qTIJud2DT5S zA|?Gnv;oWlR;Bz3wql?l_=YzF3R`vRSyjEoV0Bwd@x2K6oW|jlERHA+hiPq%e{7sG z317LW6KnktxGYH%8xPn4Jo|y)0}68P2I4;i!EaaUcU||6Df<0T=2y zy=b>uLWmoxfE*C(T%` zu@^htmcuL8`nnIW0{Sr@A=*wHc8n6-)-O)2arca zNmN&*U8B4P(MJ5|wFTH^SwoA)dwp24<Ra%< z>ED3jsN!a+Mr}%GV*PbgoEgY7EiJT4M&i%Ydjk`m-64z+CwiAcrx10cy8Sj0^qJxg z)f_uCp$~GK6V1kr&bASe0($L=;2$g3g&~t`yq86MKwNd66+C9^o?Hf5&7$O6+Tk!o zB%!dks)bip9o`nl?&}!B+FjzgO(Ab=FJ)IZu z^LhbuOjY%=z^;8xqMVP$)?kMSy$mkrG+RFc*+k=2rhv^g!?b(0KicZ5Uu^}r*~w$K zs(wdmV-;Qx=A{BIla%xdibK zLo)L|9hw`_dD=o54gW5%chvnGQ;mH=?l%-De#a8LnhL#GyiC}M`%w4YyCVMycQf-_ zH535+6&b9E7r9)gYUZ{ffTOUw0fwxmfCWMLfv*cvNPslzcpIR))jFJ*)gbV-ZU8O; zex*!Uhxz?ZFZ=?zaje-$EM@mw4h&_TGCWIc z2IBiJ#)Mj9Q-c!DhU@LLUj8TmL-Nsm_~N ziP+y}5qrXid30ivXf}N_;h;2cAjNeXf$o{-?MTKfyqO{b zQjFGY0&_}@_0}^b%7H#6@SZ6RbWTxBFyTImNf^GQjcDf?Aq`!*yFu$kevh`hrt~8Il@dirm1T^5MC91;Ig2I;585Cb*D6N$zXadN_yKj@r-5U1hn-9Pr$pl{$ym$So&E|O%y412QK<4;rRHy@T{wxiXs$WP)v&ry|jvy#A6HpKxNRO|^hqZGkKVdo! z*jDD$GO$%NF_PYUYyOrn(b2vV5SPzVi_aC~W`^l6QcIlmfNImjU0v_lc>asD}7+?jPX^6o)`9xob@ z8Eg@QL=F`%2zgaI6V!ifpx&Gazs}6nGseJHMii1-gM)SNlel`(doS@)4HTD(A`z5Qi-?22pl;pjdI`a+COObsUn%%HJ2?I>;GGh47Wob{y9ay^dMkE zYl8`w8Xj037_dTni1YJ%2MO!52QXF!+#z$BIY3dl?&cTS+H*@7k|V_L@u{K!ggDdu znpl~!Ga_6Yq{SQl#DcV~%EJSjD)QTbj>+)dlvBK`YV;M@inrabn*I>CEyAZ>(-qi@ z9v_^~@bGckNosFyr(UVre-i3#!wF^gU)nTHEJ~YSN`M4=cKQig?HsfRi<`wDvc&-r zRvgC9FVh6T4FFE5!G*HDFDAWyE-qpk<<*OUW*7w%p3c*Jq1h{TmgLv7w0zZ5pQjhE zvxg@xEWEd_R?S~`_4B+zUV2!JN`I3t`aa$^rX zCbJu8Kf$4NZSP<$4rO=3jgdZ()u7#+QwwkDggTYK5=RY+oHs317%<%d_W%U!Q5wm; zx4G>5D|WxGf}U0apWZIyoX1Px&Bud|5=CA@6Cyg60B-L#=r3?SN%3`FHOzqmc0T=@ z${s|N_B~NpoF?r!Q_VZDY&OLxSdawZJ#)b(NAsFyly06@#h5~@%8uPoM?s_6ZPy1k z+cyqA?(z5&V8}TcnT^{CFmQG~pMP@O$dTo1s1-Zex4?@^+J2txC-9#OJ$zPpOI$pqvQJbgS9F26ozFrQL zRG|LGt%V|n-7fxY8L~<8h4Jfc5KGZ!zwZFgvE^`n%U828YqX35f58A zyt%mf<=Kt9Bip}HDw$rR-4_boe!j2?$nE?cFS*lHxSrgyRRYOHsOV{VgdCu%jY789 z+}2#sQ5}sbh7_ryR7p?e8J`EIq~%>9Yst#^{iJK?i>?4YbS^>X4*?d-=?`3EI4ldK z@i|J_Yk0>op0m2I{k07dM)0Znpo8PZ?*6_1H2-t|KY!|{BjaQFc)&i7OB1yHBKTlv5dqhz^}RD|oMSsy@B+G&uXX|~ zf$?ZHVS*rcPOcsMCApf^Rt%@pn?vxR)#yMog^u5aA)BW@o6EneJTuczM;R<_>AqB- z>qs$Ibev-voMMWSU)^;k)q#l=k`9D?p9w&zT`_=CA^8{$g$ytlmMs*KxobD*RK zs@8C5aCKvE1C--Xvhf3}Rh{|Gb#||e#Wc_ds zob%VtFwLeFW&zEDFb7M|O5?z`K5=Ntl!ulcV$wvK{XoIw4mWr7uq(Y55oee-y_QxQ z_o6MO(%)-t8DhWS`=1*hP0p%JSQkoij~hU&yy3k*3&xTD@?{;{ta3Wh70zd@Q}N&i zL=lU?EWx`{iv$B7_}}>>Ci0jj5kAwlN~>HUC!5p2%`~ZS?-T35P4v^ao2B$%T`tlf zuj6dXJKH-V#ceXu2N;$#>UAaEso`G296_XqYP8eqbS{1&E;9L*J7?Y@b{r|yot%>yr9m9`Sr14{t(#bOhv%){*KGpcoOW>JvuqBgUT5Je&!F(F+;fi8F770Bt5G8+>Nk{e z=rU(>9C-vc=eG_YhWHEd+Gg%xg4!BO!;n6$Psrr(t@K0-;6``@AA}sHbE?Fv z?M%rXDed9mQtqOAqp1N}-A8f>Kg8_Oe}PiiQTqS<;irDNHLW5fFdqvFkN|%uJ#sB_QGoH@JX`nv{_81%8&1&#>VQeF5JFvH3&~RCJ3wnF69K*%$RBz;No6P^ zqHWGn#yI22Q%eh>@QdH4b5ri)7n^bu(Ct9k&0Db5R0m6y*T4@P;#!n^N?ZvV@Dxq&+CD;67qMw{ zE3>O)^snY||Aa>qG;R$y_IcH|!?-ACOO@MSLgo8GurJe;B=L~XUTqt9k0Dng7!_6& z3^o^J#(Y@A>Uti!QIZyn5`o#8cW!gg@0(l&-J9depz8r81fRBr3YpRuU*>XuZW67E zNcFL|m4&`n6?H68vnAJtp7!*pBOZFiCYol{(-o%Uj~DM=OsvNId#02Bd#2xd42(^( zNNaHP7RJfN*585GQTL&QNuVl#e3I@@rer2jw^86B}q?&u0RO* z4ao1azwih{ADFT8XJ6EDccRA&>SHyw#aPVT8DYr&r}A`J4wa|m0KV-5+xWJB6x{W4C%t7yA`KVfab^kQ zKDM_Q-&-2d13W^i3(wbw-0ZX;?_7SLGWH~BbTXHnAdT^Z?0Vv9{{xgxiK`8#IBEf(f5vhnQ>qeNvREs;aC;RLz>P!p4yLO;{56ST-G+;fr9OyM z2N<6hw{p7)uPnl5rH~%5)r1^}K`xOa7fH+#N!~Zkaqi*wP)G5Z+UZ}(w?QA}vy5Xg zU$7Yar|5-xpC|77c+yj~hgPKxFAe3aN{?+k)M_TAK_?$~ye8882*kaFqr?Hwb57+k}uM}qfcQMJAv64EX!Z>}j>g2fv3 zp3F7cAggk;eJJ3Lbha`Qoo%ePKRwJ`Ic$xp12)ZVS$A=XZ50QC;vHl$r{)%Ki33AB z`g}W^HyM;0EID4LQ&Z=q@$Z7AdqqTKC<-OcRx9Tgn-rM^)vr{%Ykp$0u%%hodsy?p z97ocBVWv>WzxXH}i;84^K9$wT-mkyt`h2A;GfZ37V=OH+FQqWWhCt%_qG(V!X{W3b z5a1Z>4xE(1)hvN@hFI8-U=|@$L-fIAm1E*tu#cy{OPgV0c4Cu|q2$LRPRPXioeeG; zp$R{4Z%zc88as+RO!xzC5~5gS?+s5_;lqW46_{tG_JSw@&x`q2H3_!W_s&V8k=uEF$T^L^oFYK&fBc!#o3;QdGrBZMGM_69Y3BNlBufpbx+w6 zvqI7{IFnt5i*-VI{vJ_9ybPOjH&zQriBtiooZyA zz^hE={EFVn+PK|ZFQ)TSkGTRy08vXv@TEuK=AOYq#rk4kn^DJ6R3>Q2LQ0-;{E@}~ zVahe0|H13Kk{%gC<}&(cXH0Wz^^T7&#jJ1*yxvC`Jz8hf>ga36uMEU5Oe0G@0MK7J zjVn_OiL84~-t*8c`MUVD6>kex1<1M5ChxM-2UXUR&f~H_i?UkJ{$7g+0<7dm6CW+K zqnIVl(_S55ROAp@4REbkb2K`qZxtaXRQg)}j(Cu?zfBv-k8|ZB=9_$|GBYQVb2P$keqsLUCR0BWAGCtN!HpjHH zW-6@-&+y=*h*75fZa(%^-U9+Ip~pfr6Hl~q&DeUpv{Y*(3X6<(eY}^XL}51hhR#o? zH(L`dtBL)c;ujM?eW@G_ONJ!m{EnMNBaxn&pGWuS>1jA|#pFdtqc(E*rw$_PecXp;$5c`O3#%F3}^uOY-ef>HVH$qTHL!Z)$n4~`18dc9XK}Z9B zhqyOEg!B9>OyG9MsQ@Z(YApefGWt6KFpG8DZlcIHoLVecpVucMjg5G+AA(x=4TOH7 zU2MuUlmuHnN+3(u_E3nsCJX;HxPMmx%?3N}+VkEsotMJ#-wnV%^)dK4DsjGdV3c+= zl81r6jQrE+TgNm*U?r}g0v35D7UaEqyTtzX*8ogll{*F}DXlX*>a%xH&jHTJFN*#r6Ii2O(IYEhN^- z{OdOyCvYNUPMH&(cuJHYVKo#8B`I?`m)XekkylrNr1#-Z0qQvN<8zOV<>w3!9(OFF z`WNdg4>mh|$UcZENV3%sC}3FjG7ZOp7N$VbYIGPD!52E)DzZnPe%%%XFw>c^Ewv^h>J;`^oOi zdhf1=GzT$HD9~bKg`7k%b9Q(D53?k2^2urY>rdl<53}<^<09)H#t7R+y7>6=0+=Ni zd%js^zZV+&5S1Q}Kv+>Gm3&}yno5ewB@NKG8GeZ$alF_G4vsHn*^5wJc|YQ)A}5` z5~P^@y}e#3Kw(3KXI>%>s{Luu-98^7Ua;X9#AmJ(ndl&>mJmrzLovewL7zNCyS5jo znUc9{Ke{psdf7bMc^P3Q@;t)I%M=gO9MkU~i2ssfse4-o?1C&mfEKSq>q4Z-W`4TQ zb5J#<2Vd!gT@wqX_eWppl95ZG{F;!u-37}Rv$>SJLq8oB0%y~9|90L%A~Q#e2Vv)> zH&cI)6Z_YpVB)FJeIF9;P;MrpXg>BZ9*^WII{ZSHkx7a*82_2|+4c!z*+vNX-N!U? zPetBW70ke*G)}N(t=h_D5w^LRig=74^Z`0LmiOum`8c*&3MbxE zVJ!`(S?ci1T?>lcqFr(up)OZ{$DN}kp5Z5JB=0DNgTAAmhJ54_j*F`{9<`Du?|T{Q z=PWSRu(@IuV*|qLQgj)PmX*yt5)Vu!hYEMh)iTw5kwEjlmSzv#vPsiF)N}kkuT-ny zfl!UNLa5wG;j^)LB0RzT&6MQ}%XO_@G_#6Jy|n!%}wxy5*cN81CUxZ<^`;--c*%VD(9Rc%pY4}jA^yZh|BVO75l70CZ?j$otSuSUa z?|@YCP`9FvJTY(nn1XrJv6RJNwMpRCs^2KsH9uXq1(QRHbe@kJX#3m(Ma+&F6McB* zGwXJ}#6n-+)-d`s#Ban5Rrunrf-KqlkAixamEnp$u0i;Wy*L7_5V2x()pW9%P~xdh zo9Ue2=w#RLX`Y5m;;YaW@&LEK5V|Y*oafBb^;E+RKd+L9U!6*BT;8d2?-Omf*{ayq zPV)@?zG;*=<#nk z{T!4`?G-Djae@S?Z(77IQXp(|d+1}j)${bT0!{>VNV;s`Bmp-hx5;j!q8YCZde ze?i`Heh(YB^ZAg+SJTwce{5+FFx)6APG&PlcC2h%SfA?Vzsu12`0HlhnoJPXD& zUpu{7v4)nA4MJYp-2p+rHa81@rLsJK=3FajO`F8UT8O08A$Zn6Y9Yn6pD9&eL$#di zD@F>3Nq}|$1|~*J1OpDE>R$$5zQM*4QdAGMYxJb6Hns$m@N#c`dRkyMzVF1Q-Xd8~ zb5I3P+njN)#F$!qwql;oq$2CSk!?8emD-Tnl~JMUO3xqQ?l zyZf`pNw7bD@tJ1LjDN5tpW$pxRBHX=vK|MmNX&2pI+lO;YqC=Dq$qL4WDUMkx}=cs zm_iylMFSPjn|TbPnTnpn;1{-DHGQWbjpOsou$-XC+UVn4ZdPJBVHD%stqp5V=06a4 z7~hza6ZC^(ZMNB!mBnv4m8r8~o_Wg0zj}K;zer5RbxtJxUGVIxM`cj+Z>=V~dm4d0 zW(8H`HDVbJ@UbxOb?c3)-3uLb?!Q&2`(I4?@O8+cM-w%$DxdpNzatr{{OAqBMpw@) zaa5pMrF;*)W|C&e|J(!lIA}4AWEy^R)Wr65T3uy9(9kN}(i4VVfmm@pqc_kBrLg7I z#v=!QkR{(PIuW(%e^hph1VLDsO$-1t$79i^c}1=%a28gL9V8(V){4%U3P&%1-^u#D zEBDhzzdN%)LT4w?=Afk5MH#V*Nizqx04T~8ESp{`8E?dnTx=h=dhN4zNOt_$8l>Uv zh4-yONSJD*?bJ$eizc-ep-t6krrfxbz@bY;dfePt;L=xJ{n3CGT0&RyEX%6SSA0(L z>V8i27cL2#jSm|^IC}SHzkM=)ty@30F$w6}GBH}Xqgjy)gkE!%s7Bj_YE;W>npZ{R z|9op;_Df?Weblo3MCxo(PN4w#?}SJBzYK4eU8maZQ5X%p*p4m^Tm|5^AB4?gCm5T3 z?F#_ceFa3$fD;aQ2xxL0N_zM;sP3!OwVxl@&#Q;jRcC5(Z_ z3QhF2LN;n1{&H$dBs=SEQWDpKrJm?MkTG;>qS}R^^HGH-2@UpJke7Y+4k@zIx?3b9 zs`UlkyS*1!Mh1?PkoY6Bp1bc;Jg=g78(aa@4iLdF9xs@leqPer5YX0WKRK&3g-aCV z;O(PR?LTvp!6EInbXA3aa`a2GnQE5-%SzZlV4vp`z>Q|PLlafQ;zOHNY?W!%?d{Kx zKTD3ORqjj8IysDusS#J$+w4Rh{yS{2`Y(8V_I-B$D=>Pm+Nty2ngmWQm+H^qLn}*w z7{&L|Ol|zUp!4Zgdl$DFlC$RtXJ^4wx0_)(^o@DDrQ9!uriL7(<>jf?0ST}I|C(1L z&A~NnC`zX|dD6yQ%n-n07o)$`+S0*NI5RKf4feKTh}r(xw@_+56b2B1lRWc@^Qpzf z{=m!dE+SI52o0^<@#MhAk&djpV1T);JM>-3{%0ogi1=EJQZ(D#o2)_qByt_xWiC~` zVUyANbq&<(&&|Eoi#DK3fV%LUe@gHgjyR^)1C@Gp;bS16eshCxL`HlCwd!17AFFj7L`Cqa}SYT`%rw}|4BTFs}&PTPDPj98&Y;#6Vf{qDD9Z%;p7=+frb#NqGdlL&JdOEmic{mwT6*k{Zl zfdQdIS)aEFhFFR@?LQVKl9h4W?!eA)Lk-?S7V<~6GMr*1&loF4{o8<%rarw zM?D_-OwAu^#v3$hz!J|KeM!b1o--=#!B{W&B$BApzRE*h_t*-orApei_AzvW+gI0c z2=3_@f1M?Ux2OqL5=w16*(iv+d&IYn$i?2l=xdn*-w&5KcSG;`owyWmTUDmzq#2oZ z`ZCjp;1oz3$y-X(bT$l#+GCEX=B|-+CowaQzHw0C2%{CjBQLH({M~nrTpM% z3Bw~`VYU!=O_&=>o2$wV$OyfG3sc1Nlk+?!L##94Gysq#oJ|o9lW`>-U(YGudE;4u zdGATDpZWQxcl|Elxx#IO-I?(83Y2HcrU-bydv}HKnRo(BYuHhQ4!*5mMM<&#n>f>| zeQwt&UenN_HX?YIwopXX6B1*VLz=edk@I!Nwy*IIFb^_cchmgvwM5<`;dEwq0WNP=3yj;mv-m+rGP%5iHmPKOmSfL&-{V_$oYrf|k{nx@SsPs4pWyn_2I za>ca^h3DQkao%k7z&B<|ym4eeX((rEQ_<-0S@NV7|5^ptgt-&$esFA`XE|~()CR9Y zu_;LCjQ+IpD!Si>^e@uw80$BjhrF5X=K-~Q`}>*G(?z$> zboXSK%-@QWuVxVAFa5rUP$;au3GhUT6e3Gm!Bpw%&-~6JNvsUF4>2-`SeV?E$TL%m z&@+|F^RL>vf#=6N4k-B(&x5^mEMwvw5|^uyTn=fyph?_nn&3iVi7MCrX^O{R}crrXhu2L<}>SUUxlY6|?X<8cu>( zmYB9}<$c3~Z+{f2bjL(?ljpf^-?C*ip=OjuQyY?_8S}Zfhe=>?>!fA)D!qz zL5f+*nJtdx!MLF6!#;^jvmigten2&zxMOMmTi_#0ZU3hoA010l+&h_zXNRV@GiPn9 z)sPyP$AVv{9mjf%{y#N16B<(Xbk9>Y`|x_9*xN5iE-%oksD!7Mezg_@mkB#qbOokk z-8CLkXZr~$!6}@A&#^PzsqZfV0Z=-rGU-=Z3n!YcwWZLcUX?)+f2D{gW0k_#*gavvXg~OZuYUM!dum13+Nq6(0ke_mIoEFLy(?KFCT-Q%y_;7Wdg~ z9lkpMdAFKgihi+1R(8G3K?WTSfD&w**iu|b);BSs#uSoPm}>?|f7U0ZRK9#JrZ86< zO6NZv)spbIe{%j+8pX0~_GV1+BdQz<>6_oddxlRFmdt3XAssG(kk82l@yS#%j zS2jhqp>^x4IO1(!{K3_Ab}?MsJI&iJRvh6q>S-35q=4Q z5%Ji$Em$rz=)_uDRGg`XFvcf=gOULJzKKmJ|Fs}KKEA!19TZ{nv;^~AFmc=P6KTJf zBilVxh3^lqu`W9#{?`x@iN;$}v!4b5PO_~)VeXxaE%A&gi!u4zQ)_?+z!_^mL$#!g z^z(#1^wOexUXeRfQR5QhrRExG2UtYx~wBLw7J*Kkqz4n-PRux=Cs z6CNquTKAi62tFHXpwEzG5A)AqhJM`YSjP?(gDlJv0S$rIPsCV3*;Vz`johemDsPc5 z+g^d8^&zM6#3Ez_*PGR09BcpbU~9bprM^q}**fWwunCu^WkOaoDBLnH*=G+@ZJ&Ep z>A7hs>x`e~MVZ0#ysc;)E~ZvHUO|~M*QZOF1|Xz{g~++WMXYj%oH_StZ^ui>3$w5@ z=8ZKhz!Xk;7${kzvO?>ewDvPSz6y}u2f)DkiyPtrUML=3N<6hu@{S0^*mKue7qTxE zA{Tc1SiXjie5>Ex+2foiYIXzn7tRvs>@yH(fXX;Y-mLL`{1HBVx+NNY+Fa1%Cg5Eg zY$U@1s~bD8cY{_hRM&c$Qf2P+ZE3MoDE|g){G`&AIGA;1VLA_B9Sbn7Gg=E~(JntL zy4)O~E#)sGN_f_q@X9~vX&K3kPv5F~!`wPnUoihlzik$^@6;B6ozBo8nXA_sJUyHR z!j!nR^O27KmRyWX<)-@IK2M{a2b6)hJEkZ`lroi_om=5I z_B{utm_@fpQ^W9wob#rJmJsgIb}Y%BORxF;*#z(^kJ({y^^*|P<6XKoKYy;J@+d#l zl0m$P!raB^cAo=z@75CC%uBY7X#@NZ(}Z6F1s_^X7-^atI`x3b?P63<(XILi7Qh~b+kgx(tlt!Elzln@hp40UJ}0W<~9K{Vp~9# zdiO}%t>lOfBSl!qyDb)BHH!2kYB?x#ni^ZSgbPPUET+Om>{Evf?6oVpSr3 z;8OA-z0q4dK}ZG7PI|9kGA3%>YbLnS0}10&`TM5kS3jN~UyOY|{@tpmAeZvDms8P^ z`Hu+l5B5vT9Dj&g1Ip~U>588puEh<{bLZxI0S@Esx_zC}JTFDob-$489Z|F;i*2xf zH5$wDq>=B!-7W7217+}CKoqIfWd3SZD1V$$>WbaX+SpXr*eqkH{K=) z{PAtl$!uL=t>cwEd!ldjb8>Z`P{6QElB)3PMey1GW9uyAnrz!YzOhk~g3=|ZpeP_Y zdKjQIf`H@%X(UGX5EYeFQd*Ic7KxEV$qMa`n#BzNkkl5?Wwa>zo;-6;^Z*W{4y2>uFIq6@AA=+q@6qC!+>2Wen=^p|W($yp?Ha8!?v?!z%XR);8x( zJuL8R;$?C>Ru>iN9dy4;9Pdu$5G0p%02G8Wg{796zeO5mgMW?FruDvswP*e9{bLiC zQLBKkr_P>1N@%{IH^Y0N$Scxzj0yTU#N3Vj$e1_}=CQ z`S02^E^({2{bzdFFK&s@K8GB~D#f@Osc;kd6D!eKHG5{^7xA4EN$Iz9$fnoqC?m;U z6-=>{jjXu|D7I9Rl|FSFt7@^qL87=#8_d`4F+P-F->eZQ|bW=AZ}Qdb!{{6!^w}Pn%9Y#%xuM3-0ShOi;~)_wc|yOjw&Za>jVpD z&DH&yXsIp_@vp4hTyI&F-yD5~5xi!0pZmwFM0U4&aH{PQ5$f9dHc07@&Jp2qx~*{~ zVSS4eU4zIUm9Ay~wYBvAB|$89rwW?OC^FC(gRToHZheTI9XCvmDDK`@jfDK&!=OtJ-4ruVz@y4>N^oPemR* z$d9D!q9$=P&)42=uPIW}lUQ3&CO)xrr5<*RU}hoXWgGJVrInXw^>cijPV;HfK=B(c z1k$@YpW7|NESy_1vvzWo1vP%Li)g4gF3xt-qKeP%RhK;#D_IxvY88B#>EWK_K43#(*+Yu6VRuS*7;&EFS~0&`2uQD*oq@rEzRhq{WpNm|WZ zP2cx)Y$eyJ^Ybi{YV|#(>HRf=&;FzpL04r8Y#A_VNw67x(!hruR}1$N6FJ!@oA#L1 zh~u(S1AJX;*j`d&+xef!*e$UBA*4n=q@Jxt4xBsf0`D7aMgk90RKbVW;?ZBRimO|c&OwSG7b{cC50RjkFYd+Hot`4syVYa&?UnoE`P_(TCOy&a z-2-iu1iogP_r@6h6_hSmfEJFS5rF@8;n0v3T}-*GghP*0D&IZLw>WYr1b|bYd(l5(oNjVwipc+(|kQU@B4zPRZnC z-53|IvI?rMaNmw~<8S#Tabs$q7|Y!AK4#bX1Z!;NMa)o-plR`PxTGdq*&^X*oDaUD z!jJ0u+wBtg_e^AECxkMEt*wOlU8IH#f&`1IfrZ`DTxmKiBnp&O5hi-0Qc|-fotK4T zwCh&kn_o^&K6TVYB5C-15~K|d7wIlXjPCiB;a5^y`y`Sv;@8k!avJ;_z$*_qlDO8_ z6&N<_*wH9)kFwQVMMe6;b*{VL-=j`$L)(|lVBJiXE(Lmo+tpJ|-Cm}vrBuX3ws zhc+>ZT@U(bedZx3!{2U$gyUs!(PtOsA)jUv)eUYr!7-0hg^o{i3#De$t~m>=S4kxb zSwZW|MLxybW6X@|a`}zwbwjm)s}dXKEGJN$rg#z8_PSikPj92CKIwdB>a1L#y;8G> zG$BItv^rZLwD?X{tMkhm0>Y+lyxK$d%JcuI7!5rCdbBG`1M4njU|r67FVFb%BR}rg z<wnF}^<3RNfNAU>7ZenteGB zC>&q5&YWEe;=D&qs4g2@JI*~W-W{ z7IWzTmUOVk+)!aQF3}tCV}HsSJi^j?hLUWfznkFnC(q47KGA)9>8!-rBxo%CoFr z|1;1Yb>#f(^sP>pr;N_Z^q}Ha`W|!=qGge;#6zD#0)*+3L@ke*hblp893fa_oLUqO z9TbjCS*3xKlvJI-X5iON)8e*nu9D86ge;>!PPp;6lB5MknmA)Jt@#(8RCjXbN~^EJ zpclXrZqhb1O^?V6-f?$2a7H7zT&%lVs)*h<;5@MG59)%JA(k>vAn`*}k%O2PzEVwB zbix?@+us+B2Dmhgnx1G~?lLL3$5lw_ayjgjC3JN(7{*!1zJ$ifg(eA?K3zTO_l?zB zJ*YG7>CmdtbS1$6_J#(BheD6C$q;0+{Tj?peOiZ_r&OYf>G_Map1|6WtPH+{8=-t6 zj=_X6xNd5jSLVBLwD45mC0hMsk0j>%3(-G>8ba#WGE2>5zZ@M zIl^O;H;x>!W!EdgH4fdK6H`xcF1^6T!~Z!ig3$l!s_5aiKNAjSLXf~5f+=IV4-WC- z61tz`FimaC=cIIe_bA()Y1(alc10OR1my_St=lKPT}q*r{1f_0Ei*kIQ>^7EYN<4n z*HxLR7^9k|6bF0$iCA%#O0Q|EM?&58xTw9mZWYB(Ok|gNf|`mlJvtZ6u1)v3XLC`h z@Ev%54UV4OT!TH2pj*M;Lk|x#han3 z-BCpM2Zyr5{NzpG5zzcE!s@rkq_9cf+cw_};rFlhA5_~3{?aFOljh5@c|%jXC`GX4 zhCzhwb=cGyZ4+%G?H)0HFCx1y!Z0-kS6t^)&r!I2UwH*K)G|XM=Q*^wV5>GD&4pLx zLODk>#IDI!8w`0S12?Gt5n7HqGXM83=Xy%&17n#a*cy|9oZ{gA+m5tU92#l`fV6wt~;HB&WnSd((`mbN(kUoFt0=GZbfU} zi%Zbdcty3**!lSIXY+vTX5FV|mu|FK_HEMLSu~CcjjRbki(~05tFtEm|{T0rK#-ZWgZB|K$TwTKC-Vnh}Iit73 zC}rG_Yt4k-m#S_;g)f>;TkQA0t-W_>8oaCE`WEN9vqPPv!ZFPaR0Lv==?|WKaVmr! zxxT=|KcDvFjxVka6xv7cnzYr&wOm{*_TL+1X)sNm+t^8Ee6j}Sa_C0%1B(^dxbO)r zg<&d}j8RZ!N0zm8T| z1!f;ZL^9_+9YuHml#svcIoPm;d=ynx(PS99+WsNf<*rbHBlME7*#z}s>M@D`P$FCh z^q6(?IVX240ZppAe*t<162`HG4U~AOOVZQ6y#*L{@Rf~zJD*Ll>A{Udir+Vc$(mp4 z4K-wBCR8;(MD@V-pNUrzRtk?M*aD5xCN5^gW=2ubuQBSbesu5Rae<9;j!gVaWg`HnP7%6@zWH7tGn7K~QixD`_a1eBO_dxFkC4bhk$tO&v&EAn3|Lml5 z;5J@V{>~+ko>};f$UT{22H<}t85r71o;tg`rewFC;4FW0>h#E=G_ZlLf%VR^Nx&=s{|SyV1KGzGH8z+OM3`)~vUQ(z`SI6r z(o^=octZvoYx+(0e6`ofuD<@TX_jdy=(O<|=uQM%WN?AVjzAwWMw{9YGbesWYj#yr zpbjsEx`3)h^D-%36;8~hExOZuk{Xm4NbOL(icBswjg7{3Au)0k!5Nk^>|0%v`HY5# zQh?;OYGAX3;iCS{!g+&mgn-M<>m8cN9GqCH(l0ChNmV z-@8I(axA4nud>*2;0%TBFct=F6|NDh5zB0t0sr~LsQNLfewhldwEKLl_>nuFr+ls0 z{0X{Pww_W;4;s}XW4l^N^w0p<3N4H0Pof%>7@HcXj*}EFbc&ri8Dh5JnEP0MNX_!ZFm1@b*F*o+5ZPlwjTC=jkggSs=Z zWx`j7^L|&j(mTCoe9Xs$OZ3VumfFC7fsA5q?zoAr_`cv)LQs{EVBz<+E;-IUoc{v7 z1QywWq`=J}Aa(&ZKfWQ#2?tssIblCT7oum3uSI+VYs(2-uUY8hL6-i+UObet(rX^pNMa zwh{krRgCGcytdniqpun9GvmnE^7A99$+xSSKdM_u<=!V_dLq_SZSOW+IVRsU6?7i* z8%3_PQVHVsLk^KMzrDMRz1)QxkjFZx=iAsCiR5Er^J>FL4-ZoRA$Vw5Y&fLKsLbZY z=}c|Gq8#&-yxZIX4H8$~?Y!81S2r;2FJmC;WXdL-r1nv4D81_UvDOrq_@{S zK*vF#L=m*V?VqvJlS4m{NgzgQ5;j}*K%We#qTzR@DaXH8@`>Qhc*6L4JWQf6e8W;T zKbRtwiBLJH;_AsPXfyUzh!IC(wY@_;$w%MdCmpNF;4AA&RZr&T+jQ@8;725wFj^-Z z9)KA4O02iKbEKe{4_m#?*M7K|DDCGL89>$z+wx!7-$fVKPd_M$UJ*TG9ejpGGg{(L z1&Kee0K5DsXkb`tTYrt+XSLDa|o%YzCw2VrPVXZb|IhQoEK)v9AWa1{W^u&6aJ z$;)bb;bW_ymo@e<#&V{@U!=xFGn_8r&n^?RQ)3>v-PPRnt*O>j>)80Cjfl*&eLzcO za52KezjzzlaG+2d*xEh}!AdnF>^vIh^@2S7<7;Q}t$#uT0t6;E8NR;mQR!qeTuaE3)r zup^iu>TY`0+B&zVSrG|a*A%F;TU0{k(wt!F_1+6jgzlMKMp1)QWuc7O6M_+30nW(7 zSSe4{+$*VNHwU`(=xGJgW}*fy-V7faz@`k{U7z_JJPA9Se+0S8ubeFRHl&G{mgsu$ zp{E;&eK98@gEli#K5@~|fAgVEBj7_BRF>n>#Y}e%4Nkq$o8=J4!#?gsk*JyQ2{+x zD^9tQ(5*q9;-1D%Xlim1r$%z;%$~1I9T)Os&sJ`f|61&PhNbL?!|vIeSPhFS^iRdw z8Uz>52R2CbP<%aI=MFTw-c!%;w^t$Gpt|@^JG7w2Ya_nm6M04^I_#sqrdYR3cMW$C zQWk3)teinp`&gfb7I}%}!|fEu-#SI(J}0a$&>N=tS6Q#h`OZJAy1ZyG1o1}GK8JSI zP6n=c-1T2o~VpAqZ2N+mgmH@_8xG4gJ3PDxYi2(2{5?NC z>iynW=zm$4&EZG4I$L=@li>IECv z$rjP^4fr88tuvs6UVcMuJwmk&?6$-FeS3>q5#*Q3w0Nql{IxH@NwDDn{N~3pf<}}? z9mTecI>nAGBLM*oP4vEEf&vx|9bRg}JFpxSWE{#%Z>7D}=f41x?!(Bn_NYg^;-ed8 z&s}WP-$s2-T7l8F-MH;l>;W#}_!!wi>Ggc<2WgdqIS&VU&T8E}RV>shSb;|;&?9Dn z0`H`Eownuu69uqddhmnjzN0FVJXbk|uyGRaFo)z)r(WIG4N$X0cKVC2mbD3h5M?Nw znieiCPep$b;gKqbJsqqObB+4Gd0eJ;v1XB!K0TEy!fk^T=FzzyxYs@R7MGG1We94M zGFN!wq-gTC9Gs65@Lnb&OuAe#nmz+AWGtj!ajB4BLwmc^Pe<}rA6q+5R*ai-N#EJ* zx%I&E%C#fe9yWo0&X#|j=x$16)`khZYSIU=P@Xaj5yk!x(QQo z8%k`8!Z3-2lNtrx5B5!QLtJ#Ro|uss>nlc(ryG*lXz9Kd%x$9Z+0 zFuxXdN*2WxaXdjD8ysG=ZJ)dV@+~4&=-MGHw+lR}l=?!LSuUOFQ4LkP>)>1?Z5)!Y z7nT4tdMtbHU&C`G6DU}Y)Mp35w@>Nf}kWCp32O^>Hirl+Xab=Ah+YAIUVE|0z_#9_N#%Ab-q75s&3@ zJrwsfEXoK};Cr%1#h+QL|L9H$SuUDZZglbqZ!M#?&eQU3%-7P-^(e!A2KQ6@x^#AW zZ-Dc(V3flLW1_9+qo!*d@g=CYsrT7o+?6T%?^^R6CO>DZ! zMk>{k?&fp5my?acb*43>%a7Zo{qA84<)u=kyb?}+8%m4S!KLOxesJ!Yp2f-u+Igl{ ztrb$t0}Yyp1@cpn6@0UC94V&=Cmhv{pnRn^ddT4J^`zZHSIr3`25#)DxpOX_*z}JM zv)*wDh3owIu;P?=qJBM_RC{75Dv>i_flg@HNj9geyw<#_tS(VMbCiPr&4S$YQqma> zJUIToV6E6i*3FhK*e??qmHKY=FOq`%)W3w*)!)lvc!Z5S)<3gz|DY7~tl@m4oPY~l z4g+VATwULIElVH0NXDc9K0nXk?F|8X#w9WfW{&Ecr z-L+!6nRg_?8Ya$gZkM4ouQrKF_G`Thr7CmtOBfqmI1Sx>IS@+*-cXh+qq4r7@%aAB zmlizqG};hOoTTT^Qi{7R+rFJfAl2<-T6c*EEjGi28i#@o`4ki?@grhRhJ4>A;a5Z< zf1e21^e*e#&WMD?-iVPjRm4}iGp9TFD&5ORZ)-jn7npeuazp6=@qgCyXYKuo`mnBE?LJ>wD& zm1aN@e=fiKo=0^=@a=qdnwC7(b$&E;zIrF&`n`RqN7PhU>53JYna?W}WOVD{H3asl zot9e9R6t601|Rui<3I?ZCg>nWR3boh=x=xN@IM2h>A9D}e?FlAec`43{$#mJ9@q}_ zbQK9@0ha(e6r(nU$?xWa)DACfmfJwYYVpoPI4}HtGA$3Z`TCpnbDaCb3az<`)-XJO z`sBOE&w1Lp!WszW29OQc=HLK?-kOzRtD_RHZOiNSQ%`H(TbLM_(PBno@OS;fuq~U* zv=4Ul-X)A4H>!z7(vA!*`jS9{MZfEl)bUQ=bm@Za+j6ii(YWNMRHuf7ls?huvmxOq zgp5OUAGvWz(`p+z>+W-k7fs?e$^_B?j~f(C`2EuCkT<%oeEe011UV+{lw+(#!i!6? z6dY+GlD=t@HFfY)4a|prh-a%3kII(7@I72*ohq6e(b7H1D6paSep!JiJ~^Qa#IJ*1 zt73yr*`4p3wIvfg+(;r{Jc6;@vcB_S>I=GSnN6CInm?4(N&3dTey@sSSF=g}?<2%K zYv&(y4Q^=kFchcuf{bNK`0-;OJB?^C;1(^s3)EykeXR=YlPmN2?!Q|u6 zngWR0rL1AT^QZkMW21=8>BQ11#Ty(k9=8|fSxk&Z1Oz?QHC`0x+PJ2sG`BViSmOsU zIj5Y)L>qHwt?)fy`w{J(VzhK)t=0-`T7TMktEhRqCTgMMZfXYywy*FCQfKGZ)c99j z%a9KZ03<@d!}&^PdBE~u*`1)(uO<`2-=qT>c3k88m-9ZL>MFTA$wlP7kaDQ<#ib;* zy%EVvm;D`8TZ2xW&y(?IgMt^!Oe(AfL6!ipV0<>g65WexsUyrtS-}>2G$Z2kan7+D z^)oDrf0bo-^8Tj|R#iyFXXXWERYMS&SJj;cSt1Q&qX6-WNkKo5_z{My!3@3=9?mL{3m7rH1w-(t#$IUPTk?qNJ z3y>x>xh>=nwq~-JC^UeG`))NC{n2(xqIjkkGTQ`MxX6+XJ(&N~*58VPFua07rKy$f ztX6VqM>6&(#Pe`!Q!Tv<4P&UKB7XK;8Q%bl;FZh@J5B*EjwI-Y6n_<&9yaQ`jp?`b z_1xW2--Yk8w z5s<+tM3vmz`(%&U(IsC}8X29WF?gOTgP21EL>8x{MxJ!tE+lmc+`;SOWu470V8(G{ zobY|BVsV;h_O_ut$9Cw0j`KO>j9`O~Q~gfVY)X|J^P)WSTv)qJ54Miu$HKz(7r1Ae z8W}q=9XRZEV;_s)-_QSFPD2%!LKQb^(a^vEE*IVH<-hvNf$mGVk<|0)sMUf^Z!P!d zWGz+95F<}1zf(KaKbQxU(e%ZHug6u_gXJ_~(bRA;x~g0`VoWlfrQ$;bWvm!eNpn`t zCDz{lUNY(@lGM?S&ZYba8=EGOncd?|c8P>^mQGfocHc=^ddeS0{QTD|)3%k=x7Rr3 zBHV1;Be>Y#JN)$UD#+)MA6?_7EHFy$cN6IiK;<8-MN!m#%Fi!z-LLbv7RB5&WV*JT z3F#_tO%Axp$(UYur%{W(|G*@YC#5{;moJ*sxS1;~6hFUfeztL}gFS8UB9HLfrdKzj z6QTA+zVQuyO<488qD9x|JR*>E{wwzDY(C>Y-?@A4@jFOM(6(k0J1V)9y><=kg@jVm zBln0Ly7oczJu73*bp%!pr^eMnuQOMl-FD(iX^v~RGhdol#Ko$;Z|0CuY>nK3^ie>y z8MU8k$*LjZtIh6qjzPzCn|I9Hzo*4GWY2$_x_XCOb?MNna{W4AYQ1c{D%HcO$v{b_ zMz^CNAcDkq%NZ&ST@y=wvRO_Cm?KPOLIYv4n1o*XkE^{$lGF*9fJID>)Yak>`?+S0*-U z-qyQbJ8D{9;sV9M7>wzMV9e_c-t?&c0Fb%g?TibreE1#cLr)+4Me-LADxUT9*Hl2wl}(NNp_j6c&KJebAjbVo&7kdCkhrp zaH}~Bhh$K5eX@jE&$s1Ub)4v=e7DIeS>t+Oc0VXYg>84PiXE{x5IiGtmeqwq#dZYo z=iBC|&knWD=z@xab3+dqg;BtS$Pm>%K6IhLw>$FX#CSA;#|-^q$3{--Xx+u$_v}39 z{D3=-anU?t=kLQ__@8-EmDGQJcNNwjTkrHjkur3;8K~Y>56nM!x(;jy;zG5NkpkOK zL<8_cbHB31wJbLuTmxQ#PI8l3acDAZ1x5-X8S?Y;B4X!W58B$^Z8**BaODn73G=O~ z!2(zs<@RETYBacq>8mSu{|KXH5LAHy_xV7eMfQ?6GkrmteH8mZIT64SOrQ|4VYqUX z9k^{JYyB*`#TGtaCZj&r=BFQ(s<@}Zp5E5i^WH6{VC+cAl(t=;BOK07IgxVFIiQ?j zCrYvYbR^)E%6F?`Ur;!*wwb4z#6(X#Cv zKSV_jKa%b6mJV_QT|x5-qwQb`NS~SN-wWpcgTky@FmCyi%_@+ z8v`h_JN*1y0v;Crx!vQK+u`{holldQ+ZG3#pWr4gPis`#In}@d_3T_tgX%UPc9HUD zczmjScWk)UK(RzaCvMeQv^SgP9wY|*YSo=nc}4kgRy|jS-On1RxQuTklM$+zxjS!> z_QsWY2~XVyT=Y5E*7fVx+H5q#l_&8e_kXxM?EoXy4XD|QvvG)6SxXjw`yDqC7Q|#h>0CsUjmu)YZPxk`kR7s@((pZ@0*;r ziy{wC8+i*@30n-7wkpPE$Dw`u?w``~g2SdiiXu|uz>h?zOT?LMW-|}tzW=CZMdSs$ zrKT%g_j~YC73Z!rdKSgQ7@c#~&@K5bx@@_?u~_B4{WBjv zxUqjR$+^iuea6GB_aveUFZTK7yP=igc`3suZ$G&SIlCC>F5Fh;DIpG*9;}hR4J4B} z%}Y487glq+@5g4Ownq9?k&&4DMua2Bj}sUCWT)QiP;+^0JNYj_-(KxMVO_m%o!xR5 z_}LO6yC{9sr2_~DiEGAX0n%G9RgyZY;*GaEic&z7PiJ6P4&KP=~v6kk}`W)oiCyY3IQf zpZgaHA3uKSQ@PR8oEEoRw$fCnLWBIf zXh2#~bO|%T^(apuu|j~KRy#=(KbDW>4+PBW@Y1ef1#PZw zQSjW{bi(Gc+vYBZ*Ks|%MQF+MId1en%m=KuPv%eQDz9okBJgDoJzM5-OJ=qeFPeI5 zleabj9Hcqfcb78#rB-iBIBN*iVa6stTH*e4YRgAq<^LO1eT=X33cN(4QZ-ezQNA zz??s-&-0eH8m0J%1JYhE&y(_Ce^5#YI!rQLUBf12dn~b>jWh#0kT-nB%b2 zo%z~3L2BbJ{2~H!g;HHtRKw&mn0D0{V>}&!8nNZjWfYZ=WO356{Dj*>@rf+^v~6me z+EA^aI&E+2?p(%CdpLEgZNEEvSf|`QE;xfEQ79^OliO&i;>ZakUq~<53DZDVpd*?a zk2=hK%Kc|%m%a5ZPTO<5uz(x$DtSk$;q*1AecM=CmUF9L?8q)}ugoRq{fLJ}%2N|6 zsT*E7rvkzH=$$c#iOAUq{@0IUhB?*Gh&}WP)W_GDAZ*zT=D2Y-v?G>lD)!`5{~-7U{9M%$*0$$o6*(pAUdpFZh(X>nmy9{O7cqZ0kXSurK5kJHCao+rhP;}gr3 zDl$)W(d(E$S>)N^*bom+wx!-oG~R;yC!kxiBIu$SsazK$Xo;aLuPKrhp zJgV>)RhL4KGX0Zc`N-${7v> zcqc{$*au-o^5$sMr&H9GUl-jsnha06V+$MHDo1)m|DVq&&|HZk)fEvVVc&)p%vHqZ7MuUnrSV~iMF*$%f`HciV5VnNT~Q#2DqEb4D2}ftEGd z;Dl>wncuBHLR#lXSS<3Lue3IrIz2*vP{A(`+0b(4jv;-eFQ&_LnajwtZj+!e{30ja zcv>-wvC}uJ#BO#Wu%v zp&Ev+G^Bm-s|09aLrO6Te-GlJ{{SE2F5FhAWwmPHp=(XHzB-PYrZr&Az_S>n1i>rd z7Yaxyf|a)-WVZkbMW~WnDE5!;Vp-W`j!{}{IG>3S)sI^KMvV+uEli+VoI7|JG%_+l zhnq*s2)(691V70b0l2T%5WGuJ|6uQFz12wvk98;A?=+rZNBAf2#s-kJhh}<2*J~Bf zHI&t9i=NT=n(Ht|KdV7Ud9p9oAjBMlZ+fV!NfV1cAAe`<{D=l=Th$;nImQw(vNAGY zvz^MPclJfRmW!LyJ|%u1cNNXwbB_RE3m`)zA2L!s+y~2@93>_&Xozv!QtG^Rq_ob2 z&24zP&;p`l&H`84;u|Mka{u9NzdAZtSFVjT;NdUj!Kigr=@ICB&4%>rWTJIx=%g|kaY2<7w z!>D2NaQTky-XD~fX2B01_Y%cv7Vj1fN~hDM7-Op~Z|B&%Awyl0x+~QyFV#Sb?W-a+#OU2~EtxK}6jmx-xa9Da)Bc+jyM*I)l5@d=zjLK?3(J5)Fzk(5WT(o^X*8`JMa*)>Rh{cBO zRdbq}=QZZn1?=k1iRZI)Slm>twopnM#lf)GiD7tgnH2LiFb=Fn*Whr|(z!3#x6ly$ zKw5;0SYT*c{EEZ>D3&<`lW^iC>L|XzQ%MQrY`$axFslqD6qH= zosi+x)U2zYOmh*hR?cL%e80S;!&x8IBAqn@%0~x_;#gaKwbUcUk0pi@*MsxKS+2$k zqoTw5*sA!~)dUo#b)S}fw3^89=v~nF$D0hieXxvXz%Q46?l7i~awp^XDj-|j3Nl@sSd_ZP zb`^U2P@@vT^@Wgj*fIO)i}Nf{n`+c@!{_-@shT$ss3Lwn|f?@z-b5Um*3r zV8XoK%rOHjP<#I)#nYC|r=C)8fzv@Z5UM*2+7!3sq(3h|3_3hG3K2*RT+saJFr=QKM9(E@PHz%f*R@D=Z4zFWg$T31jq$R zZ5yfa@Fp4xuCz3ch@#&~WiI3|b=mSj60<`$GxnzQlyA9`8c38+5C z!x6;THg5tsteUT`k%3$yv4ASvE^;DE?AN<*@EoD$Q>A5X+@ z9G)Z7`{`f1XxOx9h8v|CAnGqH{)F;^bq;4<#R~4yi94FUo{bOM>hg&esW!qHg6`w{ zXLnfN;)O0J*j#JfH`HUG;UUQanaSo1V-&W}2?^#Aa_v#*Gn^xG#s$ z;D@7e>8JQe*fWnNGM-afw#i|gR_C-AR6Lm+Cl5n(^W=r1v{wC5NGh52?O}zWS?|k? zCCjXCGu_VO8UNkqKmQ}r=JlTX5iQOYT`rCj$ge_*LE@TnQ;lsSM7(NYzw(_hU?H83=Z zguhPF3oZt?F&*Ppr}uT7t4GHxNfRA~HxiK0PH-IRx|D;i=EUV5mf93^voKL7A1UtW zn~F&_Co1P<4VOU-+7X#n zQnlx_Q|sG5MW5o05QOq4Ys4r<>5tLDILN`@+W@BvGnwg75T(&UI}A z_!CQRIO_4Tq*T%y;S6RRTUB#&_6M3o()(;c{Lc4~UPOWFA*CtnSZQ4dnR@e~jfU3> zNNe1=#!rV(XeoxuEu{io0H}%!0r)rrEPq0AiyVg=)}OM?{>rC1!8oB9zc>d$N>6!k z6g1Yiow1dZB~MK%`objg;?2^90&#QM`Uma#+av{?cOSxEIQiVp_`;lFtA1_KG&R-r zMJ!WD$)2wdDX&z8*Uu{yC+Nt`J_$3S-(Zem#)Jh);nbwJ)?(v%)7;)UdTcDaoLdlJ zuQqRR`R-q)K-WM%{gF=`VIBc-JZtB#?C3gn1Iuwrg??XSx@k0^Wv-D{r&X}w86yIFO!H*D`Jy_4; z$xk=_fPn+A%G5XW_k^&Bsa>)!LcD)t+ z#fwN(^D-|pxBKtM^Pl4CA@sZk+Pd?>(*6 zSS^J*T{HQhFF@gq^dTUh2ywWUrq6C?58Oet_EG4cwn$Cg+BC0Y=6TN-=|^|TQOzwv zkXA@N>-Pp}28Q2BY7rw8sg|Bv*>GiXZbBujZ^rlemN!O>zW*2x=zhz~eTj>8f?jiM zS@RaZc6P*d zL7S-#-~i*rZ=!ZRO%jDLv(+hNkoAo~W>i@KXGD(Pcqyn9Y2v(lESC6vrQ*b7@>cqI z&czQ^9t-gaRXN8woNa%_Dgx^NC2xI>QuNN@Agw2hB+nq}hYf&QBDzvRR{LiVZw$P5 z-EY&3N`;4q9D1W~q3GD4VW$~ouj;lb2Y^c(e2Z$g``f?Q)<2o7c3%+7`P^?^RM&7m zwh3hsD`Id)!uy6 zIh%$*o*637h02`i_&+Q!c!!bV{1KrwTcKYP?Y}@W|C0|FY;(SK%-vefgV41$B_VLi zkHVxHpW-TtG&3vR4D&@Tr|{a2JQh^)W2>_bdy1%R53(zTQ(dkW7FQM06ItF%S80Qv z9=pE`;YlA4)3N;2K=caY>kfViFYqe}Ii|l~ALx8NV{Y^00C_@&vfiQ7GN*swV|8ni zMEmSuZVb#P&G#<<;@UOsJ)i{n!SDN}=*tx46-SR)(7fS39gp5 z<}RqbP;mn&Tl8}izdJA8zWyG%gXs339{6)tNyc-lfEpk$D-Hb!_73(%JgP5D!qDhcvJ0j=by!=GFJajDRNqCQ+x_ z$wZqb8Zv^CIMlJ2yeqZ&oYt}Q^@qOu*=fvTJe?2neCU>BwC70JBQ$i9Os4P*aPjBF zE4eX@(!L^ggi(L`5WL{SAO zNgFCgh+(Je7|u(WJJP43bBcBLpUDDMygb;>sq82Y+$;YBe+8O2x)PHipbqHOm&3qI z^L^57@9?9%m|fx7!W#1h0g{f9;Qyd~ZaBK7w#;_RQGQQU>P zojLA!pt$z)bbn7u_*EEnxL<7vo2C>7xLqrMG3Qr=GFx@$?;V3pg-A<|kPP+&Zttw* zJIq;i?EF$aAnqmTYzf!Z6cVvdSQO<>F>98GDlbxx-7|=mW zj3ubDxH88zgrqu^bLK}@-gdSnI;9<5e!%%MA&s*#Q|@TuPy^t}6Wc$n`uYV5@&C0$ zt)O)_{>wg%yCCm-zym1SX`)ZHDYn2ZOa@ZFSjo+n9cipbLYEvsBR(r@xJpdUzEv%hoM1^fniv5^RdYbJ zCgY%P3&Fk%kQ-oCmkW;L6V7b)C}8?Sk;;q;ek41NA}@g`YiWkZ0%vySDj~1^1L*DS zmMJ9+mkLnLhz=<-B4Ng?+wH!my9X{!4kz0)!JvSbBFd27eM_MXhHwY9Tt&aA^C26N zN)89FIv+4h^O2wAsQg7o)567I8IXY+$F#;_mApjoLwJwe5T)7soctDq+4lJ~u&X*a zo4vL91KZ?FzvvuCyHLr!Vllx9C;oCELNt+%zE0*orzRY@J2l56n$ilxvAX94k^8jq z&4rJvSA4W}Asn~{00M!^pDtUR`P5F+nz=Zn!0w=p+%#&SEKHEm)_hU-@&pcbC;zGJ_H zxP}`O)Cun^$d2So7!Mk{rZ~;MWh6|Q|2(E92W;Vi_PpJD!*KdZ{U`&F(f2R&UtBl9 z{?XX;dOGSOXxawKlTa$(Rj$%sD0$E6at6o;uc;Wu{ZD_ke|O*7k?{D0_PdSPXdp_R zt9Ds3lIP0QR57KWN?HIPj+G!IFMfKi)^GFaAs){>+RX#<6FP&F|Cq?)$y(KYoAqc<3LG zkN5lazFyb$ytt?HFm!D;LfYN;>Xqxsx_sjTx<~$ga-AGp|CegB%Ubchx%IibySJFp zi`=Afupc`AcfR8{2+5pAs{c3(V=O=OAhf#^FBk^}KJ zTDOaXie5xGap8Bz;nBIYZDd|wGP|=LM)<6HSqnzsEVa^sZH1X7j#D|b35il?wR@NeRpg+T86{YR~Yb)D&o@aUVU`B_p)&>9l!co3qE?Q4#gBtE0rPBEs8HtdKq_ zA5^J00fqeNLQWMsm7wOj^Teh92xb3%1h}pfu-{6GbuP!@p$=Zobr@%(aF!xMr6Qw6 zdut>oC0%K834?IgWFTpiRm$}Y8$3=!3tdA?IME@Ob7#v_!j6u-Gs2km$42}w6x3gS zTgILX<|#%;cf4|o_XlD$Bk^=^AQJ@2m;}bT+2px5E|VTky_Mj5D+IHhL_=fBO@4pj z{?MTQ5yG1Y)$8!sS>r=7r0-|X2=-U#420vCE-RR<(E~!2vt>Obe9euwNkSZ}8 z2T?GVQDpC>7p5XwFTI(%trxCjl$?di?t4gismrkzHNVHzS{F2)%F1U=t-dgBE58E2 zU)?qL=Y8w(j|IjrdnoI`sbRDpVBC7$`p_~jDMR2q+M7svdV{wmxX~H@i{Mv7hx~CG z4C>1db^&96thIBc<*WmecfJK3wc`1!atJBm14I(12ULeSVIO|#6DG#5*8+_?*%+Oh zpyU4QmcJhh3`fAK6?GTI!opdEVjpR5XcxD%E9zwW3916AMW`Kdk4g3&kjNw;PZz$W zWr$^v;tV3XPz?+b(}ty)=q&r|$rG5juS0plFx*E+kuIlVO!y4gU`VP<7{1BC1pHajPy zlKqS@Xx0y~ZvJSzYtu=A<;3hN^gHs7pj=ihDCZ@A`g>{d%U9?$nMt+YDN^88D=X0v z#t7x%An%#D+$~my&tti1U46LPZa$vN4CzlCLq1@H3m#A#pcPtc!WyCgI7>e@Tj0V^ zI|jYYlRO_foK!ZxP=7xa=B(I>JVEUq-vu2^FMjs*){$fJSq93S8T8 zpo1W(aQ>brN-_7RDkWKaR;CVEr)Z?kji7>A;^j(!fclyTM_2q_0U`98vy*lpM!n}O z*D+a$Wq)L+uP&T~DSiDrYc#;C)vSMZb2I^>rQpcM{>lhu0WC+5)rsq@c$S@><{!QWHB|02E%nkrMxUoe^*gZx{i0&!f(rrVE8MbdhfgQ*L!pn=TEUK9l$DK z$c4AVSZly{k=WOtX*fSWz%Vlc6K*hc7+PncO+R0rDs^msQ0pWDY23c4up>A;^;ZqL zK2?axK}d&2Q+U|ZHNgD~A)rPdFPpgaUy1U60lMG6>`^0X)rnZy$RF$L#xVv^S);$w zX@^<#t!ReTmT6_8L?HJg`uZi6IpO{vx--m0Lg z0(f-!s0RkA+lVK6t$lBILY^|#9~rOid=A~pa?u569>YhVpHfj=9BhNdDjg$g0a#CW z0kenMxz{DMtu^oskKrVKEV-VNIHFg-*wQpqV8xJK=I2GBX^PKPb#DBSzX-3^i4GSj zov!Jz`EZF#nvQH??3%mS%HQ@nKtTIvTpx%}Hoz!n$FPr7<0uLtNXZj8i*SE-jg7Q;X%&+6#A%#IYdv*@BzuB*`my2 zueIY4rp#DBnWg%J#z=_VSbd-IJM|A!^{9#mfLRF;OHgKJQmFNWy4~ebKJ&c|n>ra!IMn*#q4wX)JTe+|w9O^m=N0J;E^jwUqGuXa1*Ck(Q2A zYNNIRckr~Ehkk*PB+4?*rGU+fI@XDz0MC_8=D&+K4vk{}2b3SQO!PV~qM{Y^p+hBg z3Fa%e3o+$9Z_9_fJoKk#;Ri2B&8fo*Ks+=OMOM!(YLl5*1+_>t-<8{D%CRM^^JOh{ zJ5F@~F7C^S58VsMMQ|4o86+Pmfxjr3x?*XjnowZAYIIbsHa6ew6 zJoDnAhre$YFo&^v9q&5UG4l)s5CL*!fiBHN+zl7$ax6&rY)PwNP}(~q*K-y*At1@w z*(xfYig+%zp_MOZy@}N_ESzcjyCpBkkzM&*1&8_ydRdN5*G2Y}r zM~?Hr#5nnS(ox6YpZhlT-}h}Kr@S5d>2RM@y1dVm3>XUqG#D+5?zn~goRhP}<_Eyb zfMx0pWW233%Wy?1OdraHsRhz0i{Do#*fxyo7}6b|Tg;YRyVl{N#H%T7(OfJ43@n{_ zoz$QtEiKJf^x&T42cQ>$C2N#)z2?l5zXd{rrLB$Alg!{|GlJpr+Bt$I8x(u(%}Tv6 zL6glHK4QW^s{;KE=>F=tQP+I`C$o!TK7fg=Xz3VuCY&6LrE^M=zZaigQ>%fZ*JJgB zqeTb(khVT+ITakrqow^GX@EznP^-m1T7!4(Y+~xj@ZnhZ&4X~D{P}>KK!J;K*$IjS zE;L{Q=s|jkt6uY59OciFs9;;X=rE<}BVwSq>3h`YEB3XRruRMN#X;y1xr+a(JZE*9 ze28UR1Alk46x(IL_I#b8h7V;#vv%2SSuFG*9s23E-$!YCq zE{Wb6kGbFFvLKlVV2S@TWcvC4v$quc^lUIzWg>>f58Ham~U^7LZ=bD z*z7-vjYxqWvC9yg?X7p$f+-)W*AyRoN>&u-*n+-Ge*dCS{nmvXPF0fuX6#?K?_Ddd zp`$w~sV*#@zqp*NfybRYk9fa>W5W_-OLXaT2hy!^Ei$}T3kEa~*HxS`@!Y()nIpaR zW)C8`Jk&C~!{mg-n9=Zi#_#Icl5#A3&`v?2H`V3#t1Sxs7fkH!0U(J%CPQq!{6y8W z8!`Gl;7DWe{<6G1&|>N)peQfTLepmJ!Kr$h42Q?t5Qu_x%sa<&iCCYq--|<3O+niI zL4En%QOuW5Trx{vsqY@zgL>3QljOzHnjFdK$nPoL@45Y@M(%8J*3iw~5Ueugzh)=5 z_nY$WqqiP6A9Ttj`?q6^nB)3)H81c_g@M^%S||2xg$0?=L=_1bY9V zRWxBxGR_gzqRCv*V!c3E&?vf6p-k>c^ptjn}gmv`(GLrz%7x2=R}!$fJ+&V$~6vj@>3U^-oE z%19=@b5#&e(^bH3^1;v!A3o;g5vpH#uFFwwy3ca2-~U7~0?1LKUn|&7LI|e-35QEB zov1e@Wpdh5So3&C@(G}4ORSeoeH0vI`v@xBQhG#csFviQSWhcI~yBT(^)8{ z5s*gW(Xn;Mzxk0pjk;e}LVh#gg2Tj`e+J6ZzGY7qgiu|s{mqW7 z4^Ai}zxL-6IR3}Nw40!rEb|N>M}$&g9#QAnOf!!_b(}{=r#82a)sc4)Awk{pvyDMB z-mvf(CKuJf$G@vX3hvG>q3qHWc`7?%&wbLp=3|2rBfK;5n)R(@jGYdA-SJlGTCr2l z%^QWP_rxSqb&O2Iu4@Nfz(sM2t3Ny=jTxPFPfhU(Lge1^M)O9{{edwl z$NBF@e>PQz$FYCx!GPIDF(a3=p3~=gxi)>}m@LfM=#6^(+BvH;72r*GgVAi|aL3Qh zg_VJFFS&=!zQaxWAZ%9FGy4UL_RqIaZl$h)Xf6xSP0xb`MiUwwED-zz=6m3~*JlQj z+EK_qOAPm8^81XEcZQc|HK(&Uw}5Q|$0xt+;9U?r{8`roYXI|AFqC#&l*8)0C%t7# z@|y!74Urb>a9tNK?rmNj5x}>@u_UE4S&iaFa`UN>o;-R<142aun>=GmeYM0YkPDg@ zp_b0M-?o)=EcM9zh*xo6tiX0SoiLV+=Tn4z$9!Cn6x3fS{N^5xs^piK^xo*GeM5$` zO@d=E01Km)BZVz*qA};^m|{pvwFI=EhP2yc#6o%Qw%qoOC-nfjM|7rujAQ=GO%J%E zwEV=dd&85L>mCAy{_)AF{-UN|rxx}c^IB{F=mU!X=mRJ8C#M?$LL|?*Z_u}u9R}~n zzEhJVacZ*{9MrmHj_3uF$d@YzD;XPZ?(KWf_%kl5v_Mhea=A)jeJ3frpexV0^r6jX?StqJ)9mrt-5fS>+#Yopu2x>$D_(&$fJm@r_p6@J7#tu_}$Pk zejL(<<-u(}4Y!cPH&UM$tZEg1(r>tv*WPOj6k&M?PVxJ>v9E2Ybz?2&Pk^}z`zs

f`A5NqemCh{--cFaW}a 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 JrFX4@{}-vZWV!$V literal 0 HcmV?d00001 diff --git a/services/web/client/source/resource/qxapp/screenshot_notebook.png b/services/web/client/source/resource/qxapp/screenshot_notebook.png new file mode 100644 index 0000000000000000000000000000000000000000..b821e733d28fde18351ffc9693129477ddef00aa GIT binary patch literal 110894 zcmeFXXH-*Nw?Aq}P~ibYM4EKzOJmoHz&&l=89AJ6(4Yd$zr*3Yp* zeYoI!U;qA@GZk@HPV6pHpJ~0cfWBwW(6{}$&Zdacvr}JsK}{|FjO_w%d-*_|T-+UR z`vrSB-gXRfaXND*Xu|B>5N(Up<%g8)Pkc7- zcP@7Q?A6wG;A6D?{oXTv2b?fE-L>W()&TW$)+on`u!Ir`mx=IHF=smitrijRX6!1&?g{~$qq zQssT_=jR2Glne|Eln9iSfcQ8|N-HTTNlM8`%E*XQM~M3dd-~Z0iF^9;{UPxW8V?

0oU0poIN}tMQk- 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

)-0MEszSk$%a-4>YoO0N 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

L5yx^Jq`33H(CL<13Geva#`2b}p zrYHsmRv(Y}Y7G7P4DTeX?Ft5lGVt#Mp2~ni2nP013X~Mn@G|)O=G|m3<4yWKz_z7w z{Z067mhVK01pr>u2#x0yVs8LZU%SiZXULxCD&!yy5rCo;elrw#L5hEc$I|XBy>SDn zU}tD*3Twy8Ed&Sr1_cLYqq5mrF4C#LZnyaI)}7U?dFH(+91Ac#wtBy>`SQike_naP1T`WQx=|>47<>9(7={_`Rs%c}ilL=|I z0lON|C)87Z^dXdwX4T}eK$0Ez&Gfp1aatKOjpUIVGw!&OwAhj}DR#_I_6b+MInpuz zN`{8CeVw0SOiN>SuTP;7bDo?8bE2zFXFlJc*V-^Ge1|&1YT2nN?Bok3`pk)wyBv}uuRvvg;};ByA~;PMXk8F>K&e^^H=ZN#*q>=K8^ zQUJIG3i{+6&L}$HugU88al$2W*`e^Ju7VsSdN?lN{2ljn^7#{`kW_fdSk2q1G=E&a z7E{dqe~r6fkLN1}Y$&Kw;=KzctG(f~8Y733%o9s6+w9pSmgROF6v zkY`ME;$@4_3+a4v3?Rv|@Tr@e2q}al`I+W`Y4V6AzJb2dD`ExOYbN7Yhp0m<@|Gq; z=qD2AV_0!D$e40gilV!wTfCV&R!VMBMNSqRYGt_WZ>;u4frZ&lD6&HBrZ)`~$Fh{>wEIfN(&j5ih5^(Aj`%!aNE2VEbD5L{;p&2d5Xv#~{ z8kq5|O70|hWNUEq%o2r}vPa$x^N|3P^%+A_iw0rYgn|1=fD_HL|MG;|Psoxe>PgP2 z0AW(Rpx>|!dhrW33cYSM zNtr^VzMMD)+l$oKliMEkR5xpVZUT6E9{HTBtLwGE$GhiVl00+oBvdQ7Ui&?wDz$2g zZYHvFvOR8@vR%4k*2JL4u_Z#MuqsNY(~WLUYz=a{f3|en(|E(#b-Q<@^>K}I+p&3@ z4~_#qRR1pnW#Ok$9M9Jgm$c|lW5|*dc;Y~XvQxbHOc^PX-?6`UEzGY-8 zpY`rxTmaTIE=c8Dka%sR_AIXw);>PI@a&UaIs%@{9I)hAwnPHT3TTf_n)%@&BUBJ*Em@e?Nl2R4a7ChflxRJMLi;1Q-k zuNmah?(mE7I{TW`M9mlJn0H^A<|z9yU_9!Zt@gli%xN4Mrcy$ksFKtToxnk3;mPB3FJ% z$bnp{QxL(~aKFV)C%e%a#DINXy)sw$*^P~S(QfCTq#;44@FEqk2&ck+yeLjX?j{ye zlh>kUn*_RoaYJ-&R#9&+f5n&PqB-n5#~5u_yfAejXAcxklhR6?{9f6p9+7~D0!iSj z^RX$E<2teD8hPuQOSD_(y14DjYfX-~mX=m))9En$eeY;8jl0vOUH!VVPEJic{Mh(# z;HLk>sA;@VSpfdu#)kK%_iSp)9bRG6Y=(d3crZf6B+!7u5ycM~kku-h#4}vG&vhm0 zBlCt1=c?Rb06~EiOyq^pY+2gfrR&jiVm_yHJ~CmVp4C_{>7F2vU`;wDQBU%x33tXE z?vUVt?nYH356A;_t8t`3GBYe^^37IESiyr50OKn+@1#a<(-tiE=-b6$>>wED_E6?v5$me#Hz~5r*;eo@$ z8S}ePB4ymkeBhz`L8$$1QP+Gpj(E6(?LS9f>rPqiO+J!6VI>m}FYEIoQmQy*_VAD&MK zJUtcWM1o!_?(mDlz5R#p=dRP%mn#3N0t?b5$pl|B6V+_@(ty7jjS*HHiC=LU#xGmY zHGHscr4)uVag=T&h9^IUhYrT#Rm^d%EUVn$jmxAGgbV}A4dJjd1UU{|@K=Tre#0EX zvP?kRN1XJK%~%BjdY)qJZ>?yCexHws0LbZaoV*GNGe8jM?;8^$ik2b9GWp4rOZ=2k z502TEB@82b4%7(<;}<;&PCG5EZs@ zy+lD{SLiRV`@PAEC^|!_8b2=AoWH}b1hB2Kz|Hm|hlGw}u)7*7>uFo;GJ9c?(U#x6 z+^;&O_Zk)KEn-NXVmf3P^6q3<# z4gKo7&fRN4z2BJf>$;(L9dsGj+6Y@Z97uF|{0XUp-cPi8=tW+)Q5W1C+(E$&n4o`C$%`ej7TU;9kygJwMUd)w>F}v&caT6zLPMIXP6+ zVFyTW(6o?bTn}qZQ1&7~FdmnpNpZC%R`U;<|LK^MxmE6Bq0n#31bF+f8%Cp%p}&n4 zN0O7{*BY?i)ZLWD%oKn_#ziaqz${_iadU{X{Cb;g!K`o*oicS^+sqdF`NPEe__U(0 zIJ^Af3Qcum*z|$|mnhB%6JfRmxST{xb%0`k@$Il7$v0!3ctkCwaXR4U+ruWy&CQJs za_N_>G^NVJXKsb-hxLm9t?rxLi;=Oh?_=j3r_8Y;k6R%GG;4y)w7v(Kmh(wU3@z?} zyzK03Qx{>T9)@DBheR2YL`)hbI|0K#laBr644|SaTX#K6c&_THmxl|j@vB5inOokp z^z;RBMO)7P)u8>q8^3gGx~}D(`bAzP&Zc|bR(lp)pBG!ZzkvQ<}FsyngtG&vbiq=PjA_Nuj&Aa#X1tG(Q@O$?;>0sGLSoVy@o4n|Q zq}kF$b^EH~Fw2i2tZXtCdSRUpx{izaQW+(mETv#iS_O=-P4?OcP+vKd-sm;%^JmaB3WVt&l*ab~4ZDpO~6; zp*GJf!1P3DP@C)xphehA!P_N-$SwT9<2Ff-er~#KMD^TR7Kt$BqD#L1lvFK$*qe7( zY-_(1LbC{`0|KAM4KU??-!%GlDCtIf=IC}PML zDL}}svwwvtCwtw36;YWRcA?$H!o-jnvZkV5du?$Dmds5%^!ZhDQ(4_;UZ=lrO(EGX z)RYIZ883bondMQt72pPalPah* zO6Oup)nQFRAE|@IFLwjHDOT(!6kDa8KjW;0O+y{^V@LUHT4=zRkw7n4f?NCof}6n^@m1XfkLURivBLM5{xh7m~w@O8p}AyF&9W> zM3xhxvT3_o=5uP>>Wzu#0N9 z(CkdW`ozWxSc~v~Xnra{F%`N|r1 zKpArjLkJ*yFCIr-$Ix4y+_@wM#0V!(Fm9v`D9DkYI0h^xVkHfL=9Ca?7uR;e)@ zPyj6;hH-c;i++$94rr`y>-R2ptydTd*dqiDES?~@lKS?yZ_b`JFyjsT%kSIut}~(y z3W!4EJI>C~*uf#l*%xm175`N-SlJ(0WCH?XCAeZ`1Q;+(XdrKENr6)JO$LtGw@Xx6 znr>MOLah<;8|*ox2ibxBOF{V#F+EH{9;>SXL-9U-N!op!g~HJ4IJf)17`5wZNDoU` z4>}!H(pt$xRSr;#*&(-a^90Da!F#jx#B*#hSt%@peR48tUEp)W?Z1S_cKxiCo@RWT zYzXR7<;fy(ulTUDak1M4iU>NtnC^5&&ImL2mX{>Yr#|@07r`&8^9sw1nOk*vb^jm< z!NTd-HQ7>7yMhfW<4{%q?nJ)SfybOxBxEwrxy~Oj2cdYGJpYH8SXK)V+xtcMap$0h z8b+?gSqk`B(s>$_qT_Di-)F(o~P^{)nEUHYA@&D2Y%m8&YQy1UUt9EF5-Oa?)hTqDDv{Km5?~Y zQ&}QrAjb+-eGgdC-gN) z74q5F9H`thsIv~JYS}KlW3pMm{H;1#2UPqPxn3}h^TDCb`hgoNhW+9&O|1}yPPwmF z__e_l^vRK3)^ozmGFstlu9p(CYxZ9Y^|VuDZHW53E9VK75?j&opl97Y7J2s?Q~eaP ze4Z)S;qVqg(q&fOSZzK^xK*U&MSQkGAE`f&(0ofSnHHG2YgrNdeG$b0i3^dOyosQs zS^z=H%43Se2s_vta&SllS&Bd2ty70gp=x1YW1qI-85u84rl!2WQif|XpW-)laJ@Ef zM&9OcC7B=;#>~=P#F!lJ-(Seb)CI~?C1$SWoYnl3)#-Z={WU?4c>X38fRHr2JGc@BADaSf+G`X2rcAG|4zi{zJ zZegJ+C2zC+I^e2BXAY7%?G!j0P&zZpz&R3mE*4Rnn>;3JvM}_&Tez-v^p}s~n`SZ; zcT=riQT?YGVE+mwKd2gtJCf{W06M^Cgn}P9Q0qJA{SiqK%1t&K)CrUfnk`|IHa(ENR zu97o}Bpydb3k6;6$Y{7Rw2#Xg!r8f#^q#jsO=gWGHws`+7O6k7)0|oyuVZNQ@E=WM zA|Xi#ufO>f!;?+raf%XUbCM)#^mFx#W{DXc=r@XdcY&)`J$3iP%yeTrAvr9`aE7Xy zMp~Ih0;8UM)^)$*8H_^%A)$g`uk3PGNI&))E(#jjWDKzb``MbLL z-lCMdy%h{eQHHK?C}_jXCOeb#zWON=RHK4UD?Xk!5B(^GiHTJXi?Bji9)XxCgmmg=u#6D@4;{CKwsJ@j}1(CxBnXtlDwzt~JFdV+e#erErCJwyS%T}@xC zIdlsaLdtGvoW^%naAIP1th1d$C#RB994U3_1gpya<2foQ^a2rb(1cpQsHB-|$~a}E zZAWaI*sLLf4Z2h>Hhs!(u~ocR@wTZj2G_R+hVgOQ^3?uC&wWX4?n%$w=!Uhs@#_ZH z{naq#!>T+f?ej8p&4V&UL}mF#C-)=Xh5p!1er`MeC2j4`rK0b;+ztXXmyrAgGiJXj zM0RAb!W>P1?;-^fT}t&+q0MI?6v(MCdL`LVj_DdALuGTOX~-R8#dhjFrErHC|CHaP z%8oF<8_9LKP5e~Yrk?U2kL086X(9-;-vw!Me1@TyLv$4}y#8IZY9&OfX8e zORr%l=2B~CTtX}-H;`<38AS$^yRfUHuC_Os>|Q?=1ipKN2G1jO(p5v#$d?t{gsRKt zo&9qVKs5;1Es)Hlu9fYd>VMDh)$v0-44eL|(@(g=a4nqU{}#cB4xMSDk!&QoKyYm# zHS`CWh~Jp?Hvm6OeNOsJzF5pD^)Q^Pbtjy$PA%VIW~eP3k0@^fXv)K z;m@v35J|~!!Vvb4N1fGBCn4Pv^Y}D&PmY6K(-UK06m$Ld zn|1XO&YpjQ168F8QSy}Yrpn(Da2{b4+hxHqc(KLr(Ju3s>?r+9e*t6VCsyG6CWW=% z6(s9uSCMgzVwUZ-PgKG!v~~=v2*Ib@-jA_RBYA&?3@kS*G?r&XpL&uit9hH*D-O$H z)8{Zb@nK6o+b@m63SWZ5eUCQ4Yz=3k70}PAYv4HUxZ*g@gVzkqQqGarJ`8rXKg@J$ z*;fSl3Y*8c-r!>#Z@$ksYDsqd8}da%$!0k)f+T(Aio8)nK!KP;xyXAJYzCNFCE81w zgimCf_IuHaL|NJ}7}eC4($*k=m=a);M@&zvB%LVj{1SgatMGRP*uj&yg1FAx4OH6L z+#ejwtZg~XYVI~)YGgF)nk_c)_%vmYBix4@CNl!#U(@~86;uA3X(HHzy_tep`u+%O zf|wABZFD$-aYYWi#r6J^y7}@gs0umxf}KcqlaqM+gSRLHetviu`i$go*c^Y1tQn#E z$>;9|EVNMWe2*HdKdE&cu@|vo*e@r26LZzHT%|)hH>RnQahCaGl^W39bXk=pgXyxR zjV^vU!;<~!@`<)!KKl?buU!rJ@6f#VhdgwT3e{7)=Z>NG<733i5L}r0ury9V&N>7+ zF@ICw;;d<%K|eNUw$MLPsGjPNG0W^+N7=?0y$;gJPoAZZJlb_Jxru04?7;;*^IlWS zb+6&Hd(HqE@=-J9?4C}o=_9y#24D*h#)uT$<1^|2Sz94_EKG}#q#EL@xiLT_erOq~C2<3w~6!t7%pVO*lTV2xU+mCA+X(L))50e~L zxhC6v4(VHsPaSC(%5#Ap+%Bh%xGmkMddp39gPfUznYVZ?S2oL?{|*xCZ%g#tOjKf6 zdHzy~Ly6N@OAJ1Vl8JJb!fE%C!vaUm{ok?3F1x(?l#{+>nnJ)iWc_ny(jd_g4a;KT zqr33ihT;9kA=Evy2ag21b5c>;yFCMK7+e1Uqg87olW-pwxH=g2b$RM!G!0Br(;~j^ ze8POx7aTZ>^ezU>Kh81JUwxdUhZ?9?OgGc?k19bG*tbuktaF?u{yYV9oU9IMK!G+bOD)E#Yi;px)P3QJX%XBj`TBUC=rdjpM5?Un8GslS1) zzowWwtc^vwteIr}wX4_9{AZF}qJj&5iP=3taE}dP&`AcoaK4ZSbg{ z#zk!hlj3S?-Mf>STE0JV{W|MT}$2s8dOFMehR&{@owwo=I5b(^)**?1f=!x#x z6fkdh!?Zl@q+>evo5FH=%}!&}+Y9+dzA??0TZo?3Tzto8pTDpO`DTM<-+q)Q4;NUfKD?c5$0lgatFBs0E#zNSerDTvcG zNEfCFAysLHAaiYZ-vikkOeo9ZuMlUyMtvIclGuWR5BeH$x;CR}Mx)BC=&Bc zx!Avo?n-668A8oBR!06|#h`u)x@wH_X+dFd#l}8RXi%J26?$#_>Mpx$hG&~P^|##; z0!y0+mMGd8&`F4_2Mndw{K1M{j&{s0?adtGdyzhQ>X`C=<~c%Jf67SU)QH__&)chi zX}1=jedH>U?i!Z;;l``}?6IY}Vm-EA$-X`@5WFvx@1AG-qW5O)J$`Jd{=R&KW?8BA zkEsTJY`u-FCAZbfts5qcWW&yGD>bo^7?JNynIb{eabMqsiPsDnN0w4=ZE&~uB=VYj zmqGaiE6mM)&-uGaMbqIamqi+8cY1Rk2IIgjeoFu0r4cr%8K0_BGm7e=if++F;!;o; zTwnA2SA;4Lvz=}!oZ4Jh!Nyz%T|E4{F|?lTiHUX5$X{yau`0hrn{u~7!EKJD^w+Mq zp296nM;TFB9dBo5tb5v^O8h!@@%69jG{!;qW8 z9p4We_wszt6XOG4cdrxU{UjHcCY|fM4jZRj?ei-|m>l`u?8Zb0iFfSo{xf5SA%)8* zqQr{)Yr|O6t3!5mu;o&if_WVpe#PDdOx5WW0TsNf)}C0?EhfD8!>h6m;qEwb zRYsyA*7FK#$lGtD8MBrj=iTpU?49@GV(PA4y4CN1xr&nh_7T#E8E`k+!)^<7Snhe8 z{v`w$_5l$yr;;zTM^}w;@&46iZaLoj2aV!k@P2wRA3;GOxFjh&-B+>nO=RBZ{)d{& z4822@GGJ`ZYQ@3WH#95!v)V{nD}%uUfxIqzk!$yF zt3T6GKH2D{Da=trw+1gPhT=F`pw%$Vh)b-mt8L5xYiOP}=E@Ovn$_C0;>gAlumF)g zloMlAZ_&IuFu&@76sn?#ZSW5@ld*4Ma5ZJGZFmrdu1@&^yQX0Ot@cnsk`?yxmCkAA zg*Ur`b!zKy#n{OonKa&$Cd3r;(Z(@^e4Umoin6Eq){Yb_gHUY%#Otm$-l3_#2Hq05 z;i}QpLJ1@Pi7E`LlDeJGHm=$o?Odu{6JX%%>Zj#O-yQ{mz85!&lgt3#TUQ@3g+2c6 zJOcKVQ6kBje|%GIyWB~-elSZB4SD4C+G?QMKF(`!*Qx$R(kE#9sP}tW-PBZj-b+>< zD~=cbd8!8D7y1o-WV-jt^0D7DkC+Q}|FZefEqMRO^yf<%&o3Z6@8~(p$2AKBc+YN} zK+0qH!>@}4cG*7Qis!{f^+1MX`?|w;{`+zM7|UxP%Lvz!9%bN5Yha~hPWE`$b!zQ= zi<7TyOYB+6-Rmc2ld}SE!t+!g#J?nZVa!VsNe=DyIshn_?Hg8;@loVF+tw z5Yn1uQ0gyMRX2E}l?i1GnP)k;S>mDViCt+CT8T;YX)2_)w3bP!;mBFasuCo18bqG% zW7TY1Taxf)lm)Thc@nze&x4Jvmq<-lfcC-q9}HMkT6Jg6!fED`2x-;(yCLkUl=1B( zKWqYW>(Z>>&iViuC+LSW_QFW!ftC75yYw1=zS~D}vXtqdA++)n4?COh3k`^QG0_&g zw=URJP-TAA)lDWA@UZeSHWu^OsRWi;TT`=dNXuXbsvaGbz zIojpf!|ATY_5Ug%8f+jVyJ~`5Vcb>B@KzXkE}3S>J7=YrZ!U;@;dzHVU$HIzDjpy& zae_^Ie$yOu+el+x>RS%LKNL?7v~R>WXnT-2gWsraj*2|~l`XvMW#CF50c-Qa4Ae%% zj(js3?}UYu_R=R;DfP!vbo*v`B;o2xraiS6d*vHE{+Q0~3!c=I0@K)bg_*YQSQv>2 zeiIdIxx4i6{O{eFL+$$oYn%`DA_J4XS zOYOs-&@r$&v=vDwDe(L-K*``HYso6-3GaZ}CzPtw4HlJT-Wu1@|5SJXv+lJf?IJR_ zi5lAMeL_J83^SeIz}y%>BN_H^A^g;?jGrq` zTi$7`C9NRuxr?)Zd$x6Af2gOB{N>X}>)Rw1k9y^U|HUU*fPi72kqZ75qxFmgP)YWk zOonWx8&AwTVe)#yX z0e7kFFXI>KI#vhev(E~)oGg+_>IQ4%bG)cepVsdZ9ahi#X-^G<_r&C6h47(-D?vnd zJ|IKWGHDGG7R3s`Nzj!mHk!FZ7Q`f51grt3X)^=eei>+ub62m&i@dk#^jTvEe!3AU zR)${NVRC)IIp9xi*y`mRTSf1%W229C@59{d*?7OE6^gEZiU+l>WT5{B^1;**XP^z9 zZ5J(`PhRX%Ba#Le&JAl)tcS8Whp;I@VM(;%iiqM4-+3j%I5vhui#fZ2+v{t`XmaFo z?3avdlYZHy;0=(~2vMHlSUmdS{StpzNW2y*mMW05&*?9rL>0aT{$G6MxLRtwlmvKI zaPc!U2|45;8ZaY8%~6|_{?N+Z0~)>MTXuz!q1f&rB>h=a{9@Yg7{#W32X&!KX;a>N zS(NxZ6F?l|5?W^71#IpzyxJI}dT}PAGrBQLvAxQExc& zL_|H??zzcj3LtoY-df!np21jjRvF-Z&uEW+-x#}1W(jPad8mbmKY zcNyF{M22?>7t2XZv#|J1UhcOw6(N#fEqHL9!-BoR^7fZi&G66oN-jQSlyjBdp%;vQ z?*_#cW#)Z~WO1!*$#LVRRiVY^>@LOV3daglLrbQ7>o6ZOG;rvqFPI-DB{7X4ssZMw zja`vt;|WJ}_mJHNFk{QI5CxCVd`R(jNK|8=G24I+)!2l9)hRA)7s>r9y;XHCxbXWR3?&i=F@uH!trOjiY`q4%HjlsT`1P9I_u)H#2~zVI zQ6JfoE59-SAI=+1PtYJVmh<;kdWN?b(W3mI+d<_b_$0x1Z!)h}^~)%O1S^7Fp*m5K z+b!0rNVK>aVqs7LP zxd^q~_lVuwsm1+1S!?lJT0hNnD!oRfSFhC)D!r%uaRk!k!L-t4de`=xthUb^W#j9A zlK3gSz3~wPrtw+LxO#}r10c*D3)W7~2H{&dNH$6~YfwxcKn$RUCi~X^teqCd#q5vIEXelV>Ih-LkWmt9J!hh!G!b6 z3;-RE>UM)efvjAOXpw8uk*`=$Jed-Pe#%P`47`z|3EJ_W;Vp40$}6#=Uubdb{poOG z1-9r!vW+s89A=8Qrj;aemFRNBkeDK1bfI|{<``rm{phz8q-KQvBK5qkBajq=;vYN9 zzn9MD*<)FA72}-@tTG*Th$eBMe8C5@_I%RZB^(aubOmbfVmX#%ol8XvpgLX|#dD}s z@>!pd_^3H!mwpfURZDd|`&G=qF=n=8Bv??*!5zcw{B$_kb06#Bem)BJka-#2`*Eo@ zsEuh&YFLo(D<$)OrF%bG^VCu0uI~MqsrWR(q&z;{bKhonKmB&d?%F6IvQ4t;G0dm< z?sq@xN;iJsFTAS$PfS8p537a%d|*&G-5l=Df?mHv zq02JKy2b(s29~469%RdwBbsK45tBHF3m~R#ShNtEAJLvO=d))Dxw3C?<_krdKD6_D zOVSzbOC_EJwWKEQ+$nLNopO8?=B6i24@7@j|2hvPyCqu$Y)hdJ(Rhb*?6afCmHde$ zpM?tZ7S1G~TYBWpbm1qWWN&~|q@TOf5zDaWICbCve}iHJanktN<{n_15tt)v{WeC2 zgzgOU3QK36%96cl*ctS=I!}AO}BV*A!coZu(D;)M(a;ND_RNUD+unx;w)*u<9l2A48eW8QD7-@gY3-7 zmig?9xqvq$YvCo!;YjK_MWiVJf$$~{#X~Y=pDPt|4B;ddofwd68P3s4QwN3?o_GgI@BQs%pu0~zs%sCz#JmG$Utl`?~3JVA(|AeSd)YIWfgu8(a8t>Hd&)#dXIWbzIeqs(J-wy^>1-><*$CHzTqF%)2i^zi zF=xj;fXeIqjdM_e?1yu(n?bVR__i9F71}P=03Ezp3Omh(s#7yjXgO*t^=W?u)hMvY zTE@+KE*gH&*}fNUFBZU=;E*&H^{%qm5QNmF@Z6^5SVGBHpEy#OETOGGIVdl2#rl<8 zdrB;UL-5Mg%`Ge5%r#*|8a0#vG8rmVa4$OYxrpLtq2brk?>bzK)t z>CI48O>#;Nn9HX=zWE$^MYT!qKdyIQ37VQDA{5DDo&iPsKU1JqLt9ML@^iP1p$|YQ zU+_8*GlQ%NOWNErhGfVL`S(`lZtY>x2BNs^r_=l9s11aiL5XUFR(=D zTlTVg%J1ncGESGxw)&g&UV1n$v7ELEZ->JVjk}}ocR6%qTXx=_y*5k)+uD=zxkx&^ zyxVuYd;Ft?IVk7Ep~k;#L)@X=YnoNXZDh=-7nTY^{RwqP49mz03d?MR|1siLlO z5zLV>FFN%Vk!eGzd<}4_hSeZWe3z5p3fxe3AtX=P{&JJkx3jSL>a+bBlZuU*_7McH zejVy{&Sd1<^&!!c{CTI^`;wp_ghN4JHUYf1ftnJ&jH<6d*4y7mpp+PAfbkZ2K6!NV zA-L{uR3xpKk&@*@s9*LuQ;y-&esW!3hUOl-*w}^g>3NKwcdg09Xpsd&o)kEy1L)P_ z^WbMJzlST5`!Fh$arr=H8gSnpbLP{H|Fq>8K2~rxGJh;~G0PWKOD{a?%j@ePDB5$`63{O%{Z_SaxO?+aa&v0i=Rr@rcly>6N% zM5aWR&nVV)$I>q);oCyg<1z-3=h^tZ`1hlDx9rRE`~V#w*Anf)5Pj=rK&L}X-*el- z!>8vBsVLxmU2?*no86)^g>1BOSL1oi9JS`QpC0&>ZvJq--f_>iRCmy_yZN&5;D(8l zHvISx-VG#dg|h%Q8S~BZ_thVw4PT31H!j}tPHylrm(DO(aV<~sts7iOhV(O$S2<7f zQTEvxt0oj#UKlr9K&j~52LIZ`A;bpXkrz!x5CC>EZNBfTpTBm(UL*@NMdIt!gV|D? z`6wvSuIff>QWU-^$*PW(Beq{*|FS{lHD)~S$*HS0QwFbk?v=2FrX)QAfyMZ!{bR%ptOHL)o|Ml8=HT`J=bOl+nO8o4L(X5%i7}9r373$?uK`fO{Q9V z+bVT2RpP`Q%~sibCOCxT=N|-wKQP6;5V6yNm=??Du9M;4bIO=b@Pd%UZ$p)iXXr>G zGrRko39#+eiTyjvms7aQNv*$wOC)~{yTN|sS7e;~3=R{1IZEQ8(y5X1ad!5rM_<|u zkj%Q14LDm*AImFE(*qaxw{tI$d>)H#D^XR9BNm{}e_11Tz5}Tx@D+o6BoXUQa^fEoj*atsy&mcxc9hNNS@SVw_tqj?&Gcb|tkBhU|qur*8(=JEpQxyJZJr zZo74lhA|5L&sV@Tj0%;jTOr)H>YI@hy$l-9_Dw7=nlUS;l4=2$k7+dx1C1{k16iQa zmpmDqVPA|3zNU;MNvSQ5#54)w>W~LIozm^=+3@qP8RLs|;Vc1L-7(YLd9iu{aT2#hnWnldaDwg*)#`h8I_Vr5-PN2Pu$LP_(wy zIM{C!ejX#?C63k>?X-(uS3+R*32NfHdp$bk)9A!K(O$Dwla?rN>Z+IQ{lRb3;3xfKjQ4%{OPQ!JN9%pmo-a4`s?qXoA(|hnzKOQrXp;(rn|D@*Ovm>q160>%1D1OfvVKBHtc=`=1 zT(Ecd4t(>6?x< zX#3J;4{O}7V44d6t)<5A3tf*;>TK$6T;n{oe%x=;UmbAo1EM}B`pPTMo|pBk2zCB7 zrcroZkM?fsJ512rSOfdoZ3D@46hmW&xsaBoQg(R5dHY`VKWfPSH@82Yl4_RnSNcvS zgp0x{CrDz=w-_uGb)c>_Q?7?4>3}4X%#(U=Wtwb=PnMHuiL&Oe3T~i=0xWnF3RYAn zF+D{5eMbYIAA+QxI>>Nh3$)}9!J&Zh3)3HnSgm6ZEJ6p)=4;PmSTo8pWkDxa%0sDD zFX}dH7L$ryS_MsQS$f44$SlyIhbb@=p!mfZuEdI-u%-7(U`M)Y3&v}jQH>2Pu_}i( zGwY5w@`odOCq}p*t=V8GmjpT5;OhvTmMY)%9cTSX!H%0luYs>o>odP=t1QNucB97C zA{Kf2t5%KysgAO0zbo}yyjXTg8S@J^?+Y!bc~%9B-;kdjpzu&V5#7Ga7eNbmVP(`z)N z6HCFFae8SIrM;^p^Wpi%LJ-yQ8fYOiQ-n1wu|Kaiu!7P5rXQ6)(!tMo@-1gE0lDN$t|;2<_^ z9_Or~hqxd!gHAd9t>^tKLVn9Qkt^YojCS}GVwk#z1B!L7R7pTb5d0&u6O>I6H6$iv z&`aMEY9`&ww)vfZu#mKDTYP6NZ*sCfp+?9K>M34M(2osoQo)DCrCmg`J$2ICJ;aZX zT|#8Zq_FoZyw1Qkrbb?dqAYUH>Xyqy4nhhM$UO*xEBC`IVD{ryz2DGO&-x2hUWIVT z8PV)r9ZYeya~M5rU;JoleT1(}8ypRZkOSF0&? zcXpy#(xwC7Z=S`;n11~$o|QbR7_05=eC?kXwcN%A@0JW%JlC8fFpfT%+R=Cvpc}B( zgyqT)%Y+9Q>-0FAJ0@eyHvCLGYNOl{J_esHH_99WU75MclO`r6en{oqGy~^1?^{|& zKV2ha#lU{T4YFJ%nU%8^oiX^S9t(WHTG~Jw+j|ktHoIN7%e!?)XeE#0=JPyd3xj3W ztDPArt}*MsEFeekTB2x?Qy@)H85aQ$rmUApum2n>BE@7bl6Ba*{M;SYu?+hdvNyNJ zh-f+fV|}QBx?gS3A15q^jG)p$)CWt%c7QGQ< zxu_&o9j_ak}tvD!0R?p9#ZDJ#%9F0>&0diL__`xUp_$bWm zmtP@!<>&&CaHdMItS=RQIfX@r*(5-`v8)W$rH#80p~5mm)&@t&Vi4J*B=r^NkxvB{4{4xOd;1WHHnTeiQHG zOnNlw6VZ5i+MzBV_PeDdT@aJ|l(+^bGcqu&?WD6whlyKFqG{X7cAN*DN3rjx)Om7=-`IF+39nFC6-L$|5ra zeZ65b@*88qKiExhEw{!$FU8{}Q{p=`2dU+3{ej_a3CJpnZiA#Ao3;7Qj^BdK<~U2D z&Oh1(pAAn8!>tb#7M`ey2V5lBb}GyY`K|e0mk`m7aPDJI89IqJLj&vf}W6nH!9{Wu$Ik@eFt;efR+@JTpvOk0Rpt^J!y6EQ6MMpNvTq~s+?8lwV+`%tkDvs~_>XcV4E9pXy4jqV zl(L{@bhEvgid(`?MF{^n9*Oe-RQoW?3qWYE5X+i&GaFP=)-NSJ^TQFrP<}4A;q9Fs zQW6q(P7wn~PKaP6RmC7Xo)kM#7+Gpi2Uffvf095AjeVI%f&1l=tYCXX1Usbpl2Z<4 zwJVJiQb$Wu;;HlTt971ms5VSrPI7gn&(^e^iAmf>jawng9ed4-x|)nBZMuChL@fzF zlY~fammjxSRtPN(*+!Fr%n?ToN6q+?b1LqUWZRZSzlw(ofovmP^xapTw)e+#D%9B| zD`cBUXG{uCY*qP$Cu5g7<^9YJg#wMV_N4&)Uw#0UTig5 zOU(t=<^)jx7edeY_5h7Wf*eve4_VPlnZUHhK{RH>RB%V#dM{1laC6p5C68VkH1!oi zacAF`pSWbhL3V(Sj7)4fa2(OqBYaV z>MkFeh{HKswDZtJ&d4=%;>3A8Ro2Bw0XIX)Moj3huO82djKg^oTsCttKsj6X2{CH6 z0wAOzyc-2m!e?wJRQ*wJfwDNv@N70s!L^%{*az(}SklM!_ckJ7=*?&lB9H@CI!yt0 zswA_nuw`foZEQSMA-gijO#9eY`cL+ca@fl2M7sa>T>AYdUqv zE5u!BC;}&v_x4~|(4`r?VAQI+^&}Tnq&SnvxL88FJ^6`>ejP29sUA1#wi_>4&y-jZ zY!VI21f8Xn=MMoPD)nI zi}Ggv8Dn4yY`fq;s0bkO6HZ2d5+x*JbxysLS6LY5>_n~U@hplf*4f}V))Ke&PwYkm zvQoZC{J<1W8D1hd4Jvl;fOlDoY5N}lRza!0Ac0Baaq*=<5@~LSu0Du0r-RIM?l}lG zi7t1FV!-~V$=an`M^L3gF;Tzu`vBGR;qBG0GH)- zkc7EJ%m%m0wq6kSa-p0Tom+p$U;L9i_i^sl`ykZ)p>9W>@QmQxj?_ZUFbJ$V<|Db~`Qtz*M3^>U zl3KnI%9rm*HK=Gl`E23i%SeoG!wgt;_K!a2$a0nGBJWrcY53IV8+;OFu1g-XEl}dl zh9<>W#FgwKJk0olYNqM!z?bDlQ|2OE%N*d1|Fn8j8T1HSmjSO%e)6hkxg(usvI$l_ zgphKUHWx=~3Aec>FlAOaKfud%DtN(6E*i$IZvt+5nQ*x}(_r(u>8{Mm-LOSj$HJAD z({0$55w4yMmt7gt(x!#WdT!ixZkii*WrVr$Y)!NMK26VsE3BAwJF9mYD9CeJ{i>2zv`nchLGw5}^nN2&)BtppiF zRG9&MlH>%{b`x$vK17=`)X$>;kk7+8^+B9{ALliQCB*p-{5qWRx!MY45uEQ~u%sj# z6qAn`)@4dEej!t^32?>ZNRuomvsP+1MW>d4%(f%0GmUGekQ1g-R>Y(AHyQFb;&&8E3J)AG6H5!1?a)1M2b)l)9}`KoIgrj_l= zZ1_wvi!;d>o~BcwLWT1Syqj6K9SmIn|BZZUf<*f?L_@?ogpz1PXo+scT++;wjm@5n zK(1Q5FPC_3j|jp^!j}%4(p+jwqy!pdJOrJC<2^MSkU)dk=x&B2(Re(8$#IjG3`W57)o^+C7}}OJP$w|4Vg~Sr?g1x6b}qkwBK+t$Chc_`_(6#B}+h@ z^N~4+x;LN|I+6gy*~e(gtI^_$0S~Rw{6pDhvIJU88Plmxf(=3)l4OHa>)?k6R6w8S z@cG!$N6$D?_z2iE`+QO{K_3k!p(QbHf*2RAG3oT(e2hSs`g~!K)@+hpZbv?=E0@^3 zCO_N8<7eCwZIi+@l6W&EW(C*i)BV2OdHlFMu(l>^X(sg$gALXV9g}Ags&IZ_3z2qF zCZ(n5I9)F=Tt$x_Hruj3eiS3+6yw|R6>ipKK79DFy5qROn1^dXb2&BcI_Q?gxDDGf z7`D#BhUxRCKsxHXa_hU!qAYXcRz{poZhbec9JYQr?7C_4vz57W*C)0M6VuY@yWt8I zD!jCC>bHJ!9}hs1>&<|_)EDA{_`nZAr1>*8cZglx=t=4Y5-(pM^~HTsi(-&v&>GK| zVLy{F4y7>*qEk=A3lg*Hd%cV0;I3GNYV)B$jS!FkXv5Lj(lp=+)S1k6amgaP^-x^emkudg=pEjQ}Y3P{C` zhCLd4TqI5=ZIa4Q5^DN=d^`b;a|ig${U=u>sh+3jHMS6GOI!&ztSH9|kTn0#Z#*Gi zx$Uql&BXHUdr!#6zxJ4H^wL5@b&uKhB5@MVTX2OvKI=pbA=7|O7_4kES!V%b9hAcaW)hqA#G`O`et zj+V@qlvZfem7!d&+#xl_;Xu5z6eLDA=aUrqx#Ql9T0Nf&Y;TyOG$_X>*e-=K z+@C=lgW8<58<)zC9oNc^eQ%O__;T4iv|mmKz$`yJh6#$=j0hEUs$Ta4qcA|^kt z8*co;Jwl(OP_*9-esW;4 ziEFb9$1*FNzu@>BufAwee(>N4Ik`TNOZRqE=Ya#euymfnB-$A2uh+;WSSan)5<$-Vd9 zE8qR@cXe08y?gg=X}5k6ryP$fcTtwPdEGQuZsCSqxOvNAi)nHzvvH!FreEG|bcku; zvdoPWR%YeZ&W05#oZsL#-8lXch72$qb4%!kFJZ)cf}sOekHn?vgEYhSlLW*HL>S@b z-u<%limOGUjvAP8qk`j0h@9KJF3IL0klnuc5iQOjWy1(01XKrvnJZD$NcK`%nMv9W z3k!68YL*4Ull4I4%;qa&Xd-n$GSf{>r{r8=j=T(0wu`M26PkPmIMx&MBpd~@tL@toY4*G6)B8$;+ncYBtt<}ZTW$Vm_BlHvW zMH1l{XJSbji!!Y3l(gTL(IyBVH)rXgzxcKr`wxSQ9ORoUl1mHbd7=X$GCo5}`O7hB zG~xx-Q-=?GjtL(`Hv$n4YMjOqAUmgIaQcWL&?Kom&wB1??Nt(8_@+9*q}ei=&al#9 zof3j;2ZJOdEArTLia$ey?cao!>NROD491L1|Cok+IM57@(_>=XrWr-)rm3taL-cPZ zJzRfX_>?g|dSpeexr{%viCUjO_qor>_rCW%CB-DvBxu}z zn?(3GfAcpn()BgWZNnL79e3Y-x7>EyZStWHeMr{U*5s+Do>JMr`d9x-^`a@SEa`OHZsE$u$2>*9tY>wIY4UT;>!Pf0QOWd5x$?(KOc%H0)ge4NUI=I)wxUU#%G#LmjxFlH_i6G-B-?tQhy zR@kPiqxE`Il4K3hBK5@{UL+%QXt+0%*@fe>m~Du6j22~25|Gh8`eranB?&NyXor%` z%*Y^Gmi};FlJ!vXHL%q_Tyc9Q302a{Eh$)X-+O6Xe+&@mNWuaRI<7fks8VCisg0$+Ovw(B!v7+O(%|`p2@(CwC&G zW0+)G!6cT7yyiN90FHk~Q==L(Vfb)tw@tHhvtoylSt8A*tDjOfYEIZ zQkA>qy#M|0mw)%~{+(_^e*gXV7gCXSn{Qr+GCMmfDK2UopPQT0X&W=RX|Np1Ij4Gl zeqQ1@RuY~hC98x3+ZOB21lv}t&v-eXmD{lETbwShMLDl6b32?auM1la{nM4{rkzf2 zS{)TCR5+gj;_BCAX)%(;d5|{TbNP?}WdeONbD>*&;V=sHe$6G)_``J+M{?oIFOiqM z;c98j&V&4NnLAJ}Ka;@giZ^^llH(7GpR9^cYcl8N4t)vuB378nC>Tnujv7EH2e|JH zNzzELXbIO9)c8VJPZAJiWoJrI-1`$qHqwT}RY;ls++pvGq=|+w^94B&;M$yo-m=90 z9%+Xc$$b6Qve>*vmYQ#p-Lr3#9qqTuZ2Sso1bd-319FFaw7M1~l-74VCGf|10D_C- zSjZ)u+mL3khCW7LM-55*P40EuHgB13~gJ>q{d}6@Xr$Y zM?#27*mSiLbJ>m25Q7at@dh69lV6WJULL1@5$@EmB=>vHW| zuazsWeVw!ymL-Z}2|#>(F9B&@mF(mr(tqYYsrA=EnsTXuB-ZD4;YL%J3K)jBDqYd;(o((_+ix2=3 zUkmCIw3ehbdq8G8uaL#o)gZ~&%8t%kWcSS5W$)~};NGd>U7eqhrPejl1hEdh1w1dg zQU&jyxQ`Z;ict+&AAQHEE2BDS>_RG0qYIKg6z=D^7G|>15*f_;GF%9yKiifynU%G* zjtq{0(5~Y7I|Surcd)dg>BiI2)zcmVF{Q=dW1B`H>I5lPN5VXDoLFJQ)TX7pCR~@0 zWFO}w09}Z2o+8lca411EkT8S`Fj(S%$xm_p(1@1m;K-wcZY?6oCb5Q3#xXvA+cOBF zJxLnjJU3*Ja**Z;ICOD9Y!|Nq{`vu8jcZ2NwZ^qX%A(wa0r->YM+WpGv_14lqb+K> z@(G7qT0H$pqOEdLhy#jjo=LzQ2VZdH;qf{eCv8_yh4TueOM1?)d)syLfe(B@zx5Ags%3UXztUE+;m6vaxznRvx-fdQUwD!k3^HJZ+k@5-%SB zF>7+hhm81gB8Z+J)pfVN{yGR<4*D8|64nwp z5MYo~wN-=hM)<=M7RQTcH(wS-QC}XSrTeH~*S0{MhplyM+Zcid(s|xV+UaP% zuBAACxtU}^EvECu#bm^3MBLJQQ_^G|MW7%OV<@R+ae&NY=Ua#17L6ErhQ|(nnt7xz7T&YEqQ9t^lnO5u zoH9q6;Duocm0moYOZ4@droL=QfB$k*F5lOd+a6kx_q}zWTyyEXUc440yCl5?^+}Sg zjO3crHYj5n$*_$R)FGj!+@=#YKV{|et#6$hcf)Sn`Zi41xa%yoi@Wme;?u&ePn6TA z#oe%t6J=T1w>Vuo!*tag=?WFjXBcWQGZV;x15H`zc=CoqrWMeN1v9X_x(uvho1)70pW@3 z63;D2XYT<4Lk97IEb>tHP{KOy?IE^oIXy_2hW{%{H(??+7Ivx6IZ zkVw;}XxifWpnVa_1req-m9{~1WJYHzP!?&9TAd>aqLu`WIcY5HmClZfrLzFnxmX&t zy%G-Q#qV|`%J2;GXC?I868KF#IL$i9dY{y?c<)4w^a%J$r_?9GqX@0?IG5Ty!!(7v z1h#TXgPsg~>(X1}zy-uPYk)wvWpksBKEU8&9r*_+!ID*cnoENbM(?3_4D?eAgvz47GY<)U&Bb>n1C8ov8n3i7l3Ae7(=~bvu;d}!K2%Z3o3!xm? z*N}Rc$-!MSvS*==uqVw%Ae~kyE%n+HT5RJdzzVku;-R+H-XfX%HYz z9Uzekb38*frN44iddF9kkc6#{#O*l{?*{HyBT3Uf2zVa@drmJ&aG&BF*cQ@2a)Vi^ zx0ai&CW0WxppXa7% zPN71L0ysZ8caFqJXf!~-^@kXwfE@FeWLmjNf>DnoB+@?4pC=K^;7TBU6qkT3rXcmu z$w`{IWFe6IHbOVmgjqU|hh0Sp|99>m2FD84}n)4ju36T-7Ts-XXvAe|x=Lcwkvt z?G6Z}Cxc`l$4?%Y$DceTD;oou-Lp>?FS$hK_V1JCJV|gMbuW`8zb|`RBAp!lGC{G;G_BG}k63@jTT!{<@YjEq5BwZQhd|8oJ$QYE1bGF+Odb1!( zGZIDf64jR^Y%GWu&q-r(ugqR>h0Gm%g)Ch5T3NdMb+UZv>p`C1APYOMmf6;;q>)`D z(Z(+EPl7z3=peixt#r4v{9Pz>R`?PesTeu|?K%~fS}84~l~su|shZL^^fT9AMjwKN z^IprP`O>^AgY2XXhR0>FenRpSJ;_0u(_@|_aM>#8VGqnSwWSlqxicnNctu%HQ$gsP znDNF{==n40_F1St6l{C~%Hbi66nd`s#hjuFFCAg=jvIw z>2BII`80Pfy4Kk|*0*88#$8vITevbScl~nMl@aAQQPwNRiL%V~ZJ2PwWt=XpLWK%1 zR_GHR?$qyh10?o>{S8@K@h(m1dhiy>H6q`l=*-P8iNXm_f_D zrbGdVc`%D`3*?B~O&g-m%|_292B zfH==eeXt(_*Em;~Z8Z6~dmpEw zuq|BAIm`MWdTY{4j!1WSNCxR~^z8=vzHcnVAfuc&Q^T=x0=Zd3yEuQiM;l5_LyPgZ z$cp$ltZ|A8Ih)OS%=&^T7%$o)DM)mdil1g6)46yUpF~+8japMO5a^ASRMt)oW##xl z)=nhS-xx`6L*&?MD$lGWa%3%$V{54#U(4hqi1ksB>?7S=R&Y(M4o8BZWT@No0}0VL zG5R4!`M3m-fHq)Y#TOAJAeDyCLuKpX)9UYGWQC`g9>*9Hwrj$A%m6)vxoJ&`G;`QS zSGx-eK7;|S(unb_nLI3m=|xl>+6-O$Tr83Sgjl3Sk#1@+=zvJqwGLOY!ubx~3C1W} zFt=cGH7S^GbxzTBP%iUyapGKM)8u7LlM&m=%a~TjG@0uY4D-u4O?R5CjI))wm{zV! zlx_MnnTvA13Kc56m{9&sPrl3TmM<3_Y|6rdCq7qF$ZIm&Zp+07c1xq)mN0J1AP?oK z#9!5bZa<{&KnYb(hKUlU@1x&G*Znf8mGnC)eL2U%B&9dGzRtbh*qL z2oP&lA_P*?J911;KKQ5vgMqYXW~APk6>m6@c-WH$h;%1v$!rAjHar1R`v}sG%lg`y ztgVA|4n2v&w(eFK7Q6F#aI|`o9pMgT4hSImQPKq>%?(|AeNnEiWSds&S{i~k=8|kC zl5?s;7sRRuf|u4Mu6024K+55K5cScBFU1$+7`aJ`Nsc);I;8d6w+{K#F^v4IOWR1| z&86kI4sl)6YyDDq;n8lPlCK5{gsidfjoEDhBD}Z?4}$F z1Q^)((#t#3yfcXW2=e$`qD%1HYw>VH3=WjpjFZ_v zde!Jscog#&7hb6hE0>1TEG!ptKL51Vaouill#OEma~L#G{#k>m7o|bnSfh^}I zrsXBdI?QLo#I(At%&nuWL%3-cHeAk2*t&^nX=NEv4p%Q5R;ch|#^n3V7yOnML%IC2 zSy^0+WPYwCal}<9V(EcoKK$sa+VLcVwR5$Pp-H?SeyK`Qq@z9P5W zbyU86-wC^lu=X{uMXlGaRmzy5|BVzI(vr>OL}5WVm|W3^JY)jHyJr46{Y} z)>S*o7z}gy9*FcSL8NCLB2BoYjVOoRxJ5Y+QI<{9nO2sCO`|_8uM0QL>RNxh{N*@d z^(|~(8$O-y>RFkED|6f8>bW|uyo~Mg5*3lIP~pV}OAqY#c_fWSAg_GIqFnp>-Lh|Q zM`mX^{U8K+31rY8$%Bs`kweGU)vc}c#0RPAv_PtGZ+T{YB;9C9>U*z{=D}A=`@$=v zz3)P4?ARso+^jU0mZZIFhqRU#)Y8{Kc1*I>HSs{4eZ7T&ymS+gv;?GWB%v+?0rCVw zv$3%zCyqTMUIdC%Z%XPlWtf7{tKy4u`U0J&FYA#+a|gf?Ez$${d4e`@lb4Oct*iBT2;Zz*4YExK0!*K}^f?`a zj(SFaO$O--+Pz}tJtuJKNyt~#@;uUt*%5Fg&)O&aAPKjGF~jj09edX3;|{I?hjW_* z7f3Urast5nc!X|g@TI&Vh%U~p4-)MSATEfsmxIuv&--vgUvlnb39=ufF9}_9na?6N z0_AZKQ=?^9U*3Zb>)<~p-D^7AK>^7%pLd=vKestVeJC>onbv0;RJbNN##v|^ceCVR ziFs`wfbiS;!CsIQ>>1k8fMwlAxT!E3>ic?C+v4FiI;I$V>4;`7;K-G zLro_|gQi?&wcwyg_3-cG7&nq3E;UD?!g-CUM7m58)gt}1trlrl=l&@m6N zrkmux`|i_S5V`fYUH;D2Yjp|R4hy$!E?k*gmW7RPm)Dgu?B<`A$EKI-nU=@ZDYt{Z zE3vlE(hQ1jwDTde5ZYR_>m*B*)@bkR~`ttGDS_+lA4_Km!-CNiNrfD zm1u5RLayKuf|!5|dm+McC?TBZjg&wiz2{!(J#$#PE32}8?4)d*Tvtmp=Q#7Zz`4S` zVP7`;133n=ePV?hsep7qrQ7#qFpNN`K#D=4NrFAJFW@U{wI+BRtY$r?B0nYu~7j{F-ahc9II4QXY?2r2aTi!cbPv39d=I}e)4JQf~@@r*uw z2Aq4k_26$&(Ew?=iQp-rpOkqG5M1u*?t`v+U5UINq9D?>A+8UcmmrX=i++XE0SVep z63W%$I30tfqQlhJ8ni+l105uK9w6f*gkgZs6Y6o9Le7z9BCXo}gv8yf2*P4hl*3&s zxg1}XVbcJy`>U{ajUzWGO{q5t;Tx`Act(%5vaw~I5sf*Kh3j>f^HxN< zLWLI}_$_WVeRs7Ka2Qs7gi9nKJAo~6ui0adaR^;htjvJytATR(wTCX)E zojoA_+(D5L_i7NXAWY$B;sqc_+yo=y^o#)9Fp<^AAD5K}AC~?zPfK?Es6@k_G`&n( zsJ0pNrLi2(hQ6#1`mzGjexi#!AoJ@3?vm(%jK-3{Wm_!Kpv`E9KdOUw;)v8*$zvl~ zp@kYcT>6e-5;qWh{*2FK7^OG}a#Y+Gxyc8Z6CB8(l0POGLTjB-CfE}QE8!*4HDr!f zW$v122{PkmnufkPH*uV{F)q)PWoRAJNS+JF6GSO*w|Z2?eV50^+qy?;gS1x6{wt<_=+qX-cz#ueey%}g>PJhIP~&`pJX1z%Ft`6E$)$CgWpb(uw-@IW zk!*+t<2<7mP!w8`4>TX2OZLd@v2ogou{1+MABEZJGVG%m11ql1K^>FHg(R=j>B!}m zU#`~DfBw(^`FL{{+rBg5Ol?2gW3#X%^>p>SX=mF`7dDTri*VbyU7O3g)AU>!&%tGv zU8dWuA3S(auD<$ex$wdZ)ooWtg$fm3XyE-~`hA96a%RStcfR8l^0PnvTA80~$n4C5 zEG_Jm+0KG=+HGkz>vH($syzJ2A?26`HOW8#hVg><3zti+xd%jmD^U#axdHak1s??I zfUAKFdR)hO<%n!Nc&Ch>c}N!guIycm|bulj@h~{Zzt(MhQoo*lU?nnvNo*A zMjFdz-j;6Kl0nvyVbYR}Q#xpg=BgNaKLnM{L101DLB~LR%zS8_T}vx89ktLF-M|Cw z$}^BJI?8g$lth!nP6)3dvm}7bYltGDWROHyNwlfo_>3cu=H+~95Nch&8ez6?G;t=q zkn7YDw1K(^n|h09C5kn~lo5lX8Avx|ny|hFZ_!4^54L?Agfk@1^a_Cxr%|vwYqabp z82F5&-i)N#igejQG*5h|Dez5a0Nlc zIO=2Jkg-2&Xh$soX-6HT#)mh}ONfIMxf8BUjoJb(iO2K8dX2L%eKkJ#;#pOYT6{2S z9$)y-rWVsZ$Z%|WvGyJ3PV1BsB+W;$bkHsyx7{t#9+!zQFXT4N51T&r3f)3P#CXoe zsHeh915?kmy}4MYGW|4g3J0cU@WT#tB=mg-x@vvVSh^EX&=z zWoLD)J6%0xSvkz|5}A!NnQg}s*XwHS9)K`&DdhDYtX(VpylPrU9(UC+aAkahj zX(3ZGMm+$dP5<~(x@RKU79R?1TnW1Kt=KzQ6JU(-GNlBaLlR6O@>?KoKV*jmbY-ZiN)_k7HSc3t0%i4D^wv<*~gC6cwpw^=ud)g=c^RB(Y*06Kt9Wkq6K z)ZhH(H|5Q5ezT_8`glXy(k6g$D=YhF(kIG!EUX^Ou;onCDf@cUEW$1r-%jSHO{;6W zFyZRj@HAOD%xN4Pv@9$vXnZ^U3Kc565W(-J{eGHzP6#G2Hy6p<-*%0>^QYc~@Qf@k z@051CBT*Ph97V$IwI6usuzcg@JEhwPIR@L{V?PH2(G@e|od`Fi2ExT12BX@B)V)oa zsc*`1b6u9>6EdGaBlQ#aOLY7(nFR}rL3lh6-&|iR3ncODvH@bW36j(WQ3s!v1jK77 zv_{rJra_>yhM5aJ^x;5i2JrjvyLcq^;JASYUl2r@z8|4Y#zM-KF_cuRPqJkR7w*&G zU^@R94kCr#zty+BWPrOIj+*y6e)2JB`;&Dtl^J+1rnZ(~9A!>ibFlDnx+z8dqEamb zKB4ziEyDtJk(6nj^i`sAb^6ceiY)>$P14pI9fmY|=4Bv_I0G0I1^k7f zhC#<5ldR9Yu>`u4AV@S`0c&=`+5b3r}D2qy?KVe{xPbNvm<3F2Om_ zH7)@N9X32q6AW_t@WI%Xl=E1)<}1&_> z)zmAl3?$Op9rESN3NH!p8XChTPBvWj%Xq`(3o_d()=kt4wx&B`{lqJmjSP6#yWXWQ z4F2&S|FJyr#1lGQgHt?q?ARf%e)X$04+-?2|M{QGd*AzBeX)>4@8vIlIj-a4DhAHB zO%`X;E6W*wE;83A$~qR)@)KqGwD5MM{#?MRGVE{8e_mT#lM^RS6e$xtm+~uAsPN;0 zAqjEalU65?tKaY%dFQ*|A-i|&mF2}9xEI%z^pF5;bTj$tjd#fPH{LG20f-bH{Cx2$ z1G~t$v_rHkUf7X1?8!oBO_n;VvTJTbcEDe3bY&(=B+9$u_17gx1|Zv@;9(tQ_>ztS z8D^ezL1NcYc0bQRo@*dR9(<(LLg}R-*?B`!xKS3%h_el#&vlCF>w9G=!%JiFl7{#R z+Md$RMrfP8GQrF^&cqYwmsSwlR}Mg5d}0{WTEQhSQtiPah$p#%lH_nMFMM9Gcjve zD|=Lx8VDoTw(~sB2_8sLOF){r>B~q-G)6th#}!a;{y~gE|Db19bTQpaLh8fOheO#U z%f4Esnb%j#D}9}Fj51QL27_ykgEO`v%eWP~`E`H?$yT%1GF(3cw4;x6Kj5zrIR8G{ z+Q&d?b;vpBrjM9G`$9j9KStRn1&s9>fx^dSr!O!nxn?5D)t4H{QHnGYZR(qHM$!cF zU92}Ggu?jwSNM9J6e1TU`P2j!&FLc*UK+r4U~VPXz3n>rzz04sxqu3gxaA;RNB{l* zA@l$HuS7nhsGe*XoviH_Z*ZK5;sk4HKMZ!azXe7J$?~-5rUw>7uxa4A)jggRUfW!=B zb#+aCc*lM6rS#=;`VF~}3N5~%VWzy8Xqq?<@b*?eJ*dl{x6!x>zjbEiM9zyYGw z2U!{-r;;d=CQ>BM(*>#H#9oE@d7q?;FxFfBhtx13-qm>PVqd7wI3v(<)0j!M$)pI% zh_QmHhdMT?$Yetr9II=X_euIjV8h0@aV8XbO;GD0Skt6D{ZN=FKDSg>rFrd;-dDUwlInDvyBEF(_-$`@Q?vgrcUwPP@r z#Ot_+YmfV1jL#kZ*oUilHj>Em%C|5YrhlnNXj7aNQv&5i_IP&_uB-A2=Qk!-+BUEk zg(X>pm07gvfxPvVOY+_~?UA>=W(UZ$S*orKmf@CT!?ZlV=}m9au(>huf;MT^cgwRn zWmy?+Ubj3qA7RtoGOSKH&DC*HmfLtaKjXISGr{IP6SgbUmAPdxOshYq(9qwGM4wIF z6)IHtae?1Q`<(>2;EEV+l4t=@3gsUX#4Jx5O@AId6&U^MG&1xtk z096Aq_8T(Hd^iwjkcAP5i$@DIh;{-(HH6Mkpp!RrE_9a0AmJd_{Y3Hs$R3xsL)m03 zBq#=aB;meg7>~IR@iqpZC^!$2OrVI4)78TVauqtfH)@Lh+x!;1#o3w(%`+Cb$|#Sz zdQU7e!Le*}o74}0B}^(}nvpP$Pn!?vc2Ho`EX*+%`RPGtax3P2*~HmrToHrTdQ%Gi zw1T2MP5?%CatnCBmVk_6NK?zj3U%*uit5j`K-Nvze;E zp%;fnHD>1AbzC2uSI_0`e7L|5;V|f;CD=3{<%2pSjhnZygp7IMc#M?i{Ivqt&oHA^ z8glrxT83+eFQ{P z3Ni;mtuF@hi1;X?tuUC}i|{{riLMAUO185tY?`Z6gq66WY{pqu5#}F{l}{|(*^!20 z0YSx31&%)YfO*GYm~@HOTYQ=WP{+rf5-CTWNd^VQLfzIkju8gY5~kVge9qvHx>PeC zOtU`voo%&kqsP3O0smxzv`Tw9NFhmd0v|*=MLWQSbuKi{T?S&E^QQ#n#WljIKxRAi z26Si#rmi_oPSY5s3C=%PC_!1!A5Z%rVTCf!BssiUo(}mzmd#6wTycfh6#I>ZA`R{5 zdete8p-)DgnBOq?lIbwRfQ;5`t>5&G=?4`VzX(%q)1rvPo?iu$YKY+24~9(BAq|Zr z*`}`@24BlSl-;%v$FfxC_VG9_$h32`gC=?gdLSmmAW+0`?CiY?F9mEl&zAhsFB4&N zm2OQd>ztAYaCNP-aqDmAT-bOy-PJ3n5w2{S+=i|1IxDlj4HIsdaMR0ru5)D;Zn~Rh zePUYL>B2TnObfgIv@qd@D^#fP;{(5W)|C-Ad}*{mqCgI~Yxb^#7sy-Q@pd_J?4*3{ zi(ir7|1bYl{^0-jF}dUJ2c-vM3%aA$;LJ2aY1qr4;nH+xIf6H+s~y3pO(a07=vUpJpf4u*_K!~Hfu6S>q?*#_*n`9 zoq%*FC>sQv^Py`fi)k zA0PHu3Nc|kBX`3t+~d}u=C>po0+MAod!(djJcb%N!$^%>dkaCct~NRfq|x^>9Csq2 zpNU6e%6T{}3xgjVfutbD+HMv>vI+9Y`PQM|LM@>t@icLnTW+eNo3yB7>r7j8UN)nU zvDM_RB&4*;24JR70x=m&)=m=fx=cr#kzyvLUFy!Fex^^&nMbMcxl(J4BmI5AB|l*=glF3K{-tt(@i zuJuosR`#dqmStsF9jj-LuPnE|g&QxY*_#!yT^X*NaKq*EUW z`J*+h(F!Ey+RXTBlFaxZvzNc@W%B)7Zj}%J{{L70`V*g$`|i142E#-NG+30xGloF# zI=Cq9g@%NUri9TfNDfFMt&{0Me30Rq57GoilMcBSGbmYxd$eDd0Z4Fvz+LH(1|FtH z=qLnv4#15g<3OSZ!%#NX!Iv$8=BgZp6`I?8lRztpgVQibnKkB`Pab6rj|ps;1c*P=gFJJ3f#$&<%Fq={aLiuR1nF#o`85&e;DD=yzzL3l z^R;noA|%jFl*KvTI3~6WWspRg$0*yzCa_+fA6j4OkXAHB+p6g%uk}y4&r*>h6gZjw zF(J(5KclP}G_C}j%o69GgpowrM~8Eq(43k(hou`P+ryiTc#%f#W z8xOrBb(FiPWKz?gA_Dd+)2>9{>ORFer$evzvYH+%FSQ9QC5$ys3n;%5Z0nV+RIH@KCmD= z4=zb-p4L{{)#@M`v)~gTh#=deWT-^K4?!A1c6CWKIKGQa0zJ$k=?|fbax>JKfmDG- zE5YWP(5c^$WMr(*U6SaYzlA{S5_TlcYKdkT_Z5eTQ{fR$4 z23$v+uRTn0vFN-HWJejC+L5AN%*(d1;BonEKSgXX$T6om#W9aI94kKnlUv@MbvIIii!ga%~^l{jxuhg;4$WIRfK0o=QHx()~U+#*RUfxttkaPUQ3r5NDFoumy61G?bSqiH;>3M$$b=lQju68k(U# zTB4Oiqj>ORl4qUDQ4nZd&Ca>SkN|pN44xh%Okzf|9P2cL$ZtvnavFlb>oRX*Eu-|g zX0eGgOg~^4ZRKhfC>e(b0u9G0F1jq+779e>Lt<&->}W&a?H|v?0QWzQ36O($!9u!WZ_Q)+ADk}um&7|fO2V-4#Pzd>RHHe zJX$BM)l8$F=}8X8bQ2W%B%~nGN}zLYkTb-2H&$jIh4wQDa+W2~L;f1qv2G#GfeQ4E zs)9XF+cl$ldI%l|uXXyU6V1_jV+=BB0In6*XA)JoT??CT z<^4W)Ynq<#Y-Ggg^sM}BWkgw4j$52gekOlAS5CKa>u)EwaMLSPsPN+hNdxYp`2OMH zT@NH`f*s(A?=@SpaNtte_wp-ccIO^hIeAi2T6TFG#{<2!)CPfGlKH)J5;pPJCu1T3 z<3#ElWQFs4aevN}AsnrQHC^q4bE1=8D!t9V4EmY$`Xfnl$b%-hFbK2<0u5rCfbe7> zin+98m^I+@r+BciB$WQ@P?8NW<}Fre90+|9Bb^gXhb9$dns*mEl3iMkqi6=MBYs$y zkn8!za6!WmXIjvOj1RtAN6|i?Op(@c5^f)dT99NM7gv)Y%=8W8tMwXXaE)X-P(^64 zpUI-&L&82`x0x6lj^_%Ofg5pSYdtHP!d8>O3W&RLEE|NDj0_=@&T<(iyCeBEGL^F& zCvF^xHys8P)Mq}WVMt@y2y+KQl3U+vKnDW|oL?VuhB=>^t>Y;-FB+08nimZNl1ltZ z&T^=Lb3o#VF7QIspy_P2@s(t=577?Jm2N~!5(hJ=*AQruW`@-Y4K?;8E#A7)3kfl| z3rCpcfvGR@;=o%GmRR&Jr!h&fKKIZcvG zQoXy?kX_BXEP+_hf@n8sv4$Rxozpuavh@n*HMX2#mpG9S=OCvi{y!g)^-q6R>K9xf zy_>%+$N%&1OM2XF;6a@SAAC^$(|`I;x-KzyE&R*B{7X$EYm!>zxc&3s?5dbKKD6IbMx6e)^V%r-}}Aa({!t6F)i*o7iF0ZTX{Kd!)4!wEy^+* zFU!il>+Ert(_EC}r-NIT_0J`Lg$fn^{=kQRy%kB+07HmkY3$f5J1&2X%+5)`*CguHWpV$4%jjJovB?wv|L30=jG?mn=UM*C<9|DTvSr$K}t?N-#4o z!Q7$*^9vHqFG;wts4if5ZUO0Y;TQPe(g^1yV!KeDZp;E_tk@ZRoOBRq_9^S51zR@*BKd{} z`;yHKFz5*V7>@I=xu!S$Wbc%klicmaqyH~&b}RChSM>86`x_wL=Q&mH(^v1VQ0`qsDP z;K76P^{;xG{{aiDqId?3gS!)BCVPvN@^y| zYSLfngGg^00*(4e*bQk00Y;gWXcoZKK9PuHbX33%59@ zk+OzHXb*x!kwDX0u9jaiFwL!rs1h_=*;g5C2mbXQ$_=cz!Zt+|vJ7LzWm`EdgD>sX zP(Cfq8izCUzUhoUkHL^+gqc?*sGI$-<(lJRzp?jn97wGNoqDQkf;VbI33;p>8Voqi z1O3CSG}9KQS`I3FoU?!yaWGUmf}gZ9lUxUATkN-#2-9M&1Q~T}f1&?)%#<-*+pCuA zqV1?p*Qmy^h9J*j(8eGE10JO1*-(;v6J&QFF)rLR;U+KWKg|P@8n8?pJI#zSDrVnfH4b`{_#DEJa*ZkxHkOLs8jbP(=lNE|wJ zNPU9D`$`GGSlx6NW%+i#1>>$eTbb)@y6Y2edW8xV zo=@;$Y9FXu5yrm6?O1A!hQvGe$^0d+l5k;{zU0TXcGE18&Gn-)w`)cgFIbZLYzsGD zum_M^ox%YfeW{N`8jkDtk`$0Yr(6L6?7|DU!bT?jO%Ui_A_I`C6l5|PaT65~>}XDs zS`+m()MXiWy#t9x8m-)R8%}-UdRV)?{maMmtPf;EzZGX@QPFpo%%o zoVMX}yKv^qHH$>3XJ$si#RUoG=cESWOj2!oOveedpf*AYI!%!42FgL%c_MjlQ__tU z$@`mRNGuI`CVkDjnUZJ?qrLh^f@;zxF#6Qcjcd?{Tqe&Cn#MvLVqn6!65oO}q8t(^ z-ZJ?j8s`q1X%KeqHm$gI$T=kg$E_=XfIRDT44gZs6>7-PX4_V=T#`}vkgGqIv2N(G zV)~4QpuK8=&2$461jS2z84YRm=JD`3L~FHi%B5pE_KKO3!4VKG&77jZ-VaEU;dm9) z{aNWm%WylS6Yr8X!tHobt<`aebBBJ4=s>zdoZlFPx$e(MGniN1mQE7^kw)8DcAn!R z@=>pcD*%HZbI#1Mn86GOHSA%E*mn4ckSx>ET(5&fhlM4Yg9siltwgV70wgr zwONL}XlnJkq$gL$1dw3dYv9IO=+Gkk$Rm$vxQmh3@BZ%Z%B{EFD)-!T5AJ{b8XAyX zbJG=;v#@}hByWx=gWFa2dc8tR)YAOuqmSyYd+x zc$#h*({#6!S?6LqnFYf<7FW;pZP@ld<2FpVI%RApC)_j}w!Upog$fmZOu%<8tcMad zac_;A(%yHeboO5^wWwt*#UQ7&AZNpMX>Qb4A+iI|K!t>c8}t?`>2y-EQK?9*l(i|xT>s4bDSN7%bpeK`!=_j~;wlh1s7Z^Qglv??)mH zjt>$`D>8^QQawF~OoxwlS*vLX!WbywgsUS7gqA0hB$}<}v<0pO9bqsLA#aHCBXyC~ zL53T_EJ*YY;~IOUQ{OGEc&D`Mdt`=j5bYKScPrch-FcM5^G-WIT8#7ODTyA6A8|?u zu5Vlm9Ea($d^mQJZ6*JN_JbZ`L56d+Mh6kY&SKM9#yOHQ%^mm z(>F+fS5{V(U~}3AtEGWM}iBIHG-ohnm?WMg{~w^ zxRIQsId?9Mz<(POw3a|fXebGg7tEq?zRtCVufzr*+ZpDveq>cfAm++PmHjdix^!qi zE#ijIGZ*EwN*AkykO-5_)lpYOl8+-(a~@rB-1hKQ2A|f_VS=t$li{)BaK|L?q74~e zHpg+n@!n;!Bad~A7c%}?ISI6cXk!CJzYUVt0GTI=ZbXoWAf#xUzAOf!jpxybMjZ4r z`*R6woG<_3EMvngU~Vu8^%BO2|5Q!R(~s~V?ObxeQtbXfiB3iGD`HV<3_aV zwoqn0lX}#bhCh&)?M-+-Stt8vsN^~13#>Xv0)5Z?w4mag)iCJdz(6-sQOAvJK%yB& zol0)eJl(Yre>@f)Ac4KpN*`d*6wngS0R{-S(q@*=Bhqt#^NzudfJBeHzU0vWdHcF` zc@7>wM4z%(sM-huiP6poZPT3zdB|)s+uy*Uwmk_!q>ben8IVTD?-U9}eU8rpO;o|Q z4|E`h{$V->i26rg9dvlUm{omVpVTwum@+2*_!5QVKiW zzQ4R`4fvuVr)sp@ZD}@}nvd~Lr=wFk8V$ar!pdq&rYWa&nbSh3%P=j}b}luie9+p= zdC|;Ezh1A)@#DwUXFaUbTDS@7SSz-boej=a-{RTkd$zFkx%HOY@Lbz8EkEb2-+AYq z^3jicRL^CF3KgC^^rj1VA;?J#vVnV9Fuz0Q558P#G4G)?@tT3FzVtN0{dagmJhiwY zHy_$`8pdN=Ni_8E2>1CD_K2@`(c+8mGsq3?i)z)@xx<;>YqtncWjH4b8iCa!4&4oaOx5vLCR zCn=~)MHHe1I4({X;r&+6aY3ZCSz10}2`b4ddK_|1XDKG2VN)uv0?jOGIFNiE#I)U) zcDyPbZ$n}Xct#rmszINET-RzRBntZ=yKEQaxK7d$t`#^x2_@|N62Zkfm$|O(<(zn) zGS;B{BYC$onn`sugJ#czH)ZaDm6n{JSee38zHRkz{bO58<+V0b7kqa4ftZv1e45$H6}kjL{&G zY<*pZCr;|LLIFAPxatTAXpNhFAgrYtXs!C8H6fh`VPW)0p!G#gPUGOu|9Hk|9z8y| zqAlt$@JQED@6arNN0}Bs2KDi;Cxt;olu^+EESt|S`Xo#wdwg~=+qfXJESw%Q=&G^q zl0@@5K)#|VdwVuMKZ<_l6cQCev5s(yKPn7CK6_H<(sv|?19Up)(c^f1FOk4c;WLUl zNjlj+mIq&-xsZiuVCZ9jhx4Y}e4`lcF1Aziv37=w&md!#kGz$1buK|5b6Yk8`lzdGUVWa8QF$5H~`ma4pFh4icyPlskcB%+h~beqp1wX z#=+^*e{3ur{*BLeTE|8iB-|WGPaRvWO=UwhuGhRhN$?qDy80Bs(bw`A!3VuAzGufV z(0d9b`51g!)0e@6_JF@Ega6PP&Eq^d=ociK1yp!3gV*{gD3dJyq*F^e}xJ!Rqz{fF5eQ>#aG&oBk`McaMnQL`Mn^~S4q&ESF%Zq zsK>RD;kdblBpbN@4#)$w0Nn`>4|$zG3}US7G813~wl0}fmAlCfJA4Dl^<6eWhX_?~^X*zWS*%_vV4t28{mXi%f(mk=MB%2oBG2!EZ zu_=1*KwETfGNfuUp7t02^I;fdAhtY5IKDdippHRGFw__NNMa3%=8Jy}^V}CLz+tmBV+TFc zI+Ri4ugvtJgmaL}KvHjjYd@1H8sJheD~kBIp81Q39tn>JvN{?^(iylU+8>!!IzXZ& zM*s0VS|W|G@p({2rfJ%6`q0$|GmdV9(`!K62B$vKk-Vk53Cao|U7)Z@HcpQu`UJ@H zTAIol{Ka}*F6wk-HQS2M!!4q!lVuu$bIYwu8BMPD1#^cPeN!#K!}6u4us|0_7SX>0^hsgXE;E zYjCUR%pppF9FC=uK&y{qP~r`c^s+Cs0Zb#It;aatSVo*O0wTx$Ac>|?nC(+5u-;=y zqWMcMJI3@SKX~pZFlF0$(CiIk?=8-NmP3LLJrHS3{$-Z6j=b72vYAS)|)D(}`F=Sj4Zv#3*{eEl*R%9>E3NHrW z5}Qoz;L>&cV(}(H-(rLlAAj~UQagB^93Hmhsm({_j>C7#_n*2`?s(>2x%b#Za?g1>ye*iJ^cd0ai4zFnG?5!1r-`O@c?zx-u9fKT`3uTbHo3-hg+4t$f; zr-hj$n(vx$ZfbpDk1SpGI*{l&^Sy(!eS(h3L9Jdvz`bT0}v`1e&^FSndTrnsF&7({j8UigO(41d_az=>T7x>sB zmPlv7nrQ(B8Dpcyga=G0@Fl2YFw$CM(SW7A!)fP`OxrMkblfSSgX0W9RGWC_MIgsI zsaOBOCs7{FzdH2=4*kwmKFm7SYzJD!zEW-D_^Dx*s|1?)_-A@)a?Jod9xe-rQ}5M5 zQo~J&L0(BzWq{TtB>VV7IX=#{S+xRW8@@J+4h0#<2+D&n;+PI3TUSBB07k9*bQuXU z+u^xLCDr)W*5Q zB+?NWif*cc!}p?GTAUX>gX7d+Hqh9DJgWs-4+Lq2GjpctpbK9~y2ADuo^7n3eWwoj z_4@@M-DcN6=QXVQCX?|gXH|BYdr0$fZn@e?i&IshALF{Mnv>C zC4??)x|L7!%Q9lSbXSM4GFLt=T$YvP+sUl&y3@%lTv<8Y%3QL%oy>w^l4s77u84Gn z3ez$9#+1RwXz{%QG4PvB+;PE7ybvUMpDbPedL_}+Gv7P<@JOP&$JN#Fpw$%I>Xg_i zi6&oAMR4p~(mpq_KsvXL4rlS;CyB0s7jjC6dC4#Xk>kr#B+p6^3K!ts9K;PnCYTOV zM`D}P8qBt`8U@;hv~;~I`DSk{wia3zpgv$WTHyvUh=5G$eR_c7Ac^Lb5n7|+X&EGv z8bJBuQY}bw&~6fG%>Z36yLzWBi+h)3`M_@3b;&;2ap7KB*t;yVyB4LhGzSt5H`|tU zn9ACb6Oxb|zn2Pb-H)I?nW=(7bR(1k1hv}H;*5oVN4(dHnv zj=pZ8pW`mb8VD=Ms+ZxodQjl64`8F*k&r8JaL2*1<(gy~jbM}2c*`mfXP=W`bAuqA zofD!T;BC*WuS8LsPOoI1fLe{1XmB5 zmtkbQ1%G88sF%yHgp(gcyNHBdhWXCn+8#?w03a2^1hwLEK| zB53*+0l<=J#yKt;@I_2~4>;|`d?(PI^!bYneGYJnybAVp;cmMIX^G}bgdj2XIZo$zy#yrDBtqR|FgYDpr}kt86?eBq4NQxXY+P0P4q#`>oIe6QrVXc#|pwh5#lKzX!qbAuIa za8WMvYumLf1Ee2{9{W0Hz?DEUVnTC{$0Wr+b~V0GHbJfZ?ce;dcB ze&8SdV@lL8r*lNDHb@;!rG}L0oMiZBH$jkVI;|1yWq+`$+_ag0nvWq8XLUsj^%|i= zS*oc$4o5H!9g@ce&UF*SxDK-FcO{accqxu)0JW6UM?mz^PTk&Hi8QU_B(Jmt8!}C& zwem1|ZrM-}ZO&<@=^U3YjuG7yA&sOuh9bi;!;sezu0uD*1s0+2Lt5g8sHcx?J+vu- zItDB>+YW0w^MmV{uMf~po@W#{6URz6Ll9{_Y>@V_CDL91u|^k`3-TvJcO;=Vp@Bq`4+A&VdKQ<^axjG%bk}0Y-Qzg ztZ!lU2rJ)CR?dGmvS~WRwDdBpydu&SDx3?<_YB`2e9`dW$Ai+t1Cs0X^7rWa`~|Xj z$?HL^4T5jpsh+L4 zkb^*z6z62rT&ANS3cBtzzsB&xW*bC@4{eqYeflUj>GmXUa>qpKqpTs?wYC9r4}z@^ zcLL7^v?s?y--B+vxGeRBWeMV@WFQmypbr&j8fCPdQIrRt$E@^`5smSWK@!{)Sd+>2rVitb%=Y1gR1rqkv=5FXvH_h2H#Zqb-3MVMLC$Gq z$2m?(_X%8bD(J&&t+fG9IuIAf*e`A$I+`O+q?Nv=a(Y-*w|Ks>O1 z0*7*xJR?j3Eq&C~lW;VU0A&Pd59dU4%#tU(=4vv)^~^cLN<5=jS|F7=FPc+2P`2O5 zF>pe=XP{q)t36FO*c z+7sD1bKyMMp10O#CD1I)0+sM3LONbIG1|0%@BK0cfK3eaIyj~Vu3O4^oU~M%9WXg2 zK>K+O!Zi`@;9B9be_U#E6Wq&OnK*9s`N<=w@It~=B5j?8OQeIPMU}bf?Yb|I9NxtJ zHkXTcW5`&5I=rYZoZl~xo_tbnf94+f&J#b7AHt`6@666Z6C*?1d_VG$kLXt5++5|N zi!Ra^-CVfsqR(a7xGwd~%#6y)WYP5r8@}R@XqG$1-ZGbaI zl7qnI{HZ#@qZi~kPlv`bjDJI*Q4o0|Sb!HdBme>CdcB57qbl6LleKlTwlxL-IZ5?8 zx83f7anM?;4MEdDFdA)%7M7&3v{Rz_B^(ooH`+Eh1_BEru1BWC**HA{^-2EVQ(pYB z0VHXh9spW|B#@0b)M*+^dv{2CVMhEIL=g2VxnhoaNl7-j z)^<^6;nU%+ruB}U$_YJV`e$XJN;q707EhHSo+Qj%fkf9;_9C_Ddywh2=Mh)JC zNu)uJxwW_c0)PRQzJ&*HQ=N!pno~?T1qa8&GDxO%ngNO?fu8svvxU?7(K=s!X!JqW zef4Q|28s0GWPt05FQX378)yqgI05>StF9PJG@3F*O{w7r-1Mb^XK{y?TO1dsmguY^ zkZ7--OLGwfbOFL9$aCnaqcxfYI)gs9ao1l&*eB$_+Bb0eZ^9JWUqWyg>Jkh@hqOp@ zPBg91L!{DyOzZRxYNP-356vcl=2wVA3xY2fZh|=X;27>E=m)fk#F1!ldT-=go zabkTak00sDl^4x!NoV+hVN9fLd+C?SBz+63=i+pE%b=_* zpB69YcV)IcWm#FDn3i6amD9_zibz*@DZ_sIC*Q8EaMO!#=9okaEq-uuXGuCcFO$~t z%f*ZMHW(h<%%T5ybS9h9Kk=lbo5%5##zPYieDfgZ_Z2!&&(lIy2IcI58hFlD1l>Hw9@Ky4rKr&1PFsTnJFEs_T?`8R*?Fli?UKgwE(tmq5QH)E*Cbt8mE`zIUE^8FqB@dK-cJ|~3b~c> z;7J=mpmkJ`sf<%K+VdTm-?b>sId02c5NJ444myMR$?|Y4w9KD)@~Av@?_<(EzK($d z?pxZiB(1EA1eSFh->-3l5pGq^{S68qWLTY&W9zu3If=5_tj99Mug zbD9K?k8-uP^BfNOYXHsxNi?nKDo3+%A4LlbKmhRA*>V#zp9V!=(bxKziZT(#2mgT# zgpzZS;W&TTA4=d4Ku{AUru-Fw=UBM2VbM0-sSshEr;V^)tC~vU48n_sGOSZS;QMd^ z$hslaJXaX>&_c~g&LghgfkB)41C+^nGl|eHt{l!K-}D7j{!&6KG>B?W>#rVwo-MVK z(>lxg*c2tvF@}f>Ae4(}H%W91;tT?vqA%5Xh2=+dMB+%Ua zku!&SU0i#d!a?FZKzoL$hwYSr8TEp?6tRV-!MS>m%MiiVb!qaEO<~S<6uyBe++J*T7;{s43 zeUq8mv9K_f6C_+jcaX_lkFCiYt^mJ3Ws-Kso_JUlpbWl!oSLD8< z56Nryyh3$IaDU}jenmH7p@sSNuYbLgX>J+L&0fCng)c~ohY7a`-?wj{Tz~!bx_vlz z+v67E^ttQdSHAKUwNi8A7sfyJsZZ&u6U_J8*S=QX{N^_+xn}ux6BqY*h;n>8P|qc% zE~d%Kn3kVm*C)0M6O7Z@a;$7xd9Dtzoy_$sB3bDz2FszGT2Z<&L ziyG2e1nFG35XAKW9*SJ6xgbFJe$o00_AI>QcKhYqU+ z0Z#h^kp4DE2RH>tw30qrE-@&GmUc>g$8M=F>=2JrLcn%7r&(yVK7K-S=&SXUwlok; zODa$KW1%E{U^1M>p?yGd7S?o?jrpDP(wOCPd?e89D3TEpNR&x3t&|9~u0N91Lu>N% z15c}8OSno1`bG&bd=TW&Zy=A68Q&0O4-`)=$&7;})6#5K8DW_85>DlGI3Co84|bO0 z_=)4i6Etj44+1znY8+CYpwrpEkZ@WDkAr76$3TZ&pkN*xlNM(Su%8+q(?8=NGizC+ z-?V>m&QTeuoUTh8reWMksFnaa4gQ01#Y6FJ63W!3XXN;$3;^> zVv9Uxng@vjhh2qVIPQr^f=yi?E>H);jr_b8d^ocl9;(!7M({yY?UW9^{NOBjNFL{1 z(}6^{7Cj8uP+|)tv+he0dXiwkGDM#xP)Xq@+KmF6HYb+a+cDUiP zzn#p+iS2YOYDISli?UuhOgD`%Ta;y|OC#KHg$fnU1t2CM&K|e-20@ED^D?vZ zfJE&JKoItTI5d>FPFCH>CF>oN-m%9(3cG4K)_I!x^oEz^GUWEb-M%D4l1^GRTjB?t z?$!b^0rBC_(R`tB0CGhgJmA$5&7aSC8!o1D*fQ0DEY-r8#_BO)&?h!XRdZ=s;<-5x z43q()?9VMq^WeqOzUWe^@7ilD&=K-;UNq^`%9`|_ei9`5gm@V@Eipg)r&(8$Y*W(Q zx($$!RT*T*z`GAgckrb2hR+~;So)B8t)A?-WJY$vHJ57=&E)96Orq9E;)Wr8BzyUw zChO1iy$(o73&gPr^3s4KX(p=-;Xq=!pzzr79%t@zdi*A2 zKD96O!*Tq?pURocFgp|-jFT3(`0D_=D*~|u0i;!SFj$ui{ehE%ZbeUVxjFoqb6lJd z6sIjI%H^$>gN*Sl812;iF|HG3fGVf1(bw&^(FQI@#~1l=F`#Vdf(YhWi2kmF?8V@T zxK6@|t07_lmFW_4ER!op3_Gh&|~AzVy66dbmz|sJ)BYdN{v)g>eX{lSohqC#RU{9wgOp>^S%YyOLd> zCnKF3O;S%w^k@i2t29YI)6qU9&xp{crML@jvN{|}4;{ucsK-#0OTx?@7}R=RB9(Gh(=0fxLVsq) z!xaQN2$fkf(twMYjGDbiD1%NYt~FY8%i*?_K3j<%Tj z*(2#~W|DAUnLgT7Sfg{UAc9Q%+K@P_!!ZreN2`OOTB4bz(~DSUan3?q1GC^8?I18O z5f&tx$<)zfW>~cgpXnMd{tUBL8Oiv3J(jvobuned7;)JA6<(M)Wom~x`NfGX!uqn| z*NT@77Z(sG%8 z@4ffRd*AzBx#5Nz)H414_rG6v;=A?MTXhcf<(FTsmgq&aoB7x#PEnwaYn`^oL`;)S zgFU{p!8BbfbJM2D&K1l{l*_cR>C@^ehpVX_6<*qyd~b?x#rTtPZt3mU+ae&)@ywFU z?m8g#*=3~7fMCvxM=Nq1NdUqXHt=xthtfOx=>MO+KaI65x$Zl`b}k}NUrx;IWtE9QtD|A@VIg!Qgn zu*v?eO%A#?-tF3OZ{I~L;!$pa^n5DU{AjzR+|bOQf~|y`^h{<}p8*1bD93!v2VS@- znCpte@e(>?T2K14YH3S(MO;IQ3q!J|fODr|m367Lre$kwYo0q{l@o0%ca-m@K)jyk zX-#1Sc!pa$w)^rcHsU)JZnjl&{ycHznU+!c6X*og0vlC~| zTU&L;LSgD3pQ(K8uygkHP-*QCZGUs$_HXQ3Z?7jFfnlK?pc1mWX=&o8Q?%2Gz|6#| zrIE|$qSzhhqzON50w5}WKyh9{%8lv-gr{H3w-Rtwb*SfH2m_Do&L&+%aVzyqZ9|)A z{u>IAcKb>z_&cc{5c^28vOu=LHH#d`Sz|5kD#a#updRu#YbK-{Tp0=5?^!~BkT>VqPlq=y8|3Lg@USiQzRkYkr z8Bz@O7t)W4bk!3*D^bA~b;tSiS&GNzsyvutJS?ZsB!K9dW$lvH1)!64EuM;5cI-e?!XU;m@hiU_K>Hsh4@4UA14*tj*HBX5R=trI7|4*fhufTj zDUXSWqL-V4JM!xl#m5bZI3Fkv*ZY0zf$|ptj_HpZ(R|)FzVOpuuwVSeUv$T1n(pu0 zjsM{v+1h{i3s!yP;oS9B+Ut$&pa1&n_TPTtZoBJb*gY;%UrWHRzx^G1^6hWiC(l1_ zpS$;y)~Ysh-#`)69YuHYi}Y@Ij_JJ-vgcQ>T(STD|N7s%`IwIB{Y7!=bSRaR&wRot zT=m_SYFe$cVb#`(+>noMS(2XC#4He+3B)j~+gM=vs)OihciZO3JhMZssF-fcH2|xC z4DY-B8CF&til6JddBF=9b^r}Pm9JQ48jr|DJCJ6g1uUbHI|oNh&5*zWX(9i-%GKfG zD3z_c*0OA+ZIyPovK;Xa-^LT-;aTdS&Fu=`>)Y<@7i@Uxx*q0z3 z?p#$szM4o^ebxoYY6=VB;B`8$z56Gb;@Qwx<=7)at}PX7r={ z=nwj*4>}r^;<&hp`tFdv3xGzSXo;XCSaY!R3y@}=SYA;fT4fulVMkg}j*^P2v4Ha| zscYRR9hq(wmhzI%q{N4f6U(G$oKda()DXE*WmkpZGxe!d?UM|Y4*}@z-o&QtL=Uwb z>(h26?`L_|9Z0ha%`J|3vF+Y|S# zSf|Nj?N;K5o7H;9zIE{#`?HVylx_HpUWc@JfaDbOQOr-IWw+(9P|J>i~#SegXs86GGu640eJMwV2HMrYE>%CzQ8TfMU|K+D6;z zr#Gy&#zH`83xS5|e5tIHvGuN9waw>Vw8_<*R@PkLAUg6YFR_-w%WxLk=%ACC@-bGH z2g-WSnk%WDyPxa3tExYNFm@sZe)_$A+u6KfH?CZ^og3F(JOUZxnaf=t2qbOUT4UQz zHMeb}zG=;D->Rh@0qK1Kr@qz8;mT<)`=|*3*2^<%3v_Q(OV;KCH9faREJTXWwvgex zxS&3-WK~@d3z@3!T$F;N2)&_zwP9DA*Y~wXX0>`|!ZynPP&(lY@r$U_dR1VsCji8$ z6~R@1v{U$7WWh~2fkXkFZYj8vzUM_014?;#mCa8j5uEf73Mcdj^&NrFDWVTDE9bt8 z>ld+<)n@5bi#!2kPRLLsJpYjko=72X?ZBTM>Pad9tVQ0uu4J2vry*5U9i@slb#Tk) zh9Q1rl#x|VT;yV?zT9JM5I=dRPY|tsC$i5f%12wC0@0I3$@-PldRlyS=M^o66n0Xx zp2pH}Oc?;v4W*kYA1Xs$_;|tyr;1cmckG{6RF+J24u~%I<~G=yT2E@q`fi|w)j)Y< zH=1rrw)8hr-uyT_Inty3k9_Md)H3qnT0p5yxx(B(|Dgqgv0%Q?~o(T*Y^ z8~yEDVZS!~P87oy^K&O!=8Jh>re*ir#eci_ zj&hIso#Ku5`qnDMqroL3Bc(T1EeXt*l!jC@?O7)|u$IzkCj(cFvXuN<<&o@TTUVOw z91gV@nW#>^6#Dm_+*lS7poPESBt0~u>JLz@`W5`+%>p74r_Z##+PVi?qzpMjSzdX3 zAx=I%41jqw01)NiS!HwPT!nCX%Cu7s=6zROp5b{-Y-)daVMoOu*D=PEM%0H$iw{wU z3hRIxF$nf*Q3C&E*%N_L;zw4wqD4){Wh&BDHa=wJQ$`naP&G`{-@IKAffx%oPb$h# zQ*GVRLaD7fZ3%q0Y&>h)U{tlffNx)8U>`NDS)Vro)S>z-Z$^lhW3Bz%>lH!ZcG*UV zatNSy)&ILzx4z;VNDU_q#a&k(xb|LwN;O{`%o!U1Xeo~4OUo)Bi0~aYF{ScyLRi(GWiDpWlKEbXz%eu&M zO#gN179btZk!Ao#kmZBfccc%2bo4Ls0i@ZHe*C@_TWNA|{b2(~K7jO7m!9z>?>aS( zg1R-HqKe_7{!VI{Z`odShnDToJMk6uqI;xe_hma&bUVsDnxlR@75yXK&Mm4)NAW>L zzM}aUNFUSt0L?%$zlY+~Sr{+5jtP0_wBE6-#_@BRv%9FpQ~+jnT5jj1T4H5#)$}~P zX`{W@Z8q2vn9*iB>?nw?Altm7!+6%ZW>B##AJ z1)RsDo{h&njm`LxA0MUx!a_nE3s!2e`+VAxcHP$QId3cX-s9liOGg3ovF@Y{B6hO- z#_M+Dx#w(pWlO*W;N+e`cYcAbnbM!^OYbR~urqw7IQtMb8~ z!x^$m+94m9_`nNLQ!USxzQDJDb}JbQTo0_130S8iTS>cirq;I;^|9AkeQw$7>mmDHd=wB6l3)d3$D0=9_+zOciaWdhOMoTs+*{Yu*6 zmcPIs+2k22@W~hm*u60@jnU;uB~d?h6d> z&TZ6{dq1_|NaZJ-+LHyyTw`L6Of(0owA7CUpj{Tanprog3P3lkEAR}69!}b-*QNk; zyljZ?t`e!#Wxy$>?}Kycj228)wR=rqy{>UqolGt3&n(&3k`53(P@0^`F(}zsAbP5N zar_>jnce4joE?#R{pp|jrOcF^)(c15Rn$LOlyNH|?Fqk_2!c6puiVL1BzMgnJ;fo@z0qhCr5^_VI`p6v78L!jyfSuz;aw7wJ~p zG5xSavwN*0BmMXO-rrjsGj|Jhdp7xh{68)EYyXXv?z=a4yp_6oVEiv%-M0Vj$5-t1 zO4yNJrae7G|L2$fll}ZdKWC@vM~jFY(;qM5Jnow}Zyw7?AJdN|#VH43I*X=A(WNZV z!7g+;2LEplNV-RSqZ^Y56WQZw!dH zKnsgfQ=IHX1CoPWHoQRRA?aYf8-mKJsQ}gw=45hLqoMDa6YZ8eriMYyP>7(CrL$q+~K1| z##r?;)`HYe;E>~JR=1IW^Mo-a1$d@>6oT6}%L=RpX= zuQKR%o;wOR5bx$-Xjl6^+n-E)XZWUC*2sH@9rpH^V}#(4py=eiWix zc&!7Zf8iH?!Jc~RDffW<;iAS$)!`oejsI*HKld5yo;@awj(D4}%Pg!kJlL|iK(q#_A|qnuflTLPH>TyXz*)r_=g(Q|{8>xd0_hb25kC<` z;7XtXKo`VG#4Etw2SC66hIOx8wUVCqnP6y|HsuRQgn$PV--R}*lwIT6*zR95JJ(5U zMIfy%;9DhWS9~Jq8=VU^75Lp7m+U2hoNwQp*_C0*8s(m?S>H}qQd`YZ8wh0WH;}Lv z@D*SiX^Zf_&U)JF4Ed^LgewiK(6>O_Eg3UW#H;n0>bY;#bXUNC#~Sl}YpPE+)H$+!m2q!s z)Ja$i@?DeO;jY``g>cCxHAR&@G}JT*-au(k1tRVkanT6|?cm>$Z2# zT{dq1;E5d2R1dwY{idC&X?4qTRz&y+&>+4!y<%H-rnIi%A9evEVP3Wub!eF<(z07I zY)rq%Q_NG5C)$_YAnZ_)FY+w&LPdMgTnrN_`lCm`Vwgxpx1;=v^iJU;;a1GcGMzkm z($C^P7VS8uA4g(DL{+3PA`;80?XVM_<{(QRh+ULsLTXci=-GyxxEXIOz;V-Td{Ka7 zPkc*b1z=fkT2f;x5Kxs_C2hGlN14~v0?~dO;Z)#xG!PKz+GK>h^UzV~Xt?JfC7g_q zk5^?!PYnHpe0la{F11>=^1waTJbS{*+`8w|BY_Xy70gO+a&TZfuf1+Jp81}QZ*E#L zLEaQ_4~Paa5Vij1oY%ZBXw$c~+Rz?YAKOD4W~T&_8YO{M&HBE-u4w%OEQLcS8RmxG zEU{M(O7{EL1){e~c5_;FS?N>&d`v9SOcADsDJdeV{m9nSgeuwn<(ifxWlyC^(&u`6(=Jgn4HfiC4oXgd*zEX&-e z&g|@3*&aBPTD>~38#_CGvXq{@o{!~6B39(KH`Y~3S++K{z)=%Bzx+4_@5Fl59(iEh z?mpkPW}|FxzTLBtz`wVT?^gw&%-aM$!es9=fM5te0FFrf0YoEI;12$uV=ozLL)F&; zMB@hZBduTy1Ru=|+@e2{TM>P2qHqG3C9cMndB%r>vsCpfkgNI}t8T}No6YDM;ux9w zfPkzC$f8O$0nzHz$^c}P7FF}Kr@q>=QeEJgooMxqQd42IZk$yVuPUC84+pb`+Olc= z(Teqlt2Q34*+j}@FHJfc3r(3d-bQ@nNbRZ|6fIFpr(@Oi&}x;Q)sx5X}*av%bLQC~+~9UAgZJMgs19n8=ZJss~kww~T&(ptLR5s&hl(O0{B~ z;hfQLD(c&+13v@XU$u}QF{1;rLpBwk%(41K!RVvSiL@}|;^|6lk4C>xU4jQrkh zJd-k@JA?Azogt*f0+JI%$TJ^{_NPc&L-2$*GiMtO>!h5sVv8%sqyI7e==1|Xnu|>0 z!xr+6p(nF6-~sjk>=3?z{am8*YhQ=8NWIAbm_f&J;#cpwQ!k z8$hK}U$Lyx5rWdp$#{^5gXn47lG#~}!xg!KQilS=R|QC}%738HIUs@vqvu>%06Nig z4Mf0h8z7o%tV4X7z$cpg1)j%)u1x`SfFFQWg-KqZt*0@{`1cIwIdzSEDLiHYz@*)> z)%)+VY(-#1Pj|e72nS<255u#v+q1nl-m;s|K5zX?mo3rr8JSu@w1azx!h&C%xH0R> zuV)_&*CE#$5gp?+q1?~vMJijxyuL(dubwl8m6Bq>0Qh}ni z=EzR3DjtDb!10!V(~i`IZq;`B0?h)>fV;Wc!guhomiH;O6GUE?wzsUZi<|Xq-n(n+jZd{ZPMvXBHo%aY(+? ztT;ltg|hh{c~TmlKY(`p3;8^3($>_52Wl4pDIezwL?g;E5M!=rkVx-r-AS>V+a+> z4+YyX{V?bD*eU%W^K zUak-4vK20LA@6`b{FVu~WgrSI^A`PY7iO7`@_(l=%LIRs-YL%8#lIX6RCJ@x9(dpZ zd*qQvtX8Yp`Sa&}p+db4G@zI17)T$}`-K=Kj3~q{s`WKXtDMZB#lB`qWS0TGWr2Zo zc3NYvm4`Tx`z4vS#Oq&lNkvUh*9>{+hQJ%Uhnes6X8A6(1L)Dv#{C1E47&mVptCTg z%f~S~@6-X&WlfF&L@$%_pz&R*RIGXCq^;a@){;im!v}B8@c9JKj`w)KYkO~9wC(3# zw%)}nR??W~9AM9@=Z}xT*`XXch(?CFmh|jQTL5}xXl;SXw1oUJlSjVutoQ-XbA>}F zWPhC4Rsko~hcsXH#ppW;Ph^2`u*=&;eS3ueF+hk3f01r#Vs3t5%uV-RCOyxzC)m`|hcz z?$|Ig8>+0&y?E2QeZUN05Wp-2nAO~cnfm3e1v}4v*0zIb6;%GnUz1sXZb#(>A{X!m zARRz;@QY$1fzM+S<>|XExQF@-Ap@!HY5%d*040#Eb|_7eQ3h03)gE=Vt3WltS}VJ- zTb;Rh2D{8-p~KzLwqz4z&2&9NKhithq}IQO3wb zJzwoT=*?_LZN7EDX&h|q2|#P^%aqR`OcRo!=hMIFzs)q!0#W0rQdV1=HCrWXXdT_? zsO_~bt*Vby>m{qIA5^NUNA(*YXUg&|%@j4I={gC8B%R0mZLs+VhMX7e;#l~&4h5Z- zbyFd7U#RAT0vGJ;u7d{ZSbnvUtc z(hmS>cBCWGs3>-%mqk0GUo-=xuk;%W(T<}3SHAKUyLkPQJ@(&z*3N$XUOV~W^LF*c zi?+A90^5TkU&gQ*MzxdNy^z=aZ=Y9n`M^F)-~~;7GTpX>q3xwQr9#A z?Mufl<&PKfD{L8gXhb=Zii7h?*49KOvxX68Ku;V%_k^be@^~(VN0W?vI5f7TF0j(w z6W|DM+C1J!jC-C5ni$hg%hv8aXZ4e7tdw&(-WY1rp*>|r? z-%9KvA{hcm>}V38l8kJlHMNdF34rv*US?a}nhmA`Y(ll1Ma(H95FadZ!8JR&f9(%MY;0;(d>vmPGqpCeG5Pj_ii;&Q) zAshO^j!1{^O5>DhQN?^3cAud{05vS$pzs@X+DHn22h*Y4p%B3jQWE(u5HIeth8O}^ zS2&d;h>^fUo4RZ0(sVU;r`ePrYT+nAU7FRE@0x&W!^RT;bw-Q&z?H7=L-a0W9X8{U6K z)J%|5p3A?aexBJzvtlg)|I0_#aio8u1t7Y+cB(g6ebJy^*a8e%R-_+`GoQrgDLI)>| ztk$Z&aA-CBRwvZMemb1kjaRSOCqD5B=V6x=P`9mY36MT2%rTHYrXNqrColhl%9dtLtJc@` zjLA_JEPAd1B$C;x)P^2kfI=pqZB3xp#DKWj;dq7sZfUJyNmXDW(PS2Pp*7b7ppk!` z4*LN>D{TDm2m(Zp=Y542xD=0#K?BRA^cbI&%vxtQZ1vtVmNWwhc3-sIJQHB<-Pp3- zH!s@g`lgjf0w;L8iYAp-c?Nj-$At5-)sumpY7OjcN6+45tlA(=IDsMp&stdYrkQQ_ zQhQ^|>=gm$H+ECo;tXN=O~u3IAB5qY-$r$8Yc1txHnYuxvhDV3n)vgJH2`?z*Fgj@ zWM+3)NA|H5%{u}wNI{PUfH?!&BlNOK`Lj^Q5De?WP8|?ks9OC9^mBR0mHoM0+!ft#>ppo;CZxJtcea?vmYeGO>s6O6 zU>_+}Ks1@t@S3U3r-J4j#aFF$wTRiXHb7b+x;`0Mb}+T+&e*y;eH$VYH5l7)XJmVu zL)+h-Sbqc%2Vj=1mL^sakc{P{M(8Kh7q!;N%66hzRo_gkBLLkHfUd5n{hI>KT09xj zSRA^7beF%qkeSF3H<8ZKi<#2!V*%-pF(v9%dBC=C^UiqaKNkP)P>a^+ntP*>Pkut% zg?Rn@2;#-h-Gf=#vNj?e`3^Mcup^C_%Br3bovh-==J`&xLg0sZ3zxod`HRO*oFP?F zupQI8r!ayG1gMItNU^FT75x|H0!uLtK=5!cPB?Vmxea$UDC7>o2Y3cJvjhF;qmSC> zKKHr26WvOHIe;@^&{5Am`>caK;wz>LMSFBR%0KGMYS}$fw3EN0Uy&!$vVSxab~${c zqTB8Kqh2&e{U~#!WqYLC<>i=;>Bo-_`#2`ROr^SFmD-vn$_iM-F-d8bT6x;Ebb8Wv zqX8WA5^}FsrEc&P%VWqjCe9=i2o`Y2YQDS8E_7-Yn`wbRI@t9c=J_~?aQL&(Cs)GG z1TqD(rw0nl2?HaA;hE{4LBT3D7cf8udgFn+taI0CDFX zHM`ht*dCxt+<@nZ7XZXul)-LpmX>W>0P4nm%?9I|;$%Uh>4#@L&m7NEm}QW>-W-No z>OR>S+s~bz*-uG5+~`}QGzx$s1n~L`Rmk%+I0pmnL3heC#fNln@7L{DpB>n5KR>Xy z_V`dSznsJsfG9*0F8feE1n5pQd-lP*_w5r8ckS`}NA}o*6MOujxqb8liGA!tHM{$K z(=J`zw`ZTfpz;YE&Dqrt;xUMDc# zg)%ugSXUo%C?#m7yf4zkL^7(knGio8I*Ob$%;=iGMZ7bfc za)bzpfcfHhJ%BrPuLTU(%a>9ucB=aVhY*|oL;ReA#}ZS`$@vuiuowrqcA&knBd z+3uB|?cN*w5 zhc*rR0{=+EH}vO2&cGV_E7#MraG>YV_OvDAgcCKU!t<*v?s^ZCnm?U}djv!D5_ zixogz`f>mL_uE4cJ!I?a>-OS{FZynD+>u6}7tnn6>{+|_-h18r%rnn;c*3yLK^TBG zX)go9=oa%;%wHtj-pT#2L*5!sQAZWiinPpI%;Pd|q+*yD=d$^oXqo5KsZ;)eA)+1B zJ0dd|E?mfc57UB6h0%B+E(g(VKPHcJq0>a*LStvr?}goEA3qvbIsal*DoqE`vz~)u#vlAY zII`tZNvw1Bgst6u#=2Tg)>a1uFC;X z5$(;|$WFE=eq`Kmn%coQvz>lsd*jr`X~VX9Rl9bOSa&So>>mOK&{rhV;Dn1tl?yXU zeq>#LnD{QX^XB;tzmR@|K{*h~%zSdPGPQHHnLyFp)~ho+*DhO2IITAv`RNj&G=YCn zo6>x768=4B{`|uNNhi-^weRH}vp25xZErBQTBGK2uK*3fM*kxm;w!0UNsd3uq;vWQ zA1GF{nbnoIN@Z^SQD*<~zg)53|JF_Gsj!pjC=X9^#Hs$|WhQ;>sp1mYlr@$YV4SEg z0-p0w(gR@TZGm65f*;|%R9-TL51<$D%O5U~C#Q5{9g#jggd+^$4X(rw#W=_{y2vA- zuSPe816&KRmBw=Cl9!%p3f09d9_gt0f%-Xits%;z)RM8%VaHicp=A7p=-s4$-@tFo zY*H17MjpDlXDhXBf#`iLo`#kThF0Dm+N{^N{oNhw?{{s|ooHdIFxt` z=EFXQ7zM;7q`@a=E>iHIS~a%Dett9-k3Rea1`i8!F^=FC>(5!;JM@S~mReKKkCC1; z?2g0WEv$dWxrg&KC=!be`Um%WXwgnIc(^*I_e!c(Jvl`29O-X<^PBEbBsy{N9O=-B z0!2W_Inv*~dCEStwrTAOE8astbU^RdzV$ z4}HkP0+`_eJQIeG68WGJdrb33r9Y^6{;=tG`Mgv95$9k*5{Wj6q8(5%?D09$$MoYy zVS3UOQ`SOVAezfoe0LN8CU@jQQ-SExyd^$ncukI_eF3aJv2aeVKQa%Aj}R*gQ>h6= zHv@o16k()^f2wC8v%LPplUBxDCpBOj*J}f$H4|G}ZMf)1i3xU*jyUz7bsDyM_LS8+ zO$X02J^Q%)5YR~yl!1*3K-d0T7j1Cms)K03Yq`xG95*tlbS7OuP@u4`G@CUUR0q#p z9@*|t{3XC3fPi#M*6!5o^yxL*?~d%!CDnn8Scp7LN)ajKH!aWn!#lv)h#Td6+RpjJ zUks5)5{x3i4us3cn_c_d##EqFu5y?O$nsI!mH_!{yEA)zr)1kBvle65 z6U~1QnQ~7Nq9?2MvE6&RY@dBX;Ho_f8!}215Y28npre*0R;$P?G@Vv6KZ@_AOJ)1g zQ``33t3&Gp7FAYGJ>ldD`jYpv2!bJj=rl!Mm6J$fj^L`O-Z)P@faSwZ6511v!`z3m zxX4HZz6D<>ls)g$)VbPXHskrtv;8ntPbE((Qjn!~la$QPPYs6ny^TT?fs_Wx1T*1- zF@C5?I*|_B7hE7l{m&E4+p65p@{1?EPura#|=0?TA z0)j#2ivbNfL|@cx77F>Gx%&ECeV{*_TTcrOE`AB;ZR3xh^!)5?#_aWO&-UqOa?Xq4 zKZj-!{UEQ<@FpfVOT~{4F}JmNI9b>8M;YGN;Ju**2g{|%$AVT}S@om7M0@HVu+5#M z-@UnM*YvD9O!S!EE2)aZt&xg+i|uj6rU>(iVv3gbR%e zO>BND$FwdG-Ldk#A$LH8CPabgiS3AmoyI_mQ7BNER1~Hv0G-w4j#vig*ybV#QcULI zDI1COfD{uOPq?K}hyVaA^f^U_nE;EF#4Y#ssWoezShKR8e-p(&7;6G<0;n~C1AG)E zAO2OE4IACuvhC+zun?B4 z>^m8m(eR@fvBXTcd#?LWfk(9P$|(lBJptbQ zZb@Qs7s?z#JPOlXi>?TwOVxd~!;Y<_yVfWVESXLOQUTFD8}$!tUm$v<_LvM*egLV* z2RLM*BM_~ALCnMpct&p7TU-vjNm!@Xn(iYb{20kFi>Wd? zfEh5IgJ`NA-K8}IklAs!sm7vo05rI?uSKaKj{|A)>wr23(i7=dyIt$CeJ$cy;cu4o z?<)M{M2Tb%73kK;MlGVRX(4~2&H_zO75QK7^{h8h+~NmFv$$Z9k?0vgaXqBsBlU~@ zfqid#+rri4?s-h_kyN$bvwr|c7YQK!&~N-_yYRWsIFOD&tVn*d;S!Kuree6GKpPb8 z%i(Y51{K|p;)9Cr%RIO9`%%LDC~kKmcp}{?d^8tz=yqX_a)XX{q>t&xg%|<6R!;?X zxM)T21s7LA9=fi{dqtBG=cDnl+*tG8uI9{r*_j3NINT(ixEw$?ElDai)2umN$Ulo< zMqv%ZZ$Z-;7o7CuEI_1LE^9PxG8|}z6{wE9n$5FT-BwR+_{WEXZqNFAT^k5&*Uz4| ztRv6{co4`#%%ia;pgkVg)>BW~-N}JHe7a%}o~ql)W@610dC95qc^}XQnaYtS^S5@* ze)D^K0@0lN%vV)JIkEM%)IRv=Y1=;-+sm)s&@({KhyX7Z#3RM)LO))M4pi}oMNr=I z$_g64_!OQ?`a6U_xa-&51%3qnKC(Kpk8jMamI#q3dG6aH0=E9Iv+GeIo3V@)ODyz@!#w0+!)J)=)mkK^wPX zx>yIt>>kegP3N{ zB@N$qq>$i3r_6jz33(c~c!&6AfasP$^y<)(+OD-L+qP2Lv)Wt>R>VN(1A*9Zw))@N>C|2HbyPrfx6fi(d5Rz!r8tI)=$gP2l!DmP$&B8g_eE% zY|mC}VbVFKKly~*I&##C>eBohxgJ}OMJj%88+2Br%KIWxIW1gvKbG4iHN9s+J- z+t$3tmr?O~b~wQx7Lrw4imU07PbY|R0M2p-*YyK_@g2ZOfOLvg1Qd+>pd-FNT0z4`Wz zK=h6PKVk@EG|yO`#{h}~4$0@_pgUh=UrhZ=6d4NvoEA0UUYub3*xJ}Wv|$2T6D@A$ z0Z7Z+af@`Y31=I3<#AnW9!>?>ACy$bs?!;Z2J$7~!FzcdS~<}|L{)xvy=0&N=xG7y zb?da|0)B#Eh>oZ}zW9xO`|`K?w%cR(nEY|JHoNShFR=R`N`}r(b3*`yk0?W0hrkD2 zzy;9_u7VffU6hZI0?o)qhj;{{y&VAEL0;Npaxe@$3@X%_lsABk3Y8n&XHnw-ZYf{j z06yg$d~$!$;iid{2aX)lb2H9PA##rk%DqK_Ba{^e`UIdZzTJ@9A+u*2agJGAb-6mQ zthQ~PY|Abg6 ztjm9OC9$Sdb>Ku^WMNiFOGlQnXlC}R#d(G?HrBoidr$Rvt=IQQ4>jiE9WuvVX-|fDq!aB;@jtt@WjkcpV?Cz# zLaNX3=m$vu{lEYBy}=F#S7^wYfYkMW_>XM;@BV^SA9>i_iv-WUR$l+&*I&2)^B3;6 zyH18nTVfoMj&gf9bh~ixHjQPsX#Y{e7wNski5+@3aU2z2q&xB7&J8O1ALRx`cRuR8 za^=b~kUpkA!K6OTYxnAkKvdX81SlZNkxXlvC>v5Wx6|uq$w+hJo+f8NbQlMRq=_i2 zTcy&rB&qriG$$cwz_?$WmV@2`hscP~UKmzqS&Yx5O5GuyKhmAQ2)e3+M5Ltvtw zl>Ka3CQ?niwmVGh$(Q!+$=61;t<3GCPn@+*r*2>U`kQurQ~7f7jFA5# zh0=yHQkTJWNIXXf<>hw+jv-W}!)H+7UnY-JKU`RSwm!DUPn(@+AUZM?9zif>?jV|4 z0}zE*^UANl1b}sn+^QV8%}&tCMOB*BlC^6kJFhuveWhZJhF}JG&sQ0V-8`t;|NL7w z?CF=dECz9rkmCTL$tdx~Ize$3G`CcS6R6Z!;u4<U|D^Poo0m(6(UkRDYskV z2GCVI0G`>^Moa{=$Dp`45H9qYVE4SZQn)<6g|jH+Sqrm8{|)UCe3mJ9bJUgdMW+RS zNbBhEIe7+%0)UI)vDD?O{%w`?WZw&tX7rGeUXHqqj+Cjh%=qrrjg zZ4GS5F?nieY6n1wym~y+jwGn@c>El$oD1D<2t;pW);gy}$*TH>?9*zvnUS{{yaifh zPa3<=yl>$B0zjH40U#PPKp9{ifHZkgmUQVlMh9XaqZWn)aFY2h6FQ{lfrepe( zNpU=A@=Y36t#UqeQ#M|o%Wa-nI&E9Z^~6(wYXL5YD@o7B*(EisizG~NRQj93J5J*p< z+@!3>ic#U%Cxt?3^Jh%XiklmAeyfskGe4EqWIRHT&HQiGBT&+1uTU z9n9E8SKW%mS*6hUpsXsO-Ky2i>%C3A5OVw);q&SIv&lZl!- zB}dwwJdxVQ0~M=3TCwrj%(_}I?KP^ln@TTNt&38-^p($nQe$jP75@yCm+!EgltKTp zgfZ@pKR~fbVz=4Z7yU*}GAQ69xHy-T9GkEA#_7lYJ$N+8^# ziuNKc`z@>6xi72R@g3!UJ2$9kFX~6}+{ta(9sy|4?VapU(Ji_!yA>5w1i3{W!h96) zE%GeWvR^Dq(R@^#$8=18+)1M*p9oS*(zaD9Yxzzz;6-3)R<(320F5{Yq8!dUvsu!$ zNqI+M0lOiFd_)NMR0NI0>XtJ8k0k`|oxqU)RcxyII zYRaD`{`)`jpndcwKVfOTVuQYT^6)VhUO`){ZjJM2tbTgKR_{4y?T!`#H(s#%8(+1~ z%~!29?keh;U&=5Nu;7(3w?6kLWxLkT?3)76|DUgJ+An{zYcJkNZDh#hvI{-2&;6;> z_R+`B*|)!Y!M^eBP3sK;5GoQy3t%i#URXIrn5GE%4@Jbm0~NwJ2na(TRphaGbdomUQk`|w1L(3fNUo(AcA8i79&H8)ooLpb6O97VopiasH( zz`O8t1L+2b!(Z`woQHpO{M<+7U`LdG#Ty^F<>i5hZC2HSWL;o+ZO2w>*X+c6%c}bW z8||vUniiAko_gh;^>_Ad|K`x9eG_<2Y@=4OvyHl)X8|c7%~)e2cOnCA$x(N!_0&$T zXSRASvHHVRo84cxgY}y2)El;)HEc(1wQDsykm}8=Hqb(BsD+}ReXhEs6x8!!>*OSd z@X>HE2YYTVke6RN>d-TD#p{5Q5M zx|Hui2ljL~X} zMgK@eo}zvf&+XifQp-Hc_GNWD|J%72RivZbm;EChdOmL4d)hwm=?~juf9eU#YE^sn*_Unm z>LxRw@(!Cv;2^qw?zElwz=KxVShbb2C#*8rw$kNit#RXJ0qCAm47|M9p3RiUdBqM! znO(R!x9?vZ+1Fk=u&3Xe+SP-K-|h!*Ql8iY_f+hsKX;!Eha>yFufA#5ZYq4?q>Unl znhK^vzu?M_7|#pLw=BRTo3iIl(JngNSrxg)Ppn6#eV#R3XrgxEgEK8eM$=uXeJu_S zY-c#MD|-XGyu&%r6PGhjxy3FOz*U{4h_lGdYktH4a0j^H2gs&f1?lX{ermt=jT`ps z-{{(voqAq=KuAD14tCikj_v9sz$gICZIxjM8F$KqUnmFsh;js3=iq-xa#8t{au6|! zZjP$xQ~D1zfp4(8%I$8U%RnXqtR7FPwDIVMs4-2(F#LCcRT)KX%q7JC%0It2T zZuYwOO3v+}B3!2*lK37sGP0WvoBJyb;_)^hP~Z#R{_8w}f*t32no9AuB*ag$gUQ4O zny=vwGVO{R|2#f#Lz!8Qd0hNUaTfOecxqjqbHwE_KzTln=}4kly{49Bq=RRuy6OJD z-S{7V$=3e6zx4w$((pd}#;*PTb2qiJpZc*%pL}G^e&U0N=S_3!!@vBO|I+sM_H3dC z{u_VeZ}@fIT)e{h(tq(U{>23^1YrBO|MuUyZ0^tf+|SwLk3a72%e$n@`Gk&gdoQ${ z#+~RW-gguJc0AF2SwG4z(t8PW6c2Qido&{#eJmq=On*{Hy;k6*>K_y)DPUO>4AaFd zv+|_jK$=(TObl?(OJkcP`!+2Dc8d!|CY@CA)CJILE^5J;h<=Otg?FV+#FxA4k%~yb zL;xCjXrGKUd1lR;oqOaid*q`ZwAIsVHXTju`EPvBUiy(`q zh@Mp{mQ@6FdpB*qd)X=@0gv&}=KFo?_c+GRlpZRWhnfeuf_pLp8blCC?aZuIo7hJ_ zv}zAMxM456e8Zl7VbA&lfuMZiKcrALch$2%PY8h#;vyb*%qM;6%;H?_v8tAjE1A%9#NsN3!-gGDfZS}!)*6|eTW#AtC)RDfRkqdo z%-U5hswg|qaF8v4%?|eVFtwL1_UzlQ9@wS5Om6HPQ#Mji8USeQi+mpHip8qwnwpf4 zFmpGrh&)H0O@Jk$Gm68#=o7g6kB0?#5*MNn=>80r34auv-giAOA$@-?t3J@f;w-oW z+~~jYorcT(KtlDw_ZuC zQBN#usXkWK?>l81wCXl)t=TARXi;3XDIYr~fP2*x-zBI|aUu;%sH{A;ipG9b3rfza z<^aP?b(d;9r*oyD0{RDs8czW1APbEi%zS|8V;^^9qNQAyeeQPoBQu?wy|xWymR}hBs%jcweF4s6M%O zgBnGuB+5#A3VB={NOH-K!`rceGL&aWbent}lhbW?q>IFkboWcYYxPfm(h`B+FyKNJ zzk0cAzy8fD_UR9tvj5E|@3NIv)xPq*>sHMYJG&l^zxm}~{$;<7@NfRjziCfA@r3=# zul$N%=gqB!Tnxh5&@a63f_>{--|`DtUU}sezjf~~{iVO;0Q_fu=4U*f+fmHVQF$-s zHPW)%QFdrK+);E?{I{cb!yD6Hrlay0?J-PIznvcx{g?Hl{J7-ict`q}{ zdL$e*g9T4{G5L&aG7*TDUefHga&FB&_}RzpV?X^Vd*qWJvgTUL_HJz3x4-xed*i#W z*nG(3u1Q-nbe7DlmQC&CddWWg*a%`P4F$f5Ksnc~ zA1Lm!v+_f)1w`b2@GTRz7R8Qg542L1qm%xVWx75j@j<^Q>3-ck%VLmBm zIMNOf=e^C{h#xTyf7Z$h2n}Z~3rLfma|ZX|Pszex_~!>Vx9TVQVpE)eXmt0?$-VRw z0xWco8MDWcJLjhOwjk)yJ^o6U0kexqu^4b59r8~&52Jj}QUUuF_3iZoYc{XhdTG-d zUA4JDw0~P$A8DK&Xl!<^+#6X#i@t_p)pFOGWi4X8Ew~_Ys&*RLSmThJ`#PM3zM@(> zp?-Nfwcc9Ay6vX*o2RUwp0SaT^?2S^?@`;%D=IzgJ}8DzrzJBD(Fmo1+Xk@1kGOGQUGfH+;5>n>IcLj6KBBpwV)1= z)mzW&4?if6L5z9e&>+%TUMQbZErIBaU2Zt_Pum`7HOD+v{j58N!EmU8Xvgmb(T)=vxA6SVGuQ3JYQz4*Pu^#1 zTK?aAy5+~cyzus}ef*&{=lM_n=|B0dbG2HvMx)_38ov7Ks}7pK{N*qEO?&YC)KC4C z{hNRDZ|vuP{^#w!`|h*<@E`tzub=?<@0KDUjI?Zr-iZhMQQ?lFcf&^=yc5OxESigI z*}Z6w=4Ji8`W@wVEZT8QfBcCFBN4`I3jFd>AtxaSFbiBI)0U;vjwZYKik*I~NxnQ3 zh(3_smjkn(`#1pd6FJz?%0FU?<3R?J;(uvk0d$aunHHV`rU-XxHeNZqW*`3CN9+?n z_gTB^gZFCkZ`wqY<{RI6*`E5XCvEG(6{{*QjoRGKoh;i2?y1;kAMe-~KCxn-|Kx@} z{z%K}jnr<8Dt2v9x2eik$^;npMt1SLFWb(=o5BW6hf$F$#<9#X&&q9CKxCscw@*LO zw$Fd&jGoU^`>o%3%ig}MdJxc{USi!uVoI-QmZq#c;${xU0GQ}7gb*lR-A6MZ!wpW+ zAV;70wQ!mD1c>$pq;?!QBf5d?IE#<4Wk&?>j>rMW$|dEFHL|k;S!dMts{++^f$F+n zZGLTcZf{*1+l!a__R`gfy}ezw8@-ARrZtC7vEC?`pYDP3d`ATZ9e4hai{|o_!+udz z;t&YrBg1fv2=PJmEzDk{!OlX@Wr`2;;5xthIgCD!0XNKU)sIIL+nqY*Rep%ab$8Fr z1f~sf&N&DLz& zY6lu~d*Dq0)cVk>N!OB5*V4h*R#a!aD`F?QO1%)1(B_~tvEBYqX_TzptXK^Iy&(X7 zQVYwCnjLgn0?;RHP(5Y6=}8+5S8OyAfSywSp#z7H?#3GCLrWE3#do8nqau)2CucX> z#XDT7%z%A?=corjt&9NtKm)&FU+g+dryXPtfI7ERN0h?-LTh+ld>o-GC}3Rw6D<%B z@rd;f!S7+99AkL9=4M%3Vnw=1$zvVCDTc9#QR=yieec=?wKy**f*Rg7UA zl>8iO-Vr(TG2M}l1k%g2EF{AT-mcvJ+kJ! zU;XM=?IR!gh~H?)4kw@tovXdye*0~^`|i74%;V!9|F}K-?6ZD$F+0{9N(-PJuM!8y zO|(iXDvoE1dNdd9%L?&?+qu7!Iw~CMcIg%K63wV$IWR9P>L%(a>bhu-3M!h9BI*r) z^hig!K}Wffk7FQxOn=-c_W00SQ_CtV0>C_jDw-TL5%WReq$3c`HQ!Md6{WG1^nE9K zp5!0@LF)I2aIh221n95Gads~zmN4bOcNiB$cqvWFV}Zg_buIwCY9IQ^k2-)p|L8rI z2>`&}-`cllzw|YG^&8)^jq1c6f3RtPO2GMNKD}XI_|&@n>5s43;}6yB+*#xis`mVD z)xLhUWtRsX8vaZ^qD{x&JTBY8# zYStHkKCpB+v9{_(OB1W`_J}l8g$?UQHj8E z>cCk_D6~9L9H3Evvy_W-xLJAh-DoL_?e3U!yDOC>`b+r~jXyQ&l^JTBkN!BtJLryuD|S-M?i*~Y;+5@L+4!!`P0I~Du z&)e_*?(g~)-+*XM9qK=}z47#I=?dF4~K+(SJPJG8e z`k4MWQ9d0wv2zTFMkbn9|-D7*oPi$*!|}dJ0p<5&h%J$cz(NLzjLu=&uwV%%RnfpY(9YGUun9Z?OQABUk2 zDZ1Snf3Ovawg5n{3p}3}fHeMd4b}lao^63LTuZD6aHs#ZIgNtAhKu8_r zYRNB9&_g}ZFJuV+>UTA{BYz(JqQCb+Z4={jUN_4rL&r<8bUX9A z(Ief?{Z4cg;JlsNvit4aqQ30^2kE!$Rx}^w2Vv#`c>J;9G5yg}9FK>6u}IOElM~p5 z=4d;n19qVS(Jl);LoQO`JqkS|H2WdOG38_qW=M$sUgo1OW@}9qJ6FdFDNqh7YAGDMAowc+kP?yh4eD$Br23Fs{Y}2c6+FE5QkUGjgGZy8^ zCu`vGRPoR31NYbLPk(&fPOew%jmtgz(${WC7Y4{r?O2c(P5@#ywN55gui9pJX1y^0 zI>hO9;>A{(y?%nbE5Nfr30Iy^ka?c4J z0-!nXnRW)aV)y5nHwHvJQOn&O#4a3jofxBQbQk6QBDf;n(Xu3IMJJy{19%P}EeeCE z{Wyb~ya@CpT*$&MZp^dlM{NceNAVVgU2O6M6;c)*=Eva`Wp{g|ynk~>xytPxIcN)n z89k&-EWrd}4ly74=j{HIle_@XF3!R3x%`})9~FM4zB5}HS$TEO>b0xZo?W-vsB4_~ zI0GP-2G(FVdOWp6-GdJbQ}ype`HZc=>JVv+k<>6%iJB#wbrKsjt2S(OY?!TCcigc) zZ)k=!n~hSNYutDRmj&PzaaIvnt|%Q>GS>u@69H*EP#y%V`M{8!Xtj-lXo1eS3+>_@ z0^&iG1Erb~Am+A22l?m#Wa@%q=lQ1X{jmU#`{laq!9DoVG(1={yWKaPIZT zHp+Lv`DmE1!uT3jLG)v+F^Zi40PI?l`sFl$-T=6jf9VI~v26~AJ_2z)e5S?Bz!z#A ztmdcL$PTE+4K}jXS3Y0b-Lp5keD85gcOt6aYZh?(xBt%Hc1Or3id@Z9k-Punzq024 z=`UD%&t2}%jwgiwNCV~jZyneR7khU9>6$%$Ps3`J@IZ)h6wS-_*Is+gK{FpBM)#=S z$y~HA>+jaBs6$0_q}UOo4lTQ(zZ-MZ?_`d4=uZB3GDm&cd^^9WFPkTmiJ!3Y5B_ie z;220B(;pGVF&O${ku-|sD&QgTT&=FEkMbH_c5W!-M2;C3nlMQaM^Fwj{A3PI>|yIj z;Q*-uFJ-_Fva0O=Kw$@VL7Gwci^TJR_~xaFHBM9opdYdOAAiV_x&Ve|B8E?z??6_k z2iELew$|{b)of@DVXW15Vl4saGzpXGNPz#+ZrQ%`=GeY>Ewx=+v3Xh#leglUbO(0h zmA9;W^`<6v{|2AT=a~sVXym$48QUZG)a~OR?AZNxRRttU_QD%|`;T9`YFqpMDU~=C zmS5MDjMiP)!y00`o%VSW+W;C$>UJHG0`#{4XlKjIiN(u|&Oh^0@LTA` zdO=@g1UD3Ig1d4iFrNxYhrWU0Er1$WeaZ8oI^`_r;3JqEcg`W=MfSjb>4(I^Vu6KR z-bSQ_?!5f-N14bse9~?q)rA&ql-~nUZg>`qp+C9TqU?F(t`R?m5TsBQfxOINkwAbD zT4|~r)0*mjb!cg4)0*iOYjZyIMCBhT#_>eJb!av9k8C(|5M5FJ*@5<5XyWEaAbO_i z8LD|ljl`w^=vKvsRV^x$bphyA8xGnw=>wqEKPT$(UWNJ*0xl&(f#{)CD}$hF1GiT= zTCc3U3DNuM=>TW}(kz1LxC<@t>K_zp+_63;THg9Nf}}2_yiP)n^ZH?2;NkzOfBX;m zFaw(1Q)T5X4=3xO19%b1sPcw_wi0pcAxGlH+Yd?G7xW^ca6ON1Dh5C`Z9rTBOb5Rm z&C|PnBuXIfv&v1tHbK$fSnT2Bw;lRUco-EFmUQ8|uDG7r+Oj==8y)g;Og~7f;_!6* z{O3P!KmQkg-gkwM>6nUi?bsw{CZ5fxNq?t8Fo3>Kgw@$NUokpq&UK6(iXmXa?wQj|pdTnIi zdwXVE!-majDpyNjp{wwkCHvdEcJqykHs09}PidbJ3#5Wl&Wex#VjQ3R;EFx|a8qF2 ztT!y%fBE`#`{wgq+wTQYj#vgSo&Eve?PO$k3AD@v(B9gf+F;6s7vl4O_(M&2ZEEo_ z7a$r>dcONS7myA}<0v8=w3O#}MX7*6!)n=@%C;sm`DdDs#O||z7a|<9q4FW*Ar4>w zi*WU&174>>%zh<#EP=NPJb8H*gq^bbuiIcDO6-kHi|SOFlcSG0dGtp!>y6Zh zcvR)P;ohJ1@8sdhhZN!D#Evp`ic&G`#$aGw)p-oWZvg!YtI8v*xcV-(%sl=4>~;04 z0HmcnSuQ)8+nc?feP7Qa-uJ{fkLgyTDyba@(tr8C`OAKSMx;>r?!BO*TQvLN78QB# z6!xfaN4dQlx*h+W+;10mF%OZa7*EmvD7R(5NblASit)S?9mV%fVWa=;_-+^H8*jW} zzx0oO=@>{K(|<+cp`Qsvw*^WBnt9DUV;34x4gs235okdITggBQ5Z!k>akz{pA{?4N zd>2~%8+VAF&jfd9*I2>Km=IrWrD_j;>^?jH@HuO&DNW5f{$busKw_|E^^w$gS76yR ziI;4xIrkmtT1AsJ+gti)PkC4QedT)DzW&_4UEZq)af@2rvUc0X2M0FY@7eB^>ryua zKG>e}?1a2}UP2Bt0hx0G(2qUTu@5~^v$GpqLSpvD)v5i?Q#b9o*CsZe0p8#yk`P{_ z-0E6joUKpnp0$eY3J<@qIrmE|oOkINFtecmtH3koV*AeX;cnL-4CQ%Kn>@iSZuC$6c^)X$VY&Pn?K=G( zrFscdxN+MiJM&EGo?~zK5OW~eJ(=8{9dhv|sz&&bic7`U3Q>{ zt2XGiZF*3*dB3WKWso~BWg2nm+{RNaF8jr=m#?oUCgUJp`e8rLPhG*c5% zt$Ec3q8;)!fG~N~ZZ7#zeoYR4_T~@u!jAR9kTbSPoIJ=8zdS58=e9u$(FF?c<5*Upnkv{e0`jO}jZ}+~avn%S5$# ztwtcdy1MEfccKW!md%l{bJShJJ($PzM^1bcI2^K569&wWO2z6&idiac~_7QhxyAbuVEs^9y`9O|{TRp#OWzAg4d}7(8XW4L9YRBr+J-^(cF3{X+lx?L`v3gaLvmUR!LLE;NyRmO} zaoDn#Z>ILf+gzkV+VZT`tRfIS+}*eC)f={R>ADT~x<0}AlQm{AJgOBZvdmL^;-RK} z>ccB`X3ab;Amu9;XZG*Ec*(AAg_Cg)3nzo>CDSy#o{sGU>t?50%E#W!p4%*2e;z=d zllVAQgJb-VeRjEL2hTp^J4>KjpZh-?5eFcvVHF3^YGVL2iyY4fq_U~L4=-s!E<4OS zVeXM~#*iO}2HwtxZa=6KAoKu-Be`<`z9Rj&DR&QsunUYhQN_hN1nOLTW6@H%9@B<` z0eSwi%603!iCik8AnY+xCUy&RfJ`6t^oW5pV;XtHl+S^*?DPx$v&ac@;*==X9Hg*H zFA)6rN>9}0(#q4Jv;e#av8aRm*X=Tf)^6kpDrP-} zW09PyKI&zgD$7%W=ZW>LRAIMS06IOeh8E0?bSV2sAXMyA%x>Q;D1U*iLW&zA#(SS$u+Kg2wT3{a4Jxzn+2EDq6dTzAR1n-Wey-snxYRou&~7(K;%MWBrV&<-Rt)7#~-q_ zGaXASOfpjeg#*j_H!U6RX@VX)fNt;sVY_T?fzwLLr7m(wy1DcUA2p4|nYT zv#G5%8Ow9)jT8I*@9x->-#xHR_j%UyTpIK&5o+sD_UnfyOjt; zSA6%$cY7T;_iV(q<^pDi0INtLKc0Y-XEqoMw9IuY;hMVaFdqXENU2sDtvEmB@i5KVL^o?^bDULFa=O+F#t9#WC2RotdxxXIt9_?6=H+2{*kmhM0rx$02Yhd?@!%G1s3WkIr&CgJ%5 zgin>9uwNPaZ=gaLr;suify@BXq@Xr02>>rRJt(%ru-+PF<*}hWaz1oxTfp_YwbC7H zWCQi}v1Rk2)h7bc1GDTvxjRtY97X5hg$Y#|GXQiZpxT<-q>~CjckG~g-VR0^HaJ)j zfNt6Bpkk%I!i^Q4j!7BoDq~x52z*bpNG_#_a2!}Y*|TQ(z?z)Up~YUJJWj_$n+Z&6 z^=j3O5AuXdG;V$8UGw5hKp!I#K{J6?WRlr+cF;^l^YZh@X&Q)5&`gU~^(=)_#d(x5 z$YZ61=oW9EA`f|wk>_RE(<_ z?oMt+b5Vzi=14_1K<4tIVL5D3hu)1FI&_rzPJHOlGT)utB1ONVIqI96n|^#=ksm6C zfdJm{LY%Bpq&MGu^B71U(;o`m+AE>xLO&0(r7jOGu)=Y6z6(9&qcaxjOb>z6!wD=- z5#7lh;!8IcJqx3w)^%~8y)oWr*Wi^DF8I*K|gptvp@CWHM{S0Vk-hPRWO+{zTGd| z?|ggPe(&i68&1LweOZ&Gpq|wQT+UV}_DILLk7y79{G;*&3VFJ$M z$$`L_P>_SVkdeH0+(*= zgaZm~_{KJB?xsSP~*TR0BKZ66ET-uoWc1*yg}oKGQ$^a)YGAe zNQlYJ{1<|v<}3mfmMv7c0CFWhkjq8>6U&n~Y| z$3i0xXA(2fDNW95Z`ZWIA_5wT9dZ?x4RcOIi?Y(OSv?o}@!mp)38VPQ7m7B!F&Nq| z^E7EWzxeXbtyb|oG4F@I0)=wKIHC%FAsor@p5vvx1ABRIPv$&s(V^-6O;j1R^^T$) z6RkwpnFJ`qv*>6A0+@27U8EwQ`^GoE;pa#L>QH>t_|{u**-!k$PdG2)2t`p4fL+|x zhKl}00Ej!s=Y`G@ROBPiew$RDSK|Ekx4-R|!*G^$@mRf>7GYQdwbjKl8bRrMLOP*KBhk`IvmNjlJDR}5Y5RPv${aE z%rj2u;F;n~`O`~3<@}?ryDOzPga&Wn3C zT|H}eJ@FAuVKeJ%9F{c3W{D>El~p~DN_OdcFWSN7YvC1hF<+3ZsmgV3y<{JMq-h_z zuWlz+=Dx$mQ09Zhw{Fht*M9$+y>>|;g1S+~2dfx0Pwjl8WUJX+P!*tNc72-K z*KW-0!mwh)=}6Bzz%ycC%c2`gd3o0q!YhZa9}?4eMZmM81;BtJnWtTIl1|R*pVPVq`@sWmGay?bP z8#bATGpZ5q;4Mkui}6YkmW7)Z3?%_*m&JE?fn(VNKhIv`BqP*&0MTJb8B(A1I6}W& zq@iCA=4r^Ru#0-~4Pz$0 znUy+y%W5~Rk#1U}dSLb1&}stF4T0#E;;C^eM^~W^6nUFF&il#L*+yHVz-z2pXg^KfX(fKv;v=TvMXEB z^MVsKIOjQtO(-woW%rkzWXH(fM-)lk7GxSdfN9k*0VxnwEk5rb?xY_PE!(bDEc19o zp&Lk*TvmF2Agol_l_sgU6CHaA;m8w7u-v@b>sw!e#p3COKJGUEbFmHC5e_>ATZ0bSTL&QH5S7cLLHhA|MLj8~wR;FoI9-AR=}$af|jy zg#FFm{7w772R`7to`eOoJ@?#mel7URFTcD1zxUpIuY=u>e)OYu&pr1z2;`EMwY4?B zz=dnYUw{2|d+f2t?8O&fbT|AUPM07*AN=44eFyyV<;$KnSB(G8@BEJE54Vqf>|=g5 zGI0R#0nQIS^pK}TI26YLE{iz)NhB5zSFc{ZrA>TLig-hC^X5(G;q3r#8(8eH$SJn# zF_1o{KPsYUavDcg=?I_-s5ppjY9a(gBccKE8z1E|m4*VRy8;NBC7Hx>QI4=?U+QaRVK(zSFGs^^Uc#0uzc})P~$!i09y|3^Bf-}xr)|4D;;}4P!TZcBt1Ugr& z<^Y-xMTKru{=mbej`#+m8v#7W-7=m(p*C(+3pf04nQQKB_Fw1E>l<=oi19E8cJe1Z zF9>~!^Tww$&hi}!Y-o|iZnXC+%1B`8fM0IclmaRR_eI1Gqyw;)Md|XK1@Z&(!VqHtAYagbi zg1Z<-Q*o@SkFqtUF(`{=o?wY@QN;UKN0@Xc0-?L!n~&o&~A77OZnYj!8%TwX!D=y=U!Y$2z40 zs|l&6WBHE~8wo^DCq0b~0JNS1>f4#}U!xv|>g7^1fo;xb9!UWvsfRjiR|VFRD)3!qt1yk6S@aq2&xFZm}Ni(NG{fZCr)a&yncFTDdGT@{cf zj8e?IftP<;vhHx|JJSxN@l)Oa(hIQ;Wq`PR2U&)`0IthN%gu?h5O*w-m;#Uv{mv6| z8_yK)$?kv4M~4e4*-&Ag+ure0Jm{ez{4GrHTVfx@Z#D$L0xSWhMWVvlK?Zsou7GKl+57eBitdceiZ1 z&rO6%t6H_1#@9rXKOlO%1&Agq;XH{N2d%~MU>cyw` zT#?)09u&-Sc8Uh{Wpk*9;2hm@QXC6sr;rw|MR&x4Jip2(AUR6`(Lf>c!Sk}BK2g(z zT2tPUJ3c+eb?$uf#|vbbT-h! zZEQ6yED}zb5O#HO2^psvhhuIgtRn+mvz=<&cI<@h_0C%N<~bW(J7cATH7k#_NEV1* z)Kkb+$OJmZR>?&=<~77Q_N=#TQwVcfX46X7sAIF{;aanK!4a(~4jx12Rk z1IpbG9h~6ADfopr;cz$i4`zDarmz%m8Uo>SOmXbomH^S*J{Vv71AL=wF;r}ji3_41 z(sE-h69b$FCgLF6W(b&PcNiJ!A`vgV?3_aJL=f^8-AD^QL>T~wD1bEavSSTkUd|6` zvpas~%o#5iU>-2e4mrEEfN#ppPAqYg9(4F%x^o$ez%^3QUW_MF^e_5F^HFIP-Io0c zR|LOBf7%kzjABtJsxZ%f5T9ZNK?^-M;kVioJO`v+EbGS?AQc zeem<2w)OKTt-pE0=9~$ww93tf)imbzxAq01zis2~UAY(YHP<9Pw)1Oa`}3b!wLkyq zmOXNIZmsG>^}#a^(T&93x>>US<%`$szkIvzS0dk2AKRxlX7;g_iJi>2wM}3&-(_S% z<%xVn!2NdwqTlEZ^H;)$^?s;{R1Pi5=IcVCtvyTY z+g52ENFg6Ruv$9MLT%!2J4%R1j0JX8O;dr)akXq+0qC7Z-EP!Z?Rxo)ZT0T4-D~$+ z_u^ePxqiw@y^fW}%9Fylm_uG)z|l~aJTJohGc6G3^}gowJ!_@A))9!VPsf%F1!%j7 zbBvXCPeBBr=lyV+j`EcVppS*E`(5QvAbKFMzdIah5gB?beKDjGDbz>s3@Y|(dH}n< zTMFM}K2_Zzql`!hpgR8-VF=1K7s<%u&Ak`86!WeAiOwBhE%t9fdj{IZFAuc%#d$#i z-1mi1!pINA{O@%d5^y3s1NlJIM``L2AX&f{UH2<4?gI--=|KUa-F;Y7zqatK$5t* zU6Gw?fIT3bE6vF#X#+^{?{tva{K0Y;Df->cKhjbDM}>{%JEeIP!Arfc5Fl)HLs5Rp zM%k(F2%?LNq)5j*(#Q0NLmEf^i#&A8D%CZC5w7=cSu$JIgFBa<5XYiN%76&RTp)U$ z3Z%*#`R4!{0(c0!ei4*}K>1uC!fkG8BeAm&oUjKzblNsL6I(6s*y?=Sn$vydh7YKw z)@tNC(9#p7GZqNB+Hcx-FIDX8Z`SRl8y!u~Escw^?O%S&&fUFk_dWiI@-w&I)~3yR zn#r@&Dr>7&Sy{6yue@y+p8mc7z#ssKe4KF-$a-^RpL(=zKl4!m`}2aL+0^3+`7hhS zD6?W)F5|_K<+aN+R%33L+eo*^k_lK2RF3c1QN))m?kD4;X_& znn5p`e>4K1C8d^CvlG^+oUwY!4s`xesQj7I5is{4Se|IwqOLPdEoOs+Z7{0#ESA5Zs(ExRT-EC!KtT=ch`kGI2dPSAp}< zp`X~HMH^xj?JlD3Pf}5ziFIlQI@K%66FhUKOG6! zYu!_tvG7TKS9vJE2sEh!uTSPw?9`Pv2etyK4ctxsh(`?-54+J7&6(l!3!V+3B$0?J z^i^5%F&y1uo8SgWu4Z~(#k{z)emzg3y@x2rMC}AVrDUPH3-mP1t zqF*$lL&Y%c&hrsr^ea*f$LS@A*LQ1E9{&t zc0{E4z6&1}aw@r0L9Mpc{3;d$5OsjpwP|=vD2-Yl*#fBeA`4TiL2gk-qZO+p%`T?CgE#Y}D&o ze=~gCo9H=M)q)YW?dl7!nT-%%ATJt!Qq}Uv9y(jL&wi+5_nu0umhypgNS7Zz z0lU0ivM+yU(_VUeY>C#g=NeNxR};{er7Au?R^pmpWE(lcium`ZCHvmyfjz(7wf%e- zZczt+pu`7sO#uRKAq%_~z}W{F1Z7-8<~j9X)rB z2(j3n3muAP7!=a2q5Xq7k}Tmrn5Dc;@;nE3PsHDN;z!;nTdlI8KE|2Q0>lyYd%iJ? z^5<%#!?uRA@Ufvsf5;b73%}@#db6Q`6JiAbu6%*0zYrszuxg>g6i!gagMUaE;^m_` z_n1u_Fa{=g0f6Xm2Dh2|{k#Q$7T9d*IbZ2oTJJi5u5iqp7OoDW)rOqOoCw^}7l~>r zusT+K^sQ$7NlWw2x{dZ%ZOBO+y}AaF$~?{la`O*>Nixr4u?}(%5qZ&kv>_ziMlSlg zt(CT|J?mMuul((0Hr6;Am%277_Y_QdO_3*N}gG?qI)Z;|G)=#9#Up_cgItEPPpOPU?5xQL6JPo_aRYDUJuJ38%Cg2 zr08~(Uy<0+MX}TQqf+QN>V(WLcOXC@Ja@|1`-P|rcHX0G^p8r%K>C>83%#2MD-U4g zN-GtCFK#NF*Q_)Zh@P{H8AHXV6LtZxq%WmDT^6|U=K-AZ^9g{l9~Oa&@H`9h%%CNe zvYooCW9RQ~+R66F)~W#Lp-+s75^4$zHyeonbeJ9{0thz_GJF17YOmfX+ule38u?cM zG|w9GWTlavKGCpxOH+BTXT7a0&rfxA#VYNN_4j-B>bIY>?zL@|kG&l7$0Rkfb8A!k z*aHoF{Qjo3YXZ>9LtZRJk=VhgY|p+qvM0a0X}bqyTg#Atp4f`OcD0Ns2q2o{y#kPC z;u~s`z1SPuOIuyL)aT-gNTmA1QEbm!V*nI#jW=gN^Y$PdyGMJ$AC6-~v4h7c9K6j6 zG4YHJ?G{=p0s{{ZJn&~Y{=wDB&HC{ua{r@9&LP&^qPfHSK~DIQ94-!M-4Q-FNQFG2 z`;Mcm0BA%vvXt8l^M!(b(F1n~f0#@#VE6uu?rw<|Iu-HejVy9+H_DB<4x|4HOzLke z@aP|e(#Hkc0stc2)Mf&&4$oX}S}E|6t&aibXn|ekX-8w~1ra=>@;afHlMctySzG08 zO>I^mT1ntJX$&l@37~RHh8C{1Qs1gtY-WnjZv&JQLerA)t zfU)&#Ts~0E2<&St`SEuGoziTE1dhPyA&}N$Lt~^j8t38|$`a|3q*(aSj=V5$;!Mr6 z+>6AHGdA1%PbXAe~$A`3m@=p_aAI8kHL`}lYrv71K9tW-1tfg8whj8ST zqB{rqCX>=>zTsqUdjpMSfHZFMBFEkn#7aBf91LxHsD&!&!V!}3e0Z;-V9qJKSm;g8 ziaq+tffgc82h+KV*>+9#ffg)pb$j;0?w*z}w~|NsJ|tBO&G&;l(#v2uRCb`~9^H!e z7&cPT9?i=^O(7fFtK`7Ar-X) z=&h-J_qCqAvD>nP@`lZlnj#V?P@;fnCRc7RTy1edhuL6n*M^#0l4`~38|#*2HM{oa zCA;*(t2W%_Ofcm|GZ;JAt!!+M-&3;Bet6YRG&zZ57A7l?o44huUD=-7lh5tiOK%Cx z$ZDl$c*aor(*sf^(_lKv$_9XwL*A#$W4*bOoCSeSOU*n4&neh0yu@GNyrW5bk{s*UN4y8QCzvR2UsK?9igK6kYc}a3Q5Kv z*B8FIySpsXz!9_ZOaA1>v5Uw*C(^?)cZe;<{<#!xiC_sSh8{`tvy08iAC6?4DfmL{ zIP>hK{ybvh7K$3rhhh((b|Df0kmgOuT)-4i6LzTcI#b?5n!)V5in4n)6|XmiAfgj# z^C4nQX=>);Gf%>uXH3LLzd@^=Cciw|M?|wQ9%ExJ*OPTq|ak{QNbP(ydY^&29 zYijOE_fwl{VLL5NtzX*J=snOl7%FdCgz|AAZ(fku7Km0hJ?fyyZ^=P4*L)+I5kaxn zmVVHwTgDTO#UGG+s)+muJOSnYc&zqNgihg|*@;@s>IzepKW~Eqn3gZVnMf(Rz_bHt z1Zh1%mOpb_sdKhCG073|taLH^!jfdznU>B@^q$6af2_>f}hB7Ovh9tL~H)>Fa6_VAbm_fB!!1`c;ISMN*e;vEZFOsB>>S4 zk52`5~SQUUK>Y0EF0Q#91_UySgy4J6qv2^vU(hjfGJ#9tGi5;t}HQSIX z&nDK}-nNOxMz!6x+DgYK?Q5@Jw70+avOopEC6qrE7&)&zeD;y1ec1#PZ#OmB%INj{2T7sb zG6CndW$B9aurteK>4uMN#o?W?%msIHlpzTn} zSh#UGh1A?$27DWMo9#5+3^DO~q0JQXd z0q8+hkpZBUCxJjN7jY37g(MH;_164wh=9@tJnPR(UQr)9p}eggSfhEv+S7~H8F#JT z&#bi5u&KcLNcrm7zQPTBEN6W9sQhu#++5>tv~isp-K0u%$f2qhfk9X$2x6uJ)(dyvzweM`%W=|92 ziMy<_wl0PUqLqSFwVK$;jk>~XRvZp(aB!e}3L(#kk?~OEpa*{xN6&>mVDw=*+A{~Gb;2GKAtc)Ccs%K`%i9b7MfM*ovKm&|G0D-8l z@H~<7?B%-Wi58QN8+`5@{Uf<+L5~#eVwN!vt+aDpv-mUbt!?t zMIHgEiTYUt(cTf=$K#cP7BR+hV9a%&USz@N5STAQhyhReE&}Aqi)Ko0s{S!k9sBOS z7Ht51z_=^f0x!P-=yF+5h>AEpVN7l(GjYK)=aQ9*)LFgij2u(%H3@>NRVPu34kkw`8|wrG36lm|3@cVB@kte;IKof#|ZpwBq2h zqq)X{IwBP(5Up`CoZCR4&#xz^T08@8aLRj#;tl@f2YGUUbS+iCa4rb(FNKx+-stc{ zyPBR$>s7=%WJXrn$F!$XSnsG^WJbBW;%e11@r&2T5^i!OE50+0F2#RIjpT|(X%405p!{DPa4Go5Xi|a9+^rXg`EcJwPB&~Ryhle|p zGP_$adw}360zg;NiJd!>+QSbt?9_@TMRs#FNdug@%3FBX(*Zzt2W5Nhtpoec_xJ3r zD`Oj2&1$F4Sao$RkCHqoO--2fnn3i4hCsO{=>Z_RYt=^6DlH*n`EOm_v?xMmDilIqU+$Mm+4g zj}?rIBsTkFyEzzHpAW0>i*-<-01$%d-BI8VaZ$(NtmIntgk?!bEMTnaT5%F*UoQIFGc#Op;7ydCLiYhmT4`Ep}0w(i7-l0*!2(xSMrCyR~ zfhCK7peYay*d!kuR~PD*JkpE9?teUi0-A&Sk-A}TbTYIw0i*(;>8oLfdp;AK9@hn$TQ=Qq*<=@UP4TMUxYAo7+JT?QPvl^s>wq6H z%Hl(Q$}|0Erg+0{G<}ACq&nBQoo3Qcif65B&DN%^r8lfK*s*kbVDrsP3)i|Zu!REj!4R(gy~^vvapy$PsCG<44<^%d}Ha0`5HXXjduS)ykJ zvd^%K0G7?HV!MN$b?N`ODbz-_X00@_x_Eu}R*H4Mi+89UIH<)zwcH$-O7Ao>kC%EO zJN`>PZUdxIe010w^VUIrDg@zq19e3YjXv@pd0bBLEG$JTdN9s0lMdy_Pd2$Zn0EgF zqywnVd$xY4uYEm>kdwaH?<>27wBLucIR5Uw`|q>Qe)hBO_-^PZVE0a7Z`mI^bd*~p z{9?Ewf6=WN9$I!QhKuxW!a+y5LGQ(V*$q4NUfiO4(QP?i=-s**RN(dN*X`+V zKkXl59MdtqTM7?mJ%E$C`6Vl9OA|%SW)nm@04GcZvCpgTab9w1sL8Rf2}qMTvysn8 z^7sF+%N2k$VQ@qbTAEDk?1{NO@qwCs=z*%OG=dlhmzlJMbyr#(HwAOq_WOyw@Osbw z%ahmbsb>%D#*Tn$xn^|-(W{y$a)2*l*Lt;Gu`>eE73Fc#AJ}9(v3jR%S*<4X)ULj9 z(cbvp%Qo2W`Glg;sfl%HAHOfNpMAV#_iu2ua6W!K+HfMrC1LL0`R)z-_VYJ|d&+jY zGWLru5_asIN~RjIElr|t?+@(lgMn?2rZ!a7s>braA0%Ayk8~8ztptaFB_9w9Jh$rS ztX@5>34#wmk>8a!yO}e94`=ss4m2l9us6l55AmD|po#YJ^c}UJd|GyQ{=9Czeo+v1 zX$$@$72Kkh#~-Zv4PDKZYot?1gTK5tN(Jy-N!qShG-{-5sC>fJNq@y+Q4-2g(@LAEKEfE;yRzUSV z-j8^Si0(|aoD+ba_E&5G>p&F0x_iPVH&<=4%`S9Zz`SbZvFe5|&IAA*K=Y^Z>2l=` zqUG;7BX5+E#TT;kEDY#7$~WF9^0+#)wAr&(bibwgGP8CK#S3OnX zw5UK{f;tkAOw@j?8`u#a2|)8gC@m+(sW!+1J17L~s*Y3DIXc&P>pwhZkhAc-gghyy z`a`~%B=Ep{Zp~^{U4?!0&_;x>3rHj05&E3|VV5F)0CWV>yn$+HL0%ERv%)7vuOl~$ zlnuAIE|cn&xtabn)*Ku}W?(Ma{&*}EH@FlFVS?9fDEEkINO@e*84SRm+}sx(?_BqA zm}zU-c}nr2|2)BRv!w|S*Gwnqe7KmNg{ zom}ONRsrZ_Dga%wPK#aWyg&EL_QD%|`_fkd&|SMJ06h^{m?f#zPMz}O>U>sp3P<3r zuhbN0O%w9mhCQw!E?cG9@JW2w9oQSsy=qrpzi4v-YC-~nPc}yO6OUA-nzmY%yU%dp zIpU%ulaf9C>aKn9o0n{Rt7j*xiLGZdr4e=)DHw2OSAgK{y}n)Q4i$!p`>^a#_&uaU zpIhlDw?opzoHVUoJ7tZ=IjdGSG%+*;SOS0pV6yu>og!W^lFlx)01m*@Bc?UOgv_5K z1`r`;#SIXo?t{wPH7dx>(m{}J$laZCyY~_O=e!XxczU@x{DgECW=|h8JBt+u&egOn zfW`5a}S#xWOulAjUQF9R58T&z^h4^3z&?HsZpK@(WebmoqI; zgwnjKpgb&#xN;^m>>tsJ$GsGf+CWgs$^dCqfX60Y;`j8a6d_4I9-O(zhCp#`V5LgW zrdpgLe>~Tsa+Z#4UJ)RzYOyLkO%*4Lw{kACPi!-#E1*0dwrzH>W|OUT0cb6Rdo{DM z>TRqsJQkm(1c2RPoeQ`oS`zwVH`YD1OCRC{7o|<#p|0iS!5|9LQ7PMFtJV*!mF-z$ zKD6pc^|L26fJGxq3prv{4M_o_sbMXcRWF%bn=#dir|Z!v2IVovixH3D?#@A% z8|A|rx12jzaC7%Krh~t?CUy@WSV084qp|OZ2hR5=(RJ=fG>SLOJ5U%%?@Y^l-Y~h_ zo#Hsk?@sx;Q(Q$liVwG<`?4K6$_+Y-uc*Hh-7d~zS>J73MOx0s?c#VR|6@9)+moIZ z{)Z{Cw9>IkbzPmQVbe)XN)xlAhRCH!LBP?<1L2CkPwIZGocbQ!Prq*F!j-as2eVxO zV)Rc113)(h_Si#Z`}`-`_V`1YH7Y|*pd$h3xoxZpL`%;!X-=kzy>)eNzw)0i*?;`v z4SVGRlTuYV5MWT6X{X~y)`jDvLi`nlJG0TSlPgsL%K#)RbpdKA%CLQ9(_VP$IorH+ zT{8-k6(1^1?89eg_P_h&ihbsRnl%%^iOTB3m(w-M_V(7)e)TIC?JG}TvAT+XZ?j^n zDqap-{kNz2`K^P2y}aGE>%)nQb$G$^->4!j+uwU~DQdCJ^NEt)d8&e6pood^%As7JxVhQuyb(Q`AFo1HXrHORgZ? zf;&ML!SlFW4-Rg|<~$yS+oXV8b+t>!>KSt0d?*=2EQ)6c4iH^dWu1BfP_ zJbwL$M{{t;%+4V??H;%QyLnt7Hi6`lfS8MKzyS~?P5c~SYq9CF`MAnSje+cQ+4T_T zBG2$3JD`Q&O#OA%5cE^0npFi@vjg#M%YRFKcF)SIJ*^4_Vq3~wntwBZNQ3|`7qc)F zOIlRUM;aHsj!pMY+W5vP8(jrRH`OU?RvIdQBb8^Q`WBLN8Q;7v$bVYqy$TE7&>o;J zL^;AOmRwDri>QP`EC>lNL*$ANYqbcj0*aA$=JXG4I?eR_Ae<;(&Fy)fs9vVwV?&l5 zR6Ktb0bh=mt4e9T;?IDnbIOjJ6=0#np93~k89sF`_p*x8U*2oQcIb4N>1AhGapY!TRanLs#TAiGzF`nMvL|xpGywPr{`9FFp zg2*EM*Ur};CB2`@dQ5+kiRVQo0KF=_z?t-Q|2Szjt!N;t4+AosOCX@ENj&8PCuB4Q z5;Rdbkmgk_&mEb$2`+rJ#MBvx7^>;W?mssZfL^hWJe=8jd#uTDWcBLQ)>g~`bgGGO zJT2SB8)m=#m#oz_d||%PlSjnlEI-t-^dtFuKV)Yw)T~FA zhx0TM>2O{EaL7Z*I^monx)xOKAI%{*ZgLRqAX%WW0!UWh^L|EakY?}?*W8PrzNS8x zOa$1*1A)n*+XFDypQoeH0%J4v_gP&fX)2D6z%;wjRZjZosfb;T9W5*?8XNVIWzB(= zJBq6@6<(Jj4FNGOF>yI+f!0~SX|w%xn{J-4$+cCRY&LA(LySZ9F;=~z_@K}i#5t+% zs9QePsK-O)IlAVOU@iySey6K2Kji3GPp-MRg_MWn$ixA1!yO;GwN9vSFi za1?Qd_NofUN0)*7{Yh$Hmd!;zsA#{F zAGB z4hKZ1Sx5b=Vv`X!q9U}ZCyn|S0D{MUiPI=}tz4OF@(jR-sUmbi{b+Xa*TaCB*e}&z zvvgwTPtNV5k2dVl`>NKiYeFketX`Q}r&aRnytz!ZrW=XXVxES z=F7nnx#yCGq|>s->C?iN%A=BDkB|?6POmqt4kjS4O5gLKK>dS(U3mFzyZXizoAKd~ z$2hYM0hP~xpk|+WNZ>mI^muemf+}`#XJTLc_7!{KwJlq(R_vqz^x++Jq3-y2@a==4 zU6ATd2 z9^T`it#Y&fh5EeJAFF;a=YPRbRpD*{e! zO>p@Ke(sBZ>9B=f8LF*0qR-*3lyW3c7tdGskCo9$gCN*R8@qle zx}Rx{E~ikuVD}hh;ATYH9Xli5zXw!%)H4!2psPxqAI*9f7nwyILQH-!K1F0 zKBhl81W2Cf!OC^;MLIsUO%?gFmlaJ3`MJ?W*r!!5QW>CA zxAyJLm)^9&{vhO2ew?v;&+63v^rKCCV1o%UVXmtYA#H1s^7h+)tI@~}QuHlaJQ3w!&g_L4?lpP&kVhW&;uu)XS(-V*P(@;2P zCm71T^XNPl@p*l^gUo=qL?~Bgc4*mk#utCTiI+6=?4A2ZbbLq_WS?&#k4GT@LoBdB zbjtgTJGwVi&XoYt@t91y0(yN#KDDGawn{@_nhy#yzCjSsQ(u@4s}4|0NPh6u>P#Sd z+E7Q-m>nrTfoJ67U33F%B;{q#%NdB$QU=wR;`ILFZseYNovOTA7~mdQJxDaiE`h zyx#5E%X@oXkA%Y=a=!NgsfxTAe`p{*9*=EpZA}sVV3m2tKf?Ww8y%I;Kgztn+w|XU zo{D_$CCvW*zUzKkLQcm(`j~D45TX>L9tW}@dLw8r~-ZK?zH#p92BtVF~VF1u6Q7Nt6p4m%p_3fFL zcJ1+5J0MX6Ur>$IpN0Wr|cTxblUE{<7^2($ViZIp0b@lD5cJ0D- zn~ZoxO+0hsjNK2Pnb{XUykhIMsZwGZA$ndom+jKl*uM6{O}l#iz)sey)~N`nX`&*% zsD_%iE(n-&D8x>M<$TtWsU`k3G4ekJBogLCPmgrROrxF1iww z&)5)UlnU)2qm(~KJb}YHbzc}3dT=dR0(qT9Dw=O4_fa}jg*R777*`P)&&|?8I-1xy z!mi8}-YTP?`-Z!GJ*-rL93tTECK)_#bs!o2L>NRmy#Gb1wym;`T3X)<>`#?fJ}?!4 z3-Z!RoWghpJX4GOIJp~Tq`gAk<6IN$!Ocm|UcN59n$n2FP zgSQ9i&K)d6)RgBFZ~cXHr4MzKv*!HN)z!hszPG()UDemZLv(2R@uv7h{Go`!5_h68 zM-}anmfe?mmUSrdEvt9y7tK+>lYfzp;$7w|x-YAuf6-jDM=F{l6?r2qhbi(D%}~)C zDe@FmbdNd@z=|FQ$Ko5u^j?VFsIh8J#zJ>MgrDzTVE+zt6~0XbvRD!waZic z_g}nbzxkCdd+Q3XK&zUg^2eK}lP4q~;~@IXX@L)RqG$e5;VFUW)p}}GcJ@S5O;R&W zoV~riz4^kMcIl1FHW>yG4IrqNM-HNY=CO`#u;Zs$j*#q{A`AVsmv`+yKKZuoZw>6h z)rOs{2~Gjf^GS&5W=Avi%R7C$*c&;Bc7R13Qc$pm`~=evj_o4h%dTpYG_BD*Z!4=0 zS*vxo0OqRPE6SUA03qz&2{cb80~=5KYOlWRS|l@bi<61lRcs^Ns7v30&KE$kJ7~fQ zJ@Vn;<~*-xitCUt$8tm+H^N49q=K2e$9Ozb^r5O%(v|QLVJg((Zyr2DFvA&A;KvJ( zMTEDsP`B_CB_FVXcChDhNR?IQkh9nVQc7QV)20G|D2}e1XpuNb#x_i}Ajt#@D*~y$ zAwgKR?NshklgZF#s&|{H&&clb(0NY08c}&DCoePgEsf|jM7)@edXyKf#O4z|;A0nh zD56XATLBVUAG@A-lNbeo)AdYf8GTdd#FM%5ySPAvs#l>z}sKpUQwazRlr- z$&_b{BKI9r{X|82ycwbiTpn5uF6JRUe9)XL{?NV7s3#PQ>r7?g`vn$3nZP!0wzN2! zsXnEqQe!PVW+=JyZ3E!9B0RLx(ZbFjfy$@K)aiAR15ia>`pMkOCEx@ECE+qdpwl#1Y~Op>uBi;}ZUy%ew;$63E@$NQ;;? z)5O}T7NI!34=HcDAC3Hhn(M5Hf9=~mb1fc8ona65&dTnZz^3a;qsjYYB)@h1IK%47--@H1t-}wC-_V51lbraSV zfJX8-f2k%#uNSJGr!woAKH`;XtaWM6;ws%L?ik7w^G=Dpyi&d( zit*#jpjX`{T3}ZYqoCfXP%e7$I`kHDJ>)}5_0ExffNz5Pj;Y#+Bk!Ua(J>!zv<*6$ zk)rQIZ0n(7w7uVEy<0H*5= zxzP-Y8j+eJn5IH$Cof1&%8CAPk9H}~Uv8${sx!JxccevG%!N zf0=_v(6I7sURY%Iv7#S#;oS*4dd`O*rkd(=P0vp+UO~NIh;qLpQCXKSUv}X8o$q|d z1_Q0Amnb&elTSWrTU%T9m;dr#w%_=T->@4uZrJwrw)>+a9>BHJ7cX9Pzf9 z$}2V;4n2+w7cSVFZ@%f~e!uU2G0m6`x;J8OkA!{M4Z5A%QQ;#+^X<}!wCo4rM!0B> zbW}Xi?I^z@9mR(^s-x0drpOEZ=5PL{{gZ$4Pwc6uo^ty!9n(7zJ&Z@EU$RnPci=GR zuqt+d+2QiXCvuTvOR}Lrw)9kej!)$a-7?Ih`q4z@AX?^B6XVIw*gpPn#eU+kx}D!p z%*oK@q1RgGs+RFkFWcsRYEM41XaDxMuiDcujcvcj&Kolo@fK8`DEUrWO>3PAGSP@{ zbZV)cY1eG6DPWeR)*lR24gt>T%&uOzX0Lt!HS6v5!npErGq=_1(0=AaP5aFK75}JE zo(_Zunq;55+_PW#+6B9Iqh}vJ(YCvq0tE`gL)Leql@+eLc>7=^5Pe_=N+*oiWeT+% zi3#?06h0tavsULm2hjD#d4UM6G*m~(J^OCc4Ea$2^w7qWzD>pfK!@i=$X8xXt~rEs zN98;s0Ot!T@CHtIM|b{6GJ6B(W>-*=2MS?B=?Z+e6jyG!os%IreWO}A1kmI!hIBSZ z92n4WLFEp)%TfYr8!lc6z=_>S@=l2<0=vrdsupL>y3HC@o3h(1(BR%|$f;&J`b{<8j?4gSyT8bxVc~VRC_Jfx%mLp*;`i z`teMmk*D0*L8;<(JNfjI_#YrSFHs=(qU^!Vhf=P41cdSvGE&u{7D*}(i;W;-LEF+6 z0BVIItOt~lV721erlG+`_8{1zC&$2*tS-M)) zD!xcV{#o@kt64g&S~{!BEW0(dK&j~I$Ii5Hwu@r~l~%NbYA8N`d!Xoj#~CF%O39No z&tu3E|Dj6q-{7oY4;E~_F*4HOtub7#^s{I({xIVf{ffNK7vl0ZjqQRR2JZkOoUyAt zyh}($FdcMf4kRPDA9gBw7I|SJ6?lHkiI*UEJhg*e%U}J~Uv<#i>-FrHfBBc~t+(EC z0KBoW;XH^0Ks;mt(Ev17mp}J&Kj(b^`d|NR`^;xPWB=@*{WA~qOTY9>u0QwObN2Y- zkK4ca7yrWQ^}7AmZ~d0XLHG!)|EK@yfASCDNcX3H>ZdeF=!Jpcjo=YlwnP5l&ncRt zz6?BL_+@)ENBvH2k)j{8%y$%jk(T+3=I944#}oaEVTw8w!yv-(PrA+ z?}Jk4;nga-CM`{7939uJjqHQ>R_$Yt)a={|&UzgSG|#Nv;3&JYz_jwIC=LdxednbE z`<-uY*>kUsHL-*pXrhlqiI{-G$7#}WtYp?aciPG|&V-)ZhQRabR^}&kR0OQMJ;WOX zLk1(ea^b4fHJj!Wmd7?9+e*^4pZ-wWK71~<%+V0jN!f1nX7>9p+_Wd3yJk(5>Cv^O zb+mYJs6nxvvt+vhQLpcY+X?x`E6`!aF$G(6qZCCda&YB3JJ4sX-aP9c5&Dcxyi&dc z&EIsQa*R|qDUPs14jQ8V^S>A`Id&HShflC!`gVW#oh|SJO5&^W;6_=cd%1ERSGS`= zeEhp5kS8s>yPyk=0931KM~khd+2ha0fu z=nJk;t~u}E`S7|S09_Fv&H>pXywdVLQb2gQss@BA zL+VI&|Hs{pfpWLdOjM431v-;8wQ+4=t@OZ}vw@Y_W$&qeRSp)RA(Y~0bszveNqd^7 zdIE407nus1&mMW67v)SkIdM@Oc`#xrCSx|LPy*ErI-)HsVvtJ~b6pFhYNeyN8;VxU^WbZK6nSiRq24{kUTmpkC6|6<+J zqdX@3-7)AqaW?&e7y?If&mViDPVPuw{Nfkwlb`&gwOTFv+Sk73ZlC(pr|jvcpZ48i z$Qvrus@;3Gd{FT3AKmF4`?QX|(Ot+)ZYZA*evD921 zy6zwv#W}BZx3VVktTJ+yWa^iGOjX!T3jLIsgno%R^+~6iP3*yQbNk7Uw(Ri-66@4Q znw*e>p4n=9?()z8-@!PsmoLuj*S>tie*5eDcHu^9lN`K5#nBl734iXMrPe%i(o!x{ z(F}RAS+O%6sf~_<ARvl0eZh{MU=axebKw_U%Tzfb5)|Qnf>QJT|S&INHkFBV;d>-E-s)kPIR7o=*VujJF+4 z^}&t+<*ESl%FyOgrOwcjW>=^wJ?x$>+;GZZS)6`Jszbjm0$Es}AALXA_ZpoidjJl;Oi z^0EgWsl3Yl!(-Jk-$f*?{VbHf z9Z;eQDL^fyHs|dYIw0D2qqPbm&AQBWE#AsgJ=;`2T>Qd^xj{TiCCHUuS+01e^eyEH z(HnN5+2q!GL(j^@s#>gr^u5%|5|nGMyBW`g9(?l<3;SR^wf!OK2j@7KyUsrq7o2j+ zV|TZLUSP_ja60tK9r5(Wz({$6n`{0TNp-EjoF(1n7*SF1BgXd!(UtE=k38~-gXYhD z?sI-R$77E@<^Y(T;pL;!Ab>Z3`xBq|gac%Du>r`O{t(4AiaVY!zWAaZ_7ex!G!{G6 z$W8y=@BN-V|NQfI=FA!UtAF*c+7nMaVa;aK!}tS!iK1JWun*14bd=w_aYKJMd{EIG zX_*gw*$sNHe39OXuc)JFKi(Al^}qht?N@%~S8fS&Oz%g!ef#rJWaq6?Ta{YV0~-LX zi5WRde~4;Y;^GG`S4lNZX$C<~Q$8VDk2;uR-(yGjv;e{ z{@?_IOH`4H=0JeuYW=iz)*cXmen0^Fq#RZM%x;>*9Y9NQ@x^q440PYsY$lK;=n(2Y zfMstN;&eSc4?=-eZwo*f6;}Vrc@F`$Q?7-nsaUcyh0W?nZX@Y7U-j zl{M981kmK&S)GW>fAg@x9lNKJy9d`uzKiUC^7A((L97VHE@P>oj;Fpdtq6oV6F-M_ z67mp40YFOda5nU;L_H4$nhykAcT5wXmBs?T0BE%ju|P3zZuVx5KB{^|H?on<>I0j# zdNyefY}`^?HnkY452boGZz$eo&ys3Sh*=v&C`s!q9ylD?44HDC6%$l6t& zcQQ-28PkIYdH_)DJyK@52?YByz?niEQRk2D zNfmmzb5MpIHs_!}fjDIc<`SFlkdGBBAe#OtJ)BnG-)g`q7WttFOLlySuv%nt%3Zf7Xv%BMo*;S65f7l-r2AC-kI2MfA^|= z^VOTy(KGB*XIJe!^3Yz=kTw8oDBjoihW7l{f$h6IwEM!4>$g(TpFgiR#2PBA)?T^W z>dn)t>xSHz{NY#TDS+oWzvN@eSi0JL!V??woD0HU9e?Ko%Wsmxoqip^%Tc~@ram{zPRZf2+# zA8@(H1t8py6?~~4osjKrkIBNxkMz#r-tZ)IG?CQPV?2Gvn^{Q?z_!9Rj>?+)7GD_w zKxh347I(eZmniB`CjK+93VChH23?6%hb7KH2ENH%sMW35QvcQjYr@foo=|B>BB!?o z^+7xOs%ZwUMtz$KJWmH5oAleh0?lb0WmdXpc_k}pom?{dcK}uz2)qkGH`IPjf#M~# zX3!@6W5U2gXC4(nFv>b^UuT5(@G zwWU)}nz1L^^^;9eGaaE>`#VKHgaQ~6pV;xM->5y|@;HTNzTis@5D{UVBlD>4i@JAM zd9T$w)+!!YjXG_sT;15K?EJ2i!Xyu{Iw@-+p$SA;I`LIO_UJl*hFfm`6+*_RFwzm5 z)o9gVtVYZDYBV5P#<4Mb#m5D!S6X_O@k<-h$Wm$5_V};~#w%46+n^4&(k=F}+ zvh*L}Zo)rn%j4|#5ONcREXwLK-HxQmooV9^!g#0PjwX>zD+z(-@_urO>hZexFy}}o zkOt893eWth@x1e8;YWo*i}ClPMR~`idq2MS3s02iOO#Ky$PXpn`^BfQqv8|&QTdX4 z(O!&ex7$9k!Ofm@en9|KCwh2}^q(b4{ak$`vrFZs28dNFmKzG=jeoWg0B%@?7If1}>Z|*z=bfwy~^%Mgt)$(~TNO*(om{s0-E^6zuzN zckSyx*tI*m%4woJB`m}-n7SiJ1kj(u=iW-$nx{`%ty#0C9&wMJS+|R4R;}9~+TKA= zpi@A1FtXb>@7j%Pw`?*TX)qnypucCFXu)sgYqg^N!i(qZ6OXnWL>~;zzI|oizWn+f z+v$w#j6l~*=T>c<1vTYO_UwlQ!tRWw_U3Ni-r4O4P!p5tl#(REHCH;ha66#X#HHRm z;q~v^H;8fst-)L#03D+&$BnV_?8lA~<`NQ7Z{drd*5&r+fLzFM7lS;ct9Vib&jbfb z9u*u}g0Qnxb2~*s$(9Rw?vFO|lIG<(6&*NNOUvpjnlRDFoF&qw+QH}Lki%sqIU=uF z_d1tf9RxXAaUa35=xYsGWexlSa`lG5+>!t^YiZOevSrgrd}1QdJW@ZWZaKZh>mNa5 zpS)oEqz2J4oYcW&fJs1vd8RWv3>K@pLmRU-qpJP~a25cYRuwNm=EtWwfR-&@?m59W zMGdT~XK}eB-8e~aQnv1hZAxoaP+1BqN?$1oEZ3~m*0X$1K)uW4ik!JW=Q?e&!qg4Beu*0W({(`u!*YIX&BWqfFd`eqOY|DO)#2 zvN1z}=8@t@0?ZRPV&ug}*_;$ot*9@|Ks0U5EhRa~(!Dm+gjKaJfIqR54c+*FaaG2~ z>b@;CCswMDt+gh71gfiguCdn0>NudC{H!l62kJL$6&b5cbQn}YS+ zxw${E%R6lr>YWt3K=WR99OcLT85YRG6A_9eZz_fRghbIaJ8{11uV;c!Toi!YBg6yW zfiB;;d)Kx!$%}||{mCXqzCRM>8zuix%Tqo)&-;Gq7HN_HxODHww-}x}(*5|7N&dW@ zr=$4tln*;9KGB2nE$E_PLKV?DXo;PvdB6 zuwfg=YLlPF_>x%3Ub{N7fATx`>^Hu$Yd3dl8oX+VkwGg~b%W-1^jG(XGeGny0nmEI zKgIpg$4=WLXI8A;>D%sJUjt)Nlg5#~{l>d??ecXERDBx__pRHxYr~-i@#(-;szv*G zf#?@6E@`ls+MUkW{>69h*#G_A8@4SFeXdcppE|#4Cx!XY-HVJCs)wCX!M=HW-`>!` z2Z%<;r0-nGpop7?`4*b$x-G9hZp&*=s0=3+NWDvrMqLcRE}g=`S&3$ zWD!J*BqLnO4%eZ2_29%6#L6;%5dsfwRZ)1wCY7ocSC)+f$tMCke!ljgC)2gj!H$jg zw{6rp;OHnTYSL8@0P+_G*{-qWAAOTB#@^2h$hr6Xj9#HQ^2y^rD?^=qlQ)3^2Cbsj_$`! z*@~RQEZ|n?b7Wv$xibNle5!+Iy=?wCa-;u(YCpA$Iz#18Ip@8_|U>q#BF(@!LeXH8k<@H7O|2c!dW z9-kTaD}A;k>_-ApCQY9Fm^&tF7=hNJOl4ZOMzv)n77Q}s(GNAzQu*1!5&Pp+mzq$m zs9pHHI$JJuHO+H1iJ4lZ$%!43$<~rwkIBlNu6 z)BT>sixX+#3CV8H(r1(t7j7xwSSMq3x6CX)vyn%Xi**YB++=Aow>z9o69cuK*Zn;4 zA^AV4q#pA}BUUu`_V%JekD$fy4xbQ`L(S1}{ z-klGF7Q^!Xqr#Ir*^6ON-ks>Eusr4EEE=}bY;JDqVO?_nL;ABr^VW_Bvag2LR((51 zp(rpriL++`C8c6thV4HL78+a_U>N9pl)xYdi5e6&IIcA(_QGRj`#_D;7~13dXK1ZUqqh7&K#M(kwx~n&H^#KSa=Fh zW_DHs+w+gC*~UuMc6U2^R`H@v!M5-1*&DCCWm|W*1fo0EYu~Y6_nroUo+NQjbjd;V z3m1g&CG_<>efzaPxN6_Jye+VAc3vR*v*%XrM8#o1rh_1r%742*wr||twOb5)9-3nF zMA%|D6PIOctv+VU>j3Btv8c|uKLHlL^33*)0MP7%_9N_k-{w3gngCY}W@xV~z#!8! zLS=-;f+s+OlP91ONt43hB`itKNfwmaNkl&@mzLF58?sx}fYK%2&^h_$ zYRG{*v$>=r=5Qxi;o;(sXIbOt zh*nyD=_tx}04>9+Gzd$ecC0e{3cC7;P1ttCsUeD@oCoUXTbfw0J)*BP>hpkTj`>5c z&KodCyJ0)9!+#ojjX5@L!Z8r#}Jn-Xo zD@jYOlKk+cl!PY}9O)=L_v1!c1;FhmeEbtO6C*g>yoZ(i%!m%g)O zoBIL?ei8=~F!7M~Y%(PSFyRPmMue*mw@$8Gt5vp3C!6;8`8AcJYTCevovmtaA0Qa^K`+K^B?2JMRqBK8k)tp#LVd5*})>r80L`;3Bozj;NoH@1%OGNJ0%zskoJ4)#4O zO_%^%xY^E8puQyw;5=p}+5}QFf+rQr0h~OP&9`=BG62y25-90PYCn#u<30VFVrAn8 zOJRH)hvPrlfXfU(bN~4?9~bo!A-Z~m zz$EQZQC~Qtn`vX;)*E;1lxCjhuk&pO232mTf$Yg0?qvB1g6!!&zhgMQM za(*#iIE0hDR6A-b%FDJ6411Ynvz=ok{l=<0_DS$1M^5L^#KE_Oc%PuH6_@2p3B9kV zFBB(zYpM;|GSUOVOZD1H$4;IfTC1t&huTYzA*<>+#{m}15fH#V&Fb=WtjK}-MPCyX zJ(GM3hjbYa*+Qhg!Q71bgmiQet-83m-?z6Y>|%R$%oHwum$_5xI~M7=s|fB<>lsi7sK*)o)SNFKc1uHq_lZAluv&YPl``+ z@^qA(#Fw|BqtfR2jthhEKLpZ$7APKgC4sm~eQoyhCSOEzpvOSY;LC~(tI!&3bx}I? z86RZjrtgTmB;azQW%j}o%Xa=m!RqC)K=ar*2fEdWZ5|};j!O2%)t-IpwLQCXcWV8i z0002SyI<>WshB0x4pft?HzC`hXz#*Seu)B z_WB#|Shp(xEf5_)%_ph;gRgz${EGeji)U=VJF?$@^^U#0*|q^iSKI~P&aq}Em_sNT zIg=WQ{n}37zI}JkIu0~kvm+_f)(ya}CIH=No{l}L&HSWC#4Mf~5G`OV4};th`W>b@m&?l1dJq{V0nP>o0J>#mUYexF zoi7+732ETV$#e?F6dJ)PE?o3QRswk`F5F|@BU2>&B`Z(WzY8rnt7PGINj=2NgDRcO zEPu6QT7`~JU~^tGyJG>-gd>xjMNzTQF4(FkRvW#(lm{SsqI+PaU&gkOjD35ff$nfG|VQwT!z_?8DT9)) zRs*I1bG!ydBPXI93I{y1Pb34<)B(?b=kPii3V8O#Ju76+LWVm$Pj_c&=Mg~>?TsS6 zQ~@cm94wAvw5)0@94`;p$fKJqQnlo9a zH?e!2q21W)SYPGydmDLNBruKHR1m@Waoj5nayNG7l?m^>T#MxGjh!Xpns^;d%aqhn zW1n=iW~P$wk^bi9J=-3o#fdEPC!D+v63r@5cHTTl*rNZa@YK*LEYV^Zb~1?;!|vx# zVT-iLo7~CH>zAj*zsP$(%FD^8OD3N_g)O?FygSh%50w0QdyxmaU)W;YQM?c7CyVHX zfMs4PtSxO=sS+R>P)G9@1ps_7=jYUNRc^L&FyJa31AQiiRkIZhDj$EMZeRSwsy%*Y zs)1#oadKp9O9fkR@#$P%#4Fm>djyhDFdj{78Z%#(as z{)D4XYjw$5^@+Xk_?kU>wq*zV2e!A*_J^q^fFpbBt*iFhYp>hE?rrOL?kT)05pzJn zBH*)Um+f=Up0RiCwC$gN>xR81I}f5icYf7QF*te(s9+rpZm&Kdh@O++O?B0l*Dl%8 z%0(-x?y1RGxg4p?8cb!_#^HORM;h?~Kt9^0nn?NN^V2=gA85?$GmKl#hvs?ydA%n4 zP&5e%U;y_BxKbID$x-r(WhO7tl%KMftWn+2#ESPafE;t8{QkUAUepAHxM*Q03(d+D z^`&Z2!;LBv8`Y*ZY)oymr1ox(Wk$yCpeZY!yf9l{SDmj54XLixhw1aa=T&-?S*g|^ z`(Hs*{`Enb0MSfj;-e@2RY7zhZK{wGr(zNckFOr9e!Q1DKNCsiFP)H*3C!F< zKKamJ#6aP8Id0@uJ%ntzg{C5p_?uJ6ap{WBq<9E6{m;K5S*&WpU6osP&UxIvRfCsJ z0cHSarE#(3gH2oEj(bm!8kg-`PGG<&EfayU%s~F0Odnf(J*Dabq?u@_oq1)`0jwIJ zR8l7a9i}pQ{^&`(i2F_VVzoH3r83XLvJH!MD{?0Naz$ojjWyN2+R`U*GG3ob>~-Nn zkQ2sh$m2vR2TjZ`OmV!Q>csc5^A*a1b^8M4kl=tWDMV`EU6de_}sMr0{Kct^r zVrZ(=R;<=Mp+Q1}iUyEa`JnG=;E-J^X~6TX92pR!tB5D|GES{2!2IOtseR$aWdZ4m ztu^_m%FtE?YEG;a{G~#A+itgPU;aVIe(kqz+1FkjS!cjW6aavX7**UXxFHYA29sHw zv@aE{)+pPV^|JlUr!LszkF439%{@Qc8C=V8j&Hqv)vjE*V*9&yG(hoDCss>>&>vX! z?3oq&>@#QVwd=d~FTZ=!ZtU|@Y7E>LGZ1}}kId*kNojY-1^epFJ^SXJ2LaK#Z*?sc z8`f-{_YbO6Y8whs?vlw%I=*dVB;eyFzC;L^jy=*@k^N7$F79#%fFgkn@`9WzcoH8r zZJYUHn+!GJAu@y$m6roWY*0Rel<|x^{5%Oiu?#VM8E*bj6;?+TpX$*s86fiVg*N;_ zNh;jviy4LnYsWR~UDByA{cK57b3`)L>CSrcGiwo2uMRjVh|hnEG|l()ZphJFG} z0{7x{pN=mad${;UK!9m^_Fk z4&dy2pv8kb>)XhWJal1oRqe(vE0a;l#(jaocEcvUC57=qZq?01eaRC63@Hz3NzTM< z2BuT}1`!h58N#4Doh|r+mtR8s1Od90!>?XUZeulAlvM)rc5L_R&(D@t#?%R^ydT5lfLP@gFxP`YSh*xnT@;`eh*qBL zEBBYBS$Y1(234UFtT_{6~{o^^3mhcv4eYTGDlCVD+`WRhO00 zCqokBZR**(NH=7Fc$sM4Om~cm>c4KdPI7CaRG2huFs$0apkVt0;m(KU z)8+Y~`^kiotUTqz9z-5=l$=CKM&iNFhdrd9T=Le{AX06t`F0NDr)UA`SgDg!2Cz}i zR-xr1g%fGjTLe~yc4lQ@Kl8$peg31%c7BaLf&*)1r*W)EBuCoy$0hsT<$?Xef+GgwyJjL?yd$Q zR(AQI+{oU!eBG{Hxolllp*bteQzp{=rtA5&rak-U3H$n+ckC-~-nFj46vV^Pw{u)r zvy)W~s`A56?2ZP#uio0VxAytmcht!Jha)US98{zV@;ow=3!C5H5$1pHOyN121>sPMG8tZCU1m6lFn4DOa7X34H#ibyiJTHY zT9mC))+DXEZWaHuHj~vy)Amt_wH{K#v8S zCjb}}p9SaV<@EcdiGgG+AN}uys z(o-)2(OxGWAj-yx5Pqmz%z8!EuYA>Cecivb2!K|2lI%9+FDbu*fWGqf)Y2*S-Qb0i zJo*RimdYxFEch`QmySA;esy@RhD|9b5L}&J_9w-6-ZWKnn^KjC?8v*D9 zsHeE4+hC{(z^El4U9kZx)tMMBA=QPs3raabE;fssb3~Y%T&TNJJqJ8%HH9Nf`%)mbA^4O2ETlT%stXh=p>gL3L=R3RhrSGX9 z?Nv44gCe4DA&pMSJ{_CHvf`AJubcV7Kn<+mOAF zBKAkW_S)Na?dla9^jU?DRq=T(gv_QCefq+>y?W)I?}v_aT79Utivn&x?I7AAm=n=E z8uPz;bJs4n`!k3&mwK2OjCg^w);wiPD;InVO$?|pX!~(?0BPUS;iIY2NE)M>2p|%= zB00NyCTN6~5spCz_j`S%zeLHE+0r58z@LR?^&S8G1<>?3r-*Y`#+&RQ*_2J`_!?oY ztVvpS8b`!oW%6d}!tYntiPBRR8G+GBwPMq?B`a=7jwU?QhQOrbA}S~DMIb;QzF711r6Ua>b3M=Y)S5Uw4m-y5cu9p*AIYu%W@N|l@MvYUDpwK=m8gB9c zP_gQa$pAEF)6hY@=o1{W!{yR=9HLb37Y^l=LyklTR_6YX`fCVb!i-pn|{g6Q-xyNNqic14kHM&I^ zT%ai4=-^W|?2VQjx&7r)fVAqeQfOu`gDOr*)1(!WXmRt>@lZ{t@laBDZLTZ5$NaL^ z7^+=$-&i-f_bYgYf0kw1+ z3<}oiSFEE+QhQvtk)90`^+Rtbh$4C&D{VG*<4)r^gbOy0&*J8>Ssl7lcH;4Xa66HO zdleVLJdUE=73O<;Z{K!>2UtYt$+YF>V=>tsDH9UIovuH*q^j||?9c~UQlrE}a!!P& zu*5Uc!-!9Z=XvvudYp`-WI>Dk4@!A?i*#JvQMx3`hrM4sbQDh_;-LG<`>>RkmE8IK z?iU8--RT%Zju=Yx@PjNrITVjmfgAyha(%;!wRHh$foVPXhrKN^^t~^X5`gvrG15Be zQNfDyrIThq^^s+3)fp6qzUs_L9L-w6%0-6fg0+Vw`_5Zk`^pb?Y^%-M4gfmHd)ran zKkK9OxCJJU)8fKsQ#5sHN(h1vd_iS^!r{pE+Ua+0rp8enl@7m_(9SvfOCoDuB zxT_ldR+@ER4A|?j|5f*f!c{6?iT=Dm^obmZ=B@r6A#JvEysJDHK{S-t7PzDdFJ;m1u!S@PhLv9JQV?=2)|RbQZwi-CPVx8n0wD6~%X+r47%&(KM9WtF zJEhEZVL~&Su$6;;14v7{=Uo}QD1~`1AqzmUgJ{J7n%O%`H2|WClkpA(m?p6rbq1)p zxGlfB11psNkq%U$jJ=8#J9Pm~0aO5(v(EL(n%|QbMk)(0917e7yrBk^#uY%B*wVqv zV%{ZYZ6q$$9V_0uIK^a#gJAK=yUUaM~Zn$f?eXO+Vu zs&?1bZQsi6fsM8VXS*t|xT{5eJx~G?a-Z-kS8dBCH@UYflVvw zSJkeqoG#hYl6sx=qQsml&EmS(u=HuFAJep)5JEcwpvNPX*U$GBm*!~&`Mr$=rbn76 z9dt_88PsiiQ1w$m2IDPj_isqgH1<-FQF*D!sK<1J#x<)d916#tJpbgiN{HXZj(j;1pzaKww`S|7}^`LKLk-p$c> z4_BRkGKpTr09UTASY_#)m0OQkW9=FD4|==0xd*-qUE-}7KnN!5iVRYv!ob!WUHfw{ zRO}aDTD7$XD^&xlSEjy=V_Co!5IqulxO~^_pM7b|e)H>lc8_fwg*k}!=c>%ny_^TU zjGoxO8Ykj*NQQLmJzQI!+RuIdqCNNIy4}9JZFjfYa9Xu8v4j1#ef!%l+veR{hd?wG zBH|Aaz0|1LPP^+LJBYy~G+0sGr_RO4Ry1Ziu~L1xGqm5ov3m$aA4Mc#D@U0Z3fC|B z%0I&^$E*RKd3h(3CjXww7KFuK_)OHWPd@)XC zrAue5@zez?pINhlfHW@*vgAkEd}We-umXfdfu+)*Vx_LaMpY{})~wiU8n}sL(m3?H zEWzrQRu~Mec+jze+PgRqg7NJNp;4#@2+Kh9GzX$#m@|blv%{?`ZN+jVd+6)3(>4xH z=b#$Et=S8Obg0-1?TM9^9w+iXFUz}!rgAbi5K~{KE8uldv(iCR<<(@tSE7}duR1F} z1Key`C}7hj)D?QUmP`#p3p#dO@MtTWFW1oP~B71A88d6 z<%_c6_veV*=;&=Eo4xa#=Ha_5WGJKmfS~B5(#V#ILxEtPV@2zUcUV`MRy8?XQJzg0 zrB8Ke)pb2fn<^udKH8paoLp$MB|bUg78joz0>$iYCcTMMn~w$ZyS;*+Uep%29!%Ir zUiKGr%et=;Md@Yh;<7y>atiXeaC&%(nYG2NO(M?gNB{o($mDs`WE?3yc3TsIs|N?x zbr20jEbPh5>AfL8$u#Spd79qm zA|^(^@f*K!B>zMD$stp8I_(l`8_N8o_)}NcVpX zV~ujpKJj?L{_4-H*e4&aYp@rZ0O zbtn*GlVo4@5WT18B?c%L37B77uh~aMnpC7+_`<{LM z8!y|=_Kwm57Y>U{R8|=q8X)&OJz*`~6XJ@jrW!~K_K7nqc2)zXr`3g@cHiC~+Lx~F z*tO1lJ4d3F4^mu?fJD7{%37-zT z=c7j~{AH9JDP6wuMefyQ7UXXI5wS?li;a#EAV)gjvs9AGh)et^)gr28KuTa9U*V{=*sW>&hOa&`G5YO4!{UIiU81nGro}5?RNbf zV)%D=ckO@pAN~jXC;#N1_>BbEzIyelr@>FU{e3mm_O{C=?aqz{MA5x__k6Ez3P&a@ zr^v<4*A;Om@XlBI*oM&Qbll))pD#RVpop7!?oO0C|J8qG-~H})vyj7dTpK^6KRrYX7K$2(o9C>t@ljhk^(m_^owxqM zZ5!;rs|P?YepT}AJn9>>r|DD!%h1lP_UvE#bkly}lgqX$pwJaSsb;ItOMJ~s$%dtd z9aJvZZ@*&p&wl@wZSFC+u?&|ed#+$4*KN-t3zy|4>zWaoZ1R}eg^Mlw+$YxUU;F$y zTaq5HzkNr#428G&wD8zoef^sK;n!Z(GhV{y?55dGHP!1qM&`iE9R(osYl;G(&#x|ZRqkPejD!U1sRWkNtSqo|iX z8RTX4pIuW9e$PrTLKg2|cdOETbuv}nEMB&|CD-i~&wq-G0GI2|2+QZ;Bo)yzPmy0q zeWay{6kjIPj4A{Ai8rLqO_EAHfNoS3Xga-a&F3Do<}(+qw9yg>Wip4(aO#3C`d1ea z5Z2{jXwy4wo8IkMVJHB&vSOv>B~^pkyx+Bn#+ivGRK+{HR&EPS_Xh%*fNQl5GLu}H zXiMqBe(2eURx&=tMH#~cXL8G?tP~fpT*oL3!%DQm{1e{7L%svUO{9gQ-y;K${vAMz zX(XFp@cFEFPevfRbWpcauc@*Nv`z$h9XyNAL9=*qyIsbRd%Q65qrJWfF28_sqB~N?~x0Qyop8?JRo_P@&8RE%gr2E5vQOZmvZAS3;`nO~Q z;Y+GCUI?8Q8`4)5Se0M*c(JLJ0@Hj{XQ=xKLlMwCFNjJdkWy8;X?sICBs2qQ|W^MrJ-}`%i&%r2w`q4)pwF?(6cpOx#aU%rpH^2E! zYcw>l3itxj0LOp$hks}xA$VVY`DOd9-})^(dGe(F zoxk&Ue19(dzxR8;=i%qhowNV;zx{6=IDhSHU$YaUwqO2 z?%(~pp6~zoKmLz)_Uu{v@BjP%-obd%<3Z>>gUK=UpnMNXN#6U({V@6F(~L$V`=|f( zpW2BNCwy}9$xnXLCnxL|rJW%7AHHn(rVn05CA?XSlJ#&%-8IB0&%boqp1sJYz7Oo` z&3%_sXKc~P^!*=PwO8M`X(RudRuaSY@S~mW9IZyxx|GF7i8TC!ho<(z$z^+Sqv<~y zLqp~9P6nd)W*|Cf4i6#>A73SGE}yYl^Q8O&MhsA_LeEyCeN> z9u02TsO)jLVadYXcrd(C#{e1k6EVv#_!QwTkH_or_`?p$+rdARDUena@L{E_%CT~O zmRrUz%X!_&Uw|zB2$2YZ5&@NyYu0$;ywx8)ZN(O!q(*M8hBKWxO~blF8*LrfhTvg=RIn zE8yC#S$W)W0PQc!!AlwdB6?)$GpX`NIVrAhcK|?VH86{(d_3P}vmt`x-H?!}<}#g# z7l1BlVmLeV89>d-XeQI^DzhUUzM!zvHNs(wH1r8{kUV~QXvtp}(5>+6QvAZiMg zos)krXVe)QMM~NM^jVDCDU90M?Dy@8Fc;Izpv3uJIzHwnn`rwPrHY?5fCx7) zp}qCiTlR%7e8I!M@|CX~;(=150DKe3{-s~~CHoKlga5#`wzho#?PHHU=HU=v`P#K> z?j|j(Vt?yz{Vn_V|NVd8zV)qd+3C}#?N@%~SL}Cx_jjF#Jy&c8sn_ccumQ{)8yoh< z8*jKfoi>rDzy8<%y01*LQq8I~zO~=`udJ0=m#QFmiIg@D)Pe${~5+ zB!MbB5P&m% z*Xt>a_gm>R@551Es+V5?k~@yKQ#_9=1Xwd&ny} z*Ep?K%U66;*warx?RK70!vS9gQiV%T-aio#V`!3{(tqa{#E;*{-^(G z7MCcs^+Wp8MgDLs)~&Yow5>h%v$lNxB`a1pY~0_n_U6kr>D@N}!NKpxtj%Q=3u9ZW zckR!8q-g)fPp{ZBXZ5_-JvxwCs+Vk~sbQ2ogc`U8%?s9B`KEF4cp@*A|B)(kl7dsTdoi7XFs!Uf9{2 zWC!hmedl}E?2WhXXb_$!4f0x$i4Z{asg3{p=(FjNG9M-1hM)6ml{K}&szg*31IH02=_(@W7yy0l zgtcCL!d7Ie=hih)C@krL8UoML{k{!vZd>=Qn|AQV73*KSA+WrydgQ1xx@?rz!LIoI z2s;9@XBDfqfIp0@l99KGC&b_YL<^`-C71Jyv$A^oxGN}=s=o{o6D76%%`{e`m5skl z2(ZeGudI_2E0NbX(6sWT?kmx3SqK2FIJuD%<%tZu zMp9j4bYD-(Wo4yw1gg$T>^bIT&CEE2^2uGcl1nce-TlX;t93BoHhh%Ly4RfbPJGCwf*q z*_W+}{rbT8P-SJcV#PH{Tc0XS+HI&Gos=FYRbevIQ*z6cPL7mL_x?$N@%5e+WTpb> zlhu)pSJWR`>ZeTsY(49SddLjQ(x+JV53uxAr(=O|mYIuuaD{eeLXs6TAn9QjQ}6iI zOQEvT%Z9W+tJGBgQ0?FCtLa&lmI1g1AxF;;Y?q-L%kHEZ-e1t)Zz;TiC@$bj`L5OlK%KI?# z7t`eB9+gK5OE%`Y=brO=|1bWF|H3CgBTZ(Q;H0*N=i%0l9}h|ozTI12GT}4l#`bd`U$Rd;R<))EuOUCFi=ipd z0C?r6;!$ngMgr(t)ARNlzx%p<NhXjbpd$a^XaLR%)_p_fWyU& zmUa3A+wHRQm|{aGPU!f|*%dph0n~>ODRiSZvOl=7a|lGIREJaR0XhTGOW=Q%g^Py3 zi3WcP=H(|{UP2fTQ{7P?^LWKjDIVs&j9uCh9-izPCj4@F0Ct3Wz$}fja#!Y;Uh{TP zh)2rrLDu=~)7Y*IdYB8P@$W0?@@X>(+egf-OCERzRm| z1y0}~1yw5$HEH*3bZ6JP*Y8^Q=3N`@?AT<`k?es@%Nov0?8_}#X{5eAk#R(z+{h~% z^d&CpQ2;Gob_}4#uQJ5BTJXT8KaLXP#X^<^2~H+mgOHcSkeFhD&v^+I8xReso&hWQ z0nsF3b<$TT^_jkmpg#$MukLo-CM}5t{QeqP@M8m+II*-z~74+Se0!KE%%w$7QBNa8j?%Gi#8U z1j%F-8iSn3FA*QoDe|j?fGWoxjukc5-%tkJ*&Ft3$dQ_wcuhEqTlF5>X!Lw)D6^Jw zUQ%T?RhE`2i|rXQ6OM`20=RS>_-$()q{IzqmBT|)*E^_xc%pMo zGk|t)XJlXh_BGqt2MBqlbNNo;BL)!t=!qo_R%5%d)6rm*VjxW*RKCxhTel}yDjN7u zq~KpH0iKsu`N)buw7@g(lCT2JerS2-oIdi&ATV>L(J*Sv9e&A& zMm+|FTj80Es52sP@eGxdBEX#SI>8?WiFgm@B9GF#%j3D=R|vXgEWG5zi-ctd&;Zob zqLCJI-9oUaz;;k8ZY&EtpR?-8WdR?+nfTNI)6vw%s@vgq+xlBOHte(ooH=??GF3QU z8g%IbA0;8x@<8BOX&g{G5gYlVCM&bimw0Whu09URC4&CqY{BjqR{7#|jyRuz=)@2* zu_;eHGi9*Qjic?@_{yUZl%&4nK-y81+!*wrt9lw4Pn?mW(o2GXDeA$|3Se4c#FfTX z)wb%3J+%~$M5J*FTOl*4QFd&3l!PxpqKkXnjS_$}88K0_{^ILc^^H+F|7eN;G+#O8 zD7=u4fsjw%5(xCX=-Wy}eoPjf#XX@H$>b1c{JFeL2NxN#(FZ&9)@4Ni0pV%A ztI3wepmNWurM{IWZ53=^T?qa7%!+!uCb&f=s&tCRNE5cUirSIs=`o=Rn8I069jhab z*qaQ16?iT1$Y9mK&(V}E<0Di6PnyJ!-BW#0PRxY9$}dZ0!RlsDW1@7Z4rPzy<5LCM zN?B1ol*I>-_I=n=sU+2S|CAj+OqiyuHgj&Y0JC)^U-|djW!v2^+fKi12cxn|r8wyl zbtB5!BC1pqi_xaF`?sX8w3Xbb@xzotuv7Q({^5ag6#R)Nd=Dv4G@aK^9!NhZaZ_PdS6AI8t>0)zP(JQ{d{ELM&$F23C>i&Yn~yt6 z{vv&l{1)x|(Sz_F#d8#Yo)5~WIVvnqDLzlUbjV)v{C@L?A7uGa(!7nbR`=^7`h8Fq(i8RnOG)O&vzFus(6!LWREAMO05dCh}*E0Sb@#;{u zIJ8Gk7wl(0xnWOTsH^`??fRXzy>oL<1EB^K*Slz2yF>fNcWxX4(TO6rAh_$Lf?Yb% z(qy4vZ{6LuzN7wm8V2N#tT*kYvny6}h>^ZnxM!CSI4AnB{5-+Sp6I33b5?W^tuO$J z|6DFv8Hk=$g=EE`6%>*gB;|4sm&`A&*>zTLA_jO_!AaC1pXY;%blCXf$sTd@X7E78 z1y{t!VCpI1bKt`&bVC4|PkUE94uC=IB012KJ<-Iauw1v=g%j31f5M6lP3BbZ6HR1B zdwm;h?b~2y-^K$@Okv->5(!9=HeCVG<*`7Mzl;TFk|D||xWbj`fu%q{Nup4fH-L!8 zE8N?FKPEa;PUhel7GPwtB*>01T}g;Xk3t8~zQl;Fu#)5vrvmuC=){Yn*lx0RKq%e8 z?@5ISICDCm18CV`LE^B>)276;lqx>b$zUNTfo6!XP{6Z^ETl&?5BX}s<1ZAdJ>=FC zLJ`z~41IJoQ2X<8B{8v$gIr=vK%h*P8PWm}hu`IpE6sjDLR$^B${pi;1U&RvO7>++COMHXw~TT*3~4wszLQr4uo0+5#R;{#Q_h2g}O^!!nB{|L-fAbtvv?#Y%J z^-8wCClKAP2uM@1sDC$JnNjDoN7T{O`op`{8QhU8pe<~q$lH+DsL~}rZ8VRg_T7<% zW%ZvK9+3x{pjsw?8@x}ySdr55oyH9V0iWBfxZ6rmhHFW98)h&Mk%{QfaFUXOMjwWCeP2m*RzM@_&f?(;l>woDOJSz6^|%DOP*4M3kr%6 zGiy_RiD(EgELo9l5`YjGl?Srsc|gbzv=P88EH|uvZo`^;VuhVfMm#E@5-ZZvYD`>wsXJsuSu%N9*sOr^QzPi=3)cz*82fP-($T>z4)OWE za?)jc_d^k4Sm|XG0=yEEvT$Ga=XvpzppOzmUkF>m#2DO>0syEyGyV9R$A&J8MEy+w zyZu!Tm3ut}L;5Tvil>3ztBg_}uDLEyX8;yK6G2Y%hqy{HQI^Q1k0Rj?{( z3aITXo#x@ZL|H1U+{&+9DXSRDhd#>oMU}0nep(fXu2wq&(fi^RnAWqhQXKi`!yB^w z3y8Y!%SuyHzbYw@`1sFQK$`xne56)^PrC~+PX(aI0@CgMlI^u?wt1lE?3fOw0!i2W zy_)LL>t1E;4sKajU^+U>dns!bmy-y8v=bCh`E*I4xB$@f29CG8)$PvqLYYJo_)I)KwZ~g5n0@0V{<qy8&>s)f zp}^Cqwqc{yCv8wYW4G@d*zf($*X*6Qt}5Ooxf)3yARM6{kVVfZ^G8%faAkPoBQGyp zs@tD?am_BCU~lWh+8X3ud3VdU4u;}jFfIy%6z%nQc4W3}BtR0B&m^)*1c*K(kbHKv zVV4D>w|cC!&xw@lm6Cno;<}x$2YB7rqwC8z(n@sVI!s9h+c=iiE@UgwD!;EpGhivD z1L=%0BkI-3!^7=i*?<@EGcK`ZF05P{2riP*4BoETVj>NHu+O+PDD#&nyPbm}wPT8R zIWlYy5`Zq3n)0hZ1;Qc5(}ax7ul(85T3o7G{p^}m)>R)0@9(y4wAHq;CM2BqE0ktM zfRVtngCz%EOgxZ+T*Z%AfmWa9qx7ju;QBaFHC^CSYcLxUu5X_SpiT9okLG_o~QRPk5`z-Dg|+JU?XJ) z_=sd8KqT#;iklQQ?f{s{-YZXXyo@sZIsiLgTCM4MSL!QTZ7l%qXL+lQ{GCnLOGd?> zXd=TTqX>}Jqz^H}Hg9_Z(iNw)<)#30y{G%3tNTG9y4=>iKM;@}_(xo7%0o{|t0+wc zFfIK7(P>4xrF_feBUOrg5?mmf)#!ewCjcKmY4{%$c2*bEJ4R}^``2wS z+Kw`(%1b1Fyj18OkDJx2hl)2Mop5@L9NgX=_0zio(Dw#?8xr^)%H{QtjwDq%EpznN z4m$Vjrp>t*>8Q958pFTWDFw85lqufKlPe($&c(Dnq5QonP> z+=(Nsh(cZ#<_y`;kOf5ui+ckR=sVD{z!dP-%_h)N#M-dVL(M|S5^I{=|R-HRoOh6j0lvP4|s*{;Sg+&!{Av~X#+{rsrH~40* zS^Wk%8#3Jo9gdF}xMVwXJTu(I=q&PkUr4M}VimgOtI&zxM+Qe~c{#WxxgzkjT(`nf z#n11abo6ZK@-w{n*w5M!AZ%4_%IdRV3`YRQDJCEp>P!$p2&W_vUFb=N9$y`lXmLl2 z(sRixC^R4@{ya?eQ55233yNAN;|`wqANfl3Q6L&$)Q?Q6S5=AcNJuXdf^pm^g6fj- z;$!3YwAdMWT}d+K08q)KmFNPKK!q;?X#7mXQoSZK6YGF_UN(LX*NQ{4&uTB$Lza$R<1psvjR=mXvRZS}Lh zo}E1bY1s~>hgOx2zE4_)bEpDOZSlOOPXgNeQJk4U>6z;e+u`;%fb@hVw$`gTJ%Fl@#OQsK8h!A=jkXN zFh|M64403wwBK$Da&E?axUq zq6fWz-05d+NYu|pwK{PAA(R>qIt@Z5FPnPW$Ke1$wtO2Tl zmho_e1-Zjw-Fgj3-XU>+aR+ipkys_D}SKr;Xoi^J>NKmleuwZXq*|padKF)z? zC|tppT$E(3R<=tUOSa!1*|ptH4j6}FD1J`y&us`ail1GgukZ96L~Fdu_})uI`AT#S zM8`{oVW?;4n#qvy`iMG)7!c#03X|$9yt?@REI=msF}x(2+<9`DhteD-k2{nmFGoiD zvXWcX1Pa57w1XMI7x8YwV&ROYVOOmaY^vwcZr7&mzOb=+Qln<2^_G=SuUc`fZk!Pv z%}K?0<+uf~D-8qy)z1nY0qDUbx4k&ylPmmT;u>;N891Je)o4FfEsG6a+zCX-P`d$SiS<3J z(OIAOKRJ_RqPUl1)fWIfmWz)G@rw;-TL>@;9P$-IfbyiIc!5b$m6#j>7Ukunle8zE z`VCOUH7P*8#H&8Um$4oyA{2F{z)Z=|7ehtCocy_j8E5e6&-S;U_lY%5(RiWHW=;7ML{Esxa1-%*)!r9l}QPy!GmF| z{@!Tp+c+@1Tu5nhsYS_mIP@VMP45BH2}B*b88TW7KaMAFC(45}DDPj4gYX~4zZeEB zriD`2Vmj;xNtY<4Pxf(Pi~dB5VfdlNu*LM)c^)YF7x@=u=F{cF5^r*+@T2lgG9Loz zA3e=mPi^g24I#}lw*JKDY~|5UTdB4orfl#U4{W%9!@76h5U|dSA&5qLR%jQ10FV$a=K z4~#JQJc6NlV$0ROeO5aB;wRSa(~s9|r6%yCXojzAcLC8mzO6&O(9LdpV&8pj)2`m; zYhFkWSQNKi@q55xHw2=;d3#R-$>BT_ zMVS<%fxO8PchzOx7u%w&O?$r{8$m5`Q%M;i#&) z7JPE$LC-8K@$px(O1Wj#>PiMi6Br8OCv?8(Hf4dj!Rnp=&hCH>KI)mzFHg!PE3CDw zc7DSuXVt3P=G(6hbJv;EN6;z=MHBX_Dt4B=9sl8=C#k zY~dhl0VofrSg8QG6X=ErbAjTMg%{Z~oe2ykr>VeQp{xl@h0jJ;_c>E zrLTTtaJw8NAY5TCTy26<^79w5Szex>D6=4(ZafYX6OcI84tMD8QDotEI5NrZ4S!4w z;%+Bh$OM@RA8FDxH-RM>+OX%^Eh%FD;6^5(;i z;yWrV(NSSX(IVf2rh7;qjA+qh@!oG;=vm&|(O{7>bGxW9rfvt#i*~U732QeWx6Y_) zuf6)N{fmG0uk5WiF8iVt?sl z%l7!%#9z>Xt*?RR-J5ND^_?y233wm_Y`QCe^_^EY?bcTJJ=;0L6-4gwXI2%!c}yU> zApm!Mw`Xnkf;tbw4S!}E0)n4Bvmy|!7zNxGi2Kf+ee2}%IFbrwtG7;DIRnwIq#WFr zes8)-61XN=v{A}E7fU^5;K4)WXJwfII5@Bf4`-sN-nl%FMxTt_?@S`+gJiqhIT6F> zz5T-~l~uXf8k7yTrKyc;GAnX#2yC1b2w4?S6QCTczS!gIe9C9isM_Sziq)PvXHA*X zsbyb*_WiB=JWu(&oRm&~fXqGh&#j>q_eZgR)U`n;m+E@pTQn3Q_QuM_k{uuS0R5)^ zM|#>MKy)D4keh151yI+ip7<#r5xxqoFy9YNxa_QX=0=wg=fD|oKwd^&9m`*ke}HK^#gC}#=@!LKWF zxo4FBWID>+(o@RNFCai_y85anXv`qhzW~7FQAPELDXY1ws!xSa zIc-Bm<>2LP46D&TKcPS9UYV#*4EkoBZowA{_|VgCj~8F1SME8&v6*aHq1FJw{+HQ& zIA}1Ia$a7MS2OoSDr@wATu`KkTj8>i%8K(nmHkSmYj5rCIf(A@i<;LXCefn*Aw4L) zXGJAK^jV`YrYD-`q*bRfSwSa1{SqTynWxd-u4yi z-Frt*&Ax~6dGAXbL;Hmn8}{kPsshx!Y>4!E`;Ig?b!r>7xAL6zT94VFyl&e&9sBAZ ze9OM}2PN^&Ss%IT7J@lI>CSG51Y0rjP8x%FurC#TEPW&#l;_Yr-kT zSiOOn@1p$RoqGb(2O1^1m-pw$g95lZkuKOH%;l7=QeL)Nbww%) zKyz*`Sf!!(WyP-)t+XtF)RY|dma;u{Pi15USykmPG&O5hI(Nbvm(E!A%(@kqB}b!3 zv{y!{ewd`R1z5IvHr?)9@nGa<>{2r*#x;o4_#-?_gl0}rIHEqv>SMfMn5~kF0%-LF zB ziN?fUIA5_(Tw1cTEe$RL(CI60fYI&t$ler)y}QeiRvNGs$EwcdJ6(J8+OG9@14fzU zaz2JUwS(vjt99G&jqI(hw)K34c}`%YkDp$)kDXq!sz$GEjfsD7ZO3kO7$6Vlaww&P z=raML$w}q&eVhJsY?vr^=o^&u*3}D~YLIJ~@I%DQ%mWV5VeYWWDylw(&-0GBXfuDJ zXDs0?SV?VPF2|8}zG^J+RcMyfwNy5a91~FRvH+Od0ucLv0kMvYHerRiUh%!pwNnDm z0@J7-`^1$-brPqSsL%0hz+e)mc5EHkWUuSs!U2nG1Q5c7X3$(&*WGP}MUdOx=Vo5c z`>nZ&`lDU)AevUC9^mClFHs0`5I|AWna~+<7JhQ$AllItqDh0_lV?Dfyn@9ynhL!D zo`qntcuZE#B#!GZe5Sn(tIv7>87jY4zRL;7J7P3App@%TG` zcyS}#henzO|NZ~pKeS3^Em{aepC?`NA7w=9KkjyK_V7w^5uOjr+>m(P>1v}R9^&zf zJU)xd!ov@RJ66&b_-3|}WHPa4VKY0K!+t1Kh;&f0Va>at!+u@h$>N-F6PCp}WnoT- z+>)03GOj_+KQ{&2=@0F%|409k+N^S98|TAtKRo{KM@9Z<*Pyv%OQ)Z<)k~kY($Z;# zaYJQ;iw2N!Z_nB{U$t?2O8{CA@50a?SsU3Go@>|>rv$)DLW-i)sx_G{_nNg2cpE%Rp|)4EXO#7FMbS5L(>1)0q&U}bY^xe@K7O%g zAG_GJGp&Mf8hZ)F&w#H)oauUNr|&Nnwgt3E#XvUDU~>Il&)&Gct3kkXaH&cEqbYJ; z6OefNRLk{!WAngv2MimejCfoZm#X%~$2M%Ks9{NE{MOBV`~JPQ4={7y$SqRIClJkc zj@r^G$)^4lqk+i>ZXdVhPZffNH&d8;Np%xJT%!(VfvK*uxQGaf7$k%}k4bS5;SrPP zi&PPk(y_ud|<6f58CllJmtG9w=PEgA`QAik&gSAKgtgiWfsuq<19?1G^s2sDbE#644MM44W+5~tx#|4 zKHArOa$nE31L5tCH3e`R%C{~cTNwtBW+j><@67jL7j4+*sJn@tc_XW+-3Ohjz%)Qw z@hWTD?~kVOWl4-eR8Oo%55_x+Q<)XY`Of$H1KZa)+*h0VmJo$wNS{oUD_tMbkAl>+ z(VLGuN19GdgYo(3|Mh?UU+vSM{;JNIC;oEmGjk(}OjvnX z;g{`431L^%aWX#-0xRn#@cR;5YPhX%4^yXPHH$E}@x!BTll{a}@WDE4Hi#8UG6i0$ zB7CI#LT=4aJxqSSio{1C2*-|}Xy8wNrBesiJl{>;&x-{-(l|iJRZni!4|d!Fa!WmT zD;$5kF)dqzjXwu5@bCc0;@H#XCc7) z|JT*q_KSb#|Kr;<{^$SsfA%&^^pTHz#D4J?e=+j~JzSCg<0rMUsAv^|x0OdfWzEx1 zX)M#gqnm;I&j$hx0)yRK*4?~plkT?q-N?^{{`ezBd+Eu#Z8V~yG>R{%`qBo8RA_oJyT zS4zrn$r>8?-rQ{4rX~j57D3WgJSVDU``IT>+Nl~kOznFdb9Z}>t*p)yl$GC8VC7e$ zb*D=&(6a+aIGhRF9Wx?Fw>=nlGFbV%s7Ia<1S`)Y<;5%mg!gQUb zQT>+cO{*>~Te;N`2-d?`b;k3RRZZI0K`_sSp1|nd$fo;xPVvl;j7hC*weu&e;a@0> z6=;sI^TA)~W&m1^J8JiBbnn1MI|o*1^Z99IAIfCf%*%_uVIcgOz8TFxw0pe9MJloP zIpA|cMbiMI2u|jhOxVi9A%<|y>wr4(B!tix8B=`RQ6TDIlMiEx{JsJWm{t%nqBlyO zJpQ~TkY}#?kz-K8xZS)B$Ow~#hkzi$GYaWAlC~mul%xWywi;DXQlPF-t;a6`u&7Sl zs0^hVK$rB&NO}88^nNc_-=Q;tz5H^|ZC>6>Uw@>8v9cTcb#sb~FMZ7tiI^hWfILt5 z$ltYhR}`9*#Oq&~k*5#(SB4B_#v-`*mIfQ(4^EOa0U_B;Ep=YE^c7S#$m6J}) zYB+s_Uo5zWeu@hm8=r@d^qy2ieK=rOcD`LkK-$)(HeBkai3zM8SUZ zH-FQ9f-Ts^Z=D)H3$`c=09%+TWC{*eCoh?*{Fkg07vZYQ7nIcuJMUZZ70;S5|vss;7H z?r&eW_RZI9+TGHy)U!+Lef#B4*6oYWR&ArkBrpvQG2{$2An%md?ONk$yIX(Ky2TZ> z`M|#at(Wcp`M-bHZd|*q$yBs6z0P}{cOG37Ot$Woo4Dvh(LW195=*77J#%7W|N2Lp z_RB9U+0z>Z=>;mwhCE%sS$zSsm*3sC*Dmi`R|uA4(pW^hy*;q+y|eAB)bSAj&+UCE zbf`+XM^+ow6o|fiFtDvdAUY&91&UrgyKE;LQIBu!_U(JO1?2G@%F9dSJRq&+(rK#; zM5_^^EXfe>mqba1>c+tmbrg2??ns68N2p`=QxVWX+&8~W!!p53>6wj{N z@{3Q{@-r8$w4wMT3lw%m8Irv-0N4 z6h!ShP)y6$sod0)*O^FRe%7(i1W3UOWKZoLE76H&DfI84oP`+5jmh>wPyKi^XZAci zAKYU1tYy**h13(>+OttL3D;zRT5)1_KAG9#26dBUs9zv9Oll+fi1R-_L{zs*vFWyd znN*XXX$=r9enhjt#97?Zouk<3mXR62Om;^AQUb{%k(b3ud5|6XWd+P{dx)({@_T)< z(#wmQ9A&7wmD~N;s(`VcL1Tf&F{{2V1LK9{>iMM7`pUBICC+|kg_|S#LVg0lq(Eov zOt<*=v=q`OdKoXa1AYhoOailX^09>tePWVO^}IZPCPf1O`EmyckF;3m8#+rW@dByi z5udN;=*+ea$NM%Jb<_viR-Fhq%dQPNGJUJ|Mpo&J{RA3oOA~?P@j=A~2Q}-+Z0(gz zb9UQTzbTie)=(QZYDGJ_RH6UUY!*Tb`U`CPVc-}Nw%G09% zA^q@)cEJ?NEnB|$2|M+XU$FAZ1p)}AVFHN`+Sc8C$2zxO*T8vTYn873^y6lK_0vsz z_T-~Y`o*|)y>UF)>_o_P!+`L~wudPpSFSm}Q?lzh=*D zH2jyJ+ueyk^q%$5P4SUuP?SuhdT+E&S(WV^0&DRs(jb?WC*#WOloya~L2K#fU_kbK zF*3q}H&28sjDKv2hGQm^umw6SBluiXf!)%^ifugmxSjsQM{MQEb5>mwK&z=g2~-5H z2!PU_*zmRh!;PL5cljw=VZ3B@dd*fo_Jpl{;z_HWTlW?0d|G}Do9ys1@`t8GbOO0yA+>n;FRtO+2pmtBO; z^lQ_7T;$ivnf%Dx^H13m;WiOcnN`^-U{UwYw5uRMb5E07Ui{tju-GOOCw)*6v4w-# zL=@7`v38&>Ib%-O=_ws|p)#eP1ELF6*GEjAX1

DC$C2S2T00LE^(OgcAb4>VftK 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

f+-05Ss+hl@gcb1mfj>jJm+6%c6y|%|-Ng9<;F6 znc~6Dn0;-HK`k>ZW!{n6i9&Z}##FIk>Q4BpPp;r|pSz0njb)630{ZrpjA3vQymyaa zzF$D+WQt)Y!?BEgxz{!jJs#>Dy$i>}cZp#?i?~?cfIf+Bd%Rqn(_ou3%)E|Pa|mJ? z#$1H3{1_V@D4?L&H^W*5nWX~8T*dS{`xvx2_QV?7V#HkBkB3dpEk_s(^{H=_mCllv zIsVsd0b^qy^#Z}PDp++S;OkO2D>RKV)Ds|WZCn6Zq_0IT5Rh}hrMgu+OX^8-`f_4_ zv};E=`tdep{8e}&7lMo9F+HZU=_6;Pts{}tz;4~TWgtp`__u%iw~^21asK>yJBp!~ z5ViZEEA!;XI(4Fp^fH@n_RzWNk5h$$J2R%MmaOsrPpbK_=IuYNIxCzs&zrse)9_^e zY1AkAKg&H`S6-j5N9jM0mks^UG$Tg8{^C_ETsnvD@i7~v--(`}P|acO!V(AD7$^Hp zOop6FD6jOnWGk(1n6orz0}S&QFwQL^h~T1Claz{GFF3W^8MF>t=(jj=4*CRY z0?|6lM*yuJp^r2$Tcvf_@s(;5%UOLKz(JepQVl_r z#bPCgr!FpXS_tv`-yPx`@8*c}^m%R7y&hL;SBYj$%r3Spii@i#ubgK(w4>|$p(YVM zf|ss3)VXHaH4*3qAf|~EjRQ%VIQS>ORv;F?F&7XS- zQJ({*9x{EC0Hf{{Cx<#CKOj#xc#zMq^|E2Wa?%xfdP<-&>+1?Y&990mNedI@5<#W9 zapr_*3`<3Go~SwHfJ&n&mT1lJ~!-;aD~; zXeaMoJb9BVN7^l&3||gPug^>3F3T*Ba!6!MWX3x+o2+xy`V(W;d3dRg!X*MDw!JCG zgTWn+3kO{`DE6VJIp@5*fox5W{@E;!hB$d^mmpfVHMww3NxQ^D+aH&4((nVN>9i@Gy$|e4KC27cO~o`bfAwVxx44H*#W_F8y7bY@Yxr-c;gk| zm1iTI-x#A>8rdd6z=d+T$3-lwP|ZfA)MGn->wX(QxY@#uJ3896#gywyy{GZJG$zGF zg8=mAMgd>={3X2c#*=oh(q2BTi_&Hf&gN;Je+nQz>h~@MhCNP5ddYB%BEjhLdL7NfCOXGmI~wC&{G_hAng*HOc|ch>VFWdd3QtG^ z`Oz&zI)_MiO+mV)BFBNfKQ3`{DH2%fswnL~yT{?$CDCq6SR|OEpQ-Mi-hZD)4cZ#e z?Ev;b3BNE8Wi%ycP|J4k0w>D6ovGmbim0a7erKf z=rg|dg+|KQQ)m{Pu#E~qagPE&lp zGytuHGE}BR#o0URVDJ40*nayCI@=8bXfl;hEpiB^RJIv{sLYUdJz{1Y`tyL#?26KC zl+~XYiMz#RrR+*t%Kl_E`>C#9*Xo>9Vx(?18R+j+!spYwyS^lY<2^*?=9F`HypJf6 zG!~HBsCJ<3MZ#IiB&Kp#oXW4v9ze6**k95JXi6(r0^Y9hq??gMck1FLtmab{zbtTU%11;#f{LN0YW%`mM;C|p@WVXI=G8M@#2_6f#&9pvgE zmR{XL<;o&ZQ2IC)91d~(y$8r15kyS?E(T(y0U5kKDT<4=FEhh}$~ab93QtJ9C_lzx;BONh#F%($l5*og4?*U#fi zU%G+|7xk4}3RpeZ<*fwKSu{^Z*u68r;dU4M_c~}dIv5T*_A;@;(!cwml6U@11frK# zkSo;KZ4{o|HCD3kt6j09j{7|pox2)v!i9q!w*eA-g4f%I^gkLfWziXH;e^Vi?$D2H~XwIeO1YwrZE z1qRfSe&aWO1FNg6GkLFz(q_@T-P5Dw&I;>Mvh$SYp9L)Ed1?Ej!W5k)N4JFl?PGmN zMJEQ;Sats0=g0YVFSaQx4(}X%hlNX+hHC^@T@*P`>NC6Ah1L-UHd*tpQ}6vz5xIN? zQKgKaK#&*)_Of3*>Y`BNM9sLyt$UcZ?kjLA%@Er0)mdQ8>SH_=onR~1V`y$bUtXvq0^HWh#DoX$_^t4azZW4}h}z>Xu8i zzP@EZMSqrmMri5ce`5CF*{v9;Y#W|3W|l0M0R*w5UWa}dUapKnfs^0#$R-{(4*RlU zz{x%!n2tC}PsSPaI$2J-I+vY6G16`{CvYwrrW^+pbr`Wsq_Z5mT~3;Mva5U;cwxj6 zGFFxgqZK^&YcJy2H(o(yZOL}L6t{qn=Ed%D2fNqq^|%$&q2H!~?M$^6J{>etN9-Tir<1ELRe(`J#gIWn`4FRjnm`teFU z`tZs)j%UJBGmlnj_ODiJ=iQ|UUIe5NM_lyL1&0hw-rIR2?j%Ah*pzxu0Z>u1b*54LJ3U0p`N zaY4JLT155k5Jc~{5H04h^4W6)*m?<$ew4o66o)_92KENXC3&{@P*ieLomJM632oWX#x>9K4naeGF<+Uzee|dx_&J9s7 z>&|u^`(m0Iy%moyBewUjF+z@cVM2`E8fWnb-+zGSpujlJF=bV9RhNw2%0*>4M!7h_ z(@)j#x4w8DpZn}4E?lT_ykyIzj3hK(#c>uVjUjGa-^Gu=yN&xdkI_CM_>BpY?c*cL zw_;V?4j@|{^G_f;Tp@@q*O*SBVTv(coqg8(MN=*!;$DmWP@SC%Xe}!AJqImtwR5lc zazq+ORo+7aZGvb$U}^UeHZamJK-8o9L>Tqdf4`u z9@C>p&CI&US!bk00#DkJo(EA2^#zp5?h#fR=y^Je_luxUla8M@tv^lJKg;xZIq9ND z`ALWOaemH{`+1y^b}>83hFLuSzkdZioxeRkf<9BdtZS?|F*Wy3ICi>^-)MkzFY{TW zHIg<1(zFbNMGUJiW16iX>|aB9c$4$0COrXZmsj~8p@7}?7O~g{%B$z7Hkn`Y`yGPo z2`U?l>=i={xBm)gZ!^7u$`J?Qkdtr32`WIuiR0JH2UvxUMsPypT=VR+TQ-@Mij>P0 z@CWY~@n5giFq)Pbz9tvuJ=TsiCn8Q3Qu^e!&SbAV@iKzqB158_Wc?f`T{xY(Wt9`I zy@=}FXz;s$0?xV$%rKLJVV?D(p}z8_qZ_*2L)*R0-FwJ!!pr4D)RzvB&wkf-*W{^? zk5Ma)SZ-XrFs@!}ildz@ip2$j>;d{hpSIK&JDO__H!`#x%`B@cEvj8P@`nN(EwhqkqquIVHYm zPlu|-*`&z6c3}a9&6+)pu$L(Z6Ldd3M10Uj?cxF!o>@V*;udp?HztT~yt9Yid&lnl zuEj%tZ2Pt|Iwq*In;d)viywH(fK!SLL(OW52fBPzK1wyz^{e44P&b$eqR9Q5$cyW6;Vi~Xt3 z1;Iq$4bTT<2vqGny+Dtkpr>iyX&0CD5+28}|vs^`+Be zBZ|wkASr2j>K`G&FBz2`={L=#L-qe)iF9OHG*h;)P^8_jK0}*_r3C+4GJii z*X=8mt-ZS(9Q4%8kt;<{j59g@p}O)fhWZ+^U$%kSaX5RKP>UX>WYR=`xQkxA$8vR_ zZJ#F>&SQE^KN+35Bb_Ggi0KH2&OGa-K(F*+k2DBNn?C^H*P1sU0 ziykFA?@u((OWQ@B_bA)p?i6V2Pxa_Mk9dHy`l>vH>9pOJP` zMiL*j`lU5&zVH-|w|CeWV=Qe{4fHnm8Z!{>j&o=?nt7pr`8K>rWoCuRb~-9v!Z_L_ zXN)32bb%n3I4s$XmU4aq0!tn7=#47K71mK+K93-*+DA>IN=e6{Ioq9Ja`ZmuL(U`| z=-vI%1k|=0oxvt2&&y$tQy0sG<+Qk1!s0@K0M(WE?M@m04D25DP-B`Otf3TaJn1yP_Bk3SE}f@b9QToCh$T* zXEQA*0u)WkoaFL3+nMflMm85JzVqic@#}y4*YWhrPa`OCAwn7#JrHDv(e}?Jp>_~c2(q7rta69Qfda|ND@}Fb3bHLUTWrk zsws3&3c~t9Vi&PU^gGkdS1Kx1i8DH;|C^CFsx7Ep$(W=^E!*mpq<&)8bg_`!r@Y+` zw6!G3+n>T<8L^U0SD2RmStK*vOi9?Lt4z{lZeF=C>`#1SJKfpEFp-3pGK)`gWtWtV z@2IAkLt;sEk*w70&T0CauOAx!K`}veMn?yd_()baR$fvJ%l_Cu zvOR1rAL9!z_wdEf46w1p@gUH*6C_9f7KGDPxA8PYi=g(}ogTjV-ECx!`q|C=Js&qTmfw@Tt;!n7WKO0KBsH+ z@&x~?x*$TKyo!8bkx3h3(Bs%|o!$~fora`7^sBh+qbaPnd|2bJduhXw~@W(iZy2YyN}hR5`nesW?nb5p`szWNpX!+-b>t>HbU$K*-vq2KTS z%yy*R0PfmYP|o9}-}wy=up=}c>|%MHz&1A~xH=?&)wP6rNl;*pgSmE9<&$Qcm%Xx( z2;?|P4C=2U4mOaD_p#9XE}~4|+y$haJcnL+<^(a!EumNW+X(8f7?{-L!kL07l5$ZO z)6VyS!yj7d|cwcM z=E4@f`j!6$(^3^3!si~-+$R`1+&jU|cW&a|wcF@72Z%}wwvfmYKr2o5G7$4S(aVLJ z_n2inmY_*mSyKLGr)Fj|C1jaT=_)r@;3WC+?x&jP8p|eRYAn=Qs1}x!a3EboIV*Uz z0mnH_2mKmz=5R_DF8TaF?GI+*zd)bcg|^4m)*xIMNmL{OKZS3rBy&~oa8jNgw#j-b z;o|g*>r+ygN%!#y!}B7*Y5Ukf3Jy%3-y2e@+P*pAXQUWS>78|@ds~f%xjtdez1a#%{rdGTEpf> zfQ1D@#=Lf)19W|z9_T7Q-6CR1)Q|F_ zw&h4Xr8QGxS*$K26GnDh5W3_K^s%Nc7rtERW(kJ5SWx*r9Q*%MCV;uy@HdqjB3oz@B@7{37KKLTuV|q+K57IDat@O)Z{xbglKluB0 zF8b4u8m=33o&G4^JbfB}XZim)H%}kuFHQ5jPwQ`NxbmeU&PJt{}`o0#7P2Z6GZ2xBTg0s(i}4FML{ZoRRhu5!JuEJ zj&^Inqzrn+ONgs4aqtY0@4tgkk#_jqTeQ zv`9wbrsdMi^zo~G6akyV~I6c`7uCkM?pBb z2t;$D(qu(Pnkg!sWn))D*^OJypMo&VKsS11@XqgO&^9nFAgyB)rE&`^rLQ5FY;)4r zwOs)!#W9wb^di*+Cx?B4-!ZBS74$nfG`H!m7b47bu(saC()tu#g76NTM`uI;5VPc2 zPM6oN;C%fO!r}&+lOkHWlYH+8@BR1&ZWBOv^(8_kDVHyzu&_)$az{9rRDJe)GT=gi zW;@oRaxsJ=#r!BsDZaH`@n%Gx#0*5Al9Q)FVaV(nkR$REuKP_n8F;p!#7x3W+)sm$ z!KqnaN;pR3nK|WVx(pUK>ooz;36n|{n1msqll(ceb8~U{SQL(I3Db7kc6w>Ntylk`~r$wRW54fnPJdj+Ml3( z>j3%O6l+hfBUm87rt`!cDKp@L@0~rg-#UYYG^W*fGfbyUf;Ksc^RS$Rf z*^fF?0^o-2=)S&^$L~C~ilX`@;~5e3{*UbtZ|wmK;U3m5U%=HDE@FKni)tl@JjWIt zF>7}M+`7}jJMXk`=iZRuS!-)oMvi-x_r_FM+V;a*AMnT&EvD#&Bs@-(G?~&{fEAMt{WW;e&yU`;z{^$uH z7s%s`UeaWObIh}fTZ3_~fNK3b$Dzn}u)B>1cAG~gW}E`j!CyNE{m~A`p~K_}M6!T-Opod3MB1yfqaBwnUBZhmzGzq6eRN=bm^{$( z;?L7ra-Wtb5>Lvzr_J77 zG|!XWo71{TW+{Ic_|N+KyP#aelfUsA!BZB^odcalK==5BSkGO1=K-__(He8TQYtN} zGE+@C7!ONNU=pm7HAHFjAqwa)Ob46|e9KHFP(2FQFt0{a5H6Kj6SU zz_6oh@wzB4ZgC>&bK-2+WH9AKt55Fg<2S3BE-r-wcdUcq2VoAnkF{3LbI1IRSeA*$gH zC#*4If`1)RS*QnGB)G-Pm;gS^Gyj{9$Xxw>Q51@S?bK$r@wHx=iTDls7D-ZVJM8X0y-PxR(ze&8F>xedmowP?Mn^q!) z?QB+DiP@7gpK>gmBrF%U?EJSt5`OY)?le2TbT&J!A(!%~KC_1WCV{Pva>!YcvrV+` z9H78@FB>>Xf85M9cS@s+IwZ0H6Ywo%=cK42Pp^*Uo|qgw9cH~#KZIDa9B zVu|3p8{qxxU3}}W4)L}BwuA4#)wR!o_XoNKNNJ_gSnjew;@Dy@KRk?-k=mG8e_|4;8=*RT)r;h+>-RrE5GY{I% z0%o2*$v#hVpASFHo9BD|QT#N`+eK&jo2PmHeEL3)K5dvENAt3uHcW3%r}yK^_T$_{ z^X8uikY)r}ym|?jKL0!h{hqxL)IB1Io@xg<1*9n|5N9}06PoOat|U6Q4B}`Jaq$W# zy$IoC50&vfgc;q_%Hfs+zCfYLDj*KX-NI)vt-Q!kLbUhqqP6!SqH+lZPGtH(i)h%N z(!RztaB_yqARt&~Ae=ic=DJwtq&iCr1J`6xE{52jl<~FO8FZ&Ln?&raGt+pgC>!P( z_6jP?TgVkS;c?OkqKH5=v%=*Rc=n zvg;);O}-P<>qWFX%scBTWS+tN_F7p^>Jt>pS(J$5FP5u#qFzJ2QpAvP|LE2|eEl!J zjqC5+!l0+L=TN9rQCV3!-tf3(0$XgVCDw|mTX7h&zGRXY!@ z>XcU_F1Q4un*!0J7;)UO&u_a=OtV}mH%o?j(t;!+C|~CIz`oA1weZZ{oTv&Al>c` z$4`P&N?$BS_~Kd(c^w;LVW@9qn7{L{t)s)m^zz0kqDl?dZ;tS-Z@2K@zj=hWel)=S z2RSa5BLYqVf2P~FYqcGct2y@FjE-`YEnWJ$qCluzM3S-G(d$%Cq&V)VE_74IWH>^G zDyxMt+ncV^w0r8c_}0QD&l1hEzy+j3raR)|FVFEO(lH9X6ER{xo+1p39M1~$r*H|Z zIgU9H?aujYp_)U4D6Dd9DRG?SxJOxkvxm$!ZW;)8O7D)in>P|rZNOUZ1!$~e2~4}J zgKcz&_c5CI54$L*zKkBzWBU2gM}V~MiWYzpxxvs4ifMD&J*|6pPxE$9^ZwE@GS7!E zN{4lpzekY|uhnYV(S#@&IOge5VSQX2K27ubqv+$@KhB@0kCT~qOWVC!`lpri`p+6j zt7db>5-xu6vsk&hj`mRtjr)7ZjQSiTbx-KSyU||Rt~C8BX{Pf>AX>Yu!{Qd=`~{OK z4cU-ZJn{sC z+3|s;d_2h_AmY1}8=$UjFnQ-st24mbQkfG^fFCvUc&}CGWWfPn6NFyqGa#h0*PY8H z)YmUD4&CIzFzxPY0xG357a}MW5tXXQ6O8JkDFMN?ZmzH!2S#0Yb(Fp!HqdTcpMLdu z-6q|1O@@F2r>LS^3ck6>De@=>wSC3z36BfbrG*d(^x`T2~k3zMN!%2%1 z?b0#k!YpB4RdILTz~!)g@hbm8ah+Mg-S!kLet-&ioFWepO~>P818tT$Dg6?_!kL&CR4wMJvI$t8}7fZ}o{M@ht5kf{6&NGBj@76!v} zzaBsf__2eZN3MzP$ffn8c1xj{a!cvzTV|P&3(>Mq2vpW!MFEoTK^v zKBju2!+xM!A>5Y)6H3LWGR$R5?kjg}hvud};De>I9cTha6^It9>N|y?fmg2{4gP7d$h0lxNwKK|mZK5if6(T$53Gf*8V&^^ihzV2#wFSteQZ?7$u zaize1t!6+qRB#(B*o(9H{ttF>XSa;+yw$@y@5gwsqgyy4jy(j!2ArkR#I)K!(@poR zJ_^IUDX)Q!b?5~{re&hCW?luJ!MHQJ@-uQzpAA4W47D(|wIHXLrsbA1f0odYi~9n{ zn>-7>KtQZ7q3U*@NY^nAI3`VP7d(tA?Bnzo>s)mYV~$xmL#+YTQqK0QqbB-NWI$bj zSmUI9;HKALM)cBR((XAfnK>D!bmUCqn*-9+`KP!C<3obz9XkhodW_?&vU*I9>E}Zq z0n+KC9cSs9ggrei8D&&?m;7yEa^BM?5$v z_os`Le-+uhKDSF5P9{;Q#z~=s9NWG=&|-sjPWP}*Xs=WCkr|)Z@#NBYfQw;_B7u<7 zq~m)!ws2{yjy5NTZ|wzWOgZT*PJv)fDw;gZo()l2SYtv$3_5L2U_;_5fm=N`R%n`h z-6SA+OS~o&0`!oJk5K6&kPQo5402_V(@wFjqhgv8lmy9d{@8E~H2Xx6XOJvpOl-pe`iB0k)-yO|YtqB)X5=@u`MP8=e{$WsSIeIXqU4Rpz_QbN*5N8(Rpb3Q_w7) z49A+mVFL@bBI=tJWbB3tD@f%Ux=rHX-8~$?w~e^l!iWpWG5dl%E4o>HrYk)Jh*>U9 zqeb=&fy<=q{1Y1iM$=V4GOLaVqC4-z3oeqi^@|?RQ7G ze;A=R&a=D}$b@4@lK}Vuh9mcq8`q%NS}o(t&z;A!VGae3E%ua$<$4rH`14zNy#MYo zI*ly$yG!Vg%5*2dv~pMasVsrYk0+*6X*Hw9mxy52EzmjY+4*k{9+)a}y?;=o%Cj$q z1fuHqF&Effj%`eb#>Rl)*#NWvDOB<81B4lYWbGhp zgP_83QVV!OV$Ki^EbXfaH%0pp1rpNTxL>~dt{%D6N=A``fuYVmkZrs2J zAADfy=FOYf+S;<~?>tF<9^_faPwew<-hP%JPu?xf6P+cK4o7BBp7%$8^hfrI^Dlkr zOLhZ=uJikM|L)%zxYlRP-+JpUY;0`U$7fDXPAt!FzWF9Qd>()BU;Y5^zWXk&UcHL{ z@E`sIzW2TFnSXuWT;$`MPnYOXy!rH|d0u}M&-)Rj-Oi%3{HEzq{?cLoY=E>&FGD4` zEMoIBpTYX`OXwXQV*mOB1aO}O*G`YFT=Q4nc@XUs)5|bCfELCSSRCaEjEhgwF+vm* z2u^ko36Rs>z$-o3&UGR`m{c&xKZk5#g?Ut%Spw54RgDutQR6q6N%?Zn9upuI$`wpU z4~T(c)TbkCWeHXd3}rY`>VpFrtSy$X&587_b{XSjw<~88mLgX9bE4v86ND9vSf*3m z4X5}Ch)=J)Qw|9Q^zx2g_R*D7M67m$!$donEJ4ax{WE^a*_X*^Hy%kKO|Eb4_O0*m3;z)Y<$M7y8Gy#~jQau&n^bd1nFuAtwnvOM)7qX6Ov$9sD? zA&Aze-}MMtyYZGNO_Wyi(v=}{l{MohM6oe!~Q$$*>#eo#k?@#sejQB*nj&04!H;)wYk9cUncZ=U={r*I&GVD<#IidqjMye#nJ5J>Km^c+kjU zRrlIVBQ&wVu#_-Yw^p7;N}to6K|ju{o!w9%njG!@=8H=ltP3&XOb zQ+&* zQ?&UZ?)ACI;X+$i<&7MOwnVY81)`&Hfz`=0@mGL7qm7H)6oc+D$2xtu#O@os4uPiOfN$^J<^f#g5`^FKF$to-S7=dZr{ zD!%x|FXBJ`$Nz}YXoRPpddj}ssN)}Rzx_7;(Lee}_>ceTKjI(%<9}?62Jw_G`TOHP z{$srU`s)_9k4L&scRK#FcwYDPD7T+fK22%v{8T|MNgvqo}7W^7R$0zw{K= zFBNh3M;~C+?6MK+NQZW#1%L(GsOV4QzA5ubfK7|xQnp$h)e!g`6gCN_FEE-hDx({y zPLIv)bT`_AZ#8xS=_2+URfed?pKd2uxwS`yI)BHB!SYYADS)Fd`(?6{)vojrRyd2V z>CB|^MX^R}z)3npts3FhD39B5oe|m0Z$Mf{PYnFVn%s099?cU@7@XLYe(lEOLdL0c zfXb}GtfZ0qMY% z@swjlr9MRY+=L(^#L;e%Wkdko2rz83{3cY4Bhc=C*unAsp@DIxoMoWnE4pq(h{|%| zCQdVxl8M;!#WT!eWHx5n@vXI}YFH-5SANYUv0H0m9q`x6L%bv|^OqJCQMa8iv+GAb zTzMr-C!Y9G|1mvral6k_ztNG z3yUQv0N?E!kj^mYEEbHcym}5_W z5+Tmezph(i*u%~MlR=D;j&#JVN2OKiWF=~MTpzmO48XYD(=i+KIHu@H!l>II|Fq_2 zZC)G}R^0D!%prho-NT^2%W*V01OJ#F(=P#i1W4+Gb~ z$bWJ=%b(}X>uH(?c%ro325Qp0jQC&s+Sl;+|Nh@M@GB6kd_D8bGqxDeuC&0lj(Z4T z>uAg2;UQjo?KRt#e&dZd?1LowG`aw{WGj^lo_zAjB!-Vq_gTC&o#lR3UVmCrIP+z5 zR@h!{-tA|3v_rcli&vh<^3^(Oi#gnX_a0cN9L%*7trrd5u@0M(nG6r8*+@-k*OcQg zK^=A4$GIZ<<*S$kb>t=u)W&yEL~kZ5fG0Tv)zlSc%$fYo?IBJc?4iB?0G-1<^cqK) z=oSkC%3Q#OWR??yCRYJf7TqMyBI2Z;i|-Lg_pzd59af|nGzlmx0+i(fZVV!vWGnQq znVNCyK4kSUP9&3&cD7fPFiVucqrG6r_7-p=5};NBUHNmC6_`%W(K@pf!L!*Fxl<<2 z@Z`?{F_xYl)fzZexXEs>z_KaISsDo81oCx+z;yC3;$(gey^|vpD+P=RzIE1F*KZNx zaB}2?Hk_i{i8-l_P-4EVz8GKgq>HGWL%yP&YNoAS#qsS$rlmx%&3es_kS`BVS?Y7* z)dyYj=nxd?11$E~JE4tCVU#4ni5ky^bsDymceFsMeELL5o0E^zK#Uxp5*DP(wTqjjLAOahi^9b^ zN*5QADY8wOcV8#$&rJf!!xOBol@Zz%Yf6y*`NIGPM{V5t%XiVZdEff0Erdeqb+y@k5BN-<^i6$*tM?^zIS(mZ~l0KAK#%%FKfMzR1pJ2Q`Zet;%aHj;K8SD@9 z7{ocO1?&?9@p+Dc!$}tHDf=JO?^5SddRpx?D1*$%gacx(#PM&bhHzyOQI!jnu*Uqz zZ{l0xEWgZ%<4KzUm;E^87-zS7=y8DZo||wS)ebX3a@fT?BRPj1G#(tI-Dn}lajn3GycQCAq1(O|X;<-aOcIFJ;$2EN zvruF>Xt6$ZG{aSnnwr%i(=C3#eSmI*0J^)!IY>8gBpV2>mLJn&`h}CG`H$>Kds1T# zIKj^=H-I|w;42Nn<^kDRZXd^!F7oc8c|W3ge`#}?cmMu<+l|&4>D850{MzfkhX4GZ z|1;kH@!NRg^KaPV;lKX*f5p9f_v{FVfb>f*y=2Eg{^BqG!j86RLGj)1d>74T({{Ko zT+qvEE)62Zp9PRkQbW*K!OBxFVDs5LqI`h8 zTVylH96?r&6Byy90kfH+PtythX1mH#OrOAXoUfr@y2_yQC=le<#`lr8bJh+#3s8H1 zJ`AN}zgfh96M-gUoy!}xPtZNyL+AK_c_(Nt=_`i?mW3v2ZHN%)Gmv0e{U) zpCyHEZ-i;TRB}|Fs9T)!FMyozf>4t=A)9u{Qy^O2obKdZeba3^#6tE* z=$;%S!}Lue2WaYby||>~C4?IB6piDd9q*_x-@4I5AC)=S>l3s@s4&kf`3TD;PPE+! z`-cI`bBfAJ-&B^s!;-`N>Ip#WxW{(IdeW|zK)t}EOFoHdv&Lh&HgYB^1KX4}vvYAZ zLKD;J>{4pV4Mq)XhZ0akHSW{-EqHX{tDN`w*dS`Nf_7y@4OZiRm zktqE+a}tjGH%gL`qJ%NiWbn#qJ}EQ5UMIQO9K*Z&Tsgi=r{zgJADCQarjqXXjvQM* z&MeYPg{3DJk>BD%(?GH#Ia~Snhsbt2SP_UO$hN9ASLfb8Y~kj&-$rluh=I9rNMXAL zMnW`LeB!Y!g|7E^B-`L9P|jFI~W%R1kgid zbQZeYL_IpjR-wmo8DlhNzh_u|L>O_*jfXjOj>g#ku!-hghxL|6ZEYE)n!ZlUF`j_F zP*`F;l-act0Il)H4dPTx7Z(r1o?euWX<>TkWc8|R^!g0~==?^?gWed?_(vtLm7b-C$Fsd z^U)4yDlGxt*;&KAgJtGd;Ee;jjp#Ysy$wrsR5mW4PBkIQAN6!g27x})vJl+BGrhmW zdaSFQ^q;}rVVe_ak!dO8+u0QiLY-688}1j%}_Fz!C=-14IH(Nnh1aV!S;1PcC+Q7)a&UfQiZVgMcr?bKJHefsE$rRzU~Q#{A_4Pg z7~9gYj7o}X}-t6PS?KX?4 z#`3BW1P4qDD@^H{ux>QlGr4*KZ#>x(p3k%6OR-#}3uj5j$P3Az%%^a~nNq|uGR}<6 zGO}_b-x6R(i^JKHIxyYYXQW0)azQ=(>+3?gYSO3G{VEJ+de}TqXSsQM%D;?OD5~#| z_HWTVU(zDukbmkTP%S+rt0+#b4~4~2an)4|P}r)nJrU#yK-q$hZJ%c9P-a)D zRCE-I?($EiK1=L`xIAu* zaDR7g=2-z6KBTs$1!`{=}{jc zv|BPX$7v@!#zdcg3^?BCe&}d~X{4_Y4!Owhq7=4K&vps$xjBO0#nF#f!5DB@zhd5nJN zfJ|027b^N#%aEYCKRCp2aKbTAM>sfFTmF^u$Ml$f`G~{T*|&E10r8=M@e$@UeHy=> z&T^Ak^eDT?%g_5u^SnQi>;lPlXKrG*$N1!VId|0#OCwP}9M6~C`w@xvDDr;Ol;(Ne z^Ujh#i!ZxqUUr_&3im9(^K#zoN%o&+N7{$*P%1e))i$5O!udQdJj1~@Q|8#dMUc0~ zf%qIJg$o>5H<1Z9IJmFTy+S_(oE*drRI{a~cbBIGqW$7|jKVbz*iF<3qRW|{ZDeTz zwoMP3&5!v_%t{n32kkPaQTIN8?c#EAq?<8vcEmuSIzm`*Z=u@@f8#6)Q31>2eN@IL zmN%9fnympR*AQ*`-^-U6w%VD}%SBq?K>SeKI5|!<^(92*3KiqAYwf6Xj#}rX6XnuF z#e`bhV_NmW7406|xn_lLy3*{;0wD5FUBH}bcJ7$riR^A(88wqpw>nBdg*z@X!b1KA z7K2+jJm_FrT0p?^&|T8ik|sd6@Ei>$Xq}9xv?HBEG4ImSXpFfaB48pgs1&jUMj4E9 zF$UEk+Jhk%5(Fbv0vx4R?TwSF&RpvT5-mJhC%O?q>7~1B(GVER;WV*SECrGSI(n;JIMXFnb3Wnzj98UAs35X)C9sBBg&y?T>WUyKYm z-cNKZh{g>Yb6D2YCj{Nur5Xz7*AXpM(A?i)!0u&Hy9>Ivi%#dB-HAWd7b&fdMDBOi zb{^AX`XwSxuVQd?w;oT%!NOXAC{q7H$mqL)>QefU~rAww0|3LBUR|&Y|0Vc~CF@>E*mo z_cjv@>w_sQHkuh9!KiM>5M!Jvpo#_-<86jRu)}<{IKk`F)`tXy-BN+zHHkA2;MY?Q zf`v9^GYcpzEFxdihgy^n)r(VBNK~_{xYR2X-M}>S57FEHA< zXn|6Nt(4N>(oC~<~2syv-F0zAr*gax82&4<8VzL{@d}yPXWiaeb zaCA68r#VEe5~4uRthN#nz-aerG#Dcv1@xE2Ad1n92#^b$>wA5Bge^P}C~ev?V|cnF zJIIIVb%yp49OZ$zqm)2IQZPnVQwFBIIhk8YW;?YrJ!VW~?LP%0u%)Litf2RO=Uf z7Ql0h$4q>TdVCY-%libTY>!OK)`bEtp37jF;JKI=aAyDafQ}iBb+-9~V66~bgMjg5TEk&x9nERk zj!w9;U}~vN3L&ENYgm2dX%yC1?3SRQq8Fz?Z z-7z%X{4>ss>=?&1V*c|~1;lZdHXsi3&Eiu}qVvgHCY zT!d@Kxqo;EgTWrU{Rij|_c`7=0DTs@*72Ag(=Qik%06>PS}G0V9%W9G=g;f&GP zJpF8dbQYD>r%+s6#D(WZSUb;&AlE^;!hxQks@++jNY(8iN#zJgL)|UA0)$&YbcyKe zB0=+I45nKcjWvnH=#`#e1XEN;x3Mreay!rhn~YTFsI@a35UAzD93rAP0c#!o&_s0S zxWV1=@*ba)lZ>Q7gWFdxBA1Mnn)D=~8A*=5}=*CpNuMI2ln^;Fe0~KlNzVCK6W{ zw#z9@K;7?Bdw{LXny!Be8F*m+X1axv{Ag0MI5?RqKRQA}K&zLg>d`x>XWvG%*~dw@ zfQXBVd@+ksAx5b*VV-n@$&`S2jDy`i2Avp-3wadsIzOGkg{4JoE>=-1g$$nnfD4L~ zppT(GA)I49gal7IUS(+tSXV4x=F{%`rdz5swCQlMhfCy?cO4eu8QOqG!>tj}3_4 z?!0vk$9MMhQ9=1)u_+7*B!XVvn0iuJa_4bFz3l5irP~R0N&wpWnw|R@G9HdS1Z}nP zEj+Q&!MUd@SU6t=*SaVb9eDN&Pvuc}rN?mw2PZM!{ooiM-s@vDSx2#SiDQh8Lo(A$ zyJVF(cWaC*u^PI#nme*jgX{eBaxsHd0`zi*i%We~hH2|gOO(=woR}Z}>z?gNF+`pK zdimw2P``Q}*FoO}sjTY4jv#6IbeHy5<4`w2k0o5d8 z*m)Lgp@)2-g=%z60NudCxQ{Z&haBtZn8W@-H;bK4g!{)i>>TFMXot*V4)rx)=~9X5 z(d|QHj-MPe?L#bO_Hl-bbiNC>T zxH2Kup8a)HHp+PAt38~%!byPOu~;o~GFrur8!w^Lx=K(NK%bb^V9Zfg9u2$+a7{Hh z>xhNEk~P|+(+vzcK=cG(a&A9 zmkRYI!(2oV9Z(NAv1bLOHCg3RTv%dK2!#7hrfW>VIm9#luVHg=gA?-vdxsr6@7LU@ zp;Is0#|{`FW6NPQV(zB_4)=7s$2ru_U!}Ut@Hr_DdIn>&Rg7|~KdDP=~qTP(hT zGbxHu-rVWO6b0-&q>9UU%3+pr%Deip@|}>%GXVzrw;uwFY<7rJ?mg5p-^FBbjAmns zUO&LXN*T5K1S`uUEY_zem2(uIqIo>TwI3g&-yGq|Cn~7urVdW7o8@JKo&e(^!S-N^ z9p>)<1S`cUhD^_Bn8k<-ifpXo9bBB~jeh|sCL?Cr+Jh{14>GuYv&RXw%Cs^4+TCNG zvfAEM-ZVcmXdYWBXDF1F0b6FFJk-O#D+^8qO#zs6zDIgb`@gAat?Lu?9fl-r{ zoncs&P*3bm)VYf%_Gycg?#*eFrzGq-N^`9{kd%5Cmm`z$LZ+V`*2mIA`Ip(*?RVzH zaMNO*((bfOLISRSV?gD2KhA=jByr0?$gfbnVOz*gbowl)5NPPB1*Yk4qQw z*m{!fjp??d2W(GLYFFAf7>%=N^`_WA7~<|u13P}797K}ItLvQ zL}yy4OnN9$j>$ql&Z5CEj|L$Z)H!szOe=XR=ZIrlp$NNAdQzZ#xqy5%LRhL`nynxn zY5e9G!2YjyM1oQgQMJyvI4-iB^p1sIR;HtE;W0>RL)`qc|2MkZ*Dbv&!^iZP{-%+J zIqP*_{f)2U_kQp9jQNw21`iE*UjIoc?e9@xeA=)-PVSS!__T3*`zM9>arCG#=V?B! zkMk$9XkKpKkEc)LSKxVjd;5P1NC#03tIvHAD^CK?zt+d{dKP&CutJ4^mEiU6y=QR$ z-YXnvYaDQORUBsxOAf)C0Y#=opi_?vr`k!?r?DG|qbBF-YgmilhW2v`XcE*75)jRC znyOR?Y&TWe@w%&8t|v@)UwX z!5)3aeddD;gsEn1mA?T#mA?v3Wk3T#szXtl+{JdfCT>mmHeoX!i3<4ZNQbVq$_lKS zF9x9>`IlKnQD)3ZjEj%S2PkGgKrlHppgiaZNKdh_l*dASh{c5wDwQnC70$#2_pRd? z@4j`2Q8&iZS8D_%S=3lQ>jW}7M;>#c)W-9*b_jKD@X_X1f$H2AtA{u0u zZbhgtWOlA(h^c=INen9SW~D=$?B0h06R90hX12phngyz`)Nh>4g_-CMbth5C19_G( z&rW!=Uy?*jn{gb8X(T>IWe|IMPb(F+vKXgr;X0o(9mUDCd zSxRiGxfL#ume_~v91rV_olv3ai~7U;F2=`QR2Oq7EfHJ`L~G%j)eSmh9Nj&@(ftEV z2kZ~#D@|(Sr{$~SQ<>|N-`a_G3rFumCCWd7XGNUL^-zcgSY7O4W3`KjW5mwQU959q zUtba6mn_4UPljv#mf-fdF~-gzu(RLC?*1MI1hVDIImWk2S;m+2Rf|=9(fm_4#ecOs z8WtzVcqP1xjba9sf;JKKM2hjyPmgVXKhEQ=&MFSG3ka8MSa|9JYFD-})k}nQkB8dK zVBsqB^4H>Uc)-ZoGz&nVG+AakL#}pexlr`14CaZ8nJK~ZBrg!na3YRjQ5%&ULG-kZ z;$#G3dmFFX!vIZ!;lm#FUTBL5jW?>nLX=0y^kl;>7XnT8=@`Z3Dk|%Bj9K=hQIkLTn3&$~S;jgJcB}dIqcuGy<&oLJ%`U0WUsNc06>$u;;s7G^8A1u%(bjceGDH|K8)I@FfvU0-G*BOI+nTr;t zRfiIlVoSet{UkbP;_0N#$?-lX(6@uTZIx|XIH)RFr>q;* ziG1qi%pjr+%SqRWX;(`wEI}olzp^K01*AauZyb*(jc7K$`|~p9Cn*dUW}>8t=%zOB z%$|MfM`@8+W#!yF-zit#DW!swn%Sj0ni-9)AIEb?7`&b7QT!$*NBf_V#C-b9$X}mD zr~CXUFfS^DlXikmmnOdb$=N4cl_Q3!nMU#{qfUl)JF^7Hxq86nCx#;9KilYpi>JYZ zw%uV|TgaifCqLj*PKS)8Dk8!FZSB#SX_FqWnp- zg$&0JRhJcj)dxK?iH7wBpz~a;voGfgZT9J7EM-qn8*8l8+aeiswP@%Uus6tKpL%B$ z*%+zw)rh+`hUPhLAsn&1SdSU%1kzE^V;TqSuX;a&V_T(y(#i@7OUrgYzH39wFNahu znymY1Jk&tUxQEAkIDGfpIQj5x*1JCM?#kpbJ*K~D^hhA>2CY-_VC&=PliWpT$^5MS zeVXt@^Ldi_QThBdyr0DXS#qC-C$r~y{=EAc+NbTXlEK=dXCg!PxN zVC%{Rt7|}QF>l8$a#Zfie-kv@YZweyId2EVmtzjL0?Y}hwVf>uz|ytrq1!I>f}K8v zUE;uAM8BtVxLK4Yw~)^aISsIJ(@%kufW36cvD@9+kwtGB;%5H>Cl|)YFx^#jN(Uz_ zQ#5-J#K|kLPls!FhM-roTeOI(?yZgwp^udG^qK1g0`j`j=e*6zl$y>oHjeZ~!UD2+ z-5sropZT$PC}0Jp_+4JJmS-(A@&@AdRl*=DBP!Mjm}@9hm+emKVs#by>LU3yhN*=` z$ccAgV4P^xYQR##iG3QA-)mynxy#x48uGz)gt-GMol_KEB1~2JP{qSOD&-N1MR&7? zEqExST_xQiy|>*#wUop9YJng|ZDfjaUS*WSgykm{(mse|D#oAGvAvMQyxHUPG0_L@ z?tHf$W?|jvzHVb?24 z7+HlRyhK)MH6^q2=iH=;Cs~mUN^c@-b{C%Yh?zVMGbPQLrJ0OKfXj6KIJ5WS{3Oa; zk~qxqbj+|cIO9V+$Mm|H%;?zsQ5MX6s-*dN5{r_EDVuY4iEXyT945fjvZ^N(CnJp5 zUczaN>Pmp9MhCV9d7qBh@An$mzqv~=-8&6hj!F1Q2|R4llcIc`AX+aK5-rk$fpP-8 zFleGyKE~$C5&r+|{b#VG$$1`#KIMJY@ut0*=^pP5FmMDQQlvcTnQJs?)Z;P!h?R{A%6=9BrQIkq=nEyL1Ze-LN;O&NGT zc`m^F7lEtGactFMoFwZD3)^-qg~EGjefsF~-UKG=XYquz_5E z1?k=@F>MR8r6Q)1x+~wD+Jv*kN$}P9IM(;whq+HYg~Fj(MAGhlXZ7)#FjzfeKLO@d zu+~EJd=;IGTj+1q2%yE!#lz~bNF5)$O{53tX+Ly|Ks?=IUR6*^Y%+dj;S zS~rc2P8zF08WpMo_KlXFZWDt}g=N@apOrwekY&4WGS+STBAAM|*sr$OCwA<7!_1+h zDDBygSSC+*iWSF-7~3`5x7xE3?amRfzi8G_y?7FfuRe?F93e zuq^l&C*V&cIUolEtS`15IM#}^n0YVj?aOrT!xG2fJrE_{)G zL&y*kZ47WocKYqSwcjD12FRU>GnI!>3^R2eNK`0(#!s@h(y!CV?gq2a+{Zz&CtRbN z0r+_7KU6w$3bh59yQnxbi>bnp)CiMZbyV2b9F;(bK;mF(!R4g*r#75y5 znM0b3q1QR`laE1$=^JO6r=+J4Qi5^Nbae^$BHwEoGwGP&=uA#hC zwrw3^CjLGQvC-ttne&f{vekOFV%^Ma10?!g?2VQ2U}hbAVin{g4J5R3I|z_Z46v^dM~eNG;?UtlV2cytt$oMPdgSBC z-G2`vIlW});IM7qQXaCt4w^kQmo~6|;tJYl%80BoO>H+Ja0RWrai_K^-Ts-Lowe+CZECl-UB#v_c0VE*mtu$y6hu+>Q_`=94{0%Ul#}Lry7fwaP7rs zv2p5kbjeHGQJk$OS5}U0w7Elf=!cbV0MZ}%$VaYMdNu^F9+gGje%RfxTC|gT)V)ah zVSe6hCmQv?o4Zl-Vf{{OAFgQBO!{FzqS1JWyk4@mAN98r4f7It^={^(QMK0(n~O%{ zHcU4&^YRA=((*UVH-d?~4`cuRC5(-=F*TbZ_+p&MUoq3(ybeKTt22RWb(Wp4_VyAw z5m<^1Q|97A;cluB;-X&Z(xV6jvgO5V?4$|Q1_@+y1aZ*?4q60+beCWaw^ixTn+E5# zeje9)2cfI;1fcCoIhs2FEx;tb15g^!Vg%0aj$;lB{SMU}SSTig3rKTt(yFwEjEoLg z5qKIfR1}#KTX84bR62##Yc;whU?y1Bs=HEW=@7y+n6Ka!w!po%Y-q~~g(ej-9f;J@ zUyQ(`i=bIIz}&8G*~^Rp0d%Kcp?;Hkis}aKH&9={O7kUTOLZK6IE%44-H^fjWneKO zR)*>x8PaOBuC8k%R~R78d`x8%wsI$-=vK=C)|Z?1$@lPq0s)3TKM!oLrzQ{SREGJS zAc&SoAsNXao18?wOW@EgGwvFURS*Qy%wJoTRxxq_wv}n-qClsfjMqU?4a~K=w!c`; zghIce+5;Oi6;UNb9+F>`w!*l<9f|Q)`52jn4f*C&<<6-EWmgC6&)iVn<|%RA+=(Ig zp@~Z%RpvHy&#xgk@;|{5r$45@-Qo}r(kxOkfqv|WTnv@ zyU?UmYjws{$%;Y;&Z6T?vw>(i=a0&&PHCfyXrqs0y6-?VWxEBV3shDs*tojEI;wrW z&Z`sd&#A~)Y75-;6>1}ir0Si3t=e`SrQ8~(#@7g*H!xmYXZ>xkZgXO*Tr;nlo;f+_ zC9%4dz=dlAoI2md`D;-uZzRzmsAf!=5AN>uc=)Woz_gv2P@NSMrO!n~F>`T~L@+oT zt>V#K857Y4;;O^6Q%zL0E@hL*ax&jR0_%}HmP+%$V;@8R_=D(=kD9s}R8KD=u^B;%fY<7uGEEi7M@DTW1ki&N+e@11&$O6N{z|(t@;YeA zIJJW)YP}Tuz%14&bh4zcy%+2Q2F)6}>^CA^wsB2(lstx|XTgJZ13|0CHr>G7bPRjv zrtr|iPh$SS-H2y$;UpOZ(sD1Mh_M8f{{aE`(gM@+3RYf!0WD7OBjo9F&yfWcitBWv z?hf6dA6D8CNZ$&;?Pfo0Cc2qhPdoYb>QTR*c5>@!H$OX>kMi;QVR_iiFb$iJy7PJ; z=5BHFUSso_rD@7UQACiiG5GpgQIeTU#QPJ0}ciu~W7<+UUzcW6(pt(?V^1nFF-0lH*{M zC}1qThHRu_tI-naM7X_!eszcIyR{jVqX!9a(_|^|Aie^y0<)6oPH}fbA>-m!j1{zQ z8A1isLBz&N*H+GTqX2&h5}BvU z2dZr)%7<%lqEOg&H?&4d5HMHJ+FCBBFiM8%u3$ ztu?T3PY$!35Gl6Z9)FdGu|5HH4^tdei<)$BWbblP)a++)xw4LGSFaZ;|CJ1e$#gL` zHVLu4-qc%Ov0Q0NkR))n&y~b%uxV=MuyeyS|y@|7PI+c}6*N~ZO9wf!w$wp>D zm-1t>gz|sLZ)j)#Azx>&vhr%@&hZVy@b1mxx|x0?h2D&$wl*9ZdMnRczD>35MBEIq zn96bVkg2} z_EDT+TPC;@b?R-bUt?WZt=hH@^Jf9skJSw$>Rp<>fsA4VFM3 zK3it{ZnF-#xC{nK+p^K?r_kwTQLU%3xE8~?D}9{50)pohnjO|pyJ}Gxptd04wpHo* zc59#F#z?7MdJt_Pgi*7yqDiLT#Dlpi_QmT8UEa*TOVQzExDqMhTDO4p;v5F|K8(ym zkE1^|gCNenkIckI+orlTf#*dmzjFagZ=XT^{1PIS02!2!jOAS%$lry)U)5W`3QeJH z9Q||$ajilpH!&XFL@827h7(h@qgoKd=78}atgeu25OJ&SIuYI7+C-0&alO8%EOBXM zSXMt2R@YYej~+i}4&<#L(bZdw2z}xM%bsBLF=xWAN8)zXCvd%hmH%#7*S9=W(FKDvd+DK#qOdrnRz=IPg?MWh*B0IwjiVM|BuNe^VBsoZC zd&m}}$P|+th~pG`!Z(g&hG8=u^=c1`7c0!u0gm0xfjwnR&>>)oaiXF$cQlz{xy0jo zF*3u!JA-OJfvfc;v<88Jwurt)D2+#iYPT9MXWHW7z_dVLquJ+JuNEfy$KS2gYl{LWVG-R;9ZOgBS4%vkwWNncKca^=L}k%3@QZAs~bsNS&ZWHLLVyx(t1>+%lc?sl@<#|vfJ8a+q*1W z1<7A29G)gQ^U&6;MM~>jtcv?GdTgZ!)^b$Tx3aHXBY0iF1gc{PF!AVPn0x#YWcCtF zrwQ~~*Hrg|Mu76Q4J^KM5!YTngY{Ea(OIb=(qvipV=U(hB%=j}>*~Dn#PUUx2H{}4 z6PhMzhHQJG%P49ubhLsz>xuHZ)n(e*7S{=)w~#|yFCI|qRoV~1NMuSm2A@tvt6lT<-~iq z^4)KveD*Z@Edgi`uSM5Ycjyj%*on=>4Lkn&yJ0XT_3!=O@8KKY_=cH%<};tcgAYE4 z-~HX+#V0@cNnE^m5x@M)zie)YN&bH0H+}=l%gYADbT{=s|L6Z46B83R@V|k=j>)&L zUEO^^+KJEi!~0fzq!!&Otef!}m51q8{zRjGhwX>m2^hcd!V3nV1&#&Uo_XdOBoYKo zL+(TYJID`y{hb>Eqp2(oe)35idAx|pu?i-2*odHZbG2$$-zBr^jAQJC6F7Hz4|?$* z(+JJ@Xw_PvNx()Uw}b`~ri*dYm3V`J9yIB&gRWua)O+aGD(w6jDuIITKYnQbG!Dj3 zA(!Z3k^nbH0N*5^SDFX#cKsoAIj9(b(?BVpW8WqvG+n+963v(&TIucf zkWObX+kO@IH@}J8pvi%|h3s4!t^FCa3FLL)rpL4eLf|An1h+|o=rlohl7n%a*`8psV@$q;wtHwhw?@XR@2%m= zJ4?9tND&8^#xCb*2hZ=FX=cYreo5)4Os zG=m_=I5F<@(`~ewv3&xjZ$O=EfrF{SKqvvS1e zyT~gPusPnA&6`HP^MHImxiAGyn9TMpD1y1$C zp3=#*Flqzc`%MrXu>*rN*0qZ*nm1_1BGhhxJ}0(a)G>3Q$cfkh&1w_nl`5JQ9ZXX= zBA-U5S5BEWByFd%i4_Y{`0t<<1O)RvH$|ls?7G~w*O0(^{B17*+{SR4DpJw78$*tp1vVscx z%B@ZpP5Nal(VIAcvHPB4TRezZPLG)|%T)KfdS<_gYp1Vb<>De5n>AK$&PU^C`7BsvYa&s)s=K@g7Io3hcdDZg231M zG){K=E%d8pG}o)p9sS~K$yK>BU+m_Os1E;jv2Qkxk3O;ohxQcRb}$0y0l|2WGpgDk zi)MrqlsLnp*K)Om^C!>Y!kh1+y2SCHV}{Q)N91dCqv;*GLmy_^achUCm6a9zyMOoZ z3Tk57H-QwE>~ z&i?k_{@eJ{m%fBY9(e@6{oB87=Kt-#{Wn|X6c|5#{5ZbwpTB_L`@eqAJ~iu=MbQnN zTSy+{4cmF3II0#&J?h7s4ZHJnEB>Cm*|6QH{$_5x+RLM6BCj5`^LmlYy!o(tG)yl` zyz+|f>;&$+?>@`xrKKeU*R!*;+itv{?{7s~exn#WdK~i)9Yk@wMIhU?EAKX!YS>(^ zBb7-iLTEO7*jnviV|~`11&2Vi5#w*Gr|j9qPH~dLq9qV0An9J{Yn8Xqt=FhGlw^RS zpPt5aZVP*g9S+0<(FAxWdV6uQb3eMV8S>HUljHBw%K<_mXjRGvRtehKinIW!mUJ1o zg+ZUxbC|(=_k9#%Eo6vF>@k=eK{SE1J9HSOI}YS53vp6XboC!GBGwn1WW_KwNLqPH zRuCG=lv2fuyf`?wHrKFv=3P`4FQVJjmJN=&eKN5;psd>pvI9&W%3|L`lbAeQLNZVP zS{YXw7%vMvtTtAEI7kx5BU6acuT~CYjBALZnFn^$h9PQwL5QJM=^)l=qrmj(@MJO- z=LD$F2?NtjznVDc@Sv_f>oA|n-8RJ3+v^D7wu+V+b9H7NsdDrO{2-d0R;H>@9 zdaS|9fxHBuqD)_k_PQBF6B2&bEBnKk3ciDTr)J!`k5CXgDWDVm5ZChBz?AQwC zCac&p-JrUK=~5dL`3}Z%9Td{6+exXrn8*c~E(DkKe@R*`^Z)z@tfo19#&qQnVvj+3)!V;!ya6;{tCL3@B)iW7lM4`cZ*CQCic zP7DarfckLlANOmu;Ks*AcC+qq$Zgh-QE0f+c_QR@rJ5ngDu&6Q;+G7x0Nk zXITgJfRfxr(djXbY^&-+Q;8h&F>SY-TswamFMj3gxcJ7~Xl`uTWS=#io;4t6;lzm(n4Fx%g$oyKYk&aO zQ%^mG|MFk{3x47!e!~1}mGj)WbJ*C}Fi`zFzw2UX0-Br=+L3>;i0nqe)dSm z(nZWY@-PZ>5tNDq(pt%4G}o?fA)8C1IFWOmwm@1#tJ25Ni_EZ})`)E^TwEyh#~3+t z1CJE8DkLyDK(E;(nBL^T?^bDbkWTl*HjkfKZwz0;|0W3XQ0oEX-n>Z@hE@Si3Sv1#|Xr^a>nQjwZCWGLF zpk?}S4tpP%#MF@zQblbAAs+!@%RkFxvK4b_2T1Da?^4XRz{CiOwVzw))^BMbvJLez z*FMe|db*i|;9FZ|+`%ZuL}}yb8qr=)f)l&ejzVBuLnx;?goXkES~bS#~txYzRCMzdXg?QKL6td}!yh1k0 z6A7nQl0_zm!gB~U6f`j-$)R8V8_o#>asJibLbWIi*6F>Wct|Zvt@d^3%n;}voao~2nI`5+O@h)ES`2fL zWy}efQ6u25G0p_YX(H)#e3Sl{FqK=y{@D)pO!hGqU&BHAJ-&B<`wvA3$f9`az674Q zFODZ4NKsDX(RzbP|yZU2oBP=JAO+5snMaEC= zSf^NKW3dJvo@n4W)0h!>4c*ALmrP^tlb=9#{t)9AVD;KMPQG*+@4tKo3uhNlTdShq zX8Y9&wE7(RHIiN+dXi;1BH1`=HqN!ogj|Z zAc?Jb0p)lR?O2BGR9_m^mI%6gWtQCrs;hN^Xtj3+tLm)sRkLDSi*W*TWIl=?e{u%L z59W|oxct*Ytt|p?9WGAkFfk`L{eB!*udd>SZ@q}uzVjl=D;ptzcB#3MM)fgPf}~Eh9)m_b8}c& zSg>+b8R~0-C%F@^?`K6?gGqk=0H%%~LSB2LIWVU)9DeK-zdiw+o|Pr|Vu!5#zpW;) zzFOqCF-bks5&}AlwnaTu+pr?UDLzD?0?mw*KJwPqR%`{$UNfT`9b&6+(5>YUVxe#p zOR4+NOOU@qamLey!LW$v4KVw`)xdN(y4XOcm1P~EqxrUAv7#pF)Fr1MO;=Ao?O|%L~+RF7gIJc4jNrRBP2)hYtnJDRBTNFXpYxoh%5V z>+~25^Gj=bjn-Zc$Tb3G!DiiIt*;H5a41 zmrhiYl5GW&O4&KRT*%f7_b2kQk&+&|H!^>rUh2@CP8dI#Db^vG6S)cXA~SPB8uMqO zOAuT`Hob-M;wmOfD{Lp51W`?uNr$!)hJWIR<2#OUQTEF&#V2;lWaLUm%JJiu%3R`A_dD|q8X2df0pk@ytLqrmtxjVy25 z^1*i0=LEXbsWVRQ3P)EOp-{OS4Xa5^lj^k=cpQM1L1?!vd&Q6)71WuCG2Hl|%}GKH z&&;)PcU~ac&4hjVY8y>*&oQLt@4>mVOL*(~6FB$QC6t#c=;=~*wHu397!P_>OHh3D z#JToF8;GX8%yo#@cA41>Ti6SSr z2}Vh2Wg8kak?XFZUn!%!+G1a>_D#O3?xoV`5&P-c91foU1_N%{U+eR*5zHGpJbc>19!}0QJ@8(wO zo&1f;qG5NQyqRd&-Oc=t+7G)E4ZHPpGq+wp>SiZDUfzkkJC&;dv<72+QIOf=k3VjC zKTI&4sLM{Agqfz(4v9W?V;|W)9w*WYLz{ha5 zWxoR{9$2{nN3sLXexPFn$%{Zn=uh!7?=BxB1h=K$HSCQqArQ0kSeI04GUOcI%V9BszCtrrY+@TXQqV`CMq@(P01CjHit-b&<*9fk6?S4*+e$fq3yj0O}P zg4lq7q)C8TA)u_PS}|Q2w1X_#ogA8-F*Je+%0;w-92%Vh)fp4jW){^}78|uRmNwJ4 zw4B15=i+$fbRKVBDBjW|xMWpQ$mVXbp=MBEzXPa@JnI?8$(WtkDg=^-6Wk@V#tsk+AW*ebaM z>!t~|d-u4HCZ(z$38pcNE6c!ZCz|+^=c;(?bQEj03eAaOdW!QVErF}t2q4w231oXc zPCPp`8o9&866)8S+S7<$#lX6*a6Nc+L^tMayU@11If*6Ca5HG2z;;-~2Ido6_{e+@ z2eSbu%^t*ygWzfm%PgZan;D!uwTi3fm(Z-V?aDu^h#_xFllchChH?}H(eZF4TIQ;} z>?5=az5P02cq2zXy@9br8M!F??mnkvUH0S5&pPv~k}9H;;EW{X;aYO->mtw#67H=rdz|JaH_CyY^_yOPAAjPViN(HpxmL!?9jhfmW&my!yr^ z{PEY`z{Sfe;n|s?Jfzy!eMiG;N8f95hkn$_SAS2w4tVnqbDdz9;)WrA*ibYK%tXzm z?v>`$d_>-CSQg!mUzO?7;*tS8?R!_* zjk=TmgB~_i45FzV4t?sA7(bH1LMjcIJHyf)?XII}QPM`iTH| z^6tAZ_27QQ^A3#Leq1el26V?kj^4GnOqu+(x0159A}BH1Z>SBTdMw3*F~vk+I))DR zbza3sW6zqJiOxR3yibPP{HVg@noz7_!UPhLyIKcF%J^y2$FVd zhq}jt( z*=8(RX*O5p($X(C<|1@wWngNGZKniY%I}1pPY#e~zUOrpHvwcjU_P)eRclONn|0Re zsJ>K$lM5jl>SbnOZ@0rRJQ*qSq53*Wqsa*)t%#FcX@>FImOX`b3}1&CGqD; z1XE1UCMUJ^P7>9An&6DUy2pu7K)&>%mpupl7TeqgvhfW}PqdMX>j;~!p6fvmA1S># z*4G^CL@E`faCIa@eS)C98%blW62ZlVHcnq`5TM6VXZ`PmE6x!D!c=CQ0G}Y5adii3 zHF*o{pl{Dsq1|kF`>?I0CzPesk59AO1KXSbO5=(wbSL4n!wVzFH`Q-rE?LJcMY6BU zv0FGgTf__}$*jc2M%$dUXSm67JX1;HO-?+@y_{pEeq=kWP*&p#$=9*yAdOU=&>qCjb0095=Nkl1Yhej!1$fMnA+gK_ZA0OXdw9=P& z;htNOFw)rAn0>{pR4SnR4UPZ3yp^3CH~^0Job3%cIbu`>CvqnUe>Df@Ky_NC(`Pswgjkc6i>*?1RQ{Cws{|`5iV>UXM?V zTX|?@TIB8IP9**Jvm%`w8^_eWN0BXc37mWO8M)ii6TN)`I(E)EJxanbwc<$-&?TTP z6M)q=IQHnknxS0A)en9G9Yd?pT7@P8F%Uh_OI%$J=2;FR1p0cUL}q?46k={wYE-A} z9$LLX=z)ki`TCwfs~P$pYI&mi&?wjJuvj z7noMwXyutXLmn}=@+@I_=J;#>af*Hu8JZdJqmVrVwLis!vcl37Yks`t*1ghYrMW>_{B<-;>4z_hfO` z;Us3Kbu&(%z=J?$v&YF4^_)QT2vjBawQ>yiWoDpn_!6d8zsS4`^WRqUSqE*4gY>GW z5;U{bc^_ws-wg@dwo{B<{S{x;15NPKs09Tq){0o5Snrk4KnblLK`+ZvH>7AgMK@@0 zqFZ4(HIOFSnmcwE#`YY+(sCPH6;8OBj&?VRfa&TYW%?E;I<EHaDe-roL z|A1YBaq9i|Z@K8Faq_SHmA{I|AA1Z>J^eJ!o;hOx{OHl6_}~8d|AuG3@$3h*HV0zTeC=Y>Vp?{Gw!`~1gcOt2W-QP+t8V$qicQY4_@)*^R`rV0ka81e5 z6g11TF18zbfve8J#CLQ|7lB`Ms|*A>T&FANG;q^iPCU@!kS5tyb*0w|rdE_FqIzLa zz|8W*Y~9dEv)G`6BmH+!Ol!X<^~zH^N{b)WL5hAfK#Di5Y%yISg<#l&S9$XTz6MkU z;%@%X)(j`xb_<0~{*vvX78A0g2YHl4OKlxV=i>&xouR^zEG1}+8$i~f zK@FtJF9GKS^Sg^UfsKMweB4KUfqMBQsOTrq>?8<|)y`=~cb0Yv3&Uis#0q>1Bt=mv zPjZ4Yi=bPi<1W%!4%Gb)!xEg-zu8eYr9M zW~v{NcV>3OTE)@H%1h%J+8b%*o?#~vJ$qPa&-{R3IgLji%;B+z3wZF}Ebcx69NyQ* z^yC2Tb{{9twD9^nHC(tFMYWM;9_dCJ&s)ru=N6=y8<|Ei@fO2sCrRaWBr_N?G!dGK zD66(OWB!KhR7aIF3SWmt!8Vzi$ssq9N2ks<#=KV>>IO{?D4Wc0f;mp?jy`+{cRzBJ zZLNR{rx&qswN9{{LAjZ-C$^W%aa>!A;^NW(=N1MybG47tR|YtBC4vi!39MHMxP$B9 z+3Kuig8GJ{y>gQ1r7*VJUKo}-g+wIJY@Z-_WkX?hXa#y;_d*jyrvt>&b!0PT6jNop(k|L(dttk= z*I?Q18<`whxe0U=8M0%<$XoG`bt*`=*AQ!0S(X9Hn;ioVsf@lNu^mywH~}o>dbsaE z4)bF%+nQ!8(agIf+jWv{o;?d=sgozU{_&67g#o|#*M1Qb6O(xPrI&4+?GHPR=9JTiebY_yahQZb zR#sN=;DZlr-#(^ub$j>h#TUNtpK;e+cXJHV3%x1JQ%zWO9!zg$2&aDH6Q8gx$IA1c z`pKWfzx{vxTjJ6pCnZx@V!r?KFa0u7=`_Cet#8@3*V`qvzVD&yjsEt?yC3#9%Hw7{ zZ{>D3zq`2`HuvDrb-p)}cej(Bft4N1hsoRD%iUZPQZ?`PPJ)ZW|+(Wtv& z^5({zAIzf%@^imU0k~QvWwb;P3)C6gUdYQNE+%#yqyt$q~ z(%Qoo9DH=Iax$eaHw1`uuLaAoRus7w2PdkvbwDdwx^+RrlLjn(Iu-a1$3T*J(T)!F znqZucy^6Llbu&n4#H}$3S%x^nuDA`sIXWKe79@e4Ph zusG6gJ1QZN(mmGQ_NoDo{veA+>mb^lNhI=F+heYAJK&J6SJ;B6zgTi+#8PD7W$FoWb;Q0<4U8xDruVSb$=ey56q%4 zS43^IhCXLO0;mdR3AIiU^-ckeZVnwg^yu1~flZ5qNO4zN$PR7i5Mb0+4gx`f!rk{n zOJ*IoK`(aKD;jH_O$cma?fr(5@=cO7rsZ!MZ9FyE!r^oiDSZK9+!E}s(kZR{+lDdb zag_Bjj)is_&n+hL{6Z2NOyhMB9fqN>t+0nCb|R{^jU$;D=Oj33_53=3?qZN(*x4=C z^EH%`Wh8Avq4uxipPZb><7nquuL|rm6MDdk{Q%>smFQ@@f;h`97SzyVIkuWz_DclD z8RkCQn)>A^C$NP~4|na!U`*yrr}9GBU)!W&EK}VP-eSM~&Y23n@~7vqu-0VzRPDJ= zF7JMH$<+$iQ@Z7z>q0g8RwPh2H$R6LUU)t@H{jRP4&ojTZ`$6xUX!7#TJMZ8ZfAJS>`>}+8b)is1Cd09& z*|2Rjy5?D6`Y(L;FW}VaQ&?DV6P^!3JFZB3QbGB{Xj0!1Ke|FQy>3^)!3`K9mHP+X z+M#{C<98iGZYIkPAnb?)7-Ip_*(frFM7T|X4TyuCxgaRhUgd>z1h_4o2xq6xu(ZvoHUiTW0SHbtXucPa}6wHR}2h4sKLA{E` z`UZh+ig5}L_9zcHP?@lO(*$(^(>h?h^`fB-$mZ1YL_9++QiC$?ji0muIFn5pK-TRF zJr1UE`pZOP2#BQHY-u*+(@fV#8E~b6jky|RwW>^EE6`f4)+|JB!xbRuwSB@?pCy=g z29OnhbwD;y50J{mI0(y4IBYAv8f3}Kx-g5s*@QC9Y37Ct#ZkaIbgRxytI^aez6Q7% zPLCas9!;Sm8U7=-JQnckCpJqLq$ArUkL~IConZh0H4?W#sNx&0rENR@r~f*nGT+P zu7($0Z{yl>2936!P}h*_*oVQnph8mEmNO>Hz=`cTCUf)X)Xtti9{ii+^49tBGEFSq zGN4l4&9f<3oXkf8=-l1{ChwU+VZOi#Zx_;NQQg3zf{wrs2?aZRJ7xA^Ih_8j=^cIjQLfJ*qML|ZP6Zuga)3z&ZQ_(C|hYEv$ zZ9355VSzk376UJCBr9p#WSa>-zy63yE^(NTK= ziAG6I9Kyqdu}lNGOc{k#6-nLFqrQTZdwn(NQ3M3eL4FLqEc46GkC3kfCmyl(CKBy6 z#I*&c*GIjga|pDvnLKmansXP$>;Q*mGbpgRX{(f~6LXHOU4Lr(QPkVOi|?-CyKgR` zLNLA?S(?J%A0@IPWV)DTxNl+tpV_+y4^52Y!Ep-8$LD78_%qMoo_p`Z(Yx=)@q6yE z_b{~OLfbX8-Qe&2`rosa&G|j^wnthkp(3q1|JA?pSMeub`x9F&{ncOnHJT3WCbWVM z#j`+lMX-d^x&5VI z`X%P*0DJfDMUlWcnMmRjpZtX7oiL8_Opgod!V6uTarDSh_l1CEqN|+Wc;k&5_F&(N zSY+y@Z#-=1Ng!I=F_e(+hm^qW4(-o@{(FS~gAU`*GtYGJL8S0~9JEj9b`Kk>B1JP9 z9QyRfFn+K=Ag#U3dNnV`L17aUGil_<6G#`eiXyNjz{zl;1Vqa{yz|Wt)-R>VNWe<` z#L;zW>eTFWtjrtITYvj zAyq2aDmioB1|A1OII!sM=xy|KJsyszC(qL05PCzK2Wi^_%h66}QhdJHtr=#=_(^DGm~r!~$o8ro z^HHl{0?~<#MoUG{0W7~t=Jbj)6DY}<%7K0;Lidzy6E@3&zW~f#`sg%H38nb-h{_S1%S(Yd?czewudL zQ{Q3dcMh5K6?Ch03>saeIN+xVtkeA_MceSzN;Qf1&&IH}mS(aTUXK$EePv*txI>4M z8Eu=3FlDA@8Wd$qp>i^S?q}Am6_b-m?Ax2e>|7SPTm;z+rxlz4#tA-j4O}|aH?vHd zWz>z~;^hY3JJrH_XIfa_)ImzdL(7YGe`eNy(9S7aDAvi)gp4m*TqRt@{Tb z$S{AFK8rBQxM%0`C>|I`lI>7m0?L;+P(HVcPNmApXO)fu?7M3YhaWhMvFVb{r&LY0 z7PoNb&2w0~uxt}w<2)P{AMB1aVrg1Vj^YH-sUnrE;{uI?w!4*sU|Mz6)!9%uo%8Gz zP9j_P<%J;HO!;em^v{wuNBRlPL!FW7do2F}_D{s{czhZAV@>)Qpi9wWomuS+u-Z+a z(oJE56aCG04Alz0fse z6Ye@Ydwo=_B={!~-A!?FRvNP}LTdYFL;Fatg-AnNIku=~+Xw`rIT>lwUO`J}TT;A_ zsbU;+?1MQcVmosytAfu7#wVtULZ^qTD-FDVaT81HE&C$0JNX2Pd>TKzG@Kewn%4g< z0=vI^{4ONJG7$|pUPQ+y@!d)d|Ie3RfgV5?`Kx8Miu`x}_TNFZRyBb3&fD+cOJDwy zz3!~5gg^h6Kabz~H@{_zQ@`{}zl<8)=_aiw9)AK~_~I7~d;Pt?_xJFx|MkDNLyEut z>%WfoPrh%UTzXwytMOV}74-V_m%sdF3;)AF>UGECPa=y$p-D(=F!OsS5hO36-aAbL zm)Tmi*NVL-rTz0i|9SkI-}*N=cI=obtNyye`8R*_H}U41Z-yb> zn%F#Da~F{Q`+xuMTPN+ooR+<{|Kx*`=P^va^Y^?*?LF=0cQ^ODk@s^eemkjm^0O0- zy4y+bX_W77YSB)1qi#ep^W@!lwP+{5H{+x7Rwpn#ar&S@IyqLv;UE75@_Gp?P7soa z*ux(Qd+{uV62Y`?dC)i@VAv-di!r=LIf9elY2o5q?EL!)tCbo+99K!9On>%Sh;g=9 zTimbbgGhYSrAZX0X3=TX3DU0;-0EbsMuqD<)u6R1l*ks49iK*qB1v^Tm3FH|A&7M3 z!|{6ZAex&VoW;+izKR0s^b|O6_gqmY{g6mKobOBaSqbWTFYKO zY!hHqgEZP*4b0?CKS{1)dffwVxgzEoVjl0mic5d!Hsi=&<)P9+vm%$;Ki zmC@N~BE}Ito#-JQZ6ecaBEbn-vlGQtg6LCcI5}zNT)pWNObJ9Ye*~PRR4(`ifW;%^xo|B*~>t>2PEa|$kvBP-ukk1489GJ!!2fRKmUv1%)H!3)D zzK2GOF#0#bfaxozgj=X7Wv>U|p&nTZO>jP!HeZrGj3oZVpL`IAC(Z6OhW z&dn7uc4!i*u{8Rem<&2yY@T1m+Iv?K)XMbPA#l#)(0vE7|L(o4pQ>{Nw=BPnt6O;e zTW_MiQ5VB7nCpGcHql(xBc|UIPt{HBxldQrDP6_E&!_K&>Ya6Wd10g*ZVyuv&BIVDHZc^%udEJ(_6*S-WD>PCDgk;Y_bOIT{B(d;GZLwQ2MJaK#|gs(hnlD{oRW-iH^kS35!Xi<><3+LEA0T z1YXG+CyFiNU7H@exU$^Dw#z<3FIo-qCHm1LDB|hdM7s3TSmI=Jiw-+B!EDt6yA8>0 z9b(x>d&p&gy_2lx8Lf!ZOi@(dVIqb`J;2gxlcI(--ED8_bFsI?Y?C+hA#s{_ex~JMpnaGQ z8#*BU31kO%IRj;#+DupiHN1sN?^RRpMB3l1tuflRp=~glv^?>|6KLx86Sj$Oe)F3) zLDA~7_L}Rlztz=M!!xX5M}G-CN?FVNw@lvA-FR z_GS`)`prMJLewV*Z3Ve_;UexncK0^;@_t9vp1j#k?sjrNOt;HVB)!Pn4XbxE6Ajys znhn#a*{$4o_3fGs(@ti?Bzw{A@ECTh6;oBZ&wS=HW~N!Nfb{U~DIeteJ8{nLnZ@DH zeiT{VHj(HXxJyuuca{xEPwv-XLbn|EY)gO!2@W!?Mg*7MY~lUyHqh^KurUWAUyHLB zBBhOL#!-K!wVyD}Hh>VQCNl)|vusRpG_{YqvPs@*Y#NjusJ8a2v}#2rnMA5EhTP-~ z<4r(JK%L6v=tsAO5Ui%h5s48rDI5iXHV(z!!cQchM=qkR2oVDDByz^OQ_r4B)~?P2DiCoruo z7Jc2Qz%Y_IP6l){hm{$Hkf7u+o)Tux@>W(}7qXNe4cIRKw6Ygw3fT!9O6_>-PXMA@ z*+O#tJ!B&S009SS4*o30@rM13+9};fHr2L!ebX$*2!Z%UJ%KZqQ&_l` zAip#sJ%Q<12%s5b6HEcYQ99YiM5&Lt83L#22t@*^WPE&F9?7z zzML4WGi_(iR`KRL4XmuQ`~reM4zoVbl}pSxWg7!?I#Vl;O=}u+Z?Z^g+J8@5W&OR* z(aEM)IZ=|@m6$j4u1T&tH?l`I*#7bY&<7`wn#j7{6Z8{Q+t@gF4QnSaquZ?6maAir z-i`Ugvz(Nrtj=2en0IT}*75o`-$HG@LH1!96pR9;Y)To0W-|8V;u=yIe=}u7w4Ecy z_N2BL1P%1MO}f#o9OgLumre>Nn`CARhRN9H1JkJfafNqYue+j1207f*&^W#HA8u<$Dx&3v$$^y>-j zWU|EmFv~WszJTp85wQKY*j5@y#TrONbW08MN?&-$P<6mm+RjxRL$owbQ?+~d^+)_8 z-3EeoI{|2&fmmB_;^LJGHny5* zFx@`hmcK^Z1|fO#A8qof7Lfk+#~#4{^1z{;fix!`|KO{;0qHxm6A4I9BtDHy=DNVc%69yoPF^Z5zHJ|M2H6N672sJM__xT_iK1{6G5YAK6VEm2w6D{@?$5eEl0= zH^A*TZ3~>ceEuVLBKuwLp>ccb@@?PorkT z?mg|q<5uoG-7Kt8lKn7`o%negcB}nc`h=m`*G~R##%D*O`*g8nfKoNfZslMj(4jqD z0cPM&AdyaO;Gui%DHiV2Yk$Q;3;V`bk%_O-jOfc6mQSp6WX7k6hzXiXX@dT7l#a|}=7FQw|Kxqx_r(2}dGIib z2gi|}%OE+XAS&nvth-xR(I~s?i+q#_r!baXMl{{!AW870bQ5$7Jg0Igrb*jFBw~m& zy;I!;?uuu?VbMUgy<|xDc2Yhm@TL`Pw~8$umWPyXCo|Z4C)@s7?19lb?brW_kp~J!CSvnSkZbxVV)#@#zs9H&DoIVeec858v0s zkiWTAbx(!iw`-@)Qr@3W}tIDG#;eB>ve!omCYBbg_3 zU>;Za1J- zYCDntb$^PC{mIxdu=?X}zHwgyRJYBaIdZa0ZY0@hU$D+>M9^$@u)%cYdlfu7)xn-3 zlg#$l6K~c{)w8W`5ncPhuR!QuK-a3f3quoZk;-E`JX%@OSwCWl4D043Cy-eTIPdD) zVZs*TxeBtmEo9?Wn;dx*@fyVoB;aMnytlYR#i*cZWV0DPOhNW7`=i?CYzko%~_URCO7< zUVqo^cI_mj*9#PX=R4oQXFvN{v(pl}_L}HPZ#}f4&DmPv)ZU%n{_Wqk7Z9}{NY8;k z_uO;#+_;_?_t)Tw#CH@l`tZED)S{i-jjBg!H+P<=r(yjE;pfS#cMEHn-%fU;W?sIP z*{I*0XeYm#6#c;;{DE!KSGno%g3L4t^7l%MWOmz!4OtgT2lk<`XVMN7YM|2|;YhE6 zNVkS$h8=n#&3Guz8dX{Q!cVe_Td&^0_~vDdC7J|SdYYC)jDQzeTMAqQc&mtXGlyS^)}Q$`m6M%cdXvn- zmRaHao4L&B#|Cf;1K3*Ome2&qscjpEfVF{X)`x&VtldGfw~pzeUbgF6AE5ZQ+L{=} z88^m2pN}cGdm%3h0jRj@g@B%QmT@$D<7f;HAj(;bt{GH(1jtnmi0Bf*b%Noxl4C2| zDpR}Jgh`AsBiwa(TH%kwzHTzUx+*W1Y%qRx?3rp}ezJkdQUe)+d&NVm6?v)r};xZ~KbQAZOENo=(nu*Z zlX2)R6#P*gqtaPAbJeZu4n>m9)S27l(lqvKtI;xZMGoCTT-aB_?0tJMc4!=lBGEI! zq1*`sw%04T_|iM5Ev{gEDvt+0avu&qa0r=V##Nt?`oRE~-@l5tpMMwiO+9en!c!b9 zdZxZnn6d0lG9BxXG^QlUQJf%JuZ*&+2kLKXEC+47qC<1+0CVU&6d}nwBk8Y>+}^iu z!n>v5|8@UP4!arGb{KAqVJ3T39L`nosY6j5&g;cSTFMdsIW@*oE06V{U=vNpO1z~| z`*FOK+U@q{e-$|EQzDsXe=$M8#R-F+_)fDA$u`(0)(C9tEEcvMt2AP*shkAsxh4mh zEK;*`h~_lmP}_0tOzL*fTDc0;%LLWxI|Rk)hv9TPY?DC+`=(O1l_Qt(u~Ykwqgo%} z{j=+M@AMj0)*8@@{4N46C3omXQZMz?z8QRUPYH1?7$`H@|ETJzTAXeK`0A-kIu>f~ z@6hcK$H&B7tpBrAG83(FUKbrKuwGu-cKczV9f7nOtpJyRllG(dPEkNw&wR^V;Opmq z{^xB^k1og7inI3VEG;eB-X5KN)Sez)nym}NwaMP^ztu@hH@IBSq+z{e4-mcH)37_y zPU>MdJINBB|ERfFkIJL!o$N%nvh(szcEe^n$v3m}G;DS=dy!79>ac<)LfWb`45WSj zd=MZVW!a7&KZ@*B$yQYpsRThJc{R5X>2u)9rfi?AR$Unr{%b%K$kM7U0hhK7EUjR& zU&nN&%|W7#7K7ABeKj_V`F8XLU_|0W;YKmW+YG~WhK7Ult2uT;^hG!fKW(9K$U zo;Mm5fKJi1wpS?c=tn@4aq4S7bF6@Dafa@a#!=fk_GaF~kfl#r5Xm#5Tl)9ag3dxzN*S1GZ$V{Jc zvqb`uv^pN?DVrO{lVC5_jU(PmB1Iq?bbItC5UtfSFO!e5gg&nWbq%zVIVc-|b_W8x z0YyiGBfqRv0&cV-r1mzWMa$ZW0z2aU|#(#wG@O83_qb2 z)EN1-2&`GpW(pnbn`~jK&}4_LLu(P{y8v{OY0_16x))q4+Inp;iE=fLOIN!%bFPlJ z-r2-^CmXnWjX0$df@hV1@;MZqq%^ISoog>jfb#XaTiJ!~LcP^WQ(JPc(~x^pJ134z z9U7P&eVP;d(VPUSi4>-f&0y--G~xwqk&#>e%YAnMZRNP|(px~QiG#=X;l3yD!Px8= z^Ii<(j)HmB@APr%wX-<+$|<{t*fB9Dj-(#aTUw=1KA7HqhtwoXw7_MK6GyE?yZzAp z0V|eeg7VF3q%@Ay2gyu4EOKGKS~v>RGZ)dH8h_XU$e+GY=z2;6-)#R;)|E*D*nR0L zW|I{h$=C4F14+!J39QYX_{(z?8=W-Hl=J9l8JT(F_&dpnvUBg_AT?7!t-ijb(qo+D zmh9_SKgoEgKg-mR(kqF2Cf<1oSqea_Ra0=1kQf_BM(-@7(&XpTsbJIt3PiV87BOg) zt<`JwT48oM%MECjkFacKbgf;?+6a3D1`xBW?5-}>@$UO8SXgebEhuC<7@`|>cSxji zdiuZ&KDK|1;}J_pU4aSa7RBirf%N-#fb<6;wdzdb7$+w4mYLeh=(Z6`5J>k0q;LI5 z%?}f?D(rmyojQnaxFRhQuo95gwIDi8D)6OE-Y>uWvVmi*PV2=P=>?>wVHqX1gu)v^-}+wbH~G#tk5(lB4q zPI1|Zuh);-4f`Ecd%BtZZ~Vq@;9vgBe`ymSUA3d~_CQ*06rRfbc7U{UPJ4_e?ztQ3 zu^b1H6m$==KKl<^0@8t*W%4NkK!O;7Ra>zocq3@z=*o!2&|NDdU9BO{u4y{e!Bn=z zfvJr~kDy*FHI@#A$RCX)rnXVd)CPb<8dlpNtraJ!dI7qP3Yr_6sIIJ_vao{s${HH0 z8wkoR4BB)@@CX9HNMG0FbSkeuo2M`vjhtKZz0tWwrmFfDGf8WO@XqdmOm6 z04k7LBbYHWsQ_Th-$;4y+k)Bo70!28_v=9`!j^PnB!GFZ*(& zIY_3MhY7|n6(kX-TnsYEv{Jz40L{fFqRkkxxjgFKCc!MzY=SH~>M|!RzZ`H@SPX|@ zX~jybZ*D7xz%%;*2?FS#IpD-&fKIJXaMfj=bTFQ+vwUNyHw#$WyoW&gAyk`pp;Di< zec$87W!9xWT7f>3=(sQ5j3-^F^yfj`_^rF=@K;S!4^G@ylQ2q zRmdJep54Zwd}hAdK6GtIX%ZeYeZ-P>t(O+PdwQKO1kZX&P!EB$I!SwydVMoSVA02g z%N?9PPvE@J!`fy9%{J4n`WWVs1IdgV!&03UXkpN1Z6I?whPP8#KsKT=iKYk2$l6Sf+y2XPcj*{ggUH%%Mq`xukk1KSbtvBv8fG;wwW5+M751uzcu;HH6r;ja*u{v9J!?Eiu~Z z(!xE(Iv$_m1UOw|-_pi?d-5o0hfc^%#i?{O2%cYGPGO^+6;~RPEC_`sg^R;>JVHrj ztUcdJ1JQX5k}U63*RHfnrs_zLzu4b`A7TC*4jP(QX5Cg(&t;q>*NwZ~!`vHs>i<7wR~1Y6Tasl-(8% z1y2_ijUgJ<-yzlsil-0G;Fh?ayLxF_MW_%ckk81vglTRceC^A zTakC;`3=*sou{45L^2;WQ@Px8{2sjc(u??~|MZ{Qq)6rcXIYVsBoindKInk7_O)uz z>oo~XtBh2igG&5Dq$M z8}Orhje6lgYaqwV8YZarb_S+HHC;H_)FO6_{T>EE8{K*pt@0-7YpbX(Em16^wz`b^ zGUc^p0&YD7a|xBDiv->8;=ZYqIKHRBykeYnGl%x~vNffcj+k`{F3&T$ERxwY>I4l{ zUH2A?BgqNI#CQP{r7^58HE`wJ7OIzPXk2SDya25V2gfS?*BQ|!JDLW0*9Z_BaqR8o zG0`s|*D9jW$|29eK3X9FyjH`tlM7fpx5W51&}w!NCrW5XJ4_`9Tqaehj(D2cpggCr zyk}V}PdVsn1-efFZCf}5pmiT~n{gqCmIxXSOa}zhH3IfpS=%WJ9H950(!LLRnNSA^ z5!C^*F6JgLA|CIdp@Vr*_hn1>hu8WgCX1bDdWLzYE7$^idc3*0iQ4itPH+}E(b=-c zTJ#w_lU`$yIUubYB=qW@@|VSi%32>A%LG3J#)Fn70C6-0mOB}WG%Bq$wrWYNS0rLs z+lXLoJwhNI!B#cKK8cezP8^g6jJWaLt|L_2>gTp>N&`RMjkP&nzoZt)$XJ;J<-W61 z8w{NoNo{_~-`tuq6tWD}AulIi4?mWPqO`w=*?VSf543hmY{yp)SlErVEnI%>Jv5e9 zaPa6J-1XoQWZ4GQ_FVWbY+>4!%d2?nxp%R8Wy95%;b@!NP`DrG&s1!8VWccv8JZJ$ zl$szq!T7~>i%Xq#L|a9?Bjt|VNiX5Zw`sYtRaut3`YZ=7Dda|d6#cN45}^~DG?(|VFG3Q_DUS5Hq+>`O&Bp8 zO+;PvTpF!B%rYeE;|WfKQXm6}gEYplFnth{ybU$bz$4Tve0_cfcoZ%>51kh}|*A@w&-(SI{ zD_f{FwFg?fLVl!?6pZNZkVrM{=|cq42aC*G^+C+1P-vawbhV4Gp11>~Z$-XkyIhKL zvU?9FCi658$D$$8>0jYk;%+qgu#lRarE#Zwq=#?q*o{2k8kL7>H#5<0es9NYH#^a& zyI~r2=V{bz*x#-Ah=%=nyJ0sw*^5Tq4$GpQ>_pz)(@uVNqG3L|Kwgs{sr{`T-_P}T zicz9i#DPzL9NFnSG90Y+Vqv_ug=l-713?G*i9E*kjUzwCnI}6UZU4}Wl(Av>F+>TH zdT+gt{P_i>IB+GkJ%po=T_cx_p&d)(YUB{kZlrK^y^SUZhoG-Jgtg8SM#7d|rD58c zCL24b)}Ia76fW&Dm)e|d+uD!!6Us)^2+Sp-H9US#9Y6gEf{{VPKB>Fs&Y7NQ3^@Y1 zu^@$nmWt>nolB!MJ%L^#iYo+%X|(i0$8OrkWCw@H@{PN|Ib@QOYBqKU#<6Xi8VhVdH94lthSB0~VRxEaNT z%dE>f5U6@VAO(}dp04j?Q@ctqL}6Kr1SCnSD^_1jLoXDn2}UN##tg5MslC}~7^D&B zPA3u8LDCIjDC3Nrz3N(KGL5Ojy2>uahDUp=ZmKu@r~6*3hn2HeuzdPF3fUwM-Mt^h z$%0K}v?t#Vv=U4UoVM#7TzKyyF1>#hf%Z}{knJFEAR5YiC`m(6+ol_xX!4XLHYA7+ zI2q>5>_$IIQ|NlTJi>I!A%&fzP{L>`!0x;enCciHL1aGFMn0{JtrMuW5~wv|1k&mg zVr+*Ud~~*kXJ!H<2LZbMzMa#}<&$;|oZ_d+SwOxuw%u12qIl(69E~2^jfKPi5JX#< zSmY&~nJHNyiF5&a;(Wk<3aJ1wPW)pLPG+M5&<2%5KR&(urCLi9ku3Xzy?c->=FP?? z_sR>?FwKl}dt()~rOSx0QOdt=R%MwD8uLU-6!7gy>8&zsmPx9n?_i{wsp zGrKz^QojDrpLziQ>&N!n3zLqlVAz#J@rM^%_@BP`?d^M{@6gWVa?BGax0#<~KmTZ$ zYpx#p-&XhAXtur)ntwQG*R36*E(gKkJ<>aow;Pp*X*aW*`Q6D(G;A*6LE)&mS9^I_ z44VzpsF~M$vthkA6YZq;b7CuH*?Rg-SadLR+m) z8VRWWw8pJS6Kt8=9EPuHz@3?BXY$AyDQ3UT^BLnYiuy)vB~wQ=5aPo|-0v zB@eBP_0iRKjU@A#V!hYJ`3eCw-BmeBXb|8=;t8aRITWT!$mg;K`m`rG(&a>=7e%r= zK#76$+uDB6#FfPjoV$396Py)PDmBjDy9_I0*OnCtpi5KZ%;OX)uXe4@2}2g~lrep5byLL?GN85X_}@cW@HT^)jm0E+g8!hFokB2M+|8+tb73 zG>|V4gv2>KMTp*26s{o1hH>Z;SZp>34D*=Ylfu+=A4R%PX9D{&uvufiHgy0?msc_E zn$#GHhyP_6U)PYRP@%I-?9b|n+NZN}LVCFi^&+n~wbOd_bqec|7v@m^`cauUz31=3 zV4h3u9Fl{ptI0wF6NgF|KTtwE&$L<5IydH*6NScV8JFKUiLJ{E*fT$ggLm&mhQLug zojc1(ApxvhS;vW&PTF(dy+D&tnj5JNc=e6Mm>BuEnOjrH=DMu-#}aAlPdfI>HYx%-1lTr#cPPS}CkmQmD6*_N2YaoV6Q= zay9(e{yy@oN5+Lex{A`Sr3}N+D)g0F0?(cw;GNYZTAG~8E&D9~nVDMkPWoYYqG7X9J5Szh)P5(v!|Gugwjb7ewP@6@*9#=;xJS292b9@FDQq-WXJ~e| z>A}>N9kQ2+>1nPe9%-SF+Qj2`HSjk+6~m|RkJ}?1>(vgTy7ErXo!g{&+_mA1Gtr%qi@h)egbWK9P)*@+RfL?Z+)TBT&ZbvcdM+|nUSttYAW zh?fJW((H-YCog zD%f^X5fo;!m^fTQdW@i0yAtG3EGRU2>$kdCIdhpH`aLAN0S+FS$N0<`>nS;zJLf?V zv(xC{+`AWX=B;z6Z|NmJx=~PcqfjlUI4)EQ}1fumc0`aiukdsA8`K7p6 z#7H!>AXpC*S@v}kh_O$D4lJhKd5(m-H&wfBw^XqXOXv|IojVE0KOqo(^f01X_X?=F zb-qXnw}+sjvl{}@j5TMrnOK17Vgi$e6w|NkC>?-4@!k?HUfHzCy~W=%+m*tI-JzS3 zit(u<(*)9af+hA*Dkd4SpRuhS>}S6G)@AlNck=RPbYpE(+qsv0!d{KAHww11e*Y53 zo^y1kiu~coS9Md??1r~?3I+BS#!CzocXy@m~FgBgxjFkMXLn5#M6G4rZt$>62 zKwBy_;1XmJ1$dxkBrp+mfV-HiVs5O5gR>Dld3OT$?~T&TwT*RsHm8UXpz4}GO-BVN z29&ijt^KD0(&=^rnI^$RFK$2@V-rYba|XD}1p6z&IvSCVJsaL-uWV1I6S(#Qg6|4J zVZBEYAi}{i!8j+QX=G9b^2no?Nux&~*=63gI8oVJZ{hOE73Lws%cYT;BjBG%A(|qH zjR{7mql&SU5 z)w)=`k3>qKzh`^4b;}2s{(+tz*QBJuFsfafY^4Y;QiBFE-5SR?mQO8(6Q`n_7-s2_ z`OY}o11&w46~T-FM(HK1+!aCklg{n+6)`??pgJLIYY$SZ&ZvDz>)nbRGnt5!5j9Ga z^XH5_SzQ*H^#~u&K*l;un2(_}pGA@tFv>Dl-7=ubakHv8N_Y^vDanjF?)?u72$4COv+8(9} zy4GFE&&<6lOdy$B{+LlH^G9JTEFC6Ia3Y&cbWk8jEhL+^RYI=|Hi9(Ps#(=m8Nos=fl4QVfIPSJg2E;i#*MNV z%E~w^V%o})Ln2!QIKe@j{5c_x5!frvb|oicX};OHsSfuwbJby5iY^;lVtUdJX2&vY zqjc%RwF0un8K7TZL3@=Ttx@BowavDcz<8GZ0L!t*zHDisjEk4nIB9Iqi^3Es)_3R! zMVgBLPk-Tl{NvB;K|;^g50P!{I2+*C|KoSSsc2|=hi*msN|?_70wVDzs2j~U_W$i? z(P@5_YPN$9NxrJfvKF`-kp4l^Fki2}nc1)`+R1L1b}|#)u3MRjhRr{Sne;pH9i^Sz z>}Dn!4M*h7ZYR89`XFJ;?6!e4y=!%4_KAm(8q3+%jyP&a^fqnPw$lob$;XkK9kac! z@dWt`3kr{&1fA|6<~fP9a`C6k(995m2qShE%F{SRP}o+AF{{IzlwgVhU+ zr^^$yIc1MPk3PEzKuFf(9W?^ga*GqgY9AZ59vbZdnjBecl&dWQ-_ikOC--7vY7G1L zO<;fjB^*sHqLdMcSJP*F8APStMYYO7j&bQ`*v+O0P8f#5j1lPdpqB(@?+1oA?v_3Fw18LeR9D9&O z;b~tn!Sq1O>lC^cP}@6#Y76Dd7tq-{g~LbMxbNXKCn!x$RupgMgTOiSI+jSWYzf|& zu2iPa!M=;d1s7I^V0&(k7$nt2yVXU#uJU6(rQCKP2l7=v`bg?l1x{?bU4brvX{Irv zYr$e@Z?pUoM3fw43uD=X<|VczA=!bK6<;_D3hI5 z^~^T~vkrd@_?m?T4MR6Z+iIDI_B3?BOXU6Om-4pzP^re_6#SD5=P#NbaDu`~QHlA& zHl#_Kz_6RBxyeybYhvN_MbwrzkY<~knV&>~?N9rt6&G!*ux&>ym&!&BD+_C=m7A=O zD)1X4;=*LbRd&{q&nQHABT zA|P(=Q;+F&Wh9 zKX(U6e*n^Gnl1h{cG^#cCd0&Wu=#bgYhN+7=);h+9JY49M|v1s?F67w!?7RqiEocLLk~+ zJq&s%HP$g!uOO}{Y)4OkfN7^ljZGqzFG0^aCt`hc$}2V$>Qk!R=rIt5lVtd5iVW4o zbOht69`@#eV^a}4x<8Hw=OcJv5B0MH%ojSi|H%jN_-8+ZBggj>!%8L?Z{;Dwv{wuXuD2%#G?rb52?;pJYCA?Zh@je_BAT?%-cbU9 z_#kVtfKAX35RdgxEb4kYCYv(}W{q2xPcnaK*5}|&HmDFhFP*O7+IwYGm*^xphBWgg zIW~r#;u~~qB{QP?@@!z&772j`s+pLG-@6gonNY_?-YyM{rdB+e&k|Z3XqU^VEuKXt zb{UU6-ox?x=_MMVT-DxJtvrWYKkSn}{c-}5NfT(qdz=_(zk3W5V*w5y9$;#M0Eu?# zjJ`yGbu5CQLqMVxROY4K(9!2)h1ul}#xZtGmtL`2EvbytFpvU4&bgY#~dbi0$ zwN3z~TTj?=dtgLIP8$9R&E&+Cok z$5435>lq%)ELn=8Fq>i-(zS3Ytz1Y{lSxo(W9`BM7EWG3YomfN?tu4ndtlQhteV=+@%k$fffJ1E;5OH{&=v{W=|a_{ga>G62>< z=Zb#ZpK~j6{fqpBvWR?>F|9h+F;l2xzF5O}riOH^&Enuh3Y>_x^0>B{N2Oh46(+j0 zI4X4U@|@TgF#MTx19y+N(C&6{x!l0%%?{pJN#R0u43$7zI0%t^8da|p7yesZSyrBx zk3}07f_JY9fdhQWKm+m@> z)e4D_v%bPg)-c^F=71ULZKEC#MhyL#% z^%@_!YZ@QFJ7-%v%)kp~`k9R$zWmyiJ6k(G5Jiar9^x>#&-L3QVi25XzjY>bYuWrm zPpS?((lE%{iH5<}PBiL&)cq)66L~)}-^qShzmuC$_oCgxxfTCm^6rO8Zb!{_qCbn9 z-QwfP$IFXR8aDIlTe%ZS@5SwsT)I^V6p+YgIheW6*8J|Qw%SzPJls6XlsIsPI1r`RjpJP&9M%;#U`4A8kSa9 zQLZ$=u@!@M9GPYj6Rk?ZRSKqOH&<{VA!rp`0FW5s(tMl4A!SdBU-6$tb5(ah+ zpR)`a1GH-mq>~j)jyI7?a5BOPhCYQSlRb=0Xs@}dO$@C@-?o>iLsgjyoVQy{f8V{B z7>Nj+5LNWMh-X>g@X8Kfly|uYJ@^xDqMldTp2Aj z%_UTUwq=G*wX+jv{z={zGUty39eF=aglaQWI8M18X6WCUOV5cwy2lA=4B1JhJwY%g zP^t+K>#`16b}CJ*oW6<+ufB)1Ggnw21I+K6#@<77%tMs}`S4%&ZEvhpaPibtT-B9` zTWnX%Cj}Np)yPbg_8SBZz1pWGB>E0jBDHgc$8>0-Wso{HRDQ95U+B&(i7B zSUUMWa_oZ+%+9jCMsVuH0$zOXeVlmr64p1W*00>5|Bl4I!#@rFJwij?9s0net)IGy zOG4Y#yjsGZ|EC)-J`ALu!BXb+Z#V9`&~yK;4PIr%^w< zx!o!JThZ;rXD9XT@cy&VZN+_9(7oa&wN_y4Q4LlxZ70wt(Jlvt9sz;wE7n5+dNog= zDUg~%n6DG)p#i!R5AjqDWuwyyqgH<7kpQVAfiwYQBArFLG-06IfvM}DTZ0XQas!pd zW6FAtNVKH&vA@jlwQE*hySIs^(Uohw*tub{5m3^;(6 zI&sW3$52`=B5^5)!9og+D-mp-?BnWl9i01G4d?%~hVuJNcWn}rV|y_+HHAz*#{pd{ z!D=52kX?_i9ZY1HnP_l!-wHu=iy))LF+l)DAli$TeKpW6B-+!Sj0Xf{JtR_n0&)Vo z7(w*r6$~1uaL@g~z5_H*2GA~_PKzNlSS+#dnQa5nlo^pozlSElb7ifCR<(%?0qxYp z0O_>l3iF6HL)&1Of9Z4tDXm-!!?3`c0@JJ`N|WsejwH}-yA^7iEDGA)Zlv z>#?l0|2>Hw-D>Y*GS(+(2TEg%OSDTK4A;Ok1^F6)6)y?PH&JM)j8qyzA+-S2wjaqR zoWej6RWkE!^9C||_h;aF=+E0|bu&8=L2)*LWP!$vzgyYV&YJKn>=N!DTZ6PjEM zVtQO9JV+S&^Zw1dfoSry2>UovXvH|0Lb6ywtdw!La_Grz0cckd$wGCNlRK?Avr!m$ zZnvlwnC{S=u)UXHoYP1V7^kKt=vP~<6uk0{Y}iS(x3;i&;sjbt3mE6*HOu@t_4Ye> z`MI}n;p_t2gl;}k#O~04cT!R7Go(I~4hsTlo1{BecjyC<`t_);;-s)EIfsS%{0|x3 z5aZo|lXZYMX~nK%yE%C`p3iRlcH`yUd;8to$$XgisD7As;<1xkne7(dFx{@ZQSyFv zi|6go&HU~Zr(v_*()>Zm4g6X$B!CXutXu+38tSxiBp^gJK|xom(!_az4i^#}*;CZS zI<00GJ-TZXJkZKytte}&g7yL$Kql&DTSLNb%!ngh93z0zsy2Zu-6`HquyQkr0=xpy z2{l~m1M#C%AZLDlwD#v&ZF^Y`HWD*?`&ts>6&6$IeLi>=1` zR{GOt_I`u$u5b|5jT&vLIe7N80!6TBfSTE$J-<|<6X_tDrzkeiNGzfrzlgQkIlT4m zyLkS&lX&f0SMlDrH*ogZ3eJDMj!WO^VEtX@$+ZmPts;^Ut-x!qM_5KeNen=%ams1M zi+Gj*lVC)*mvo49dz=IiFvkWB#L?trM1lZ1>O@>GuGwt^dJV3NWP(Ch*%71$wFRbo z5qBR4ibY)^*0CU4?Ifx-2BxhXED-I*R+Z9c>~6D;pjl&_0`l!(es+MFDNST_wPKw4 zPf!!2S)SVOOmH0QAzvUs;b5iJ2!UzchbxBCdobPU2wZFH2$RjpLBFeKmlA+?*g)ZF~KqokzoFosX(FQyMIGg<_lPDZ8mOeC70%RtlOxMnh{F&^`oI4pv9a@E2 z(|dc*oBuZm5qa95ZX3xm{WCG7$C=h7^T5C;?O11mdK(*8R&ed)MQl>;HaIb2T&HGB z*mH22lSyrx>Y=(-$KvHRTqfvRUED&0{%i$04Aas+lnx(7X;qD`lXIXLSYjy@Pft?I z*3{O{SkG-Qv}4E=(8jw^SxPo0CJQ8|<4x=vtKy-3HQY1X#B{bn0IePW&R3sxqSDFY z;zkJzl`*usoLI63iJvmqaA+(*DGg*(QDjm{G<#Xp z2&5IdZ!?xR7MzQ(k?D=GIu68hc_hb5Y_CZ~)0{k~SkJ9~x-<(w+m;Oi=b+uB+(3^2 zy4TSn0xRS|k27V+Gmd^XgY2FebsE&mPI*VEtF0W1xcb_w=&daw#R>27g$p?O=DS#1 zTxHp^FYqW+K2i~qYqEss#V{Tz8`RC9o9`~ zHz4Oa=kN9VLE3Ve{Sm4$}t>+tW_r-7f9q=XT@1OZ>VcmU&vp5`zZ!%Q}gjQBGg`4RY5SgRXtiWVBx z05MJk>dOrTm9`K&A`H_Io)S!16O1V36oFqh*}+(`gW?p^e3a^k2?nPd*b2%h*J@~& z`-nBtNOcLE2MLY+9JDn_al%l!g!T**P(*BthOYlBBWPShZS5M`l}%QOY>2~?YDf@mEo zWEm4w=w<SEvC0g8nlVjPHi1kUT5`*H5l6F70^lQ?zu5%QTZU|1{> zND}-DBulSJh%#Cq2Urwg2b-|37`AU){A^WP+aXlXm@leRgjU^1k}~-v1{fc6`?R$J zs)5f6pF&}5V9Wpons_dqw@O(6&hH6H`sc-NnSqc&3%89@r(m;ms zD^ACe$jCqAC*G_t-DU^ng>@{Sxr(iYHR?I@q38MVwzB$7ZW!Um481Cq;{4Cpi(^ zlda;3xh;J5SQ|h6SQZcLjbKb$W7zhysTi`%t8OfZtD6Y~I+$o}Q9{Y`i8GDml@rva zQizwv5G&^Gv6QG@X=U42y6yTp?SIx54ua;O)nL6Bh;}Q`J@tK>S1{hXE>d5o0@mH! z{yD^S&7H#2FXPgqzsltc*m(a0`dcgLY_8(knTx2bRoItmRsIhBd6ShE+hs(PeAZJ5 ztwx*Lwsxq^-l1EQa?;g(k^1u(+i09Z^0qpug%x)C+jQN}4>Pg*y77td-N4h$K$SX7 z*?U>Ellx(NPorj1d;Kt9kynq}-->S6ooFZiHw*K2`Fh$ZE;r-p?Y!BjU+IVa58Ll# zKFUwDo0;fVhYg3TxnAbV&Q2T1(duKIos11YL_)f5PM@jc9M2Nj3_GJV!yv#7I5?55 zR@EY{I_CQ8w(pacL(H{8OcCW^%_zk)KZ> zo~2o&$3dNW5~CmHV?WBlo8VNR7^4XS&Lrg|fqANnWVVA$sfKKE1F6gk!B&;PxK1F^ zM~=MGbep8V82RX#Tgg%KmN1~Gfr7GK-DN;l>4~G)te}{vke543qa-ku%+Dz61mie} zGw(Q%=&G(Z9o^R?Mhd1*I0^F;fzt!$Wq%y<3idO#~P=AY`QR{nLbv|jSl6@6BZ32L?SsV@gY z=8fh6m5R`fZXdCfP`I>swehFYN<>BmgsE_q%9K`{EGphydFSl5>z#?~YV&8ZIO{6E zCOVufMH8Gn&1R4(x)pXg)1BS|&{YDdjcXfdmg{cPBo<^;8qZ;Ro)Zr`-lUtgB~H4^ zHO^aDS5%S6MSlv(sT8nzH?q754J^K)&Z$Xkk5U>h%G+-FCo`qN6f95yO4V%x&`f~2 zlxOpAks&cAbfYWmrt%FudMLo%vsx_r6AC=59jJd0fF^(Dft5J>gw*^LvJ~19 zVr9U5?A5D4Z4=$~B~-6oMs;PA+B)k8>#_aap&tfPP5H<@llb`kIqM&XC(P;tPOtRv zr56_N95%ddQa*8_JMlOY`9tjc*nbQO>3fYcXjk8J&PVb!nM~pre&H7|Jw1(!7cXLd zejY#bGe3hPM~>pkl`9w@A2~H2~*nXIw2gqFx0(uf$=EL^hpTP5N-P%D)_T0fJQrK@P zTJGi!V0P~w0>(5e?|>kcX8jJf*4C6j=TGU7S5rE*foLiO$hBH6hCPPeK?0pv3avil z$B-iZCL*aKV%fd)6=yn9$PtJpwk}d9kQ`-WR)dcaL&{%q37dOmQ%Q;$8ym0~GsX1lm!Q7_HL2 z0Sfa0@&qM?xhC>cbz}-P0_Y~=+aYicP%Oof*X>*Tp^LD06FZSZU{ zAu&%}9_x@^9MOJ*ptw#u#?CU6ZU}Cg^*-91>oA2ZJMtU^2$l(kuaz-R^m>?S$Ysf& zW!)#QTC;?+m+!&i;xR0pUni5e-MkWuw=pw)3Hdxh1%ZmTr0CVfcA&gc-1VtXF=Lz* zLsbIW3&^{83gEz=wbpi;D9h47o$3Vvm*BYSOP}Stbh$z`Cvci6(8kisUnR-dS};D0 zP-xJkETwq}&7EGd^xn>l%uL~%OzwKk&wv*Jbi2t3-=L2CL<-|`MYanDtnJTUt!$_d1!*;^Q=mn?T-m zcaqJ*WJ}k!Z5RnJ8;B-wRJ+o|REGOdo<`83_r#h?KjP#I9yj{h{nNwJJ?|n2_o_6)8MMuAP z=!b3RTh5%l$h*`nE{<dWt~0aLC3%jh9|X->siUtL%XE zXs!yksC_;Ck*D$U%dg;X{jI-+x88gUg+c*$-F27UJa_WFlh#+>ci;VZ{PD+d{+xRy z@sUR!!2=IGfNNK;q1|rdsi&U8TW`H(c7Ik>q5aK4&_koTbsZ2Av=liD)ic}LkE|FQmZmJy3bMenR-py@ zWUjBK%RvsWY|P`2t{lRDeQ!U0@6=(c@5U>u`>?Wj4e?;ZwtPg029q-n08@u-#gzXv zCoe{-&Uhv}teG2NuhlNT1N|-A-yBnABYc~VC1;qeE-|cnp)(NNyq$8UZbT+q; zX8GpU$p2agjg36seQyS<8^@SEB@}1&BR9dxR=kd4@d^R=hLxd#3}#-b!1U%>&K*5h z&v0pOhvB?XXG`$b33R}cV4t8wkGE)5U0YAI4_{A2+x8BEW=&!WIr1IT#7)o1GaV+F z1mnrPms;hbqLJPU8A)uLF>D!7c7B{cav2igpC%U!uUTJ5qrQSxYaQtVFnw^6c~G=Z zo0>&6%1x|XS~lTUpcyyS2a*Lvu&Rk}n=_Y8xFK zc|9vM7)Md>r||9f+c>$DvXySfiJ+gtmywZ-H3`mS5YHDlc@~Jyu#V9k!xVV#geQ?s39=*GuEgjJtWUWlAVeU+7mwJI&fI7h$ zbUvTQtFOI==brnn0covBzw+uU)IX0ShY#Dz^-C|mWLW3GfdiPEo5PDQy=a(6tJ&&@ zeh_p67vEv}!G3dd6Tkbrzl(qP5C0+l*+2Vdc<;UU@U^df%_5QJtX=92( z7Jlph{4IOD2D;kdD zu(>C1?#b(i`FVNN@36a3+RfaP>_^>r{=??p-Ob{7D;kaWD2?(P<*iwm%rqnW_{TqP z!1~mwQ=#p3_qU3VVlf<(Zlj4F!L(M2Mb2Jj&CN!l1lZ~^@^a!{sTvuLUU8S)6_263nq1s&~Mo=hO zXi1-wEeABo5onjJiHcJT^eX)k4)_tej}qkQ$}mkbOr~GST78ab#g}?piKbe2?ON_C z3{IjV1OY^vb_Lgf<o47)F<1u3BkP>p-+_D(G`Ev2m`9@ESX11%*>6WP|8~vZGyHy+k#X*OII)l-h|XfYS+MeQ{6u8LxL7-(NJs1V z#N9o7{_zA3lmcY45#+~Gw!KGnMp1DSp(rZd6u$O$6K`E5WEF@GGsu$W6RvQS2KE~Q z(D4EVL3ET1Z4b1-vt40F;M}U4EbwgYf^}YRtq2mwZF4?b6x)z$o$5)K@#rRENKB0( zJv%}ES-U$wL7>nrujBIb&*9WJzJ=~d_F#;FblWE9r__5Rds>88wATpvigo& zP&S)o|K`4m2>5CB)Q_#&YA~wTb_B1NU+I5PfbY+PcB<3r!?o2Z%JEXyNJ`chY@Mr_ znuud^V#34(h4Nr0vi^(Nq&`Utyne@oK(^YkZ5uKD!0hdDDhjjb80Pc%2SKa~H*W3l zq(HRC?T5`p!|sP^RPX6_+X%?bl%rc?Ys&^~9bDRWZxNHP0SDF?UMnBKSI*pp*WT-6b#a}bC*VLg zj{NiiWXAU(lE@?1xr(E`lWf#Q#B=lH6=$3aNJZP|m#^C3t|4%%9@rjj3r9eK>NqR4Ir}h~j%@J1PPR8y#BfFa?q2tT8V%Sncn~hN zWa+(`K)cli14A^UuzlkM`f~1ovC7)n%g(lJ*yYZ&XzLoi4uN5hZC>%9AAKDls9t$* z0j(9gzQfYgBPiEPk_)lB@W$#sTw6+@va*iq>NWK0%ShGUzOCQsT2ZU-GXfm&Ot zF%1FJl~RC?lj`O+XJg}jyzn+u`zZMGU=A{mRaXggTUCk*>r<8Bxo&0=hMOPH5=2kg zLn+GBR;`7NrA^xh9fSu6#ZwcBd?9Vu*&R5vk8QJtt*xq+$8a1>X?~~(<!?AQpw)*3QeJN3Jwi2yDoi6lmUNoWXp_HuS{=FSMb1Z5AT6^oS zldI?Lo}T7T;q{9#Tr1~nFSIcU>%4xQio^g7L>~t}eLRkQqQmgD{V8E>ZQC*9rD@_) zErCCIqk%Ur$L*>-mOjge`Jni_h#Ki}m1ru>ww)t@Cdg4eSCX_1N0Uiy#nJW+R(65v zf$f2&%(CFHPXNu%P4z~NhZ878ohl0>l1U*^VqY;yAkE2rBFlQLt!HOW;mQjyVC%vq z4B9SVR6_30C1aF!GP^_neM!~gBlk_=V-Mxor?8^QAQbxYaAvWGFMXGN+b*Rg5cr$F z`7b!eUd8m(H2&&e`>S~L(MQ>L^$k@2^}qf%@W>+%bKKH)$OL}*mwy=#J@haq|GH&n zfM5BQU&TWYK4f6~{CT%U;loTWm!c@lKZ)enVH-1?V1Ld2^6@8TacqAQN9OZ5cI6rC>kTc$Z2g<2wx0M5B67yO|HuPGE7^ z><2|V@%urAaVtK%rDxd8t8Zl{(xgYgS)Vzy;a*=9CMPGcXAgnoh})Y1X}R=5WbtH! zDDIiE6S!`*h&_%Cyadu(C1jmSru5iH8ZA8<5;%aV1yS8RF`jAIilhcn;}?$Q8Y~4w zBrA$@3?rG)u4N8k1be!vLo3w+#%wD_@-O!i+OTlGGmmetJchSVY!P&CasbUBOYl6l z_c-#?`xs|k$JWFC!C5>MyM%Omjpheg_p=}#<|HzUetQGm#wI%59=2*-1I`AD*{SN@ zS_3K6w}Zaz@wLyyiVX9?fOL~UIvsbwkvSJeFC6G8sPWO3iThzbnB-hL9OoTUuv2!R zT6PXZOYJ~22YPcOJ=M${1Ih%#%1;Ros2wYTX~v7_pvU-Xbyv3$#0WAvEq&@1ZwJn6 zYg_0x+br)AN{6QrpV^De-Z(bvoP_u9#?oq+0D28QUBTDd#CYcv4n{8`UB8N~4nU5l zEZ;PdYSBr(+GqZ#daoDIRa zpTgw)1d5Xdh7&<`qv`-O<$(F9;u8ta>nghkAHEyM?>mYh=;GALbJ$$3S$SL!d?*q= zGlnz8*PqbLeyR3p8W(#);W-AMElhOgD_r;l{;lMf}4i|dvXnq^oQ*yb#J zi+dE!UIK4j8sJMWR&dI;bLfdArqfvQN6zS3UlXF7plJ(-?S$XdKqJrJ>96gLw_Em+WwLIr||KI^Q`|YCmEPv=}?>zkp9ljKw9aGeix)58XMgr*aqm6%;_F}kI#yO!Lau){`W_%HG62I$AdtMZxrP7yh5u}O zYBej;iAfcxHf<}?y3=-ZW786x%jd9v|9)GJ7ns(m%4eQ=#?+coXeK6d9pImxe5D%Z z=i@#~JDKn1c9cGd-`jP2GqYj4o!ogEwcE|@sJXr>s5~@V7N8cec=~D_}e%ZT}7f<=kVD>ZeoUM(Ei5=lDRCJTi2i~uPTk}Kw6)X zw5q5UMaO6oNGCby3#-}C$@mF`Ht0u(DiY~fI1oD_GPTzjF+^|3f2Gqo2xSu?a29Cx zpvRPwWgf0F3owWBb?_`R=S6-DL{lbyAdqnGbZ_$@mZTXcKpaRCx?zNvA;FnNzLdt; zo^iw`XHie?Lp8b&?HIvyg`jD*j#fomDFhn($j8cfXs(Vu`5sEl>lh~#y?6pmg60YV zbb}zv>H&dDM8KJD47geH`v$CC)ie`Dmy+6w@;lroO$Xf$vs$0@#fMg!u0*5C^SBcoR}9M7Q#+hhVgIBWPCGi4#2QJ3qs)7}1?3NMkca zOwNrXL2%X5Jk|4PF+U3DV`!9ncc{8 zf#lqcw)0`%UcH@%R7maIhmmrr2ubCk`k?kDcgjywIe)a*;lHtT15X?d@XWCoW^!%l zRv1@L9d7|>CFj)DCcgIS3YHp^=tjqBDKsKJUigp|2Yq1*aCoAIpLsHeDLpPkM_sm| z0rS_|HvO~pVPPwVuf5*Hvv0PsR?o2{lH@@bih@{*IccCem(DlW)BKdv+gx z{0Y2!;$0gCb%H^xyo`Z=$@lMf*>)Pl(}p z0_lzQ4O`6AmfG7HgMaubiqig%AT@c|#zKEs-wqoxUt8-ZQD1qR?tGtcBk86MEzWAZ z63Bk*?YC@oT013dLHDh<@Cx+;$;&Itw!o{&iWUu5S66Lo>#MK6iffBE0`xx%DeB(? zq}2iXPWhpSAHtJQK8dHFej0!AFaAYanSSDlCv3G@s9!UIx{3{aOc09+LO#gG9Olt(oX*V?=Ty-8&(gSc^c&*x|!Lq z-Ke{r!V*b6Z0BiMFME9&(du)j-9e#Pz{3wee8WC1k>~S4fV6xI*Od0mAU&3~{zl`E z#Y;e%LaVZIf*u`&)1cR?(~nj_1?mW-V%jG)uECAMu@x577gUF96bRKEvp9pFa(Wps zzDa`G&9yD^a-gagjbp7_#0$#@@%-|=Xl3ui*7BO|M=j0YMRAnCxJago0})uSjXnKS z_(bM?Oh+1slV`8I$$_+wSZNG>ea0ovL^_T7)(YzNrU56rokM%RC>t-Pxz(W`#z%X< zY_*wY%u&<{q@_)3uPkG}4W@ln31#Mp<>z%WSI*oVQz&C3q&GEXsVUrbTmlNz8*p|j z&~_lx@_O5;d9!_F%on{hY3?WodR&HVbp1xN%_#*zuU?7kMKkEcOQ=OA(TMIvr9FvS zHHYd-3tJ1!mx>N#IRH)0^xwxsp@Ab)0n#z@VL1=_F?+$Vo_2RWtDNrue$5UsX#Da>B&g0^MtAQbRDUf`C>>DPl|{!Be%y`n*NJ#Dw*1 zpNjmEul^LCnUGZ0+Am9>)e9QvG|S=EjXM3dnQv+fv;cK4DFt-xMKwnBcCJ&Fkr=qXR?T8awZG#s&DgUD-f*%(l@L?vmGd{ zv1pRz6#{O{`;fglAAx7xamhOApPNtSGbqlEqg&s^(rYha#p=7srnu$He3Wu5#ieob*5bkAD~6 z{N}T^eX`Z!*s^CHufP5}>s{X#7`vQYX`7|KLVY6KDys!aEpC0{6Q8iNOYgsb%C=!j z|K0C?*Zh9?i9q_G1JZ6a`nu2<+Fm1&UKWtvord#4H_9n5J>8C8;s;5J{;n(1p0qM8 z@Z~qW3lK}K{U`pFHMx=S{-pN6S?;vjDH`VM$(u>`VGpZ4d2_EGmOYK?MYn4v+KJyz z@fbA|Nk8h&>xa#E@+;cOtyd5G*~#A1sD6}WFQM|7o|(2S9V(|$@_arBkTzl!8QV9D z^aSey)owqg>Wy2K)>F>$s8*#}vEvzn8p;G!G^Miy2gwA%MVEkz0ES)_qFXuT5T-n! zq?Ky{?b+Ee1JBgZj=+`mOr4RoT+{}6yt}yv-?;J+&ejg2i7}*dCB%~j+5 z9WLS^+SB2<4vJX8XEJZ#p6CKniZ(~i7zfo>Weo{}BcwBg5FBKa8G`8yssz(Iq^H5v z4#Zhn85Qaqy6R7Rq_vmR6Z5pA)ll{UnXFb#<(MKIMCH%Zwuu=k-BMqdJ!lpnRYtkP zi)5_+MfpWA?1A+53bfptH%*XS9adbl`mEJ*yYWKmKnFktyxFNW0yHZfv|B)@n?$>x zLwis}wUy=IkVkD}fXZ?e`+;!$#l1!2sjC_1A|(*76_)?83oT4tcwTZqpu5-tc#_|BJ(Z4 z#>$pGl;Qz2bDjNU%mDP`Pu+({pSXvBdlHp$9k0J~0w>?S5UxU#p=WRW^%ELcVEUJt zw5~sp6LV%1+NzMf;dM(Raq}EK$%UEu9~F%1x%eyp!$4F<@kj@=xjH_1ypN|24=|PO z=sQywjQpv@qo@+~zViMSzVhM~Twd)Unwmncw4Xd!zCNBL<&FK?q)YX?i~ZwGg6KRB zupiJDg$gHSb=F7qAN5WWubm0-htD_g-sLDKaap=>JYBq{WE@y75rP>HqIIi}ODOBL z+N>t(Z1)1t>Ps{mvk5pSdGVOWH?}KscJZQ$`7qEVFU@gGpJX)oQaEBtIh9Xw0+qz( z+4r#W_UmY_EE*{H>AXW9PEz?j{lFAH_NboWXZ=$DLt*tR(!-fcb^O;ay@#chHCye} zHpyzWYGdkSk3DMR>*G&6ZoqA2dBx5l?cKM}@RPP3Xq8$(JDthc-roD~e}H}_P%4e# z#B- zfarS2ZCNC9(WsqwFX7e0JVe9lQ9dHC9=03iaWj6RQG3x&;fQX+>+wVrBJVe80!}NiHG2BxYXh%1p)>51SBQ2da4^TrYFZN zSiOK&4Ki44jN!ZI3wUAaA)Kl|gevwUAlM8#4Gq`G7AEPM0GcyY0j53yw2lr6xZj&S zgJ+VbQR=tYFc@zkFNUpyjO}WLV7iC_2WRC%lwdlO%c5RcXXLcvN%tWD)cw@;PLKB5 zu42(62w)je=-%vly~ByAwiU?S31(0zJjr5P1==wMrc4&USF|LWeW%D3Y4k z#yI%fYBaqISO^CQR7+`QQPi4oG+Nr*Do{alCP+oAJk=Ki0covV>n4?Uy^DY#uU!w& z;sm9>)ggFpqPki`b!ijz z!Ut^hsa?GKku+8p1&++3fgQbNHmuGbDvu!7G zZ78%mL=4K(iejG~rgDt-Y|kVg%4yg{A@BQs_?rnr(iNqPezjSc7(Ha5O+NtG7=ZSUvG3 z%9qZuE;h`?u&X=t;Utye(+?3yKSm(!3)Ktu8}FSh<3Igh?_hOv({4Evh!%A@zUa!e z*Is+g_D7#Mal*EE=)jw|@gM)O>1StVY|&DBZC}tf+0s}EU!}fQ zbG$$NM2v9s8KkF=TAzPiu>WQzH&;%ew(uhWq&=V-239+PuVH&nw{kPA-_4C^*lyHb zdLN(Rc-_oQG-~GcH=~{WcrnUbdaoWO@5j?HKd&C_J@ZJb*^*5aBTgTMn4E zvRKwr~q)B1APX_mDVvexrltEimZUX@jd{4 zOjC>_i&|hhndM}lvPl;qI;02XQmg9@6&g5U+(TSt9Ysr^kDZ3D{c-u?1@qi~UAU%l z2F`-{6A)0WE=Tb8n@zm-Y7eL1i(=tQ6j!d)7)%Fq(+SvtChsp?rL&c3`Y$(ASXvvP znA5s|0Hi>(Ks57KtA2FeC6I16dIW@e=tSx+I(o{T6M%NL&GKp?(1RdMhqlRVFVrfL z793^$+u@u(JIDd^cYvvRf)!zrb`MeV)xF@IEGJh*PAWLK_|?xul0aHjhIyrYuq+Do z{5QTYySw!Z}y(9A_1Ld7F zqAZZ<+`C`TLoNnLMOrvC-omGj1CQ+Mqr^$4u2?icPY=q|9`kae4t(RaC5lBXY_{1( zBW&XY(UXS=QduzDA%IJe<6%h^YgVpUM%T@;&q$`N-HEpVv;kv+8*Sq-03FUA^<^R&)hnq4<#H=? z_EL5Tmi+n&0&&$%tB?xBr$NalFb`_zRu-{w<^(#M80J`1+X=S>TBtlvu6w-YukoaskI6%0NrRb41AwEch2!D}AS==~o^j9_JG2j}yq?z`j-$4A#K@O}6G5gP3eoKyh-6V+*B(W>g#eTu z*~p_EjG@vTN2QfVr(fiNHi_n70$ZJNZ1v``+}?vr^?i6_c`u&3bO5I}4`U*k*fu zH4u%fhK~F7CfXaTZ0sB?GZ_QZ5e~GeT!G-;Z3|Fus>fvXp0Gc6q32|i*3(P^x#4?z5fRJ>!8B&|H#b`A=G3f;^Rv}sOIEjegOxR(Pt zztAEK1>H8R87P*4uzGj1gTZ3Ot!NaI#8U$_H>2pc3v|#yy3}DDv{gX>iIb6F zXnRMvTOlS%q@w#yfR-r*lgE4vFo!IALazO&?lQh**Lw zL#I|xdxs%*vChX0P}?aNdjEuzd55&DjMA=UO%&iKYnQe?_4aSsk%h- z7~64a>ImiBcGxa-g-Llk;6BpP2A;krg2#{Q9(G{4634gRs^g{ifs4yYn*eqPx)+>% zgw;9kpK3-Zn$khSf=zB!hg`i^CDmk+z&YFtEud`X{MUpl9!nW3xwDmV){#E@paFq+ zpWs?AZCXN&T)wy;wvqZO2mJTZT3aBXc9WuQr+4T_f>fSQKRk_R9v6^it!8zw^&ZKr z&}Xjo@TF&O4y5nUC`B=G>|@Bx9<{{c{Iue%eU94R5Q}P6x{E|Ai;X3{=*Gc| zBg9Kssq7~amr&Da384j2NeNA+m zRf6X=)Yh+}U0Fq^zG=5D5MHsySJCNk;KL&0qq`|DF>Z@&z)kcxn6?S_x6(P(+a2uV z;Hx7{ikAjnWrsaP z)eP#p_DPvegiI`-97!dB+U+E;xfaLCcUpMkl_t)gj-#@v&(B>UMcXEb)*(Z!LJQ<} zD6~3F975pi(jd12(*~m5XkubJ_LP)F6B>BpKr)xKy`=#)aXtH;Wtaq{t#;R5nM}@P zLm=%Utiek6b9-KNZNS+=q#M>EWtaM6dKsXj)z8(2Gb^$zGR)fs%cYgI&N*4qp-^{d z&2H&nd95sLF@NPD6fU6cxO-z0k|?J$2?NlbPJn8;X8YZhzvhVlMNS?cy8kFX{_)3g z@X$ObQgMRz9xh#8#`Dj;VK;IFTJ<-M*J-=GNv2-*rsBV{S7dPt6+W-MpX&@|9-4)2 zMBbSl zuVA$n(5H)iG@3d`oalRF1_)g%F!Kxw8(Xq zj~>0o$7542hAgw2x?X@}qMDa8s zV5#j68~_IafnNuybOP1QKH7DTeO;kHhDm_c4+!d71g%Zon!o{;f>4HlH%I?E#Hv>k zIRtjP2pUy1E9(T!8)$8sWuY%0I5P3sceT}v`%19W&B#? zsaKB_-zZ|75$jZbEty2A-NYORUs@Sydw0(eY9E#L4P0ATMoQq7;7nI>4PqM1Gw5*O z7N}No1t2uo^OyYx1vAUk6kY8})|Lz7ul&(!X$<9!I6-q4C*G{%TC!yOkG1#l`tf@8vwkZ}^4gLqOO{u*yb?)~ zk|+j=1VNApL{5`1IrL2D?#j7p-}gIpyYCdLX9l1o4$1zyPo134J?A~&{q8w_SL@>( zahIdXC}NoeBB>NY$t;jepp#--r#xyiC-kN!{Tk*{N7j%fl*4 zKt~|m5LdcULv)bfInIeK97Q!3WgHKQ;R@4}ytC`bCd*pNcTi*;mk^be-x77oG#Qu& zixQWNEE}v`DzkkE%G4q9V~{w@dh5+QaR2LX#s0n9kk06;>kt-~N_gavXYtgNhp@a< zv^HPKLu5K#l)sVcC$s9OHdg&s$vsCd&y^@^>OTM`ma0SVCznp(>e1DPX z^}8B#kb2#Hb8pxyx%=t#`uDo~=Ae7948AT3y02vx^}73Z-@I1(qM+Rm-%FQslOD{s z*ZhiPq#0*$>m(9m!vsFMQI6>d0qLK*EnreyT*WPlN2!t_d(~cC5_gY&1ea|se&Q~d zD|YR8t&k%qqFP=iSk9rA6JTDV+afB9GX%{SQ7>Ie0d$GLr3`oi&`rb$ zpuGeaTY`5Tho+D6qOlIVco?xb7g*{Z0bi8n2*G_g6-SMLcxSzaggD2fHYd^sfn}5J zQfss@GoOc7FR+};tYV#D6{xl2tRsOTLBGJ1nk=LXL)ZrVrE=|LW`=JyLa3Aoy5>SS zd$Nfm1kMMaD`9S0A%O9XA>6Ppiv2fx*nd+3TefwOWnCm1BT)sHk~J|&fWr;hOyZfheuxuN zw=terJ&nWVrC4E9*tV`eEq5H0Sq$}B~)WcXuNr6CY4knA=zsunWTdH%pKanVzq}5lUm1lkcHVc zSnO9PBYh>Z$+AzJUN_l&w_u!p@q>2XKj&SCn+>aB{VB#Q7OHb&er3sjm;#M_Srlu|45d+b%n+Lr(6?K6@@RP&qkh zjR`6N=u1Gf0FwHW{p#m#eate^**M4Sd);p7S$h&hOVlR-l0a?0=B`k8(iQ9gg6Y)w zxP8=BT*%u|hGCsMsJd|w=+YPerbgA*)-TIl`MIS_Orl1qiNdV=+U+oon$?1+49s+VB!M@- zejo0+V>dQ!7_jgyw#oSm%Xr|yr*Zi38I&tE#$^P>lde>hmuYG*r$k-N!kW?I`Hn8U z;u-igceROH#e7#xKCQ%b(JmopSG%?m=eU?mmvPsYChpn_Y|5~$LK^R@X(;bH>vo*a z=-)gwjc**B!+fz}<3XYPGI;S}3`i#08!)?aa`Q-6$;^M{8;jJibweH7H?hB>4Q^UJ zoSjMF;)33uBy4=Csw-qswXth5Uk+OJi~7^NLVTW6DyRd{UH`B|i6R8hVVw%Z`9vIO zi=%|Qy^xXu~ z{<9}X>YNgB{9Fs4`mbRp3pfk(tHo^Y*01_T^SRl(WOg;0ya{^haV+H`NW@zhNDD+e?wR}q zo}HYoz_CO*#C>MHB+j8L+v`pyn%P(%>7p1<SV#lB2_RbDfT**IB{>TgH)Ay;NuA$UJNWneNOw z8c$z+7A}+#CdiMle?r`-c;SQrY7onY2-Fh8RhCa6OKA}su`aoJoj@W^wJ!6C5F8I+ za+7Yc453ox_+kU8RTZ9vuyEN_7{W;y7)=1#|OpG8}-$n4b;}~0+2TapErS)f(lf0^n zi{+UzaU0c-127tmbDZg%cn6@_R3D9-{tSO!a9BT(%rXhz`b{0DkCjj&xpxL|MfbMenrG~8^7fZ4oKVPl}@HR zbK%VMSU&!p1*A1)+Kh1DoA1Lf{n9Vl;OHeygu1}PzhK2C#;zWuetwq=-;esm4VwS9 z(tD-UFK(}!?4m2>u~s?yrRUrG#kpGlE5+4OJ2LxWgQO#SbnWJ^{>rbKxtA_Y707Oz z#KzliBnTvs&n z9@FWxqO+V5O%MvS1zk(F7B?=GQG(_K0hmCmCm=@P+~q<$fY4^SLI&;FCVGKY=&}5-o?MPRNvlnH0IuBg^p#mASr7p!^Iz?h0Hx2^M;`VpV z0@Wr$LogjB^f?!n9m}BJt%orE zLLQ9;_Akqn;6^Q-NU{GnpjM5eo+@Ez?;_j2?%JTGbF^c)aI%5<(*YSTv>M!WuD+mFJou(c?IsNY=1- ztbrZFZDh643~@AajH)-)e@aqv!bLvrPaa>w)5qsAS7@MNgKj0|E^#xO97SeiJNrkX zG|E!p%&?-oa2*>*JJ>SOK`Jg8bAnWEMyoY~=-CLS=lM*u1%_R!if%O#5VjLFsK z&!d)~qPoaUeA)b54~cr)V4c2ONqzo{KYk;A^%pk7j(iM|p0Y1JSjNx(%ER`Jz&c$e zagy2pk$-`)+uzZ32vP^o`T0+n`8$O)cdk$`h`JK_;d>VZU+?wr)kVGG+=O;% zn6)Sv&)0k1L_xD?t#G2CpXf^dqRWNpHT%@h%_l$3$^zJjg6@7;-yGC~)axdDubZEa zufI}i)*H4cYppRra7i+AGdk zE>fW$sv_i75lL4O%hm~wYXr+wks6|0ydzB0RJdUas26J^nbzVTLOe~NY~meVuu60k z_B@(nOxHs@97i=Zh_jgiv-M z&(e7g7_lu4a?)&I#dLAboL#!Ougt>KN*HS{rmc@KyBi03+vL6qU!_xVB5yR}DCQ%` zW|~MPn0wTLC~=(`#DJ*mx_HIXZP6_88Ey_*HK)tpHY)VlJhW?X0GX=e4M zQ`~p3ec7G_$__L~R=LpPG%FnA*sFJ;ev@UT(y?R>UCg7`_ECfrg9vBF(PUeaD|uohc+U9RlbOvh3f1cn3q=NQ@CA?j#_5Z8L=X*}wM? zt>474cMF02{nwA+1NZI2p6fQ^x*tX3XyyxvV;=OO* zj~!dG99OIZdtfowz?Z*%kc;W_n4Q;VR6QqRTQTkmDJ_y*+A{q58Xp=hTV?4i-x=UsxtiW9Y+4l|946& zi*SH?L7dDA=ezrHg5iShm!n{KpMqwedi{NSZ#jbDeCqWJh6$Ekv{o8E$*-Tk?-um) z!v^#4(+`I8sn;!N_tWsnPvc7E4N`BYR#jpbk`2`>-7Y9rK3a&CF5OIN;o<^VZ$=69 z8b}fRCDH^5tk~*^6B|XX7R6FMiD$hD9Q8)= zWOEFk%5BHvodYPvw{dypMxc_%;<@93;#Vtx&aTU?mMJ_G%-O9&*1k%#QQPzgUIL}n#JnI8a zI}@5fS|Tkbe`@{DH1$y_^KBErH+A7lse$rx4f)wJmS-!-Ew)f7#*wR}2zU}GmP4pi zU>C)-s)|Q+O;8<@{5k(AiDqvud%o2Y^+rvUW$NEolbdmG;SwtcvM#}E?s{aXm7S_eAXY-@gclO=7=2cQ#ciXt@Z&96t*%iU>500#^?)Qr` z+w*3sjR*nsP`H4bMhbY_&MNMns9~7TPNWN;v+!KplI z8VrHdMHV9zLn=FIm#x^1h4!3l^Xmg>wmYA}Z4(W=?luqCZ|fkLkf@TxEz+np25@0E z%#91@3_fd0RB;sFZJhbsv;3>%@)lWSF|&A77DaDU!J|TQ{^oDu-~GFPhjZu7nVV0( zS$fc2)a%!451O@*_-0@E6!i0{U-*71NNc(Err#URx386_+=JnKvrj>@PrkFio>m zSSNIF0gs9k9U+jG%r13;Xa}I(1Fbv%Ltc#e#JGrisFp&=&o@zA@^GTG0sl3>8~-D} z2hX>5qnX^u3KNlW!Jj{U7`4JYfrw-{-QusBS2`PTwlHpICtF{!{=$)J69dRnG^?!~ zXeQXxE}eMZ%t}Rm7Di@TgbliBh)fsoufLbT7 zyHI75S`S&%FawAXiG^rPDQB zn3I?d2fPv`fEEYZuI$$v3p(1LwMkcXwNTjOW@(5U=K+pE&j7Tpc6Xv2t6^h&wkO7u z*n8bDc5TaWlMS3WvxuqbA~(QGs4t&F;lgvsoqY_&i%+9bnqnFimQ^Fg)%(&GSf}q5 z>W(5ude%5^7;vUCFs(=1Ch~5Wb-Dtnp;jBqfU_}Ke4X<~*Di4VoklG3%J28mf1H4^`JSJ zMz5PsK|i0aB9r>9BIkA^cko8}{XXIvvJvXC51q%h)zr!sI9yNE8u?)1P2D zp3u3|4a8$QnW2eT%*i_nC`Tm^9n#gs1kF_L_&ow6JIh#CI!6&Fkk*H9I-MhC9~OGV z!&Fh-VnzTRB4BGL2)d#u=LxuSAp*NF7u^Jb#UN^(3<05Jtg{64`lyQFuvx+2=IzLg zPcrQ+0jZ>)SxbVlQST&n4J;76h|}rXz#(I{tu>6Whx&tUV(#|8N@_la4b#uK)p}aH z0i+3VHwmH(xiB(=Z30=gm-@)U5DqZDoy;KsO`M~T3hnG_0%je_X6Hp4SK0wxy$NS9 z2M(zOruC}d>6W9VYyVa*ZA93fu_%GF`kRxY!y{0u^PF|lpuP*Wj}+PFZ80~wNs=t|k*7`~ z!aj?|6R2^#V62Msp&CxqDmcqAzs&NK3LPv>7m(l>8YKX~b>9TuaOZaH-kL>7 z)er$-7*8L(fCnErhKqA$7N2clg%tU^Naj_$+QMA;qfLxDnS9-6T zPeDIXum9DMy_#**yKz@RkW);PKPFeJ#g7w{WRWG_A=%edx`{nIfxCC;B!N0^-BiQ= zO;wC#3m6`#BAclpovI^gV7hJ`Xnn*a&a>p8o$ijg6R_41e9>qJ2|M0Svd|Jc&Xw^^@?o==yUq-amU_I$zXn^fYP5TSM%`Pl8oiK#%^p~5$vf2E3Tl){=R!gTM zP9Q)LbcxtW8yPzqug37=sJc8%M1!E&0nt^Z^j7@LpDqe7B|rO-E`xeaNae z2yv<;PE9rO{NX%u1&)4#X!W;=acSIWJg8nPby`(nK6f!M%jbB6o2IO#tLyj$q7^{n zP!}O35@}>INsMww6pKYLJ-du&UO0=VUN}#{GmYt~V_2R!jCyH`WiPSZ0^q8(uP#sW zzfzcW`tG1h`kDrtCOMHg<;=#FmU}l?FWqs+9ni6ucieslwr$&vTW`G;rD6%+eC(UZ z<#KrY+ux3XfdS5EHGKaM`~cqambVa7jiXR3;s<~52l2)?z7dq%+;8C z^`P?IeClTo>b+*)9;Be#<@|fY`6_5%i-LZ^I6n2pmHkS6;Zr}izbz8TY*(si*6Oz4 z2~+Kz!xFjhol5a;)WW z&uAWR*<8bG#wyri0Ge~N^`9$}lmX~c2M-)s#GgEJ246cmZ)c&q69)pBk^DGD?CW@H z+~lF7-T?cHZZ^K$pH9UY9jxN6n z(!qH`ADPl@8LiZd)GfEhSu~m^fF3kXwA!jA4m3AFRtT0W63ZYOAK(=wqy06nZ1zhR~_qzEM%t!uyn4sS4=9BEfbl1{*$&VMLVA!?NQJmg*!Tf#d4dau-1;h5nyBg{j z-_K8WzdWxdZIPeWT6MS@k}PhMK-y%W1(;YAlU=0UQdQal(gK*`2(hfqb_}%!0d1Y& zC>BS}^V|eQm5Fw+bP^U1b}-$P?R<#}8IpOnqXcAJ@XL~mj-XNX2#7rcBEtkEG1M(RwyrJuDpn=8K%iY* z0V>R%VIo$JWM>*T#2&$Gvrl3qR3g}6T!vxMtnP}hIErhaTSYOmbN7{RSH9*?o%1&H zkP4%?NKjl4BN3;afenxd+)y*%Y#>$flup-Q>G|V?%0xw&pp*-!pvqWo^rOE-HbN1P zc1_{}&jK&qj|u5CF%ZTm${1;va4Ui6TegOA`Djcu1*G+H=LRk| zd$By7z_}MM;Ouk9oqBN!r(Y=H?2!&;rnVzrxQ<{t0goH2OrnCJtlm_#QL45vzr=d7 zAN1X*&L6Gpf=O@2wNs(-7M%pwC03v0Vz4;cqq?{D-0qQpPk_|%w85zHhB)H}!( zidbA)L@r-IvCMigAB}?$H?;NgIW%fB%ulkR?_JWUF^)7JKvOo72(08DJ@Lvw4hsbe7BIv9<5 zoZGm;)LhN{qFe{%?~BQOCvs}nBF&dN<;k7Y5zxhv?tV7WkM6wlPR!2E;-;H#vdzVZ zKlEYSc$_~!WunF(qWzIaAHk`Ur||A~zZ)O?zz6ZflTYBKqc7n-?|Dx*l~+#MK8WXe>HTac)jjx*?m1&?;r)k`O3E|j&BcAZ@8f?;1V zF-kRGg056{V31%yUlVfCHKmo<%mi9AyVuk)R0&>9W|zRT%E?H(eR}F28wa8oiHp-q zu*^6D&2~04(~)j&1Z)mqJ6)XU=;%F&4Bdf_w}r@RJF2x!#&ydAx1YN!*Z~LMpUGP+Vb{3aZPqn0e_rl;+N%S;`U677%O9 zU}Ni9yk+1kc2MMsfdTrgE>>1Y$U;6OBep zemu#*;>rs=(=Bigw61vHnq^qMVrPFx8Z{)_H3LdQ{oUop$|~IoDaCSFed}B#^fsb7 z!3AnRmZs~NId&M;+$`I)%=)T7)n)|4l_r)hG%+_dic)b8(;GFp-)N_fIKkX7=e07^ zo6EJ)XtR85+!O)!4Yy`6vbl{o*S91WsstA=*2>z_+L+~#oVpcervgYFVzQG<1rUk5WgGJmDnolUzTl>8;6k**D*^K+gnLCio;`TG%FK+}{(hzqI! z^h7j=dpJJdJYK@SOa;T?s=fJ8K#duZesvq+OsRzjUs}SSK7J10IKFU24z#c2AMvsT z&^wVH*g_kh$(3=YzZSBoDsH)Swk!;oh|GoMjS#rU383Qy&=T1&*=hQ6gi;A0b8Fj*p;)OSpU)GhEc5y0e4|r7 z7*cN~B7Df&^?B4vrj&v-!0lRN_4LogYDb4Bb&+K@ZrOF_PJ*brw$Gc;^4u9cJXfOo@4p{^_Gf=a3{kcG z?z-#Fu8$+}q*gvQyyu>KETbUU@<{_@<=R}5c3%Bh+-p$~ob{Uf<<~EqC>UOPkb-{w zs5j2lhV#h}f4O{pzqQPwUb|1d=|~p^-9%Rk=TmREwcLUaXm5P&mS4%uh9d1Qvl~b3 zJYn~0Um&Ban5N5tzbbSILRkG<2IVb3?5eN3D_M!x87im1J@{3zrKy zeP1&)i^<3WM!gEQW=hyPSjAGIhUwWV>g9r6OJ10pLUHC8(u+^w{*f1O-^elSip?P` z`At?!6NB19MHcthT0)bA{;e&XE(c*0JHMD_>mQnAj;OuVPV^EeZq`Gn6x#$h3=wWK zEQ9e!y5d>0$jq>o3e9#xhmuxM<;8B)WiWD+Qk&W-9n2?e9Ox*^A0yyOvRo2tVOIL8 zTBn<60yK~vMmEyGt(gWgb`znS_%5{KI8HFt3X6-~%~7aT$;&Jw0ad3)#XjgnCyCQ< z;=U@0xs!(ofJ%%fnb#O6+XVAv{sh3r38&s_h6&b^EZY#GVS=QlPI+=7LKaT`qVhL&6GNL=tvGyx5?P zCxLjq2~k+%LT_l{z@8{Jj%g9;*c+v4O|Bl< z=NxZdEQ6SrvHovyL#9n)Jf3FXv%gzml&fvjYAxndfxi z$wlTTF0`MAPcOH*UbxhKoz_XD$LfwdC-9ora;I)w5I0uD=xH>oc=Cy}__zP|vv}&M zr}6aDPn#%*NL*xr;CH?2-MIex-L`(}!{v9p^BuVPrknBCfAiNkdEz8K{CywBtp{$! zQb(*8~-%~9Ll_!bQ9-fQckJ2i{C zm>`B!XuA7(k;a+quXx14Hu^`V&~4C$mQ}}gDUo|pieCR%TMhH zPUOBhcxs2QeDcjfzg{;Vy!mcHyXcj;_3HiHeCp@-YTSIY$hQaGgZkyn{p`K&LEWd` zaH4);gJIV4@74WNJ7f;Fx6GOlUI~y^%nldU?1mvb9YYVt3V`-?g|j>eeGP3zn3uqi zZU?N}X&M5vDO)HRieb|+g#mJ9ah~X^a#}hLYzvQCSm7f+M0IZ)5!61+pF2iC%dn9c zLAqovFAzwF9Ec`(6OeAV1faDkj5EH6;Yc3)(+fy+s+>DJEK`GJ3*pe&3Z`c2CL@hb z1CeF{*C*%jk$pwnJyyhsS2xhpU^&~`b25&0-Yg{ZR{^_rc}b|5c1<7#kOg+TIK$P8 ze$)kY)eo+IVY_`$SDS~UF0k4}SiH|x*MTGh2)Dt(^5k%{B4sonm?y+bC`(sr^h0GaWFZPcTNX=?PqM1b?&sBy#tV5Gv ztje}46IjJY&CIyveP=KWbSk#s8;DmupPw$ z`-mGXg7bJx^#)4i4*NLHg|0($ogh8RHp^mQqJzo(A$Vgkw9;WThhr#Yqc|Um;Bya8 z;ozAnigk}AWggc0s)OqZ6#U>Z$a7D zT>yP!rifbzqPGx0C-p6WV6nn<^VZ^2;qLA9QVoxv%j40L3wUY1grWgx3)oecBlU3- znW3%74sB!7+~{z;bc;scCNhaC_Fosl4Lid~C0ZO$T;ys|K1bpbdpLfkjML}q1iN9| z7>c88?bS_Vg)C9_HOH7o@a%b6E_$q$L^zri4oW`fY{zC(Vj^vnDh+P zQ;!@ug5~99Jonslc%E*D4jp<~`rkR^ms^b{Erjj&y%j^(@3HmI6c;!hr#i07v~u&v z)XLa6F=3mLCg*mEb7*aN+uPnwApHR63lHNPHehgI5NFSvHGnJdoJ=HfVd?_5Y~5m< ze1UMCkg{>(1ja_kY;*EzNT>aL=tCdEzJ2>p$QSUXzy4AW1F}0!2CoS31yj{(71Ptx zD{kxb-9_rx?c29s((fYKHCQfpMR;E#h}?SXZe%7icDAs%oZ@Hc>SzPgdb2@*Vz&o| z;`EC#uNLB=C5)sC$PPp>9ByE;nitQ~PN@(ttVXGdPq0Wynj_dAI*m6CoFkAg zyY}E>eRM94|M^fE1%d^x)QGf7*czI{NB4$sGXa_xCt!$k;b;Cc1pASUZuTSKOhoKz zaOuLUA#teH2Ch=jZCS)B1R;9uO?$Ua0=Wj%G{FdzGHhKJe=w0)O1yXeF`RLh6^BX; zZEbY~mSwIJcr@uCKv}n=?>eY;#b-1J$iGfqZnD>!?zMTXDRBs+k1P;G}XGY9Qgye`_08H>2)@ zstu7YQ;9}(8)2C3&GD}r33Zbp+ojERuM?a%n7-x?CjzGLEcoQpEO8;*q*HG-i&P8T z;IboeC0XcoTBoZgjkTZr*<0|Bet9dOJ^!id636LRzg)pT{)Go^US6lQ$bTNYZNz!} z_5a)diEVFt?~0R==1tBUhyUom;F(YScGvMzI&k0s?!EW*sMl)v%x6D?$xV~E|1I|$ z*#6`vKZVhe5xo5!Z#Sl&L@{&(;k(}TE}PH({4f6e5-#%9keJ7>d)?~{xC@voz2)T` z0r``LiG9+PY_;qMq9$Lw*SoYqDTyBZw*herX8QwY{2!gd(0rgH6&5m9p3p|VaDj-e8 zL~f28!foC;0(*i#KJ-;2@u^1(c;TD?Kg-fAU{5lK>#>L%N5eRT}j9;04-G`h;B&vfZF^7q^TRI4x!qJB43Wv&$C^8ILbw%+i%8| zrLsPfndOPKnz$=c!fpZ=`RMB0sb~rhS5hc@DOU##1l<-`(MbtOG@={O3~ywe$JhtM zcG`la*J)tprKeF@I?wSz0Gt}Z_;oiS66ctdTrDe9uU1f6ULXL~7D~WM<$zraKAL?2 z$=35oax*hDoFI^tSc*RUVaN!<7r|PixCyP&0&YA|!Zw1z8q+M4o2YOc&Chl4+21*Y z+%mykI%8m3TyI7+o!cQdxTw_b>Js~vo9X7zwNqQM%h$QRj4ZuwSOrm7g2Gr^0J@Bw z$+`p3dP74`3&I}(X$G_`t8_R=0R6&62cXOBUxjoKTjX;0Z6eu4t8O|6JcCr0&uVgv z?%Wn}Ao=0AHMEa9uixQeGl6uB<3cBL)asIZcAV%l=PNirEsinAoefNlVd*Z76|(Z{ z&1MqOh}*OZINObc9lhn@Kij)OU|z55tnhBlIgqS85)-3Y&qar0rroJmmQF9t@)&{6Dc?qXzqUF|Nd*({;v1Q zM&&oE3w7`hKY^$JzhA znjRu8;6e&veLNPaL+44x2sX2AoeOQy$pBk|Zc&2Fr6Lzz##MAnkEukNr(|DaappmD zsWFUBY!u0%5frEA>?X8Ow15`s1X=`p1kvFL!E-cW^0!WO0NBzwhw=8Zl}fMpPcDS< zwZnCj_l&j*xGA%YH;h){)ygbS7@LOU%$v1i6$F~67OQrQk7Rard!h=b`a5pC^i{j^ zQ(IK3;;iXINx4a8l>Xgza-8+TONv40v7_uXp~?s&i>LD)B^Jo>5!t?mEEZX0ni=-nKS`4@t>9991^&| zO;MW-A(5DlxX^6^|L8bsvF&Jk*CFIha5JF`ZL*9ZK+L$!8gkR87`DZ{Vn_~eLTY#n zi)T+@?({L#N=23_g+w}wMooZAvf;|KZI{U)GKfauA|gxkNERB1EjN*$=UA;0@GaF) zSg4~~VqeE&@VH6qXltZ#$;`Fsko@h`(K5~)oIx_1)~=0V#O~CXWCyXO_2=|1S;6He zv$J!}?OGgJ5Q`(=$6q{ZH~$1 z8Xi8qh{w+@<6^0Sy6w(fy1pq;+CIdw$$m%=Zbo`wlI8)rshr9|)P@(XV$--TSBYa{ zRHx*G3_wdBT5m3va@;hYEMkUjtxZ|G)0J6vMZT2SmQgQ>cx-@Un9m%YBnRDUxf=-; zr>)a_YTN`hIEM5_pj#5Po0?8yMVhw+qKyOHoT8d$D4hwt3jWt=o&MH{gX*@sHsa3L z4syQWoJPBQVx>YjeX@x!ef~5pmw(#UX_fRm?|AFmF}!!r%6cMZo6~{0XP?5w#~WcqH;WV|X!of%j8DFKt$0^U)neIzRI^soipfca=}BIaV96cD<|`A@Fr}wRpsvvj zqgJUKud}9wQwgdle9-uh$-x*VG6cPhuL11%rcM#_83>I<8c0MIxbS)m$8^i$UTLu> zV1zi(ae_nl5u4+ZOEGaymUZr2bw+Ws(IOa+;PGR5R2u@(c^nwX;jQBhj5B?4$7*(b z8{_FYWkDlUql0k*KGloP%+sG@Rd$^c;mT}TiG}CnQ0X3Jd;9LHlg!;B(O<9EefKW7 zmb>}!hss{ZtB#f?fqBCzyAoVV2wGv;x2~Uc{dN?Ea+Gxyx3P(s*R)Lmn}fiGo0F9T z^J&*Dkvf|@tg?2H$hwppF!DRodA+5uc9!$ zC}ho|bvslIEWN9=kXpgJTK91=az@s?>n*ZpNdH~8mGI`QzHDL;MeO$$aPL3?`x6BW z5$H!bw*6!jMI8S!$Jx=PI=*mZhH4f^7Ro5I&8@Aw;au{v`>}&2Q5QfDY{9_DE^baX z@Uhc30{o|PVVlS%%DCzJ4sP8W#Xw3oW=2q~MD1MYay5?A=bCuoXaNgL5({EPj!)NA zt^_`*KO<2B==dNv?GpKk77xby}ytP15MHDZY==W}KR-by}PJHuBp^Vp;wPQI{w#c$$;1 zH7Zxib{@FS^4_v#E9U3tyFQMzR=_NAnS$X(& zU%!%@PrjS4ddYY5_1-jOzFfLK`QduWck7piD44$Q-y5zsT|Z7Q1@j1|5p?Sp?`lXX zv~&wysm66u3#`DVQ(8EgvI<}eqm)kU2vO+)l9)%OPGDDWp~3|<7m3+qWt;$0Av-7d z`b}vNOB=v6Fxkyl#aFqFvmKrR*I%a9gcnOfNAj5%Nhn6pMi4Ddt0%<=Sf^6x)iG7G zRzB`nDOK6d`2urbS<=b2y|&lUVFr{1q6M6Fxeb-t#jvmZLpp)Gg{auMdP!kr z0BYilvd?u*cso3R8ny!j(9z^(wy#cKkoZj8jV&vIRNKzwRx_x!ILoHyTU8 zizhk3GDr1Gr9v=0%(Oh)ET|#1X~|c|P>tm0J`D=YE`i ziJc}HSw1}z@lFNTdpW#mFo(OcMNHT+c4`wBLncA`635n&r3OBKbPiuQI)fvN6%^U# zE~F#bTp2DUxjR>Z(E$SJ&BzY#Kr*}0`o!m|D~$Rg8meN;colcvapR%0 zp&RuC7MCM9c%+DvX9?n~9AmaI^V?}vQ)=q(SYpVIv(vG5;ykxj0Ca<6U(W{nwUJ`l zNj6K2v0Uvn2J~^Tr_B}1&}!zmxjjJ;eTe4M%qDN;b)-yJGG3>3`dcNNr8pj2eN@Dp2WZlRW?%QsqF#HDdc*nDFZ{Ra7IgRRs!y+(7q~3TU-|f}*xl%I@%vQB*9aJ z0NR~E;jSg+qE7ILR-J&bjB2Hcxl$Vs9a^GO8Lt~FaF#WdP_ zo!;d-H<_2?KnqNZb0_fOxX^Zbg3mc-T%FRPkHT_AO=xW-;!OfoZe$1?Z8O2L8Mj~c zWC5gGodu{>A^OGHzG0@P3uja}eY97iF`6JKY7bIvMeV`unGs7d#1>yh46W9Jw&QveD2D;)j#YO$ax6n?gCfHob(`WD3|EE}N)~`-o1VB$*t> zLcN2>E)?;Z!?XC}OEWmSR6$9P$)$zpA(xkaoheEHoiXtZoyL(!PjGXhGnzTr{XiO5 z%rTR!;>O)A+_H!5k!f(;=*YP^pToFauyXo*6E7agV{Vxn5SGJ#=8U=;8*vIkpo>xhw=#jO&lyyk2Xh zGpR3JxL~KPG@1=eOiXlr99^-!J*o-yF32dat>kpHD%1FkCP7i!17N_szX-z3tc=Pt?!t>PhLlJPL~h(gxtf zadv=OzzHT3DNZuMnDN{MrX5#W`L;T`>5zb$0Jy>hHcx~rjsQz$DJzU*izkO;*fc

v1a|Ehfya~!8u{a&$w$MwALm*n*Xr0F#iZFh=fqG#HrF;p+ zY8x+3)v&N!#qGm2eE$v)BX-N7N{PA!EUt zHReNq6X6g>V>tz&#W@yNS7!P9O7X;fwrj-c?ds^li(@a~+@LPNF1zUh(AEyCVFlC; zd@C=Ov0M#fIoIMu<~|+^htvmpcBrJQuo@>SkCmN;(I!V5AogK|>1P@QGu?c&2eSJg zlNmHRBdE2uA{^Vy_SMInY-@rxr#MqG#o(V#<7m~Z^bH+OAvQRQQl0%rke(V8w_K%Tb*c?i7IQS{V-?l8OWiT(l&`5{oPFh)=>}0fjO>}y z=ER9{+>}_t8wT>YAy!6)EoU1f3ujG<93PR#E)?+DL(}-i*=3x`*9f55e}2AwsGFtz zx_r42i8&5*W@sDY0?-7v?y7rM)D?-OV<#)vGG4uoF=R0PpoC6IlsJkPT9AoM3qQ`5?EKF4xJIE63%^)9cr-Y*$;B%ayN}E?1_@(W{LY zEZgPM2!`vePcYuqrgwQ#8ZMnixk2zKjv=Qaf-oI%C$InlLH)jFpiI+~?94|1TH+lB z*f?3~G7#N#s1M0%)jD#a7%JMP`bl?-sU7UDjVS_GrRf%UJNiu=S%TQ6aVr;?^dbQS z0hvcI)^VIq|0+@ks5KtAcvlK2&0R#TSi*b>IC7zgNw0|aZjE4!AV6gmshQjdfYb?c zt2&p@fV6-wAq>N1lX?{{Ai;L%a*M@T)&pliL?D&n)f_6j;yM5=F0jJMpYa>iX}1pu znV#MLSZ$e-NQ2LL*2jg$iKbaxX~&Ibn=onXOQx-BuDM4*vD8K?E;({-WVE57r;!C# zW(v%53Mi{?vTGASr7M`Hmyuj58An=Osm)760KGnddV4dXi3$6F)4;RUh6|3dFdg}0 zOPYOT67dv-{UDCCPRi)mrpJq?9EhgB$y76t(vyfxyFuvAaS}^ptk_Dw%8kmI@FbS* zxE0Qc|)V4Ygx`Lfv4)+b@aC^Fhkx-3LcXb(7>qvy-*isE&JU)+y z&n;oP(zG+lEuWQ;qSZV^&ZgWH#+QNCM}%7tOGz$WXEaNsMsEZZm@%jXOf$&}_Fo6w zazhwHX+8sd3@ZfB)mjoo0_meCD>!nzh2I~pZ)A-?F5e?^{xUh zBY)9*C4jOYDSi-~`F1HkZQt&P>!Zo#~Rw3b^?7p)cUYV!BZLAT!W z1odDzpZfXxX-My-U>ZTQ$PXV(YpryyhE`J-=dg{^V#xrg$wv!_(Z{X~m)+cb0PUtG z`w)>}px)N4gHbdHCQ9uv@&sj)NfTKfG|DIvpXzE?FL?c=R$4=gtc2_ma z!txigAwGlLG_fp=_7s8p^C%gBKF7q%ti5Ze zby}ytU-F+$H~KUy`W$E}2dG!gj#i(C8ZA|KZp-EzwIS;lzm(T^~o66gdc_da2hf zXun*%AZg<41!zILZ|>DaGWQGHkFF+MKlioVRIlDNd&BmN+Z#{RFPtdo-Y<;r)~_r+ z$=t6G`h^d=iDX~P?^P3vvOHHHV3e8D4nc*)ISh3Qs0ln10Go)1>Eil!flHVRdcz|? z3lTgLAay)c#rtj204^3}bNd z=YsEX0rxyE=bn@OZI(+Y&P=1q$!D?HA|NZ`&fzw8C$;1gq;}g?AWMI$f&i+(v_47{ z7fzf~1~rw5g)u@fEwC&uvUIDuz^;@pazV3zu;MtN?H)?irN&K!dZJ!)S0hXL;v2rw zM}^`(`yU*NBd;-Fy_GiOOdCMt+)bK`v*a60m zu`ieol|WilK-xf{E2%3Y&8&||>FYSWSTf7tQMM)9r`*JavsoO;oYwSoCI)+LuiCiIyqbJHZdXmpWnPbX0?}0L?zuAG| zNZe$g6Nw??cI!fwX0yybC?XxJVaIp^H*Fil4VyAtBt4uuU&Hb9EtCk>m0l#$LewLG zZk-``eh%fzi`>v$pq~J==74otr)z^G6W!u`)TG|4x`KPx6kWJ*5qtOT<>oeyy?ggw za&gGDK^@KsA#iG5Rh$;2i$i^_0cqi(8*aFPn4*bFrEC|y96P>x^quIEBKHGQK{vN( zI_eE0zkcy9N4;r^`o&u-t*Z^&&#kw-qF%RP*?P+<^4)@ZFuu&aZhqLyxm_uYZw^wg zo9w<@uP*8hFY0yc7v^foFL@N^b zCgUs+9p!@FF6U6ZZ~>M1d4#J)l=69ugeusb2I2&qPDFy>fpI0$AyBRJnDz0ZWRva2 zL4jm(Hr+cw0;Udzl7!%lE0F_n$i+pr4-2J)+yZ8SXjMrf9Rk2gOJx-IxmM|Npc!@r zMANLa#fkR0&x&W87U{IA``WE8Cz>ES9S?C6;Xt&Bj;P%&tW%1oJ~04I6=6QHVjc0N z3KEqD*jxlqRD&^in}-;jnK7Kg3p8rOq2k*KE$m;{-{MGjIole$uJ`O$S&9Urhc@jd z2pmR;05BZYW7gxHp3`|drpxhimG^N|| z!f3RkXzK)+NCNeiWTImj86kMgmskY}xP*}!Ao%Q(a%$H(c8f);pDVYoq`9&<3Yh6F zQ=(nL&8Z^ZG+f5+SeaWojcxj{4J4>AT>~CEm&50e2|(*3Lgf%hXAN2{MOTDlPyl+1 z0qAHfO*f8teFMOJ_`i~x#HwPt=w-5j+xCSqF~YWELe;u98VTb>pSw`Ui$@E%IM*P+ zo=w2=yTmCRk` zY4IZ2^kb%PAL-ihkAM8*CMqK^E%l~1-G}S0yRI9;5%&czzmP>F5T(xR)q{RMT}>EK zzj&hFIG1zpjUTj&uH@G1-y7B^xl1X$Pr)>N3Wf{nz2v*~3*(#pbl0*63xS(mW9k_%ZBJCFjw4Ihqdj0?WFjZQ|>WKjuD?8;|za51#=_w6i^ z0&*5>+DA$PfBF((fDanskbzo-RZN-FF}+p>=JR#b+XPPW3_^n&5V4aV!ggv$2ZPMS zLnK;9GFzrQBM^vH7YkTCaTc|OCB(|h7;F_V5UOGax5--u6MV1*q6MHGNEe7^?gSN4 zR0xoV3D!n4y4Z#f6jj)CwjJBGLcm)l7>??65Ej(^b*oGzK&HB)CAR#t`+cfC?`7ugs{_lZEzY~AoHia!eJ5rC&FZ35^P zxYscECi|~59EZ0ti$pAht)(gfw1Zgs81$UC0fp!&ZLAoZRybQAUjSE}XB|1{D$d>& z5OqciAJJtUsR6{21MZ{_x;Cp7H0@SIx5aQu9MrDNtdd}SC86?Z95e}j6~5U{VQ_+z za;l0-S>ryAb}eCJ3|^CCvW=j+?J_eFjQyC>L0cPeV4ewdtxe&Z=7Dl@#PAtio23#FRi*Olq0oO zn<2GoT~7;Dl`#iN^W3uzf9r`&H7~Ea^zQvB4Vl?2KUBMt#`RGNew&D0639XPPHEKsblo&J$FE_77K7_vl?gYLA-1kiPC9*JYeh73md%;>qC%QbQ0 zTp4Gkn|wx?NSI?FQsVfXru{58y4={>ZG;Yrbh9C?n$~HZzU{=}c=KJ8xaGCns1y8Y zZt#^nr%p8S;9s4vXTO*B?%jtU{^1|SU3cAy!-tO$eC@_ZKl)J%t{$?S~Tub>BVcFH+{8_{1mh=%bI~;EM-w{q@(|j>``h3>%E^y9fP!3c4x$Gg=Q-#DzolXWIf8)}L3DIrh@gxBS7%dt0>I)72u!z-8q6b>Xrj%BVe#YzES

> zhv9#E{x$s1WWW=bAV+u0hb|tDp1#yAsPan7+?D^E+P}Ji|Fv66;UC?9XaTf6?3^7f zTpawK|CfpX>d|s^aehwy80r5u$kkWBVE7h^Al7`0=L9@vj*`e0u$k5CtBsc;$JTME*VkWL&?YZH_FpgzH$CtP zUf_oVeI)bCduNy;S+Fl(93?n6**@YUT#M3Z?Zv);Y5~6CN%G3#qA0Lx$M}UIPJ420qU)66aP^;KH$=7z=V#AS4l@-C@j&H6^4Br`I44hiON~5nX*tNIM#rOoF}Mm zH{qBy=kheNW6A5PSC;t6&qzy;r|ZhLYOi+%n&KAlQx-&Cf}X13RA)R+&?8%uG)Vf8 z)3nzN@T{@zu63=HhN89@V_0?XxC*cZI9e_D~>9i6t zVhCx+R$awn<#Ep*Nr%RjkOK7##UEAi&S`nMU|=~(p5)cpzCwPqrN&f;PL*ORmm+KR z@U8UhT~s<9lTXq#seKClq1|9CB$AbEv|fZn5v{i~D!Tzd`FXRtm+lsXzN#qPg6`fB z*)Vk-_h3$rxB`ZBir3jLcQ~_JV`i##&k*_Hg8JS4$HW!mz9}Uh_zmKH1B=|EpoO+ zt^%>zTzXdD^bYgO@^c)rE^BM}%ovf4i64xI2?D6>8tDR$2p4eh4O&{-28eEGWw{vx z*79zru!*1vHxtGHEWV5`uGd#AQI9QGSUC(chGX{*4uXPIxNL9G<`N8HYwHE7eySz@ zziUjU>P%^*S2AU~XZEg)FRwR2pr~Y0_btU z-b$qPQLHU@r9P3rV~6*!YSlbd|0q$DmK_}@<(L>5?4dQjsHtVWY9W#}-uZgWzjRfP zh$1`|zcM0d@8KG$;Fv%Xv{fohT(9gK#qe_?pOPGbl715b2r574YUk4IUoH&01~$df ziG&SSXMiC48BYbvy*Cs|J)V*&m?5LMGL0m|C__M@Fh+$R74Jw(*m;jhTiGrrLSi)% zX$nVfrE#&;<%u39s5E4KR$I^r6PwGNYcLWTp_6Uf z<$G+pnjQ*{axPjoyDhwwyQ|hD`B74bY4b7F$k$2SBNhTSTUD`|N3VM7q71PiP3BXN zH8st0OpiotqYP`i>!tcck99K()?9}+WX%sr@+=_BZ7c8P`Iy+wSgm#URm=1*OlfA9 ziv2~^fJ>wZeC<(kF`~j3){XxD*=jx+s-!TjhN zcg|dXNdV_qKq5_&^9nMNfoHo1_Mo;`4ND9tn@2KGadktuS8A_z{@FPZAt z5hvtv<*6`DeYTeMMAhewIdaqT1@C@V=?+1l;!nB(E4lOY({!SF5bYD=v|*$GS8&(% z_|pFJsn8th7;~#CfZSE3`yMVF_s(csGYz=d_gRRu(F_v6kr>E^Z_OR1b2^#{0w=1a zJ>{$$l?MtPYuOM7J#updvPP@4!K>gUjYUHX#Dw7SYOS%IT%&|OCYgF_r#fRt-pTrk zC3!GCuFYr`?M>XQm`7$y2Gn)Jt1Fq9 zMpF>bLGnHF1ssygB*0dSvaLI9yh6JJaUPJakSl$?n!$oB$?lNL|KamJylzNbef57>AS97%uKq@i;*c-z~P^$l_)$pZ#L^E>CXpHnpRC5m=W*C)wL! zImK_F3~I6^x)c^u>b|ew_NoRwoFcDHNe~18vfEC>Miii(U;PK^axP}#Cp}M-?-RH( z?hx)OOq;qLca4PN`i!%0!n5I#fxXIwKARw|AfTiWV*@=4n|f=W_&{Y}vPEj?o*8~r z19D|Tb2;>4zT^);@b^)BFq@mQau!;iz>f|Vx9+o)BScJDHtKyO+K1_Kn)~FQ}aVyOZ9~zMgr{Au7=kJJmf1cA-Oo|P@oLxr# z?TJMk(bDIB*9J3K`iqf&iNr;Xl$|G84Rge3mf~2e0=|a#x=#(f&MPuZ_E$pfmda>D zu@w*Ef(!@!Wo>p@4%Y&7$(aK~X_9F5L%@VLKmlK1k>v4-rAdk8M~b6iGO!g^wka3Lx!$~V}O+)ZDO1F~wq=}$Y7UO}iVSLerB zy#hr{NG4vANO>_7QY3%UlW0{V7ysaKq88bLSg z2VCLZxmlA}R5!-tgHx;d)t#;quCTLdig5ZSxU9DBYL6=@UbE%it8`DpL4jkXqiN#> zk`J$!pjJC2(xOcEWJw>7qr*6)sJ3~sOp!C!2HoQjAx79*1-526+E#kY5?mlf}te>e<7GVn;5vy&IX0d3pm-Kug_*_jKeTjVLk*wV)$i7paR)|m< zl$W*o;KxQ`B{E8*mT;HkChA!we(jVcc6CUA50v6#J(8Z!na z&|Km+WG{uR$MK-tq_z@JVfpL^NM?ObIq*Hg2pY(-!)NmZI`*n#c=1$k%Pfc2q^GROAOVGJ(llkesGkK z{HOyXfv}PvNK9o(8)I;kc`}!B$6?N}U)W(X!z;0t)GTD0W6EUjXhK*7&Lue8mREwv zU6na+P1UKJeoZUn&x3zOFib~l-!!?@9Ro~_+`ULE#LyVkv1f7CGz_6)<+AE47qSy% zWzLoNuCm`sva#e#CDJO@->2CjqISOq|K!z$LdiT#S3tIAP2Z-;02EGec0Vbxe~G4O zS$-6HW;*GlUUE`UCh+>T34_0yfMc4kaFp(Zsrs5XFNwd?J4#mzJREGUKJRZg7IV_2 zIE**TV$$4#F+HBct~+c>GGr^%*e>b2KB83B>IW4`73k}Y`!Vu+lI&B4pgCD(r$z(j zQz%8hrey(t6(jpcNZpB9$8a_ZQ7Q~%V(6sTRbjN$z5pIh^jq6MlaxAmSheGlj*eY? z)Rekdu@7&Aq}L0?vq6XxXxwT*-F(Wy>vwP$i>TiIuk@maiDUsT;dfEG9hg{M^1Jnq zpYAR)z$glfX=Hw`CM0xuKQu*%*#P_X^nd|&z{lC*Fab;TuXL9YbFh`7Ekx!gj>^l@ z@}TbD$;j54i}$ZAPsxcMnHp#-M>-lojDr)n$Enf0bMHYVi^TFc2+Jz4Iu8BGX^0hV zsN_cyt=dI<0WgyL9-|S<)_q6neC-ctE?I${7m2PcV#&`14K542}YXBRx%6Heajp zoY#&>+Wo;-uitSg9V&h(6Ff{-J^mc~y0AqfvS7ZUC zceT(THpM$;cO#;#A7qest2hlHNm~JmCgwbZR~gmMsF_f3Bg~_R@y7%l?THE^={D)p zzjp10ij&G(yV^e_ck6UpNjhYACuwW;@EtFo+$o^2SAwv`5wzutDWKfCVz{f&_`qms zP4|TJJE%C`p|n_YgrSp|kIjhuxKo(Z2QcA&P}>a!Dkvd`rvy zov^5T2~7{9##4gAjVnGs2@7oxS~CT8mOau-5UA3;T^+$@QfaVngy?R3 z_+j5d9iYk?ml7-13o{3;5sR2bm<@VFsq%Ny%h(U)tg~|N2=dD4oEsBzHb-75Qx;Vn zSFh(<4>0pPsvIf+ub}1&bvO zk7WM>J%H+=(X1m7*Z2#A(mvSsb7)l2%c?}8<<}jEg6igKDCHTwOlT85AFH$Z@#psd zZYaFOD zJD!#6+0j7E#O`3svAARX*q?eQo-%F|% zkVs0s3EwnbDPH%XL427QZP=3OEy!X@1JcKW>l%4o(yQAnZ<6e>wBwpfN_UX1-ACXi z`Ct}77-wCXZi=(&S-wp>Y)C?$@GHWvHHcRIj7nE!^~cvEE8~vwM`j@e$ErAxbEorM zyi_7l4l&PbhJRGRaM(Cd{e&BO~vqW zO`_xy2Q@V-mvS7MpYD(BE@z_{2PVe02`w5M0k^vWAz~Tm%be!x5ZJcRw)O-TkOBdw z`t;VP!aj9GMc<1^2Gnd&^V1X88ywgmafl8JQiUxMg`F*Hug#)%h3^(ggy@*0sQ_+5au4q2<&K|3+g zzHUQ3S~!V|BI8n~1=CY2^`UAjw~2hP)~~1;|3uDTH2ebr6UK$DJ$0Z_?_w4J$b_La zkL`quH&|i2*DX7cB?aV+tBA5lDjGX&7#L^IQ}a_>-(#eT>;}<_3%aIdzK&k;xW5=r zDp+Fz84`N{HAvycakbQDR9bD)TLI2uE@f5n6ZJ~UPd8yqvaa+%^kG^-BY2O-7sCMVQ%^oGo=0j#S+i%rH9~2~_Q^(y^YqOM(o``@0kEu!zP9 zzbP}-E|}8^!T!yJ;aq}8nfmGX>EndvCq~NY%JB}GcD&MzG_rO-{O2XsJgSHIf%ASxJ?&1qgk;Fb-&Oc%PwrK<@e%YxiSf|H_1|rS zDt>GNj3L0Ku~>^uz5&G(q323L+*JLjI)!KTr@gM)SI9$E8Z46l8{4O@&xQ}5 zKt5F(a22ex&K=Y##HIl;x8lI>7L9DzGJ>eSq43p8n33Hht$wX+#$@rfwdX);b?Fdd$}+*#SMEm6V}<|5LrP~$%##F z18Cz)?%GOk zReiA|qj5k8HM!}9iB|yadsZpX_oFYZBpD79Lc8UC=W=^L=XA`c!tC1JRv{{?W0zcM z4(~+O{F=~|ERjmAeJvfPi$yq+-3$48Wz6&8z{A?%c#q*7$82HbxMxm8f80ConqPWX zwJcp2g5~GIdkIOh+PDRcLO#(oN8wy*@GPsQ&$Upq<~%p*{d0V98!w5l zbtm;la>iYz7hQikch}zO0dW0f#W4y`)d5*5khudTLU;a3qzMyx4dt}qc7g}X`#(2u zH#6_-DJ48KFLKO=JZeSY0Jhn+BHpMssPmM+uW%&sA6qWg_1u>9!#r6W zJgh-3^4J51Q-29%?dSsiEzQbZ5y`#o3iH#WNo?@e(F_BHw{7J+xyO+z1oKfl|7kPz zBOATBMEL5s&NKiQ?<~sY*3^vz%KwmVTQHkT?dB>0p}qhh0i0K~@ohXSS{%f|mCq!s z+Pq^@oe$fcrH+w@n53bm&A_^TNV1f)Lnu(%GwI~JqCy_=d`?qvr{vSIK zs5EM*te>u}Ze*|fUYQfAGZ6YHcF?#1VcdX-4p7q0!FsDQ-p@f#=c`_`gZrxTy?oy5RLmGPPaCZP;Ey{FUy!nW!#WUF}#5*pP~)R|K(Vd&COV0aiENwbXWe=KTI2DdT->0c@|cBpbfHmKQd7TKfqKsRsaA{@l{OnlqX!SL?^&s!rw->!tJ|$$Z@})t(2dfR;Dk4KY$ZNA@dVMh%_gXKSpML&1k5 z1%cI?!=jhP93SVCTdniiuL$vTMSW`%3Wa^uANc%SIR5U7De%viBv@iWv~`Yt1aQTQ z=B%ij(_hv?`Ao?EDmuwPHEp1y`6#NcRVSx3jK2t2yZSi7#G9@=JWupEL$NQaS!(-Y zlK=0AHkYFPWPUvt$)bgTbTfY|{S3+kXp<+d-ta}_CF>GJU*R7kuNFDl(Qh$f0YjBU zA%`Z8GXiSbU=RYm{8zvnl$#c^Y2Wh{kQ3}N$HHX5^>|DE`vOq1aWm#sTx4^w%W49&InFLT257wH>L+YsbxRvb+CqaU# z7!=aQdR!<7m9CRz_j)vO*Z&ZWR%_{I ze?uqgBH6Vq>1aBer?#lv{NqnjD@PKeQ5<(@nngg9gY>PfAz786G{bhtFxDPS%+qQD zZUYykdn++YdwTtaw9eQJ027hZQ|6=HUYfIsI;eaBj?VevyA>oIoLb*mM6x%vDv<1{ z485z9Dj)%b5P1ifknXbH1nB#i&aSR6^lq&gnp@(-5B8V~^j}Bye!=RJ5o!uNOMoz1 z`#G88%uw2K2|{0Y^*c6Tt!G%8hq-!XKn;E*)@0S7HY4aq#gm*x1!F<_odkxjUMW*~ z^MgX?u=PW`Rc3~j{CGWeCZ_&T1lvxfL9?a~CE!VES`5vh=dE!;@^I)#EX8@$bOv;V$3pHglW&y?LZ6U5r+9R%4s*q+*z}g;%6vJ3; zViQMYdGg4-(R_!e0| z`EfnzOa-=AM-+afC-UW}b&sjq$~bX~MhrNU7_0hMd(Ed)(U$l%@4_4YctV(C6We(a zPtve!NHIf5R*{NTu$*0Kr6si>s(WP4siP=d=i=oiX+BX3#dPkK$QZF zdPS}sE+)TD=ra~{@zowj5A?!hruz12yD#)FFTb7AY~FNnc=-PQ7*gO|l*a0V;o7dC zidF5p#tHSHEG?zdis!4cA37-qr{=0UmL^;pQ@HR>jLm3QMVO!8&8Vm-5sJ^$(mnJo zL*vv6KL_VSLzZE{z@VF7Q+mC_`_Y(%@zHP<-6ooIK6(kw;>S9e$_|Xuer1mU6+>;@ z)$DFu;e(!(`0aL*Mggk*d8K3W+9s>x&m!t#8O*bF(5@*GjVy&J;3!?e`BM9GQqxDS z6>DSpacY*^lUrSb^7-kJ`Joj*d)+oJAZwo7e+%D$a#d%e6sYo}+KP`$svFBhSqiO$ zmd-N8t>qr4PjvE4y9koCa49JT#c&Ox;E#i}239^k?Ec4YCsCw%uwIViT93C5Q6$Wm zC}CGBUpMi%Bm4Cj`*m5^j|#1xJBP_fQuYrnV!f?#vY$Qq-))p*)dZ2)AhYuP9}hfI zD=ov!r|>9f63nR|oKG*nRYG>01bS;_p!PjQ->nJptGT%G*yVBS*cfw^_aHfF^7RF> z7JBm}?eeb@4cCjYy4jYU042{Zx9)JW8*cA1V3Nl@m0T2&a!-qspW9|wZChRVb>o2I z!0swRHj`s5HUWuWIMbUvE9v`e-G#3cs+pLR{Gbo0nEs0O?{i=}9=rMZc|SFjwA)yz zd)hv&+llqGs?dr~w)Rbpp0W_1met0@*y@A>5urq>>%a_#QEirrZVo?%30W+}Q?9S(__zL*gb9Im ztjYM&xOQVFppd_~$A)DEw5s?K?>}3n5Z087@t>_v)Byd@d&c%NLQ`-5*`B>%hCKXd zlWvJp_$Pr+H)q<||2fC#s@L56e@?k`Npbt}Kc`$jpB2RS&pFX&|8Fg0bYTudDQZe&&IrN!w-rV{vm+!w%CM&wB$V6+d9`snqo_$OozGiCxn0mPIV; z3r&N955tMVLC0gEG752e#&0B#YfkIIH$L^Yq4k&gFj>|w=th?%?dOpY+sGAb zaBJYc!-wBEcof6NyPt01ipCXlU*T`UVphH8)KBC-zu`rF?foJ=_0Jc&gk3r}rpK~;Gbn+j&u3a?)J&fG{<}!bbZ(Y%N zBkM1>*L+~O-IgPM=k2CuZ)v&LJXEeB`{JGHQ%;rR@XZgr>pY4!%1rT%q(Co+W8MRV zS{r2A@?MhXKeVZ;C91A5kAl?>g{^XCW&HNuD{;LVe9LG!r5p%*UYnd|&HUH{ z{hcKHoGbQI=u|O@35j7r)NS6oKdidZoO`VvC|4v?eNL2)X)Wd3TtZy|hv)9>9_dC< zq41So>{kjHX!m*DgMKTax^CXqV`SPnJ5Rf|HbsAvfzS=Cp1Q~ zmDo;uk78z8yK_G6E+*d1}L|{wdXekLY|zqOp$&+ zKAPC1B8EQo6YAga<=GEKg?|0L#PZpho^H{T1ggf*^i00ECR!zJbF5TWcNOneIIH#G zFz_@)|pD*nY}P2-oJw&8AIT(MfK0KgD- z;z~KoLQYgY>J1YWMxF0M-s*FAs6iL-<&!i$HZH@UVL7B1`h zU^RgIBnkiXG_x_@W3{U-ll8Pb$O(LQqPh7Mh!exSf}lt@QzoU|fx|Hf3qCp;-I<=FTrJBTi!d{+}>k&xYNXHMZ+~sqGuaAi};=F^|AR z3elT?m?z-xob;bt)#&##~;R}w@*IrRW< zo}Q2nV`>1gAp&3BS&fI@hQ3o0B z_G^C@bj)j`yWg5&P4^DVCw2EZO#^%@w(j_?a-d}F=}h34d=*;N6y)p)>(bzYXvgY# z_zQ?i?YXEc^Mud5xe|1~fhSzezCo-yBQ%3vi&s6d3_QN`bzW;v4|m}oc%$XV6 z`(Cq7+{V3oa}|Ywe7cV8u~)^EPiTVt@G^>4l5?%jLf-jKXEH>QEhZv*1+R@h-J*$F z3|hcXxAveI{l*lY{%mYHig&FV<{(Xmaq5T5_JJ-)nNlwHBM&c(shS%?y<#sK@LOM_O|#e8zUD`F z@Q1w3VWFa2Z_2s(sRlOswf&+Yi5r|w3_A61<2;hBmoZt3Pw@F>w0q9RZ9i^cN>O(< z)T;gPU}~itu_>=f$KfdXE$l?D4fDL`$Z+EmWQNVMCh{@&GH|x? zQpB^4@bJiewWBlOusuPwgJTLO_vFootC{vclQB|&X+6i3&e&3x_|2-oyt40n%F#2+ z6uQmRK6o1qcXN#FCWRA39@zXO4lD3nX@BB&%?c1XO1uos^vo^J$4&SR1Pz6enT{6c z3*2<$pT>r6gqkJ`ohMs78JGTEZT-+=^&WU#oCPittt(r4me8-^lEXZ;0jsfj*S_}y zA)0$mW*-O6Z%|6AdVsD#-^L!Utv{i{~8F7P8#F7?aV@FS{SeFjZGDJT1{L! z=z~nRT7a`!#sg0;ZGtx5Ncsvyo0zTSa?-G|$J_3Ro={yLJDRvk^PD7sQd@X8@B;08 z;S%64zj?Fg`$HAC?+PWRa&%PKBTP5VnOJl0DBI0-f6v0>LEHtKzcBu{A}8O+8HS+3 z94I_uz187SN~zKk%GdO{Ppr{<2!*Y~V%+xBH07qy=QoU)1zLA-mP6#mLXw?OLGirfS> zr(#4lD3Nr`-4An#IsEE_Abuqx2 z0Vj290I4B4Y-E#Y7uj6rBvPV+Ew_HfUwA(15qrYsR_;m_^Zmg33p48nbYKwY7w|N9 zs4Y0RQj^ms)%`vUE$1=Q4~!F#*$miWYH&^ujH%W?Z;KmLypSg;J_at^)B#67isCC$ z-)95FN4E}Nm5b-p60v%7cQ?1Wfq5i!Yi()=H&b%u{Z_2p{$&8dti5=9W9N8OAZfMG*lEA$A@Y(%~!{auRoGMo08+_3oo z@3O1E7RKBhDDmRnU~kKeS?Ce)+T$v&Z_MfkOF`T1+%q#T!z_(5l>>zA+WZSNL^Z^d zhHWg*<%Y$tDJ9B29T+$0oi)%5fJytvGJPr!zbG~c)uE7vQws*XR!0Oc7}w4XHR zn!fKg9oHGC79El>Ij5G#7>a$a>#?XutC`YVvHF+?C;OE1Sw4a7>57V2vUANTWJX8w<<3vdx7HaY2KBM6hUw|8R$SV*Exse(5t4c9PnRsJHNm!P1K{B_)2Z%gL(t> zmbY?UtI;0#JGnG&?ch|Wy-sFfA(hW4KP|7nj9_s4uh3cL6M=KYkd5RnAvVrl3T+mV z^-AL@C)#-$aT6)M%ZBDA$8GfnuY6K}C2QgN-uhr8(oL3$zN8q6Il2ftF2Qs_3RF&+ zr&OoQzKeyfdd=4r;tOo}O0GPsT5q1!80d>xHm4a#^cQ#=xb$>I#-9xz!e;iHy|0kj z4sj$E9g84sHAYwP3$ctZ9^Tv6uV(Q3_!0I5K45J?n7Ukg1`~q%LHtO{>G;&R#tvP_FIdD-<9UP zkPgY8#*p6p&g~yN@YkJK=kIJDoMM*Y^}(ym$K`3zA^&aML8aV_yqf8@*mi9!ZF^`< zV14s`%c#p`sulvP$8?}IEDC>e$%y#M2gvzLZ)iq^NAH}g*(_O-^I~y|Gc4%l zw|vAlxP9v+O#gD|ZsXSIZV};)$=2zf(t#_WL-OMeMe?mR=JLxD3M9zzRNy3h(aVzp zp7~LQxzv_$ZmEFsw%&H2b(}(vMv^av;v~-HOY&^2P?qv&)oC~)C|A7^(SOzNE{QZ# z*qUGFi!@_ii$Z>Pm$nRsY&Gw3pwmj$L@rk40-iDofWiJE(;dEMT@bHg04KWx*x+%M6wP(I{Ukb1A5fNqir z(feaIZ}^)dKa{y7t!ef=Q;f#Y;7++)Uz#64Z0cT-U}xZ%^F==k;K*V}m9x&7+%FM@ zqbrpRFTX*bKD1q;IU2j@qqtg6!rXFvR#n+0p^>9@OBg3^a{Li-q#`W zz%Lxb@Ur_*XNm?lPvOh*e!m4i`2k|fnQWmMZJjRexiu_x?wUC#pwjGcg9=zQ8eTXm zc``=JUj{u_;xqTksm;U)Izyv)^26>rO_;)P>y4J@Be>@zWutn+ndk)rL4;@sb8UG> zA6Wfs=ZS66*I`s_h3FTLY5BZdcC$LbgDDO8c6)@P*ae1KSb7w+&YDPd$m|0f2*#&l`J z0LZ-nko#@Zv1a?zDo4HR){Nn= z=t9_5q@v%J_FCxL#ZW>7Ul#$Q`IfzXW~ax9kKGXw@T`4U#cfe_NfS=8cy5uFzjF9F zR27^H812-1bl2n7vWC4`B;bZKFMVk}9~hN)5VaJ%*R0@mkI}fi+_`P| zt4+!&a%OqR`O8w&=FHX=3QKd?a{;EuZr*!+aUUu7Hp2YG-sZ5{vVz)Ki3uZP(`|hD z8i9o<2EXiy-&T+P>8lr(bq_j*>{k^}@8$%Z3aB)QF-|q?ZwIe`;QSjZ7;Tq0SvtLl z7COamcQ#_K3=B}O_lVVVE%bui3QapaGe0kPe!ALXd)5MY_ME=tcXbY8jImhG#)o=A z-(@#V8t97zZCw6Ku0w14RbH9ExvWf0Tg(1cpJCbsRfhd-@V6#!zHn#blHp-hDX1eZF!FW`j8`4X7QI8npg4D#pSrBEs+^aa?W(G^#(~;Qq zJ38(iDGaB4u;X#gcVh8MX$NzCmUWJ-Si|F=F=iKu8NLjFe)0uL%%Siq)Yu3OW5t%* zy#6R!KC7^4)A1wC`|Q2jzbVYTsd~m7?|;4D!M{Cl zM^wo_=3db~SNwCTV>z#tz8fJQ>v#C{z1)!e?2)&;5Zd6w4CdaX2}OXT88;I~w%&qm zUpmJ(guH#pYOz6{yMK|OG3~G<66w3>Q!^7u>DPDrb#94@8Sl8ercpP+<+n{mAGk4Z zA1T0JVc_NR3%|Pl7<`8FhcU>%5yZ@{3S!|~e9l>l^>lchhNtKiA+COL^~exMzR+un zUM!*XnoMD#vo}xbwwm_?F9$72H6@dT-m33u)C|&5qSRm1HIGcSTRg@Gin3*E#$D)sw;A52>Gq)@NG0c8F$Tr^R*kr5T&i)*FqVOW2|Qo{B_}9 zX#7URRNyRbx@Pned~qSp0Qy%^@U_!~MX&W^&AoChZr@QW5MA1APvDTQ!4NEi;K#t|a9m0Lg+|6NtsXfjnjp1*p+ zEtk!rNuOodd^T`+U?zBens;ju4)^4UhhHy~n+`9@`vEFExW!mRwLlhN%?|@d_Tl?i z{)OW|dO9UEW!xN54>_%C$!DECv{G}`w&(D?&BMOse?G@3WRV=nEhq5DPf=R~Vv@zH z?1abW`1ERQ3vSEeSB1i0`U}>Zo=xRK|BYjUxM%h9C$u(ffiucv)~#zQyGZG~s-V2?3 z|EU^}a+gZe*79jsH~+^Hm%1x}<{P&hDfDP*k11mQt?or*BI9ydE$**>XxGs9+n)R2 zpSmYS!bW#r`Pl-+Az6}PN&Q8q6Jg$qP{ z)$+lgUCyz?{|CSI7pXqYw*^#i$C2Z(qUl1A8re4_s@3~<>BzuoZSRp1heZz)YO0yN zB-MehAEa>q1FL?T;e2mQ-O#3eU^C+Pgna*xb;YCioLU+}{TQOJ&E^i?`i^{-7Ld%5 zGoE0Ni8YrjL!TnI{nG|u|{r0d2_@OBbN!)Xuf^>+hlSB z^Cj&?P93N+jmw7Wd~QeyC8nuFe;?rLJo*sDIq-!0DDts%fYO?l=IjxlVt|9P&pgLo zPsopix9ySO)+_3vv;!OBt>J<5xUfn2hbD@Dfxj@&?0Y_Zsn^i``89w2uKeEy^V9e| zC&af!dCEzsQhAC)>&{f15H~o|G?;DqK_4q}M#qd3s<|#f@Z!sVDvpJ~FDwGFqu8$X z>A5;?+)U1N9xpS*kj%3ucJ6TrsND^Dx77{OK@lHF+j!su4BI~|FUUQG%uhzi){hLuFvhW-ZPxhv zNcD+MZ9lF)qsXLF5nQfXF<<=sD-Qlr7Ps-vaP932*7N$T-oNWGEf(U~*ZL0*VW{rk ztTF9O_}{P_FCZUi^+`3)(}~YpU#M=baJxR9ueRfA(^iO)?T0E~^|R5`HxYWHskHKs zy0mX+l!DcZ$u7%A?!~A|l~)rco3rM14VSU_0%~4dDhvK#fuUw)V=)DkX6Z~CcXsID zq4UPT-~QsE(VV9K(hI7)%l^VG_g=JZ4-&@Sn>gyzDU3eF>)yPK)8$;T^gao!kh2zN zuxZ1W!_MuHH#Z(dZoU6r!Wicidc;uvAs}<$V=R23;tDI6Ok=Zt?X)YGIVxDR0!qGh z-N~6pT;Qz1!0n@Bz@YIVi^Q~h%gj%1`nQ_1AE!HW^G7Df<)F;mCq&iiOK{jg!rRGc zam%mIgl{Z5-2O&;!E{p9qo&?>Ud40N|C_RKW9))l5V4Ua;r*qoqhs7)qUB3D>)NL- z-Z`hDpH62D?pkDjKa8mxB+#~G*hHII*XBOk=FRI+nq}X36gXmL0|-2;f8GeDeX3HY zUmuqVn5%qJ?IUZRO8pm#I1BafG{)-Z$+pj%!e|vdCm-)Gw}pufRRh0_ZwQSx$6%lK zWt!a)?$XdfFZiEn%Dz_A1Us7&I3XotYwn!l}2EX1H&nODt;@ zTRGz>?&;jE%D zk>vaIiuxtz)U^hW#x(24*}9$aj|cI7G}q*C-i-xpWrty}ns5JDgj+#yJS-~?%$ z1ShydkS4gh(?D>C5CR0Z;2zu>rwLAQZCn~@Xe`h)xy|#QbKd*jI;ZN^SNGSq{_d(> zd+j~fTx*Uw#@HfX)S5Tj1l#?dBi?8vlEK682p?1l_Ay($Z1X18Nq&`IP(*_AUG0t9 z%1>rdcI(-9)&IC2F}E4!RYJ}WfSXK!n>`qbOi@YDUe07k+4uCzmrxq#l4imwL`?}u zjP(uXq#jg!J$N2JH6prUTV7+^#&NhWo&i}S$cu5wyuIekOvlmrkodaS`jE5d*es!d z9`O8>lkGvV$b+ByuUHJS-Pev8r@pk3XANxDcsI>uyk^w6pfj5awx3eA z8V{E}?+ODpl71y>H{%TJZkg0HQW$m9y2Z7Q+Sje93TjM)p*`zHcAv{H`8|%D`x$un zF=K{iO|R)CKETqsiI)FZW))%EY-gya(8V3UgH%>enhVd`3u&siTRz{K>Iwp9H0!MJ zj($%Wa+Q3LQfVC9_ZIJ1E6!wFbKFEZ;Ej7?gq_Q#WqEc@h66et62zyq{c2z*fEq9( zwt~y7_YW8!p3Ly<$4P5`+ogz*yKi#!7yEA|jWI}e8I{PZ!IQYtD<#s^E5>y+)rr%( z6_9gwq?NQ!&T#WRO(H+yOZjNRcVfD+IrPi(w}>&VN;Rfe=V?ja1s+nC@Gj<8uw zE=&r}jiEW<#?W@Twe>+bfCq2kwPQ2yuo@Ng(^8zjnFU3Tx1uKLNSHi%MNhw~co!)U z6lLIHXqk7JALF^d!vw z1itY%H(s(Fhyut_u;Pk^B-`9Pqveve zdA8Tt)U_NkFAp02c`gd3Q&koGEnKz!OE+f|F_-FG-14ZmtiyF`L(A`LF1ynU{uzhM zEOR%7si?0T+AO2abZbXa1~dHiI4j#xfC#*xLw>#V0tEL&`0UOTzSUAmGvr^lb&j36 zzh@$q^%yOvq*2!iC;bbm&Zmgy_2(^#+L`6QbUoBQ$5&-EP1rF_=2wmX6>dGm&+4$U%j{|enF|rAaBZOymU8D=UyEo<)loIGl_)zBn46YS9 zU(0=|NVHb+;(zy_S22QuJh$lU{`SigRkFEnSY6VjyOWl z>6Q5Pkx280x#+vRfb#~!{#4qmcL^Ov;^BH1$JNd|w$Fu;nA{Wom~#?7m;lVm%F>uO z=NNA0hF+BpR6iAK*j1r`kSe$8wXFrk5<6R2U0upW3dgk}=FS1gj1H=Ao9N}jv$B!K zQA_A-{MYUI#)b50vMOJ~>OYrKhRKbG*0NJa)h>6a&R!AH#q-dRaua|+Dif^6O+oY6 z)$V%B>0~$u<#)RQ4~&nYzFO0vm%|-;MrD12NcFzn2CnrctoF9pRi2atkAYFag(m7c z5{_Ub-tVo0_w}B5Cf>Q!%5xGuQK|=(Q5?GB&wd#SpD)9B>wU