diff --git a/README.md b/README.md index dac1a31084..2fe347f6e4 100644 --- a/README.md +++ b/README.md @@ -81,17 +81,16 @@ Consumption of the AdaptiveCards binary packages are subject to the Microsoft EU - [Android/iOS](https://github.com/microsoft/AdaptiveCards/blob/main/source/EULA-Non-Windows.txt) NOTE: All of the source code, itself, made available in this repo as well as our NPM packages, continue to be governed by the open source [MIT license](https://github.com/microsoft/AdaptiveCards/blob/main/LICENSE). + ### Community SDKs The following SDKs are lovingly maintained by the Adaptive Cards community. Their contributions are sincerely appreciated! 🎉 -|Platform|Install|Build|Docs|Status|Maintainer| -|---|---|---|---|---|---| -| ReactNative | [![npm install](https://img.shields.io/npm/v/adaptivecards-reactnative.svg)](https://www.npmjs.com/package/adaptivecards-reactnative) | [Source](https://github.com/Microsoft/AdaptiveCards/tree/main/source/community/reactnative)| [Docs](https://github.com/Microsoft/AdaptiveCards/blob/main/source/community/reactnative/README.md) | [![react-native-build](https://github.com/microsoft/AdaptiveCards/workflows/react-native-build/badge.svg)](https://dev.azure.com/microsoft/AdaptiveCards/_build/latest?definitionId=38416) | [BigThinkCode](https://github.com/BigThinkcode) -| Pic2Card | | [Source](https://github.com/Microsoft/AdaptiveCards/tree/main/source/pic2card) | [Docs](https://github.com/Microsoft/AdaptiveCards/blob/main/source/pic2card/README.md) | ![pic2card-build](https://github.com/Microsoft/AdaptiveCards/workflows/pic2card-build/badge.svg) | [BigThinkCode](https://github.com/BigThinkcode) -| Vue.js | [![npm install](https://img.shields.io/npm/v/adaptivecards-vue.svg)](https://www.npmjs.com/package/adaptivecards-vue) | [Source](https://github.com/DeeJayTC/adaptivecards-vue)| [Docs](https://github.com/DeeJayTC/adaptivecards-vue/blob/master/README.md) | OK | [Tim Cadenbach](https://github.com/DeeJayTC) - - +|Platform|Install|Repo|Maintainer| +|---|---|---|---| +| ReactNative | [![npm install](https://img.shields.io/npm/v/adaptivecards-reactnative.svg)](https://www.npmjs.com/package/adaptivecards-reactnative) | [GitHub](https://github.com/BigThinkcode/AdaptiveCards) | [BigThinkCode](https://github.com/BigThinkcode) | +| Pic2Card | | [GitHub](https://github.com/BigThinkcode/AdaptiveCards/blob/main/source/pic2card/README.md) | [BigThinkCode](https://github.com/BigThinkcode) | +| Vue.js | [![npm install](https://img.shields.io/npm/v/adaptivecards-vue.svg)](https://www.npmjs.com/package/adaptivecards-vue) | [GitHub](https://github.com/DeeJayTC/adaptivecards-vue)| [Tim Cadenbach](https://github.com/DeeJayTC) ## Contribute diff --git a/source/experimental/ConsoleRenderer/ConsoleRenderer/ConsoleRender.cpp b/source/experimental/ConsoleRenderer/ConsoleRenderer/ConsoleRender.cpp deleted file mode 100644 index 1f448e828d..0000000000 --- a/source/experimental/ConsoleRenderer/ConsoleRenderer/ConsoleRender.cpp +++ /dev/null @@ -1,357 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -#include "stdafx.h" -#include -#include "ConsoleRender.h" -#include "TextBlock.h" -#include "Container.h" -#include "Image.h" -#include "ColumnSet.h" -#include "FactSet.h" - -using namespace AdaptiveCards; -using namespace std::string_literals; - -size_t RenderElements( - std::vector> elements, size_t columnWidth, size_t x, size_t y, std::vector& consoleString); -size_t RenderColumnSet(ColumnSet& set, size_t columnWidth, size_t x, size_t y, std::vector& consoleString); -size_t RenderColumn(Column& set, size_t columnWidth, size_t x, size_t y, std::vector& consoleString); -size_t RenderFactSet(FactSet& set, size_t FactWidth, size_t x, size_t y, std::vector& consoleString); -size_t RenderFact(Fact& set, size_t FactWidth, size_t x, size_t y, std::vector& consoleString); - -#define ESC "\x1b" - -std::vector ConvertToVector(const std::string& consoleString, size_t width) -{ - std::vector vectorOut; - vectorOut.reserve(consoleString.length() % width); // just a guess - - std::string currentLine; - currentLine.reserve(width); - for (auto currChar : consoleString) - { - if (currentLine.length() == 0 && isspace(currChar)) - { - continue; - } - else - { - currentLine.push_back(currChar); - } - - if (currentLine.length() >= width) - { - vectorOut.push_back(currentLine); - currentLine.clear(); - } - } - vectorOut.push_back(currentLine); - - return vectorOut; -} - -void EnsureRows(std::vector& toEnsure, size_t cRows) -{ - while (toEnsure.size() < cRows) - { - toEnsure.push_back(""s); - } -} - -void WriteTextAtX(std::string& dest, std::string& src, size_t srcWidth, size_t x) -{ - // dest.resize(???? - while (dest.size() < (x + srcWidth)) - { - dest.push_back(' '); - } - std::replace(src.begin(), src.end(), '\n', ' '); - dest.replace(x, src.size(), src); -} - -void CompositeVector(std::vector& vectorDest, std::vector& vectorIn, size_t vectorInWidth, size_t x, size_t y) -{ - EnsureRows(vectorDest, y + vectorIn.size()); - for (size_t currRow = y; currRow < (vectorIn.size() + y); currRow++) - { - WriteTextAtX(vectorDest[currRow], vectorIn[currRow - y], vectorInWidth, x); - } -} - -#define BOLD_TEXT "\x1b[1m" -void ApplyTextProperties(bool bold, ForegroundColor color, std::vector& output) -{ - for (auto& row : output) - { - bool haveProperties = false; - if (bold) - { - row.insert(0, BOLD_TEXT); - haveProperties = true; - } - - std::string sgrCode; - switch (color) - { - case ForegroundColor::Accent: - { - sgrCode = "34"; - break; - } - case ForegroundColor::Good: - { - sgrCode = "32"; - break; - } - case ForegroundColor::Warning: - { - sgrCode = "33"; - break; - } - case ForegroundColor::Attention: - { - sgrCode = "31"; - break; - } - case ForegroundColor::Light: - { - sgrCode = "37"; - break; - } - } - - if (!sgrCode.empty()) - { - std::string sgrSequence = ESC "[" + sgrCode + "m"; - row.insert(0, sgrSequence); - } - - if (haveProperties) - { - row.append(ESC "[0m"); - } - } -} - -size_t RenderElement(std::shared_ptr element, size_t columnWidth, size_t x, size_t& y, std::vector& consoleString) -{ - size_t rowsRendered = 0; - switch (element->GetElementType()) - { - case CardElementType::Container: - rowsRendered = RenderElements(std::dynamic_pointer_cast(element)->GetItems(), columnWidth, x, y, consoleString); - break; - case CardElementType::TextBlock: - { - auto textBlock = std::dynamic_pointer_cast(element); - auto textOut = ConvertToVector(textBlock->GetText(), columnWidth); - // ApplyTextProperties(textBlock->GetTextWeight() == TextWeight::Bolder, textBlock->GetTextColor(), textOut); - CompositeVector(consoleString, textOut, columnWidth, x, y); - rowsRendered = textOut.size(); - break; - } - case CardElementType::Image: - { - auto imageElem = std::dynamic_pointer_cast(element); - std::string imageText = imageElem->GetAltText(); - imageText.append(" <" + imageElem->GetUrl() + ">"); - auto textBlock = ConvertToVector(imageText, columnWidth); - CompositeVector(consoleString, textBlock, columnWidth, x, y); - rowsRendered = textBlock.size(); - break; - } - case CardElementType::Column: - { - rowsRendered = RenderColumn(*std::dynamic_pointer_cast(element), columnWidth, x, y, consoleString); - break; - } - case CardElementType::ColumnSet: - { - rowsRendered = RenderColumnSet(*std::dynamic_pointer_cast(element), columnWidth, x, y, consoleString); - break; - } - case CardElementType::Fact: - { - rowsRendered = RenderFact(*std::dynamic_pointer_cast(element), columnWidth, x, y, consoleString); - break; - } - case CardElementType::FactSet: - { - rowsRendered = RenderFactSet(*std::dynamic_pointer_cast(element), columnWidth, x, y, consoleString); - break; - } - default: - { - auto unimplText = - ConvertToVector("Unimplemented: " + AdaptiveCards::CardElementTypeToString(element->GetElementType()), columnWidth); - CompositeVector(consoleString, unimplText, columnWidth, x, y); - rowsRendered = unimplText.size(); - break; - } - } - - return rowsRendered; -} - -size_t RenderElements(std::vector> elements, size_t columnWidth, size_t x, size_t y, std::vector& consoleString) -{ - for (auto element : elements) - { - y += RenderElement(element, columnWidth, x, y, consoleString); - } - return y; -} - -size_t RenderColumn(Column& column, size_t columnWidth, size_t x, size_t y, std::vector& consoleString) -{ - // first, build column - std::vector columnText; - size_t columnY = 0; - for (auto item : column.GetItems()) - { - columnY += RenderElement(item, columnWidth, 0, columnY, columnText); - } - - // composite column into place - CompositeVector(consoleString, columnText, columnWidth, x, y); - return columnY; -} - -size_t RenderFact(Fact& set, size_t columnWidth, size_t x, size_t y, std::vector& consoleString) -{ - const size_t itemWidth = (columnWidth / 2) - 1; - auto titleBlock = ConvertToVector(set.GetTitle(), itemWidth); - auto valueBlock = ConvertToVector(set.GetValue(), itemWidth); - - CompositeVector(consoleString, titleBlock, itemWidth, x, y); - CompositeVector(consoleString, valueBlock, itemWidth, x + itemWidth + 1, y); - return std::max(titleBlock.size(), valueBlock.size()); -} - -size_t RenderFactSet(FactSet& set, size_t columnWidth, size_t x, size_t y, std::vector& consoleString) -{ - size_t cRows = 0; - for (auto fact : set.GetFacts()) - { - cRows += RenderFact(*fact, columnWidth, x, y + cRows, consoleString); - } - return cRows; -} - -size_t RenderColumnSet(ColumnSet& set, size_t columnWidth, size_t x, size_t y, std::vector& consoleString) -{ - auto columns = set.GetColumns(); - const auto cCols = columns.size(); - size_t maxY = 0; - const size_t individualWidth = (columnWidth / cCols) - 3; - - for (size_t i = 0; i < cCols; i++) - { - maxY = std::max(maxY, RenderElement(columns[i], individualWidth, x + (i * individualWidth) + (i ? 1 : 0), y, consoleString)); - } - return maxY; -} - -void VTSaveCursor() -{ - printf(ESC "7"); -} - -void VTRestoreCursor() -{ - printf(ESC "8"); -} - -void VTSetCursorPos(size_t x, size_t y) -{ - printf(ESC "[%d;%dH", (unsigned int)y, (unsigned int)x); -} - -void RenderAsColumn(const std::string& consoleString, size_t x, size_t y, size_t width) -{ - VTSaveCursor(); - - VTSetCursorPos(x, y); - size_t charsEmitted = 0; - size_t currOffset = 0; - for (char currChar : consoleString) - { - if (currChar == '\n') - { - charsEmitted = 0; - currOffset += 2; - VTSetCursorPos(x, y + currOffset); - } - else - { - if (charsEmitted == 0 && isspace(currChar)) - { - continue; - } - putchar(currChar); - charsEmitted++; - if (charsEmitted >= width) - { - charsEmitted = 0; - currOffset++; - VTSetCursorPos(x, y + currOffset); - } - } - } - - VTRestoreCursor(); -} - -#define LR_BORDER "\x1b(0x\x1b(B" - -void RenderBorder(std::vector& output, size_t columnWidth) -{ - std::string top; - top.append(ESC "(0"); - top.append("l"); - for (unsigned int i = 0; i < columnWidth - 1; i++) - { - top.append("q"); - } - top.append("k"); - top.append(ESC "(B"); - - for (auto& row : output) - { - row.resize(columnWidth - 1, ' '); - row.insert(0, LR_BORDER); - row.append(LR_BORDER); - } - - std::string bottom; - bottom.append(ESC "(0"); - bottom.append("m"); - for (unsigned int i = 0; i < columnWidth - 1; i++) - { - bottom.append("q"); - } - bottom.append("j"); - bottom.append(ESC "(B"); - - output[0] = top; - // output.insert(output.begin(), top); - output.push_back(bottom); -} - -void RenderToConsole(std::shared_ptr card, size_t columnWidth, std::vector& output) -{ - std::vector outputVector; - auto body = card->GetBody(); - RenderElements(body, columnWidth - 4, 1, 1, output); // save 4 width for border - RenderBorder(output, columnWidth); - // printf("\n\n\n"); - - // RenderAsColumn("Some sample text. Let's see how we do!\n Should be exciting."s, 10, 10, 10); - // RenderAsColumn("More samples... This should be rendered to the right of.\n\n<-- That one."s, 21, 10, 10); - - // auto output = ConvertToVector("Some sample text. Let's see how we do!\n Should be exciting."s, 10); - // auto output2 = ConvertToVector("More samples... This should be rendered to the right of.\n\n<-- That one."s, 10); - - /*CompositeVector(outputVector, output, 1, 1); - CompositeVector(outputVector, output2, 12, 3);*/ -} diff --git a/source/experimental/ConsoleRenderer/ConsoleRenderer/ConsoleRender.h b/source/experimental/ConsoleRenderer/ConsoleRenderer/ConsoleRender.h deleted file mode 100644 index 5006f86407..0000000000 --- a/source/experimental/ConsoleRenderer/ConsoleRenderer/ConsoleRender.h +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -#pragma once - -void RenderToConsole(std::shared_ptr card, size_t columnWidth, std::vector& output); diff --git a/source/experimental/ConsoleRenderer/ConsoleRenderer/ConsoleRenderer.vcxproj b/source/experimental/ConsoleRenderer/ConsoleRenderer/ConsoleRenderer.vcxproj deleted file mode 100644 index bb996b6e27..0000000000 --- a/source/experimental/ConsoleRenderer/ConsoleRenderer/ConsoleRenderer.vcxproj +++ /dev/null @@ -1,175 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 15.0 - {769AFC7B-FAF2-4333-A9D6-28EF03B6EC76} - Win32Proj - ConsoleRenderer - 10.0.17134.0 - - - - StaticLibrary - true - v141 - Unicode - - - StaticLibrary - false - v141 - true - Unicode - - - StaticLibrary - true - v141 - Unicode - - - StaticLibrary - false - v141 - true - Unicode - - - - - - - - - - - - - - - - - - - - - true - - - true - - - false - - - false - - - - Use - Level4 - Disabled - true - WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) - true - $(SolutionDir)..\..\shared\cpp\ObjectModel;%(AdditionalIncludeDirectories) - true - - - Windows - true - - - - - Use - Level4 - Disabled - true - _DEBUG;_LIB;%(PreprocessorDefinitions) - true - $(SolutionDir)..\..\shared\cpp\ObjectModel;%(AdditionalIncludeDirectories) - true - stdcpp17 - - - Windows - true - - - - - Use - Level4 - MaxSpeed - true - true - true - WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) - true - $(SolutionDir)..\..\shared\cpp\ObjectModel;%(AdditionalIncludeDirectories) - true - - - Windows - true - true - true - - - - - Use - Level4 - MaxSpeed - true - true - true - NDEBUG;_LIB;%(PreprocessorDefinitions) - true - $(SolutionDir)..\..\shared\cpp\ObjectModel;%(AdditionalIncludeDirectories) - true - - - Windows - true - true - true - - - - - - - - - - - Create - Create - Create - Create - - - - - - \ No newline at end of file diff --git a/source/experimental/ConsoleRenderer/ConsoleRenderer/ConsoleRenderer.vcxproj.filters b/source/experimental/ConsoleRenderer/ConsoleRenderer/ConsoleRenderer.vcxproj.filters deleted file mode 100644 index 2af30bcb09..0000000000 --- a/source/experimental/ConsoleRenderer/ConsoleRenderer/ConsoleRenderer.vcxproj.filters +++ /dev/null @@ -1,36 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - Source Files - - - \ No newline at end of file diff --git a/source/experimental/ConsoleRenderer/ConsoleRenderer/stdafx.cpp b/source/experimental/ConsoleRenderer/ConsoleRenderer/stdafx.cpp deleted file mode 100644 index 39bec12ed6..0000000000 --- a/source/experimental/ConsoleRenderer/ConsoleRenderer/stdafx.cpp +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// stdafx.cpp : source file that includes just the standard includes -// ConsoleRenderer.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" - -// TODO: reference any additional headers you need in STDAFX.H -// and not in this file diff --git a/source/experimental/ConsoleRenderer/ConsoleRenderer/stdafx.h b/source/experimental/ConsoleRenderer/ConsoleRenderer/stdafx.h deleted file mode 100644 index 23809afac4..0000000000 --- a/source/experimental/ConsoleRenderer/ConsoleRenderer/stdafx.h +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#pragma once - -#include "targetver.h" - -#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers - -// TODO: reference additional headers your program requires here -#include "SharedAdaptiveCard.h" diff --git a/source/experimental/ConsoleRenderer/ConsoleRenderer/targetver.h b/source/experimental/ConsoleRenderer/ConsoleRenderer/targetver.h deleted file mode 100644 index 4c00f48a01..0000000000 --- a/source/experimental/ConsoleRenderer/ConsoleRenderer/targetver.h +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -#pragma once - -// Including SDKDDKVer.h defines the highest available Windows platform. - -// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and -// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. - -#include diff --git a/source/experimental/ConsoleRenderer/README.md b/source/experimental/ConsoleRenderer/README.md deleted file mode 100644 index 35cd7e7405..0000000000 --- a/source/experimental/ConsoleRenderer/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# Windows Console Renderer for Adaptive Cards - -As part of a recent Hackathon, the Adaptive Cards team at Microsoft wrote a proof-of-concept console renderer. This project was intended to explore the possibility of using Adaptive Cards to enable shared experiences from within a CLI environment. Its implementation is not ship-ready and is incomplete. - -It's probably easier to list what *does* work rather than what doesn't: -* Border drawn around card -* Basic `TextBlock` rendering (no colors) -* Basic `Column` rendering -* Basic `FactSet` rendering -* Render `Image` as inline URL - -Here's some sample output taken from `ActivityUpdate.json`: - -``` -┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ -│ Publish Adaptive Card schema │ -│ Created {{DATE(2017-02-14T06:08:39Z, SHORT)}} │ -│ Now that we have defined the main rules and features of the format, we need to produce a schema and publish it to Gi │ -│ tHub. The schema will be the starting point of our reference documentation. │ -│ Board: Adaptive Card │ -│ List: Backlog │ -│ Assigned to: Matt Hidinger │ -│ Due date: Not set │ -└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ -``` diff --git a/source/experimental/ConsoleRenderer/adapt.sln b/source/experimental/ConsoleRenderer/adapt.sln deleted file mode 100644 index da9bde6d9a..0000000000 --- a/source/experimental/ConsoleRenderer/adapt.sln +++ /dev/null @@ -1,51 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27703.2042 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AdaptiveCardsSharedModel", "..\..\shared\cpp\AdaptiveCardsSharedModel\AdaptiveCardsSharedModel\AdaptiveCardsSharedModel.vcxproj", "{430407C5-059C-48E8-9260-62A12D30F81C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleRenderer", "ConsoleRenderer\ConsoleRenderer.vcxproj", "{769AFC7B-FAF2-4333-A9D6-28EF03B6EC76}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adapt", "adapt\adapt.vcxproj", "{9680D0C8-D0F6-4201-A5E2-CB7B2269B5CF}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {430407C5-059C-48E8-9260-62A12D30F81C}.Debug|x64.ActiveCfg = Debug|x64 - {430407C5-059C-48E8-9260-62A12D30F81C}.Debug|x64.Build.0 = Debug|x64 - {430407C5-059C-48E8-9260-62A12D30F81C}.Debug|x86.ActiveCfg = Debug|Win32 - {430407C5-059C-48E8-9260-62A12D30F81C}.Debug|x86.Build.0 = Debug|Win32 - {430407C5-059C-48E8-9260-62A12D30F81C}.Release|x64.ActiveCfg = Release|x64 - {430407C5-059C-48E8-9260-62A12D30F81C}.Release|x64.Build.0 = Release|x64 - {430407C5-059C-48E8-9260-62A12D30F81C}.Release|x86.ActiveCfg = Release|Win32 - {430407C5-059C-48E8-9260-62A12D30F81C}.Release|x86.Build.0 = Release|Win32 - {769AFC7B-FAF2-4333-A9D6-28EF03B6EC76}.Debug|x64.ActiveCfg = Debug|x64 - {769AFC7B-FAF2-4333-A9D6-28EF03B6EC76}.Debug|x64.Build.0 = Debug|x64 - {769AFC7B-FAF2-4333-A9D6-28EF03B6EC76}.Debug|x86.ActiveCfg = Debug|Win32 - {769AFC7B-FAF2-4333-A9D6-28EF03B6EC76}.Debug|x86.Build.0 = Debug|Win32 - {769AFC7B-FAF2-4333-A9D6-28EF03B6EC76}.Release|x64.ActiveCfg = Release|x64 - {769AFC7B-FAF2-4333-A9D6-28EF03B6EC76}.Release|x64.Build.0 = Release|x64 - {769AFC7B-FAF2-4333-A9D6-28EF03B6EC76}.Release|x86.ActiveCfg = Release|Win32 - {769AFC7B-FAF2-4333-A9D6-28EF03B6EC76}.Release|x86.Build.0 = Release|Win32 - {9680D0C8-D0F6-4201-A5E2-CB7B2269B5CF}.Debug|x64.ActiveCfg = Debug|x64 - {9680D0C8-D0F6-4201-A5E2-CB7B2269B5CF}.Debug|x64.Build.0 = Debug|x64 - {9680D0C8-D0F6-4201-A5E2-CB7B2269B5CF}.Debug|x86.ActiveCfg = Debug|Win32 - {9680D0C8-D0F6-4201-A5E2-CB7B2269B5CF}.Debug|x86.Build.0 = Debug|Win32 - {9680D0C8-D0F6-4201-A5E2-CB7B2269B5CF}.Release|x64.ActiveCfg = Release|x64 - {9680D0C8-D0F6-4201-A5E2-CB7B2269B5CF}.Release|x64.Build.0 = Release|x64 - {9680D0C8-D0F6-4201-A5E2-CB7B2269B5CF}.Release|x86.ActiveCfg = Release|Win32 - {9680D0C8-D0F6-4201-A5E2-CB7B2269B5CF}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {AFC4A4F7-F0E3-479A-A5C3-3E998F39C07C} - EndGlobalSection -EndGlobal diff --git a/source/experimental/ConsoleRenderer/adapt/ConsoleApplication.vcxproj.filters b/source/experimental/ConsoleRenderer/adapt/ConsoleApplication.vcxproj.filters deleted file mode 100644 index cf2ae58b42..0000000000 --- a/source/experimental/ConsoleRenderer/adapt/ConsoleApplication.vcxproj.filters +++ /dev/null @@ -1,33 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Header Files - - - Header Files - - - - - Source Files - - - Source Files - - - \ No newline at end of file diff --git a/source/experimental/ConsoleRenderer/adapt/adapt.cpp b/source/experimental/ConsoleRenderer/adapt/adapt.cpp deleted file mode 100644 index aa65b432d9..0000000000 --- a/source/experimental/ConsoleRenderer/adapt/adapt.cpp +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -#include "stdafx.h" - -using namespace AdaptiveCards; - -DWORD SetConsoleModeForDisplay() -{ - DWORD dwRet = 0; - HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); - - if (hOut != INVALID_HANDLE_VALUE) - { - GetConsoleMode(hOut, &dwRet); - SetConsoleMode(hOut, dwRet | ENABLE_VIRTUAL_TERMINAL_PROCESSING); - } - - return dwRet; -} - -void RestoreConsoleModeForDisplay(DWORD dwRestore) -{ - HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); - - if (hOut != INVALID_HANDLE_VALUE) - { - SetConsoleMode(hOut, dwRestore); - } -} - -int main(int /*argc*/, char* argv[]) -{ - DWORD dwOld = SetConsoleModeForDisplay(); - - auto parseResult = AdaptiveCard::DeserializeFromFile(argv[1], "1.1"); - - std::vector result; - RenderToConsole(parseResult->GetAdaptiveCard(), 120U, result); - for (auto row : result) - { - printf(row.c_str()); - printf("\n"); - } - - RestoreConsoleModeForDisplay(dwOld); - return 0; -} diff --git a/source/experimental/ConsoleRenderer/adapt/adapt.vcxproj b/source/experimental/ConsoleRenderer/adapt/adapt.vcxproj deleted file mode 100644 index 1ec1906613..0000000000 --- a/source/experimental/ConsoleRenderer/adapt/adapt.vcxproj +++ /dev/null @@ -1,182 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 15.0 - {9680D0C8-D0F6-4201-A5E2-CB7B2269B5CF} - Win32Proj - ConsoleApplication - 10.0.17134.0 - adapt - - - - Application - true - v141 - Unicode - - - Application - false - v141 - true - Unicode - - - Application - true - v141 - Unicode - - - Application - false - v141 - true - Unicode - - - - - - - - - - - - - - - - - - - - - true - - - true - - - false - - - false - - - - Use - Level4 - Disabled - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - $(SolutionDir)ConsoleRenderer;$(SolutionDir)..\..\shared\cpp\ObjectModel;%(AdditionalIncludeDirectories) - true - - - Console - true - - - - - Use - Level4 - Disabled - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - $(SolutionDir)ConsoleRenderer;$(SolutionDir)..\..\shared\cpp\ObjectModel;%(AdditionalIncludeDirectories) - true - - - Console - true - - - - - Use - Level4 - MaxSpeed - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - $(SolutionDir)ConsoleRenderer;$(SolutionDir)..\..\shared\cpp\ObjectModel;%(AdditionalIncludeDirectories) - true - - - Console - true - true - true - - - - - Use - Level4 - MaxSpeed - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - $(SolutionDir)ConsoleRenderer;$(SolutionDir)..\..\shared\cpp\ObjectModel;%(AdditionalIncludeDirectories) - true - - - Console - true - true - true - - - - - - - - - - Create - Create - Create - Create - - - - - {430407c5-059c-48e8-9260-62a12d30f81c} - - - {769afc7b-faf2-4333-a9d6-28ef03b6ec76} - - - - - - \ No newline at end of file diff --git a/source/experimental/ConsoleRenderer/adapt/stdafx.cpp b/source/experimental/ConsoleRenderer/adapt/stdafx.cpp deleted file mode 100644 index 056d61ae08..0000000000 --- a/source/experimental/ConsoleRenderer/adapt/stdafx.cpp +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// stdafx.cpp : source file that includes just the standard includes -// ConsoleApplication.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" - -// TODO: reference any additional headers you need in STDAFX.H -// and not in this file diff --git a/source/experimental/ConsoleRenderer/adapt/stdafx.h b/source/experimental/ConsoleRenderer/adapt/stdafx.h deleted file mode 100644 index 6d3ff530fa..0000000000 --- a/source/experimental/ConsoleRenderer/adapt/stdafx.h +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#pragma once - -#include "targetver.h" - -#include -#include - -#include -#include - -// TODO: reference additional headers your program requires here -#include "SharedAdaptiveCard.h" -#include "ConsoleRender.h" diff --git a/source/experimental/ConsoleRenderer/adapt/targetver.h b/source/experimental/ConsoleRenderer/adapt/targetver.h deleted file mode 100644 index 4c00f48a01..0000000000 --- a/source/experimental/ConsoleRenderer/adapt/targetver.h +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -#pragma once - -// Including SDKDDKVer.h defines the highest available Windows platform. - -// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and -// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. - -#include diff --git a/source/experimental/README.md b/source/experimental/README.md deleted file mode 100644 index abecac9c7c..0000000000 --- a/source/experimental/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Experimental Adaptive Cards Projects - -Projects under this folder are not intended for production use and aren't guaranteed to be in a working state. diff --git a/source/pic2card/.dockerignore b/source/pic2card/.dockerignore deleted file mode 100644 index b6ac535cff..0000000000 --- a/source/pic2card/.dockerignore +++ /dev/null @@ -1,6 +0,0 @@ -** -!requirements* -!model/pth_models/detr_trace.pt -!model/frozen_inference_graph.pb -!app -!mystique diff --git a/source/pic2card/.gitignore b/source/pic2card/.gitignore deleted file mode 100644 index b0b3b27f63..0000000000 --- a/source/pic2card/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -/venv -/models -.ipynb_checkpoints -/object_detection/training/faster_rcnn_inception_v2_coco_2018_01_28/ -.DS_Store -*.pyc -*.sw* -Icon* -__pycache__ - -# Cpp related -build/ -libs/ diff --git a/source/pic2card/.pylintrc b/source/pic2card/.pylintrc deleted file mode 100644 index 930cbe84e8..0000000000 --- a/source/pic2card/.pylintrc +++ /dev/null @@ -1,608 +0,0 @@ -[MASTER] - -# A comma-separated list of package or module names from where C extensions may -# be loaded. Extensions are loading into the active Python interpreter and may -# run arbitrary code. -extension-pkg-allow-list= - -# A comma-separated list of package or module names from where C extensions may -# be loaded. Extensions are loading into the active Python interpreter and may -# run arbitrary code. (This is an alternative name to extension-pkg-allow-list -# for backward compatibility.) -extension-pkg-whitelist=cv2 - -# Specify a score threshold to be exceeded before program exits with error. -fail-under=10.0 - -# Files or directories to be skipped. They should be base names, not paths. -ignore=CVS - -# Files or directories matching the regex patterns are skipped. The regex -# matches against base names, not paths. -ignore-patterns= - -# Python code to execute, usually for sys.path manipulation such as -# pygtk.require(). -#init-hook= - -# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the -# number of processors available to use. -jobs=1 - -# Control the amount of potential inferred values when inferring a single -# object. This can help the performance when dealing with large functions or -# complex, nested conditions. -limit-inference-results=100 - -# List of plugins (as comma separated values of python module names) to load, -# usually to register additional checkers. -load-plugins= - -# Pickle collected data for later comparisons. -persistent=yes - -# When enabled, pylint would attempt to guess common misconfiguration and emit -# user-friendly hints instead of false-positive error messages. -suggestion-mode=yes - -# Allow loading of arbitrary C extensions. Extensions are imported into the -# active Python interpreter and may run arbitrary code. -unsafe-load-any-extension=no - - -[MESSAGES CONTROL] - -# Only show warnings with the listed confidence levels. Leave empty to show -# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED. -confidence= - -# Disable the message, report, category or checker with the given id(s). You -# can either give multiple identifiers separated by comma (,) or put this -# option multiple times (only on the command line, not in the configuration -# file where it should appear only once). You can also use "--disable=all" to -# disable everything first and then reenable specific checks. For example, if -# you want to run only the similarities checker, you can use "--disable=all -# --enable=similarities". If you want to run only the classes checker, but have -# no Warning level messages displayed, use "--disable=all --enable=classes -# --disable=W". -disable=print-statement, - parameter-unpacking, - unpacking-in-except, - old-raise-syntax, - backtick, - long-suffix, - old-ne-operator, - old-octal-literal, - import-star-module-level, - non-ascii-bytes-literal, - raw-checker-failed, - bad-inline-option, - locally-disabled, - file-ignored, - suppressed-message, - useless-suppression, - deprecated-pragma, - use-symbolic-message-instead, - apply-builtin, - basestring-builtin, - buffer-builtin, - cmp-builtin, - coerce-builtin, - execfile-builtin, - file-builtin, - long-builtin, - raw_input-builtin, - reduce-builtin, - standarderror-builtin, - unicode-builtin, - xrange-builtin, - coerce-method, - delslice-method, - getslice-method, - setslice-method, - no-absolute-import, - old-division, - dict-iter-method, - dict-view-method, - next-method-called, - metaclass-assignment, - indexing-exception, - raising-string, - reload-builtin, - oct-method, - hex-method, - nonzero-method, - cmp-method, - input-builtin, - round-builtin, - intern-builtin, - unichr-builtin, - map-builtin-not-iterating, - zip-builtin-not-iterating, - range-builtin-not-iterating, - filter-builtin-not-iterating, - using-cmp-argument, - eq-without-hash, - div-method, - idiv-method, - rdiv-method, - exception-message-attribute, - invalid-str-codec, - sys-max-int, - bad-python3-import, - deprecated-string-function, - deprecated-str-translate-call, - deprecated-itertools-function, - deprecated-types-field, - next-method-defined, - dict-items-not-iterating, - dict-keys-not-iterating, - dict-values-not-iterating, - deprecated-operator-function, - deprecated-urllib-function, - xreadlines-attribute, - deprecated-sys-function, - exception-escape, - comprehension-escape, - consider-using-with, - relative-beyond-top-level - -# Enable the message, report, category or checker with the given id(s). You can -# either give multiple identifier separated by comma (,) or put this option -# multiple time (only on the command line, not in the configuration file where -# it should appear only once). See also the "--disable" option for examples. -enable=c-extension-no-member - - -[REPORTS] - -# Python expression which should return a score less than or equal to 10. You -# have access to the variables 'error', 'warning', 'refactor', and 'convention' -# which contain the number of messages in each category, as well as 'statement' -# which is the total number of statements analyzed. This score is used by the -# global evaluation report (RP0004). -evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) - -# Template used to display messages. This is a python new-style format string -# used to format the message information. See doc for all details. -#msg-template= - -# Set the output format. Available formats are text, parseable, colorized, json -# and msvs (visual studio). You can also give a reporter class, e.g. -# mypackage.mymodule.MyReporterClass. -output-format=text - -# Tells whether to display a full report or only the messages. -reports=no - -# Activate the evaluation score. -score=yes - - -[REFACTORING] - -# Maximum number of nested blocks for function / method body -max-nested-blocks=5 - -# Complete name of functions that never returns. When checking for -# inconsistent-return-statements if a never returning function is called then -# it will be considered as an explicit return statement and no message will be -# printed. -never-returning-functions=sys.exit - - -[FORMAT] - -# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. -expected-line-ending-format= - -# Regexp for a line that is allowed to be longer than the limit. -ignore-long-lines=^\s*(# )??$ - -# Number of spaces of indent required inside a hanging or continued line. -indent-after-paren=4 - -# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 -# tab). -indent-string=' ' - -# Maximum number of characters on a single line. -max-line-length=80 - -# Maximum number of lines in a module. -max-module-lines=1000 - -# Allow the body of a class to be on the same line as the declaration if body -# contains single statement. -single-line-class-stmt=no - -# Allow the body of an if to be on the same line as the test if there is no -# else. -single-line-if-stmt=no - - -[SIMILARITIES] - -# Ignore comments when computing similarities. -ignore-comments=yes - -# Ignore docstrings when computing similarities. -ignore-docstrings=yes - -# Ignore imports when computing similarities. -ignore-imports=no - -# Minimum lines number of a similarity. -min-similarity-lines=400 - - -[SPELLING] - -# Limits count of emitted suggestions for spelling mistakes. -max-spelling-suggestions=4 - -# Spelling dictionary name. Available dictionaries: none. To make it work, -# install the 'python-enchant' package. -spelling-dict= - -# List of comma separated words that should not be checked. -spelling-ignore-words= - -# A path to a file that contains the private dictionary; one word per line. -spelling-private-dict-file= - -# Tells whether to store unknown words to the private dictionary (see the -# --spelling-private-dict-file option) instead of raising a message. -spelling-store-unknown-words=no - - -[VARIABLES] - -# List of additional names supposed to be defined in builtins. Remember that -# you should avoid defining new builtins when possible. -additional-builtins= - -# Tells whether unused global variables should be treated as a violation. -allow-global-unused-variables=yes - -# List of names allowed to shadow builtins -allowed-redefined-builtins= - -# List of strings which can identify a callback function by name. A callback -# name must start or end with one of those strings. -callbacks=cb_, - _cb - -# A regular expression matching the name of dummy variables (i.e. expected to -# not be used). -dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ - -# Argument names that match this expression will be ignored. Default to name -# with leading underscore. -ignored-argument-names=_.*|^ignored_|^unused_ - -# Tells whether we should check for unused import in __init__ files. -init-import=no - -# List of qualified module names which can have objects that can redefine -# builtins. -redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io - - -[TYPECHECK] - -# List of decorators that produce context managers, such as -# contextlib.contextmanager. Add to this list to register other decorators that -# produce valid context managers. -contextmanager-decorators=contextlib.contextmanager - -# List of members which are set dynamically and missed by pylint inference -# system, and so shouldn't trigger E1101 when accessed. Python regular -# expressions are accepted. -generated-members= - -# Tells whether missing members accessed in mixin class should be ignored. A -# mixin class is detected if its name ends with "mixin" (case insensitive). -ignore-mixin-members=yes - -# Tells whether to warn about missing members when the owner of the attribute -# is inferred to be None. -ignore-none=yes - -# This flag controls whether pylint should warn about no-member and similar -# checks whenever an opaque object is returned when inferring. The inference -# can return multiple potential results while evaluating a Python object, but -# some branches might not be evaluated, which results in partial inference. In -# that case, it might be useful to still emit no-member and other checks for -# the rest of the inferred objects. -ignore-on-opaque-inference=yes - -# List of class names for which member attributes should not be checked (useful -# for classes with dynamically set attributes). This supports the use of -# qualified names. -ignored-classes=optparse.Values,thread._local,_thread._local - -# List of module names for which member attributes should not be checked -# (useful for modules/projects where namespaces are manipulated during runtime -# and thus existing member attributes cannot be deduced by static analysis). It -# supports qualified module names, as well as Unix pattern matching. -ignored-modules= - -# Show a hint with possible names when a member name was not found. The aspect -# of finding the hint is based on edit distance. -missing-member-hint=yes - -# The minimum edit distance a name should have in order to be considered a -# similar match for a missing member name. -missing-member-hint-distance=1 - -# The total number of similar names that should be taken in consideration when -# showing a hint for a missing member. -missing-member-max-choices=1 - -# List of decorators that change the signature of a decorated function. -signature-mutators= - - -[LOGGING] - -# The type of string formatting that logging methods do. `old` means using % -# formatting, `new` is for `{}` formatting. -logging-format-style=old - -# Logging modules to check that the string format arguments are in logging -# function parameter format. -logging-modules=logging - - -[BASIC] - -# Naming style matching correct argument names. -argument-naming-style=snake_case - -# Regular expression matching correct argument names. Overrides argument- -# naming-style. -#argument-rgx= - -# Naming style matching correct attribute names. -attr-naming-style=snake_case - -# Regular expression matching correct attribute names. Overrides attr-naming- -# style. -#attr-rgx= - -# Bad variable names which should always be refused, separated by a comma. -bad-names=foo, - bar, - baz, - toto, - tutu, - tata - -# Bad variable names regexes, separated by a comma. If names match any regex, -# they will always be refused -bad-names-rgxs= - -# Naming style matching correct class attribute names. -class-attribute-naming-style=any - -# Regular expression matching correct class attribute names. Overrides class- -# attribute-naming-style. -#class-attribute-rgx= - -# Naming style matching correct class constant names. -class-const-naming-style=UPPER_CASE - -# Regular expression matching correct class constant names. Overrides class- -# const-naming-style. -#class-const-rgx= - -# Naming style matching correct class names. -class-naming-style=PascalCase - -# Regular expression matching correct class names. Overrides class-naming- -# style. -#class-rgx= - -# Naming style matching correct constant names. -const-naming-style=UPPER_CASE - -# Regular expression matching correct constant names. Overrides const-naming- -# style. -#const-rgx= - -# Minimum line length for functions/classes that require docstrings, shorter -# ones are exempt. -docstring-min-length=-1 - -# Naming style matching correct function names. -function-naming-style=snake_case - -# Regular expression matching correct function names. Overrides function- -# naming-style. -#function-rgx= - -# Good variable names which should always be accepted, separated by a comma. -good-names=i, - j, - k, - ex, - Run, - _ - -# Good variable names regexes, separated by a comma. If names match any regex, -# they will always be accepted -good-names-rgxs= - -# Include a hint for the correct naming format with invalid-name. -include-naming-hint=no - -# Naming style matching correct inline iteration names. -inlinevar-naming-style=any - -# Regular expression matching correct inline iteration names. Overrides -# inlinevar-naming-style. -#inlinevar-rgx= - -# Naming style matching correct method names. -method-naming-style=snake_case - -# Regular expression matching correct method names. Overrides method-naming- -# style. -#method-rgx= - -# Naming style matching correct module names. -module-naming-style=snake_case - -# Regular expression matching correct module names. Overrides module-naming- -# style. -#module-rgx= - -# Colon-delimited sets of names that determine each other's naming style when -# the name regexes allow several styles. -name-group= - -# Regular expression which should only match function or class names that do -# not require a docstring. -no-docstring-rgx=^_ - -# List of decorators that produce properties, such as abc.abstractproperty. Add -# to this list to register other decorators that produce valid properties. -# These decorators are taken in consideration only for invalid-name. -property-classes=abc.abstractproperty - -# Naming style matching correct variable names. -variable-naming-style=snake_case - -# Regular expression matching correct variable names. Overrides variable- -# naming-style. -#variable-rgx= - - -[MISCELLANEOUS] - -# List of note tags to take in consideration, separated by a comma. -notes=FIXME, - XXX - -# Regular expression of note tags to take in consideration. -#notes-rgx= - - -[STRING] - -# This flag controls whether inconsistent-quotes generates a warning when the -# character used as a quote delimiter is used inconsistently within a module. -check-quote-consistency=no - -# This flag controls whether the implicit-str-concat should generate a warning -# on implicit string concatenation in sequences defined over several lines. -check-str-concat-over-line-jumps=no - - -[DESIGN] - -# Maximum number of arguments for function / method. -max-args=5 - -# Maximum number of attributes for a class (see R0902). -max-attributes=7 - -# Maximum number of boolean expressions in an if statement (see R0916). -max-bool-expr=5 - -# Maximum number of branch for function / method body. -max-branches=12 - -# Maximum number of locals for function / method body. -max-locals=15 - -# Maximum number of parents for a class (see R0901). -max-parents=7 - -# Maximum number of public methods for a class (see R0904). -max-public-methods=20 - -# Maximum number of return / yield for function / method body. -max-returns=6 - -# Maximum number of statements in function / method body. -max-statements=50 - -# Minimum number of public methods for a class (see R0903). -min-public-methods=2 - - -[CLASSES] - -# Warn about protected attribute access inside special methods -check-protected-access-in-special-methods=no - -# List of method names used to declare (i.e. assign) instance attributes. -defining-attr-methods=__init__, - __new__, - setUp, - __post_init__ - -# List of member names, which should be excluded from the protected access -# warning. -exclude-protected=_asdict, - _fields, - _replace, - _source, - _make - -# List of valid names for the first argument in a class method. -valid-classmethod-first-arg=cls - -# List of valid names for the first argument in a metaclass class method. -valid-metaclass-classmethod-first-arg=cls - - -[IMPORTS] - -# List of modules that can be imported at any level, not just the top level -# one. -allow-any-import-level= - -# Allow wildcard imports from modules that define __all__. -allow-wildcard-with-all=no - -# Analyse import fallback blocks. This can be used to support both Python 2 and -# 3 compatible code, which means that the block might have code that exists -# only in one or another interpreter, leading to false positives when analysed. -analyse-fallback-blocks=no - -# Deprecated modules which should not be used, separated by a comma. -deprecated-modules=optparse,tkinter.tix - -# Output a graph (.gv or any supported image format) of external dependencies -# to the given file (report RP0402 must not be disabled). -ext-import-graph= - -# Output a graph (.gv or any supported image format) of all (i.e. internal and -# external) dependencies to the given file (report RP0402 must not be -# disabled). -import-graph= - -# Output a graph (.gv or any supported image format) of internal dependencies -# to the given file (report RP0402 must not be disabled). -int-import-graph= - -# Force import order to recognize a module as part of the standard -# compatibility libraries. -known-standard-library= - -# Force import order to recognize a module as part of a third party library. -known-third-party=enchant - -# Couples of modules and preferred modules, separated by a comma. -preferred-modules= - - -[EXCEPTIONS] - -# Exceptions that will emit a warning when being caught. Defaults to -# "BaseException, Exception". -overgeneral-exceptions=BaseException, - Exception diff --git a/source/pic2card/LICENSE b/source/pic2card/LICENSE deleted file mode 100644 index 880000cc06..0000000000 --- a/source/pic2card/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021 BigThinkCode - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/source/pic2card/README.md b/source/pic2card/README.md deleted file mode 100644 index 7fa0ffb768..0000000000 --- a/source/pic2card/README.md +++ /dev/null @@ -1,152 +0,0 @@ -# Pic2Card -![pic2card-build](https://github.com/Microsoft/AdaptiveCards/workflows/pic2card-build/badge.svg) -![coverage](https://img.shields.io/badge/coverage-78%25-green) -## Description -Pic2Card is a solution for converting adaptive cards GUI design image into adaptive card payload Json. - - - -![Pic2Card](./images/pic2card.png) - - -## Architecture -![Prediction Architecture](./images/architecture.png) - - -## Setup and Install pic2card - - -### Setup Locally - -**Install the requirements** - -```shell - # Setup dependency under a virtualenv - $ virtualenv ~/env - $ . ~/env/bin/activate - (env)$ pip install -r requirements/requirements.txt - (env)$ pip install -r requirements/requirements-frozen_graph.txt # tf specific only - - # While Working in the local dev environment, Do install the packages in requirements-dev.txt to make use of the commands utility - (env)$ pip install -r requirements/requirements-dev.txt -``` - -**Run the pic2card Servie** - -```shell - # Start the service. - (env)$ python -m app.main - - # Hit the API using curl - $ (env) curl --header "Content-Type: application/json" \ - --request POST \ - --data '{"image":"base64 of the image"}' \ - http://localhost:5050/predict_json -``` - -**For Batch process** - - -```shell - python -m commands.generate_card --image_path="path/to/image" -``` - -### Select different Object Detection Model - -The default object-detection model used with the pic2card pipeline is -`Faster-RCNN` based. If you want to try `DETR` based model shipped with -pic2card, you can easily switch the model and try the entire pic2card pipeline. -Or if you wish to train a custom object detection model for the pic2card -pipeline, you can do the same. - -Currently the available models are: - -- Faster-RCNN (default) -- DETR - -```python -# To switch the model pipeline to `detr` based one. -$ ACTIVE_MODEL_NAME=detr python -m app.main -``` - -Select the model based on the below configuration. - -```python -MODEL_REGISTRY = { - # 1. Default model - "tf_faster_rcnn": "mystique.detect_objects.ObjectDetection", - # 2. Use it if you are deploying model in TFS - "tfs_faster_rcnn": "mystique.detect_objects.TfsObjectDetection", - # 3. DETR - "pth_detr": "mystique.obj_detect.DetrOD", - # 4. DETR with CPP inference - "pth_detr_cpp": "mystique.obj_detect.DetrCppOD" -} -``` - - - -### Run the pic2card service in docker container - -You can build a docker image from the source code and play with it. - -By default we only need single container, which embed the model model as well as -the pic2card application. - -```bash - -# Build the image with frozen model. -$ docker build -f docker/Dockerfile -t / . - -# Run the pic2card service with frozen graph model. -$ docker run -it --name pic2card -p 5050:5050 -``` - -### Use Tensorflow Serving to deploy pic2card - -NOTE: This is an experimental feature only. - -If you want to use the tensorflow serving to serve the model, then first build -the tensorflow serving with our model loaded with it in an another separate -docker. tf_serving provide RESTful APIs to interact with tensorflow models, in -standard way. - -```bash -# You can export the model for inferencing from model checkpoint. -# -$ cp /* model/* -$ docker build . -t docker/Dockerfile-tf_serving -$ docker run -it -p 8501:8501 - -# Build the pic2card pipeline without trained model. Now the inference is -# provided by the tensorflow serving. - -$ docker build -t -f docker/Dockerfile . -``` - -## Tests and Code Quality - -The tests are available under `tests/` folder, and it can be run using - -``` -python -m unittest discover -``` - -We are using [pylint](https://www.pylint.org/) for linting and [black](https://black.readthedocs.io/en/stable/) for code formatting. - -``` -# Format the code -black --line-length 80 . - -# Run pylint on all python files. -find . -type f -name "*.py" | xargs pylint -``` - -We are using [coverage](https://coverage.readthedocs.io/en/coverage-5.5/) for measuring the code coverage -``` -# To measure the code coverage -coverage run --source app,mystique --omit app/main.py,mystique/obj_detect/* -m unittest tests/*.py - -# To generate the overall coverage report -coverage report -m | grep TOTAL | awk {' print $4 '} -``` \ No newline at end of file diff --git a/source/pic2card/TRAINING.md b/source/pic2card/TRAINING.md deleted file mode 100644 index 33e9c155c5..0000000000 --- a/source/pic2card/TRAINING.md +++ /dev/null @@ -1,135 +0,0 @@ -## Training - -This document covers how to train the object detection model and evaluate the same. -Pic2card alredy got few different types of object-detection models included with -`Faster-RCNN` model as the default one. You can train new model and replace the -default model in pic2card pipeline and see how it improve the quality of card generation. - - - -## ML Frameworks used - -We are using Tensorflow and Pytorch based model implementation, so please setup -those in your machine. - - -After the [Tensorflow ,Tensorflow models intsallation](https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/install.html): - -1. Lable the train and test images using - [labelImg](https://github.com/tzutalin/labelImg). - -1. create csv files for train and test dataset - - ```shell - python commands/xml_to_csv.py - ``` - - ```python - #Which will generate the label mapping like: - filename width height class xmin ymin xmax ymax - 0 64.xml 576 814 textbox 24 31 407 81 - 1 64.xml 576 814 textbox 15 109 322 157 - 2 64.xml 576 814 textbox 337 112 560 151 - 3 64.xml 576 814 textbox 256 176 543 294 - 4 64.xml 576 814 textbox 93 358 506 432 - ``` - - ​ - -2. set configs for generating tf records - - ```python - # TO-DO replace this with label map - def class_text_to_int(row_label): - if row_label == 'textbox': - return 1 - if row_label == 'radiobutton': - return 2 - if row_label == 'checkbox': - return 3 - else: - None - ``` - - ```shell - #Generate tf records for training and testing dataset - python commands/generate_tfrecord.py \ - --csv_input=/data/train_labels.csv \ - --image_dir=/data/train \ - --output_path=/tf_records/train.record - - python commands/generate_tfrecord.py \ - --csv_input=/data/test_labels.csv \ - --image_dir=/data/test \ - --output_path=/tf_records/test.record - - ``` - - ​ - -3. Edit training/object-detection.pbxt file to match the label maps mentioned in generate_tfrecord.py - -4. download any pre trained tensorflow model from [here](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md) - -5. set below paths appropriately in pipeline.config file - - ``` - num_classes:number of labels/classes - fine_tune_checkpoint: path to pre-trained faster rcnn tensorflow model - train_input_reader.input_path: path to train tf.record - eval_input_reader.input_path: path tp test tf.record - label_map_path: path to object-detection.pbtxt label mapping - ``` - - ​ - -6. train model using below command - - ```shell - python commands/train.py \ - --logtostderr \ - --model_dir=training/ \ - --pipeline_config_path=../training/pipeline.config - ``` - - ​ - -7. export inference graph - - ```shell - #After the model is trained, we can use it for prediction using inference graphs - #change XXXX to represent the highest number of trained model - - python commands/export_inference_graph.py \ - --input_type image_tensor \ - --pipeline_config_path training/pipeline.config \ - --trained_checkpoint_prefix training/model.ckpt-XXXX \ - --output_directory ../inference_graph - ``` - -8. Can view the rcnn trained model's beaviour using the Jupyter notebook available under notebooks - - -## Measure the model Accuracy - -We are using the standard mAP (Mean Average Precision) metric. Use the below -command to generate the intermediate results so that can be used to generate the -map metric. - -```bash - -# Test the default tf model -$ python -m commands.map_score --test-dir \ - --ground-truth-dir ./out/ground-truth \ - --pred-truth-dir ./out/detection-results - --model-fw tf - -``` - -Currently `tf|pytorch` model implementations are added, in which tf is matured -one. And you can enable the custom image extraction pipeline by passing the -flag `--image-pipeline`. - -Once we generated the `out` folder, then we can use the command from [mAP](https://github.com/Cartucho/mAP.git) -repository to see the score. You have to clone this repo and copy the out -folder generate here under the input folder of the mAP command. Please refer -the README to understand how to use the mAP command further. diff --git a/source/pic2card/app/__init__.py b/source/pic2card/app/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/source/pic2card/app/api.py b/source/pic2card/app/api.py deleted file mode 100644 index 52942ea116..0000000000 --- a/source/pic2card/app/api.py +++ /dev/null @@ -1,59 +0,0 @@ -"""Flask service to predict the adaptive card json from the card design""" -import os -import logging -from logging.handlers import RotatingFileHandler -from flask import Flask -from flask_cors import CORS -from flask_restplus import Api - -from mystique.utils import load_od_instance -from mystique import config -from . import resources as res - - -logger = logging.getLogger("mysitque") -logger.setLevel(logging.DEBUG) - -# Suppress the tf warnings. -os.environ["TF_CPP_MIN_LOG_LEVEL"] = "3" - -file_handler = RotatingFileHandler( - "mystique_app.log", maxBytes=1024 * 1024 * 100, backupCount=20 -) -formatter = logging.Formatter( - "%(asctime)s - [%(filename)s:%(lineno)s - %(funcName)20s() ] - \ - %(levelname)s - %(message)s" -) -file_handler.setFormatter(formatter) -file_handler.setLevel(logging.DEBUG) -logger.addHandler(file_handler) - - -app = Flask(__name__) -CORS(app) - -api = Api( - app, - title="Mystique", - version="1.0", - default="Jobs", - default_label="", - description="Mysique App For Adaptive card Json Prediction from \ - UI Design", -) -api.add_resource(res.GetCardTemplates, "/get_card_templates", methods=["GET"]) - -# Conditional loading helps to reduce the bundle size, as we don't need to -# package the tensorflow. -# TODO: Experimental API -if config.ENABLE_TF_SERVING: - api.add_resource(res.TfPredictJson, "/tf_predict_json", methods=["POST"]) -else: - api.add_resource(res.PredictJson, "/predict_json", methods=["POST"]) - -# Load the models and cache it for request handling. -app.od_model = load_od_instance() - -# Include more debug points along with /predict_json api. -api.add_resource(res.DebugEndpoint, "/predict_json_debug", methods=["POST"]) -api.add_resource(res.GetVersion, "/version", methods=["GET"]) diff --git a/source/pic2card/app/assets/samples/1.png b/source/pic2card/app/assets/samples/1.png deleted file mode 100644 index f88ed7cdb9..0000000000 Binary files a/source/pic2card/app/assets/samples/1.png and /dev/null differ diff --git a/source/pic2card/app/assets/samples/2.png b/source/pic2card/app/assets/samples/2.png deleted file mode 100644 index 4160248148..0000000000 Binary files a/source/pic2card/app/assets/samples/2.png and /dev/null differ diff --git a/source/pic2card/app/assets/samples/3.png b/source/pic2card/app/assets/samples/3.png deleted file mode 100644 index bd3339ddbf..0000000000 Binary files a/source/pic2card/app/assets/samples/3.png and /dev/null differ diff --git a/source/pic2card/app/assets/samples/4.png b/source/pic2card/app/assets/samples/4.png deleted file mode 100644 index 3c79d8511d..0000000000 Binary files a/source/pic2card/app/assets/samples/4.png and /dev/null differ diff --git a/source/pic2card/app/assets/samples/5.png b/source/pic2card/app/assets/samples/5.png deleted file mode 100644 index a6a43ed344..0000000000 Binary files a/source/pic2card/app/assets/samples/5.png and /dev/null differ diff --git a/source/pic2card/app/assets/samples/6.png b/source/pic2card/app/assets/samples/6.png deleted file mode 100644 index 77d53bdc82..0000000000 Binary files a/source/pic2card/app/assets/samples/6.png and /dev/null differ diff --git a/source/pic2card/app/assets/samples/7.png b/source/pic2card/app/assets/samples/7.png deleted file mode 100644 index a10b76bb67..0000000000 Binary files a/source/pic2card/app/assets/samples/7.png and /dev/null differ diff --git a/source/pic2card/app/assets/samples/8.png b/source/pic2card/app/assets/samples/8.png deleted file mode 100644 index e340c2ced1..0000000000 Binary files a/source/pic2card/app/assets/samples/8.png and /dev/null differ diff --git a/source/pic2card/app/assets/samples/9.png b/source/pic2card/app/assets/samples/9.png deleted file mode 100644 index 2f4af4dc10..0000000000 Binary files a/source/pic2card/app/assets/samples/9.png and /dev/null differ diff --git a/source/pic2card/app/main.py b/source/pic2card/app/main.py deleted file mode 100644 index 7e96df5de8..0000000000 --- a/source/pic2card/app/main.py +++ /dev/null @@ -1,9 +0,0 @@ -""" -Code isn't thread safe, since we are using matplotlib.pyplot -to draw images. -""" - -from .api import app - -if __name__ == "__main__": - app.run(host="0.0.0.0", port=5050, debug=False, threaded=False, processes=2) diff --git a/source/pic2card/app/resources.py b/source/pic2card/app/resources.py deleted file mode 100644 index d907320895..0000000000 --- a/source/pic2card/app/resources.py +++ /dev/null @@ -1,163 +0,0 @@ -""" resources for api """ -import sys -import os -import io -import base64 -import logging -from urllib.parse import parse_qs, urlparse -from PIL import Image -from flask import request -from flask import current_app -from flask_restplus import Resource -from mystique.predict_card import PredictCard -from mystique import config -from mystique.debug import Debug -from .utils import get_templates - - -logger = logging.getLogger("mysitque") - -cur_dir = os.path.dirname(__file__) -input_image_collection = os.path.join(cur_dir, "input_image_collection") -model_path = os.path.join(cur_dir, "../model/frozen_inference_graph.pb") -label_path = os.path.join( - cur_dir, "../mystique/training/object-detection.pbtxt" -) - - -class GetVersion(Resource): - """Version API""" - - def get(self): # pylint: disable=no-self-use - """ - Return the current deployed git_hash of this project. - - The commit has will be available in env "COMMIT_SHA" or from a file - "/git_commit.md5" - """ - git_sha = os.environ.get("COMMIT_SHA") - branch_name = os.environ.get("BRANCH_NAME") - sha_file = os.path.join(cur_dir, "../git_commit.md5") - branch_name_file = os.path.join(cur_dir, "../git_branch_name.txt") - if not git_sha and os.path.exists(sha_file): - git_sha = open(sha_file).read().strip() - branch_name = open(branch_name_file).read().strip() - - response = {"git_sha": git_sha, "branch": branch_name} - return response - - -class PredictJson(Resource): - """ - Handling Adaptive Card Predictions - """ - - def _get_card_object( - self, bs64_img: str, card_format: str - ): # pylint: disable=no-self-use - """ - From base64 image generate adaptive card schema. - - Make use of the frozen graph for inferencing. - """ - imgdata = base64.b64decode(bs64_img) - image = Image.open(io.BytesIO(imgdata)) - predict_card = PredictCard(current_app.od_model) - card = predict_card.main(image=image, card_format=card_format) - return card - - def post(self): - """ - predicts the adaptive card json for the posted image - :return: adaptive card json - """ - try: - card_format = parse_qs(urlparse(request.url).query).get( - "format", [None] - )[0] - bs64_img = request.json.get("image", "") - if sys.getsizeof(bs64_img) < config.IMG_MAX_UPLOAD_SIZE: - response = self._get_card_object(bs64_img, card_format) - else: - # Upload smaller image. - response = { - "error": { - "msg": "Upload images of size <=" - f" {config.IMG_MAX_UPLOAD_SIZE/(1024*1024)} MB.", - "code": 1002, - } - } - - except Exception as ex: # pylint: disable=broad-except - error_msg = f"Unhandled Error, failed to process the request: {ex}" - logger.error(error_msg) - response = { - "error": {"msg": error_msg, "code": 1001}, - "card_json": None, - } - - return response - - -class TfPredictJson(PredictJson): - """ - Serve the card prediction using tf-serving service. - """ - - # pylint: disable=bad-super-call - def __init__(self, *args, **kwargs): - self.model_name = config.TF_SERVING_MODEL_NAME - self.tf_server = config.TF_SERVING_URL - super(PredictJson, self).__init__(*args, **kwargs) - - def _get_card_object(self, bs64_img: str, card_format: str): - """ - From base64 image generate adaptive card schema. - - Using TF serving to do the object detection. - """ - pic2card = PredictCard(None) - card = pic2card.tf_serving_main( - bs64_img, self.tf_server, self.model_name, card_format - ) - return card - - -class GetCardTemplates(Resource): - """ - Handling adaptive card template images - """ - - def get(self): # pylint: disable=no-self-use - """ - returns adaptive card templates images - :return: adaptive card templates images in str format - """ - templates = get_templates() - return templates - - -class DebugEndpoint(PredictJson): - - """ - Handles the returning the debug images from different adaptive card - prediction models. - """ - - # pylint: disable=bad-super-call - def __init__(self, *args, **kwargs): - super(PredictJson, self).__init__(*args, **kwargs) - - def _get_card_object(self, bs64_img: str, card_format: str): - """ - From base64 image generate debugging images from the adaptive - card prediction. - - Make use of the frozen graph for inferencing. - """ - - imgdata = base64.b64decode(bs64_img) - image = Image.open(io.BytesIO(imgdata)) - debug = Debug(current_app.od_model) - images = debug.main(pil_image=image, card_format=card_format) - return images diff --git a/source/pic2card/app/utils.py b/source/pic2card/app/utils.py deleted file mode 100644 index 376cb2075a..0000000000 --- a/source/pic2card/app/utils.py +++ /dev/null @@ -1,23 +0,0 @@ -""" utils for the app """ -import os -import base64 - - -def get_templates(templates_path="assets/samples"): - """ - reads images from templates_path folder and returns images in str - :param templates_path: path of templates folder - :return: dict of template_image_name : encoded template_image_str - """ - - templates = [] - templates_path = os.path.join(os.path.dirname(__file__), templates_path) - - # List.dir performs differently in docker environment. - files = os.listdir(templates_path) - files.sort() - for file in files: - file_path = os.path.join(templates_path, file) - with open(file_path, "rb") as template: - templates.append(base64.b64encode(template.read()).decode()) - return {"templates": templates} diff --git a/source/pic2card/commands/__init__.py b/source/pic2card/commands/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/source/pic2card/commands/export_inference_graph.py b/source/pic2card/commands/export_inference_graph.py deleted file mode 100644 index 5f140d1ca8..0000000000 --- a/source/pic2card/commands/export_inference_graph.py +++ /dev/null @@ -1,187 +0,0 @@ -# Copyright 2017 The TensorFlow Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ============================================================================== - -r"""Tool to export an object detection model for inference. - -Prepares an object detection tensorflow graph for inference using model -configuration and a trained checkpoint. Outputs inference -graph, associated checkpoint files, a frozen inference graph and a -SavedModel (https://tensorflow.github.io/serving/serving_basic.html). - -The inference graph contains one of three input nodes depending on the user -specified option. - * `image_tensor`: Accepts a uint8 4-D tensor of shape [None, None, None, 3] - * `encoded_image_string_tensor`: Accepts a 1-D string tensor of shape [None] - containing encoded PNG or JPEG images. Image resolutions are expected to be - the same if more than 1 image is provided. - * `tf_example`: Accepts a 1-D string tensor of shape [None] containing - serialized TFExample protos. Image resolutions are expected to be the same - if more than 1 image is provided. - -and the following output nodes returned by the model.postprocess(..): - * `num_detections`: Outputs float32 tensors of the form [batch] - that specifies the number of valid boxes per image in the batch. - * `detection_boxes`: Outputs float32 tensors of the form - [batch, num_boxes, 4] containing detected boxes. - * `detection_scores`: Outputs float32 tensors of the form - [batch, num_boxes] containing class scores for the detections. - * `detection_classes`: Outputs float32 tensors of the form - [batch, num_boxes] containing classes for the detections. - * `raw_detection_boxes`: Outputs float32 tensors of the form - [batch, raw_num_boxes, 4] containing detection boxes without - post-processing. - * `raw_detection_scores`: Outputs float32 tensors of the form - [batch, raw_num_boxes, num_classes_with_background] containing class score - logits for raw detection boxes. - * `detection_masks`: (Optional) Outputs float32 tensors of the form - [batch, num_boxes, mask_height, mask_width] containing predicted instance - masks for each box if its present in the dictionary of postprocessed - tensors returned by the model. - * detection_multiclass_scores: (Optional) Outputs float32 tensor of shape - [batch, num_boxes, num_classes_with_background] for containing class - score distribution for detected boxes including background if any. - * detection_features: (Optional) float32 tensor of shape - [batch, num_boxes, roi_height, roi_width, depth] - containing classifier features - -Notes: - * This tool uses `use_moving_averages` from eval_config to decide which - weights to freeze. - -Example Usage: --------------- -python export_inference_graph \ - --input_type image_tensor \ - --pipeline_config_path path/to/ssd_inception_v2.config \ - --trained_checkpoint_prefix path/to/model.ckpt \ - --output_directory path/to/exported_model_directory - -The expected output would be in the directory -path/to/exported_model_directory (which is created if it does not exist) -with contents: - - inference_graph.pbtxt - - model.ckpt.data-00000-of-00001 - - model.ckpt.info - - model.ckpt.meta - - frozen_inference_graph.pb - + saved_model (a directory) - -Config overrides (see the `config_override` flag) are text protobufs -(also of type pipeline_pb2.TrainEvalPipelineConfig) which are used to override -certain fields in the provided pipeline_config_path. These are useful for -making small changes to the inference graph that differ from the training or -eval config. - -Example Usage (in which we change the second stage post-processing score -threshold to be 0.5): - -python export_inference_graph \ - --input_type image_tensor \ - --pipeline_config_path path/to/ssd_inception_v2.config \ - --trained_checkpoint_prefix path/to/model.ckpt \ - --output_directory path/to/exported_model_directory \ - --config_override " \ - model{ \ - faster_rcnn { \ - second_stage_post_processing { \ - batch_non_max_suppression { \ - score_threshold: 0.5 \ - } \ - } \ - } \ - }" -""" -# pylint: disable=no-member - -import tensorflow as tf -from google.protobuf import text_format -from object_detection import exporter # pylint: disable=import-error -from object_detection.protos import pipeline_pb2 # pylint: disable=import-error - -slim = tf.contrib.slim -flags = tf.app.flags - - -flags.DEFINE_string( - "input_type", - "image_tensor", - "Type of input node. Can be " - "one of [`image_tensor`, `encoded_image_string_tensor`, " - "`tf_example`]", -) -flags.DEFINE_string( - "input_shape", - None, - "If input_type is `image_tensor`, this can explicitly set " - "the shape of this input tensor to a fixed size. The " - "dimensions are to be provided as a comma-separated list " - "of integers. A value of -1 can be used for unknown " - "dimensions. If not specified, for an `image_tensor, the " - "default shape will be partially specified as " - "`[None, None, None, 3]`.", -) -flags.DEFINE_string( - "pipeline_config_path", - None, - "Path to a pipeline_pb2.TrainEvalPipelineConfig config " "file.", -) -flags.DEFINE_string( - "trained_checkpoint_prefix", - None, - "Path to trained checkpoint, typically of the form " "path/to/model.ckpt", -) -flags.DEFINE_string("output_directory", None, "Path to write outputs.") -flags.DEFINE_string( - "config_override", - "", - "pipeline_pb2.TrainEvalPipelineConfig " - "text proto to override pipeline_config_path.", -) -flags.DEFINE_boolean( - "write_inference_graph", False, "If true, writes inference graph to disk." -) -tf.app.flags.mark_flag_as_required("pipeline_config_path") -tf.app.flags.mark_flag_as_required("trained_checkpoint_prefix") -tf.app.flags.mark_flag_as_required("output_directory") -FLAGS = flags.FLAGS - - -def main(_): - """ - Exports inference graph from the specified checkpoiny. - """ - pipeline_config = pipeline_pb2.TrainEvalPipelineConfig() - with tf.gfile.GFile(FLAGS.pipeline_config_path, "r") as file: - text_format.Merge(file.read(), pipeline_config) - text_format.Merge(FLAGS.config_override, pipeline_config) - if FLAGS.input_shape: - input_shape = [ - int(dim) if dim != "-1" else None - for dim in FLAGS.input_shape.split(",") - ] - else: - input_shape = None - exporter.export_inference_graph( - FLAGS.input_type, - pipeline_config, - FLAGS.trained_checkpoint_prefix, - FLAGS.output_directory, - input_shape=input_shape, - write_inference_graph=FLAGS.write_inference_graph, - ) - - -if __name__ == "__main__": - tf.app.run() diff --git a/source/pic2card/commands/generate_bleu_score.py b/source/pic2card/commands/generate_bleu_score.py deleted file mode 100644 index 285338702c..0000000000 --- a/source/pic2card/commands/generate_bleu_score.py +++ /dev/null @@ -1,562 +0,0 @@ -""" -Thins to pre-process manually while collecting the ground truth adaptive -card json: - -1. Filter out the elements not supported by pic2card except factset elements - The supported elements are: TextBlock, ChoiceSet, ImageSet, CheckBox, - ColumnSet, Image, ActionSet. This filtering is needed because the R-CNN - model doesn't detect the unsupported elements and won't be part of the - predicted JSON, This results in lowering the layout score while comparing - the predicted SON with ground truth. -2. Update the actions element as separate set of ActionSets with the - relevant action. - Right now each actions element is represented as a separate ActionSet - element having an action. -3. Need to update the un-supported Column Width attribute values. - Un-supported property values for the property Width for the element - Column are: - - Weighted - - Pixels - update it to supported values: Stretch / Automatic. - -4.Template data binding is not supported in metric collection. - Since we are comparing the layout structure and each element's - property values, comparing a custom expression binding variables on - one side and expression binding done by pic2card / non-template binding - card JSON values, will be meaningless and lowers our layout metric score. - -Command to collect the bleu score metric for the layout generation - -USAGE : - -If not in debug mode: -python -m commands.generate_bleu_score.py --images_path=/image_path \ - --ground_truths_path=/ground_truth_json_path \ - --api_url=url_of_the_service - -If in debug mode: -python -m commands.generate_bleu_score.py --images_path=/image_path \ - --ground_truths_path=/ground_truth_json_path \ - --api_url=url_of_the_service --debug - -""" -# pylint: disable=too-many-locals -# pylint: disable=too-many-statements - -import argparse -import base64 -import copy -import json -import os -import re -from datetime import datetime -from typing import List, Dict - -import pandas as pd -import requests -from nltk import translate -from nltk.translate.bleu_score import corpus_bleu - - -class Helper: - """ - This class is holds the needed pre-processing methods which handles: - 1. Filter the non-supported attributes from the element and maintain the - common supported in both ground-truth and test card JSON. - 2. Maintain the order of the element's attributes in both ground-truth and - test card JSON. - 3. Converts simple date expression to textual representation - 4. Adapt a factset element as rows:columns of text-boxes - """ - - CONTAINER_SUB_MAPPINGS = { - "Column": "items", - "ColumnSet": "columns", - "ImageSet": "images", - } - ELEMENTS_PROPERTIES_MAP = { - "TextBlock": { - "attributes": ["type", "text", "size", "color", "weight", "wrap"], - "method": "text_block", - }, - "actions": { - "attributes": ["type", "title", "style"], - "method": "actions", - }, - "ActionSet": { - "attributes": ["type", "actions", "spacing"], - "method": "action_set", - }, - "Image": { - "attributes": ["type", "altText", "size", "url"], - "method": "image", - }, - "Input.Toggle": { - "attributes": ["type", "title"], - "method": "check_box", - }, - "choices": {"attributes": ["title", "value"], "method": "choices"}, - "Input.ChoiceSet": { - "attributes": ["type", "choices", "style"], - "method": "choice_set", - }, - "Column": { - "attributes": ["type", "width", "items"], - "method": "column", - }, - "ColumnSet": { - "attributes": ["type", "columns"], - "method": "column_set", - }, - "ImageSet": { - "attributes": ["type", "imageSize", "images"], - "method": "image_set", - }, - } - - # pylint: disable=no-self-use - def _change_date_expression(self, expression: str) -> str: - - """ - Convert the date expression to date string in words format - @param expression: date expression - @return: date string in words format - """ - date_string = re.findall( - r"\b\d+\-\d+-\d+T\d+:\d+:\d+\w{1}", expression - )[0] - date_time_obj = datetime.strptime(date_string, "%Y-%m-%dT%H:%M:%SZ") - date_string = date_time_obj.strftime("%a, %d %b %Y") - return date_string - - # pylint: disable=no-self-use - def factset_to_textbox(self, element: Dict) -> List: - """ - Convert the factset element to column-sets of textboxes - @param element: factset element - @return: updated list column-sets of textboxes. - """ - keys_values = element.get("facts") - updated_element = [] - for ctr, value in enumerate(keys_values): - print(f"{value} index {ctr}") - item1 = { - "type": "TextBlock", - "text": value.get("title"), - "size": "Default", - "horizontalAlignment": "Left", - "color": "Default", - "weight": "Bolder", - "wrap": "true", - } - item2 = { - "type": "TextBlock", - "text": value.get("value"), - "size": "Default", - "horizontalAlignment": "Right", - "color": "Default", - "weight": "Default", - "wrap": "true", - } - columns = [ - { - "type": "Column", - "width": "auto", - "items": [item1], - "horizontalAlignment": "Left", - }, - { - "type": "Column", - "width": "auto", - "items": [item2], - "horizontalAlignment": "Left", - }, - ] - columnset = { - "type": "ColumnSet", - "columns": columns, - "horizontalAlignment": "Left", - } - updated_element.append(columnset) - return updated_element - - # pylint: disable=no-self-use - def remove_fields_from_element( - self, element: Dict, reference_list: List - ) -> Dict: - """ - Remove the extra fields from the element , i.e keep only the - supported attributes for the element. - @param element: adaptive card design element - @param reference_list: list of supported attributes - for the passed element's type. - @return: updated element. - """ - fields = list(element.keys()) - fields = list(set(fields) & set(reference_list)) - element = {k: element[k] for k in fields} - return element - - def clean_element(self, element: Dict) -> Dict: - """ - Method responsible for calling the appropriate pre-process method for - the passed element. - :param element: adaptive card design element - :return: pre-processed adaptive card design element - """ - type_text = element.get("type", "") - if "type" not in element: - type_text = "choices" - elif re.findall(r"\bAction\b", element.get("type")): - type_text = "actions" - element_attributes = self.ELEMENTS_PROPERTIES_MAP.get( - type_text, {} - ).get("attributes") - element = self.remove_fields_from_element(element, element_attributes) - if element.get("type", "") not in list( - self.CONTAINER_SUB_MAPPINGS.keys() - ) + ["Input.Toggle"]: - if type_text not in ["choices", "actions"]: - type_text = self.ELEMENTS_PROPERTIES_MAP.get( - element.get("type", ""), {} - ).get("method") - template_object = getattr(self, type_text) - element = template_object(element) - if element.get("type", "") in self.CONTAINER_SUB_MAPPINGS: - element[self.CONTAINER_SUB_MAPPINGS[element.get("type", "")]] = [] - - element = dict(sorted(element.items(), key=lambda s: s[0])) - return element - - def text_block(self, element: Dict) -> Dict: - """ - Performs all the pre-process operation related to Textbox - @param element: adaptive cards design element - @return: pre-processed textbox element - """ - fields = list(element.keys()) - # add the extra fileds with default values - element.update({"wrap": "true"}) - if "size" not in fields: - element.update({"size": "Default"}) - if "weight" not in fields: - element.update({"weight": "Default"}) - if "color" not in fields: - element.update({"color": "Default"}) - - if re.findall(r"{{.*}}", element.get("text", "")): - need_to_update = self._change_date_expression( - re.findall(r"{{.*}}", element.get("text"))[0] - ) - text = element.get("text") - text = re.sub(r"{{.*}}", need_to_update, text) - element.update({"text": text}) - return element - - def action_set(self, element: Dict) -> Dict: - """ - Performs all the pre-process operation related to Actionset - @param element: adaptive cards design element - @return: pre-processed actionset element - """ - fields = list(element.keys()) - if "spacing" not in fields: - element.update({"spacing": "Medium"}) - element["actions"] = [self.clean_element(element["actions"][0])] - fields = list(element["actions"][0].keys()) - - if "style" not in fields: - element["actions"][0].update({"style": "default"}) - - element["actions"] = [ - dict(sorted(element["actions"][0].items(), key=lambda s: s[0])) - ] - return element - - def image(self, element: Dict) -> Dict: # pylint: disable=no-self-use - """ - Performs all the pre-process operation related to Image - @param element: adaptive cards design element - @return: pre-processed image element - """ - fields = list(element.keys()) - if "altText" not in fields: - element.update({"altText": "Image"}) - element["url"] = "" - return element - - def choice_set(self, element: Dict) -> Dict: - """ - Performs all the pre-process operation related to Choice-Set - @param element: adaptive cardsgetattr design element - @return: pre-processed choice-set element - """ - element.update({"style": "expanded"}) - element["choices"] = [ - self.clean_element(ch) for ch in element["choices"] - ] - return element - - def clean_containers_train( - self, - body: List, - element: Dict, - pre_process_object=None, - ground_truth=False, - ) -> None: - """ - Method for cleaning the container elements. - based on the ground_truth flag swihces and calls the appropriate - pre_process methods for both ground truth and predicted card JSON - :param body: adaptive card JSON body - :param element: design element to be pre-processed - :param pre_process_object: Preprocess class object - :param ground_truth: flag to switch between ground truth - and predicted card JSON - """ - if ground_truth: - backup = copy.deepcopy(element) - element = self.clean_element(element) - - element = dict(sorted(element.items(), key=lambda s: s[0])) - body.append(element) - if element.get("type", "") != "Input.ChoiceSet": - container_sub_filed = self.CONTAINER_SUB_MAPPINGS[element["type"]] - body = body[-1].get(container_sub_filed) - if ground_truth: - pre_process_object.pre_process_elements( - body, backup[container_sub_filed] - ) - else: - pre_process_object.pre_process_elements( - body, element[container_sub_filed] - ) - - -class Preprocess: - """ - This class Handles the pre-processing for both ground truth adaptive card - json and pi2card generated adaptive card json - """ - - helper_object = Helper() - CONTAINERS = ["ColumnSet", "Imageset", "Column", "Input.ChoiceSet"] - GROUND_TRUTH_DUMP_PATH = "../../../ground_truth_dump" - PREDICTED_DUMP_PATH = "../../../predicted_dump" - CSV_EXPORT_PATH = "../../../layout_metric_scores.csv" - - def pre_process_elements(self, body: List, design_object: Dict) -> None: - """ - Pre-process the passed adaptive card design element - @param body: adaptive card json body - @param design_object: element to be pre-processed - """ - - if ( - isinstance(design_object, dict) - and design_object.get("type", "") not in self.CONTAINERS - ): - if design_object.get("type") == "FactSet": - design_objects = Helper.factset_to_textbox( - self.helper_object, design_object - ) - body += design_objects - else: - design_object = self.helper_object.clean_element(design_object) - body.append(design_object) - elif isinstance(design_object, list): - for design_obj in design_object: - self.pre_process_elements(body, design_obj) - else: - self.helper_object.clean_containers_train( - body, design_object, self, ground_truth=True - ) - - def process_elements_test(self, body: List, design_object: Dict) -> None: - """ - Process the pic2card generated adaptive card json for pre-processing - @param body: adaptive card json body - @param design_object: element to be processed - """ - - if ( - isinstance(design_object, dict) - and design_object.get("type", "") not in self.CONTAINERS - ): - if design_object.get("type") == "Image": - design_object["url"] = "" - del design_object["horizontalAlignment"] - design_object = dict( - sorted(design_object.items(), key=lambda s: s[0]) - ) - body.append(design_object) - elif isinstance(design_object, list): - for design_obj in design_object: - self.pre_process_elements(body, design_obj) - else: - del design_object["horizontalAlignment"] - self.helper_object.clean_containers_train(body, design_object, self) - - # pylint: disable=no-self-use - def _get_card_json(self, image_path: str, api_url: str) -> Dict: - """ - Fetch the pic2card generated adaptive card json - @param image_path: image full path - @param api_url: pic2card api url - @return: adaptive card json - """ - base64_string = "" - with open(image_path, "rb") as image_file: - base64_string = base64.b64encode(image_file.read()).decode() - - headers = {"Content-Type": "application/json"} - response = requests.post( - url=api_url, - data=json.dumps({"image": base64_string}), - headers=headers, - ) - response.raise_for_status() - return response.json().get("card_json").get("card") - - def main( - self, - api_url=None, - images_path=None, - ground_truths_path=None, - debug=False, - ) -> None: - """ - Collect and log bleu_score metric for the set of images with their - ground truths passed. - @param api_url: pic2card api url - @param images_path: images path [ directory / image ] - @param ground_truths_path: ground truth jsons path - @param debug: Debug flag to enable the metric collection in - debugging mode to dump the train/test and - resulting metric scores - [ directory / single json file ] - """ - rows = [] - if ".png" in images_path: - images = [images_path] - ground_truths = [ground_truths_path] - else: - images = list(sorted(os.listdir(images_path))) - images = [f"{images_path}/{image}" for image in images] - ground_truths = list(sorted(os.listdir(ground_truths_path))) - ground_truths = [ - f"{ground_truths_path}/{item}" for item in ground_truths - ] - - avg_score = 0.0 - for ctr, train_image in enumerate(images): - print(f"\nMetric collection for image: {train_image}..") - # preprocess train - print(f"Ground Truth file: {ground_truths[ctr]} ...") - train = json.loads(open(ground_truths[ctr], "r").read()) - body = [] - self.pre_process_elements(body, train["body"]) - train["body"] = body - train = dict(sorted(train.items(), key=lambda s: s[0])) - train["version"] = "1.3" - - print("Getting pic2card generated adaptive card json....") - test = self._get_card_json(train_image, api_url) - - # preprocess test - body = [] - self.process_elements_test(body, test["body"]) - test["body"] = body - test = dict(sorted(test.items(), key=lambda s: s[0])) - test["version"] = "1.3" - train_corpus = json.dumps(train) - train_corpus = re.sub(r"[^\w\s\{\}]", "", train_corpus) - test_corpus = json.dumps(test) - test_corpus = re.sub(r"[^\w\s\{\}]", "", test_corpus) - - # Get metric - smoothing = translate.bleu_score.SmoothingFunction().method7 - score = corpus_bleu( - [[train_corpus.lower().split()]], - [test_corpus.lower().split()], - smoothing_function=smoothing, - weights=(0.5, 0.5), - ) - if score > 1: - smoothing = translate.bleu_score.SmoothingFunction().method3 - score = corpus_bleu( - [[train_corpus.lower().split()]], - [test_corpus.lower().split()], - smoothing_function=smoothing, - weights=(0.5, 0.5), - ) - - print(f"Similarity score for {train_image} is : {score}\n") - avg_score += score - if debug: - rows.append([train_image, score]) - file_name = train_image.split("/")[-1] - if not os.path.exists(self.GROUND_TRUTH_DUMP_PATH): - os.makedirs(self.GROUND_TRUTH_DUMP_PATH) - if not os.path.exists(self.PREDICTED_DUMP_PATH): - os.makedirs(self.PREDICTED_DUMP_PATH) - - print( - f"Dumping pre-processed train " - f"and test json of: {file_name}" - ) - - open( - f"{self.GROUND_TRUTH_DUMP_PATH}/" - f"{file_name.split('.')[0]}_pre_processed.json", - "w", - ).write(json.dumps(train)) - open( - f"{self.PREDICTED_DUMP_PATH}/" - f"{file_name.split('.')[0]}_pre_processed.json", - "w", - ).write(json.dumps(test)) - print(f"average score = {(avg_score / len(images)) * 100}%") - if debug: - print("Dumping the per image score collected as a CSV") - dfr = pd.DataFrame(rows, columns=["image", "score"]) - dfr.to_csv(self.CSV_EXPORT_PATH, index=False) - - -if __name__ == "__main__": - parser = argparse.ArgumentParser( - description="Collect the blue score metric" "for layout generation" - ) - parser.add_argument( - "--images_path", - required=True, - help="Enter Image path/ Images directory path", - ) - parser.add_argument( - "--ground_truths_path", - required=True, - help="Enter ground truth card json path/ ground truth " - "card json directory path", - ) - parser.add_argument( - "--api_url", - help="Enter the endpoint of pic2card server, this does " - "not support template binding of data", - default=None, - ) - parser.add_argument( - "--debug", - help="Debug flag to enable the metric collection in " - "debugging mode to dump the train/test and " - "resulting metric scores", - required=False, - action="store_true", - ) - args = parser.parse_args() - pre_process = Preprocess() - pre_process.main( - images_path=args.images_path, - ground_truths_path=args.ground_truths_path, - api_url=args.api_url, - debug=args.debug, - ) diff --git a/source/pic2card/commands/generate_card.py b/source/pic2card/commands/generate_card.py deleted file mode 100644 index 08fb765f17..0000000000 --- a/source/pic2card/commands/generate_card.py +++ /dev/null @@ -1,41 +0,0 @@ -""" -Command to predict the adaptive card json - -Usage : -python -m command.generate_card --image_path=/path/to/input/image -""" -import argparse -import json -from PIL import Image - -from mystique.predict_card import PredictCard -from mystique.utils import load_od_instance - - -def main(image_path=None, card_format=None): - """ - Command runs the predict card function - - @param image_path: input image path - """ - image = Image.open(image_path) - object_detection = load_od_instance() - card_json = PredictCard(object_detection).main( - image=image, card_format=card_format - ) - print(json.dumps(card_json.get("card_json"), indent=2)) - print(card_json.keys(), card_json["card_json"].keys()) - - -if __name__ == "__main__": - - parser = argparse.ArgumentParser(description="Predict the Card Json") - parser.add_argument("--image_path", required=True, help="Enter Image path") - parser.add_argument( - "--card_format", - help="Enter Format as 'template' if template data \ - payload is required", - default=None, - ) - args = parser.parse_args() - main(image_path=args.image_path, card_format=args.card_format) diff --git a/source/pic2card/commands/generate_card_using_python_client.py b/source/pic2card/commands/generate_card_using_python_client.py deleted file mode 100644 index 595c12d6e8..0000000000 --- a/source/pic2card/commands/generate_card_using_python_client.py +++ /dev/null @@ -1,59 +0,0 @@ -""" -Command to predict the adaptive card json using python client - -Usage : -python generate_card_using_python_client.py --image_path=/image_path \ - --api_url=url_of_the_service -""" -import argparse -import base64 -from mystique.utils import send_json_payload - - -def main(image_path=None, api_server=None, card_format=None): - """ - Predict the card using python client - - @param image_path: input image path - @param api_url: url of the prediction service - """ - base64_string = "" - api_path = "/predict_json" - with open(image_path, "rb") as image_file: - base64_string = base64.b64encode(image_file.read()).decode() - if card_format: - response = send_json_payload( - api_path, - body={"image": base64_string}, - host_port=api_server, - url_params={"format": card_format}, - ) - else: - response = send_json_payload( - api_path, body={"image": base64_string}, host_port=api_server - ) - - print(response.get("card_json", "")) - if card_format: - print(response.get("template_data_payload", "")) - - -if __name__ == "__main__": - - parser = argparse.ArgumentParser(description="Predict the Card Json") - parser.add_argument("--image_path", required=True, help="Enter Image path") - parser.add_argument( - "--api_server", required=True, help="Enter the api server host and port" - ) - parser.add_argument( - "--card_format", - help="Enter 'template' if card template data \ - payload is needed", - default=None, - ) - args = parser.parse_args() - main( - image_path=args.image_path, - api_server=args.api_server, - card_format=args.card_format, - ) diff --git a/source/pic2card/commands/generate_tfrecord.py b/source/pic2card/commands/generate_tfrecord.py deleted file mode 100644 index 800df6e071..0000000000 --- a/source/pic2card/commands/generate_tfrecord.py +++ /dev/null @@ -1,154 +0,0 @@ -""" -Generates tensorflow records from the label mapped train and test csv -files. - -Usage: - # From tensorflow/models/ - # Create train data: - python generate_tfrecord.py --csv_input=data/train_labels.csv \ - --output_path=train.record - - # Create test data: - python generate_tfrecord.py --csv_input=data/test_labels.csv \ - --output_path=test.record -""" -# pylint: disable=no-member -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - -import io -import os -from collections import namedtuple - -import pandas as pd -import tensorflow as tf -from PIL import Image -from object_detection.utils import dataset_util # pylint: disable=import-error - -flags = tf.app.flags -flags.DEFINE_string("csv_input", "", "Path to the CSV input") -flags.DEFINE_string("output_path", "", "Path to output TFRecord") -flags.DEFINE_string("image_dir", "", "Path to images") -FLAGS = flags.FLAGS - - -# TO-DO replace this with label map -def class_text_to_int(row_label): - """ - Function to define the class lables - - @param row_label: integer class value from the csv - """ - if row_label == "textbox": - return 1 - if row_label == "radio_button": - return 2 - if row_label == "checkbox": - return 3 - if row_label == "actionset": - return 4 - if row_label == "image": - return 5 - return 0 - - -def create_tf_example(group, path): # pylint: disable=too-many-locals - """ - Generate tf recods by parsing the xml with - the properites and labels. - - @param group: filename group - @param path: images path - - @return: the tf record - """ - # import pdb; pdb.set_trace() - # name_filename = group.filename[:group.filename.find(".")] + ".png" - with tf.gfile.GFile( - os.path.join(path, "{}".format(group.filename)), "rb" - ) as fid: - encoded_jpg = fid.read() - encoded_jpg_io = io.BytesIO(encoded_jpg) - image = Image.open(encoded_jpg_io) - width, height = image.size - - filename = group.filename.encode("utf8") - image_format = b"png" - xmins = [] - xmaxs = [] - ymins = [] - ymaxs = [] - classes_text = [] - classes = [] - - for ( - index, # pylint: disable=unused-variable - row, - ) in group.object.iterrows(): - xmins.append(row["xmin"] / width) - xmaxs.append(row["xmax"] / width) - ymins.append(row["ymin"] / height) - ymaxs.append(row["ymax"] / height) - classes_text.append(row["class"].encode("utf8")) - classes.append(class_text_to_int(row["class"])) - - tf_example = tf.train.Example( - features=tf.train.Features( - feature={ - "image/height": dataset_util.int64_feature(height), - "image/width": dataset_util.int64_feature(width), - "image/filename": dataset_util.bytes_feature(filename), - "image/source_id": dataset_util.bytes_feature(filename), - "image/encoded": dataset_util.bytes_feature(encoded_jpg), - "image/format": dataset_util.bytes_feature(image_format), - "image/object/bbox/xmin": dataset_util.float_list_feature( - xmins - ), - "image/object/bbox/xmax": dataset_util.float_list_feature( - xmaxs - ), - "image/object/bbox/ymin": dataset_util.float_list_feature( - ymins - ), - "image/object/bbox/ymax": dataset_util.float_list_feature( - ymaxs - ), - "image/object/class/text": dataset_util.bytes_list_feature( - classes_text - ), - "image/object/class/label": dataset_util.int64_list_feature( - classes - ), - } - ) - ) - return tf_example - - -def main(_): - """ - Writes the generated tensorflow records into the specified ouput - directory - """ - - writer = tf.python_io.TFRecordWriter(FLAGS.output_path) - path = os.path.join(FLAGS.image_dir) - examples = pd.read_csv(FLAGS.csv_input) - data = namedtuple("data", ["filename", "object"]) - gbs = examples.groupby("filename") - grouped = [ - data(filename, gbs.get_group(x)) - for filename, x in zip(gbs.groups.keys(), gbs.groups) - ] - for group in grouped: - tf_example = create_tf_example(group, path) - writer.write(tf_example.SerializeToString()) - - writer.close() - output_path = os.path.join(os.getcwd(), FLAGS.output_path) - print("Successfully created the TFRecords: {}".format(output_path)) - - -if __name__ == "__main__": - tf.app.run() diff --git a/source/pic2card/commands/inference_from_tf_serving.py b/source/pic2card/commands/inference_from_tf_serving.py deleted file mode 100644 index b56e175e8d..0000000000 --- a/source/pic2card/commands/inference_from_tf_serving.py +++ /dev/null @@ -1,66 +0,0 @@ -""" -Do inference using the tf-serve service. - -We have loaded the saved model into the tf-serve -""" -# pylint: disable=no-value-for-parameter -import os -import base64 -import click -from PIL import Image - -from mystique.utils import timeit -from mystique.initial_setups import set_graph_and_tensors -from mystique.predict_card import PredictCard -from mystique.detect_objects import ObjectDetection -from mystique import config - -# tf.logging.set_verbosity(tf.logging.ERROR) -os.environ["TF_CPP_MIN_LOG_LEVEL"] = "3" - - -@click.command() -@click.option("-i", "--image", required=True, help="Path to the image") -@click.option( - "-t", - "--tf_server", - required=False, - default=config.TF_SERVING_URL, - help="TF serving base URL", -) -@click.option( - "-n", - "--model_name", - required=False, - default=config.TF_SERVING_MODEL_NAME, - help="Model name to be used, as we can host multiple models in" - " tf-serving", -) -def inference_graph(tf_server, image, model_name): - """Do inference using the tf-serve service. - We have loaded the saved model into the tf-serve - """ - - with open(image, "rb") as file: - bs64_img = base64.b64encode(file.read()).decode("utf8") - card_ = PredictCard(None) - - with timeit("tf-verving"): - card = card_.tf_serving_main(bs64_img, tf_server, model_name) - print(f"Card body size: {len(card['card_json']['body'])}") - - # Frozen graph implementation. - img = Image.open(open(image, "rb")) - # image_np = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR) - - # pylint: disable=too-many-function-args - object_detection = ObjectDetection(*set_graph_and_tensors()) - predict_card = PredictCard(object_detection) - - with timeit("frozen-graph"): - card = predict_card.main(image=img) - print(f"Card body size: {len(card['card_json']['body'])}") - - -if __name__ == "__main__": - inference_graph() diff --git a/source/pic2card/commands/map_score.py b/source/pic2card/commands/map_score.py deleted file mode 100644 index 974f6e5c69..0000000000 --- a/source/pic2card/commands/map_score.py +++ /dev/null @@ -1,113 +0,0 @@ -""" -Generate mAP score for given model, use the given test dataset with labels. - -We are using the mAP tool developed by -https://github.com/Cartucho/mAP, This command generate the ground -truth and predicted values in a files that are compatible to the -mAP command. - -NOTE: This project isn't including that command, use it externally. -""" -# pylint: disable=no-value-for-parameter - -import os -import pathlib -import click -import numpy as np -import pandas as pd -from mystique.initial_setups import set_graph_and_tensors -from mystique.detect_objects import ObjectDetection -from mystique.utils import xml_to_csv -from mystique.obj_detect.detect_objects_pth import PtObjectDetection - - -@click.command() -@click.option( - "--test-dir", - help="Test image directory, it should be labelmg generated directory", - required=True, -) -@click.option( - "--ground-truth-dir", - help="Export the ground trught labels to this dir, use the same img name", - required=True, -) -@click.option( - "--pred-truth-dir", - help="Export the ground trught labels to this dir, use the same img name", - required=True, -) -@click.option( - "--model-fw", - type=click.Choice(["tf", "pytorch"], case_sensitive=False), - help="Model framework tf/pytorch", - required=True, -) -@click.option( - "--bbox-min-score", - help="Minimum bbox score from the model to be considered.", - default=0.9, - required=False, -) -@click.option( - "--image-pipeline", - help="Use the custom image pipeline for image coordinate extraction.", - is_flag=True, -) -# pylint: disable=too-many-locals -def generate_map( - test_dir, - ground_truth_dir, - pred_truth_dir, - model_fw, - bbox_min_score, - image_pipeline, -): # pylint: disable=too-many-arguments - """Generate mAP score for given model, use the - given test dataset with labels.""" - # columns used: filename, xmin, ymin, xmax, ymax - gt_dir = pathlib.Path(ground_truth_dir) - pd_dir = pathlib.Path(pred_truth_dir) - gt_dir.mkdir(parents=True, exist_ok=True) - pd_dir.mkdir(parents=True, exist_ok=True) - - _ = not os.path.exists(ground_truth_dir) and os.mkdir(ground_truth_dir) - _ = not os.path.exists(pred_truth_dir) and os.mkdir(pred_truth_dir) - - # pylint: disable=too-many-function-args, abstract-class-instantiated - if model_fw == "tf": - object_detection = ObjectDetection(*set_graph_and_tensors()) - elif model_fw == "pytorch": - object_detection = PtObjectDetection() - - data_df = xml_to_csv(test_dir) - images = np.unique(data_df["filename"].tolist()) - - for img_name in images: - img_path = f"{test_dir}/{img_name}" - classes, scores, boxes = object_detection.get_bboxes( - img_path, image_pipeline - ) - - # import pdb; pdb.set_trace() - preds = [] - pred_iter = zip(classes, scores, boxes) - for pred in pred_iter: - label, bbox, score = pred - if score > bbox_min_score: - preds.append((label, score, bbox[0], bbox[1], bbox[2], bbox[3])) - - columns = ["class", "score", "xmin", "ymin", "xmax", "ymax"] - fname = img_name.split(".")[0] - pd.DataFrame.from_records(preds, columns=columns).to_csv( - f"{pd_dir}/{fname}.txt", header=False, sep=" ", index=False - ) - # Save the ground truth labels. - columns = ["class", "xmin", "ymin", "xmax", "ymax"] - data_df[data_df.filename == img_name][columns].to_csv( - f"{gt_dir}/{fname}.txt", header=False, sep=" ", index=False - ) - - -if __name__ == "__main__": - generate_map() diff --git a/source/pic2card/commands/train.py b/source/pic2card/commands/train.py deleted file mode 100644 index 04f6678de4..0000000000 --- a/source/pic2card/commands/train.py +++ /dev/null @@ -1,139 +0,0 @@ -# Copyright 2017 The TensorFlow Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ============================================================================== -"""Binary to run train and evaluation on object detection model.""" -# pylint: disable=no-member -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - -from absl import flags - -import tensorflow as tf - -from object_detection import model_hparams # pylint: disable=import-error -from object_detection import model_lib # pylint: disable=import-error - -flags.DEFINE_string( - "model_dir", - None, - "Path to output model directory " - "where event and checkpoint files will be written.", -) -flags.DEFINE_string( - "pipeline_config_path", None, "Path to pipeline config " "file." -) -flags.DEFINE_integer("num_train_steps", None, "Number of train steps.") -flags.DEFINE_boolean( - "eval_training_data", - False, - "If training data should be evaluated for this job. Note " - "that one call only use this in eval-only mode, and " - "`checkpoint_dir` must be supplied.", -) -flags.DEFINE_integer( - "sample_1_of_n_eval_examples", - 1, - "Will sample one of " "every n eval input examples, where n is provided.", -) -flags.DEFINE_integer( - "sample_1_of_n_eval_on_train_examples", - 5, - "Will sample " - "one of every n train input examples for evaluation, " - "where n is provided. This is only used if " - "`eval_training_data` is True.", -) -flags.DEFINE_string( - "hparams_overrides", - None, - "Hyperparameter overrides, " - "represented as a string containing comma-separated " - "hparam_name=value pairs.", -) -flags.DEFINE_string( - "checkpoint_dir", - None, - "Path to directory holding a checkpoint. If " - "`checkpoint_dir` is provided, this binary operates in eval-only mode, " - "writing resulting metrics to `model_dir`.", -) -flags.DEFINE_boolean( - "run_once", - False, - "If running in eval-only mode, whether to run just " - "one round of eval vs running continuously (default).", -) -FLAGS = flags.FLAGS - - -def main(unused_argv): - """Binary to run train and evaluation on object detection model""" - flags.mark_flag_as_required("model_dir") - flags.mark_flag_as_required("pipeline_config_path") - config = tf.estimator.RunConfig(model_dir=FLAGS.model_dir) - - train_and_eval_dict = model_lib.create_estimator_and_inputs( - run_config=config, - hparams=model_hparams.create_hparams(FLAGS.hparams_overrides), - pipeline_config_path=FLAGS.pipeline_config_path, - train_steps=FLAGS.num_train_steps, - sample_1_of_n_eval_examples=FLAGS.sample_1_of_n_eval_examples, - sample_1_of_n_eval_on_train_examples=( - FLAGS.sample_1_of_n_eval_on_train_examples - ), - ) - estimator = train_and_eval_dict["estimator"] - train_input_fn = train_and_eval_dict["train_input_fn"] - eval_input_fns = train_and_eval_dict["eval_input_fns"] - eval_on_train_input_fn = train_and_eval_dict["eval_on_train_input_fn"] - predict_input_fn = train_and_eval_dict["predict_input_fn"] - train_steps = train_and_eval_dict["train_steps"] - - if FLAGS.checkpoint_dir: - if FLAGS.eval_training_data: - name = "training_data" - input_fn = eval_on_train_input_fn - else: - name = "validation_data" - # The first eval input will be evaluated. - input_fn = eval_input_fns[0] - if FLAGS.run_once: - estimator.evaluate( - input_fn, - steps=None, - checkpoint_path=tf.train.latest_checkpoint( - FLAGS.checkpoint_dir - ), - ) - else: - model_lib.continuous_eval( - estimator, FLAGS.checkpoint_dir, input_fn, train_steps, name - ) - else: - train_spec, eval_specs = model_lib.create_train_and_eval_specs( - train_input_fn, - eval_input_fns, - eval_on_train_input_fn, - predict_input_fn, - train_steps, - eval_on_train_data=False, - ) - - # Currently only a single Eval Spec is allowed. - tf.estimator.train_and_evaluate(estimator, train_spec, eval_specs[0]) - - -if __name__ == "__main__": - tf.app.run() diff --git a/source/pic2card/commands/train_pth.py b/source/pic2card/commands/train_pth.py deleted file mode 100644 index dd575c6599..0000000000 --- a/source/pic2card/commands/train_pth.py +++ /dev/null @@ -1,84 +0,0 @@ -""" -Pytorch training pipeline for FASTER-RCNN -""" -# pylint: disable=no-value-for-parameter - -import datetime -import click -from detecto.utils import xml_to_csv -from detecto.utils import normalize_transform -from detecto.core import DataLoader, Dataset -import torchvision.transforms as Tv -from torch.utils.tensorboard import SummaryWriter -from mystique.models.pth.frcnn import CustomModel - - -@click.command() -@click.option( - "--train-dir", - help="Path to the labelmg img+xml folder for training", - required=True, -) -@click.option( - "--val-dir", - help="Path to the labelmg img+xml folder for validation", - required=True, -) -@click.option("--save-dir", help="model save dir", required=True) -@click.option("--epochs", default=10, help="Number of epochs", required=False) -def train_frcnn(train_dir, val_dir, save_dir, epochs): - """ - Pytorch training pipeline for FASTER-RCNN - """ - - # Create the labels out of the xml files on the fly - train_labels = xml_to_csv(train_dir, f"{train_dir}/../train_label.csv") - # val_labels = xml_to_csv( - # val_dir, - # f"{val_dir}/../test_label.csv" - # ) - # Image reader and pre-processing pipeline. - transformer = Tv.Compose( - [ - Tv.ToPILImage(), - lambda image: image.convert("RGB"), - Tv.ToTensor(), - normalize_transform(), - ] - ) - - dataset = Dataset( - f"{train_dir}/../train_label.csv", - image_folder=train_dir, - transform=transformer, - ) - - val_dataset = Dataset( - f"{val_dir}/../test_label.csv", - image_folder=val_dir, - transform=transformer, - ) - - train_dataloader = DataLoader(dataset, batch_size=1) - val_dataloader = DataLoader(val_dataset, batch_size=1) - - classes = train_labels["class"].unique().tolist() - - tb_writer = SummaryWriter("Second") - new_model = CustomModel(classes, log_writer=tb_writer) - - new_model.fit( - train_dataloader, - val_dataset=val_dataloader, - verbose=True, - epochs=epochs, - ) - - timestamp = datetime.datetime.now().strftime("%Y-%m-%d-%s") - model_path = f"{save_dir}/faster-rcnn-{timestamp}-epochs_{epochs}.pth" - new_model.save(model_path) - print(f"model saved at: {model_path}") - - -if __name__ == "__main__": - train_frcnn() diff --git a/source/pic2card/commands/voc2coco.py b/source/pic2card/commands/voc2coco.py deleted file mode 100644 index b52678a005..0000000000 --- a/source/pic2card/commands/voc2coco.py +++ /dev/null @@ -1,178 +0,0 @@ -#!/usr/bin/python - -# pip install lxml -"""Convert Pascal VOC annotation to COCO format.""" - -import os -import json -import xml.etree.ElementTree as ET -import glob - -START_BOUNDING_BOX_ID = 1 -PRE_DEFINE_CATEGORIES = None -# If necessary, pre-define category and its id -# PRE_DEFINE_CATEGORIES = {"aeroplane": 1, "bicycle": 2, "bird": 3, "boat": 4, -# "bottle":5, "bus": 6, "car": 7, "cat": 8, "chair": 9, -# "cow": 10, "diningtable": 11, "dog": 12, "horse": 13, -# "motorbike": 14, "person": 15, "pottedplant": 16, -# "sheep": 17, "sofa": 18, "train": 19, "tvmonitor": 20} - -PRE_DEFINE_CATEGORIES = { - "textbox": 1, - "radiobutton": 2, - "checkbox": 3, - "actionset": 4, - "image": 5, - "rating": 6, -} - - -def get(root, name): # pylint: disable=missing-function-docstring - var = root.findall(name) - return var - - -def get_and_check( - root, name, length -): # pylint: disable=missing-function-docstring - var = root.findall(name) - if len(var) == 0: - raise ValueError("Can not find %s in %s." % (name, root.tag)) - if length > 0 and len(var) != length: - raise ValueError( - "The size of %s is supposed to be %d, but is %d." - % (name, length, len(var)) - ) - if length == 1: - var = var[0] - return var - - -def get_filename_as_int(filename): # pylint: disable=missing-function-docstring - try: - filename = filename.replace("\\", "/") - filename = os.path.splitext(os.path.basename(filename))[0] - return int(filename) - except Exception as exc: - raise ValueError( - "Filename %s is supposed to be an integer." % (filename) - ) from exc - - -def get_categories(xml__files): - """Generate category name to id mapping from a list of xml files. - - Arguments: - xml__files {list} -- A list of xml file paths. - - Returns: - dict -- category name to id mapping. - """ - classes_names = [] - for xml_file in xml__files: - tree = ET.parse(xml_file) - root = tree.getroot() - for member in root.findall("object"): - classes_names.append(member[0].text) - classes_names = list(set(classes_names)) - classes_names.sort() - return {name: i for i, name in enumerate(classes_names)} - - -def convert(xml__files, json_file): # pylint: disable=too-many-locals - # pylint: disable=missing-function-docstring - json_dict = { - "images": [], - "type": "instances", - "annotations": [], - "categories": [], - } - if PRE_DEFINE_CATEGORIES is not None: - categories = PRE_DEFINE_CATEGORIES - else: - categories = get_categories(xml__files) - bnd_id = START_BOUNDING_BOX_ID - for xml_file in xml__files: - tree = ET.parse(xml_file) - root = tree.getroot() - path = get(root, "path") - if len(path) == 1: - filename = os.path.basename(path[0].text) - elif len(path) == 0: - filename = get_and_check(root, "filename", 1).text - else: - raise ValueError("%d paths found in %s" % (len(path), xml_file)) - # The filename must be a number - image_id = get_filename_as_int(filename) - size = get_and_check(root, "size", 1) - width = int(get_and_check(size, "width", 1).text) - height = int(get_and_check(size, "height", 1).text) - image = { - "file_name": filename, - "height": height, - "width": width, - "id": image_id, - } - json_dict["images"].append(image) - # Currently we do not support segmentation. - # segmented = get_and_check(root, 'segmented', 1).text - # assert segmented == '0' - for obj in get(root, "object"): - category = get_and_check(obj, "name", 1).text - if category not in categories: - new_id = len(categories) - categories[category] = new_id - category_id = categories[category] - bndbox = get_and_check(obj, "bndbox", 1) - xmin = int(get_and_check(bndbox, "xmin", 1).text) - 1 - ymin = int(get_and_check(bndbox, "ymin", 1).text) - 1 - xmax = int(get_and_check(bndbox, "xmax", 1).text) - ymax = int(get_and_check(bndbox, "ymax", 1).text) - assert xmax > xmin - assert ymax > ymin - o_width = abs(xmax - xmin) - o_height = abs(ymax - ymin) - ann = { - "area": o_width * o_height, - "iscrowd": 0, - "image_id": image_id, - "bbox": [xmin, ymin, o_width, o_height], - "category_id": category_id, - "id": bnd_id, - "ignore": 0, - "segmentation": [], - } - json_dict["annotations"].append(ann) - bnd_id = bnd_id + 1 - - for cate, cid in categories.items(): - cat = {"supercategory": "none", "id": cid, "name": cate} - json_dict["categories"].append(cat) - - os.makedirs(os.path.dirname(json_file) or ".", exist_ok=True) - json_fp = open(json_file, "w") - json_str = json.dumps(json_dict) - json_fp.write(json_str) - json_fp.close() - - -if __name__ == "__main__": - import argparse - - parser = argparse.ArgumentParser( - description="Convert Pascal VOC annotation to COCO format." - ) - parser.add_argument( - "xml_dir", help="Directory path to xml files.", type=str - ) - parser.add_argument( - "json_file", help="Output COCO format json file.", type=str - ) - args = parser.parse_args() - xml_files = glob.glob(os.path.join(args.xml_dir, "*.xml")) - - # If you want to do train/test split, you can pass a subset of xml - # files to convert function. - print("Number of xml files: {}".format(len(xml_files))) - convert(xml_files, args.json_file) - print("Success: {}".format(args.json_file)) diff --git a/source/pic2card/commands/xml_to_csv.py b/source/pic2card/commands/xml_to_csv.py deleted file mode 100644 index 5c7bc3b9f9..0000000000 --- a/source/pic2card/commands/xml_to_csv.py +++ /dev/null @@ -1,30 +0,0 @@ -"""This module converts the labelled traning and testing xmls generated - from the labelImg tool to object:boundary:image mapped csv. -""" -# pylint: disable=no-value-for-parameter -import click - -from mystique.utils import xml_to_csv - - -@click.command() -@click.option( - "--labelmg-dir", - required=True, - help="path to the xml and png file from labelmg", -) -@click.option( - "--csv-out-file", required=True, help="Export the bbox in csv format" -) -def main(labelmg_dir, csv_out_file): - """ - Writes the mapped object boundaries:image csv rows into the - data folder - """ - xml_df = xml_to_csv(labelmg_dir) - xml_df.to_csv(csv_out_file, index=False) - print("Successfully converted xml to csv.") - - -if __name__ == "__main__": - main() diff --git a/source/pic2card/data/test/100.png b/source/pic2card/data/test/100.png deleted file mode 100644 index f88ed7cdb9..0000000000 Binary files a/source/pic2card/data/test/100.png and /dev/null differ diff --git a/source/pic2card/data/test/100.xml b/source/pic2card/data/test/100.xml deleted file mode 100644 index a14c6320e5..0000000000 --- a/source/pic2card/data/test/100.xml +++ /dev/null @@ -1,86 +0,0 @@ - - dataset_final - 100.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/100.png - - Unknown - - - 417 - 289 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 79 - 16 - 339 - 47 - - - - textbox - Unspecified - 0 - 0 - - 15 - 152 - 200 - 182 - - - - radiobutton - Unspecified - 0 - 0 - - 14 - 187 - 149 - 206 - - - - radiobutton - Unspecified - 0 - 0 - - 12 - 206 - 151 - 227 - - - - radiobutton - Unspecified - 0 - 0 - - 12 - 226 - 152 - 244 - - - - textbox - Unspecified - 0 - 0 - - 16 - 252 - 251 - 275 - - - diff --git a/source/pic2card/data/test/101.png b/source/pic2card/data/test/101.png deleted file mode 100644 index ab6a3b9eba..0000000000 Binary files a/source/pic2card/data/test/101.png and /dev/null differ diff --git a/source/pic2card/data/test/101.xml b/source/pic2card/data/test/101.xml deleted file mode 100644 index b8c8b6de13..0000000000 --- a/source/pic2card/data/test/101.xml +++ /dev/null @@ -1,62 +0,0 @@ - - dataset_final - 101.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/101.png - - Unknown - - - 411 - 261 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 17 - 17 - 303 - 43 - - - - textbox - Unspecified - 0 - 0 - - 15 - 51 - 273 - 74 - - - - radiobutton - Unspecified - 0 - 0 - - 17 - 211 - 109 - 228 - - - - radiobutton - Unspecified - 0 - 0 - - 15 - 227 - 110 - 246 - - - diff --git a/source/pic2card/data/test/102.png b/source/pic2card/data/test/102.png deleted file mode 100644 index 77d53bdc82..0000000000 Binary files a/source/pic2card/data/test/102.png and /dev/null differ diff --git a/source/pic2card/data/test/102.xml b/source/pic2card/data/test/102.xml deleted file mode 100644 index a4abe702c3..0000000000 --- a/source/pic2card/data/test/102.xml +++ /dev/null @@ -1,50 +0,0 @@ - - dataset_final - 102.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/102.png - - Unknown - - - 409 - 143 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 212 - 19 - 353 - 58 - - - - radiobutton - Unspecified - 0 - 0 - - 209 - 90 - 296 - 109 - - - - radiobutton - Unspecified - 0 - 0 - - 208 - 108 - 298 - 127 - - - diff --git a/source/pic2card/data/test/104.png b/source/pic2card/data/test/104.png deleted file mode 100644 index f0b531509e..0000000000 Binary files a/source/pic2card/data/test/104.png and /dev/null differ diff --git a/source/pic2card/data/test/104.xml b/source/pic2card/data/test/104.xml deleted file mode 100644 index b1107dfee4..0000000000 --- a/source/pic2card/data/test/104.xml +++ /dev/null @@ -1,74 +0,0 @@ - - dataset_final - 104.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/104.png - - Unknown - - - 406 - 432 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 96 - 16 - 312 - 47 - - - - textbox - Unspecified - 0 - 0 - - 12 - 315 - 360 - 349 - - - - radiobutton - Unspecified - 0 - 0 - - 12 - 353 - 123 - 370 - - - - radiobutton - Unspecified - 0 - 0 - - 13 - 371 - 124 - 390 - - - - textbox - Unspecified - 0 - 0 - - 8 - 399 - 211 - 421 - - - diff --git a/source/pic2card/data/test/19.png b/source/pic2card/data/test/19.png deleted file mode 100644 index 92f4dc354a..0000000000 Binary files a/source/pic2card/data/test/19.png and /dev/null differ diff --git a/source/pic2card/data/test/19.xml b/source/pic2card/data/test/19.xml deleted file mode 100644 index 8189296bd3..0000000000 --- a/source/pic2card/data/test/19.xml +++ /dev/null @@ -1,26 +0,0 @@ - - dataset_final - 19.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/19.png - - Unknown - - - 553 - 74 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 24 - 25 - 156 - 56 - - - diff --git a/source/pic2card/data/test/22.png b/source/pic2card/data/test/22.png deleted file mode 100644 index 93bf9d96c4..0000000000 Binary files a/source/pic2card/data/test/22.png and /dev/null differ diff --git a/source/pic2card/data/test/22.xml b/source/pic2card/data/test/22.xml deleted file mode 100644 index eea16c3643..0000000000 --- a/source/pic2card/data/test/22.xml +++ /dev/null @@ -1,38 +0,0 @@ - - dataset_final - 22.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/22.png - - Unknown - - - 544 - 105 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 77 - 23 - 251 - 54 - - - - textbox - Unspecified - 0 - 0 - - 77 - 56 - 190 - 85 - - - diff --git a/source/pic2card/data/test/25.png b/source/pic2card/data/test/25.png deleted file mode 100644 index c9967e7887..0000000000 Binary files a/source/pic2card/data/test/25.png and /dev/null differ diff --git a/source/pic2card/data/test/25.xml b/source/pic2card/data/test/25.xml deleted file mode 100644 index d6ec317c28..0000000000 --- a/source/pic2card/data/test/25.xml +++ /dev/null @@ -1,62 +0,0 @@ - - dataset_final - 25.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/25.png - - Unknown - - - 549 - 247 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 23 - 26 - 165 - 58 - - - - textbox - Unspecified - 0 - 0 - - 36 - 78 - 113 - 100 - - - - textbox - Unspecified - 0 - 0 - - 37 - 114 - 478 - 162 - - - - textbox - Unspecified - 0 - 0 - - 40 - 163 - 511 - 216 - - - diff --git a/source/pic2card/data/test/27.png b/source/pic2card/data/test/27.png deleted file mode 100644 index b42f0898ea..0000000000 Binary files a/source/pic2card/data/test/27.png and /dev/null differ diff --git a/source/pic2card/data/test/27.xml b/source/pic2card/data/test/27.xml deleted file mode 100644 index 9b3e2874ab..0000000000 --- a/source/pic2card/data/test/27.xml +++ /dev/null @@ -1,38 +0,0 @@ - - dataset_final - 27.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/27.png - - Unknown - - - 547 - 98 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 32 - 23 - 168 - 47 - - - - textbox - Unspecified - 0 - 0 - - 30 - 47 - 169 - 73 - - - diff --git a/source/pic2card/data/test/28.png b/source/pic2card/data/test/28.png deleted file mode 100644 index 4620d79b22..0000000000 Binary files a/source/pic2card/data/test/28.png and /dev/null differ diff --git a/source/pic2card/data/test/28.xml b/source/pic2card/data/test/28.xml deleted file mode 100644 index 17d331f03f..0000000000 --- a/source/pic2card/data/test/28.xml +++ /dev/null @@ -1,86 +0,0 @@ - - dataset_final - 28.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/28.png - - Unknown - - - 554 - 259 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 177 - 39 - 307 - 60 - - - - textbox - Unspecified - 0 - 0 - - 176 - 60 - 246 - 81 - - - - textbox - Unspecified - 0 - 0 - - 178 - 86 - 251 - 112 - - - - textbox - Unspecified - 0 - 0 - - 25 - 142 - 511 - 173 - - - - textbox - Unspecified - 0 - 0 - - 34 - 181 - 172 - 205 - - - - textbox - Unspecified - 0 - 0 - - 35 - 205 - 159 - 231 - - - diff --git a/source/pic2card/data/test/3.png b/source/pic2card/data/test/3.png deleted file mode 100644 index 4a46900759..0000000000 Binary files a/source/pic2card/data/test/3.png and /dev/null differ diff --git a/source/pic2card/data/test/3.xml b/source/pic2card/data/test/3.xml deleted file mode 100644 index aaac26a219..0000000000 --- a/source/pic2card/data/test/3.xml +++ /dev/null @@ -1,230 +0,0 @@ - - dataset_final - 3.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/3.png - - Unknown - - - 543 - 526 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 21 - 29 - 135 - 57 - - - - textbox - Unspecified - 0 - 0 - - 23 - 64 - 128 - 84 - - - - textbox - Unspecified - 0 - 0 - - 26 - 90 - 180 - 111 - - - - textbox - Unspecified - 0 - 0 - - 24 - 112 - 137 - 137 - - - - textbox - Unspecified - 0 - 0 - - 27 - 164 - 113 - 182 - - - - textbox - Unspecified - 0 - 0 - - 26 - 184 - 238 - 211 - - - - textbox - Unspecified - 0 - 0 - - 22 - 223 - 153 - 243 - - - - textbox - Unspecified - 0 - 0 - - 421 - 222 - 524 - 244 - - - - textbox - Unspecified - 0 - 0 - - 24 - 248 - 108 - 289 - - - - textbox - Unspecified - 0 - 0 - - 435 - 248 - 523 - 286 - - - - textbox - Unspecified - 0 - 0 - - 24 - 318 - 122 - 339 - - - - textbox - Unspecified - 0 - 0 - - 23 - 340 - 247 - 363 - - - - textbox - Unspecified - 0 - 0 - - 24 - 380 - 134 - 401 - - - - textbox - Unspecified - 0 - 0 - - 394 - 375 - 529 - 397 - - - - textbox - Unspecified - 0 - 0 - - 21 - 404 - 111 - 445 - - - - textbox - Unspecified - 0 - 0 - - 440 - 405 - 527 - 447 - - - - textbox - Unspecified - 0 - 0 - - 26 - 468 - 88 - 500 - - - - textbox - Unspecified - 0 - 0 - - 410 - 462 - 528 - 504 - - - diff --git a/source/pic2card/data/test/51.jpg b/source/pic2card/data/test/51.jpg deleted file mode 100644 index d0361d8d6f..0000000000 Binary files a/source/pic2card/data/test/51.jpg and /dev/null differ diff --git a/source/pic2card/data/test/51.xml b/source/pic2card/data/test/51.xml deleted file mode 100644 index 1926af77ee..0000000000 --- a/source/pic2card/data/test/51.xml +++ /dev/null @@ -1,170 +0,0 @@ - - dataset_final - 51.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/51.jpg - - Unknown - - - 1817 - 1305 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 249 - 81 - 618 - 143 - - - - textbox - Unspecified - 0 - 0 - - 253 - 164 - 740 - 222 - - - - textbox - Unspecified - 0 - 0 - - 56 - 326 - 355 - 413 - - - - textbox - Unspecified - 0 - 0 - - 123 - 526 - 279 - 571 - - - - textbox - Unspecified - 0 - 0 - - 126 - 584 - 884 - 638 - - - - textbox - Unspecified - 0 - 0 - - 123 - 739 - 518 - 796 - - - - textbox - Unspecified - 0 - 0 - - 123 - 809 - 263 - 891 - - - - textbox - Unspecified - 0 - 0 - - 129 - 972 - 562 - 1020 - - - - textbox - Unspecified - 0 - 0 - - 121 - 1039 - 243 - 1120 - - - - textbox - Unspecified - 0 - 0 - - 1171 - 742 - 1636 - 800 - - - - textbox - Unspecified - 0 - 0 - - 1179 - 810 - 1311 - 894 - - - - textbox - Unspecified - 0 - 0 - - 1174 - 969 - 1592 - 1014 - - - - textbox - Unspecified - 0 - 0 - - 1174 - 1032 - 1272 - 1114 - - - diff --git a/source/pic2card/data/test/54.jpg b/source/pic2card/data/test/54.jpg deleted file mode 100644 index d2358abb70..0000000000 Binary files a/source/pic2card/data/test/54.jpg and /dev/null differ diff --git a/source/pic2card/data/test/54.xml b/source/pic2card/data/test/54.xml deleted file mode 100644 index c4b35cb446..0000000000 --- a/source/pic2card/data/test/54.xml +++ /dev/null @@ -1,122 +0,0 @@ - - dataset_final - 54.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/54.jpg - - Unknown - - - 1817 - 942 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 251 - 81 - 630 - 162 - - - - textbox - Unspecified - 0 - 0 - - 259 - 164 - 732 - 226 - - - - textbox - Unspecified - 0 - 0 - - 68 - 322 - 831 - 413 - - - - textbox - Unspecified - 0 - 0 - - 199 - 547 - 485 - 609 - - - - textbox - Unspecified - 0 - 0 - - 816 - 548 - 1016 - 604 - - - - textbox - Unspecified - 0 - 0 - - 1380 - 540 - 1535 - 605 - - - - textbox - Unspecified - 0 - 0 - - 240 - 673 - 472 - 800 - - - - textbox - Unspecified - 0 - 0 - - 836 - 662 - 948 - 806 - - - - textbox - Unspecified - 0 - 0 - - 1327 - 673 - 1617 - 803 - - - diff --git a/source/pic2card/data/test/56.jpg b/source/pic2card/data/test/56.jpg deleted file mode 100644 index df06ebce02..0000000000 Binary files a/source/pic2card/data/test/56.jpg and /dev/null differ diff --git a/source/pic2card/data/test/56.xml b/source/pic2card/data/test/56.xml deleted file mode 100644 index b4373b6c9c..0000000000 --- a/source/pic2card/data/test/56.xml +++ /dev/null @@ -1,338 +0,0 @@ - - dataset_final - 56.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/56.jpg - - Unknown - - - 1817 - 1513 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 242 - 82 - 624 - 153 - - - - textbox - Unspecified - 0 - 0 - - 249 - 161 - 737 - 226 - - - - textbox - Unspecified - 0 - 0 - - 49 - 317 - 690 - 417 - - - - textbox - Unspecified - 0 - 0 - - 59 - 536 - 412 - 617 - - - - textbox - Unspecified - 0 - 0 - - 676 - 532 - 1025 - 609 - - - - textbox - Unspecified - 0 - 0 - - 1102 - 539 - 1363 - 602 - - - - textbox - Unspecified - 0 - 0 - - 1439 - 524 - 1769 - 614 - - - - textbox - Unspecified - 0 - 0 - - 46 - 692 - 292 - 771 - - - - textbox - Unspecified - 0 - 0 - - 54 - 856 - 449 - 946 - - - - textbox - Unspecified - 0 - 0 - - 57 - 1024 - 515 - 1104 - - - - textbox - Unspecified - 0 - 0 - - 50 - 1178 - 428 - 1265 - - - - textbox - Unspecified - 0 - 0 - - 56 - 1332 - 486 - 1429 - - - - textbox - Unspecified - 0 - 0 - - 781 - 687 - 886 - 756 - - - - textbox - Unspecified - 0 - 0 - - 793 - 859 - 871 - 929 - - - - textbox - Unspecified - 0 - 0 - - 781 - 1027 - 881 - 1095 - - - - textbox - Unspecified - 0 - 0 - - 788 - 1190 - 878 - 1256 - - - - textbox - Unspecified - 0 - 0 - - 795 - 1348 - 866 - 1414 - - - - textbox - Unspecified - 0 - 0 - - 1176 - 700 - 1286 - 759 - - - - textbox - Unspecified - 0 - 0 - - 1192 - 866 - 1254 - 924 - - - - textbox - Unspecified - 0 - 0 - - 1169 - 1024 - 1278 - 1083 - - - - textbox - Unspecified - 0 - 0 - - 1176 - 1187 - 1253 - 1251 - - - - textbox - Unspecified - 0 - 0 - - 1192 - 1341 - 1249 - 1402 - - - - textbox - Unspecified - 0 - 0 - - 1554 - 701 - 1630 - 771 - - - - textbox - Unspecified - 0 - 0 - - 1532 - 863 - 1649 - 936 - - - - textbox - Unspecified - 0 - 0 - - 1555 - 1024 - 1624 - 1087 - - - - textbox - Unspecified - 0 - 0 - - 1544 - 1195 - 1656 - 1254 - - - - textbox - Unspecified - 0 - 0 - - 1539 - 1356 - 1653 - 1427 - - - diff --git a/source/pic2card/data/test/83.png b/source/pic2card/data/test/83.png deleted file mode 100644 index 32f3d4a54f..0000000000 Binary files a/source/pic2card/data/test/83.png and /dev/null differ diff --git a/source/pic2card/data/test/83.xml b/source/pic2card/data/test/83.xml deleted file mode 100644 index 2579a8f707..0000000000 --- a/source/pic2card/data/test/83.xml +++ /dev/null @@ -1,50 +0,0 @@ - - dataset_final - 83.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/83.png - - Unknown - - - 518 - 355 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 9 - 20 - 505 - 89 - - - - radiobutton - Unspecified - 0 - 0 - - 24 - 133 - 135 - 166 - - - - radiobutton - Unspecified - 0 - 0 - - 21 - 179 - 130 - 211 - - - diff --git a/source/pic2card/data/train/1.png b/source/pic2card/data/train/1.png deleted file mode 100644 index a10b76bb67..0000000000 Binary files a/source/pic2card/data/train/1.png and /dev/null differ diff --git a/source/pic2card/data/train/1.xml b/source/pic2card/data/train/1.xml deleted file mode 100644 index db64f3ccc5..0000000000 --- a/source/pic2card/data/train/1.xml +++ /dev/null @@ -1,134 +0,0 @@ - - dataset_final - 1.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/1.png - - Unknown - - - 547 - 478 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 26 - 26 - 360 - 57 - - - - textbox - Unspecified - 0 - 0 - - 89 - 64 - 215 - 90 - - - - textbox - Unspecified - 0 - 0 - - 88 - 88 - 310 - 112 - - - - textbox - Unspecified - 0 - 0 - - 27 - 128 - 522 - 224 - - - - textbox - Unspecified - 0 - 0 - - 26 - 233 - 275 - 256 - - - - textbox - Unspecified - 0 - 0 - - 27 - 256 - 226 - 280 - - - - textbox - Unspecified - 0 - 0 - - 27 - 282 - 270 - 307 - - - - textbox - Unspecified - 0 - 0 - - 24 - 306 - 229 - 331 - - - - textbox - Unspecified - 0 - 0 - - 26 - 332 - 531 - 399 - - - - textbox - Unspecified - 0 - 0 - - 25 - 394 - 533 - 465 - - - diff --git a/source/pic2card/data/train/10.png b/source/pic2card/data/train/10.png deleted file mode 100644 index 4e8bb21e91..0000000000 Binary files a/source/pic2card/data/train/10.png and /dev/null differ diff --git a/source/pic2card/data/train/10.xml b/source/pic2card/data/train/10.xml deleted file mode 100644 index f7bbc842f3..0000000000 --- a/source/pic2card/data/train/10.xml +++ /dev/null @@ -1,26 +0,0 @@ - - dataset_final - 10.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/10.png - - Unknown - - - 548 - 354 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 272 - 28 - 526 - 105 - - - diff --git a/source/pic2card/data/train/103.png b/source/pic2card/data/train/103.png deleted file mode 100644 index 2d0e7f26db..0000000000 Binary files a/source/pic2card/data/train/103.png and /dev/null differ diff --git a/source/pic2card/data/train/103.xml b/source/pic2card/data/train/103.xml deleted file mode 100644 index 089641df57..0000000000 --- a/source/pic2card/data/train/103.xml +++ /dev/null @@ -1,122 +0,0 @@ - - dataset_final - 103.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/103.png - - Unknown - - - 422 - 232 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 28 - 21 - 134 - 44 - - - - textbox - Unspecified - 0 - 0 - - 28 - 43 - 150 - 62 - - - - textbox - Unspecified - 0 - 0 - - 26 - 62 - 138 - 81 - - - - textbox - Unspecified - 0 - 0 - - 27 - 82 - 87 - 97 - - - - textbox - Unspecified - 0 - 0 - - 29 - 98 - 79 - 115 - - - - checkbox - Unspecified - 0 - 0 - - 28 - 121 - 169 - 144 - - - - checkbox - Unspecified - 0 - 0 - - 21 - 193 - 162 - 213 - - - - radiobutton - Unspecified - 0 - 0 - - 20 - 150 - 111 - 168 - - - - radiobutton - Unspecified - 0 - 0 - - 20 - 168 - 112 - 186 - - - diff --git a/source/pic2card/data/train/11.png b/source/pic2card/data/train/11.png deleted file mode 100644 index e22d264f04..0000000000 Binary files a/source/pic2card/data/train/11.png and /dev/null differ diff --git a/source/pic2card/data/train/11.xml b/source/pic2card/data/train/11.xml deleted file mode 100644 index a143761fbd..0000000000 --- a/source/pic2card/data/train/11.xml +++ /dev/null @@ -1,74 +0,0 @@ - - dataset_final - 11.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/11.png - - Unknown - - - 540 - 196 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 241 - 33 - 305 - 55 - - - - textbox - Unspecified - 0 - 0 - - 246 - 55 - 296 - 77 - - - - textbox - Unspecified - 0 - 0 - - 224 - 90 - 325 - 130 - - - - textbox - Unspecified - 0 - 0 - - 33 - 143 - 122 - 167 - - - - textbox - Unspecified - 0 - 0 - - 431 - 143 - 497 - 167 - - - diff --git a/source/pic2card/data/train/12.png b/source/pic2card/data/train/12.png deleted file mode 100644 index dab594e269..0000000000 Binary files a/source/pic2card/data/train/12.png and /dev/null differ diff --git a/source/pic2card/data/train/12.xml b/source/pic2card/data/train/12.xml deleted file mode 100644 index f874240035..0000000000 --- a/source/pic2card/data/train/12.xml +++ /dev/null @@ -1,98 +0,0 @@ - - dataset_final - 12.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/12.png - - Unknown - - - 557 - 189 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 26 - 25 - 372 - 57 - - - - textbox - Unspecified - 0 - 0 - - 26 - 63 - 277 - 90 - - - - textbox - Unspecified - 0 - 0 - - 29 - 93 - 123 - 127 - - - - textbox - Unspecified - 0 - 0 - - 410 - 86 - 530 - 110 - - - - textbox - Unspecified - 0 - 0 - - 411 - 111 - 531 - 137 - - - - textbox - Unspecified - 0 - 0 - - 412 - 139 - 533 - 165 - - - - textbox - Unspecified - 0 - 0 - - 27 - 129 - 147 - 155 - - - diff --git a/source/pic2card/data/train/13.png b/source/pic2card/data/train/13.png deleted file mode 100644 index 2f4af4dc10..0000000000 Binary files a/source/pic2card/data/train/13.png and /dev/null differ diff --git a/source/pic2card/data/train/13.xml b/source/pic2card/data/train/13.xml deleted file mode 100644 index 1e7224d831..0000000000 --- a/source/pic2card/data/train/13.xml +++ /dev/null @@ -1,86 +0,0 @@ - - dataset_final - 13.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/13.png - - Unknown - - - 538 - 165 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 26 - 31 - 181 - 63 - - - - textbox - Unspecified - 0 - 0 - - 25 - 63 - 228 - 89 - - - - textbox - Unspecified - 0 - 0 - - 321 - 97 - 383 - 120 - - - - textbox - Unspecified - 0 - 0 - - 322 - 121 - 385 - 149 - - - - textbox - Unspecified - 0 - 0 - - 87 - 102 - 133 - 140 - - - - textbox - Unspecified - 0 - 0 - - 137 - 99 - 162 - 120 - - - diff --git a/source/pic2card/data/train/14.png b/source/pic2card/data/train/14.png deleted file mode 100644 index 4d721a7634..0000000000 Binary files a/source/pic2card/data/train/14.png and /dev/null differ diff --git a/source/pic2card/data/train/14.xml b/source/pic2card/data/train/14.xml deleted file mode 100644 index fa29683bae..0000000000 --- a/source/pic2card/data/train/14.xml +++ /dev/null @@ -1,194 +0,0 @@ - - dataset_final - 14.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/14.png - - Unknown - - - 543 - 418 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 201 - 37 - 410 - 69 - - - - textbox - Unspecified - 0 - 0 - - 198 - 72 - 282 - 101 - - - - textbox - Unspecified - 0 - 0 - - 202 - 104 - 369 - 147 - - - - textbox - Unspecified - 0 - 0 - - 187 - 196 - 236 - 217 - - - - textbox - Unspecified - 0 - 0 - - 64 - 196 - 107 - 219 - - - - textbox - Unspecified - 0 - 0 - - 310 - 194 - 360 - 218 - - - - textbox - Unspecified - 0 - 0 - - 430 - 195 - 488 - 218 - - - - textbox - Unspecified - 0 - 0 - - 69 - 344 - 102 - 362 - - - - textbox - Unspecified - 0 - 0 - - 191 - 343 - 226 - 363 - - - - textbox - Unspecified - 0 - 0 - - 316 - 345 - 353 - 364 - - - - textbox - Unspecified - 0 - 0 - - 446 - 345 - 478 - 366 - - - - textbox - Unspecified - 0 - 0 - - 69 - 366 - 100 - 388 - - - - textbox - Unspecified - 0 - 0 - - 193 - 365 - 228 - 391 - - - - textbox - Unspecified - 0 - 0 - - 321 - 367 - 354 - 393 - - - - textbox - Unspecified - 0 - 0 - - 446 - 368 - 480 - 389 - - - diff --git a/source/pic2card/data/train/15.png b/source/pic2card/data/train/15.png deleted file mode 100644 index 1b1d127b86..0000000000 Binary files a/source/pic2card/data/train/15.png and /dev/null differ diff --git a/source/pic2card/data/train/15.xml b/source/pic2card/data/train/15.xml deleted file mode 100644 index 5c0bce6eba..0000000000 --- a/source/pic2card/data/train/15.xml +++ /dev/null @@ -1,26 +0,0 @@ - - dataset_final - 15.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/15.png - - Unknown - - - 543 - 371 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 23 - 287 - 526 - 349 - - - diff --git a/source/pic2card/data/train/16.png b/source/pic2card/data/train/16.png deleted file mode 100644 index 018a0835f0..0000000000 Binary files a/source/pic2card/data/train/16.png and /dev/null differ diff --git a/source/pic2card/data/train/16.xml b/source/pic2card/data/train/16.xml deleted file mode 100644 index 72e0e80fb5..0000000000 --- a/source/pic2card/data/train/16.xml +++ /dev/null @@ -1,218 +0,0 @@ - - dataset_final - 16.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/16.png - - Unknown - - - 547 - 528 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 72 - 25 - 162 - 49 - - - - textbox - Unspecified - 0 - 0 - - 73 - 49 - 172 - 73 - - - - textbox - Unspecified - 0 - 0 - - 52 - 85 - 136 - 108 - - - - textbox - Unspecified - 0 - 0 - - 26 - 112 - 71 - 133 - - - - textbox - Unspecified - 0 - 0 - - 243 - 24 - 330 - 46 - - - - textbox - Unspecified - 0 - 0 - - 246 - 45 - 345 - 77 - - - - textbox - Unspecified - 0 - 0 - - 427 - 22 - 495 - 48 - - - - textbox - Unspecified - 0 - 0 - - 428 - 53 - 460 - 72 - - - - textbox - Unspecified - 0 - 0 - - 203 - 81 - 514 - 107 - - - - textbox - Unspecified - 0 - 0 - - 235 - 108 - 476 - 131 - - - - textbox - Unspecified - 0 - 0 - - 234 - 200 - 519 - 227 - - - - textbox - Unspecified - 0 - 0 - - 236 - 227 - 393 - 256 - - - - textbox - Unspecified - 0 - 0 - - 203 - 272 - 521 - 294 - - - - textbox - Unspecified - 0 - 0 - - 233 - 294 - 517 - 369 - - - - textbox - Unspecified - 0 - 0 - - 21 - 269 - 101 - 292 - - - - textbox - Unspecified - 0 - 0 - - 31 - 235 - 128 - 254 - - - - textbox - Unspecified - 0 - 0 - - 17 - 293 - 62 - 315 - - - diff --git a/source/pic2card/data/train/17.png b/source/pic2card/data/train/17.png deleted file mode 100644 index 0f8d4cb481..0000000000 Binary files a/source/pic2card/data/train/17.png and /dev/null differ diff --git a/source/pic2card/data/train/17.xml b/source/pic2card/data/train/17.xml deleted file mode 100644 index adda02a56a..0000000000 --- a/source/pic2card/data/train/17.xml +++ /dev/null @@ -1,422 +0,0 @@ - - dataset_final - 17.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/17.png - - Unknown - - - 272 - 746 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 8 - 15 - 165 - 38 - - - - textbox - Unspecified - 0 - 0 - - 5 - 44 - 111 - 67 - - - - textbox - Unspecified - 0 - 0 - - 8 - 69 - 68 - 86 - - - - textbox - Unspecified - 0 - 0 - - 164 - 44 - 263 - 78 - - - - textbox - Unspecified - 0 - 0 - - 9 - 96 - 260 - 113 - - - - textbox - Unspecified - 0 - 0 - - 8 - 112 - 250 - 126 - - - - textbox - Unspecified - 0 - 0 - - 9 - 125 - 254 - 138 - - - - textbox - Unspecified - 0 - 0 - - 9 - 141 - 267 - 150 - - - - textbox - Unspecified - 0 - 0 - - 10 - 151 - 268 - 163 - - - - textbox - Unspecified - 0 - 0 - - 10 - 160 - 268 - 173 - - - - textbox - Unspecified - 1 - 0 - - 8 - 172 - 272 - 195 - - - - textbox - Unspecified - 0 - 0 - - 8 - 206 - 268 - 230 - - - - textbox - Unspecified - 0 - 0 - - 11 - 233 - 240 - 249 - - - - textbox - Unspecified - 0 - 0 - - 22 - 250 - 229 - 268 - - - - textbox - Unspecified - 0 - 0 - - 23 - 269 - 232 - 290 - - - - textbox - Unspecified - 0 - 0 - - 15 - 290 - 142 - 311 - - - - textbox - Unspecified - 0 - 0 - - 7 - 311 - 57 - 339 - - - - textbox - Unspecified - 0 - 0 - - 10 - 342 - 244 - 360 - - - - textbox - Unspecified - 0 - 0 - - 14 - 360 - 242 - 380 - - - - textbox - Unspecified - 0 - 0 - - 14 - 384 - 145 - 401 - - - - textbox - Unspecified - 0 - 0 - - 5 - 406 - 63 - 432 - - - - textbox - Unspecified - 0 - 0 - - 8 - 430 - 246 - 452 - - - - textbox - Unspecified - 0 - 0 - - 10 - 450 - 143 - 475 - - - - textbox - Unspecified - 1 - 0 - - 1 - 476 - 68 - 506 - - - - textbox - Unspecified - 0 - 0 - - 72 - 521 - 207 - 538 - - - - textbox - Unspecified - 0 - 0 - - 59 - 536 - 209 - 554 - - - - textbox - Unspecified - 0 - 0 - - 92 - 554 - 210 - 573 - - - - textbox - Unspecified - 0 - 0 - - 207 - 518 - 258 - 539 - - - - textbox - Unspecified - 0 - 0 - - 54 - 576 - 210 - 601 - - - - textbox - Unspecified - 0 - 0 - - 210 - 578 - 259 - 596 - - - - textbox - Unspecified - 0 - 0 - - 73 - 609 - 135 - 629 - - - - textbox - Unspecified - 0 - 0 - - 195 - 613 - 259 - 631 - - - - textbox - Unspecified - 0 - 0 - - 21 - 627 - 253 - 647 - - - - textbox - Unspecified - 0 - 0 - - 20 - 648 - 259 - 672 - - - diff --git a/source/pic2card/data/train/18.png b/source/pic2card/data/train/18.png deleted file mode 100644 index 519590470c..0000000000 Binary files a/source/pic2card/data/train/18.png and /dev/null differ diff --git a/source/pic2card/data/train/18.xml b/source/pic2card/data/train/18.xml deleted file mode 100644 index 10016625e8..0000000000 --- a/source/pic2card/data/train/18.xml +++ /dev/null @@ -1,146 +0,0 @@ - - dataset_final - 18.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/18.png - - Unknown - - - 543 - 393 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 20 - 142 - 164 - 220 - - - - textbox - Unspecified - 0 - 0 - - 21 - 232 - 208 - 278 - - - - textbox - Unspecified - 0 - 0 - - 20 - 281 - 206 - 325 - - - - textbox - Unspecified - 0 - 0 - - 22 - 327 - 208 - 354 - - - - textbox - Unspecified - 0 - 0 - - 248 - 33 - 318 - 70 - - - - textbox - Unspecified - 0 - 0 - - 435 - 27 - 520 - 69 - - - - textbox - Unspecified - 0 - 0 - - 248 - 84 - 337 - 110 - - - - textbox - Unspecified - 0 - 0 - - 428 - 86 - 521 - 115 - - - - textbox - Unspecified - 0 - 0 - - 248 - 115 - 368 - 185 - - - - textbox - Unspecified - 0 - 0 - - 398 - 114 - 523 - 189 - - - - textbox - Unspecified - 0 - 0 - - 244 - 309 - 525 - 373 - - - diff --git a/source/pic2card/data/train/2.png b/source/pic2card/data/train/2.png deleted file mode 100644 index e340c2ced1..0000000000 Binary files a/source/pic2card/data/train/2.png and /dev/null differ diff --git a/source/pic2card/data/train/2.xml b/source/pic2card/data/train/2.xml deleted file mode 100644 index 810f7b8b8a..0000000000 --- a/source/pic2card/data/train/2.xml +++ /dev/null @@ -1,86 +0,0 @@ - - dataset_final - 2.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/2.png - - Unknown - - - 543 - 347 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 21 - 29 - 428 - 68 - - - - textbox - Unspecified - 0 - 0 - - 24 - 73 - 249 - 96 - - - - textbox - Unspecified - 0 - 0 - - 26 - 97 - 198 - 126 - - - - textbox - Unspecified - 0 - 0 - - 16 - 131 - 121 - 159 - - - - textbox - Unspecified - 0 - 0 - - 18 - 205 - 525 - 264 - - - - textbox - Unspecified - 0 - 0 - - 18 - 267 - 526 - 337 - - - diff --git a/source/pic2card/data/train/20.png b/source/pic2card/data/train/20.png deleted file mode 100644 index c548466a52..0000000000 Binary files a/source/pic2card/data/train/20.png and /dev/null differ diff --git a/source/pic2card/data/train/20.xml b/source/pic2card/data/train/20.xml deleted file mode 100644 index 0c9d2fca5c..0000000000 --- a/source/pic2card/data/train/20.xml +++ /dev/null @@ -1,38 +0,0 @@ - - dataset_final - 20.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/20.png - - Unknown - - - 468 - 379 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 7 - 15 - 352 - 48 - - - - textbox - Unspecified - 0 - 0 - - 9 - 62 - 332 - 89 - - - diff --git a/source/pic2card/data/train/2020-04-23.png b/source/pic2card/data/train/2020-04-23.png deleted file mode 100644 index 75dc15db4c..0000000000 Binary files a/source/pic2card/data/train/2020-04-23.png and /dev/null differ diff --git a/source/pic2card/data/train/2020-04-23.xml b/source/pic2card/data/train/2020-04-23.xml deleted file mode 100644 index 207db2f897..0000000000 --- a/source/pic2card/data/train/2020-04-23.xml +++ /dev/null @@ -1,182 +0,0 @@ - - train - 2020-04-23.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/train/2020-04-23.png - - Unknown - - - 964 - 816 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 19 - 22 - 191 - 68 - - - - textbox - Unspecified - 0 - 0 - - 164 - 118 - 637 - 154 - - - - textbox - Unspecified - 0 - 0 - - 161 - 167 - 700 - 232 - - - - textbox - Unspecified - 0 - 0 - - 169 - 344 - 302 - 376 - - - - textbox - Unspecified - 0 - 0 - - 166 - 392 - 464 - 422 - - - - textbox - Unspecified - 0 - 0 - - 165 - 435 - 330 - 465 - - - - textbox - Unspecified - 0 - 0 - - 601 - 342 - 734 - 378 - - - - textbox - Unspecified - 0 - 0 - - 595 - 392 - 814 - 426 - - - - textbox - Unspecified - 0 - 0 - - 596 - 431 - 920 - 467 - - - - textbox - Unspecified - 0 - 0 - - 130 - 526 - 293 - 566 - - - - textbox - Unspecified - 0 - 0 - - 24 - 573 - 926 - 652 - - - - textbox - Unspecified - 0 - 0 - - 32 - 728 - 126 - 772 - - - - textbox - Unspecified - 0 - 0 - - 178 - 724 - 308 - 768 - - - - textbox - Unspecified - 0 - 0 - - 402 - 731 - 679 - 779 - - - diff --git a/source/pic2card/data/train/21.png b/source/pic2card/data/train/21.png deleted file mode 100644 index 9f77b1f3d9..0000000000 Binary files a/source/pic2card/data/train/21.png and /dev/null differ diff --git a/source/pic2card/data/train/21.xml b/source/pic2card/data/train/21.xml deleted file mode 100644 index 829f272cd8..0000000000 --- a/source/pic2card/data/train/21.xml +++ /dev/null @@ -1,110 +0,0 @@ - - dataset_final - 21.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/21.png - - Unknown - - - 467 - 194 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 8 - 16 - 232 - 44 - - - - textbox - Unspecified - 0 - 0 - - 10 - 48 - 257 - 71 - - - - textbox - Unspecified - 0 - 0 - - 7 - 83 - 191 - 107 - - - - textbox - Unspecified - 0 - 0 - - 9 - 108 - 106 - 144 - - - - textbox - Unspecified - 0 - 0 - - 6 - 150 - 191 - 175 - - - - textbox - Unspecified - 0 - 0 - - 330 - 106 - 453 - 128 - - - - textbox - Unspecified - 0 - 0 - - 331 - 129 - 456 - 153 - - - - textbox - Unspecified - 0 - 0 - - 330 - 153 - 457 - 181 - - - diff --git a/source/pic2card/data/train/23.png b/source/pic2card/data/train/23.png deleted file mode 100644 index e70a22a6c0..0000000000 Binary files a/source/pic2card/data/train/23.png and /dev/null differ diff --git a/source/pic2card/data/train/23.xml b/source/pic2card/data/train/23.xml deleted file mode 100644 index d2d607d85a..0000000000 --- a/source/pic2card/data/train/23.xml +++ /dev/null @@ -1,98 +0,0 @@ - - dataset_final - 23.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/23.png - - Unknown - - - 541 - 358 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 19 - 24 - 171 - 54 - - - - textbox - Unspecified - 0 - 0 - - 19 - 62 - 292 - 89 - - - - textbox - Unspecified - 0 - 0 - - 23 - 96 - 278 - 125 - - - - textbox - Unspecified - 0 - 0 - - 20 - 131 - 502 - 174 - - - - textbox - Unspecified - 0 - 0 - - 18 - 188 - 513 - 235 - - - - textbox - Unspecified - 0 - 0 - - 21 - 268 - 125 - 300 - - - - textbox - Unspecified - 0 - 0 - - 20 - 310 - 408 - 335 - - - diff --git a/source/pic2card/data/train/24.png b/source/pic2card/data/train/24.png deleted file mode 100644 index 71b1474c72..0000000000 Binary files a/source/pic2card/data/train/24.png and /dev/null differ diff --git a/source/pic2card/data/train/24.xml b/source/pic2card/data/train/24.xml deleted file mode 100644 index 368c7f53ea..0000000000 --- a/source/pic2card/data/train/24.xml +++ /dev/null @@ -1,134 +0,0 @@ - - dataset_final - 24.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/24.png - - Unknown - - - 548 - 385 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 25 - 18 - 497 - 57 - - - - textbox - Unspecified - 0 - 0 - - 81 - 61 - 311 - 84 - - - - textbox - Unspecified - 0 - 0 - - 80 - 85 - 505 - 118 - - - - textbox - Unspecified - 0 - 0 - - 20 - 122 - 177 - 148 - - - - textbox - Unspecified - 0 - 0 - - 20 - 152 - 370 - 177 - - - - textbox - Unspecified - 0 - 0 - - 16 - 178 - 495 - 224 - - - - textbox - Unspecified - 0 - 0 - - 16 - 226 - 306 - 251 - - - - textbox - Unspecified - 0 - 0 - - 19 - 252 - 383 - 276 - - - - textbox - Unspecified - 0 - 0 - - 21 - 275 - 56 - 298 - - - - textbox - Unspecified - 0 - 0 - - 20 - 304 - 524 - 364 - - - diff --git a/source/pic2card/data/train/26.png b/source/pic2card/data/train/26.png deleted file mode 100644 index 89397fe4e2..0000000000 Binary files a/source/pic2card/data/train/26.png and /dev/null differ diff --git a/source/pic2card/data/train/26.xml b/source/pic2card/data/train/26.xml deleted file mode 100644 index 81c5f95df9..0000000000 --- a/source/pic2card/data/train/26.xml +++ /dev/null @@ -1,194 +0,0 @@ - - dataset_final - 26.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/26.png - - Unknown - - - 545 - 484 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 25 - 22 - 180 - 53 - - - - textbox - Unspecified - 0 - 0 - - 22 - 60 - 326 - 80 - - - - textbox - Unspecified - 0 - 0 - - 23 - 81 - 235 - 110 - - - - textbox - Unspecified - 0 - 0 - - 23 - 117 - 220 - 147 - - - - textbox - Unspecified - 0 - 0 - - 22 - 150 - 181 - 172 - - - - textbox - Unspecified - 0 - 0 - - 25 - 173 - 196 - 201 - - - - textbox - Unspecified - 0 - 0 - - 20 - 209 - 268 - 236 - - - - textbox - Unspecified - 0 - 0 - - 22 - 245 - 213 - 266 - - - - textbox - Unspecified - 0 - 0 - - 26 - 265 - 206 - 293 - - - - textbox - Unspecified - 0 - 0 - - 20 - 302 - 93 - 330 - - - - textbox - Unspecified - 0 - 0 - - 25 - 333 - 304 - 364 - - - - textbox - Unspecified - 0 - 0 - - 24 - 365 - 206 - 384 - - - - textbox - Unspecified - 0 - 0 - - 24 - 397 - 281 - 425 - - - - textbox - Unspecified - 0 - 0 - - 21 - 428 - 277 - 452 - - - - textbox - Unspecified - 0 - 0 - - 26 - 453 - 246 - 476 - - - diff --git a/source/pic2card/data/train/29.png b/source/pic2card/data/train/29.png deleted file mode 100644 index 23799e7728..0000000000 Binary files a/source/pic2card/data/train/29.png and /dev/null differ diff --git a/source/pic2card/data/train/29.xml b/source/pic2card/data/train/29.xml deleted file mode 100644 index 0449dffc69..0000000000 --- a/source/pic2card/data/train/29.xml +++ /dev/null @@ -1,374 +0,0 @@ - - dataset_final - 29.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/29.png - - Unknown - - - 551 - 653 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 26 - 28 - 166 - 53 - - - - textbox - Unspecified - 0 - 0 - - 27 - 52 - 245 - 78 - - - - textbox - Unspecified - 0 - 0 - - 398 - 32 - 525 - 66 - - - - textbox - Unspecified - 0 - 0 - - 26 - 87 - 166 - 115 - - - - textbox - Unspecified - 0 - 0 - - 24 - 115 - 258 - 143 - - - - textbox - Unspecified - 0 - 0 - - 21 - 151 - 205 - 173 - - - - textbox - Unspecified - 0 - 0 - - 20 - 172 - 84 - 199 - - - - textbox - Unspecified - 0 - 0 - - 27 - 208 - 219 - 237 - - - - textbox - Unspecified - 0 - 0 - - 25 - 235 - 188 - 263 - - - - textbox - Unspecified - 0 - 0 - - 26 - 268 - 221 - 295 - - - - textbox - Unspecified - 0 - 0 - - 27 - 296 - 189 - 326 - - - - textbox - Unspecified - 0 - 0 - - 23 - 334 - 226 - 358 - - - - textbox - Unspecified - 0 - 0 - - 24 - 358 - 192 - 381 - - - - textbox - Unspecified - 0 - 0 - - 25 - 396 - 218 - 417 - - - - textbox - Unspecified - 0 - 0 - - 23 - 419 - 192 - 442 - - - - textbox - Unspecified - 0 - 0 - - 23 - 450 - 225 - 479 - - - - textbox - Unspecified - 0 - 0 - - 26 - 478 - 192 - 507 - - - - textbox - Unspecified - 0 - 0 - - 24 - 515 - 225 - 540 - - - - textbox - Unspecified - 0 - 0 - - 23 - 541 - 188 - 563 - - - - textbox - Unspecified - 0 - 0 - - 19 - 575 - 221 - 602 - - - - textbox - Unspecified - 0 - 0 - - 18 - 605 - 233 - 626 - - - - textbox - Unspecified - 0 - 0 - - 399 - 93 - 530 - 126 - - - - textbox - Unspecified - 0 - 0 - - 404 - 160 - 529 - 185 - - - - textbox - Unspecified - 0 - 0 - - 389 - 220 - 531 - 249 - - - - textbox - Unspecified - 0 - 0 - - 400 - 281 - 529 - 315 - - - - textbox - Unspecified - 0 - 0 - - 392 - 339 - 529 - 368 - - - - textbox - Unspecified - 0 - 0 - - 395 - 402 - 532 - 431 - - - - textbox - Unspecified - 0 - 0 - - 392 - 457 - 526 - 490 - - - - textbox - Unspecified - 0 - 0 - - 394 - 527 - 526 - 551 - - - - textbox - Unspecified - 0 - 0 - - 393 - 580 - 521 - 611 - - - diff --git a/source/pic2card/data/train/30.png b/source/pic2card/data/train/30.png deleted file mode 100644 index b55261c39d..0000000000 Binary files a/source/pic2card/data/train/30.png and /dev/null differ diff --git a/source/pic2card/data/train/30.xml b/source/pic2card/data/train/30.xml deleted file mode 100644 index a1ba7fff65..0000000000 --- a/source/pic2card/data/train/30.xml +++ /dev/null @@ -1,50 +0,0 @@ - - dataset_final - 30.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/30.png - - Unknown - - - 555 - 139 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 31 - 29 - 290 - 59 - - - - textbox - Unspecified - 0 - 0 - - 32 - 66 - 414 - 109 - - - - textbox - Unspecified - 0 - 0 - - 416 - 41 - 533 - 100 - - - diff --git a/source/pic2card/data/train/31.png b/source/pic2card/data/train/31.png deleted file mode 100644 index 06fa276076..0000000000 Binary files a/source/pic2card/data/train/31.png and /dev/null differ diff --git a/source/pic2card/data/train/31.xml b/source/pic2card/data/train/31.xml deleted file mode 100644 index 5d48502410..0000000000 --- a/source/pic2card/data/train/31.xml +++ /dev/null @@ -1,86 +0,0 @@ - - dataset_final - 31.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/31.png - - Unknown - - - 548 - 198 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 23 - 24 - 285 - 55 - - - - textbox - Unspecified - 0 - 0 - - 25 - 60 - 406 - 108 - - - - textbox - Unspecified - 0 - 0 - - 409 - 30 - 528 - 95 - - - - textbox - Unspecified - 0 - 0 - - 19 - 116 - 170 - 145 - - - - textbox - Unspecified - 0 - 0 - - 22 - 149 - 402 - 181 - - - - textbox - Unspecified - 0 - 0 - - 408 - 114 - 527 - 173 - - - diff --git a/source/pic2card/data/train/32.jpg b/source/pic2card/data/train/32.jpg deleted file mode 100644 index fae9564277..0000000000 Binary files a/source/pic2card/data/train/32.jpg and /dev/null differ diff --git a/source/pic2card/data/train/32.xml b/source/pic2card/data/train/32.xml deleted file mode 100644 index 4e9b4f8692..0000000000 --- a/source/pic2card/data/train/32.xml +++ /dev/null @@ -1,158 +0,0 @@ - - dataset_final - 32.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/32.jpg - - Unknown - - - 1821 - 1371 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 256 - 84 - 560 - 157 - - - - textbox - Unspecified - 0 - 0 - - 259 - 157 - 737 - 216 - - - - textbox - Unspecified - 0 - 0 - - 59 - 284 - 1024 - 358 - - - - textbox - Unspecified - 0 - 0 - - 60 - 404 - 675 - 467 - - - - textbox - Unspecified - 0 - 0 - - 63 - 811 - 690 - 888 - - - - textbox - Unspecified - 0 - 0 - - 65 - 896 - 400 - 1004 - - - - textbox - Unspecified - 0 - 0 - - 56 - 1069 - 483 - 1146 - - - - textbox - Unspecified - 0 - 0 - - 69 - 1164 - 348 - 1257 - - - - textbox - Unspecified - 0 - 0 - - 1219 - 825 - 1603 - 884 - - - - textbox - Unspecified - 0 - 0 - - 1224 - 894 - 1584 - 1002 - - - - textbox - Unspecified - 0 - 0 - - 1234 - 1090 - 1640 - 1149 - - - - textbox - Unspecified - 0 - 0 - - 1233 - 1163 - 1560 - 1246 - - - diff --git a/source/pic2card/data/train/33.jpg b/source/pic2card/data/train/33.jpg deleted file mode 100644 index f5f8dea65e..0000000000 Binary files a/source/pic2card/data/train/33.jpg and /dev/null differ diff --git a/source/pic2card/data/train/33.xml b/source/pic2card/data/train/33.xml deleted file mode 100644 index 5f408f105b..0000000000 --- a/source/pic2card/data/train/33.xml +++ /dev/null @@ -1,158 +0,0 @@ - - dataset_final - 33.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/33.jpg - - Unknown - - - 1817 - 1409 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 245 - 81 - 568 - 154 - - - - textbox - Unspecified - 0 - 0 - - 253 - 157 - 737 - 228 - - - - textbox - Unspecified - 0 - 0 - - 48 - 286 - 839 - 375 - - - - textbox - Unspecified - 0 - 0 - - 106 - 464 - 670 - 528 - - - - textbox - Unspecified - 0 - 0 - - 101 - 546 - 287 - 629 - - - - textbox - Unspecified - 0 - 0 - - 1400 - 573 - 1681 - 645 - - - - textbox - Unspecified - 0 - 0 - - 114 - 784 - 698 - 845 - - - - textbox - Unspecified - 0 - 0 - - 115 - 850 - 409 - 945 - - - - textbox - Unspecified - 0 - 0 - - 1414 - 884 - 1668 - 956 - - - - textbox - Unspecified - 0 - 0 - - 111 - 1089 - 629 - 1153 - - - - textbox - Unspecified - 0 - 0 - - 111 - 1154 - 264 - 1243 - - - - textbox - Unspecified - 0 - 0 - - 1409 - 1203 - 1701 - 1273 - - - diff --git a/source/pic2card/data/train/34.jpg b/source/pic2card/data/train/34.jpg deleted file mode 100644 index 1e02e091e7..0000000000 Binary files a/source/pic2card/data/train/34.jpg and /dev/null differ diff --git a/source/pic2card/data/train/34.xml b/source/pic2card/data/train/34.xml deleted file mode 100644 index b4b24b4e15..0000000000 --- a/source/pic2card/data/train/34.xml +++ /dev/null @@ -1,146 +0,0 @@ - - dataset_final - 34.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/34.jpg - - Unknown - - - 1817 - 1350 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 250 - 80 - 565 - 156 - - - - textbox - Unspecified - 0 - 0 - - 247 - 159 - 759 - 233 - - - - textbox - Unspecified - 0 - 0 - - 56 - 280 - 931 - 371 - - - - textbox - Unspecified - 0 - 0 - - 269 - 505 - 531 - 581 - - - - textbox - Unspecified - 0 - 0 - - 256 - 699 - 808 - 777 - - - - textbox - Unspecified - 0 - 0 - - 266 - 903 - 520 - 978 - - - - textbox - Unspecified - 0 - 0 - - 268 - 1108 - 611 - 1186 - - - - textbox - Unspecified - 0 - 0 - - 1563 - 499 - 1671 - 583 - - - - textbox - Unspecified - 0 - 0 - - 1555 - 692 - 1671 - 781 - - - - textbox - Unspecified - 0 - 0 - - 1559 - 914 - 1677 - 999 - - - - textbox - Unspecified - 0 - 0 - - 1556 - 1114 - 1663 - 1202 - - - diff --git a/source/pic2card/data/train/35.jpg b/source/pic2card/data/train/35.jpg deleted file mode 100644 index b8ac5eea0c..0000000000 Binary files a/source/pic2card/data/train/35.jpg and /dev/null differ diff --git a/source/pic2card/data/train/35.xml b/source/pic2card/data/train/35.xml deleted file mode 100644 index 5e34c8d326..0000000000 --- a/source/pic2card/data/train/35.xml +++ /dev/null @@ -1,134 +0,0 @@ - - dataset_final - 35.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/35.jpg - - Unknown - - - 1817 - 1755 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 250 - 87 - 560 - 162 - - - - textbox - Unspecified - 0 - 0 - - 246 - 166 - 750 - 222 - - - - textbox - Unspecified - 0 - 0 - - 42 - 275 - 680 - 364 - - - - textbox - Unspecified - 0 - 0 - - 444 - 505 - 989 - 577 - - - - textbox - Unspecified - 0 - 0 - - 436 - 579 - 999 - 642 - - - - textbox - Unspecified - 0 - 0 - - 442 - 648 - 838 - 718 - - - - textbox - Unspecified - 0 - 0 - - 117 - 805 - 384 - 867 - - - - textbox - Unspecified - 0 - 0 - - 121 - 901 - 1627 - 1081 - - - - textbox - Unspecified - 0 - 0 - - 121 - 1154 - 303 - 1222 - - - - textbox - Unspecified - 0 - 0 - - 121 - 1246 - 923 - 1328 - - - diff --git a/source/pic2card/data/train/36.jpg b/source/pic2card/data/train/36.jpg deleted file mode 100644 index 9b2a94c4f8..0000000000 Binary files a/source/pic2card/data/train/36.jpg and /dev/null differ diff --git a/source/pic2card/data/train/36.xml b/source/pic2card/data/train/36.xml deleted file mode 100644 index 7b29733a51..0000000000 --- a/source/pic2card/data/train/36.xml +++ /dev/null @@ -1,98 +0,0 @@ - - dataset_final - 36.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/36.jpg - - Unknown - - - 1817 - 1067 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 251 - 80 - 555 - 158 - - - - textbox - Unspecified - 0 - 0 - - 250 - 157 - 760 - 217 - - - - textbox - Unspecified - 0 - 0 - - 57 - 275 - 1121 - 373 - - - - textbox - Unspecified - 0 - 0 - - 140 - 491 - 303 - 559 - - - - textbox - Unspecified - 0 - 0 - - 150 - 586 - 690 - 659 - - - - textbox - Unspecified - 0 - 0 - - 140 - 717 - 441 - 777 - - - - textbox - Unspecified - 0 - 0 - - 139 - 803 - 636 - 883 - - - diff --git a/source/pic2card/data/train/37.jpg b/source/pic2card/data/train/37.jpg deleted file mode 100644 index cba2b3d231..0000000000 Binary files a/source/pic2card/data/train/37.jpg and /dev/null differ diff --git a/source/pic2card/data/train/37.xml b/source/pic2card/data/train/37.xml deleted file mode 100644 index 371f2594a3..0000000000 --- a/source/pic2card/data/train/37.xml +++ /dev/null @@ -1,194 +0,0 @@ - - dataset_final - 37.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/37.jpg - - Unknown - - - 1817 - 1150 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 257 - 74 - 531 - 153 - - - - textbox - Unspecified - 0 - 0 - - 251 - 155 - 728 - 224 - - - - textbox - Unspecified - 0 - 0 - - 53 - 274 - 608 - 366 - - - - textbox - Unspecified - 0 - 0 - - 107 - 480 - 278 - 589 - - - - textbox - Unspecified - 0 - 0 - - 681 - 489 - 832 - 589 - - - - textbox - Unspecified - 0 - 0 - - 1287 - 492 - 1426 - 594 - - - - textbox - Unspecified - 0 - 0 - - 117 - 845 - 268 - 957 - - - - textbox - Unspecified - 0 - 0 - - 680 - 850 - 828 - 950 - - - - textbox - Unspecified - 0 - 0 - - 1287 - 858 - 1482 - 953 - - - - textbox - Unspecified - 0 - 0 - - 114 - 607 - 421 - 673 - - - - textbox - Unspecified - 0 - 0 - - 682 - 607 - 1014 - 666 - - - - textbox - Unspecified - 0 - 0 - - 1282 - 601 - 1686 - 669 - - - - textbox - Unspecified - 0 - 0 - - 122 - 969 - 446 - 1026 - - - - textbox - Unspecified - 0 - 0 - - 689 - 973 - 1051 - 1036 - - - - textbox - Unspecified - 0 - 0 - - 1283 - 974 - 1664 - 1031 - - - diff --git a/source/pic2card/data/train/38.jpg b/source/pic2card/data/train/38.jpg deleted file mode 100644 index 91dfa861b9..0000000000 Binary files a/source/pic2card/data/train/38.jpg and /dev/null differ diff --git a/source/pic2card/data/train/38.xml b/source/pic2card/data/train/38.xml deleted file mode 100644 index 1469b76ec4..0000000000 --- a/source/pic2card/data/train/38.xml +++ /dev/null @@ -1,146 +0,0 @@ - - dataset_final - 38.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/38.jpg - - Unknown - - - 1817 - 1025 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 259 - 82 - 535 - 154 - - - - textbox - Unspecified - 0 - 0 - - 260 - 155 - 749 - 218 - - - - textbox - Unspecified - 0 - 0 - - 57 - 278 - 837 - 383 - - - - textbox - Unspecified - 0 - 0 - - 533 - 477 - 740 - 537 - - - - textbox - Unspecified - 0 - 0 - - 1533 - 469 - 1724 - 539 - - - - textbox - Unspecified - 0 - 0 - - 533 - 543 - 862 - 610 - - - - textbox - Unspecified - 0 - 0 - - 1381 - 543 - 1700 - 602 - - - - textbox - Unspecified - 0 - 0 - - 108 - 742 - 408 - 839 - - - - textbox - Unspecified - 0 - 0 - - 1008 - 746 - 1348 - 801 - - - - textbox - Unspecified - 0 - 0 - - 117 - 855 - 436 - 929 - - - - textbox - Unspecified - 0 - 0 - - 1004 - 806 - 1349 - 874 - - - diff --git a/source/pic2card/data/train/39.jpg b/source/pic2card/data/train/39.jpg deleted file mode 100644 index 06fe97c3bf..0000000000 Binary files a/source/pic2card/data/train/39.jpg and /dev/null differ diff --git a/source/pic2card/data/train/39.xml b/source/pic2card/data/train/39.xml deleted file mode 100644 index da704aba34..0000000000 --- a/source/pic2card/data/train/39.xml +++ /dev/null @@ -1,146 +0,0 @@ - - dataset_final - 39.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/39.jpg - - Unknown - - - 1817 - 834 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 254 - 75 - 545 - 150 - - - - textbox - Unspecified - 0 - 0 - - 251 - 152 - 739 - 223 - - - - textbox - Unspecified - 0 - 0 - - 53 - 286 - 559 - 372 - - - - textbox - Unspecified - 0 - 0 - - 122 - 527 - 363 - 643 - - - - textbox - Unspecified - 0 - 0 - - 603 - 525 - 786 - 641 - - - - textbox - Unspecified - 0 - 0 - - 1012 - 527 - 1237 - 642 - - - - textbox - Unspecified - 0 - 0 - - 1485 - 520 - 1692 - 647 - - - - textbox - Unspecified - 0 - 0 - - 121 - 683 - 348 - 750 - - - - textbox - Unspecified - 0 - 0 - - 567 - 681 - 813 - 750 - - - - textbox - Unspecified - 0 - 0 - - 1025 - 684 - 1266 - 747 - - - - textbox - Unspecified - 0 - 0 - - 1478 - 682 - 1714 - 740 - - - diff --git a/source/pic2card/data/train/4.png b/source/pic2card/data/train/4.png deleted file mode 100644 index c019c8d4fe..0000000000 Binary files a/source/pic2card/data/train/4.png and /dev/null differ diff --git a/source/pic2card/data/train/4.xml b/source/pic2card/data/train/4.xml deleted file mode 100644 index 5e11a6b5a0..0000000000 --- a/source/pic2card/data/train/4.xml +++ /dev/null @@ -1,254 +0,0 @@ - - dataset_final - 4.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/4.png - - Unknown - - - 546 - 422 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 413 - 23 - 525 - 49 - - - - textbox - Unspecified - 0 - 0 - - 390 - 52 - 527 - 82 - - - - textbox - Unspecified - 0 - 0 - - 25 - 110 - 139 - 135 - - - - textbox - Unspecified - 0 - 0 - - 476 - 112 - 521 - 135 - - - - textbox - Unspecified - 0 - 0 - - 24 - 141 - 129 - 165 - - - - textbox - Unspecified - 0 - 0 - - 24 - 165 - 173 - 194 - - - - textbox - Unspecified - 0 - 0 - - 22 - 197 - 132 - 225 - - - - textbox - Unspecified - 0 - 0 - - 485 - 142 - 524 - 163 - - - - textbox - Unspecified - 0 - 0 - - 485 - 169 - 522 - 191 - - - - textbox - Unspecified - 0 - 0 - - 485 - 196 - 526 - 222 - - - - textbox - Unspecified - 0 - 0 - - 23 - 244 - 90 - 270 - - - - textbox - Unspecified - 0 - 0 - - 235 - 245 - 318 - 270 - - - - textbox - Unspecified - 0 - 0 - - 452 - 246 - 528 - 269 - - - - \ - Unspecified - 0 - 0 - - 23 - 276 - 98 - 298 - - - - \ - Unspecified - 0 - 0 - - 229 - 276 - 324 - 296 - - - - \ - Unspecified - 0 - 0 - - 434 - 275 - 523 - 299 - - - - \ - Unspecified - 0 - 0 - - 26 - 326 - 128 - 349 - - - - \ - Unspecified - 0 - 0 - - 396 - 326 - 524 - 348 - - - - \ - Unspecified - 0 - 0 - - 26 - 355 - 111 - 392 - - - - \ - Unspecified - 0 - 0 - - 444 - 352 - 523 - 392 - - - diff --git a/source/pic2card/data/train/40.jpg b/source/pic2card/data/train/40.jpg deleted file mode 100644 index b5221f0d24..0000000000 Binary files a/source/pic2card/data/train/40.jpg and /dev/null differ diff --git a/source/pic2card/data/train/40.xml b/source/pic2card/data/train/40.xml deleted file mode 100644 index 8222a7c4e9..0000000000 --- a/source/pic2card/data/train/40.xml +++ /dev/null @@ -1,122 +0,0 @@ - - dataset_final - 40.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/40.jpg - - Unknown - - - 1817 - 1609 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 257 - 76 - 534 - 154 - - - - textbox - Unspecified - 0 - 0 - - 247 - 156 - 729 - 222 - - - - textbox - Unspecified - 0 - 0 - - 50 - 295 - 586 - 374 - - - - textbox - Unspecified - 0 - 0 - - 381 - 543 - 690 - 608 - - - - textbox - Unspecified - 0 - 0 - - 380 - 616 - 985 - 693 - - - - textbox - Unspecified - 0 - 0 - - 373 - 915 - 663 - 984 - - - - textbox - Unspecified - 0 - 0 - - 366 - 988 - 1016 - 1058 - - - - textbox - Unspecified - 0 - 0 - - 375 - 1279 - 613 - 1351 - - - - textbox - Unspecified - 0 - 0 - - 375 - 1356 - 861 - 1431 - - - diff --git a/source/pic2card/data/train/41.jpg b/source/pic2card/data/train/41.jpg deleted file mode 100644 index e1201b2f14..0000000000 Binary files a/source/pic2card/data/train/41.jpg and /dev/null differ diff --git a/source/pic2card/data/train/41.xml b/source/pic2card/data/train/41.xml deleted file mode 100644 index 50e1cce7bf..0000000000 --- a/source/pic2card/data/train/41.xml +++ /dev/null @@ -1,50 +0,0 @@ - - dataset_final - 41.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/41.jpg - - Unknown - - - 1817 - 917 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 258 - 74 - 527 - 151 - - - - textbox - Unspecified - 0 - 0 - - 258 - 158 - 735 - 217 - - - - textbox - Unspecified - 0 - 0 - - 53 - 292 - 578 - 366 - - - diff --git a/source/pic2card/data/train/42.jpg b/source/pic2card/data/train/42.jpg deleted file mode 100644 index edbb6af17e..0000000000 Binary files a/source/pic2card/data/train/42.jpg and /dev/null differ diff --git a/source/pic2card/data/train/42.xml b/source/pic2card/data/train/42.xml deleted file mode 100644 index 90e95b9e3b..0000000000 --- a/source/pic2card/data/train/42.xml +++ /dev/null @@ -1,122 +0,0 @@ - - dataset_final - 42.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/42.jpg - - Unknown - - - 1821 - 1596 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 258 - 67 - 597 - 149 - - - - textbox - Unspecified - 0 - 0 - - 250 - 154 - 724 - 235 - - - - textbox - Unspecified - 0 - 0 - - 52 - 320 - 640 - 419 - - - - textbox - Unspecified - 0 - 0 - - 377 - 542 - 733 - 610 - - - - textbox - Unspecified - 0 - 0 - - 375 - 624 - 988 - 683 - - - - textbox - Unspecified - 0 - 0 - - 374 - 920 - 665 - 979 - - - - textbox - Unspecified - 0 - 0 - - 368 - 981 - 968 - 1051 - - - - textbox - Unspecified - 0 - 0 - - 368 - 1283 - 724 - 1344 - - - - textbox - Unspecified - 0 - 0 - - 361 - 1352 - 890 - 1427 - - - diff --git a/source/pic2card/data/train/43.jpg b/source/pic2card/data/train/43.jpg deleted file mode 100644 index 01b3743e68..0000000000 Binary files a/source/pic2card/data/train/43.jpg and /dev/null differ diff --git a/source/pic2card/data/train/43.xml b/source/pic2card/data/train/43.xml deleted file mode 100644 index 70eb3db439..0000000000 --- a/source/pic2card/data/train/43.xml +++ /dev/null @@ -1,182 +0,0 @@ - - dataset_final - 43.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/43.jpg - - Unknown - - - 1817 - 1267 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 259 - 90 - 608 - 154 - - - - textbox - Unspecified - 0 - 0 - - 248 - 155 - 741 - 233 - - - - textbox - Unspecified - 0 - 0 - - 53 - 299 - 510 - 372 - - - - textbox - Unspecified - 0 - 0 - - 60 - 403 - 326 - 458 - - - - textbox - Unspecified - 0 - 0 - - 66 - 458 - 491 - 527 - - - - textbox - Unspecified - 0 - 0 - - 46 - 600 - 217 - 659 - - - - textbox - Unspecified - 0 - 0 - - 59 - 665 - 862 - 728 - - - - textbox - Unspecified - 0 - 0 - - 60 - 847 - 242 - 903 - - - - textbox - Unspecified - 0 - 0 - - 59 - 910 - 846 - 982 - - - - textbox - Unspecified - 0 - 0 - - 1225 - 419 - 1474 - 478 - - - - textbox - Unspecified - 0 - 0 - - 1227 - 486 - 1467 - 544 - - - - textbox - Unspecified - 0 - 0 - - 1227 - 597 - 1687 - 659 - - - - textbox - Unspecified - 0 - 0 - - 1229 - 664 - 1367 - 717 - - - - textbox - Unspecified - 0 - 0 - - 480 - 1047 - 1363 - 1210 - - - diff --git a/source/pic2card/data/train/44.jpg b/source/pic2card/data/train/44.jpg deleted file mode 100644 index c1be7bbce3..0000000000 Binary files a/source/pic2card/data/train/44.jpg and /dev/null differ diff --git a/source/pic2card/data/train/44.xml b/source/pic2card/data/train/44.xml deleted file mode 100644 index 64c3870739..0000000000 --- a/source/pic2card/data/train/44.xml +++ /dev/null @@ -1,158 +0,0 @@ - - dataset_final - 44.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/44.jpg - - Unknown - - - 1817 - 1192 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 256 - 85 - 601 - 149 - - - - textbox - Unspecified - 0 - 0 - - 254 - 158 - 734 - 221 - - - - textbox - Unspecified - 0 - 0 - - 56 - 292 - 392 - 360 - - - - textbox - Unspecified - 0 - 0 - - 117 - 458 - 493 - 528 - - - - textbox - Unspecified - 0 - 0 - - 308 - 557 - 617 - 624 - - - - textbox - Unspecified - 0 - 0 - - 316 - 633 - 846 - 707 - - - - textbox - Unspecified - 0 - 0 - - 88 - 857 - 401 - 917 - - - - textbox - Unspecified - 0 - 0 - - 738 - 860 - 981 - 921 - - - - textbox - Unspecified - 0 - 0 - - 1312 - 844 - 1679 - 917 - - - - textbox - Unspecified - 0 - 0 - - 85 - 927 - 521 - 1031 - - - - textbox - Unspecified - 0 - 0 - - 746 - 932 - 1056 - 1042 - - - - textbox - Unspecified - 0 - 0 - - 1304 - 925 - 1618 - 1028 - - - diff --git a/source/pic2card/data/train/45.jpg b/source/pic2card/data/train/45.jpg deleted file mode 100644 index 31f6d3e6b5..0000000000 Binary files a/source/pic2card/data/train/45.jpg and /dev/null differ diff --git a/source/pic2card/data/train/45.xml b/source/pic2card/data/train/45.xml deleted file mode 100644 index 0d6d2c9203..0000000000 --- a/source/pic2card/data/train/45.xml +++ /dev/null @@ -1,206 +0,0 @@ - - dataset_final - 45.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/45.jpg - - Unknown - - - 1817 - 1330 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 259 - 85 - 626 - 147 - - - - textbox - Unspecified - 0 - 0 - - 251 - 150 - 729 - 221 - - - - textbox - Unspecified - 0 - 0 - - 59 - 288 - 811 - 353 - - - - textbox - Unspecified - 0 - 0 - - 50 - 360 - 779 - 429 - - - - textbox - Unspecified - 0 - 0 - - 238 - 519 - 435 - 579 - - - - textbox - Unspecified - 0 - 0 - - 1309 - 513 - 1695 - 579 - - - - textbox - Unspecified - 0 - 0 - - 253 - 621 - 582 - 697 - - - - textbox - Unspecified - 0 - 0 - - 256 - 747 - 586 - 829 - - - - textbox - Unspecified - 0 - 0 - - 245 - 872 - 709 - 947 - - - - textbox - Unspecified - 0 - 0 - - 261 - 1000 - 642 - 1076 - - - - textbox - Unspecified - 0 - 0 - - 250 - 1128 - 572 - 1194 - - - - textbox - Unspecified - 0 - 0 - - 1475 - 628 - 1563 - 693 - - - - textbox - Unspecified - 0 - 0 - - 1473 - 753 - 1566 - 822 - - - - textbox - Unspecified - 0 - 0 - - 1475 - 879 - 1567 - 950 - - - - textbox - Unspecified - 0 - 0 - - 1472 - 1012 - 1563 - 1071 - - - - textbox - Unspecified - 0 - 0 - - 1470 - 1126 - 1569 - 1204 - - - diff --git a/source/pic2card/data/train/46.jpg b/source/pic2card/data/train/46.jpg deleted file mode 100644 index 62236bc1d1..0000000000 Binary files a/source/pic2card/data/train/46.jpg and /dev/null differ diff --git a/source/pic2card/data/train/46.xml b/source/pic2card/data/train/46.xml deleted file mode 100644 index d739d91c65..0000000000 --- a/source/pic2card/data/train/46.xml +++ /dev/null @@ -1,206 +0,0 @@ - - dataset_final - 46.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/46.jpg - - Unknown - - - 1817 - 1546 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 256 - 77 - 611 - 146 - - - - textbox - Unspecified - 0 - 0 - - 249 - 155 - 739 - 221 - - - - textbox - Unspecified - 0 - 0 - - 54 - 293 - 811 - 352 - - - - textbox - Unspecified - 0 - 0 - - 52 - 360 - 792 - 433 - - - - textbox - Unspecified - 0 - 0 - - 151 - 526 - 335 - 612 - - - - textbox - Unspecified - 0 - 0 - - 154 - 693 - 342 - 772 - - - - textbox - Unspecified - 0 - 0 - - 163 - 843 - 313 - 914 - - - - textbox - Unspecified - 0 - 0 - - 156 - 984 - 320 - 1055 - - - - textbox - Unspecified - 0 - 0 - - 166 - 1129 - 340 - 1191 - - - - textbox - Unspecified - 0 - 0 - - 166 - 1265 - 454 - 1341 - - - - textbox - Unspecified - 0 - 0 - - 935 - 527 - 1378 - 619 - - - - textbox - Unspecified - 0 - 0 - - 1094 - 690 - 1208 - 774 - - - - textbox - Unspecified - 0 - 0 - - 1096 - 843 - 1204 - 929 - - - - textbox - Unspecified - 0 - 0 - - 1094 - 981 - 1208 - 1055 - - - - textbox - Unspecified - 0 - 0 - - 1094 - 1112 - 1211 - 1191 - - - - textbox - Unspecified - 0 - 0 - - 1104 - 1257 - 1206 - 1340 - - - diff --git a/source/pic2card/data/train/47.jpg b/source/pic2card/data/train/47.jpg deleted file mode 100644 index f2d588d707..0000000000 Binary files a/source/pic2card/data/train/47.jpg and /dev/null differ diff --git a/source/pic2card/data/train/47.xml b/source/pic2card/data/train/47.xml deleted file mode 100644 index 15ebe29182..0000000000 --- a/source/pic2card/data/train/47.xml +++ /dev/null @@ -1,206 +0,0 @@ - - dataset_final - 47.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/47.jpg - - Unknown - - - 1817 - 1896 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 241 - 80 - 615 - 152 - - - - textbox - Unspecified - 0 - 0 - - 254 - 160 - 739 - 226 - - - - textbox - Unspecified - 0 - 0 - - 56 - 288 - 528 - 358 - - - - textbox - Unspecified - 0 - 0 - - 60 - 365 - 369 - 429 - - - - textbox - Unspecified - 0 - 0 - - 249 - 584 - 507 - 680 - - - - textbox - Unspecified - 0 - 0 - - 249 - 929 - 762 - 1033 - - - - textbox - Unspecified - 0 - 0 - - 254 - 1258 - 813 - 1377 - - - - textbox - Unspecified - 0 - 0 - - 232 - 1590 - 592 - 1712 - - - - textbox - Unspecified - 0 - 0 - - 1566 - 533 - 1696 - 620 - - - - textbox - Unspecified - 0 - 0 - - 1577 - 635 - 1688 - 705 - - - - textbox - Unspecified - 0 - 0 - - 1566 - 892 - 1692 - 963 - - - - textbox - Unspecified - 0 - 0 - - 1605 - 984 - 1686 - 1041 - - - - textbox - Unspecified - 0 - 0 - - 1558 - 1237 - 1679 - 1305 - - - - textbox - Unspecified - 0 - 0 - - 1528 - 1320 - 1683 - 1384 - - - - textbox - Unspecified - 0 - 0 - - 1554 - 1582 - 1677 - 1646 - - - - textbox - Unspecified - 0 - 0 - - 1549 - 1654 - 1677 - 1720 - - - diff --git a/source/pic2card/data/train/48.jpg b/source/pic2card/data/train/48.jpg deleted file mode 100644 index 378378dcd9..0000000000 Binary files a/source/pic2card/data/train/48.jpg and /dev/null differ diff --git a/source/pic2card/data/train/48.xml b/source/pic2card/data/train/48.xml deleted file mode 100644 index 17bc778c86..0000000000 --- a/source/pic2card/data/train/48.xml +++ /dev/null @@ -1,314 +0,0 @@ - - dataset_final - 48.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/48.jpg - - Unknown - - - 1817 - 1571 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 254 - 80 - 605 - 153 - - - - textbox - Unspecified - 0 - 0 - - 260 - 153 - 746 - 225 - - - - textbox - Unspecified - 0 - 0 - - 53 - 294 - 639 - 355 - - - - textbox - Unspecified - 0 - 0 - - 60 - 366 - 353 - 424 - - - - textbox - Unspecified - 0 - 0 - - 47 - 522 - 326 - 604 - - - - textbox - Unspecified - 0 - 0 - - 902 - 525 - 1095 - 594 - - - - textbox - Unspecified - 0 - 0 - - 1469 - 529 - 1747 - 613 - - - - textbox - Unspecified - 0 - 0 - - 53 - 701 - 539 - 783 - - - - textbox - Unspecified - 0 - 0 - - 49 - 829 - 577 - 910 - - - - textbox - Unspecified - 0 - 0 - - 49 - 985 - 602 - 1048 - - - - textbox - Unspecified - 0 - 0 - - 56 - 1113 - 481 - 1194 - - - - textbox - Unspecified - 0 - 0 - - 54 - 1267 - 663 - 1334 - - - - textbox - Unspecified - 0 - 0 - - 51 - 1394 - 493 - 1469 - - - - textbox - Unspecified - 0 - 0 - - 897 - 680 - 1091 - 767 - - - - textbox - Unspecified - 0 - 0 - - 902 - 825 - 1100 - 908 - - - - textbox - Unspecified - 0 - 0 - - 888 - 964 - 1093 - 1046 - - - - textbox - Unspecified - 0 - 0 - - 904 - 1113 - 1095 - 1194 - - - - textbox - Unspecified - 0 - 0 - - 905 - 1259 - 1109 - 1336 - - - - textbox - Unspecified - 0 - 0 - - 911 - 1392 - 1077 - 1473 - - - - textbox - Unspecified - 0 - 0 - - 1569 - 685 - 1749 - 762 - - - - textbox - Unspecified - 0 - 0 - - 1481 - 834 - 1740 - 913 - - - - textbox - Unspecified - 0 - 0 - - 1449 - 971 - 1744 - 1059 - - - - textbox - Unspecified - 0 - 0 - - 1454 - 1110 - 1744 - 1199 - - - - textbox - Unspecified - 0 - 0 - - 1462 - 1266 - 1746 - 1348 - - - - textbox - Unspecified - 0 - 0 - - 1440 - 1387 - 1723 - 1473 - - - diff --git a/source/pic2card/data/train/49.jpg b/source/pic2card/data/train/49.jpg deleted file mode 100644 index 1c74f2a2af..0000000000 Binary files a/source/pic2card/data/train/49.jpg and /dev/null differ diff --git a/source/pic2card/data/train/49.xml b/source/pic2card/data/train/49.xml deleted file mode 100644 index 22c04e7228..0000000000 --- a/source/pic2card/data/train/49.xml +++ /dev/null @@ -1,218 +0,0 @@ - - dataset_final - 49.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/49.jpg - - Unknown - - - 1817 - 2555 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 252 - 71 - 618 - 148 - - - - textbox - Unspecified - 0 - 0 - - 252 - 152 - 761 - 220 - - - - textbox - Unspecified - 0 - 0 - - 43 - 283 - 618 - 352 - - - - textbox - Unspecified - 0 - 0 - - 52 - 355 - 372 - 432 - - - - textbox - Unspecified - 0 - 0 - - 718 - 520 - 1135 - 640 - - - - textbox - Unspecified - 0 - 0 - - 66 - 735 - 261 - 837 - - - - textbox - Unspecified - 0 - 0 - - 1229 - 735 - 1729 - 826 - - - - textbox - Unspecified - 0 - 0 - - 55 - 957 - 455 - 1063 - - - - textbox - Unspecified - 0 - 0 - - 69 - 1117 - 458 - 1212 - - - - textbox - Unspecified - 0 - 0 - - 75 - 1269 - 441 - 1372 - - - - textbox - Unspecified - 0 - 0 - - 75 - 1435 - 438 - 1523 - - - - textbox - Unspecified - 0 - 0 - - 78 - 1583 - 538 - 1683 - - - - textbox - Unspecified - 0 - 0 - - 60 - 1728 - 512 - 1828 - - - - textbox - Unspecified - 0 - 0 - - 69 - 1895 - 541 - 1980 - - - - textbox - Unspecified - 0 - 0 - - 58 - 2046 - 498 - 2126 - - - - textbox - Unspecified - 0 - 0 - - 61 - 2197 - 429 - 2292 - - - - textbox - Unspecified - 0 - 0 - - 52 - 2346 - 286 - 2446 - - - diff --git a/source/pic2card/data/train/5.png b/source/pic2card/data/train/5.png deleted file mode 100644 index 4160248148..0000000000 Binary files a/source/pic2card/data/train/5.png and /dev/null differ diff --git a/source/pic2card/data/train/5.xml b/source/pic2card/data/train/5.xml deleted file mode 100644 index ef41c901e0..0000000000 --- a/source/pic2card/data/train/5.xml +++ /dev/null @@ -1,74 +0,0 @@ - - dataset_final - 5.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/5.png - - Unknown - - - 545 - 408 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 21 - 21 - 416 - 52 - - - - textbox - Unspecified - 0 - 0 - - 20 - 59 - 298 - 86 - - - - textbox - Unspecified - 0 - 0 - - 20 - 204 - 525 - 265 - - - - textbox - Unspecified - 0 - 0 - - 18 - 266 - 525 - 324 - - - - textbox - Unspecified - 0 - 0 - - 16 - 326 - 527 - 385 - - - diff --git a/source/pic2card/data/train/50.jpg b/source/pic2card/data/train/50.jpg deleted file mode 100644 index c3ae9ad95c..0000000000 Binary files a/source/pic2card/data/train/50.jpg and /dev/null differ diff --git a/source/pic2card/data/train/50.xml b/source/pic2card/data/train/50.xml deleted file mode 100644 index 3169ae8401..0000000000 --- a/source/pic2card/data/train/50.xml +++ /dev/null @@ -1,134 +0,0 @@ - - dataset_final - 50.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/50.jpg - - Unknown - - - 1817 - 1484 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 254 - 75 - 624 - 149 - - - - textbox - Unspecified - 0 - 0 - - 252 - 152 - 744 - 226 - - - - textbox - Unspecified - 0 - 0 - - 77 - 325 - 318 - 405 - - - - textbox - Unspecified - 0 - 0 - - 119 - 516 - 511 - 572 - - - - textbox - Unspecified - 0 - 0 - - 123 - 575 - 457 - 652 - - - - textbox - Unspecified - 0 - 0 - - 124 - 743 - 385 - 789 - - - - textbox - Unspecified - 0 - 0 - - 124 - 807 - 368 - 856 - - - - textbox - Unspecified - 0 - 0 - - 118 - 908 - 609 - 957 - - - - textbox - Unspecified - 0 - 0 - - 121 - 964 - 1390 - 1021 - - - - textbox - Unspecified - 0 - 0 - - 122 - 1148 - 277 - 1205 - - - diff --git a/source/pic2card/data/train/52.jpg b/source/pic2card/data/train/52.jpg deleted file mode 100644 index 8cc7afe01a..0000000000 Binary files a/source/pic2card/data/train/52.jpg and /dev/null differ diff --git a/source/pic2card/data/train/52.xml b/source/pic2card/data/train/52.xml deleted file mode 100644 index 8b0da65fd1..0000000000 --- a/source/pic2card/data/train/52.xml +++ /dev/null @@ -1,170 +0,0 @@ - - dataset_final - 52.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/52.jpg - - Unknown - - - 1817 - 1755 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 252 - 71 - 636 - 152 - - - - textbox - Unspecified - 0 - 0 - - 252 - 162 - 752 - 226 - - - - textbox - Unspecified - 0 - 0 - - 72 - 330 - 338 - 409 - - - - textbox - Unspecified - 0 - 0 - - 117 - 530 - 636 - 660 - - - - textbox - Unspecified - 0 - 0 - - 99 - 683 - 393 - 758 - - - - textbox - Unspecified - 0 - 0 - - 995 - 524 - 1607 - 652 - - - - textbox - Unspecified - 0 - 0 - - 991 - 689 - 1187 - 756 - - - - textbox - Unspecified - 0 - 0 - - 103 - 944 - 382 - 1044 - - - - textbox - Unspecified - 0 - 0 - - 997 - 916 - 1476 - 1044 - - - - textbox - Unspecified - 0 - 0 - - 109 - 1089 - 338 - 1152 - - - - textbox - Unspecified - 0 - 0 - - 999 - 1085 - 1274 - 1150 - - - - textbox - Unspecified - 0 - 0 - - 109 - 1316 - 605 - 1438 - - - - textbox - Unspecified - 0 - 0 - - 101 - 1475 - 286 - 1542 - - - diff --git a/source/pic2card/data/train/53.jpg b/source/pic2card/data/train/53.jpg deleted file mode 100644 index 09d2e2f01d..0000000000 Binary files a/source/pic2card/data/train/53.jpg and /dev/null differ diff --git a/source/pic2card/data/train/53.xml b/source/pic2card/data/train/53.xml deleted file mode 100644 index aead677692..0000000000 --- a/source/pic2card/data/train/53.xml +++ /dev/null @@ -1,110 +0,0 @@ - - dataset_final - 53.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/53.jpg - - Unknown - - - 1817 - 909 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 259 - 84 - 618 - 147 - - - - textbox - Unspecified - 0 - 0 - - 257 - 158 - 740 - 219 - - - - textbox - Unspecified - 0 - 0 - - 66 - 325 - 953 - 411 - - - - textbox - Unspecified - 0 - 0 - - 235 - 520 - 339 - 570 - - - - textbox - Unspecified - 0 - 0 - - 908 - 511 - 1316 - 579 - - - - textbox - Unspecified - 0 - 0 - - 198 - 638 - 363 - 753 - - - - textbox - Unspecified - 0 - 0 - - 837 - 631 - 1369 - 702 - - - - textbox - Unspecified - 0 - 0 - - 841 - 703 - 1363 - 778 - - - diff --git a/source/pic2card/data/train/55.jpg b/source/pic2card/data/train/55.jpg deleted file mode 100644 index 0b9c43c111..0000000000 Binary files a/source/pic2card/data/train/55.jpg and /dev/null differ diff --git a/source/pic2card/data/train/55.xml b/source/pic2card/data/train/55.xml deleted file mode 100644 index 5994cc54b7..0000000000 --- a/source/pic2card/data/train/55.xml +++ /dev/null @@ -1,194 +0,0 @@ - - dataset_final - 55.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/55.jpg - - Unknown - - - 1817 - 1305 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 262 - 79 - 620 - 149 - - - - textbox - Unspecified - 0 - 0 - - 252 - 152 - 723 - 233 - - - - textbox - Unspecified - 0 - 0 - - 76 - 322 - 633 - 426 - - - - textbox - Unspecified - 0 - 0 - - 172 - 529 - 481 - 616 - - - - textbox - Unspecified - 0 - 0 - - 769 - 543 - 1037 - 610 - - - - textbox - Unspecified - 0 - 0 - - 1308 - 530 - 1647 - 610 - - - - textbox - Unspecified - 0 - 0 - - 226 - 668 - 484 - 800 - - - - textbox - Unspecified - 0 - 0 - - 781 - 669 - 1032 - 800 - - - - textbox - Unspecified - 0 - 0 - - 1352 - 656 - 1572 - 793 - - - - textbox - Unspecified - 0 - 0 - - 68 - 939 - 581 - 1014 - - - - textbox - Unspecified - 0 - 0 - - 634 - 945 - 1181 - 1013 - - - - textbox - Unspecified - 0 - 0 - - 1247 - 939 - 1708 - 1011 - - - - textbox - Unspecified - 0 - 0 - - 218 - 1059 - 459 - 1209 - - - - textbox - Unspecified - 0 - 0 - - 791 - 1077 - 1036 - 1203 - - - - textbox - Unspecified - 0 - 0 - - 1342 - 1078 - 1588 - 1197 - - - diff --git a/source/pic2card/data/train/57.jpg b/source/pic2card/data/train/57.jpg deleted file mode 100644 index baeaeed898..0000000000 Binary files a/source/pic2card/data/train/57.jpg and /dev/null differ diff --git a/source/pic2card/data/train/57.xml b/source/pic2card/data/train/57.xml deleted file mode 100644 index bcaaaa88e3..0000000000 --- a/source/pic2card/data/train/57.xml +++ /dev/null @@ -1,230 +0,0 @@ - - dataset_final - 57.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/57.jpg - - Unknown - - - 1817 - 1267 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 249 - 79 - 401 - 151 - - - - textbox - Unspecified - 0 - 0 - - 258 - 157 - 732 - 219 - - - - textbox - Unspecified - 0 - 0 - - 52 - 290 - 1067 - 368 - - - - textbox - Unspecified - 0 - 0 - - 84 - 469 - 191 - 540 - - - - textbox - Unspecified - 0 - 0 - - 387 - 469 - 650 - 545 - - - - textbox - Unspecified - 0 - 0 - - 1593 - 471 - 1690 - 541 - - - - textbox - Unspecified - 0 - 0 - - 84 - 665 - 274 - 741 - - - - textbox - Unspecified - 0 - 0 - - 90 - 807 - 274 - 883 - - - - textbox - Unspecified - 0 - 0 - - 80 - 938 - 269 - 1023 - - - - textbox - Unspecified - 0 - 0 - - 77 - 1085 - 274 - 1162 - - - - textbox - Unspecified - 0 - 0 - - 399 - 660 - 1358 - 752 - - - - textbox - Unspecified - 0 - 0 - - 394 - 799 - 1361 - 887 - - - - textbox - Unspecified - 0 - 0 - - 403 - 947 - 1203 - 1026 - - - - textbox - Unspecified - 0 - 0 - - 396 - 1093 - 1158 - 1159 - - - - textbox - Unspecified - 0 - 0 - - 1628 - 673 - 1704 - 730 - - - - textbox - Unspecified - 0 - 0 - - 1629 - 820 - 1701 - 873 - - - - textbox - Unspecified - 0 - 0 - - 1632 - 952 - 1708 - 1014 - - - - textbox - Unspecified - 0 - 0 - - 1632 - 1096 - 1704 - 1159 - - - diff --git a/source/pic2card/data/train/58.jpg b/source/pic2card/data/train/58.jpg deleted file mode 100644 index dd1d4cd5f8..0000000000 Binary files a/source/pic2card/data/train/58.jpg and /dev/null differ diff --git a/source/pic2card/data/train/58.xml b/source/pic2card/data/train/58.xml deleted file mode 100644 index 9a617c23c1..0000000000 --- a/source/pic2card/data/train/58.xml +++ /dev/null @@ -1,458 +0,0 @@ - - dataset_final - 58.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/58.jpg - - Unknown - - - 1817 - 1567 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 258 - 90 - 397 - 155 - - - - textbox - Unspecified - 0 - 0 - - 262 - 164 - 742 - 216 - - - - textbox - Unspecified - 0 - 0 - - 56 - 299 - 1007 - 367 - - - - textbox - Unspecified - 0 - 0 - - 88 - 460 - 335 - 551 - - - - textbox - Unspecified - 0 - 0 - - 519 - 472 - 825 - 560 - - - - textbox - Unspecified - 0 - 0 - - 1001 - 472 - 1337 - 542 - - - - textbox - Unspecified - 0 - 0 - - 999 - 470 - 1335 - 540 - - - - textbox - Unspecified - 0 - 0 - - 1528 - 472 - 1690 - 541 - - - - textbox - Unspecified - 0 - 0 - - 81 - 672 - 153 - 732 - - - - textbox - Unspecified - 0 - 0 - - 81 - 804 - 151 - 862 - - - - textbox - Unspecified - 0 - 0 - - 91 - 939 - 146 - 988 - - - - textbox - Unspecified - 0 - 0 - - 98 - 1067 - 144 - 1118 - - - - textbox - Unspecified - 0 - 0 - - 98 - 1197 - 153 - 1243 - - - - textbox - Unspecified - 0 - 0 - - 158 - 673 - 347 - 733 - - - - textbox - Unspecified - 0 - 0 - - 153 - 804 - 286 - 862 - - - - textbox - Unspecified - 0 - 0 - - 147 - 930 - 351 - 990 - - - - textbox - Unspecified - 0 - 0 - - 149 - 1071 - 286 - 1123 - - - - textbox - Unspecified - 0 - 0 - - 162 - 1194 - 339 - 1250 - - - - textbox - Unspecified - 0 - 0 - - 518 - 667 - 595 - 739 - - - - textbox - Unspecified - 0 - 0 - - 531 - 799 - 615 - 865 - - - - textbox - Unspecified - 0 - 0 - - 523 - 923 - 631 - 987 - - - - textbox - Unspecified - 0 - 0 - - 518 - 1053 - 607 - 1127 - - - - textbox - Unspecified - 0 - 0 - - 521 - 1190 - 605 - 1260 - - - - textbox - Unspecified - 0 - 0 - - 998 - 671 - 1098 - 736 - - - - textbox - Unspecified - 0 - 0 - - 1005 - 801 - 1098 - 865 - - - - textbox - Unspecified - 0 - 0 - - 1002 - 932 - 1086 - 995 - - - - textbox - Unspecified - 0 - 0 - - 997 - 1057 - 1067 - 1116 - - - - textbox - Unspecified - 0 - 0 - - 1002 - 1186 - 1067 - 1251 - - - - textbox - Unspecified - 0 - 0 - - 1609 - 672 - 1686 - 728 - - - - textbox - Unspecified - 0 - 0 - - 1604 - 801 - 1697 - 862 - - - - textbox - Unspecified - 0 - 0 - - 1616 - 932 - 1697 - 992 - - - - textbox - Unspecified - 0 - 0 - - 1632 - 1058 - 1690 - 1116 - - - - textbox - Unspecified - 0 - 0 - - 1639 - 1192 - 1702 - 1250 - - - - textbox - Unspecified - 0 - 0 - - 97 - 1346 - 246 - 1425 - - - - textbox - Unspecified - 0 - 0 - - 519 - 1360 - 614 - 1418 - - - - textbox - Unspecified - 0 - 0 - - 997 - 1362 - 1086 - 1427 - - - - textbox - Unspecified - 0 - 0 - - 1584 - 1360 - 1700 - 1427 - - - diff --git a/source/pic2card/data/train/6.png b/source/pic2card/data/train/6.png deleted file mode 100644 index 3fd43f7569..0000000000 Binary files a/source/pic2card/data/train/6.png and /dev/null differ diff --git a/source/pic2card/data/train/6.xml b/source/pic2card/data/train/6.xml deleted file mode 100644 index fc782cc8a0..0000000000 --- a/source/pic2card/data/train/6.xml +++ /dev/null @@ -1,38 +0,0 @@ - - dataset_final - 6.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/6.png - - Unknown - - - 542 - 420 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 18 - 23 - 357 - 60 - - - - textbox - Unspecified - 0 - 0 - - 19 - 70 - 339 - 99 - - - diff --git a/source/pic2card/data/train/60.jpg b/source/pic2card/data/train/60.jpg deleted file mode 100644 index 609a96d9be..0000000000 Binary files a/source/pic2card/data/train/60.jpg and /dev/null differ diff --git a/source/pic2card/data/train/60.xml b/source/pic2card/data/train/60.xml deleted file mode 100644 index 3f7e358d8e..0000000000 --- a/source/pic2card/data/train/60.xml +++ /dev/null @@ -1,98 +0,0 @@ - - dataset_final - 60.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/60.jpg - - Unknown - - - 1817 - 1121 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 263 - 85 - 391 - 150 - - - - textbox - Unspecified - 0 - 0 - - 249 - 163 - 732 - 216 - - - - textbox - Unspecified - 0 - 0 - - 58 - 293 - 490 - 368 - - - - textbox - Unspecified - 0 - 0 - - 183 - 536 - 744 - 622 - - - - textbox - Unspecified - 0 - 0 - - 1027 - 526 - 1642 - 636 - - - - textbox - Unspecified - 0 - 0 - - 368 - 789 - 558 - 914 - - - - textbox - Unspecified - 0 - 0 - - 1242 - 789 - 1433 - 918 - - - diff --git a/source/pic2card/data/train/61.jpg b/source/pic2card/data/train/61.jpg deleted file mode 100644 index 9728310e2d..0000000000 Binary files a/source/pic2card/data/train/61.jpg and /dev/null differ diff --git a/source/pic2card/data/train/61.xml b/source/pic2card/data/train/61.xml deleted file mode 100644 index f6b6caf71a..0000000000 --- a/source/pic2card/data/train/61.xml +++ /dev/null @@ -1,122 +0,0 @@ - - dataset_final - 61.jpg - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/61.jpg - - Unknown - - - 1817 - 984 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 258 - 83 - 382 - 147 - - - - textbox - Unspecified - 0 - 0 - - 255 - 152 - 727 - 217 - - - - textbox - Unspecified - 0 - 0 - - 51 - 297 - 314 - 362 - - - - textbox - Unspecified - 0 - 0 - - 230 - 530 - 423 - 668 - - - - textbox - Unspecified - 0 - 0 - - 816 - 531 - 968 - 668 - - - - textbox - Unspecified - 0 - 0 - - 1404 - 521 - 1539 - 665 - - - - textbox - Unspecified - 0 - 0 - - 151 - 757 - 501 - 817 - - - - textbox - Unspecified - 0 - 0 - - 795 - 753 - 1007 - 818 - - - - textbox - Unspecified - 0 - 0 - - 1383 - 761 - 1558 - 815 - - - diff --git a/source/pic2card/data/train/62.png b/source/pic2card/data/train/62.png deleted file mode 100644 index fb85a956f7..0000000000 Binary files a/source/pic2card/data/train/62.png and /dev/null differ diff --git a/source/pic2card/data/train/62.xml b/source/pic2card/data/train/62.xml deleted file mode 100644 index 15f80c0257..0000000000 --- a/source/pic2card/data/train/62.xml +++ /dev/null @@ -1,170 +0,0 @@ - - dataset_final - 62.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/62.png - - Unknown - - - 967 - 779 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 37 - 52 - 235 - 94 - - - - textbox - Unspecified - 0 - 0 - - 150 - 115 - 341 - 155 - - - - textbox - Unspecified - 0 - 0 - - 152 - 160 - 782 - 241 - - - - textbox - Unspecified - 0 - 0 - - 35 - 260 - 110 - 305 - - - - textbox - Unspecified - 0 - 0 - - 38 - 348 - 178 - 390 - - - - textbox - Unspecified - 0 - 0 - - 40 - 396 - 171 - 433 - - - - textbox - Unspecified - 0 - 0 - - 191 - 267 - 873 - 340 - - - - textbox - Unspecified - 0 - 0 - - 192 - 356 - 539 - 391 - - - - textbox - Unspecified - 0 - 0 - - 193 - 401 - 261 - 444 - - - - textbox - Unspecified - 0 - 0 - - 34 - 465 - 221 - 506 - - - - textbox - Unspecified - 0 - 0 - - 232 - 467 - 487 - 511 - - - - textbox - Unspecified - 0 - 0 - - 32 - 532 - 235 - 573 - - - - textbox - Unspecified - 0 - 0 - - 249 - 533 - 835 - 730 - - - diff --git a/source/pic2card/data/train/63.png b/source/pic2card/data/train/63.png deleted file mode 100644 index fd07810b9f..0000000000 Binary files a/source/pic2card/data/train/63.png and /dev/null differ diff --git a/source/pic2card/data/train/63.xml b/source/pic2card/data/train/63.xml deleted file mode 100644 index 76fdb71fef..0000000000 --- a/source/pic2card/data/train/63.xml +++ /dev/null @@ -1,62 +0,0 @@ - - dataset_final - 63.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/63.png - - Unknown - - - 569 - 169 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 24 - 20 - 135 - 40 - - - - radiobutton - Unspecified - 0 - 0 - - 24 - 47 - 111 - 71 - - - - radiobutton - Unspecified - 0 - 0 - - 26 - 72 - 113 - 95 - - - - textbox - Unspecified - 0 - 0 - - 22 - 100 - 550 - 151 - - - diff --git a/source/pic2card/data/train/64.png b/source/pic2card/data/train/64.png deleted file mode 100644 index 942a37103f..0000000000 Binary files a/source/pic2card/data/train/64.png and /dev/null differ diff --git a/source/pic2card/data/train/64.xml b/source/pic2card/data/train/64.xml deleted file mode 100644 index baa4694be1..0000000000 --- a/source/pic2card/data/train/64.xml +++ /dev/null @@ -1,110 +0,0 @@ - - dataset_final - 64.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/64.png - - Unknown - - - 576 - 814 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 24 - 31 - 407 - 81 - - - - textbox - Unspecified - 0 - 0 - - 15 - 109 - 322 - 157 - - - - textbox - Unspecified - 0 - 0 - - 337 - 112 - 560 - 151 - - - - textbox - Unspecified - 0 - 0 - - 256 - 176 - 543 - 294 - - - - textbox - Unspecified - 0 - 0 - - 93 - 358 - 506 - 432 - - - - textbox - Unspecified - 0 - 0 - - 92 - 453 - 551 - 547 - - - - textbox - Unspecified - 0 - 0 - - 92 - 553 - 504 - 633 - - - - textbox - Unspecified - 0 - 0 - - 259 - 663 - 487 - 708 - - - diff --git a/source/pic2card/data/train/66.png b/source/pic2card/data/train/66.png deleted file mode 100644 index cb2cb0ab5a..0000000000 Binary files a/source/pic2card/data/train/66.png and /dev/null differ diff --git a/source/pic2card/data/train/66.xml b/source/pic2card/data/train/66.xml deleted file mode 100644 index 36e052ce4f..0000000000 --- a/source/pic2card/data/train/66.xml +++ /dev/null @@ -1,146 +0,0 @@ - - dataset_final - 66.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/66.png - - Unknown - - - 355 - 277 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 56 - 22 - 152 - 39 - - - - textbox - Unspecified - 0 - 0 - - 55 - 38 - 222 - 56 - - - - textbox - Unspecified - 0 - 0 - - 13 - 62 - 73 - 81 - - - - textbox - Unspecified - 0 - 0 - - 15 - 89 - 240 - 108 - - - - textbox - Unspecified - 0 - 0 - - 20 - 176 - 64 - 194 - - - - textbox - Unspecified - 0 - 0 - - 72 - 178 - 121 - 209 - - - - textbox - Unspecified - 0 - 0 - - 126 - 177 - 174 - 224 - - - - textbox - Unspecified - 0 - 0 - - 181 - 174 - 226 - 227 - - - - textbox - Unspecified - 0 - 0 - - 232 - 176 - 281 - 224 - - - - textbox - Unspecified - 0 - 0 - - 288 - 179 - 332 - 214 - - - - textbox - Unspecified - 0 - 0 - - 13 - 225 - 77 - 258 - - - diff --git a/source/pic2card/data/train/67.png b/source/pic2card/data/train/67.png deleted file mode 100644 index 01991431ba..0000000000 Binary files a/source/pic2card/data/train/67.png and /dev/null differ diff --git a/source/pic2card/data/train/67.xml b/source/pic2card/data/train/67.xml deleted file mode 100644 index cd400c0a93..0000000000 --- a/source/pic2card/data/train/67.xml +++ /dev/null @@ -1,86 +0,0 @@ - - dataset_final - 67.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/67.png - - Unknown - - - 612 - 432 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 30 - 115 - 87 - 142 - - - - textbox - Unspecified - 0 - 0 - - 25 - 147 - 332 - 203 - - - - textbox - Unspecified - 0 - 0 - - 192 - 222 - 289 - 247 - - - - textbox - Unspecified - 0 - 0 - - 41 - 274 - 183 - 304 - - - - textbox - Unspecified - 0 - 0 - - 27 - 313 - 204 - 364 - - - - textbox - Unspecified - 0 - 0 - - 28 - 368 - 463 - 396 - - - diff --git a/source/pic2card/data/train/68.png b/source/pic2card/data/train/68.png deleted file mode 100644 index c8afa4729e..0000000000 Binary files a/source/pic2card/data/train/68.png and /dev/null differ diff --git a/source/pic2card/data/train/68.xml b/source/pic2card/data/train/68.xml deleted file mode 100644 index 271f6b240a..0000000000 --- a/source/pic2card/data/train/68.xml +++ /dev/null @@ -1,170 +0,0 @@ - - dataset_final - 68.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/68.png - - Unknown - - - 402 - 346 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 21 - 20 - 248 - 46 - - - - textbox - Unspecified - 0 - 0 - - 62 - 54 - 159 - 71 - - - - textbox - Unspecified - 0 - 0 - - 66 - 70 - 230 - 89 - - - - textbox - Unspecified - 0 - 0 - - 30 - 99 - 234 - 121 - - - - textbox - Unspecified - 0 - 0 - - 16 - 186 - 69 - 208 - - - - textbox - Unspecified - 0 - 0 - - 19 - 210 - 54 - 227 - - - - textbox - Unspecified - 0 - 0 - - 20 - 231 - 99 - 249 - - - - textbox - Unspecified - 0 - 0 - - 20 - 250 - 87 - 268 - - - - textbox - Unspecified - 0 - 0 - - 102 - 189 - 193 - 210 - - - - textbox - Unspecified - 0 - 0 - - 102 - 213 - 161 - 230 - - - - textbox - Unspecified - 0 - 0 - - 103 - 232 - 194 - 250 - - - - textbox - Unspecified - 0 - 0 - - 104 - 251 - 158 - 270 - - - - textbox - Unspecified - 0 - 0 - - 22 - 273 - 116 - 303 - - - diff --git a/source/pic2card/data/train/69.png b/source/pic2card/data/train/69.png deleted file mode 100644 index 12be3f2ba4..0000000000 Binary files a/source/pic2card/data/train/69.png and /dev/null differ diff --git a/source/pic2card/data/train/69.xml b/source/pic2card/data/train/69.xml deleted file mode 100644 index 4c3603b468..0000000000 --- a/source/pic2card/data/train/69.xml +++ /dev/null @@ -1,206 +0,0 @@ - - dataset_final - 69.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/69.png - - Unknown - - - 538 - 501 - 3 - - 0 - - checkbox - Unspecified - 0 - 0 - - 25 - 20 - 107 - 53 - - - - checkbox - Unspecified - 0 - 0 - - 24 - 106 - 110 - 138 - - - - checkbox - Unspecified - 0 - 0 - - 25 - 191 - 111 - 222 - - - - checkbox - Unspecified - 0 - 0 - - 20 - 275 - 111 - 306 - - - - checkbox - Unspecified - 0 - 0 - - 20 - 358 - 107 - 388 - - - - textbox - Unspecified - 0 - 0 - - 22 - 60 - 94 - 82 - - - - textbox - Unspecified - 0 - 0 - - 25 - 144 - 84 - 171 - - - - textbox - Unspecified - 0 - 0 - - 22 - 229 - 92 - 253 - - - - textbox - Unspecified - 0 - 0 - - 26 - 312 - 87 - 340 - - - - textbox - Unspecified - 0 - 0 - - 26 - 395 - 86 - 423 - - - - textbox - Unspecified - 0 - 0 - - 457 - 26 - 518 - 56 - - - - textbox - Unspecified - 0 - 0 - - 456 - 108 - 519 - 142 - - - - textbox - Unspecified - 0 - 0 - - 455 - 191 - 521 - 222 - - - - textbox - Unspecified - 0 - 0 - - 456 - 277 - 522 - 305 - - - - textbox - Unspecified - 0 - 0 - - 456 - 363 - 521 - 389 - - - - textbox - Unspecified - 0 - 0 - - 21 - 430 - 132 - 477 - - - diff --git a/source/pic2card/data/train/7.png b/source/pic2card/data/train/7.png deleted file mode 100644 index 4a395bcaf6..0000000000 Binary files a/source/pic2card/data/train/7.png and /dev/null differ diff --git a/source/pic2card/data/train/7.xml b/source/pic2card/data/train/7.xml deleted file mode 100644 index 877b1098d4..0000000000 --- a/source/pic2card/data/train/7.xml +++ /dev/null @@ -1,134 +0,0 @@ - - dataset_final - 7.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/7.png - - Unknown - - - 540 - 504 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 19 - 24 - 262 - 57 - - - - textbox - Unspecified - 0 - 0 - - 20 - 63 - 336 - 115 - - - - textbox - Unspecified - 0 - 0 - - 17 - 123 - 318 - 167 - - - - textbox - Unspecified - 0 - 0 - - 17 - 172 - 117 - 197 - - - - textbox - Unspecified - 0 - 0 - - 26 - 210 - 121 - 243 - - - - textbox - Unspecified - 0 - 0 - - 15 - 254 - 127 - 289 - - - - textbox - Unspecified - 0 - 0 - - 29 - 300 - 245 - 326 - - - - textbox - Unspecified - 0 - 0 - - 16 - 343 - 158 - 371 - - - - textbox - Unspecified - 0 - 0 - - 30 - 383 - 144 - 412 - - - - textbox - Unspecified - 0 - 0 - - 16 - 419 - 523 - 484 - - - diff --git a/source/pic2card/data/train/70.png b/source/pic2card/data/train/70.png deleted file mode 100644 index b549d92358..0000000000 Binary files a/source/pic2card/data/train/70.png and /dev/null differ diff --git a/source/pic2card/data/train/70.xml b/source/pic2card/data/train/70.xml deleted file mode 100644 index cfd4152952..0000000000 --- a/source/pic2card/data/train/70.xml +++ /dev/null @@ -1,206 +0,0 @@ - - dataset_final - 70.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/70.png - - Unknown - - - 439 - 481 - 3 - - 0 - - checkbox - Unspecified - 0 - 0 - - 25 - 24 - 125 - 63 - - - - checkbox - Unspecified - 0 - 0 - - 28 - 110 - 113 - 139 - - - - checkbox - Unspecified - 0 - 0 - - 25 - 188 - 122 - 220 - - - - checkbox - Unspecified - 0 - 0 - - 28 - 270 - 119 - 303 - - - - checkbox - Unspecified - 0 - 0 - - 26 - 348 - 114 - 381 - - - - textbox - Unspecified - 0 - 0 - - 29 - 68 - 91 - 92 - - - - textbox - Unspecified - 0 - 0 - - 29 - 151 - 97 - 172 - - - - textbox - Unspecified - 0 - 0 - - 26 - 232 - 86 - 254 - - - - textbox - Unspecified - 0 - 0 - - 29 - 312 - 88 - 336 - - - - textbox - Unspecified - 0 - 0 - - 27 - 391 - 92 - 415 - - - - textbox - Unspecified - 0 - 0 - - 361 - 27 - 427 - 57 - - - - textbox - Unspecified - 0 - 0 - - 362 - 110 - 426 - 138 - - - - textbox - Unspecified - 0 - 0 - - 361 - 188 - 427 - 218 - - - - textbox - Unspecified - 0 - 0 - - 361 - 274 - 427 - 301 - - - - textbox - Unspecified - 0 - 0 - - 363 - 354 - 427 - 380 - - - - textbox - Unspecified - 0 - 0 - - 26 - 417 - 430 - 469 - - - diff --git a/source/pic2card/data/train/71.png b/source/pic2card/data/train/71.png deleted file mode 100644 index 0e288b8eeb..0000000000 Binary files a/source/pic2card/data/train/71.png and /dev/null differ diff --git a/source/pic2card/data/train/71.xml b/source/pic2card/data/train/71.xml deleted file mode 100644 index 96af875dd1..0000000000 --- a/source/pic2card/data/train/71.xml +++ /dev/null @@ -1,86 +0,0 @@ - - dataset_final - 71.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/71.png - - Unknown - - - 567 - 169 - 3 - - 0 - - checkbox - Unspecified - 0 - 0 - - 19 - 63 - 116 - 91 - - - - checkbox - Unspecified - 0 - 0 - - 123 - 61 - 219 - 91 - - - - checkbox - Unspecified - 0 - 0 - - 223 - 61 - 321 - 92 - - - - checkbox - Unspecified - 0 - 0 - - 324 - 61 - 429 - 94 - - - - textbox - Unspecified - 0 - 0 - - 168 - 13 - 397 - 50 - - - - textbox - Unspecified - 0 - 0 - - 21 - 96 - 546 - 146 - - - diff --git a/source/pic2card/data/train/72.png b/source/pic2card/data/train/72.png deleted file mode 100644 index 492d525c30..0000000000 Binary files a/source/pic2card/data/train/72.png and /dev/null differ diff --git a/source/pic2card/data/train/72.xml b/source/pic2card/data/train/72.xml deleted file mode 100644 index 6301445bba..0000000000 --- a/source/pic2card/data/train/72.xml +++ /dev/null @@ -1,74 +0,0 @@ - - dataset_final - 72.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/72.png - - Unknown - - - 298 - 228 - 3 - - 0 - - checkbox - Unspecified - 0 - 0 - - 15 - 17 - 117 - 48 - - - - checkbox - Unspecified - 0 - 0 - - 18 - 50 - 119 - 75 - - - - checkbox - Unspecified - 0 - 0 - - 19 - 75 - 121 - 101 - - - - textbox - Unspecified - 0 - 0 - - 14 - 107 - 284 - 156 - - - - textbox - Unspecified - 0 - 0 - - 16 - 160 - 282 - 209 - - - diff --git a/source/pic2card/data/train/73.png b/source/pic2card/data/train/73.png deleted file mode 100644 index 8864e155da..0000000000 Binary files a/source/pic2card/data/train/73.png and /dev/null differ diff --git a/source/pic2card/data/train/73.xml b/source/pic2card/data/train/73.xml deleted file mode 100644 index cdf8786293..0000000000 --- a/source/pic2card/data/train/73.xml +++ /dev/null @@ -1,182 +0,0 @@ - - dataset_final - 73.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/73.png - - Unknown - - - 543 - 626 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 187 - 27 - 364 - 61 - - - - textbox - Unspecified - 0 - 0 - - 19 - 69 - 329 - 97 - - - - textbox - Unspecified - 0 - 0 - - 26 - 171 - 332 - 204 - - - - textbox - Unspecified - 0 - 0 - - 25 - 314 - 348 - 348 - - - - textbox - Unspecified - 0 - 0 - - 191 - 455 - 350 - 491 - - - - textbox - Unspecified - 0 - 0 - - 23 - 550 - 117 - 603 - - - - textbox - Unspecified - 0 - 0 - - 121 - 549 - 216 - 603 - - - - radiobutton - Unspecified - 0 - 0 - - 24 - 208 - 91 - 234 - - - - radiobutton - Unspecified - 0 - 0 - - 26 - 237 - 106 - 259 - - - - radiobutton - Unspecified - 0 - 0 - - 25 - 259 - 114 - 282 - - - - checkbox - Unspecified - 0 - 0 - - 24 - 351 - 91 - 375 - - - - checkbox - Unspecified - 0 - 0 - - 22 - 376 - 104 - 399 - - - - checkbox - Unspecified - 0 - 0 - - 23 - 402 - 104 - 425 - - - - checkbox - Unspecified - 0 - 0 - - 22 - 499 - 433 - 527 - - - diff --git a/source/pic2card/data/train/74.png b/source/pic2card/data/train/74.png deleted file mode 100644 index d8a5195194..0000000000 Binary files a/source/pic2card/data/train/74.png and /dev/null differ diff --git a/source/pic2card/data/train/74.xml b/source/pic2card/data/train/74.xml deleted file mode 100644 index 6a9a67b2d3..0000000000 --- a/source/pic2card/data/train/74.xml +++ /dev/null @@ -1,122 +0,0 @@ - - dataset_final - 74.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/74.png - - Unknown - - - 449 - 562 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 24 - 19 - 260 - 51 - - - - textbox - Unspecified - 0 - 0 - - 23 - 155 - 265 - 181 - - - - textbox - Unspecified - 0 - 0 - - 20 - 288 - 251 - 315 - - - - radiobutton - Unspecified - 0 - 0 - - 31 - 314 - 172 - 344 - - - - radiobutton - Unspecified - 0 - 0 - - 31 - 344 - 245 - 371 - - - - radiobutton - Unspecified - 0 - 0 - - 32 - 371 - 247 - 395 - - - - radiobutton - Unspecified - 0 - 0 - - 33 - 395 - 250 - 417 - - - - radiobutton - Unspecified - 0 - 0 - - 35 - 417 - 249 - 441 - - - - radiobutton - Unspecified - 0 - 0 - - 31 - 443 - 256 - 470 - - - diff --git a/source/pic2card/data/train/75.png b/source/pic2card/data/train/75.png deleted file mode 100644 index 52d4a698a1..0000000000 Binary files a/source/pic2card/data/train/75.png and /dev/null differ diff --git a/source/pic2card/data/train/75.xml b/source/pic2card/data/train/75.xml deleted file mode 100644 index 3bff62b652..0000000000 --- a/source/pic2card/data/train/75.xml +++ /dev/null @@ -1,110 +0,0 @@ - - dataset_final - 75.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/75.png - - Unknown - - - 543 - 309 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 22 - 17 - 85 - 44 - - - - textbox - Unspecified - 0 - 0 - - 272 - 17 - 334 - 41 - - - - textbox - Unspecified - 0 - 0 - - 33 - 58 - 149 - 86 - - - - textbox - Unspecified - 0 - 0 - - 282 - 58 - 405 - 87 - - - - textbox - Unspecified - 0 - 0 - - 20 - 100 - 109 - 127 - - - - textbox - Unspecified - 0 - 0 - - 34 - 142 - 125 - 171 - - - - textbox - Unspecified - 0 - 0 - - 24 - 235 - 112 - 281 - - - - textbox - Unspecified - 0 - 0 - - 119 - 236 - 191 - 281 - - - diff --git a/source/pic2card/data/train/76.png b/source/pic2card/data/train/76.png deleted file mode 100644 index b64d964084..0000000000 Binary files a/source/pic2card/data/train/76.png and /dev/null differ diff --git a/source/pic2card/data/train/76.xml b/source/pic2card/data/train/76.xml deleted file mode 100644 index a20ccee1c0..0000000000 --- a/source/pic2card/data/train/76.xml +++ /dev/null @@ -1,86 +0,0 @@ - - dataset_final - 76.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/76.png - - Unknown - - - 444 - 244 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 27 - 21 - 179 - 51 - - - - textbox - Unspecified - 0 - 0 - - 25 - 56 - 145 - 81 - - - - textbox - Unspecified - 0 - 0 - - 24 - 173 - 421 - 224 - - - - checkbox - Unspecified - 0 - 0 - - 25 - 85 - 132 - 114 - - - - checkbox - Unspecified - 0 - 0 - - 25 - 115 - 136 - 140 - - - - checkbox - Unspecified - 0 - 0 - - 25 - 140 - 137 - 167 - - - diff --git a/source/pic2card/data/train/77.png b/source/pic2card/data/train/77.png deleted file mode 100644 index cb8350e60d..0000000000 Binary files a/source/pic2card/data/train/77.png and /dev/null differ diff --git a/source/pic2card/data/train/77.xml b/source/pic2card/data/train/77.xml deleted file mode 100644 index d67882d71e..0000000000 --- a/source/pic2card/data/train/77.xml +++ /dev/null @@ -1,74 +0,0 @@ - - dataset_final - 77.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/77.png - - Unknown - - - 545 - 327 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 24 - 18 - 135 - 47 - - - - textbox - Unspecified - 0 - 0 - - 27 - 251 - 84 - 298 - - - - checkbox - Unspecified - 0 - 0 - - 19 - 218 - 103 - 248 - - - - checkbox - Unspecified - 0 - 0 - - 191 - 217 - 275 - 246 - - - - checkbox - Unspecified - 0 - 0 - - 355 - 216 - 437 - 249 - - - diff --git a/source/pic2card/data/train/78.png b/source/pic2card/data/train/78.png deleted file mode 100644 index 220e8861f5..0000000000 Binary files a/source/pic2card/data/train/78.png and /dev/null differ diff --git a/source/pic2card/data/train/78.xml b/source/pic2card/data/train/78.xml deleted file mode 100644 index 5702e4c162..0000000000 --- a/source/pic2card/data/train/78.xml +++ /dev/null @@ -1,326 +0,0 @@ - - dataset_final - 78.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/78.png - - Unknown - - - 652 - 852 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 11 - 19 - 123 - 49 - - - - textbox - Unspecified - 0 - 0 - - 10 - 56 - 195 - 85 - - - - textbox - Unspecified - 0 - 0 - - 278 - 25 - 398 - 49 - - - - textbox - Unspecified - 0 - 0 - - 288 - 50 - 371 - 84 - - - - textbox - Unspecified - 0 - 0 - - 277 - 105 - 597 - 135 - - - - textbox - Unspecified - 0 - 0 - - 12 - 323 - 203 - 351 - - - - textbox - Unspecified - 0 - 0 - - 8 - 363 - 258 - 402 - - - - textbox - Unspecified - 0 - 0 - - 277 - 332 - 376 - 355 - - - - textbox - Unspecified - 0 - 0 - - 274 - 432 - 628 - 457 - - - - textbox - Unspecified - 0 - 0 - - 278 - 492 - 458 - 515 - - - - textbox - Unspecified - 0 - 0 - - 278 - 549 - 556 - 576 - - - - textbox - Unspecified - 0 - 0 - - 288 - 580 - 380 - 668 - - - - textbox - Unspecified - 0 - 0 - - 276 - 714 - 449 - 745 - - - - radiobutton - Unspecified - 0 - 0 - - 295 - 140 - 461 - 162 - - - - radiobutton - Unspecified - 0 - 0 - - 297 - 164 - 479 - 192 - - - - radiobutton - Unspecified - 0 - 0 - - 295 - 191 - 554 - 216 - - - - radiobutton - Unspecified - 0 - 0 - - 291 - 217 - 478 - 240 - - - - radiobutton - Unspecified - 0 - 0 - - 291 - 239 - 453 - 267 - - - - radiobutton - Unspecified - 0 - 0 - - 297 - 268 - 445 - 299 - - - - radiobutton - Unspecified - 0 - 0 - - 286 - 459 - 342 - 487 - - - - radiobutton - Unspecified - 0 - 0 - - 352 - 457 - 429 - 487 - - - - radiobutton - Unspecified - 0 - 0 - - 286 - 519 - 345 - 545 - - - - radiobutton - Unspecified - 0 - 0 - - 356 - 517 - 424 - 547 - - - - radiobutton - Unspecified - 0 - 0 - - 287 - 747 - 461 - 774 - - - - radiobutton - Unspecified - 0 - 0 - - 286 - 776 - 424 - 800 - - - - radiobutton - Unspecified - 0 - 0 - - 283 - 804 - 608 - 831 - - - diff --git a/source/pic2card/data/train/79.png b/source/pic2card/data/train/79.png deleted file mode 100644 index 4031807765..0000000000 Binary files a/source/pic2card/data/train/79.png and /dev/null differ diff --git a/source/pic2card/data/train/79.xml b/source/pic2card/data/train/79.xml deleted file mode 100644 index aa8d2bf2d9..0000000000 --- a/source/pic2card/data/train/79.xml +++ /dev/null @@ -1,674 +0,0 @@ - - dataset_final - 79.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/79.png - - Unknown - - - 614 - 892 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 4 - 19 - 100 - 54 - - - - textbox - Unspecified - 0 - 0 - - 11 - 61 - 47 - 87 - - - - textbox - Unspecified - 0 - 0 - - 204 - 70 - 273 - 88 - - - - textbox - Unspecified - 0 - 0 - - 403 - 63 - 449 - 87 - - - - textbox - Unspecified - 0 - 0 - - 7 - 809 - 603 - 876 - - - - radiobutton - Unspecified - 0 - 0 - - 11 - 84 - 55 - 110 - - - - radiobutton - Unspecified - 0 - 0 - - 10 - 111 - 68 - 133 - - - - radiobutton - Unspecified - 0 - 0 - - 7 - 137 - 74 - 154 - - - - radiobutton - Unspecified - 0 - 0 - - 11 - 157 - 62 - 181 - - - - radiobutton - Unspecified - 0 - 0 - - 6 - 179 - 69 - 203 - - - - radiobutton - Unspecified - 0 - 0 - - 5 - 200 - 65 - 228 - - - - radiobutton - Unspecified - 0 - 0 - - 9 - 228 - 63 - 248 - - - - radiobutton - Unspecified - 0 - 0 - - 9 - 252 - 63 - 273 - - - - radiobutton - Unspecified - 0 - 0 - - 9 - 272 - 66 - 294 - - - - radiobutton - Unspecified - 0 - 0 - - 8 - 296 - 78 - 319 - - - - radiobutton - Unspecified - 0 - 0 - - 4 - 316 - 75 - 343 - - - - radiobutton - Unspecified - 0 - 0 - - 9 - 344 - 72 - 365 - - - - radiobutton - Unspecified - 0 - 0 - - 9 - 363 - 76 - 390 - - - - radiobutton - Unspecified - 0 - 0 - - 8 - 782 - 69 - 802 - - - - radiobutton - Unspecified - 0 - 0 - - 9 - 756 - 66 - 781 - - - - radiobutton - Unspecified - 0 - 0 - - 10 - 735 - 66 - 756 - - - - radiobutton - Unspecified - 0 - 0 - - 2 - 709 - 71 - 733 - - - - radiobutton - Unspecified - 1 - 0 - - 1 - 685 - 73 - 709 - - - - radiobutton - Unspecified - 0 - 0 - - 3 - 662 - 70 - 689 - - - - radiobutton - Unspecified - 0 - 0 - - 2 - 641 - 69 - 663 - - - - radiobutton - Unspecified - 0 - 0 - - 3 - 621 - 71 - 644 - - - - radiobutton - Unspecified - 1 - 0 - - 1 - 597 - 76 - 622 - - - - radiobutton - Unspecified - 0 - 0 - - 3 - 575 - 75 - 601 - - - - radiobutton - Unspecified - 0 - 0 - - 6 - 550 - 74 - 573 - - - - radiobutton - Unspecified - 0 - 0 - - 3 - 525 - 61 - 548 - - - - radiobutton - Unspecified - 1 - 0 - - 1 - 500 - 66 - 525 - - - - radiobutton - Unspecified - 1 - 0 - - 1 - 482 - 73 - 502 - - - - radiobutton - Unspecified - 1 - 0 - - 1 - 458 - 73 - 481 - - - - radiobutton - Unspecified - 1 - 0 - - 1 - 434 - 70 - 458 - - - - radiobutton - Unspecified - 0 - 0 - - 3 - 411 - 68 - 435 - - - - radiobutton - Unspecified - 0 - 0 - - 4 - 388 - 79 - 410 - - - - radiobutton - Unspecified - 0 - 0 - - 212 - 344 - 263 - 366 - - - - radiobutton - Unspecified - 0 - 0 - - 209 - 319 - 265 - 344 - - - - radiobutton - Unspecified - 0 - 0 - - 209 - 295 - 265 - 318 - - - - radiobutton - Unspecified - 0 - 0 - - 201 - 269 - 259 - 291 - - - - radiobutton - Unspecified - 0 - 0 - - 197 - 249 - 269 - 272 - - - - radiobutton - Unspecified - 0 - 0 - - 200 - 223 - 254 - 248 - - - - radiobutton - Unspecified - 0 - 0 - - 200 - 204 - 258 - 224 - - - - radiobutton - Unspecified - 0 - 0 - - 203 - 178 - 252 - 202 - - - - radiobutton - Unspecified - 0 - 0 - - 202 - 155 - 256 - 177 - - - - radiobutton - Unspecified - 0 - 0 - - 200 - 134 - 255 - 156 - - - - radiobutton - Unspecified - 0 - 0 - - 199 - 111 - 251 - 134 - - - - radiobutton - Unspecified - 0 - 0 - - 198 - 93 - 252 - 111 - - - - radiobutton - Unspecified - 0 - 0 - - 401 - 226 - 480 - 254 - - - - radiobutton - Unspecified - 0 - 0 - - 400 - 200 - 480 - 225 - - - - radiobutton - Unspecified - 0 - 0 - - 400 - 178 - 483 - 201 - - - - radiobutton - Unspecified - 0 - 0 - - 397 - 157 - 483 - 179 - - - - radiobutton - Unspecified - 0 - 0 - - 395 - 136 - 481 - 156 - - - - radiobutton - Unspecified - 0 - 0 - - 397 - 114 - 492 - 133 - - - - radiobutton - Unspecified - 0 - 0 - - 398 - 84 - 479 - 115 - - - diff --git a/source/pic2card/data/train/8.png b/source/pic2card/data/train/8.png deleted file mode 100644 index 96c8fb15ad..0000000000 Binary files a/source/pic2card/data/train/8.png and /dev/null differ diff --git a/source/pic2card/data/train/8.xml b/source/pic2card/data/train/8.xml deleted file mode 100644 index 30c126def7..0000000000 --- a/source/pic2card/data/train/8.xml +++ /dev/null @@ -1,314 +0,0 @@ - - dataset_final - 8.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/8.png - - Unknown - - - 370 - 747 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 108 - 8 - 261 - 34 - - - - textbox - Unspecified - 0 - 0 - - 25 - 44 - 75 - 65 - - - - textbox - Unspecified - 0 - 0 - - 25 - 77 - 97 - 100 - - - - textbox - Unspecified - 0 - 0 - - 25 - 107 - 65 - 133 - - - - textbox - Unspecified - 0 - 0 - - 24 - 140 - 71 - 166 - - - - textbox - Unspecified - 0 - 0 - - 27 - 180 - 94 - 206 - - - - textbox - Unspecified - 0 - 0 - - 24 - 249 - 96 - 270 - - - - textbox - Unspecified - 0 - 0 - - 26 - 282 - 100 - 304 - - - - textbox - Unspecified - 0 - 0 - - 27 - 319 - 69 - 335 - - - - textbox - Unspecified - 0 - 0 - - 118 - 344 - 253 - 368 - - - - textbox - Unspecified - 0 - 0 - - 22 - 368 - 226 - 390 - - - - textbox - Unspecified - 0 - 0 - - 23 - 397 - 67 - 418 - - - - textbox - Unspecified - 0 - 0 - - 20 - 424 - 232 - 444 - - - - textbox - Unspecified - 0 - 0 - - 17 - 500 - 246 - 520 - - - - radiobutton - Unspecified - 0 - 0 - - 19 - 445 - 84 - 462 - - - - radiobutton - Unspecified - 0 - 0 - - 18 - 465 - 87 - 480 - - - - radiobutton - Unspecified - 0 - 0 - - 16 - 480 - 93 - 494 - - - - checkbox - Unspecified - 0 - 0 - - 16 - 522 - 75 - 541 - - - - checkbox - Unspecified - 0 - 0 - - 16 - 544 - 92 - 554 - - - - checkbox - Unspecified - 0 - 0 - - 15 - 558 - 98 - 571 - - - - textbox - Unspecified - 0 - 0 - - 131 - 573 - 241 - 597 - - - - textbox - Unspecified - 0 - 0 - - 18 - 648 - 360 - 688 - - - - textbox - Unspecified - 0 - 0 - - 17 - 689 - 360 - 734 - - - - checkbox - Unspecified - 0 - 0 - - 19 - 599 - 302 - 625 - - - - checkbox - Unspecified - 0 - 0 - - 17 - 629 - 247 - 648 - - - diff --git a/source/pic2card/data/train/80.png b/source/pic2card/data/train/80.png deleted file mode 100644 index f02123c3dc..0000000000 Binary files a/source/pic2card/data/train/80.png and /dev/null differ diff --git a/source/pic2card/data/train/80.xml b/source/pic2card/data/train/80.xml deleted file mode 100644 index 4f7fbe2161..0000000000 --- a/source/pic2card/data/train/80.xml +++ /dev/null @@ -1,62 +0,0 @@ - - dataset_final - 80.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/80.png - - Unknown - - - 567 - 249 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 27 - 31 - 190 - 62 - - - - textbox - Unspecified - 0 - 0 - - 28 - 69 - 428 - 118 - - - - textbox - Unspecified - 0 - 0 - - 25 - 122 - 552 - 173 - - - - textbox - Unspecified - 0 - 0 - - 22 - 177 - 550 - 226 - - - diff --git a/source/pic2card/data/train/81.png b/source/pic2card/data/train/81.png deleted file mode 100644 index 00a57d9792..0000000000 Binary files a/source/pic2card/data/train/81.png and /dev/null differ diff --git a/source/pic2card/data/train/81.xml b/source/pic2card/data/train/81.xml deleted file mode 100644 index b4cba30b01..0000000000 --- a/source/pic2card/data/train/81.xml +++ /dev/null @@ -1,134 +0,0 @@ - - dataset_final - 81.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/81.png - - Unknown - - - 829 - 697 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 32 - 66 - 333 - 111 - - - - textbox - Unspecified - 0 - 0 - - 37 - 155 - 303 - 189 - - - - textbox - Unspecified - 0 - 0 - - 55 - 191 - 181 - 237 - - - - textbox - Unspecified - 0 - 0 - - 41 - 330 - 226 - 370 - - - - textbox - Unspecified - 0 - 0 - - 31 - 555 - 148 - 595 - - - - textbox - Unspecified - 0 - 0 - - 53 - 603 - 202 - 646 - - - - checkbox - Unspecified - 0 - 0 - - 23 - 244 - 793 - 309 - - - - checkbox - Unspecified - 0 - 0 - - 28 - 376 - 190 - 419 - - - - checkbox - Unspecified - 0 - 0 - - 31 - 425 - 241 - 465 - - - - checkbox - Unspecified - 0 - 0 - - 37 - 470 - 191 - 510 - - - diff --git a/source/pic2card/data/train/82.png b/source/pic2card/data/train/82.png deleted file mode 100644 index 96e4ed6845..0000000000 Binary files a/source/pic2card/data/train/82.png and /dev/null differ diff --git a/source/pic2card/data/train/82.xml b/source/pic2card/data/train/82.xml deleted file mode 100644 index 6d3d215c3f..0000000000 --- a/source/pic2card/data/train/82.xml +++ /dev/null @@ -1,74 +0,0 @@ - - dataset_final - 82.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/82.png - - Unknown - - - 524 - 352 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 11 - 17 - 476 - 62 - - - - radiobutton - Unspecified - 0 - 0 - - 28 - 102 - 129 - 131 - - - - radiobutton - Unspecified - 0 - 0 - - 24 - 148 - 126 - 179 - - - - radiobutton - Unspecified - 0 - 0 - - 24 - 197 - 105 - 227 - - - - radiobutton - Unspecified - 0 - 0 - - 26 - 246 - 100 - 274 - - - diff --git a/source/pic2card/data/train/85.png b/source/pic2card/data/train/85.png deleted file mode 100644 index bb5aef25e1..0000000000 Binary files a/source/pic2card/data/train/85.png and /dev/null differ diff --git a/source/pic2card/data/train/85.xml b/source/pic2card/data/train/85.xml deleted file mode 100644 index 4e4b9933e4..0000000000 --- a/source/pic2card/data/train/85.xml +++ /dev/null @@ -1,50 +0,0 @@ - - dataset_final - 85.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/85.png - - Unknown - - - 523 - 250 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 14 - 20 - 300 - 58 - - - - textbox - Unspecified - 0 - 0 - - 14 - 95 - 305 - 128 - - - - textbox - Unspecified - 0 - 0 - - 16 - 138 - 355 - 171 - - - diff --git a/source/pic2card/data/train/86.png b/source/pic2card/data/train/86.png deleted file mode 100644 index 347693d1cc..0000000000 Binary files a/source/pic2card/data/train/86.png and /dev/null differ diff --git a/source/pic2card/data/train/86.xml b/source/pic2card/data/train/86.xml deleted file mode 100644 index ab044e6f83..0000000000 --- a/source/pic2card/data/train/86.xml +++ /dev/null @@ -1,134 +0,0 @@ - - dataset_final - 86.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/86.png - - Unknown - - - 444 - 331 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 19 - 32 - 68 - 57 - - - - textbox - Unspecified - 0 - 0 - - 74 - 73 - 163 - 106 - - - - textbox - Unspecified - 0 - 0 - - 112 - 128 - 159 - 161 - - - - textbox - Unspecified - 0 - 0 - - 89 - 181 - 163 - 214 - - - - textbox - Unspecified - 0 - 0 - - 102 - 236 - 163 - 265 - - - - textbox - Unspecified - 0 - 0 - - 191 - 74 - 269 - 107 - - - - textbox - Unspecified - 0 - 0 - - 193 - 130 - 261 - 156 - - - - textbox - Unspecified - 0 - 0 - - 194 - 181 - 259 - 210 - - - - textbox - Unspecified - 0 - 0 - - 188 - 236 - 261 - 262 - - - - checkbox - Unspecified - 0 - 0 - - 100 - 276 - 208 - 310 - - - diff --git a/source/pic2card/data/train/87.png b/source/pic2card/data/train/87.png deleted file mode 100644 index 87906e8739..0000000000 Binary files a/source/pic2card/data/train/87.png and /dev/null differ diff --git a/source/pic2card/data/train/87.xml b/source/pic2card/data/train/87.xml deleted file mode 100644 index ca49165ca7..0000000000 --- a/source/pic2card/data/train/87.xml +++ /dev/null @@ -1,86 +0,0 @@ - - dataset_final - 87.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/87.png - - Unknown - - - 406 - 193 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 9 - 5 - 161 - 27 - - - - textbox - Unspecified - 0 - 0 - - 23 - 49 - 349 - 70 - - - - checkbox - Unspecified - 0 - 0 - - 25 - 75 - 211 - 100 - - - - checkbox - Unspecified - 0 - 0 - - 26 - 107 - 244 - 130 - - - - textbox - Unspecified - 0 - 0 - - 23 - 136 - 111 - 177 - - - - textbox - Unspecified - 0 - 0 - - 112 - 136 - 184 - 174 - - - diff --git a/source/pic2card/data/train/88.png b/source/pic2card/data/train/88.png deleted file mode 100644 index 0add5ed048..0000000000 Binary files a/source/pic2card/data/train/88.png and /dev/null differ diff --git a/source/pic2card/data/train/88.xml b/source/pic2card/data/train/88.xml deleted file mode 100644 index 776e9749b8..0000000000 --- a/source/pic2card/data/train/88.xml +++ /dev/null @@ -1,218 +0,0 @@ - - dataset_final - 88.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/88.png - - Unknown - - - 904 - 519 - 3 - - 0 - - checkbox - Unspecified - 0 - 0 - - 21 - 77 - 187 - 115 - - - - checkbox - Unspecified - 0 - 0 - - 19 - 128 - 187 - 158 - - - - checkbox - Unspecified - 0 - 0 - - 17 - 170 - 217 - 209 - - - - checkbox - Unspecified - 0 - 0 - - 13 - 217 - 268 - 257 - - - - checkbox - Unspecified - 0 - 0 - - 18 - 266 - 266 - 310 - - - - checkbox - Unspecified - 0 - 0 - - 18 - 318 - 264 - 364 - - - - checkbox - Unspecified - 0 - 0 - - 19 - 372 - 322 - 422 - - - - checkbox - Unspecified - 0 - 0 - - 19 - 425 - 423 - 493 - - - - radiobutton - Unspecified - 0 - 0 - - 459 - 75 - 629 - 116 - - - - radiobutton - Unspecified - 0 - 0 - - 462 - 123 - 632 - 160 - - - - radiobutton - Unspecified - 0 - 0 - - 454 - 168 - 657 - 213 - - - - radiobutton - Unspecified - 0 - 0 - - 461 - 218 - 701 - 263 - - - - radiobutton - Unspecified - 0 - 0 - - 459 - 267 - 711 - 308 - - - - radiobutton - Unspecified - 0 - 0 - - 461 - 318 - 713 - 366 - - - - radiobutton - Unspecified - 0 - 0 - - 457 - 372 - 757 - 423 - - - - radiobutton - Unspecified - 0 - 0 - - 462 - 428 - 863 - 495 - - - - textbox - Unspecified - 0 - 0 - - 18 - 17 - 241 - 52 - - - diff --git a/source/pic2card/data/train/89.png b/source/pic2card/data/train/89.png deleted file mode 100644 index eb1d84cf93..0000000000 Binary files a/source/pic2card/data/train/89.png and /dev/null differ diff --git a/source/pic2card/data/train/89.xml b/source/pic2card/data/train/89.xml deleted file mode 100644 index f39ed2d282..0000000000 --- a/source/pic2card/data/train/89.xml +++ /dev/null @@ -1,194 +0,0 @@ - - dataset_final - 89.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/89.png - - Unknown - - - 399 - 621 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 16 - 13 - 137 - 42 - - - - textbox - Unspecified - 0 - 0 - - 13 - 50 - 228 - 136 - - - - textbox - Unspecified - 0 - 0 - - 13 - 159 - 193 - 179 - - - - textbox - Unspecified - 0 - 0 - - 25 - 192 - 88 - 215 - - - - textbox - Unspecified - 0 - 0 - - 16 - 226 - 194 - 248 - - - - textbox - Unspecified - 0 - 0 - - 20 - 257 - 93 - 278 - - - - textbox - Unspecified - 0 - 0 - - 14 - 290 - 113 - 309 - - - - textbox - Unspecified - 0 - 0 - - 25 - 321 - 142 - 343 - - - - textbox - Unspecified - 0 - 0 - - 12 - 356 - 152 - 377 - - - - textbox - Unspecified - 0 - 0 - - 25 - 383 - 109 - 410 - - - - textbox - Unspecified - 0 - 0 - - 13 - 564 - 98 - 601 - - - - checkbox - Unspecified - 0 - 0 - - 17 - 417 - 101 - 444 - - - - checkbox - Unspecified - 0 - 0 - - 15 - 445 - 132 - 471 - - - - checkbox - Unspecified - 0 - 0 - - 14 - 474 - 128 - 497 - - - - checkbox - Unspecified - 0 - 0 - - 17 - 501 - 132 - 526 - - - diff --git a/source/pic2card/data/train/9.png b/source/pic2card/data/train/9.png deleted file mode 100644 index c0b155e73a..0000000000 Binary files a/source/pic2card/data/train/9.png and /dev/null differ diff --git a/source/pic2card/data/train/9.xml b/source/pic2card/data/train/9.xml deleted file mode 100644 index eea782ca4b..0000000000 --- a/source/pic2card/data/train/9.xml +++ /dev/null @@ -1,74 +0,0 @@ - - dataset_final - 9.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/9.png - - Unknown - - - 541 - 279 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 21 - 27 - 81 - 49 - - - - textbox - Unspecified - 0 - 0 - - 20 - 53 - 189 - 89 - - - - textbox - Unspecified - 0 - 0 - - 21 - 94 - 201 - 119 - - - - textbox - Unspecified - 0 - 0 - - 18 - 128 - 347 - 188 - - - - textbox - Unspecified - 0 - 0 - - 17 - 194 - 525 - 252 - - - diff --git a/source/pic2card/data/train/90.png b/source/pic2card/data/train/90.png deleted file mode 100644 index 475248a4a1..0000000000 Binary files a/source/pic2card/data/train/90.png and /dev/null differ diff --git a/source/pic2card/data/train/90.xml b/source/pic2card/data/train/90.xml deleted file mode 100644 index 8db3c324ba..0000000000 --- a/source/pic2card/data/train/90.xml +++ /dev/null @@ -1,134 +0,0 @@ - - dataset_final - 90.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/90.png - - Unknown - - - 359 - 289 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 11 - 11 - 118 - 30 - - - - textbox - Unspecified - 0 - 0 - - 100 - 36 - 177 - 52 - - - - textbox - Unspecified - 0 - 0 - - 99 - 52 - 203 - 71 - - - - textbox - Unspecified - 0 - 0 - - 10 - 152 - 80 - 169 - - - - textbox - Unspecified - 0 - 0 - - 10 - 179 - 71 - 193 - - - - textbox - Unspecified - 0 - 0 - - 9 - 194 - 70 - 209 - - - - textbox - Unspecified - 0 - 0 - - 74 - 179 - 145 - 193 - - - - textbox - Unspecified - 0 - 0 - - 73 - 194 - 130 - 209 - - - - textbox - Unspecified - 0 - 0 - - 14 - 250 - 119 - 280 - - - - textbox - Unspecified - 0 - 0 - - 127 - 252 - 217 - 278 - - - diff --git a/source/pic2card/data/train/91.png b/source/pic2card/data/train/91.png deleted file mode 100644 index b18e1a01e6..0000000000 Binary files a/source/pic2card/data/train/91.png and /dev/null differ diff --git a/source/pic2card/data/train/91.xml b/source/pic2card/data/train/91.xml deleted file mode 100644 index ab86eba2f6..0000000000 --- a/source/pic2card/data/train/91.xml +++ /dev/null @@ -1,134 +0,0 @@ - - dataset_final - 91.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/91.png - - Unknown - - - 354 - 499 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 4 - 7 - 78 - 23 - - - - textbox - Unspecified - 0 - 0 - - 19 - 364 - 57 - 377 - - - - textbox - Unspecified - 0 - 0 - - 19 - 379 - 116 - 391 - - - - textbox - Unspecified - 0 - 0 - - 18 - 393 - 110 - 405 - - - - textbox - Unspecified - 0 - 0 - - 19 - 405 - 66 - 419 - - - - textbox - Unspecified - 0 - 0 - - 115 - 364 - 231 - 378 - - - - textbox - Unspecified - 0 - 0 - - 118 - 379 - 145 - 390 - - - - textbox - Unspecified - 0 - 0 - - 116 - 392 - 144 - 405 - - - - textbox - Unspecified - 0 - 0 - - 114 - 406 - 316 - 421 - - - - textbox - Unspecified - 0 - 0 - - 22 - 459 - 105 - 486 - - - diff --git a/source/pic2card/data/train/92.png b/source/pic2card/data/train/92.png deleted file mode 100644 index ab124f2b3d..0000000000 Binary files a/source/pic2card/data/train/92.png and /dev/null differ diff --git a/source/pic2card/data/train/92.xml b/source/pic2card/data/train/92.xml deleted file mode 100644 index ce992bcb5f..0000000000 --- a/source/pic2card/data/train/92.xml +++ /dev/null @@ -1,146 +0,0 @@ - - dataset_final - 92.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/92.png - - Unknown - - - 378 - 442 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 10 - 8 - 177 - 26 - - - - textbox - Unspecified - 0 - 0 - - 11 - 38 - 63 - 52 - - - - textbox - Unspecified - 0 - 0 - - 22 - 68 - 271 - 88 - - - - textbox - Unspecified - 0 - 0 - - 5 - 166 - 74 - 180 - - - - textbox - Unspecified - 0 - 0 - - 20 - 196 - 110 - 215 - - - - textbox - Unspecified - 0 - 0 - - 7 - 230 - 64 - 246 - - - - textbox - Unspecified - 0 - 0 - - 14 - 401 - 118 - 429 - - - - radiobutton - Unspecified - 0 - 0 - - 14 - 256 - 129 - 275 - - - - radiobutton - Unspecified - 0 - 0 - - 14 - 281 - 118 - 302 - - - - radiobutton - Unspecified - 0 - 0 - - 13 - 312 - 101 - 326 - - - - radiobutton - Unspecified - 0 - 0 - - 14 - 340 - 82 - 357 - - - diff --git a/source/pic2card/data/train/93.png b/source/pic2card/data/train/93.png deleted file mode 100644 index 75e1b7b4fa..0000000000 Binary files a/source/pic2card/data/train/93.png and /dev/null differ diff --git a/source/pic2card/data/train/93.xml b/source/pic2card/data/train/93.xml deleted file mode 100644 index 2992f9e620..0000000000 --- a/source/pic2card/data/train/93.xml +++ /dev/null @@ -1,86 +0,0 @@ - - dataset_final - 93.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/93.png - - Unknown - - - 344 - 218 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 12 - 22 - 196 - 38 - - - - textbox - Unspecified - 0 - 0 - - 14 - 180 - 83 - 204 - - - - radiobutton - Unspecified - 0 - 0 - - 15 - 48 - 119 - 63 - - - - radiobutton - Unspecified - 0 - 0 - - 17 - 70 - 132 - 86 - - - - radiobutton - Unspecified - 0 - 0 - - 15 - 95 - 89 - 112 - - - - radiobutton - Unspecified - 0 - 0 - - 15 - 120 - 107 - 136 - - - diff --git a/source/pic2card/data/train/94.png b/source/pic2card/data/train/94.png deleted file mode 100644 index 59e539605e..0000000000 Binary files a/source/pic2card/data/train/94.png and /dev/null differ diff --git a/source/pic2card/data/train/94.xml b/source/pic2card/data/train/94.xml deleted file mode 100644 index 1bf175037b..0000000000 --- a/source/pic2card/data/train/94.xml +++ /dev/null @@ -1,266 +0,0 @@ - - dataset_final - 94.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/94.png - - Unknown - - - 292 - 255 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 20 - 40 - 170 - 55 - - - - textbox - Unspecified - 0 - 0 - - 132 - 63 - 217 - 79 - - - - textbox - Unspecified - 0 - 0 - - 132 - 81 - 235 - 98 - - - - textbox - Unspecified - 0 - 0 - - 66 - 65 - 102 - 98 - - - - textbox - Unspecified - 0 - 0 - - 103 - 64 - 117 - 79 - - - - textbox - Unspecified - 0 - 0 - - 31 - 122 - 65 - 137 - - - - textbox - Unspecified - 0 - 0 - - 81 - 122 - 111 - 138 - - - - textbox - Unspecified - 0 - 0 - - 129 - 123 - 164 - 137 - - - - textbox - Unspecified - 0 - 0 - - 176 - 123 - 210 - 137 - - - - textbox - Unspecified - 0 - 0 - - 221 - 123 - 261 - 137 - - - - textbox - Unspecified - 0 - 0 - - 34 - 171 - 58 - 183 - - - - textbox - Unspecified - 0 - 0 - - 82 - 170 - 105 - 184 - - - - textbox - Unspecified - 0 - 0 - - 133 - 170 - 155 - 184 - - - - textbox - Unspecified - 0 - 0 - - 180 - 171 - 205 - 186 - - - - textbox - Unspecified - 0 - 0 - - 231 - 171 - 254 - 186 - - - - textbox - Unspecified - 0 - 0 - - 34 - 184 - 56 - 201 - - - - textbox - Unspecified - 0 - 0 - - 83 - 188 - 110 - 203 - - - - textbox - Unspecified - 0 - 0 - - 133 - 187 - 155 - 200 - - - - textbox - Unspecified - 0 - 0 - - 180 - 188 - 207 - 203 - - - - textbox - Unspecified - 0 - 0 - - 231 - 188 - 255 - 202 - - - - textbox - Unspecified - 0 - 0 - - 20 - 219 - 108 - 236 - - - diff --git a/source/pic2card/data/train/95.png b/source/pic2card/data/train/95.png deleted file mode 100644 index c6b8e53bae..0000000000 Binary files a/source/pic2card/data/train/95.png and /dev/null differ diff --git a/source/pic2card/data/train/95.xml b/source/pic2card/data/train/95.xml deleted file mode 100644 index a3240880f8..0000000000 --- a/source/pic2card/data/train/95.xml +++ /dev/null @@ -1,170 +0,0 @@ - - dataset_final - 95.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/95.png - - Unknown - - - 193 - 302 - 1 - - 0 - - textbox - Unspecified - 0 - 0 - - 21 - 22 - 112 - 36 - - - - textbox - Unspecified - 0 - 0 - - 84 - 57 - 165 - 81 - - - - textbox - Unspecified - 0 - 0 - - 86 - 83 - 180 - 96 - - - - textbox - Unspecified - 0 - 0 - - 84 - 97 - 118 - 110 - - - - textbox - Unspecified - 0 - 0 - - 84 - 126 - 173 - 150 - - - - textbox - Unspecified - 0 - 0 - - 83 - 152 - 176 - 164 - - - - textbox - Unspecified - 0 - 0 - - 22 - 179 - 67 - 191 - - - - textbox - Unspecified - 0 - 0 - - 19 - 193 - 81 - 205 - - - - textbox - Unspecified - 0 - 0 - - 21 - 213 - 64 - 226 - - - - textbox - Unspecified - 0 - 0 - - 21 - 227 - 95 - 239 - - - - textbox - Unspecified - 0 - 0 - - 20 - 240 - 144 - 255 - - - - textbox - Unspecified - 0 - 0 - - 19 - 271 - 54 - 288 - - - - textbox - Unspecified - 0 - 0 - - 132 - 267 - 181 - 289 - - - diff --git a/source/pic2card/data/train/96.png b/source/pic2card/data/train/96.png deleted file mode 100644 index cc2949740d..0000000000 Binary files a/source/pic2card/data/train/96.png and /dev/null differ diff --git a/source/pic2card/data/train/96.xml b/source/pic2card/data/train/96.xml deleted file mode 100644 index a64acce180..0000000000 --- a/source/pic2card/data/train/96.xml +++ /dev/null @@ -1,134 +0,0 @@ - - dataset_final - 96.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/96.png - - Unknown - - - 228 - 254 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 18 - 12 - 124 - 32 - - - - textbox - Unspecified - 0 - 0 - - 81 - 64 - 180 - 78 - - - - textbox - Unspecified - 0 - 0 - - 81 - 80 - 114 - 94 - - - - textbox - Unspecified - 0 - 0 - - 16 - 117 - 68 - 130 - - - - textbox - Unspecified - 0 - 0 - - 16 - 130 - 81 - 145 - - - - textbox - Unspecified - 0 - 0 - - 17 - 153 - 58 - 167 - - - - textbox - Unspecified - 0 - 0 - - 16 - 168 - 99 - 182 - - - - textbox - Unspecified - 0 - 0 - - 15 - 183 - 147 - 201 - - - - textbox - Unspecified - 0 - 0 - - 14 - 218 - 49 - 233 - - - - textbox - Unspecified - 0 - 0 - - 170 - 216 - 213 - 235 - - - diff --git a/source/pic2card/data/train/97.png b/source/pic2card/data/train/97.png deleted file mode 100644 index 742b9e23c1..0000000000 Binary files a/source/pic2card/data/train/97.png and /dev/null differ diff --git a/source/pic2card/data/train/97.xml b/source/pic2card/data/train/97.xml deleted file mode 100644 index ccc76a4056..0000000000 --- a/source/pic2card/data/train/97.xml +++ /dev/null @@ -1,74 +0,0 @@ - - dataset_final - 97.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/97.png - - Unknown - - - 252 - 243 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 21 - 131 - 113 - 144 - - - - textbox - Unspecified - 0 - 0 - - 19 - 147 - 102 - 161 - - - - textbox - Unspecified - 0 - 0 - - 22 - 161 - 65 - 176 - - - - textbox - Unspecified - 0 - 0 - - 21 - 176 - 104 - 191 - - - - textbox - Unspecified - 0 - 0 - - 70 - 204 - 173 - 228 - - - diff --git a/source/pic2card/data/train/98.png b/source/pic2card/data/train/98.png deleted file mode 100644 index b3825d3f63..0000000000 Binary files a/source/pic2card/data/train/98.png and /dev/null differ diff --git a/source/pic2card/data/train/98.xml b/source/pic2card/data/train/98.xml deleted file mode 100644 index 9700571b16..0000000000 --- a/source/pic2card/data/train/98.xml +++ /dev/null @@ -1,110 +0,0 @@ - - dataset_final - 98.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/98.png - - Unknown - - - 525 - 334 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 130 - 22 - 381 - 53 - - - - textbox - Unspecified - 0 - 0 - - 127 - 61 - 350 - 86 - - - - textbox - Unspecified - 0 - 0 - - 124 - 99 - 190 - 119 - - - - textbox - Unspecified - 0 - 0 - - 12 - 183 - 506 - 278 - - - - textbox - Unspecified - 0 - 0 - - 13 - 286 - 80 - 318 - - - - textbox - Unspecified - 0 - 0 - - 98 - 285 - 209 - 319 - - - - textbox - Unspecified - 0 - 0 - - 228 - 290 - 300 - 319 - - - - textbox - Unspecified - 0 - 0 - - 329 - 288 - 383 - 319 - - - diff --git a/source/pic2card/data/train/99.png b/source/pic2card/data/train/99.png deleted file mode 100644 index 5195897ba2..0000000000 Binary files a/source/pic2card/data/train/99.png and /dev/null differ diff --git a/source/pic2card/data/train/99.xml b/source/pic2card/data/train/99.xml deleted file mode 100644 index 3198d58347..0000000000 --- a/source/pic2card/data/train/99.xml +++ /dev/null @@ -1,98 +0,0 @@ - - dataset_final - 99.png - /home/keerthanamanoharan/Documents/office_work/Pic2Code/dataset_final/99.png - - Unknown - - - 542 - 285 - 3 - - 0 - - textbox - Unspecified - 0 - 0 - - 23 - 22 - 79 - 46 - - - - textbox - Unspecified - 0 - 0 - - 23 - 46 - 102 - 67 - - - - textbox - Unspecified - 0 - 0 - - 23 - 68 - 200 - 92 - - - - textbox - Unspecified - 0 - 0 - - 22 - 99 - 348 - 160 - - - - radiobutton - Unspecified - 0 - 0 - - 22 - 173 - 135 - 195 - - - - radiobutton - Unspecified - 0 - 0 - - 22 - 196 - 136 - 219 - - - - checkbox - Unspecified - 0 - 0 - - 23 - 227 - 200 - 255 - - - diff --git a/source/pic2card/docker/Dockerfile b/source/pic2card/docker/Dockerfile deleted file mode 100644 index 53479ade48..0000000000 --- a/source/pic2card/docker/Dockerfile +++ /dev/null @@ -1,69 +0,0 @@ -# -# Mystique App docker. -# -# Mystique make use of the rcnn based model to do the object detection, here -# we are employing two optional methods of accessing the models for prediction. -# 1. Model is embedded inside the docker itself, or as frozen model. -# 2. The model will be deployed in tf_serving service outside this service, -# we access that api from here. -# -# Both has it's pros and cons, so we will use based on which fits at particular -# usecase at hand. -# -# -ARG TARGET_API=frozen_graph - -## TFS base stage -FROM python:3.7.9-slim-buster as tfs -ADD requirements/requirements.txt /app/requirements.txt - -## Embeded model with service stage. -FROM python:3.7.9-slim-buster as frozen_graph -# Fill in both, as in this case we need both dependencies. -ADD requirements/requirements-frozen_graph.txt /app/ -ADD requirements/requirements.txt /app/ -RUN printf "\n" >> /app/requirements.txt -RUN cat /app/requirements-frozen_graph.txt >> /app/requirements.txt -COPY model/frozen_inference_graph.pb /app/model/ - -## Temp stage to keep project files -FROM $TARGET_API AS build -COPY app /app/app -COPY mystique /app/mystique - -## Main Docker Image -FROM python:3.7.9-slim-buster - -# build args scoped inside current from block -# When building for frozen model disable it. -ARG tfs_enable= -ARG COMMIT_SHA= -ARG BRANCH_NAME= - -ENV ENABLE_TF_SERVING=$tfs_enable -ENV COMMIT_SHA=$COMMIT_SHA -ENV BRANCH_NAME=$BRANCH_NAME -ENV TF_SERVING_URL=http://172.17.0.5:8501 \ - TF_SERVING_MODEL_NAME=mystique \ - PIP_DEFAULT_TIMEOUT=1000 \ - PORT=5050 -COPY --from=build /app /app -WORKDIR /app - -RUN pip install --upgrade pip && \ - apt-get update && \ - apt-get install -y --no-install-recommends libsm6 tesseract-ocr gcc && \ - apt-get clean &&\ - rm -rf /var/lib/apt/lists/* && \ - echo "$COMMIT_SHA" > /app/git_commit.md5 && \ - echo "$BRANCH_NAME" > /app/git_branch_name.txt - -RUN pip install -r requirements.txt && \ - rm -rf /root/.cache/pip && \ - echo '#!/bin/bash \n\n\ - gunicorn -w 2 -b 0.0.0.0:$PORT app.api:app \ - "$@"' >> /usr/local/bin/entrypoint.sh &&\ - chmod +x /usr/local/bin/entrypoint.sh - -EXPOSE $PORT -ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] diff --git a/source/pic2card/docker/Dockerfile-detr b/source/pic2card/docker/Dockerfile-detr deleted file mode 100644 index 5dd7427865..0000000000 --- a/source/pic2card/docker/Dockerfile-detr +++ /dev/null @@ -1,44 +0,0 @@ -# Docker Image with detr model loaded. -# -FROM python:3.8.5-alpine3.12 as base -ADD requirements/requirements.txt /app/requirements.txt -ADD requirements/torch-cpu.txt /app/torch-cpu.txt -RUN cat /app/torch-cpu.txt >> /app/requirements.txt -COPY model/pth_models/detr_trace.pt /app/model/pth_models/ -COPY app /app/app -COPY mystique /app/mystique - - -FROM python:3.8.5-slim-buster - -ARG COMMIT_SHA= -ARG BRANCH_NAME= - -COPY --from=base /app /pic2card -WORKDIR /pic2card - -ENV COMMIT_SHA=$COMMIT_SHA -ENV BRANCH_NAME=$BRANCH_NAME -ENV PORT=5050 \ - ACTIVE_MODEL_NAME=pth_detr \ - PIP_DEFAULT_TIMEOUT=1000 - -RUN pip install --upgrade pip && \ - apt-get update && \ - apt-get install -y --no-install-recommends libsm6 tesseract-ocr && \ - # libopencv-core-dev libopencv-imgproc-dev g++ && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* && \ - echo "$COMMIT_SHA" > /app/git_commit.md5 && \ - echo "$BRANCH_NAME" > /app/git_branch_name.txt - -RUN pip install -r requirements.txt && \ - #python mystique/models/pth/detr_cpp/setup.py install && \ - rm -rf /root/.cache/pip && \ - echo '#!/bin/bash \n\n\ - gunicorn -w 2 -b 0.0.0.0:$PORT app.api:app \ - "$@"' >> /usr/local/bin/entrypoint.sh &&\ - chmod +x /usr/local/bin/entrypoint.sh - -EXPOSE $PORT -ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] diff --git a/source/pic2card/docker/Dockerfile-tf_serving b/source/pic2card/docker/Dockerfile-tf_serving deleted file mode 100644 index 2a14a91316..0000000000 --- a/source/pic2card/docker/Dockerfile-tf_serving +++ /dev/null @@ -1,24 +0,0 @@ -FROM tensorflow/serving - -LABEL author="Haridas N" -LABEL description="Pic2Card model exposed via tf-serving apis" - -ENV MODEL_BASE_PATH=/models/ -ENV MODEL_NAME=mystique - -# Ensure the saved_model paresent under data folder, which was generated from -# the export_inference_graph.py object detection command. -COPY ./model/saved_model/ $MODEL_BASE_PATH/$MODEL_NAME/1 - -EXPOSE 8501 - -# Create a script that runs the model server so we can use environment variables -# while also passing in arguments from the docker command line -# Also, wrapping the tf-server process with bash helps for better signal handling. -RUN echo '#!/bin/bash \n\n\ - tensorflow_model_server --port=8500 --rest_api_port=8501 \ - --model_name=${MODEL_NAME} --model_base_path=${MODEL_BASE_PATH}/${MODEL_NAME} \ - "$@"' > /usr/bin/tf_serving_entrypoint.sh \ - && chmod +x /usr/bin/tf_serving_entrypoint.sh - -ENTRYPOINT ["/usr/bin/tf_serving_entrypoint.sh"] diff --git a/source/pic2card/images/architecture.png b/source/pic2card/images/architecture.png deleted file mode 100644 index a78f0ffe5d..0000000000 Binary files a/source/pic2card/images/architecture.png and /dev/null differ diff --git a/source/pic2card/images/pic2card.png b/source/pic2card/images/pic2card.png deleted file mode 100644 index 89164fc06f..0000000000 Binary files a/source/pic2card/images/pic2card.png and /dev/null differ diff --git a/source/pic2card/images/working1.jpg b/source/pic2card/images/working1.jpg deleted file mode 100644 index efd7a39f33..0000000000 Binary files a/source/pic2card/images/working1.jpg and /dev/null differ diff --git a/source/pic2card/images/working2.png b/source/pic2card/images/working2.png deleted file mode 100644 index f5984c7322..0000000000 Binary files a/source/pic2card/images/working2.png and /dev/null differ diff --git a/source/pic2card/model/frozen_inference_graph.pb b/source/pic2card/model/frozen_inference_graph.pb deleted file mode 100644 index 7a8f66b677..0000000000 Binary files a/source/pic2card/model/frozen_inference_graph.pb and /dev/null differ diff --git a/source/pic2card/mystique/__init__.py b/source/pic2card/mystique/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/source/pic2card/mystique/ac_export/adaptive_card_export.py b/source/pic2card/mystique/ac_export/adaptive_card_export.py deleted file mode 100644 index 4cfc97a927..0000000000 --- a/source/pic2card/mystique/ac_export/adaptive_card_export.py +++ /dev/null @@ -1,103 +0,0 @@ -"""Module takes care for the exporting of the extracted - design objects extracted to the expected renderer format""" -# pylint: disable=relative-beyond-top-level - -from typing import List, Dict, Union - -from PIL import Image - -from mystique.card_layout.ds_helper import DsHelper, ContainerDetailTemplate -from mystique.extract_properties import ContainerProperties -from mystique.card_layout import property_updates -from .adaptive_card_templates import AdaptiveCardTemplate -from .export_helper import AcContainerExport - - -def export_to_card(card_layout: List[Dict], pil_image: Image) -> List[Dict]: - """ - Returns the exported adaptive card design body. - @param card_layout: Generated hierarchical layout structure. - @param pil_image: Input design image - @return: Exported adaptive card json body - """ - export_card = AdaptiveCardExport() - container_details_object = ContainerDetailTemplate() - # update the extracted properties - card_layout = property_updates.update_properties( - card_layout, container_details_object, pil_image - ) - # extract the general container's properties - container_properties = ContainerProperties(pil_image=pil_image) - card_layout = container_properties.get_container_properties( - card_layout, pil_image, container_details_object - ) - # convert it to adaptive card format - body = export_card.build_adaptive_card(card_layout) - return body - - -class AdaptiveCardExport: - """ - Module to export the generalized layout structure to the target platform. - """ - - def __init__(self): - """ - Initializes the target GUI needed components - """ - self.body = [] - self.card_layout = [] - self.object_template = AdaptiveCardTemplate() - self.container_detail = ContainerDetailTemplate() - - def export_card_body( - self, body: List[Dict], design_object: Union[List, Dict] - ) -> None: - """ - Recursively generates the adaptive card's body - from the layout structure. - @param body: adaptive card json body - @param design_object: design objects from the layout structure - """ - if ( - isinstance(design_object, dict) - and design_object.get("object", "") not in DsHelper.CONTAINERS - ): - template_object = getattr( - self.object_template, design_object.get("object", "") - ) - card_template = template_object(design_object) - if ( - body - and design_object.get("object") == "radiobutton" - and body[-1].get("type") == "Input.ChoiceSet" - ): - body[-1]["choices"].append(card_template["choices"][0]) - else: - body.append(card_template) - elif isinstance(design_object, list): - for design_obj in design_object: - self.export_card_body(body, design_obj) - else: - ac_containers = AcContainerExport(design_object, self) - ac_containers_object = getattr( - ac_containers, design_object.get("object", "") - ) - ac_containers_object(body) - - def build_adaptive_card(self, card_layout: List[Dict]) -> List: - """ - Returns the exported adaptive card json - @param card_layout: the generalized layout structure - @return: adaptive card json body - """ - - self.export_card_body(self.body, card_layout) - y_minimum_final = [c.get("coordinates")[1] for c in card_layout] - body = [ - value - for _, value in sorted( - zip(y_minimum_final, self.body), key=lambda value: value[0] - ) - ] - return body diff --git a/source/pic2card/mystique/ac_export/adaptive_card_templates.py b/source/pic2card/mystique/ac_export/adaptive_card_templates.py deleted file mode 100644 index ea28f05187..0000000000 --- a/source/pic2card/mystique/ac_export/adaptive_card_templates.py +++ /dev/null @@ -1,196 +0,0 @@ -"""Maintains the design templates for the different adaptive card design -element type""" -# pylint: disable=no-self-use -from typing import Dict - - -class AdaptiveCardTemplate: - """ - Design template class for the design objects. - """ - - def textbox(self, design_object: Dict) -> Dict: - """ - Returns the design json for the textbox - @param: design element - @return: design object - """ - return { - "type": "TextBlock", - "text": design_object.get("data", ""), - "size": design_object.get("size", ""), - "horizontalAlignment": design_object.get( - "horizontal_alignment", "" - ), - "color": design_object.get("color", "Default"), - "weight": design_object.get("weight", ""), - "wrap": "true", - } - - def actionset(self, design_object: Dict) -> Dict: - """ - Returns the design json for the actionset - @param: design element - @return: design object - """ - return { - "type": "ActionSet", - # "separator": "true", # Issue in data binding if - # separator is set to True - "actions": [ - { - "type": "Action.Submit", - "title": design_object.get("data"), - "style": design_object.get("style"), - } - ], - "spacing": "Medium", - "horizontalAlignment": design_object.get( - "horizontal_alignment", "" - ), - } - - def image(self, design_object: Dict) -> Dict: - """ - Returns the design json for the image - @param: design element - @return: design object - """ - return { - "type": "Image", - "altText": "Image", - "horizontalAlignment": design_object.get( - "horizontal_alignment", "" - ), - "size": design_object.get("size"), - "url": design_object.get("data"), - } - - def checkbox(self, design_object: Dict) -> Dict: - """ - Returns the design json for the checkbox - @param: design element - @return: design object - """ - return { - "type": "Input.Toggle", - "title": design_object.get("data", ""), - "horizontalAlignment": design_object.get( - "horizontal_alignment", "" - ), - } - - def richtextbox(self, design_object: Dict) -> Dict: - """ - Returns the design json for the richtextbox - @param: design element - @return: design object - """ - return { - "type": "RichTextBlock", - "inlines": [ - { - "type": "TextRun", - "text": design_object.get("data", ""), - "size": design_object.get("size", ""), - "horizontalAlignment": design_object.get( - "horizontal_alignment", "" - ), - "color": design_object.get("color", "Default"), - "weight": design_object.get("weight", ""), - } - ], - } - - def radiobutton(self, design_object: Dict) -> Dict: - """ - Returns the design json for the radiobutton - @param: design element - @return: design object - """ - choice_set = { - "type": "Input.ChoiceSet", - "choices": [], - "style": "expanded", - } - if isinstance(design_object, list): - for design_obj in design_object: - item = { - "title": design_obj.get("data", ""), - "value": "", - "horizontalAlignment": design_obj.get( - "horizontal_alignment", "" - ), - } - choice_set["choices"].append(item) - else: - item = { - "title": design_object.get("data", ""), - "value": "", - "horizontalAlignment": design_object.get( - "horizontal_alignment", "" - ), - } - choice_set["choices"].append(item) - # choice_set = item - - return choice_set - - def columnset(self, design_object: Dict) -> Dict: - """ - Returns the design json for the column set container - @param: design element - @return: design object - """ - return { - "type": "ColumnSet", - "columns": [], - "horizontalAlignment": design_object.get( - "horizontal_alignment", "" - ), - } - - def column(self, design_object: Dict) -> Dict: - """ - Returns the design json for the column of the column set container - @param: design element - @return: design object - """ - return { - "type": "Column", - "width": design_object.get("width", ""), - "items": [], - "horizontalAlignment": design_object.get( - "horizontal_alignment", "" - ), - } - - def imageset(self, design_object: Dict) -> Dict: - """ - Returns the design json for the image set container - @param: design element - @return: design object - """ - return { - "type": "ImageSet", - "imageSize": design_object.get("size", ""), - "images": [], - "horizontalAlignment": design_object.get( - "horizontal_alignment", "" - ), - } - - def choiceset(self, design_object: Dict) -> Dict: - """ - Returns the design json for the choice set container - @param: design element - @return: design object - """ - return { - "type": "Input.ChoiceSet", - "choices": [], - "style": "expanded", - "horizontalAlignment": design_object.get( - "horizontal_alignment", "" - ), - } diff --git a/source/pic2card/mystique/ac_export/card_template_data.py b/source/pic2card/mystique/ac_export/card_template_data.py deleted file mode 100644 index edff9a7d59..0000000000 --- a/source/pic2card/mystique/ac_export/card_template_data.py +++ /dev/null @@ -1,212 +0,0 @@ -"""Module to generate data binding payload for the card design payload""" -from typing import Dict, List -from collections import OrderedDict - - -class DataBinding: - """ - Class separates the card design object's data from the card paylaod - by building a mapping data payload json - """ - - # pylint: disable=no-self-use - def group_imagesets( - self, design_object: Dict, key_dict: Dict, root_elements: str - ): - """ - Update Imagset data with grouped image data. - @param design_object: The deisgn obeject with the template data to be - grouped - @param key_dict: Dict where the design object should be grouped - @param root_elements: The json path of the deisgn object's position - """ - key_dict["ImageSet"] = {} - # extract the template data and variable mapping name for each image - # inside an imageset - for ctr, image in enumerate(design_object.get("images")): - print(ctr) - key_dict["ImageSet"].update( - {"Image" + str(ctr + 1): image.get("url", "")} - ) - # update the design_object with the binding variable - design_object["images"][ctr]["url"] = ( - root_elements + "ImageSet.Image" + str(ctr + 1) + "}" - ) - - # pylint: disable=no-self-use - def group_choicesets( - self, design_object: Dict, key_dict: Dict, root_elements: str - ): - """ - Update Choiceset data with grouped choices data. - @param design_object: The deisgn obeject with the template data to be - grouped - @param key_dict: Dict where the design object should be grouped - @param root_elements: The json path of the deisgn object's position - """ - choiceset_number = len( - [ - key[-1] - for key in list(key_dict.keys()) - if "InputChoiceSet" in key - ] - ) - choiceset_number = "InputChoiceSet" + str(choiceset_number + 1) - key_dict[choiceset_number] = {} - # extract template data and variable mapping for each choice inside - # a choice set - for choice_ctr, choice in enumerate(design_object.get("choices", [""])): - key_dict[choiceset_number].update( - {"choice" + str(choice_ctr + 1): choice.get("title", "")} - ) - # update the design_object with the binding variable - design_object["choices"][choice_ctr]["title"] = ( - root_elements - + choiceset_number - + ".choice" - + str(choice_ctr + 1) - + "}" - ) - - # pylint: disable=no-self-use - def group_text_and_image( - self, design_object: Dict, key_dict: Dict, root_elements: str - ): - """ - Update Individual image and text objects to the template data json. - @param design_object: The deisgn obeject with the template data to be - grouped - @param key_dict: Dict where the design object should be grouped - @param root_elements: The json path of the deisgn object's position - """ - object_type = design_object.get("type", "").replace(".", "") - object_number = len( - [key[-1] for key in list(key_dict.keys()) if object_type in key] - ) - # extract the template data and variable name mapping - key_dict.update( - { - design_object.get("type", "") - + str(object_number + 1): ( - design_object.get( - "text", - design_object.get("inlines", [{}])[0].get( - "text", design_object.get("url", "") - ), - ) - ) - } - ) - template_variable = ( - root_elements - + design_object.get("type", "") - + str(object_number + 1) - + "}" - ) - # update the design_object with the binding variable - if "text" in list(design_object.keys()): - design_object["text"] = template_variable - elif "inlines" in list(design_object.keys()): - design_object["inlines"][0]["text"] = template_variable - else: - design_object["url"] = template_variable - - # pylint: disable=no-self-use - def group_actionset_and_inputtoogle( - self, design_object: Dict, key_dict: Dict, root_elements: str - ): - """ - Update Individual actionsets and input toogle objects to the template - data json. - - @param design_object: The deisgn obeject with the template data to be - grouped - @param key_dict: Dict where the design object should be grouped - @param root_elements: The json path of the deisgn object's position - """ - object_type = design_object.get("type", "").replace(".", "") - object_number = len( - [key[-1] for key in list(key_dict.keys()) if object_type in key] - ) - text_label = "Text" + str(object_number + 1) - object_number = object_type + str(object_number + 1) - key_dict[object_number] = {} - # extract template data and variable mapping - key_dict[object_number].update( - { - text_label: ( - design_object.get("actions", [{}])[0].get( - "title", design_object.get("title", "") - ) - ) - } - ) - template_variable = ( - root_elements + object_number + "." + text_label + "}" - ) - # update the design_object with the binding variable - if "actions" in list(design_object.keys()): - design_object["actions"][0]["title"] = template_variable - else: - design_object["title"] = template_variable - - def group_elements( - self, design_object: Dict, key_dict: Dict, root_elements: str - ): - """ - Groups the template data objects in card payload's format - - @param design_object: The deisgn obeject with the template data to be - grouped - @param key_dict: Dict where the design object should be grouped - @param root_elements: The json path of the deisgn object's position - """ - if design_object.get("type", "") in [ - "TextBlock", - "RichTextBlock", - "Image", - ]: - self.group_text_and_image(design_object, key_dict, root_elements) - if design_object.get("type", "") == "ImageSet": - self.group_imagesets(design_object, key_dict, root_elements) - - if design_object.get("type", "") in ["ActionSet", "Input.Toggle"]: - self.group_actionset_and_inputtoogle( - design_object, key_dict, root_elements - ) - - if design_object.get("type", "") == "Input.ChoiceSet": - self.group_choicesets(design_object, key_dict, root_elements) - - def build_data_binding_payload(self, objects: List[Dict]): - """ - Build the data binding payload from the design objects - - @param objects: list of deisgn objects - - @return: data binding payload json - """ - grouped_objects = OrderedDict() - column_set_number = 0 - for ctr, obj in enumerate(objects): # pylint: disable=unused-variable - if obj.get("type", "") == "ColumnSet": - column_set_number += 1 - grouped_objects["ColumnSet" + str(column_set_number)] = [] - for column_ctr, column in enumerate(obj.get("columns", [""])): - columns = {} - for _, item in enumerate(column.get("items", [""])): - root_elements = ( - "${$root.ColumnSet" - + str(column_set_number) - + "[" - + str(column_ctr) - + "]." - ) - - self.group_elements(item, columns, root_elements) - grouped_objects[ - "ColumnSet" + str(column_set_number) - ].append(columns) - else: - self.group_elements(obj, grouped_objects, "${$root.") - return grouped_objects, objects diff --git a/source/pic2card/mystique/ac_export/export_helper.py b/source/pic2card/mystique/ac_export/export_helper.py deleted file mode 100644 index 91bd229fe7..0000000000 --- a/source/pic2card/mystique/ac_export/export_helper.py +++ /dev/null @@ -1,71 +0,0 @@ -"""Module maintains the needed design and exporting templates and utilities - for target rendering""" -from .adaptive_card_templates import AdaptiveCardTemplate - - -class AcContainerExport: - """ - This class is responsible for calling the appropriate design templates - for the container structure. - """ - - def __init__(self, design_object, export_object): - self.design_object = design_object - self.export_object = export_object - self.object_template = AdaptiveCardTemplate() - - def columnset(self, body) -> None: - """ - Returns the design element template for the column-set container - @param body: design element's layout structure - """ - template_object = getattr( - self.object_template, self.design_object.get("object", "") - ) - body.append(template_object(self.design_object)) - body = body[-1].get("columns", []) - self.export_object.export_card_body( - body, self.design_object.get("row", []) - ) - - def column(self, body) -> None: - """ - Returns the design element template for the column container - @param body: design element's layout structure - """ - template_object = getattr( - self.object_template, self.design_object.get("object", "") - ) - body.append(template_object(self.design_object)) - body = body[-1].get("items", []) - self.export_object.export_card_body( - body, self.design_object.get("column", {}).get("items", []) - ) - - def imageset(self, body) -> None: - """ - Returns the design element template for the image-set container - @param body: design element's layout structure - """ - template_object = getattr( - self.object_template, self.design_object.get("object", "") - ) - body.append(template_object(self.design_object)) - body = body[-1].get("images", []) - self.export_object.export_card_body( - body, self.design_object.get("imageset", {}).get("items", []) - ) - - def choiceset(self, body) -> None: - """ - Returns the design element template for the choice-set container - @param body: design element's layout structure - """ - template_object = getattr( - self.object_template, self.design_object.get("object", "") - ) - body.append(template_object(self.design_object)) - # body = body[-1].get("choices", []) - self.export_object.export_card_body( - body, self.design_object.get("choiceset", {}).get("items", []) - ) diff --git a/source/pic2card/mystique/card_layout/bbox_utils.py b/source/pic2card/mystique/card_layout/bbox_utils.py deleted file mode 100644 index 7facfd5a67..0000000000 --- a/source/pic2card/mystique/card_layout/bbox_utils.py +++ /dev/null @@ -1,139 +0,0 @@ -"""Handles the functionalities based on the collected design object's bbox -- IOU finding -- nosie objects [ i.e overlapping objects ] removal -""" -from typing import List, Dict, Union - - -def find_iou(coord1, coord2, threshold=0.5) -> List: - """ - Finds the intersecting bounding boxes by finding - the highest x and y ranges of the 2 coordinates - and determine the intersection by deciding weather - the new xmin > xmax or the new ymin > ymax. - For non image objects, includes finding the intersection - area to a threshold to determine intersection - - @param coord1: list of coordinates of 1st object - @param coord2: list of coordinates of 2nd object - @param threshold: IOU cut-off threshold - @return: [True/False, point1 area, point2 area] - """ - iou_xmin = max(coord1[0], coord2[0]) - iou_ymin = max(coord1[1], coord2[1]) - iou_xmax = min(coord1[2], coord2[2]) - iou_ymax = min(coord1[3], coord2[3]) - - # no intersection - if iou_xmax - iou_xmin <= 0 or iou_ymax - iou_ymin <= 0: - return [False] - - intersection_area = (iou_xmax - iou_xmin) * (iou_ymax - iou_ymin) - point1_area = (coord1[2] - coord1[0]) * (coord1[3] - coord1[1]) - point2_area = (coord2[2] - coord2[0]) * (coord2[3] - coord2[1]) - iou = intersection_area / (point1_area + point2_area - intersection_area) - - # check for iou >= threshold - # -if the intersection area covers more than 50% of the smaller object - - # pylint: disable=too-many-boolean-expressions - if ( - (point1_area + point2_area - intersection_area == 0) - or (iou >= threshold) - or ( - iou <= threshold - and (intersection_area / min(point1_area, point2_area)) >= 0.50 - ) - ): # pylint: disable=too-many-boolean-expressions - return [True, point1_area, point2_area] - - return [False] - - -# pylint: disable=too-many-arguments, inconsistent-return-statements -def remove_actionset_textbox_overlapping( - design_object1: Dict, - design_object2: Dict, - box1: List[float], - box2: List[float], - position1: int, - position2: int, -) -> Union[int, None]: - """ - If the passed 2 design objects are actionset and textbox, then - returns the position to remove the textboxes detected inside the - actionset objects. - @param design_object1: design object 1 - @param design_object2: design object 1 - @param box2: design object 1's coordinates - @param box1: design object 1's coordinates - @param position1: design object 1's position - @param position2: design object 2's position - @return: Returns the position if overlaps else returns None - """ - # TODO: This workaround will be removed once the model is able to - # differentiate the text-boxes and action-sets efficiently. - if ( - len( - {design_object1.get("object", ""), design_object2.get("object", "")} - & {"actionset", "textbox"} - ) - == 2 - ): - contains = (box2[0] <= box1[0] <= box2[2]) and ( - box2[1] <= box1[1] <= box2[3] - ) - intersection = find_iou(box1, box2, threshold=0.0) - if contains or intersection[0]: - if design_object1.get("object") == "textbox": - return position1 - return position2 - return None - - -def remove_noise_objects(predicted_objects: Dict): - """ - Removes all noisy objects by eliminating all smaller and intersecting - objects within / with the bigger objects. - @param predicted_objects: list of detected objects. - """ - points = [] - for deisgn_object in predicted_objects["objects"]: - points.append(deisgn_object.get("coordinates")) - positions_to_delete = [] - for ctr, point in enumerate(points): - box1 = point - for ctr1 in range(ctr + 1, len(points)): - box2 = points[ctr1] - # check if there's a textbox vs actionset overlap - # remove the textbox - position = remove_actionset_textbox_overlapping( - predicted_objects["objects"][ctr], - predicted_objects["objects"][ctr1], - box1, - box2, - ctr, - ctr1, - ) - if position: - positions_to_delete.append(position) - else: - iou = find_iou(box1, box2) - if iou[0]: - box1_area = iou[1] - box2_area = iou[2] - if ( - box1_area > box2_area - and ctr1 not in positions_to_delete - ): - positions_to_delete.append(ctr1) - elif ctr not in positions_to_delete: - positions_to_delete.append(ctr) - points = [ - p for ctr, p in enumerate(points) if ctr not in positions_to_delete - ] - predicted_objects["objects"] = [ - deisgn_object - for deisgn_object in predicted_objects["objects"] - if deisgn_object.get("coordinates") in points - ] diff --git a/source/pic2card/mystique/card_layout/container_group.py b/source/pic2card/mystique/card_layout/container_group.py deleted file mode 100644 index 8438ef9f3f..0000000000 --- a/source/pic2card/mystique/card_layout/container_group.py +++ /dev/null @@ -1,374 +0,0 @@ -"""Module responsible for merging the same type items into it's respective -containers like image-set[images], choice-set[radio-buttons]. This merging -criteria is checked for both root level and column level elements """ -from operator import itemgetter -from typing import List, Dict, Union, Tuple - -# pylint: disable=relative-beyond-top-level -import pandas as pd - -from .ds_helper import DsHelper, ContainerTemplate, ContainerDetailTemplate - - -class ContainerGroup: - """ - Helps in grouping a set of similar design elements inside a column of - or in the root level of the card layout design - """ - - container_detail = ContainerDetailTemplate() - merged_layout = [] - - # pylint: disable=no-self-use - def collect_items_for_container( - self, card_layout: List[Dict], object_class: int - ) -> [List, List]: - """ - Gets the list of individual design items of a given type of container - from the passed layout structure. - @param card_layout: Container of design elements - @param object_class: type of the design elements to be returned - - @return: The list design elements of given type and the list of - other elements inside the passed container - """ - items = [] - for design_object in card_layout: - if design_object.get("class", 0) == object_class: - items.append(design_object) - remaining_items = [ - design_object - for design_object in card_layout - if design_object not in items - ] - return items, remaining_items - - def add_merged_items( - self, design_items: List[Dict], card_layout: List[Dict], payload: Dict - ) -> List[Dict]: - """ - Returns the grouped layout structure for the given grouping object type - @param design_items: list of design items to be grouped. - @param card_layout: the container structure where the design - elements needs to be grouped - @param payload: merging payload - @return: The new layout structure after grouping - """ - object_type = payload["grouping_type"] - grouping_object = payload["grouping_object"] - grouping_condition = payload["grouping_condition"] - - container_items = grouping_object.object_grouping( - design_items, grouping_condition - ) - ds_template = DsHelper() - for items in container_items: - if len(items["objects"]) > 1: - ds_template.add_element_to_ds( - object_type, card_layout, coords=items["coordinates"] - ) - coordinates = [] - sub_layout = card_layout[-1][object_type] - sub_layout_values = sub_layout.values() - - key = list(sub_layout)[ - list(sub_layout_values).index( - list( - filter( - lambda ele: isinstance(ele, list), - sub_layout_values, - ) - )[0] - ) - ] - for item in items["objects"]: - card_layout[-1][object_type][key].append(item) - coordinates.append(item.get("coordinates", [])) - - card_layout = [ - item for item in card_layout if item not in items["objects"] - ] - return card_layout - - def _column_items_to_merge(self, column_items: List, payload: Dict) -> List: - """ - Iterate through the column items and merge the items with the passed - object class as the respective container type. - @param column_items: List of column items - @param payload: Merging payload - @return: List of updated column items - """ - object_class = payload["object_class"] - order_key = payload["order_key"] - - items, remaining_items = self.collect_items_for_container( - column_items, object_class - ) - if items: - # order the container elements based on the order_key - items = [ - value - for _, value in sorted( - zip( - list(zip(*pd.DataFrame(items)["coordinates"]))[ - order_key - ], - items, - ), - key=lambda value: value[0], - ) - ] - updated_column_items = self.add_merged_items( - items, column_items, payload - ) - if updated_column_items: - updated_column_items = [ - value - for _, value in sorted( - zip( - list( - zip( - *pd.DataFrame(updated_column_items)[ - "coordinates" - ] - ) - )[1], - updated_column_items, - ), - key=lambda value: value[0], - ) - ] - if remaining_items: - self.merge_column_items(updated_column_items, payload) - return updated_column_items - - # pylint: disable=inconsistent-return-statements - def merge_column_items( - self, card_layout: List[Dict], payload: Dict - ) -> Union[None, List]: - """ - Calls the object grouping for list of design element inside a particular - column. - @param card_layout: the generated layout structure - @param payload: merging payload - @return: List of merged elements - """ - if ( - isinstance(card_layout, dict) - and card_layout.get("object", "") == "columnset" - ): - container_details_template_object = getattr( - self.container_detail, card_layout.get("object", "") - ) - columns = container_details_template_object(card_layout) - self.merge_column_items(columns, payload) - - elif isinstance(card_layout, list): - for design_obj in card_layout: - self.merge_column_items(design_obj, payload) - return self.merged_layout - elif ( - isinstance(card_layout, dict) - and card_layout.get("object", "") == "column" - ): - container_details_template_object = getattr( - self.container_detail, card_layout.get("object", "") - ) - column_items = container_details_template_object(card_layout) - column_items = self._column_items_to_merge(column_items, payload) - card_layout["column"]["items"] = column_items - self.merged_layout.append(card_layout) - else: - self.merged_layout.append(card_layout) - - def _extract_image_data(self, design_object: Dict) -> Tuple[List, List]: - """ - Extract the single element [image] info from the passed column-set - design object - @param design_object: any column-set design object - @return: the extracted column-wise image data - """ - imageset_data = [] - column_wise_imageset_data = [] - to_remove = [] - for ctr, column in enumerate(design_object["row"]): - current_column_types = [] - current_column_data = [] - for item in column["column"]["items"]: - current_column_types.append(item["object"]) - current_column_data.append(item) - compare_column_types = [] - if ctr + 1 < len(design_object["row"]): - compare_column_types = [ - item["object"] - for item in design_object["row"][ctr + 1]["column"]["items"] - ] - elif ctr == len(design_object["row"]) - 1: - compare_column_types = [ - item["object"] - for item in design_object["row"][ctr - 1]["column"]["items"] - ] - - if ( - len(set(current_column_types)) == 1 - and len(list(set(compare_column_types))) == 1 - and current_column_types[0] - == compare_column_types[0] - == "image" - ): - to_remove.append(ctr) - imageset_data.extend(current_column_data) - - elif ( - len(set(current_column_types)) == 1 - and current_column_types[0] == "image" - ): - if ctr - 1 >= 0 and ctr - 1 in to_remove: - to_remove.append(ctr) - imageset_data.extend(current_column_data) - - if ctr not in to_remove: - if imageset_data: - column_wise_imageset_data.append(imageset_data) - else: - column_wise_imageset_data.append([]) - return imageset_data, column_wise_imageset_data - - def _update_column_wise_image_data( - self, column_wise_imageset_data: List, design_object: Dict - ) -> Dict: - """ - Update the columns as image-sets having candidate image-set data. - :param column_wise_imageset_data: List of column-wise candidate - image-set data - :param design_object: Column-set that needs updating - :return: Updated column-set element - """ - - # If there's other elements in the column-set column as well - update_element = {"object": "columnset", "row": []} - counter = 0 - for data in column_wise_imageset_data: - if not data and counter < len(design_object["row"]): - # if it's any non image-set element extract it from the - # design object's row - update_element["row"].append(design_object["row"][counter]) - counter += 1 - else: - # if it's a image-set column - container_coords = list(map(itemgetter("coordinates"), data)) - ds_template = DsHelper() - container_coords = ds_template.build_container_coordinates( - container_coords - ) - # build image-set - image_set = { - "imageset": {"items": data}, - "object": "imageset", - "coordinates": container_coords, - } - # add image-set to the column - update_element["row"].append( - { - "column": {"items": [image_set]}, - "object": "column", - "coordinates": container_coords, - } - ) - return update_element - - def _build_imageset(self, design_object: Dict) -> Dict: - """ - Build the image-set from the passed column-set design object and - return the updated column-set design element - @param design_object: any column-set design element - @return: updated column-set dict - """ - # extract the image data from columns - imageset_data, column_wise_imageset_data = self._extract_image_data( - design_object - ) - - if not any(column_wise_imageset_data) and imageset_data: - column_wise_imageset_data.append(imageset_data) - - # if the column-set has only columns of images, then change it to - # image-set from the root level - if not column_wise_imageset_data and imageset_data: - container_coords = list( - map(itemgetter("coordinates"), imageset_data) - ) - ds_template = DsHelper() - container_coords = ds_template.build_container_coordinates( - container_coords - ) - design_object = { - "imageset": {"items": imageset_data}, - "object": "imageset", - "coordinates": container_coords, - } - elif any(column_wise_imageset_data): - update_element = self._update_column_wise_image_data( - column_wise_imageset_data, design_object - ) - - if update_element["row"]: - # build column-set coordinates - container_coords = list( - map(itemgetter("coordinates"), update_element["row"]) - ) - ds_template = DsHelper() - container_coords = ds_template.build_container_coordinates( - container_coords - ) - update_element.update({"coordinates": container_coords}) - return update_element - return design_object - - def _get_imageset_from_columns( - self, card_layout: List, design_object: Dict - ) -> None: - """ - Traverse the card layout and from the column-set build image-set from - continuous columns having only one design element - image. - @param card_layout: final card layout after extracting - @param design_object: design element while traversing - """ - # pylint: disable=isinstance-second-argument-not-valid-type - if ( - isinstance(design_object, Dict) - and design_object.get("object", "") == "columnset" - ): - updated_object = self._build_imageset(design_object) - if updated_object: - card_layout.append(updated_object) - else: - card_layout.append(design_object) - elif isinstance(design_object, list): - for design_obj in design_object: - self._get_imageset_from_columns(card_layout, design_obj) - else: - card_layout.append(design_object) - - def merge_items(self, card_layout: List[Dict]) -> List[Dict]: - """ - Calls the object grouping for list of design element in the root level - of the design. - @param card_layout: the generated layout structure - @return: Grouped layout structure - """ - # get the list of container names for merging the items - container_items = DsHelper.MERGING_CONTAINERS_LIST - container_template = ContainerTemplate() - for container_name in container_items: - container_template_object = getattr( - container_template, container_name - ) - card_layout = container_template_object(card_layout, self) - # extract and update - image-set from the list of columns of any - # column-set - updated_card_layout = [] - self._get_imageset_from_columns(updated_card_layout, card_layout) - if updated_card_layout: - return updated_card_layout - return card_layout diff --git a/source/pic2card/mystique/card_layout/ds_helper.py b/source/pic2card/mystique/card_layout/ds_helper.py deleted file mode 100644 index ed812b0c85..0000000000 --- a/source/pic2card/mystique/card_layout/ds_helper.py +++ /dev/null @@ -1,402 +0,0 @@ -"""Module responsible for all the utilities and template classes needed for -the layout generation""" -# pylint: disable=relative-beyond-top-level - -from typing import List, Tuple, Dict, Union - -import pandas as pd - -from .objects_group import ChoicesetGrouping - - -class DsHelper: - """ - Base class for layout ds utilities and template handling. - - handles all utility functions needed for the layout generation - """ - - CONTAINERS = ["columnset", "imageset", "column", "choiceset"] - MERGING_CONTAINERS_LIST = ["choiceset"] - - def __init__(self): - - self.serialized_layout = [] - self.ds_template = DsDesignTemplate() - - def merge_properties( - self, - properties: List[Dict], - design_object: List[Dict], - container_details_object: object, - ) -> None: - """ - Merges the design objects with properties with the appropriate layout - structure with the help of the uuid. - @param properties: design objects with properties - @param design_object: layout data structure - @param container_details_object: ContainerDetailsTemplate object - """ - if ( - isinstance(design_object, dict) - and design_object.get("object", "") not in DsHelper.CONTAINERS - ): - extracted_properties = [ - prop - for prop in properties - if prop.get("uuid", "") == design_object.get("uuid") - ][0] - extracted_properties.pop("coordinates") - design_object.update(extracted_properties) - - elif isinstance(design_object, list): - for design_obj in design_object: - self.merge_properties( - properties, design_obj, container_details_object - ) - else: - container_details_template_object = getattr( - container_details_object, design_object.get("object", "") - ) - self.merge_properties( - properties, - container_details_template_object(design_object), - container_details_object, - ) - - def export_debug_string( - self, - serialized_layout: List, - design_object: Union[List, Dict], - card_layout: List[Dict], - indentation=None, - ) -> None: - """ - Recursively generates the debug layout structure string. - @param serialized_layout: debug layout structure string - @param design_object: design objects from the layout structure - @param indentation: indentation - @param card_layout: generated layout structure - """ - if ( - isinstance(design_object, dict) - and design_object.get("object", "") not in DsHelper.CONTAINERS - ): - design_class = design_object.get("class", "") - if design_object in card_layout: - tab_space = "\t" * 0 - else: - tab_space = "\t" * (indentation + 1) - serialized_layout.append(f"{tab_space}item({design_class})\n") - elif isinstance(design_object, list): - for design_obj in design_object: - self.export_debug_string( - serialized_layout, - design_obj, - card_layout, - indentation=indentation, - ) - else: - export_serialized_layout_template = SerializedLayoutExport( - design_object, card_layout, self - ) - export_serialized_layout_template_object = getattr( - export_serialized_layout_template, - design_object.get("object", ""), - ) - export_serialized_layout_template_object( - serialized_layout, indentation - ) - - def build_serialized_layout_string(self, card_layout: List[Dict]) -> List: - """ - Returns the exported adaptive card json - @param card_layout: adaptive card body - @return: debugging data-structure format - """ - card_layout = [ - value - for _, value in sorted( - zip( - list(zip(*pd.DataFrame(card_layout)["coordinates"]))[1], - card_layout, - ), - key=lambda value: value[0], - ) - ] - - self.export_debug_string( - self.serialized_layout, card_layout, card_layout, indentation=0 - ) - return self.serialized_layout - - def add_element_to_ds( - self, element_type: str, card_layout: List, element=None, coords=None - ) -> None: - """ - Adds the design element structure to the layout data structure. - @param element_type: type of passed design element [ individual / - any container] - @param card_layout: layout structure where the design element - has to be added - @param element: design element to be added - """ - element_structure_object = getattr(self.ds_template, element_type) - element_structre = element_structure_object(element) - if element_structre not in card_layout: - card_layout.append(element_structure_object(element)) - if coords: - card_layout[-1].update({"coordinates": coords}) - - # pylint: disable=no-self-use - def build_container_coordinates(self, coordinates: List) -> Tuple: - """ - Returns the column set or column coordinates by taking min(x minimum and - y minimum) and max(x maximum and y maximum) of the respective - container's element's coordinates. - - @param coordinates: container's list of coordinates - @return: coordinates of the respective container - """ - x_minimums = [c[0] for c in coordinates] - y_minimums = [c[1] for c in coordinates] - x_maximums = [c[2] for c in coordinates] - y_maximums = [c[3] for c in coordinates] - return ( - min(x_minimums), - min(y_minimums), - max(x_maximums), - max(y_maximums), - ) - - -class SerializedLayoutExport: - """ - This class is responsible for calling the appropriate debug templates - for the container structure. - """ - - def __init__(self, design_object, card_layout, export_object): - self.design_object = design_object - self.card_layout = card_layout - self.export_object = export_object - - def columnset(self, serialized_layout_string, indentation) -> None: - """ - Returns the debugging string for the column-set container @param - serialized_layout_string: list of debugging string for the given - design @param indentation: needed indentation for design element in - the debugging string - """ - if self.design_object in self.card_layout: - tab_space = "\t" * 0 - else: - tab_space = "\t" * (indentation + 1) - indentation = indentation + 1 - serialized_layout_string.append(f"{tab_space}row\n") - self.export_object.export_debug_string( - serialized_layout_string, - self.design_object.get("row", []), - self.card_layout, - indentation=indentation, - ) - - def column(self, serialized_layout_string, indentation) -> None: - """ - Returns the debugging string for the column container @param - serialized_layout_string: list of debugging string for the given - design @param indentation: needed indentation for design element in - the debugging string - """ - if self.design_object in self.card_layout: - tab_space = "\t" * 0 - else: - tab_space = "\t" * (indentation + 1) - indentation = indentation + 1 - serialized_layout_string.append(f"{tab_space}column\n") - self.export_object.export_debug_string( - serialized_layout_string, - self.design_object.get("column", {}).get("items", []), - self.card_layout, - indentation=indentation, - ) - - def imageset(self, serialized_layout_string, indentation) -> None: - """ - Returns the debugging string for the image-set container @param - serialized_layout_string: list of debugging string for the given - design @param indentation: needed indentation for design element in - the debugging string - """ - if self.design_object in self.card_layout: - tab_space = "\t" * 0 - else: - tab_space = "\t" * (indentation + 1) - indentation = indentation + 1 - serialized_layout_string.append(f"{tab_space}imageset\n") - self.export_object.export_debug_string( - serialized_layout_string, - self.design_object.get("imageset", {}).get("items", []), - indentation=indentation, - ) - - def choiceset(self, serialized_layout_string, indentation) -> None: - """ - Returns the debugging string for the image-set container @param - serialized_layout_string: list of debugging string for the given - design @param indentation: needed indentation for design element in - the debugging string - """ - if self.design_object in self.card_layout: - tab_space = "\t" * 0 - else: - tab_space = "\t" * (indentation + 1) - indentation = indentation + 1 - serialized_layout_string.append(f"{tab_space}choiceset\n") - self.export_object.export_debug_string( - serialized_layout_string, - self.design_object.get("choiceset", {}).get("items", []), - indentation=indentation, - ) - - -class DsDesignTemplate: - """ - Layout structure template for the design elements - - Handles the template needed for the different design elements for - the layout generation. - """ - - def item(self, design_element: Dict) -> Dict: # pylint: disable=no-self-use - """ - Returns the design structure for the primary card design elements - @param: design element - @return: design structure - """ - return { - "object": design_element.get("object", ""), - "data": design_element.get("data", ""), - "class": design_element.get("class", ""), - "uuid": design_element.get("uuid"), - "coordinates": design_element.get("coordinates", ()), - } - - # pylint: disable=no-self-use, unused-argument - def row(self, design_element: Dict) -> Dict: - """ - Returns the design structure for the column-set container - @param: design element - @return: design structure - """ - return { - "object": "columnset", - "row": [], - } - - # pylint: disable=no-self-use, unused-argument - def column(self, design_element: Dict) -> Dict: - """ - Returns the design structure for the column of the column-set container - @param: design element - @return: design structure - """ - return {"column": {"items": []}, "object": "column"} - - # pylint: disable=no-self-use, unused-argument - def imageset(self, design_element: Dict) -> Dict: - """ - Returns the design structure for the image-set container - @return: design structure - """ - return {"imageset": {"items": []}, "object": "imageset"} - - # pylint: disable=no-self-use, unused-argument - def choiceset(self, design_element: Dict) -> Dict: - """ - Returns the design structure for the choice-set container - @param: design element - @return: design structure - """ - return {"choiceset": {"items": []}, "object": "choiceset"} - - -# pylint: disable=too-few-public-methods -class ContainerTemplate: - """ - Class to handle different container groupings other than columnset and - column. - - Handles the functionalies needed for different type of container - groupings. - """ - - def choiceset( - self, card_layout: List[Dict], containers_group_object - ) -> List[Dict]: - """ - Groups and returns the layout structure with the respective choice-sets - @param card_layout: Un-grouped layout structure. - @param containers_group_object: ContainerGroup object - @return: Grouped layout structure - """ - choice_grouping = ChoicesetGrouping(self) - condition = choice_grouping.choiceset_condition - merging_payload = { - "object_class": 2, - "grouping_type": "choiceset", - "grouping_object": choice_grouping, - "grouping_condition": condition, - "order_key": 1, - } - containers_group_object.merge_column_items(card_layout, merging_payload) - items, _ = containers_group_object.collect_items_for_container( - card_layout, 2 - ) - return containers_group_object.add_merged_items( - items, card_layout, merging_payload - ) - - -class ContainerDetailTemplate: - """ - This module is responsible for returning the inner design objects for a - given container from the generated layout structure - """ - - # pylint: disable=no-self-use - def columnset(self, design_element: Dict) -> List: - """ - Returns the design objects of a column-set container for the given - layout structure. - @param design_element: design element - @returns: list of elements inside the given row - """ - return design_element.get("row", []) - - # pylint: disable=no-self-use - def column(self, design_element: Dict) -> List: - """ - Returns the design objects of a column container for the given - layout structure. - @param design_element: design element - @returns: list of elements inside the given column - """ - return design_element.get("column", {}).get("items", []) - - # pylint: disable=no-self-use - def imageset(self, design_element: Dict) -> List: - """ - Returns the design objects of a image-set container for the given - layout structure. - @param design_element: design element - @returns: list of elements inside the given image-set - """ - return design_element.get("imageset", {}).get("items", []) - - # pylint: disable=no-self-use - def choiceset(self, design_element: Dict) -> List: - """ - Returns the design objects of a choice-set container for the given - layout structure. - @param design_element: design element - @returns: list of elements inside the given choice-set - """ - return design_element.get("choiceset", {}).get("items", []) diff --git a/source/pic2card/mystique/card_layout/objects_group.py b/source/pic2card/mystique/card_layout/objects_group.py deleted file mode 100644 index 91a618cae7..0000000000 --- a/source/pic2card/mystique/card_layout/objects_group.py +++ /dev/null @@ -1,171 +0,0 @@ -"""Module for grouping deisgn objects into different containers""" -from typing import List, Dict, Callable - - -class GroupObjects: - """ - Handles the grouping of given list of objects for any set conditions that - is passed. - """ - - # pylint: disable=no-self-use - def _update_coords( - self, previous_coords: List, current_coords: List - ) -> List: - """ - Update the container/group coordinates by extending the previous - coords with the current one by taking min(xmin and ymin) and max( - xmax,yamx). - @param previous_coords: Group coodinates - @param current_coords: Current design object coordinates - @return: Updated coordinates for the group - """ - - return [ - min(previous_coords[0], current_coords[0]), - min(previous_coords[1], current_coords[1]), - max(previous_coords[2], current_coords[2]), - max(previous_coords[3], current_coords[3]), - ] - - # pylint: disable=no-self-use - def update_group_objects( - self, design_objects: Dict, coordinates=None - ) -> Dict: - """ - Build the design group element based on the passed set of design objects - and coordinates. - @param design_objects: set of design objects to be added to the group - @param coordinates: list of coordinates to be added to the group - @return: Build group element - """ - if coordinates: - return {"objects": design_objects, "coordinates": coordinates} - return { - "objects": [design_objects], - "coordinates": list(design_objects.get("coordinates")), - } - - def object_grouping( - self, - design_objects: List[Dict], - condition: Callable[[List, List], bool], - ) -> List[Dict]: - """ - Groups the given List of design objects for the any given condition. - Traverse through the x/y based sorted list of design objects and - groups them based on the passed conditions and while grouping - updates the grouped list of object's coordinates for each element - addition. - @param design_objects: objects - @param condition: Grouping condition function - @return: Grouped list of design objects. - """ - groups = [] - for _, design_object in enumerate( - design_objects - ): # pylint: disable=unused-variable - if not groups: - groups.append(self.update_group_objects(design_object)) - if groups: - bbox_1 = list(groups[-1]["coordinates"]) - bbox_2 = list(design_object["coordinates"]) - object_names = [ - obj.get("object") for obj in groups[-1].get("objects") - ] - if "image" in object_names: - bbox_1.append("image") - else: - bbox_1.append("group") - bbox_2.append(design_object.get("object", "")) - - if condition(bbox_1, bbox_2): - objects = groups[-1].get("objects") - if design_object not in objects: - objects.append(design_object) - coordinates = self._update_coords(bbox_1, bbox_2) - groups[-1].update( - self.update_group_objects( - objects, coordinates=coordinates - ) - ) - else: - - if design_object not in groups[-1].get("objects"): - groups.append(self.update_group_objects(design_object)) - return groups - - -class RowColumnGrouping(GroupObjects): - """ - Groups the design objects into different columns of a columnset - """ - - def __init__(self, card_arrange=None): - self.card_arrange = card_arrange - - # pylint: disable=no-self-use - def row_condition(self, bbox_1: List, bbox_2: List, threshold=0.3) -> bool: - """ - Simplified row grouping condition - @param bbox_1: bounding box 1 - @param bbox_2: bounding box2 - @param threshold: cut-off threshold - @return: boolean value for row candidates - """ - _, y1_, _, y2_, _ = bbox_1 - _, y11, _, y22, _ = bbox_2 - intersection = (min(y2_, y22) - max(y1_, y11)) / min( - [(y2_ - y1_), (y22 - y11)] - ) - return intersection >= threshold - - # pylint: disable=no-self-use - def column_condition( - self, bbox_1: List, bbox_2: List, threshold=0.3 - ) -> bool: - """ - Simplifies column grouping condition - @param bbox_1: bounding box 1 - @param bbox_2: bounding box2 - @param threshold: cut-off threshold - @return: boolean value for column candidates - """ - x1_, _, x2_, _, _ = bbox_1 - x11, _, x22, _, _ = bbox_2 - - intersection = (min(x2_, x22) - max(x1_, x11)) / min( - [(x2_ - x1_), (x22 - x11)] - ) - - return intersection >= threshold - - -class ChoicesetGrouping(GroupObjects): - """ - Groups the radiobutton objects of the adaptive card objects into a - choiceset or individual radiobuttion objects. - """ - - def __init__(self, card_arrange=None): - self.card_arrange = card_arrange - - # pylint: disable=no-self-use - def choiceset_condition( - self, bbox_1: List, bbox_2: List, threshold=0.3 - ) -> bool: - """ - Returns a boolean value to group the radiobutton objects into a - choice-set. - @param bbox_1: radiobutton object one coordinates - @param bbox_2: radiobutton object two coordinates - @param threshold: cut-off threshold - @return: boolean value - """ - x1_, _, x2_, _, _ = bbox_1 - x11, _, x22, _, _ = bbox_2 - - intersection = (min(x2_, x22) - max(x1_, x11)) / min( - [(x2_ - x1_), (x22 - x11)] - ) - return intersection >= threshold diff --git a/source/pic2card/mystique/card_layout/property_updates.py b/source/pic2card/mystique/card_layout/property_updates.py deleted file mode 100644 index 45880875cf..0000000000 --- a/source/pic2card/mystique/card_layout/property_updates.py +++ /dev/null @@ -1,220 +0,0 @@ -"""Module updates the primary properties extracted after the layout generation -- updates the horizontal alignment property for the individual elements - inside the containers. -- set the horizontal alignment property for the containers""" -from typing import Dict, List, Union -from PIL import Image - -from mystique.extract_properties import BaseExtractProperties - -# pylint: disable=relative-beyond-top-level -from .ds_helper import ( - DsHelper, - ContainerDetailTemplate, -) - - -class DsAlignment: - """ - Class handles the alignment property updation. - - updates the horizontal alignment property for the individual elements - inside the containers, by taking the respective container's coordinates - as parent coordinates inside which the element's alignment has to be - updated. - - set the horizontal alignment property for the containers, by taking the - the respective parent container's coordinates as parent coordinates - inside which the container's alignment has to be set. - """ - - def __init__(self): - self.base_property = BaseExtractProperties() - - def update_or_set_alignment( - self, - design_object: Union[List, Dict], - container_details_object: ContainerDetailTemplate, - parent_object=None, - image=None, - ) -> None: - """ - traverse the card layout ds recursively and set/update the horizontal - alignment property based on it's respective parent coordinates. - @param image: input pil image - @param parent_object: parent container object - @param design_object: design element to be set or updated - @param container_details_object: ContainerDetailTemplate object to - extract the container details from the card layout structure. - """ - if isinstance(design_object, dict): - if not parent_object: - parent_width = None - pil_image = image - design_element_xmin = design_object.get("coordinates", [])[0] - design_element_xmax = design_object.get("coordinates", [])[2] - - else: - parent_width = abs( - parent_object.get("coordinates")[2] - - parent_object.get("coordinates")[0] - ) - pil_image = None - design_element_xmin = abs( - design_object.get("coordinates")[0] - - parent_object.get("coordinates")[0] - ) - design_element_width = abs( - design_object.get("coordinates")[2] - - design_object.get("coordinates")[0] - ) - design_element_xmax = ( - abs( - parent_object.get("coordinates")[2] - - design_object.get("coordinates")[2] - ) - + design_element_width - ) - - # update the element's inside the container's - design_object.update( - { - "horizontal_alignment": self.base_property.get_alignment( - xmin=design_element_xmin, - xmax=design_element_xmax, - width=parent_width, - image=pil_image, - ) - } - ) - - # set the container's alignment - if design_object.get("object", "") in DsHelper.CONTAINERS: - container_details_template_object = getattr( - container_details_object, design_object.get("object", "") - ) - container_items = container_details_template_object( - design_object - ) - # if a container has only one element, then extract the - # alignment based on the line numbers and top values from - # pytesseract data. - if len(container_items) == 1: - text_data = container_items[0].get("image_data", []) - if text_data: - if self._get_number_of_lines(text_data) > 1: - alignment = self.base_property.get_line_alignment( - text_data - ) - container_items[0].update( - {"horizontal_alignment": alignment} - ) - else: - self.update_or_set_alignment( - container_items, - container_details_object, - parent_object=design_object, - ) - - elif isinstance(design_object, list): - for design_obj in design_object: - # recursively update the alignment - if parent_object: - self.update_or_set_alignment( - design_obj, - container_details_object, - parent_object=parent_object, - ) - else: - self.update_or_set_alignment( - design_obj, container_details_object, image=image - ) - - # pylint: disable=no-self-use - def _get_number_of_lines(self, text_data: Dict) -> int: - """ - Returns the total number of lines extracted from the pytesseract - output for a design element. - @param text_data: pytesseract image_to_data o/p - @return: total number of lines - """ - number_of_lines = list(set(text_data.get("line_num", []))) - if 0 in number_of_lines: - number_of_lines.remove(0) - number_of_lines = len(number_of_lines) - return number_of_lines - - def update_conflicting_alignments( - self, - card_layout: List, - container_details_object: ContainerDetailTemplate, - ) -> None: - """ - Update the alignment property for the element's with conflicting values - based on the previous or next element's property inside the container. - i.e if any element's alignment inside it's parent container satisfies - more than one alignment value , the conflicting element's alignment is - determined by it's next or previous element's alignment property. - @param card_layout: card layout ds - @param container_details_object: ContainerDetailTemplate object to - extract the container details from the card layout structure. - """ - - if ( - isinstance(card_layout, dict) - and card_layout.get("object", "") in DsHelper.CONTAINERS - ): - container_details_template_object = getattr( - container_details_object, card_layout.get("object", "") - ) - self.update_conflicting_alignments( - container_details_template_object(card_layout), - container_details_object, - ) - - elif isinstance(card_layout, list): - for ctr, design_obj in enumerate(card_layout): - if not design_obj.get("horizontal_alignment"): - - if ctr + 1 < len(card_layout): - design_obj.update( - { - "horizontal_alignment": card_layout[ - ctr + 1 - ].get("horizontal_alignment") - } - ) - elif ctr - 1 >= 0: - design_obj.update( - { - "horizontal_alignment": card_layout[ - ctr - 1 - ].get("horizontal_alignment") - } - ) - if not design_obj.get("horizontal_alignment"): - design_obj.update({"horizontal_alignment": "Left"}) - self.update_conflicting_alignments( - design_obj, container_details_object - ) - - -def update_properties( - card_layout: List, - container_detail_object: ContainerDetailTemplate, - image: Image, -): - """ - Entry method handles the calling of different property updations. - @param card_layout: card layout ds - @param container_detail_object: ContainerDetailTemplate object to - extract the container details from the card layout structure - @param image: Input PIL image - @return: card layout with the updated or set properties - """ - ds_alignment = DsAlignment() - ds_alignment.update_or_set_alignment( - card_layout, container_detail_object, image=image - ) - ds_alignment.update_conflicting_alignments( - card_layout, container_detail_object - ) - return card_layout diff --git a/source/pic2card/mystique/card_layout/row_column_group.py b/source/pic2card/mystique/card_layout/row_column_group.py deleted file mode 100644 index e352850a2d..0000000000 --- a/source/pic2card/mystique/card_layout/row_column_group.py +++ /dev/null @@ -1,248 +0,0 @@ -"""Module responsible for grouping the related row of elements and to it's -respective columns""" -from multiprocessing import Process, Queue -from typing import List, Dict - -# pylint: disable=relative-beyond-top-level -import pandas as pd -from PIL import Image -from mystique.extract_properties import CollectProperties - -from .container_group import ContainerGroup -from .ds_helper import DsHelper, ContainerDetailTemplate -from .objects_group import RowColumnGrouping - - -def get_layout_structure(predicted_objects: List, queue=None) -> List: - """ - method handles the hierarchical layout generating - @param predicted_objects: detected list of design objects from the model - @param queue: Queue object of the calling process - as a part of multi-process queue - @return: generated hierarchical card layout - """ - card_layout = [] - # group row and columns - # sorting the design objects y way - predicted_objects = [ - value - for _, value in sorted( - zip( - pd.DataFrame(predicted_objects).to_dict(orient="list")["ymin"], - predicted_objects, - ), - key=lambda value: value[0], - ) - ] - row_column_group = RowColumnGroup() - card_layout = row_column_group.row_column_grouping( - predicted_objects, card_layout - ) - # merge items to containers - container_group = ContainerGroup() - card_layout = container_group.merge_items(card_layout) - if queue: - queue.put(card_layout) - return card_layout - - -def generate_card_layout_multi( - predicted_objects: List, image: Image, predict_card_object=None -) -> RowColumnGrouping: - """ - Performs the property extraction and hierarchical layout structuring - in parallel and merges both on completion and returns the card layout - with the spatial and property details. - @param predicted_objects: List of extracted design objects - @param image: input design image - @param predict_card_object: PredictCard object - @return: card layout with the primitive properties merged - """ - queue1 = Queue() - queue2 = Queue() - try: - process1 = Process( - target=predict_card_object.get_object_properties, - args=( - predicted_objects["objects"], - image, - queue1, - ), - ) - process2 = Process( - target=get_layout_structure, - args=( - predicted_objects["objects"], - queue2, - ), - ) - process1.start() - process2.start() - - properties = queue1.get() - card_layout = queue2.get() - - process1.join() - process2.join() - # merge the card layout and extracted properties - ds_helper = DsHelper() - container_detail_object = ContainerDetailTemplate() - ds_helper.merge_properties( - properties, card_layout, container_detail_object - ) - return card_layout - except Exception: # pylint: disable=broad-except - return None - - -def generate_card_layout_seq( - predicted_objects: List, image: Image, predict_card_object=None -) -> List[Dict]: - """ - Performs the property extraction and hierarchical layout structuring - in a sequential way and merges both on completion and returns the card - layout with the spatial and property details. - @param predicted_objects: List of extracted design objects - @param image: input design image - @param predict_card_object: PredictCard object - @return: card layout with the primitive properties merged - """ - - card_layout = get_layout_structure(predicted_objects["objects"]) - properties = predict_card_object.get_object_properties( - predicted_objects["objects"], image - ) - # merge the card layout and extracted properties - ds_helper = DsHelper() - container_detail_object = ContainerDetailTemplate() - ds_helper.merge_properties(properties, card_layout, container_detail_object) - return card_layout - - -# pylint: disable=too-few-public-methods -class RowColumnGroup: - """ - Groups the predicted design elements into it's related rows and columns - and generates a hiearchical data structure of grouped elements - i.e into a column-set container as per adaptive card's notation - """ - - same_iteration = False - - def __init__(self): - self.collect_properties = CollectProperties() - self.ds_helper = DsHelper() - self.columns_grouping = RowColumnGrouping() - self.ds_template = DsHelper() - - # pylint: disable=inconsistent-return-statements - def _add_rows( - self, column_set: Dict, card_layout: List[Dict] - ) -> [None, List[Dict]]: - """ - Add the grouped rows to the card layout and update the row's - new coordinates. - :param column_set: List of Row elements - :param card_layout: Design structure layout - :return: Collected columns if any - """ - if len(column_set["objects"]) == 1: - self.ds_template.add_element_to_ds( - "item", card_layout, element=column_set["objects"][0] - ) - elif len(column_set["objects"]) > 1: - # sort x wise for columns grouping - column_set["objects"] = [ - value - for _, value in sorted( - zip( - pd.DataFrame(column_set["objects"]).to_dict( - orient="list" - )["xmin"], - column_set["objects"], - ), - key=lambda value: value[0], - ) - ] - columns = self.columns_grouping.object_grouping( - column_set["objects"], self.columns_grouping.column_condition - ) - - return columns - - def _add_columns( - self, - columns: List[Dict], - card_layout: List[Dict], - column_set_coords=None, - ) -> None: - """ - Iterate and add the column and column items and update the column's - new coordinates. - @param columns: List of columns with column items - @param column_set_coords: list of coordinates for the row - @param card_layout: Design structure layout - """ - self.ds_template.add_element_to_ds( - "row", card_layout, coords=column_set_coords - ) - row_counter = len(card_layout) - 1 - for column in columns: - row_columns = card_layout[row_counter]["row"] - self.ds_template.add_element_to_ds( - "column", row_columns, coords=column["coordinates"] - ) - column_counter = len(row_columns) - 1 - column["objects"] = [ - value - for _, value in sorted( - zip( - pd.DataFrame(column["objects"]).to_dict(orient="list")[ - "ymin" - ], - column["objects"], - ), - key=lambda value: value[0], - ) - ] - self.row_column_grouping( - column["objects"], - row_columns[column_counter]["column"]["items"], - column_coords=column["coordinates"], - ) - row_counter = len(card_layout) - 1 - - def row_column_grouping( - self, design_objects, card_layout: List[Dict], column_coords=None - ) -> List[Dict]: - """ - Group the detected design elements recursively - into columns and column_sets and individual objects, considering each - columns as smallest unit [i.e. a separate card hierarchy]. - @param design_objects: list of detected design objects - @param card_layout: layout data structure - @param column_coords: list of column coordinates - @return: The grouped and updated card layout structure - """ - columns_grouping = RowColumnGrouping() - column_sets = columns_grouping.object_grouping( - design_objects, columns_grouping.row_condition - ) - for column_set in column_sets: - columns = self._add_rows(column_set, card_layout) - if ( - columns - and column_coords - and len(columns) == 1 - and columns[0]["coordinates"] == column_coords - ): - for item in columns[0]["objects"]: - self.ds_template.add_element_to_ds( - "item", card_layout, element=item - ) - elif columns: - self._add_columns( - columns, card_layout, column_set["coordinates"] - ) - - return card_layout diff --git a/source/pic2card/mystique/config.py b/source/pic2card/mystique/config.py deleted file mode 100644 index baef354739..0000000000 --- a/source/pic2card/mystique/config.py +++ /dev/null @@ -1,140 +0,0 @@ -""" -Gloabal settings and constants. -""" -import os - -# max 2mb -IMG_MAX_UPLOAD_SIZE = 2e6 - -# tf-serving url -TF_SERVING_URL = os.environ.get("TF_SERVING_URL", "http://172.17.0.5:8501") -TF_SERVING_MODEL_NAME = "mystique" -ENABLE_TF_SERVING = os.environ.get("ENABLE_TF_SERVING", False) -TF_FROZEN_MODEL_PATH = os.path.join( - os.path.dirname(__file__), "../model/frozen_inference_graph.pb" -) -TF_LABEL_PATH = os.path.join( - os.path.dirname(__file__), "training/object-detection.pbtxt" -) - -# Pytorch model settings. -PTH_MODEL_PATH = os.path.join( - os.path.dirname(__file__), - "../model/pth_models/faster-rcnn-2020-05-31-1590943544-epochs_25.pth", -) - -DETR_MODEL_PATH = os.path.join( - os.path.dirname(__file__), "../model/pth_models/detr_trace.pt" -) - - -# image hosting max size and default image url -IMG_MAX_HOSTING_SIZE = 1000000 -DEFAULT_IMG_HOSTING = ( - "https://lh3.googleusercontent.com/" - + "-snm-WznsB3k/XrAWKVCBC3I/AAAAAAAAB8Y" - + "/tR-2f8CzboQCmyTzrAfj9Xtvnbeh9PJ8QCK8BGAsYHg" - + "/s0/2020-05-04.png" -) # noqa - - -# Class labels -ID_TO_LABEL = { - 0: "background", - 1: "textbox", - 2: "radiobutton", - 3: "checkbox", - 4: "actionset", - 5: "image", - 6: "rating", -} - -# Extract properties method plug-ins -# keys are detected object class -# values are the module path for its respective methods -PROPERTY_EXTRACTOR_FUNC = { - "textbox": "mystique.extract_properties.CollectProperties.textbox", - "checkbox": "mystique.extract_properties.CollectProperties.checkbox", - "radiobutton": "mystique.extract_properties.CollectProperties.radiobutton", - "image": "mystique.extract_properties.CollectProperties.image", - "actionset": "mystique.extract_properties.CollectProperties.actionset", -} - -# Font size and weight property class registry -FONT_SPEC_REGISTRY = { - "font_morph": "mystique.font_properties.FontPropMorph", - "font_bbox": "mystique.font_properties.FontPropBoundingBox", -} -# active font prop pipelne -ACTIVE_FONTSPEC_NAME = "font_morph" - -# image detection swtiching paramater -# On True [ uses custom image pipeline for image objects] -# On False [ uses RCNN model image obejcts ] -# Default is False -# USE_CUSTOM_IMAGE_PIPELINE = False - -# RCNN model confidence score cutoff -MODEL_CONFIDENCE = 80.0 - -# Extra textbox padding - 5px -TEXTBOX_PADDING = 5 - -MODEL_REGISTRY = { - "tf_faster_rcnn": "mystique.detect_objects.ObjectDetection", - "tfs_faster_rcnn": "mystique.detect_objects.TfsObjectDetection", - # "pth_faster_rcnn": "mystique.obj_detect.PtObjectDetection", - "pth_detr": "mystique.obj_detect.DetrOD", - "pth_detr_cpp": "mystique.obj_detect.DetrCppOD", -} - -ACTIVE_MODEL_NAME = os.environ.get("ACTIVE_MODEL_NAME", "tf_faster_rcnn") - -# Threshold values of w,h ratio of each image object labels -IMAGE_SIZE_RATIOS = { - (10.23, 11.92): "Small", - (19.99, 15.0): "Medium", - (24.51, 16.33): "Large", -} -# Threshold values of mid point distance between 2 design objects column with -# labels -COLUMN_WIDTH_DISTANCE_OLD = {(1.0, 0.466): "auto", (1.0, 0.804): "stretch"} -# Threshold values of the mid point distance for the last column in the columns -# and the input image's width, height for the column width labels -LAST_COLUMN_THRESHOLD_OLD = {(1.0, 0.0368): "stretch", (1.0, 0.224): "auto"} -# Threshold values of mid point distance between 2 design objects column with -# labels -COLUMN_WIDTH_DISTANCE = {(1, 0.36): "auto", (1, 0.817): "stretch"} -# Threshold values of the mid point distance for the last column in the columns -# and the input image's width, height for the column width labels -LAST_COLUMN_THRESHOLD = {(1.0, 0.75): "auto", (1.0, 0.90): "stretch"} -# COLUMNSET GROUPING THRESHOLDS -COLUMNSET_GROUPING = { - "ymin_difference": 10.0, - "ymax_ymin_difference": 3, - "xmax_xmin_difference": 100, -} -# NORMALIZED COLUMN-SET GROUPING THRESHOLDS -CONTAINER_GROUPING = { - "ymin_difference": 0.20, - "ymax_ymin_difference": 0.034, - "xmax_xmin_difference": 0.65, - "choiceset_y_min_difference": 0.60, - "choiceset_ymax_ymin_difference": 0.151, -} - -# COLUMN-SET ALIGNMENT PREFERENCE ORDER -PREFERENCE_ORDER = ["Left", "Center", "Right"] - -# ALIGNMENT THRESHOLDS -ALIGNMENT_THRESHOLDS = { - "minimum_range": 0.10, - "left_range": 0.45, - "center_range": 0.55, -} -# LINE BASED ALIGNMENT THRESHOLDS -LINE_ALIGNMENT_THRESHOLD = {"minimum": 0.20, "maximum": 0.75} - -# Multi Process flag to run card-layout and properties extraction as a -# parallel or sequential tasks, True by default -MULTI_PROC = True diff --git a/source/pic2card/mystique/debug.py b/source/pic2card/mystique/debug.py deleted file mode 100644 index 8adb50377f..0000000000 --- a/source/pic2card/mystique/debug.py +++ /dev/null @@ -1,126 +0,0 @@ -"""Module to handle the returning of debugging images""" - -from typing import List, Tuple -import base64 -import io - -import cv2 -from PIL import Image -import numpy as np -import matplotlib.pyplot as plt - -from mystique.predict_card import PredictCard -from mystique.image_extraction import ImageExtraction -from mystique.utils import plot_results - - -class Debug: - """ - Class to handle debugging the pic2card conversion returing set of - images from diffrent modules. - """ - - def __init__(self, od_model=None): - """ - Find the card components using Object detection model - """ - self.od_model = od_model - - # pylint: disable=no-self-use - def visualize_custom_image_pipeline_objects( - self, - image_copy: np.array, - detected_coords: List[Tuple], - image: Image, - image_np: np.array, - ): - """ - Visualize the custom image pipeline objects - @param image_copy: opencv input image - @param detected_coords: rcnn model's object's coordinates - @param image: PIL input image - @param image_np: faster rcnn display image - """ - image_extraction = ImageExtraction() - image_extraction.get_image_with_boundary_boxes( - image=image_copy, - detected_coords=detected_coords, - pil_image=image, - faster_rcnn_image=image_np, - ) - - # pylint: disable=no-self-use - def plot_debug_images( - self, faster_rcnn_image: np.array, image_pipeline_image: np.array - ): - """ - Plots the debugs images and returns the base64 string of the plot - - @param faster_rcnn_image: rcnn model object visualization - @param image_pipeline_image: custom image pipeline object visualization - - @return: base64 string of the plot - """ - plt.figure(figsize=(20, 8)) - plt.subplot(1, 2, 1) - plt.title("RCNN Model Objects") - plt.imshow(cv2.cvtColor(faster_rcnn_image, cv2.COLOR_BGR2RGB)) - plt.axis("off") - plt.subplot(1, 2, 2) - plt.title("Custom Image Pipeline Objects") - plt.imshow(cv2.cvtColor(image_pipeline_image, cv2.COLOR_BGR2RGB)) - plt.axis("off") - pic_iobytes = io.BytesIO() - plt.savefig(pic_iobytes, format="png") - pic_iobytes.seek(0) - - return base64.b64encode(pic_iobytes.read()).decode() - - def get_boundary_boxes(self, image_np: np.array, image: Image): - """ - Get the predicted objects and classes from the rcnn model. - - @param image_np: input open cv image - @param image: PIL image object - - @return: list of boundaries, classes , scores , output dict - """ - # Extract the design objects from faster rcnn model - output_dict = self.od_model.get_objects(image_np=image_np, image=image) - boxes = np.squeeze(output_dict["detection_boxes"]) - classes = np.squeeze(output_dict["detection_classes"]).astype(np.int32) - scores = np.squeeze(output_dict["detection_scores"]) - - return boxes, classes, scores, output_dict - - def main(self, pil_image=None, card_format=None): - """ - Handles the different components calling and returns the - predicted card json to the API - - @param image: input image path - - @return: predicted card json - """ - pil_image = pil_image.convert("RGB") - image_np = np.asarray(pil_image) - image_np = cv2.cvtColor(image_np, cv2.COLOR_RGB2BGR) - (boxes, classes, scores, output_dict) = self.get_boundary_boxes( - image_np, pil_image - ) - predict_card = PredictCard(self.od_model) - - # Custom pipelne - image_buffer = plot_results(pil_image, classes, scores, boxes) - # retval, image_buffer = cv2.imencode(".png", image_np) - image_model_base64_string = base64.b64encode( - image_buffer.read() - ).decode() - # {"image": self.plot_debug_images(image_np, image_copy)} - debug_output = {"image": image_model_base64_string} - # generate card from existing workflow - predict_json = predict_card.generate_card( - output_dict, pil_image, image_np, card_format - ) - debug_output.update(predict_json) - return debug_output diff --git a/source/pic2card/mystique/default_host_configs.py b/source/pic2card/mystique/default_host_configs.py deleted file mode 100644 index 1012b64b2b..0000000000 --- a/source/pic2card/mystique/default_host_configs.py +++ /dev/null @@ -1,15 +0,0 @@ -"""Default host config""" - -IMAGE_SIZE = {80: "Small", 120: "Medium", 180: "Large", 500: "Auto"} -# Font-size and weight thresholds -FONT_SIZE = { - "small": 0.02734, - "default": 0.02872, - "medium": 0.03634, - "large": 0.03868, - "extralarge": 0.05463, -} - -FONT_WEIGHT_BBOX = {"lighter": 0.0143, "default": 0.0176, "bolder": 0.0213} - -FONT_WEIGHT_MORPH = {"lighter": 2.35, "default": 2.75, "bolder": 3.25} diff --git a/source/pic2card/mystique/detect_objects.py b/source/pic2card/mystique/detect_objects.py deleted file mode 100644 index 4ffab2e720..0000000000 --- a/source/pic2card/mystique/detect_objects.py +++ /dev/null @@ -1,156 +0,0 @@ -"""Module for object detection using faster rcnn""" - -from distutils.version import StrictVersion -from typing import Dict, Tuple -import numpy as np -import tensorflow as tf -from PIL import Image - -from mystique.predict_card import PredictCard -from mystique.utils import id_to_label -from mystique.image_extraction import ImageExtraction -from mystique.initial_setups import set_graph_and_tensors - - -# pylint: disable=no-member -if StrictVersion(tf.__version__) < StrictVersion("1.9.0"): - raise ImportError( - "Please upgrade your TensorFlow installation to v1.9.* or later!" - ) - - -class ObjectDetection: - """ - Class handles generating faster rcnn models from the model inference - graph and returning the ouput dict which consists of classes, scores, - and object bounding boxes. - """ - - def __init__(self): - """ - Initialize the object detection using model loaded from forzen - graph - """ - det_g, tens_d = self._load_model_dump() - self.detection_graph = det_g - self.tensor_dict = tens_d - - @staticmethod - def _load_model_dump(): - return set_graph_and_tensors() - - # pylint: disable=no-self-use - def _img_preprocess(self, image_path: str) -> Tuple[Image.Image, np.array]: - """ - Image preprocessing and convert to tensor. - """ - image = Image.open(image_path) - _, _ = image.size - image = image.convert("RGB") - image_np = np.asarray(image) - return image, image_np - - # pylint: disable=no-self-use - def get_image_coordinates( - self, image: Image, image_np: np.array, result: Dict - ): - """ - Custom pipeline written outside the model to extract - image coordinates. - """ - predict_card = PredictCard() - - _, detected_coords = predict_card.collect_objects( - output_dict=result, pil_image=image - ) - img_ext = ImageExtraction() - image_points = img_ext.detect_image( - image=image_np, detected_coords=detected_coords, pil_image=image - ) - return image_points - - # pylint: disable=too-many-locals - def get_bboxes(self, image_path: str, img_pipeline=False) -> Tuple: - """ - Get the bounding boxes with scores and label. - """ - image, image_np = self._img_preprocess(image_path) - width, height = image.size - result = self.get_objects(image_np=image_np, image=image) - classes = [id_to_label(i) for i in result["detection_classes"]] - scores = result["detection_scores"].tolist() - boxes = result["detection_boxes"].tolist() - - # Denormalize the bounding box coordinates. - bbox_dnorm = [] - for bbox in boxes: - ymin = bbox[0] * height - xmin = bbox[1] * width - ymax = bbox[2] * height - xmax = bbox[3] * width - bbox_dnorm.append([xmin, ymin, xmax, ymax]) - - if img_pipeline: - image_points = self.get_image_coordinates(image, image_np, result) - classes = ["image"] * len(image_points) + classes - scores = [1.0] * len(image_points) + scores - bbox_dnorm = image_points + bbox_dnorm - - return classes, bbox_dnorm, scores - - def get_objects(self, image_np: np.array, image: Image): - """ - Returns the objects and coordiates detected - from the faster rcnn detected boxes] - - @param image_np: Image tensor, dimension should be HxWx3 - @param image: PIL Image object - - @return: ouput dict from the faster rcnn inference - """ - output_dict = self.run_inference_for_single_image(image_np) - width, height = image.size - # format: ymin, xmin, ymax, xmax, renormalize the coords. - bboxes = output_dict["detection_boxes"] * [height, width, height, width] - - # format: xmin, ymin, xmax, ymax - bboxes = bboxes[:, [1, 0, 3, 2]] - output_dict["detection_boxes"] = bboxes - - # renormalize the the box cooridinates - return output_dict - - def run_inference_for_single_image(self, image: np.array): - """ - Runs the inference graph for the given image - @param image: numpy array of input design image - @return: output dict of objects, classes and coordinates - """ - # Run inference - detection_graph = self.detection_graph - with detection_graph.as_default(): # pylint: disable=not-context-manager - image_tensor = detection_graph.get_tensor_by_name("image_tensor:0") - with tf.compat.v1.Session() as sess: - output_dict = sess.run( - self.tensor_dict, - feed_dict={image_tensor: np.expand_dims(image, 0)}, - ) - - # all outputs are float32 numpy arrays, so convert types as - # appropriate - output_dict["detection_classes"] = output_dict["detection_classes"][ - 0 - ].astype(np.uint8) - output_dict["detection_boxes"] = output_dict["detection_boxes"][0] - output_dict["detection_scores"] = output_dict["detection_scores"][0] - - return output_dict - - -class TfsObjectDetection: # pylint: disable=too-few-public-methods - """ - Do the object detection using Tensorflow Serving service. - """ - - def __init__(self): - pass diff --git a/source/pic2card/mystique/extract_properties.py b/source/pic2card/mystique/extract_properties.py deleted file mode 100644 index 696bed39f8..0000000000 --- a/source/pic2card/mystique/extract_properties.py +++ /dev/null @@ -1,629 +0,0 @@ -"""Module for extracting design element's properties""" - -import base64 -import math -from io import BytesIO -from typing import Tuple, Dict, List, Any, Union - -import numpy as np -from PIL import Image -from pytesseract import pytesseract, Output - -from mystique import config -from mystique.utils import load_instance_with_class_path -from mystique.extract_properties_abstract import ( - AbstractFontColor, - AbstractBaseExtractProperties, -) - -from mystique.card_layout.ds_helper import ContainerDetailTemplate, DsHelper - - -class BaseExtractProperties(AbstractBaseExtractProperties): - - """ - Base Class for all design objects's common properties extraction. - """ - - # pylint: disable=arguments-differ, too-many-return-statements - def get_alignment( - self, image=None, xmin=None, xmax=None, width=None - ) -> Union[str, None]: - """ - Get the horizontal alignment of the elements by defining a - ratio based on the xmin and xmax center of each object. - if a element's xmin and xmax avg lies within: - 0 - 45 % [ left range ] of the image width - 45 - 55% [ center rance ] of the image width - > 55% [ right range ] of the image width - @param image: input PIL image - @param xmin: xmin of the object detected - @param xmax: xmax of the object detected - @return: position string[Left/Right/Center] - @param width: width of the design element's parent container - """ - avg = math.ceil((xmin + xmax) / 2) - if not width: - width, _ = image.size - - left_range = config.ALIGNMENT_THRESHOLDS.get("left_range") - center_range = config.ALIGNMENT_THRESHOLDS.get("center_range") - # if an object lies within the min and max range of the start or end - # of the parent coordinates then the object is considered as [left - # / right] by default [ for example :to avoid any lengthy textbox - # coming into center when considering the xmin and xmax center] - min_range = width * config.ALIGNMENT_THRESHOLDS.get("minimum_range") - max_range = width * config.ALIGNMENT_THRESHOLDS.get("center_range") - - left_min_condition = math.floor(xmin) <= math.ceil(min_range) - - right_min_condition = math.floor(xmax) >= math.ceil(max_range) - - if image: - if left_min_condition: - return "Left" - if not image: - if left_min_condition and not right_min_condition: - return "Left" - if right_min_condition and not left_min_condition: - return "Right" - if left_min_condition and right_min_condition: - return None - if 0.0 <= (avg / width) < left_range: - return "Left" - if left_range <= (avg / width) < center_range: - return "Center" - return "Right" - - def get_line_alignment( - self, image_data: Dict - ): # pylint: disable=no-self-use - """ - Extracts the alignment of the paragraph text based on the tesseract - detected lines and top index values. - Based on the line number and the left values from the pytesseract o/p - we can check for the distance in left alignments of each line with - the help of the threshold values , bins the alignments values. - @param image_data: tesseract detected text data from image - @return: alignment value - """ - - lines = image_data.get("line_num", []) - left_values = image_data.get("left", []) - line_one_index = lines.index(1) - line_two_index = lines.index(2) - difference_ratio = max( - left_values[line_one_index], left_values[line_two_index] - ) - min(left_values[line_one_index], left_values[line_two_index]) - difference_ratio = difference_ratio / max(left_values) - minimum_range = config.LINE_ALIGNMENT_THRESHOLD.get("minimum") - maximum_range = config.LINE_ALIGNMENT_THRESHOLD.get("maximum") - if difference_ratio < minimum_range: - return "Left" - if minimum_range < difference_ratio < maximum_range: - return "Center" - return "Right" - - def get_text(self, image: Image, coords: Tuple) -> Tuple[str, Any]: - """ - Extract the text from the object coordinates - in the input deisgn image using pytesseract. - @param image: input PIL image - @param coords: tuple of coordinates from which - text should be extracted - @return: ocr text, pytesseract image data - """ - coords = (coords[0] - 5, coords[1], coords[2] + 5, coords[3]) - cropped_image = image.crop(coords) - cropped_image = cropped_image.convert("LA") - - img_data = pytesseract.image_to_data( - cropped_image, lang="eng", config="--psm 6", output_type=Output.DICT - ) - text_list = filter(None, img_data["text"]) - extracted_text = " ".join(text_list).lstrip("#-_*~").strip() - return extracted_text, img_data - - -class FontColor(AbstractFontColor): # pylint: disable=too-few-public-methods - """ - Class handles extraction of font color of respective design element. - """ - - # pylint: disable=too-many-locals - def get_colors(self, image: Image, coords: Tuple) -> str: - """ - Extract the text color by quantaizing the image i.e - [cropped to the coordiantes] into 2 colors mainly - background and foreground and find the closest matching - foreground color. - @param image: input PIL image - @param coords: coordinates from which color needs to be - extracted - - @return: foreground color name - """ - cropped_image = image.crop(coords) - # get 2 dominant colors - q_a = cropped_image.quantize(colors=2, method=2) - dominant_color = q_a.getpalette()[3:6] - - colors = { - "Attention": [ - (255, 0, 0), - (180, 8, 0), - (220, 54, 45), - (194, 25, 18), - (143, 7, 0), - ], - "Accent": [(0, 0, 255), (7, 47, 95), (18, 97, 160), (56, 149, 211)], - "Good": [ - (0, 128, 0), - (145, 255, 0), - (30, 86, 49), - (164, 222, 2), - (118, 186, 27), - (76, 154, 42), - (104, 187, 89), - ], - "Dark": [ - (0, 0, 0), - (76, 76, 76), - (51, 51, 51), - (102, 102, 102), - (153, 153, 153), - ], - "Light": [(255, 255, 255)], - "Warning": [ - (255, 255, 0), - (255, 170, 0), - (184, 134, 11), - (218, 165, 32), - (234, 186, 61), - (234, 162, 33), - ], - } - color = "Default" - found_colors = [] - distances = [] - # find the dominant text colors based on the RGB difference - for key, values in colors.items(): - for value in values: - distance = np.sqrt( - np.sum( - (np.asarray(value) - np.asarray(dominant_color)) ** 2 - ) - ) - if distance <= 150: - found_colors.append(key) - distances.append(distance) - # If the color is predicted as LIGHT check for false cases - # where both dominan colors are White - if found_colors: - index = distances.index(min(distances)) - color = found_colors[index] - if found_colors[index] == "Light": - background = q_a.getpalette()[:3] - foreground = q_a.getpalette()[3:6] - distance = np.sqrt( - np.sum( - (np.asarray(background) - np.asarray(foreground)) ** 2 - ) - ) - if distance < 150: - color = "Default" - return color - - -class ChoiceSetProperty(BaseExtractProperties): - - """ - Class handles extraction of ocr text and alignment property of respective - choice set elements like radio button and checkboxes. - """ - - def checkbox(self, image: Image, coords: Tuple) -> Dict: - """ - Returns the checkbox properties of the extracted design object - @return: property object - """ - text_data = self.get_text(image, coords) - return { - "horizontal_alignment": self.get_alignment( - image=image, xmin=coords[0], xmax=coords[2] - ), - "data": text_data[0], - "image_data": text_data[1], - } - - def radiobutton(self, image: Image, coords: Tuple) -> Dict: - """ - Returns the radio button properties of the extracted design object - @return: property object - """ - return self.checkbox(image, coords) - - -class TextBoxProperty(BaseExtractProperties, FontColor): - """ - Class handles extraction of text properties from all the design elements - like size, weight, colour and ocr text - """ - - def textbox(self, image: Image, coords: Tuple) -> Dict: - """ - Returns the textbox properties of the extracted design object - @return: property object - """ - data, image_data = self.get_text(image, coords) - # Adding uuid to image_data dict - image_data.update(uuid=self.uuid) # pylint: disable=no-member - font_spec = load_instance_with_class_path( - config.FONT_SPEC_REGISTRY[config.ACTIVE_FONTSPEC_NAME] - ) - return { - "horizontal_alignment": self.get_alignment( - image=image, xmin=coords[0], xmax=coords[2] - ), - "data": data, - "image_data": image_data, - "size": font_spec.get_size(image, coords, img_data=image_data), - "weight": font_spec.get_weight(image, coords, img_data=image_data), - "color": self.get_colors(image, coords), - } - - -class ActionSetProperty(BaseExtractProperties): - """ - Class handles extraction of actionset object properties of its - respective design object - """ - - # pylint: disable=no-self-use - def get_actionset_type(self, image: Image, coords: Tuple) -> str: - """ - Returns the actionset style by finding the - closes background color of the obejct - @param image: input PIL image - @param coords: object's coordinate - @return: style string of the actionset - """ - cropped_image = image.crop(coords) - # get 2 dominant colors - quantized = cropped_image.quantize(colors=2, method=2) - # extract the background color - background_color = quantized.getpalette()[:3] - colors = { - "destructive": [ - (255, 0, 0), - (180, 8, 0), - (220, 54, 45), - (194, 25, 18), - (143, 7, 0), - ], - "positive": [ - (0, 0, 255), - (7, 47, 95), - (18, 97, 160), - (56, 149, 211), - ], - } - style = "default" - found_colors = [] - distances = [] - # find the dominant background colors based on the RGB difference - for key, values in colors.items(): - for value in values: - distance = np.sqrt( - np.sum( - (np.asarray(value) - np.asarray(background_color)) ** 2 - ) - ) - if distance <= 150: - found_colors.append(key) - distances.append(distance) - if found_colors: - index = distances.index(min(distances)) - style = found_colors[index] - return style - - def actionset(self, image: Image, coords: Tuple) -> Dict: - """ - Returns the actionset properties of the extracted design object - @return: property object - """ - text_data = self.get_text(image, coords) - return { - "horizontal_alignment": self.get_alignment( - image=image, xmin=coords[0], xmax=coords[2] - ), - "data": text_data[0], - "image_data": text_data[1], - "style": self.get_actionset_type(image, coords), - } - - -class ImageProperty(BaseExtractProperties): - """ - Class handles extraction of image properties from image design object - like image size, image text and its alignment property - """ - - def get_data(self, base64_string) -> str: # pylint: disable=no-self-use - """ - Returns the base64 string for the detected image property object - @param base64_string: input base64 encoded value for the buff object - @return: base64_string appended to filepath - """ - data = f"data:image/png;base64,{base64_string}" - return data - - # pylint: disable=no-self-use - def extract_image_size(self, cropped_image: Image, pil_image: Image) -> str: - """ - Returns the image size value based on the width and height ratios - of the image objects to the actual design image. - @param cropped_image: image object - @param pil_image: input design image - @return: image width value - """ - img_width, img_height = cropped_image.size - width, height = pil_image.size - width_ratio = (img_width / width) * 100 - height_ratio = (img_height / height) * 100 - # if the width and height ratio differs more the 25% return the size as - # Auto - if abs(width_ratio - height_ratio) > 20: - return "Auto" - # select the image size based on the minimum distance with - # the default host config values for image size - keys = list(config.IMAGE_SIZE_RATIOS.keys()) - ratio = (width_ratio, height_ratio) - distances = [ - np.sqrt( - np.sum(((np.asarray(ratio) - np.asarray(tuple(point))) ** 2)) - ) - for point in keys - ] - key = keys[distances.index(min(distances))] - return config.IMAGE_SIZE_RATIOS[key] - - def image(self, image: Image, coords: Tuple) -> Dict: - """ - Returns the image properties of the extracted design object - @return: property object - """ - cropped = image.crop(coords) - buff = BytesIO() - cropped.save(buff, format="PNG") - base64_string = base64.b64encode(buff.getvalue()).decode() - - size = self.extract_image_size(cropped, image) - return { - "horizontal_alignment": self.get_alignment( - image=image, xmin=coords[0], xmax=coords[2] - ), - "data": self.get_data(base64_string), - "size": size, - } - - -# pylint: disable=too-many-ancestors -class CollectProperties( - TextBoxProperty, ChoiceSetProperty, ActionSetProperty, ImageProperty -): - """ - Class handles of property extraction from the identified design - elements. - from all the design elements - extracts text, alignment - from textual elements - extracts size, color, weight - from actionset elements - extracts style based on the background - color - from image objects - extracts image size and image text - """ - - def __init__(self, image=None): - self.pil_image = image - - -class ContainerProperties: - """ - Class handling the needed utility functions for extraction and collection - of different types of container properties - - """ - - def __init__(self, pil_image=None): - self.pil_image = pil_image - - def get_container_properties( - self, - design_object: Union[Dict, List[Dict]], - pil_image, - container_detail: ContainerDetailTemplate, - ) -> List[Dict]: - """ - Method to extract the design properties of the containers objects. - @param design_object: the container object - @param pil_image: input PIL image - @returns: the property updated design element. - @param container_detail: object of the ContainerDetailTemplate - """ - - # TODO: remove the choiceset removal part after the container - # alignment property is added - if isinstance(design_object, list): - for design_obj in design_object: - self.get_container_properties( - design_obj, pil_image, container_detail - ) - - elif ( - isinstance(design_object, dict) - and design_object.get("object", "") in DsHelper.CONTAINERS[:-1] - ): - - container_objects = getattr( - container_detail, design_object.get("object", "") - ) - # TODO: This check will be removed after row-column optimization - if design_object.get("object") == "column": - container_property = None - else: - property_object = getattr(self, design_object.get("object", "")) - container_property = property_object(design_object) - - if container_property: - design_object.update(container_property) - self.get_container_properties( - container_objects(design_object), pil_image, container_detail - ) - return design_object - - # pylint: disable=no-self-use - def get_column_width_keys( - self, - default_config: Dict, - ratio: Tuple, - column_set: Dict, - column_number: int, - ) -> Union[Dict, None]: - """ - Extract the column width key from the default config which is minimum - in distance with the given point / ratio - @param default_config: the default host config dict for column width - @param ratio: the point derived from the column coordinates - @param column_set: dict of columns - @param column_number: the position of the column - """ - keys = list(default_config.keys()) - distances = [ - np.sqrt( - np.sum(((np.asarray(ratio) - np.asarray(tuple(point))) ** 2)) - ) - for point in keys - ] - key = keys[distances.index(min(distances))] - column_set["row"][column_number]["width"] = default_config[key] - return column_set - - # pylint: disable=no-self-use - def _get_mid_distance(self, point1: List, point2: List) -> float: - """ - Returns the mid point - end point distance for a given 2 points - @param point1: coordinates of object one - @param point2: coordinates of object two - @return: mid distance - """ - mid_point1 = np.asarray( - ((point1[0] + point1[2]) / 2, (point1[1] + point1[3]) / 2) - ) - mid_point2 = np.asarray( - ((point2[0] + point2[2]) / 2, (point2[1] + point2[3]) / 2) - ) - - end_point1 = np.asarray( - (min(point1[0], point2[0]), min(point1[1], point2[1])) - ) - end_point2 = np.asarray( - (max(point1[2], point2[2]), max(point1[3], point2[3])) - ) - end_distance = np.sqrt(np.sum(((end_point1 - end_point2) ** 2))) - mid_distance = np.sqrt(np.sum(((mid_point1 - mid_point2) ** 2))) - mid_distance = mid_distance / end_distance - - return mid_distance - - # pylint: disable=no-self-use - def change_column_coordinates(self, column: Dict) -> List: - """ - Change/ return the column coordinates for the new layout generation - method , if the column has the image-set get the element's - coordinates to the coordinates of the 1st image in the image-set. - @param column: column layout structure - @return: column coordinates - """ - if "imageset" in [ - list(item.keys())[0] for item in column.get("column")["items"] - ]: - item_coords = [ - item["imageset"]["items"][0]["coordinates"] - if item["object"] == "imageset" - else item["coordinates"] - for item in column["column"]["items"] - ] - column_coords = [ - min([coord[0] for coord in item_coords]), - min([coord[1] for coord in item_coords]), - max([coord[2] for coord in item_coords]), - max([coord[3] for coord in item_coords]), - ] - return column_coords - return column["coordinates"] - - def extract_column_width( - self, column_set: Dict, image: Image - ) -> Union[None, Dict]: - """ - Extract column width property for the given columnset based on the - mid point distance between 2 design objects. - @param column_set: list of column design objects - @param image: input PIL image - """ - columns = column_set.get("columns", column_set.get("row", [])) - image_width, _ = image.size - for ctr, column in enumerate(columns): - config_file = "" - ratio = () - if ctr + 1 < len(columns): - # if the column is not a last column then calculate the - # mid point distance ratio for the 2 element - first_column = column.get("coordinates", []) - second_column = column_set.get("row", [])[ctr + 1].get( - "coordinates", [] - ) - config_file = config.COLUMN_WIDTH_DISTANCE - mid_ratio = self._get_mid_distance(first_column, second_column) - ratio = (1, mid_ratio) - elif ctr == len(columns) - 1: - # if the column is the last column then calculate the - # xmax / parent_width [ image ] ratio - first_column = self.change_column_coordinates(column) - config_file = config.LAST_COLUMN_THRESHOLD - xmax_ratio = first_column[2] / image_width - ratio = (1, xmax_ratio) - column_set = self.get_column_width_keys( - config_file, ratio, column_set, ctr - ) - - return column_set - - def columnset(self, columnset: Dict) -> Union[None, Dict]: - """ - Updates the container properties for the column-set - - horizontal alignment: based on the horizontal alignment of each column - inside the column-set. - - updates the width property for the columns inside a column-set - @param columnset: Column-set dict - """ - # Columns width extraction for the columns inside the row - return self.extract_column_width(columnset, self.pil_image) - - # pylint: disable=no-self-use - def imageset(self, design_object: Dict) -> Dict: - """ - Returns the image-set container properties - @param design_object: image-set layout structure with merged - image properties - @return: image-set properties dict - """ - sizes = [] - for images in design_object.get("imageset").get("items", []): - sizes.append(images.get("size", "")) - if len(sizes) == len(list(set(sizes))): - size = "Auto" - else: - size = max(sizes, key=sizes.count) - - design_object.update({"size": size}) - return design_object diff --git a/source/pic2card/mystique/extract_properties_abstract.py b/source/pic2card/mystique/extract_properties_abstract.py deleted file mode 100644 index a46dfa26c1..0000000000 --- a/source/pic2card/mystique/extract_properties_abstract.py +++ /dev/null @@ -1,74 +0,0 @@ -""" -Module for all abstract classes used for property extraction -used for providing modularity to the extract properties class. -""" -# pylint: disable=pointless-string-statement -# pylint: disable=missing-function-docstring -# pylint: disable=abstract-method -# pylint: disable=unnecessary-pass - -import abc -from typing import Dict, Tuple -from PIL import Image - - -class AbstractBaseExtractProperties(metaclass=abc.ABCMeta): - """ - Abstract base class for properties. - """ - - @abc.abstractmethod - def get_text(self, image: Image, coords: Tuple): - pass - - @abc.abstractmethod - def get_alignment(self, image: Image, xmin=None, xmax=None): - pass - - -class AbstractFontSizeAndWeight(metaclass=abc.ABCMeta): - """ - Abstract class for extracting the font size property. - """ - - @abc.abstractmethod - def get_size(self, image: Image, coords: Tuple, img_data: Dict): - pass - - """ - Abstract class for extracting the font weight property. - """ - - @abc.abstractmethod - def get_weight(self, image: Image, coords: Tuple): - pass - - -class AbstractFontColor( - metaclass=abc.ABCMeta -): # pylint: disable = too-few-public-methods - """ - Abstract class for extracting the font color property. - """ - - @abc.abstractmethod - def get_colors(self, image: Image, coords: Tuple): - pass - - -class AbstractChoiceExtraction(AbstractBaseExtractProperties): - """ - Abstract class for extracting the property related to Choice buttons. - """ - - pass - - -class AbstractTextExtraction( - AbstractBaseExtractProperties, AbstractFontSizeAndWeight, AbstractFontColor -): - """ - Abstract class for extracting all properties related to text extraction. - """ - - pass diff --git a/source/pic2card/mystique/font_properties.py b/source/pic2card/mystique/font_properties.py deleted file mode 100644 index 58977e6245..0000000000 --- a/source/pic2card/mystique/font_properties.py +++ /dev/null @@ -1,196 +0,0 @@ -""" -Module for extracting the font features like size and weight -can switch for different implementation to obtain font properties -""" - -from typing import Tuple, Dict, List -import statistics -import numpy as np -import cv2 -from PIL import Image -from mystique import default_host_configs -from mystique.extract_properties_abstract import AbstractFontSizeAndWeight - - -def classify_font_weights(design_objects): - """ - Calculates thresholds using normal distribution from font - weights of each design_objects to classify and - returns font weight label accordingly. - @param design_objects: input design objects dictionary - @return: design_objects dictionary with weight labelled - """ - dynamic_thresh = [] - for item in design_objects: - if item["object"] == "textbox": - # For debugging purposes - # print(f"{item['data']}, weight is {item['weight']}") - dynamic_thresh.append(item["weight"][item["uuid"]]) - - if len(set(dynamic_thresh)) > 1: - std = statistics.pstdev(dynamic_thresh) - mean = np.mean(dynamic_thresh) - # Setting threshold limits based on - # difference between mean and std deviation - bold_limit = round(mean + std, 2) - light_limit = round(mean - std, 2) - - else: - bold_limit = default_host_configs.FONT_WEIGHT_MORPH["bolder"] - light_limit = default_host_configs.FONT_WEIGHT_MORPH["lighter"] - - for item in design_objects: - if item["object"] == "textbox": - if item["weight"][item["uuid"]] < light_limit: - item["weight"] = "Lighter" - elif item["weight"][item["uuid"]] >= bold_limit: - item["weight"] = "Bolder" - else: - item["weight"] = "Default" - return design_objects - - -class FontPropBoundingBox(AbstractFontSizeAndWeight): - """ - Class handles extraction of font size and weight using contours - from pytesseract image to data api - """ - - @staticmethod - def get_bbox_properties(img_data: Dict) -> Tuple[List, List]: - """ - Static method to get list of font height and weight - from the pytesseract image data dictionary - @param : img_data - @return : box_height and box_width - """ - box_height = [] - box_width = [] - n_boxes = len(img_data["level"]) - for i in range(n_boxes): - if len(img_data["text"][i]) > 1: # to ignore img with wrong bbox - (_, _, char_w, char_h) = ( - img_data["left"][i], - img_data["top"][i], - img_data["width"][i], - img_data["height"][i], - ) - # h = text_size_processing(img_data['text'][i], h) - # Approximate character width - char_w = char_w / len(img_data["text"][i]) - box_height.append(char_h) - box_width.append(char_w) - - return box_height, box_width - - def get_size(self, image: Image, coords: Tuple, img_data: Dict) -> str: - """ - Extract the size by taking an average of - ratio of height of each character to height - input image using pytesseract - - @param image : input PIL image - @param coords: list of coordinated from which - text and height should be extracted - @param img_data : input image data from pytesseract - @return: size - """ - _, image_height = image.size - box_height = self.get_bbox_properties(img_data)[0] - font_size = default_host_configs.FONT_SIZE - # Handling of unrecognized characters - if not box_height: - heights_ratio = font_size["default"] - else: - heights = int(np.mean(box_height)) - heights_ratio = round((heights / image_height), 4) - - if font_size["small"] < heights_ratio < font_size["default"]: - size = "Small" - elif font_size["default"] < heights_ratio < font_size["medium"]: - size = "Default" - elif font_size["medium"] < heights_ratio < font_size["large"]: - size = "Medium" - elif font_size["large"] < heights_ratio < font_size["extralarge"]: - size = "Large" - elif font_size["extralarge"] < heights_ratio: - size = "ExtraLarge" - else: - size = "Default" - - return size - - # pylint: disable=arguments-differ - def get_weight(self, image: Image, coords: Tuple, img_data: Dict) -> str: - """ - Extract the weight by taking an average of - ratio of width of each character to image width from - input image using pytesseract - - @param image : input PIL image - @param coords: list of coordinated from which - text and width should be extracted - @param img_data : input image data from pytesseract - @return: weight - """ - image_width, _ = image.size - # using the box width list that has each character width of input text - box_width = self.get_bbox_properties(img_data)[1] - # Handling of unrecognized characters - if not box_width: - weights_ratio = default_host_configs.FONT_WEIGHT_BBOX["default"] - else: - weights = int(np.mean(box_width)) - weights_ratio = round((weights / image_width), 4) - - return {img_data["uuid"]: weights_ratio} - - -class FontPropMorph(FontPropBoundingBox): - """ - Class handles extraction of font weight property - using morphology operations. - """ - - # pylint: disable=too-many-locals - def get_weight(self, image: Image, coords: Tuple, img_data: None) -> str: - """ - Extract the weight of the each words by - skeletization applying morph operations on - the input image - - @param image : input PIL image - @param coords: list of coordinated from which - text and height should be extracted - @return: weight - """ - cropped_image = image.crop(coords) - c_img = np.asarray(cropped_image) - # """ - # if(image_height/image_width) < 1: - # y_scale = round((800/image_width), 2) - # x_scale = round((500/image_height), 2) - # c_img = cv2.resize(c_img, (0, 0), fx=x_scale, fy=y_scale) - # """ - gray = cv2.cvtColor(c_img, cv2.COLOR_BGR2GRAY) - # Converting input image to binary format - _, img = cv2.threshold(gray, 200, 255, cv2.THRESH_BINARY_INV) - area_of_img = np.count_nonzero(img) - # creating an empty skeleton - skel = np.zeros(img.shape, np.uint8) - kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (3, 3)) - # Loop until erosion leads to thinning text in image to singular pixel - while True: - morph_open = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel) - temp = cv2.subtract(img, morph_open) - eroded = cv2.erode(img, kernel) - skel = cv2.bitwise_or(skel, temp) - img = eroded.copy() - # if no white pixels left the image has been completely eroded - if cv2.countNonZero(img) == 0: - break - # length of the lines in text - area_of_skel = np.sum(skel) / 255 - # width of line = area of the line / length of the line - thickness = round(area_of_img / area_of_skel, 2) - return {img_data["uuid"]: thickness} diff --git a/source/pic2card/mystique/image_extraction.py b/source/pic2card/mystique/image_extraction.py deleted file mode 100644 index e776f67463..0000000000 --- a/source/pic2card/mystique/image_extraction.py +++ /dev/null @@ -1,331 +0,0 @@ -"""Module for image extraction inside the card design""" - -import base64 -from typing import List, Tuple -import os -import sys -from io import BytesIO - -import numpy as np -import cv2 -from PIL import Image - -from mystique import config - - -class ImageExtraction: - """ - Class to identify the edges in the design image and filtering out the - faster rcnn objects to obtain the image object boundaries and to add - the cropped out image obejcts as base64 to the card paylaod json. - """ - - # pylint: disable=no-self-use - def find_points(self, coord1, coord2, for_image=None): - """ - Finds the intersecting bounding boxes by finding - the highest x and y ranges of the 2 coordinates - and determine the intersection by deciding weather - the new xmin>xmax or the new ymin>ymax. - For non image objects, includes finding the intersection - area to a thersold to determine intersection - - @param coord1: list of coordinates of 1st object - @param coord2: list of coordinates of 2nd object - @param for_image: boolean to differentiate non image - objects - @return: True/False - """ - x5_ = max(coord1[0], coord2[0]) - y5_ = max(coord1[1], coord2[1]) - x6_ = min(coord1[2], coord2[2]) - y6_ = min(coord1[3], coord2[3]) - if x5_ > x6_ or y5_ > y6_: - return False - - if for_image: - return True - intersection_area = (x6_ - x5_) * (y6_ - y5_) - point1_area = (coord1[2] - coord1[0]) * (coord1[3] - coord1[1]) - point2_area = (coord2[2] - coord2[0]) * (coord2[3] - coord2[1]) - if ( - intersection_area / point1_area > 0.55 - or intersection_area / point2_area > 0.55 - ): - return True - return False - - # pylint: disable=no-self-use - def check_contains( - self, point1: Tuple, point2: Tuple, between_models=False - ): - """ - Check if a point[coordinates of an object] is inside another - point or not - - @param point1: Tuple of coordinates - @param point2: Tuple of coordinates - @param between_models: A Boolean for check within image objects or - between the RCNN and image model. - [ default - Flase i.e by default it's done - within image objects] - @return: True/False - """ - x_range = min(point2[0], point2[2]), max(point2[0], point2[2]) - y_range = min(point2[1], point2[3]), max(point2[1], point2[3]) - contains = ( - x_range[0] <= point1[0] <= x_range[1] - and x_range[0] <= point2[2] <= x_range[1] - ) and ( - y_range[0] <= point1[1] <= y_range[1] - and y_range[0] <= point2[3] <= y_range[1] - ) - if between_models: - return contains or ( - (point2[0] <= point1[0] + 5 <= point2[2]) - and (point2[1] <= point1[1] + 5 <= point2[3]) - ) - return contains - - def remove_noise_objects(self, points: List[Tuple]): - """ - Removes all noisy objects by eliminating all smaller and intersecting - objects within / with the bigger objects. - - @param points: list of detected object's coordinates. - - @return points: list of filtered objects coordinates - """ - positions_to_delete = [] - intersection_combination = [] - for i in range(len(points)): # pylint: disable=too-many-nested-blocks - for j in range(len(points)): - if j < len(points) and i < len(points) and i != j: - box1 = [float(c) for c in points[i]] - box2 = [float(c) for c in points[j]] - intersection = self.find_points(box1, box2, for_image=True) - contain = self.check_contains(box1, box2) - if intersection or contain: - if (i, j) not in intersection_combination: - # remove the smallest box - box1_area = (box1[2] - box1[0]) * ( - box1[3] - box1[1] - ) - box2_area = (box2[2] - box2[0]) * ( - box2[3] - box2[1] - ) - if ( - box1_area > box2_area - and j not in positions_to_delete - ): - positions_to_delete.append(j) - intersection_combination.append((i, j)) - elif ( - box1_area # pylint: disable=comparison-with-itself - < box1_area - and i not in positions_to_delete - ): - positions_to_delete.append(i) - intersection_combination.append((i, j)) - points = [ - p for ctr, p in enumerate(points) if ctr not in positions_to_delete - ] - return points - - def image_edge_detection( - self, image: Image - ): # pylint: disable=no-self-use, too-many-locals - """ - Detecs the image edges from the design. - - @param image: input open-cv image - - @return image_points: list of image objects coordinates - """ - image_points = [] - # pre processing - gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) - dst = cv2.equalizeHist(gray) - blur = cv2.GaussianBlur(dst, (5, 5), 0) - _, im_th = cv2.threshold(blur, 150, 255, cv2.THRESH_BINARY) - # Set the kernel and perform opening - # k_size = 6 - kernel = np.ones((5, 5), np.uint8) - - opened = cv2.morphologyEx(im_th, cv2.MORPH_OPEN, kernel) - # edge detection - edged = cv2.Canny(opened, 0, 255) - # countours - _, contours, _ = cv2.findContours( - edged, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE - ) - # get the coords of the contours - for con in contours: - (x_ax, y_ax, w_ax, h_ax) = cv2.boundingRect(con) - image_points.append((x_ax, y_ax, x_ax + w_ax, y_ax + h_ax)) - - return image_points - - def remove_model_intersection( - self, - points1: List[Tuple], - points2: List[Tuple], - included_points_positions: List, - image_first: bool, - ): - """ - Removes all image object's intersecting or containing the rcnn - detected objects. - - @param points1: list of detected image or rcnn model objects coordinates - @param points2: list of detected image or rcnn model objects coordinates - @param included_points_positions: list of binray values for maintaing - the position of the points that - intersects. - @param image_first: Boolean value to determine the image object points - among points1 and points2 - """ - - for point1_ctr, point1 in enumerate(points1): - for point2_ctr, point2 in enumerate(points2): - if not image_first: - intersection = self.find_points( - point1, point2, for_image=True - ) - else: - intersection = False - contains = self.check_contains( - point1, point2, between_models=True - ) - if contains or intersection: - if image_first: - included_points_positions[point1_ctr] = 1 - else: - included_points_positions[point2_ctr] = 1 - - def get_image_with_boundary_boxes( - self, - image=None, - detected_coords=None, - pil_image=None, - faster_rcnn_image=None, - ): - """ - Returns the Detected image object boundary boxes along with - faster rcnn detected boxes. - - @param image: input open-cv image - @param detected_coords: list of detected - object's coordinates from faster rcnn model - @param pil_image: Input PIL image - @param faster_rcnn_image: image with faster rcnn detected object's - boundary boxes - """ - image_points = self.image_edge_detection(image) - - included_points_positions = [0] * len(image_points) - self.remove_model_intersection( - image_points, detected_coords, included_points_positions, True - ) - self.remove_model_intersection( - detected_coords, image_points, included_points_positions, False - ) - - # remove the included points in intersection removal - image_points1 = [] - for ctr, point in enumerate(image_points): - if included_points_positions[ctr] != 1: - image_points1.append(point) - image_points = sorted(set(image_points1), key=image_points1.index) - - # If the design boundary is detected as image object remove it - width, height = pil_image.size - widths = [point[2] - point[0] for point in image_points] - heights = [point[3] - point[1] for point in image_points] - for ctr, wid in enumerate(widths): - if ((wid * heights[ctr]) / (width * height)) * 100 >= 70.0: - del image_points[ctr] - image_points = self.remove_noise_objects(image_points) - - for point in image_points: - cv2.rectangle( - faster_rcnn_image, - (point[0], point[1]), - (point[2], point[3]), - (0, 0, 255), - 2, - ) - - def detect_image(self, image=None, detected_coords=None, pil_image=None): - """ - Returns the Detected image coordinates by buidling - countours over the design edge detection and on removing - the faster rcnn model detected obects. - - @param image: input open-cv image - @param detected_coords: list of detected - object's coordinates from faster - rcnn model - @param pil_image: Input PIL image - - @return: list of image object coordinates - """ - image_points = self.image_edge_detection(image) - - included_points_positions = [0] * len(image_points) - self.remove_model_intersection( - image_points, detected_coords, included_points_positions, True - ) - self.remove_model_intersection( - detected_coords, image_points, included_points_positions, False - ) - - # remove the included points in intersection removal - image_points1 = [] - for ctr, point in enumerate(image_points): - if included_points_positions[ctr] != 1: - image_points1.append(point) - image_points = sorted(set(image_points1), key=image_points1.index) - - # If the design boundary is detected as image object remove it - width, height = pil_image.size - widths = [point[2] - point[0] for point in image_points] - heights = [point[3] - point[1] for point in image_points] - for ctr, wid in enumerate(widths): - if ((wid * heights[ctr]) / (width * height)) * 100 >= 70.0: - del image_points[ctr] - image_points = self.remove_noise_objects(image_points) - - return image_points - - # pylint: disable=no-self-use - def image_crop_get_url(self, coords=None, image=None): - """ - Crops the individual image objects from the input - design and get the hosted url of the images. - - @param coords: list of image points - @param image: input PIL image - - @return: list of image urls. - """ - images_urls = [] - images_sizes = [] - for ( - coords # pylint: disable=redefined-argument-from-local - ) in coords: # pylint: disable = undefined-variable - cropped = image.crop((coords[0], coords[1], coords[2], coords[3])) - images_sizes.append(cropped.size) - buff = BytesIO() - cropped.save(buff, format="PNG") - base64_string = base64.b64encode(buff.getvalue()).decode() - images_urls.append(f"data:image/png;base64,{base64_string}") - - # Place default image holder if image object size is greater - # than 1MB - size = sys.getsizeof(base64_string) - if size >= config.IMG_MAX_HOSTING_SIZE: - images_urls.append(config.DEFAULT_IMG_HOSTING) - if os.path.exists("image_detected.png"): - os.remove("image_detected.png") - return images_urls, images_sizes diff --git a/source/pic2card/mystique/initial_setups.py b/source/pic2card/mystique/initial_setups.py deleted file mode 100644 index f576b8d6e8..0000000000 --- a/source/pic2card/mystique/initial_setups.py +++ /dev/null @@ -1,36 +0,0 @@ -""" Module for setting up the tensorflow graphs and tensors for faster - rcnn object detection -""" -import tensorflow as tf -from mystique import config - - -def set_graph_and_tensors( - tensors=("detection_boxes", "detection_scores", "detection_classes") -): - """ - setting up tf graphs and tensors using the trained inference graph - - @param tensors: required tensors from inference graph - - :return: detection_graph, category_index, tensor_dict - """ - tensor_dict = dict() - detection_graph = tf.Graph() - # setting up default graph with graphs from inference graph - with detection_graph.as_default() as default_graph: # pylint: disable=not-context-manager - od_graph_def = tf.compat.v1.GraphDef() - with tf.compat.v1.gfile.GFile(config.TF_FROZEN_MODEL_PATH, "rb") as fid: - serialized_graph = fid.read() - od_graph_def.ParseFromString(serialized_graph) - tf.import_graph_def(od_graph_def, name="") - ops = default_graph.get_operations() - all_tensor_names = {output.name for op in ops for output in op.outputs} - for tensor in tensors: - tmp_tensor_name = tensor + ":0" - if tmp_tensor_name in all_tensor_names: - tensor_dict[tensor] = default_graph.get_tensor_by_name( - tmp_tensor_name - ) - - return detection_graph, tensor_dict diff --git a/source/pic2card/mystique/metrics/cosine_similarity.py b/source/pic2card/mystique/metrics/cosine_similarity.py deleted file mode 100644 index b2de3071bf..0000000000 --- a/source/pic2card/mystique/metrics/cosine_similarity.py +++ /dev/null @@ -1,201 +0,0 @@ -"""Module to Calculate Cosine similarity between the testing and - generated card json -""" -import os -import re -import argparse -import json - - -from sklearn.feature_extraction.text import CountVectorizer -from sklearn.metrics.pairwise import cosine_similarity - -from mystique.predict_card import PredictCard - - -model_path = os.path.join( - os.path.dirname(__file__), "../model/frozen_inference_graph.pb" -) -label_path = os.path.join( - os.path.dirname(__file__), "../mystique/training/object-detection.pbtxt" -) - - -def build_generated_card_json(images, path, testing_file_path): - """ - Build the generated card json file from the list of testing images - by hiting the api and parsing the card body from the response - - @param images: list of imae filenames - @param path: folder path of the images - @param testing_file_path: testing jl file path - """ - parent = os.path.dirname(testing_file_path) - generated_images = [] - # pylint: disable=bad-option-value,consider-using-with - generated_jsonlines_file = open(parent + "/generated_card_json.jl", "w") - for image in images: - print(path + image) - if image not in generated_images: - # with open(path+image, "rb") as image_file: - # base64_string = base64.b64encode(image_file.read()).decode() - # pylint: disable=unexpected-keyword-arg - response = PredictCard().main( - image_path=path + image, - frozen_graph_path=model_path, - labels_path=label_path, - ) - content = { - "filename": str(image), - "card_json": response.json().get("card_json"), - } - generated_jsonlines_file.write(json.dumps(content)) - generated_jsonlines_file.write("\n") - - -def get_cosine_sim(*strs): - """ - Returns the cosine similarity score of the - given 2 strings - - @param *strs: variable agrument parameter for - list of strings - @return: similarity score - - """ - vectors = [ - t - for t in get_vectors(*strs) # pylint: disable=unnecessary-comprehension - ] - return cosine_similarity(vectors)[0][1] - - -def get_vectors(*strs): - """ - Returns the vectorized values of the text - - @param *strs: variable agrument parameter for - list of strings - @return: the vectorized text ndarray - """ - text = [t for t in strs] # pylint: disable=unnecessary-comprehension - vectorizer = CountVectorizer(text) # pylint: disable=too-many-function-args - vectorizer.fit(text) - return vectorizer.transform(text).toarray() - - -def get_jaccard_sim(str1, str2): - """ - Returns the jaccard similarity between the test and generated card - json - - @param str1: string one - @param str2: string two - - @return: jaccard score - """ - str1_set = set(str1.split()) - str2_set = set(str2.split()) - intersection = str1_set.intersection(str2_set) - return float(len(intersection)) / ( - len(str1_set) + len(str2_set) - len(intersection) - ) - - -def main(testing_file_path, testing_images_path): - """.Generating Cosine Similarity, Avg "Cosine Similarity, - Jaggard Similarity, Average Jaccard Similarity""" - - # Input testing json lines file consists of lines of json with 2 keys - # filename and card_json for each design image - testing_jsonlines = open(testing_file_path, "r").readlines() - images = [] - for josnline in testing_jsonlines: - json_obj = json.loads(josnline) - filename = json_obj.get("filename", "") - images.append(filename) - - # Build the json lines of generated card jsons of the input images - build_generated_card_json(images, testing_images_path, testing_file_path) - - if os.path.exists( - os.path.dirname(testing_file_path) + "/generated_card_json.jl" - ): - generated_jsonlines = open("generated_card_json.jl", "r").readlines() - cosine_similarities = {}.fromkeys(images, "") - jaccard_similarities = {}.fromkeys(images, "") - - pattern = re.compile(r"\"\s*url\s*\"\s*\:\s*\"[^\"]*\"", re.IGNORECASE) - for line in testing_jsonlines: - json_obj = json.loads(line) - test_card_json = json_obj.get("card_json", "") - filename = json_obj.get("filename", "") - generated_card_json = "" - for gen_jsonline in generated_jsonlines: - if json.loads(gen_jsonline).get("filename", "") == filename: - generated_card_json = json.loads(gen_jsonline).get( - "card_json", "" - ) - break - test_card_json = re.sub( - pattern, 'url": ""', json.dumps(test_card_json) - ) - generated_card_json = re.sub( - pattern, 'url": ""', json.dumps(generated_card_json) - ) - cosine_similarities[filename] = str( - get_cosine_sim(test_card_json, generated_card_json) - ) - jaccard_similarities[filename] = str( - get_jaccard_sim(test_card_json, generated_card_json) - ) - - print( - "Cosine Similarities:\n", - json.dumps(cosine_similarities, indent=2), - ) - print( - "Average Cosine Similarity:", - ( - sum( - [float(ll) for ll in list(cosine_similarities.values())] - ) - / len(list(cosine_similarities.values())) - ) - * 100, - ) - print( - "Jaccard Similarities:\n", - json.dumps(jaccard_similarities, indent=2), - ) - print( - "Average Jaccard Similarity:", - ( - sum( - [ - float(ll) - for ll in list(jaccard_similarities.values()) - ] - ) - / len(list(jaccard_similarities.values())) - ) - * 100, - ) - - else: - print("Generated card json files not found") - - -if __name__ == "__main__": - - parser = argparse.ArgumentParser(description="Cosine Similarity") - parser.add_argument( - "--testing_file_path", required=True, help="Enter Test File Path" - ) - parser.add_argument( - "--testing_images_path", - required=True, - help="Enter Test Images Folder Path", - ) - args = parser.parse_args() - main(args.testing_file_path, args.testing_images_path) diff --git a/source/pic2card/mystique/models/pth/detr/README.md b/source/pic2card/mystique/models/pth/detr/README.md deleted file mode 100644 index 0347300f1b..0000000000 --- a/source/pic2card/mystique/models/pth/detr/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# DETR Model From Facebook - -DETR is a new type of architecture used to train the object detection models -using the Transformers, and provides end-to-end design specification. - - -This model supports the COCO data format, so we have build our custom data in -coco standards and trained our model. - - -## Training Process - -Before proceeding to training We need two things -1. Clone the detr project from github -2. Prepare the coco datasets for our custom data. - - -```bash -git clone https://github.com/facebookresearch/detr - -# For dataset, Use Labelmg to label the images and use the voc2coco command -# to conver the data to coco format. - -python -m commands.voc2coco ./labelmg_img_foler .json -``` - -### Training command - -Play with the different hyper parameters to find the best model possible from -our data. - -We have mainly played with the learning rate and epoch to get better model out -of it. The model pipeline has inbuilt data transformations to prevent -over fitting the training data. - - -```bash -python main.py --dataset_file pic2card \ - --coco_path ./train_and_test-2020-Jun-05-coco \ - --epochs 150 \ - --lr=1e-4 \ - --batch_size=2 \ - --num_queries=100 \ - --output-dir=outputs-`date +%F-%s` \ - --lr_drop 20 \ - --resume=detr-r50_no-class-head.pth -``` - -## Inference Options - -We are using torchscript to do the inference. Which provides the best way to -serialize and share the trained model without any dependencies to the training -pipeline. This means we can train the model using the `detr` repo and use the -exported model for inference by simply load it under torch. - -We can load this torchscript version of the model via libtorch, that means -without any python dependency we can do the optimal inference. - - -NOTE: We are keeping the exported models in google drive, please download it to serve -the detr based pic2card geeneration - - -## Notebooks - -Please check the `/notebooks/DETR.ipynb` to do the model inference -and evaluation pipelines. diff --git a/source/pic2card/mystique/models/pth/detr/predict.py b/source/pic2card/mystique/models/pth/detr/predict.py deleted file mode 100644 index 7f6e127112..0000000000 --- a/source/pic2card/mystique/models/pth/detr/predict.py +++ /dev/null @@ -1,70 +0,0 @@ -""" -Inference APIs for the trained models. -""" - -from typing import Callable -import torch -import torchvision.transforms as T -from PIL import Image - - -# Image Transform before inference. -transform = T.Compose( - [ - T.Resize(800), - T.ToTensor(), - T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]), - ] -) - - -def box_cxcywh_to_xyxy(x_a): # pylint: disable=no-member - """for output bounding box post-processing""" - - x_c, y_c, w_d, h_e = x_a.unbind(1) - bbb = [ - (x_c - 0.5 * w_d), - (y_c - 0.5 * h_e), - (x_c + 0.5 * w_d), - (y_c + 0.5 * h_e), - ] - return torch.stack(bbb, dim=1) # pylint: disable=no-member - - -def rescale_bboxes(out_bbox, size): - """For Rescaling the bboxes""" - img_w, img_h = size - bbb = box_cxcywh_to_xyxy(out_bbox) - # pylint: disable=not-callable, disable=no-member - bbb = bbb * torch.tensor( - [img_w, img_h, img_w, img_h], - dtype=torch.float32, - ) # pylint: disable=no-member, not-callable - return bbb - - -def detect( - image: Image, model: Callable, transform: Callable, threshold=0.8 -): # pylint: disable=redefined-outer-name - """ - @param img: PIL Image - @param model: A Serialized callable, exported using torchscript. - @param transform: Data transformer function. - @param threshold: Confidence of bbox prediction. - """ - # mean-std normalize the input image (batch-size: 1) - image_tnsr = transform(image).unsqueeze(0) - - # propagate through the model - outputs = model(image_tnsr) - - # keep only predictions with 0.7+ confidence - # Skip the default background class added at train time. - probas = outputs["pred_logits"].softmax(-1)[0, :, :-1] - keep = probas.max(-1).values > threshold - - # convert boxes from [0; 1] to image scales - bboxes_scaled = rescale_bboxes(outputs["pred_boxes"][0, keep], image.size) - # bboxes = box_cxcywh_to_xyxy(outputs['pred_boxes'][0, keep]) - - return probas[keep], bboxes_scaled diff --git a/source/pic2card/mystique/models/pth/detr/transforms.py b/source/pic2card/mystique/models/pth/detr/transforms.py deleted file mode 100644 index bbc16bfe83..0000000000 --- a/source/pic2card/mystique/models/pth/detr/transforms.py +++ /dev/null @@ -1,3 +0,0 @@ -""" -Data transforms for inference pipeline -""" diff --git a/source/pic2card/mystique/models/pth/detr_cpp/CMakeLists.txt b/source/pic2card/mystique/models/pth/detr_cpp/CMakeLists.txt deleted file mode 100644 index 2ed498fb1b..0000000000 --- a/source/pic2card/mystique/models/pth/detr_cpp/CMakeLists.txt +++ /dev/null @@ -1,35 +0,0 @@ -cmake_minimum_required(VERSION 3.0 FATAL_ERROR) -project(detr) - -add_subdirectory(pybind11) -find_package (Python COMPONENTS Development) -find_package(OpenCV REQUIRED) -find_package(Torch REQUIRED) - -message(STATUS "Pytorch status: ") -message(STATUS " libraries: ${TORCH_LIBRARIES}") -message(STATUS " include path: ${TORCH_INCLUDE_DIRS}") - -message(STATUS "Python status: ") -message(STATUS " libraries: ${Python_LIBRARIES}") -message(STATUS " include path: ${Python_INCLUDE_DIRS}") - -message(STATUS "OpenCV library status:") -message(STATUS " version: ${OpenCV_VERSION}") -message(STATUS " libraries: ${OpenCV_LIBS}") -message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}") - - -#SET (CMAKE_EXE_LINKER_FLAGS "-static") - -include_directories(${OpenCV_INCLUDE_DIRS}) -include_directories(${TORCH_INCLUDE_DIRS}) -include_directories(${Python_INCLUDE_DIRS}) - -add_executable(detr main.cpp) -# pybind11_add_module(detr detr.cpp) - -target_link_libraries(detr PRIVATE ${OpenCV_LIBS}) -target_link_libraries(detr PRIVATE ${TORCH_LIBRARIES}) -target_link_libraries(detr PRIVATE ${Python_LIBRARIES}) -set_property(TARGET detr PROPERTY CXX_STANDARD 14) \ No newline at end of file diff --git a/source/pic2card/mystique/models/pth/detr_cpp/README.md b/source/pic2card/mystique/models/pth/detr_cpp/README.md deleted file mode 100644 index dbcbd9d441..0000000000 --- a/source/pic2card/mystique/models/pth/detr_cpp/README.md +++ /dev/null @@ -1,75 +0,0 @@ -## Torchscript based Inference - -Here we are trying to evaluate the benefits of using libtorch to handle the -model inference part. - - -## Dependencies - -1. Opencv 3.2+ -2. torch 1.6+ -3. Detr Model trace file. -4. g++7 and above. - - -You need to download the C++-11 ABI compatible libtorch, and latest opencv to -link all the libraries correctly. - -Opencv you can download from source and install it in local path, so that we can -link our library. As mentioned libtorch is already build one, only thing need to -be take care is the ABI compatibility. - - - - -## Integration with pic2card - -Model inference is the first stage of the pic2card pipeline and all the pic2card -implementation are in python, we have to expose the c++ inference model to -python ecosystem back, in this case we are skipping all other requirements of -the python torch library. - -This can be done multiple ways, looking into ways to expose the model interface -as a python module. - - -## Build the detr cpp inference python binding - -To build this cpp extension you requires the torch python package, after -building you can remove that dependency except for those dynamic linked -libraries comes with the torch package. Initially we will keep both, eventually -for the production pipeline we can remove the dependency on the pytorch -dependency instead using the libtorch. - - -```bash - pip install torch torchvision - apt-get install libopencv-core-dev libopencv-imgproc-dev - - # Install the detr package into your python environment. - python setup.py install -``` - -## To run the Pic2card with this new inference pipeline - -```bash -# From the root dir of pic2card -ACTIVE_MODEL_NAME=pth_detr_cpp python -m app.main -``` - -## Debug Build and testing - -Building a executable able testing without attaching to the python would be -required to debug problems at the c++ world in much easier fashion, for that use -this camke based build and corresponding executable. - -```bash -mkdir build -cd build -cmake -DCMAKE_PREFIX_PATH="/libtorch" -cmake --build . --config Release --verbose - -# The model path and image path are supplied via variables now. -./deter -.. -``` diff --git a/source/pic2card/mystique/models/pth/detr_cpp/detr.cpp b/source/pic2card/mystique/models/pth/detr_cpp/detr.cpp deleted file mode 100644 index 5bf219d2ff..0000000000 --- a/source/pic2card/mystique/models/pth/detr_cpp/detr.cpp +++ /dev/null @@ -1,143 +0,0 @@ -#include -#include - -#include "detr.hpp" - -cv::Mat addmat(cv::Mat &lhs, cv::Mat &rhs) -{ - return lhs + rhs; -} - -struct Detr -{ - - std::string model_path; - torch::jit::script::Module model; - - Detr(const std::string &model_path) : model_path(model_path) - { - loadModel(); - } - - const std::string &getModelPath() - { - return model_path; - } - - void loadModel() - { - model = torch::jit::load(model_path); - } - - /** - * Resize the image without lossing the aspect ratio, and ensure the dimentions - * won't over shoot due to higher or lower aspect ratio. - * - * max_size should be greater than the size. - * - * width / height == newW / newH - **/ - std::vector getNewSize(uint width, uint height, uint size, uint max_size) - { - - uint newW = width; - uint newH = height; - float aspect_ratio; - - if (max_size < size) - { - max_size = size; - } - aspect_ratio = (float)width / (float)height; - - // Ensure size not crossing the max_size. - if (aspect_ratio * size > max_size) - { - size = (uint)round(max_size * (1 / aspect_ratio)); - } - - if (width < height) - { - newH = size; - // aspect_ratio < 1 - newW = (uint)(size * aspect_ratio); - } - else if (width > height) - { - newW = size; - newH = (uint)(size / aspect_ratio); - } - else - { - newW = size; - newH = size; - } - - return {newW, newH}; - } - - const std::vector predict(cv::Mat &image) - { - cv::cvtColor(image, image, cv::COLOR_BGR2RGB); - image.convertTo(image, CV_32FC3, 1.0f / 255.0f); - - // (width, height) - std::vector imsize = getNewSize(image.cols, image.rows, 800, 1333); - - // Resize the image. - cv::Size scale(imsize[0], imsize[1]); - cv::resize(image, image, scale); - - torch::Tensor imTensor = torch::from_blob( - image.data, - {1, - imsize[1], // height - imsize[0], // width - 3}); - - // BGR -> RGB - imTensor = imTensor.permute({0, 3, 1, 2}); - - // Imagenet normalisation - imTensor[0][0] = imTensor[0][0].sub_(0.485).div_(0.229); - imTensor[0][1] = imTensor[0][1].sub_(0.456).div_(0.224); - imTensor[0][2] = imTensor[0][2].sub_(0.406).div_(0.225); - - std::vector inputs; - inputs.push_back(imTensor); - auto outDict = model.forward(inputs).toGenericDict(); - - torch::Tensor predLogits = outDict.at("pred_logits") - .toTensor() - .squeeze() - .softmax(-1); - - // predLogits = predLogits.narrow(1, 0, predLogits.size(1) - 1); - torch::Tensor predBoxes = outDict.at("pred_boxes").toTensor().squeeze(); - - // // Map the torch::Tensor to cv::Mat, helps to avoid torch package dependency at python side. - predLogits = predLogits.to(torch::kCPU).to(torch::kF32); - cv::Mat cvMatLogits(predLogits.size(0), predLogits.size(1), CV_32F); - std::memcpy((void *)cvMatLogits.data, predLogits.data_ptr(), sizeof(float) * predLogits.numel()); - - predBoxes = predBoxes.to(torch::kCPU).to(torch::kF32); - cv::Mat cvMatBoxes(predBoxes.size(0), predBoxes.size(1), CV_32F); - std::memcpy((void *)cvMatBoxes.data, predBoxes.data_ptr(), sizeof(float) * predBoxes.numel()); - - return {cvMatLogits, cvMatBoxes}; - } -}; - -PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) -{ - m.def("addmat", &addmat, "add two matrix"); - - py::class_(m, "Detr") - .def(py::init()) - .def("get_model_path", &Detr::getModelPath) - .def_readonly("model_path", &Detr::model_path) - // .def("load", &Detr::loadModel) - .def("get_new_size", &Detr::getNewSize) - .def("predict", &Detr::predict) - .def_readonly("model", &Detr::model); -} diff --git a/source/pic2card/mystique/models/pth/detr_cpp/detr.hpp b/source/pic2card/mystique/models/pth/detr_cpp/detr.hpp deleted file mode 100644 index 6cb95cf7b2..0000000000 --- a/source/pic2card/mystique/models/pth/detr_cpp/detr.hpp +++ /dev/null @@ -1,119 +0,0 @@ -// Reusing the type conversion from https://github.com/ausk/keras-unet-deploy/tree/master -#pragma once - -#include -#include - -#include -#include -#include - -namespace py = pybind11; - -namespace pybind11 -{ - namespace detail - { - template <> - struct type_caster - { - public: - PYBIND11_TYPE_CASTER(cv::Mat, _("numpy.ndarray")); - - //! 1. cast numpy.ndarray to cv::Mat - bool load(handle obj, bool) - { - array b = reinterpret_borrow(obj); - buffer_info info = b.request(); - - int nh = 1; - int nw = 1; - int nc = 1; - int ndims = info.ndim; - if (ndims == 2) - { - nh = info.shape[0]; - nw = info.shape[1]; - } - else if (ndims == 3) - { - nh = info.shape[0]; - nw = info.shape[1]; - nc = info.shape[2]; - } - else - { - throw std::logic_error("Only support 2d, 2d matrix"); - return false; - } - - int dtype; - if (info.format == format_descriptor::format()) - { - dtype = CV_8UC(nc); - } - else if (info.format == format_descriptor::format()) - { - dtype = CV_32SC(nc); - } - else if (info.format == format_descriptor::format()) - { - dtype = CV_32FC(nc); - } - else - { - throw std::logic_error("Unsupported type, only support uchar, int32, float"); - return false; - } - value = cv::Mat(nh, nw, dtype, info.ptr); - return true; - } - - //! 2. cast cv::Mat to numpy.ndarray - static handle cast(const cv::Mat &mat, return_value_policy, handle defval) - { - std::string format = format_descriptor::format(); - size_t elemsize = sizeof(unsigned char); - int nw = mat.cols; - int nh = mat.rows; - int nc = mat.channels(); - int depth = mat.depth(); - int type = mat.type(); - int dim = (depth == type) ? 2 : 3; - if (depth == CV_8U) - { - format = format_descriptor::format(); - elemsize = sizeof(unsigned char); - } - else if (depth == CV_32S) - { - format = format_descriptor::format(); - elemsize = sizeof(int); - } - else if (depth == CV_32F) - { - format = format_descriptor::format(); - elemsize = sizeof(float); - } - else - { - throw std::logic_error("Unsupport type, only support uchar, int32, float"); - } - - std::vector bufferdim; - std::vector strides; - if (dim == 2) - { - bufferdim = {(size_t)nh, (size_t)nw}; - strides = {elemsize * (size_t)nw, elemsize}; - } - else if (dim == 3) - { - bufferdim = {(size_t)nh, (size_t)nw, (size_t)nc}; - strides = {(size_t)elemsize * nw * nc, (size_t)elemsize * nc, (size_t)elemsize}; - } - return array(buffer_info(mat.data, elemsize, format, dim, bufferdim, strides)).release(); - } - }; - } // namespace detail -} // namespace pybind11 \ No newline at end of file diff --git a/source/pic2card/mystique/models/pth/detr_cpp/setup.py b/source/pic2card/mystique/models/pth/detr_cpp/setup.py deleted file mode 100644 index 64860ddcc2..0000000000 --- a/source/pic2card/mystique/models/pth/detr_cpp/setup.py +++ /dev/null @@ -1,24 +0,0 @@ -# pylint: disable=missing-module-docstring -import os -from setuptools import setup -from torch.utils import cpp_extension - -# os.environ["CXX"] = "g++-8" -# os.environ["CC"] = "g++-8" - - -curr_dir = os.path.dirname(__file__) - -# Required libopencv-3.2-dev and libopencv-3.2 -setup( - name="detr", - ext_modules=[ - cpp_extension.CppExtension( - name="detr", - sources=[os.path.join(curr_dir, "detr.cpp")], - libraries=["opencv_core", "opencv_imgproc"], - extra_compile_args=["-fno-inline"], - ) - ], - cmdclass={"build_ext": cpp_extension.BuildExtension}, -) diff --git a/source/pic2card/mystique/models/pth/detr_cpp/tests.py b/source/pic2card/mystique/models/pth/detr_cpp/tests.py deleted file mode 100644 index 943ac715c2..0000000000 --- a/source/pic2card/mystique/models/pth/detr_cpp/tests.py +++ /dev/null @@ -1,53 +0,0 @@ -# pylint: disable=missing-module-docstring, missing-class-docstring -# pylint: disable=missing-function-docstring - -# pylint: disable=no-member - -import os -import unittest -import detr -import numpy as np -from PIL import Image - -curr_dir = os.path.dirname(__file__) - - -class TestDetrLib(unittest.TestCase): - def setUp(self): - self.model_path = os.path.join( - curr_dir, "../../../../model/pth_models/detr_trace.pt" - ) - self.image_path = os.path.join( - curr_dir, "../../../../tests/test_images/test01.png" - ) - img = Image.open(self.image_path) - self.img_np = np.asarray(img) - - def test_add_np_array(self): - "Check numpy Type conversion works" - arr1 = np.array([[1, 2, 3], [2, 3, 4], [3, 4, 5]], dtype=np.uint8) - res = detr.addmat(arr1, arr1) - exp_res = np.array([[2, 4, 6], [4, 6, 8], [6, 8, 10]], dtype=np.uint8) - self.assertTrue(np.all(res == exp_res)) - - def test_detr_constructor(self): - detr1 = detr.Detr(self.model_path) - self.assertEqual(self.model_path, detr1.model_path) - self.assertEqual(self.model_path, detr1.get_model_path()) - - def test_model_inference(self): - model = detr.Detr(self.model_path) - pred_logits, pred_boxes = model.predict(self.img_np) - - self.assertEqual(pred_logits.shape, (60, 7)) - self.assertEqual(pred_boxes.shape, (60, 4)) - - def test_image_resizing(self): - model = detr.Detr(self.model_path) - self.assertEqual(model.get_new_size(400, 300, 800, 1333), [800, 600]) - - self.assertEqual(model.get_new_size(800, 300, 800, 1333), [500, 187]) - - self.assertEqual(model.get_new_size(300, 500, 800, 1333), [480, 800]) - - self.assertEqual(model.get_new_size(1500, 1500, 800, 1333), [800, 800]) diff --git a/source/pic2card/mystique/models/pth/frcnn.py b/source/pic2card/mystique/models/pth/frcnn.py deleted file mode 100644 index 477c2cf57d..0000000000 --- a/source/pic2card/mystique/models/pth/frcnn.py +++ /dev/null @@ -1,124 +0,0 @@ -# pylint: disable=missing-module-docstring, missing-class-docstring, missing-function-docstring - -import torch -from detecto.core import Model -from detecto.core import DataLoader - - -class CustomModel(Model): - # pylint: disable=super-with-arguments - def __init__(self, classes=None, device=None, log_writer=None): - self.log_writer = log_writer - super(CustomModel, self).__init__(classes, device) - - def get_model_name(self, prefix="frcnn"): - """ - Generate name based on the parameters given. - """ - pass # pylint: disable=unnecessary-pass - - # pylint: disable=too-many-arguments, too-many-locals, inconsistent-return-statements, unused-argument - def fit( - self, - dataset, - val_dataset=None, - epochs=10, - learning_rate=0.00002, - momentum=0.9, - weight_decay=0.00005, - gamma=0.1, - lr_step_size=3, - verbose=False, - ): - - # If doing custom training, the given images will most likely be - # normalized. This should fix the issue of poor performance on - # default classes when normalizing, so resume normalizing. TODO - # pylint: disable=attribute-defined-outside-init - - if epochs > 0: - self._disable_normalize = False - - # Convert dataset to data loader if not already - if not isinstance(dataset, DataLoader): - dataset = DataLoader(dataset, shuffle=True) - - if val_dataset is not None and not isinstance(val_dataset, DataLoader): - val_dataset = DataLoader(val_dataset) - - losses = [] - # Get parameters that have grad turned on (i.e. parameters that should - # be trained) - parameters = [p for p in self._model.parameters() if p.requires_grad] - # Create an optimizer that uses SGD (stochastic gradient descent) - # to train the parameters - optimizer = torch.optim.SGD( - parameters, lr=learning_rate, momentum=momentum - ) - # Create a learning rate scheduler that decreases learning rate - # by gamma every lr_step_size epochs - # lr_scheduler = torch.optim.lr_scheduler.StepLR( - # optimizer, step_size=lr_step_size, gamma=gamma - # ) - - lr_scheduler = torch.optim.lr_scheduler.MultiStepLR( - optimizer, milestones=[10, 20], gamma=gamma - ) - - # Train on the entire dataset for the specified number of - # times (epochs) - for epoch in range(epochs): - if verbose: - print("Epoch {} of {}".format(epoch + 1, epochs)) - - # Training step - avg_train_loss = 0.0 - self._model.train() - for images, targets in dataset: - self._convert_to_int_labels(targets) - images, targets = self._to_device(images, targets) - - # Calculate the model's loss (i.e. how well it does on the - # current image and target, with a lower loss being better) - loss_dict = self._model(images, targets) - total_loss = sum(loss for loss in loss_dict.values()) - avg_train_loss += total_loss - # print(f"Batch: {len(images)}, loss: {total_loss}") - # Zero any old/existing gradients on the model's parameters - optimizer.zero_grad() - # Compute gradients for each parameter based on the current - # loss calculation - total_loss.backward() - # Update model parameters from gradients: - # param -= learning_rate * param.grad - optimizer.step() - - avg_train_loss /= len(dataset) - - if verbose: - print("Train Loss: {}".format(avg_train_loss)) - self.log_writer.add_scalar("Loss/train", avg_train_loss, epoch) - - # Validation step - if val_dataset is not None: - avg_loss = 0 - with torch.no_grad(): - for images, targets in dataset: - self._convert_to_int_labels(targets) - images, targets = self._to_device(images, targets) - loss_dict = self._model(images, targets) - total_loss = sum(loss for loss in loss_dict.values()) - avg_loss += total_loss.item() - - avg_loss /= len(val_dataset.dataset) - losses.append(avg_loss) - - if verbose: - print("Loss: {}".format(avg_loss)) - self.log_writer.add_scalar("Loss/val", avg_loss, epoch) - - # Update the learning rate every few epochs - lr_scheduler.step() - - if len(losses) > 0: - return losses diff --git a/source/pic2card/mystique/obj_detect/__init__.py b/source/pic2card/mystique/obj_detect/__init__.py deleted file mode 100644 index 341979774d..0000000000 --- a/source/pic2card/mystique/obj_detect/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -# pylint: disable=invalid-all-object, missing-module-docstring -# from .detect_objects_pth import PtObjectDetection -from .detr_objects import DetrOD -from .detr_cpp_objects import DetrCppOD - - -__all__ = [DetrOD, DetrCppOD] diff --git a/source/pic2card/mystique/obj_detect/detect_objects_pth.py b/source/pic2card/mystique/obj_detect/detect_objects_pth.py deleted file mode 100644 index 1cd9ebc272..0000000000 --- a/source/pic2card/mystique/obj_detect/detect_objects_pth.py +++ /dev/null @@ -1,67 +0,0 @@ -""" Pytorch implementation of object detection classes.""" -from typing import Tuple -import numpy as np - -import torch -import torchvision.transforms as T -from detecto.core import Model - - -from detecto.utils import ( - read_image, - normalize_transform, -) -from mystique import config -from .od_base import AbstractObjectDetection - - -class PtObjectDetection( - AbstractObjectDetection -): # pylint: disable=abstract-method - """ - Pytorch implementation of object detection classes. - """ - - transformer = T.Compose( - [ - T.ToPILImage(), - lambda image: image.convert("RGB"), - T.ToTensor(), - normalize_transform(), - ] - ) - - classes = [ - "checkbox", - "radiobutton", - "textbox", - "actionset", - "image", - "rating", - ] - model = None - - def __init__(self, model_path=None): - self.model_path = model_path or config.PTH_MODEL_PATH - if self.model_path: - self.model = self._load_model() - - def _transform(self, image: np.array) -> torch.Tensor: - """ - Transform the image and convert to Tensor. - """ - return self.transformer(image) - - def _load_model(self): - """Load the saved model and pass the required classes""" - return Model.load(self.model_path, classes=self.classes) - - def get_bboxes(self, image_path: str, img_pipeline=None) -> Tuple: - """ - Do inference and return the bounding boxes compatible to caller. - """ - image_np = read_image(image_path) - image = self._transform(image_np) - labels, boxes, scores = self.model.predict([image])[0] - - return labels, boxes.tolist(), scores.tolist() diff --git a/source/pic2card/mystique/obj_detect/detr_cpp_objects.py b/source/pic2card/mystique/obj_detect/detr_cpp_objects.py deleted file mode 100644 index 67744a9444..0000000000 --- a/source/pic2card/mystique/obj_detect/detr_cpp_objects.py +++ /dev/null @@ -1,82 +0,0 @@ -""" -Doing Detr inference using c++ binding, quick checks shows >3x improvements -with the inference time. -""" -from typing import Dict, Tuple -import detr -import numpy as np -from PIL import Image -from mystique import config -from .od_base import AbstractObjectDetection - - -# for output bounding box post-processing -# TODO: Move these tensor works too into c++ side, as this comes in -# inference path. -def box_cxcywh_to_xyxy( - x_a: np.ndarray, -): # pylint: disable=missing-function-docstring - x_c, y_c, w_a, h_a = [i[:, 0] for i in np.split(x_a, [1, 2, 3], axis=1)] - boundary_box = [ - (x_c - 0.5 * w_a), - (y_c - 0.5 * h_a), - (x_c + 0.5 * w_a), - (y_c + 0.5 * h_a), - ] - return np.stack(boundary_box, axis=1) - - -def rescale_bboxes( - out_bbox: np.ndarray, size: Tuple[int, int] -): # pylint: disable=missing-function-docstring - img_w, img_h = size - boundary_box = box_cxcywh_to_xyxy(out_bbox) - boundary_box = boundary_box * [img_w, img_h, img_w, img_h] - return boundary_box - - -class DetrCppOD(AbstractObjectDetection): - """ - Do the inference in c++ code and return the result. This class wraps uses - detr cpp python extension to do the inference. - """ - - def __init__( - self, pt_path="./detr_trace.pt", threshold=0.8 - ): # pylint: disable=unused-argument - self.model = detr.Detr(self.model_path) # pylint: disable=no-member - self.threshold = threshold - - @property - def model_path(self): # pylint: disable=missing-function-docstring - return config.DETR_MODEL_PATH - - def get_objects(self, image_np: np.array, image: Image) -> Dict: - """ - Do model inference using `od_model` and return standard response. - - This function gets both image tensor or PIL image, The implementation - can pick the one which suits. Helps to avoid further transformations. - - Response: - { - "detection_classes": [], - "detection_scores": [], - "detection_boxes": [] - }, - """ - pred_logits, pred_boxes = self.model.predict(image_np) - pred_logits = pred_logits[:, :-1] - # TODO: Use the threshold from config - mask = pred_logits.max(-1) > 0.8 - - scores = pred_logits[mask] - boxes = rescale_bboxes(pred_boxes[mask], image.size) - return { - "detection_classes": scores.argmax(-1), - "detection_scores": scores.max(-1), - "detection_boxes": boxes, - } - - def get_bboxes(self): # pylint: disable=arguments-differ - pass diff --git a/source/pic2card/mystique/obj_detect/detr_objects.py b/source/pic2card/mystique/obj_detect/detr_objects.py deleted file mode 100644 index 06b2a7f683..0000000000 --- a/source/pic2card/mystique/obj_detect/detr_objects.py +++ /dev/null @@ -1,53 +0,0 @@ -""" -Find the objects from card and its attributes using DETR object detection -model. -""" -from typing import Dict -import numpy as np -from PIL import Image -import torch -from mystique.models.pth.detr.predict import detect, transform -from mystique import config -from .od_base import AbstractObjectDetection - - -class DetrOD(AbstractObjectDetection): - """ - Load the DETR torchscript model and does the inference on PIL images. - """ - - def __init__( - self, pt_path="./detr_trace.pt" - ): # pylint: disable=unused-argument - self.model = torch.jit.load(self.model_path) - - @property - def model_path(self): - """Return model path""" - return config.DETR_MODEL_PATH - - def get_objects(self, image_np: np.array, image: Image) -> Dict: - """ - Do model inference using `od_model` and return standard response. - - This function gets both image tensor or PIL image, The implementation - can pick the one which suits. Helps to avoid further transformations. - - Response: - { - "detection_classes": [], - "detection_scores": [], - "detection_boxes": [] - }, - """ - # TODO: Use the threshold from config - scores, boxes = detect(image, self.model, transform, threshold=0.8) - ss_ = scores.max(-1) - return { - "detection_classes": ss_.indices.detach().numpy(), - "detection_scores": ss_.values.detach().numpy(), - "detection_boxes": boxes.detach().numpy(), - } - - def get_bboxes(self): # pylint: disable=arguments-differ - pass diff --git a/source/pic2card/mystique/obj_detect/od_base.py b/source/pic2card/mystique/obj_detect/od_base.py deleted file mode 100644 index bc9aaba505..0000000000 --- a/source/pic2card/mystique/obj_detect/od_base.py +++ /dev/null @@ -1,37 +0,0 @@ -""" Abstract Object Detection, Each model implementation has to follow this - apis -""" -import abc -from typing import Tuple, Dict -import numpy as np -from PIL import Image - - -class AbstractObjectDetection( - metaclass=abc.ABCMeta -): # pylint: disable=missing-class-docstring - @abc.abstractmethod - def get_objects( - self, image_np: np.array, image: Image - ) -> Tuple[Dict, object]: - """ - Return the object detection data from model inference pipeline. - - Ensure the bbox coordinates are xmin, ymin, xmax, ymax format, and - renormalized to get actual bounding box coordinates. - - Return: - { - "detection_classes": [int, int], - "detection_boxes": Nx4 Tensor. The coordinates are renormalized., - "detection_scores": [float, float] - } - """ - pass # pylint: disable=unnecessary-pass - - @abc.abstractmethod - def get_bboxes(self, image_path: str, img_pipeline=None): - """ - Deprecated method, soon be removed, added for backward compatibility - """ - pass # pylint: disable=unnecessary-pass diff --git a/source/pic2card/mystique/predict_card.py b/source/pic2card/mystique/predict_card.py deleted file mode 100644 index 2b7e018622..0000000000 --- a/source/pic2card/mystique/predict_card.py +++ /dev/null @@ -1,234 +0,0 @@ -"""Module to get the predicted adaptive card json""" - -import base64 -import io -import uuid -from typing import Dict, List - -import cv2 -import numpy as np -from PIL import Image -from mystique import config -from mystique.ac_export.card_template_data import DataBinding -from mystique.extract_properties import CollectProperties -from mystique.font_properties import classify_font_weights -from mystique.utils import get_property_method, send_json_payload -from mystique.card_layout import row_column_group -from mystique.card_layout import bbox_utils -from mystique.ac_export import adaptive_card_export - - -class PredictCard: - """ - Collects the faster rcnn detected objects and handles the - functionality of calling diffrent modules in card prediction - and returning the predicted json objects. - """ - - def __init__(self, od_model=None): - """ - Find the card components using Object detection model - """ - self.od_model = od_model - - def collect_objects( - self, output_dict=None, pil_image=None - ): # pylint: disable=too-many-locals, unused-argument, no-self-use - """ - Returns the design elements from the faster rcnn model with its - properties mapped - @param output_dict: output dict from the object detection - @param pil_image: input PIL image - @return: Collected json of the design objects - and list of detected object's coordinates - """ - boxes = output_dict["detection_boxes"] - scores = output_dict["detection_scores"] - classes = output_dict["detection_classes"] - r_a, _ = boxes.shape - detected_coords = [] - json_object = {}.fromkeys(["objects"], []) - for i in range(r_a): - if scores[i] * 100 >= config.MODEL_CONFIDENCE: - object_json = dict().fromkeys( - ["object", "xmin", "ymin", "xmax", "ymax"], "" - ) - object_json["object"] = config.ID_TO_LABEL[classes[i]] - if object_json["object"]: - xmin, ymin, xmax, ymax = boxes[i] - object_json["xmin"] = xmin - object_json["ymin"] = ymin - object_json["xmax"] = xmax - object_json["ymax"] = ymax - object_json["coordinates"] = (xmin, ymin, xmax, ymax) - object_json["score"] = scores[i] - object_json["uuid"] = str(uuid.uuid4()) - object_json["class"] = classes[i] - - if object_json["object"] == "textbox": - detected_coords.append( - ( - xmin - config.TEXTBOX_PADDING, - ymin, - xmax + config.TEXTBOX_PADDING, - ymax, - ) - ) - else: - detected_coords.append((xmin, ymin, xmax, ymax)) - - json_object["objects"].append(object_json) - - return json_object, detected_coords - - # pylint: disable=no-self-use - def get_object_properties( - self, design_objects: List[Dict], pil_image: Image, queue=None - ) -> None: - """ - Extract each design object's properties. - @param design_objects: List of design objects collected from the model. - @param pil_image: Input PIL image - @param queue: Queue object of the calling process - """ - # Creating an Extract Property class instance - collect_prop = CollectProperties() - for design_object in design_objects: - collect_prop.uuid = design_object.get("uuid") - # Invoking the methods from dict according to the design object - property_object = get_property_method( - collect_prop, design_object.get("object") - ) - property_element = property_object( - pil_image, design_object.get("coordinates") - ) - design_object.update(property_element) - design_objects = classify_font_weights(design_objects) - # If any Queue object is passed , put the return value inside the - # queue in-order to retrieve the value after the process finishes. - if queue: - queue.put(design_objects) - return design_objects - - def main(self, image=None, card_format=None): - """ - Handles the different components calling and returns the - predicted card json to the API - @param labels_path: faster rcnn model's label path - @param forzen_graph_path: faster rcnn model path - @param image: input image path - @return: predicted card json - """ - image = image.convert("RGB") - image_np = np.asarray(image) - image_np = cv2.cvtColor(image_np, cv2.COLOR_RGB2BGR) - # Extract the design objects from faster rcnn model - output_dict = self.od_model.get_objects(image_np=image_np, image=image) - return self.generate_card(output_dict, image, image_np, card_format) - - # pylint: disable=unused-argument - def tf_serving_main( - self, - bs64_img: str, - tf_server: str, - model_name: str, - card_format: str = None, - ) -> Dict: - """ - Do model inference using TF-Serve service. - """ - - api_path = "v1/models/{model_name}:predict" - payloads = { - "signature_name": "serving_default", - "instances": [{"b64": bs64_img}], - } - # Hit the tf-serving and get the prediction - response = send_json_payload( - api_path, body=payloads, host_port=tf_server - ) - - pred_res = response["predictions"][0] - - filtered_res = {} - for key_col in [ - "detection_boxes", - "detection_scores", - "detection_classes", - ]: - filtered_res[key_col] = np.array(pred_res[key_col]) - - # Prepare the card from object detection. - imgdata = base64.b64decode(bs64_img) - image = Image.open(io.BytesIO(imgdata)) - image = image.convert("RGB") - image_np = np.asarray(image) - image_np = cv2.cvtColor(image_np, cv2.COLOR_RGB2BGR) - card = self.generate_card(filtered_res, image, image_np, card_format) - return card - - # pylint: disable=unused-argument - def generate_card( - self, - prediction: Dict, - image: Image, - image_np: np.array, - card_format: str, - ): - """ - From the object detection result and image, generate adaptive - card object. - @param prediction: Prediction result from rcnn model - @param image: PIL Image object to crop the regions. - @param image_np: Array representation of the image. - @param card_format: format specification for template data binding - """ - # TODO: Remove the reduendant usage of image and image_np - - # Collect the objects along with its design properites - - predicted_objects, detected_coords = self.collect_objects( - output_dict=prediction, pil_image=image - ) - # Remove overlapping rcnn objects - bbox_utils.remove_noise_objects(predicted_objects) - - # Arrange the design elements - return_dict = {}.fromkeys(["card_json"], "") - card_json = { - "type": "AdaptiveCard", - "version": "1.0", - "body": [], - "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", - } - - if config.MULTI_PROC: - card_layout = row_column_group.generate_card_layout_multi( - predicted_objects, image, self - ) - else: - card_layout = row_column_group.generate_card_layout_seq( - predicted_objects, image, self - ) - body = adaptive_card_export.export_to_card(card_layout, image) - - # if format==template - generate template data json - return_dict["card_json"] = {}.fromkeys(["data", "card"], {}) - if card_format == "template": - databinding = DataBinding() - data_payload, body = databinding.build_data_binding_payload(body) - return_dict["card_json"]["data"] = data_payload - # Prepare the response with error code - error = None - if not body or not detected_coords: - error = {"msg": "Failed to generate card components", "code": 1000} - else: - card_json["body"] = body - - if card_format != "template": - return_dict["card_json"]["card"] = card_json - else: - return_dict["card_json"]["card"] = card_json - return_dict["error"] = error - - return return_dict diff --git a/source/pic2card/mystique/training/object-detection.pbtxt b/source/pic2card/mystique/training/object-detection.pbtxt deleted file mode 100644 index d0693a2db6..0000000000 --- a/source/pic2card/mystique/training/object-detection.pbtxt +++ /dev/null @@ -1,27 +0,0 @@ -item { - id: 1 - name: 'textbox' -} -item { - id: 2 - name: 'radiobutton' -} -item { - id: 3 - name: 'checkbox' -} -item { - id: 4 - name: 'actionset' -} - -item { - id: 5 - name: 'image' -} - -item { - id: 6 - name: 'rating' -} - diff --git a/source/pic2card/mystique/training/pipeline.config b/source/pic2card/mystique/training/pipeline.config deleted file mode 100644 index 4b9859461b..0000000000 --- a/source/pic2card/mystique/training/pipeline.config +++ /dev/null @@ -1,133 +0,0 @@ -model { - faster_rcnn { - num_classes: 6 - image_resizer { - keep_aspect_ratio_resizer { - min_dimension: 600 - max_dimension: 1024 - } - } - feature_extractor { - type: "faster_rcnn_inception_v2" - first_stage_features_stride: 16 - } - first_stage_anchor_generator { - grid_anchor_generator { - height_stride: 16 - width_stride: 16 - scales: 0.25 - scales: 0.5 - scales: 1.0 - scales: 2.0 - aspect_ratios: 0.5 - aspect_ratios: 1.0 - aspect_ratios: 1.5 - aspect_ratios: 2.0 - aspect_ratios: 2.5 - } - } - first_stage_box_predictor_conv_hyperparams { - op: CONV - regularizer { - l2_regularizer { - weight: 0.0 - } - } - initializer { - truncated_normal_initializer { - stddev: 0.0099999998 - } - } - } - first_stage_nms_score_threshold: 0.0 - first_stage_nms_iou_threshold: 0.69999999 - first_stage_max_proposals: 300 - first_stage_localization_loss_weight: 2.0 - first_stage_objectness_loss_weight: 1.0 - initial_crop_size: 14 - maxpool_kernel_size: 2 - maxpool_stride: 2 - second_stage_box_predictor { - mask_rcnn_box_predictor { - fc_hyperparams { - op: FC - regularizer { - l2_regularizer { - weight: 0.0 - } - } - initializer { - variance_scaling_initializer { - factor: 1.0 - uniform: true - mode: FAN_AVG - } - } - } - use_dropout: false - dropout_keep_probability: 1.0 - } - } - second_stage_post_processing { - batch_non_max_suppression { - score_threshold: 0.0 - iou_threshold: 0.60000002 - max_detections_per_class: 100 - max_total_detections: 300 - } - score_converter: SOFTMAX - } - second_stage_localization_loss_weight: 2.0 - second_stage_classification_loss_weight: 1.0 - } -} -train_config { - batch_size: 1 - data_augmentation_options { - random_horizontal_flip { - } - } - optimizer { - momentum_optimizer { - learning_rate { - manual_step_learning_rate { - initial_learning_rate: 0.00019999999 - schedule { - step: 900000 - learning_rate: 1.9999999e-05 - } - schedule { - step: 1200000 - learning_rate: 2e-06 - } - } - } - momentum_optimizer_value: 0.89999998 - } - use_moving_average: false - } - gradient_clipping_by_norm: 10.0 - fine_tune_checkpoint: "/mnt1/haridas/projects/AdaptiveCards/source/pic2card/faster_rcnn_inception_v2_coco_2018_01_28/model.ckpt" - from_detection_checkpoint: true - num_steps: 9000 - load_all_detection_checkpoint_vars: true -} -train_input_reader { - label_map_path: "/mnt1/haridas/projects/AdaptiveCards/source/pic2card/object-detection.pbtxt" - tf_record_input_reader { - input_path: "/mnt1/haridas/projects/AdaptiveCards/source/pic2card/data/train.tfrecord" - } -} -eval_config { - num_examples: 1101 - metrics_set: "coco_detection_metrics" - use_moving_averages: false -} -eval_input_reader { - label_map_path: "/home/hydlabs/mystique/object_detection/training_with_image_label/object-detection.pbtxt" - shuffle: false - num_readers: 1 - tf_record_input_reader { - input_path: "/mnt1/haridas/projects/AdaptiveCards/source/pic2card/data/templates_test_data.tfrecords" - } -} diff --git a/source/pic2card/mystique/utils.py b/source/pic2card/mystique/utils.py deleted file mode 100644 index 8d4d67940f..0000000000 --- a/source/pic2card/mystique/utils.py +++ /dev/null @@ -1,232 +0,0 @@ -"""utils module for the prediction flow""" -import time -import io -import re -import json -import http.client -import urllib -from typing import Optional, Dict -import glob -import xml.etree.ElementTree as Et -from contextlib import contextmanager -from importlib import import_module - -import numpy as np -import pandas as pd -import matplotlib.pyplot as plt -from PIL import Image - -from mystique import config - -# Colro map used for the plotting. -COLORS = [ - [0.000, 0.447, 0.888], - [0.000, 0.447, 0.741], - [0.850, 0.325, 0.098], - [0.929, 0.694, 0.125], - [0.494, 0.184, 0.556], - [0.466, 0.674, 0.188], - [0.301, 0.745, 0.933], -] - - -@contextmanager -def timeit(name="code-block"): - """ - Execute the codeblock and measure the time. - - >> with timeit('name') as f: - >> # Your code block - """ - try: - start = time.time() - yield - finally: - # Execution is over. - end = time.time() - start - print(f"Execution block: {name} finishes in : {end} sec.") - - -def xml_to_csv(labelmg_dir: str) -> pd.DataFrame: - """ - Maps the xml labels of each object - to the image file - - @param labelmg_dir: Folder with labelmg exported image and tags. - - @return: xml dataframe - """ - xml_list = [] - for xml_file in glob.glob(labelmg_dir + "/*.xml"): - tree = Et.parse(xml_file) - root = tree.getroot() - for member in root.findall("object"): - value = ( - root.find("filename").text, - int(root.find("size")[0].text), - int(root.find("size")[1].text), - member[0].text, - int(member[4][0].text), - int(member[4][1].text), - int(member[4][2].text), - int(member[4][3].text), - ) - xml_list.append(value) - column_name = [ - "filename", - "width", - "height", - "class", - "xmin", - "ymin", - "xmax", - "ymax", - ] - xml_df = pd.DataFrame(xml_list, columns=column_name) - - return xml_df - - -def id_to_label(label_id: int) -> Optional[str]: - """Id to label""" - return config.ID_TO_LABEL.get(label_id) - - -# pylint: disable=too-many-locals, too-many-arguments -def plot_results( - pil_img: Image, - classes: np.array, - scores: np.array, - boxes: np.array, - label_map: Dict = None, - score_threshold=0.8, -) -> io.BytesIO: - """ - Generic bounding box plotting, inspired from detr implementation. - - Returns binary representation of the image with bounding box drawn, Use - `Image.open` to render the image. - """ - label_map = label_map or config.ID_TO_LABEL - plt.imshow(pil_img) - plt.margins(0, 0) - plt.axis("off") - ax_ = plt.gca() - - keep = scores >= score_threshold - scores = scores[keep] - boxes = boxes[keep] - classes = classes[keep] - - for cl_id, score, (xmin, ymin, xmax, ymax), col in zip( - classes, scores, boxes.tolist(), COLORS * 100 - ): - - ax_.add_patch( - plt.Rectangle( - (xmin, ymin), - xmax - xmin, - ymax - ymin, - fill=False, - color=col, - linewidth=1, - ) - ) - text = f"{label_map[cl_id]}: {score:0.2f}" - ax_.text( - xmin, - ymin, - text, - fontsize=8, - bbox=dict(facecolor="yellow", alpha=0.5), - ) - - img_buf = io.BytesIO() - plt.savefig(img_buf, format="png", bbox_inches="tight", pad_inches=0) - img_buf.seek(0) - plt.close() - return img_buf - - -def load_od_instance(): - """ - Load the object detection instance from class_path - """ - class_path = config.MODEL_REGISTRY[config.ACTIVE_MODEL_NAME] - p_split = class_path.split(".") - module_path, class_name = ".".join(p_split[:-1]), p_split[-1] - module = import_module(module_path) - od_obj = getattr(module, class_name)() - return od_obj - - -def get_property_method(prop_instance, design_object_name: str): - """ - Loads the respective method for design object from class_path - providing plug in functionality. - @param prop_instance: input Collect properties instance - @param design_object_name: input name of the design object - @return: property_method - """ - class_path = config.PROPERTY_EXTRACTOR_FUNC[design_object_name] - p_split = class_path.split(".") - module_path, class_name = ".".join(p_split[:-2]), p_split[-2] - method_name = p_split[-1] - if class_name == prop_instance.__class__.__name__: - property_method = getattr(prop_instance, method_name) - return property_method - module = import_module(module_path) - prop_obj = getattr(module, class_name)() - property_method = getattr(prop_obj, method_name) - return property_method - - -def load_instance_with_class_path(class_path: str): - """ - Loads an instance of the class using the class path - @param class_path: input path of the class instantiated - @return: class_obj instance - """ - p_split = class_path.split(".") - module_path, class_name = ".".join(p_split[:-1]), p_split[-1] - module = import_module(module_path) - class_obj = getattr(module, class_name)() - return class_obj - - -def text_size_processing(text: str, height: int): - """ - Reduces the extra pixels to normalize the height of text boxes - @param text: input extraced text from pytesseract - @param height: input height of the extracted text - @return: height int - """ - extra_pixel_char = r"y|g|j|p|q" - match = re.search(extra_pixel_char, text) - if match or text[0].isupper(): - height -= 2 - return height - - -def send_json_payload( - path: str, - body: Dict, - host_port: str, - method: str = "POST", - url_params: Optional[Dict] = None, -) -> Dict: - """ - Send Json payload via http post method. - - @param path: API path, eg; /predict_json - @param body: Request payload - @param host_port: Host and port of the api server eg; localhost:5050 - @param method: Http request method. - """ - headers = {"Content-Type": "application/json"} - if url_params: - path += "?" + urllib.parse.urlencode(url_params) - conn = http.client.HTTPConnection(host_port) - conn.request(method, path, json.dumps(body), headers) - response = json.loads(conn.getresponse().read()) - return response diff --git a/source/pic2card/notebooks/DETR.ipynb b/source/pic2card/notebooks/DETR.ipynb deleted file mode 100644 index 489a158179..0000000000 --- a/source/pic2card/notebooks/DETR.ipynb +++ /dev/null @@ -1,1198 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Deter Model training\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/mnt1/haridas/projects/AdaptiveCards/source/pic2card/notebooks\n" - ] - } - ], - "source": [ - "!pwd" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import sys\n", - "from pathlib import Path, PurePath\n", - "import matplotlib.pyplot as plt\n", - "import glob\n", - "\n", - "\n", - "sys.path.insert(0, \"/home/haridas/projects/opensource/detr\")\n", - "sys.path.insert(0, \"../\")\n", - "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"\"\n", - "\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 193, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "\n", - "import seaborn as sns\n", - "from mystique.utils import plot_results" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "import torch\n", - "from torch.utils.data import DataLoader, SequentialSampler\n", - "import torchvision.transforms as T\n", - "import torchvision.transforms.functional as F\n", - "from PIL import Image\n", - "\n", - "import datasets\n", - "from datasets import build_dataset, get_coco_api_from_dataset\n", - "from datasets.coco_eval import CocoEvaluator\n", - "from datasets.coco import make_coco_transforms\n", - "\n", - "from models.detr import DETR, SetCriterion, PostProcess\n", - "from models.transformer import build_transformer\n", - "from models.backbone import build_backbone\n", - "from models.matcher import build_matcher\n", - "from engine import evaluate\n", - "\n", - "from util.misc import collate_fn, NestedTensor\n", - "from util.plot_utils import plot_logs, plot_precision_recall\n", - "\n", - "from datasets.coco import make_coco_transforms" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "# img_transform = make_coco_transforms(\"val\")\n", - "transform = T.Compose([\n", - " T.Resize(800),\n", - " T.ToTensor(),\n", - " T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])\n", - "])" - ] - }, - { - "cell_type": "code", - "execution_count": 423, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Resize(size=800, interpolation=PIL.Image.BILINEAR)" - ] - }, - "execution_count": 423, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "T.Resize(800)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Strip Trained model for transfer learning" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "# checkpoint = torch.load(f\"{basedir}/detr-r50-e632da11.pth\", map_location='cpu')\n", - "# checkpoint = torch.load(f\"{basedir}/detr-r101-dc5-a2e86def.pth\", map_location='cpu')" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "# checkpoint[\"model\"].keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "# # Param sets that needs to be custom learned.\n", - "# del checkpoint[\"model\"][\"class_embed.weight\"]\n", - "# del checkpoint[\"model\"][\"class_embed.bias\"]\n", - "# del checkpoint[\"model\"][\"query_embed.weight\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "# torch.save(checkpoint, f\"{basedir}/detr-r101-dc5-a2e86def-class-head.pth\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Dataset " - ] - }, - { - "cell_type": "code", - "execution_count": 281, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "loading annotations into memory...\n", - "Done (t=0.01s)\n", - "creating index...\n", - "index created!\n" - ] - } - ], - "source": [ - "class Args:\n", - " coco_path = \"/home/haridas/projects/mystique/data/train_and_test-2020-Jun-05-coco/\"\n", - " dataset_file = \"pic2card\"\n", - " masks = False\n", - " \n", - "train_ds = datasets.custom_coco_build(\"train\", Args)" - ] - }, - { - "cell_type": "code", - "execution_count": 298, - "metadata": {}, - "outputs": [], - "source": [ - "image, target = super(datasets.coco.CocoDetection, train_ds).__getitem__(10)\n", - "target = {'image_id': train_ds.ids[0], 'annotations': target}\n", - "image, target = train_ds.prepare(image, target)" - ] - }, - { - "cell_type": "code", - "execution_count": 408, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'boxes': tensor([[240., 32., 305., 55.],\n", - " [245., 54., 296., 77.],\n", - " [223., 89., 325., 130.],\n", - " [ 32., 142., 122., 167.],\n", - " [430., 142., 497., 167.],\n", - " [ 26., 28., 131., 135.],\n", - " [411., 27., 516., 134.]]),\n", - " 'labels': tensor([1, 1, 1, 1, 1, 5, 5]),\n", - " 'image_id': tensor([1]),\n", - " 'area': tensor([ 1495, 1173, 4182, 2250, 1675, 11235, 11235]),\n", - " 'iscrowd': tensor([0, 0, 0, 0, 0, 0, 0]),\n", - " 'orig_size': tensor([196, 540]),\n", - " 'size': tensor([196, 540])}" - ] - }, - "execution_count": 408, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "target" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 370, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'boxes': tensor([[ 592.4445, 79.0204, 752.8981, 135.8163],\n", - " [ 604.7870, 133.3469, 730.6815, 190.1429],\n", - " [ 550.4796, 219.7755, 802.2685, 321.0204],\n", - " [ 78.9926, 350.6531, 301.1593, 412.3878],\n", - " [1061.4630, 350.6531, 1226.8536, 412.3878],\n", - " [ 64.1815, 69.1429, 323.3759, 333.3673],\n", - " [1014.5611, 66.6735, 1273.7555, 330.8979]]),\n", - " 'labels': tensor([1, 1, 1, 1, 1, 5, 5]),\n", - " 'image_id': tensor([1]),\n", - " 'area': tensor([ 9113.1152, 7150.2905, 25492.3398, 13715.3906, 10210.3467, 68485.5156,\n", - " 68485.5156]),\n", - " 'iscrowd': tensor([0, 0, 0, 0, 0, 0, 0]),\n", - " 'orig_size': tensor([196, 540]),\n", - " 'size': tensor([ 484, 1333])}" - ] - }, - "execution_count": 370, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "_image, _target = datasets.transforms.RandomResize([800], max_size=1333)(image, target)\n", - "_target" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 279, - "metadata": {}, - "outputs": [], - "source": [ - "# torch.rand()\n", - "# region = T.RandomCrop.get_params(image, (799, 1000))" - ] - }, - { - "cell_type": "code", - "execution_count": 362, - "metadata": {}, - "outputs": [], - "source": [ - "# F.crop(image, *T.RandomCrop.get_params(image, (400, 300)))\n", - "# image.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 363, - "metadata": {}, - "outputs": [], - "source": [ - "# datasets.transforms.crop(image, target, )" - ] - }, - { - "cell_type": "code", - "execution_count": 364, - "metadata": {}, - "outputs": [], - "source": [ - "# datasets.transforms.crop" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 223, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 257, - "metadata": {}, - "outputs": [], - "source": [ - "# np.asarray(img)" - ] - }, - { - "cell_type": "code", - "execution_count": 259, - "metadata": {}, - "outputs": [], - "source": [ - "# image.permute(1, 2, 0).numpy()\n", - "# image.permute(1, 2, 0).numpy()" - ] - }, - { - "cell_type": "code", - "execution_count": 228, - "metadata": {}, - "outputs": [], - "source": [ - "# Image.fromarray(image)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "# The index are directly from the coco dataset index.\n", - "CLASSES = {\n", - " 0: 'background', # This one is a default class learned by model, or a catch all.\n", - " 1: 'textbox',\n", - " 2: 'radiobutton',\n", - " 3: 'checkbox',\n", - " 4: 'actionset',\n", - " 5: 'image',\n", - " 6: 'rating'\n", - "}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Generate Coco Metrics" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "loading annotations into memory...\n", - "Done (t=0.04s)\n", - "creating index...\n", - "index created!\n" - ] - } - ], - "source": [ - "class DefaultConf:\n", - " # Basic network\n", - " backbone = \"resnet50\"\n", - " position_embedding = \"sine\"\n", - " hidden_dim = 256\n", - " dropout = 0.1\n", - " nheads = 8\n", - " dim_feedforward = 2048\n", - " enc_layers = 6\n", - " dec_layers = 6\n", - " pre_norm = False\n", - " num_queries = 100\n", - " aux_loss = False\n", - " \n", - " # Force to eval model\n", - " lr_backbone = 0\n", - " masks = False\n", - " dilation = False\n", - " device = \"cuda\"\n", - " \n", - " # Loss tuning params.\n", - " set_cost_class = 1\n", - " set_cost_bbox = 5\n", - " set_cost_giou = 2\n", - " bbox_loss_coef = 5\n", - " giou_loss_coef = 2\n", - " eos_coef = 0.1\n", - " losses = [\"labels\", \"boxes\", \"cardinality\"]\n", - "\n", - " # Configuration fitting the pic2card specific\n", - " # class configuration.\n", - " coco_path = \"/home/haridas/projects/mystique/data/train_and_test-2020-Jun-05-coco/\"\n", - " dataset_file = \"pic2card\"\n", - "\n", - "weight_dict = {\n", - " 'loss_ce': 1,\n", - " 'loss_bbox': DefaultConf.bbox_loss_coef,\n", - " 'loss_giou': DefaultConf.giou_loss_coef\n", - "}\n", - " \n", - "backbone = build_backbone(DefaultConf)\n", - "\n", - "transformer_network = build_transformer(DefaultConf)\n", - "matcher = build_matcher(DefaultConf)\n", - "criterion = SetCriterion(num_classes=len(CLASSES),\n", - " matcher=matcher,\n", - " weight_dict=weight_dict,\n", - " eos_coef=DefaultConf.eos_coef,\n", - " losses=DefaultConf.losses\n", - " )\n", - "postprocessors = {\"bbox\": PostProcess()}\n", - "\n", - "dataset_test = build_dataset(image_set=\"test\", args=DefaultConf)\n", - "sample_test = SequentialSampler(dataset_test)\n", - "base_ds = get_coco_api_from_dataset(dataset_test)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "basedir = Path(\"/home/haridas/projects/opensource/detr/\")\n", - "model_path = basedir / \"outputs-2020-06-30-1593500748\" / \"checkpoint.pth\"\n", - "state_dict = torch.load(model_path, map_location=\"cpu\")\n", - "\n", - "detr = DETR(backbone=backbone,\n", - " transformer=transformer_network,\n", - " num_queries=100, num_classes=6, aux_loss=False)\n", - "detr.load_state_dict(state_dict[\"model\"])\n", - "detr.eval();" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "data_loader_test = DataLoader(dataset_test,\n", - " batch_size=2,\n", - " sampler=sample_test,\n", - " drop_last=False,\n", - " collate_fn=collate_fn,\n", - " num_workers=1)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "# for samples, targets in data_loader_test:\n", - "# print([i['image_id'] for i in targets])\n", - "# import pdb; pdb.set_trace()" - ] - }, - { - "cell_type": "code", - "execution_count": 124, - "metadata": {}, - "outputs": [], - "source": [ - "# test_stats, coco_evaluator = evaluate(\n", - "# detr, criterion, postprocessors,\n", - "# data_loader_test,\n", - "# base_ds,\n", - "# device=\"cpu\",\n", - "# output_dir=\"./out\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Model Inference" - ] - }, - { - "cell_type": "code", - "execution_count": 194, - "metadata": {}, - "outputs": [], - "source": [ - "def load_detr_model(model_path, num_queries=60, num_classes=6):\n", - " basedir = Path(model_path)\n", - " model_path = basedir / \"checkpoint.pth\"\n", - " state_dict = torch.load(model_path, map_location=\"cpu\")\n", - " detr = DETR(backbone=backbone,\n", - " transformer=transformer_network,\n", - " num_queries=num_queries,\n", - " num_classes=num_classes, aux_loss=False)\n", - " detr.load_state_dict(state_dict[\"model\"])\n", - " detr.eval();\n", - " return detr" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Single image Inference" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [], - "source": [ - "detr = load_detr_model(\"/home/haridas/projects/opensource/detr/best_model\")" - ] - }, - { - "cell_type": "code", - "execution_count": 418, - "metadata": {}, - "outputs": [], - "source": [ - "transform_test = make_coco_transforms(\"test\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 205, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "<_io.BytesIO at 0x7f2bc0a554c0>" - ] - }, - "execution_count": 205, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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z1FU5OLXv/4wNpvBtdeuIJFI861vvcSXv3wp5eVebr99MwBPPfVxiovdAKxYUc673nUXv/nNXm6++SyuuWY5n/70uXz6079j0aIS/uZvnuJ//a+LuOiipvH92GwGdrsxL6oQgUAcgNJSz6TPy8q8APj9cetvbNpvcr/z+2Nvf8MURVEURVHmiHo8lBNOS8sInZ1BPvKRtaTT2fHlqquaicfT4+FDAHfddSO9vWGuuupnXHnlEj772fNnvZ8PfGDVpPCmjRvXEItNbP/113u4+upl40YHwIUXNrJkSSkvv9w5/tntt1+Dz+fkoovuorGxmG9848pJ+7nllrNJp/+RxYtL53oqFEVRFEVRThvU46GccIaHowBcd919M37f1RUa//+GhmIuvXQRv/1tC5/97IY57ae62jfjv/v6wtbfMc44o2raejU1PkZH4+P/Lix0ccMNK/n3f3+dW29dj9t94h6bnBcjGIxP+jznxSgr81h/vQSDiWnr+/2xce+IoiiKoijKyUQND+WEU14uA+E777yB9evrpn3f3DzhOXjooX387nctnH12DV/60tNcc83y8dyKYzE4GJnx33V1RdbfQgYHo9PWGxiIcN55E+16440e/uM/trB+fS3f/OZL3HzzWdTWFs6qDW8Vn89FU1PxtDyN3L9zuR+rV1fS1RUkEkni87nyfjcyLT9EURRFURTlZKChVsq84nLZp9WRWLWqkoaGItrbA2zYUD9tqagoAMQz8hd/8Rh/+Zfn8+STH2d0NMbf//0fjrn9HI88coBs1hz/94MP7sPrdXDmmdUAXHhhA089dYhweMJT8MYbPbS3B7jkkkUAxONp/vRPH+aaa5bx8st/Rnm5l09/+rdv/cTMgWuvXc5DD+0nk8mOf3b//XtoaioeP5arr14GwEMP7R//TW9vmJde6uDaa5ef0PYqiqIoiqLMhBoeyryyenUlu3YN8vDD+9mypZfe3jA2m8Htt1/Nd77zCp/73OM8/vhBnn66lTvv3Mp11/1iXKb2s599jKIiF//6r++ltraQO+64jjvueIPnnmubtP3HHjvI88+3s2VL7yQjIhxO8uEP/5onnzzE7be/wj/904t89rMbxj0uf/u3FwFwzTX38sgj+/nFL3ayceOvOOusaj70obUAfOUrz9LfP8aPf/xHFBQ4ufvuD/DYYwcnFUW8554dOBzf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6jQqFAqFQqFQKBSKU86LyvB42983+cX3N2Y+f/Bejw3vqJ3weTrfVONfvuaflD599H6fH2ybpyKGH8Z88F6Prfuik9LGz8vQpOQtH26y+q01Nryjxp//q0fDW0rIcD6HxyW3/11y3Jrba7zjLpexspy3z4W/W6fzTbUl/wxPyaOcWaFQKBQKhUJxurHsQq063viuU3Zu6557MMcbdLzxdgB+/4oKbxqp0XHxihM70ZveT+ai6+l448t+7j7902//Lb971st47RuvndlWq/l86M1/zeZX3cK1b3zJz93Gz0MQRFxz4SewrDz/9fnrKJVc/viPH8TtXMt//MetRz0uDCUvv+DjxHGaf/+P65Ay5t3v/hZv/rjDli3vQNcTm/f+s4bwvPkG1q//+pfRdcE5v/nORectbN/Hhjs+fVKvUaFQKBQKhUJx6ll2hsfRiCJJFMVY1skrLjswkGdgIH/Szncm8vnPb+epp8bZtev3WLOmDQDT1Lntts/zvvddw1lndSx53L33bmPHjnF27PidmX02buzkggs+zhe/uIPXv34zABde2DfvuOHhGk89Ncadd77iFF6VQqFQKBQKheL5ZtmGWt1++3289KX/zH337eCccz6G49zJI48cYmioytvffj9r136EVOpONmz4R97znm/j+/NXzQ8eLHPLLZ8llbqTwcG7+Jd/+cmiNu644zt0dv7tvG17907xutfdTT7/1+Ryf81rXvM5du2aXHSs70f8wR88QHv7BykW/4bf+72vzuvDUucGEOL9/N//uwWAwcG7mJho8v73fxch3o8Q7+c739lHLvfXALztbffPbN+3rwTA+HiDt771Pjo6/pZ0+k6uvfbTPProkXltDA7exZ/8yYP8wz88xMDA39PW9kFuu+3zlEru8dz6eTzwwC4uuWTFjNEB8LrXbcKydL72tV1HPe6JJ4ZZvbowzzA5//weenuzfOUrzxz1uHvu2YaUMbfddu4J91WhUCgUCoVCsXxZ1h6PfftK/NmffYP3vvcaenuzrFnTxvh4g/b2FH//9zfS1uawc+cEd9zxXcbG6nziE68BII5jXvvauxkfb/CpT/0ijmPwvvd9h8nJJmed1X7U9jwv5PrrP4Np6nzyk6/BMDTe977vcM01n2br1t+ivT01s+/f/d1DXHbZAJ/97K1s2zbGX/7lt3Ecgw996Ibjvr4v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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# output['pred_boxes'][-1, keep]\n", - "img = Image.open(\"/home/haridas/projects/AdaptiveCards-ro/source/pic2card/app/assets/samples/3.png\").convert(\"RGB\")\n", - "img = Image.open(\"/home/haridas/projects/mystique/data/templates_test_data/1.png\").convert(\"RGB\")\n", - "probs, boxes = detect(img, detr_trace_module, transform, threshold=0.8)\n", - "scores = probs.max(-1).values.detach().numpy()\n", - "classes = probs.max(-1).indices.detach().numpy()\n", - "plot_results(img, classes, scores, boxes, label_map=CLASSES, score_threshold=0.8)" - ] - }, - { - "cell_type": "code", - "execution_count": 198, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([0.92813474, 0.9515143 , 0.85023963, 0.9684327 , 0.8211578 ,\n", - " 0.9917258 , 0.93736345, 0.99552417], dtype=float32)" - ] - }, - "execution_count": 198, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "scores.max(-1).values.detach().numpy()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Using libraries" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "from mystique.models.pth.detr.predict import detect as detect_" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(417, 289)" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "img.size" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAx4AAAI4CAYAAADkuD+hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOydd5xddZ333+f2MjN3ek8mCemQQCCA1IAgAioqIj5rQSzbly26bneLuz7Puu66Puqquz7qimXBBqKABSmB0NP7JNMzvdx7p9x67jnPH99zZ+6UJJPAJBP4vl+vk5u5955+7jnfz+/bDNu2URRFURRFURRFWUhcZ3sDFEVRFEVRFEV57eOZ+cbKlcanioq4ze2m6GxskDJFLse4x8OuE30nFqPz6FH7b8/UNimKoiiKoijK6WDMDLXasMEYv+cegpWVaAzWWWZoCMPlwjzRd778ZTAMus7UNs0kFqO7pcXecrbWryiKoiiKopwbzPJ4uN2EamsxwmEVHmcbjwcjFJp9jgqprMT48pfPnnfqzjvZcLbWrSiKoiiKopw7zCU8uOYa7LKys7E5SiHRKHZZ2YkF4Gc+g7FyJakztU0zMQxCZ2vdiqIoiqIoyrmDJpcriqIoiqIoirLgzEt43H8/fPGLGD09GAuxEZ/5DDzxxOz3DQPji19ciDXOTTIJAwMYXV0Y7e0Y0ejs/b3vPrj9doy6OgzDwPjmN+X9TAb6+jA6OmT+aBRjZqXiZ56BzZsxAgGMJUsw/vEfMdLp6d9JpeDjH8eorsZobMS49VZcbW0LtceKoiiKoiiKcmaYr/Awvv99eDUTzvfuxdixQwz7z34W44EHMJ55Zrahb54wtRqefBKjs/PVEUTt7RjxOASDYDhLtCxoacEYHZW/f/QjjLY2uOkm+TudFvHQ3y/bUF2NHYlgj45CLDa1XUeOwM03Y9TVwXe/Cx/6EPzDP8DnP49RuI9/+IcY//3f8KlPwVe/KmLmTW/CnUzK58kk7NqFe+tW3M88gzsWwxgZOfl53L0b3+bNNPr9NAUCNL3hDTQeOTI91O5zn6PxbW+jqaKCJo+Hpqoqmm6/naa//3ua4nHcp31gFUVRFEVRlNc98xIe8ThMTIDP9+qtuNAbkM2KwDj//Nnf6+paGC/LXAwPg8slAqtQeHR1wdiYbMdf/iV8/OOwerV83t0N0SiGZYnoCAahpARKS0V8WJZ87zOfwSgvhze/GQ4ehLIyeMtb4P/+XxgdlWV3dcE3vgF33QWjo9DZCe99r7x++9uyjt27cafTsHIlLF0qHpK3vY26E+1XKgVvfjN1XV2477kH+/d+D/voUdw33EB9JjP1PcNg7OGH4YYbsD/5SbjqKqwHH4TubsxIhNyrfbwVRVEURVGU1w8nFR53343x+OOwc6eEPhkGxt/9nXgA2tsxfvhDuPBCDL9fwoM+9jHxAAwOigejqAjjL/5iSjxkMrBpE8bdd4tB3Ngoy/rKV6C8XNZRGHY1Pg4f+hBGWRlGaSnGBz+IMTw8fRt37YKrr8YIBjEiEYx3vxujr08+i0ZlHXfdNV3A3HYbxurVGBMTp3bADh2CsTEx/AE8HmzTFFHmKjia4bCIq5ST9v3II7BsGVRXw3vfi715M3ZFBfT2yrEFePRRmaesDG66CfvWW7GLi6GpCX72M1y9vbhSKVizBmpqsOrrsYqL4dln8WzbRuB42/wv/0L5wAB89rOYn/gEQ3/2Zwz90z+R6+rC+NznmCwj8IUvUHzjjfDpTzP2+79P/9//PRNr18IvfqG5QIqiKIqiKMor46QG5cc/LoZuYyP8z//A174GF1wA4+MYDz0E73kPxooV8OlPy0j9174Gf/zHGB4PbNokI+f/9m/w3e9ibN2K8bu/i9HcDH/3d2Ksf/vbEAjA9deL+PjlL2HjRsjnPvzwh9DaKp6Gu+6SbfjUp6ZERCwG73+/iIFPfhLuuQe2boUbbhABFInA3/6trOf735d5vvENePhh+KM/guFhWdbf/A3GNdfASy9J+FZrqywzH/515Ii8X1cH738/9o03SthZLCbfbW6GHTskVAvA45FwrZ07MXbtwujthdpamRIJjDe8QfYZRMwA7N6NUVICt92GfdFFIlR+4zfIlZXB3r0wMoIRDkNJCTm3G9vjwQ6FsD0e+N73KDneOdy+nWBpKbzrXfTX1JCorSXxvvfRX1QEDz9MGOR8dnTgvvZa0qtWEa2sJDU+Tva886CrC1dLi4ZaKYqiKIqiKKfPSYXHkSMyku92i4F87BiEQuD1SlL4DTfIlExCVRW8+93wzW9CLoedyUAuB+vWwd/8jXgf7r0XbrkF2tvFMN+1S14tC/r6YNs2CTPK50cEAvC7vyvLqa6W8KT/+i8Ji7IsEROWBR/4gLyGQvDBD8KBA/CjH4mAicXg6qvhD/4AY8cO+NjHMG6+Wbwp+fyKujrZx8pKET719bKsfPhXY6P8f/Vq2aY8mYx4ahoaxFuxZ8+UFyXvAenokNelS2H5chgZkbyRzZtFvPT2wnPPYRw9Kstet25q+SUlsk2xmBzjQGC6Z8UwoKICmps5biBcKiVCMByeakZYXEzW44GuLhEUExO4bBtKSpgMvjpwgHA+xGr79uN7VBRFURRFURTlZJxUeFx3HbbfL0b5LbfAhz+MfdVV2J2d2D09IgaWLIE77sC+4goxwtNp2L1bQoauuALe9CYRCu95D2zYAJs2iQGfzcK114rxHInA5s3wkY9g19XB0JCsf80aeX3Xu2T5jY0SvrR3r7weOCCegUgEbr8d+9ZbxVAvK4PHH8cIBmUbrrlGPCxXXim5FhdfDGvXimcC4LLLRBw589qBgOxzaamIAyd3ww6H5f2REZkvEoGiIiguFmFiGDAz2T2f51FcDA0N2DU1cjzKyuR7yaTMl82KqPB6p+Y1TfD7ZRm5nKx7JqEQjI4e/1wuXYo1MgLt7VPJ5Pv3483n7oDsc0kJ7N4t3xkZwd3bi394WPZ/YOD4wkZRFEVRFEVRTsZJhUd5uRjDhiECY+lSKC2dEgbf/S684x2wfj3Gli0SVgVT4UNLl4owWLpUBMmaNXD55bIMtxvWrxfD1usVI37JEhnVz1dxikTgzjuxV6+GLVuw8x6ItjYxxgcGxKDfsgVCIYzSUhEZoZB8B8R7sXy55Eqk0+JRuPZaWXYer1cSyvNTnuP9P59s7vNhu1zi7fB6pfFivgJWXnBUVclrOi1CIhQSkZEPywoGRXRFIvKdREISyW0bhoYkryPvZTGmSZr58ZGPMOHxwO23U7tzJ77t2/HfeSe1hcvz+bDe/nbs//kfgt/7HqFnnqFo3z546ikRIrZ95pL8FUVRFEVRlNceszqXH4+ZBm8+3Od3fgeuu06MZ5cLBgfhuedg40YMkHCraFQ8E7W18PjjknORSolhHQzOvb680e71Tq3LsqYMcL9f3g+HxRPQ1DRV6reyUoz3Qu+AZcHzz0tI1ZNPwn/+J/bRo1PG9EUXSehVUdHJj4Fti3DIv+fxyDYYhnhVTFMm25b3nLwMOjtFsOTnbWvDBoymJklSX7IEIxoV4WKaGImEiJm8Z8ntnru8cCIBRUXHL3V88cWMffzjRL7wBdwXXywVsC68UDw0qYKe53/6p4x2dRF53/uoAtnuu+/G/spXMKqrsY5/ZBRFURRFURTlxMyrWpHHM2Vo56mvF0/Dvn1SHnbHDnj5ZclnqK+fChcaH4fPf14Sqd/3PjF0//mfpxvQbvfs5efnf+EFMepBvCDbtsn2NDaK+GhshP37xVPg98u0fbuInVWrZL5sFv7P/5EQrw99SMKwfud3Tn0Ev1AAFYZD5cVGfl0ej4Qw5b0nPp9Uwdq6VcRIvizxD34gyeQbNsjfl18ur7/+NXZxsSSOmybW/v2S0B8ITBcKIMsbHoYVK44vDHw+rD/+YwYfegjry1+WRPt77yUxOAhr1kwJlvXriX/hCyS+8x3Jq/nqV7HXrWPC64XLLiN9vOUriqIoiqIoysk4occjH15TWytJ4D//OWzYgFFfL56Bm26Cn/xEjOrrrxeD+4UXRBzcfbfM/6lPiaH9hjeISHj728XwvegiCYkaH8eoqpKSsjt3QiCAsWaNiAMQA/5d78L4wAdE3HzrWxKWtGQJhsslie0vvAA33ojxp38qQuev/1q2+frrZRs+9zkxzt/9bgn5eutbp6pz/d7vyXfuvRc+8hHZx9pa6TqezUIyKcfAssDlwjh0SKpX5QXAnj0YjzwiosDrxRgZkYT8q67CePBBSfz2eKR/x7//u6zjzjtFhHzrW3DrrbJNto2xbp2Ioz/5E1l/MAif/Szu8nK4+WY5Ji0tkEgY7mBQdFMqZWGa8I53hD2mWdp0vHNZViYJ9pdcYuLxGDz4YDI0MBDnQx8KGKZZMTnfunXQ1xenrm6ct761xrjttuGiLVtM6uvrq01ztlYLBmP09va+ao0lFUVRFEVRlMWK9Nbw+/34/D4MwJgjDyCYN1RncDLhAYgB39oKH/uY5CX87d9Kmd1LL5WcjGeegfvvF49AXZ2IjJISKX37yCNibK9YISFZ8bgkdv/Lv0j1qFhMhMAjj8Cf/7mM6D/+uIgSgCuvFAP8wx8Wz8e114oBXVMjn9fXi8h54QWpZuX1ivF+6aWSwL5tG3z965LYvmKFCJ+JCdmnL30J3vlO2YdsVpYfi0kjP8OQvxMJEQ6DgyK2fvQj+Nd/nTpGP/6xTFdcITkkuZwIrVxuevWryy+H3/5tERwf/rAIgfe/X45BXZ1sv9crQqS1VY7vxISIrPe/Hy64wKC2Frq7bfbts2lqsjFNOZ6XXgpbthRNnvgNG7oB2Lu3YXL973lPP9deG6CkxGDbtjTf+laa226Dm26KTM73s58l6ezM0dycALzcfnuMQ4dM7rsvgMdzfOeYYWibD0VRFEVRlNc8hvxj2RY508Ttds8pPI7HyXM8DCkVe+edYhQXFUnCeXGxjOI/9JAY1JWV8p5lSegVwB13iHgZHJScgu5uEQNve5sIirIyWfamTZL8vWLFVM8Qt1t6fQQCstw77xRxcPiwGOP53JDGRinDu26dLCuXk6TyoiJYv16+88ADEo51/vnSb2PDBunR8dGPimcExAPzD/8guRQDA7IfGzfKNobDssw9e0Q8vec9sp5HH5VtDodFnHi9Et7V0CDLWr5clgUixvbtg098QgTK0aNSUnjLFvnctmVfN22S5f3+74uQ27VLwsg2bjTweGD9epvWVjkOhiHzfPGLAYLBqaJT2WzeATF1IXR0mPzVX42RSsk+fvCD8Jd/WUIoNDVfKpXli18cp63NIhi0uPJKF1/9qsEVV5RNW9asi8ivlXYVRVEURVFeu4htaVsWVi5HNpslm8kQDAbx+eZf+PTkwsOWMB/ThMcekzyLLVvEAL/wQhEAzzwjhr3LJYb6+vVSoenAATGw775bBELeg2Ka8v3f+i35+6abpKHf3r0STvXBD0olLBCDPR6XZdm2CIw3vWlq8974RhEUv/qVCB63W0K/br5Z/t/VJSFc73znlBABWdaOHfI9kO9alnyntFTey+d0VFRMhX5t3Qo/+9nUclpb5bWpSXqMuN2yvU5oFpdeKgLB5RLPxS9/KR6dcFj2++KLZf7899askeP89NMitJYtgzvvdE2W/S0qcrF+vTWZfB+JwMUXV07TBd//vnMBFLz3zW8GiMdTmKZNMOShob6Y2rrpmfQ33OBjxQoXyaSFy2VQVuZn+fJSfP4TXyanonQVRVEURVGUcxPbMCTXwQLbzmFZFqZp4nK7cc3DHjRse3p4/iWXGNZjj4mhbVnTh7nPtH05OCij/fn+FcGgeFteL3ZuLAalpScOY3rzmy0e/fmSM7RFs9ly7Qg/+VnPWVu/oiiKoiiKstA4Hg9HNtiWhW3lJt8PBgJ4PFMD1aeV43G2Dfx8/wtFURRFURRFUc4WIgomtYETzmNZuSk1Mg80K1hRFEVRFEVRlPljGGC4sG2wLIuZEVTHQ4WHoiiKoiiKoiinhGEYp9wUb1aoVTIJ//RPJ+7grZwZpJP6iRWkZb1OEl4URVEURVGURYFhGFNejlMItZolPPx+rPe+V0TM2c7xeL1j2wZe74mdUm1t8NSTqRN+Z2E5eWE0RVEURVEURZllNY6Ocuy3fotygGAwXHzmN0k5FUzTw7//e/isrb+2buVZW7eiKIqiKIpy7jBLeLS02Mvy/x+Ojc7fd6IoiqIoiqIoinIcNLlcURRFURRFUZQFR4WHoiiKoiiKoigLjgoPRVEURVEURVEWHBUeiqIoiqIoiqIsOAtWC9XlMjj1tiKKoiiKoiiKopwpLMviTFWTWhDhYRgGRaEgbpc6VBRFURRFURRlMWIDE4kUWdM8I+tbMI+HYRi4VHgoiqIoiqIoyqLEtm3OZMNwVQaKoiiKoiiKoiw4KjwURVEURVEURVlwVHgoiqIoiqIoirLgqPBQFEVRFEVRFGXBUeGhKIqiKIqiKMqCo8JDURRFURRFUZQFR4WHoiiKoiiKoigLjgoPRVEURVEURVEWHBUeiqIoiqIoiqIsOCo8FEVRFEVRFEVZcFR4KIqiKIqiKIqy4KjwUBRFURRFURRlwVHhoSiKoiiKoijKgqPCQ1EURVEURVGUBUeFh6IoiqIoiqIoC44KD0VRFEVRFEVRFhwVHoqiKIqiKIqiLDgqPBRFURRFURRFWXBUeCiKoiiKoiiKsuCo8FAURVEURVEUZcFR4aEoiqIoiqIoyoKjwkNRFEVRFEVRlAVHhYeiKIqiKIqiKAuOCg9FURRFURRFURYcFR6KoiiKoiiKoiw4nrO9AYryirFtsC3ABtMEywbLct63wZ45gwFGweRyyavbDYZL5LhhnPn9eF3jnCTbhnRSzl+u8HMDcIHHAwGv/P2KT5FzjWQyznVzqvMXXkNuefV4wOVs22K9hiwL7BzknMk63u8E53cRALcBXpf8zqwc5CyZ17Zl/rkwDPAG5Xh4jMV7PBaa/DGzLDDzx8y52AoPXf74GAZQcF9yuWRyu5i86F+nh/K1z3zug27wesDvnXpLUc4hVHgorw3irTA+AM/vhr5BONoBYxMwMAIZE1KmiAq3G3xh8JdAaSmURKBhOZTXwMaNUF0J9UEIuM/2Hr0OMSE5Ct/8a2hphr0mpJwHsasM3OvgTZvhT+6QO9crvnuNAjH43tfhqSehD5iY56zeAPhDUFwGRSXQdD5U1sPVm6G2Aso94F2kFsFoDwwehh37YNcB6BmAaBzGc5Cdob4ijXDl78HqOnjHChjtgo6XYH8L7DwM/VEYGoV0DswZ85bVwzs+Ccvq4JqyxXs8FppkFDqeh64eeG4vDMegdxASGUhmAD8YXggEwOuF4nIIBKGhESIlcN5KqKqE9evB7wb/2d4hZWExYXQAvv6X0HFM7oPZ/H2wCtxr4Par4TdvFUGvjyrlHEOFh3JuYluABckEpFPQ2wEj3XBwLxzrg/1HID4GPYOQzkLClFFDjwd8RRAog4pyKCuHwQRURyEUgWQWihqBAPiQ0VrlDGGDlYG23bBvBzybgYTzkVENXhua6p0R+lfjvGSBJHQehB3PQDswNs9ZfUHwh6G0UsTHiA11Y9BQK96AQCUEvWJsL5aRfsuU4zs6AB3NcHAP7NgJnT0wFIXRLGRmeC8qVkLlCIRCkBmFWB+0HoQDB2H7Hjg2BAMxSJqzhUfVcrh4DMIVp+FNegXYFqRGxYs1ninwyDhes0BQxKLbWKAnoC1TLgcJ55i1H4aWDti1HfqHoLMXJtIiPggAXjnGXh+UVkEoDIPDUFYGpg0TGWhaJ4tX4fEax4JsCo7ugIPN8GwWMs5Hrgbw5OCiVfKbOo6zUVEWMyo8lHOT3ATkRuHXD8BLT8O2ZmgfgokEZE1IpcUAzIdegbits1kw45Ach7Ee6HLDwZfB44UHS6CkEv7gS7DmfLjcC6Gzu5vKIiWbAjMDqTEY6IRjzeDxw69+AlUN8IlPwsomWBsC3yIRHukBGHkRHt0K/3E/RJMQS8rvxcwdP2QKINENLVvh6b3w+UdgLCVT1hEcJ5r3TJMeh2c/D61H4ev7IJ52PvABxfDGd8BdH4dGoGEhNsAGEhDvhR/+GzR3wEN7YSIF40m5J2VMJ+QKIA1kYDQpIjU+KIMkbXvB7YGfF8EF10DxFmjywAULsc2KoihnBhUeyrmFnQPbhFg/DLXDkYNw8CA0d8Kx+PHnMwpio+2cE6ee/3BcXoaHIByDkaSEnVgeNID29YzjrfD7nVwOACefyMyJAZl1LqJ0Qr4/akF8Ao72iGdtZQB8i6SGR2YCRtrFO9jWI6OomYLPA8Xg8UHQ7eQTAOVVEPGDZxz6W6C7HTr7waTg92NAsBh8fvC5xZMAUFEFRT4JWzyTPyM7B+N9MNwBzYcgmhcefiACqwfEk5ZdqPVbkBqE+DE4fBiau6C9d3YYGzCZq2Qg9zUbyDkblnKuKUahZggmbNEoiqIo5zAqPJRzC2sCsv3w6/vhvm/CwSh0jssI4vEwDImddgFeIJOTmPRZmIg1knFeNabh9Y0HAmFYuQp8Hrl2rAxkkzA0BP0DcslM2pM2mAMQT8K3H4K16+Cy90Oo5OztQiHDffDsw3C4Q3JZpiU2u2DVFVCzDC6sghKfvB8qgzVLIH4Afr4V9g3Kz2NyXjfggfVXwZKVsDICxc684TK4tBEqS15fIYvZJBz+MTQfhB/thv6x44gOt0x+D3jdMl/OlGtqETmQFEVRXk1UeCjnCE7c9Ngw9O2GtqPQ1g/DaYkvn8QFLi+U1UIwBNWl8mAP+SdtJLI5ESqZJGTSMDEKqRRER8FTODqrT//XLy4gDMFKuOBiCPsl7M4ywUzB0DHoa4O2QeiJFVwqFuQyMNQPg+WQyomGXQzOMzMLY861Pu3S9oMRgKUr4bz1sL4Mip2KOf4iqC8B2yPzJpMz5g2CuwiWnQcbNkBTMYSdx0qgCCoDUHKGPR5nGysHvcfgWAeMJaWwBTA58lFaAXUNEA7IdeX3gMcl11XOlGOcNWF8DNIZiI7Ld19Px1BRlNcsKjyUcwQLyELrdnjw07CtD/ZOzKENAuArgze8D1acB3dcC1VF0BCeKnNq52RZfe0w0AX7X4auVvj1yzCckbKhyuscD7AEajbAPX8PdRGoxrl+bIjvhuiL8K8PwHefmu75sEzob4ZiN4yYUASUcvYNx0wOohNOQnMhleCuhje/E66/BpYaku8MToiZG1wHIRl3QsoKcNeBbzm85Ta4fQv4januUIYBLs9UKNHrhUwWXtgO+/dCqvBY+4FK2HQz3PXbsL4S1lfIR4bh5HzkYKANRkdg73bo6YVfb4XaysVTpEBRFOUVoMJDOTfIpSDbA4PdsH8A+iZmVMoxxNOx4mKoXgpXbISlDdBQASUBKAoUhHvkZKqolfK6Zg4q6sCogNEMnFcJVZ6pWHVAVmZCbycc2gEJezI1RHodVIG3GC5fAWUB6GuF8XGp+pPJQiILvggULYPGMlhTBdkxyI5CX0zyAiYmJPk9lZHE+Iw51Y8Ep1eE1w+BkFTgKiqDmnIoj0gY0PHKKmbHYOwo9I/Cvv7picCGAU0bobIRypLgSUNrB4xPwMi4kzgMuH3gj0BpOdQ1QiQA5cETnzPbAislifzdbTCWgP6YLDNrSzK2xw/ltVBcCksijmE/ryviDOASo9sfkEpIAQparpaDuxHKiqAEqYY1GX9vS7y+lYWcPaMOP5CNQWYADvfCkb7pn7m9ULdRKmWtLp1d1jk9DOPt0BGFI8Mz5vXAykul0lZdAFwpGNoHsXE4MAztu+FAHPpSMzYoCVYc9jwD1jBUINdTIZ17oT0DwzN2xp6A3ADs2AbeqOPZcQFFEC6GyzbLaH1hkQYrC3YGosMQG4aROIwnpMpT1sm9sg3JN/F4oaQUwkVQuwTCPvl9FRrhtg3jHZAcht09UjVqdwt0D0Km8CaRA1LQfRie/D4cACrznxlACXjDcNVG+U2dspfKlnXYGfF0jKWc366DOwj+Bqiqh1W1UFcMRUXTF2FZkKsRb20qDRX1YAUgshyWuKF8rtXaMN7m7H8fjMwQh0VlsPIyOQeRCRiJSuW/iRQkUmAZYLsgWCIlopcsl+2qDh1/ECbZB4ljcg12xKZ/5vXDqsuhuAjKE5Aah5Y2SKQlgd4ywHRB01qp1BVh6vqwbblnmGnoOwaJBAxEpTLhREruRTnkXuj2QqjI8WzXS2n08iAETmLWJGMwNgCxCRHiyZR4lrJZqURm5px7F0jvIOc6DBVLNbTKaoiEobxkslDaCbFzsk/jo5JfFZ+AwVG5D5q2lOb2+KCiwSnNXXpmq8ApyhlGhYdybmBGIf48NO+FR3un6ppP4gZPCG66GzZeCrevhIrAcUYJXTKVNsjUdCFgw9vHZcQxUQx4pAjOJDkgAXseg3+5BzptaMt/ZkDoGoishns/ChfVwHM/hNYWeOBZech0x6B0A5z3AbjjIlhzHUx0Q+wwPLEL9rVDezvE4tIbIZkWwz9rygPR5QFvCCLlULsUlm6A5RfDjZfBJREZUT+e8Ej2Q8u98OuD8HePi6iZ3HQD3ve/4ao74KJuKBqC730HjrTDSy1SxjMDBMuh6nzYuBlueRdsqJmH8DAhOyxJyY98Cw53wmO7YSILoyYUVcp06c2w6iK48zKo8y0i4XECgpUQXC/Crw4Jp5qW+Jt19t8Wb0ghyU4YeQK+9XP4j19N/8xfBLf8M6y9CP7oQhE8hYwehdZ74Ts74SsvTv/MF4Tf/RpceBW8tUaEwJ7/gp1H4dPPi/i1rTmO7wjkRuAb/8hxGzPmm3TOnNfqgUwPfHkPfCU/owdYAcvWwNe/CssCUkEqf31aKTCH4ejzsPsFePkAHO2Cdic/ZgKw3ZIjUhSBdRfCslXw5tthWTmU1c3cOOh/Go69CH/zU9h+zNnWmU0RTWAUdvwUdj48Yz8NYD1EmuD7/wyXRiDMafRISIGVgGgCRlLTRaevFCougfPWwRX1cx9nw4DSWpnqVsp7tzg7YbiOI4Rs6H8Kup+DT/4CXu6e/vHyTfD734BGC87vgJd2woO/gPZ+6OiDrFcKaSRjrikAACAASURBVNSvh4pGePfdsOo8uG6JlPedi9g+6PgxfOl5uG/P9M+Ky+Gee2HVCri0SwZh/uubMghzoAfSLkh64b1/Bu9bB+spEKY2mDEYH4JnH4DOTnjyZRgehbYBSNtSGMAflmIIS1dA/VK4/i2w9gK4vOHkwiPaBUceh13tsLsDuvqkt0osJmGI4xMiPrLIfTdcBuFSaFwD562Gq6+HC1bA5mLpo3FS4eHcB7v3wyPfg30d8PR+GDdlKqmRktNX3gYr1sP7rpDjcS7cBxXlNFDhoZwbJCek98Bgn4wSzRwRCi+Hkno4fwlsqIKQV0pSzsmM7r9Gfpg9AC5LmnQd1wDLd262p1f1MdOQGYNdv4a4Hx5/Cbr7oTcK4ympgGQ63YvzD5SJfhg8AIf3w84OGB6W+O6xhNP0MOOMgDqlTq0kjEVluzImRIcg3QcHDsD1m+G8Bihyz9GoLW80WhJDnpvxRBtqgY7noG8/5Ppg+xEYGJbRyYzpjECPwnA7HEaMsbHLwHc11IUkjn/WMRqD0SHY9lPo6JQHbV9UDLK0k9xvxEVYHX4Ror0QHIeqEuiPS1jQYn7wZsYg3S2jlzFmVEhyQaBcErND7qmwpUmcfCXL6RxeSL6s7XHL0zrnMn9dFDKrC3n+vOc7lJ9kGPVkn897XgNwupsX7kZ2HJI90HIUdr4MR1plJLyzT/qIxBLSUC+LjMAn45LM335AcrvMNCxbCf1XwopyWFtVcFicfc3NcUxnYttOuGUhzjabucnTc3q4kM7SbqlmZhQcFzMhnoneJtjXDdUlTuI908PTmOP/J2Py9z3H/idi0sBwIAG790F7l1RdGx4VL0TOFKE3ckxKEW99CFqWgPvtUFcJF5TJ/kxbnw1Yc1/DmQwMN4M3Bp0vwHAPHO6RXJVEGkwP5AznWi1YXrJHmi0+/RR0d8PLO+W6aBsQb8dEWu79OUTkWyb0d0jPFo8BR/bC8HXQ2ChFDUqOUxwkNgiHX4KDfeIBjo1JGfZ8bk06K9uWAwwbEmOyjz1HpZdNZhTa10PLEFy8DNY1TD+Hk8coB7kxubdtexja2uHpg9A74twHLZnGY+IVP/AcDHZAUUpE7/D4cYoSKMq5jQoP5dxgfBQO7YLujjnKYBoQWQ81G+HSlbC59jRWYAA+eTmtYlYZMMfg6ftg5xj8rAuiM2PpZzB6DLpfgJ27YGvnib9rWxJuNp6C8RHoaZH3X3wBgksh+OdQXAN+16l3iB7YC80TsPMJGOiWEeeZdpk5Kl3FB1th93MwfBd4V8NV1bOFB5aMaA8dge99CVr6YPvE7GVOxGWK9sho7pFeiNRCeGjKAFyspKIwchQGY9DPdK+GywXhajkfJW4ZvdTwfMjEYGQnbPs1fOleGDJnh25NkoN0XKbRPjhiwPO/hqYrYb8f3rZ+uvBYNHjA8Mioe8A9XXhk4xDdBy3VsO0IbFoOpSXyFF7ItLJkFJofhZFB2LVNjPdpXjjnHAy3wTDQuU+u3ewKWL8GVkVmC48TYWVhYBfEPPDEfTA6JveUSebaWRvGWuWe8d9fhr1HoSs7h2c7v8kJmXqj0IuEv7qD0GzCqothZfnxhcfQMdjxGLw8LvelE2FbkJ6QaXQQOvfDjieg6lKo74F7boVVDbNDE0GEhzkEPfvh3s9DexR2JWbf18ajQFSEn8sLR4ck1K0oJsUpFvN9UFFOAxUeyrlBKg1dvTASm/2ZYUBdE6y4AIJFryAJc4YnZN7YkD0Gdgz2j4I3A8mTjLoW4g1JJ/WqSolXLg5KdS2/W5ady0hS72ifhKL0j0/Nmx0GTHh+L6RK4M71sDRyapt/rANG4zA0CmlDqhFhQG5cRrKn6ScnTr69FR57EhqugrXl4gXJ2xOZJOx4BI4ehEMx6MvM8FA55cUiJVBSJKOCVhomWiT8zOeIlIXqszAvcsAARA/Bj/8bSkNQjDOKmYGRVhg4BC+3OB6h/HxBCam56kpYt06qFp3yXTZffu0V4vJCeCmUW7ByGOJx6VqetiBZeEI8MtVUQigoq5/5G0gnRCBmZvaS8MlUWyrXLYjh7V4GjUscD1xa8kDadsMP74c9rTBoFmyDB/DCkiYoKYGIGwwTBjogkYTecccDlINoK+y5D8pulLDD80theZEc81A9LD8PJvwSw59JS7GIyV11AvLDJVBeObnbzsEC92ooWSL5YKddhcwNbj801cHECLzQzZSVnwVi0LYdHkzDc2VQUwZl5WJollVKzkJjAxQVw5I68HvlEL8S4ZpMwKH9EkZk+uUeUxqB7ITjhUkVVN4CEX1j8OLPIN4iIVc1xVDjnl9ZZDMDe1+WXjCj6Rn3j5nYkItCJg6P/QL27oAj/VKUIefktuGTfKElyyDogWKXeMBi/dJzKZ5GvC9paH0cxlvhF7XSwPOKaplnLgJFIvwiEQiHIByUstluZHm5JKSTUqEsmZbQuTzjx6D3Sdi3ArathfNLoHbGAExqDHY8JH2mDo/JtThNRLgBL5RFoCgEubh4cUYPw6gbfKkZ/XIU5bWBCg9lkePcqVNp6B2QkrezMKCmEZavlYfqrEVM+vNPYfQo39hrnk98s08eEs2F88+Y1zXzPafcjzcEoVKoXwEV5WKMBHzSfM2wpPHb+DB05+BYFAbGp/YjF5MO7jsOwVAp3NgkSdr5xc+H3m6ZMGS0vqhYyntmkjI6mi08bhaQgWOdEHsO3rgCzA0iOvLHOZuCfY9LCNjROIzNTHLwgBGULvENNZDtlbjutk4xVBYFOWAI4il49AdikPgQ0ZFNwMCgVBxy6hQIBhAAf5kkVa9fCyHfaeQJOP0dXqmbxOWFcCOUAcuHpI9H94jk10wTHl4w/NJxvbJM9nPmoPTokJynWU3sfEAYqhugvmxq+31LoLZeSut6M2D2ykj6Dx6CoRyMFC7DC64gNKyC+gZY4pPE+IMJCbUZmJgSHqOdMoWKwX8pFHlEeHgjEKyFpiZIe6AvIQn/sWxB2Joh2xYuhfrzIEhBGJwB3vOg2Clze8rnrGD5bh8sqYGxIfD0MSU8nByTY3tlygvMxuVQUQPLVkvTxc2bobYGIhVSGW1aHsFpDI6kktDaLMfZCEsIYMMSSA3JZFozhIcFmXHY/RiM9UHbB4AQVM/zoJgmHN47/bjMyqcpyFexYpA+Blu3wuNPwzFg0sZ3AX4IVUgeWJkP6rzQ2wKdadn2vPCwM9D5rISvPvVmGAjApoqpnI/C0FrDkEGq0iIJzaqslNLrIb+T22dBdsQJbR2DkTGIpaZEbLJXpsPXQs0w1PqnhEf+PpiagN2/hP0t0DoOqZlhU14pY11aBTUVkOmWQiCtLZIHpyivUVR4KIscx+AwMxB3YsBnYiAj0jUl0jl5JqlB6H0C9nfDj/dOrzQzCw/4z4eqOvjjt0Bl8SlsqwH+WgiXw603QV0VLK8Gt+2MZkUgtww21svXay6RSlf3ZOE3LBnt9ftFdHhcMoGELphpmIhJHPCvvg1Hx+Bw3vNhS/xxygODV8NY/SkmxobBFYabb5fkyY3VUOSSB2FPJ3znWzA8Af0Fbv9MDEZbYCgOfUAVELYh1wUTx2BbBxzsnd6o0QiCuxIuuRTedIsIpIZisMYhNwEvPQCdzfDzdhhKnsJxXyhyEmLRfkRGb104+RWmM3pMgSBzgcsPq2+EJWvhymWwolRC384W3jA0XSuVhSquhtYX4fEeaB6TwgWTFIGrDG64EzZtkEpPM3OKW3fADw5Ad0q6s+dxVYKnAW65Ha7d4HgKDLmegmHJAcp0w/YHYe8+6HOSg4FJT8cVt8Oay+G6lbC0FMIuwIT49dDdCvf+h/RKaS4IU+k8Ck88COe/FTbVQXgNBOvgPatheAhe+n/Q0Q7HjkhxBkB+ECE471J410ehBpkAEd2lMgjQWCqhM6er+3wB2HQrlKyAVV0i9nrTcwx6OCXCR3phIiqvAb/8xoMhGUwpq4FNb4Sl1XDtGgmjPGVR5AdPHaxZB3fcATVFsLRkKlxp1yNSpvypHujKXxcWEIWxXvjVbriwSYS0e74rd4O/BNbdAHU1cM0aybsLucUgHx+BtZfDUmBwO7Rug7YeCVvMwmTMa1k9vOmjsLwO3rgKgm4IuSAxAhMD8IsH4NnHoSUJw855zmTgpSfEI3LncqmyFS7YtBWXwR3/G5IhSAUhHC6477odkWeLByWbEC/bof3w/74K0SwMFCyrsxte3AlXBJDyXCDPqy4pBLG1A472ywBOHiMM7nK46lq45jpYXgY1YbBGRXg8/wPoaodH2yB+knBdRTkHUeGhnAPkJAEylZXkv7kI+yASnPvBmB2Doe2wdz/c++gJEncBwwehN8F5a+GjN5yi8HCBvxJKl8CVN8HqZbD5PPDmpHzqmAm9WRlZAyhpgnAtNPlldDpfOndWNZ7C/czAsZ/AaHa68IgPQNYPoylIIqO587URjBB4ymHjdXD5lXBtNZS5INMFh/dI6VErJcIjjzkB5qCUDY0hVbWwIDcMqR44OgxHR6fHkht+8FTCiovgrXdAYwAa/IAp+SslLdCchGd7FonwcJoBjgzO47suCTGqXgVLL5Bwt7qAlGQuHHA/k3j8ULFayuMuA2pMaAtJ081p+MFVAms3wxXXwhLk+ilkN/CMF8YzTIubM8JSSvqCzfDGa2eUdXZ2vH8c2nZCVwfEC4syeGTdKzbBlW+Fa6tgaX7FFnA+dByAZ78DdhKOJqbmjfbD6E7ov0yETFmNeDwuXS05DelfgHd0RjlYF+CDqia4+EZYbshxebVxe2DJBiAopbMzKclnMa0Z9x4niz0RlynaL28fcbbVWwYVS2CsFjZm5F4Sypf5PoWLyeUDTw00XABvuxNq/NDgASMHdhYq+2BfH+wbKRAeNpCUBP8DHVDsB2vNKXiMvSI8ll8Ka1fC7ddAxA8RH4wPwEg7BJZKPl13B7S+DINR8VIVLiNUAZtvgrV1sKVavD+AuN1SMHgQep+D/syU8Mhlof2QnO6xDCRtJ8/KmbdyGVxSDT6fTJP33LnuuxlgGZT64CduEbGFwmMk6pQf31jwpgW5QUj0QvMIdIxND5dyBcFTJb+3t94By4JQ4wOy4mkKHYDDJjx1TIWH8ppEhYfy2sAJl13QJM0T4pcR5rffBesugusukMaFIbeEL3mrwG9DsQU+JxPR7RbB0X0Qhrth+37oG5RclomU9AHIWdON99F+qW8fm/lAioMdkPeHkMG3uRIe52LpZVB7CVyxHi6rhCJnRm8tlI3AFcuhxAfNxwoqYqUBp+xvDHk+2xYMNkPPQYimxIgojC6INMB5t8P6S2BNGAL5k+UGVwA23gh1y+D+o5KPEJ0x/6ImJ2VU990PnU+CEZVyoh++WgTx6/JO6xivo1F47ggcHppheJcA1RDKQOQYdA7AsLtg3hyMdENpGZSmkAvNmT83JCPSff3QnIV1bhkNXxS4wdsAtcXwZ/8IHW3w04ekbOuOI5Inc1J70pKCDtFWePw/4OgFkPDBRfXwtpWnJmKLKmDju2DTOljuLzhOjhA7/0poKIdffQnahqQ/Ud5QTiehZS/UuSB9jVzHJzvMLj9UboGmlfCbt8CSKmiIiAj0GBCpkjAntxuMceg6Jsn2w4WJ3m6gVjwDpf1gp2B3d0GOidPQI5GBqmoIOEIE5H3zKCQMaElIvlCZZ+rZ4LXAlYX2/dDWDEc6oHtAqulNOAU8TKtgPRmIR+FwpiAEzCE+Atk2SBRsu2XCwEHoPSgFRsaZLmjKl0HTO2D9RXIfnDwfHvCE4ZJboHolfPeAeFyjnILgU5TFz+vycaicaxhTcbnHy7mY7DNwnDu04ZGa7D6vYzzb4mEoLG/7ivCCOwQr18LGC6GhDEoKfl7uoAiBIEyu0MxIgudAJ3Q1w+6XoKMbmtthdEIaXJn2PJOsM0DSSRzm1Az2SB3UrYG6cqgtGOo2QtJXorYEemMzjB0TSEs8txNijW1L6c6xIYkZn7nd/iKoWinx7BFPwbl0YsArl0h4WSQoI5TxU9yPVx23GEdFBV3v89hOedpM2mk85pRoHWmBsX54eT+M2nDHZRI+4znFUerXBDYyipuU62dkZgUhN+AHcxzSvVKdaObAwcQA5FzMflQlZbR+IiGJyJmzGNI2E8MFRpHkC2y6XAzjtoPg98GxYSk8kXDKDefL0VqW83fBzcjOSmnXnv2QNWB7uwwAWE5/j/nusi8oPUGqG6XKWj6EE0PKxZbXS+GESLHcnxJMCY9cVsrPjkWnypifTHgYbvHmVq2E9UuhLjI9dM0dlG0iCXYCRscllC5VeMNwksptQ7zFo+OzjX6QEszGzBEnC+y45I3FshDPge1BrkcLzCSkRqCvDQ7vgl2HofUYdA1LOG8sIVX15kM6BfYYmNmp54hlSejc+LCEms68DwYi4hktr4TSwtEhQ55RVcvkWJf45XwU6G1FeS2gwkNZ5BiAV+J0y8IQnqPckY2Ec7RGpbLTzHq47qD0+ajLwSVDEraFCf09MNAnhvNxIrjmjbsB/EtgXS1cOEfH6WlYssK9P4PdD8MjzbC7Vx6u6Ywk0ucsx5id7waYYqhkLacPwils+5I62LBWKkzNxOWWGOhggOltxZ2RwJxT9SovPMbGpBHXXL0UwkFY0SgJzLMwgDIZiawJQr1HKh+90vNy2niB5dC0Cv7xE+K9KsMpj2pCvBuiHfDzn8Nzz8GxNMSdjTWT0PxjmNgHW7fAefXwhuJTL3N8zpMDYjJyH8tIs7RpDAFx+GkvPBWarLUwfRFZ6cidzs7oP+PkR4yNS8PNVBmL7nFmeMTT2VACd/2V5AX9YVxC9/o6oKdHChR0dMDgoDTYHBmbkTvkEO2Hp38ApTdA3+VQYojDaD4EfbCmERorjzNwUwa4oTIIDcgIff4Wa5mQGBRDesKWn8XJPKleL5x/oTT0C/tOcFqSQFS6k0ez4gmaxARaof8YfPaw4x2eYxHpUQlPis8MHzQlL24wBhURsCoR5TIALz4B990LzYPQPAQTSbm+Mlnnvnsqox05pJS6cx/0IvfB0bh4befqjVMShvOWQPlc1QcNoBzc41Dnl5LEA+Y55PlVlJOzyO7UijITxxpxe6TkoH+uYS8bxiZgJD53DojLC8EqKE/B6tXSlIyMM9rmVKN6RQauAa4QuEskFjriPfGooJWRhOr+Tji4Fw53wZGCMj+GV0pyRook2bEwTj2bkjKNmZx4NwqPAdbpNT8LFqxrjl3D44z8T7NZnBXNjIs2zemjf4W43RAKTIWazcIjOTZ+tyRln1U73QCC0ghw7YVQXwrVgCsHmBCtgpESaNkHxyIS650XHnYOEgMQL4JjcSguBftUcoVOcBJte6pJ4KLHRgSx08F9WtlhEOs2C0MJ0SCns3zTFLF+SsbiGcIw5HoO+KC+GDkApoiI3ohUsCsrk99Eeal4NYpHYGBImocWDiCYKYh1QXxYhMGp9BpyucT7Ejje784rC/S5pMrXNAPflvtVLiubP5/DbLggUgqlpQXJ2nPhiMdcbkblPGe9JMVb1hGfx0pn4njA05mpZ4KZkoarve2wZx90TEBnQS6ZJwBuL0QCzj3PNbWsbBrGRuZ4VuTvu/b0n62Zk/XO9TP1eGQgxzuX+eUMtBk+OR/+mRXBFOXcR4WHcm5QFIK1K2DIw4xanHLTb9knMdBj9UxVF3Hwl0PjjVBlwmV3imucKHz9y/C9Q1OdcF8JnjD4yiT5M8yJHxbpThh/CZ59Ab51UMqbTuKG4HIor4H/dRvUlkuicj48ov0lePl+2B+D3SNzLv7UMMDvgbC3IARj+sd40TvFJE5cfMlSCNfBTT2wIgOf3wa9HQXfy0JiHJ7dL5XYbqkUQ2JemBzXbWVakuCd0eL+gHgvM5lX1nX9jJG/duogVAlNmxyh7oj1WJt0uf7XT8HBw3A0W5ALkgBaYaIfumwZ2FiM/RNBwhIrSqCyVETP2cK2JQwym5X/j3TB7m/D8/vg5eiMruAG1G6CiqXwzsuhoQIiISdEMgute+G+f4XBDHQcb4WKoswHNSeUcwOfH6proSQuz++Zdsb4IETbpQneUEqqkOQNaZcbXEViQBeBBM56oDj0ChqFzcQlsc0u4+Sx15kJGOuBeEySD6dVPHFD7QpJsl6zBurKJFTD7Wxk7hgc8UDgVRwGM4wTNwY7lfQEj0dCLeb6fi4HiZSENMxJFuy0xEWnXq3cm1cbZ8fcPvGkFYeholjE20wsC8YSEspRuC8ny1fKmTLN5dXImBAfk3C8RY/BZCfvfBnYwmg9AtLHYGk1VJac3u9wVaNUaQosohwP25KwKpDSuoZrek8gt1emQq+FbUvoVCQozfr6/eAujLlyQhstJ6fqVHSnZcFEekYORSFZICWG+IyiZeLN9TnbzPzySgyk07n3ZF5LF5Ib55brwzXtRyJ5MsEQrKyX5Z3q9VFaBw1FUO6T+1s6Cf3d4p2c1uDV8bQ2rICmdbB6rZOj5zTTJAHZAfE+zLd+gccjHo25ttk05T44Z4VGJy/KzohHO30q4baKcm6gwkM5N4iUw8XXQqsB3hdmdHS1YXg7JFrhyTdCNAw3N0DpqcQjnEFGh6FlDwz1z5GAHYDbfhPO3wS3OUnYroIH+PhB8GXAvQhHvA0DioslzGKussYTSWjtgvNDzK5jagMxsAagPwm9ZzO/4xRwu6Uk51wju5Yl1W6SKaZZDy6XzDPXMbJtSCYl7n2uss/ROOw5JM00Fz1uoBQ8JTIQEPMw7aS6l4BnFfzhh+E3rj+9qnTegJQNnrc36QyQy8GxNgn/alwj53o+FeYCtWCHYHW9NGvcl4bkjBuEE510Sr+NZEYq0pV7wa5ntjUcBXoglpRSsYWrdHkgVA3hMigyChoungSnRcuJxUIQKJOu4WVe8JpMqR4/eDbBqnXwnb+AqpL5V+mb3HYX+MISMuU1ID4Oew9Jgv80ysBdAe/4X3Dd9bDaI32MDAOMDDAAY2VgGvM77oYhPZkikbnvC6MTch8cKUZqVxdiAyNSjrcvBX2mdi5XXnOo8FDODTxBKFoKlbXQVCS9CIYLnpB2GrKjcGiXxCM3Xgw1pVBbIaNl/oIRZjsnpTgtJ2nvTI8oWZYzoj1XeIgBHp8YU37f1Ei6lYJsVJI8e5Mwtgg72xqGdEUurpRuwV6mGzHpMRg4AkMRiJkQdE0l4ds2DB+DgaPSLTzBIk+odIK9o3Ho7JcR5ZkYBnh9MvpZiMstBrPbM9t7Z1tSRWikXyqD5RNWc0lI9MNgN7TEYXiuXKfFhhOn5wtCbalUFyI29bGdkq7VCRPiHmgIQvFJrMtsEtJxGM1B1IRax3M5c70ul2P0FVq++ZwCU5KJzXyH+FcZMwuduyTx/cgABIqlmWgoAGVFIkQCPsfTWDBfMgqjgzA8Jud3Wt6KGwjKvSHM7AaPJyKThJ4j0O+B0fOdju1ORSvblsaFscMQHYMJphu6bg+UVkiekseYvzCcl5fUqWoWKYa6UmiOMxXzajnVosYh7pIKT1WhE3tmbRtSUQm9G8iIp62pSO7/IL8t0zxOWJ7hnJeAiFifsx4zCaOdEO+TKnXzaS/kckkT2aJKyVebeR9MxmGgGYarJKk+5J5qNGpZMNQJPS3SwyOJejyU1xwqPJRzA085lF4Jq4bgpgZ4eQiGC0eu0pDNwE+/Jjf8wQ/DypXwzi1QHobqgvCfXBrMqCRqZ1lkBq4z4p1MThcm2SjEnoW2PfDMAIwtwqeR4YaqVZBzQ3lASnTGmDq+8R7Y/yCsBpqvdBoIOkaBZcHurdD8PHSOwMxByUVHGhiDQ83wyxehb44NdrshUiJeoMKwKq8fwqVi5OSdAPljlDOhdbckwg7dBMURKTqUHIT2R2D3c/DLbkgsqov2OBhACIrK4JJVYPtha3wqhMzqBWtIypkG18Hbm2R/T0RiCPp2wu4JeGEMbnsDbNk4/TsG4PGK4Jtmp+aAhPRGiCUgFWBBhEdmArb+Jxw6As/VQXE93HALLKuDK9ZBVRk01si5n8xftqB/D/Q2w4stcKBvhpHrA6ogVAINxqw0thMyPgTbfwzha6Dt+qkGgnkhduBF2PdzONo9O8nfH5BmqkuXiUH+qh4up0TWsgZp/Lj7AHTlhUcWzANSKvmXrbA+C7cvP4nwsGDoEAwPwCNRKfjxO2+B0jmq9U0jX5kqnw/iY/LCScXh0MNw6BC05eYu6TsTlweq18KEAWU+GGV6SdxoG4w/AAeLoHmT00DQ8c6bWdj+mJT57R6blc6oKK8FVHgo5waGU9e9qhEuvx4mdkP7yzLyOWmE2ZCbgKQBh1+QG7zVBUUBKA1IDLHLkvrumUF48ag8EM6088AfgkgtBFrF8JhWDSULh5+H1DA0nS+dfklKTkjHM/DyQSlruSgb2hrgroRAElZVQjYGO0enymTaael23rILHroflkQkf8VKyMjiyzuku/XoYshfsIAYjHfBtl9CeZF0ZzecKjbpGCRH4Jk9cHh0Dg+UR7waS2uhvmJ6yIURBE81FBdBtQuitpxTcPIDjsFwDn76Y6iJQDlS0rTrRdjXAknrzF+zp4VjvAWLYNVFMOCB4kOQsp2Bbcfwbdspxye4Dg5VQHnQqeTm9LnIJKVfQjwK8UHobYXuIHQUwdWJOVZrQCgkZaCNwiF6pylhXytsewgGi6G7WH6DhgGRJRAsgeXlUgb2dLFtEZBmWvqQpDOwbxv0lcLQAckL+v/svduvJMl95/f5RURm1Tmnu6e7p5s99yvJ0YgUOSQl6rKiKC5Xq9tebK+NxT4s7AdjDRgwDBjw/+BHw/C714AN24Bh2AutVvtgr1balVYSqRXFO0VSnCFnOPfp6cs5VZkR8fPDLyIzq86Z4VBiS5xmfMmaPJWVl8jIrOrv93e9dAF6b9b4nMz7+spX4I0X4ds3TjffDIdw/n1w6T57Dvc70SDLaQAAIABJREFUy78d8gjxRfjOF+D//t/h2jl4pH7vbsPn/hC++Ry8ulQ65ff24AJ88HErCb3fy+YvjZLwc+0ReOojcPUFOHq99CEqFdGOX4c//i14/UHofxzO9fZbXqtJjVv7zbxxHU5uw3e+ZjlQX7wIF98D48J9s+rh6mU4P7DL6LeQb8Ln/sAqeL3+Hut3sn3dqh5+9vPwtecXTQW/Fxz4q3BwA566F/wGPnfTenOAea/jy/DlP4J/dgCPX4JrR5COra/TH/wpfOc5uP2u+JI3NHzfaMKj4V2Ckqj66I/DA/8E4v8K3/gifH1j3WsnHMNwDL//f9rb/0dKaMsR+AzdaBWBNm9R8vWvAoeX4L6n4MJXZ4t3Hcu4hd/53+D8JTj5FJzvgZfg5efhD/4N3E7WWO+HEmJx+0cH8LOPwMVb8KXblhANoCcQvwN/WGrpP3wfPHDNSNF4Hb51/YdEdIDdlO/Cqzfhf/4fLOStA7OOjvD6y/DKd+HGaM3gdiDAGtYX4Jn3wlMPLkpzAu4CuCfgyr3wRICvxVl4kOD2l+D4q/DffQ76YMJju4WXr79Lyuju4cJl+Jlfg5uHcOVfWErBJDwy/PFvwL//l/CnH4crD8CHrlmjPAYj76+/BG+8Cl/9AlzfwIvH0H8A1j8Jv3b99Pmcs1KuFy/txdgXMvu1z8C3v106at9bDO8e3vfrcN/74R9+6C8nPCryCJsX4Ph5ePmL8/rq/VqtzOs1nlgz0ahvHc+/vggP/Qw8+H64n+9TAGwhPgtfegG+9Ptw7Qo89hBsXrXXSzcsv2MHApyD81fh0x+Fx6/uPsM/SDxZGq4++ln4s2/CSxTDSjIv6W/893DPe+APftqaET59hel7ePMNuP0mfP3L8MpL8PxtOAlw+Evw/qdhu0jKODyAxx+Grw/AtxcDuG0i7Df/D/id/w9+8UOWH/jG5+D1V+HffsVybd5xXo2H8JiJl088ApdH+OKtWXjobRN8v/N/we/+pt2L99wL4/MWLvzNN5roaLir0YRHw7sE5V9adwDhPvjgz8E/ivC7n4XPfw2ee/OMJlJgdeiTha5ktcTPt2zM56yHxnveA9fuO7uvxQ8Cq3vh4ofhiT+Fj16Gb9yGV+rYFeJNi3v/wmcsRphbcLyF4T44l+GBBK8dw8u37sz4/qKohKpbw4f+Fhw8CI8XYvPyUugl4ATefNXi/NNN84b0D8C9PXTP2vpX+WtOrExGCr/7bSNdHiar+cktuDXuleQEs3YewKOfgMefgg9cgIf63dh4KeXVHnsYfuHDcOPP4cW9GBfNZgEdxIRmxBKPL67NU/TKdXjxXRKHISsID8OjH4J/+HfgT/8cfveLVrlsW/sgjPDqs5bnMD5bnvviCTi5BSfH1u/jJH7vXjUuwLX3w80M19YQj+H6okpa2phH8eUTI94ey2WQn4STa5Zb85e6XrEwO19L5u0NtorHWuY1R/ttOsug7npY3w+PPAV/7+Pw0YftmN+P8Dg4gkeehM0xvPgd69r9fLJ5ibfPqHbloD8HT/1teOppePwIrv0Fqkq9U/h7Lcfhk5+Eixfgn/8RfPcNuJ1nz8fmTXjhy3BzZcVDqmjdnsCwgddfg9sbGN6mGt65e+H9n4BveHjgC/Z8TCGras9E3sDnRzjwcPyiHe/wKTi4Df5bcKImnN8O9XdwfQTP/DL0X4Z/9TK8dgKvLOe63P83XobxFqQb9j04eMSqtPXPmiB9jR+ycOCGhr8cmvBoeHfBHdrrmV+ADzwN638K/oZZys8UHmAhWNt3QGK9lUm9dj/cf//ppOAfFFZXYXUJ3vt78PErFi62FB75lpGtP31l3ifcA4fvh6sKPzHCV1764RMeFf0BPPMrcOkJePJfgNvAq+Ni/pO9bmzhRiHc4uCBhywx/egVI4fX+eEQHi88933s46E7hPf/TXj6afjQRbi8X12tt9cTj4H7CPzxTfiT/eB6NeFRws9tn4tw+TJ85BH44rfeRcJjbRbgxwX+8X8Iv/Gv4fNftQID29qVLsNr3zKS9U6m++1IsA9w39OwcXD/AWw8vLknPNLGKjjV4mDiQV6EzSOw+QE8dCGY4eLtxpmSvd4ObgVHT8BjH4D/5Gfh6sH3LwAOj+DHPwZvvABvftPC1r7zduzZQ38BPvLr8IH3w5NHcP4O/RZKCc90l+DTn4YPPgxf/hbcvmlehlyE/vYGPF+8Rl/5Xsd8i/Xnr8LTn4I/ewMeDvCdCDcX8795zV6fWzyAq0vmaVq/DkfPWQjk9xIeFevz8LG/C0cPwxO/CSHa7+COASbB9Zfnmguug4ces1DBcy9amN4bNOHRcFehCY+GdydcqVby038fHnwGfvKL8OJ34Ytfhdevw/OvmJfgjRvm4UgYuXX9XL3k/D1wdB4eeBgu3QuPPgKXLsOTH7MwmPPvtHbk9z14IMAHft4q8tzze/DU1+Dzz1ofkptb+4emP7T4+AffBw88Bn/jl4GvQPyX8Mod8sb8QOAgXLEGZ//Zfw3PPQv/6neNKH/leSN2x9kEyuoAHvoxy9351C/Ae+6Bf/1leOHN0iX8hxUCeMvX6Q/g6jW4cBGeegau3g+f+CQ8cBUO3yZk596fgO48/EdXzPv1R1+G774Gr9wsnpRDKwd67Qm4/yH4+Cfg0mtw/59Z7sBn/6qu9QeE1WW49tPwqStw6Un4xjfgm38Oz34XXnkDXr9ppV+3CasydGgE/vDI+vicvwgXL9v39b4fg4c/DD/11Bkn8sA1y4X4T/8xfPNZ+M0/sGpR33nNYvVPeap+gFgfwa/8F/DM8/DY1+D1N+G55+DmbXjlNevhcOO29XGIce7o3h+Y4ePCFTg8Z6Vkr16Dj/08PPIAPLC2Ckjf93guwpOfgqNb8MuPWinXz34ZXnnTnrXkQL3lRBzdY2XLH3gEfvUjcH+pzHTH4eDiU9BfhX8CvPACfPaP4bXX4WvPWSnuV2/O9873VqRhvbJn49w9sD6Ehx+Di1fg/Z+Ehx6AC4uKZ7KG8CB86JPwXyabg89+Gb7zkt2jk2yexcOLJhqe+Bjc/yD80qfhxlfg3/xbu3fvVAWIh+4qPPBB+M//G/jzb8Hv/j688Bp8/bt2vpMMqyNL4n/0g3Dlfvhbf9PK+f725+C7xz/kv4MNDd8/mvBoeHfCre319M/Bj/0M/Phn4fVn4bd6ePZ5QK085MnGEgxHzJoUDizp9Px5I4j3XoMPPmP/YH38I3DfVUv0O6shHJh48QGCLr49Uiyc36th1jR4ez32AXj0UbNoXwxWZz6OlowdMdFxzxV44kPw4x+Ef/D34bXz8NXftpr8Ox6ZYO/PTACV0tzQl0o/e426vHubxNG9fadKW97O6c64ZnHgL8A9a/jb/wE8/w0YX4OvPmd5Cm+OlvdxcAHOXYQnnoEnfgJ+9RfhoXPwjf/RSlh2I4xlrK5YkO9EnHm9tsD38YtYrv/ggpG1h98H73kQPvV34dHH4OcethKgb4cLj8P5x+Dnt/DYOev5QTLyfRyBc3B4GR76ADz9AfgH/wjCF4BX4fOHpz1yIVijybe6l1LynXw449nxpW/BW4xVxPbzYXeOwmLf74X+PPQ/Bh9+ED7wAfiTf2eJzZ/p4RvOKpuJWLhJFnv+V2u4dMkMBFcfhAcfgZ/4CLz3fXaMy2fdMAdcskTkX/ol+ObX4c9fgOdehjduWyiV7oVTif/BPV/9Gn7q1+H4Blz5DLz0IvzxZ+Hl1+DrnRlDFGsyuGWurLc+NLF15SG49B74+KctHO/XfhHOr6yM7l8k3Kk/ggc+DI8qPPMgfObfW15EcHB7gBggdXD5Abj3fvjE37GKgL/wcMkxOwMiWFihP/s5dPLOnonl8c49BEcPwK9dhVuv2W/cc9+26oOv3jAPyLbcu34N63P2O350ZIT9wiX46E+bSP+5n4V7L+4Kf7ey1+Mfhvsuw9H/ax5NHe0cOdr8Hl2CC1fh6V+A9z5ulRGfO7Dv3OvZPBcVvjw3Z1XbEg/+Hriyhl/9j+GbX4L8BnzxWXjtBkg08XlYfkOe/Bg8/mPw65+GCxG+chFuvmK/g/Vn1wUzuPkfdKJ/Q8NfHUTfJlnxtes3/kKZjCLChXOHhLMaZDU0/KAx1W8/hhdfhuMTuH7LftSPS26HAriZeHXB/vFarc1SfXgEly+aBW11FgHJQIQXv22lDo/Vat4DJjyumPX6p98HV86/w4GP9o/oy89bxZ7vvm5xytvSX6T287h4BS7cA488CsPLcPOr1mTv+VrRpyTe+x4++HG4fK+V26x8YLwFN78OL9+EL768m6AsAo980MjOtRUc7pGI4Ra88gUjbF+7vmhqV4jH4x+C+5+0kq/7lXY0W8z0yW144VvWxfvlN0uHZC0lTzu4eA2OLlgH68MAX/t9uPEGvKZzQqasLRzj4WvwzJPvrEP898TWcku+/CV4/jvWO+Qd53SW6+96e57OXYD1AbznfnuW7j2Y+we8HVTh1ktwct36gbx523qCpAz0xQJ+L5y/YCJV3gS+A89dh2/shVr5YFbai/fC/evTTfXefBG+/SfwxgAvLQsyHBohe+ZDcPUqHHK6bOr1l+DP/p2FpryxCFty95j38aPvhQevlgpR3+Oac+nMfP11ePN1szbfPrHrHtNcPSiUxoy1F8rqwDpZ33MJzp2zJm29lApYZ50nWhnqW7esatPxBt48Lh7QPau1OLjwpBV++Ilr31s0vi1KXkKMdn2bDVy/bt3mbx1bbsdmsDHkVEilWHdw580C3q/M23F0aD1Agp87v586XYav/0/w/O/Df/tb8Jnndz9//CPwX/1TeN898MkA19+EF16EW1u4tQEVUGdCr1/DQ0/Y/F49fOu5PXnJkua/8bo9i0t0K3jvT9lv1v0rEzjveOq0VH0arMv48bF5w4bRno+s9nz4UEh4EcOrtT0vly7b9/Dee2HVWe7IvihIW+uL8/LL9rp+s3QSz3YvugPLU7v3ITh3ZIn1x6/Dn/0h3I67+ULuHuuw/tH3wkNv8fzXvlG3b8B3nzNv16s3zKgyaPkN6eDyfXB4Hh67Bl2Gr/6ePbuvqT2zYBXx3CV44gH44GPTz1BDw18Gqsqt4xOG8fvPb1NV0jiQU+To6Iium3sxHRwcnG3ObMKjoaGhoaHhXYp3Kjyevga/9B6zljc0NDQU/FULj6aVGxoaGhoaGhoaGhruOJrwaGhoaGhoaGhoaGi442jCo6GhoaGhoaGhoaHhjqMJj4aGhoaGhoaGhoaGO44mPBoaGhoaGhoaGhoa7jhaH4+GhoaGhoZ3Mw7uh4vvh49eh6NXdz+7/33WH+dS33o/NDQ0/LWjldNtaGhoaGh4t0LV+gFpsq7vee+fbXHWW8NJaTzX1EdDQ8OMv+pyus3j0dDQ0NDQ8G6FCEgHdNb8saGhoeGHGC3Ho6GhoaGhoaGhoaHhjqMJj4aGhoaGhoaGhoaGO44mPBoaGhoaGhoaGhoa7jia8GhoaGhoaGhoaGhouONowqOhoaGhoaGhoaGh4Y6jCY+GhoaGhoaGhoaGhjuOJjwaGhoaGhoaGhoaGu44mvBoaGhoaGhoaGhoaLjjaMKjoaGhoaGhoaGhoeGOowmPhoaGhoaGhoaGhoY7jiY8GhoaGhoaGhoaGhruOJrwaGhoaGhoaGhoaGi442jCo6GhoaGhoaGhoaHhjqMJj4aGhoaGhoaGhoaGO44mPBoaGhoaGhoaGhoa7jia8GhoaGhoaGhoaGhouONowqOhoaGhoaGhoaGh4Y6jCY+GhoaGhoaGhoaGhjuO8Nc9gIaGhh8sxpNjvvHb/5zNm6+DAiJmYnAC3oET1Al4wIMKqAhoRlE0J1SVmEEVVBUUXAZBEBUEcFpfilNBkMmS4RVAcSIAZFVA0PK5AIodV6e1tg+ATKtksXa53d4usrP7/L6+Ldvo8ihi12P71bWKZNvepXJtyQ7nsu3sVJC6rwJZSVnJGbIKGRgkk1XZ5kxC2WYlo0RRm2+ndQB453BO8M7ZrQpi7z04EVw9l3M2/ula1a4rK6IKeb6MjN236VpVpvmu++7OZrk3IuQy+dmVWXcyn1dsG5u25b2ph9X5mQHArqluLeUGaBm7KPisuHId9tnZ91AXJ5Lpv7vXMT8GZcxa39chL9bvHX9xpp2L0nLynfmq1y+LbepHKvMDrPV+yTTS+T7Mx9RT/91b7s/F/knr+lPr9ufo9E6Lx2ke86mTYXO3GLfujH/3uItv087nZz5zgHOev/Erv8ZDTzx5+qIaGhruKjTh0dBwl2E8uc2X/tn/wvVnv26sR4AAGhz0AQ0eeo92ivagXsgCqhHVTIoDOSvb0QRDyiAZXDTS7cvLZeizEhJ4BK8Oj4mRgOIwbQOQWJD+IlxUcyHHukNcKiFd4q0IzltpkSVRE50pckZQ0aLH3LyZTowYF0Gy0g9GirsRXFZ8MvHhVPA4vDhICknZjpkYlVEdCbhFZES5EUe2WbmREiPK1mWyV5LLJgSd0IdA5z1dcHjv6NYOH4TVSvBO6EQQ58AFEwGiZbgZSYokW5IULeIjYvdOF0R+vkRbqbpLEFUEFUgCKkoK2USSF7IIuYpXJ0V8GHHMC9GXs9orFQEpHhG734IUgZHRrPikuKx0UQlpGvQ0LqmCmD0RBZP4nYXVUpVIEV51uXgoZCFKdp4T3T3M4nhVSO2MQMpcsBSz9Sr3JYTNaxVvWm5S1uWTX8+v5MWedb9J4OzPx+JD3bvf80B3R7mLxRjrvnkhFJZztzhKViVr3hEg0z5VaAnT/C/PviuobM586Hjkfe9vwqOh4UcATXg0NNyNKP+6iwecg5VHgkMPOqQz4UEvaAfJ2SZJPZoTcVRSymxcImUhjWqW+FTEhE7OEjL2IxLU1gcEz2zflYUCWFqpp79FjIjNG0zDl8p6FgxTCqFh/7M9j8dEp3Q+li5XlDGa16KsKJ4DFxWXwefi5ckZp0IQhw+OTgJeHME5SIVYbQZwiXHI5KwklKiZbUpscuZWjIySOdFMUiP1ThxOhOyFHEDWHjqHP/C4IOjKGXlzzsYpjoySVM07kBXUaKrLirgyDVqupcxNXS7JtiLTXFRym5ySRUjFK5PsRpKDCdNURYd3k+cjo+YhURakV8jZlk5c0ShFdCiQHZoymkASSDmf04UXqdzT6ZGQxX0qb+fbeRaldZM9fX7idqTL5AtYWvwFnaz6S4js7HrKvr8rg5Yej9NCeXpkpR7ILlZRE2k6E/iFYwkVOTUfuvxuLL8/e+tOe0IW17wU6TKft3qF6nzUs+8aCvaXi2Ox/P7P8koWn08ztjPBDQ0NdzOa8GhouBtRzYxOEC/Qeeg8sgq2XHdoL9AJ6tSs3FlQdWSXiDExaCYlSEUXOLGQmCo66o9HtWqmcsqMeUBgYQkWIyGyYHkqlRLuhuwY8dFdkrIIaZHFClXdDUNZksJ90bG7WSGBlZErku3lsgkPNwkPI6fOOYIL9KHDi6Nz3jwMWRlTtuuPmZyLuMhKTJkhZzYpspXMMZlMJmbFe0cQh/MJCY5uBa4TdO3QSXgI6hxa4qtyhpSLfVmzsXVVi6DTyQg/MUdZsDspc5vrPJWQIIUiLCCLTh6P7AR1tl6dEKdwPZt/dXasLFqs5IuTl/GqK2F5srgxCXJySMyIg1g8CiGBZJmiuab7tHPjlzdXFux1fl5mGl+vWWZBsRA0O+J2mjKdljvrJxG0UDzlmDK9L9c8uet0etCWQ59Fx7RzEUBi51+Q8OkS989fFaXqJHLqM8Ji/nbf766s11iHMQmxKjb2tdq+qt//uJ5rOv6+2WF+EJf2gnzGMRoaGu5eNOHR0HA3QrC8juDRzqHrYKLjaGXLdYfrHdI5I0oCKQ2gkeQzKUa2mhljZht1IvgOxakSshAUerWwqj4LQZUVYj8qUn5cxPI+fDXHV8YxxV8YcdrN6Sikap896YLALYzLVdTYJkbElx/vsO+FzLHcFCAbAXUllMpHC60KNcQqQ+c9h6sDgvesulCmV9BsYqBDyF1CciaLsjkeOEmJ28nExm2nbB3cCooGIffC+iDgDgIcrpC+w59b4zuPW1seTvYLtVXGqUlJo3k6NOX5wyICHJaDM8dVlfkpxN/IdtlLlCwQxcKrBg9JhOSx0CqfURFSEJJAdFhuipfp+aqiheJ5cM5Nc16FpgBB5pwgkqBJkVGK6ijiNYFHccm8IzVfSJaDXtzJ5bsdy//e41Ft9FJ8IKJ27bukeHff5THO4uBVuE6LeuAymOpt0d3D79n/T6+rnpMlIZ8OLae3Y5r7XbF2hqOlfDbPyN63axe7h9850PJrLAvRVMXf7mHmT3SalVkQ1qO5ZdhjQ0PDXY0mPBoa7kpYzD5eLDSm82jncasAqw5ZdUjvcJ2byKEkhSxoCmb59kJUYVut5IWsSFaCCkGFqNCpkhVCNmttBjoAkbK0IRg5KpbiBa2TyXi9DI6ZLqNsVphXFR9LC+4em9u1JleSVO3FszlXpgRn83T44vEIxdPhi+fDq+DF0YdACJ6uC9TE7lT0kessSZzgySkyambMma0qAyY6tk4ZPGgQ6IW09uhBgMMAq4AcelwfoBcj9WIW8Fy8LqSSF+Ds7xpZPxG+kqPBRPFm6/mZ9FCq+CjCwjMt1UHydry6fqwulRKChbOj1nECeG/zL4VULusaaHW3lNCqmmhuHhUL9yPbMzIR1GLqXxYHqKT/VLiP7NDaybI+C4Q54OqtSO5SZMjOPnt+ucX5l7JFp//unm969nawFAG7fy9ky47YXjp5Tl/DvNdSa8/bymJfmbY7FYZVlIvs7bv8WFh8z3aerv1z7v49bVO/v1WgTkdtaGi429GER0PD3QYx0pi8w/c9sgro0QGy7uDcAX7V4Q96Ex3BGWlQSKMnpxEXI6KCMpJy4jhGclRSVLNQj9lCrlToMoQMh6p0KNE5usI0OxHUW25ECoWEzqyxxOmUl4Lk+SPjjbJHfHKJgS/XWZjTRHrO0iv7XKZW3yrEyqlVsXIZQjKh0aslkPdYtangAl3fs14f4L3DB49mNc9KNm+QOkVTJq0CSRMbUY5JHEvixCknAcZOGNcevw50R4Hu3IruXE847PArj1s5XDDy7jDxJlnw0VwCTo2gV46mYCkeqSxVTTyqWlWxhdegeibSNDnm7UgCKZi4iJ0jOmEMQnIQnZKAkUQGoijiFReKsBBBcQsBBBqc5XO4MkixvCARu785Myf3J5AicryD0YMvnjCv4GvY1exIOMOaX8n5buWmSmMzMwmfBKgst92TBkIJd2IOuypC7pSPQHb3Xsrb+veut2Sfns8H0sW+uhh/eernLc8QH/vLeVaWk1W+TYs8kVng1LEt5nRPH6BM+SBV0ztmcbw/Q/WvvDO2Wf5MuVoFTrQYJRoaGu52NOHR0HDXoVQocgLeo8FeEgJ0HdJ1uK5HOsEFhysVdiQHBEWcR8SjOLImUoaYlJQUzRnNuYTNCKkID1+s2EOp1hS9kZQYQJ3ifPGGFCYsVXgksfK1uRCqLDvx5bP4qIngC2tuFTEyE5ozpmJBwoo1Hi1VkUxwOWVaeoqHAyz/AkfnPcF7Qgg453DOwtNyrkpJwWcj4U7IThhRe4m9oleiF7QTpHf4VYdbB9w6ICtvrx5w4JyVIXbZyJ13Zvl3UohjIfygO5WratljKcRdtISDyRy2k9E5gk1szrPHKleVV5qEh5QkeUsij4ArpZhlGseStluIVt3G5t5ulnmGCrl1JoLEFfFXxlO1ihfLm59u2uL4k5W+vtdy3Jkrn8oHqp/V3KH9jfZlyM5Oe16EneJZi/WLQzAl7e+PlTrWOQBp6S2on9fSx2d5NhQsZ0nqd6NS/um0i++BntrfPBm2xrxOe+Oo490XezvzzXzUskKXx52u93Rpifm7Wv4r9bvdREdDw48KmvBoaLjLoEBynuQD0gUI3fRyoYOux61WSOeQ4IsZ2kQFQJZAJllieYRxzMQxM2wjOSlpTMXcrqzE0YlDeiF7CCsjsl0QkhMkWEnYGIxzOOPLFuJUy9NGwSUgmgCRsvS5mvUpBKXkDJQ+GqiFCe1TnB1M/Ejnsq5FdLhquS2ioxOPB1bOERB653HiCCHg+57Q94g34ZEsy5sUI2NKJOdIKKM4BhE2JE5IbF1i6yx/IveCHAbCYc/q/IruqMMfdLgDh+sFF5TgoBPFq7KWgBehU8GL/VgLiqRkysJlIpGUIylmcjbB5IBg2R7m6VAYNBNl9gBlV+bQKRocuRNy50heGIOFP229zWwWVwSOzbf4QpxFTEEUpqoUC7hYFazqLUhiFbKkeGBUsYpWNjpi8dAo2SIDCwnNKqUU8tKOb+pkutvCriV+8Rgs9NXk+dgl4rt0t0rcpZV/otCLBAotXoelsJiEcn3eZBYxS8K+I2DKH26SDkshI9O+eVFI4bTGmd0Ru14FO1Dddj+cShbzoIvJmzaTWbScOXbq9doKWYTb1TMs75QyH18W4kOpoXjfI+ekoaHhrkETHg0NdyGM/MlOmAaUqKZCDq3+qizCJUoDvPpKpklyUnLKpJRJyUrtghGH5Cw0SINZ87W38CoNzqoeBQEnJTxnTkRGFedmq74Tpn4bruahL0I63iq+ZEnuqKOaSJSyJIQzEdXyKsnymGfAXuBFcOqmcrciYktXSJOrCSu6mD8jhrWaVSpepFirRFVPgbe4IvHOqo256TbgircjAEGEPgtehJU43CQ88sR6LWRMSCqkQl59uY5QknWzWnhVxu6xg0kU2CSXHhMC6udXLpWsVJjC20TztN9E4JfW73K86RlkJslLK7iiUwhOddco2cKsqEnyFFli92i+u7N0WBjryz0u1Fvmc+64Y5ZL5ueieifmlexgb5cdj9HuhnuSRhYjluU55vMuj1FDHpfnmKtZMT/TdbfqlahOnLOcBnvuoerbkHLw+n73O7Q0VCi3AAAgAElEQVR3cdNYi+Ja3O9J0C++c7J3jKXYWD4qy2eoiY6Ghh8dNOHR0HAXIooj4s0KmTMaR3wSNCdICZcUKaWDYsykbD0ohjGzHYTtIAxbYdgo40lkHBObk8FIdcyEztP1DrcGvxK6o46+D/S9o/OC6wVxat2vBcZltkEJDzJWbJZ+F80zItGs+5Lsx8kpdCW/QfKS9FXyVOPh53ARI8YLFjZVzcrTezArq5H86iUQAoLDs0ilmFWQJqpSUFca9DkPWcgpkqIybkeG7WDNBLOy9crghFwEh/OWxJG8kKoFWBWvQq+wRjjnoEc4cp4uO47EihNLimi0vipERSIlDMqj4kCU4EwkectOJ2YlqnKchQEl5whqvfrUmcBITi20ymdSqbilTvBesNCuQM6KS8UzpovkdWo1Ir8gsYu2eAqqReppFbFCLA0PSZkuRULKaLnXocx+lJLHPoksuxkz9y3SZiLFVXzUmzZ7JqbwPWavz7wPO8nrNu59AWJetTmcaT5HHQnsNv+bP9mn1WXuysMl5CIe8imhNlP0+a/5NUs70f1gpf0R7uiiIsp2zRJV7GmZiHpNyzEtRl/EYxG8RXRoEf47+yyEmizWL0sey/4UNTQ03LVowqOh4S6ENYK2Xg/WH8ByMyRnXM7ElBAHiBJTJKVETJGYrIdHjJkxRuJoDQWtqeAcdhGCsFoF1ocdB2vP4bkD1n3gYBXoPKyC4kTxYj3La/6BqloJWgVNRjx8NkLnSmUjX50KwhQO5SfiqfiJyNTQqZkkTlVXdwy2s1l7SXQqf91/7XROq5ZiVXJKRj7FW+fmnEnZ+naMMTIMkWGMjDHZetXibdgnbbX3n0JWXBYr35uhExMdPcIqGRHvI7iYYVR0zKQxIyXRP+RF8rGIeY4QfCHo5s2BUYSsSkBIpYrXTC5lnjMBcYLzggQTANXjY1OTqf0ewRLzl36I6mWoAsBuuzUU1GzPUErW34SUIWlJ8FditvuXtRL4Wd7s8NIqOpYxP4v1AnOp1ipKdraRHdGx61aYPQ5LIl+158L9sPfpzgzsfnYGqZ4yO6oXoopj2T3SmaebBllyWyYBuz/mJc0v6xb5MDvbTitO+XdOHWNnSLK35d7k6VmXv7fPqapaDQ0NdzWa8GhouMugwFYTmxzx6ku1qIjPDk0jKQpxdEh2MAoxRlJObDYbxjFycrJlsxm4fWvDZjNwcitZI7wIIUDfO46Oei7cs+bixUPOnT/g4vkjDlY9h+uO4AXHAJqIaUPOke24JSc170ryFrIVE4mEKzkbtYt1SEaWe7Gwp4h1RlfdqeRaqiXNvSJQ+0BVLbRoEac+WcBLEmxNLAem3ANXSaumifhmdYgKKcJ2c4L4gA/mRYiqDGNiTJmbt465fbLl5u0Tbm4HtikzqFoRMFVizpAdIVuoWkyZHIGxVDtWxyHCURbOi2OlwtGgdClzcKLWbO94RMcM24QmEx4Wp2XeJJ0y9s0erVglqlieC0/xdGRlE5ORXF8S1V0pLRUcrnc473CdJeaI2pz6aN6LlLIJyBpek5is3BbnrzvN6bJCzErOWkRsYhwSDAkZMxotPE2ylQ5el2pWESvV61mQ0132zw6p5q1J7u66hQipz14lyovXWcdankP3zPlnpHLPpzljSLsljpnzJRbnt6Us9tWpAWQVTpNOpoqP/THUilblXdXUiyXT+WXv/MtqW0UMlnlwC6EzX8Pi2MxelLeakxpyJ/nsW9XQ0HD3oQmPhoa7DApEzYyazeOhxbJaut3llMhxLMH+QowjKSW224FhHNlstmxOBrbbge3WLPg5K85B13mODgMXzh9w8Z4jLt5zgfPnD7nn/BHr1YrDVSB4UB1QjWwHT0wj0Skak1XJwsKQIkpCF2TOQnkCRlgSzqplYU0KRa3ErFMIruSFFAv/RFoK66lVsGZiVEgyAjLnKqCUHIeS44LWZuBkHE6ylcwlk4eIOCVGsfnNmc2YGMZsczaMjLGIClVyCT5BhZwVUibGDDHhhoiKBwHvhA579Q46lC4r3QhdBL8FGRUZMsRsoiPpKUanMJWDkqLGHOYFiVj+To8wAkEVVxoNTvkl3uG84L2HUPJyyv9yYbu2dGieK2pV55AqswW/EnldhFhlJcdMipk4JogJYkZSQlPGWwISCbUcIxbhP9XztLjeU96AU1PyfSQsy87iDN+F7Pw1CYI9t8FZ1ZmmHIzFYGaiXuerVpWSqZv6KW/BUki/HZtfyIZaZvpUz5FF7seya4gJh1JWuO4/KZr6TJ19+nqtu5W89vqfzCrHPtWFuGmej4aGHwk04dHQcNdBGTSx0UTIEZcVpwGXEykNSMy4IU9W6XEcick8HcMQefP6TTabgZs3jxmGxGZrieCrlefwoOfKlSMuX76Hq1cucunSZS6cv8D5c0es+p6Dtcc5iPmEmEZuHV9nGzeMt4U8DCTdMA6Z7WgegbEy1qxktaYetcrUCguxOsAERwJWNUwkMyV+75DGQtwsvGzBZIop1vIDHBYEVWfL/pdK+E4q/SacKlkcSrbyuWMuJHjLkBLbmDgeItsxcWOb2IyZzTYyJBMlqZZVzUoe7dzjZiARQCCljMtKr46D5DkY4QA4SIk+w3pIhAT9QClNVWLU0uytMTJabNNlHkUV54uck0DCCK5XK/ObNHNCFR/m6MjB4YM1mnS9h+AI3SzpVCFGIaUy/05IpaFhLtXQrDJayV2oyk7tXqVouUFxSMQhMm4jOiZ0TKSY8VktV0aFUR0OrX0UTRSqzknxwCJRAxbEeVqns6+g5lLUzJMdUSH1CZC5U/ruwaZjL/tOFB20VCFl/a5kOeURYO8YO0sbo5N5rNOVyf4RT8ui6oBRna+pbid7W8ti5SygilyXeTw1LmvyjCxOO5UnPv01m0Y4i5T55ukiO38Sai3eqqHhRwZNeDQ03GVQKFZjSxrPGVyKEMFtt5AikiK5NL8b40hMmZNjEx7Hx1s2m5Ht1nI9xCmh8xyd67lw4YCLFy9w6eI9XLrnEhcvXOb80QXOHR7Q9x1dsH4TMQeiG4j9CDj6cEKOlBAsLdWxzOidRtBYXgkLK8owZsGXVIC+lIoF6AqDcZWZiQkU2YshkaWJWS1sRzAiWwVL9XSk6XiClo7lY7Ysg6wZRUhaWo9oYkjlNSbGlMipJF2LCSIvlmfhU7ZmeIKVvN2mKcTEZcVnIeREF8274xBc7ZOSZCo3TDaCr0B21ZJdyJwlRrBkky54RBzedSSElJXsEj1K75ReM6HL+KBIAPGKD1I8HQ6CEPwcxpbLXAuUZHqKrsjUKklG8gVL/Je6wSRINFt1tJwVrR6Q2ohRLSTMl2c3qZLE2hNm7Jheme7hbEFn8nSY56qyW3afATfPzV6rvAlT2E/1BOjpbSp/Xlr2p48mbr0QvQt3x+Q0qAphsdjvum4p57Og2PX1LDGLkmVFLNW5Aw46S5j9qmN2l3Q+0XT2+YJ3+4zMZ66lkZeqZl9czU9C7Tiy78WxSdz5rjY0NNzVaMKjoeEuRNZM1EROzrpZR2esnmj1b4O3JPJUX5mT44FhiNy8ecJ2O7LZJLJmXIB+HbhwccWly0dcvXqZey9d5srle7l44QrnD+/hYLWi63yhS5mYVsQ0EFPCEdhsT0geHCegmZSVMSnDCHGAOCo6WvdvYrZO3dGa+Q3JPB12dCFgTdhcIZcU0VFJn0zm2T3ogtw5h+aEinXvdkDEjumyJU3n0XIlpHg6EpCyErMypMiQE0PKxKTG+wuBck7wzuFV8Ql8trYbFn41kmIix4REpRuFbvR0nSNg5PpUid+SY0Gx+qeSMS6usm4jjpJN4TgE1wW88/R+ZVkfGTQlViijwhrlpEv4LuM6kA5cJ0gn0FnZ39DN01hL8aZCoGuuiMOua+pWvhB1s4m7nL8IDk1aEs0tMV+1lB6mJMKrCY6o1qk+VeIrlcAWolrCdHLh1rUs8HRSig1/MZ59oXH6GWEWHWV6a7jSEiZgp9Ms1s/iZsfjtidmdo4z7bkUH9VbcFpy1KEsw6emPSftPYuOnSNMzL+e77SgkZ2/qug4nXuyzDVZYgoRq40SF+ebz7jYsernpj0aGn4k0IRHQ8PdikJYNWXydrDeGtlNPSXGrMQEY7QGdLeLx+NkMzAMmZgEcZ7VynF4sOKeC+c4f+4c547OcXRwxNH6iIN+xbrr6PueEDxKzStJSFac2f1x4swLIKUvg2ZyyXkYRiUOStrmIjwKmY5m+a+r+tLRocOVilfVzg64gIqUtnm7MN4jkwF+grOeI2TrtUHpX+JUkaSkiIVtlSpLSas1vpSxVQvOEacWzoblnnQInQgZR1/I56CC5MyYFI/iNBHI9Kp0OeOHVBLmjZ2qWJO/JMpYPDODs0Z8Q+fAg7rSgLEIG6dC8JZs7roOJ27KvdDB2sP7IATn6Zw1eQwhmuDw1l1evU756r56PETRLFbNSq2ppFTBU8LjUDcJOwVyLDkzyRWvhuXvCLVvi+B9mb9cy5yZclAcqtaEMGOeKl3SbDUhVC3otg2lP8306M8CRZgqP+meIDKhSsmB0snjIVKErbl4pnOVPeoXrNDnGtpHIdEyeTV2+1pMu+38OYu7OQRqud/+/tVhsmw8WHXG5Phi19Gx1DQ2tnk+l3JMFp/snlxgKaSwHKu84/mZ3U+zZ6PeiDJLk96Y57AaDhoaGn400IRHQ8NdiCk6v4SzpDFbQ8BkhC5h5HnMMI5WQve4CI/NJhKjkpI1outXgfVBz7lzh5w7OuLw4IiDg0MO1ges+xWrvqfrOnzwFpakmRhHRJKJjiI/nIg1B6xkLmdiTAwjjKOShkwu3g6KYBK1SkdJYYWAOHoy4sT6b4grCbkJSjCWO3M2bAmKukJGC5lWWW4n5CxWCWwaS7ZqTpRQKyi5H+U4KM5ZvoZ39qPaOUfO0JcE7F5Bs8NH285FJYjSAyEp3tkxRMQ4vAi5KyzSK7l0Px+DsF1Zl/jsIUTzqPTZzht6jzirSOVwMIKmjIqFzHkRgvf0nSN4xQe1JHJvzQvVWREB8RCclIJZhdhnY5rW4FHRXKtblfu1MIenlCbRk/OcsVAt284Jqm7ioCJauhZKSUif7fG7e1dxU8WITs3Tl6IjVxFST1iW0zbUUs2CqzF0JXl9ciRNHg+m8+6KicUG1fOmlbgvvQXsHeEsLK5Od63/b0fJp+MLk3Cqx9hJtqhHKiJg98g7346988lbDGJnBhbXcHq0Nh6Ze6zsbLLf8byhoeFuRxMeDQ13GUQhaCZotsTianDGYvMTMAJjSYLebjPjqGxOMsOQGTYWBuNECE44WAUO1z2H6zUH6zXr1Zq+6/E+IF7IkskaofQHySmzGTaMccvJMDAMI9shMY4WYpWzxfmnlEhjIg3m8YhjIkfzepinJiFq8f4jghPPIBnBmVNEhEwmq1gSRbF6W4hKJUxzhau5pKgRnSwgbm6bljUjuVRuymaBRsv8kclSrew1Vl2KpLJUdSdKJ9bJ/MB7nAhbzTgsiV6ykpzHp0xAWQ2WNN9lRx/MIyQCYvFWRCfgIXolejheKbEz4VE7jIdeCAp9VoJaw8bewTqYS0RjIglEiSSnqGToHLIOVkHXO/wKfAeuc2gnhB5cgK7XyZqdE5MocHHOnagiIe30ZtFJbKhaczwngBc0mBTNWRFxOHWLfiazF0uVqXJX1Q9uEg3FI4T1MMkipXxyFSBK8kWAlOeiqtGpbwd2LtFSotlhMWxZCVOJ3ZIoryXboj5Sk66QWfRM3z5dMP/l+pltq9SrkOl51HJg1frMzvst+osvvuOzt2MOWapip4aj2dBrcv3OMM4c4wILwTXnRs1yahqHzGJrajxYPSAiez1DlqJtFkWufJPeXmI1NDTcLWjCo6HhLoRTxWsh05UJZCMI1WqfSunXcVTGUU10DNZrIWfoO7PE98HRB0/fBfquowsdwQfEu2JEzWS1kqgxJlJKDHFgHEeGcWSIsazPU/PAnC3UKqdUenpYj4+cMhpn4UERHlkEb407WGFJ2J2AL+S1k1zK69aQmio3KnHViUxWTIZwmIiYYqFUZq2vxKkStB3qN3XUBnA4HBmPEEToSnfzXsyi22W19+rwCkETIVrX9ODsOsQtK0KV61bYOhi8cqtTYgdDV9iyFwKW+xKT0in0UhLivSDZkSUXD00iC8UdI9B7xGXEgwTFeVBv3RtDEHyArrMrzeU6U6pNHgVxmTozRTeQM1PBgprjUOfMOWek1JdwttoVXYVcGqm4VBoSeooYYYfVVxE0lz6WSXikIjxq3kZ0s/DQqi7YDYOq1dMUcFb6CxGZSipPngyplHm69SbCpnEwPR+7zoTlmwXJl8WzVMWU6u5+iyT5s4IH54TvvON1qH9L9YBMTo2F8FFKzxemXizzqZfenDJjpRrclBVyphOkCpDFdouNluJj9hIxixPdP15DQ8PdiiY8GhruQvic8TmTIqCCl+IHKIQk5cwQE5uYONmY8NielD4UYyGLKyEEx3oVWK8Cq+BLXgCFeCbGuDXRcZLQnNlsTogpcvvkNjGOHG9uEOOWk+0ttuPAZjsyDImUrLeDJiWPiTRk4ljFiE5WcDMB5wWxdBZbLiDOQqWyA8nZemCI5Q9UBi+luZ4Uz4cvLgyVkkROFSXmDVCnZGfhTlmAEutvpKh0Li822mqntRKo1lG9Q0AdaxW8KoNkvGaGHK0qkzoC0KOsoxBECZ0QcIRg4U24RBZl8EoKcDMoQy/cPHDklSMdBvB2/a44e7pojRclKuuc6TXSYfFX6iBKIDklByX3Dl0L6hyI4nuraBUOO1zv6Q8Dzju6zpRZFRV9p4yD4l22QlrR8oBMfJQqVeZas3Cv0hukihNxVrQ4VIKfTKjkZL1SBAFXwqqyTAQ5l4i3VAi75doUz51YP5goxftQBIdaHB7aFXG87FBXQuyskIDNn/NM9zlny0PKaqTel/pSy9Z6Oi3ZIePV45B3VMouquh4q0pVs0aQWUCwJO7LkezmkVS9VJ/5XIXF/ga6PP98TRbyVvwaJdZMi1fDvDuL61konuU5T3k96ll0cQ3lO6iY6HDu9Dw1NDTcnWjCo6HhLoTTEipSQi1c0rmUp2Y0lzCnmEg1uTtajoWWcjUiDuecheM4q1pkvTMKeScRs1gFrWEgp8jxyW3GOHJ8ckyMI5vhNjENDONgZXtjtv4PpVeGFit5zpbzYUS0VAQqrTaq3dyEQ2Yr0Dthi4UqeVV6FFHL/XBQm3lP1X1EZpGhdfxayWYhi2V9Ep0TlYt121KeK/YJ4245WXNGGOkL4krndav3FTIEhA5H0JIUjs2rd4L3UHMRklNGpwwetgG2nZA7h/ZuR3gkAXWZlGBbchW2pfu6L0k1GSsokIOiQdDAREglOBMeXcD3ni50uCB0oZB2tWupRQFSTIwh4b3l7ICR40ye0gqq98k5V4QEiGREHOIyzs8dHlQnJjznqbNYas2tmT0MCauCVZq/M9Z5kEK0XekwuQjBW941pSTmi+WIOC0CRObeE5MopUqMQvhLPkf1Guw+DuVplXpde1iuWpS42k+unhPOZy/e0oky15paiA/d3Vn3SkpPHojK9vfGPa+YRcfs8TjjWnTpU5yPXUOypnHvzf3SoyPMCfFNejQ0/GigCY+GhrsMQununUGjEXmiVRXyqviS/+Gjla7Nm2yJ3YN5G3ISxAniAs51eG8WcJVE1pEYN4yjsB1KR+qknNy+xTBsuXX7BuM4cLLZkHIipi3Ww3sg5sw2JsatkkdHHoUUMeEzavF4aBEmxetRCGnN9TBSky2ExjuSz0TnIGdGcay9JZ17XRJGqLkescTvqKSJqDks8brO3kSSFCSDS65YvgPqFHV5Ykq1sFOe9vPFhFvOU1isuCIENRMEeuBAhCPvOPSOA+9YeaH3Ai6jDtIKYieMB8K4EsaDYB6PtbfjeksWd8BYckdkyKyy4vOWlTqOunUhnx2jKIOLbIJyEkYGr5agftThV4H1uUNC3+H7Duccve/NYyQmDkcf6dyA5A05ZsZxYDuAG0CSVf8SX2L1axWxqidSCcUq7NeSy5MRe02WCyIlPAoTSgkTAYNY6GAslayyWunjEWWrmQFlEIjCJDikeDwkFBa86ONBtudWSvECX8SFVQbT0rjSOsjb0sLZ6j+WS4J8uqTtvrypy33yvdAA9f0O8y55STL3F5kjlIq3QOvzuix5u6h0dWpUS3HxNkS/CoYinJbVwpYuk6UTZXlQWVzUlAtUPtuVN0UAypy/09DQcPejCY+GhrsQNZa9lgp1qiWmPVu5WM1GFrO9prAm1TmpmlLmcgrVyKgmch5JyROjJ46ZFDMnm2O22w23j28xDgOb7ZacM0nHQsQTqfZuSOy9dAqvqt6PXPo+AEV42DIWkjkgbMU8HQFlwMKdQhUQU2RNNgImHrdTVad6NBT1xW7rKJ391PpkTG4MM+PaEJZ9EeaSrpbTMA239OxY9C2opy7k0TurGNaJI0jN1Sj0VCjCAvBCDiayNAjZC8mXylel+pXD/s7ZrP+iypATAqwkT5W/kijRQXRKlEz2QCe4ziN9R+js5X2Pc57gTbSIWAEBzQPJg3cj3nu8czhvFbGkCqxliWNkrmyle+FHsm/lX1Jjy7PIakn7c84NZb0QUUYw0YEylGeDkqCPqIlnURMgTqb7DmUs2TxiSao3be6hkuttR605JVUKLEY6PU463eP98Kndd1L/T91yFh17W+7keCzofhnr3CyD8mzuio95Z5l6wCxHNM28LJZTfFS5KtndYHntVdSbR2Oxz47o2J2J5fXO55zH0yrqNjT8aKAJj4aGuxQC+NJ9u4oPCgmM2RKe+2TOENS6W1vX7lz49sz4cs7EODBEYTM4km4Y022GbSKOmZs3brLdbrh56zbDMLLZbi3Uo5RkdV5qaw6228zJSebkOLI5jmw3mXGbGUfrAJ5yLdEqLJNdE5XUg7pEyqDek5MSglg1VtQ8HhgxkmJd9yEQxDwKznt854ol11kVraSIj8iYQRJERbAmfzrauVIsoTzkIuikEG2r0pTAmjGqslVlyJltzIypJNarVVLqvGPlPAe+51zXcyDQa8KNWuoGK+LBrzp8L8ha0F7InRCDMIgJjixuInIuOWRUNCqrmFlHEz7BjRbuFAIDmVsoJ065FZS4DnAQCEdr3GpFWB0QQseqO8K7jlU4RMRCpVKKaN6Q0wnBZ4LPdN1A1yl9b2FFEjO55makIiBLidqY3Wz2LoRzkWFjlbFKWduxhPsNpWu9JiYRncsUjUV4bEQZRdk6JeVyNDEiL2IhXc5h4qrMVfaKRssbysokvDspDQyzEhTWqnSYCAhYJ3oTjlV0lOz3RQzUMrxKLUFjJvA17K+S/z2Cvl9VdhFghVA9H1Xa5Gk901F3PR5Lz4RtXcoFL86xFA67/pC9sSy0ztKHIjvnYtGnY3mG5WhOL1WYjQINDQ13PZrwaGi4y1GKBqGU/AMsr8CrTlWR6rpq8TVUD4iW/ItISp4xbY2cE63R4JgYxm0pm1sqWQ2RjOK9n5qxqUJMFlIVR2semGJNKM+FrJr4qc3P9nmMNfKz7ttRIWZLLh5znvpnVGu6E4cPZpnvVx3BCavg8cET+gA+gPfWtDApbAYkZthEiBlZRTvJNpUk+FJtizx7ibI1u7NqXdVCXzw3WD6JGZKLNR4bm3diYVJ13WTrtwZ+2VnlJwsZsptYPSuZuZKU6UJFovUGGVPGJSWqJUWPOZVGb5lRYHRCFCU5IXuHBJsH8QHnAk5KeJ3rcL4z4ZEtD0LEg5ikM8+CQ3wZZ/Uq7LFXpRLqefwUb1bOtbyyeWukqMpYjjGW6zOBpyXczm7JiD0Dg1MGMkMRJA7La/DlGRARchnbRJU1WwleqQnr9Vm3qfZFoCe16mm5hDtlraRdpns1X2VdPRNxyycqH0y5RnvfTZkJe61sNQmS+VSTQNDl/C5Pu1xO4keXjpkdb8PkPdk/huiUc1N9HHsFcJkdgeWs04Hr+305cgZmVw81V6Q5PBoafjTQhEdDw90IJ+BcIUrG4FwJQ8kqjCRWKpZkjvGAscbzSyUlyTwhaSRGYbvdIC4SugHvHcF7hk1mHDO3b1u1qtsnpQnhNqIKoQuW3zBYCd0UE8OQ2G4S2+OR7Ulk2ETGIU9egUpUl7FLZiwXojLF/geBbcqEnDnRjDrB+w7FEVY9vgtcuHCBfhU4d76nc54D39GtVqwODgjrA8J6Pfei2ByT4wjbLRoTerxFY2S8vSGNke3xQIqROA7WkHFIpDGTopLGaKWJBxgzFoKWMtlZX5LJ64Q17usC+KBzmFIx6YuoiaXeMa4C0kN2gwmuDCk7YrbysTF7a/44ZjgZkSHhNuY1GtTCq25j/VWSQHSOTecZek/qFV2tYNUjXY/zHc6tcLIiyAHedYSuB6SIAiGzJWeIpdyxOAjB0a08Y7TwuJyqyLJbN1m1qV4zE5lptEpWltNjuT2u5InkrJaflKw5oi+d0qWIjgFhLOJzmzODZCLWULHD4xHWpSiCOg9OyM6XymbFa5YyUSw5vTaGjGqizSnkbMJcMa+Hedwsf8XX0EMt9+1Mmj17K3ZCj6qaWJS6rUtXmr/bOAsVr1xe5+rC9fBLUT6VstX9barHZHEgdg9Ut5DaR+QMv8Ru2BV7Cmi57SxMlnvULUvdip31WrxJDQ0NPxpowqOh4S5EtfZWC2QNWTJPBwSUkJXOCZ0D9dCnQsC9EQ2vFoaSY6lkFCM+QoxCzhZeNEZrDDjGxBgzY1RiNs+GgpHubIRHk3lHxqG8Sv+QFOfkYy0eFpg5UkW1TGsh0ilD9h6cI/Q9qy5weLRi1QXWq46+CxxeOKTvA4dHHb33HIYV3WpFd3BId3hEODhEXAc44rhFU4TBhEfe2HI8NuHR3z4hjiPD9oS0HYnbgXEbSWMij2XdInAAACAASURBVBGXMnkoyzHhcyYPgZgyso1TmNCh8xz4QN/3hD4gzpnHwGcTaeuA1Qb24LWEVVXPE1YwoCTbx21kHBJyEnFjIo+U5GstVn+LU8p4IkJ0pUG4c1OvE6Ukx+v83pwPFtxjgieRUrRltnwd87rIXniRPXL1GLWzueXx2HNkQm2uYJZLlbP/n713a5IcSbL0PjUzAO4et7xUdVf3zPQIOStLvqzw//+DFaHwhU98JHfJWfa1KjMjwh0wM1U+qBkAj8wejvCNWa5SkRHhFzgcgEfpsaPnnA48QrV1BCqog48+zVTNdR3ZXM+ymLmjVUug76OFjVpqzl/SLJbZGvom6LH2rwMPa2GP/mK1MRyu13FXMpE+xkdza9ou0g1kccVsbD17Yz1oIBPZmnDpoIPrrryxKPsUddu/2NVng6v9Yc+isB/c6g9un9EWmLg9VXYns72ZPY56uwPrfbb9umKSDYwYG8Nz/ehb3epWv6a6AY9b3eo7LGlNlxBWK8xuEzpY4FB9LTSIMwtDUAxhrJ5Mrfice6yQ58ochdfzjFFJgzab3chy8RX382wsizFnyAWW4o2y1AwN8mitlHlhWZT5UrmcjcsZ6iJoFXet6pJs23IVgkD3x/Xmu1BM3ZUpnZBx4u79E+/vjvzm3QPHaWQaI0MKPD4eGWLgNEamlHiYDsRpIh5PpPsnhvsn4nRPSJPrEcygZtBKXTLW9rnmhfz6zDKfOb9+Yn59YX59Znm9UOaZaXHG45Bdz/G6FIoq98Vvn5fiI2RFmQjcS+IhRMYQSOYC8YC5ZfHd4PkTB3fQqmRPaK+Guf+wZ2hkZXmeWc6ZsFRiMWoYUAks0bAgZFfLuyWuGHmI1BTQuF0XtY0+VXw/qiMFcvFm1YHlwnm5MOcLc11YSiEXIzcgWjW0M6e73L+WaK5KWQq1qGuCigPO1enKDdc8EV0dUAUzFrXuS9CQkOt8ZpqVrnS2olnbGsSqPj8lTdvTBPBx52olIbh1Mq5HqWYUUzLdeMG1SAPesGd1hYTHmly5Dvjnq4f47Zrzq3a6syIi7LUZW7jf9pndP8/ezkH1n/X6JrP+WFsBTP+svAUoKyp8s2EXoMsGbkyuHi878GHrc3coyTpOsXUH9mkj/f2t7423dQMgt7rVr6VuwONWt/oeS1pYYBsvWS0yaSvJQYgmJBOG4M5OY/RGIrcGLzbWg+L6hrIoOVSWS/DAteRNacmN6ai0PA6fCzHz3zGfq6/Vx6zyrCyzUhZDs22hgWyOUR1wrOvvChUlYEQJnA4DT4fEj/cP/HC647fvH3g6HXi6v2NKiTQEFxYPqSVtu1eSaEFKhJyhFlSrr2UHoNnHCgfXFBQPRZRSiKUQ7+5Jy5l0uWN8fWF8+cLy8ky+vDLOM6VUDsWT2KdcKGos1dmBpRSsGpTKYIHJhBOBA8Jo7mqVmjYhHgc0gowVkUoyI4kyJiMILoi3Si2FJBUTT0wPYgwhkcQZFJqwnxA8LLCxHNoadsxZqN79q1aqVErNqFZKrZgZS67ksjDPZ+Z8YVkW5mXhMi8siwPOns1SuztZFVSN0tisvLiex0fq3EJ5y3FpzXPB9QmNnasNeDQ9f7sG3MVKgdIZG4GetUJjK7oZW3vbjQFkbZDd8Yo37Ix/r1gDYEJtsEKlMTywAwHXjMf15+/N6FAHF33f+k1XQGUbjFoZhLZPe9nGnoDonxi72i++npb65ijTToxuHRzsmBf7enObm9YWLLh/i3syZHPY+opr2TZ+wxu3utWvrm7A41a3+t5KWEP+3Eb0eiW1j4ukNiozpkAIStWWCt5Wnemi8MXQoORzWVOGQzLiEFmyUooxtyyOLha3JhIvLQxQq49lXZqeI1+MclHqArW5H63tV2saU/T99VEcH9EJMTCOkXd39/z+4z3//PE9v3t65LePJx4OE0NMhNZtigChD8lksArLvHZWOl+wwwWbjgRRwjQR0kRIycMTG+xJ6uNdVmYoM7a8spyfmZ8/MX/5meX1C/nyQs0LtVZUWzNuRm62urVWB2RL9cT0YgzqWSsTwmCQJLh+YIgt8HAmUBhtwMSowVf6oxmB7PsTG0CMLq6fwsAYPBAwRJABaE5eGiNrOCH+nijVaa3ggAOkragHBw2qzPNCqZlL/sKSZy6XM6/nhdfzwnkW5kwDHn4tqBq1GFYbvqvGfK4r8HALZWlGAg48OrDAXHfhbapdgQ7adVnQFogY1vGpaCAttlza6JCPrzlZ1oMOEdo1vJJo/krmYMZ2r19pTmUogUDFMz/UXMC+d4fq214v4H/z42nfgAHXDXofQ7L9/bI9cr3X/k7v/hZ8/Jv782ZkrLMme/DxZhu2f69fgY+NaVHbRsrW5/Yv297nDYHc6la/nroBj1vd6jssCSAeiw30HqT9319xBqCNMwUTYhM9mwXGZM0G1eflY1VCEZiNSmUJgiRDctNzaGM+yuZUVVsD2hvRkiul+IhVzUZddtkdplSMAbfC/Xg3MA2B+6OPpcxZMBkg3HN/d8fHD+/58enET+/v+OE08u6QeBxgcvsmjI1pmOcZ0cqiM7FUPs8FCZGQRsLjF8LDJ4Z3X0h3D9w9/sA4HZnu7okpEYbJA/RChBgQSRAniBMpTFiYICbCOBFeB+pyoeYLWivDaE3T0YCH+TgTpaXoFSWaENVTzaO5u5gIWAwgRiQymHJiZMQYgjt4LQbzkDmmTB4W8jETsxHVeLTAKMJpcBtZic7m6CiUISBjRGITveP6jNj0FSFXpBZMPCtjDXIsBbRAVUTd0csjQIQacScqFBWFWp0laIn0tZ33ZXYmKC+tWa6sRgLdxWz1ieo9qLJdvGyNahcoI+067wAjCZKChxi23I61oV57357t0ViQEPBEddm9jq2uYe407cntJrbqQcI3uI51tf/rW+kBlld3d7ajf+9vfs+C9N0yu75tfXG7YhquX162cSva59+AJiIXWWHC1fP634oOPvrrd4CyRbV8i8Xo/lS2u9W27dFhRteXtNe4hXjc6la/mroBj1vd6jssidacT22djtgca1oHoKzWoyZuRSvRW4JqvuILRqxGyIrN7lw0W3bhc1IqwZ2mWpBgzs54bIDDXYuWuZCLMs8Vy4YurFkPFaOKcRCYovD7h5HHQ+D9ozdNL3NE0ol0/ImPH37gn//w3/Hx8cCP704cuDDZQsqvhLqwzItnadRKrpXz6xmtmbCc0ctM/vRMG+QiPjwSHx45fPjC+PDADz9mTqcHqEaaJsY7t5sNYUBChDR5AzZWGE6E6Q4ZBuJ0IAyBMr9QL2C1INX6hBieCLJrshsjJOqr80Ed/PUV9NpGWQIDA8Ydbk18xBmPbLCMhWUqlGOhLtWBgxqHagwGhwY8kNLYEsgRZASRiobSBOsesu7C7upMELVlrjT74OK6GlFdE8ojMIaARddFZJSKj32JGEXd1assmZyNea5ohVLaWE9HDx18NMah5b17w7zaOO2a7tbcBoEYO+gQJOHfY3TgsYZe2va8LnQO0sbvZDVh6KC8gw7bAQ9tY0UOOozas8T7ONT64eod/rcYDftK49AmxLjeS9m22fZne+/X37dP8uZM9fW3r0e+bDsU/vPV622sxfY3w59ou2O4bnkFE8bV3XbNouwB0DXjIfut3epWt/oV1A143OpW32MFgbg5FJnsVpN7Y5J6joQ7IEX1OxS3EvXe0BBVQhVCdp0EIbizVHH3pIpQmqg6z5lazAGIdteqvuKt1MUzMaw2e1hojZzx28cDH4+J/+kfj3w4RZ7ulZBGyvQb0vEjd7/5H7l/+MgPP/4Dh1E4jhDLF0J9RZ7/DJdnvugZ0xnRC1IqOr+Ql8LlZSbPC69fzmtgYHrNpE+vHD69MhyPlJ9fON7f8fjbz0ynO+5/+MAwHTjdv0PShIxDW2IfkQQQiNMCGLWcvS0tl9Y4lzWJva/Sr71pgkBw0IEQrGd59PEwt0E+MKAYk9QGBtXD89Qoo5KLuqNWcRZCDAbzUawhuubDpDYGw+1jh6BMVA7WgAdGiH20LCEEd6oCpuihfxpANbqQPEaWGMhJKYM6wFBlye52Nc9KqcbLUMhZ+cyFOSuiCzkr55o9wV61uWi16mM32wWLqfvL2tb9+ohThJiElFzHI0mIyVmPNLSfdwLw1lqvwFtbdsi6WZPWKLfHWney6owHLY/F6EJxk9aat+67D0hdQ44tt+NtSrv0a6H/IGC6HortoOwmmTrjs4NS+0fu9oPdh9yuf38LOnbMxf44b0wN698MeXO+/j1Y4c2rXwGmPZB8yx7d6la3+n7rBjxudavvrYSW49F/4bpJUNYmCwKhrWzHZns1IG3UpLUHaqCKFPVAudCYimhU8UyJ2oBHyW2WP7vguDThce6jVaXZqKpRTKgtxSyI8f4u8bvHif/w48TH+8jjUYnTifD+d0yPv+PpD/+J6fiO09NPBDLCgl7+BstnlFc0ZC7PSpUF0QvUjOUzZam8vmYul5kvrzNaKporw6UwDDPTy8w4joR54XR/RwUOD/eEAabTHYfp4HasbbZf4rAOlYThCFaJwwGtCyEmVAsmxdkmdDfL7idCgrjwHXEAAm0Ux1fqQxOBj7A2umAuKNfNrrg2q2NTXWMVUjurMfjgkklpTmDu3CRWGduXmvtQ+biR0I1itTWCNfSLJjjwEPPvIVCjkZO7bKkZS3YXr2VQSlUm8VyXUOAcK/MMFzL5kjGcEdG+4t074Q4G9uDDmgaEhvkEQvTjF1N0LUsSQsLT3pMHGvbLe7+67sewX87Gvs+29nqdEuhgcQMe7fkYJtr2+1vt8taRvwUdIm8e0t76Ouy0/rzbmuxAxq7rv2JA9mNi/ZJpN6x37RBADxj0a3PPxHSUcQ06pFMfsg5rrsdUOu3xbyEH+Tt3r7fvbSVudatbfe91Ax63utV3WL1p2tLJ1mGS9tWCD7DVZ1c8a42k3hGo9v6vWYCqr64bAYuert1n3nP2le65MRt58bGssjizUQqYCloiZhXT6inTGB+mgYcp8T+8H/mndwP/+C7w7i7y8O4d6fjI8Ns/EO9+Yvz4W8J4TzzcE8gEFsyeMYQaM4QzU7ogaaYelUMSqBOXuYIGpkFIWpBSCYtyTAOHNHq/bQX98gvPlxdeaiGdjsz5hbvHRw5jYjg9MY2PrUmnaQgCYRiBI2G6I1rF8gWJ0ZvqWlDN6xhKn3/v5rndVqk3j9qMAJCwPtJPnZ8zlbA6NaXYVsDHPq/fw+1a2yvOIikFzAjqOoXJnJkomhub0IUUNM+wXR53b44tYShqk+txrK5hgd7AK7lWVJWlVIoqr/eFJStfHmYuS+GHxzMv54W//vzMyznz6fnCJVfmXBsIsY15WK+/bVxHRIjRWY5pCqQhMIxNRJ9wzVGAOHQnq+AguTE4HdSY4cC4VHfrWoqHGvaxsr4bnV1o58PPHu3MrWdwq4ZDrOeFrGDjG7RAx/zr7ztgctXD25vv7Ma6Omh7e/fXHIOs/36bpNiDj72r1f57Bx1vwcEKs3b77j/uwMsKLndvfKObrlicW93qVt9/3YDHrW71HVZfQeyr6b256Qu7rQ/euimFNTk74KFi/fF9a9pEuNXc5z9402Ioms1Hp6q7T5WqPk5VPflazR2M0CYyNXMnKVEeh4mPU+LHY+THU+BpEh6mwP3pSDrdMz0+IqdHwukOi0dIQ9ttxaK0MZiCkUmSsVg4JLdEPU7eHk6TIhrRMREluGg7DRxTbO5FlefZrWIXEcLllcPdiFklX14JacLT+/yISHBhtsSIaELigMQJSaNrJeLsR6+UXbcmbte71xX08yLiTWvoJ8StSlepQh/bkWYIQAvua42dtEY70Fe5HRJWImIOJtWMYNUdwmpHLtoyHHxkbrWnbVeL72Vs++iPrSimDhDMXK9StAEPrVRVTqmSq3JMI5elEEPiebxgRUnhQskV6MxNbZoOayyHrGyH97z+PkNLI09DZBgCwxCIicZ2OIAOXWi+gjp/M320StWZolJdg1KrbhbQtm+Bvx7/6VBQdj+vlIDte+u3oGPHE2ynbD3C/bE7OLEDqxsSsR3oWLfHDpxd7e313r8FHN+SxovIKjp/Cz6+2q7tb5Srb/19rjftDsP+LV1/7ZiWW93qVt913YDHrW71vZW1GXVzIAGtsaULZ6/XGDsI8dyPrV2zneuNoQ4c2op0DO4cZOrshVRvHK1AraDZbVOt+Gpz6snVtRIcgfD+NPD+NPAv74/8dDfxh1PkYxImItESyQaSRUItSJ2R+uwORFVAz1BfsZc/Yi//DXv9M1x+ZmAmhMrSwuCoFamVoc4EqySBIQrTEJkijFHJ5m5RzxmyKp8uL+gwQxy5nAs//vgX7k04vTt7E5UGenNlsf04REJNhHQEFYapoDX5cVSl5sYahYCEiMSef91KAGlp4urnIKgf/Wq1nYHezHbx9K4Flu02A3RdpbcVwASMZBUzJcbR2Q5TTCuYEnvv3a6MuELXPgLWrhdp1wGCWGNW2shVxa+9S1GKmtsn58LHuwsvl4WPxxOfni/8+f6ZX54v/Px64dPLhdd54fVSmjtaA76S2mFxtmOYIuMQOIyRNMgV40Gk0RFd3+FMjNWtue/YpmTXGrkhgqGFNczQXQCa7okWYqltclFYmY6wAojGJ7iz73bc3wjJ15O8MgDrssAKOqQxC1daix0A+zYv0OfQ9hfShk86aO2jYsIWtnj9PDrKY6cw/wajst38LfZk41U6oG6P3nkXX2WPrM/7e1u81a1u9b3VDXjc6lbfYXWnIGBdadwtvLcHeYO3v3HfLvlCruxuU8SCN2KteehuSlJ1zVyQlrkgagRzgXJorEdpjWoQeBgi748DPxwHfjwl7gfhEISggtTQchmAWqAuUM6tPYlQX6E8w/IFW56xcoY6I6beDDddg9Xq4EOrAw9w8CFd0dBAmHneRK7GpVRqrry+XBjGkcv5zHQ6YzUjcWyjKXY9PdLZCvcxRiQSghJCbCxTa+aam9IWLLE7KW1cyvenowAP9tsYrIAEn41bz8zbfq3vmOxW5sXdqLxPbhayqpj11G0hqK2r6t549zV9b+aD7Le9gR6HtE0XhKemSHAhfJJISQNiwhgjWpQogVrdGUpFXGiOkYuLvkvRFRyvx1Zafkzoo1Tt59g0HR3H7dysMJzJEGfoGsGziv7XL1vJn6tl+HVzzUq2syibdmM73lcv/eYBV9yJvHWH2oOPa8BxVSsY2WgDaWB0BcFXsKA/Tdp9tr2GdUDw91r9DW3s/lSsP/Tr6frZsj5tD3bkzVvpixz75739y3OrW93q+64b8LjVrb7Hag0wIbbR+dAWNJusXDsb0lbEm6TY0G9MPFyt2RKuAAauH6hCVEPbmFWsBaox1Ugy4aQe7mYihBSIQ+Qf3x34/Q9H/vCU+HgKvEvCIQp6jmQN6KM37+X5L8jySiwLIU5IOkG5YPWMvv4FnX+hPn9Bl9kT0bPw+lKY58LLpxeWuTC/ZKwIogGtxqL4EncJLBooKvy3y8xzrvySMxYEmwJFM3/983+DIPzwD2dSHFwO3hrH0Brt0IxW0YLV4kxQVaQBCNnNTXkehLZfZde4OvAwbQxHnTGtLGX2syBCkEgMIyEmiC2tG3G2SQSNsW0zsaoQBHe3amNVHcJYENC2jG+KUJHVRUrWGA1wEKvaQJG060iEjbfpcYsulh9DxBCmw4hOxmkYWU6Z+2niy3nm6f7Azy8zv7zO/OXzK19eL/zx51eez5m//PUz81JYlrmBNkcb1QQloAIaDIsRkiBD3HI5GmjQ6mCmagFzUGQtWb2bIJRcybmlqxew4pTI2DGfx6msbMaKLTtu7KIM+s+yirk742HrfWwb+Xvtft9c+zJj5y3Q4F0jK7bvfRByAzIr+Gld/pbH8eaDLW++71cn7O39spOFWbtmbd3+1fu27f3rW9BBA0hdmG++x0Hk7xyVW93qVt9b3YDHrW71ndWud2mrm2+jy942P/vfW3PZf7/qVRpQQQhm3rO2Bik14cgxQCVgQyQkOJTAUIW7KvQl0CCQovBDinwcIo9JuIvGKNJC9BLIAJIwiVhdIAv68lcIA4QJdMF0wS5fsHzGSsGqolWoKrtEbGdAAoYFkCir8L5UoSrMxViqcS6VixZMPM9CLCO6oOWCltlBRWcN6BqYsP7kY0sFs4zV2n7erd5D+53NRUmApqEQT3ZE0PY49RGm6kAEESwYRsTE9SIWfE9M27YksAo92latrYabbGM71jrbVUuwfvXb95zKrgsVVmDSF9/9abZ934i2pmUBUgBLHKcBNSXXyTUlEqjViCEwZyPFyHyeGYLw2lrqMARSCowpkGIgRs/hoF1SDvzaFWoOPrqOSNseqnpSeq1u76zVVnG8NmtnWqNvzQJ5W7Lvb9d/vxJir+v1so1MrYTHNTC5AiG7Txv0Y/pv125r/2Z96zGbZuTNa7/dnzbqtWlOdhvdj2G9uSbo23pLhFxvYAUsxu6x/543datb3eq7qRvwuNWtvsOqGii1NcWrPRHeAFlvEFsL2htIi4C6tmPXLKPNYNXw8Q7Rrak0W+feTQI/HANDCrw/Towi3J2NeFGGvxQoEBYhRiMNxsc08D7AnRWmCiGMBIkMxyeG4wm5e4+MAWGG8y+UP/+fzSKrQgpYCt28yVkFE0qJlCJgkSjKaQzUEElBMYtUG8nFuGQ4vyrP58rPr5nXS2GOCxYrj0+JaQz85mnh/j5wF5+Z5AU0I1abONzZiUBELbngvhZK+ULNr+S55YV0L9jVici/tM2kCEIILUcjJW/41DBVVIuL9euyng8NCQtK0IGotUk7ZHVfktYsS3LrY9aVZ78OfHpL3Wq4OVK5GKc6WLLuMAVIbPvXl/zp+GcFtZXmoFa1GQg0ofgOfDjwDYQIh+NAHALjmLg7Fd7dF96fjq7/uD/yMmd++zhxmTOfvrxSVVFpFsRDcBIvOeOh0dPSsynBfDQvVL8ma61N09FSyFsKe2mgo1TPmsmLMx61glQH0sXD3j2BvYs7RDaGih34aJ+3azCyv38T66/AhL/Xn/cD3H7dY4WV4mi3v/m+1ZtX2Ok53uahfF1tn0MDH9tluwNVfn12QLtu+3rdgpVXM3bvv+9VZ2XY/gbZzdfqVrf6tdQNeNzqVt9hWRP/WgceveMVmsuUbPah/YvtZ6D5/e+alW0T/UV8/t1gaHa9704DxzHy08OJCeGUKiFW7DOAJ5ZHg1iN0yKMFwjJG6TQUsLTdCAdjoTp4InUsqBW0csLVgo6Z/eTHZLzDeKKBEM89ttaJkkUTmOgRCMEt1UtJoQi1Aip+n5IMgjGYYKQAh+fEodJ+PAApzvjNFWmoSJBXRuxW+i1BsawxnBoRnVpDbj2w9QPWDu+illttwBBEXGV+trYmed2YLUBgwYU1W2M12PfxdQt+0PEx46CJt/BnsXRTq5po4Iao2LaxOVa0VpWlyp/g7JfvocWcGj9TfURMdtsdbXNNHXw0dkhi76NGMBiYBoHkEiMA0H89xCF+zkzBWFeMk/H0cMG8fchzcFMg1FEyVQWq2QqtWmIukOVVmeWanNTq9W/a2n5J9VWMNIOh4+rmX9fGY4dgOrH4+9Z5b4FHf2J/blXkKAfVtue8+9hPd5WB3bbxbS/p+/A19u1fv52gFj223nLXthuH9+8v29THI0HlI0TWt9nf8Z+W99kSW51q1t9j3UDHre61XdXghJRi25f28ZR1qma1nt2J5/6pgF764gj0uf3dXe7b9DHmOCYIoch8C+/OfH+fuI/vH/HSSKHn2fql8zL6yeWZ+X8WrDim0q/BMIi2EUod8JwODEMJw7vPjA83DM8vUNCxeYzdlHy62fKeWb58oqkhIwDQxJSECxNmAyYjAiB0wSMgTQltArzUikWmDVwqYGpBsKhIkchy4Ik4/3jyOkY+MM/TdyfhHd3C8MkTB8y42MmTZkwVJCWdmGCdMBRF6zOaD6j+eJL6GawU0F4w65YXdAyt6ZfQRIikTiMa06In6eCaUHUH0vRpnFwhqSGQIjJGYnY2I1BISaSCRITwriOxpgWtGbQSrCC1urMStOk1LI0pqW1hsHtkzVGF5fH2MaFNqAKvSF1bVAHXFqd+YhNcC+45W8IwiEmToeIETAJzC0D5nJ+pZTMZV6oVZlzdReqXfp7MWPWymteeMkLv5xf+DK/8vPLK6/zwsuyeKZI6WJyb5arx5m0613byJU7WtXi41ZBdTtT5v16kG6Y1XU40j4T65u/+kyswOzq47g95luMx9fTRt+YP7Lr797Uf/2wNy/897cHX4EI68N1exDw5mlXI1i7+94uUaz79439WR+7jm41e+kb+LjVrX4VdQMet7rVd1k+3tJXGq2PP5g526GyJjj3RfBdlAH7pc7eJPV5fTF8xMpsZVMeJHCUwIcp8uGYeDqOHImMB6PMhsZAEKNqoEpzEpqNQsXGQIyARiQkJAZ3KxL3SKramsDYnIykraqX4ixGbIBJKlUUk0Ac/PWGaE323ZKyqwuoowhjMk4TlPvImBIf3w3cHSMf3wmnk/FwrMQxkw6VOCkhGCF0ZyhXiqi1kMBuK4ynkSN1Y5zYrGd1ZRoKWipWC0ihh6lIiK1Zb8CjFqxmH9vq4Y2dGZGAxYqGQEguwBYJzl7IsILC3upZG6eiZXmo+u9ai/9eawMO7RJw/16/OIIQtLE0u4XxECJ7YbXbBEcXvwMx+j5J9DGy2PNG3JIKQmSY/Fo8HgZqKSzL4pkguTYWw1taxUHIRSuvy8LLMnMYIneXRLTAs1zQRRE1zrU2ZmPnZmXN6lld5+HAw7BiWLXtWhcIsoUErsTPG6Zjp9/epA/9M9MnnWRLprfd/f922dWjrI1f7Zmz7WO+m7l6iy92bMX6ZHvz3K/Ax5tXuEJJsvtrsMsJ2r/cPlsGVvcsGjO5Z37W/QkJUAAAIABJREFUg8T1PtzqVrf6vusGPG51q++yIpDW/9ErLWuh6QfMxJOhDW/Q1O1nW9z52mL0QLk2aENsQ02DeijdoEIi8NEi9yHyT3cDHx5GfvNwZCQSFiEvYDGSpM3WY8wYuVTqWRlCJFrkXhMSR0ISQjKiLazaAyBNCWpER3emqrlQqkE0VBe3cpURQuRwP5GiMKaKUslWkaLUi0JIxCTcjZVxMB5PA2YDP74/cneK/PDbV6ZDZhovEBM6zXDMa16EJ1v7uFStF0o5U+pMrYVIRGSghjbys6aBS9NO6AomdJnRPDe3KEHLwXUegzfptSwe9ne5+Lkp1oBHbOe4BQcGdwkLMSC1ICH5tFBMWD1sDV8Xv3vAigMPrdScHXzUso5J+a5mQKixhR6GnUBavAGPcWhfiRAccEgIxDggIZCGpl9pwCQgq2twSAmJyZmeGKE6JVGyv+9SFkwNUbfexYTcGI/zvPBymfn05Zkvr2f+dfiFX17O2Kx8qq+85oVSlCX7cQoS2shVd7YytKhrU7J/LlZwncLKdETxrz6xtgcd7RSsZbuv9Ybdg+Xt/fvntVG67Wu3CensRGv3rbf9XDf51h/75gXWF37LotjVG/nWvsn1P+vGbPdd1oWKrvvYNByh34asr2VvXsBdrfavcatb3ep7rhvwuNWtvsP6auXSQHpD0FfgEcwC3RrVG4fr9kMACZUAJIzJAncqHIATMAVhNOEpJU4p8hRGTk0kjjlAsKoEVaIZQ0tFL4DFABFiElJkbcbryxeKLeTyiqBYfsbyqzfGTejumSEtn2GXjq6hQFQE1w6EEFAxcoF5rnz5krGo6CBIcn3JOAghCXf3kdMpMhyEOBqE4paqPZguJIxuU1sxK+6sVc5YmbE8Q/UV9z67b+bjQrULr2vGakFzcSeuUjfGwMqVfarnl7TnqOGykLAyV3153i1MByxFYmigpOa1sTRp2R8r8GiMiypWK7VWtHbth7UVfsFibKL3wcXdoY9LhQ3wpESIiTRMDj7SSAiRmMb1fmfJGp1mTl8Z6qnvMbXtJ+/0zSBGVCtSYgPDWxcu2o4jwTeXC0mNfH/HISbmOXM/Hqg18nLJ/JxfPZ9FqwMPFQetxXUgzvL4a8QQGMRzXlbA0T8DsPGH0m+5JhmuR6m2fb7K0HjznJV1+NY2rAOKFvzXv/dH7NzF+pM369xte+vfgTc6kut93/MXcv3kr36RVTQub57TTXZXkPENYLZtRtZwy6v3catb3eq7rhvwuNWtvsPy7A7WLqY3CGvuhLhrj3Ma0Rt8n39oW+gz7QaiRIER4U6FjwSeiDxJ4ISH/t2nxGFMfEhHDmEikJxNKUotlVAq0Ywx+lhNNCAJcfAU6jgI1AW9CPmXX+CSkC/4aBMZs8Ubda2EtgLsTagzN65TUTSpMyY2EYIQY6AUY87Gy7nyyy8LJCUMMN0lDqfEaQocjoHHx8DxLjAeISTzFf+AC9xjaFa+TnuYZUwzVs5ofkGX103boeYBBmYuilel1BaPXTOaF3TJDj5qXdkEsYKsjbY44CgVzUsDHr39beNQjb3yEz6BOssQzCDMEKqLe0XwWTYDbboOVbQ44NDiPzd+y5kTEUjJR7+GAyG4pW2MkRQTMQ1uBpAiIQWG8UhKI2E4NiByaHqVpg9qY1yqC1UrqgWiJ7hLcOtk2uUndcBMCXlprluszXlURWolhkgSGFU5CQwivB4ykcTnu5lcI788n/n8+UKphXnuLlfBtU3F1tGyPlI1iDBKYAAGdmnl/YvrOM11f697//aR66v/7Vw2xqIRArsFgK2ugUsHH1yDjvYd66zD1uB/i/HYA5xV09EF5bK9mw6J5M0+XYOQa7C1Mh17By82VugrILGfrHq7efnqyN7qVrf6TusGPG51q++xugvS/n/0++mM1mQEAibmuQjXa7WE1jTG6GzHSZSnIvy2Bt6FwAeNHCIMUTg+HBjuR053jwynA2EYmy+pQArEu4EhKsfkCdliRolGjUY4GTIAl4yiFDNIARkqEgwZ1KPPQ0EKSI5IVlhqm89vQnkTOJoH63WmQrYcC0VQC5TFKEummI9+DWNiHECXhZoCNRUsKWoDkg4Mpw8Q3kO8Q2RyVkA9Td3KBc1nLF/8q3imSK25MQv+nby49qI426E5Y+pgRFJY08wtJGyYQAIxnQi1QkoOFPJuFV19TKgL1MMQGwgYGyDwkae1N91Zl7kHmCLBB7dSSDAm0jAQQiQNPjaVpgMSB+LhzsemorMdKSQkDkga3X9WIKTJbYHj5CxJE6SvoqHo2hLRSFAX5DtbExBxgXxPa+9PkZjcWa2xOO7qVQkshFCJIRADpGgcx0gM8KM+cDocOVfh3f2ZJVe+vJz51z9/ZsnKPBfPPGm6IbFAatr8UWAEJvGv2CB5t38N7XOl7bsD8x3IaKDedp21QWN5WMO+++jdNcvQP5s7K9v11PXzvn1vHFnblwYW2j87WcX25+DqReT69hWpNLaLcMWY9m2baF+OaP+Fr7Ynzbq7Y5L+12SVcyCbXub/g4vXrW51q///1w143OpW32W1lsH6+uuuOWizGO5gEwimzoKEcD1wIaGF/cEoykGEe4QfivBBAz8EYUjCMAjD3UR8PHI43RMOByyBWfbmIwrxlJDRCMc2dqNGFqMIEItTIEtGS6FcsgfjpQWJwMFtbtMhgUGwRF0KkhVbWup0baMpzcTJWQTWWRlfNBeqBpZiXHKhkwv390I9iGsdZiixEqKhMhDswCDvID5BOoGM/qRaoSxYmdHiTlaafdzKakGrWwBbXaBWZJkdKJTiCdlFfadbgnloQmviAGmCGIlydGAyBKwW6lJa8+0jQqF2QbgQBx95CmkgJNdcEFpo4O5y6DhExAjioYpdnzGd7onDSBpHYvTfQxoIpydCG7EKIsSQIAxYnDBPu6CHPbquqLugGWhugMIt04SE1ErQsnbDobteiQvvfYzOR9v8BB78ijZDaiaYEEIm4GYDUZTjEBhjgDBxdzQykYeXC19eLoxx4M9/fSGbsswVMQfcPkEnRBGGIAyygY+BTdvRGQ0xZ4+0sxfmz9+0EnaV9t4/h12XsWdG/KZt2MkXBt4yG7tsiyvw0WlMc5DQ1xd6t7/f5u6vwb6umY4NZlwHjXbgIG28j8agsebFgKx2vg6s9ixMf+7b6g5W7XE3AHKrW/2q6gY8bnWr76wMb7L7mMbWbnqtq6kSQJQQw8aQAPu8giBuy5pQTpJ5MONDVB7FOKiSppF4GEnvnojvH+DhHjsMwAKi6N0B0sAQDuuoS9CKaGEomVIWmC9Yydhrhaxoy7gooyIR5CjYoIRqhOSOVRbAImS0zew7HjhIIgUhiRFN0VzR7OM6gjCkSDFFipKzUl8K46dAVYgi5AMcX8/EpKSnJ9L4EY7/PUy/x8I9xoALs2dqOVOXV2x+wZZnWL6gc8sasdZwSyBIIB3fIZIaS5Cay5PrJMLQRpamJ2cOptEZgzA2dsNZk1oW6Nkb1r2PXZcRQmz6iwGR2Fab3TjAGrPTLw6xiljx9HdbCM0eeBgPTacxEEIiHZzxCJML9iVGkIi1ZHkL03q5rEYGFtrLtFBCbLXa9UG/RKAi9NyTSs8UUVzYrtqa9W940wogWtt7qIj1MEuQIBzGgTQEfkPk7nhgzpl393eUovz86RXq38i5Mi9KCoEhCIfGdhyCMIowBhiD/8+xW+mCUCWgNF2CNfBW2yhba7J3U2Hecsv2mRJrLFzHKR0gvO2712wNw2TlDNoaQhee96Z+y22/5ivXh1yBztV962oaqj1oXaewlbHYjnvPG78eo7LtAT5C9g225RoUbQTJhtlkx7je6la3+t7rBjxudavvtuR6mmE/WN1nxXeOO7LrCGQHPiQEgigjykEqd9E44CvDYYiEaSCeTsT7OziM2BjbSrdg0wAxEdIB8FVz08pQMzKfkUWQzwU7V0qt2KJYdjF2KEaIjSEZA5a8OQqDNOG46xZ85MjBViCQGlMjWLOs1ZXhCTEQqzeNVY08K+ez6yxOE0g1JC+kQQj3dxhPMPwIwwdUDq05c42CrqNWFyj+ZeWCltKYANylKybG8cFBxeGeMIzEw4EQBmcphoSkRJzeEdJEHHxMSuJAZ6vc7nZpblo+0NMHe/amvZhTPD1Ir6hrTJaiW8OM+riTnUEvCBmxQopDAzCu7QjD4AApRogRi0MDHoMDDxmahqM7be270Xb+zW2Fe0cqeMK4WGya8RZmqAWj2Sz3JnutdUaJLlCXlUFp7ENbgB9iIkrkMUSGIfHju0eGlPjlyytRAj///JlXYFkqUXxMcBDalzMfKTRxOb2l989EBx2rAN+sNdt7xkPeAI9+VwMo6nbQvUHvfOSelfI7bLvhamTJrgXbtmcU3vIV2/auQMfu9q22EaqvQgLpd70BHSu5svGkVzox2b3u281JYyjXPzm3HI9b3erXUjfgcatbfWe1joWYbq3IOlLdnW32Xc6b53e2I7aMhpiASqSQgpJQz42QgN0dsMcH9HRApoHAgqiynH+mlky2BYmR9HSCIGgIbqlbIvUs1FcjnY00K6KKZSWfPWeklohG0FwJA5SqxKMwSkSBilBKD0D0XR3HyGFKjClBMOaXM8ulsswV1cA4RTTAJMJlVvKsfHmuzIsRRbkclPogHE4Tp+kfkePv0cM/wvAOldhcrF6ol5+pX/5M/fwn9PMfKS+fKXnBhntkGrl7+kAcD4x3T8ThwHh6j4QBiSM9abyLrzVEkEBKJ0JIaGM2alsaFxk98iKV7QRjQMsEaeDDm9zWALa8ktTO9bAO2bfGHwFdkCaQp2ZgQVC0Zp8mKxlUCfKKxATJc0SUjBAbYxMRiVgYcXpqoBsvC9HPecsN2V2d28Vm0DNRsER3Wmv0GIZi9dyYkIKV7GNtdaE32kEC25WuRAKnITHGgH544PE4gio/PN4xiPDXn5/51z/+DapiVRlw44SRPmYlpF0jrOYgdWEDOB0YhP1tAqLXQ0xrYx1WIhEF9CrRez9G1Uis9RPaj5c1BmRzprrq01d2cz88tReif7usv67Z5hn8DebhmzgFOvWzGwXb/t60Aa2rsaqrTexf7gY6bnWrX03dgMetbvVd1jWwuMoF6GNVXcy7e1ZnOjbWwwHGasArzhZIECwGH8M5HmFMWAogC6aFUl4b8Ki+cj8qFgQNQq5GDoZmpSYliq9cBzXvQbtmA0EDqIqLx5N5w3ZoplEB3AV2W2GNUUjJE7KNHhSn68hRjBAtEKtB9hX2Jfv9r2dPGz8dI0kHZHxHGN9DvMfiwdt7U08oLzO2nF3Tkec2PhOR6YEwHBmffkeajhwePxCHieH46ONKErdV+9axVodyhDgRxN+UWQGqN3JNXC3rOfEzueZ5Wx/pac2j4Inv1kIeYdf89eGhiOgEtWBhgJoxO7tb1/o+relZCmAOMAioKYHs7E9jR4jmmowgfhzEGRBrjmn7Jf2eELNdh/30dVFOb1pre4w7cVld2nhWbmwHu+t0N+aDkYIQJHJ3GAkifHi8Q4DP71+xqnz5/Ey+eMp5FH9lt9CVrxyWtG3TwXw/lr7/KlvvLda09utbslVIHdptwa568x1U2D6o/VD1HPWOaraRK7meQrvagG9x2/9rUNPph/66YrvckA5OO8Ni/cIxtl/3R2Zjelbk9WZXvjV6dbXPG8l6q1vd6ldSN+Bxq1t9d9UaUlrwWr/VpKWTe5ggTQdivdlp//dvRkV0SbqYC5E9DExYUmQ4nuDugfjjbxg+/EB8f0BOkVK+UMozzy9/YikLF4sYA9SFWoWMkasxZyXMM2FeeD9nTrOSZiHMEX2p1OLgBGlzMAn0tRKOxnxW+vJ00UIVZRyFYYDppIzHZp1alZKFksUF3abEqCSBKUI2YdFIXgpzroTPcFmE+998YLx7T/z4L8Snn7DhESPB8gr5BS6fkXxBgPH0jmE4kI6PhPFIevwJGe8Ipw8+siTiQOz1M5QFqReCKIFCrgu5Llh8h8mJc/2/QQtHa7qCFDEJLHFoQv/ko0rBz5tirAr63sA1kNC1H7ZqIBoTgocCGkKb2CKkCRkOrmERWqNf0fkVq5mSX9wOd8m4E5pQlgu2nNdrazi+I45HZHxC4oDJCOAhhVRML+zBkrtxubjeG9ToeR4SkGIenKgtt6WWpudYMKq34EEgJZJODlBLRdRcs28tkwThNAwMIcCHRx6mgYTx7jgyBePnv33hl5+/EIohClFcPA+CCtT2SfJdNAqlHctt7KjjwE4WBOv2xkp/sLTPjuflhDbutj13bbp7M94Zj/Wfffm59pfpg1pff/p7yW7eSdrnvI+GydWig60szsqnSF+Y2NCBtTGzzZp3D0b6+fX3elUrWFshz+77rW51q19T3YDHrW71HZb08ZtW+wGMdeXZWgAftoo8/9741fqsENCUsGmC0wm5u0PuTjAOWBJK8bC22TKLFc7mNrdaFwqwqLIUBx5pyQy5cCrKVIxUBalAFaiGtgV/wRutaj7oo8lHWgTQFu4XohCTEKIhoqjuEqp3VkMi5o8N4gZSAyzZqKrkKsQSsHSHTI+EwyNhvMczJgSsrA29ayAm7ziHA+n0RBiPxNMTMp6Q8d5X/Yvnj9TzGaszlFeCVEKoLLqwWCZOd4QEJc9ouRBKdeAxjBADOoy+rTA6ALG4qjuQbdHZp2oammjf15yP1hn7anxzImrEg7aGW6UpGkIAiUgb7bIcVjDSGRTyBb28rGxEQKAWokVIExYqJk1rgmKW19Ebwx29VrerdsWu1+vOBcupr+ufRbqVbRPnh0QIrWXW1jird/fu5hw4jgmtI093R5Z54cvjiTpnlvNMnSuaK1uIZgdpDt1rt7dtvXbYiIGvWIs+BtWZxfV+60B+u21jSgS53sj2HtZtvtFAXKELW0mHa/Jje8LfbfO/CW629+EP6SCjgw6++v16nOr678zVq7fkwU2ovk8judWtbvVrqBvwuNWtvsMKwb/WxUrt4xPqlpjmQtgKfZZkbXCsdbPWl2ZxvcGCkA8H7HQgvP/A+OFHwocf4OEd82iUWPm0jMwh8rdhZA7wXBMZ4XzJ5Gqc50pelPliHC+F46UQPwvxFcZFSEVIrV/J5vJpVUODUtrKdAgt1kOEeBwYRhiPxjiBWmbJmVoCtcB8Npbc2psAEpUogTEEjvhByjmzLEplooQDhx//heNPv0Mef4LjkwOb1qBZHNG7j8S7Dw5imk7i5fzMvCyc//In1AIP0yvJAvHzJ/T1C+c//u/UfKEsL5QhUKbIchrJx4Gf/vBPvHv6kZfzJ86vM//6X/4Ltlx4fLhjnEbuPjy5xiJMSBqI40SIB2I8YjZjVlc9TjU/f6GPYDX0ZhJWbUm/JioLVRestFGmJkBP44EQI3EYseDp4bVk8vxMskq0BTs/oy8/s5xfycuF5fAzcTiQ7t4RholweoKQ0Di0Jr2to4uxpb57kGEQ948KUhARtCyoKrUHCJZmO2xLu7rbeFWInieCj1VZVaxmzzzRvE0CAYcI8TAQPzxyHBLHIfJ0OPJ4PPLXP3/i+cu5Z8L7SGBbod9Gkpozc+uppQGmFUR0sCL7Rru9b4NA8OulMQ1xN/Lko1271ltbM657QGBvvrfjsDPwNZq9L3jKPB1X7BjNndJ7fXcbmtj+DrTbej4JO4ZjjyN2D22b3bOs+33ejslq0Svd4KJfF7e61a1+DXUDHre61Xdbu8apN1JtfALxn4O1Jms/c90Ah6wzIdZSwAfScSI93hMf7ggPR+w4UcaBJRayKGcxzsBLEGYNfDEhq/CajVzcQWpZlPms5LmQ58LrEpmzUKvb2vrYv62LsWptcKxrkGtL8a7b7LyvTCu5GrUY1aCqkCtUa5qQ9l6kgbIYhJQgJiGmwHiYmE4nprv3THfvkXSE2NgG8IRtIh545xkSdTFUM788f+HLy2eeXxdqhffDzGSBu+cvcH5h+cufKXkmz2fmKFyGwPxwYHmYePzxlVOZKQpFhT/95WeW5y9cHo8cjxMilZASJgNxHEnHE2m8Q0ZBLQMV09hGsGJbZ276CO0KhZaoGKKPUwVAC2IF0+LC/pJRNaouaAgEPdK7S8+siM5UqLrLllYXopeFMr+gJWMxEmsmDQPEEaUCbYRJaExLxTSvyeEmFSRiLa5PqzNLVttrlQxWMFuaniOiKs01q7N2/eJt4Fr1aiXe08eNMUVO48Dj6cj5fmG+ZC4vF0r2DBlTW3UyjbZoTTsrO3jFHlj/eft3Dw5WOGHWsi8aE9mOaScBrlb8rcH/b4nI91v+JtPREcG2N2/+Elw9ctvWHhaskGX3d0HWEa1uuYv5SFVnS607d/Vjxo6Ne2Ov1/NANmhiG6q71a1u9V3XDXjc6lbfYRkVWtPnq6r9f+7OeJja5rTTxaUhYOINtUggNLGHoAzjwOPTPY/v73n8/Q8c7++JDw/M6Y4lDjyXhYtm/kThlcJfQ+BC5JeLkDO8Pit5qbw+F5a5cD4v3M2FUy485ANjGZiycarCYoVqRm6sjJFQE4pGf0uLEZOPYtUKoYAulYhyeTZCApOAGrwWoRjk1BicqK0JjqTBHY2Op0SIkR/+4Xfcv/vID//wH3n48Xek6QMhTRv4GFNrBpUYjBCVL5//yue//ZH/+X/9z/zXf/0/+OXTC3VRfmc/8GCJf7HAZIUxf6aWwnxe+Jwzf50XXn+44/zxBMMTRQwrkbke+M//y//GX//1/+Kn+8S7hwP/6T/+M0MKIJXhdOTw4YnTw2+4e/odFgpIIaZEiIE1w8PyajkL7knmrWikI6+Qom+3hU/k5Qt1mXl9+RnVQhiOhOHA8eG3hJA4HY6UxViWLxSrZAwV9xebz59QNUZdiNOB4xiQNFGyi89TGkECFga0LNT5DGV2C2JJzsiYj7SF3hyba0SW+ZmqmZyfCTER0wEkgaRmLuB6Hq2GVEW0onlBV8cviOIuXMeYiKeRKT4yhsjdNDEIHKfIL798Yp4XZyXwz0UHF0jnFqSNQIkzEh00rIv6G5MBu166AQGTloghPVhQ9gjAt9ua/o1V2a8KsDb3Yt26V9bP+Dq+1diS0O5Y95FvTlbtXrWzNvtX3L/+Bmw876O9nx3oeAtuemDpuomGtHS3bRHdwZVb3epW33PdgMetbvUdlnXHILYZ+q3zWP/ZZs6FpiqXBkiMELQBkMg0Dtw/nTg93TM+3RPuHtD7R1QmKgPZXlmsMpsym3Fe4LIYL69GXpSX50peKpeXzDwXLpeMLpW8FH6phVMVTgYaA+HYSRkhqFCLrKyGoagp1TzsPFSQ6s1nVGFk8CTsNKIm2ATgLkyKopZRQkst9+YvDZ4afv/0nsePPzLdvyMdHpB0gCbs9pXq7OyPVco8U+czf/3jn/nzn/6IyYH7dz+R888szHz602cui3FQYdAC+ZmaK+fLwksufFoWzvnC5fWFw8f/ymuJBJvIl8If//gLP//5C7wGzi8XPj6cOAyBMcF4N3FXL+hSEVXPURkEGw7EFFdmy8ytcUVLW3D25k/Nx+hEBInRc0SCMw1SM0EqKRpVDNMLlivl9W9ImrDxDqMSxgOiGakLlmc0LFhwUEuMEBJVDanFR6okuNZDAioFK4unvJcZ8oJSvIEVd9zyJHOHIGqNXamFWqq7m+mCBAfO1kbLXE/RV+md9XAdiY/++Aq72/sGjCEJhylxfzpwf39kKZn5cgZTtOLbayNQ0kcQ+0co+P0E+X9fpN8oj3Xh/5qh2H8e9yNarAihMx/r2GTf9G6iyY9Xjwvdu1o1kNK29/d2V8wtfp3kkN0zWcmVznJAOwbftKJ6e9u3+ZoVj0nnV26g41a3+rXUDXjc6lbfWRl4mnfVdfZc+ogErplwAxtv5QOAtLnwYC7QDkJISgjCmBIPj0d+/08/8OHDE6ff/Yge31FO7/8f9t7sR5I0y+773W8xM99iy6Uyq7qqe3ohe6ZnRqQEiqBACoJAQQIF6EV/r971MuBIQg9GQw6np6erqyqXyFjc3cy+7erhM3P3yOqC3rP9FKIi0t3cFo+wiHu+c+49xFSzNIYP9+xyYKeJXcrcb5V+X3j/NjIOhd39SIqZcYiEmOnHiI8FFwtNEbYlU7qG68ZysxEaa3DFoknID4ImyKFMDeoZKRlTBFJBg+J9i7Oehb3A+ga/6KYmFzCa8WUgT5agnAop11yQXArtcsHSL3n1459y/dlXrJ9/iV9fk7pFXaHWhGjE6A40A5Hd+7fc/u5b/uZv/xN//9uv+cV/+6/44pdf8P43v+Hx7Tv+6m//D/a3H/j9PlNS4nG/Z0yJbag9CDkpsRFiK/z91zs2N7+m9Su0wN/++p/oHx5442G9sIzbR1ad4/m6Zbm0XF45Lq42DM+uWFze0K4uaBaXWNdhZEDIiA4n6eSZVKqNKOc82XwKqAUsTbfCNR2LzQXet9h1SymefvtACVv2j28Qv8BdfIZdbGiunqF9S/ENKSklZIxtEBTTXYDvCAlIEYn7Wlj6jqK1B6Wyh1CtWSmScqEUrWntYrDGToS3/nkqKZJTJg7ThCxJWOdxvp3CDt1EAOr44Npknqb+lol4Se2B0VIT4xvn2CwbvPfkkum6lpIiD9aw3w+UXPNA6g1VCc2sCFQuL9SRvoeIwUND9klY+clz8/On5H8WSWab1rGwrxxAn8oTc80/ExCZCcc8xlcPjx+en2xQH5Odw6k9yeCYr0sP/xSRgyVMn77wyX5kpj2n13XKOU7fix/4fMYZZ/xx4Ew8zjjjE0QNXNMnRYhOxdncNzFHPxzIic4ruEeriwEab+hay3LV0S5XsLiCxTPK4gUmKS4XZPsGzANDX9g9RnZ3gX4fGB4iMRTyEMmpUEKqaeIpE1MmxUxvDDsrcNPgVx2rm47GGSQa0liItocxkbeZZArJgXiDOINtPKYz2PUFbrmgubo74YW+AAAgAElEQVTBdS22axAjFLSOhk07wjhQEoQY2PU9YTqHy5sli4sblhfXLC4uEBnRfI+Mj0BBwkgae/YPb4ghMPQDjx+23L975PbtO7YPj9zeviO3hjdvv+P+3Xv+8e0929stLtRifz8GrAiNb9hcLLm+usAsPLJwXDy7plstESwlFdLPPyfsr1k6pbWwXha8UUJRGgTxHvEeay2aR/J4T9KIOldVCk2U0E/XHVFVKt+YPpdSC2sRjDG0ix2+aUhhj21a3HKJiMWZjDowaiiSyeNj7SMZlxgMTXdJWY41OX4avVsOSkcNAdQQK9EJUyhhrr1FVhTNVcmIMZJzrnYxYyimkoNpWb1aw7RgjK0q1aF+P7EEzfYoY5Biph/fOpZXmAL7pI4irtsVnBNaMayWLQo8bFZoKaQYiVr7nw73zmx4Uqq6g1IzUep9o5P1aW4mP57X8VxP5nYd7i+dNjqoUnPrhlDfwyPdOXw6aJizrYpj0ruIHsgGOpEUnSdIPTVCySnpgO+rN9NrVY6qz3xNp2REZjXo9GUfEY2DOPMDZOQHhJEzzjjjE8SZeJxxxqeGiVgcV1mnB+ev5oKnHM0ZNcl6+noiJbWhWFh2wnpVezwWm0tYfYYuXlGWX2A00ZSEefgW9g88PmQ+vB+5/XbPsA/s7iM5FnLI5FLQnGrTcCrEEMkh8dAJjRPMFyuWn11y/fkNnffknRJ2I4P/hrBVgolEIAjQWUzjaFcL3KqlefaKdnPJ8uUr/GKBNHZaDq6NzKm/p+y2lEHY7+5597AjpERIicvPL9i8/ILNi1dsnj1HeaCEO0zY10Tvxx3j3R3f/P3f8XC/583be/ro6IPn9/db7nY99rf/hXe7t/z2t7/jw7s7/vo3b7i/25MmW1dMhetly88/W/PFVz/iL//il6wvl6wvFrXB3cB+vyeFyJ98doHmzMLWXoXt27eEoWd7f0drPWa1wi2W+K6DPJB29+hYm6dj7MkpMWx35JQJQ0GLQYtH1VDUkVImxERroXVCtzQ0rcFfrHFdy9XL1zTdgqZrEWco3hNTYbd/h+RAFo9b3tCunqHFUGxHvH+DDjvKpKhUWxvEIdQAwtjXbI6UcM7RtW2dPqWFsd8TY8A3LXayfyFVSRMxdN0KMHjrSaXU5vMJNVdkmtQlgj2Mc9PJNhWpBj3BGItFEVvnfjXO4bzlWlYsFh3Dfo93wtBXyxVpPsLxDlLVmp9yekdNjeOnxfnT+/HAJI7Gp4Ozas6dP5L9g6WLI/F4YkU64TaVZBzv8eM8iGoVyyfk5PTcDkTtB8jH3BOiJ30rdYz0KeH5yPs1n8WTf59Yx+QPbC9TKKnhD751Z5xxxqeHM/E444xPEDrlWMx4UiTMhcvk+9f5j/9k3TjkB+SCd8qydSxai/d1+pOxtjahT0Si5MD2wwPvv7vl/bcfuH1/x/AwkELCpnwojoSaTG4SyKg0GRDDi5s1n99sePHlc65fXLJ8/gzvHGkRYTmy6Pewa4iNEnNhyBl1jtI43HqJXS6xm0vs+gLtluSmBTdXb7WoS25JNJmhNNz38M37ntXlmtXNmusvf87Ln/6C9voZtC06fI3GLbr9hrjf8/Y3H3j//oG/+ZvfkBQSluXVC66eP2cwBrVKk7bwMNCWkc4qjbdYZ9mFqjxl4PrZDf/uv/tX/MlPfsSvfvULXGtxjcVKwkghjjtSioT9gOZEQyKPPQ9LZffwwLd5S9sYYga/XHP9+gvG7RvCEJFcx+o6W4PwivckLJlEKkIc6s9DCIkYM2HMpAayh843NJ0lDyMhJm7TG5xvWF6ucN7RrpagSmMSlh6T79FRiAgihXaxhHhBMpaw31Fi7cEAQWxbm8dzmuI4AqXU72NtcncURlIRytTY3bQtIoaUMoihYLDG4XwHYjFWMNZNjfTmUNCqUvNVLLRNS8oGLWmawFUOjdgH45QoRqBxBgNsNgtUC/ebLdYY+u1YLWDzPTWNlz0qF3rgFId76wRz8X64J2dlEU5Um6fEho+/nu/Xp9X8SY/EH+qqOPZ0HOxWmGMeCFCn2j0N+pvtarN960BuDnRpziGZSNZ8/ieN5R+TkYkPfh8ykR45HPiMM874I8GZeJxxxieIOunn9BH9fgGgT5cZ57BlzTp5zOts21XnWHYO5w3OGYwxtcc2Z3KKlBh4+PDA+2/f8/br99zd3pKHBLkWbUbBSl1ALgo2gQ2KE8EZw8sXG7768jkvv3rBs+dXLC9usNYRtj30A4u0x+xbcleIMeGGSBJDMg67XmFXFwfiURYr1HtqrvdcFVqyg2gSfWm56+Hr9z1fXb7kxfMf8ezH/5xX/+xXuKZFpVDub2H3hvL7X9PfPvAPf/UdX3+75f/8v76hXa+4fvWcL9cvuXn5kkhGTCDEHSkGugIrW2gbi28sYYjkaUX55vlz/sf//t/y5U++4Oe//CkxJ1JOWEaESEk7tESG/UDJCV8Cqd9y14zcvbOMd99RvCFkxS83XL/+kvt3A/nDHaVPaBrxtsFYhzYNlkKQOn0pDEocC/0eYsiMQya3inYgly2NWHbDSCyZh9s9GMvli0vaZcu1e4a1QmsUYY9ESy6FFDNueYFbrqrSYTz77Y44BrzT2nvRbGCaMqVSqt2rFDQXrPeI9WQcKQuaAmgN8jPWEmOsBXdSnG9ZugUYwRqLmXs7TE13Z1L3aqO8oWk7bHLkGMgIOQdOxb9SFGOq7av1tY/pcrPEGsPd3RaDIfSROpiAicPqQS2c1/FrPOLHq/zH4xxwShBmAeEPRF48KcEPYoQ8mTT1g70Rs1rxEYE4PDlbx+ZzMKePHYdMPL2UI9lgtpOV2gM2L1CIfEw+OB6nbvBUIzqMVj4e7/vHPeOMMz5VnInHGWd8itApB0CO1o65x+O4SQakFhHTU9ViJYgKXhzOGjZdy6p1OBtRvScMv2Hcv2XIv+P9+w/c3z/w97/+K777+h9ht2OlgvWuBn7r5FrJNbUcChhBDWwWLZuF4/NnKz5/seRi09ItGtQ7snGU9QLTeTbNVyyGgebZFeN+x/bhlv0Y2fWBQGQ/DgyP95gUMeMenKUcAvRqP0MIkYe7e77+3e9BHL/487/kn//Fr/jFr/6Uz776GW51jTEGNOM2rynW8/jNN9yGxD98e8+YPX/+b/41V8+u+PzHn7PceDYXPRuTGS8dlA5Vz37M9KPj9b/5jPvHkd/dRoZQ2O0jf/7zK169XLC+aMmuqZO1klYrUh7QtEdzQMOApkQYHwi7Rx7v3rB7eCSOjnGA/nFk0X6Lt9DKB7yMlMnClkh1dVsUsbBYWLxTlIwWx+V1QxwSYRtpfKHxhYsLx3rtMCExJmX3MBATmCwMnYcx4DpPt1niF4a2hZJ6YkikPEK/xLUr3NUzwhgwfkfeP1BSxjoFDNIuqkphDCoGNY5sPcY22CW0viM83lWCogZUaLoOEGKuBW2IYQo29FU9kClh3bhKmieWawDrHVoyYi0pRWS/A6jf4ynxvOacRERqT8myq0rL9eUGZy39ridMdkCYexmEMlumZO5CmXqJPtIJjjfV0WZVt5i2OeldPwYsTv1XorWfRfQYAHhStx9tXvVePRwHnbJSTjaetnuidh4K/YP8ebRfPfk9ctjtiWWL46hhkam3ZToXM32e9jPbvvRwKoKWGtI4X7uZTvese5xxxh8HzsTjjDM+ORxYxmH1s/rTp/89KUr02NRKnXwlZUpYFrBWWLQNnbdYm0G3hDEwjJ7d0PDm6+/47rv3/P43f8f7776jw7BAaJ2Z+kaq+jIqGJMIYqqqYGDTOp6tFzy/XPDsqmO5bGhaD9ZSjEUbg6Flsd5QYsBvlvTbO7QZyQ879mUg5kQfAn2/hRzRsANjyORaySTIpdCPlXh8++6Wly9e8+OvfsZPf/nn/PK/+hdIuwLXTo0xGbO8AWAwF2zzA9/e7VlsbvjTP/slL1495yc//5IyviMN33LtC7IxuNwgWQljIEbDK3fJts/809vIrs+8+zDw49drri493dJTjKVggVyD9GIdTat5hDhCDsT+gbB/oH+8Y9gP5GgZQ+ZhCLxtb/Fu4LPrzM1FlbeqmlBTvmuLgNK0gnXUHgexeLcg9YngDc5mrE2slo5uaVFjMUEpMRH7TJ8M0VtMHmhWHdXH1dECJQdyGCipoDbSLC9pVhc0qx4VT9pvaxaI6pQZ0qLGgZnS1YugxpONx7SC9y2pn/angmJomgYQyphRIKc41c/+aP4RMxGtWsgaU0cFW5kUO2tIIdTBBqVOcUOoBEhLDQy0BUFo26qgbNZLULhtmzoJLCaEmogzt3EcVvCne8hwkvNxitNY75NAQOUYoCdlNgUy5WHU5w+kY37pya4/pjdHc1TdeH4/Dkc8PH1s4jg9U+VoKXsyneopp5leUyZScZJXMu9Tj+6pg4pyeCumDZCj2jMpH2fSccYZfzw4E48zzvgE4Sx4y4GD1BXFyRbCbPPIUyEwTRCSaTUYMCosm5Z1t+Bys2G9bnGNEvWBYX/L+/eJN28iv/vtPW++2yG7R66sYe093hqaqd+3ZEhZ2ZvCHmEcqON6vXK5cbx40fLs2Ybrm2vai0vMeoM2G7Cexi9ALEiLpECzfqDcL2lKj6RCur/nMe65DyOZkeI8zlffep8DOSvDzhDGxO3tA6vlii9/8c/42S9+yb/8b/41l9fXiO9qQYyAJiiJXCzFLFi++hOemSV/8S+/pt1c89Wf/YzVpqNZO4bHd8Tf/TWSI1IyKVskG7aPgaHP/OZ3O/ZDYcwOVLlKiebxPXf/8GsoPZvnS6wp4HIN+xOhqAUc1u4wZSTF90i4p8kPdKWwtoZYIOwzH95sCeOW9KolPWtoG4OzTfXsKwxjrj06IYMKFsditebZ6y+QkpA0UHJAU2Sx9vjO4tOanAvFXzCOiXg/EFPmw8MAQ8ZFuLhUPmNFs77h4vlL+j4wjpFx+0iMaRrtuyH3D6RhTxofQATjJnXCtUgukGtSusaAbTz4BnyD5kgoBZMKjTQYY+m62ieTUoESCSHjtE6i8ljEOuysYtjJv2MtIkLjF9gmkcVTUqKkEUpGNJIz5DJV1cbQOIuzcHmxwjnL/cOGXeMIIUxp7R/5pSbMD9VWcDmKCCfVu8xVOVO+zlFoONi0FDmRM3SyL3EgH+hRLZkNUqcWpSnKr5KOUib6OW8wWy3rAasCcSQhULM5j1Ti5DIrIzqqHoeParn6fp7I8WMmMwdSI0z9IQcJpV53Oa6HnHHGGZ82zsTjjDM+MQi1/rJTDXP6MRc8lYDMX52ULlPhU6f+eDrfsug6mrbBWAMpkOIt/W7Pw+2ex9s9uw8DLimNMawbSzMRDxSSUaJRUlZSAkstooqFRWfYrD3LVcdiucR1C6Tt0KZFbINtNyCeYlrIEWcNNg24xRJpPEUgaGSfAzEUSnY007jWXRyISdneGYYh8f79HdY3PPvsNa++/Iqvfv5zFDOtyR7ah4FS09LF0axvWMbC6x+9wq8uuXpxSdNaXCOYvEe3byDXiqnkBi2W8BAZ9pmHt3v6oFjXIgKdUWy/Z//uW5bXFxAfDqvCEFEph1MQzaARjXtIe2wJOIVGGqwqJRb228SYI6sWGmu42NhKPkzNeo9R0ayYmBEMxhq896wu1ziTcaYhh0AKI9YbjBWYRu5emZYYMrvygf0+MG6VXBJFetR0rNY9m05YNCtMACGTwogUZXl9ibEe13SUFCn9llr0OsR6kGZ6r/OU55EBXzM8rAXryClMP6wWIxaxUKRQciZrqQTCGIr1aMnVXmWq+qEi1btjq31KrAWT8ClRbCQLkAOkjE6Tt+qSu9TxxAiLrkVVWS47Ss4Ya8hz8T/fYSck4Ghn+p7ecdx+lgQOd6geSYcyKRRHRaUW+XJMBP9DyYOH3oqPjqVP6cmJuXLaZLaFzZvotPuPxv3Or5kenE9BlMNYYvPkmo+9IOa464NCJCgfcZ3pdGTKXznjjDP+GHAmHmec8alBBGsFZ+UwTldLLQu0aE30LtMYT5Gpx7xSE6GGDnorXF9ecv3shovXP2G1drhVJu0j5lFpUmKRel52sL7q8Alcgc5WwmPUUhSGbOhjZjckci70Y5imDnmurze8+vw5F5/d0D6/gYsrSrfGNFeI8WAWKBbE1cK1zdhuhVmuYbWkbBaoH5FFwEkt3jUIJSlpjIQxcX/3iPcdv/qzn/Kzn/8p//5/+d9Yra/ILOr7IjKJPYpJAUogZyjqMesfsfI3/Oy/rmNZ83iLKRZLw2ph6b78DB12EHpisqQsJOcxg+Or0NDvlcf7qan7w8h2eOTr4f+lvOvZjBG7XuBWi2r3KaApUXLi4f47UthR9lvyGEm5I5VMyJFcIobI/TZydxv43XcJ77a8uHBcLCx/8rpjs7RYX1f8c1GsMXTeoCUSt++Q1QK3WmEWG7wYyPeQ95T9Hs2Zi8tLEMvFxtCHRLzdcLsP/Oe3W3737o6//v0Dz1/c8/LVI5+9eMmzq2tirEMGuuUW4z3t5gK8pd+9p8RA2e/r99RHDBYrBqxBXJ2QRlLatsNboUR3KFBzKZRUp1LlnEHq6GGNIykljE/gAr5dYJ2vtqsiCBkxBmNajFEW3YJSGnLTUFK1iRFj/RCDYrC2Tshar5Z43/DyRWTRLdg+9gzDyH43HG6x+W55cttxUlXrcbvT4r0+Xa1k0wSHqclhfiFPrFmn5OPjz/O9fioVHMZnP/FI1XPQw5zeIyGRw3UcC/8TAWN+5aScThOtZsKDUPKcKnJyWAQj9TrNCYkSgNNsIab+EC1g9ax4nHHGHwnOxOOMMz5BmGnhVycFo2aRKcXUomH2Vc/k47CUSbUqWSO0TUPXLWiWF7iFRXxEbItBcBRaSWwaS7M0NFmwBRoptZ7KQi5CVkOUMoUWKkkLjRhcY2kXLav1kmaxxHQd4luwbV0ZNw2K44kFzBiYVsVxDhqHIWKtQKlBgUmFkpUUMikmVDNNY3n96jNef/6aV59/AdKgao7XzWSyn5K+a6+HQdwSg2V19YI0btk9vIGU0JARUVzXoSWgGohz37wVnBPWneCykqR2cqRkkD6T3j8SL28J33xDc7HGXCxrv0MRcs7knNl++EAIPWXsyWFktyvs+8xuiPQhElNiPyTu9mmyDQkET1o6Xm88HQJdDctT6zDG4toW6wyae7Q4MAaxDjEeDYJqRiWDKbjWIdZhrCdHQ5NqkbiTHfuYeLjfE9096j+wWl1yeWkm5aBQ0kiRgm1avCpiHaRIiQmMIlgwFrEeMwUYlkk9sNM5Gc2HYroGYZZD0Qtzra2UnCgSa6+MbxC1x+3KJLlJNRBZa6e+JSFPxbtBsDqP16X+fCE471ExLJYLUi60Xc0c2e/HSU04qg9HZUEnBYLpEWWODHxSTx9qfznwAj2oG/PDMx34/yEdEz5WNI4cRk4azZ+SjtMRxIdgjlOb2EfWrsPng/JyZFd6whjkCeGpTeSnOo+cvGPHj9qw/1TOOeOMMz5VnInHGWd8cqgmIiN6CPo6/Lmfix4ANU9tWHWZEhFD4y2r9ZLlZoPfvMAtLKYb8emOZddSNoJ7FpFLRZLFRMVk0CRohv1WGKPQ3xcymV0q7FUZG2jWnuX1kovPnnHz6gsWV5/RLJ9j7QqDR1IGCdWjLgJY0EiJPTkHkhS0tbDpWKpBSsP+cWTsE/fbRL/L3H7YIsby5Ze/4Edf/pj/8L/+72wur2v2A4oSsFhEHVpKJS2792jYYqTD0KDaUFQY85KSEyYLadhy9/4DWu7ryOKdQ/cN+/cDaR9xo8VE4foukYNyURzFCPliiTXQGKV7/4HyH/8foncUb+kjhAy3Q2EfM9+8vWM3BN4OO/qU+RAzMcEYYCyFbco8RuU+FDZOWFphceW58ZYLsazU0N8FxFmWr5+xvl7x41+9QvKW8vg1VoDgEbGIWHJ4B/keu7hA7IrUrlEMw/jAThP3Hu5aw92yYzCFvbR8sMDDe/z7JVHg9bMLNquW/vE9qHD5+S/oVtek7SPj9o6H734LRCQrGSGo4NoFvlkgrob+yWT3sa4BlJgqARHqeF3X2GrxsUIIiRwCuRTIiVYUY6FIbWkuOUGCSMIYi++WiHN402BKi2kX2BiqGpMipaRDKnprLc4r15cbvHM8vHjGw8OWx11PzplS5vyOOSG93luzbjCTjvl2qxt9VPRrJfiVbExTn8ysKnDY7w+RD57s94QAnTioDlv9gDpyxLz1RwRFPjq+nOR0zK/Qp+RDphG7xcxJ78erMSKTqsSh16MKjlXxK2feccYZfxQ4E48zzvgUofMf9pMRmdMX9eunBQQnz6uAs4Kz9pAkLdaBKdW/7y1tZ8grsLlgC0jQatsfDSUJOdZGduMEsaDWIN7gF5522bBYNzQLj21dHXGKTH6wXFUHDEhhWpdGNaE51rRrEdQ5bNviVVA1hH0ikomxEEJG1NC4llcvX/Lq5Quur5a0rYW4ZY5Cw7SotPW9QiEFNPVgHIhFSq2GSpHaiBwLaYzE/Z6ikaJC6YWyMwz3StoqiwhkcCO4PHWPGAFvMUZprGJzxuwHVIQkhnEsDEF57BPbWNjd7tmNkQ/7nn3OvMtKUojZELTQa6HPlazUw9X+moVzdMbQIkQtoIbGe9qupbtYo6EQB4dQ0NhPU4YEUg0sNMsOadboNOo3qDJqYcAwiiFaS3JCaer1iHdEzezDSMyppqKHcBhmYIyl6TZoStPI21xT66lzkUquFipTah9Kbc8wGJE6cUrztHhuEDE45+v5WsFYMKZQMyLm/05+iKdHSq5hNjXjQxDjMFKm7I/pRHXqeDpMvRKsCN572iaz6DqGsY7yLarTNcx2JXlSrleZ4Ngr8f1a+in5eLrFU6vWrJf8QbtVvajv37+cLjT8MPTp/44vZv6dUa/qD2glxx38gYOcEi0VOSoqzJatI7EyhzPVM+k444w/IpyJxxlnfGqoS5H1c9FphXEiIHJwLtWVZGYiMlk4xFDE0HjBWYOzUpUTAxiLaTzdusPZluWiweYRUwYYgCSErSOF6tuXUWiTpfGGJjdspGFhL7hYeZ5fNWyuHcWO5NyTxh1oRK09pF4XbQFLoaGUTM4DQwrsxcLygpV3tGFHDj3pwRB1z36/ZbuPvH7xnJfPn/Ef/v2/5fJigR/+DgYlK5VE2YbinqH2BttdYtwCyXskPJKLAUnYpoWcyTES+pHH2z2h37N/3NUG52jQW4fee8o/GbgHrKExhq61OCOsbW3cdo3BWsV5RZ2hWMN2gO0AH+4C213km8c925BAFkixjA8DfVZ6TYyq7HJhRNmJIqY2TpdSSFG5aFperZc8awxLDw0gLVzfOBY3LW5zhaYWSqLsbgkf/hErESuRxIJiWrrVT7AXnxHTIyXuuU/KQyi8L457MYTGkk0t+i+ur/ny2RdIUHZh5O7xjhIcEiJGLPuHO5p2xcXzHzEuLnm8+0ActoTth8O555TIOtB6xbuCcbXno3JQrWRTBWsdxjmadgkiFDGISRiXyClRciblgqSEuKqKGLFoKYxprAGWk+Lgna9F8axATEW2GKHkWMnHpLIsuxYjwuXVBVmVbrmg73v2w1DJkLHMA2PLfOPp0SYFs21qtirNiwBzBrgyE6RD4OVh24oD+fiYhDBbomav1vyCU2PTaTV/fHwmAMd/z783jmc7W6WOpON4dk+j2qftnigxOo1EFoqcXIXW7+t8mjKnp1NQkye71RlnnPGp40w8zjjjE8STsZhTYaLHeoLTwuTQ4jEVAwdVpDZmoBqnMVilPu+m5uXOYHJNMKfUQsNYxZiCcYrNgmtr6kK7BiuG7C3d0uFXFlxkLFuG4R5vFO9b7FSoYwTVBhULdKgqqURyHEk5k1UpYlE1lGKIoRDHjLFC1zm+eH3Dq5fPuFwJSz9A/11dRc8KZupt8APqRrSMqF/BuIXQg9nUcT2l9lBojpQcSWEkhUiKULKQcx1/i1UEV4v6DFmUZKrSY7SSvFqM1SIzl0IqQr/PbPdK2BfKADYZfLH1tYAXS2uUhSpSlFEKmToZzIhgpj6BXGA/Zh73iX7wOBXQqcdjP5C3PfHhEdGIyXUqVukTaEJJlAZobC0WVdFULUipFKLCqEpQpUw53SKKc562W5FKoMTIbt9ThkKLwVvHuN+CwmJ5gWla/GKNlkyQ+1rsn5j8hUl1KHXQgchsx5lC/qapU8dauU6wMsZMha2imiklY0pVOLDVvlXVOgtHin1CwuXpx2yXmki7MZV8e+8OH2OwJ4X68VbSwz11WpQf6/vja47bPFFF5n2dFPgy34gqdWHgB2xX8nSm7hO6cEowvndMTgjLQSX6vsIxT/gVjtf5MUX4HmU43a8+3e5jSoSc0q4zzjjjU8eZeJxxxicGkWOwGlr/pGs5liM6FXtm/mNvapFl52JP6jjMkrWGto0PqGugrUoATYOYBts0SOiRlNFsauEoBRWwTnEKi40hL4UXm4ZkLNE3tI3iF8roH/gw3qNv79hJx9IscMbhuzr+FesR4xBbew6SWIaSGWNgKJm9ZtJQyPvC3YeBD7c7lkvHs2cd/9P/8Jd89vyCTfsOHe/o3/7fmJQggKgBdZTmBdo+h9VLaC8o+3s0F8zmeV3NzglNI8RHyvBA3H0ghkhOlqyWJGA2DXaRcfcZkw3pdiDHVBvwrdAZixWhmFo8IkpECGS+exh48ziyyA1Ncdy4FZsW3uZILpmbrmGjjo0mdqXgYmTQgi9M0wMgZKEvyn95s2W/CzTpkucrz9p7nIfH8obw9g6T93Sd42LlyA8D+RZCEEo0NC8b3GWHjntKf0t6/I4YekLODKo85MIuZ3KJ04q14nzDYn3DkHaM455vvv0tcXfPy6srVl2H8lsW60tWz19jugWb51+w9w37x3dzbAbGWYxzWBQpiaIFFcG1NUHcWk+RGvKXcibEWJPLqapqJKwAACAASURBVAMSrNQV9TpqN5AolehNjfFiLe2qrczPWjDmUNwaOBTHagTKRLo55mw441FnWXQti0VHt1wwxngQFKdXnygAoFOax2nBfTov6mAz0hMS8LFl6mC50vlmPT50WEA4tV19TCDmzzM5ebLXk3P/iGJMqxLl+88cVyykvlcq1MWIj+mSHK/i9GwOe/yIXeh0/bPL7Ywzzvj0cSYeZ5zxieF0EtDHf81LOa5gHleAAZ1WfOc8AZQUA3EciP0OZyO0Hkj1daJT9kSNJtciaK6JxFrqBCsVxXjF2NpUmifrRRKIBYYpa0JSz5Ajve7xYlitmtpH0jZ18pKLqBiysaRcyDEyxsQuRMbHnrAbGfYjmpTXn3/O1fUlm5uXdKsWjf+E5j0mBiQmCAXNoAk0AOOAjnuyX0+p2Yak71AzkNTWYz28J2zvifsdMSTimEkCCcFhUHGYziOrFn0YIBUUT1FDmsPaSjnY3OYBpB7D0li8Giw1uFF0inOUSSGabD8WoZtsK0mqtUfn7AOBPmbuhsg2ZJaNY4FgijJuC7lE5OtHQmeRjScOA+NOKVEpEfJDwpYRLndYhX67Z0wjoSihCGNWQoZUTP2ZKkosSkiJkDMxZe4f9vT3DyxcTftu2hacJww7rLH4psU1LcZ5KJlSUh2jOhmJVJWsuRIPLVXRmFSIogVRpWiteOvrgEn1sNZNP8PTzyO1v0CMwdoGRI6N4Ie+DkW0HHoMjsv5OqXAU6dvqdZMHANOwMpsk+Kkgi98XwWYCvFJzjhVGOoU3cl69GS7eb91D5Uc6VMG8ESSeEoPdFZHDkeU46XNas4TUjS9T4djHiSo42HkY/JQj1s50QnpmP99yi0+IiEf/y7SqcsDZpXmjDPO+GPAmXicccYniNPcg0MooMy1wFQ4YJhLNUO155g6YwYpSr/b0jaW/u4dpnQs2wVqhskGpagktCQkJTRYNJrqTkpag94QTFuwCCbXfIUxFlKGFJVxBKdw97BFhkQXA14Ln12tWDae64sFzlukachGiNYSUiGExOM28PZx4PEusn+MpL5gsfzFn/0LfvTVV9y8/oLGjITvfg3jHS5ECBH6SA6JMkbE3IKBpEughfYZaldsb5VER7/PVfWI29rbcfuOGJU+KMkK2RqcX+Ncg2yW1dJz+4CEQqFmSgTNiBYiCTG1Yb++/8LGelpvCMaQMgylUErBonjAIjXvItexrytj8KVgRchA1Lq+bo3wOCbGlLkdEq13XBaHiBAGRe8C9+/e0bWG/dqCA22EEguaFIYe6SKleYu/3HHf39FrZrvo2BVhF5RdhCE7yIrJhT4UHsc9YegJY+Cb7+748N0bHMLVZoXY2uD+7OENbbdisdyQQ49vlqSwJ449ahziatFeEGKOKIpXjxXwUq1UqUQQJWuqisvE4IwYjG0QY0EztXytAZJqDGo9vqt5LSnXkc45F0RLHdmbU32dzsvtdbiBljg1RdcJaM4ojYHGgBfBntw3zMTlxGb1PSXjSe/CUb6YuztOFQ89WLGUMpfjs1h2socZ8wwtleMzR9vXR0fVWXM5tTWdnps5dYL9YdsVT79Qnm5w7Jd/auo6xYHsHHZkOLXCnXHGGZ82zsTjjDM+QeSi5DJXK8fpVnMzLSp15O7kndeiiBRMqbP3Fdj3O5wT3r99Txg7GneBbQZ8ZxFZgTwH6VDTo66gTsHlumqfDEalWu21lpalCGOqpzRGpSk1dNAOYEbFl6mwM4p1BecT1oHxc8aDpVCIMRJkJDLgbaZtlfWLVyzWN7z60U+5fvG6ZpjkiCkZLYmSA8QEQ4KgmN5OK7aFrJlMRMdENonH+IGQLPt9j5aMlUyMI0M/MkTlsS9ka8jWIN5iXGE1DLQpcL1wNNqRR6WkjLNHhclSx4welA0PrhhihCKTCoNAFqRMCpTWcaOGgikFw2QxOnxrlaKK8XXcbDTCKLCj0MAU4CaEYMgZYlaMF2yrGK3fI0EgKXfve2zI3JWe0Shb17BTS5+EIRuCWigFm5QxRPb7HWEYiWFkPw7sh5FhiAxNZLfbA3D37g3L1QZ/7dAScc6ixZKiRUxNjhdrscaSNVMmIqBalQ6dSMEcRmeMYKw5jAKuk6+EnGqfBzJ3alRPUk4B4CTobrIflgwTKTRGAEsxpvYMydEuJVKnYRlTQzmtnVTBg5p4NG89URbmBvCTzzNO9I+jaqUziZi3leO9e+K8ko+K88MZHOr8E/Jzsv2RBnz0lc5N6/MeTyjBib1rfubAb04b2jlpgD/kfPAHecTxXZiUI60H+r42e8YZZ3yqOBOPM874BFFUSaUc/pgLJ70fMmUIFJk3pphaihgLWMgls93eU3Lg9193XG2XdDayWCnuyiPuEuMchQG1I+q3aBmh3YHk2nReBGdqsCBayFHYx4JmgSI0WWgLuB5sgKWV2qvtwHvFtQlXB1ChxuCsx2rCmICVAU/PshG2GH78yz/h5ouf8eOf/TnLzQ3l4T+jMWBKTQMvcazzZ/cFMxhM78glV+WgJCKF5BKJyIeHtwxjZrf9gFLoli1ZC/sQ2Y2F230hG0N2jmwLagcucmRZCjerhrbx9N8OlKSo1ARxK3Wl19g6SUxVMY3gjdBLIVN97kXnNGczETbBolhVrNYwQksNwRNlmval2JWl6TzRGvYC92Q64MIIqsIYDEkh7ArOK20ndN7SOupMXgO7b3eU+57Htic2wq5b8SiGbTTso2EoHpMTNmWGPrB9fCT2I3EMbPs92/3Arg945/AOUgi8bX/HZnPJulujKeC9Q4snudq/gxiM81jrMTnUUbU6ZWWUMhXFOhGAiXiYmXjUgEnVQk4JLVDH8lqY3uMURqp9qiorVR0plJKn/db3U6wl2ymA0GSOzK4SHWMNzhmsrSSkFD2Qj2NpP6kJB+fWKfmYC/2q2JySjicfJ5arU6FkVjwOIYrTMXVaRDjF0bYkByI0b334fPBb6uF4836Vp0GIB7WUU65xai37fuP7041PT+4pMZpJylNV6IwzzviUcSYeZ5zxieF7q4cnBc7BHw8YLWSVmiidp+LGgHW10LJeGULi/e2WECLeFi4uWpQ17eqGbv0aaRTbKOoe0Dig/h4bA+wDrmSSBnLKtI8BH6u9RbOhJDO5XASv0BjLygsrD94KYgpZA6IFR8SIVBKiBpMdmhyaDevnn1HaZ7z86V+wfvkzbLsgl4CGNzB+C+MbND2gxhIjbN8rOhjohWAsUQxbtQwYpDPgDP7yGU2BbVFiCuxSIU9ZFr0r9E0hZAgBPuwe2Q6BK1utUJvVJTfOkduI2EySMuV3GIqBUhJOwAPGT9PBpsI0p0LKhUAmoAQpRAqjtVXFKIaxKLspy6QIiFMaB0OMhF3hdx8euN9bHsSyNIYXywZvLda5Go1ihWJgyJC0MCSlaEZFaa46jDQEW4i2Wr8Gcs0LKdPPkdbAvpIjOQVCHBnCSEIpxjCETD8mVtFhzcjd+7fkceB6c4URxTqPzQljPYoh53rNkDHWYcxJUV7ZMqbxB8JRcz4sYizGOFRz7SvSqvK56i2s06yMrf0aU6q9EYM1dcKVGCHnSE6pJpYbwdpqjyu5DlZAbFVErME6Q9M4nHdYW+2IpdRU9OOkOA7F9DxB7jBJ7odsRMeGiMME7PrwFEI4fagclY/T18yGryf2q7m414+OepA1DEo5OcHTYb+cEJlZx+DAFPQPXcuTCz1peH+60Ue/lMwTe5b+wNtzxhlnfHo4E48zzvhE8b06RecV0vpImTnINMZGpk5Sj2AVUlYImbv7PWEMWEmEcEHXbcBe0qxeYl2LeIe292gZcP4dGnqk3eFyIOZ70jjQjne4ISMlQTZosmiqx3YKnTEsfM2gcFYxpnr6awNwxBqLczV4zmYHCwvF0L18SXv9UzZf/ZL25mekHCl5B/E9hDcQ3kPsQQwhKfcfDHkUYi+MzjA6+IBjj8WLxWP50bMbGuPgcUccej70O7JAsp5gC4PPDLmwD4lvbne8+XDHVduyaTxfdtdI1+BagzGFpBknNUgxo5iSUKHahZxBHAfSV4ZCItcgRApRMhElijBi2IlhILMtipiarWKs4o2wC4kYEt+4xJ0XdupYWotmw6KFzbra3nwj5FJ7HkxWRDOpRAqZdbF46Yi2EExh1MJYfwSYQsSRolOxXwMdYwyMcSSromIIqTCMiZwq6XoI7ylxZHvznLZp6Lqmqhu2hhSWolMvktBYixFDylOmgzBNt5oSy6cgwVrsm0oYylQ466xCVNXDGFtVjJLrz3zJMNnequ3QkHIkpoTzvsZUGocRS07VGjjfM5V4WJx3OFdDNbMqc+0uE9k5iA/fIx0f3ZdzEX9yfx7UD50fm8jDSS6Hin5PGRCtB3qqgzCpCNOjRx5xso2pasYT1vTx746Powg/tm3JR0/p4RU/FGJ4dGHN/q0n2s0ZZ5zxR4Az8TjjjE8MAtO0H3sYDXpsYJ2sHqpgj3P7gSnZ2dB5h/eWi2WHbxzLZbXOaNqx3xW+/VbZRGEoC5aXnm7VYtxLjFVY3CBNwLhHyD1N/I6F33ETLFIGdstH4pgZS6JDabOyUugUvIIUyHuIQWGoY3l10eN8pFuO00p7j9oF/upzlq//nOWrf4Htrsk5TpkPDSI3CD3EhjxExodIyGvSyxuKa9FmxepixdV6xToaQjZk51ER+l0mDYHbVNiNid/f9bSLjlefP4eHR+7ffsN2G7i7H9nv9qRYeJTIWAr/8cNbrjrPj1tD1yquD3gxXC4WeCMs/KIWWVqIuRBT5CFn9lp4NInRZR41M+bCmxDoc+F9KgxaeEiZNGVqeAOtwKoxLBrh+bMlbev5yReXbJaeFiAXhvtHhjwShoL2kwUPJWkhxUiKiRdffcHli+d89e/+Z66/+oK3j/+Jx/EDH97+mmEYiLHU7JIBSozkPlHWDttsQDI5jsSojCGz62tgX7hssMaAJsIY2O0eKbqiWawQJzQthDDWXBYdyFGwXYc4i/FtnXdkXO3tKDXgzzo7Tbuq07VSirMpCWsFcBgDiE5EZQ6uy+Q4QHHgLGUqymMIhFB7QDzV7iViyB6KLeSS6+hfNxEP56cJWnKSHs5E2o/33mS4Onw+vS+Pd+FpgvfTRYLZ/KRaxwbrwdakB1YxE4NpJtjxNQdycHI0PSEJTyWQ4wWcmLJOjVrz+VXxST965nQ/03t92P/MoPTk0ymJekpaZM52OeOMMz55nInHGWd8gpApYG4uS04Djp8oIXIkH8YYrDE0ztJ4y6p1NK1juTCIZERH4qg8PIC6DdL0iM9Yb3Gmq80ZbgU2IbpESo8zgUY8664nBctVlxjLSB8iLYUGZVGg0Wl8aIE8giQgCNkqmiPeJ4yOqEZyHtD1Gre+obn8gvbmp+SilBRAGurI1Q50gSSLBkPqhVRa8uYZZbVGry5pbm5Y31zTDEKKwqiZlDMffvst/TCyL8ouFe77wNo1tO2KwfTk/cD42LO97xlTpmRlSJlRlX/ab7krjsv1hrUxuFQnIrWdQ52jaRtECykn9kNgHxOPovRS2NtC+P/Ye7MeSbLszu93F1vcw2PLpSpr7a5eOGxRnCFBESNI0EgPAvQJ9F31IAlaAWlG0EAAh92kSHaztszKjNUXW+5yjh6umbtHVjf0nu0H8Ix0d3Mzcw+LiPO/57+IMoowIGw0shPhNmZGUbZaMhbUzE5kYB3UteXFdcvl+YJf/PQFFxctBiWEkW9+uyX0mXE9kiKEUYgoAWEYAuMQOfv5iqvnn/L8T/6KV7/8Jfr9Avv4HXr392TtkSxF+J4UjQmNGVWLdQ3gEYGUlJiUEBKjs2QRshisCCklxnHAVw2Kw1jwVUuKqegtUtEiSV0DvgAO67C+LtdrzKUxtW6aMFhECkVsNk2wdsqtMdNFtG/hFVTIOWAQNNeIGkQoyekpod6jItjKYq3HeYEsZRA4TTysK1OUoi8xhx+g/Q/UoWk/Bh3v99JG5/iLI4XE75NEHE0+zBwAun/iyYGPnKTK86pPIc8TaKIczv+9acYBFsyvKhBjzvU4YIojMDXZFE93nuzvGPjsj3Ys/n+ffXWqU53qj6JOwONUp/rgqiQue2dL00ihtMwkiHmFUUxpL7w1OGt5drFi0VY8u2hoa8v5ylF5w6IpDYbRhowlaoL+jsc3mbTbslveUrVLXFVhquJW1LYV1lY4/4KmOefF5ZJVPXDuHhl2j+webshdR+47TBBIimAJAhIVkxRqR8jC7bajrg0vY01lobUtly+/5Nnnf42rXxJ3A7r9RzTc4psFhkx6+DWyu4X7jn6n/PBwRmdqHnym8TXLqxfI6orcXNJ39wzDljy6kuq93eH6Hdd2oLEDXdjRrDPmd9+j6w1xHdluEzddYocyAjYVAfjzs5bqcsHyy4+5XCz4qLmgrVuuL57hjcVbQxoHQrej3u2Q3Q7pOvwwYtdr4hioQiakzNBYmjGxfuzLeY350OMqIFAZz7Kq+fkXn/P5Zx/xq7/+cy5fXuOuWlQ6/uV3/yfj45r1P79jtxXe3cHdw8D377ZQg9aen/3lX/Bn/9l/zrMvf0l9/jEvPvkVzeqKV6//HRbl5u6OISf6IRKHxLAd0V1AekWDwSTH2Ge67ci4qGlqS0yZyllqV4HxhJiosyC2CMKts1TeQ2UZxkBMEdUVajxVc4Z1FTiHipLTCMbgJuDhLOgE+Oau3XkD6hhDQEIimkesdTgJ5DDQP7zFOY+MO7AeTIUx0NaOyrtpklHW9q31BZAbwIJLZRrifY2zFYc2/P0bHK/0Gw5N98xoUsCqosgcJ8KhdZ+a8T1l631q0/7bTtFbHD1/fHijh2Z/cq2aIZAcbfrj3xrv//8wV9m/S92zqqYZx8zTNIeBzJOdGZ58EBwE709Ah55AyKlO9cdSJ+BxqlN9gFWc8edG5sCgNvNi47RSLICzlspZzhYVq2XD9XlDUxvOWqVySlvJ1DgVYEASYuoJCaxW5EGp2gFbVdi2wVYeZy7xlcFXLd46FrVS0eCzZbBKk3sGEmMey7RCSrMkaoq2xEI2hkENN1FoMFRRaZ1FvOPMn+EWzwtlpt+im9cwvMGfLTBGkeENMm4gKClY+ljT4ekm+9XWNYRcVNbDODKOA/QejQrDgAkDCyKQWEjChZH4sCbsesYh04+ZbRAGB8FA44ro2bU19VlLe3XBcnXG1eUrFs2Cy/NnWFMsV8e+I282VO2a3NY0rccMPdlG3GAwY8RFx1kUsjM03UgEXBRkavUA0DLVqqzl8nzFi2fXvPjkcy4/eYn/aIXRHWnxW8KD4y6v2awVrQzJCHdbR1ZICKvn11x/8gn12TnGL1gsnyOauDh7xjgMXNRb6mTwXhidwqSFMWLxxlO5ZppCTJoNEfJk84spwor5MaXoM7CHCRuqiGSKh1XJ5rC+KlkcCGriRDey07Wr+1X7WbNkCxcIkUSWDHEsEwoSmiJp7IvBgAHjaqwXXFXhXF2mGPbQuRtTnMeMLe5iZgoqtMbtwcleEb0P3Pz9dZgSzHSm9+cVx4SnA1/LHIGO2YDqmMp0uK/zp7A/mnkCAGYUcwRg9Oi89u/6x+fz5NymczLoUabIHiG9t6+nlK3f96Ecv2J/7BPyONWp/ijqBDxOdaoPrpScpwBBnS1J2a8WmymXYE5ObqtCr7paOS5XlmeXSuMVpwMWwcUpmdmU3AevlpiFLIndKGxZ46oK6xzV8pyqaWlVcK3Hm1SsUNXgTUvTLki24aKu2TVLtnVD/7AhmL7Yz4oialFviNc1yYPRGjXQG4tUBlqD4x599zfE3UjuA/nxa8z4wOcfnbFsHaSIFYNefgqVIa4zoYf+ZiDIjh2PfP/d3/D6++/44uULXpyveImwkEz67hvs0HOWBuqQWeJZ94n/+4fX3ITI7/qRt33iTR/L1MjAr37+nE9eXvDVL57z4nrFVz/7BdfnV3z24ic468lSmuPKWOqYaa8jY//AODySug1p7Ng93hCHHZv1mjBEqmXHdhdIGtkGYbls2Y6Ru+1AZSfbYQe1K5Qr4y357FPS+RfYegHpARlqtDNUQ2ZhDC+e1VjTYsncbzMPu8zm8S3/8Ju/5efLj7nUirZ9xmq14i9+9d+y297y04//jjAOjNsdXRd5uB+omyVNewbXH6Ei9LcbTFacGcl5SodXEGPIxhKNIWkRktvJXjhbR3KeiCdKcdjSnFj4Jb5ekDRhTISqR1WKGYIakGIRbK0npZGcA24aG0iOqAgSHDiPa2rUWCQmso6kuKNZrFiunlH7BXV7RgZEhZSGCUiUkMd5vGCmtEAVKcAKQ6bIz63OwGAiMxmBvQOVOVhWM537k3b8iA7G+426lv3AFLg32/Q+1Y7sQwjfG1cYMXvUoJTcl/22ewrUEdw4mrDMPllPBOIKs1rezL9P5sPpDJr2JKrfU8fRhXq01R+EJ6c61ak+0DoBj1Od6gMsVX2vsZhCBCfQYayZepuyau7sFNxnFWcy1hRthYiQZE6XdiQMUSwxQ8glFFAlUTUNzlf4tsWox2osNrESMEYwIhhxGApAcXVDbhpy2yLNACky5IhoaezEGHJtkdoUVyMFFUv2SqiVgZFuvCf1W3LXE3e3MO7Y7QImV1R+ibE1LJ5hsTSXiegiVdchWRg3PXc/3PDtb79mJYZlNmSXQRO63aFDT9ZMCpkkMGTlNkRuQ+J2TKxTphct2Q7esbpccf3iinbR4KuStmGtpzm7wDlPH8K0WqxY4/A4Mi1iRwwJ6yGlFuMydRzAwnKoUZRV68BahklUvXMOZxWDYG0Bk9aYkhboW/BnqK0x1ORokFjoa5Qge7wztI2jTYZWLGHY8XD7lvubt+BauH6Jc5az9iMq26JpJIWRcNHR7wKrRTdReCzeOiyG58+e8/jwyLB+h0iYrj9QU9KwZ1qRTFkPWIdxHlwDLpYpFeyvtTmQD8DYqfmf91Ee3WsKlDl2o+g55g0NirUe64r9rmYh5zjZ4Eo5ijFkSYjInhVUph/2cNI6AWIRRGVq4g+UqKfw4b3V/6OBwKHFnuHDfqsjTta03dFE5zB1OICP/Yhg5j3NW03jkSdmVeb42DpNRGYIovOvh/fOaYYSM0g5OtXpaPMxDhkjh/M4HF7fP4Gn45T3HjrVqU714dcJeJzqVB9iOUFdLg3V/g/9FH5mpzyDebme0lgMYcT3AW/BW0XGWFZ4kyAYRCxRDaMYhghdNDhb4WzNx69esTpb8fGr5yxXS1YXBmdHHG+QOJK3W0yuMPkM6wy1N7hFzcKd0xoY2oZvvrlj0w+M3iBOqZYWbQ2LquQzVFRkSTzmAcmPmJhwXrFL6EbHSEv/kKmd46svf8li+Yzm7EuWfsF//Ocrurtb3v7d3/L2duB3b75l/d33vP3mDS9oWGwT120BXZu3a8Zu5G7TsxPhGxwPOL69POPdY883N1sMsPSGTz655OXLC/71v/4VX3zxMb/7u1/z9T/f49eRVy8+4ic//0vcYokNAYkDfb8GCaj0ZO3IRJLJJUDQWagctq2oLKyuDK52PNvsWAShGh2rxuOtY5zoYZWzVE2Frz3Oe7yv8a7CZkXGTP+QGe+EuxtDH4V7GRhCIiSlqiouzyse3nzL27d3fPfNW9rzZ/zyP/qXXFxd89Fnn1C3l3z20/+y9OEIcezpN4/s1o/sHu7xzuCM4a//OvPFF1/xv/9P/x33794Qk5RgwymVXJMgOZMl43yDa88x1QrfJsTc4/wWIZDiSB778odJA46M9QbUItmDTqnt0zTAVoq3lpwCIqnY7xqo2wWuqqkWF1jfsrweCGPHbndLmiZ2Ng4YawlhIOeIr+oCVCqD4tCUkJyJsSemniF2DGlgzIE0hU8egBBHFKl54nFMYDrOyjieCxzE4E+rjFsOTlPHzlVH+5tth2c+1LSVNQfYcOx1NU85ZQIdTylPgr4HIQ5vbbb7PdKPHG0z61Rmxtp75K4Dlc1Me5s/K3PYzwl8nOpUfxx1Ah6nOtWHVqZY4zo7NTg600Cm53VuIMpffVHIAjFmBmdofMnS0In6lPK8jZIExgwhKSkpWINxYI1QOWgrWNTgzYglQNyWYMFxQ06eHCJYC8aRJZJzphszuyHzw0Pgfj0iZxUWz3NrsN7gveLmhigZUjYkpORPFGYLI+WWkxJyZtsNCCN24ancgubyJZIzq/OKu4ctYbtm6Hq6IfKw3tGamkWjrK2wfuwJQ+R+GxiMoT9rGDEEFUzlWJ0vWVSes8pzddmyah2aM30/sn7Y0a83bI1lV9ekOFC1NbaqgIxED5qx2WK9xYrDOodOzklmDvtTxdRKnTOL1qMm02SIleGs9pgcycHgnMU5e7CPnRk2OSIpkoIQgxKiISRLEEvMjoSQ1SIKYRgZNDPq97jHR9rKc3F1Te2E1dU1Z9fPcb4G77GuQQXGbkRzaWnFwtnZOc+eRSpfo2pIKZNS3k/eVKTcVArWdR6DxeJxvsb5CpWIUSnnHi1ZBowRrC9AwBh7vP4/pZm7MgmQTNaS/wKmBBW6qhxHFd8uERQfl7iqxtgSAqg5gSRUJm7YtKRfXOCK7bFosdZNkvdalaxFjzT9uB0mDTNFaT/AOAYfT7ryI5vbOajvD7XeMxXrAD7mx58ChOMWfh5H8N4EpJzP8T6Oz6ncPUwtjo/zFEQdoMUxaNgHvr9/RsdvbaJ16YENdgBvpzrVqT74OgGPU53qAytDcetZNB7JuaQ656kFUIpTUMwlsVpBxZCc4WEN/QAxWSpnaLzHGMgTDSarFoCSC2XGIngTqU1m6QNndeCi6ll6wYxrNPfE7dfkMJK2Pf0A9xvHtlMetoJvWlzT8OZuw/2643/9v97w+q7n2c9XXH7c8m/8BavWsnClGZTJojVRFbqXCOMoxFHoYiLkjI8ZnyL/+Ot/z7K94md/+pLliwX1Tz7Dx8j5dUS/vufdyP/mJgAAIABJREFUt7/l7e0db3eJ/ndv+X/NPY3POKPEPqGiGDXUywUvP35OkoSsb3h5dcaf/vRTPr2+4MsX13z9+jve3LzjH/72H/jNr3/Lu99+gw49L746Y5W37O5/i7WfUL/4OdrUJW8ijpi6wY4VfnQEA8lbJHcYq0BGUkJcwHvH9fWCehcIYYdtLPa8YW0zNgcWlcdXVaEt2WJVi8nI8EjqHui3gX6X6ULFIJZoGgKZnkA/BvphJBCJarh/e8MwJv7mf/sfaeua/+q//i/49Ge/5NmnL3HVM6guIFuMywzda26+e1csaL1lsTinXZzTtBdgana7ESSzWtUYFKk8mgKqoQiifcWMkly9xcuAGQ2IkIdHwmgZhg3GWparS4xroCrXo5q5cRaqqsHZhsFYTIwYr1hjqNuzElJoHeot7eVzqrNzquUZFsWbEp6Y81iAoCmvK0DGF4oYkSxKzMVlrA+ZIQoxQc520obMbKcifLfzjGKifJk9MWz+qvuf0VmXIWZeHDgmYz39yvtAgRnkPH3mx6CkjEPc9HCRyUx0q/cCCWcJzTz5mCldMy3rABLmScXxNoejHhLQjyDXsSfvDISenOlp4nGqU/2x1Al4nOpUH1wV+os3hValEw8bKCuNgNiiNxBVDBYViKm8tg6K+qL5MNagdmpqbHH78RisgvclyK6y4HTAxA1xWzGmihx3SB4Ztj0hBDbbwLoTXt9mNp1yvxXqOlA1DbfrHZvdyLpPDEmxi5rqrME4g3W20L4U8sTD98ZSWUdtK6yHShTbWJKtqKzgkrCQSGPAkEFGTLyHeI+JW3K/o1/vCF0gBkFbg6ssq5Wn8bC1HTkK2ArfeNQIpigyeLH0/OKTS86rigUBF0a0HyAZDI46CUZh6S0LZzBxgBRwGMQ4xPnSlOaISR7jPMYVC+L5NrePosXDylpwDpwzuCL3wJqj5m2aKMg0UUAFJEAOk+0sJCwZW6YcKMZ4IKIySUMMNM6AB7WCJzE83rC9WXL39W9oLl7QXHxBGEe26w0Pt295XN/hKo/1jmd1Q1XV1FVD7RtCGHAmk2MqFDKVKfE8ozmSUyhUPzEYSuM/yyrQyeFK5vTwcitBe1pS06dVe82GPG1Tks1NEYVMAnGRjEqZXACFhmYUhwIOo1IAmwrGF/AmU0M+u63lrPuckpTLtCNjDrqS6SRna1wzfU9g0t5AATQzuUkLReoYMBwH/B3PQPalPyZbvT+XME+yQX5/G/+HQvoOk5PDDON4f/tL7YApDvoVcwAfTyJCjlBRed/zVOgpyJjpYCfgcapT/XHUCXic6lQfWBkm9yTrkELOPzQ50/9VhaSJpBkVULWMgyEasEYJtWCcxfnJCctMLkrTqvDcivjSq+LzHbK9Z/3192wtDJ0QorLuMrsofL/J/PA48h++XrMdlHUHrXc03pFSIotw30ektrz4/JKXn59RtRXOGWoHKQuDRCyOpfOc+wWX/qxw8luHLAOahTZZXFL09gHnWupKcPoIj/8PPHwHD98w3vzAw/f3bO8C4y7TXtU8e37On//sgquV45vffkvXjyR3jpiKJAO1RF64xJ8+b/lv/tXn/PDmhu+/eU26eUf44Z7luVLVLa3xVLXh84tzXq2WuNBhQ4fXAjzU1+Xzlww5QK4xrsK4CK4CW5FUSTkT4kBKAWsV76CpHGlKDtQp+FG0uJfllEkxTROuhMkdJndIyOQkBHWMaghiEPwUiBcwQO0K4GkvFqi2xEWFRejvv+Nduudv//sdq6uPefnlX7AbhJv7gXd3b3j97luqqqWqapaLM5rLhtXinPOzS7r7B2KXGZ6tqAzoWY3mWITqY4exD5M9q8HISGWFbCcSkBY3tj1alqJNcigiCYl9aVTNBJYN5To3HmwFxqE4RCCmEZWEhBFjDN7XexriTE8TKZQwbPlMc1ayJGJKhJQYxmKf3A3CEJQoxTq4/BwpTI5b84TheA7hTLEN9rj9lGaeG8yTBHm/wTcFXtgj2tLRusG+w//xVGSCLHsdxvGKw0FXMk9BnioxJl2KlunM+8yo45p8KabvwXSs6Xosk5AZXRjMUUrJfEqzy978gj0D7FSnOtUfRZ2Ax6lO9QHWnKmgB7J5+TJbc5piizu7RanYwyr6pA3JCjrpO6wpTZROIKToCey+YQixrLjGHADoO0OMymMn7IJwu8lsB8X5ikVrMM5QW0NlymtTFq4boDE8f1lzde0LRUcA74ACmpwqlVEWvuZicYFNgs1auBwuYZOAZEIOpemxAiZCuEPHe3K35swKXz6/ILeZxVXmZ7/8nFevnvEvPnWcN0KzK2F7yTXYZsni5SeoEULsOK89N69/wBjLpz95BQ6eXVZ4MViBrqkxBi6vVywvVvhFi62rsoo+fR+Kq5PFmOKDeyDkFO2LmW/OYb0roucIwkhImU0f6WMiTqvmxZ7W412FsR5wSIrkEMhJyJkCejCUScBMK/L4iaKFtVTOYYyhMh5QfG2Biv5hTR6E0BdTgcdO2A5b8rAlhYHeVtzf3ZBTxgBNVbNJClnIsYjMRafpQRSsiagbDsR/CcX1jGkF31gwFuubKTfDFnvobkuKI8OwxntfAggnxypbteW9Gw+mgA7IxGGHSERCj7MeVy8ngFKmTdb5vcYjyYhIIsZYjpciOSbCGAhjZAyRkHJ5L/P8wQrGCHVTlWT1qdFOKaMygULJZC1ZONZMSeTvkaj02MVrnmPoPNl4qv44DuAr2x1mHz8mWu1hxX7vT+o42fDo7o8GI+Z4nxPo0Bl8HI446zbm/zwRopv3piJPzuwPjGJOdapTfXB1Ah6nOtUHWDnrpOuAYqU7A4bJztSAowTB6bSCC1NzVHo9UjZ7G1MLxe3Kz6JecMaiahCBflBGowSJpCz0Q0WM8LhVuiC83kYSsFwuWTmHdw4jAjkzDJmQhGdXgj+3fP6ThvPnFYZETgatq70lq0VpjHDRLvjo4iPMsMOMPd4XADJsR1IMPIQO9Qo+obZHh0dk+5r8eMMz3/AXX33Ml2q4F8sv/+pXfPLTT/l8tWGhO57vvmV9l8l+SXv5jK/+k3+FbTzJJX77m9/xf/wP/5af/9mf8Ku//DN+8dNL0vqG4bvXxMctm7QkW8fqk2uWz65pLs/xZ4tpDVmLTbGhAAzrSpOMJatBrcfYCutqnBec92UVeiGEZEi6YRcjN5stMQlJdaL7GCpX0/gF3rVYWzGOA3Hoih1whGyqoiUws0xfShp31SDGoMZQtwu885hlEak7B5bM5t0DOb2j2/0HknGMtkaqBmkWdEkZMtSu4XH1iBFh2S7IoYQCpjGT6lzoSVlJY8bKiFcDzLa2kzJCpomBtRg7AamiyEBCZOg2jMOW3eYd7WLB2dkKW7fYqqGpFnhfk6lQbAFbOdFvHpA0IHFHVS1K8KGx2MZjqgW2aiBHJCfy2JNkZAgjOWbSCGlMDLuOvuvohpEhRtIMO4zinGCdslhV1HVbgKRC3w3EmBi3oWiTspSwR+cnoLhfCTgiTh1oWsWs+EB3er85388xdIY6Zm+ffaBuzfa7cx1POMzhiaOhiNHfhzrgABCmsYgeHLOOpzGzvfD0NiaR/oFe9eR9mBlEPZ3unOpUp/qw6wQ8TnWqD6xEle2YeOwT+0bBCMaYfYCgc3af60EuDlfOzDSKQqUqq81Tw6hK0IxLgk+20FWcwanBMdnjOlBbFY2AcZjacGYUHy3ZKUkhMGkZXLFY1exoqkTOQv2px187/ALEZXCluevC5KCUmUTu0A09d+s7bBwxKcBuA+OI3vXkIbFZR+yi4dw7KmdgHJFupL9PaKhZLDxfPr/iq+eXXH92wercUZ2twNS8+OIVy9WCu3cBT8B4KTSzquaTz17xV//mr3n+8hnXFws294muW7OsgPOGtq4RX2HPLXUrqMkoGWcLJ0jKiKKs1DuPdRXeV+BrZBJvWDs5HU9uSjEmUhJEK3KOjLEEctgKbO1wtccvllTL8xJgl0dytyZ1a1KKZM1kU6YqKhk1dppyeHCFeqTGlAmMsftmOIlMad0LxHqodG+B5qzgUqJOGc2Zu+9/xy0V97cPDF2PdQ7rKlIMpGDJqbhOqbWIMcicM6OKt4ozOl17s4ahaGzQkrORc2QcO4Zux269BVFq5/FTAy0SEPVT1oZhHHbkNDLsHlFJWBWsEWIWjEwt8HR8SYmUImkMpBjIISBJSMkQU2II5TbGQEoRQyovN0y21cr1izOurq94dvWCumoYdoFxDLy7uWMYA9tNV8BMGIvjV4yFEjUvDgD71rvo1HGTS9l+VLavw2vsflo2zyLm5+XJ1u839U+OOoOg/VjiqaPV+9vPp/qHgMIRG+xw6jrRq0oEeoEbc1aJmqNzP9WpTvWh1wl4nOpUH1ipwmZMPPSRmfMNeZ9c7r3De4fzBUAYLbfKWLw1oIUyMgOPJImclRinfbjJxtWW7b0twYIeqDxYp/jK4NXgPCyS0tSmWPEKiLGIseSkSBJytgjC2ecLqhcVbgIe4sqKvo4ZMyVIi0JUYdv32HiD04zVTL69R3Yd1f0AY2bTeWpRqspROzD9QN6N9HcJEWXZej75yQte/ekXJO8R57BnS7DKRz/9jPFywXD/OyCATVhfs6hrFl98wqc//ykmJ2wKZBJhu6b2Dtc0mOtztK4YDNiFAAnVhLUZKBMksRZxTMLykr1hq0hyDrUFAIqhCMZzJoRITBmlIolliEJVG+ra4SqLrz3V8ozq7AJrBNJA6h5I3SNpnzlhyEZRTajxqKlQW2F8WZa21k4TmJlvpyQp14V1LWoTpjIQAyYOuJxxKSE5QAp8//0PrLcjUXyh5nmPt5YUAjEUe10RQa1DjCXNNEAFOwno5760COTNJMwuGoyYAmPf0Xc7tustDsOiqvZ2zpJHcnaIZiQru807YhiI/RoL1L4pwCNlrCh1WW4voYIpkWIgjoEURmQMxTo6GULM9CHSh0K1SjliyWVl3xYqnzrl+qMVn332gj/56l9wsbxg2CWGIfDbr79ls+148+aOoetY39/TDz0hDUgWJE9ZHcZOtKSCaIwp72vu8HVOPd9TJw8ELXNk6/vjFv7o/tET+t7zZg8CdAKeT8ldP0Ie0zfrmBI2P/wUdOheTmLm8z7ic+k0OdmL8k91qlN98HUCHqc61QdWCgzR0AezT1mWaVXR2injw4H1grFl1dSqobLFMWrUTOWFRXZglJQyOWfGMQGFg26nZtWZiDGWRe2ovKFtwXvwdeGs51QmJkFyoXOJxVrBAd4KUhd6VjYZUy0w3rAUS5WgjRFroPIVzhYnqzQIYR25XT/yT48PWFfhrOezi4bLuiGZuxLQN3qSJh5/8xvaJrNyb4n3O1KqCFEY04bd7WvW3464q5fYs0vM1RfYZolbvKUOwqvPX6CuYuECFofkGo1bWN/w7ttbXv/2HW/+6XfcfvcDVy9XLFc1L9TTniVs67A+YFKCHMlpAGyZ8oggOSF5h0pHihviuGEc1sRhxzBsiONIv+uIw8hus2XbC9s+EyVTtxXeTY5i3uK9pW4amrYlDTsGRnaPd4zrB2IM5JwnipViTC6tpkasyRgrk66EAwPGlmmXN25a1i/Cbecb1FjEFIexmAY0J7xkVh5sa9kFIWYlaAARVD1oNWkf3EQxq3B1vW+JnSSMJlIaEMlI7IuN7lmFNQ41hXakkrAG2rbBeYNIJIaOREDrioqMdc2kqQ5YIpUr1713rkx2KBa6YdwRxh5VQ5YwidZjmf6JQZLSD4ldH9lse3a7gTgGJOapgS4r9kOMxBB43G652G5Z1A3PLi9xl44swtWzFSEJ3QBDP/B498B2s+Xu7oHdZsNus2UYBmIIDGMgpUQ/DuScSZMVNsZO34dJs2FmIKDkSRRujgBE2XImYE02vkdSrycY4nhyYWC2Fitam/enMcd6sSOKmDnGHk8hy0HDfhCRzHTPGaCIvK/7ONWpTvUh1wl4nOpUH1ipQsyGMU3AQyHr1IiYw2qqSbNWo6w4VqZQXjKC94ZUNL6Fo56EMUxNs+q0Qmkni13DWDsq5zjLtgAQUYwtwYSalSiyT2h2Ct4IagW1WvJETC7UIWdZqKXNyllOOGOoqgZvPQtb0UngYZtZv+n5x6932PoMWy24+JNnXCxbxGyLbWuwSMps//lr8iLRXqzJGyFlT4pKGDqGx1t27wZa31LXS3CX0D7H1hdUbc/1i3PUGMQGVB1ZBR0GdH3D7T99w9//u3/iu+/vubnZ8PFouHyu+IuRc6OcWQd1mpBXQnIELOTizKQ5ojKiMpBSR4zTLXRlpT4MhGEgDIG+Hxh6YRiVJEJVe7zJeCs4Wz4zX1X4uiaHHs3KuN0w7LZ7x7DS9E8aE/LUyGbsvNQ8N4cToMQYXLHP2je/1tWTPkFIYSCGiJOMF2XhwVSGlAWjmaipNL1qKJkWk8ORcRhbQIwxFmvsZDkMkiHnTJSEsZazpWDNZP9LufasgaYpbmciiZwECNiwAGuo66kJ14ghY22JKbTWTKvwmSyRGIYiIM/TKA1F82S9K6UZDiExjJGuHxmGkRwTmjN2mkhhIOREFwd2Xc+u76l9xWq55GyxwFjD9UdXKA7jzhmHwOP9I48Pa969veXu5oa7mxvWj49lkrPbMY4juk6EIBO9jr14/KCQmOhPc+Ah7KXpc45I+anU6ZEJIhzb7XKgcZkJSOznJj+aeDwFIcfMr6d6kZnCdrThE/BytA2HlHMmiucJe5zqVH8cdQIepzrVB1bWwEUN161BMHvgIVpCAEVnU8/ZP2eCEc5jrUWtQQwMSaZUaCnNGBY1pmgPgEkIANO+vC1cLp8hFvYIORerUpFCKXFGMcZN2oGy+lnVC0wNH11ec3615OOl0kgkff0AKUMD3nvaZU37OGLut2y2iYcAfT8SSDQ/fcnCrujNklGEH94+kqOy2yXOLz2LX14T84htHyEKaVA295FkAs+fRayLIA/YKDizRdmxu30gR0XWBn9xyeqnV6xfr3nzb/+O2zePjF1P8J7x4oKvN+CGkep85HkUXlkHzjPuHlFb0Z6PGFMBNUYUTYIki4jFmQrvapqqxYmQ44gzlnQWcNYSFokxR2LeYS1crFoqFWoylRrSEEASRiPd/S0ikc39hrgbSKk015IDkucE7kSSgHUVbV2RtFwn1ldYa7G+KtSbPGsgYrlKjMEah6XGVYbKOqxEjERSCNikmAqitTS6QKfVeBVXdORa2uDKeeqqmVpdSxxHchJUDGgBjJAZtlussZBgGHqGrsOYTN14rIEsCUeNtZ4wjIQoLBeKc65MAUTpdztkCoN0dUOTA7YqovoZcblpGpJzLpOOMTOGzN3dlvV24PbdA7t+JI6x0NWcIYgwpMR2iOxC4t3dBlfV3D7ccXG2BHqct2SrWNdS1xcsqjOaxQVXzwMff/IZQ79j7DuGriOMI5vtlnEM3N3d0w8DNzfvGMeRx8ctYxhZrzfEGBn64cixboZlMs1DysICe92E7sXq5mg0MU8b5jJHjf+xUoTj7fS9DX5UBwrV7Go108D22SPTwseT31e23E5Tj1Od6o+jTsDjVKf6wMoAjYOFL6nIiiFLAR1JSjBaUi0i36lRMdjSdLpJcG6UrMVVp+R8FEb5obGY3XOK4DiXpVnCtJhucllIzvmQK2An6xqZVkFngXrVOHxreb5YcrlY8lGdqCPsOiGHjPQRWysNkIdAOwTOIlyonRp4wUYwyRKSZUiGh81IGgRLjcGT8ll5r9UatSVsL0SgNyRRxClZR1R7jI2oSYR+JI9CTh34Bu8EGXvW393SPfakkEjGkhvPtk/kLvGwidQVXF8oVZtI44BrR5AI1mKnCZSITrqV4uhjMThbRN/OebzPeO8Q7/HeY21GJGONo60qKsnUaou4OEsRjUsmdoGURsa5Uc5zsKAe3Yp2pBynWM+qTjqP2Z7WTJMKyVOAIjjrMGLAOqwH70wBFFmpXQmaxBsqa1CtSzil5mLXPC3OF/BicfssmAkY54k+pGYf+JfGEWsMmgxpHIkx4B3UtQfNez2CtZaYhZwTqUrTfsoHHUOhmklWvGRMXWElkafP0hhH+TPoiu2vKGMUhpDYdSO7XU+36xnGiOSMuEKxyqKElAgxE6Kw7UbWm45d19EPHcuFoljEm/J9t6bQAttzFsvM+cUKSRHJgTiMpBjZbneMY+D27p6+61mdL+l2HW37jq7rUE0Mg0VyJKUyEdG5sVedHKYm6+n9P0x5KfOkZN6e/fBhHlbY6T/HWvPyevYP7M24jn7f6P7xYyTDHnzMI5LfDyxmQPIj+fqpTnWqD7ROwONUp/rQykDlMrXPWDcJhq1F4DDtUMr0AgNSVkQbrzgHbeuKsxIFWMRUchhy1nmN+HCsOaF5WrGsGsGW1DQUJcm+B8RNzbUAmczldcWzZxUffXzFxdWS5dUZVe1x/RbN4Nw1OQUevtmRfSZfxMKBoeL6smK1qtkFZYjK7e++4Zu//2du7jfs+sjrr3uqquU//eUXXL66YPHZx+TdLePwyJgyjJnlTz/h+ic/YfWTZzTPznHLK0x1hr1+jlSKu7hHQ8ZcXOMuatS9xfhH/EIwnSVR7z+jLowMIfL63pNUOF8tUFfxYgQdIqa/KxMFV5NSIIeePKyRfoNsHpB+R9xsiGMgTFassRsJQ6TfReKQ8FmpPDhnyyqxFEcxyRTh9eaBftgRQ8/2YUMKPZoyiqFuHV4tVbaEmDBDLDkhGPyU+G2Nne6XRjVrnLQguynd3JUYEAvLZc3y7Iyh2zIMSkXFWAtJa7JY3DYSYqIfdwUY5QCaJle1YnYQYiKERBg6cuipbUn4rlyF5sSw3aCqGLUMQ892u6ZdNLRn9UQ/Eny1oG6WNPUS4ypUCkAbxpEwDmx3HTK5cyUMDAM+N3gtmiTvHDkpOSnDmIkp8cPdmu1u4JvX79h1A5vdQBRBrCEbCJrpU2QbRoYkpGx4XO8wKG9uX3O2sqzOP8b4CklMeTda+FnWkklEImojkKnPKhamolk25KxcP39OTomvvnpFGHvu797R9T13d3dstx03N/dsHnc8PGwYx0CIcdJhCcMYyFkIIU0Mt5lAZXnqVbUnSe0Bxt5gS4+QBk+wwzRJejohKcBjPs4EbPaHOpqw6GFvxpjjDMODbOVUpzrVB18n4HGqU32AVbCG4iYOv3GH3GQ4plkZkIxRqKuS1beoDNZBVrNvRkTY0zXsE0741DRYKVxtp5TFbN0Djn1a+tH5qRGa1nB+6bm68lxdVbjGldVrUSQDtkEVxt2WaIVRpQipa4+vKpqmwldCG4Xbhy3rh567h55dn7nvEoulYpZL3NkK3y4h7bC+wreO+gLa63Pa55dUywW2qjCuAANTt+W2aLFe4LzFLQxoh7EjvgHjTXHnomhesgpRMrsh0XSe+20GL/R9wjURjQOqk64jjuTYIeMaGTfk4ZHcd8R+RxwjcYhFAD9ExiERxkSOGU/Jf6itLVSb+bNUJcVAGHvGbksMPWEYySmWVW5rcN5idBKJi2Ine1/Q/ffTmqP8CCjaGwRr8vRYmX7lLBgq6sqRvKFyJQncWYNqCYHZi9X3S+8Tuc/MczIli5DmgL3J8WoGQGIsKUZEMgZbbHlzIoufaEKFpmWsmyyJG4yviOOASp7E2akItLOAsxiZwLMTrJRwSrFABlVhjJkxJLbdwGbXsel6+j4QUipnb4v2IamSJBNznihPhhAyfT+y7XZs+y1JniFqp/yZKYmdQ3dd8i4mvY0twM9XBusMzjWoVLR1JMWKykeGoaVtLNttR1N5HtqWynv6fmAMIyEU8GG3hhhTochN56Y8+cH/gw3+nHY+Q4UnJKmJpWWmn3ejx/ONeZZyHHSoPzrOYb8HcDIDDkF/zytOdapTfYh1Ah6nOtUHWLaqMb4hz3/Mc5qeOfxxL71h0WZYB8vGUlWWdlGoIRlTxLdjsaAtjSmTUHeyO52BCaBGi0tS4RKBzhJXUxpYwFAEwt7D1bXn8y+XtGkL9w9I/TFiWoZ1QELG+JpUKduQGZPQD456VXH28qKED6aMaERM4NXLhuuLmjwobhjZGOGsMnz5meWj5xETfoDc4dtzXr684ouXr2DVYM7A+J40Rqqlor5C8xliA3z+Ed5kFh8tsKmH9fdUdsflpxVvg6DvlBADuy4iVrCt5YdN4nbX85uvd1ycL9lWz/nk1chfLBucETQP5NgTw47YdYS+Y/ewZewGNuuBcUxsBssQlNevd4QxEboRh+FZ3VJVFW3dsh467scRb0Cc4/H+jrZxDP2aFAd26w2QWZ41OOeoW0cWi0Q3XQvFJUqTUDUt1rui7ibhphRxo6Hcr6TQoaJy/9jzzfcPXF6d8+zZSC0Br5H1Q6LvIo/9yJiEdT8gKIvWloR073DOTMcVYkqlWXVTaKLNOO9xFlQDKolh6EgxljBMyVSVxzhDyKEkl1c1eI8aW7JJjCVJJuXIGEdCCuXydA7na5yrwdQINVkrSI4sJasjZeHd/SPb3cA/f/ua7a7j7n5bBN64Mh10lqiJIY0MKTLGiIjD4Ri7hMbMt29u8LXjq89fUdc1tbU4oyWd3XqsSVTW4qolYYiM48B6eCSFDkRRKdMXVDF5BARvE2cLoW1a5EXLl5+9YBwyQ5cYx4EQAtttxzAGXr95V4TuXSTFTNcPDGPg9uaBnOX/t7U/goh7GFHwiB422H894l29t2PzHm3r+JeO2QOYwtHSIzrnqU51qg+/TsDjVKf64Gpu9i26byOm2q9Al9ZiXpi2U1jZvCK934uZQwXNnl4xb2vnFzOvQJv9kqgKe5Ay2SKVDBELftJ2eDcJ0mNEhrE4RmGI24TEolCPWYiq5CngzjqPqyrQIka2KWGsY2kdTQXXl0ugIqSBs1XLqkm0bkQDJYMCR1W3LC5WSA3iFTRCimju0NyWd+5q3OoMYxKNvpYtAAAgAElEQVTWKyZncj+iKWIqg6stVWMxrqyWz5/oGJWA0O8CIVtev3nAojx8coZ3gskdkkZy6Bn7gdAP7NYdYxfYbUbGkNkNln5U1ttADAlCpnGOZunx1uEAzUqIGVMLlgKAhmFgHAZyHIkxFWMAwxPV7hzaZ2bODGCNlOZ4Ao3eTYYBKaOakZSJCXZd5v5x4Oa+Y0zFNe3cCwsrDEMiRGUYIsM0OcAoy7YI1a21e6BaaHtyuEYMhzA5Jhe1aRqScto3zL6ucN4VyiBllVykTEyMJKzYcj+XCUoWPUz1rEOtKz8TapCskyBb6cfIGBKP665MOrY9XT+WSYdAcQQrK/SiSpRMykJOcxaJJaVyBWy2PetNR4iZnEvAozUWNKE5ILafJhwOo4KZxPsxFGtilZIroqJFuG8UN/2Vdhac9VTeU1cVi9YQQ0OKibatGYaRFAPLRcPqLBFjZr3Zst31PNyvy2RsMoN4KsmYZehHQOP3fOUP3H+q+JgFIvPvl/e3PvzOOeZwzbbfpzrVqT78OgGPU53qgyslxdJkGDsDhfmvfGk8iyNOsTctgl5IoViKSh4x1qBmEpBL6boKzeqocUCn+wbnXUkkt+VxkdIsNloAjDWCt0rjBF95qqpBo6W7H3F3PXbbk7pbcqyJKSOqDCqMITE4pVpUvHp2RXPesHy5mALxQMeIhojPCavK9avPSOrptzucTbxqb6kD5M4gyeJCjRGHUGE04HMA6UADuvk1KZxDe4GpV6yWX0DYIm//nrR+pP/2kWGXCcHQLitefWG40ZEqZGRnCMEg1mKwZCzbbuB/+Z//PS+uF+xuvmXVwkWbMBmIMIZMGDP9EIkxMQzl+7buMmPM/PAYUFEW1lItHBdnC2IWdmPgsRu5Ww9c147aeMaxZ7ctk5MUIzEKzhVzATEl/DHnTB4iJkdqJ6gz4MDbiDNSAKE1VItynYxpYBwib29H7tYjv/76kcfNyNubHcbdYf3/x96bPEeSJGt+P1Uzc/dYsORSS1f19taZ4XrlhUf+9xQhZUQ4jxxSZnqrrqrMRCaA2NzdzFR5MA8A2W/mxgMlK1QEDWQjwiMQ4eGln+q3KL++7fn6umM7JFJUDqfCmAtjtmYcEAN9Co0eFyPuQslGLs25K0rbhok4tUwUN06HA3keGecGOswzqeu4fvUGF8fcKF7J00h2I+aRlc3E2DFNIznnFrqYjexn+941ISSEjlogl7lpTHLh3d0jD7sjP72/Z38Y2Z9GSjVcG6COoU3mTWA2YzdlTmNlHB3O4IH2WfvTDx+pBp8eR9arK263VyRNSDlQ7cDp8IEQV8RuCzXTAVN1yEYeHynlxDztW66IGSJCSroEdyqqPSmuSXHNalgjskEkcHNcMU8zr1+vKaWAREquvPv5E+/ef+Tjh08cT+3caAOCJ6LkS/zRROYvSE+f70ef6VK+bDSeCVlPV4QXR/UnC9+XtMDz4z9Zezu4hZfjkUtd6lJfcF2Ax6Uu9YWVA8WcXJdkY2lZHedG4Mlm88VM0mnCc3Go1loAX5hUbudpqLzoRF7MJ58wzcuxpSyP1Zq3oEoMTpeUECMxJiBQi6IE0EQppYGfRVFgohAC3WYgpUjsAyG1vydGJcbYRLW0vy8A11cJTz3bVx0qxjBkJGfsfkeZjWmf0evMYAWtEypH6rxvydd6j9dGPRKPMJ9gPFF3J8qhuUTlbMzWGq+YlNUqsd32HEqlmLcXESPG9gJOc+ZwmHj3fsdprfg1RBeiK/NszNnIFWYTSoVszfHKDGLQFp6nAVGhegsQHEsm10p10BBIXcLdySVjyxpBzyDQl/dveW7iRqAiYlQ3rBTisKEfEuvVipQiYaXgxqyZw27EfjoxjYXH3cjh2PQnUoFSmXOglIBqR0qR9bojloAfZ2QJpAzL+/+Ujs3irmWlcftrBi9UK00cTlMvx35Aa6E6hJQaHWxZqpk1ClY7XnO0AqGUQi6VXNv5b4R2fknAXCnVW1ZIzuyPI/vjiQ+fdjwum4pxyuTiLwTTz8/Z8OdtjbcPS1RfNjaKBMFqYZ6mlr0yTovOwqhlfDJoAFCNWM1YLbgVcMMsYzVT69ycqxbKG0tejru24E+JqESCpidTBw3tfOz7SIyCaqQs5+fQJ2LQJUDRX2w7Xgg3npr+8+7uv7bZeFZz+Ge3kxfXh2cK1jOEkadLBIvd79PO1Xlye7vUpS715dcFeFzqUl9YucOxOPvZ0XDWZbR2fjGcIp4tU5fh51muYWe0Yc9Ywvy5KzBoixJ4EhCrQrGy/Ps8zXx2vlGFXgMpKqtVEwOHNCASyEXpV1ekfsXu8MA0H+m6W1Q7YoioCK9f3SLSRM5EqDnT9x2rqy2708icJ2I1ROD2tZNuIuHt9xBXWF1THu45/Pv/lePxyLs/PvA6Dmx/e0DiR2L4yHT/wHQcmbeGD7e83SRSl5j/8ifq4cD083vyNDKeZg6js5thQpEu8PbtNXF9hcZH+oeR46FlUsQh4ijTCKcC//Kf7rm9Skzfrdl0gesBKkpVoaaABagLcAjJ6FV4pRGclkER4GE8MObCw3HkmJt6Z1ivuH11i4lznE4kXUBe17dm1RQry2zaC0knRAyhchxbWvbrb6559avXfPe7X7O93uAx4zVT3n3g7scH/u9/ec/pcOLjpwN5CZ1UWUIng5K6wNXVwPXVwFfdlurOjz89UEplpdLe+9R0Hv7ck1LmkXk+oV4BI88nqpWWBTN03K6vcCpTfmx0rSiEmEjdQM4T8zy25yGQS2YuheMizN+dKqVA0AHRCBoxh3nM7PZH7j7t+OHdHX99d8f+ODLNmRhTsxgOCdWI2BI6aIIpzF6YrZBrBXG6DlY99J0QUiJEJWomTwfuPnxgiMr3b98iXql+bPRHCc1kwCs5N2pUKSeQCbcJqxMln6glM9cMQC6Nqpa6QAwFdyilMM9ty6MhtSmBOik1Z7oQnKDO0AtDL6ROifNCvRShOdP50/XirMlgoZ8t8OjpvTpvI+QlJFl+PNO0PidXnamXL7YYfgad8sz4PB/OnvXvl7rUpb7sugCPS13qC6tGy4AQX2o72pTWcHChuuJiuBjnBkNFWw9QWjdwbgTsaXNBm2LWxQ4TmluWLw3amcIlL6aq0hpnU8f0hXAWYx6Fw15YXa0IKyEMR8LSULs7GmJ7HBVElBgEjYrGgIaWwRC6jrTqifOJ4AUbD1iE8EqQ1CGba9SV+NXXBH8kfMjI4LgfcB8xL7gJbhEthueZ+vEdEoR8f0c9jkxjpczOnIVchXJWzij0feBKle0qMI7K6Qj1xSS40jIqPh4K2SH1E6+2iRAUN8eqka0lvFfaa6RdRGqblOMQRNpkfRH1O0JKiW3sWA89Q9cRcaQWvJ4bOENVsBDRpKTQoaEjxYSaIVZAA9WFqAFBm3ag6yCAByFs1mxfOb//x2/prrZ8KsI4Fg7HJYywVlJSTrnycJgpJmyuY0tDt4KYETV9vu2wliToVqllpuSZFJpTmrvhbo0SFSIhDe329cRzl0qjClrLIpHQhOW+TNCLCcVYBOHtOyYLna2y28/cPx746f09dw87HvfTogVRRPTsPE1QJ8VmWxx7gSgMvTJUZXXdNethFVZ9oO+Uru+IMbLuI+u+Y9VHxCuHwwNzF0AzIXb0/WrJDjHcK9Vmqk2UOlLKRClTywtp4SqN7rikx5sJJoZZxSUvgmxDrRBCarkk+mIBKc/fRf82R+PlekE+S0F/saR4seN4XmbIi/t9Xs/w4+mt+pvbygtDiqcNyBN161KXutQvoS7A41KX+gKr72E1gFVr1J1caRabLJPXJjAWBU8Bd23zSltcZlhYQyxAYuGYPzG6xVE5N2utkYJzWN2ze44JmArBHSwwIkvGSGZnzngSbm9v6F5v6T/uoRamvWFuxHWCEHAqIUJadWgQNCgxdYhEuvUaiUI8jMg8kT+9p+72hNt/RkNCvnqLbq4ZZKa++pnVfCTdOG4fMJ+oXnA6hJ5YBZkm8h/+T3KdmD+dKEU45DWlwjglptrE40XAxdluE1vpuH88UErm7qGJj60mHBgdcjH2x0z/mPnwmPn1N2vi0EHNiBXMWtNsOEToux5xITIi7vSxNeYByNUQlM1mxe12zevba65WK+p8xOYJr+21M6+oCp30CB3DzZrVuufmdot6JVih/7hHdU8KHRSIGuli1xpUDZSbW7rVlv/5f7nm092OX//+L3z6eODHHz61cL3jibv9xP1x5jDtSXri179aM/RKnk6oO13o6UJARHF3asmNkVedPB3b7foeTQnzRmXqYkfoekJ/1ehX8xF8iT5fKFq1zOR5gq5DNGA0KtVcK1N1jB4XqARyMeb9icf9iT//9Y73d4/86cePVG8AcrvpGYahAVsVYjRicDarQEzKsBVCH+iuE7FfMaxvWA0dm3XfgEcKrFdrUkrLzL9lowQK7z/8QEyBbpPYrG+5utngJi2s0DPVRua8J+cj47Rjnsanzdcz5ckXOpkgUttWyA23GdUR1cBquCLEBhpZXmtb6GFndlOTeb3YVjyVPUPlF3wnccflGbA8gY8FgbThwgv5uIPI+Vgsm5UX25JFD8YypGh5Pst3uZjpXupSv5S6AI9LXeoLrJydeQbOhra6aC7Un6xwz1uM889t6mlLkrUvGR7LFHOxvTz3K+1+zTLXDTTYM12jrT8+Z1nImWZB49i7kbYr0s014WaL3qwJQ4fGQJ0rZTbm+XEZPztpSHTdZkmMnkEjKSWCFAiGa8Slp+aW4F12dwRx5PoKV0GGgf56w6tvt0QbsfsdtonoenjKJTi8O5DninJEvODFMReyNm6+ZbAqUBT15szVpBOVlALD0EEIFCq1tHZuNqO4URVmmjXw3W7mTz8fuBqU6yHgtT3nc+dVQn3S5kQV1kMEb0GBjjEWQWdDj5nNfqQLipYTapkuJWKMXH/1hpgCqcukLrG93dIPK9ZX13g+4dMj1zcrulVH7ANRRurPf+D0mNAhIimgmxtQ0DWsSuTXv9ryahO57SPjPHMcJ376eOTu4cSn9ydOx8x4yHhWrC4AceiIQ1q2VIpK00iU0sLzQjg3otYyORBi7FHtWs6GCSF0iFdUDTdjHifynCklE0LEA9TlfC1VyEXIhUa52h+ZpsL9w579YeTnD/ecxoyo0sX2Hg6rSN8Fuj4Qg7BeB1Kn3NwM9EPk5vWabujY3FyRuhWr1S1919H3PVFY3NpC01BYsypWOWsvWlbHPBcE5dOnD6gGVFv6ekoJqwOCM4YDKgWTiuCYt3NC0ectgTUnr7bBFHwB+qXmNgTQZZvmgtqyDUKXPJ3nrYbwnLPz4lP69PtzyRm1PO8ynniZn+s7Xnx70o0soOMpKfB5a3VWiehyG/l8HXOpS13qC64L8LjUpb6wcodxgtMIKQVUICnLlsKb3kMaJFnYUK23sNbY2kKZqvU8a223qfXZIeus3zCDYEZwCEGa2JXzAV88J5Z8ADMqhhVjPXR0X70lvr0mvBmI654YE+U0Mh0q03xqjU0KrG/WXL3aUr1yLGOjuQxKkJkQC3PoKCpQjpgb+dOPWN4TNj0ybNCrVwx+xfq3t8zv3nH64z3qr7Fug5ijZjz++Y79p0Ojk6jQbROaBNbL1mgS3BypTbybQmSulVoyXRdZb3oIkUKl5EZRm62Joy0Is0GejHI/sp8yv/96yyr1kJvTVHvZhOKtAe8VUhA264SbcBrBxDjmgJlheaJTRUthzURHYX1zzXo18Lvf/4Zhk6j1DgmBtLml69ZsN68ppzsme+D19YY0rKi7B+rpQP3TH9iVifTmhrDZMPz+v0W6hGycTYz8vd9QT1vmr2+YamGshT//+MhP7/f878cfOD2cOD5OzFFJnRBTJG570mYgpkSMoQEPz9Q8EnC62IBxtdrcp1SIcUBjx6nIAjx6BEMxSjkxHk/kMlFrpsaeYC11u5gzF2EuyjhVTmPhhx/veTyc+ONf7zhNM7v9kb6LbIbEaogMQ6TrAykpq01H1wWubjuGIfD22xXrTc9333/NarXh1c3XdGnNur8hhJ4QGtAtuVDzhJVCtQPuhYYVjGwnqmfm8cg0z4yj0XUDw7BhtVox9AO4EyQQw46iGdUMZhR7VlaAtBBPaUL6s/DdTTAKufSAtkwWTYBiXpq2ZRkamJ1pjrDEmr/AGQvo+C/1/+ZP4OPMtzxfN4CnIMDPtB+fffJf3nd5XFkE5Zwz1S/g41KX+qXUBXhc6lJfWJnD48n5dHRCqKg4SRvoCOHMYReiNEpIXCx3g54zFVgC05ZEYrf2+9A2JW2y2+ySzGqzN60LnWNBHrJM7AMty8MMUoDgoT1BK1gtqGQkPyDHR3Q+EMqEqqEKvmQhlJNRyxG6O6QDWcHohVCOiFQEg9qDd2icES/Uadd48B/fEVZbUlAYH/F5jwane3VFdeH08cDjTyPHTzN/+fOR3eNMxQhReP11IHRAHnFzyljbBsQCWQtZrG033Ag1M0jl7bZDEd4/NHekINoay2XaLNryVbIJj5Pz/mDcpI5V19FpmwBXGrVquxb6KKw3gZJpTas6171T1alqkCeOu8r2KrJaDbz5asv17Zq3XyfSEDg+RGp1yqFZtLJSlAOdzi0D5XQg+UyKhRqVaoHD3R57mOj4A9p3xBWtX5yEWoQsME4Tp/2evDvip5F1Eq633VPGSwv4i6QhEoeAxtadWp2pZabOY9vCqeBSQbSlj2tgnmeYM1NuzlvVjghOdmeeRw6HE3jTAkls+ovdqXCanZ/vTuxPmR/fPXI4Tvz154+MU+ZwOuFudL3Sd0LXC2nQlmK/TnS9stoq3aC8+mrFdjvwd3/3azabDW/efE0IiRT6tj/MMxCQ0ONUTArjfE+e95S8wz2jsQUaoglE6HSDSEJqoMyVQz1Qysw8xyW/oyAYISh4wlSpi0NZCImzDsMMipenbJTlw4pXx1WIoSfGgWpQasEl0f4zfw79XDYx2nQjtNPzMwbWZ5qOF//bHKj8iWr15Iy7bDjkX9Gl/Ol+nwnOn6hXz/L1qMIFdlzqUr+MugCPS13qCyt32E/Ow8kW1x8nqBHUiaE5JAVVhqB06qQo7Xc02ojoQn85Nwj+3KyoKkEFF8NMqLUu9I+l6ZDQJpfLZiSKt9u7YwESDtY2HlYLIgXJR2TMhPmAlvzUvHoxanam0Zmnwkhh2CY2bwfmUpCpPHHXU5eIoYcQECo273Eb8U/vYZ7Q9QrmHWU+oMFJN1vyQ+b0cOTjXx+5/+nITz8WHveV2XOz7R1WpAHIpVmiTgYeEIQJY4RG85JKqJWByuttQkW532UKLefEBRRbNimtb5ursJ8gHiqr255tinTBieLMtaDqbDbKkJTVJjCPjkolBeeqh4JTxJEyMc4Zub6m73tevVnz6s2a2zdNn2CnwDwWpuOBKhmvivqBoHNreOdC0pYqnlURAsdPj8zmJBPC0LF+1SOScNZUixRNjPPM6eGRfJhgzAxJuNokpqni7oQQCCkSh0jsAhIa8Kg1Y2WmlgkNAUWpCC5K6laEmJinmVpbCKF5xRgXbYEwTSOH49SctaIutr7C7pDZnTLvPu552E38xz++Z7c/8e7uETMjxeY+tV0r3Rl49EoaIt060q0i/TUMg3D7ZuDm+orf/u63bNfXbDdf4wZ5Gql5po4H0NQ0EBhGYSoPjONHynyPWyakiIRE6l4TtCOlNbjippRqFGZKGZnnZjOtS6BjS3dPiCmh5rYZCM0u2WujmmU7364ZN5xBgJsQtSfFAS8gMuNEXOKT3kLhiWr5pMPyZ9DwBDrkTMc671zOAOSsBeHpd8u645l+df73+dZyBhXy4kjt3+35BBbG3aUudalfQF2Ax6Uu9YWVCKTodMnaZuJJWwG20KVUpXHjo1PqORV5aUCWRGtfnHAaaJHWoKqTVFFp+QgpBHCjxjNZowmlcfu8zXDDTcnLc6gF7u/38Nef+eZ6C1cdxQPFlhRjAe1DA0kIRZzDISN9x23akLpK11WgAAUjM1ejs8Z9twyiFZF76vGIHQ54PlEPdyxdK/mxUB8LdixYdiRA7LWJm4PiuVGAythex1qanqN6pQalxkBIjkZIqsQkfHsTuFo5h7HyeMq8ezjhIk3/4WC+6BTyzIeHysf9Cbct0/XAb1539L2SMkRVXr++YdUJq64yhsw+FobbxDdfvWVzteLqesvdhwce7vfglcPxwP5Th9iE/YeMu/Pzn++xYiRV+lVk+njXxOWe2+YhZ46lhdiNh0yZDSmGhsh26OhZsw1vkdRTuxWpWzOsbrH+R045cffXP/Off/jA/a4wTkaQdq7E4HQR+tjTpYEurRFRavElkbyJ34MoLhGXwDxnmDIfPrwjz615byegUd2Zc0szn3Mlpo4kPY+PmVP+xB9/eODjw5Efft6zP8487EdKraTU7IVXnRAT9CvoeiWuI3E1EFYrZHDoYHWlXF0lfv2b73h985o319+RYk+ZWqjfw8Ofl23Nieubb7kdfoOVE2UaKfMDpTySOkEkNZqgz4QwIBjia4IGYrfCEIoItc6UPDFPhwaSS6NYuS1CfFuc6Oy0AAd50mq4BxyWRHhtwNgyp/FILoaTqKUuAN8QXz73oSXI69llbNlUNCrXOZ3jvPF4kWi+LDoa2HoJEfxZJ3LWdfj5mCxXg5f3WYYKT+ClHVPsIi2/1KV+KXUBHpe61BdYMTopOBV7moa2TI7m1K8C6q0pwBVXqEKjwzzxvQVRJyYIBh6M6C1p+JxyLbzYkAjU8xTU/JmCQUMSZ555NSgGx9OE3j8yTwPuK8yVyjObQ1JomhFTvFambBQTQuyJ0UjJcG/T8DkXzArBARckAxjoAcYT+fGA1xmbDngMSNdRD5V6rIsgvW10YoKuaxsA6vm5Ns2LVShuzGfeGE3TgjbLW1HlepXoEtxsOhz48Nh0KiHFdoziZHNqLZzmwmxwu0n0XeBXJCQqoTZtx3YzsOqULh6hCF2o9Kuem1db3r695Ztv3vDHHn4MmbuPR8Zp5nQYCWItI6IYP/7xAXG4XnXMg+BTa8RDEErO1DxzNxm72TieKrU4NzHRdYE0J0LuUb1BUo8Na8LmmuHV15yOFfmw41D/yvv7kXFycnHWXaPxBfVFrxGJsSOGruVP1NL0Mm7NdUloQFBCC4PMhceHe+ZpZFiv0aBIUoo5x7k2wbmDRwUS98cjn3YTf/r5E+/v9vz4/sBpzJi3w25XgRSUoRdCgtQ5oVNiHwl9RPuEdBWS0a0D623i9etb3ty+ZT3cogjzacc87Tjsf6SWiVomhlUP/hVeT9QyUusJqyNhGFBVTlNZxPETKgpeUYEuJUwCQRLTxJIyX6h1RLwuoZupNeWLXW5ZEsxV2zl3ttdtVClBJDQtllXyPFFr01vVBXR4tc+NJM7uUvq81fDl9XIXzhjgCXQsgOeZhnXebv4NHesFAHkJPtom5Gw28TIVfSFinYHHJUHwUpf6RdQFeFzqUl9YqcB1D7crwSwsGQAtK6LkZ+eaeNZ9aKNeaWg5BoY+icGRlmRegVwWvYfPzd5VADGQljGhIsQQUFG60EBDkgZQOlWiKn2IEBVWSpSInYTTXnjcQQnSNAixECNo17c0b68IgVfxlptX12yub+mHwmrIMBvMld1hZDoWZhLuwjzOgBNza+Dy2GhbZYJxnDgcd1gVrCoh9ujVitfrBoysNmpVrrU1UCpgjamuBKIENLWvaoU8tvT0FsvnFIeb3gjuHLfKWJx9qcuxjeiOLq9HhzAeZj7kysMGkidCKWgXiA5DgOs1aLbmdtQH+te3DLcb1jeRq5vI6RR4/x72j8bHNDE+VlJa3MiW95ZOKTi7XSb1bfuRuki/jrhHNq5ME9Ti+G6PSqBbb4iba+rwCu17Yr8mdbd03desrys331TefPuBr99/4O79geM+kxRigG6V6Dc9adiQujUh9C2fos6oKH3fU6yyO45srjb0/Zb73TtOhz3zPJLLjJ1AQ6STLcUbPQ2NEHvePU58/MsH/vzjJ376sOPj48RxyrgZIQnbXogB1p0Qg9IPidApaRMIKSBDwqNiGP3gbLbC7377G7796jW/+vof2fRXnE731Dozzp8odd+2YLTsk2KVaTrhXknazvsSEzGsFoBwxK0wT0eKZLwIfX9F6no0bEhxIIgypI5SI9WuOO4fKXlGtH1Guy5iBnOeeSYiBVhcqszbZxpxzGaESi6OSKTvbijFydOeMp8ayCyVZyWFPR3zKUDUGi1Kl+FBo7d5s8iWZ1yw7ENfUKbOuo92wWjaD/9883Feo8h5qgDP4R3nXemlLnWpX0JdgMelLvUFVhegj+CuTzSret5C0JqIsACP5nTVAIvoM0HqbH97duH0pdup1jYlTYhuuDhxAR7u2vQii8C8iRoEXNsXi1YkKphQJ2caK6exQnB0gJAWSlgUKBCSIxqI/Yp+NZD6jtQLsXfEA1Ih1IrMmeqKuTKN7Xml0Br+6VCoRShTYL8zHj7NFJSKsrnuGVZK6toF0YpjVchelmZradDsTFdpVLWg0l7X4hSWJBMxDOgDWBK2vaJijMXJfqa+0UTnIgiKFWOqxjQW5l6JVkkCVEe8hUGKQjFrFsehaSYkWKMPdW30XArMoxG8QjUkCt2qJYandULcEDMkBiQFYtfC79BEL4GclVKcMU/tfew6tOvxOEAckLhCw4CGFbHb0K239OuB1TqRYnvfVQUNEJMSukCICQ1x2Xjx9PdrUKwUci7ggoZILoVxGqmLYYGXgiKoydLst/PZCDwcCz/dHfjx/Z6f3j9yyk4xZ+ga4Og7IUboUjNFSCmgXSD0qZ17USGAqJM6ZbVWbm9ueP3qKzbDDV0ceDx8JJeRWkfMMqKtKRdVnKZXwfyF01vLtGlfCghWCwgUnQg1UW1CQgMdEgIqCdUeM5jChFUQzYAh4ew796iYWPMAACAASURBVHIF8TIUdKErne1u3bA6AYWgA6VALbl91Yrbczb4M/npufmXswBJnnUdz1a3fn74F6QpfzrW09N7fprP4IPnP+G8ST2DGH/acly2HZe61C+lLsDjUpf64sops1FnJ8TWIPcpLANGfwIUZt7sYZd7iZ5/fuZnq0DyBkwCoJ0QgmLn3ARXyiI0rd60AtTKOGUEiIvAOoU24R9SJEQhRch1opizvZ4p3vP3v524/p2Qesg7Y/fxiM5tS6LdwOr2Df26I3QVDRWhEjBUnJVUlML93hmzMuWEAYexYDjZbOHFB8bQMXXCp8eR+93I4Ycjc3G+/mrLZtPx9XVPlwLaRdQNt9oE9qFNyIXFXWgUrDpY2yrIAr4U2KSOTgN6KxzGgpeJXXUep0ZBSlGIDolKMifgnA7GA0Y+zfRJ+e7tyHGOzAYf75w//2ViuHtg9+gcfz3gec3hcMCkMKyU7VWivwms1pHf/P6KzXXPq+9viUMibZttq9faRMbi6AK9XGZcKu4JK8q7PwSmKWBXN4TVFaQtxAFNW0hrqobmqiUFU8eDUNUoUtEhkYbI6nrF+mpFHBIE4XDYtbTznDEr1DphVpHFFriOB8bTjtNpR7WM4y0QTyOHqZ1Xn47waXfgz+9/4u5+z893j5TcMlP6JGyCshqMFJ1hpcSgpBQJIZCGAUmKdKEls0dIPax74/vvXvGrb6/4u+//DV+9+g6qcjru+LT7j1id6NIGx1puTBBCbLSkaT6i0jYQurhMlZoRywhK0PbYqpGUBGfm8fEd/ZDZEMn1QCmHJ7H31fYV4srj/v0T4Km12Vkr7fju2pxwMTAjxBVd3CDaTB3GKVPNyWUmZ+N4OnIcT8zzTC512WIsV4mXaeWALAYIL68jjZ7F01LDnSV74/nfn0OHhjTMG1Sx5QaycDGf7uNgT4J2pzZS6P8nV79LXepS//+uC/C41KW+tDrzw61NmB1p092FenOeZao0etD5PmerTfxMp2h9SFhsL5O0hivGBjK0jfgXELPMPxsxHVu2K/XM5DbDzwFx1jYguRi5VI6Hkd0uQ4S4gf7aUZzxYKBOJwnthG5oeQuizzsZ3BA3gjgxLNyT7FiOVIdsLT29qDyBreJQRJgdJnP2Y+Y4V9KxIwush8CKwGZIremy0pr27G1rcBbG1iZklzNH/tyESdN8IMoqBjw5m6SUugjzA81dDCc4JIe4TIFzgf1YGbNxt5taCro4j7vCaXKQyml34rhzjjuYp9I2UDGQeqFbr+g2Hd3VhnTVkbYDcUjEzQA8OyO5GaWAF6OLbTsQtLkuxSFSUDxGCBEkNoqTpiYEhyXd3jiLkesihm4uTC3DI6SEhAAi1KfHXc5J8zaBd8Nq05rUmjFbmmMR6iJ4PsyFU4ZPu8rdw4l3d3se9kf2h6npSaQBuS4JQ6fECClpE15HbZuD5XvjFbbPQUzC0CtXVxte3b7iav2KdX/LeHiglpFc9phNxJDaZ0G0mTKgCNZyMlgaczlb1J7peS34r4UF6hLq5+QyEeuE2YjVkWqntvVCiP2KECKqEZGw6Fna59cXkYacP5TL8EBFUY2EGNvzyy25vuXwWNPNlPqUzfN0iXiJQM61fPblhSvVy9/JZ7d/3sWcv56f2/neLy13z9eHF8d98Xl59tS61KUu9aXXBXhc6lJfWDlCNSUXYWrCjCaCXvw0Q1BiDETx5UsXwbG2hPJFNFoWECHoIk61RjEKEBZBeqxCV8G0PTLeAuE0aKMJAWLLpN0MKQWVRCCBGKqBw/2JD5oZ/zHCjbJ61dyHVIU6CZt9c5OyeiTaQKJDXfAMlgvkGekgbiLd/aJJeZyZTRjXAQ8CCUoxTuPEOBeOJaODs4kdvla6ubKbRu7HE7vTke164H/47/6J1Xpg6BPzNPHp/R1uGWxCykJRyy1cUOyZvhaAXByvMCDELvL7b67YTZVhM7W/xSsBCC50IRBDIG06Jg386TEzT5lP418ZknAzOEmUIUYGBS0zp3vhnSo5GFkFX61YdR1f/dO/Y311zSc58P448S//4Q7EGbquNcNqzLlwnDKn3ci4m/iH73u+fZ24vTFiFO4+PTDOgdVaSCFSPIIngvTgkVycXJ1cavtehdNYOZwy11c9SKBfbRhWGyR0Sxfe6HkxGrU0CpLXmZJHxuMDJR+hzkSFGnqyCfcn5TAV/vDzjofDzB9/emDKleNUiMG5Wit9FLoIqz62EMC+JXdXlcbsi9Y2MsEaPW3ZNvWd8+q245s3K/7xN//M3//2n/jm9p9Zd1ccH/7CNP1MLTvMM6UkVAMhhmaFW2ZUJyInzCMQCRGSBOZ5xK2S0uI64AHVQAz9AnortZ6Y548gM0Ezh+MD03xiuz6R0oYQezpJ7I/7lsVBozDaYp3L+aPmjkgidSu6bk0ICefEnCvz5E2fMlXGuWL2rMU6g46/pTudv4u0TcczUPnX6osl4eccYr7oN55vKudBhCxJHdZuZ+eVx8vrlTWA+az5uNSlLvUl1wV4XOpSX1gJi7NQ4KkreHKi8bMrjnw2rTRzkOaec/7/auN0LFkgLBx2kKfYL5qWQ1/IQ5c7y0Lh0kbpfpKyPh19+X1Q8CqUafkaheCGhqbtwIQuGlYr2WbEAlYzKtZWMSK4+JOMRKMQ0hKG6NL0GtYE86VCqd5yC1TQKCSFzh1TYc6lTe1DRFPPcPOG9dWGfujRcaTLgpcJz6dmU5orTBnmSrG6TPSXHUDr81rwIkInsIrCzRCo3pK21YXgQkqxiZMFSjWm0r4OpxmryiYEul64vhnYRFgNQuh7sg7MQclRERkIdBx9YJ4DD6Mx58xudwCv9KE5dfW9Ms6F/Thz3E0cdxPXHfQCXVD6TpmnSi7QmRHseRb9rHcJiLfMj2aNtNiwegtIDKGB2BAXrcM55v5l3/xiwF1LadS9alQTxgJTgbvdzO5Uef9wYn+cOZwm6hJcGUTootInoYtCl5QYtVGbwuKOhrcMCXkWUOtyPqcobFYdt9dbrjY3bIdbggTcKnizaG40Klv0T81VSr3ZAJ91D9DcpFSVSKJqbuf6eQ2ynANnHUQLCDRqGUEySMa94Is9ATRwAEqICcfIZW6BngtlqelHFrc6t6aJMWubQIlLsGDFXZ42Hucrw/mtMPf2WX/x/bn8b7HBf6WWGy0HPSePO2eZyPlK8fy+n0Xm+uIQdtaDXepSl/pF1AV4XOpSX1iJwnoDV1dNaM1CWWnOVktDZIqLU9SYc8Wt4gt1xBfudaU1aatO6GJgSP2iYThnERspNCaOqWIi1IVGU6cmvDU/C9p9SbR2hGabqlGISVBbw6SM740DxmZ1aonkwQmxEgNUL0iGOk+Mh8LqqqdfraBG3CJZMxknbANDUq6LchqNh4eJyYSTxoWu0hrhvg/okiguKTBUQ6mUYnzz/a+4ffMVv/kf/yc2NzdI3zGPI+ndO+p4ou4fqXmiTCPj7pHpeORw/8A0jkzjiNV6prqjGnAzdJ7ZiLO9ChQCxQFpqvG0BOz95cOJ/TEzl0Ixwyl0MfLd2yvevlrxT//wuukWRBh1yyjXTGnLlNb03TVRE//b//MDD48/8en+jjwemT/9FfKEjiOroeftm2vGXNhNM/tT5njK+H7m+KsN9jvnehs5HozsSpwmSBOwrHOqI6ZEBqKsSbIhatcoTaEBuWGVWK07uj6RUtvkoLTQyNr0MpUF4KEE7ZimFqa3OznjHPjx0Xk4Ff79H+54PM68fxwRd1Y4Q4TVSohxyeVISheVbkjEGCAETIS5GnWhPzVgbKgL6tasigf47u1r/s3f/Y5fvf01N5tvyPOBqXzEbSSqsOpuca/E1LYWQTuCBkR8EYWfLWudmAY0rQnaU2shlyNgLZndnXmeiSGxXq0pZeJwfA9SQQqqiVW/oetWpDiACAZcccs8T9x/mrDq1MW2OWoEDFdrWpDjp5ZtEgdUNgTpcWZqLRyPI6dxagCo8cEa2Hhyrvp829FmAi+Jli/L//VP8l+46ZmySRs88PmvnmhZT1++WHNfsMelLvWLqAvwuNSlvsBqk90XU80Xg+dWZycrxaI3wepC37ClHdEFLDSXGqeUitJSplkcmlS92X/68gDL7DIGBQU1X5LPl4ms+iJEP1vXwvHklGrc3zt9dPoU6JIiwfEoWBchdoR+AxKpqlQ35nFEcoUqWF20A+J4cDRBqEtDU51pzC1RWZvbk6Rnh63YkhNJsTWYN2++4vbrb+i314TVBgsBMaHfXFE0tMwQF8iGScRcMVGcBvSKK5abnS+LxkFjaBob8eepdQiI6pLqLczZGMdKCkJU5c1N4vW25+u3W16/3vLqm6/a62+OlRVTXdP1r5B03bTGpTXVfQysQ6DEwDoFRCKBlhWyXt6b0CeCO0GcLkVElTk7p8koFnCNSzgd1DqjFnEKeMZtxupMKXPbVtRKispqSAxDou+bCFu0TeQxX0BtcxqTACHGNuU3qFWYCzyenN2p8tOniYdj4eEwc1wArNICCVNom45mUKCkGJ/eN0Qp7lR3ijd3MfdG+5Gn89lJQVkPke16zc32lhQEqydOp/fk+UCpJ5xKDB3mFXf7bNvQtgqxgUoF/LyFaI8i0iylX07+Rdo2KMZItdw0Q1SgEsKKmFak1BNDYi4j1YwQA9EjISZwJ4bYQgg1YrU00GMGFEjn7WQ7D2sxci6M48Q8T096nOY09/JKIY1OKX+DHJx2br68qfsTDfN5h/Pi1y9+OBtZ/G2dH+Yl8DhvoS6441KX+mXUBXhc6lJfWvkiul6Cxxp6aFsHXygRghJDIGpohAg/Tz29TdtfABAzx4tznFueQNt3tAA4tH0lbcynIXZEDfRD36azDuJOKEbFydZC86ZiWDZ8Nj7tHNy53giHnfLqZs3QBTSBB2HWgKYN3dX35Mkoh4l5PHK62xPNiCbtWLlSgKqKrBvoGPbKXAq73Z7qhqvTDR3DdoDYbHE7VZJDHnpcIr/7t/+O19/9mv7112hMzOMEUdjcvmaOHfVUyROUMjPPwjgbxRSTSCGSzTkeJ8yNtF0RQ2C1XiO1Qp4JNBtVSYokIVvTTDzsK58eM5te2Q6R//7vb/jq1Zp//sfvuX71im//4R/I2TkeZmwvHB+F1fY3xOErPvz4B8bHO75eJ94Oa07xBJPQD9dELwzaqFDFHFKEPvEwT+ymiW++WrPe9hwyjPtKoUdDT586UlTyuAcx0qanmmNFmadPnA53zKcdZZrYrDr6GLi53bK9Hki9oupYbU1vrad2NgUlaCDFNaejMc8TUxUOc+BPdyPvHib+5Y9t03EsBQHWUelVuO6cmJSub3qLmAJ919HFRBGoOMc6k90otLY3lEAIoGa4CgFjPfR8/WrLt2/e8t1X3xOpnE4/8v7D/8Hp+JHtdkuMkb7fYFY4nh5xbZmRgqJ0BO2JsUfVqbUB91oBQmuoNTwvA0SQ0ABf6nqK5aXrNpDCMKxZrV7TpWtEEvvTB3KdWa3fEELPsNoiOF2MBAkkjUzjkTzPCBmoqFgzLNCI1ch4mtjvDzw8fGK321Gs0a3OeOA5n5wXawht24qFFxlC+AyQnLci54DRZ23IQmt7vuXzY/jfSDrO1yMWKqK31yGKXTYel7rUL6QuwONSl/rCSmRJjE6R5znikslxDvDyJen4LCg93xeeHHR0UY4G8WWy20aZZz2HNzEHLs0OVrxtHcwNmzNIc3wSAGvWmtXaxF6tnqUepGUrcDoZ94+wOwohKbEPaAhE6SGsIISWH9cpYhFK35p4V6i1pWDbYhUs1sTvndBVZehiy8Gg2fu6GWLNIevsCboaBqQb2Lx6xebmNaHrkRDoXSjzyGk/cto98vD+R44PO/af7jnuHpmOB+bpRC2FqRilVg5jm7yLzcQUKBsl0ATIGkJzfeqU0CkP9yfuDxNjraDC999seb1NvL1dcX21Jq5uoX9F0dcUn7DywPy44/TTA3VbScMj5f0fsf0nzDPuRsgVoRBjo5SZNferKZdGFUrQBedqHYmqzR640LQ/auCVPB+aG1q/wlNsSfdWsGmkTiPzNFHmTM1l2T4EUp9IXQJRXIRaGgQQb4IjWyx9ay6M08xxzLx/mPm4L/xwd+D9YxP/mxndYkI1JKELzakqRF3MEbRlhwRFo1BLZTYjV6Ng2NLgem0A2qpAcFIUVkPH7c0N280VQ9qQ5xMlj7idgBGzRDUjhTWqkRjT0hTb8vkK509KO9fdnjVT3rYYTaexaFxcMJpGRESJMTGs1+TilDJTambOJ8wUiJQy4V7bxlKVLg1N41QKqBC18fhElyGACbU4VQxC03ycxpHT6cRpmpjm+ZneJC93FS+0HOKclVhP9KsFODS9yufXF2iJ477ctbmcPYvRXVh+/+JYL0Q+z1el9vnz88r1Upe61BdfF+BxqUt9aSVC13f0Q/+0yXBrE8pms1mxauTaRL3n+6i0PIIQwpJJ0dQcDb7Ik3+/+dnvvx3P/Mzfb7rcipHnaWnNlGYX2uxt5wqIEbQiJqgrcdURU2S3P5Fn48MnxUPg7bonxESfbjDt2iYjGRFFpUcIxLBGtadIxaNAPoJVjIKr0K0DKw3cnHpybUF+ro5XR9Qa190McdheXdNvb3j1za+4+eZbpF+hIqxTz8kL97tHHt//xI//6V/YfXzk4cMD82kiT5lihYphoaOi7I9tizHbkdRFXntqWRNDZNVFtptIN0RSF7j/6YH//G7HPle0E/6bf/iK796s+GrtdMOGsP0WH95w8u+o5Z583HH6+Y7H//h/0a1/IK42TPc/UMdHqimugXD9VQM4XcCrM41zc7M6ToSqdKHSryLbVUSCUAvk/5e9N/mRJEvS/H4i7+liZu4eGZFZWZVZS2/TzeGFGF7mMOCFvBAE/+k5kCAIEujhDIdd3V1VXd1ZucTqmy2q+hbhQZ6aRRZ5JUBEmSQ8PdzddlM1yCfyLQi1CHEoYAvT8T2lToR+xGIgYkjOWDqQjgfm04F5mkhLZrMZGIaOzXagHwcIkYpQlxkRd8dypJlJy0yaJp73Ew/PM//05sg37yf+4Q+P3O9ntxkWuOk9BX0z+Lag70ITrnsgYN8HQudUtWUunJbEZNW1SdEH+OSKVSGrMXTK0Asvbrd89dMvefniczbDZyynJ6bTB6wcUCZyCZgM9P0NqsI4jM0mN+G6lM4bfqsN0JWLaQMLyCpAV5QB2mVDiECgHzZ0Y+RwrOTjkSWdWijnARBSmpt1r4f6jeMNyzzz9HRP7SpddJOHEAJW1Z/fUqEkQpcopfK8P/D0/Mx+f3SNRzvHaWCFWptV72Vr4edzvbhbmYvodZWCrwsSkfMmZP1M+X8Th9uaet5IXhdYsV6XBjp8Q/tjgfu1rnWtT7WuwONa1/rESoAQ3TJ35XDX6m5O1UCi/xzM6VKluCuONv53bZuOYt6Q19ZWrFoP2tZAmz1pFBf0WjUHBUBfrbGw1obMp7Qa5Eztcr2IEMVdqFIR6mJ898ORaY7sNpFxUIKeMEnYsjif3jyjodt5irbqiNU76KBLCdWKZd+OpCoUgbvbjpSNLvnWI0tFo0/Ll8U1JkM/stne0nUjsRvQjYfuLfs9p8Oepx++Z//6Naf3DyzPJ+pxoc6ZuhR3D6qV2WayCcdUyNVIVkiLYfVA3ymHTaDvhXEMSO8J4q8fZg6L8cuvX/DqduDrlz2vRsEK5KVS9yfS/I7H/YkyHVie3jPt70E8xA9LdLsbus3AMSWWXHl7/4FcL3S72AVKNpalsItCtwoQ1N2+ai64lZgyDErolGruqiX5gOaApidK8ds47d9y2H9gng+kvHDTbxi2PcNmpB9HYugRUeplN+ZNaqmUYkyp8uYx8c0PJ755feD7hwmzwnbw40HFNR3nsMUg9H3w7507ZoUYmEslpcphSUwpk7W5JJlCdZczDbSsD2W36bi7veWLVz9jM95hFjErVJsQdTc1OesTzAG5Bt8qmLljlIfiIGK+UQoRISIESo1guTlV4donawBcHDTV5kYl1rI+xMmLgtOhYnDakZXFjRDiBgrtNfXEdEOIYUNVxWpAwwDakZKbRTw9PfP4tGdZFnIuZw2KNHtbVNDzpuFCozK72O2uv68fJZ77B0zbWrjnLudLn5lb8tFFHaT4cQDniFJz3YsqmHn45o91Jte61rU+1boCj2td6xMsT20OrD76pTjocMHtxxJzd9zJKfnPZu0ydnZnUoRLpphTIrqgRAnNwrTRsqp/oAQTxlVWUlxCu7SpZ1SBGhBbk9Q9AE4FpuI2qt9+d+SwV37x5Q7dCeNw8uYtg+mAhB0yRGQY0bhFwgbkBTIE+vmJoglKICzCXCtDFF7UQMrQzZVUC3MtaFA0KHUplGr0/ZbN9o6u3xC7kbDZujPQw3uO+ycev/2O59evOb27Zzll6tFBh6VCSYWUC6fkm44j7grmPmGVw35PjEq/iYQOYlcpXSQH5cM+c1zgz3/xkr/6+S2/uKmMYtw/C7kadX8klyfmwwdyzqR55nRcQPHNDgvb21u62DEf95TpxPd/+IHjcSJVJfQ9N68+8+n/UqE3XjhXB1Q9lyMb2gtCQIdA7KHWmVoqmvdoEnR+IKXM6TBxfH7D4fkd03wglUTslXHnTmNDAx6OeWdAzkJvK+Z5Kqny+n7mH7458M2HPe/3E7utsh3VgyrFAy5V3fo2RqXvA30Uxk6QEDAN7I+JpymznxfmUtC2AanVQYsGdY2HKn0M3Gw7Pru744tXX7PdvMAsUi1T6gRa0ADng12s6TWia5qaCFv0kt2t0iEa2wYuUmug1kwuU9su+rkk1a+n6oColoJgBA0ursbOR0tU3yjWPBNU6eMLrIoDDxIpT0TpiXFDtYgRERlBOpalcpoSD4/PPD4+MS+JXApdCE0YfwENbsfrcOCS6bF+v2w//ngT8fFPetaQ/dEfWq33p6zJHz7I8PBSzkmleqavXeta1/rU6wo8rnWtT7GsQM2tuVhpDfLRNNJ3GCrCEAK9yDnduK7i8nUC+aMgsdDoVjCbAwVpjlKYocW5350Fz6k4K0K8qQut2VeJBCpBKhozglEiFIscJ0+H/qdvEne3hZ99qe7WJELNM7kcYO5hGIg3EDdrOJ4izb5XVFw8Hipa3FyqGsSWWi215U+YMaiiMRLSDMdnwmmPHp6olqglo4c93fHI5jiTDgvb50y/GOOipOwWxbMIOQRuEHKEo2V33pLiIn2DSiUvmSnD/Ww8UngCXowbbm8Hfv7THb/6aovME1MqTKUClbA8s9lt+Oov/hUatkj3guNU2Z8ywxb6Ebq8IDWzf/7A8XhgDCdOxxmLG/rNhle//BlpPrF/9wYthVAKRZT9CZJBNaHTiGjPYYmEYignYspEvWfJExYKqQrTohyOR6Y5oyGw3W3ox544BOLQE/qeWv0gqcUTNUKoFDNmM75/nPn17x/43bdP/MuHPakWdhtlN7qbWR88ITxoy9wIQlBl6AJdVPpeSRWWbBzmzONxYTGHYD1Nc1DWLUuz7Q3COHZ88eqOVy8+4+7mc6KOpGJOlSI7CJAe1AMDV8m0bwLbsd8OflE3JtDQoaHHSsBMqOauUiEM3ri3LYZYJITOAQUOTKA6daylm6c8U6tnegiCSo+FSgwvCAqb8ZaUT8xzIg43DOPnGBEjkJJbQb+/f+Dx8cDrt+94eHgkJaNWb/TdJtsuWg+7fA6sARt6dq26bD/WLed5E2IX8Xj9+PPhI9zw8dajXbv9Qf1VXe2x2mORq53uta71J1NX4HGta31yZUitUEvTdsBF1LlGdznlSfDUcgnqGRxmlJL9es3zf6VjeFCcYgipOD2p1AtXW8w8e8082Vzx4DyVQkdtoYY+NdYQ6AR6NbAEVIbQkU1ZlkAp8P2bzHGC3Y2w7YWhFyxX6lSwrsNyRxhewFj9WWmjhJn5vxVPzFafngd1zYA0mlE1d+zq2mRc0wLTCTkdkNOBUmasFvR0Ipwm+ikxnDLjsVKzUEogV8jmoKgEI4lSDLZmZIQJt3UtZizF2KfCgnEPvCmVt9X41+MNu92WLz7b8NNXI0/vC6kIGQeOS13YjDd8/uc/p9t+wXD75xwWYz8bu+3MZlhg/wHmI8fHjvnwDM/vmE8zMt4x3t7w5b/6FfPxmXffFg6PJ57e7znOcJygBoEgZImIdLBEVA3lSJcLfdiT64yFRKUn24Z5nllSQVQZxp5uiMQ+ELqOEDvynKm1YA14mDjVb67Gu33iH7898O27I2+eT9xtlM2gbHoHHkPnjXhUb0rDml/RBOUxBtJipFw5LYXDlLDYWE3NAGG1fq2N5BMCDH3ks7sdtzc3bMYX1CLk1MTh1AuNSgNIOJ9N8tH5cg5KbLSlEII/X5evNGJZIKiH/LkDlKLS+1RfrGlDEoj59VUbEMiUumDmwCPLybUjfUalo++3VDNy2YOMdP0LkIhJINUjJU08PR/4cP/A/cMjT0/P5OIwotZmhWu10Z/+eL+gTRB/VmD4a9CmFv6cP9qMfETFOq87Ptp4/JHH1fnn1V744+VIk55c61rX+hOpK/C41rU+uRKSBZLFczPhcGF1qmqNRGPbtF4AaQ49SPUMDl23An6r1aDUSipGVCWG2Botn5qaCJhi5mJlM5hLgSqcaqWPPbK5Y4iBYYj89LPET18k+rIQa+Z+b5xm47unyikZ//T9kfgWfrhXbneBn/2k56YTXo6dZ3QsGXYTujtQ0x6ZjuRDYjlUTilTMsgMkn26atWopTVPH4Gl0OAUx0fScuL3f/s/s7274+WLWzqE/rgwfnjks8d3jGlit9mQirBkYWnOYLNlshlL9lTyqQQKxmSJROFgC1kqRyrPFd7Xyqm9cjcb5dVt4PbFDTeff87LX/0bCCNz8gyObndHv9ty89UXTdNyw61Gthpg/gMsr2H6gC333Oye2XYz9pdbcrkhvvxzkYOL+gAAIABJREFU4nbHzZevWI47bjeZN98/MJ0qh1JZToUk/t4en04Q5qZXgCEWYjAeDoVxFD4zY3ez4+Xnv2IqHzguI0sSas1044DGAQkRNFBsJpfEtD+gqmxub3n3OPG3v33H77574tff3qMUXt0qY4ReK9ESUgQJHUpr6lUYhq6ZHvjmYanK87zw/mnh+ZCZ50pUxwtrJvZZU2I+TR83kbvbDT/7/Ate3r6k77YsJG/0CVjtKMmvM24HQuxRjW1yn1EVNt2IGZQKa46NVXcEE8RpYdr7vUt1ZyrLDdz3AORaHOgIiHaodIQwEjRSKogu1CZWj7ol6OjgK3TcDq9Ae54OR+aiPB0nikVqVd69fcfT8xN//4//xIcP99zfPzEvCyLBn0PbXlRZAUCjjV0UOJ5Nc66LH9X6mbJuRkTqWQJz+dvHnz786Jr+w0Xns1I5268RoGj9se3uta51rU+2rsDjWtf6xMrwKXwyJYqHgCm1tQ4rx7sBj/bdhafWUpl9aOyNnl/HzChtqCnFRaFus6lOn5DgIKRNik1dwF5wK16rHRoGctgSO8WisrlTvvhS2Rboi9DFzP5YeUxCwXj7VKhmzEtgdwM1GC+3wqBKL8aghqUMZUbyjKSZulTK4jqCUgQr4mKLdSJrl6mttGlum2NT00xJiYfv/5nTw4bt55/5RH+C+HRgMx2IpdB3HYvCLDBXIZnRVUhWia0xVZoYucKCMkuGCrNWJoMTl2T4IQrbQRg2I8P2htuv/4w4vqBqh2hP2L5E+w693SCmWAnErkP6nvT4lmJQY0LCRM+CaObFyw6zju7Ll+hmS//ihmGAsNyxf06EvgfNZCBVo4iR5uy0sFoQETadb4iyVcZaCSentcXhBXHIxP5I7Ae6PhBCdNAha6Z9dbvmJbm7VoHnY+b33z3z3bs9758nXm6Vm63Qy0oY8lyH4FCAIKu43PMkVBzUJYM5GYcps6RCKUawi57gzBVqJSJ0nTIOPbe7G8ZxRLVDxGlNvgqI1CpYdb2BSjwLsc0qKoGuiw4yilBroZTidKTaaEoqILE9hHzRhIiiIWK1YtVfY8T1NO5e1flX6P15sN5e7xoSQDTQD1visriIPBulTOQcKEV4f//Ew8MDb9994P7DA6dpppTCMAxnW2x/LvbjF+iiD//ob5eX0V+/80XX37Qdx8cvtJw1Mfzo/zR04Y9hBR2GnMFLOy1/dN/Xuta1Pt26Ao9rXesTq1rhzV749gGsJLDqGguBqK6z6KMStRK1MvSdN3fBMyb0zOl2HtXKCQ+K06MaTxuWs1tOqU5d0jYYvel9EzL3kW644cWXv+L5MPOHHz6wvN8zHR7YbV7x1796yU2t7KzSU5hvlc++vOVUlNf3nqT97n7isBT+9h8WhmjcDIW//HLHf/HzW+TdM+F4IKZEyJl4hDz3lOo6gJKMko20uBYDujaxPUe1N/2Fr38EYX7zA1WE5f1AEKXOEJfKF6dMrsKyEaYMp2TM1Z2zTiWSK5wMcjFiKBQzNiWwN/ihdjxY4pu5kEW4leBZI7VyJ5VtKGxvX7J59TXjF78kbF5QJEDo0eFzn1wHsFrAMsUi5ADjLwnd56i+xG7ekd//n9jpPSGeMCawN1A/w/RzUh04zBvmvMFkQ9WJIpm5OICyzkUVEl00XGIPQThizEk5fSgcWeh2Rx7uH/nw+J7D8Zk5z9yI0mnPfJpI80xJJ6xkYhc5TpVf//oH/un1nv/027csqbALyqjQYwxdR99FNr1rOMY+NlqebzhEodbKNCfmauyTcb9PPB4XUlmbeHdQcwvYpndWt4bu+sjt7cDdix0vP/ucTT+SpiPT8QOH0wfEMpvxBpVMrbPTB0umU23nk/MHU15Q7en7DaVUNLiOJ5dE340OvnQEhHl5AnNtimig63pKLVQKUTpEN1j1DI5qUHIBOkKMDGHj4KdGQCm1QnGnLAAJA9988wO//e03nE7GPFUeHh45HU8c9gdyymiI9LGnH4YzaMMMWx2q7OI4Zaumq5azmHzdTqwXPqe2c/nd+W/C/+O3Zziy3gee8+Pv00dg40c46Mq3uta1/hTqCjyuda1PrAxIBaf95NoAREHxCXKMUFA6MaJWRJ2DH5s7lTTKdj1rRlcylW9AVDk3KEK9CFXN3YgEI4hvQqp2dH1k3N1yWIT9KXE8nHh+fOb5dMtS3VmpE89YCBGk77ihQzvleCrkVLFDpjwXjtmpNS93xtMkbDSxo2IlI8UgO7Wqmjsb5WrUSvtqGpWPFff2sdC1oabsjkMytZyPU0WL0JdAwPUw3qj5xVX8FUqCW+AChUIxoSBMVVwM3TQOQZWNutVsBaK5HkdDT+i36LBFh51T17RHuo1z4qwiUjAVkIBZgHCLhC1sDk4KCiMmAQn+3sAMLI0iJCwL5CIYkdr2YLl6orlYcz0SMFXQiKlStFJRShZOc+V4WjidJk7TkVxSez39/S9Loojrdqy6Bui0FL5/f+Dt/YHnw4IK9CrEtl3zbA4ldoEuBs/rUDmD2IpQqZTqm6w5VeZUSNkzO6xt5c4UHzu/kw0wuyPW0HeMw4aggZJm8nIgT490IRNUiXGgVNdmePZNab3wJa/G9UHaKIoR1ucvzdwgOFgQCSDFs3CaE5Y0sCstM8dEqOLHptXq+isRgva+cWmHaKnFtzPVtVBBA8fTie9fv+Gwz5yOmePhxDIv5+c+9hENAdHgIvhGsaxSLjTDlttT29pDzta4F3DiIYLr5hNWU9yLMHwNJl1/3T4juGxLz8jio3+unysXoHIFHde61p9KXYHHta71iZUKfDZWTrtKye5YlFKkVheEU4S0wGIBTNnPQlCjiwVVI2j1jAJ1bUgnTtPSBjBqpakiHFyIaGtWDKmJVYKOCCWMpEU5fH/P6zcf+Mff/B6rCamJ33+38B9+s6BfD4yfjcxyT2FhuB3Y9AOvvhqxUvmbr41pgQ/Hz/nwOPHNd08cUuZ/+ru3/Nu/vOVus8XyHlIiz5BnWJbKXIW5aAs2dKCwbmZqbf7CZoiTfEjVH/PPfvErboeBrwT6eUH+8MY3JFERE7R6krZi9FVI1elf2YS5EzLGWAvJKvuiPC7G+zkxlcJLC2wlcBc7nsx4roXD48QPKpwmxeqIWY+ZJ4UbUOqCSCSEHgkjUXtPgTdDCZ6cMk6YKrK5w8ozKd044Bw6TCEdDpwen7h/84b980SywFKVuSrJHHi41kWIGgka6PoN2gXiBkQ9OK8afHj9mqcPr3l8+wPjoGy3N5Rl4ZAfCSyoVIZtz5KN33xz4IcPJ/7X//yapVQ+3ynaRP5d5wnkqFPrrGkjVNU3Hq0tzQ6ZKUAqxcMQF2NJq3+zZ89UE0rxgEhtIDoGZegDd7uRu5sdu5vPCFY5PX3LdPiWdPgOxhHrezbjF2gYOM5vKGVinp7dVasbUXEQUy0zpWOjYsUzUFM1JBiqPUikHzZYDVhycXtpwvFcTg5AjIaG7fJFwAXshUJhPj1hVokxYqFnshmxnrvbDRjc3x94//6Jh4cjm34gxo4uBMJqmyvSBPbA+WcH2QINkCixbYzchctT7s0c5F1crdqwoRpWM6uA38FzW3Wu94GcLbhXy+yVSbVGFn5M6tJm7nB1tbrWtf406go8rnWtT7CCZ4Wjwd2EFKUW59E3VpHbf9bGva7WXK2c1iJiVG0+Po27fQYe64D7zKe4jDHF3P1HbW0o/fZSPZFzYrPp6GPPdgzcfXZHHLYwKjYC9YBUiNuBMIwMfQcpEwaj0zYVnZV9rxxPlfuHmf1xxykpQxFihZqruwslOQ9mV/eqy3cHIasb14+IIqps716w22zpUyLKhIWArVKA9kxV3Gmptsazqr8Ma/tYVZCqfl/qae/BjDtRBlFG4IQQBKZUeDwmjqfMNBU2tXibbSspvnBeQwm445K1fUXrvKUD6XziHiMSNw6qdMToyGkhzwtpnsmp+EbIxPUh5q/Jmk6x5nus1LsQFdVA0B4BUkrufGYF1UjXdf5a1+LaBqksSTktxvvHiQ9PE8fJXZzGMaBBiAF3qeqUGKRRq1Y9gXFJsl6bVjk/b6ty7tl9q8HKmvPGdt1etV5YRehjpIuBEALkTEoTNU9YmbEaqKZtA9A1QLHqO7jQjM7AO4EKQfwBq4amlWj0PQRt2R8m0TGFrQndub2N7XIi7vgl/ryM6oL3Wkl5apsJp0ChJ0yFPm7pYiTG4NqrnLC+dwG+SEtN50KtUjlvLz8+1M3kcg5zCfDT5mYXwiVM0Nq5Y1JxiCqsgnWnLUq7WeGyI/3o7j66nTPwsB8/pGtd61p/GnUFHte61qdWZizzTJoXuj7SBWXcdC3jonCR/wYKypLLGXQYRkpr5oLfnNhKXIEf+XCK24LWahTpMQJCjyBE9csWZioLiQO3L3b89//Dv+XPvn7Jv/6rL9mOLqredU9IOLJbAmIL3cuvUe2o+z1LTnz48ECZKnYK7E7wF2J8eFx49/sD397ccDcYv9gFbmPHdDww7QvCSEAIneeSHErCimClOL1FlFILpUJHIkhCY6Qben7yF3/Ni9uXxO9fo/oIw2sqM7PNWFHA3Y5CE9SqgonTfoI4HOik41ArD+nEvmY2ybhBuBk6TlbZ5+ygLga+P2TyVPnNv7zn1avX3PziPcNY2vS+R/vx3IhbKQ7u1OlJLlgWd0uqhdAHxEY6+6UHNcbPWVLhcP/I8fGRaX9kmYVEYKkwZ3cpy2aIx4aABiREtFNiHxk3O4J2RB0gL6RpT4iR27tbtkPPpouUWpoI25vc796f+PCU+N/+7h2HOdEPDjQ2I54+HgN9f8nmiEGana1gVnz7VOy8VTOUXjtmwHLC2iZr1Q2YVQci5kF0tf2MVEKA7WZg7HuCQCkz0+mBWiaIYFKolkhpoZaI1A5li0Zr4e4DKu5MVWrC6tSohkoMHaojtS6kuiCSCEGI0mMaWVipjhWxirC0U0gJcUR1Q8lCLTDNT6Qyk6Y9tSbKkhATau7dASsZ/RjYvej4yed3/MWffUXNleW0sB17uhhZY/gEAyuUpayCl7NKXFrXX0QRVWJowYYNEqy6jK6L539DAx6NFmZWsVJY8kIu+bzJcLvuZtX90Qajmm9PSkMeZ7AhK53sCkCuda0/lboCj2td61Msa05UuYAaWQQVdwqi6TCgtsm9nTs4w7wZM7lsNmqbXq58iTZiljbpN5x2VM8dhZ2pGCLC0Pe8evmCz794wV//9c/56lXPVy8DMVRiLHTBCCpQIlYqz8+ZXCuHd8/kw4kyAQlC8ccRo3K7HfjZyy3bMXrTIxFTQYZEKIVeYts8VKQIQ/VskLS0CbYqIQpCYQi+Uem7wNArfZkI8wFbZmpJSKdY1WbL2+gqZ5WsByZe2jZ/bauoE2dUCRLYhUAwYyM+qT85qwgMlmpMVnn74YkfXr/nb45PsGsuYZaQfADpqLlDNENwi1hTxRjAOpCAhB7TAaT396oIpWTykplPJ+ZpoRTIxQXwuVRyLhQrLW/CW7+12RRt2gQJBI303UC1ShY8ETx2riMISmg6iGKBpcCbxxPvHmf2p8ScC2G80H7We5L2nzbNw6qHsHU8r00roM0kV42+M4Ze6JaLjuM8tvdFibuorZuS1kh3MRJDcJBSKzl7RotvfXwzUEoCW7CzliM2YXR0AGSBZpGGtbRzaRbSDkbXjI7sGxOzdg61DYhFgsTLM5fIJaSPs/ZDZP332vgHILAGgKq409dm09NFQaWe6Y3aaFMXg68/TtS4KDXWF6zWNatnBR5rwrl8BDzkPJjwElAlhHgGD3b+bBBWW+OP323aM1/1IJe/t+tekce1rvUnUVfgca1rfYIVNCAWOB0mwDiqN4t93zmtJQZc+pwRgU4FUQcT3SacKSoG5NzoScXa1LNemtPWpOQC1Qq5VNcfZG/BJQ588cUN/81/9+/46dcv+ev/8it0/y36/u9BClBayjgckjIdAr/+57fcPy785jff0lP5N19vGEPPRjq31VLlr/5qxy/+8gv/BIvAsKF0Sv/VQCyFDZVilX5yl6JdCkyz8fCcKRLJ2tF1RtcZdxtj28OLITCqsnn/G8gd5blAzuguQNcRLFOXRk+T1u9Ky0c5U7Y8MFBRYg1s+4Fqyi/HDdUy1RKGcTIIi1EXT/PeG/zHX/+W5fDEf/Vff8ld/xPqpgftoSwYHbV2aNwQxhfnBl66OyRu0W7A4iuqfobZRJ3fUueF6fCGaU7c3z9yOmSm0jPlwmkuHKeFw+lEDWBB6KxNzKVx7oM2UXQk6sCL3QsWFfbzE9J1CBskCDVAp+4q9f7Y8XDM/O+/+Y6390cep+wUK3MHJ5JLG0RAc6OsqYOOGGKjCbl7kqq1DAttlLlMiJWqsFT48Ay0CTvVv9emn/A+2pvwqMpus2Ez9ASUuSSm+QmrC5jb92otUJ8JOrvBgQhBR0Cx2lFNMHXBt5IoZabYI2afYeGWLtyhMlDLTK4TEiLVjFQyIoGxvyGWiNbkTXpVSoVSjJwypRRUAn3XA1uqFTR00JyvRBR0QDUClaFXXtz19B1QF6gRKoTQeep7aFuKH4m2pbGipAES30K4lsM3g2bmIvkWjshHNDNRbTQxOYOjbhgYdDxf9wIC/T58E1cJ5tbYDtJWStzqstU2Kf+ffBJe61rX+v9bXYHHta71qZVA1wnDIIQQL6474mJen6b6RqQC5/9Vn4R6Y+jT+jOrCiFGOTcecOHPC958mtlZvJ0DmAgahW1nxDpRjo88/FCR42t4uMfwsMIirgV5+90jz08Lv/nDzOM+88PbidteKT/rkC7Sj+4YVCUSqGzFqFYwKlELWCX0oNVzFqRWhh6KKcSefVr44fkEsaKd8cWm4+5Fx92Y2HSFMRq9KKEcEQKVAlaoaYZcfUPBOtQ1LrkFP2aggTtbZSAAnQibPpCqBw2qCdFgNOUOYcpKMOPwsOeHqPzLb75By8xP/uynxLEi3RHoMBswUShzm6xXVEckjM1lSSi5UpZMOZ0o08y8n5nmwnRcmGYjFSElY1kWUkrkkmFtKtfWb90AZAemSRfUhOm4p6RTi+huTaYopupBgrnw3fsD755mng6JKVVPqtfLcbLy/0v1rcuCu2+V9p5p0xVJO4ZVLxIiVeiisNsEbrYddzeFKVeW6jQxWX1dW06ErQAEXN+hwUMka6GU1LQlG99cYS1jw/GwU9m69nI0L6fqu70gQ6NnuRVtJfvWRztM/JgOcUARbFib9h6z4tuL8wJg3TAYqvW8TVANiLUNy3njoGddhSB0Xcd2u2Xou3aeSqN/ebCh44vLQfljxYUzr1YRjK3XJbSF5uU+f3Tt6nDFqp03Yr4tXY/8trpZPx9sdbdSUCding3kaEBnBTshnCld17rWtT7tugKPa13rEysV2G7g9lbRsHEOdW4C0JXaUY1clVwrqRQXXdc11du7taCep7AZVneg6LanITQOeT03NMFWf35voJaSASF0ys2YsefXPB4rD384Qt7D8tCaEOM0GdNs/Prv3vDu/ZFv32XmDLHb8tOXG+xvRmLfcfNZR+0iaegYJDHqgk3AbCynhZIr/diBCnlasFroYqAQgTsO+2f+j+9fM/TK7U3P5z95wddfbdjFxBBa3kmFoBmZhfKUsbli+4pkQUvwqf3aDHMBG2vbrriJ7dS+IsYY4G4TOVVYaiaYMJTCy9gxDMJ2qRxy5eH7Dzy/ved/+fcbXv/+J/y3/+O/4/ZlQbfimw+58TvOkZoTJSUkbJB+d34cdUqUw4np8QPpeGD/cOC4wNNzz5wCp6XjOBcOxxPTNJHSTJDgzW6tSNORVJGWx1GwBXI8YdORQEJZqKU07NFBiOynzHHK/Iff3PPd2yfePkyUWrjZQGhLCVVXxpj5hswqZK0s2TNiYsieNRPc1WqwSAzCINaCBIVNjAybSCVSpeP1hyMfnuaPsjucZGXteC7FoApD7OkkUJNRUiblI0N/y257y1JO5LJQ69K2By4Ytzg2x7ZCNaXk4se/7vAjfcGKkcuC9oEubkACJtCNt4gq/ZD8XEvN01miv4fmJsEqFaKD5FK8CQ/qgKcIjcrnx13NTqgCZTNu+PzVS3a7HV3XnUFXyRkTwdq2SEIDPlwE4NK4WLpqO1RB/HxfBfRmnB/PajhRSnVdVHGbYVGIpjikaMBy5WfSBhy4WJ22PVNtAaNWKbVSitP8NIamM7nWta71qdcVeFzrWp9YVYPDXHk+VWJoE0xoHPDmfBkFNegQuqgNeHxkl7t+B6ZsaC4+wW6hbOvtODVG6MQdmmTtHYLTtUIAq4mnD28RqdQykfPMskzkWsmlcpqNZTH2M1TteHEXzmL3oJl/en3Pu+fAh30PQakx0Gml00JnlWi1JZhXdBhc/7B4bsecK/tl5ncP7/j9mxP/1+uFMQq348IXr3p+9fXA+LKj30XS5KF3OmYkQnhh1A5yDtgCZQLLlTI7vCpWPQPEW0gMJVcjmbHPiVM1khWKGjoGYoWhDlgplJrRakQzuijcFeFYXC8xPR95ePfEw/cfsDmz/bwS+g1xM6JMDvrmE8xHrCbK/IiRqLawPHxPfvrAdDySTjPzXFiSUkqgVm2WwpVcCqX61oQqnj+SEwJM5tkauRYPxRucypQkUyhEFsQKirKkypQTv/v2kbf3R374sOfpOBPFiNFzY5za501uF51OFVQvx2VDDaUdu6WAVCNPvgGZ0mXbsQKMnIQuRIYuMPYt2K4WN1BY9QLmWz7VQB97Yuz85xD83yH4QVybLXRrzKtBLUI+TX7WyNr4u1GsakBjReOWRtTi6flIOBj0OyT0dNVBS8m4jsIKlpWShLQsTKcjOSdSztRGR1ofdozuklUaeMqzO16VFOkG4TCNvP1w5P5+IefAMOxQN7BFzc5ZI67Zkna71nZNLbdG8BGBmYveteV5IO2YhjVIEDgL/9dQxlUTFto2a91orZk4nj3q+hFoyzERLNTLZsOaeB8h6NnS7FrXutYnXlfgca1rfWJlBo+Hwv1zZuh8a9FHbxJ6NUJUuiCNQw9m6vaqKGZCKt78TVOiVOO0OC0ipdwoWEIMgRhCC38LDKstanAwMsS14QTLMx9ef+di3pw5psp+MU5z4jRnlsXIGbSLhG7kyxsPIjwdE7Um/vO//EAfA5/thpboABIEjcrNKGx76K0QqYRui0hELVCq8jQtvH5K/Pu/f+bbp8J//H5hlMJdKPzsJx1//WcDP/nijuF2JNdKXSo6zAQzdzg6KVk66slIj5m6GMWgLG1C3R7RSk1JFeZaeZyPnGphBgiKjgOdBTY5oiWjJTFYYkPmpfl7cCBQVJiejnwA3v7za/L+BFYYb+7Y9C+gJlj2yOkRjvfU0zssbkjlRM4z6d3vyYcnTs/PLHPmNBlzFmqO1NLodWUFHm7T6lPnSpoXdypakmsc5oWu61w2HZVgQpBKIdMHpQ/KaSrsU+U//e4Nv/32nuf9iZoLn238GAvtq+99U9b30YGrhos1c7OadbBplAJgnoL5EViOCkEgClTp6EPPpo/Mg7KkTCktb8a7asSE0LQjfT/Qd72DjhDphwGN0bduIi7Ob+DDJ/vGdDr4Fiv2lFw5PifMFLPAdrvj7u4WE9dKPE9PlPzMePsXxG4kLhtElJwMKISwuL4hC/v9zOP9PdM0My/pvFlQ9an/sBlQFU/zyJX940QtSk0DoSv0o3L/eOTd/UxKkXFze54UWKnn5M+PzQ7kTIO6WNpSazMQ8O2Hh5qvGowLyVLFQUcIEDV+pOpf3brsAjza508xz8kpOV8E6QJSHICq6plG5pqicAZ+17rWtT7tugKPa13rEysR2I2Rm030qSIuDKcKs8CSzZ1wxPM6ViMaFb1MdIMQx84lqOZZD7nEc6CYf2/C0FJZCKQsPrmlhQ8qjFHponCzCQ58QqQP8GIQbm4GajVPoC5Gqfh1nVCPslI8fEKeUe91cj03fPuTAyoppU1QfUpdsrs27aeFx6nwfJyhGF/dgBahK8q8ZF4/HPnL+HP01U+J/R2ynMj7f6EsExmlqlA2hkVDe8UWgwlsEeqs5FmoSSipOu3G/Euj0OEUkyJCbr5RaCUIdKpYczhahbZbPAjv9mZksxl5ejqxpMzbD+/Y3uz46S+eGYbIbtNTp2fK8QnRABp8g5QTy/07yjQx7ydyMUrpqRYheBxfzYYFRaMgwWljVipWoGqmWKWSQIRO1Tdall1zUP06sespBscC37x75Lt3T9w/PmNlYTsIMgRiWCfh6yZBKSakUsnVNQ3SGtq1tEWVh9BSLs6DcW+Ya5NEe/ZIpdqCKmw3PTGIO3RRoFycktJUeH488Q//+D3v3py4f5epZU9aHqn2gVoLacnkUuhCh4owt59Pp5lqEGJPToX98+T5IRU2my277Q0tbJzjYSEtFel+g+iAdhsQodpCCLDbBrpQGLqZ42HP48MD87IwL4trJ8zQdSvUdBsqfj4dD4sLzG1gGHfc3s2cpsThOFOLMQ4bcspUHECaOsjwjcUKP5qGxC6gBJxyKQa1FBytOZXrvFoC8nnzIc1eWFd5SKMc2tmNa9141Kbn8NBNN6cAT3/PpUK2C+gUJaZG4brWta71ydcVeFzrWp9YiQi7IbAbAsuS2hTZyABoc6CBi7C1UVnUCGpshkBQIXbe/Kh6I1gaNSrnQsqFlNu03CAlo5qwJKdXNBo5YwdDJ5j0jH0gdoEuBnadOsc8CLU45WeeM7kFAK4AppRKyt6gFpRSjZLFv1fzRtYgt/utdcHM2m0VDnNiLpX95BSPn+4iZRHypCxL4e3TiTnu0M++Ig53sJwo82tqmqmi1CDUscIg6E48mHAGm6HORt5DOhqpVkrxPIJqhkQhqkIXEIOUm5A4+EzZzVeD8/HF20Kt3vjttiPjZmC/P7F/PvD89IbdzYY6TdzejsirG2w+Yqc91IxZZpkXcspTgpLxAAAgAElEQVQs+4WSCnMyiimlG6kS/A02qGqgvi3S4JQbK02QnB1gJDz7QbquWRhnMMUKEHo09iy5MufCd+/3/P0/v+FwnLCS2YyRoHqeuq8T7ZXykxxdolI9lLCJiqVdVmW18L0Io0tdbWo9X2Z1YKqW0SBsNKJi5CDMU/0okwbyXNg/Tfzu9695s9nz7s2JGDJdWDhNz5xOz6TFKBm6rkdVOZ5mP3YOR2qFEHpSyjw/H6m1knNlGDZsN9uz49N+f2CaErn49lBCozpJoesDr17eMA4dL243nI4nnp72LMvCkpI7cUEDHr5NdFpaB9WYpgVwsft2e8fnn7sLVPWFA303ePigNS2HWcvNsKb3bqBD1kBAPkJ1NJF346YhnuPSqFoAuZbz9db3SFeqXJtaqP6xJ5W/fxLU77uu52d7H0uhlGblixKzn+vXuta1Pv26Ao9rXesTrCDQK8Rxdea5+No4HcLOX7k4x3wpBrkw5+XsQCQCMbq7UIy6/pau6+n71igKnuxtRi52thH1ZseFwdmMKVeYqkOINcTiIwqItvA3FffIHaNi0WAo58ltezJtsqqUXKmFcxODaLMIdcF8LoVc4DALqRaOZaZmJefAlzfQJ1jef8/+D4nYj0QV2NwgGsmnQg0V8Kl0LkYRKOZS3TWPQDtFO6iLUU8OQKSoa4jXqS6eAF/tMrn3CfTqDiRnPU6al+b2kwAjzxPzaWE6/pbtpuPFiy09lQGjlETNmdO8kFJhOWVqMUQ8BDBsA8RCHQcMdU2PGJGKWkJtIka3s+1jG3ibT7w3CoMYA4UO6ELHkir3pyM/vHviD28eePv+kceniRBg6Dv6LhKjhxt63sTqovaRcLgdd3/8b0Mo4tqj1dLX2vGGOFBSM8wKVRxMC4aJMPaKdcrYB9eJNCe3Toy6zLz57i0P4YH33T0xGENnmC2YLWenqBhnRLVN4mEIA6zUwRDZddtGOayNLlSaaBviTqljR27ZHbVZcam6pqVnQtPM9HiklEovldgHxs6F7CKr+OqyAxIqKHS7HpVAjCND39FR0RgQDWgtBIyaFteR1OxbjNq2B03fkT9KgkcEbXYIfl4Fd4ao7ayv/j8X1htqcr6krO9V9cdm5ud/zqtd1bopaVuS1YXB/H0MDVSpKjF6KGE1ITTtz7Wuda1Pv67A41rX+sTKiS1OdYnhIgqFHwOP1ckKw7cGtU2Lc2muNt4Adp2Dj5HozWRQgipdF4lBvVkvbo1ZG61iyi6+LrWymt2UYsxNBFxrxmrBrNBCzuljT9BAVFqOQoeIEcLaJBV35lQQFDGlJsNyey5wpu+UNVcAoxZhnpWpJJ5mo9RIqR13YyaURN4/MN0ndneviP1IjQNmAesnjOw5GhWytKYyCBYbXqqtYcQF+xXf2EhSpBq2NMgknJ1G7Qw+zj5DzfHHgVzJmVoqpS6IGNTMfKo8Px7oh8jj/cC2i2y7SEmJkjOHUyLlwjxXaoW+j8TYMZae0EPUhKmiElGrKBVtOS4xdMTgRgCinvUgovQreLXaxMuwpMKHfebbt0/8/T+/IS+JnBK7XUeMgRB9i9H3rv85A48136HS9BzlDHx9u9X6VgNrzarbQEsbzqu/Fh/lpTRcSzXXLZ3D/gxSafoQzVAKh6dnjqY824EuSNMkVUKorlVSoXTVqWUaPNG7uUUpDjT6Td9yN8p5et8U3PSDU5Sqk518M4PbWTsdMbfgwgoEOm0oTwIxRte8tN69tlVGqcUBUYioRtfbhECgEtStsUtUalaCuEicWlj5YGsbbw2InelSKzi4MK/wM2otO6PqddBw/n07E2l0SxeU85F1sZw/hNb3UWQNTPzxl5mfy6W23KGrxuNa1/qTqCvwuNa1PrEyM+bFOE0Vo1xEpuKNpeqa2+CNmwalC0rX0yakgJlvDQyqKVZhf2hbCvPG5wI+3CITMbSxerou0GsgSCGI0Is31r2q87+rNjvN6puENdchF8xOmF22Kd4Q+8blwi03Am5/K9UuIKOuz3etiokQu8gYQEJ/bmbHrqeLA0/Pwrffz/z09MB27NDgz78vmWqZTPYtThWnL1Wl4vEnRaEEKJ3ndpSi5OAT5lKMLJUsRsbI4g3gOfyv0Va8x7PzcNhZMXaeViOeUl5MOMyFx+Meaw5CKTnt7flUmVPlOGdKNYYIXVBud48MY8/LV48Mw8ju9o7n45GnpydKyQxDR9d1BA2o9ohGNt2IhkjfuQbl/bGypIn75w88HWdePxw4zBkE4hDoBt+QLNUoc0a1sGSfYHfRNx9RVxe0j3QdTUcQQtOBtC1BCH57K8XPzu9ku0hRVDqqhjPQtVVDgwudh9FNFcahJwZl7CJBlE5js+x18CJUQnR6WOz8MZ83Um1rorI6ca1ZJHputr31Vhdprw21XFxlizmIsJpRMVRa1oatxgTSBOvq59lqdw0US/jWxLcbMfRYhdN8dBtpg7Q49dHyjFIIUlE137i0bZt8BDJqo17V3IBftfNjr2eYIU15xIqrzu+XsL59/vr5EONC4Vpx4YozV6C9Po7VMnd1zPLrKRLCeo/Xuta1PvG6Ao9rXesTrFUDsXK9q3mQm+hKWTnPPlkFGWuj732wIVKoVUhFvcFrgV+1FrK6QL2YU4RWpxuP+INO3E43BqcRud2u0DXhsKmSC+cgQ4BSMmau2zDjLFgtQGiUpLU1ESrFPHhP6gqt1iZ0pZRAa1dRNYLAoC2VPXhjrhqZZ+P5uXAbZzRnYh99+luavVezOi3N/auYXrYW4rSaKoIpVBWq67CpAqVBvyp81CSvs+T2XBrAsI/6rhX8Aa4Dab9PBY5TIpX/m703+7Esu9L7fns45w4xZEZONZBVRbLYHEQ2W2Q3Wm65W2oBgiQ3bMkw/GK/+MUvMmD/C360H/zkV1uA/WbABmxYaljSQwOypRYbPVBNsptTzZU15BjjHc45e+/lh7X3uTciM4tVDSaZjNofEBVRce894z6R61vrW98S+gjdkBhC4nQtdEFY9IGUhIkTGgurFJj1A6ZxzGPETVq6viMM2vHTNFqpULmPfjmv7k9iHDElFuvIct1x53DB6XLN/cNTJL/flT6d7MGcAEmCjZIz4KLZeKfXyGGyocFGylfcjYCRHJfe5tEpyWiYTsrBvdWJ8Sa7KpVra/J9b726rM1aR+MtO9NWibJ12tc06uCUeKjFrlM3KdGgPGS5UulncON3RxnmV+qL1qlcrRD6hK7rIQWQiCSHNYK3WSomgWxwTYqGlAwx6YyTMvzQSpaaGZcHGjqCaBN2itpfFYO6lIkkDOoAltiM/ts8GXb8ebsHRO109TzEnKt5jGtO8o0pfytK7dSUKh4y3ifKPsrPUqqrKVc5tl4rS9yYfHQVFRWfBlTiUVFx2WBgspOY7qbc7GyI0eosgAjDwGgZGtMmu1smRjuruvamUQnKztRmUuK1CVk2zenqyDOMDb2xEyJw2ilpaBw4Y5h4ly1Rc3ZaEs56rHFYo9nkttWAPuaMr3F+1IuXJGtKEEJpck95FoWMGdQitTLWZTKUKy5ObVYtFm8TrdcZFd5bFmvDkGCxjLRuYJp7A3ZtxFvD1LUIFp8cIQLRIDGN8xd0EjaEoHKyGLR6E6LQi5osxZxtTsIos0qUng916TKyyTwba0urBWMZKmVS1ziCDQQT6CXQEWn3WiZ4rro5OpOCfP21grD2rSpwzlYgwnw+pzUzrcaUeRHBkBIcHy8YonCy7On6wMOTBUNMrPqgwa33eG9onQ6IdL7I4uyYL7c59LXkCgBZLJclcJKDeslBq8lrYFPhyg3MdmO1qgPxBOtlnNdRiGaSqOsyB7BNrmK4plFi5BzGCtFGrJM8x0+H85X0fEgpk0AN/k0edpdy1n+I+RjS5paUMLzBq6xqsGOlQyTpoMOk8jmUZuTZIlOcczjroUx3L1s0ut8hNLreo0BC3aCw+GZGtAlsJCYdnCmlKR9yH8z5qeNZ8JWfFUNKlnHKuSREoiYqLhAQJEsJs+wtexNgs/hO5/jYkUjChoyIwJDU3MLEDdEulZZU+nuMkII9R0oqKiouLyrxqKi4jDACVuU7FoPkAWEmsZWbZJRjiGhmvgxfS5IDv5KfNzoMDmtIYil6kGQ1s20NeTjdVra+BHFWX8PoQL2ScU024XIlRLPQOX+cYxjrNsEMZA250TnJkk9RiUoOqLbqISZpylxQp67cFYLPGfeYBOtUShNCzr6mxNoKvUQ8QnQJbw293wxjKwQjCUjSCdwxjbL6PDhNA+2Us9cqy5INASFXP7IOvkh7ijFQmb2wlV7WszJKCL2xOONwVmidwUSPdy3OeFwzwRiX7UvJlSMt8UQMXYgjORgwBNG+jSFq03SMwtl6oA+Rk4USj9PlmpCUoHhnmGRC6pxKqPRnO1rnaiVi0x2Q59Wp0VW+JykTSqRUNsY7t72IM4EyOeO+VQnJnzE5NV+IybioTbleag1trI6bFxPH2R3G5OPMX9sZ+FKF2Q6FEybL4fL7i57IaEUu39BcHdvcf0mGmHIlRARrLU4cGIfSjUye8t5slpylIruSUg0zeQCi16pJnrshY+Vl+3nZyNk2gjWjHAKjjeFJn01S/tuQP3Wu0oFszpmtat14m4rEzGbSv4GISr60GrP9HCvZplRRDRUVFZ8iVOJRUXHZINAtEuvTlOUhOnwNA9LmZk/jxqBNsgVszHKVPgSSJLqhpxtg1bs8hNCpXMUZnI6oYJobzHWCsQanqvm2IAZrNJvrneQBgtn5KkLfq2wkhESKgm9V6tI2mv2eNEmDW5+HljnBOINpy6R16MLAEAP9oMPWul6rIDHEPHsk0xFbAlGtGExbz+5c2DFCIxGfhBA1uD3uDDEIq/WghCJEnLHMvaexhlmjkrGmMRjROooMINEgMaf3iYhNaseL0MdIL8JyiEQRBkkYq9emDF0ku/1Y77DO4lurjfQuFWZEiydJw9w5rnrPdLrLZDIfZ7D0qOVsP2hVSGc9JGLQAXuny8hySJx2keUQWQ2Rxaqj6wbWXaeDBXNvQ2s1UG2cpfV2SwKlpFSwxKjN6OIEYxOlg0NbOVTSZDA03o9VGGN8ts0tTcbF/jZXSVwZyGjGWFobpCOSLZRtJgYxaRN2Io7Zc2OA1IP3NG1L4532BxFJ0ulMEty4fTNawerOrNPqTUnA6/Rt7VcRgRRlJI/GOAyWIUSM0WoGhvwcqORRtznVCkN2WRvEQB4uWCo1pRpU5pkwusuqvKttW5zztM2Ejp4QOpJYtZkWR8rN7TrrZHsmhl7AklQYZX7W6WPlNBBIZMvlTHZCrmyOrmxJcjVHZ28kk9enBe+0h0vtkdXVzBjDxGwscsvw0RgjQwjEEEZHPeuqq1VFxacFlXhUVFwyCLk1IeZMsCZ7VUCSdfPWCCU/LVbJgqVkpa1WLnLgsckmb8slCmHZ0nGbbW14kc3ovryziBHN/IroPm0J6rKSSBgzyRu5RtaFS6kEgDFpbMAtVQBnVSOmlrR5KJoApC1701xpyBKzmDSIsrlHJOb5IyHo9OxV0LkhQ68SmX6IeAvLzuC9ofGqTbcCBA3AY2dIUViHSEjCckj0MXHaR/qYOOs1sA8pKeFwQpP7EZpGsC4RTcKJIF6rVc6QK0Ia5RnjVELUtEymcyaTuVZ8EsTQM0Rh1SdtOl8PxJDo+4FhiCw7nRx/0kXWQ/5a9wxDYAhBtfi5EVzydOniGFWIQ6kGGHvBrahUJBA2nfLk1VDCXZPXoRmrW4IZHZ00yN5sM/9KK0LJ5P6Fsi+b6wSlYiEjV1E5kx0JCuiaSilXYuJmn2Jy3aHsTjZHPa56M3ZE6T60NJKrJHldiijBla3qQHnNKjGMZqu7p1RVIrkqsPUAQ67ibVUpthzbijFDIeBJSmXNZFVesSLeugeyeTrFjGezVeUwm/8ag80VxjRW8cpnN4dZqptJL65WPnKltdzn8regTEgXwBVWZyAli3N+bDyvqKi43KjEo6LiskEgJEufLD7rssmBgM3BGUanZJsNK6HJVYGZ0z8LMeVJ5UmbaQtJgDzJPOngPA001b60zAJonFYrGg/OWXVIShaxdmuAmCFEwxB1JsOmtwOwWW8ukEJukI+JJBpwjRIcqwFN4x2NN0zaPEjNOESgz/M8hqAWrkPoc2ZVZR4hZ8wh2wgnwdgGwZEah0QdoBZj5LjrGIbEap2npIvOOFCnJSBBHGIexqcVpLNoWIXE3VVgHRMnQxylWBNvmDgd9jjxltnM65T3aaDxhnmvvRSzicM7y6TxON/iJzOayZR2Mkd8Q2caTtdr1t3AvaMTluuOhydL1n3g8GxFP0TOlj19SCz7yJCELqEEEKEx4Iwwaz2+8cxar/fM6wyWtmlARPsUSrI8u6N5q25R1hWyUMJRbYQYzQpSGhP4pbujkALntMJTCIXWENRGVoPVraWd+wOK/CpGbcoehp4YBXJVpm0neO8xxmYZnGbWY9AMf4xgcpjucpWkbLPxEWtFK22oVM0o+xllRylXdGKKY1XDGIONmwZ3JSMRYwzebZyf1M1MG/ubpqHrekIYQPREtf8BFuuU14rK2LBOK2erFUM/0PcDXZ/y8E60dyP/kx5tsXFWuaRNpTElr3VKb01OMCDjjA5174LG+UzWYm4QL6KtDaXJtG+cfG5iytci2yg7rWL6PJV97MJxunZ847RvyTfZ+ruiouKyoxKPiopLiJT7KGKWVtiUJShog3IOD7ZCiC1XpZTGDK/Jbk0iog3Q2fmqxDHls5ufTJbFAEkYgpIFSlUkaENrTEmztMlo0JT7MAxgvQZ71m1p/HPlhWS3KiC5pyKWcGhTlSnZcpszsOJKD4lXhyur8jO7EZ5wXpxStO3KKgxp7C2wLsuLUj5PGPs1Yv4ejEqe1gIdQjBCtKKD2nIAq3IWwzqoJGdAeyi6qBWQSZ97KtqAd5a2jVgbsU3C+QHX9ohxCJazZUfXB47OFnT9wPFyrYRjPTCExLqPhCh0IVMCyeeSm7q9Ae8cjbN5rkWZZ7epOI3OUzb3GpgivSoLJ+fNTQnE2VQ2xo6B7fdpAG4y4S39IeUdSdQueYzixyqYAHa823asuhTpj2EyafDe07ZuI+dKGpBrQAxlVoWMTSaZzEjK/TpxPB7l5uVAN5WQ7Z4TrYTkp6D0hxSSXwwQynpB132ZdF+qCkiZbaIlRQNK7PI1TFmuRXGxysRJHcW0iikwkojSOZK0LEmxnS73X++vHaVYxijhN1vVS8mDBPPMwfH+FZSqx/j7fL2zo69WmYxgJamcKxNTM37e5CGFVWpVUfFpQCUeFRWXDBoqR4JEUq4OpCxH8sUKNH9tyy3KIDeNwA3eNxRXJWMEa1POdLuRYGw3voroSDpJm2GESYasxVrp70OuYshG4+8bJRnWa1DvvMEbk3sMNtULtfMVYrTEKDrDYkiEQTPPxaoWwHqVbkwmU5yxeAScRXyWmdlI4wzeqLQIyHM6lI6pE0/AJMFJUCcfB611TFqvUq0oDFEIMWW5ixAaiNHQDyrdWnUDwSnJMcngg0WSQCjOVtCHwFpgWOZeB+dyVKhZY++VNDW+BKsqq4kCfUgMUWd4xJwpT0AYpT55VoRR7b11FmeFqRW81V6d1mllbOK1l6dxRTKl7DKEOAb41lpcrnZYozbFY/PyVjBbtP42y7FsWWR5hYrEkbTYfLrkDpGUSWtIA5BNDco9IRMmq1bIBYV0uDw1fX9vh7bxTKcTDYRz1j5KGC2h9Vra0cWpSKPK7A0zRDBoVQtwqF2u9hyZkbhh83ySTI6KTNBsEcwhD+Uc16c1pEEYYsxN/folkkgxV4tSylbUFmcsTpTE2xRxxcHLqSwvEIhxMyNmJGgpbaRXIqM0ErFbFQ+Xjyk7hVFISrkqZlyPwCbrMGYqMsERteAuWiwRkBi0F0fcOflcSSiYbFEcSecqqhUVFZcXlXhUVFw2jIHZmKLMwQRZh21ydv+8S5Ad7Vt1GzGNJY2cEM5BmrHngo5t5yusauW9s7m3owV0onKMYKwQYm7QzbKZKDmLHjSgTV6drqItGfFsxipFrJOlIlanqHuBKGa0p9W4Sk8qpai51ZLxTRFjRDXmRqs4NmfLU/G8LdcGmzPK2VY1n7bFEI0G95CrKjH3eogG9tY5UrIYb4gCs1R6DNB9ZGlZROVgISb6oIFhEJutd8vF14x8yD01JUsexp/zYDYjFFWSGwPGsd1bg2XLONDPZ2eqMmPFmVLlOE9Nx2A/r5d8C/Sw8vcSUUse5p3Kesh9AlJI7lgdsGx6PexWULpVtSIPjCwCnzFy1/ckMUoiJEv1kuTKWW5Ad6LXMF8nDbz1s2IcoGR6I43aZNy3Z1GUgo4RGSs0ubaXT1i9ywxqRWuMGRuxS/XDWjVEiDHp9REddmkkMcSok9zL02SzY1ZeAxL1fkoQQhCGiLqpxVwpyde6PL/a86LSK7u1hpTwy2gmYfLN2vhplc+Vp7pUri5UIowZn3+Ty576bOayjdlUdkyWsRUzAXXK21SoMNn5y3qtPFVUVFx6VOJRUXHJYADXOFzjNoPdROUekXiBNJgxg+29zRa2+vtUtPQwBk/WqJuRpnLjGNCXDHlxuZlNdY5C45X8SAqEoJn5rk/ELo7zOFKf45Wc/fTW5tkbWTfvEsYkDRLzBHNrVKs/tQ7vTWmxIORAtIc8bXwoh5gz3UW+ov0lTcwZfGOUWYySLbCirj/Guo2zTw7TohVcDuBDUoevEMEbp2Fcnua+D1nKUzL/2hNiEgwi9EnnY/Qh0A3qwrXq1BVpGLT5vc98KORz0rkVWc5idIBj4zNJyxWqYqdbqgIle53QYBCjblXOGhxKOJyVPKNhE/6rEUGpgGRKUGQ1uZpiMqOQTG5FIKYi5suZ7THYzC5ebjxYrVaYUgHLtrwmTzAHxknfkpBUbGY1kNYgXG2Ay0yUmKDrI4KjbXUfQ9jM+AA7Eiy7Rbh0UKAdyVWRR5ULWBrvXe5jSSJYglZHkh4/rgFjRkcovfWOxje5rylX5kyZgQNDDMSUsHZT6RKBkF2mCGCj0KSYq2yGMKitsxJjlQE6n0kVZMvpzbPr8s+SlPCEGPP11OubRIh4kliCFBvh/HlrOU8+tv5+5PVmTcw9PDpkdFPZkVwl1evrvcdaNw5h1MpduW61x6Oi4tOASjwqKi4hJEVkqxFj9NjfFDFGEbcGsuR5GFk+IiXggyHmANcbnBUaXzLhTr/KDA6TM7+mzLQQYtBmVkOZYyFgDa5xWbbCmMUuFQ1rNtlxnWSem1uzbKNItKyxOWjUc9tUawxlqocU+VhJ+mfZj8mp9zJVWectZB1+KkHjqPDXT4yBpOQAWRtuGzFMstXqEFK2y9UjCDmoSzmjnbbqCCkH8I3XeRON0+rIpNH7MAzao9NnCVVImwndKZWBhLqfMj8liF7tGHPDMGnrwqgKRkmkkiWX+ywspdqx9T03UJdm49HZCsmD4zZ9IBupVN7PlmpGRCe4m0yUImp4YHIFxqecCTcq1fFO18BGepM297dU6Mr9s2CTYQgqPXN5YKLRKYR0g0qAun4YF3yR+DgjeaK92v46DNaU/qZNcaWsgbEHI+VA3xowhSwowbROuzHUHKEE7RZrlT3aXGVI2qah6y3kgXq5/6RUHHz+bOMbNpWHqM+UKcQoEYuXVal2lGMd6cNmTodKI9M4Sdza3GORV3kuWLD1cb3+W5WuTS/GZl0Zo8kCKfM5SnWyVDWzbW6KUeV6zmGsy8Mhbe61qlKriopPAyrxqKi4ZBAgxaTToXMGVWVXGxkLkJURJYcvY3whWUqSsnxl2aUcANmxz0ADVqOSqtwE7oxgiSq1iLniMGgA4lwmOOghOK/bK9OuAVIcRvJRZEkpCX0XiTEx9CEHa1nv4hw4MB68AWcYZ4zkmX8geUBZCZ5tnr6cm5PJlSDGBl8hDEp0fM70OuvG4NPkDK4zaOUnB5rG6OyHvh8IMbEMKc9yCBiJxBA2YVV2KEqZpDXO0PocsKJDCpMIYcjVm6jHOIwT2mWs4sRcxemiVl7WSb8HklYFCrss06WzJKdUuZwpzd/50La+lwqKLQ3ZbIJ+S549UoiA2WTFdTI2I/tQWdhGJmeSHYNeY3SKtrMW0MnopoVk7Va3v4wZc2OVrOh3lbKlZMEJNmkfjnXmHPGIMbHuCvHIjlzG4rzOl3FGzQbEJB00KOcrfdlrKkuYNIj23uVnQLvwC0nRqoVV8moEa/JMEkmI0UkbiMWIQaIgMTsUCFmelWVpBprG451nOp3puoxKiItcSaT0hURGpk5hDbCZzGfKas/3RNdVqTyVuSEmExa7uXVjo/uWcAxKI3je5DnrY1xuLC9OWCH3zcRx/0Vy1TQtngasw241m1dUVFxuVOJRUXHJYFCHIu/cpmVhS2qzHZho5lij9DJNeGwOxahMyGo+ckjaOG6STjm3CCFFbFCzptIAbXPWWYzQZ626yZ47GjQrebEl216GvmWS5F3JwmtD7KTV/ouh1wbUGDaTwaPRZuAhJJUt5fMbZTUl0GmULHkHjXNMvNp8it2SFiVT7L7UsjVnYUVyq7YIRowGjZSgTAfAGdtniYwGfq0zeCe0xgCOxHS0IE5os21plh8dhyiXP+eUnRnvX46tYUtCs30ro+jx9FGbzEO0Svxiyn0huTIiqtvHZvJglFQW+lduA6DzGIw2+49SKTQjbiyjg9RG4sUY95YJ7pLfXzohtD9Av1IOdkPSSo8xWj0zyY/7GzeaGGVqLkvVygR6tUXW9dA4C8YpsciGCuIszrZjU7menBKyGHOvjgh2CBeCaIXdPu9c5XEh4ZxkmV4hM6VSJxD1LqkztUrALJHGyXhhBlGbW5vXcEySByHqtepTIjiX5V4mr/1MYlM6f6/G1VDIn2zdABBrN9WOXPFIWJK4sYI4NqbnjaY80HCzhyy5ywAo/3IAACAASURBVEkEJI2VkXPfIZsLGCQ6Sg8KpQ4pCZFAGBIxdIAh+IYYBioqKi4/KvGoqLiEcNbirBtdbYqMgvx9oz8vae0sS5LSX70hHypJMtkiF9xWUG5TwgijfEmsZoLx6nIVJEuKEvph7FjN8DbHoNnWtsx18F6zsI3VXG0bde5C8NpQGwetJsSkgbaUBt2YRnlSjDnmMhZjoWklz8LQ82msI7kiJ8rXIlo9vyK3StrDImMUnQctihvdgUIMOgfEhE3zrFVnJT8qcVT6U443JKPXJSqhSlFnjSQZY3IN4KwZG5tFGHX6YxO23XIJygFoCEMOxC1RhG7QORN9nuQ+5EnuyWzZ0ZrtikbZni4Qk6sjJle4sqJHl4zL2v2xL2iLcJhzca+6neU3SSawJXOe3ZCzA5ZlEIsVuzn3cn6i1ZckGzmYDtKTkdhoe70bLXa9N/lznhS1R6LMrUii8r8QdZtFJjieC+Xn7OCV+z/UgjjhgvYbuWxyINaOksPC8E1hXqIEwznGHh9MQnKF0Jh8XEkwST8eo2Bi3CQIMDrLJksPy30q1rlFIDbucovQkl+JbIiHoM+mldwQX058NK/aSJ+2BwGSJZWSbbJhM+28EBTn2vy3xeUrWWSf2QggJlIMI/n2viHFQEVFxeVHJR4VFZcQfTB0wWCMz1lKDZq8YStoyYHr2LCswUYYNGqX3MRL0mjEGqdTmVOJ1LOOnWxBipCGhIkGnxtj1yHPRBDVdU8mUyRGEgND0gCmzQ3FpW+gSHVCDt50cGDOlpqEcQmfKwCNB8ERvE5bH6JOBu+zxW1xggoCcUh0Q2C5DpwtB7zXwXxFdtTIMM71yP3X2ULW58qM/t6KynrIQVtEm4ljFEImLaQs8cpSM1v8ZI3BG0djDKaxmFYrIjCGZlqdENFjT8Kqi8SU6EMaqyKgwX3KfTjbU7etMbRefzFtNPCTPNMlRGFIhj5CmW1RLJGLFMvZ3GCde2JM/v+NFapeHGOVLBabXWOMnsp2ECra1+IyEYlJRrKpPUSjXofSXKy2wAljfb5m+WSN0aDc5GNAsqtX1IZzBBNU2rVca69IP0gm3cUZLRNBo5UwrwU9RArxZVMdTHnYY5QsdUvZMMGRIgwI9Nly15ZGdYcaM+jv21az+CnP3dDLmrASiRKIxM1xGBBbmuQNkagyqjJ0MqmEMoWoZDWEsZKw3Y+0uVybvqlCTVQWqJdaiQdjv4cxmeimsCEhefFqldLkql9JPKQxcWGzpNHm50Yt7Db3VH80ucHcAW3euJIy7x1NU8ORiopPA+qTXlFxyaABniGmPB+DYvOZ5TM5M1pchkr2OUeXW03WRVJhMSapFIZN4FtkM2MjtyQkZmmNsoYs9dEJ062xTEyLmAEpQZWUXoScUWXLSjQHl0myu5BJOWDMmWTRtliDEp0kmuGOkrB5KJ8JaqUaoza2x5iIRt2jfNDp1IV4tEQcuZnaMPY/eKPHZzLZIsVNBt4YDfrThcAasnORSntsyZR7n52Icp+Fs+MAvdIFocMVy3FnKVEsdqibSkKRtyS2Zy5o4DdWKUofBrrNIcEQBBuU1KQ8jyRJJhNGLXbL2jDbwaPdrJvCzIokyuagcjy4zeGM55WEsXFZSVO2dc2lDcm2u2XehJVNta2sNcPWiZPURjk7XGlTve6rD1m+VCo0uYGpVEpMJkyl14RMPOxIzLUlW1KRJ+p1Kn0QovFyJgnk56Osxjx00UCQlMm0fvcOrKjsKkkkksbjcJkAaQUxVxUShBQhad+UpKQDM2OA3MNV+qQKcbxYryl/E8oji+hnspBwJIraB0b+g4A2TZW+nUwcN3qsvNbc9t62CFCx4i6992ZLkmat9sKU4yHSeIdzWyPqKyoqLi0q8aiouHQwBPH00SMhi1BMyD3NZfDbRptf7Eytc1gH4iRnWDWadmUIWRqQpEle2IQ2GvIVq1QNpHXasU4tTskQgyNZh8Fjxq5hzcSHoIQl5pkajW82ennUMQvK4MKUA9NcoYmRFIPKdzDgtd970uj/TxrtK0kkRBySNMq3W9KRomVPQXsg0iBjFYAxYDN455Q8OM3sunwRjOj5FmsoYwxmjKH0T6zJgSeZqESSkrNhcyWTKY3jemzgQGDqPckJE+82JA+tDMWkUqqQlGwO0er1Hq2OlSQUSiJog3zjdKikYOj6oGYEME41twjeupylLsPfso0yiTIdz5LXztb9GoNSS7ZfBklRLZJtCXjzl5Tt6qpQclWGHuYKUDxf6YmZ7KoVa5llkSs7wWKj1ey7FbwrTctl8rwyBiGOz0GJ18sMQMrVz/a+zhucCN5rxcO7kVnqlHMZ2c1I2lOISIJ10MuRUu41cpvgXq1tt3qMMpFD9OfG6WuN014rrSqoBDElq3IlbCZm+cDthmiU56Ss41LFE6t+dGWOTqKsu0wfxgtdDqpIqLZcy8os+qTPRpJs/ZvXgxvNLDKZys9ZTAnvG60iWqfWus7StO25gZAVFRWXF/VJr6i4hEiiwcDGkUa1406yLp8c8BjNdIoxY5YcW+QU5Eyw5IFjOUBJGoiIlKBEoUFkHrCXNr87/7UlFRq/b6YlYzSoYqsHQewmY5rMJhtPDpZSSqSk77Y5CCvJ20JapOhPimSnZHIxmvGPm6yu5ApLTCUQVmIVUiZsGJzka1hkJyWTTqkwmLGCsMnSM5IPUzLIsgn4UgkBR+JRyFF2JbJjuztlkzbfN6Ieg2BJpgTnui/ZykmbbFuLKWtEjQBKv0O+qtmgtRwL43HkjWBMriCQM+4lOV5iVMr1z30E5f/zjZFcydhUktRtLJGtmNm6HyYfU65EnCdfW4MWUYcrMYYQlRzKWEsDiolBDrh17W/ctWw2FihrX5wbbYe3KySlqKDVwrzv0hdhNu5dSF5Xoudk0sb+eLtqUqokmzWk2/bnxlrk+2cMRepWxukUpzi2vm+NBNTDK9dRSsUKrdKNzxGbB/LcLrdmmRi58HIhFuVe6nOSJK/XssjzfnUXaZwxM1ZrjFdZXZ3jUVHxqUAlHhUVlwwatDnElrS7Hd18UlQCkm2QRmJhrRklRhqXbAXT2W3IN1kekQMxndCcsmRno9AQIA0lS60ZWWsNKQUWizOMiRgTdL9Gs8DeFnmJZo110GHKVZlsSZr16a58xjkGkzBo1SRlhyOEnInWwNAY7W0pWXtrweUJ7KZUKhogD1UrgW/UVg3WQ9Del6B9HH1EpS+Z9EhKWOc1o+19vpZ67Grva2icyt4ab3PWfAw3R8nTkGcd9L3ub+iDEoIkObBjy06WMXB21rDT5MZnq4QtkvsjrNPBimOTsRqXJjEMQeiDsLQ96yHkxnchxEF7TEImNs5jjV5vdSzLdrTZ3taWYBgyU5Txe0gRAzSlEmTZBN25cDBKupx+vkxmT6IN0NZsCKASEDUoiKDBM5msCOAcxjhi0unvZaydxsyZKGc723GtFxJlNsE/CKaPef2n8R46I2rVXN5XeEfelqUHovawmDKPRGewSF5PyZjcG6X9IKHE86mUTfQXIegask7teWPMD5kEDOXnkiCw+fQ0eNep6OBdrjx4kye8630RQFTvN1b3hpRywsDkW6k3KxWNXJHEITkxYHLlQ8keok5dmRHn6k2e42O2ek1iwoaIwyIkokSS0bVfUVFx+VGJR0XFJYNznuc++zIAIlGDtfyP+pgt1RfHptpzspOcGbYlqLJ2Q0TM9vyG3A+S+wTGaoZQJoNAkYLgM2kAYxPWxuxkJTmgU3clIDcyAFme1HiV/LjcQ1AqLhjDMERiSISgAbp2t6q+XwrxYCtrnWeabKZUb6oKZapbOY8oSgq6IRCTMATN1oZc9ZHcBC1JMM4pqfFZjpWngI/EI7sftd5uhtzlXHfK23qUeOT9xRLwZXKxGXCtGXu3GQTonMl3OQeD1iGyIR5jW7BYhqjntFoPdEOkz1KYIYSc5dYMthIPg3NqQeydGgE4V6aaG8b8t2yCR0GNAQyMVYWS1d70qWS3KKwqy8ptEIhsmppli4iIaOCegBBEp9Xn+S7ONXp/Xa6K2W3iAWwTkW3igWydSym5yEg81Cra4ox+bRMPk8mBsQZSp+Q1liWsDdxxyPLFfM6pEGnMeC1GG+u8b5/7RpzT848hT0knqnSvHGcmsOWZBJXgSX52y4MrorK1cR/5vWW9D1GHX273W0GZQl+2XYhH6ROxKjMsFtP5vY3PHmyZeLBVCXLO0/gG53zu67A43zCd7Tz6x6yiouLSwWx8uh/Fg6OTJ7/4URs1hv3dOb42i1VU/NyRUmJxckx8rD3lkx/pEmhclFRsvbL9qwubk0e3LNtvPP85s3kD5pGNn9/25vXtnW5+Hv+Ebf16M8djs8NHd2M2/zVlf4+ex3lp2GPO8+I2t/Y1fjfb3832u7cv4UZGNZ7T9v4+4lwee36bzzzumPPpjNIXeWR/F7Zitq7X+cN5IqQE+E96nXN34YnHeu738ujvyrlcvL45+n3sxp647h6D7bc+6XPqIvX4o/+If2Yfd2iPv14y/ueT49xCe8Km8w/l50ce8cdt8/wP5z785DtanpHt+2TY2d2jbVsqKip+vhARzpYr+uGTW1qLCHHoSTGws7ND0zTja7PZ7LF/ymrFo6LiksFay97Vg1/0YVRUVFRUVFRUnEPt5qqoqKioqKioqKioeOqoxKOioqKioqKioqKi4qmjEo+KioqKioqKioqKiqeOSjwqKioqKioqKioqKp46KvGoqKioqKioqKioqHjqqMSjoqKioqKioqKiouKpoxKPioqKioqKioqKioqnjko8KioqKioqKioqKiqeOirxqKioqKioqKioqKh46qjEo6KioqKioqKioqLiqaMSj4qKioqKioqKioqKp45KPCoqKioqKioqKioqnjoq8aioqKioqKioqKioeOqoxKOioqKioqKioqKi4qmjEo+KioqKioqKioqKiqeOSjwqKioqKioqKioqKp46KvGoqKioqKioqKioqHjqqMSjoqKioqKioqKiouKpoxKPioqKioqKioqKioqnjko8KioqKioqKioqKiqeOirxqKioqKioqKioqKh46vC/6AP4pBCRp7JdY8xT2e4vBfI1/WlX9lN9jZ5xPK3n4iOR18OzsyryOv44l+KZO/aKioqKiorLj1864hEX32c4/BecLntOl/3H/JQF02DsBOv3se0BfnKL6c5nmcyep20aGv9Ldyl+NhCB/s+R/h3ufvA6y8Uxaetl0z5He+M/Zjrd4/r+TiUfzyBEEnL2r0ndW9y5+wHrbvX0dta8DNNvcuXgOQ6uv4jhWQreBbiLhEOO3vqX9KtDlnGLULvnYfIt9q4+x7VbL2ONeYaOvaKioqKi4vLjly7aTuu36O/9HxwfLrlzuPyYn3JgZhi/i5vcopm9TLv7JfauW3btVZyzeHHApzSrP7yBrP+Ew9v/H0cPPyCyCdbs7EvM/d9mf7/h2t4OP6/Loxn8VP7n0TcYS1EKfhpv2XkIsvo+8fTb3H/nLzg9O356u5r+OuzvY5znaiYezw4EeEiK73L23v/J8vg2Dwc2RLr5KuzuEDFcufXyM3bsFRUVFRUVlx+/dMTjr4YEskZCIMoKGe4Rlj+iP/pTjtvn2H3x95gefIPru3Om7afkkjzrSKeko/+L9fIu773/DjHF/EIDzJjc+F2mt/4+V6awM/lFHmhFRUVFRUVFRcXHwackyhYggAQkrInhmNjBsPgQ2CPtfJ2h/Tz7s5aJ6CWpWfRfMFKHrL7HcPImD97/PjGG/MIE2GVuX2b3Ksxa2PlFHmdFRUVFRUVFRcXHwuUjHmYCWIzN2vMUEBIi8TFvXgI9qzv/huHkkCuz/xDTvsLMgvu5HnRFRUVFRUVFRUXF5cYlIx4G4w8wdkrT5MbRNIAMxHiGpIEY+i33pghE0vpDhjij75f0CaafNpNhMwW7j59cp50GApseDze9hvceZ+2z1EVccQ4G7A7GX6WZ3KAN7eMdyiRAWpJS3KogbcHOwTR43zy512l6FTOZ4lzzszyBioqKioqKik8BLhfxsBNmL//XTPa/xmeuzWi9AREkfEha/EtOH7zBnTe+zZCEc35Y8QOEntVygV3Azi58qkyuZr+NmfwGn/3Gf0qM/bmg1dgpZvIizvnKO55ZGOzVf4jZ/7t84WBBSgHhMfbI3U/g9J9y/95tbr/32oUXHez/I/z8q3zhc19iPp8/fk92B+MP8L6tVcGKioqKioqKT4RLFl5bbPs8bvoK090500ZDIwlzon2VsF7QekOKosWOER3IgpQi4XGKrHPQkE5Sh8Q1MXak1CMpICkhiL6luC7ZFmMbrNvBWo/zLcXE86P7SLQvRVIgDcekFIihQ5Ds+OTAOIydY+wE30wx1kH/ARJXDBHS6AblwExxfoafHWAw2Ef2n8/rgoOUSNKjfUwKXURA1iA9cViR0kBKg9q7Stme7sjgwFiM8fm4PdZOMHaKcw5jLKQTkDXdekHq7xGXJ3Td+sLOBYik4T5h8WM6gcXIIg2g17uZ3cS4BnfuPMu965G4IsWOmHokxXzv0qP3znis3/1Y904kIcM9JK3ph4GUip+SBTzWz3HTG1jpsaxIYU0Ma5LEfL0mYDzN7AbGtReO/ckwxoA/wMhVpj4gIo+veDRLCHu07QTzyC014K5B8yLT3c8z39l7ws4sxjggV0/CmjQ+A5EkifP33etn3ARrW6ybY63DWpdf/ymQBNKTUk8cTpAU9Z5JNvI1HozH+r18j/5q80xEBNICkUGfsxRJKQBpaz2n/N58HbBgfF4jc4xtcH6KMU5thk05hTXS3yXGwBDC1nVvAI+fHmCbXZwB+4QLInGFDHeJMdKH7WpV2cZ1bDP/yG1UVFRUVFT8onHJiMcT4G7g9v8jpt2c61f+OUfLgdVim2F0IEtSjKT40waQJSAQVj9hWPwlpw9/yPL0XVZn9xj6JUNYacBv9jFujp9/Dj99kZ3rf4vZzk0ObnwOZ8H/1OAgAg+J/Qcs3v9nrM4+5OG9HzPEQDcEjL2CcQdM9r9Js/Mlrr/4q8x29glv/HcMp9/l9sNAH/KJmCtgvs7u89/kuV/7z5hZx3x7/6t/jaz/nNs/+DbHh3cu2Om+yuzz/y17u9d56da1RwLF1L1O6t7k6M6/Y3X6Houz9xjCkr5fkSTlIK3BuD2s28G1N/HtVZrZTaa7X2Oy8yX2r9xgNptiln9AXP2Yt//iX7E8u8+QFlkWtH2vemBgffd/p3/w+5ycU4A54FXc5DO88Bv/DbO9F7jit/t19N7F9Rv0Z9/l7Og1FsdvsVrcZ+jPGIa1Bs5mD2Nn+J3P4SfPs3P9bzPducnBzS/grXnyvZOe4e4/oTv7Pm++8x7rrssvTIFbTG/+Jgdf+a+Yy9vsxz/n6N73OH7wl6xWx/T9msSvYJsXeeE3/jHzKy+z/1fpNTJe4/HHvWazccITP+yBBmP16yMRHyDhfRb3/5zV0eucnbxJ1x3SdStijCTR7dnmOrbZp919lcnOK+ze+C3m8yvs7T66lh4L6WB4k+HsLY5v/z8slw84Ob1NSI4QHbZ9AdvcYOfW32Wy/0VuXlvj+ZhDBM8hERd/Ruje4eG91+jXJ6wXd4hxzdCfZkKyRhBSAuNmYGf4yQu45gaza79Bu/MK1258mcn0Cs3Wukyrt1i//d9zcvaAd+/e3yL3z4G5ybWv/Bfsvfg7XJ3A9Ak3PK1+zPr2/8DRySHv3X2wtY0XMOYm17/2X7Lz3G9yMIFJLUVVVFRUVDyj+FQQD2McGK0MOAf2kR4OB3jNwD4xqAxARxyOCKv36c5eY3X2IxYnb7JafEi3PCQMK0LsMvFYYuyMiCGGFdZfRcILeC9MpleYza/hMI/JTgrQI3HJsPghw+o9zo7fYL18wHp1hxADfYgYu8LYBWL3iSmyOJoShwNk9QFxfY9+HRjGeD2AOWYYliTh3IBA3eUa0imhf8jQ3T9PPOw1mhCIqVRy8kfiERIP6c5+Qnf2ExYnb7Be3GW9vEsIK/rQ5YpIvr5ugXUzXFgRhyNiOCFxjcBzzHf2EaYYWUM6I/QPGLqHPHk8pOReheWFc7HANRJ7RCnBLyAx37tjwuo23fItVic/ZHnyDsuz9+hXRwzDkhDKvVtg7JSIJQwLrL9GGp7He8Nkus98fgNrDO6RdSRIPEWGQ4buHkNXzkAND9zqA4bVG6yHN7DdD1mevMVq8QFdd8ow9CRuYtMuMW0d+yfBz2Aat8kjAZ/U4yHxFAn36Vfv0C/e5Ozox6xP3mG1eI++P6HvO9J4/A4bOuxwgmBIcY1xc1L/IqQv0E52aCfzx1Tf0HuWTkjDIevj79Gdvcvi9F3W60PWq7vEZInJYWPCDAvc6Q9IacmZn+LtgpDio+v8IyGk/gPi8g3WZ2+xXp3Rrx6QUscwnCESSbFjXNKmBTsjxYj1Zxi/SwgnNL6ln91kb/8m3rU6acZYbNMCidTdJ44VqQR0dKuH+NWCfT8Bd/FPsq7dFI/pl+/TL4/p10ebl+118A1gcbUNq6KioqLiGcengniMMGhs+si/zjMw+zjv8c2T5C1rSLfpHn6bk7f+N47Ojjk8OdqSllxQ1csZEheEswcEY+mO/l9oXuLu/Lc4ePHf47nP/z1mHqaP3IEE3CcOtzn+yf/I8vQDPjg8JKaIyCaU0sD/iO74fbpjx/L432Gam+yZ97ASPmHQ9ckh3fdJiz/g3pt/xv33f0yfIkkecx0AiBBPSPGU1N9jwCjJWziY77Oze5Wdvf3Hy4N+Juggvctw/B2O3vhfOTk75sHxoUpoHnvvFkhcEhaHhKWhP/5D8C9w7/3f5sqtb/LCF/8hUw+zj21CIMBA6l5nuPO/sDx5mzv3v88giZDXz7kyRcpfz2DmOnVvEI/+bx5+8Jfcu/1dupQYUspr8+IdDKRwlxTuEbq3WB16Tj/4p7id36S58h9w8zNf5caLX6Y1j6kASgfdd+lPf8z73/+fWK/POFmHrfuVj6d/F/rbnK5ew9gJZ4d/A9vs0q5XFK78sSDCcPyndEf/hqO7R6y6YWs/j9MZ9hB7wuoUMPRn38WYlqMP/j7N/It87tf+E2Y7N5hbsJOrTJ//XWb2e8ze+wl9EjoBOASOWB6/zWDf5Vr7WWh3L+xoAN4jDLc5efghq3V3/uXZq5jZbzOf32J/8mn7g15RUVFR8cuGT8e/U9JBvEMaHrLuEkO4EEjYfYy7RdO0NO3jeh+C9hSc/DHrkx9wunjIer0ipmF8V3HT8s1EqxjpFIk9Q3eGSEAkQDgkrl9nfXqT4/tvwZUD/N5VNjO40Z6O1Q8Iyzc5WzxgtT4jpmFLOmIAh7FTrJ9iRKVHKdwnxRW96zCi0vingwgMhO4+/fEb9KuHDLHfBHlGnZGayT7GOpyxqE6+Q1JPiktSDMQ46DXJwT/ls9ldqxkE4hlJIuGRxhurTe9+jj0nK3JgbuIm1/DW44xgCKRwSDj5E1bHP+T07CGri/fOXQE3p2kmWGMgnSBpyPcuqhVzOCKuX6c72+f4wZukvas0V66du3dPRgJWpOGI7vRtwuoeQxoeU3niE0TKP2ekJYQPGRavcXr/NZZnd+lDRxyDe2X1xu1q/44JaC/OMvdIgK6DQOzfg8WfsTydcnx0gys7O7jpNG9FSZqkM/rjv2B98gbrbkE39BeqQCoLs85jnIPUASvi6j1SP4XQf8JnQLTKIkFd3twU7+fav2EbjMl/FyShz9tSEwsxkFKEvE6kf4tghbOzQxJzZrtTrJlA+xKuvcN82kA/0A2FqAmxu485e5thuMYguzi2+jRSD/E2abhL16etKqauPDc5wO99Bt/McLXcUVFRUVHxjOPTQTzSGXR/zrB6g+PTge4i8fAvQPtlpvMddmYXE80JWBOXr7F4+3/m6OSEO4enF3ZgsJPPYScvsnflBt4b7PqHxO6Qo/uvE1PQXvb4AFb/lrO7gcXZHHn115nsXaVlK3iVjuHe77M6+SH3D+/QD8OFWNQBU1z7HH72Al7uY9MJq9V7DMOK5c/qmj0RA3BKf/omp+/9MeuzQNgmRfYGxl9hdv0rNO2ciWsw9KTwgDgc0i3epu/OWC2PL2zXgL2O8Z9luv8r4K8yrF8jDGsWcblFvCzgsO1N3OwlGgfebr1mv4ybPE/rW7zN9279Fsu3/wknp0fcPTx5JLa305exk5fY3b9O03js+kfE4ZDje68TYq/3Lh3B6tss7i9Zrg547pVvMLtyjYaPQzwCcETojji98x4fyS6eVfIRH8DyD1jc/y63X/9DdYY7d5wWaLDTz2L9nKlfYtKK7uRdUgoMAsUYQLofErofcWgCp+sD3CtfYDqdZgIpwIIU7nL67u+zPL3N6aonPnJNpmD28ZNd/GQKw/sQj1mf/QUpCRefmo8Pi2lu4uyM2e7LOD+jnVzBWpUyIZ3KEpfv0i/eZLle0PXr/NkE3XeI8S3u3/0HzNcTDmYv4vwOtN+gnR9xcGUGCzg93lQu4ulrpLVj9fLnaNMtrZKUF9MSlt8hLF/jdJ0YRjLlgAnt7kvMbn6ddjJ7FgtkFRUVFRUV53C5iIcEhpM/woS7POzbHJAGJB6RVj9gdfouXWQTKJsdMHMmV79Eu/cNpu0+7cXG3LSG8BOG9ducnJyxWp2XOpjJr2Cal7jy3F9nuvs88+kOzhpMeIXU36NxgW51xMPjh9llSiDcRdbfYb18kdPFV9mfWLwzwCESH7A8uc/q5JCU4lb45IE5fv4Kk4NfZza7ys78ACsLjKxYH/8RYfUuR8cPGIb+KcauA3BGimvCEEhxK61sPM3Vv4GfvcLBrc/QthO8dToxPi1IcUnsHxKGU4b1IcF9hehuMp1MAYNpXgQzY+/WhOn6HuF4Tbe6z3K13pKZWaDFzX6FyY3fYXcC87EP2oK5hfF7TNspnh4zY7DdRgAAIABJREFUvE5cv8XJyRnLVXfeKrj9AqZ9hf2bv8ps77PMZjt4ZzHDK6ThAa2NdKtDHh6pLl/v3QNk/R265TVOF7/GXmtpmo+rudJjt9MX8DuvMp3sMpns4kzCIMSwhzH7zKYzmmcmiswN+cNDhoffozt7hyHJFhHQSofb+3Xc9LNcPfgc7WSHxvaYtCQsfkC/usfRve8TU9wKnAVZv0c8+VO61T7L4SZTB95EGN4krd9isTxjue633NkAswfuFtP9V5ld/QrTyYRJ00C8i8QTlvf+iGF9j9PVmpg+QcnDWPz+b4G/xc3dPYJMaNoDrGvxfoop/V8SQNak4S6x+4D2/h+zOvwBywFC0vMiBeLiAwa3S5DnsKbBMcE1V5gefI5W7uKO32cUp6X7SGjpVmcslpHp3FLKFyn1hNPbDMs7BJFNlczsgbnJZHqVnd0J3rva31FRUVFR8czj8hGP+/+C4OZ8cAcsUd2qwpp+9UAdabbfb/bBPcf8xrfYee7fZ2c2Z/LINhew/nOGxY84fHhGf2ECupl9C7f7d7jx8q9y9dotPBviIsP7XJ2+w+nR2xyfHG5sTsN7EB6wOvs6h6eRqTXMHJDuIvE2i8MPWBzfJ53bVQNco9n7TfZf/ccczKcc7JSjTQx3PMPJH7FeLQhPlXj0wBExLum7yLnYzngmN/4e06u/wc3n5kyeFJCnYwj36TroOsN0NscaC83nsc3nOfjMtyDcJ955jbNjy517d9m0xGvFx+/+GrMX/nOu7cHV6RMONR1C913C8kccHp7Sx+Hcy2b6q7j9f8C1l/4a12++eO7eEe4zTG+zOH5T713MfTPxQ1gesV58jsPTSLMH849NPDywg5//KrPn/xHXrr3EwdUXaW3AmUC3uEOKHWZnD/PMNAoL0BG7uyzufJvVYvHYSkdz7e8wOfhtnn/xZXZn82zBfAbrb7M8/EvC8Q9Z99vEA9LqddJ6wXLxZXz/VfwEvI3Q/QVp9RNOFiesVxdqF/YAmm8wv/W73Hr199hpihPUKaRjTuwR68OOVdd/MuKBozn4PZqrgbmfg/lpzO8UOGZql5x1PyAuIBQvAQmE0zcZ8PTpa1haJR6TG8xvfY2zweM/eB8VowHpPZAjlssj0mng6qQZiYeENd3hT+hO7xJIm2throJ7lensBvtXJjTPxmKpqKioqKj4SFwu4kFCwiESzxjCtl5c/8neqHWugX+BnevfZHb161y58SvM5xPNdl/YosQ1cfEGw+p9emRr/Ic6YfnG0cyE1N+lP1tybh50fEBiTjC7uHw0+ro61YTukPXJ+8TZDZjOYfgQ6d6hCz1duKC4cQcw/S0mu1/m6s6UaeNH5yERg9v7MnjYef8dpDthER7jXvUzgQbP1rbaiL9NjiTQPfxXpPW7PEyv0E7mtJN9rG1xfg/rJrh2F8sU46/r4vPgvM6V2HZl+ljEqbz/SbMPUk9cvMmwfI9e0ta90bkarnG0U9Sl6ay/cO+OSTIb713p99b/9oTuWO/d5BrsXPk4RwvN89id32Hn2te4eevzzKb7NN4r6cLjpzeQFDG2fbIl7s8dA/AhMd5nuVzTd+fJG/Y5sLfY2XuJ3QPtkzLjfZxA80WaacfVq9c5XZ5wdnS2+awsgLv03SnLxZp93yA2kdZ3iKv3CSlwcb66nd7CX/ubzPY+x05j1LbW6AwUMXtMr30V28Dk8N+SwikXjvYjYVxEUkd/9iPicMLy7ENi6Bj6BUki6Rxx7YGO7vB79Cvotw9UEvQPoX9AlEQsd9Jfxcy/RTtbsjv9E5YDrCKAVlHWp++QzI8Zrn6Btp1geUBKd1ieHrNeLs89FGZyC7Pz12mmN5max7njVVRUVFRUPHu4ZMQDJJ4APBKwnIM7gPZLzK//TQ4++7fYnzRM/OMznJJ6wvIdQneHYZu84IAW5y1NK8ThHv3ZgwsfXgBToplh2R6WloPX/hg5u0u8voswg3AP+vcYQk+fLhKPK5idb9HsfJ79eW6CzjDG4HZexUzmzKb/nNRoQPNXsmT9qVDJl7UN3l8YViaR4ejbxLMfc8S3aCZXme+/iG92mUyexzV7tH4HTIuzE1y76ad5GnGTpIGwfJew/pDhXLUr3ztnaSZCGh7Qnx1e+PAamBDMnDwqLkPvXexPWJ/eIV6dIXw84mGam7j932V+8BLXr72EvTBAz0+eVLr5BUIG4B4pPmS97OgvNvrbG+C/yHz3BfavXj83vwLTQvN53PSM/SsHRCJsEw+WIB19t8Aue9KuA59I3T3i+g5BIo/YCrTXaQ9+ncnOFWbjXy8DTDDGMrnyRWwLE/8dIqcEPg6JLeYGEcya4ex79MvbHN79Hn13wnJxnxR7wrD6mJXEBMMRMhwRSaMszbh9mH2ddvomuxOVfCrx0EREv7hNkmuE8BmieCz3SfEuq8Up3Xp1QSZ4A7f/NZrJdSbPTHWsoqKioqLio3HpiMfHQrwL6z/l9N5VhtBiXvwKXH2exjzqYCopENdHpP6M8yGMTjXuj/6QuHqN4O1Wk/PWe9IDwrCgO9evoUhhBd1DYvwMCcGGFRLOiDngOhdouBY/v4lv93Wi9SMntQ8E2nZKmDhMF59Sk/IEOKDd+Sx7z32J0w/vYrqjzVyCcIeUjji7f4x1LYsHM53o7GY6R8Xv6xDB2WeYX/myavXbhtY/haUokdgdE/vTCxPlIrBmOPljUn+b4A3+kZRxhPSAGJZ06VF74hTXSH9IjM+T+GkN5jpR3bcHzK99gXZ+5WM0pD8rSBDOkLBiiPCIeskdQPsS3s0f7Y/KMLah2bmBX/cY7mwty1xDGpYM61NSagEhdEuGbnHOPnpsXne7tNNrON8+bk/QXMXEG3jv9Xn8qWU/QWVTCxbv/zP609e4f/91uv6Ubn1IigMhrPNk+0+CCARS0qUnJleAuEUzf4n9577E6v596B5ujmP5Y1IaWK6/iWlb9sMPSYufsOgDm0LTBNhnMv8M85tfYDLbraSjoqKiouKXBpePeBgP2C35jf7LL9u9GekU0ind6RsM8Rb7By8w3buFdwa5OIRNEjEsSbG7EMir+Cau3iCu3viIYXcfgdSrLacoKZHUQ1yTRB6Jl4x1uGZ3lCU9GmzMwOzhXUPjLcZczBX/rOABj59cw+x/huZwjTOnRFIeGHgK8ZR+cf8Jn53iZp+j2ftrDMxI7Qs0bofm/2fvzoPsuu4Dv3/PPXd79+29N7qBbuwgQXBftFAUJcqSqLItL5oae2zJTuw4XpLKjF1xJknZk5pkaqbGTuyaqZqM4yln7PF4GSmSbEmmrF0iaVpcxAUg9r2B3pe333fXkz/u60ajsQigCBIAz6eI6mJ3v7ud94D7u+f8fr9e47QrNnB8A5RSpFGW43Px4PXGrnuGpHvmDY5dhIo6pGm8Vojqyoe+etPsYecHsJwsN+eWuGFUKSQBKglJ08vMokkPzL5sOd0VnrwLQ2ZL7KysiMCFsciqXKVpmI1RmoBSJHFAGgcbgkUBWBiGg7Q8jEu7N2ZvHtMDs4DsVaESG2cON56eAuhAukyw8iKdxZep1xoE8fo506z5jxC9LKANs3zqsnV7s/dYqlR2zQRkeVoWpt1HrrQJqxkgWO4dn4JoBoAg6iLDiEI0TRrMEEQp4doubKCcbaM4mJX/vsr5aZqmadrN5PYKPAwHd/xXsPM7GKmYmKJL2j1O2D7L8rmvEEYhnQv/gqOC/STxOZZncvhdk02jo+Q97637h1zBhdI2txbDux9hjTDI9yhUjlJfOYjvz9NtN4iT+AqnlAA+aXCaMFmk1l2gNXeAaPuTFAf3UTC5tZJkr7n0rQRKCCOPaVmXv2nW3jaq/RqJ/yq1ldM0Gk2iZF3QbuQRzl4cb4DywE6kaWNLC1AIErpL3yCsv0izuyHP4yoMdxwx8EFyja9TXjxDJ4ZQKVBzqKRLc+ksod/Bi/cT+VNEKr6w5EwOgvMunPwWynmwb5rqZ5qmaZr2/d1egQcSM78Pu3IfpSEbx+iQtPN0bZfu4t8Bbfxw3VrpZBmSFYL2eRI5TzTQR6q8bLnVhYXqCHHZdufZz4wcGHbWyO56b5qtPFg2wujdiAoB4go3pdmUyFo35UufsKdA0uvsfJ3H8QYIcwBklVypiy0NorgBAtJYIuKQdLUxoEp7x511glYqQaUtVNgijC1Cv4vfeQQ7TslJgfVmh33C6CU7b0xZF2C4CMN542Nn2hjGtQQRWRldISwMw+i9n24h4ioXSGXldln/vrvMryqVcvk3ZlaONyvjtVoswLjC/lRvO6vTGMbGH3Oh7fu1ty1X4QKpf5IgaOCH6xs7GiBcpDuB5W3C67sP23RwLAdIEETIYD+yA53rmDYTsojITWLZVRzTIEjTXnkrH6UEYWcR0pQgnScJVnqfpR7pgTOOaVdwrJuyub2maZqmXdFtFnisEoAJRgmZf4CcNcQmuUJ98RjBsaeJU7Wu2o0irv09SXuGxuAvoewqJefCk3dhmJi5fmQQgWisu3lygBze2CdxB5+gPw/e5ZadX41RAqOI43pIBJh5hFXCNCQmXLQEKE0CwvYsccEmYYxLQ6EVUPMEXR+/G9+gxPL1JGBg5vchczsZKn+AJA1JkxYqDYi7C6SxT9hdJAkXCOrfpes3qNXmL0wUpHOgavit86iVOoX+Akjr6ru9DsKQmLk+ZOhvGDsb8PBGPkFu5Ifpy0P+useuCEbp9m/cJiRYJYSVxzIhzlKbLogXoXuSKL6PMAVpXJrvkqYRkb9MFDa5OBrImkFKO4+VKyMME0SK6RawwhLCWIK1Z/292bKkSeAvEjt5oLhhTwrCJVR3jjCKCa8xzSnyFwjrJ4mj9oYCBAOY7g6qOz6F51UZKOUxDNGrQtYGmsRzLlEK4no+b6IPRB6v+CpieJRgcQW/1Wv9mYZEy39FIh3m1BlU6pOurdWSyNwwzsgjuMVBVheuaZqmadqt4jYNPCCbqZAgS0hrAFncRrfTxDYlKkmI1rVCVvESKhWEQYNuEFC0LNTaLITEsEoYZmPDM/PsKbow+zDcSdySi5czr5B/0duPSrNmeipGJSEYbvbUXYAgBpkDWcAQxloC+dr+0pA0XCSJqkRpiikMVg9RKQVJgzRaIIoDovhGznr0ZlzSGJVGvXMoYFkD2ALAzyqB+fOkSQfLnycJipjpKUAha/PrEudDUFnybhSGpJdkLveu8SX7z9aoqTTNsnavdMXXxq624TdWx66K4UziFB08z7rOsXPAyPXGbv2Vuc0ICcLDMFxM00Cm4uJEj7QDyRJJ5BNGEa4tUb0ZHaFSIEAlPmHQJom6G66RSVZdzMZcN/NnmDmk5V1US6y3M1Tik3QXSCJBkhZ7s1XZe0IRo8I6abBMkl5aEetKVBKSxv6GXI0sp0QYOczcKFaujGWzVk1OpR1QXZRKsn471xV42Nl52xWcfD9m3UfQWSvQoMJpUsMkwM8+Z9lVAVwMs4id78e0vVuoQIGmaZqmZW7jwGMd2Qfeh3BLFiNDX2el2aFb9y/8XM1BWqe+cIRukKe8dTummeV6CNPDrtyDE7k4HCVC9Ur1BkCIv7KfMCpTcR7EyW3C4ipPIdM2Kp4laE7RqR+D4sNQuI+CDY40wN2KMExyzpdRFgTRuvuZeB7qf4Ofe5T5xl7KrkMlZ5M9CY6IVp4jar5MvbVEO2RdZ+k3W7a0Ju7OELenUO4Eyh7GMU1Mmd0cIRzMnAdKYXm7UOkChT4Ta/Y12nMnCZSiu+74VBySRB1I1z3BFgLDMDGMjW/RGGiTJG2iqE2aOmQzGJcS0sUu78NOXBxxlIi0N9MVAhF+7SBh+nVK1n3kvC2YXGXpSuqj4hnC9jTtlcOQvwdKj2QN7N68SZqbkANsRZoLlMp5VLtDvRFc+HEyBeky9eX3EDCMMzyEzLm9BoJdiPYTtV9n4fxp/MDfsO0KGIO4Xh+FsodpCRASMz9JoiJs4zgpwUUzf3HnDMn5z9M23kOrOowrwTEB2pA26cw9R1DbTydqsrGkwPXpdd1RESrNegGt/+tSBSdIO9+i1TzJUhuCN7Ajq7QD0/0IXv1v6daW8RUkvcpwWdvG9UkjeRC7cNytVAcG8W6e1vaapmmads3eGYGHkCCKSKsPJz+CFS5i4K/LDU5ABcT+PIacJo43E6celgAhbLBGkfYSjm1BHBEnqxnhijScA/8ofrOCKbu4poNhGL2nkar3lDwhTQNU3CAJZwjac/j1KaR1B9LjQtUbUQKjD9vxiB0HEYcXlgepEJIF4u4Ufu0QVs7DijxQAYKAoHGGqDlDFAc3MOjonRMpabhA3DpMFLSJzUViO49p2hiGBcLAWOv8HENaIw0axJGfrb6/0H4ZMMCQGMLcsK5fgGEjDGut38WF7JYEFS0Rt44RSI+Oci80IDRKCMPGtnNZFSJrFGnXsrELE6J1Y6eiBZLOUfxmkZYd45g20pAXniSrqJeTEpAmLZJgmrCzgN+YwpCTyDwkt/0nSJA9aS9g54ew4mUMFtZ9drJqb1HnDMKs0sk1UGEOaShIO6jgCN3mGbpheGkPELOEMMcx7QKOZfRmLwwwBzCsOrZlkUQQrV8ylbRRwRnC9jDtlTESWxKbBqgVSOp0mrN0OzXiy5SvvuIZSgtDuhtybxQQkqYtotYpwrRKIAvZzKQKSDoniVtnCIIGkXpjzTqFLIE9jmUXcGyDMEpJUljtQnRxx3YHrBGk3YdjSaQuUKBpmqbdgm7726ZMtmzC9MYpjH8MX72IOz9HyPpGgylJ7buEnVkaE3eQ2BUqNkijCN77sIs2wwNPUWu38GvttVepzvMk/veY8Z9jzh6kWJ3Esj1cI1s+FcdLJHGDsHOGKGjht5dJVR6VlinJuymUoGCvHuNmDKNMeXAS2+mydHaKJFo9Qh/UFMHSImHt76jnBpjNDSLTJaSq020vEUcdkuR6+w1crxSIiJvP0zn3Byx1LOpdCyu/Den043rDmKaHZZYwRIrBMmm4gF97nqDbppWub8JoAQ6WVcHODWDIdTMXwkDYfRj2Cmavc/iF27GYcPk7RM2jzOb7qbmlXm6yiVF4HNMdY9PYLmw7j/DegxUXGOr/Eo12nc7KhQZ2yv8eqrufWf9ZFuxhCtUJbKeAY4BBQpwskcZNgvZporCN31pEKY9UVSik2yhVwLst11etZwAepruZ4uYniawDuEtfI0rpzR5FQEww/+eEC5/j9Nw2pJXHtSJQPmHzOEncJQjCS96XMn8nsvRRisUJKu7qX0YmeA9iiCEq5S9gG038RnwhWE3nIViiMfU6zZm/xvFKWG4egrOoeIWu3yKJI9LrWGtouX2I0mbkXB3orO4IWCHphiwf/X3abj/hwA6MdAUZncZvTdNuniOK42te0nUJuRlkP4XSM0g/R3e5SxhcYWtWH0bf49ilSUq2uL3zijRN07Tb1jso8ABh5BHOBJZzmpwrUVFKvDY9oCBdQSUOQbuOYbYpm7ksW5Yc0h7Cqd5DzjhHrnOcKEmIk2yZEyoiCRdI04BuKyY2XRIDBAlJUidNOkTdeeKoSxS1WL2ZSy9ZUy5B2JiFndgoPGcZgzbdteAjzdaVxylJkKJUgFQNDNUhSnOkIo9pLQMhcXxpESGx4esPREWopEMSGSSRAd1ZkqQDaQspXSLp9RLg66RxndBvEMXRhm7sVYQcxnbL5HImcl0TPyFMsIcQdgPbMlEqWjdWZE/TowViv0s3qWUd1A0LYdSwVDWrBCQMBB6GNYBbvZtInsfrHCaKk17J1BhUTBototKIoBWTBLne2KW9sfOJuvMkcZc4avWOP5/ll7wjrPvsuDuw8y2KlRE6fovEb63OHWXjQUDcnSWNXUQUgwqJghbpRbMPAmQZwxzELUzgVjZhOx5yLVdGAHmEWcUt7SQVLnb7JFGS9GbysqpVKmmi0pRIdEgTF6IlSNukooCyDGRcyxpIXkP8IaxBjNw2bOcUOXOZIOn13kBBGqLCOWI6dBspQjUx4lmCMCJSVQzZRMoOcXyZHiffd8cmqBym249TGMVszCCC9oYALSuUYcg8dn4Yy8maT76Z/W40TdM07a3yDgk8emQ/5B4hVzrPYH+O+XqA31qtb6VAnSWNV6jNnyHo5hgsbMGUFpBDersobv9ljPlnIPgTau0OtXbnwrbjGVQ8Q6d7NPv/izKOr7nhAxgu1tCPYhSnGFw8Rac1y0ytse4Jbq+6T+iThvPEq4V1c3ch3BHy1tNItUCtDsllHp5eqTDwG7fajG+KpAtRc7Uc2LoLoC5//sLZjeG9h2J1kr4+E+viH0L+PmSSo+j9FVKE+J11a95VG5I2YWeOsLPuNckD2FGZOEmwe8uEpLuVwrZfQi69QNqdodHusNy6MGtFPIuK5+gEx3rbuXDo1zV2tzM5AN4P4Q1WGZOLLM0cJZo6SKRW6071GuYFU6TB+pnEjU0ATQxnD2b5w1Q33cvApjtx5Po0cgGUMUyL8sQncOpHaSz/P3SDDq2L+mR0QXWJu8vE3d5+hESWd2KaBZzm85C0aMfff/RE/m5Md4RK6RBWOMN8MyZci1hCiM8Sx1DvHLxwTvYOhHM/ObmfnHGSRhuC6+5EmTUUdMu7cOwmzvK3sNptoouumgEUkPYQhcE7yOU9PduhaZqm3bLeWYGHkICbLQmqbMcOZpCt+XU9/LKcjKRznMgwCOJRMG3s1VwPOYCVv4P8yMdQrTlkc5YwXCEOW8SxT5pEvae7CpSZLReSdrYESOYQMoc0y0hrENMao1jeQt4Gc91y7aznRAlhjpAbfB/Cm6YiDhJFHbr+CmmakqQKhI0QDtIZxrD6cCt3Y7l92I2XUMHG4MLoVc+y3oQnpb0u3M4YdvVBPNkisXziuN07/7CX0xKt9RxZ7YcgDBvD9JBWFWkP4pQewC7uIe+VscSGGkbCACpIaxOFoXch2/MES6eJ44Aw7PT6lWwMCnpd6i9spHdNLZADmN5u8sMfQ7QXELnzhGGdOGwQx13SJFw3dhKE7I2dxJAeQjpIs4o0+zDtLeSrW8nbYL1TltqLbEbOMIexCo+Q7x+kXw3S9RcIgxWisEWShCRJmPVr6eXvCMPOeqWYVaRVwnLHsAu7cMu7KBT6sWQvt+PCjnq7s8DajPQEldH30fUXEfUp4rhLGLTWcoWE9LLKU+4Y0q7i9U9iSoO4+ypx0rrsqVx0WgCigJIKt/ogQhboyhN0u026QZ00jXvlbCUYOQyzjGmPYhd24hT3YvmLmN3TGOINZXkgUGCNoNQuHOdFcjYk0friEDbIcaQ1jOfZ2L2OgXrCQ9M0TbsVvbMCj15JSsvbjDXyCG7reazFeSIudAtARcT15xHRIq3wYZJe/wKBA2IUuzyEXX43heYBwsZr1Jdfp908Tac1RxS0CKNeWU5hg2Ej7TKGzGO6I5j2EE5hD7nCBF5pNzkvj5vb2PdAAFUMq0Rx4lN43fPYzqfptKZZmD1IFMekYZwlUcs+7NJ7sYv7GBybwMs7+Ae/SNDd0FdASJAFkDmkIbJlSW/4zkUCEquwD0YFqXcapzVHp3WeKKwThnWSNCAKG6g06SXOmyArGHYZyxvDLdxBrvIuyv2bKVY2YXJp74dsP0NI16Nv+0/RbRxHqS/R6SzRaITESUKirnV1vQ1iBKs4RKX4AIX2ESq1l2jWjtCsH8dvLxB2G0SRn21TOGBYSKuCYeYw3VFMewCncCeON06hciduLk/ukrG7/Ql7AtOeoJKfpjw8RXPhu3RqB2nWzxB0V/C7dZIkRikJwkKYZaRZxSnchZPfRnH4/eQLVUrlgauWLwYLrD1Ypc0M76kSNE9gnfkSnfY8jaRLlCriNFsmJa1hvKEP4xR3MTQCtlFnfv5v8YMNJakve0LZDAuiRGHTj5MfXESYn6HbPMPC4iGiyCdI4+zzbGbBa676OOXBHVSH7yCaOk489zx1AW8oxVwAzg6EPUA+/xSiA35z3WylyIG9FzO3jVLJwrmmhpWapmmadnO65QIP6e3EGfl5quUIa/jitQ1C2NiDWzBdG9O43C1N72mqOQLuuymObkbk3k0CFzcOMzYh7SoF18MyVp+Krq5AN8iWi4xiFQVFcxSnvEIxbJHEIUnvSb8SVu9puZtVZjKLGLKAaQ9g2hVsN49pXWkGordsJbVRxgBO3wcxCk2MwrtJkjSrqmW4CMPDdLcgnWFycgYZLOJ3W/jdDevNpYPwNiOdASxAbtyntRshCvRPbiU/1Fg3AwSGNYjVP4Dj5HrHKnrf78fM78GTI1j5Fm61QZp0iZOst0GSdHsdy8kCD9GbNbBLmPYQljuG4xaRvYpVl16G1SffNpibMT2P0iaHXNQhHzRJ03RDjgyACe79WT6OZV8ICtbGrrfUxx7GKt1D3hrDKt5DFLZJ4uDyYycsDLOAYeYx7SGkVcLJZRW8Lhk7YWKWPwDuHkatGlG8ujbIAgpY+Um8nNEr//o2MIeh+EMUWGbceQxYf1MuEd6DGPYYtnXlbopi9aRlEewx3MpDGM4EdqVGHPlEcYBSKUpl3ciF4SJkDtMaxnT6sPP92HZWhUyIjT1aLtpR9gUbzFFMz6E4KnHDFt5QnVRlswKGLCFkATu/A9MZyLp5i37KEz+LF9TxknWfbTkE9j4KpYG1Pjmr+xIKMMpgWeT6P4BVrGFU3kOSxCRJmr2HjQLSHsRyt+Lk+7GliVl9lMQqMjSQUo5W92SC2IRp91Gw3aw63tXGRYSg/N5s5oafSRdZ3IPlTeJgYOrkDk3TNO0WJtRVqr8s1RpvaHG7EIJSwcOUejXy9VNAlCXOhiFCGJi2x9VvXVLSxqeJO69w6sC3adUXCFh3U2nvwBj4NfoGtrB95z4MYdyAXA9N066ut6Dzkr9Vp0DNMvfK79Ka/x5LHViNYYSzHWfzv6RcHmH7xAiGnvHQNE3T3kRKKVodnzCKv/8vX+YKjklOAAAgAElEQVS1SRSSJjH5fB7LupCtm8vlLnubecvNeNz+UmCRJFqifvIpoigisEYwZA7bKWJIE2lYQIogJY2WSOMG3fqLRN1ztP3WuuRUCaIP0xmnMLSbfKkP4zL9oDVNeyskQJckWCJqTxOnIYkKSfwjJMF5VlZm8YPV/A4T2IS0tlLuHyKfL+tSVpqmadotTwceNx0FNFDxedrTX8Tvtqmb25FWEa8wjDRtLCuHIEEQk/hnSIJZWvVpgqC5YZW5CaIPaQ2Rr27GcXN6pkPT3jYJ0CEJ5wgaBwmTNmHqE9VeI+6cpdVeJlgtsocEYwRpjpIvl8m5ef251TRN0255OvC4qSWQdki7J0kDi1b3BMJY7QquEChU0kGl3bWu4BkDRBXDHiY//tN4xS0M5C1sPdqa9jYKgWWi9gFa5z5HO45pxwlpVEfFHaJ4Neqws8IRIx/BK22j7DhY+rOraZqm3Qb0P2c3pdXEXJmtrkiyhO80ulJPidX07F4ZWGEiZB/S2YTbdw+5/CB520AvD9e0t1PWgycJ5wmbh/FD6Fy0pNYAZNas0apgl3dhF7fgmPKiktuapmmadqvSgcdNxwAGMExBafyHcTozqPox4qhD18/6CiSrlYPIqlshHKQ1iGEWcYt3YDmDlAYfwnKrFErjmKZ1oRqRpmk3mSzgMOxRDKuP/NCHsb3NDIztwrELOqFc0zRNu23owOOmIwAHYRSxC9vAzOMlXcKwjRJ50iQkjru9kqUJSA9huEh7FGmWyRV3Ybkj5Pv2YttFcjZctrKwpmlvMQFYGLKAdIawDLBjWO2NI91xDHuQXGkPTn6cvFfEMm2d26FpmqbdNnQ53ZtOtpxKqQQVd1AqJkmyQCNNk6wz91r/CtXr8G0ghAlCYhhZ3xBp5hAiW6qlJzs07WaQABFJ1CIJaqRqtd9Ob6mk0esfY5YRhnXRTKX+CGuapmk3gi6n+46X3YQIYSCsMpA9D9U07VbXm9mwXKQ18HYfjKZpmqa95fTiYU3TNE3TNE3TbjgdeGiapmmapmmadsPpwEPTNE3TNE3TtBtOBx6apmmapmmapt1wOvDQNE3TNE3TNO2G04GHpmmapmmapmk3nA48NE3TNE3TNE274XTgoWmapmmapmnaDacDD03TNE3TNE3TbjgdeGiapmmapmmadsPpwEPTNE3TNE3TtBtOBx6apmmapmmapt1wOvDQNE3TNE3TNO2G04GHpmmapmmapmk3nA48NE3TNE3TNE274XTgoWmapmmapmnaDacDD03TNE3TNE3TbjgdeGiapmmapmmadsPpwEPTNE3TNE3TtBtOBx6apmmapmmapt1wOvDQNE3TNE3TNO2G04GHpmmapmmapmk3nPl2H8APQim19jVNU5RSa38AhBBX/KNpmqZpmqZp2lvnlg08NgYdcRyTpilJklwUeEgpMQxj7asQAqXUOzT4WL1ml/7knXk9NE3TNE3TtLfKLRt4RFFEGIa022183yeKIpIkIYoi0jQFwDAMLMta++o4DqVSCcuysG37HXizrYCEhdefZervPs8B510ccR7gJx8e4oFt5bf74DRN0zRN07Tb2C0TeKgNj+njOKbb7VKr1Wg0GmuBRxiGJEkCZIGHbdtIKbEsi0KhgGVZANi2fdE235og5MIsDWvLwkCh6P0HCNYORRgIAYYQrH7zBzvKLPConX6VY3/z7/lqocvXCyPcvaXwtgce2TVJAUWSZudrGBeWxV3PeSulIE1QKNJ09bquJ3r/9fazbvnd2xaLrs7gkc3goRSp6i0NlAYiO9pLj08pFAqV9r6q3vdE9vsIAwEYhmD1Kq7fRvYZ6O07TS9+P4psr0KsXifepPehpmmapmnvRLdM4LGq0+lQr9dpNBrUajUsy8KyLIrFIqZpri2pguymKo5jkiSh2+3S7XY5ceIExWKRarVKsVikUCi8hUevgBh/7hitsy/z4mun2X/oHOdXmqx0AgIclGGRr/TjehXGJ9/FyKZBPvixvZRci/638EjfcmlC/aX/RO38Cf7dq3toWYP88i8/ykh/ngGu70Y37tQ5/vl/xblz5/jPrwa0wotDD8POY+TKDGzaTf/wTt716F527BxjkwP5t+0ToSA4RdCc56//8M84e3qeV2r9OJu28t5f/VUm+/K8vx/kRS9R4M+iuou8+PVvc+b4SV44scRiO6JrFpC5MiN7HmV88yhP/tD9VFyTQefSPYdLBwlqU3zjq9/l9KkZjsy1aUUQuwN4lSF2P/IRto7385F3bcGRAvutuiSapmmapt1WbqnAQylFGIY0Gg3q9Tr1ep1KpYLrunieh+M4uK6LlNntWZqmdLvdtVmQKIpoNBqkaYqUEtu2yefzb9mSK5XGkHbwV86zeOJ7HH7pMM8+f5yTCysstnx8cqSGTXlwE/niEDsWh9i2O+W+j9yBCfRxGz9pVinB9GvUjr7I15+OWHEm+cmff4QSl5uxuLok6rL4+jc5efAQX/haQC0QOLZcu3YyV0Lm+xmdbDK8JaI8MUpuZJiqaeCZWdD61l3n1ZmOlNSfJ1g5wYFnvsKB/Wf42uwY+V33UPipX4RcnvcpkGL961Jif5m4dobTB15g/0uv8Z3X55iuh3TsMmZhgM21CrtqAXc/dBdpGfodibE686ESUCndlfM0Zw7y+gvPsv/107w8VaceQpQboTA0wZK7i1aY8Mh945RssKV4G6eGNE3TNE27Vd0ygUccx/i+T61WY25ujlKpxO7du/E8D9d113I5VhPIIQtUHMchTVNKpRJhGNLf30+z2WRubm4t+HBdF9u+8c9x0/pJ4tNf4Dtffp0/+k9/T3fzAwR3/1c8ubufrSMeHiFSxfjNRbp+wpmTIcWoQUMpcjf86G5DTgl2vIttI6P8d//wQfKWxAXizjxhfYoDLx3m8IvP8FeRzxeeq/Pbn7qTh/b0kWPDzMIN10YlbQ594bOcf/0ljsRFzg3sJrcQUuRKQVADRY39f/uXHPnq3/C52c0cCR7gQ7/0EJtGywzEp/FXFnj2i5+lsbyJf9bK8+57N/MbP3MXeSnwAPzT0DnFV/7sL/nu15/nQPVRWjvez899aoKhEsjF51iaX+JLf/s7PHfoHs7l/lfeu63Mf32fzgfSNE3TNO363fSBx2oeRpqmBEFAEAREUYRlWZRKpbWgYX3AcbltrC7JEkIQBAFxHBOGId1uF8uyLqqEdaOk3Qbh3CFmps7y8rEGw2NlBrfcyba7xrh3skyZDmYaUFs4Q7PeIapF2AUrW1u/cVtxiIoD/G5IEEbEaZrlMwgDIQxMx0NKk0LewTAEkmt8SK0UqIQ0TQg6beI4wQ9jUqVIFSAkhjSxHBfbdXFMgS2NDZtQkIYkSUyn7ZMkCUGUZM/olcAwsm3Ybg7bdbGSNkbUZKXZYaEREgUtEuoszs5SoI0ETMvByldwTIOCfY0lkQ0LCuMUR7Zx70MPU3Yt8kBYO0N30aZ18jAzwWkOnJ1iwZ9msbmNLuAAkiz3IU0SIr9FHMd0uhGJgiRVCGGAMDBMB0NaFPIOtmNicH3NcbJL1STpLjBzZpYzJ+ZJcv1Y/QaOnMe60guTDiQLzJ89zbFXDzNT2k69OMHmO+/jzu39jIV5WjMnOfPVJU61Uw69forBikMtyo7PMyDprpDWT3H25Dn2vz5H+/FBrLE72HPvnUz2Kazzc5w7kfDN5nHqcwVeOb7EprwkpJyNyXWcp6ZpmqZp2i1x75AkCb7vMz8/T5qmDA8PU61WyefzSCnXllZdyWpZXSEEhmEQx/Fa+d35+XlM01wLXm6k1uIyZ/7uRc4uDDM//iN89MMf5hOfepxdOYthWyJJEUoxvm0XaaK4+z0KISVuzsbk4iff3ZmDtE+/wFPfeJ7vvnyIE/MtltshkdWPzPWx7ZFPsHlygk/99MMMFl1GrGtdPpSCP4W/PMszn/lzzpyd4annT1DzE+a64JSGyY/uZN+738f9jz/BuycK3DW8YT4mDYkWv8fi7Dk+8+efZ2pmmReOzNKJoRVZeNVhysMTPPTEj3Df+z7MvoVPM7TyNP/yT77D069OM9M+TiJsfvOn/l8s08ACyrvexc6f/Rc8tq3IL95/jXk5wgRrCKswyvD4ZvpyFmVAbRpBJffgNZbZq47wewemOX34Oc6193KKTdwBWCigg788xZGn/ogjJ8/z2W8dYqkdM9OKkXYB6ZTo3/Juqpv28TM//27uu38LI3Dds1ON15+ifvIZPntsgIP1j/HJf9DGMdr8/oEVEq4wbotHYebLvHZons8dHWX7P/k497zvCd5/d5HtFYmlBknGdzDyK6/y0oFFnvs3n2PJex9fPfs4d/cZPNoP9WOvsfLSX/DKXJHncx/hV37iIzzw6D7e1e9QNUFs/jlGxg7yjw8/z/MzIf/6M5/nkH8/Bz8yxoiA0es8T03TNE3T3tluicBjtVdHGIaYprk2y7G+N8e1WA1ALMvCdd21/I84jtcaD97IGQ+VJsRBQBwrYuFguh6FUoG8Jcib64MeD4DCZVa0pFEHFdZYmjnL1OGTnJ1ZYrYR0A5ioiQlpkOKweLZ40gVc+zcbvzBlP6RHJa4WvCRVbxKk4Dm9Clqs+c4eXaBczM1Wt2YbpSSpoooaNJdOcf8ubMcO3yKCW+C0UqOggmOoSBpkwRNZk4dZ/rcWY6fXWJ2uUk7iAlSiBNFFLTxm8u0O10aXYhSkc0erFXwMkAIhGFgSIkBSCOr9nV9wyPAMDEMG9N2sBwrS4xOBCpR2JaJJUHEIUnQIUoSwt6VUGmM8mfxl89x/OhpTp1fYr4d0Q6yPjFpEkMU0O34tOptulG89tprFncg7rA4Pcv0sWna1lYYHmLT8GnyKsKSgvQKL026TZLlaWqdlPmowt39A4xPDFMtQdEFcEjpMDI5yvBCSME/iWotM91ImPCyi9ht1qlNT9OM76aTH2NwsJ/JkTIlC3IGgAuVISbHy5xpQzQ/TWdlK8sRlEze6vVomqZpmqbd4m76wEMpRZIka7MUjuNQLpfJ5XLXFXTAhcDDdV3K5TJJktBut9e2vVpq90axXZu+4SqFE12suUPMnL2fF060qI7lGK5eW45JvPI6/vHP8IW/OsN/+IvTbPnQkwx/4r/hJ7b3MVm1Mf0jdFem+eIf/innX7D539sV9t4xwf/5y3dTdsT3eRq/QuTP8/Qf/A4nj53nL+MP4w0/ws/+84cZKEnGShHtcwdYeO3LfOvl7/CF3/4GrV/7Fc66H+eDw7Atn0DzZVqzJ/mDf/57HJ8JOTT244xuG+e//8f30eelDOW6tBfnqE+fJdo0RCSgsOcfUCk8yT+t/zN+5uGX+fVvP0Td3szv/O6PMTFSYoxsqZXplXHMHzwwTDrzxLWjHD5ylKdfmON8YxdYeUzDxKYXnAVNotf+lLMHp/jd/zKLvXkH9/8Pv8XuAY9HR3OkYZM4bDI/nbKyrJgccK//QOqvw9LLfPmpE3z9Gwl3/o/v4+H793K3+o9E00tYAoIrvLS9WKN26ARz/iDz1S2Mb67wwDYorgsGhO1i7byH0oLBbucput1Z9p9osVmaMAbzMwscem2KlvME9p4HmaiU2WVfPGPj5F0m79vFiWCR/MJR/LmtHJpVeGXB9sr1n7KmaZqmae9cN33gAazNRqzOSKwmkl/v7MTq7xuGgWmaa13MV//caDJXwhvfzdDwMjtKC8TzRzny90/TP15mpZLD9Twsy8IrlrEdm/5KEUtKbAFCpECMX19m7uhRFmuSmreVfSMT7N42wdYtZcYrNqYfEhQddk+WsGYjXpiaYqVosxTvw7AEuStdMqWgPUuyMsWpaZ9TS5LyvkkGtkwwMbGZgaJkpBDTkW3y/h7GTh9jKD5Na2WJ4+dbPFxyUV5KMHeW5tQJTi8ZzHZLjO3YzuTWcbZObKbipgy4AR0vR8M28SsVugVBzssjXYtKMYdftLHsPNIp0Tc0zNBohRHe4MP1NITGSRrnI55/Ok/JMSkAaWeOuHGGV47NcHxZEVeqVMpjlHMuxd6+VJqQtpcI2zWWA5eqWWFky2Y2DXiMDzukUZs4aOJaIeViRNVz8LjG/A4VggpZnjnPypHDLEQu7cFdDA/3s30oT37ZoPV93tpxGOE3O4TKJMkVcWyLgnXxdRKGAXYB6eTIWxGJimh1IqJeeeE4DPFbEapgYeXz2KbE2TArJgwDy8tjO3XctA1hQNOHwLuOcdA0TdM0TeMWCDxWZzxW/wghcBwH03zjhy6lxHEcpJQXzajc6BkPd3QHzpO/yrvFU0Rn/pivPP+H/OdP/xs+OzCOXexnYucOqgOD7L7/XYyMjvDkYw/QX8gxZIMkAmrMnTzOd/7sa5wd/Fmsj/23PP7hTfyj9/QjjV6DN1WF0R188ucPcPzwOb76vzxDN1zkle4H2W7ZDF7pFFUCp58hOHuALx/r51x3O7/8Cz/G9slhHq5IHCO7Ie2rDDC26x7S9r+jfPApvj1zkqe+fpIP9G/hrrLFwjNf5cyh/bzk30M8spV//Ws/yraRMnd6ElOAQKGGJmH3AyhkthrKAJIbcMG7y3DoP3L4FcEv/m1WTldAr1lfShxJ0sRm20/fy13v/gh3jAyykyx4SNOEqL5E0GrTzm1hZHCS++7azBbPIpucqgKKobHsPZo1+bvGPJqkAfE03/vWM3z7Tz/DqUd/HedTT/LQXWM8NAhmE1rf79Q6XWpzKwRYUBkmb7tU2PiBlmCVMZ08lXxMYATM1doEnSw8Cf0u7ZUIo2KRr+ZxLPPSZHZDglfBcpeoUMMIO8ytQEsHHpqmaZqmXaebPvCAbKbicn/ezO29FYR0Ec4w/RP7uPP9H6MzsURxapkOLhEWnqewkxpLh1+gc67MV7oBw8NDvOfBPRTdmH6rgd9tMTcfsBycpNn6Ji99p4w3m794R4kP5w4xe77GSjvFCDq0fei6cKUySUpB0KjRXp6n6c+x3Kjzyrf+htnBMovu+ifpMRBy9sXDnFqKODcY0Kp2iOMIpQwatSa1lRZpcRCrb5Shgkufa2EZXLY619r+f+CrexnShsIIxb48d+8ZwjYUVhoR1BfxF6eZjUdYSIbYuW0L+/b00Vew1s5TSAtzYAJv0WLMmMZctPj7r3yds+U8i30lCoUixWKJcrlAoeDhiGuZlckCnu7SNO0zzzK1EHJU7mVkdJydu/oYKFhY4toisCzvqXfVel3KLwl8BGvfzZqOXzyzlwLxWjW3y7x+dSNidRtZpa+su7mmaZqmadr1uSUCD2CtItUbWWJ1Ldt7S4IP4YE1weYHtzD+wMd5rDlD1JrjyJGTzMzMc/ro6ywtzPHc177EXD3mj+33svnOu/it3/unbB8MqFZmaLRWOH4m5kz3q8wEX+P//qLg31/u0FWKIkea7oGgRa2u6Nis5q1f5vcV9fl5Fs+eotY4wrmpNv/hf/pWdt952V9PIVU4pTa5Sp0o8kmVYHZuhfOzDeToDopb9rDZNRkx36bGh1YBxj/Mlu1b+c3ffIKqlVCOaiweeI7zz36Br7Qe5tvt+/joYw/w5AdGGVl3kMLOkbvjcQaSAzxs/iuOH3yR/+s3vsvgplH23LWbrdt2smvXney7awfbtnsMWmB+38gjBSJqx17m9P/3b/neyuM8PfhJfuvu+/j4owP0CbKg8S2SAFHvqDRN0zRN0260WyLwWA0MVsvdJknyA5W+XV1epZRaCz7erIDmqnrbF0IgMDDdEoYhGN5ikquMUu4fot2oMTSQZ25ukc9/4zzmsssLr83TnVQ8eF92m6iQFCbvZmz8Ie4ZMdnRd6U7XgsYZmBiggf6TEZz1xIASAxvG8VRh8c+ei+VYo4qV85dsCbeizWyhW1DeaD3KFxl5ypE9gaTb0vUAQgJdgkrX6W/f4A+B8pJiVzqU3Jj5l6s0X71GWZPjPG16iAf3VFgSzmbEhKGBd4EpXGTD/zDn2H3SodN8yEYBtJqkUwf4Pj8UWZP3Ik3uJXHHtvH1skRhixwr/jWjIAGrWaNc1NLLC2+Rmu5zTc/f5ilg/3kADONYOkZagvzTLcWCJKUl//yD5gfm8C/6xHuGC/xgb39WLZFvuRhkkCnQZBEdNiwYk0pSHzSOKATSqLUxPEcTDt7v9iWhedJVJoQdMJeVbRs5uZCg/QUwg5pFBHiIUybUh6cG7sqUdM0TdO029BNH3isBhxSyrWE8CiKMAzjDedkpGlKkmS3aKsleW90D4/LMZwShlNirDjG2Oo3VQhPTDB36jDTz/4fnFns8NVnpug0XD55b0R2Vy+p7n2CHT/8P/MLD3v8+B3XUhFLAMn3L0drmMjSPfQNbOYX/rd/wo7N/ezhWt4oEXG3cckeV6uuvi2xh5CQq2AX+hkcGqI/Z1EBGBuGB/cSLf9bck9/jmdfuZNvNSa5q2KtBR4IC/K76duxnU/8xl00l+Z5/MDLnDs3xf79+zl59Cj7Dx7kNPcxb9xBUCrz/uERCvJqgUcILFOvL3L8+DyzM/M055/l0/vh01d6Sf0853//NcxND/DFD/42/+ixSR6/sx8751DsK2ETQ3MFPwppsjHwSCBukoQdmr4kVDa5Yg7LzQIPx7EplUyIY/yGTxgnxGRB5tp4pQn4TZIwxFdFhJWjrwjeGyjipWmapmnaO9tNH3gAa00CVxPKgyBYSwy/nlmK1epVSZLQ7XZJ03Rt22/JjMcGl9+fAK+IUShTykkKShEGMWFogholn6uwZVTQ8peZfvUoS9snaIkRrpK+cY0HA4W+PqpDg3jdeVbacHw2wsgJdvVnrTWuLAuGhLDo7y/RGMiTTp2lZbmcC+5HxDAor57jceNdaAIicIAqY9snEE/cwfdOn2b5O1/i0CM/hjdcYGcO8nL1dw0wCzglg9Fd95Mf2UHfxF3cM3+Y5dn9fO0rs3zvpdeYnV7ihdMRO7dL+opXulgOMMjw7kd55JO/TrkB923IIldpRLL0Gq3aCl/5xjSRU2b8iY8wNL6Dux/YwYPb+xAC3FKB6pZRqrZPpXmSxYU2x2dgRx9UnN62opBk+iTtuVnORX24VpWdoy4DpexzVO4rs3nrILmTdeKFY8y39nIuhnEJbm+swm7I8onzLMz5NMvjmJV+Nlehcr1dEjVN0zRNe8e76QOP9bkYq4FHGIY4jrMWeKi1BNnL39luLJUbxzFBEKCUwjTNteDjRgce2XEoQKDUlZrhCcgVMLwCRUfghRCGCVFkAkN4uRJjw3AkWGH+4Elq76/QUsOYXMNgXuX0hBDkK1XCgQG88BVkK+L0fIxTUsRVsC/7WsWFlGSJIUyqfUWafXnSV6fpyBwzQYybKPoliMtmJF+lpaG6MHZrL10LHn4QDuAwPDlGX7IL98B56t89zbGZR8m1tjJug7cWOxggPeyCx2BhgEFgO0CwE/wtdE7+GcvfeY7F2RqtqYQfHZeowurRKpQSF8ZZZPsd3P4wheoEO2JoxxvOOe4SnvwL5s6c5sB3A/zCOHf/yM+xc3yYH9k9RH8+G2W34OGMDVO2j1HqzLCy1ObUvMIvgLJXtxUSzZzBn19gJq4yalfYPORSLWbbKFVKjE0MkDvaIJ45yWK7w0ykGBLg9M4/DkLmT8+wuGjRLu1GlquMlQWlt36CUNM0TdO0W9xNH3hAdlNs2zblcplut0utVkNKSaFQuK5Zj9UO6Kvb8DyPSqWC4zhvyWxHZ+YoSy9/icOtMi81hpnc3M/4pgr9RY+CYyGTBmnQYOqlL3D+1Cm+OSVoFqrsvG+cyV0DCKPA4JZJHv74o5x+von37B/z7NcWqHVqPL53E9uGipRlGyPt0pifotGOOXA2T6GvzMOP78azoHilgxMGjD+E7Q7w/t0H2HT6PC/92R9xdsskW37ivYxUXbYNOhD5xJ0atelplqam6G56D+HAXu7fBCOeSf9Dj5IMDrDv777L7PxZ/vxPdjG5dZSffGwHZVswIGO6rSVay9N08jvxvW1s64OBHHilEqVqBad1DtWIOHpumVQIqmUTx5RIx8m6mL9J4yGHdyO8lH1b/gu1wwc49upxpsJB7v/oKMVSTHDs29T8hJeCzXi5PNtGquQsKNjgz56kff57nJ5vM8UAO4oew/0WtiVQkU99/1+zuNTibw5vojA4wOM/eT8l22QAMF0Pb2AUK4XShmBMxR1Sv4T0c5jSxrBy5IaHKQ31M1q2yFm9O/7qVrA/zO5ty3xo8jXOvPQNphYb7P2x+2mOlxiKz9JdPMPTf/FdDs2adO74EJU77uG9o4LxXoGB4sRuLPEku19+hX37n+XFr93D2bkuPDrKppLCnHuR+VNH+Oy3Zjgjt7PlA0+w7a5JtgnYUEdN0zRN0zTt+7rpA4/VxHLTNMnlcoRhSKfToVgsruVprC6TuloTwNWgI01Toiii0+mQz+fxek373oocj6gxx8rBb3J4cZivzG7l3n3jtKNRxvtLVPMudrhA0lnm6PMvcebUOY43bUS5wt7JPoZHKwhhUewfZOv9exg+/jqF5dc4c2QLC7KPUU/iEhPbNcykzfyZQyyuRDz/+gCD4yPseWwnBsbVA4++SaSZ445xB6PR5hsvPcfy+Rn23ztJY6RIyfQgaBA15pg5doRzBw7Q3jtJmOxlez+MFgwKk7uIbINJ70tE9Rleeu4AC4tN7t9dYSgnMK2I5tIUK9NHafRXaFa3MZiHgZzA8fJ4hSJuVMPwYXpuGdcx2S0sPNfFNm1so5es/iYEikZ5BFG02Nz/We4szfPU2VlqyRz1xwYIvQh/+gArjYiXGwmlYhlHphQdQZyDxuwstVNnWWwl1K0qTt6hvyixJFky99kXmD+7yNe/cQd927ey9+P3YtgwAEjbQdoOl83MiS0oObSLFoYhEdLCLpXIlQqUcrAad+ANQG4vm0bK3DUacuTcEU7MpZy4dwjH/P/Zu+8oue7rwPPfl41r0UQAACAASURBVN+rHLqqc6MD0I1IABRIikEUSdEmJUoWJdmWZHvG8sj2eCSt43rtmZ09Oz4+TmufnXNsj2XNWl6tbAVLomQFilYWcwaJ3EA30OicqkPlenn/KFSzATGAARBB/T6HfXgIVP/qvVeveOrW/d17c0jOOJW5CZ54apoptx36dpHo6WdrStqYbm5mOjD0fXSnnqFfOsv06GnO1uJcPyAT2gH62aeZPT3BE2dq1DtMOnbtoKMnQ46LHJQoCIIgCIKwyes+8GhRFIVoNEoYhjiOg23bTExMEI/HsSxrY6jg5i1Tm4cPNhoNbNumVGoWQKfTaeLxOJFI5FUNI3w5jGSO/O4b6T6xyMD0M8w8/DCj36/jNHx8NySQJUJJQpF1VGsb1//6nXT39fFzVyfJx9XmB+70CNHdv8Ed/kG29D/O4yeXOD76ab5+zOcrQUgoy0iyihVNocfaSOwcIptLEZEkXroeOIVmGVz/a7/L8Nw0fPV+FlfP8uQ//p88FEh80ldQVA1dN9DNOIaZYM9uja15sAyaxdyxq4j29PKh3ykyOz3Hl3/wBOsnH+QTf/ApAkkhkHR0K44Zy7D91h0M3wieAsgy6tCNRFPdvHPPvzA+cZqH/u//lR9IMp9RJBJD+xl4z+9zbV+M9+98rabXJUEy2bFvmJQ/wfcfeILCiWke+5nfoqgn2K1AWCsw//1/ZrTq8L16A98PcT1QVQlVldB7bubq/2Und924g6v6IW8Cto9bmqFamOfkuElONykHAcnX6Kib4oDB7p/6WXq2DhN861mOnXqGRz55kO/5EIQKyAZy7m5yvQP81/e+la2dCTKS9FwtkNUPWpbb319mx75tfPnhMcbHDvKPf+QSnBuKKBtJjNt/l63btvLOd3XSlzJ+PI0CBEEQBEG44l0xgUerzkPXdSzLolqtUq1WUVX1vIxHEAQb2YswDPE8b6Omo16vU61WsSyLeDyOYRiXfFr5ZqoRJZLrJ7XQoCNymupqgdWFZVZXG1RrLq5qIWkWbQO7SEe6edP+axnqbWdXm05EPzcZ20gjG2n6ttpktCqr6w+xPLnE0dkVlop1akQIVZNc9wjJfJq2ZBQrGUGXpI0XW9FN9HiGWDRKOqahq60+RgaKqtKxcz/xjg72HzvMxESF46fOUKh4TBVBNaOY8QyZDoNsTxLVMEhHQVdpZk30LJocYfv+vWRySQ49c4iJaoGTY3NUfYUSFrFsL6nOJN1OiKK3htdJSMludFllW28SubrMwWdOUqg5FF1IugncZYct6ZcesCdJMlokiRkPSdctElEdRXq+b+l1QCPT0YEy3Efq4QZWbZGy47HuS6BbzcYD5SUaKyUm5wvU7ZByA6xUB7G2HnZePUD/mw4w1JVhMN5cMbAlJFk+9xMinStuuegP7IqFrMVIppMoiThRVd6YHL/52CU0Mr3bSKUtRk5M4hemOPPsJLPrDdbJocXb2Ta0g3T/INft6SIf0zA3z2VR46DE6BkeIZsOOTg6TWl+kSfOLFNsAKl+4u0d7B8+QO9IN1f3R4mrItchCIIgCMIrI73Y9qSV9dIrGlAsSRKJWARVea124z9ncwajXq9j2zau6278/YXns7l2Q1VVTNPEMAwikchGN6sLH3epBJ5NYFeo1uqUyjVsx8V2XTwvIAhCQkkGSUY1LFTNIJbJYeoqmaiGLD83nRrAt6sEToW19QqVao264+H6AQEyIKPqJoqmE0lmMQ2NtqSJLIFMiF0sUCvMUpSzlJU0PRmTTExrXUAIHXzPpbyyjG07rJVreD7YPkiyjKyoqJqBqhskUikisTgRFc6NhyAMA0KnjOfYFJZXsB2PSt3FB3xkFFVH0Uzi6QzRZIq4BqbcfN4gcCnOL2I3GqxUbbwgxA9BseKY+S0kTZX26It3IAs8l9riaeqOz5ybxbBMBrqTKLL0I619wzAkqC7hNUpMLYfUXJm2/h5MUyVuF/Bsm8XVKq7n03A8ghD8AGRVQ1F1rEQaIxonE9OI6Epzbd/FWZuk0XCZXDNRTZPuwXZ0RcbkJQKQMAB7GcduMDFVI1B0Yn1bsHSVrHbBDrMwhMAm9B2KK6vUqzXWazaOH+KjIskaZjyDaRnk2xKosowun79GGIaEboXArbNcWKdWs6k2XPwQUAxkzSCaymGZGrm0hSJJ57fbFQRBEAThihWGIZVaHcf1XvrBz/O7vusQ+B7RaPS8L/Mty3r+FkpXWuDRYts2tm1TrVY3WuO2Mh6bz6m19UqWZQzDIBaLoev6ZSsoFwRBEARBEITXo8sdeFwxW60upOs6mqZhmuZG0XjrZ3N73dYWrVZ2Q7mEwZAgCIIgCIIgCM/vig08WtkKVVXPy3QEQXDe41r1H62Ao9UlSxAEQRAEQRCEy+eKDTxaWoHE5WiHKwiCIAiCIAjCK3NFBx4icyEIgiAIgiAIVwaRJhAEQRAEQRAE4ZITgYcgCIIgCIIgCJecCDwEQRAEQRAEQbjkROAhCIIgCIIgCMIlJwIPQRAEQRAEQRAuORF4CIIgCIIgCIJwyV3R7XSBjSnlL8dPbhve5rUKg5Aw9AmRCZGQZQn5J/aaCIIgCIIgCJfDFR14hGG48RMEwcbPZpsnl4up5SHgMf/Mdzjz3X/iafNWjlg38aG3dnHTSPrHfXCCIAiCIAjCG9gVG3i0Mh2tYMPzPIIgwPf987IgiqIgyzJhGCLLMoqiAD+urEcr4+AT+j6e7+P7AUEYEmxK3EiSDJKELKvIsoymnwuagFd31CEQUJkfZ+bRf+XJWIrvxUa4fXfmVa36WgjDkNCzCYOAhq8QImGaGrL88s87DAN8p04QBNjeCzxIkpFkBVmSUTUVRZGRgct7W4SEIYSBRxj4uK5PEIQEYXjuTpFAkpEVDUWR0DUFLrwPwoAwDPBcl8AP8IKguSZS8x5SmtdQ19Tn7qFN5xiGIYT+uTU8fD/AD849v3QuaFd1ZFlCU+WN981PcvguCIIgCMIrc8UGHo7j0Gg0KBaLVKtVXNfF8zxc193IekiShK7rKIqCpmlYlkUmk0HXdUzT/DEEHwHgUZs/TunM4zzy1DhPHZ5kaqXISqVOA5NA1oln8ljRNP3bbqG7r4O73reflKWRu8xHe1kFHuuP/T+sTI3yF0/uoax18Pv/2+1052LkAeVlLOVW1hj93H/h7NmzfOKJOiX7/O14shlHiaRp79lDrnsHt9y+j+07t9BrQvyyviN8wGft5P0UZ45z7/cOc3pqmdNLFapeCGYGM9lO1/53MrKtiw/cfRVxVSHZ+vUwhNocYX2Rx77xLU6fOMVDJ5dYLDs0tARKJE33ntvpH+jhvT/zZjKWRof5o0dhLx+hsTbBN796P2PjsxydLVF2wLXaiWa62PPWu9nWn+Putw5iKhLGZbxCgiAIgiC8cVwxgUcri9HaVmXbNrVajWq1SrVa3ch4bA48ZFkmCAJkWcZxHMIwxDRNwjBE07SNbVhweTIgoe+CV6RSmGF27Bjjo2c4emyK2fUSa7UG9kbgsY4Va8NhBAedUhBg0MxXvGG/aQ5D3JUzVGcO88yRGGtGSNHxaHsFSwW+S/Hss8yfGOWxJwNKrkwyZmxkCmQzhmIlWSmpZFYluod7sPLtZPMaUVV5DTJLF8d3agROicLsBPNjJzh1cpRTkwVOL5epuSBZWcx0lVqmQDQVpxGC9dxZEuLjlJexC2eYHBvlxNETjJ5eY6nq0lCjqJE063IPdcfj7NJVeBmTnKkjcy7zEbgQulQKM6xPjzI2Osqx0VlOLlUpu+CZK0Qy60j5PYShx8Kb+siYCjldvtypIUEQBEEQ3gCumMCjpVqtsrKywvr6Omtra0SjUUzTJJVKoes6uq4jy81mXWEYYts2nudRrVap1+uMjo6SSCTIZrOkUimSyeRLPONrJ1gfxzv9JX5w73H+7h+fIBy+iXDfHdx1VZ6RnjgxGqiBS2V9nlrF5dRxm4hXohiGmz5wChdNT8C2t7K1u4c/+ND1xHQVC3DLc9hrp3nqwYMcevw73FOr8oX7i/zZf7yK63e3EeHlZVheqeKxb7F2+Gv8z28u8f0jVfpuuY3ON/fyrr40SUNBa1TwfZWSlyPXHceSNr9hS8Aqh775WY7f+1XuKe5kzD/Aez96M/09adq9MWqFeb772S9SWOrgf1+JctOBfv7rh/cRUySiAPUzUB3nvk9/lof/7TFO9r2DxvAdfPgj2+hKhqiLP2BxdoHPffFPefjIfk4ZPdyyLcVHrk29cQNgQRAEQRAumSsm8Nic6ahUKjiOgyRJaJqGaZpEIhF0XccwjPMCD0VRcF0X3/cJggBJknBdl0qlgmVZ+L5/XubjUvIbFeqLZ1heLDC+JNF7VRvdg9voH+5gpC9JgjpqYFMsWFRKdRpFFy0bw5IltAvWCpwavl2lVK5SrTWwvQAvCAklBUlSMaJpNEMnm4miyjKadJFfUochBA6+71JZW8VxXIpVGz8ALwRJVpE1EysWIxKPE9MVLE2+YImA0KvhuQ5rq0Vc16NquwQhBGGz7kDRdCLxJJFYAstbQXXWmFla5+xijUa1gOsanD05ir8WowToZgwj20VMV2iLXOTrJatg5bEyvQyN7CBlqkQBtxSnsSJRGD3OorbKXGGReW+etdoINcAElHP1ML7r0CitYNsOa+UGXhDi+SHICpKkoOhRVM0ik40RiepoXESP6sCGsMH60hyTJ8dZKCVYUdu5qmuA/q2DDA9mSZsKWq2I54QUShrxTARdkp4LiNwKuPMsz88zNr5IOf9myA/RMzTC8ECGTleimlQZz3r4xRKPjk8w12FRsAEdogp4tVW8whlm51Y5NevC7g4yA9sYHB5hSzpES04RV0LycoHV6gJj4wtsS0jUSaE1lxEEQRAEQbhoV0zg4fs+1WqVtbU1FhYWyOVy9Pb2EolEMAzjBbtWtbZWpdNpHMchn8+zsrLC4uIiiqKg6/rGGpdapbDKxCNPMrXcw1Lvu/iZn76DD/7KLQzpCnlFRiJEIiQY2kEYhOx/S4gky2im3ix83rRWff441dOP8tVvP8JDTx7l1EKZlYqDq7WhRLJsu/EX2TI4wK9/6EbySZMu7SK3D4U+1Geor8zx4Gc+xcTZGb76yDirNY+FOhipTmJd29l/821c81N3cvNAjL2dkfPXCBzcwjMsz03ymU99kcnZZR49MU/NhZKrEct2kuoY4Pq3/ywHbr2L/UtfomPlB/zZpx/lh4cWKDonCSWF3//AJ1DPFX2nd9zEyH/477xtW4KPXRu/uAsuqaDl0GOdtPf2krG0Zn1E0EUYXE2svMye8Dh/cXCe8dFHma7uZYJuIoBGCNSor01y/Kt/x/GxGT73nSMUqh5zZQ9Fj6MYSXIDbyHdvZ8P/8ZbuObafrrgpbNT7iw0DvP444f58qen8d/zB1z3C3fx4Rsy7O00MVS52d44DCAEPwBZkVHPFdoDsHISZu/l0Ikl/vVkB7vf924O3PZT3LLDZDAho4TtBL1b6f1Pz/LUs4vc/+dfoRBd5TtTP8W+rEx7GxTHjrDyxOc5tJjnSfMOfu89d3DtzXu4JqGSVEDq+2U6eo7z26ce4tFph/92z79ywrmGE+/cQqcE3Rf3KgiCIAiCIABXQODRqu3wPI9arYbneaiqiq7rWJaFrutomvairXJbHa2g2QXLMAxUVSUIAur1+sYWLbi0tR6SRDO4CAICzyMIwZc1FEVG1370e3LjeT7BBnaRoL7I7Nlxxp+dYGY9oGbmSbanMDM+vqyBYhAUxiiqdQ6NDdPbnqStP46mvNi38SHgEvh1VsaPsTI/w8l5m4WyTjTXg+wHmF6Aopmo6hqN5UnGDh6mTx8hm4yQ0SGiBOAV8epFTh85wuzMHGcKAatOlFR7L7EA0qGEHklgWSGaFOK4EOoZlEQ3XW0J+nMlTq4l8GST3qE8lqFiAIn+HvpSKtnIy5l5KYHUzEzIioqiqs0b3vMIAwfPdanWPVzHI/C9Znex1tXwXcLyBNXFCY6MLjK5XMdPdROLhQy0hUiKgayaRBImESVAlkI8Wn3LXlzYKBOuTLFerDNdidAtOaSNdVanlzhTCKh7EEoyaiSJYUVo7+rCkppF5a2706vXcFeWKDckVqUssXSS7s4EsQiYGoBK6MdIdnWSmmmQ9E4i19eZX/cYPHdf1ctl1uaXqYV9uMkuMqkE3SmLiAq6DGgaVjRJZ1eKbDEgXF2kUVyn0AhJaBI/koYTBEEQBEF4Ea/7wAOa2Y5Go8Hy8jKSJJHP50mn00SjUWRZ3ggqXkgrKGl1uGp1wPI8j6WlpY0uVy+1zqulGTrp9jTRsQba4ijz0wc4eKZCvidCZ+biNq54a6PUxj7Lff86zd9/doqhu+6m5+6beP9IlqGsgVY9Tn11hnv++hNMHVT580oHu3f1s/Nj+0kqEpEXXX0dp77Iw5/875wem+Xz0t3EO6/n1/6PG2lPqvQlHcpTz7J48Gt8+7GH+dqXvkf9t36T2UQvP90JW6M+lA9RmR/nk3/2N4zPu5wc+kV6B/r4jZ+7hrZoSIdVo7I8z9rUBPWOPA0JoiN3k4rfwe8VXT549dN85PtvZt3o40/+5ucY6ErSA6iygqwZKPKrDwz92hLe2klOjY3xw4NLzFW2gx5FlRQ0zn24d8q4Rz/P9LFp/vrLi5j9I9z4kV9nRz7KrT0WgV3CaxSZn3FYWfbpyz5Pu6gXev7lObxnHmBu3uMII/TVjtJXmOALn3mK5cklJtbAliOkt7+Z7sFhPvirv8pALsYNXRrKudOvrqyzPnqGxUYHy+l+unqS7OuH+OZb2DDRhq4isRgyrH+NWmOJoxMVBnQV+mB5scDokRkqxp3oI/vpSybZpnFe1yojYrBl7za6a0tEV8ZoLG3l5BLEkzAsRr8IgiAIgvAyvO4Dj80DAn3f38h0bO5K9XKyFLIsb9SF1Go1HMfZmAVyqQcMqvE0sa0H6JmeY3/7FMHsMxz6Nwm1K8VYOko0Hkc3DBLpNkzLpCufwVBVTBkkyQdcKmsFZg6fZKWaxO45QPfgMAeGu+nvSpBPaKjxLdiWzr493STmGjw9c5ZqQmHB20sYKERe6PTCAIpT+CuTnFqQmSil2XLTdvK9ffR358lEFbJRj0gwhN64loGpI4yYB7HXC5w8s871iQhhJKQ2Pc762VEmq0kKqsWeq3fQ39/FQFeepBmSNmximkFMM2gksthxiZipI6lg6iqWoSArGpJiYEWjRGMxYrzCYm+/DoXDrIwt8817qsR1hQgQ1Av4lVkOHZrixIpE0NlOvm2ItliEDM03RRj4+LUibr1KOYxjWBm6etrpyFpkMwaBZ+E7UWTZIZH0SMfMiy5K9xyHaqlIo27jujazcxp6XELJDNAe7SXVcPD9AMdZRC/AEw88yepgF33ZXSQ0iZQCnuNSK1dxQ4XQimNoGlHl/OeXJBm0CIpuEtF9XMmlWHNwnWDjOBo1DxIKWsRCU5VmLdDmNWQFxYyg6hpWWAPPplwD+8UjWEEQBEEQhB/xug88oJnxaP0oikI8Ht+Yw/FyAwVZljEMg3g8juM4G5mPVpH5pWTkBzFu+xUOON/AHn+ae5/5Z770pY/ztWwvWjzLwPAw6VyO7QduoLOzk3feeg3ZmEq7DgoeUGT57BkevecBZjs+hP62j3LjLR384g2Zc9u4ANLQPsDPf+BZxk5M85Xffxw7WOdo4+3UdYXOF9oeEwYw9RjO1BG+P5Fmxh7kN3/x7Wztb+fquIR+7jKnUlk6t+7GW/kbooe+wvcWJ/neg5O8vXsLYVpj5fH7mTl+hEONN+G3D/EHH76TgY4EO3Rp49t6cn2wdR/h5mF0/iW44PY6jH+esSMhv/Md6YIal5Aw0AkxGL55N9tvvJXhfBuD5/42CAK80ipOrUbN7EHP9rJnRxd9EY2UBpybppHratbjv5zbsF6vs7y8TLm4jFtb5clnZQ5PW3zo197LVbv72RNbQy0t8NQn/4qxuVH+518VGbn+TXRfO8JQXGe/BY2aTXG5iIMGyRxRzSDJhYGPDGoCRY+SjHg0ZJt6sYZTb77t3YZNbd1FyWhEkxEMVfnR/yHICkQSaEaBJCVkp8ZyEaqxiz9fQRAEQRAEuAICj1a2Y3NW4sIZHBer9fhW1qM10by19qUmyQZo7eS2XsfedwVIewtsnVul5MjUfQlNk5HkEquHfkj5ZIzPzy/T3tXJ7bcdIG25tBur1BoV5pc8lqtHWFv6DN9x4qw9fcHXz34DFh9lebHMUkUjdOpUamAbvOC+/DAMqRfXKS0vUqnNsrI2xw8+90mOZOI8a2z+QOsDDnNPPcHMrM94skE1WcXzHMJQYm2twspaFSndgZnrJmeqZFQZ+byuWlLrn+ee/7W7zM9RTEgP0dad4IYDfZhygB7YNFbmqcydYdLtYdbrZt+OIfbtydCW0DaOSVJ19O6dxEvTbFXG0WYb3PtPKbrSCUbzaVLJFKlUlra2FMlkDEsG7WUnyxRAJ79tD/md17NrZCu7+9ro1BMoqRh7brsec3yBvrEp9LU8h85UUTtD9m/RaU09v5D0gv/RtPlXApqvZrDpsc9/Cq0/DX90EUEQBEEQhIv0ug88gPMCDwBN01CUVz5poTXJfHPg4fv+RiH7JSNZoFp07umic89Pc21lHq+yyOjoaebnF5k4eZSVpUUe/uE3WVx3+ax+kr6du0nvvoqhnE3eWKJSW+fsrMdM/SGW7If45+/BP7/gE1rAdlSnRrkcUjeBF/qmOoTyygprczOUyqMsLFT5/F88+pKnZGZrRNpKeG6DIJQpLBdZXKog5/uJdQ/SZai0KT+meXNaDDreQtfWQf7j799OWvdIuUUKRx5m5uGv863ytdxfvZq3XruHt1+fJ7/pVyXNxNh6HelGlL3KPYyNHeIf/uQwua5Otu/ZzuDgMCMju9izZytD0Rg57ZXUWmtAhC1X38iOO9/P9fs1rsqdy7oFVbo73kn+2WPc++m/ZH0lyUNHi0Q9iXDLa9PItrl5T8QRgiAIgiBcHldE4NHaUiVJ0iuq63g+m9e5HDM8gI1P361nU4wEkqTQNWiRyA/S0buVWrXIyPZuFucW+dyXTxGsyPzwsVnWhySuub7VN0khtf0GBrbdwg29GrvzL/QyqkCWVGcn+/IabZGLaKkrKyiJXaS2RHnnB24km4qS54W7Yamd+9Fy29jZG+f59kupgPrjmjYnyWCm0GIZcrkcGUMiGWSJqSHZXIzigxOEj32DySNpvqCleN+uBENZ49yv6hDdRnogzrs/+rvMr1a4ar6M63u4fgV/+kmOnXmck0/vQksPccdd1zE83Eu3DpGXiIk1TSUWM2k2UtNJxSN05lQMY9O9KCtgJFGtOG2xAE9xmC5UaJRNIIlu6sTTMTQ8qKzR8BwqgLf5icIA/Cq+W6fSUHACDTNmohnN+8XQdeIxldD3qJcbOJ6PRzMPs/GSBT40KviOQ4MYkmqSjoN16btPC4IgCILwBnNFBB7Aaxp0tLQ6Yl3W4GPz8+sxZD1Ge6yd9tYfBjYcSLIwMcrRb/yAyTWXR59ZQPZNgjc3v5+WUEhsvY7ed/w277nO4r07mx2VXvoMLqKQQlKRo0Mk07285yO/xdbeNnbwUtuImq143XrpvD+TaH6IlVtfqV/uSywpYMTRIinSmSyZiEYKkNpTsHuA8sTfQO17PHTyOh52Rrip22Iw0wo8NIgMkOrr4ad/eZDSyhL7jj3DzPQ0R48e5cypU4wfP87ZcJxFeYTEUC/alh4yKkSUFz9RTVOagYemgGQSjxnkMgrGeSkTCfQ4qhklHQ0oKS611Sp2pTnDRDd0YqkYGj5UijQ8l2p47hU+9/RhGIBXJXAbVG0FN9QwoybqucBD1zWiMRV8H7vawPUDvLAZZEqb17CrBK6LTRRJM0hGwRTTAwVBEARBeJle94FHK+CQZXlje5Xruq8qUAjDEM/zNiabK4py2aaXvyRJglgKJZEhHVFYI6RRd7HtOIS9xKNZBvskDtWWmH78CMv9Q5R2tobevbrnTeRyuKVOYvU51ksOx2dcfA2G86C95M42FVnSaW9PUVuJE4ydoYTKRGM/vg+dyuWPO16YCbTRv3OIyM/s5+DhcZbv+xeefdMHkXPD7IpAvPXOkBTQEphpnd5dEbIDVfr23ER5ZZTS8hHuvecUjz/0BDOT7+OBUx5D2xWyL1HsoSazRIb2kE6foiM8Tb1cY3rFo55S2Gg7FgZgr+FVi6wWFWqqQaIjiZVq1vNYqQTyUB9tD5TJlk6yOF/m2AwM5iDd6uzr2niTo5RnZ5hwckT1Nvb0RmhPN08uk8swNNJB9MQq7twx5ko7mfA66FfAOncYbt1m6fhZ5mcdiukB1GyeoTbIioyHIAiCIAgv0+s+8IDngo/WdHLf9wmCgDAMX1aw0KrhaNV0wHNbri51RyuAMAgIA48glPBDCVmWmhOqzyu0DgkVjUDVMTQJXZEIgpAgUIEMlhmjI69w3CmzemaS9bU2im4HqiyhSBLSuR37YRgQAkEgIUnNydcvdqkkCaxEimgmQ9SbRK0EzC41iCZcnOy5NqsS5woCmi2OwyBobgmSFGRJQpIUEqk46XQMSkvYeoyFmkPE9slZEmrYPM+QEMKQUJIBeVNHrnPb6sIQwuDceYeE0qY6hAu2q70yOqCT6eogcfUA1hNL1I/PMLl0J/FKwJApEQuBwCcEfHRkwyDVmSQFdEsQ1rNQjzH1+Fkm65Osr5Sxl3zqg0rzPgs8whC8oJlNU1QZpGZnLcWKoeT7iMemyCoV3HqNwnqDhmPiB+fOLfAIa0XcWoVSQ8EOdaIpCzPaTDXo0QhaPkdcXyVhz1NcqzC95FJPKPh6c1Bl6NjYi7PUCqssByl0I0lXVicVbb7to4k4+e4M5rEq4fI0q9UqC7ZPpyk1Z3mEPk6jd0zYXAAAIABJREFUwfLMMiurOnaiHTWRJB+TiF36t4sgCIIgCG8wr/vAQ5IkFEVBVVU0rfmdfr1e32iL+3KFYYjrutRqNYIgQNM0VFXdCGouperMMRYf+wJHyhkeXuti22Cegb4suUSEuKWjeusEjSITD3+Z6YkJvnVWopbKsuO6foa2ZpHkCO2DW7np/bcy/UCRB777cX74jXcxvXwDd+7vY1tngrRaQQnqrM1PUCy5PH0mTiKX5i3v2E1Mk841gX0ekgL9N2LEe/jp3Yc5dXqKR//hbznZN0D+g7fRlY2wvd0kdGv41VVWpqZYmjhDvfc27Parub4PeuIauRvfBj3dXP3Qt5ldOMk//n0v/YM9fPCOHaQNiXbFo1ZaolyYohLbSS06wkgO2qMQS6VIZdIY5UnC9TrHJgvYIaRSGqamoJomMq9wpsfzULp2ISUNru7/FI2TBznx1CgnS2muvruXeNKjcew+Vus+D9cHiEZjjHS3EdUhYUB1bozK1OOcXqhyljw7klG6chqGJhE4Vdae/hxLSyW+eLiPeGc77/j315MytOaWulgPaLexZ3iS9+97kAcPf58Hp9bY/Qu3sL69iwFzDaW2xKlv/AunzqzwmLyb9o49vO/aDFe1mc3AJLMVIu9i9/Aqd209yNHH7mNscpHhn38zq30purwz1JbO8p1/fJBTBZPa3neS2bObW3okOs9lRJKDOzGt97L72YeYPfR9HvnGDo6fKfMrt/fSkwxQ5x9m8fQpPvvtWebNEQbufAfD+3oZkZo5I0EQBEEQhJfjdR94wHO1GKraPFzHcTBNcyPj0cpkvFDgsLlbVRiG+L6P67qEYbgRdFyOrVZevUh15ggzyzkOzpVxvDJ+UKGWjpOKGGheAb+2xvjRk8xMzbHoJ1CsNrq7E+RzMSRJI5LM0LVjhPyxo2TdCVZmz1A52s7WlIwZZKjrRTS/xvLUOKtFj+PjHeRsOBCEGC+WJ5AkiHeioDDUk8Avr/DdieM41TJjE9toVGMkwgg4ZbzyMgtnxpkfHaWh7MMzYa/bHFhndfYTx2dL6uu49TKjx8ew6w0mdiWpmBKh5lFdm2V98TTVXCf1NuhNA0hokThGPEWMAoYtsTC3iKn4LDkalhXBzOaxFIm4el5v3ldMjmaRLOjIaGxNljgxv8RauECx1kE96uGsTFAu2pxak4nFEkQkh7ghUTOhPDNPcXKBNVumEcsRjVm0xRQ0BULfpbFwnLXJAk8+aZMZ8rjeD9koi9BioPWQb29jZ3+MJ+cXKC0dYfrsAPEoaJFl1MoiY8fOMjFvU0lcRVdbF1vbTdpj5zbUmSkwBmlvzzDSrXJ0dYbldY3JyS5MuUbonKG6OMnRU+vM+e1Yg9tId/fQG5OIn4vc9GQOTdlOZ+Zx+iNrTExPs+QnOTssE2R99LPHmJucYnRZwu6M0zXcT0dnhiQv3GxAEARBEAThhVwxgYdhGGQyGarVKisrKyiKQiwW2/j7i9Gagl6v1ykUCiSTSbLZLKZpXpatVmYyR/tVt9BzbIqhs08x9UCRZ+8tU6t6OLaPr6ggK1ixDGZiOzd97L30benl/dekyEbU5gC+zE6iV/0m71SfZvfOR/nh02c4dOwf+MoTDT7jeLiSjiRrJNLtmMl2Oq7ZTls+TVSSL+Jb6jSaFeGmj/5ndi3MYH7x68wunOHRv/9DvuuEFB0ZRTMwrCiReJZoIsc1ezS2t4Nl0syaxPcR0wb59T90mJua4vNff5TlE9/lb3/7b3FDBUcyMONZoqlO9t6xk11d4MqALKMO30w828/d+/4/xsfGuP/PP8p9fsjfSzLJbdcy9At/xFsG4nxob/Q1ekWSIEXZ/abt5JUpvnPvIywdGuOhu3tY0VNcrUBQW2b224+wUqrztVIF1wtpOKCbFrplkdlxK9e85Wre/dZd7B2AdgNo+HilacrLcxw/qZNXDUpBQJLmljEJE9AYeOt76BzZgXPvD9h16ARH7vlzHvtnj7oPoaxhxntJdfbxax/+d2zta+OmlEJk4x2bACJc9fYPMHTVXpSvPsDR40/x4Mfv5xt2gB1ayHqMeM/P0jM4yB9/4Db6czGysvTcm94aAL2TO/+dw9U37uLz9x1l9NRD/P1/ruEEIZIeQ4vnyN35h+wcGeRn39tNV0x/HdXqCIIgCIJwJXndBx6bh/4ZhkGj0SAIAlzXxbbtH8lYXJi1aAUbrUyH53m4rksQBCiKgmEYl2WbFYBiRLDaesm0NejNzeO5Vcpln8C1sRsenmohaRqxRAfRfA9bd+5koCdPf1IjoslIgKTFkLUY+Z41ouEa00tFVpYWKVdsio0GdQJCBSzJxNKjpNvipFJRdKm1RUlCiySJtg+Qj7axJWoSNVWalQUasiKT7tuGEU+wfehpLDXk5Owitu9Rr4JqSKBEsbQoeqqdeNwiEwFDoZmFUBOopk7vthHMiMnQU0fRsJlZqOMFClVCMMFQoqiaRtQAVQYJCSmaRw1gYEsHOHUOH57CbriUPJCrNWp2gO299NQJSVYwM90kajG2yCm62iJo8vNt0dIAlUS+Cwa30pV1KbghsgQeMkokhREpk9Ql6rKPb9exnZBqAwI1jqLlyHT3079rhN5cgs5Ic8VAklGsFEa8QVtbnEzKwpCab7ZzdzMgE8l0YkVVBgbH8dYXmV6fYb1Ux3Y1As0glu0j3jXIjp399LfFSKsSykZ8rCKhEM/3Eo0qDG4Zw1lfYWq1RNFp0CCKakRJ9Y7QOdDProEsbVENnU31MUoEZItc7wAxy6P/8DTV4hrLqzauDegxdCtH57ZdbBnqZDhvElVFrkMQBEEQhFdGerGheSvrpVc0W0ySJBKxCOqrGPJ3oVbwUKlUWFlZwbZtbNsmmUwSjUYxTRNVVVFVdSOIaHWv8n2fer1OvV5nbW0NXdcxDINUKkUymbx8xeW+S+jZ2LZDrWHj+T6u5zeLqENoVplLKKqOrKiYsTiaqhA1msXb5x4BQODZBG6DWr1Bo+HgeAF+EDab2EoSiqohKyq6FUPTFOKWtlHE7dXK2OVV6nKchhwlHVWJmWrrQgMege/TqJRxXY9qwyEIQ7wAkGQkSd5Y34pGMUwTXW4GEM0lAvAa+L5HuVTB83wark8QNpvsSoqKrGiY0ShmJIqpgCY1nzcMfGrFIq7jUXFcgqA5WVvWTLREGxFNJmG8ePvjMPCxi4u4XsCaH0fTNNrSVrOYn/ML08MwJLRLBG6dQhkcTyKey6BpMqZbwfdcSlUbzw/w/IAgbE4Ml2QVSVbQI1E0wyJqKBitCxD4eNUCrutTqGooukY6l0CVZbTNzx94hKFPo1rFtRvUbA/XD/CRABlFM5vBWSKOpsiYygXbCcMQQo8w8KhXqji2Tc3x8PyQAAVJVtDMKJqukYhbyJLEhbvUwjAk9BuEvku5XMNx3I3XCrn5GhuROLquEo9ozSYCF1xDQRAEQRCuTGEYUqnVcVzvpR/8PL/ruw6B7xGNRjdqsQEsy3rejwpXTODRUqvVKJVKVKtVqtXqRtDRylxcmL3wfR/f92k0GjiOQ6VSwbIsYrEYsViMaDS6ccyCIAiCIAiC8JPicgcer/utVheyLAvDMEgkEjQaDarVKrVajWq1et62Kjh/4rkkSRiGQXd3N4ZhXLa6DkEQBEEQBEEQrsDAY3N7XcMw8H0fSZI25nq0/t16bKv2Q1EUNE3DMAxUVX39DAwUBEEQBEEQhJ8AV1zg0aJpGpqmbbTVbQ0VDILgvMdtnnq+uZZDBB2CIAiCIAiCcPlcsYFHa37H5k5Wsiy/4FarzRkOEXQIgiAIgiAIwuV1xQYecH4AoVyCQnZBEARBEARBEF4bV3TgASJ7IQiCIAiCIAhXAtHWSRAEQRAEQRCES04EHoIgCIIgCIIgXHIi8BAEQRAEQRAE4ZITgYcgCIIgCIIgCJfcFV1c3mqb+3KJgnRBEARBEARBuLyu6MAD2Jjb8VIDBFtzPFoDBAVBEARBEARBuHyu2MCjFXB4nofv+3ieRxAE+L5/XiZEVdWNyeWKoqCq6nmDBX+yNK+L16ji1ko0pAi2ZJGMqFi6mIMiCIIgCIIgXDpXbOBh2zaNRoO1tTUqlQqu6+J5Hq7rbmQ9JElC13UURUHTNCKRCNlsFsMwsCzrx3wGPw4B4DHz2Fc4/qW/4oeR9/BY5B384bsHeMf+3I/74ARBEARBEIQ3sCsm8GhlMYIgwPM86vU6lUqFer2O4zgbW60u1PqzMAyRZZlKpUIQBBsZkNbE88uT/QiBEN+p4zcqlKsNqlUb2/PwgpAACZBRVBVZVjHMBLqhk8pGUGUZFXj1RxniVFYpzZxkLrbAWKxGqe696lVf9VGFIX55Ac9uMFuN4EsaXV1JdE1B4+Wdd+B71AtT2LbNUiXAC86vBZJkBUlW0YwIqm6RSEaxLANDBuUyJsF8u0rg1CiWqtTqDRpegB+EhJKGJKuYsTSGoZNJWaiKjAKcd5uGIQQOYeBSXivSqNcpN1xcPySQmueoR5LNNTJxVFlCk85fIwxDQq9G4DVYXy3TaNjUHB8/hFDWkFWdSCKDaWhkEgayJCHxWtyHgiAIgiD8pLliAo+WarXK8vIy6+vrrK2tEYvFiEQipNNpdF3HNM2NOo4gCLBtG9d1KZfL1Ot1FhYWSCQSZLNZMpkMqVTqMh59ALjU5g6xfuL7fPvB4zz4+Bjji6sslWvUsAhkg2Sui2gix/Cuu+gf6uWDv3oD2YhOB2/gD3yBy9rDH2fp9GF+9/4DrBu9/NVf3k1/Z5Iu4OVsBHMrqxz95Mc4NXaKP/1hjfXG+YGHbCVRo210D11Dx5b9vPM9N7Bv/1aGIpDUXtOzelH12cNUzz7Jl+59gCeeOcnoQom1qoerd6HF8uy69ZcYGurjV3/hGrJRnbbnO7baHGF1lkc+90WOHzzCtw7PMVu0qWoptHiO/mvuZtvIIP/hl95GLqbR+zyJPnvpELXlUf7ln77JsWMTPHm2yLoNbrSLeG4L17zjl9k93MUv37UdS5X4ScwVCoIgCILw6l0xgUernsO27Y2shWmaRCIRotEokUgEXdfRdX0j8GhlOVRVJQgCZFnGtm2gGcBEIhFc192o+7jk5+BUCGvTLE6OcfTpU5yeq7LoxdCSGrm4h4cGkooZs9AMGa9coVGuUgtDYpf86H7MQgjsMm51hcJqmTWjhhOE+K9kqTDAqaxQK66yVI3iyAZDPWkUWWoGMIqKpCootUXWJw5x6lQPoZUiM5IgmtKbmYXX9uzOPz6nSNhYYXZijDMHR5lYcljyU0TbYphZ8IkgqTLO/HFWlAqHTg3Rk4+R2BJFlSRkQMIlxKU4d4bS5FHGJgucKvhIiTzpaEhSlpFUGXdxlBXD4eDobgY74uS3JVBpXgfJq4BfZe70GAtjR5lYcpmzY8TaophhiC9LKFqZpbFnOSuXODTXR3fcYDilXpB6EQRBEARBeGlXTODheR7VapW1tTUWFxdpb29ny5YtWJaFYRgbXasuDCAsyyIMQ9LpNI7j0NbWRqFQYG5uDlVVMQyDaDSKYRiX/ByC4mnc0U/zwFdP8H99/Gmsa+7C3Ps+3v3mbvYNpEhSQwts1pfPUi7WeeZxB8MrUwpDIpf86N6AjAQM3cngQD9/8rFbSZoaEcBeP0tj+Rj33/sDHv3el/laKaTyQJ3c711Den+eKJf2jeGvjeJN3st9X3qcT33uGbTrfwFj3w38yp197Oy10NePUV6c5p6//gTzZ1L88UoXB/ZuYdtHdhKTWxmHMrDMkW9/gWe/9AXu8W5iXL2a3/j1u9g+1EaPc5TK/AT3/PUnmJlt54/m2rjlhiG2/9Z1xBWJOEDjLFRO8J3PfoHvf+1RJvf+Mv7WPXzsvbvoz4A2+zVmTk/wN//jL3n02AEORXdz544Mf3Bz9o2beRMEQRAE4ZJ53Qcem7tXVatVfN/HsixM08Q0TTRNQ1GUl+xS1Sowb/2eZVkEQUC1Wt3IlMClrfVwajWK01OsFj1WtC1c1TvA9jcNsW2ojb6OGFEaKIFLLKpRr9h4noeaTNKuyiQuWMurFHDLy0zPLbFUWKdUd2l4AYFsICsGifwg0Xic4a15TE0hIl/kl9RhAF4V166xcGacSqXG9HIJ2wup+yBrFlokSaa9k7auLtpjGpmIesESPkGjQKNe4cz4JNVag+ViDS+QcAMJ1YigWzFy3Vto6+gh0ziFWZ/hsWOTnDxeYG1plKq6wg+/bnIiHaENMFPtJLZdQ2dcY3ubdpGvkwxaEjWSIdveTsrUiANuDJy4zLb+Uaq9OgV3jfm5adbt3RQBE1AJAQ+3XmF9+iTFUpWJuXUaXkDdC5BkDUnRMWLtGJEM24bbacvFsHjpN5VdKlI6O85KKWBZ6WX/QD+DbxpgoC9PZ5uOGmmQ0HX278yTWJZ4ZvIEq1mf2fp28qGMpQGNFaidZGFhnePzCtqeIXp7r2agv4eBzgRt3hB1XeHqvZ1El3Semj5OcUZjonQt3RbEDbBXF2nMHGVuPeCs10XX1iGyu7bR39tJdyJE1faihBZv6nuQGb3G0WOnWIj3s0KWCBC9iFdAEARBEASh5XUfeMBztRqFQgFZlmlrayOVSmFZ1kbQ8WJaQYmmaciyTDKZxHVdXNelUChgWRaWZV3yGR+11XUmnz7E3OoQhc63sfPmm/mVf389fUhkzzuFYQhh7w2A9PzBUGNpjMqpB/i3b9zPDx55lhNzRZbKDq6eR4nk2HHLhxkc3spv/qdb6ExZWPJFbh8KA2jM01ie4Yl/+TvGT0/zhftHKdQ85qpgZrpJ9OziwO13csM73s3t2+I/EngQuHhrx1iZOcOXPv5PnJ5e4sEjM1QcKLo68bZuMt1bufndv8ib7+jh2oVv0lX4Fn93z0G+++wyQXgSJIk//dinNo45s+dWdn70H3jHjhQjbdrFnYukgpZFj+Rp6+wia2k0K3o6IdxHtHCa7Y2nOPnIEkdOP8189QamgTRgEAB1GsVJTv3b/+DI6CT/7zeeYaniMl3yUIwEqpkmv/VttPUe4KO/8zZuyMXo4aXfVOWFBSYffZSZ9d3M527nV2+9gbvf9yYGJIkkAO2EHf30/Pz9HDo6y2f/+D6W1GWeXruT7Sno0oC1MzB1H8fHV/jWmTzXffinuO6Ot/PmIYmBGEh0EHT20fdLj/Hk07N85b98i7WUw4Oz7+NADvrzUDo7SuGRr3F8eYBDxs28586bufHW3ew1JBIy0NNLPn8M67av8+AZl3vv+w7jxnWMf3AX3ZIIPARBEARBeHle94FHGIYbgwGDIEBVVSzL2ggi4OVlKWRZRtO0jYyHbdv4vo/v+5d8toeiKURiEQzJRSkvUlovM73i0hZXaTM3l09LrX9+hF+dx1s7wZGDR3niwVHOOp1YV3Vxw35QZQgDmyAIKP7/7N13lFzXfeD570uVc3d1dU7oRs4ACTGCFJMSKYmSbNGWPLac7V171t5xmh17fHZmZ+wZh+MwssaWTcmyacmiKIsSSZAUCSYwIRC50egcq7qrK8cX94/qRiJBEiRAEvb9HPbBIarqpfuqcX/v3t/v5g9jj8/zyLNd9Hc2c+/OFjzqmzW4A1QxjSITzz1OamaWl5NhCkqAHR/djCM5INnYZh2rXsbKnebIww/TfNf1KN4N9AQgqtlQn6VeWOT5R55kenaRoXIHerSLmz5xA7IEiuwgSwqyrNEdD+BywNWyFW9U5Y5ryjR5NZ6caqOuhLjtttWEA26CgL99kLb1Qda3ut7BNJ/lOkzLbevoRexahoWFRYamiuQrNiguZElmJfR0jBpW6mUyExM8sT/HYi1M282fpVeVuU2VkCQZJBnJvQrZHSTmV3Euuv/z2baNaRjYjoyjelAUFU2Wz8ktkUCS0TQ3miqjmGn0aobJRYNmWYGQTL1Upj6/QMFwUfB2Eo356WmR8bhAlhrbkDUXWmsXvuY6CeUQbiPPTLrOKo8FLVDMF5ifyVBTNyG39tLk99GqybhWRsckCc3tJt6dIJav4SokMfI55gsOIY/UGBoSBEEQBEF4mz7wgQdwZmFAy7JQFIVAIIDb7X5HgYIsy7hcLvx+P7Va7cx2bds+b+HBK0FzaQRjQbyKjpqZJJ1Kc3K2Sn+3Dzxvr26TWRinOvIt9u2d5c+/Mc26e3+U3ltu5aPr46yOu9FKR6kuTfHAH/4p47My9xub2LShn9u3NiOr0ls0eBGznuTwd/+R06dn2aPdR7irj1/96Vtojaj0RQ0K4/tJvvJtHn7uNR781vNo4TCl7g18VIWoakF5mErqNN/9u39iZN5kZN3P0DvYx7/7seuIB2zafRWKqRmWxkcoxaOUJQlv9y0Ewzfwxfkxbu+HU49fT9bdyy/9/n0MdITpAs4di3q3waFdy2JmhpicmuaVkxnSVQdUL6p0tmSxY1SwRveQOj7NAz9cIjC4gVt/7f9kU8LPnd0+rHoeo5pldrJKOqXTGna97f07TqMktIUCqhdFfqOSwRKK6kFTZDRrnmolzak5gzaXhtMpU82XyE7Mkql3kA0liLcEWNN2wSiE5kLtHMA/VabbtURZzzA6W2V9sHEX5JZyTI6kqGhRtJ61JAIBulU490w0j4u21V20pFN4c1PUs2kmM9ASRQQegiAIgiBckg984HHhiMe5iwJeagd05f2KopypfrWyfcuy0LQrW0tVi3UQvfZTbCie5BOnDlI9+QOe/LNjTLU2k4gEiTbH8fn9xDt7CIWCrOvvwufWCCggSyZQJTs/y6knD5KqrEHddSNbr7mGW3Z00d/sI+ZVUQKrMQJR7rxrO6NTBQ7vO4rurjGib6VdUxm42Gwyx4bkEYzUKC/Phpgs+7n+x2+kvbuTdd1xQh6JkMfG3bMJnyaxI7OX3Ik96Jl5Xjk4xy5vFNsrkT+6n9TYSYbrq1iKRfnEp2+gryvBuq4m/JpDQDPwuwKEQwkMXye6F2K+N27Hlafu8A6rTBlFmHqMqfzL/M/ffQGvKuMGHL2AVU0zfvwUk0kNe9MA/b3X0N0UoZPljrdjY5bzGNUaNXeCaLiNwb4WuiIegkEV2+fCDgbR3CYtHRaBaBAP8HbuIF80RNv6fpoWigTmX+b0yTX8sLudu1aF8IRUFH2Ren6WY88f5djJCXJGGdWsUyya1GqNdWmMmk4pW0RHhUAEr+YiKJ1fdliSZFADKC4vQY+FIRkUilWMWuNrb+g61aKF3KziCXpwqQrqBSNtkiyDJ4DqyhKQSshGjWwRqqLagSAIgiAIl+gDH3gA5wUeAKqqvqt8jJXpVucGHu/FiIcr2opr252sTurcvmov3z/xFC/sKfBKUxdqsIm+1auJxuOs3Xk9bW1txFoTNCsqfgUcxwLK5FJJTj5/lHT7TpStd7NuU4I7NkTP2UsfBJu46eYNtA7N8OUHhtC9MKHbqB5YdZHL5jg2LA5hTh/htWSA2XqMf3/LDlb1JugPgGu5N+rz+Ym2dbFh6DS1lgWezKY4fHSB3EYftGoUho6yePIIY8a1WPEBbr9rJ32JMAOucxbniySg44L9X4k1DI0SzD7D3IjN/z543sp7y/95QPKwpqOX7l1b6YyEaFt+h2XbWJUSZr2O7u5EDTXT2xml1afh0yQkqTG2EI7BOROk3hZfJEhidQ/RF6cILI4wfno3Rvtatje7aQtIuGoL1HLTHHn1FMdHZikYVdyWTrliUq83CgzrdZ1SvoyJAv4wbqVRseu8cTNJBtWHrHrwuS2KskG9UsfUG9swdYN62UROKHj8bjRFfv0vBEkBtx9F0/BTRjLr5MtQ099uIwiCIAiCIDRcFYHHypQqWZbP/Lzb6Tbnbu9K53ac3akPtG46t9/NreG19CcXuHcxTSpTplCuU60W0etZUk//IzOOi4PPXEd7by+f/8InSITq9PuSFEsZRqcNpuafInl0nr8+6uGplgtKAVs65E9RyBuM5yK018vk8w4VFZazl1/PcSgsLJKeniRfmGQ27fB3v/vvCQW8xNVzV/S2AIvM6Akypw0W3RXKgTyGUcV2HFILOeaSRZTWfnwdg3R6NBLq+7TwoRaA9g/R1Rzncx/bgE+18JlVSrOnyQwf4lhtkCF9FXfcsJ3rd7fSGTt7HWWXF8+am2iyR9mhPE11aJw//50krc0x1na3EY+30traTldXgpaWGEEF3G/zJNWmtfg2/QQ33/oMLnMfB+f2MHz/M/zBD3wEvCqy4yBJFrK/n3JXlL5TB1CVxkjMpSyk+FYay1k2/hQEQRAEQbjSrorAA84GH5czQLgS23xTshtwE+2JEe3ZQn9xHrO8wPCpMeaTC0wMH2dpscT0+CFSWZ1jr9XpXLeR7R+/E1sz6PPlqekVFjM2WX2Eoj7By8Pw6kUP3wv4MWUbvQ6m8SbH5kCtVKSczVCtz5PPV9i/Z2olLfuNSS68VRufqeM4Jo5jUSxUyBdqSOE4nlgLUU0mpLxPgYfigeg6on393PHJ24lqFmEjz9LxCLNaCj2/mvniZtb2drCzP0hEPnuUkqLhal1NIGMw4Ekykpnn+e9naW5LMLt+kN7eAQZWWThuN0ogiOZVULVGcvpb3U5KoBUlEGZwXQp/fpTx7x/myGtTjBhQtWVwteANhdnxqa24ZB/N6muNwQtJQjkz9Uw6Zz/OmcT288bsnLN/s/L3F4z7YEsSDuA0BoHe8H1nX1ne90UKHwiCIAiCILyZD3zgce7IhKouz003Gj3olf+/VLZtYxgGjuOgKMqZn/csAFmmeKPILj99GxO0D+qs334jer3MXXddQ3Jmii//8aMU5ys8+Ngo16xR2XWXTqMDqBHfeQ8bd/4on1zj5obui2UWyEAAXzhMZ7ebgPY2Ooyyhhq9jpZQjJ//zU/THg/RxcWftMvhLpRACxu7PUD9vNckGjkP79tNJivga8YdTtDe3kHMqxCxTRLxKP1VFhWEAAAgAElEQVRb1iD/yzM07fkqJ190caLg5xdvaGJjW2N5PhQPhLfSsqGXn/sfnaQzOe4en6FQLLCYXiR/6kle3vdNng5sRg8M8vmf/jhbd65h0APBtxyW0ACZ5g23E+zYzK/clOXH82UyxRp100b1NqEpJq3yPmZHp/mjb4eRlTCdcT/BUGNUxu13E22J4j5tQHaBilEjB7Setx8bjAJmvUS+rFKz3PgiflzL5Y89Xg+RiIpjGpRzZeqGiQFnEuwbmzChnMeq1SkTpsXlpyUCfu9laSFBEARBEP4N+cAHHvD6aVGmaaKqKo7jXFKwsJLD4TgOltWY5365pm69E7LqAdVDyH3O8oB2HdrzJMfcdGn/xGTVxehkntaIF8eRkCUJTZHwNncTWn0zm68PcOdG35uPTJxhvemrkiwjqxqKqxmf1snGG29loDvOJhm0N934ymJ7OooioygSWCa2ZWI7YDvLgct7follUD0oLh8+fwC/T8MPSCEN2sP0vfgiBXmUp+dmGZMWSG8KUk940SSQJQVczfhiYdZfH6aYWSQWO8rc7CwnzTxGOsd8aojRcZgzCuz4yHXENzh0axBU3upEZUDGG+vEG+sg0t8YLcrnK+i6heYPo1hF3CMH8CyCIflRVS+hoIrPozQCOpeGN+RDkyzkWpGablIywTpbk7eRt2OUsfQaZUPFRMPrc+FyNb72LpeG368h2SZGuYJu2egXtJVj21jVCoZuoMt+JM1N0AvuK1uHQRAEQRCEf4U+8IGHJEmoqoqqqmdWF69Wq8iyjNvtfotPv57jOBiGQaVSwbZtNE07s/33I/h4HUmGUAwl2kxzQCFfdqhWDGrVMNBHONjC2lUSL5fmGd27n/me9WQ39hIALv1qnLtfiWhbG06ti1B5ikytyMFxnYoM6zpBe8un+Aqy7KK9vQk9F8E6NERONxmu7qQe9NCrXt78hHfHB7gY2LqOFvl6Xn3kOPP7Jnlp+y9Ti2/iQyGIrHwzJBW0CL6mAP07EnRt0tm8u0q9OEQ9d4RvfvkZnv7eM4yfvpdCm87qrRrNrku9j1RAIRBYDqZlGz1fZPjplzg+vMiUbyPdidV8aK3MwHKM6m+K4l67isTeJC3ZWWancxwch4EOiC1XnHLqVczThylMTHCq3kbM08r1qwJ0NDdaIt4aZ93mLoKvLqKPHGAqu4Fho401KviXT6FerjHz2jBTEw7Z5tWoiTbWtkq0fOB/cwiCIAiC8EFzVXQfJElCUZQz5W51Xcfj8byuCtXFAodz37cy2qHrOo7joGnamWlWVzrwsPQqZiVHzVIpWypul4rLpaIqMrIkITkWODr1cpFivkzNkjAkBZdHQ3O5gSBeX5BERwBPpUp9bpSlhTgz6WbafRpBVUGRbCRsLEPHshwquoyiqvhDHhTp/PUwziVJElowhjuSIOoaJlPJkZxeIOBykYsEsdwyblUCx8axLSxdx9R1bFcAR/Xhc0mokoK/KUYo3oRXT1Mr+JhOZVFlaIl50GRQcRojIZaBLbuxZQ/u5YUNZUVBUVRkSwezRrVuUtUtLGW5bc9po3fXUgqg4G9qxtXfQ1CawpNOklrMMZaus9WrYcsOTq2IaTuUnUbpZY8nhNcL/gjYoTx2eJ6YT8ZtFKnXTQo1MG0a16eawzQtclUXsqYSivpRZGl5GpMFmNQrJnrVQnKpSKqMIjlIjoVRy1FOzzMxkWY2VYOmTrzxBK0BichydKl4/chNrYR9KZrlLOXMErPTS+TDfsqKjOboWOU82el5lhYKlNwtxPxR2kIKIU/ja+8Nhoi0txKQa3hKc6SXckwtlmiPulBUB8ksUy5kmJnNkS74kZra8IajNLnA986LygmCIAiC8G/UVRF4rIxuxGIxisUi6XQaRVEIBoOXNE3KcRwcx6FSqZBOp4lGozQ1NeHxeN5Ved63qzR1hNkn/4qXsy3sWepl49p21g4maI8GifjcaEYaq5plaM83mByb5OFRMBJxtt7Qz+r+JmTZTevAam79ibuYeniGvQ/+KY8/dC+HJ2/mszcMsrEnRrOWR7XKLE6eJJPTefZkmGhbnI/dt4uwWyJ2sYOTZOi/BXdskE9sfpFTp8b557/8nxzu7CPys/fS3RJgS6cX9CJmcZHk6dPMDw1RGvgUtY4buWMQ+qMqid0fQe3v55on/46J+df4yz9J0DfYw09/bhvNHolO1aScnSWXHCEf2kExtIUt7dAVhGA0Sj0ew1MYxzaKHB1boGpBc1zD69JQvV4ULt9Nq3RuQW5p4tpVf4J06jAHXzrOgVSY6784QDiqUz7wTyyWTPZU1hEMhtjSlyDolol6oDg1RH70BYbni4yRYHs4QGfChdsFtl4i/cJfMTub5SsvDhLp6eS+X7uTZq9GJwB5IMnp/XMMvZjCs7oNV1uEJrWKyyox+dL3SU5N8fXvpij5u9j0019kx9p2rvUqeFdOvmkNhH1sWZekumYfTz/3PQ4eGWPVl+4g3d9Et3GS8vwYD375KUaLEUrbf5Lm7Wu5s1umaXmFwPDgZgJNn2fLqw+R2v8Szz40yMtHs3DvKnpiNq7Jx5gdOc1ff3+KTHQLA/d8knXbW1knvb31SgRBEARBEM71gQ88VoKKlRXHV9bfWJkutTJV6tyyuCufuTCnY2WkwzCMM8nqbrf7PUsslxwHyTbQKznyC1PMeUso5gKZgI+AW0M189j1IuMTGRYXTdS21QS6Blnd5qMr6kKSFFz+GKGujXR2O2zoXkA3l8hNnWIkWsHOhoioZVSnRmFhmkJFIlXyItWt8yoWvfHBSeAKo/hNuteswpQUWoZyOMUZpoaOUE35sBc8YFSxq3mys3MszWVRWuuoDlhOY8E6NdSON66zeqAF1VfhtewUhekqJw9DxC2RUm3qpQzlXBKnew2SFwy7sX8l2Iw71k6rf5xaIcPc0BHsbJRQVMMfjhLsWU/Mq9AZUN66dNTbaQ8tAEor8XiAvjaVl5aSLNrjLJY7aQ6AWsujF8okZxQybh9qcR6fJhF0QSU1TnkuT0GJ4u2LkIiH6A5KeJTGiIdZmKecXmRsIkCT6qPs2JzN5LEAnXpxkcLcKCkpi5n2E5JrKFaV5NgcmXSJeqQXd7yfdQOtrGqP4JOls7k2qh+UBPHOLgY39HF0sUImN8H0qaNQCJMxx6kuLTBVClLWEgys66Wnu4WoC7zLc94UbxQ52kdXd4L1gxGO1xYoTQ9x6miRfMhGnR8jncyQ9XQjN3WzfjBOd2sQNxcfORMEQRAEQbiYD3zgsUJRFPz+xqJthmFQrVYZHR0lEong9/vxer1ncjVWRi8cx8E0TUzTpFqtUqlUyGQyeDweYrEY4XAYn8/3nox2ALgjcRKbd9PpDLPq9KtMPLfICwtpctk6lYqBqXpBcxPrGCAUX8ONv/wlVvW282M7I4TcSmMtjdh6/OFVfDywnw9t38f3n3iFfQf+hod+mCNdqlPDC6qb5rYBgs0drLljG4mWKH5JwvOWRxhF8wa58Zd+iy2LswS/dj/jk2P84K/2kKmYzJUkVLcPTyBKpKWLWGsfu3dobE2AzwOgQHArAc8gP/ebEsmpce6//ztMnczwlw8vULEVSngJxDoIt67iuk9u4pp+MGVAUlAHbybQMsCntv4Zp0+e5jv//f8gWzMpWxKR9Tez9uf/gjtXh/nVXcHL1CJhkIJs3L6GdvckD339RRZfOcELn19PxtvEDTLYlUVmH3+MZKbEA6klqrpDqQbecDO+aIKBmz7JNXffyKdu7mdrL/gVoGxi5KcpLc5y4pSLhOahaDtEObcoLVj5U+jTj/D4s2mOLBQpVh1MRyHYsYFQSxc3/MJPsaq3gx+7uYOwR0E97zYNIhFg80c+z7pd16J84zscPbCfp778MPOFOkViKP5mend+lsG1A/y/X/ow7WE3zbJ0Nmjw9oGnm7u+YHPdhzfx1b9/giPH9/CVJzIUdQeCHfjj3az/yG+xcV03P/XpDmJuRZTSFQRBEAThHblqAo+VkQxVVfH5GtmzKyMahmGcyQO5cOqVZVnYtn0mp8Pj8eD1evH5fGdGT94rijuAq7mP1j6FzSWF2MIS7ZkchYJOrWZiKh4k1UWkrY9ArIXNqzvoSMQIu2Q86soaCiqSrOKLtiH1rGP1JhNdiRBbyJMt16nhAcVFJN6NPxKnf1ULXW0h3Mv5BSDjb+mlbcdH2OrdCJ4YbVE3LNfFkiQFVyCOz5bp3bANd6yDBTVOvmqRKoHi8uDyhQg1tRGOdzDYEaPdT2MKkCSBpCGpXgLxHpocFxu3X0vTYh6tJU3NlinjxhtqIdjcxbruFroC4Nca61KgRVB8Nr2bd6KF25iPzZOvN6o1BXo30N3ipuOta9Uiq25ia66nO1Lijlw/HT0J/Ir0BtODZEDC07KacL3EtdeZRNIe+qJe4m4NT/MqQpafzdtkOgplEuk8ddOhUgdPMIYn3ELvpkHaB1pJhDz4lhPoHcWFt3Mbcbq5ZXcX0d4emhWZACtBhwsIEW5bRde2a9kSzxLIlCnXwXQUAq2DBJpa2brc/hGPgke78D6VAQfN34Qi2/Ss24qjBCjFkiwWdUpEUHxRujavp6u7nc6oh6hXXT7jZVIjqd0X60CWLdZvyeIOthHozFHSgUAbvlgrg5v66O9qptmr4FPEWIcgCIIgCO+MdGGC9rmWcoU3nZ1z0Y1KEqGAD1W5/HWMVo63VqtRq9Uol8tUq1Vs28ZxHGz7/HWYVwKRlTyRYDCI2+3G6z1/IYL3YqqV4ziN5Ozl43Sc5byTC98oSY0F4hQFWZKQJc5MLZLObMsGx8a2z9nWG21DVpAkUOSzq745loVjW9jI2CioitR4vbHhxh842Ja1fKwXHuPZRG9ZlhtleM8e4nIb2eA0Aj/HcbCd13++Ucq4cXwyF+zXdrDPvTaShKRoyFJjFfU3ay/HcXAsA8cB05GRZAlNkV93Dc+2iQWOjWGB40goWmPqnexYy9P0HBwcXvdVkVaub+P6SdI519A2sR0H05KQZAlFXS5gACwv2Ydt2Ti2jX3h9Tmn/SVJaox0XSyp3nHepK0kpOX7X1HkRnB3TjudbSsHlqcjnt9WZ9tp5RwvehyCIAiCIFx1HMehVKmiG+Y7+qxl6NiWid/vP1MECsDr9b5hV+GqGfFYsdK5W8nPcBwHVVXPdpqWA5CV957pNC1XxXK73WcWHnyvy+c2KjM1pqrI7zImkyQZJBlFvvQytZKigqK+8efOWRlbUd/Z0+3GdW0sV66+7RN99/s9d/+S2sigfqu9N9pkeV2LC98sqe+srSQJFK1RO+sNv2GN8ENebrx3dSssBynvrq2kS2wrQRAEQRCES3fVBR4rVvI5PB4Ptm2f93Nh4CHL8utK5n4g1uwQBEEQBEEQhH8jrtrAQ5KkMyuXnzudaqVk7sp7LvxZ+XtBEARBEARBEN47V23gAYhAQhAEQRAEQRCuEqJEjSAIgiAIgiAIV5wIPARBEARBEARBuOJE4CEIgiAIgiAIwhUnAg9BEARBEARBEK44EXgIgiAIgiAIgnDFicBDEARBEARBEIQrTgQegiAIgiAIgiBccSLwEARBEARBEAThihOBhyAIgiAIgiAIV5wIPARBEARBEARBuOJE4CEIgiAIgiAIwhUnAg9BEARBEARBEK44EXgIgiAIgiAIgnDFicBDEARBEARBEIQrTgQegiAIgiAIgiBccSLwEARBEARBEAThihOBhyAIgiAIgiAIV5wIPARBEARBEARBuOJE4CEIgiAIgiAIwhUnAg9BEARBEARBEK44EXgIgiAIgiAIgnDFicBDEARBEARBEIQrTn2/D+DfIrNawChlKdRtSnUHFC+S4qKpOYjH60JDRITCB4RlQD1LpWaQytVxHBkHDW8ogD8SxqOAW9ys/+o4tgXVJep6o90tW8bBhSfgJdAUwS1LeES7C4IgCJdIBB7vg8VDjzD5gz/igdfK/MuJKkRuxBVdx2/9tx9h564BBgDf+32QggBQnoMDf8qB1yb5pf91mKoRxqKb67/wGW77hS+yKwwbgu/3QQqXXS2L/tL/YOjUGD//v46QKfkxWc3Wj+/mM7/7i2zwS2wLvN8HKQiCIFxtrsLAwwEczFoZq14mXyhTqlSp1g1M08KwwEFCUhVkWcXt9eNyewjFYng0hZBbQZKk9/UMrFqR2tI0i3NFJicq0DSIq5KgUDPQAft9Pbp3znFsnFoOU68xv5ijppvU6ya27WDaNiDhSDKyqqGqLjyBEG5fkFjQjc+roQArLePYJk41S13XWUgX0E2TWr2OZYNhOWf26Yq24wo20xFWCXmUd3LUgI1j2xTmxqiVCiQroFsyqBE8Pi+dqxK4VQXvOceHkccx8szNF0lnKpiALcl4Wnpx+4L0RFTc6uV7JOwYZZzSPEuFOpMLFRxcgJtoRwuheIyQwpV5Am2bUElTzc4zNTlBxYhhorFqqUDBBN15601gm2CVKBWKpKaT1Cyo2CC5IsjuMO2tQaIR7/JIX+P7bZsG9cwklWqdqXQNy5Zw0HCHggQSLailDFphgZzuUDIA2YukuEl0d+Dz+whrcObyOyZYVcqFIgszs1RNKFuA4gPFS6LdTyjipjg+R71QpuiAeYmXSQ62o3hCrEp4CXqv5K9VE9ApLKbJJ1MUjeVzAUBCDrSjuX30dwTxuhVkzrlnL4VjQTVNPT/P9OQk6VIAgyCJhTwFC+pvp90FQRAE4QJXYeBhAwbl+RPkRw/yxPP72X90mFNjSRYzRdIV0B0FNRLBGwjTt2Yb7b0D3PLJzzGQCLK7P/TO/iEW3pptYk4+S3Z+jL/4+mOMzywxPp6lUtPJVatYkoKp+ghEWoi2dLNq+276tlzHPTf2snWwGR+grWzLqGCMPs7M5BRf+ebzzC8uMTo1Ra5islA82y3s+sRv0nbDffzO7c3cvOqdjhPVsc0Sh77225x+ZS9/+RpMVQIQvouBLev4/a/+PN0RP+s4pxOXew2Sj/GNP9vHPzx4lAxQc3kZ+Jk/p2fjLv7grji9Udc7PJ7Xs3MjGPv/lMefGec//PURDKcDi14+9Ts/y81fvIfdYejzXLbdXV5mAXKvMrT3Rf73f/5LTpcsDpfA3f1RPF238xu/cgMfv2M1ccDb+ABmOcnUD/4Tx4fG+K1vTJCvahg007f7Rnb90peIvfIgzXv/jj3TFi8v2OBdjyvYzS/8wW+zecdGPtwCkZXLb1WgfJzTLzzPV3/vDzmVt9ifBcKbILSRX/iNbdxyZyfP/94fMfH0AV4wIHspHWtJxnvdrxMa3M3f/uJ6rlsducwX8FxFYIajj/4jT/7FV3g2DYdyyy8pbnw7f51E31a+8tu7WNMVxM87DDwEQRAE4Qq4igIPG7Co5ZKUk8OcPnmCoaNHOXjsNMPjM0zPZ8gVKxR0MB0Z2ajjKpZQNT/VapVgU4JsTxduaTNtYTfdMTeSJL0vuRSepi5iG29jq1oh31qD8HbUUD+9sQBhrqpGOZ/jYFcW0fPTzMzMMzmTYzFfQzcs6noN04GaU0Y3TGq6hewLUzMtuhMaljfI5iaVZm9j1MKxTIz8LKXFSUYmZljIFUkXyhTLOsV8DZvGHREqVQnU7PNGQd7hwWNUi9SLWfI5yJZMoEy+WMNwwKIxNnKGbYBZoVoukM9myQI1V51CRadYt7Ev9xNh2wKjRL1SIJvNYjgBLIqUajp1B9716V9JkgpaFH8oRG+Ph9REgfJ0gaprDMU+xKnxPton2tnV4sHjBac8RS07wbETUxwfnmNxKUNFakKOd+MKtdITCRBpjRLtS+BPzWHnM1Qqs1C1GBqaRvLG2BmK43OpaNiY1QLF4deYHxliOJlhqiiRLbkIxQOEunoIBX1EFAOzXKCUzZJ7B4GHUamh6DbWlR6u1MtQniS3mGR0LstcHrKl5ddkF5XpCWQlTKq8lZgexKOBLCIPQRAE4QPiKurjWkCZ3OgLDD/0x3zzxSRff3YO3XEwbQfHafQU1OUpFkZxiUohw1h6hnHc7H/scVq23MzjX/i/uWdbgp+7qR2V9yeJu2nTHcTW38o6w+RXDRM0N6gqiiq/86kRHwSOjZk7TSV5hBOn5hhJ1lHDUVxemXgoSL1eIZdPoxeqLGbnSE8e5+gPXUzp/43ubCv/+ZYIzR2NwMM261SnX2NxZITnDo9RsWVCTWFstYyPGnWg/v6erfB2qUGI7KB/s8XP/fIrBL4/zEtDhyilDlBePMoPnunksNnOf/1YO4lOGWPucZbGTvC1755iZCZHse6gdfYQv/0X2X5jDz+1bTXent14r5WZNr7H5KnnGDMmyBTmefS7z3HoaIkPr74dXyhMFJPKwhQn/+mvOHBigb0pG8MOADH6rrmJzZ//KXZtnmSLf56n38lMvWUet4rf50JRrvC3t5CE0aeZmRjh+TlYOjdAsi3qp/dTKGQ5vHAHRnMzrVHQ3sV5CYIgCMLldNUEHk4tj507zOzoSZ45mOT0dJ6aaeH4WpG8TWze2E8iESMRkHHLFrX8POVCjpMHD1Oo6MyVC5RSk0zve5ZR7zaObW6n0wMJt0N+5GXKqTEOzOoslgFvF16vh01rFCSzxvzoHNWaSbZiI7uCKP44bb2ddPZ1E/fKRC6xrE8lOUJh/ACnknVG0zr4ulC8zey8YTWtbWHC2Ej1CpmxgxSKZYZnS9QMi0q9jmU7mKaNrLiQFBf+UDOeQJjugV6iTVFavDKelc6PXoKFgyTTBX54eBHdVHEI0NQZo32wBSOVxEwvsFSqU6qb2O4wsstHx7othMNhNiS8eC4lT0FWUFu2ELLD3P25daQKFi6fH1WR8Stg1hapZE5y+lSSQwcmKTsGFdsml8njnl2iXvMB7samVA+ezl20Sn18+r4dmE6NSLDIzIkJDj+ZIWtfRfPMbR3MPIVMlrmxCZYKFeYzRXTTQjdsUN1IikagqROvP8TA6n6CQR9xLzjVLPmTzzA/NcRLz0zw4oklLAccysA84wee4gV/nqwXWtwqavs2fOFmbt8UJ+JXgDp6pUh+5jSZbImxmQwV3aRY10HWQFLxBeO4fWF6Vq8iEo3Q6pfxqJexAy1JgILij+PrvZHefpmbB05zbMlgKFsnN3oSWY0xtH4nfjVA7aUTJEdOMleok7HdOKEeYh1r2P2hbjYNNuFXJDRfAqV5C4Orj7B750nKw0VySyb15DHyisGr4zsoOg43uIdYmj7CcycyHJ8uYTqghNtxx69lVf8qruvx0xqIoyoqm2+7G398A22GTenCISurArV5ktMpjr82QtGCggWSrw3Z28KGdd2s2REnErx80+vO18hFquRy5E+OkE4tUXBAd/lAc+M3y7hsg6K9iFH3Mjqbxx0uY4S8oFz4HW7kiRSTU5RSM4zMZEllytRsFUty4W9ZhU+pM5jXyRpvnnOmZyYxC/MMTWdYyFYolqsYpoVh2DhIILtQVDfeUIxANEbbqkGa/BodIQ0rO4qVHeXV4Swj8xVsKYLiCrBx9zXEmqJ0uMG1fOhGcYHKxEtMpqvsHy/jqBFQm1m3tZ++1R1E9AVcRpHjx8fJZIpkylV006JumjiOhI2KrLpweQIEYi1E2nrojPvpaPajAgoOUMEyKozte55cOsNwEXTVj9q6gajLZIN3kWyhwvh8jrrSTFVLsGlLF6sGWwmw8ptLEARBeDNXTeBhl+cxhh9iaP8x/vaxaXLLCaBqdC1ay1bu/tn7uPGGTexIaESUOqXpvcyOnODLvzfM6bk8qUqR4vQJitP30+zWabv5ZnbHG4FHct8DTD3/Tf7rnhyvzknQ8nHibXH+w8+4kKtL7P37J0imqxybM9CifXg7r+XDn/4od/5oO7sS6iUHHtmh5xj51n/ir18p8sBrFWi6A1fTZv77V77EjW1h1mEiV5cY2/tVRkan+NsnplksVpnNZqnrFtWqieIOoXqidAxsp6VrDff8xGfYuC3AhxKus4FHLQvH7mfk4Gl+9b+8RKEWwKSH7Xdt4vZ/dwOlF56h9OqLHJpeYjJTwYiuRo12cOcv/A5r1qymJ+K6xMBDwz14D60DFv/PrQGQZFa6YRLgVE7D4mP889ee4Y8PTDKDTQWHTDKNMTxDrRwHGiWSJHeQwJb7WLtF5r98MopGkqj0PE/8w9P8yTMHGDNgybrYgXzA2DWoTJA+fZRnH/g2h0bn2XtkgmypRr5cB28TkidE79a7SHSv5gs//aMM9PoIu8DJzDLx0O/z/Il5fuv7C9TNlQ5xBsiw/7vD7P8XqTFKpnrw3/b7tK/eyYauIBG/FyhSy48y8dzXOXxyigceOcxcvsxEpghqAFQ/rf3X0NS2mk9/6Qus2+hnd5fr8gYey5RQN94NP86WpIp2/T6+dijLULZA+sCzZI+f5rltJimrg9IDz5IZPsVo1iAnN0N8N13rt/IzP7KWDp/aqPjm7wF/D7uuO0a/6xSnvzHCaDqDPvEU2ewJvrP/blYvVVgb/S6TJ4b5+2dTLFYMbMDXupbYri+xa0cfn9/oxUc3Mt185Je34DgOuq5j2xd0t2tzsPAUex/Zx58NjzJWcyhYIEfW4Upcyx23bOH2O3ppv1Jxx3JuWyG1wKlnXmVqrMgSgD8CwWaaKlOE9Bzj5Wn0ao1XT6YoSc18ceCc3vsZOlAgPfwsE/se4R8ePc7zh2dYMPzUlSBd132B9rYov7SlRq7ORacNOo5DbfYQpZGn+d7DR9l3fJbxmQUKpSqlsoHtyKBFcfujJFZtpnfTVnb/2E+yoytAR0jDmH2R2rF/4P6vnuAbT81iautxh3v49a/9IZt2RGnSzh66nh4juef/47H9SX77n6dwvBsguINf/I/38bm+DtYVRonkR3n0G9/myNFxDk8nyVdqZEplTEfGwI/bFyEc76F783Ws//Cn+OjOTmLNfrxAY1Aoi1Gb48W/+X1OHOLPqtgAACAASURBVDzCV0ch6+vEv/tX2BSp8CstL3N8ZI5/fmqIJf8OFoM38mu/+XG+MNhKDyLwEARBeDuugsDDASyqhTxzR04wPzNHzoEaXsBLz8atdF57B+sG2+mPaPg0BVly4YkO0Nwlcdutm4mfmuXV+QnKZo06KdLpFIcPp1i3OQgxb2OaltOYruXYJhRPUmaGHz7uR0MnJ/mpu8AlV7FraUqpIxw7kKDuaiNw5ypadnRc4hOvRuUeZ3mfK/s++6qFbdQpTM6QnUmRtjzUXB7ibZFGhSCjTq1ap1bJUUkNMVNZ4ukfNDN8aonw53Yy0B2jWVlO1HbO7sdxajgkmR+R2PdQGWkpjWT40cnjU2zy5TR10+Lkk3spj89xeM09dEsafV54O/1QCUBx4TgmqjNLOV9g/zMnKFbrLFkWRmmWeupVXn15jDmgiAJoRONRWvpb8PjOXkFJksHtR0EioMgojoRkS7x3Bcka952DiWk2fs7L8zBtsMB5s8fBjgFWmuzcJIce/ianRqd5/MAIs0sV0kUHR/Xgi/qwTQtHz5KdPEAtN8MPvuWlq7cXz4/cSEhXUYNxAuEa8VCeQtWkUDVpXG0ZT8CP2+dBQ0FRPfib/DRHXaiKgV4sMvfig0xOTvDgnkNMJ4uMp21MNUisrRnVqqGYdYzMKPPlLHv/Jcjw4eO4P38nPR1xBv2XtzMlSQrgIdwzyKqP3c0G/SW2Te5nqp4lo5sc/uEeZo+H0ccWqeSgRhP+ph7Wf2I32zb10emWiSwH1ZLU6Pj6ezaA8gm2v/Qg1VSeA0sG+Xqe6eceQT/h5Zvhl8kkF1gyLcpqGHx99A6uZ/edPazvD+ORpPOqqQGoqnr2++jooC+Qnh/m4Pd+yCuHGkFHRmoCfwubr93F2utuYXN/gg5Nwn2l7k+7CvYUmewsB0+VmF3UAQh1byA4eA0704/SVjxFbthgzqyzcGKEsOMmfVcTbr9KkLPTSmupEUqTz/Dy86/w9N5THJ7KkK6Z1GVwsKknX2Gp7OJ72UkqxSIVw+ZiMb5ZzlBLT5LKlpjOS8jhViJhiSZLx7ZMavkyJkUycyex7CqO7KH0oa0EYh+m3ddB6+pr6IwvsM47zZixQE2XGBpbQgoVuGWbH1QHKFAuL3L6ZJL5mRyO7aDFWvAMbCcRb6FHdfDraZzSFKlklulkFXxN+P0SwWYL2zYxqmV0S6e4NEXyhIxZr+Kt30ZFi3B9p5s1Tef+U7jyOxnsWoH6yF6mPQbf8U6TKZSpuF3YqoJLhis9s04QBOFfm6sk8DCpFHKMv3aM2ckSjSIuXiBO39adXHPvx9jYCwNnislouGNraNYCfOSObUSiPu5/dArLrFEnycLCPAcPznNrQoK13gt2Z0HpBOWSwmOPRPH6PfT3R7Hc4FEXqdYXKZcXOfpymKNTUdb3+dm4vQMNLlOno9HhtY0ahYlpstNLpK1+FK+fvpYIHsnAR4Wl2SkWKylSqRy5aYnpBT/eeJJrru/H1x4jLJ9TIeqMGlBjbiTN3MhJIq1thBMtaJJKUIFCJU29kOf4o0+Q6p7k4Odvp+IP0u0B9e30+CWpMW3IcVD1KWpLkzzzrQeYTRcZMnTKhRz5uQmyFYsFAFSQPMQSTXQOtJ4XeCDL4PGjAAFopPi853WGTRzHxDQNTMPA4JycINMCA2zn4vO9HMcEc47MzBH2fPV+jqVKPDpnLpfC9RJp9hNuCmCkk5jFPJnxV9AdjfGJKvGeNay7eSs9Po3uUIJApEZrJIUk1ZYDDxlQ8YbChOIxfGi4VC+BlhAtTSuBR5LxR77OgVPT/M2TC1RNFxCmqT1CZ3cnnuI07vIsw8nTJPMmc9M5fE09tF2zg2ygmW7v5X6KqzTOu28tka7PsHk8x8yL+6mksyyVsxx6bK7R7oYBjgquZhLN/Vz36dvY0hml2y2jnfPwXpIg0LcFX3cH1+zZj2fiJOMlg0wpx9TTD5HSJEqBUQzdZNEA2xODyDWsWreZz3ysjz6vxAXffiRJQlVVWG5Xx6qBNUt2+iSPPvAoJxarnK4BvjgENrPthhu55wt3si0MnVfwt6njlMEcIZ2Z4dWTJaZrjeOL9G2h/fp7uW5yhIH0LM/NZplJ10kdHcZnqizq2/E7nsZ3SGp8ppo8zeK+f+CFvdPc/8RcoxQ0oPlkFNlBn99HZt7gwRIYpo1hXHxo0ShnqC5OMJ/RmSxI9PV1Eg76iLp0JL1CZvQk+VKBU3PzpOenGT06TaFaJXj9h7kp2kVv+/X0JPazMQDp3ALlepUTp9PUPXlqG7w4XgtYolxcYOhYkrlkI7PLE28juvla2lta6VOB+iKV4jjJ+QzTySqBdasIBnwkAi5ks4KeHSW9VCI9N898eo7p4wcpyCHGw9fS6pFZ3fTGjefUCtSHn2DKkZgywOPXCDf5cdwaHu0NZrEJgiAIb+oqCDxsoIpRr5JJVSkXGk/6UCOg9tLSHGSgEwIX9iAAyeVC7e7DN1OmfbnjnAdqlRqZVIZyOYrBBdWKkIAg7nCcTZ/9Sbrb49yzLoS1MMTCc1/j1bE83zmUg2IarBMsZXcwUW2U7gxdlqspAW5cwTbW3vcbJEp1OokjSRJ+xcYxDRyjTnH+NQqz+3n82QlePZqiVBrDkg1OzJdQ56G34+KLEPq7thFZcye37Wzn5i0taNNPYadP8DffPsbxsRxFaxqjrjEyU8XtsbDCyqVl4TsOmGWMcobp4TEmFvOMWDa6XqdeNqmbKuClacMNxNZey927t3Pt9hBd4Q/Q7ejUofQai0NT/O1/nCPoUmk69/XqHJQnOXB4jgyNySsXsmslKsefYv7YcfYl68wVFByCJDZeS89NH2VXj48dHV6M+f3oS6N866FXGB5Lk66copqu8eS+SdZ1Rdm06wts7x3i/3IZPHskyd/umcAijE2ctTd9lI0f3sUGr0zCraK1b8Ab8NFUP0pxbpQ9+1MMTZcxbTehns303PLj7OgPc9emKKqRRNZT7P32dznx6kEOF+bIFw1eePE06aKb2z/eSehKXFs5DOogG3buwPuTM2S/N0TmUJK8baPbDjgyii9C842fZmDdWu7s8dMdVS7ydDmIJKlsuOlGmmIqz//1c9RG0qTqC5gGJA0b21ZxnCBN3YOsufdutl/bz6APQm+adG2DlaWUmuTwg1/jyIlRXpivsVj3gifG6mtvZOOtn+TmXWvZFILI66P8y8ou5dGHXyE1McqRqsOi3chx6O3uYduOTjYk1tK1mKbp1UMEUhUqC0eoBg0Ozn6GsgRtzaBIFWCR2elxnnt8grGxEiYgRbbgDvXxqc98iNUDLXS40lBaYP8/fYPZ5BJPzUD9IrGHv+9mcDXxU4Mqt5dkoj4Nlyph1apYeoly5hjzE9M8/Pd7SFdrTFqzLC7Oc+BIioH1Pmhez0BfB/XtUY4eLDGbtZg/PoRqukl+PIrPbxDNHqeQHOfQrMN43oNDiER7Bxt39ZJoCwISxHagaa3c9yu3sDtjEIgHUFQJ9Bq2WUOvLJIaPsHAw9/idNbm4GKN9MwcxksnmF+1huIa7+uC0AYNaCPe28e199xDT5OH7e1uHCWGo7awcVsvnXCRzwqCIAgX+gD19C7GAXRMo04xp1NdWS1L8YO7lUjYR0fzG//il1QVNd6GJ5akWZJZqTpp1HUK2QK1mv4GD9IlwI/L38qaO+5l42AXn93kx5l6gVn9USxsHjqUw6kWoDpFoVQipUPtsl5JDdXXRNfuz9ItSXzI58MxDfTyco5HxaCWUqnNFxgfyzF0NEW9No8u1ZlcquLNONQTF9+6t2WQ+M7Pcf1dbfz47ha0MQNzVmXvc5NMjWWo2AuYup/ZxTqxmIXtXGpZHAesOma9zFJqkXQqzwIOpgM49v/f3p1F2XWdh53/n+nOYw235nlAYQYIECRBi5Mo2U1RE0XJSlZste120p10spzJ8VpZSfzkPKSz7I7cjt3Lakct2y21W7bctjVRpChKokRwAIgZqCrUPFfdeTxjHu4toAgUQIBCkYT0/V7Ihapzzj777HvrfHv4Np5X7/mO9u6n4/jHOLavjw8NBndumso74VlQvUJu/grf+pPXbuuQ62Mzz6xQnjxJemqC8xmTfNUPxEgOHGLPxz/Hh4YDPD3ox55rorJyknOvjpOeWSVXm6Oas3nj3AouMcIf/iAd3a302j+gWq3xxW9P43phoJ3ufQ9z5GPP8sE4DDc+BJ5dhNkp1lcv8trlLNNrFRzChFP99D3xGY7tCvGp+4LAOnjrWJdOok++wVQhzUbZ5NyFeSpeC9Un2/F24oVajYAaoW90hM7Qfp5/fZVTJ5cpu24jgDNQfSGSB47TtWeEI20BmoLaNtneFCCEogTo27+PVAr6vnaG5ek10rUsZQ8ytfr5UGLE23rY/8GHGO0N0eXjJtP2GiMdnoNnpiltzHL6uW9zanqds2kLW0+ghDvp2b2fRz72JAe6dAbf6fYxt6VeHrdcpHrlIpmlRa6YYKlRMLppa2tnz0gr/ZFe2poGiYcvEvLyVLNXMNd9jK9a+MMebjPgVYFl1tdWOPX6Ckul+nefHh3GaHuQD3zkEzzy8ACDvlXc1Slir/4155w0Ly3ePPDwt+9DSw7zoaNBPEPHMEt4lkkmU8K0ClhmjKnT5zj31e+gWlVmzQ1y2Q3Gr2RId7WC1klXRyvKaJzY5Sreukt6eha/GmW99iDNtkU8M005vcj4ustyLQA00dTcwq7d7SSbG3UUHUYP9fHox4I4aIQME8+1SKfT2LaJaZZYSvjxvfGX2K7JG2smubU0uYszpLNdlIHtl+fooLQSb9/Hg5/+VQ61B/lIr/Geb0IrhBD3qnsg8KgvqrzzvYTfIUWD8CiBpl3cNxpnrD+ArikoPh+trS3EoyV0wMHBxcQ0HUolcO7qnJQqTjVD+o2/ZnFhma+/PEm6WGMlX8FxPBzHxamt41ZWmZzOsAaY1FC8MsVijXzOxnW3e7QBIElLVzcHH+2nozdQ3y06lIR4B2E9QAxYpz6FqGLZVC0bz7vDFbOKD4JHaR3exb/4w72UKmVydolSeoa1yR9w8s1FvvvSNJWz3+HC2jz/v/YPmK8e5+mRMP073XX8LrJqFivjc6xNL2M6Lo4WA99u2jt7OH4wRHekHtBpLQP4Ayp7uv6GWjusLMOabbO6sMBKMkLJHcTHHQw6OQ72wgyVxRmWHZt1XDzKZCZe5vXf/3UWojrPJ+sZrzyvxsKFc6QXYKVSn+NfXFoiG2lh3d5HzICd2g7PKpUor62Tr1bJUf+U19m4tkl+foN8ogXTcbHZburgJgWShzF83Xz8qVfY3W3zv31zgblMvWNBT3QQP/xr7HtoL7+0N0Jn+FZfex5QwiyscvEv/oDxS+P82ZsbLOU8HLeFtt0PMfaJX+PJo8M81W/QEtzpF9B6GvHcxjKnXjjN5IU0lge09KJ3PUp/VzdHk5AK7CbQrLO/42XMmSV+kFujUony2o8nIGfh9HeCUobyDKXsBos5KDa+UhNDQzQfeJDeliS9hopfSeD429h/3xBewEM/N7X14by1dJnLmCuXeO6lk1ycXGByrUS+amNaNq5r47o5Srk8UxmTklWv3VrVJLuWpVquJ5JI7dtPOJpl+MQ3Wbgyz+LSCapampcnnmYtXePxCydYvnSFWdclH26Dlkfo7hvk0X7o3uxxKq9gF1Z46ZvfYXp2nrNTGQpli4Jl4rgurmtTza6RmayxXml0NVWrkM1RM03K1NNa3NDFEoiijzxCamw/T/T76YzeA38yhRDifewe+Rb1UJT69G9l8+3L88BzcF0PxwFvmw0wPA9wHDzXvbrhHACKgqqqKEo9G9BbD1PB14IeaqWz2U9b0kAFVE0jFArh9/vQALeR3tJxPCwLrk+C885v1QOvjFvLkJk+yeylSZ7/+glW8iZzRVBUBV1V6nfjudi201j0bKNhYZoOtZqD5243SmEAMcLRGB39caJxpZ5G0gigBKL4VJ1AvQZw8bBcB9t18fBurNxbUXQwugg3w0NPj9XTyZpZsktnmHtjFbdU480fXWJl9QprqxtcGH8Ep+sAD3f76U0Y2zyT94iio6gq/qCv3ga2/sxzwLMxTQfLdtlupYfrOBQ38pSyxXoKXMUHRiuRSIzuNoOYoqDgoYQSaLpFKuanMwKGCp7rUsrnKRULmF59ce9tBx6ui1vIYRdyFD2PMh4eDrXsIqsnV1hT4OwNBxmggKEbUK3gVkpUXJcq109FvAu8+qr8WrlMPp2jXDOp0Ph81leNg2tRzWSpZHKULZeq4xFU2X6YQlEg2I6qxxkbbSfsNBN5cRmN+mu7FogQGTpKW18vB1t9+LedmL850uHhWnlqxVVm3/gx45emOb1SoWgH0fxNJDuH2HX8A4wOBBhJvAsbZHgueEWqpRyzEyusLZdxATUQRk22EzQ0YlYRVw9RCbYSDxqkAh56oUzZzLMwvUp3NILlduAoFmo1i1WrUKhd2wcn0JQk2t1NPBwkrilAEEUP09aRpDUdR91uB0Kv/o1q5ZcoL53n/I9f4OXXLvLaskm64mIYGooCCh6e52Kb7uayGRzboVqqYps2ChBp68DvGyMV+wEpzWWttICV0ZlaLaLVTA7NzpFbXSHreZj+KGrLMMmmFgYTEG8k6XDLaczMHOMnv8eZs5d4/uQ66ZKNaej173sFPNfBs51rm23aFlQrOI6DSb39Xf9EFd2P2jJApKWTwYRO7A4zGAohhHireyDw0IEEvkCcVHeYWFkBamBtgHORheUMZ6ZgsB06Im890jOr2BPnKcxOMuW6jQXNEIqEaOppIxYN1Xv8tx6kKGDoKIaBoSgYNF6CVepj8Tv9ruHWYOEbZGYu81++8AKTc2kurloo8W46f+4JhrpiPLinGV9lGn9lku+9cJk3T86T5XbGhDQgjF/zkzSov8ht/rOvvvFi/X7t2zrbbVN08CWItO9h4JG/z9H1r7L+w5d5abXI2kaN8z98k/mlOB8deITOji6auFXv9rtEDUH0ON2jA/zj3/407dEAA2xpK5nXYP1l/uT/OcXXvzNBlpt2Cr8P6ECEWKqN/kP7SPgUWm8yQqdofvT+vTR39NLaSF1714PA8jzkz/HD51/iW1/5MW/MlOpTXSIR/LqOVSjgVQsUTnyJicxe/o8f7eJgbxOf2xPFuEVhFEWhtaMTt9xHzDdOiAo24A8G6Brpp7WrFV8ji9X2bFyzxMzffYG5y2f5/PMTTK+WqFhBYr37GP3EP+MDh4f4h0ciNAffpRdQuwjpl1mbe5Nvnq0xWXDq6SeWX8fNLfCnKxFe+OMQGlUUt8byhSsUs1CwwSkXWf/xC8zbq5ytjNHpg4FtLqHr4DO2dOoAKAqGYWDo+vbTitxlMOf40XN/y4+++nd8azLNpUwNq+kQTf1t/MKT+2lN+mjSV8ktLfCjr36dtaLFRPHGUxEbQfXFObLnb/CtX2LhUoblqsaJF7/PQqBG8+UJplayuK5HrCNF55OPMDjSSTceBiZ4VS586/9l9pXn+Pr35ji7XCXDAIHOZj709MO0JIIMRaE0f4n57/8VlzdsXl12qH9iSzhYmGwfYCuqhi8Uxx+IEkaRlLlCCPETugcCDwXwofsCxJqihCIOOjUcr4LnZMilsyzM5yhEgtQCBobW2DPCqWFXimSXVsiupcl7LhXqG5kFAgGSzRGCjZ7sGy9ZH1q5YRDl3dhW3HPwigvUNqa4NLXKlaUSBYJEfAmaB/bSN5Tk0OEUvoKOP5vj0htznOd2e8PrmZA0pZ4d6GpHZqM7X1E2z1MfzbmDQrOZHtiumfXRH8OHotavoygqKD40f5iwniIajZIIQEBzwHXIb2SpGmsUKibVO7zy25fLxbEtzGIJ2/WouYDmQ9EDhPwawRv2ONikgdFKMNHPnoeO058Ms5ctcedKDW9xmue/M4G/8e/XBx6KoqD7DDRDr3fUey54Jo5tUal5WDp4GuBaeHaVmu1StRsjdYqCputouo6Ksk2zq9+b520z2qaAohuoutHYHE3BQscIxol1j9AZ0RiO3XjfnmPWpxp2tBBviRHSNPS7mkms0UteTmMujzM3M8+Z8TTrNR1HCxJtaSUQ9GO6Jla1RjYzRX4lwLnJFSK6Rnk0QlBXMJSbDXwoBIIBgqEQhqpefVaqphGMhvEHAzeOXG3euweuWcAqbrA0fp6p8+e5tFxkqeihBFJEWrrp33eQoaFmRpIaqqK8JQX25vXrJ3PBrvek50sWrgceGpph4I+E0JWb38MN5XJMnNw8pewKczmHjc1dM2sZvFqBmQLMX95ygGXVczsAnmNhrs1SXG9iqewQRKFfNVBVDV0Ftf6xxXMcXNtqjAx7KHjguTiWg2O727+Ru2WwV1ldWuDS+RkWC5C2DOLxbmKdg+zad4juVh8p/QorEbjkUylvV/EKYMQAhfZUjEJXkOBUCa9WZmPuCqpuMrVQYDlfw8NHIBKlva+dpqZoI3mGjevVSC/OsnDpAgsrFst5AyWZIprsYWTvQTpbQuyOO2RDVdRTKuulqzdRP74xprvtyJ6ioOg+VE1HV3a+30kIIX7a3SOBh0GspY0DH3qUCS7R9uIJ8uQpUObUd77B5GSa3n/4NNbREfY2G0Q1k/LSK6xMX+LPv/BtLs5ssGo5mESBDnr7hnjy54cZ6H3/3b7nuFSWlyksLZGxbfL4cemnvecIn/zVX2Rfa4AnOnWsK3nM8df5egBKvGsrYG6hiOuUmThxnkK+CmMPEIxG2dVi4Gv8tXbLG9irLzM3d4UfzsL81ReA+k7KNt42WcZ+EjawTm5ukle/+EWmszVezoDacRh96HE+eX8HTx1K3bWrXc8I+Ojc00e77eBT09RqOZzSm8zPj/LdV4uE+/zs6vFhpyeobZzm1FyGHy5A3gQ9bNDe10dndw9RTSUA1+2lYAFFzJpFqQR2dMuPNB29d5BgqUqX/kMsTOYpQawZxj7J/rE4v3I0/tbCeh6VhdNUizkuMwqBJHFDJ1i7m7F2DUgz/cbLvP7f/oAXz6zzWglqoWH0SA+f+uefZu/edkp//B9Yn7jMF87kyS5PcOLz/xXz+H08sPd/YSCmciDythe6c55D9sxXWJ96nd//6sucG19jteihxnppe/RfcN/BQf7lz3eRChtYlnVDnei6jqY1GrpdhSvfYG1xgf/8F2dJFxVs2unav5fjv/ws/WGNveHbK5ZZyLP0g+8y9eY0FxyX8tWf1Ne+Oc51gedmGmAApwK5V8kswTdfz3OsT+PQniEiTWfoScJ6GahAem4JK3SBzBNRSoQJUcEyc0ycmWbqwhy2vc3K8moBSnNk0wXmMlB2NVQ9yNATzzJw8DgffTJGb6yCni9ysbbCVysKdvVmdxlGVX3sP36EjhaTPz3/MmtTeQqv/BllPL5crmB5UWxthO6uUZ5+vJ3dV9PfFoBVFjeKXJqzKFc9FCNA8NDH6Bjdzec+cpSuJvBry1xhljnbxr/d/dxMvd/rfTAEK4QQPx3ef2/eN6jP+NcDEcKdw7S0FehrDjBftilWTErrC5jeBSYvDpAImrAZeCyfZ3V2koszGWZWS1ieihKIEooP0drWxmDKTyLUWCvxvqOgoGwZYPHwPAfHtrBNj2rJoZjNUVjOUyzX7vLL+jtl47lVcktXWF/OknEjGNEYTmsQvw6a6mIXpqktjXNlbo2VChQtAAUjFCAYj+AztKtT2zzXxqusU6uZLKWrOPYqnrXI/EqWsnstfa1V3KCyeoX56SyXCaP44miGn/ZUBJ/hoWFiVXOkpy6ysFHl4goo5RYMf4mNsZ2dHKXoBqG2LqKtRZoDKjg2WTtHcX2R2XMXuVINMl4LYC1PUN24wkK6xHoNbDWE5o/S3pYglYqgqyqaquL6/WiGjgG4WDiUya8vsjQ5znRJxYiq+BMpdA2aQyl8sTSdiQCVSo2Foo1jVilnMxTyKvmyH10BXfGwbQvXtsinN6gU8xQjoPl0FG41LenOObUSdnGKtcVZLkwsspS2Kbk6wWQnofYx+odG2TXSRnm0lxU3T2J8lmqpRGlxkvW5Zi7NZvC1hxmLhNDvVtk8D9wKnl1iZWaKuYuXmV7OMpetYmKg49X3cqkWKCxN4OhqYx+ht9JDrej+CN3tEUKai1ZappaeZeLyRVZzCiZlavEWRmvcdJrbdQUDTCyzxOrcKhsrGSqeh6WHUPxJmuIBWpOBxjaSbz3GsS2yC0tUaxZ5q0CtnGNuIUd/xMDREwQjUTrbg0ysWigVGyu/SmV5ktnZNsaTJgkli51eYGIhx8xaBfdmW5cr9XVyWweCPbc+emJWy1S1IvbqOtmNLEXLo7Lt+359FBrFI9zahl3ppSn8OgnNoVhYo+bBuu3i6X6UaCfhWAu9TQbJkMq1bz2lvl5PVa7uVYLn4HkWtlmhVnGwzBVy2SwbZZfSnX7s3zeLzoQQ4t53DwQedUqsB9+BX+FwsZPfnB3nL0+u8eXXVnHW36SaPseXfufv+IpPr08hAtzGzrnlYhHb0XC8IM1DBxl59l/xyAO9fKoXQu/DdYKKphFs7yFayJPST1CgwCKXWZp2+IvP/yFvtFpc7i4wc+o0k6+eZDxtUaL+J/i9nQZQxbUzzHzvz7j4+kn+fMFP2vYRjLbiMzwSoTK1coX8WpZS1SRfAsfTAJ2OfbvoOPYQAy1Jujbvo5bDOv1HjE/M8m/++Dy5cgnLy5HbKLJsXlsYu37i/yN//gV+5699xMJBjL5naO4c4bf/9WP0dwVIYGFWsqxMnWVmqcSbs6CUezH8RVaObLf7xt2jheLEjz9LX+AN/ofeV7i4Wub5lRVmf/xVlk5/jzdTEf6vljDW+hx2Ic1CukLR0bFjB2juGOGZp0YZG+zA71NRAgF83d1EmjZoB9Jk2SDPia/9V8689Fe8mAzRHI0w9MxvPINH8QAAE3BJREFU0jk8xq/f9wiJ4W7+/uN/xclxhTPf3yA7cYLTn//HLHa08dxgH6mATavfIb26QDGXYXE1R9UL0PVLvfSPhXlkb+Su7uNRWbjI8gu/w0svTvMHp0uU7BAQZdeHPs7Q4x/nA/ubOdyh4v3KL7M6dZEfnP5dxuc2eK1ygpkLVX7/Px/mqSdG2Ps/HyOu3MVsW6VzOPnLfPXLL/GjF09xOWuSAzwszNwMi8/9e9a+q/HKf9MbC6avo6jQ/1lCHUf4/G9/kAdGAyRyV6itXuD8udMsbKhYFLFbOzlU8Oi6rcDDAmbI5yb59rcmOTufwXU91NR+9LHP8ezHRvnnf28PAbamgXWBWUqZef78N36Tyxen+dpimXx6jR9/43WShUEKj95H1/BunvnsbtafX+TEi8tYE9/EnPk+/6V8jD9NpRgxptCqWU78cJJsoUrZ2ibwCCTBP0RLMs5QEuYLDqtWmUvf/hKLJ1/gTyZTJLQyq6/8DStrWV4vmNScW3SQKCr6yDGCrSmO9ryIf3WZv123ydv1mlCjrRj7n6JjeDfHmxSiV7+7oyiKSm9bAnMwzDfSZbx0hcqpLzO/kOL34vcT14qEpn/I7Pw6351wKL/3w8NCCPEz694JPFQDfEkiqT76Dhxjjz3Lsdo0a9k82WKZUiVHuehgOo0cTFp9Xq4/nCISjNKU6qVz7wEO7uliuCNORANd4f0wVHCVAqiKhhrtwd9UYfdwB4bfoLycxbXypGcuESxpjDsKJVPBaGkmUMkSKpa46SyGd40GioEv6MMfNPDMAmZFoVSx0DSXglHGMl3KRRtF96PHYsRjLQSjTewb7WVgOElTyLjaIF3PgXIaM7fC4vwc6VIViyq1ik2Va9OOnEqOml1jraqT8wXQfVkqRpGq4+I0dr13XYtq1aRatTBNMFwXRdPra092kKLqaMF2oi397DtyEG1+nTltmXzFIVtcIUeOajmAUyjg1my8YIpwMkbbyCE6+oYYag3TFdXRFFD0EEQHSLSsM9bTxHShSjlfwSmmyZsmS8UAhUiUYLaEXnKxlRBGuIXu/YfJB5s5uHSBdMFiLZPByroszdpUfB45n0spn6VaqVByfLi+KJGwj1hYr2czuoNZKTflVKG2Rn5tlnNn55ieT5MzPZRIK4FIH3193ewfaKYpEiCgeZDsIVox2b0rBZrF2Ut5zFKazPRZFmZ8nF88wGBMJxG7S/Nf3CrYBYqFCtlsDXPrC7Jn41SyONRnF21PgUieoL9C1XJw8LAdE9uuYZompqVjaRoOCoYB2m30EHiug1dcpJpdYjZjslJwcD0FXzhKrGeA1s4eOjs68HN94AEln0JfKkJpzYe2YuKaFSrLMxQ2oqyYOv5oOy27DjE4E+DAjMViukq2lCWzPE+5UiaUMAmgEm+OoQYMNpYK9eVJWwuoBkFvobWrh9EDQ4xPbJBLV6gUlqm4JtPTNWJ+F8dIYAYV4oE8ZdMje5PRBkVRwEigBdro6YxRWA5hZCvUN//RMIIhmvq6SLY2EVHh2tIsHfCT7Oqnc/deeuavkHVLbFgbOHmLmclWoj6PpkqUslelJaaTqbiUSu/HkW4hhPjpd88EHpsZmZK7PkBi6AidE6f46OVX+dZLr/Lq6UtcnFxiLV1grWxRc1X0YBOBcJLuXffRPTzChz/zi+zqTPDErlYMTcF4H24ApQOG6kPp+gWS0fv4p/9omcsXJ/i9L32fxVyGyVPfotjUw8raAe4/NMqTHznIia/8gMB3zzBLfa3HeyeMqrn0HrwPJeBnn32J+HqRqdUsVdNmPWehaD60UIJIcxdNXUOMHX2MkYPH+eiDvRwcaiKydWtq14VKDquQZm1tjY2ihYXHdet5ccwKjlklWwY0PyTz2PEyZcfFauxfYTtVMiWPYmOYJBTy09qWJBwO7HCd+MAYon20hf/xPzZx5ew5Br/yV5y+ssBLZyfZKFVYnXfQA0k0fzt9Bz5Ia/cIf+9zn2Gov5MHew3CvsYIUKANup9h7HAz/+TZGZ47NUf1tSnWqnmy5SzLWQUtECKSyaOXbSw3SqCpnwO//tv0LEzS2vclzl2e42svnGGtkGbxyhxp/JiKn2gyRTDaQu/e3TS3dfHksT76+uKE/SpbFhW8c7V1WPga42+8zv/+xYvMVRwsID70MPF9n+YjP3eIjz0QJrE5Zyd2mJjWyS/9Tw9y9sxlXv6dV1jLz5M/9QVOBlf53eH7+czBBLuOJe9C4QC7hmeWsC0b0/7J+yI8oGLZlC2rvgBd80GoFX8kQSoB0dvZ5tqsYF36HpkL5/nRsslSTsHFIJFKsfcDR+gdDHHjUhcF6MBn6Bzd006Ydf5kfI18OYN97jmWe0y+n3mKvW1HOP7xAT6Z/FsOdH+TLz93npfPLLK8NEF2NYRv34dpa43z2WdaKWTX+b0vniRfuW4dmdoKvhbu/4Wn2bOnHev//jqR1y5yamaK7Po0r5g5oqlWHnzmM7TnV2jN/BHz2SrfX7/VTXdjGDE+8Mgg3S1Z/nR6io2qDYSIN6d44OcPs3s4TvhqEozGAgzFYOTDz9J7/zE+av8R/acv8o2zi6Szq5x8wSSc6mPXY5+lM3mRX47P88p0ha+dfe+7aoQQ4mfRPRR41F9KVc0ALUK4pQusCnvKfnwtA/TtyZArVMjVHGxPQfPH8QXCNHcN0dLRyd7eFroSQUKG+pb0kB4Ksf7DtNUqPOkrM5BWIH6MZHsXXSE/8caVlUAStfM4g/cN8anPjOKQxKWZY3t6GA1D5LZqcjPLko1ZMXHtRq+bZoARQFVUNEVBUfxo/jhNQ0fpC3TxwUwr6ZLNUhn0cAuh5gFGhwPs3hXA93iE/tbdrKNRNYKM7G6jvUMjaNTz8dNxP627e/jEp3qoWCEc2hg7tovRMDRtdhgbKdTQCAcf/Xn8LXsZBtxYC4MjcfradYzt8vjfQEdRgzQNHIJACz+nD7FRqLCSK2Fa9b1FFM1A84UIxpqINLXTPbybzsE2OpNBwob6lqliih5A7bifZqubpz/RT7HmvH3nu6JD5yFiqT7awj6CroNSTWOVcmyUPAp2GEJtpDq6Obq/iY7WzcBDQ1H9tO17FMfXxEd6Ya0agMgROgZ66PRpV9vBVYE2SB5m74N+nnZGyQOW7qPzUC+pviBhXyNNGPVFt/5oJ03dDnseeJxg3waRoSUKVZdizUX1RdCMEKn+g8RbOhjrSdDe5CegN0blGvWLEiLc0kf3kce5r2kdu2eFvOVSarQjRffRu7+LVI+fsE9FUUHzxwkmuujZ8yBeYphCcJBcqcpGsYqFgY1BMJrAHwzT2tlDLNHE7s4YrTGt/tyNMHQ8QNu+Pj75bB81J4JLG/uODDMSgsTttHstCOEBmgfg4aerZGyP+1wI9T9EuK+PkY4IEX3rmg0d1YgQ7X2ALnr5yDM95KoeZfzER+6jsy9EX3Kb0Q5FhcQo/m4/jz2lM7RWogQE24cZHAqyJ7Xd7ueAP4UaHeXgo7+Ar2Ufe7g2le/2KNB2FF/zAN1JPz7HJreeIbOWxXZBC0eJ7z1Ix+AgfQGFptupM9VATYyR7I/y5McNchWbEhrJ0YfoGQky1GzcZCd3BdUIktj7GL3xIT6u5sibftB66T+0m/6AQrPPj2IkSHSN0XuwwkPeIMnhDdKOjqn4aO67j0QszO6+bqqlAp8oDlExAzj0MPzgboYDCs1GfbjYH+9E6drH/odMfC276FurUayBHm8jkEgwtm8/RqUHqutslCw68mB0HSG4O8WuzvANZVcUjXAsSiQZw6+p6IqB7esgFEsx1B2irdl33ZKLesY3LdSCD4VdRx8l2DqEPrxBoeZh6y0E4ik6D4zQbIcZymfwj5n49lgQ3QXRMfb1NBEHDIJoehN9D3wYrXWMj69AyZ8icKCHvYNNaLf1PSiEEOJWlOtTQm61kc2/o84/RVGIRULotzOn4I5tbvRV/3/Pa/SCe942PZVKI2VlfeHh5p+NtwQentfYtM9tpL2s/359k0FlS4rM+u94sGWxZeO8ilr/Y/i2f5fqueMn/+YPOfOF3+JL523+ctyBnmfxtR/j93/3Uzz68AC9gN/bvEnv6vWula3xZ3ozpeeWe1fUej7haws+6ylXna1lVhQUtVHmzfrEw3Mb9bnlXMqWa93clmfiefVzXX0+2/x6Y+PG+n8bz6hx/quLVBv1DVvLfhsa06c0VQErDSt/yakfneZf/ur/ybzXxXjLB/nEP3iC//XffpYhA/qNzetRf76ex7XLXVu0qlxXvq3Pxt1yk4par3lV4a1thy11DNu01+vbqrJZVZsX3FIv9Xr1tmnzb73+dfd29fjre/WvtanN62/eq8K1Y2/aht6u3XvX0i277pYyK/Wl0arKDfVb/16qz++5/hhFUeupn6+/8C2us3nMDW35+mez7ffIbVAaL/2qhZVf5bX/9GkunL/Ab32rhtV+mH3/5I94fHeK//DhNnRVeds687zNXLc3v5cb7n/rsbdqy43ibrYl9/rvz6ufy/q/uDc892uf281y1tv11s97o01tTTG82e42n7vCDZsTelYJ87X/yNz4mzz7Wy8yuWZQSnyIQ48c4d//8W8wEDY4YNzsGYK3eZ2r97PZtjfb1+bnYPNnCqqibNmYFjzXBTbrTmnU+XWfaSGE+CnheR7FcgXTuvMFcJ7n4Vj1NdXhcBjDuNYpGAwGt/3CvIdGPDZtfSF7+z/gb3s2Rbn6h/CWYZKigFLvMVXvdGmAXYbyAitrG5y/MMnEyyc5M+kwk3UBhVBLC9HeXpLBIIlGtp6tL+PbbrR82+rBg37Tc1x93UR5x3HilmeyGVT8hJRGfcOtyn5rrm1hrc5R3lhjzY3gtfWw+9GHGR4boteA2JaXnnrZteuyBN2ygICCqt3G7yt3s463Bgm3eeSWe3tnl64f+06fw2ZdKcrtt2WlMVrEHRzzTq5zd57NJhco4jgZFpYrLKxpeE1Haeo5wGP7mzjQHX5LQHjrYjXCvju5l63H3kZb3mxLb3fbt/q+2yzn29fdTU7ieZBfwC2leXNqmdWNNBuvvcnK/BSZsoMbbKJp/2HaRnbR71Np0bapvC1Bq/K2BXmbylRAaXSYvQ9zjwghxD3vHgw87kF2ETJvMnf6PH/xpW8wPr7EmbM29bWqCrGODlrHxmgLh2l9j4v608SzalTnJsgvL7LoxWjqHuHop5/m4ECIYWn54q7zgAy2s8aV2RJXFg1of5K20d188niK9pBx01GKn2kbk7hL5/je357g9ctzTL72OtlMjuWSD7UtQfvDj9K3t4sxn4pfvb3ATQghxPuTvH69G+wqFOcorMxy+fwci5kqBS1CoGOUeNsQjz1yiL33d9DR7Jd08XeREkgQ2PNZdjUX+HfRPMH2frp2helvLEyQFxhxd6lAM/6wzmO/9q/Zl6lxOHAfTW3NdBsaYWlwN/AAt7qClb/ElYnLnD67xEZBwVJbadrzMK2DozzzSCe7uxJotzFFTQghxPubBB7vBteE0jKljSWmJ5fJEqBiREl0HqBtz2M8fGwPP/dQipTsjntXqf44/tGPMTgKv/GB97o04qefAiTxh5I8+Iv/6L0uzD3DNdexStPMzU5zeWIVy0igh1sY3PVBBvcM89SDbbRHA+/xPkVCCCHuhntwcfk9yMxD/jJzi1lOnFrARMNUDIJNXQTi7YwMpWhLxer56aVHTwjxM8LzPLzMJez8Aj84u87CRhVX9aHqAaLtY8QSMQ7saydoaIS4s7VNQggh3t67vbhcAg8hhBBCCCF+Br3bgYck7hBCCCGEEELsOAk8hBBCCCGEEDtOAg8hhBBCCCHEjpPAQwghhBBCCLHjJPAQQgghhBBC7DgJPIQQQgghhBA7TgIPIYQQQgghxI6TwEMIIYQQQgix4yTwEEIIIYQQQuw4CTyEEEIIIYQQO04CDyGEEEIIIcSOk8BDCCGEEEIIseMk8BBCCCGEEELsOAk8hBBCCCGEEDtOAg8hhBBCCCHEjpPAQwghhBBCCLHjJPAQQgghhBBC7DgJPIQQQgghhBA7TgIPIYQQQgghxI6TwEMIIYQQQgix4/SdOrHrutg7dXIhhBBCCCHET8zzvHftWjsSeHieR7Fc3YlTCyGEEEIIIe6Sez7wgHf3JoQQQgghhBDvb7LGQwghhBBCCLHjJPAQQgghhBBC7DgJPIQQQgghhBA7TgIPIYQQQgghxI6TwEMIIYQQQgix4yTwEEIIIYQQQuy4W6bT3ZoSV1GUHS+MEEIIIYQQ4v3tnW6bISMeQgghhBBCiDvmAdzB4MQtAw/ZBFAIIYQQQghxvXcSJ9x6qpXrggKKqr3jQgkhhBBCCCF+inguuB6KoqCo2m0vyXibNR4uoKBwLaq5elpZ8yGEEEIIIcTPjM14wPM8PM9FARRVZUuEcEu3DDxc20ZRFDzPQ1FUVE1GPoQQQgghhPhZ5LkuruvguS6e5xLw+9F1A027vWXjb/tb9YjGAzyQNR9CCCGEEEL8jKrHA57nglefanW7QQeAIgvIhRBCCCGEEDtN0ukKIYQQQgghdpwEHkIIIYQQQogdJ4GHEEIIIYQQYsdJ4CGEEEIIIYTYcRJ4CCGEEEIIIXacBB5CCCGEEEKIHfffAZFtO1d1a60BAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "scores_, boxes_ = detect_(img, detr_trace_module, transform_, threshold=0.8)\n", - "plot_results(img, scores_, boxes_, label_map=CLASSES)" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "tensor([[0.0329, 0.7852, 0.3596, 0.8505],\n", - " [0.0368, 0.6468, 0.3558, 0.7153],\n", - " [0.0367, 0.5248, 0.4761, 0.6235],\n", - " [0.3009, 0.1809, 0.6868, 0.5036],\n", - " [0.0361, 0.7059, 0.3597, 0.7746],\n", - " [0.0292, 0.8717, 0.6001, 0.9522],\n", - " [0.1819, 0.0547, 0.8046, 0.1601]], grad_fn=)" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "boxes_" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Ploting train vs eval performance" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "metadata": {}, - "outputs": [], - "source": [ - "detr_experiments = [Path(i) for i in glob.glob(\"/home/haridas/projects/opensource/detr/outputs-2020-07-07*\")]" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "p = Path(\"/home/haridas/projects/opensource/detr/best_model/\")" - ] - }, - { - "cell_type": "code", - "execution_count": 80, - "metadata": {}, - "outputs": [], - "source": [ - "log_df = pd.read_json(p / \"log.txt\", lines=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 94, - "metadata": {}, - "outputs": [], - "source": [ - "# log_df.head().test_coco_eval_bbox[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 99, - "metadata": {}, - "outputs": [], - "source": [ - "state_dict = torch.load(p / \"checkpoint.pth\", map_location=\"cpu\")" - ] - }, - { - "cell_type": "code", - "execution_count": 119, - "metadata": {}, - "outputs": [], - "source": [ - "torch.save(state_dict[\"model\"], p / \"checkpoint_model.pth\")" - ] - }, - { - "cell_type": "code", - "execution_count": 120, - "metadata": {}, - "outputs": [], - "source": [ - "# state_dict[\"model\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "score = torch.load(p / 'eval.pth')" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['params', 'counts', 'date', 'precision', 'recall', 'scores'])" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "score.keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 121, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "iter latest: mAP@50= 30.1, score=0.292, f1=0.309\n", - "iter 000: mAP@50=-32.5, score=-0.297, f1=-0.297\n", - "iter 050: mAP@50=-03.3, score=0.001, f1=-0.115\n", - "iter 100: mAP@50= 26.4, score=0.237, f1=0.284\n", - "iter 150: mAP@50= 28.2, score=0.268, f1=0.298\n", - "iter 200: mAP@50= 29.3, score=0.282, f1=0.304\n", - "iter 250: mAP@50= 27.7, score=0.275, f1=0.295\n" - ] - }, - { - "data": { - "text/plain": [ - "(
,\n", - " array([,\n", - " ],\n", - " dtype=object))" - ] - }, - "execution_count": 121, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# glob.glob(p / 'eval/*')\n", - "plot_precision_recall(\n", - " [Path(p) for p in glob.glob(\"/home/haridas/projects/opensource/detr/best_model/eval/*.pth\")]\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "metadata": {}, - "outputs": [], - "source": [ - "detr_experiments.sort()" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "plot_utils.py::plot_logs info: logs param expects a list argument, converted to list[Path].\n" - ] - }, - { - "data": { - "image/png": "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xIkTTSAQcNe//PLLZtasWWHHW7dundmwYUOjf9e6ujozduxYs3r1amOMMfv37zd+v99UVFSY//73v8YYY2pqaszJJ59sFi1adMjPrKKiwtTV1RljjNm1a5fp2bOnqaurMwUFBSY3N9dUVlYaY4z5zne+Y5544olGP1ek7wmw0jTTdhxpf7St61q0raunbV102jrnOhvqbu1dd27rlFKHr6m2rtmMpzFmozFmgjFmAnAcUAm8AswFlhhjhgFL7PctVlJRy5qCA63ZRbXAvffey5gxYxgzZgx//etfyc/PD3tS/Oc//5nbb7+dl156iZUrV/L973+fCRMmUFVVRW5uLrfccgtjx45l8uTJbN68GYArrriCl156yT1GcnIyAHPnzuXDDz9kwoQJ3Hfffaxdu5bJkyczYcIExo0bx6ZNmxpd30knnUR6ejoAJ5xwAgUFBYD1dHno0KEMHjyY2NhYZs6cycKFCwGYNm0aIoKIMHnyZHefhQsXcvnllyMinHDCCRw4cIDdu3c3OufChQuZPXs2AJdeeilLlixxHqq4FixYwMyZMyN+pgsXLmTmzJnExcUxaNAghg4dyqeffhq2zZIlSxgyZAgDBw6MeIxTTz2VjIyMiOsiWbduHWeccQYAvXr1okePHu6T/fLycu69915uvfXWsH1GjhzJ8OHDGx3rrbfeYty4cYwfPx6AzMxMvF4viYmJnH766QDExsYyceLEsM820meWmJiIz2eNSVZdXR1WTub3+6mqqsLv91NZWUm/fv1a/PN2N+U1/s6+hG5P2zpt6xrStk6po0cwaPjg60LqAsHQZJnq4lpbansmsMUYsw24EHjKXv4UcFFrDvTt//2YC+7/qJWnV4eyatUqnnjiCZYvX86yZct45JFHKCkpibjtpZdeyqRJk3jmmWdYvXo1CQkJAKSlpfHll19y/fXX87Of/eyQ55s3bx6nnHIKq1ev5uc//zkPPvggN954I6tXr2blypX079//kPs/9thjTJ06FYCdO3eSk5Pjruvfvz87d+4M276uro758+dz3nnntXifhtv5fD7S0tIoKioK2+b5559n1qxZEa+zJed57rnnmty/Offffz/jxo1jzpw57r/X+PHjefXVV/H7/eTl5bFq1Sp27NgBwG9+8xtuvvlmEhMTW3T8r7/+GhHh3HPPZeLEidx9992Ntjlw4ACv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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plot_logs(detr_experiments[-1])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# TorchScript \n", - "\n", - "See how the model can be serialized efficiently for production purpose." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [], - "source": [ - "img = Image.open(\"/home/haridas/projects/AdaptiveCards-ro/source/pic2card/app/assets/samples/5.png\").convert(\"RGB\")\n", - "# im = transform(img).unsqueeze(0)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "img_np = np.asarray(img)\n", - "im = transform(img).unsqueeze(0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Torch Jit Trace" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [], - "source": [ - "detr_trace_module = torch.jit.trace(detr, im, strict=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [], - "source": [ - "detr_trace_module.save(\"/home/haridas/projects/pic2card-models/pytorch/detr_trace.pt\")" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "detr_trace_module = torch.jit.load(\"/home/haridas/projects/pic2card-models/pytorch/detr_trace.pt\")" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [], - "source": [ - "t = detr_trace_module(im)" - ] - }, - { - "cell_type": "code", - "execution_count": 150, - "metadata": {}, - "outputs": [], - "source": [ - "# print(detr_trace_module.graph)" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [], - "source": [ - "from typing import List\n", - "\n", - "@torch.jit.script\n", - "def an_error(x):\n", - " #r = torch.rand(1)\n", - " return x\n", - "\n", - "@torch.jit.script\n", - "def foo(x, y):\n", - " if x.max() > y.max():\n", - " r = x\n", - " else:\n", - " r = y\n", - " return r" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "# print(type(foo))\n", - "# print(torch.jit.trace(foo, (torch.ones(2,3), torch.ones(1,2))).code)\n", - "# print(foo.code)" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [], - "source": [ - "# torch.jit.trace(foo, (torch.ones(2,3), torch.ones(1,2)))" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "# print(foo.graph)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Torch Jit Script" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "detr_tscript = torch.jit.script(detr)" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [], - "source": [ - "# print(detr_tscript.code)" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [], - "source": [ - "detr_tscript.save(\"/home/haridas/projects/pic2card-models/pytorch/detr.pt\")" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [], - "source": [ - "# print(detr_tscript.code)" - ] - }, - { - "cell_type": "code", - "execution_count": 383, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "torch.Size([1, 3, 800, 1355])" - ] - }, - "execution_count": 383, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# !du -sh /home/haridas/projects/pic2card-models/pytorch/detr.pt" - ] - }, - { - "cell_type": "code", - "execution_count": 380, - "metadata": {}, - "outputs": [], - "source": [ - "detr_tscript = torch.jit.load(\"/home/haridas/projects/pic2card-models/pytorch/detr.pt\")" - ] - }, - { - "cell_type": "code", - "execution_count": 389, - "metadata": {}, - "outputs": [], - "source": [ - "# nested_tensor = NestedTensor(im, None)\n", - "# detr_tscript(img)" - ] - }, - { - "cell_type": "code", - "execution_count": 151, - "metadata": {}, - "outputs": [], - "source": [ - "# detr_tscript(nested_tensor)\n", - "# print(detr_tscript.graph)" - ] - } - ], - "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.9" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/source/pic2card/notebooks/EfficientDet.ipynb b/source/pic2card/notebooks/EfficientDet.ipynb deleted file mode 100644 index 49ed9b59c5..0000000000 --- a/source/pic2card/notebooks/EfficientDet.ipynb +++ /dev/null @@ -1,239 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "\n", - "sys.path.insert(0, \"/home/haridas/projects/opensource/automl/efficientdet/\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import pandas as pd\n", - "import os\n", - "\n", - "from PIL import Image" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"\"\n", - "\n", - "import tensorflow as tf" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## TFRecord analysis" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "tfr_file = \"/home/haridas/projects/opensource/automl/efficientdet/data/val/val-00000-of-00001.tfrecord\"" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "raw_dataset = tf.data.TFRecordDataset(tfr_file)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [], - "source": [ - "raw_record = raw_dataset.take(1)" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "example = tf.train.Example()" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'DatasetV1Adapter' object has no attribute 'numpy'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mexample\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mParseFromString\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mraw_record\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnumpy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m: 'DatasetV1Adapter' object has no attribute 'numpy'" - ] - } - ], - "source": [ - "example.ParseFromString(raw_record.numpy())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Model Inference Experiment" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "min_score_threh = 0.35\n", - "max_boxes_to_draw = 100\n", - "line_thickness = 2" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "img_path = \"/home/haridas/projects/mystique/data/templates_test_data/3.png\"" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(944, 538)" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "img = Image.open(img_path)\n", - "img.size" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\u001b[0;31mInit signature:\u001b[0m\n", - "\u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mestimator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtpu\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mRunConfig\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mtpu_config\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mevaluation_master\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mmaster\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0mcluster\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mDocstring:\u001b[0m RunConfig with TPU support.\n", - "\u001b[0;31mInit docstring:\u001b[0m\n", - "Constructs a RunConfig.\n", - "\n", - "Args:\n", - " tpu_config: the TPUConfig that specifies TPU-specific configuration.\n", - " evaluation_master: a string. The address of the master to use for eval.\n", - " Defaults to master if not set.\n", - " master: a string. The address of the master to use for training.\n", - " cluster: a ClusterResolver\n", - " **kwargs: keyword config parameters.\n", - "\n", - "Raises:\n", - " ValueError: if cluster is not None and the provided session_config has a\n", - " cluster_def already.\n", - "\u001b[0;31mFile:\u001b[0m /mnt1/haridas/projects/venv/lib/python3.6/site-packages/tensorflow_estimator/python/estimator/tpu/tpu_config.py\n", - "\u001b[0;31mType:\u001b[0m type\n", - "\u001b[0;31mSubclasses:\u001b[0m \n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# !python /home/haridas/projects/opensource/automl/efficientdet/model_inspect.py --help\n", - "\n", - "tf.estimator.tpu.RunConfig(\n", - " \n", - " model_dir=\"path\",\n", - " evaluation_master=\"\",\n", - " cluster=None\n", - ")" - ] - } - ], - "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.9" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/source/pic2card/notebooks/dataset.ipynb b/source/pic2card/notebooks/dataset.ipynb deleted file mode 100644 index ea10860050..0000000000 --- a/source/pic2card/notebooks/dataset.ipynb +++ /dev/null @@ -1,478 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [], - "source": [ - "import glob\n", - "import shutil\n", - "import json\n", - "from pathlib import Path\n", - "\n", - "from collections import Counter\n", - "\n", - "import pandas as pd\n", - "import xml.etree.ElementTree as ET" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Labelmg to COCO format\n", - "\n", - "Labelmg by default creates files in the **Pascal VOC** format. Most of the latest pipelines are\n", - "expecting the labels in COCO format.\n", - "\n", - "1. Pascal VOC format -> coordinates are represented as `(left_top, right_bottom)`\n", - "2. Labelmg tool produces Pascal voc format.\n", - "3. COCO expects all the file names should be in number format\n", - "4. COCO files" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "train_dir = \"/home/haridas/projects/mystique/data/train_and_test-2020-Jun-05-coco/train/\"\n", - "test_dir = \"/home/haridas/projects/mystique/data/train_and_test-2020-Jun-05-coco/test/\"\n", - "template_test = \"/home/haridas/projects/mystique/data/train_and_test-2020-Jun-05-coco/templates_test_data_coco/\"" - ] - }, - { - "cell_type": "code", - "execution_count": 214, - "metadata": {}, - "outputs": [], - "source": [ - "tree = ET.parse(f\"{template_test}/1.xml\")\n", - "root = tree.getroot()\n", - "fn_child = root.find(\"filename\")" - ] - }, - { - "cell_type": "code", - "execution_count": 216, - "metadata": {}, - "outputs": [], - "source": [ - "fn_child.text = \"1.jpg\"" - ] - }, - { - "cell_type": "code", - "execution_count": 229, - "metadata": {}, - "outputs": [], - "source": [ - "# print(ET.tostring(root).decode('utf8'))" - ] - }, - { - "cell_type": "code", - "execution_count": 240, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "def renamefn_to_intfn(data_dir, start=1000):\n", - " \"\"\"\n", - " @param data_dir: Pascal VOC format generated by labelmg.\n", - " @param start: File name start point.\n", - " \"\"\"\n", - " get_fn = lambda x: \".\".join(x.split(\".\")[:-1])\n", - "\n", - " pp = Path(data_dir)\n", - " for fn in glob.glob(f\"{data_dir}/*.xml\"):\n", - " p = Path(fn)\n", - " root = ET.parse(fn).getroot()\n", - " fn_child = root.find(\"filename\")\n", - " path_child = root.find(\"path\")\n", - " img_fn = fn_child.text\n", - " \n", - " if not get_fn(p.name).isdigit():\n", - " bname = \".\".join(p.name.split(\".\")[:-1])\n", - " png = Path(pp / f\"{img_fn}\")\n", - " assert png.exists()\n", - " \n", - " imgfn_split = img_fn.split(\".\")\n", - " img, img_ext = \".\".join(imgfn_split[:-1]), imgfn_split[-1]\n", - " \n", - " p.rename(pp / f\"{start}.xml\")\n", - " png.rename(pp / f\"{start}.{img_ext}\")\n", - " \n", - " # Update the filename reference in new xml \n", - " fn_child.text = f\"{start}.{img_ext}\"\n", - " path_child.text = f\"{pp/str(start)}.{img_ext}\"\n", - " \n", - " with open(pp/f\"{start}.xml\", 'w') as f:\n", - " f.write(ET.tostring(root).decode(\"utf8\"))\n", - " \n", - " start += 1" - ] - }, - { - "cell_type": "code", - "execution_count": 241, - "metadata": {}, - "outputs": [], - "source": [ - "renamefn_to_intfn(template_test)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Coco Category Check\n", - "\n", - "Ensure the Dataset has correct labels and category ID mapping across train/val/test datasets." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{(3, 'checkbox'): 54, (1, 'textbox'): 937, (4, 'actionset'): 67, (5, 'image'): 258, (2, 'radiobutton'): 108, (6, 'rating'): 3}\n" - ] - }, - { - "data": { - "text/plain": [ - "[{'supercategory': 'none', 'id': 1, 'name': 'textbox'},\n", - " {'supercategory': 'none', 'id': 2, 'name': 'radiobutton'},\n", - " {'supercategory': 'none', 'id': 3, 'name': 'checkbox'},\n", - " {'supercategory': 'none', 'id': 4, 'name': 'actionset'},\n", - " {'supercategory': 'none', 'id': 5, 'name': 'image'},\n", - " {'supercategory': 'none', 'id': 6, 'name': 'rating'}]" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "train_ann_file = \"/home/haridas/projects/mystique/data/train_and_test-2020-Jun-05-coco/train_coco_updated.json\"\n", - "val_ann_file = \"/home/haridas/projects/mystique/data/train_and_test-2020-Jun-05-coco/test_coco_updated.json\"\n", - "test_ann_file = \"/home/haridas/projects/mystique/data/train_and_test-2020-Jun-05-coco/templates_test_data_coco_updated.json\"\n", - "\n", - "def check_category_id(ann_file):\n", - " ann = json.loads(open(ann_file).read())\n", - " cat_map = {i[\"id\"] : i[\"name\"] for i in ann[\"categories\"]}\n", - " print({(k, cat_map[k]): v for k, v in Counter([i[\"category_id\"] for i in ann[\"annotations\"]]).items()})\n", - " return ann[\"categories\"]\n", - "\n", - "check_category_id(train_ann_file)" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{(1, 'textbox'): 92, (2, 'radiobutton'): 11, (5, 'image'): 20, (4, 'actionset'): 1}\n" - ] - }, - { - "data": { - "text/plain": [ - "[{'supercategory': 'none', 'id': 1, 'name': 'textbox'},\n", - " {'supercategory': 'none', 'id': 2, 'name': 'radiobutton'},\n", - " {'supercategory': 'none', 'id': 3, 'name': 'checkbox'},\n", - " {'supercategory': 'none', 'id': 4, 'name': 'actionset'},\n", - " {'supercategory': 'none', 'id': 5, 'name': 'image'},\n", - " {'supercategory': 'none', 'id': 6, 'name': 'rating'}]" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "check_category_id(val_ann_file)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{(5, 'image'): 305, (1, 'textbox'): 709, (4, 'actionset'): 31, (2, 'radiobutton'): 8}\n" - ] - }, - { - "data": { - "text/plain": [ - "[{'supercategory': 'none', 'id': 1, 'name': 'textbox'},\n", - " {'supercategory': 'none', 'id': 2, 'name': 'radiobutton'},\n", - " {'supercategory': 'none', 'id': 3, 'name': 'checkbox'},\n", - " {'supercategory': 'none', 'id': 4, 'name': 'actionset'},\n", - " {'supercategory': 'none', 'id': 5, 'name': 'image'},\n", - " {'supercategory': 'none', 'id': 6, 'name': 'rating'}]" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "check_category_id(test_ann_file)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['images', 'type', 'annotations', 'categories'])" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ann.keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Counter({3: 54, 1: 937, 4: 67, 5: 366, 6: 3})" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Counter([i[\"category_id\"] for i in ann[\"annotations\"]])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Label statistics" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "metadata": {}, - "outputs": [], - "source": [ - "train_df = pd.read_csv(\"/home/haridas/projects/mystique/data/train_and_test-2020-Jun-05-coco/train_label.csv\")" - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
widthheightclassxminyminxmaxymax
count105.000000105.000000105.000000105.000000105.000000105.000000105.000000
mean13.59047613.59047613.59047613.59047613.59047613.59047613.590476
std8.5075708.5075708.5075708.5075708.5075708.5075708.507570
min2.0000002.0000002.0000002.0000002.0000002.0000002.000000
25%7.0000007.0000007.0000007.0000007.0000007.0000007.000000
50%12.00000012.00000012.00000012.00000012.00000012.00000012.000000
75%18.00000018.00000018.00000018.00000018.00000018.00000018.000000
max55.00000055.00000055.00000055.00000055.00000055.00000055.000000
\n", - "
" - ], - "text/plain": [ - " width height class xmin ymin xmax \\\n", - "count 105.000000 105.000000 105.000000 105.000000 105.000000 105.000000 \n", - "mean 13.590476 13.590476 13.590476 13.590476 13.590476 13.590476 \n", - "std 8.507570 8.507570 8.507570 8.507570 8.507570 8.507570 \n", - "min 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 \n", - "25% 7.000000 7.000000 7.000000 7.000000 7.000000 7.000000 \n", - "50% 12.000000 12.000000 12.000000 12.000000 12.000000 12.000000 \n", - "75% 18.000000 18.000000 18.000000 18.000000 18.000000 18.000000 \n", - "max 55.000000 55.000000 55.000000 55.000000 55.000000 55.000000 \n", - "\n", - " ymax \n", - "count 105.000000 \n", - "mean 13.590476 \n", - "std 8.507570 \n", - "min 2.000000 \n", - "25% 7.000000 \n", - "50% 12.000000 \n", - "75% 18.000000 \n", - "max 55.000000 " - ] - }, - "execution_count": 82, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "train_df.groupby(\"filename\").count().describe()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "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.9" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/source/pic2card/notebooks/detecto-object-detection-lib.ipynb b/source/pic2card/notebooks/detecto-object-detection-lib.ipynb deleted file mode 100644 index b64aed6ad1..0000000000 --- a/source/pic2card/notebooks/detecto-object-detection-lib.ipynb +++ /dev/null @@ -1,675 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "# !pip install detecto" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import glob\n", - "import numpy as np\n", - "import io\n", - "import os\n", - "\n", - "\n", - "import torch\n", - "import torchvision\n", - "import torchvision.transforms as T\n", - "from torch.utils.tensorboard import SummaryWriter\n", - "# from torchvision.models.detection import \n", - "\n", - "import skimage\n", - "from PIL import Image\n", - "from detecto.core import Model\n", - "from detecto.visualize import detect_live, detect_video, plot_prediction_grid, show_labeled_image\n", - "from detecto.core import DataLoader, Dataset\n", - "from detecto.utils import read_image, xml_to_csv, normalize_transform\n", - "\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# model = Model()\n", - "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"1\"" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "# !du -sh /Users/haridas/.cache/torch/checkpoints/fasterrcnn_resnet50_fpn_coco-258fb6c6.pth" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "# detect_live(model)\n", - "train_dir = \"/home/haridas/projects/mystique/data/train_and_test-2020-Jun-05/train\"\n", - "test_dir = \"/home/haridas/projects/mystique/data/train_and_test-2020-Jun-05/test\"\n", - "\n", - "\n", - "# train_dir = \"/home/haridas/projects/mystique/data/train_and_test-2020-05-31/train\"\n", - "# test_dir = \"/home/haridas/projects/mystique/data/train_and_test-2020-05-31/test\"" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "# plot_prediction_grid\n", - "train_labels = xml_to_csv(\n", - " train_dir,\n", - " f\"{train_dir}/../train_label.csv\"\n", - ")\n", - "val_labels = xml_to_csv(\n", - " test_dir,\n", - " f\"{test_dir}/../test_label.csv\"\n", - ")\n", - "\n", - "classes = train_labels['class'].unique().tolist()" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "textbox 937\n", - "image 258\n", - "radiobutton 108\n", - "actionset 67\n", - "checkbox 54\n", - "rating 3\n", - "Name: class, dtype: int64" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "train_labels[\"class\"].value_counts()" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "textbox 937\n", - "image 258\n", - "radiobutton 108\n", - "actionset 67\n", - "checkbox 54\n", - "rating 3\n", - "Name: class, dtype: int64" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "train_labels[\"class\"].value_counts()" - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])" - ] - }, - "execution_count": 81, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# train_labels.filename.unique()\n", - "# !pip install torch==1.5.0+cu101 torchvision==0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html\n", - "normalize_transform()" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "# Image reader and pre-processing pipeline.\n", - "transformer = T.Compose([\n", - " T.ToPILImage(),\n", - " lambda image: image.convert(\"RGB\"),\n", - " T.ToTensor(),\n", - " normalize_transform()\n", - "])" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "metadata": {}, - "outputs": [], - "source": [ - "# Pytorch dataset for train and validation.\n", - "dataset = Dataset(\n", - " f\"{train_dir}/../train_label.csv\",\n", - " image_folder=train_dir,\n", - " transform=transformer\n", - ")\n", - "\n", - "val_dataset = Dataset(\n", - " f\"{test_dir}/../test_label.csv\",\n", - " image_folder=test_dir,\n", - " transform=transformer\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "metadata": {}, - "outputs": [], - "source": [ - "train_dataloader = DataLoader(dataset, batch_size=2)\n", - "val_dataloader = DataLoader(val_dataset, batch_size=2)" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "metadata": {}, - "outputs": [], - "source": [ - "# ims, lbs = dataset[100]\n", - "# show_labeled_image(ims, lbs[\"boxes\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 84, - "metadata": {}, - "outputs": [], - "source": [ - "# !pip install torch==1.5.0+cu101 torchvision==0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html\n", - "# torch.cuda(\"cuda:0\")\n", - "# torch.cuda.is_available()\n", - "# f\"{test_dir}/../train_label.csv\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Train models in GPU" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "torch.cuda.device_count()" - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "metadata": {}, - "outputs": [], - "source": [ - "new_model = Model(classes)" - ] - }, - { - "cell_type": "code", - "execution_count": 80, - "metadata": {}, - "outputs": [], - "source": [ - "# dataset._csv.describe()\n", - "# _model = torch.nn.DataParallel(new_model)" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "metadata": {}, - "outputs": [], - "source": [ - "new_model.fit(dataset, val_dataset=val_dataset, verbose=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "tb_writer = SummaryWriter(\"Second\")\n", - "new_model = CustomModel(classes, log_writer=tb_writer)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 1 of 10\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/mnt1/haridas/projects/venv/lib/python3.6/site-packages/torch/nn/functional.py:2854: UserWarning: The default behavior for interpolate/upsample with float scale_factor will change in 1.6.0 to align with other frameworks/libraries, and use scale_factor directly, instead of relying on the computed output size. If you wish to keep the old behavior, please set recompute_scale_factor=True. See the documentation of nn.Upsample for details. \n", - " warnings.warn(\"The default behavior for interpolate/upsample with float scale_factor will change \"\n", - "/pytorch/torch/csrc/utils/python_arg_parser.cpp:756: UserWarning: This overload of nonzero is deprecated:\n", - "\tnonzero(Tensor input, *, Tensor out)\n", - "Consider using one of the following signatures instead:\n", - "\tnonzero(Tensor input, *, bool as_tuple)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loss: 1.0001208749241555\n", - "Epoch 2 of 10\n", - "Loss: 0.9212686431665833\n", - "Epoch 3 of 10\n" - ] - } - ], - "source": [ - "new_model.fit(train_dataloader, val_dataset=val_dataloader, verbose=True, epochs=20)" - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "metadata": {}, - "outputs": [], - "source": [ - "# model = Model(classes=[\"test\", 'asdf'])\n", - "# model.predict([img])\n", - "# new_model.name\n", - "#save(\"/home/haridas/projects/pic2card/model/pth_models/\")" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "metadata": {}, - "outputs": [], - "source": [ - "# torch.cuda.memory_stats()\n", - "# model.predict([img])" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "# %debug" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Load saved model and test" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "model_path_20epoch = \"/home/haridas/projects/pic2card/model/pth_models/faster-rcnn-2020-05-31-1590914103.pth\",\n", - "model_path_25epoch = \"/home/haridas/projects/pic2card/model/pth_models/faster-rcnn-2020-05-31-1590943544-epochs_25.pth\"\n", - "\n", - "model_path_35epoch = \"/home/haridas/projects/pic2card-models/pytorch/faster-rcnn-2020-06-17-1592424185-epochs_35.pth\"\n", - "\n", - "# model_path_10epoch = \"/home/haridas/projects/pic2card/model/pth_models/faster-rcnn-2020-05-31-1590928573-epochs_10.pth\"" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['checkbox', 'textbox', 'actionset', 'image', 'radiobutton', 'rating']" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "classes" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [], - "source": [ - "# Load the saved model\n", - "model = Model.load(\"pic2card_model.pth\", classes=classes)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "model = Model.load(\n", - " model_path_25epoch,\n", - " classes=classes\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "img = transformer(read_image(f\"{train_dir}/1.png\"))" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "# show_labeled_image(\n", - "# T.ToPILImage(read_image(f\"{train_dir}/1.png\"))\n", - "# img.shape\n", - "im = read_image(f\"{test_dir}/104.png\")" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "torch.Tensor" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(im_tfs)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/mnt1/haridas/projects/venv/lib/python3.6/site-packages/torch/nn/functional.py:2854: UserWarning: The default behavior for interpolate/upsample with float scale_factor will change in 1.6.0 to align with other frameworks/libraries, and use scale_factor directly, instead of relying on the computed output size. If you wish to keep the old behavior, please set recompute_scale_factor=True. See the documentation of nn.Upsample for details. \n", - " warnings.warn(\"The default behavior for interpolate/upsample with float scale_factor will change \"\n", - "/pytorch/torch/csrc/utils/python_arg_parser.cpp:756: UserWarning: This overload of nonzero is deprecated:\n", - "\tnonzero(Tensor input, *, Tensor out)\n", - "Consider using one of the following signatures instead:\n", - "\tnonzero(Tensor input, *, bool as_tuple)\n" - ] - } - ], - "source": [ - "im = read_image(f\"{test_dir}/104.png\")\n", - "im_tfs = transformer(im)\n", - "labels, boxes, scores = model.predict([im_tfs])[0]\n", - "# show_labeled_image(im, boxes, labels)" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [], - "source": [ - "# list(zip(labels, scores))\n", - "# model.predict([im_tfs])[0]\n", - "# np.array(classes)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "labels, boxes, scores = model.predict(img)\n", - "torchvision.transforms.ToPILImage()(img)\n", - "# show_labeled_image(img, boxes, labels)\n", - "# img.shape\n", - "show_labeled_image(img, boxes, labels)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "# new_model._get_raw_predictions([img])\n", - "# Send the image to gpu.\n", - "# img = img.to(new_model._device)\n", - "# new_model._model([img])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# model.predict([img])\n", - "# new_model.predict([img])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [], - "source": [ - "# !ls ../../mystique/data/train_and_test/train\n", - "# new_model._device\n", - "# %debug" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Tensorboard " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from torch.utils.tensorboard import SummaryWriter, RecordWriter" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "writer = SummaryWriter(\"testing\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "writer.add_image(\"images\", torchvision.utils.make_grid([img]), 0)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# writer.add_scalar?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# writer.add_image?\n", - "writer = SummaryWriter()\n", - "\n", - "for n_iter in range(100):\n", - " writer.add_scalar('Loss/train', np.random.random(), n_iter)\n", - " writer.add_scalar('Loss/test', np.random.random(), n_iter)\n", - " writer.add_scalar('Accuracy/train', np.random.random(), n_iter)\n", - " writer.add_scalar('Accuracy/test', np.random.random(), n_iter)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - } - ], - "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.9" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/source/pic2card/notebooks/faster_rcnn.ipynb b/source/pic2card/notebooks/faster_rcnn.ipynb deleted file mode 100644 index 9f906d0608..0000000000 --- a/source/pic2card/notebooks/faster_rcnn.ipynb +++ /dev/null @@ -1,165 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import os\n", - "import six.moves.urllib as urllib\n", - "import sys\n", - "import tarfile\n", - "import tensorflow as tf\n", - "import zipfile\n", - "from PIL import Image\n", - "import cv2\n", - "\n", - "from object_detection.utils import label_map_util\n", - "from object_detection.utils import visualization_utils as vis_util\n", - "\n", - "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"\"\n", - "sys.path.insert(0, \"../\")\n", - "\n", - "from mystique.initial_setups import set_graph_and_tensors\n", - "from mystique.predict_card import PredictCard\n", - "from mystique.detect_objects import ObjectDetection\n", - "from mystique.utils import plot_results\n", - "\n", - "\n", - "# This is needed to display the images.\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "def predict_bbox(img_path) -> np.array:\n", - " \"\"\"\n", - " Predict the bounding boxes, class label and draw the bbox\n", - " on the original image.\n", - " \"\"\"\n", - " img = Image.open(img_path)\n", - " img_np = np.asarray(img)\n", - " img_np = cv2.cvtColor(img_np, cv2.COLOR_RGB2BGR)\n", - " img_np_copy = img_np.copy()\n", - " object_detection = ObjectDetection()\n", - " \n", - " output, category = object_detection.get_objects(img_np, img)\n", - " # google models wants ymin, xmin, ymax, xmax format.\n", - " # output[\"detection_boxes\"] = output[\"detection_boxes\"][:, [1, 0, 3, 2]]\n", - " \n", - " _img = plot_results(img,\n", - " output[\"detection_classes\"],\n", - " output[\"detection_scores\"],\n", - " output[\"detection_boxes\"]\n", - " )\n", - " return _img" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "<_io.BytesIO at 0x7f1480d625c8>" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "img_path = \"/home/haridas/projects/AdaptiveCards-ro/source/pic2card/app/assets/samples/3.png\"\n", - "predict_bbox(img_path)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "img_path = \"/home/haridas/projects/AdaptiveCards-ro/source/pic2card/app/assets/samples/5.png\"\n", - "Image.fromarray(predict_bbox(img_path))" - ] - } - ], - "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.9" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/source/pic2card/notebooks/model_pipeline_analysis.ipynb b/source/pic2card/notebooks/model_pipeline_analysis.ipynb deleted file mode 100644 index 0e30603ca5..0000000000 --- a/source/pic2card/notebooks/model_pipeline_analysis.ipynb +++ /dev/null @@ -1,508 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "sys.path.insert(0, \"../\")" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "import cv2\n", - "import numpy as np\n", - "import json" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "from PIL import Image\n", - "import pandas as pd\n", - "\n", - "from mystique.utils import xml_to_csv, id_to_label\n", - "from mystique.detect_objects import ObjectDetection\n", - "from mystique.initial_setups import set_graph_and_tensors\n", - "\n", - "from object_detection.utils import visualization_utils as vis_util\n", - "from object_detection.metrics import coco_tools, coco_evaluation\n", - "from IPython import display" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "df_label = xml_to_csv(\"../../mystique/data/train_and_test-2020-05-31/train\")" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
filenamewidthheightclassxminyminxmaxymax
13431.png547478textbox262636057
13441.png547478textbox896421590
13451.png547478textbox8888310112
13461.png547478textbox27128522224
13471.png547478textbox26233275256
13481.png547478textbox27256226280
13491.png547478textbox27282270307
13501.png547478textbox24306229331
13511.png547478actionset26332531399
13521.png547478actionset25394533465
13531.png547478image346380120
\n", - "
" - ], - "text/plain": [ - " filename width height class xmin ymin xmax ymax\n", - "1343 1.png 547 478 textbox 26 26 360 57\n", - "1344 1.png 547 478 textbox 89 64 215 90\n", - "1345 1.png 547 478 textbox 88 88 310 112\n", - "1346 1.png 547 478 textbox 27 128 522 224\n", - "1347 1.png 547 478 textbox 26 233 275 256\n", - "1348 1.png 547 478 textbox 27 256 226 280\n", - "1349 1.png 547 478 textbox 27 282 270 307\n", - "1350 1.png 547 478 textbox 24 306 229 331\n", - "1351 1.png 547 478 actionset 26 332 531 399\n", - "1352 1.png 547 478 actionset 25 394 533 465\n", - "1353 1.png 547 478 image 34 63 80 120" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_label[df_label.filename == \"1.png\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 101, - "metadata": {}, - "outputs": [], - "source": [ - "image = Image.open(\n", - " \"../../mystique/data/train_and_test-2020-05-31/train/1.png\"\n", - ").convert(\"RGB\")\n", - "image_np = np.array(image)" - ] - }, - { - "cell_type": "code", - "execution_count": 117, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(547, 478)" - ] - }, - "execution_count": 117, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# type(image_np)\n", - "# image_np.shape\n", - "image.size" - ] - }, - { - "cell_type": "code", - "execution_count": 99, - "metadata": {}, - "outputs": [], - "source": [ - "object_detect = ObjectDetection(*set_graph_and_tensors())" - ] - }, - { - "cell_type": "code", - "execution_count": 100, - "metadata": {}, - "outputs": [], - "source": [ - "result, category_index = object_detect.get_objects(image_np)" - ] - }, - { - "cell_type": "code", - "execution_count": 131, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(547, 478)" - ] - }, - "execution_count": 131, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# result[\"detection_scores\"]\n", - "# result[\"detection_boxes\"]\n", - "# image_np\n", - "# category_index\n", - "# result[\"detection_boxes\"][0]\n", - "image.size" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "# vis_util.visualize_boxes_and_labels_on_image_array(\n", - "# image_np,\n", - "# result['detection_boxes'],\n", - "# result['detection_classes'],\n", - "# result['detection_scores'],\n", - "# category_index,\n", - "# use_normalized_coordinates=True\n", - "# )" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# Image.fromarray(image_np)" - ] - }, - { - "cell_type": "code", - "execution_count": 108, - "metadata": {}, - "outputs": [], - "source": [ - "# Image.fromarray(image_np)" - ] - }, - { - "cell_type": "code", - "execution_count": 107, - "metadata": {}, - "outputs": [], - "source": [ - "# vis_util.visualize_boxes_and_labels_on_image_array?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Model Evaluation" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "demo_positive\t\t\t train\n", - "failing_images\t\t\t train_and_test\n", - "model_checkpoint\t\t train_and_test-2020-05-31\n", - "save_model_2020-05-05\t\t train_and_test-2020-Jun-05\n", - "save_model_reduced\t\t train_and_test-2020-Jun-05-coco\n", - "save_model_temp\t\t\t train_and_test-2020-Jun-05.zip\n", - "templates_test_data\t\t train_and_test-2020-May-27-4clsas.zip\n", - "templates_test_data.csv\t\t train_and_test-old\n", - "templates_test_data.tfrecords\t train_and_test.zip\n", - "templates_test_data_coco\t training_variance9500\n", - "templates_test_data_coco.json\t training_variance9500.zip\n", - "test\t\t\t\t voc2coco.py\n", - "tf_records_2020-06-29-1593413488\n" - ] - } - ], - "source": [ - "!ls /home/haridas/projects/mystique/data/" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "train_coco_ann = json.loads(open(\"/home/haridas/projects/mystique/data/train_and_test-2020-Jun-05-coco/train_coco.json\").read())\n", - "test_coco_ann = json.loads(open(\"/home/haridas/projects/mystique/data/train_and_test-2020-Jun-05-coco/test_coco.json\").read())\n", - "temp_coco_ann = json.loads(open(\"/home/haridas/projects/mystique/data/templates_test_data_coco.json\").read())" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['images', 'type', 'annotations', 'categories'])" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "train_coco_ann.keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[{'supercategory': 'none', 'id': 0, 'name': 'actionset'},\n", - " {'supercategory': 'none', 'id': 1, 'name': 'image'},\n", - " {'supercategory': 'none', 'id': 2, 'name': 'radiobutton'},\n", - " {'supercategory': 'none', 'id': 3, 'name': 'textbox'}]" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "temp_coco_ann[\"categories\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[{'supercategory': 'none', 'id': 0, 'name': 'actionset'},\n", - " {'supercategory': 'none', 'id': 1, 'name': 'checkbox'},\n", - " {'supercategory': 'none', 'id': 2, 'name': 'image'},\n", - " {'supercategory': 'none', 'id': 3, 'name': 'radiobutton'},\n", - " {'supercategory': 'none', 'id': 4, 'name': 'rating'},\n", - " {'supercategory': 'none', 'id': 5, 'name': 'textbox'}]" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "train_coco_ann[\"categories\"]" - ] - } - ], - "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.9" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/source/pic2card/notebooks/test_png.png b/source/pic2card/notebooks/test_png.png deleted file mode 100644 index 0c02624890..0000000000 Binary files a/source/pic2card/notebooks/test_png.png and /dev/null differ diff --git a/source/pic2card/requirements/requirements-dev.txt b/source/pic2card/requirements/requirements-dev.txt deleted file mode 100644 index bea9b638d3..0000000000 --- a/source/pic2card/requirements/requirements-dev.txt +++ /dev/null @@ -1,7 +0,0 @@ --r requirements-pytorch.txt -requests -nltk -scikit-learn -black -pylint==2.7.4 -coverage \ No newline at end of file diff --git a/source/pic2card/requirements/requirements-frozen_graph.txt b/source/pic2card/requirements/requirements-frozen_graph.txt deleted file mode 100644 index 3012cc95eb..0000000000 --- a/source/pic2card/requirements/requirements-frozen_graph.txt +++ /dev/null @@ -1,3 +0,0 @@ -# To serve from frozen graph you have to install the tf core libraries. -# It comes close to 1.7GB -tensorflow==1.15.4 diff --git a/source/pic2card/requirements/requirements-pytorch.txt b/source/pic2card/requirements/requirements-pytorch.txt deleted file mode 100644 index a88d88d7df..0000000000 --- a/source/pic2card/requirements/requirements-pytorch.txt +++ /dev/null @@ -1,3 +0,0 @@ -torch==1.5.0 -torchvision==0.6.0 -detecto==1.1.4 diff --git a/source/pic2card/requirements/requirements.txt b/source/pic2card/requirements/requirements.txt deleted file mode 100644 index 9b83ab7105..0000000000 --- a/source/pic2card/requirements/requirements.txt +++ /dev/null @@ -1,12 +0,0 @@ -# DL library dependencies are kept eparate due to its size. -#--use-feature=2020-resolver -flask==1.1.1 -flask_restplus==0.13.0 -flask-cors==3.0.9 -Werkzeug==0.16.1 -Pillow==7.1.2 -opencv-python==3.4.9.33 -pytesseract==0.3.4 -gunicorn==20.0.4 -pandas==1.0.4 -matplotlib==3.2.1 diff --git a/source/pic2card/requirements/torch-cpu.txt b/source/pic2card/requirements/torch-cpu.txt deleted file mode 100644 index 9192b2a025..0000000000 --- a/source/pic2card/requirements/torch-cpu.txt +++ /dev/null @@ -1,3 +0,0 @@ ---find-links https://download.pytorch.org/whl/torch_stable.html -torch==1.6.0+cpu -torchvision==0.7.0+cpu diff --git a/source/pic2card/swagger.yaml b/source/pic2card/swagger.yaml deleted file mode 100644 index dc4d883d65..0000000000 --- a/source/pic2card/swagger.yaml +++ /dev/null @@ -1,131 +0,0 @@ -openapi: 3.0.1 -info: - title: Pic2Card - description: Pic2Card generates Adaptivecards from Image. - version: "1.0" -servers: -- url: / -tags: -- name: Jobs -paths: - /get_card_templates: - get: - tags: - - Jobs - summary: Get list of sample iamges in base64 format - description: Returns List of template images in base64 format. This can be used - to quickly test the pic2card apis. - operationId: get_get_card_templates - responses: - 200: - description: Success - content: - application/json: - schema: - type: object - properties: - templates: - type: array - items: - type: string - /predict_json: - post: - tags: - - Jobs - summary: predicts the adaptive card json for the posted image - description: 'Returns adaptive card json' - operationId: post_predict_json - parameters: - - name: format - in: query - description: Return the Adaptivecard Template and Data format. - schema: - type: string - requestBody: - description: Base64 Image payload in Json format. - content: - application/json: - schema: - $ref: '#/components/schemas/ImagePayload' - required: true - responses: - 200: - description: Success - content: - application/json: - schema: - type: object - properties: - card_json: - type: object - error: - type: object - x-codegen-request-body-name: body - - /predict_json_debug: - post: - tags: - - Jobs - summary: predicts the adaptive card json for the posted image. - description: 'Returns the predicted card json and input iamge with bounding boxes drawn' - operationId: post_debug_endpoint - parameters: - - name: format - in: query - description: Return the Adaptivecard Template and Data format. - schema: - type: string - requestBody: - description: Base64 Image payload in Json format. - content: - application/json: - schema: - $ref: '#/components/schemas/ImagePayload' - required: true - responses: - 200: - description: Success - content: - application/json: - schema: - type: object - properties: - card_json: - type: object - error: - type: object - image: - type: string - /version: - get: - tags: - - Jobs - summary: Return the current deployed git_hash of this project - description: Commit hash gets injected into docker image at build time. - operationId: get_get_version - responses: - 200: - description: Success - content: - application/json: - schema: - type: object - properties: - git_sha: - type: string - branch: - type: string -components: - schemas: - ImagePayload: - type: object - properties: - image: - type: string - responses: - MaskError: - description: When any error occurs on mask - content: {} - ParseError: - description: When a mask can't be parsed - content: {} diff --git a/source/pic2card/tests/__init__.py b/source/pic2card/tests/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/source/pic2card/tests/base_test_class.py b/source/pic2card/tests/base_test_class.py deleted file mode 100644 index fe39fa8f0f..0000000000 --- a/source/pic2card/tests/base_test_class.py +++ /dev/null @@ -1,143 +0,0 @@ -"""Base test module """ - -import os -import unittest -import time -import json -from typing import Dict, List -import numpy as np -import cv2 -from PIL import Image - -# pylint: disable=no-name-in-module -from tests.utils import ( - img_to_base64, - headers, - payload_empty_dict_data, - payload_data_some_string, - generate_base64, - get_response, - api_dict, -) - -from app.api import app -from mystique.predict_card import PredictCard -from mystique.extract_properties import CollectProperties -from mystique.utils import load_od_instance - -curr_dir = os.path.dirname(__file__) - - -class BaseAPITest(unittest.TestCase): - """Base test class""" - - @classmethod - def setUpClass(cls): - """Define test variables and initialize app.""" - cls.client = app.test_client() - cls.data = img_to_base64(os.environ["test_img_path"]) - cls.gt_2mb_data = generate_base64() - cls.empty_data = payload_empty_dict_data - cls.wrong_data = payload_data_some_string - cls.headers = headers - cls._started_at = time.time() - # api - add test class name in api_dict for new classes - cls.api = api_dict[cls.__name__] - # response - if cls.__name__ != "GetCardTemplatesTestAPI": - cls.response = get_response( - cls.client, cls.api, cls.headers, cls.data - ) - else: - cls.response = cls.client.get(cls.api) - # output - cls.output = json.loads(cls.response.data) - - def tearDown(self): - """To get the elapsed time for each test""" - elapsed = time.time() - self._started_at - print("{} ({}s)".format(self.id(), round(elapsed, 2))) - - -class TestUtil: - """Test Util for collecting design object, image object sizes""" - - # pylint: disable=no-self-use - def collect_json_objects( - self, image: Image, model_instance: PredictCard - ) -> Dict: - """ - Returns the dict of design objects collected from the prediction - @param image: input PIL image - @param model_instance: model instance object - @return: dict of design objects - """ - image = image.convert("RGB") - image_np = np.asarray(image) - image_np = cv2.cvtColor(image_np, cv2.COLOR_RGB2BGR) - output_dict = model_instance.od_model.get_objects( - image_np=image_np, image=image - ) - return model_instance.collect_objects( - output_dict=output_dict, pil_image=image - ) - - # pylint: disable=no-self-use - def collect_image_sizes(self, json_objects: Dict, image: Image) -> List: - """ - Returns the list of extracted image object sizes of the input image - @param json_objects: dict of design objects - @param image: input PIL image - @return: list of image object sizes - """ - collect_properties = CollectProperties(image) - image_objects = [ - image_object - for image_object in json_objects["objects"] - if image_object["object"] == "image" - ] - for design_object in image_objects: - property_object = getattr( - collect_properties, design_object.get("object") - ) - property_element = property_object( - image, design_object.get("coordinates") - ) - design_object.update(property_element) - return [ - design_object.get("size", "") for design_object in image_objects - ] - - -class BaseSetUpClass( - unittest.TestCase -): # pylint: disable=too-many-instance-attributes - """ - Base setup class for the tests, contains json objects collected - for a test image - """ - - def setUp(self): - self.image_path = os.path.join( - curr_dir, "../tests/test_images/test01.png" - ) - self.test_util = TestUtil() - self.model_instance = load_od_instance() - self.model_instance = PredictCard(self.model_instance) - - self.image = Image.open(self.image_path) - self.json_objects, _ = self.test_util.collect_json_objects( - self.image, self.model_instance - ) - self.test_coord1 = self.json_objects["objects"][0].get( - "coordinates", [] - ) - self.test_coord2 = self.json_objects["objects"][1].get( - "coordinates", [] - ) - self._started_at = time.time() - - def tearDown(self): - """To get the elapsed time for each test""" - elapsed = time.time() - self._started_at - print("{} ({}s)".format(self.id(), round(elapsed, 2))) diff --git a/source/pic2card/tests/test_font_properties.py b/source/pic2card/tests/test_font_properties.py deleted file mode 100644 index 42b6f106e1..0000000000 --- a/source/pic2card/tests/test_font_properties.py +++ /dev/null @@ -1,57 +0,0 @@ -"""Test Moudle for the Font Properties""" -from mystique.font_properties import classify_font_weights - -# pylint: disable=no-name-in-module -from tests.base_test_class import BaseSetUpClass - -# pylint: disable=no-name-in-module -from tests.variables import ( - mock_desing_obj, - mock_desing_obj_eq_weight, -) - -# pylint: disable=dangerous-default-value - - -class TestClassifyFont(BaseSetUpClass): - """Tests for the Font weight classification method""" - - def test_font_weights_default(self, design_objects=mock_desing_obj): - """ - Tests if the font weight for the - test variable results in default - """ - value = classify_font_weights(design_objects) - self.assertEqual(value[0]["weight"], "Default") - - def test_font_weights_empty(self, design_objects=[]): - """ - Tests if the font weight results in - empty list for the null design_objects - """ - value = classify_font_weights(design_objects) - self.assertEqual(len(value), 0) - - def test_font_weights_none(self, design_objects=None): - """ - Tests if the font weight results in - empty list for the null design_objects - """ - self.assertRaises(TypeError, classify_font_weights, design_objects) - - def test_font_weights_not_textbox(self, design_objects=mock_desing_obj): - """ - Tests if the font weight is default - for design objects that aren't textbox - """ - mock_desing_obj[0]["object"] = None - value = classify_font_weights(design_objects) - self.assertEqual(value[0]["weight"], "Default") - - def test_same_font_weights(self, design_objects=mock_desing_obj_eq_weight): - """ - Tests if the same font weights gets uses limit from default_host_config - """ - value = classify_font_weights(design_objects) - self.assertEqual(value[0]["weight"], "Lighter") - self.assertEqual(value[1]["weight"], "Lighter") diff --git a/source/pic2card/tests/test_get_card_templates.py b/source/pic2card/tests/test_get_card_templates.py deleted file mode 100644 index 23b397e235..0000000000 --- a/source/pic2card/tests/test_get_card_templates.py +++ /dev/null @@ -1,27 +0,0 @@ -""" Test for getting the card Templates""" -import unittest - -# pylint: disable=no-name-in-module -from tests.base_test_class import BaseAPITest - - -class GetCardTemplatesTestAPI(BaseAPITest): - """tests for get_card_templates""" - - def test_status_code(self): - """checks if the response has a success status code 200""" - self.assertEqual(self.response.status_code, 200) - - def test_response(self): - """checks if the response is not empty or None""" - self.assertEqual(len(self.output), 1) - self.assertEqual(bool(self.output), True) - - def test_response_for_key_templates(self): - """checks if the response has certain key named 'templates'""" - key = bool(self.output.get("templates")) - self.assertTrue(key, msg="Key 'templates' not found") - - -if __name__ == "__main__": - unittest.main() diff --git a/source/pic2card/tests/test_images/test01.png b/source/pic2card/tests/test_images/test01.png deleted file mode 100644 index 4a46900759..0000000000 Binary files a/source/pic2card/tests/test_images/test01.png and /dev/null differ diff --git a/source/pic2card/tests/test_layout.py b/source/pic2card/tests/test_layout.py deleted file mode 100644 index 89ccbbe2ad..0000000000 --- a/source/pic2card/tests/test_layout.py +++ /dev/null @@ -1,152 +0,0 @@ -"""Test for the layout""" -from multiprocessing import Queue -import unittest -from unittest.mock import patch -from mystique.extract_properties import CollectProperties -from mystique.ac_export.adaptive_card_export import AdaptiveCardExport -from mystique.card_layout.objects_group import RowColumnGrouping -from mystique.card_layout import row_column_group -from mystique.card_layout.ds_helper import DsHelper -from mystique.card_layout import bbox_utils - -# pylint: disable=no-name-in-module -from tests.variables import debug_string_test - -# pylint: disable=no-name-in-module -from tests.base_test_class import BaseSetUpClass - - -class TestIOU(BaseSetUpClass): - """Tests for the IOU class""" - - collect_properties = CollectProperties() - - def test_object_collection(self): - """Tests the collected object's count""" - self.assertEqual(len(self.json_objects["objects"]), 20) - - def test_remove_noise_objects(self): - """Tests the iou based noise removal count""" - bbox_utils.remove_noise_objects(self.json_objects) - self.assertEqual(len(self.json_objects["objects"]), 20) - - def test_image_size(self): - """Tests the image object sizes""" - extracted_sizes = self.test_util.collect_image_sizes( - self.json_objects, self.image - ) - self.assertEqual(extracted_sizes, ["Small", "Small"]) - - def test_find_iou_overlap_false(self): - """Tests the overlap between the given objects coordinates""" - collect = bbox_utils.find_iou(self.test_coord1, self.test_coord2)[0] - self.assertFalse(collect, msg="No overlap of textboxes") - - def test_find_iou_overlap_true(self): - """Tests the overlap between the given objects coordinates""" - c_1 = (27.695425741374493, 0.0, 479.0481896996498, 310.30650806427) - c_2 = ( - 11.564019257202744, - 116.06978577375412, - 332.18910133838654, - 332.81780552864075, - ) - collect = bbox_utils.find_iou(c_1, c_2)[0] - self.assertTrue(collect, msg="Overlap of textboxes") - - -class TestLayoutStructure(BaseSetUpClass): - """Tests for the new layout structure""" - - def setUp(self): - super().setUp() - self.test_queue = Queue() - self.export_card = AdaptiveCardExport() - - def test_new_layout_generation(self): - """ - Tests the generated layout length and datatype for the given test image - """ - new_layout = row_column_group.generate_card_layout_seq( - self.json_objects, self.image, self.model_instance - ) - self.assertEqual(len(new_layout), 13) - self.assertEqual(type(new_layout).__name__, "list") - - def test_build_adaptive_card(self): - """ - Tests the adaptive card builded using the testing Format - for the given test image - """ - final_ds = row_column_group.generate_card_layout_seq( - self.json_objects, self.image, self.model_instance - ) - ds_helper = DsHelper() - debug_string = ds_helper.build_serialized_layout_string(final_ds) - card_json = self.export_card.build_adaptive_card(final_ds) - self.assertEqual(debug_string, debug_string_test) - self.assertEqual(len(final_ds), len(card_json)) - - def tearDown(self): - """Changing the env variable to default value""" - patch.stopall() - - -class TestColumnsGrouping(BaseSetUpClass): - """Tests for the column grouping objects""" - - def setUp(self): - super().setUp() - self.groupobj = RowColumnGrouping() - - def test_horizontal_inclusive(self): - """Tests for the horizontal inclusion of two design objects""" - self.test_coord1 = list(self.test_coord1) - self.test_coord1.append("textbox") - self.test_coord2 = list(self.test_coord2) - self.test_coord2.append("textbox") - # pylint: disable=protected-access - horiz_inc = self.groupobj.column_condition( - self.test_coord1, self.test_coord2 - ) - self.assertFalse(horiz_inc) - - def test_vertical_inclusive(self): - """Tests for the vertical inclusion of two design objects""" - # pylint: disable=protected-access - self.test_coord1 = list(self.test_coord1) - self.test_coord1.append("textbox") - self.test_coord2 = list(self.test_coord2) - self.test_coord2.append("textbox") - vert_inc = self.groupobj.row_condition( - self.test_coord1, self.test_coord2 - ) - self.assertFalse(vert_inc) - - def test_columns_condition(self): - """Tests if columns are in columnset two design objects""" - coordinates_1 = list( - self.json_objects["objects"][3].get("coordinates", ()) - ) - coordinates_1.append("image") - coordinates_2 = list( - self.json_objects["objects"][4].get("coordinates", ()) - ) - coordinates_2.append("textbox") - - column_condition_true = self.groupobj.row_condition( - coordinates_1, coordinates_2 - ) - coordinates_1 = list(self.test_coord1) - coordinates_1.append("textbox") - coordinates_2 = list(self.test_coord2) - coordinates_2.append("textbox") - column_condition_false = self.groupobj.row_condition( - coordinates_1, coordinates_2 - ) - self.assertTrue(column_condition_true) - self.assertFalse(column_condition_false) - - -if __name__ == "__main__": - unittest.main() diff --git a/source/pic2card/tests/test_predict_json.py b/source/pic2card/tests/test_predict_json.py deleted file mode 100644 index e8f7efbf79..0000000000 --- a/source/pic2card/tests/test_predict_json.py +++ /dev/null @@ -1,77 +0,0 @@ -"""tests cases for predict_json api""" -import unittest -import json -import sys -from mystique import config - -# pylint: disable=no-name-in-module -from tests.base_test_class import BaseAPITest -from tests.utils import get_response # pylint: disable=no-name-in-module - - -class PredictJsonTestAPI(BaseAPITest): - """tests for predict_json api""" - - def test_status_code(self): - """checks if the response has a success status code 200""" - self.assertEqual(self.response.status_code, 200) - - def test_response(self): - """checks if the response is not empty or None""" - self.assertEqual(bool(self.output), True) - self.assertEqual(len(self.output), 2) - self.assertTrue(len(self.output["card_json"]["card"]["body"]) > 0) - self.assertIsNone(self.output["error"], msg="Key 'Error' is not 'null'") - - def test_response_for_query_params(self): - """checks if the response works for query params""" - api = "/predict_json?format=template" - response = get_response(self.client, api, self.headers, self.data) - output = json.loads(response.data) - self.assertEqual(bool(output), True) - self.assertEqual(len(output), 2) - self.assertEqual(len(output["card_json"]), 2) - - def test_exception_raised(self): - """checks if Exception is raised properly""" - if self.output["error"] is not None: - key = bool(self.output.get("error")) - self.assertTrue(key, msg="Key 'error' is found") - self.assertIsNone(self.output["card_json"]) - - def test_image_max_size(self): - """checks if exception raised if the image uploaded has size more than - in the config variable IMG_MAX_UPLOAD_SIZE""" - response = get_response( - self.client, self.api, self.headers, self.gt_2mb_data - ) - output = json.loads(response.data) - bs64_img = json.loads(self.gt_2mb_data).get("image") - if sys.getsizeof(bs64_img) > config.IMG_MAX_UPLOAD_SIZE: - self.assertEqual(output["error"]["code"], 1002) - - def test_empty_payload_data(self): - """checks if Exception is raised if empty data sent in payload""" - response = get_response( - self.client, self.api, self.headers, self.empty_data - ) - output = json.loads(response.data) - key = bool(output.get("error")) - self.assertTrue(key, msg="Key 'error' is found") - self.assertIsNone(output["card_json"]) - self.assertEqual(output["error"]["code"], 1001) - - def test_wrong_payload_data(self): - """checks if Exception is raised if some string sent in payload""" - response = get_response( - self.client, self.api, self.headers, self.wrong_data - ) - output = json.loads(response.data) - key = bool(output.get("error")) - self.assertTrue(key, msg="Key 'error' is found") - self.assertIsNone(output["card_json"]) - self.assertEqual(output["error"]["code"], 1001) - - -if __name__ == "__main__": - unittest.main() diff --git a/source/pic2card/tests/test_predict_json_debug.py b/source/pic2card/tests/test_predict_json_debug.py deleted file mode 100644 index ba7cf2d29a..0000000000 --- a/source/pic2card/tests/test_predict_json_debug.py +++ /dev/null @@ -1,85 +0,0 @@ -""" tests for predict_json_debug api """ -import unittest -import json -import sys -from mystique import config - -# pylint: disable=no-name-in-module -from tests.base_test_class import BaseAPITest -from tests.utils import get_response # pylint: disable=no-name-in-module - - -class PredictJsonDebugTestAPI(BaseAPITest): - """tests for predict_json_debug api""" - - def test_status_code(self): - """checks if the response has a success status code 200""" - self.assertEqual(self.response.status_code, 200) - - def test_response(self): - """checks if the response is not empty""" - self.assertEqual(bool(self.output), True) - self.assertEqual(len(self.output), 3) - # Not fixing the length, as different models give different size, - # one thing for sure is it shouldn't be empty. - self.assertTrue(len(self.output["card_json"]["card"]["body"]) > 0) - self.assertIsNone(self.output["error"], msg="Key 'Error' is not 'null'") - - def test_response_for_query_params(self): - """checks if the response works for query params""" - api = "/predict_json_debug?format=template" - response = get_response(self.client, api, self.headers, self.data) - output = json.loads(response.data) - self.assertEqual(bool(output), True) - self.assertEqual(len(output), 3) - self.assertEqual(len(output["card_json"]), 2) - self.assertTrue(output["card_json"]["data"]) - - def test_response_for_key_image(self): - """checks if the response has a certain key named 'image'""" - key = bool(self.output.get("image")) - self.assertTrue(key, msg="Key 'image' not found") - - def test_image_max_size(self): - """checks if exception raised if the image uploaded has size more than - in the config variable IMG_MAX_UPLOAD_SIZE""" - response = get_response( - self.client, self.api, self.headers, self.gt_2mb_data - ) - output = json.loads(response.data) - bs64_img = json.loads(self.gt_2mb_data).get("image") - if sys.getsizeof(bs64_img) > config.IMG_MAX_UPLOAD_SIZE: - self.assertEqual(output["error"]["code"], 1002) - - def test_exception_raised(self): - """checks if Exception for API is raised properly""" - if self.output["error"] is not None: - key = bool(self.output.get("error")) - self.assertTrue(key, msg="Key 'error' is found") - self.assertIsNone(self.output["card_json"]) - - def test_empty_payload_data(self): - """checks if Exception is raised if empty data sent in payload""" - response = get_response( - self.client, self.api, self.headers, self.empty_data - ) - output = json.loads(response.data) - key = bool(output.get("error")) - self.assertTrue(key, msg="Key 'error' is found") - self.assertIsNone(output["card_json"]) - self.assertEqual(output["error"]["code"], 1001) - - def test_wrong_payload_data(self): - """checks if Exception is raised if some string sent in payload""" - response = get_response( - self.client, self.api, self.headers, self.wrong_data - ) - output = json.loads(response.data) - key = bool(output.get("error")) - self.assertTrue(key, msg="Key 'error' is found") - self.assertIsNone(output["card_json"]) - self.assertEqual(output["error"]["code"], 1001) - - -if __name__ == "__main__": - unittest.main() diff --git a/source/pic2card/tests/test_sample_images.py b/source/pic2card/tests/test_sample_images.py deleted file mode 100644 index e10a63577e..0000000000 --- a/source/pic2card/tests/test_sample_images.py +++ /dev/null @@ -1,37 +0,0 @@ -"""Tests that run for a list of sample images -for predict_json api. -""" -# pylint: disable=no-member -import json -from tests.utils import get_response # pylint: disable=no-name-in-module - -# pylint: disable=no-name-in-module -from tests.test_predict_json import BaseAPITest - - -class TestSampleImages(BaseAPITest): - """Basic Tests that run for a list of sample images - for predict_json api. - """ - - def setUp(self): - self.templates_api = "/get_card_templates" - self.templates_response = self.client.get(self.templates_api) - self.templates_output = json.loads(self.templates_response.data) - - def test_response(self): - """ - Basic checks done for the templates images - checks if return json has no error and - response status is 200 for predict_json api - """ - for data in self.templates_output["templates"]: - # update self.data with the template api output - self.data = f'{{"image": "{data}"}}' - self.response = get_response( - self.client, self.api, self.headers, self.data - ) - self.output = json.loads(self.response.data) - self.assertEqual(self.response.status_code, 200) - self.assertEqual(bool(self.output), True) - self.assertIsNone(self.output["error"]) diff --git a/source/pic2card/tests/utils.py b/source/pic2card/tests/utils.py deleted file mode 100644 index 8d183f958b..0000000000 --- a/source/pic2card/tests/utils.py +++ /dev/null @@ -1,43 +0,0 @@ -""" -Utils for the tests -""" -import os -import base64 -import string -from random import choice - -os.environ["test_img_path"] = "./tests/test_images/test01.png" -headers = {"Content-Type": "application/json"} -payload_empty_dict_data = "{'image': null}" # pylint: disable=invalid-name -# pylint: disable=invalid-name -payload_data_some_string = "{'image': 'some string'}" -api_dict = { - "GetCardTemplatesTestAPI": "/get_card_templates", - "PredictJsonTestAPI": "/predict_json", - "TestSampleImages": "/predict_json", - "PredictJsonDebugTestAPI": "/predict_json_debug", -} - - -def img_to_base64(img_path): - """Returns base64 string in payload format for a given image path""" - with open(img_path, "rb") as img_file: - imgb64_string = base64.b64encode(img_file.read()).decode("utf-8") - payload_data = f'{{"image": "{imgb64_string}"}}' - return payload_data - - -def generate_base64(): - """Returns a random generated base64 string of size 3MB""" - upper = string.ascii_uppercase - lower = string.ascii_lowercase - digits = string.digits - rand_b64 = "".join(choice(upper + lower + digits) for _ in range(2000001)) - payload_data = f'{{"image": "{rand_b64}"}}' - return payload_data - - -def get_response(client, api, header, data): - """Returns the response of a post request""" - response = client.post(api, headers=header, data=data) - return response diff --git a/source/pic2card/tests/variables.py b/source/pic2card/tests/variables.py deleted file mode 100644 index f38eb18112..0000000000 --- a/source/pic2card/tests/variables.py +++ /dev/null @@ -1,185 +0,0 @@ -"""Test vairables""" -debug_string_test = [ - "item(1)\n", - "item(1)\n", - "item(1)\n", - "item(1)\n", - "item(1)\n", - "item(1)\n", - "row\n", - "\tcolumn\n", - "\t\titem(1)\n", - "\tcolumn\n", - "\t\titem(1)\n", - "row\n", - "\tcolumn\n", - "\t\titem(1)\n", - "\tcolumn\n", - "\t\titem(5)\n", - "\tcolumn\n", - "\t\titem(1)\n", - "item(1)\n", - "item(1)\n", - "row\n", - "\tcolumn\n", - "\t\titem(1)\n", - "\tcolumn\n", - "\t\titem(1)\n", - "row\n", - "\tcolumn\n", - "\t\titem(1)\n", - "\tcolumn\n", - "\t\titem(5)\n", - "\tcolumn\n", - "\t\titem(1)\n", - "row\n", - "\tcolumn\n", - "\t\titem(1)\n", - "\tcolumn\n", - "\t\titem(1)\n", -] -# image - training images 5.png -test_img_obj1 = [ - 259.61538419127464, - 93.91641104221344, - 363.92310082912445, - 198.15856432914734, -] - -test_img_obj2 = [ - 143.74213486909866, - 95.04049408435822, - 248.02349030971527, - 197.5490162372589, -] - -# Choiceset Grouping test image 100 -test_cset_obj1 = [ - 13.708709377795458, - 206.46938413381577, - 155.36615484952927, - 227.09414440393448, -] - -test_cset_obj2 = [ - 16.655487801879644, - 227.20616340637207, - 165.07373866438866, - 245.98763144016266, -] - -# sample design_objects -mock_desing_obj = [ - { - "object": "textbox", - "xmin": 24.699735146015882, - "ymin": 162.31396371126175, - "xmax": 103.7798099219799, - "ymax": 181.99412715435028, - "coordinates": ( - 24.699735146015882, - 162.31396371126175, - 103.7798099219799, - 181.99412715435028, - ), - "score": 0.9638245, - "uuid": "a966ba72-851e-4335-a073-97a4b68ff3cd", - "class": 1, - "horizontal_alignment": "Left", - "data": "2 Stops", - "image_data": { - "level": [1, 2, 3, 4, 5, 5], - "page_num": [1, 1, 1, 1, 1, 1], - "block_num": [0, 1, 1, 1, 1, 1], - "par_num": [0, 0, 1, 1, 1, 1], - "line_num": [0, 0, 0, 1, 1, 1], - "word_num": [0, 0, 0, 0, 1, 2], - "left": [0, 10, 10, 10, 10, 25], - "top": [0, 5, 5, 5, 5, 5], - "width": [89, 64, 64, 64, 8, 49], - "height": [20, 15, 15, 15, 13, 15], - "conf": ["-1", "-1", "-1", "-1", 86, 86], - "text": ["", "", "", "", "2", "Stops"], - "uuid": "a966ba72-851e-4335-a073-97a4b68ff3cd", - }, - "size": "Small", - "weight": {"a966ba72-851e-4335-a073-97a4b68ff3cd": 2.51}, - "color": "Dark", - }, -] - -# design_objects for Approvals_image -mock_desing_obj_eq_weight = [ - { - "object": "textbox", - "xmin": 14.52466070652008, - "ymin": 11.586663722991943, - "xmax": 98.29278087615967, - "ymax": 33.354628562927246, - "coordinates": ( - 14.52466070652008, - 11.586663722991943, - 98.29278087615967, - 33.354628562927246, - ), - "score": 0.9995384, - "uuid": "9b473ea0-0408-40c4-a99f-1b2e0427ec1d", - "class": 1, - "horizontal_alignment": "Left", - "data": "Approvals", - "image_data": { - "level": [1, 2, 3, 4, 5], - "page_num": [1, 1, 1, 1, 1], - "block_num": [0, 1, 1, 1, 1], - "par_num": [0, 0, 1, 1, 1], - "line_num": [0, 0, 0, 1, 1], - "word_num": [0, 0, 0, 0, 1], - "left": [0, 11, 11, 11, 11], - "top": [0, 5, 5, 5, 5], - "width": [93, 71, 71, 71, 71], - "height": [21, 15, 15, 15, 15], - "conf": ["-1", "-1", "-1", "-1", 83], - "text": ["", "", "", "", "Approvals"], - "uuid": "9b473ea0-0408-40c4-a99f-1b2e0427ec1d", - }, - "size": "ExtraLarge", - "weight": {"9b473ea0-0408-40c4-a99f-1b2e0427ec1d": 1.03}, - "color": "Dark", - }, - { - "object": "textbox", - "xmin": 110.8454418182373, - "ymin": 103.87897300720215, - "xmax": 322.5535640716553, - "ymax": 134.351713180542, - "coordinates": ( - 110.8454418182373, - 103.87897300720215, - 322.5535640716553, - 134.351713180542, - ), - "score": 0.99614584, - "uuid": "4ed3ed20-3f2a-41e6-9c96-435476fe2422", - "class": 1, - "horizontal_alignment": "Center", - "data": "Pending Approvals", - "image_data": { - "level": [1, 2, 3, 4, 5, 5], - "page_num": [1, 1, 1, 1, 1, 1], - "block_num": [0, 1, 1, 1, 1, 1], - "par_num": [0, 0, 1, 1, 1, 1], - "line_num": [0, 0, 0, 1, 1, 1], - "word_num": [0, 0, 0, 0, 1, 2], - "left": [0, 13, 13, 13, 13, 104], - "top": [0, 4, 4, 4, 4, 4], - "width": [222, 193, 193, 193, 82, 102], - "height": [30, 23, 23, 23, 23, 22], - "conf": ["-1", "-1", "-1", "-1", 96, 96], - "text": ["", "", "", "", "Pending", "Approvals"], - "uuid": "4ed3ed20-3f2a-41e6-9c96-435476fe2422", - }, - "size": "ExtraLarge", - "weight": {"4ed3ed20-3f2a-41e6-9c96-435476fe2422": 1.03}, - "color": "Dark", - }, -] diff --git a/source/pic2card/ui/.eslintrc.js b/source/pic2card/ui/.eslintrc.js deleted file mode 100644 index 496f5a1864..0000000000 --- a/source/pic2card/ui/.eslintrc.js +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = { - root: true, - env: { - node: true - }, - extends: [ - "plugin:vue/essential", - "plugin:prettier/recommended", // we added this line - "@vue/prettier" - ], - rules: { - "no-console": "off", - "no-debugger": "off" - }, - parserOptions: { - parser: "babel-eslint" - } -}; diff --git a/source/pic2card/ui/.gitignore b/source/pic2card/ui/.gitignore deleted file mode 100644 index a0dddc6fb8..0000000000 --- a/source/pic2card/ui/.gitignore +++ /dev/null @@ -1,21 +0,0 @@ -.DS_Store -node_modules -/dist - -# local env files -.env.local -.env.*.local - -# Log files -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Editor directories and files -.idea -.vscode -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/source/pic2card/ui/README.md b/source/pic2card/ui/README.md deleted file mode 100644 index 63a2e8618a..0000000000 --- a/source/pic2card/ui/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# ann-app - -## Project setup - -``` -npm install -``` - -### Compiles and hot-reloads for development - -``` -npm run serve -``` - -### Compiles and minifies for production - -``` -npm run build -``` - -### Lints and fixes files - -``` -npm run lint -``` - -### Customize configuration - -See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/source/pic2card/ui/babel.config.js b/source/pic2card/ui/babel.config.js deleted file mode 100644 index dddb91f60b..0000000000 --- a/source/pic2card/ui/babel.config.js +++ /dev/null @@ -1,8 +0,0 @@ -const plugins = []; -if (process.env.VUE_APP_ENV === "production") { - plugins.push("transform-remove-console"); -} -module.exports = { - presets: ["@vue/cli-plugin-babel/preset"], - plugins: plugins -}; diff --git a/source/pic2card/ui/package-lock.json b/source/pic2card/ui/package-lock.json deleted file mode 100644 index 3394830087..0000000000 --- a/source/pic2card/ui/package-lock.json +++ /dev/null @@ -1,12098 +0,0 @@ -{ - "name": "pic2card", - "version": "0.1.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.3.tgz", - "integrity": "sha512-fDx9eNW0qz0WkUeqL6tXEXzVlPh6Y5aCDEZesl0xBGA8ndRukX91Uk44ZqnkECp01NAZUdCAl+aiQNGi0k88Eg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.3" - } - }, - "@babel/compat-data": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.3.tgz", - "integrity": "sha512-BDIfJ9uNZuI0LajPfoYV28lX8kyCPMHY6uY4WH1lJdcicmAfxCK5ASzaeV0D/wsUaRH/cLk+amuxtC37sZ8TUg==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "semver": "^5.5.0" - } - }, - "@babel/core": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.3.tgz", - "integrity": "sha512-5YqWxYE3pyhIi84L84YcwjeEgS+fa7ZjK6IBVGTjDVfm64njkR2lfDhVR5OudLk8x2GK59YoSyVv+L/03k1q9w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.3", - "@babel/generator": "^7.10.3", - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helpers": "^7.10.1", - "@babel/parser": "^7.10.3", - "@babel/template": "^7.10.3", - "@babel/traverse": "^7.10.3", - "@babel/types": "^7.10.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.3.tgz", - "integrity": "sha512-drt8MUHbEqRzNR0xnF8nMehbY11b1SDkRw03PSNH/3Rb2Z35oxkddVSi3rcaak0YJQ86PCuE7Qx1jSFhbLNBMA==", - "dev": true, - "requires": { - "@babel/types": "^7.10.3", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz", - "integrity": "sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw==", - "dev": true, - "requires": { - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.3.tgz", - "integrity": "sha512-lo4XXRnBlU6eRM92FkiZxpo1xFLmv3VsPFk61zJKMm7XYJfwqXHsYJTY6agoc4a3L8QPw1HqWehO18coZgbT6A==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.3", - "@babel/types": "^7.10.3" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz", - "integrity": "sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.10.1", - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.3.tgz", - "integrity": "sha512-iRT9VwqtdFmv7UheJWthGc/h2s7MqoweBF9RUj77NFZsg9VfISvBTum3k6coAhJ8RWv2tj3yUjA03HxPd0vfpQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.3", - "@babel/helper-member-expression-to-functions": "^7.10.3", - "@babel/helper-optimise-call-expression": "^7.10.3", - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/helper-replace-supers": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz", - "integrity": "sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-regex": "^7.10.1", - "regexpu-core": "^4.7.0" - } - }, - "@babel/helper-define-map": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.3.tgz", - "integrity": "sha512-bxRzDi4Sin/k0drWCczppOhov1sBSdBvXJObM1NLHQzjhXhwRtn7aRWGvLJWCYbuu2qUk3EKs6Ci9C9ps8XokQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.3", - "@babel/types": "^7.10.3", - "lodash": "^4.17.13" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.3.tgz", - "integrity": "sha512-0nKcR64XrOC3lsl+uhD15cwxPvaB6QKUDlD84OT9C3myRbhJqTMYir69/RWItUvHpharv0eJ/wk7fl34ONSwZw==", - "dev": true, - "requires": { - "@babel/traverse": "^7.10.3", - "@babel/types": "^7.10.3" - } - }, - "@babel/helper-function-name": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.3.tgz", - "integrity": "sha512-FvSj2aiOd8zbeqijjgqdMDSyxsGHaMt5Tr0XjQsGKHD3/1FP3wksjnLAWzxw7lvXiej8W1Jt47SKTZ6upQNiRw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.3", - "@babel/template": "^7.10.3", - "@babel/types": "^7.10.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.3.tgz", - "integrity": "sha512-iUD/gFsR+M6uiy69JA6fzM5seno8oE85IYZdbVVEuQaZlEzMO2MXblh+KSPJgsZAUx0EEbWXU0yJaW7C9CdAVg==", - "dev": true, - "requires": { - "@babel/types": "^7.10.3" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.3.tgz", - "integrity": "sha512-9JyafKoBt5h20Yv1+BXQMdcXXavozI1vt401KBiRc2qzUepbVnd7ogVNymY1xkQN9fekGwfxtotH2Yf5xsGzgg==", - "dev": true, - "requires": { - "@babel/types": "^7.10.3" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.3.tgz", - "integrity": "sha512-q7+37c4EPLSjNb2NmWOjNwj0+BOyYlssuQ58kHEWk1Z78K5i8vTUsteq78HMieRPQSl/NtpQyJfdjt3qZ5V2vw==", - "dev": true, - "requires": { - "@babel/types": "^7.10.3" - } - }, - "@babel/helper-module-imports": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.3.tgz", - "integrity": "sha512-Jtqw5M9pahLSUWA+76nhK9OG8nwYXzhQzVIGFoNaHnXF/r4l7kz4Fl0UAW7B6mqC5myoJiBP5/YQlXQTMfHI9w==", - "dev": true, - "requires": { - "@babel/types": "^7.10.3" - } - }, - "@babel/helper-module-transforms": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz", - "integrity": "sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.10.1", - "@babel/helper-replace-supers": "^7.10.1", - "@babel/helper-simple-access": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1", - "lodash": "^4.17.13" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.3.tgz", - "integrity": "sha512-kT2R3VBH/cnSz+yChKpaKRJQJWxdGoc6SjioRId2wkeV3bK0wLLioFpJROrX0U4xr/NmxSSAWT/9Ih5snwIIzg==", - "dev": true, - "requires": { - "@babel/types": "^7.10.3" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.3.tgz", - "integrity": "sha512-j/+j8NAWUTxOtx4LKHybpSClxHoq6I91DQ/mKgAXn5oNUPIUiGppjPIX3TDtJWPrdfP9Kfl7e4fgVMiQR9VE/g==", - "dev": true - }, - "@babel/helper-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.1.tgz", - "integrity": "sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g==", - "dev": true, - "requires": { - "lodash": "^4.17.13" - } - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.3.tgz", - "integrity": "sha512-sLB7666ARbJUGDO60ZormmhQOyqMX/shKBXZ7fy937s+3ID8gSrneMvKSSb+8xIM5V7Vn6uNVtOY1vIm26XLtA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-wrap-function": "^7.10.1", - "@babel/template": "^7.10.3", - "@babel/traverse": "^7.10.3", - "@babel/types": "^7.10.3" - } - }, - "@babel/helper-replace-supers": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz", - "integrity": "sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.1", - "@babel/helper-optimise-call-expression": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-simple-access": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz", - "integrity": "sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw==", - "dev": true, - "requires": { - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", - "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", - "dev": true, - "requires": { - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.3.tgz", - "integrity": "sha512-bU8JvtlYpJSBPuj1VUmKpFGaDZuLxASky3LhaKj3bmpSTY6VWooSM8msk+Z0CZoErFye2tlABF6yDkT3FOPAXw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz", - "integrity": "sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/helpers": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.1.tgz", - "integrity": "sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw==", - "dev": true, - "requires": { - "@babel/template": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/highlight": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.3.tgz", - "integrity": "sha512-Ih9B/u7AtgEnySE2L2F0Xm0GaM729XqqLfHkalTsbjXGyqmf/6M0Cu0WpvqueUlW+xk88BHw9Nkpj49naU+vWw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.3", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.3.tgz", - "integrity": "sha512-oJtNJCMFdIMwXGmx+KxuaD7i3b8uS7TTFYW/FNG2BT8m+fmGHoiPYoH0Pe3gya07WuFmM5FCDIr1x0irkD/hyA==", - "dev": true - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.3.tgz", - "integrity": "sha512-WUUWM7YTOudF4jZBAJIW9D7aViYC/Fn0Pln4RIHlQALyno3sXSjqmTA4Zy1TKC2D49RCR8Y/Pn4OIUtEypK3CA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/helper-remap-async-to-generator": "^7.10.3", - "@babel/plugin-syntax-async-generators": "^7.8.0" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz", - "integrity": "sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-proposal-decorators": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.10.3.tgz", - "integrity": "sha512-Rzwn5tcYFTdWWK3IrhMZkMDjzFQLIGYqHvv9XuzNnEB91Y6gHr/JjazYV1Yec9g0yMLhy1p/21eiW1P7f5UN4A==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.3", - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/plugin-syntax-decorators": "^7.10.1" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz", - "integrity": "sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz", - "integrity": "sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-json-strings": "^7.8.0" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz", - "integrity": "sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz", - "integrity": "sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-numeric-separator": "^7.10.1" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.3.tgz", - "integrity": "sha512-ZZh5leCIlH9lni5bU/wB/UcjtcVLgR8gc+FAgW2OOY+m9h1II3ItTO1/cewNUcsIDZSYcSaz/rYVls+Fb0ExVQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.1" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz", - "integrity": "sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.3.tgz", - "integrity": "sha512-yyG3n9dJ1vZ6v5sfmIlMMZ8azQoqx/5/nZTSWX1td6L1H1bsjzA8TInDChpafCZiJkeOFzp/PtrfigAQXxI1Ng==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz", - "integrity": "sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz", - "integrity": "sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz", - "integrity": "sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-syntax-decorators": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.1.tgz", - "integrity": "sha512-a9OAbQhKOwSle1Vr0NJu/ISg1sPfdEkfRKWpgPuzhnWWzForou2gIeUIIwjAMHRekhhpJ7eulZlYs0H14Cbi+g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.1.tgz", - "integrity": "sha512-+OxyOArpVFXQeXKLO9o+r2I4dIoVoy6+Uu0vKELrlweDM3QJADZj+Z+5ERansZqIZBcLj42vHnDI8Rz9BnRIuQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz", - "integrity": "sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz", - "integrity": "sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz", - "integrity": "sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz", - "integrity": "sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-remap-async-to-generator": "^7.10.1" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz", - "integrity": "sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz", - "integrity": "sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "lodash": "^4.17.13" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.3.tgz", - "integrity": "sha512-irEX0ChJLaZVC7FvvRoSIxJlmk0IczFLcwaRXUArBKYHCHbOhe57aG8q3uw/fJsoSXvZhjRX960hyeAGlVBXZw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-define-map": "^7.10.3", - "@babel/helper-function-name": "^7.10.3", - "@babel/helper-optimise-call-expression": "^7.10.3", - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/helper-replace-supers": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.3.tgz", - "integrity": "sha512-GWzhaBOsdbjVFav96drOz7FzrcEW6AP5nax0gLIpstiFaI3LOb2tAg06TimaWU6YKOfUACK3FVrxPJ4GSc5TgA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.3" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz", - "integrity": "sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz", - "integrity": "sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz", - "integrity": "sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz", - "integrity": "sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz", - "integrity": "sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz", - "integrity": "sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz", - "integrity": "sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz", - "integrity": "sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz", - "integrity": "sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz", - "integrity": "sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-simple-access": "^7.10.1", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.3.tgz", - "integrity": "sha512-GWXWQMmE1GH4ALc7YXW56BTh/AlzvDWhUNn9ArFF0+Cz5G8esYlVbXfdyHa1xaD1j+GnBoCeoQNlwtZTVdiG/A==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.10.3", - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.3", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz", - "integrity": "sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.3.tgz", - "integrity": "sha512-I3EH+RMFyVi8Iy/LekQm948Z4Lz4yKT7rK+vuCAeRm0kTa6Z5W7xuhRxDNJv0FPya/her6AUgrDITb70YHtTvA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz", - "integrity": "sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz", - "integrity": "sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-replace-supers": "^7.10.1" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz", - "integrity": "sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz", - "integrity": "sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.3.tgz", - "integrity": "sha512-H5kNeW0u8mbk0qa1jVIVTeJJL6/TJ81ltD4oyPx0P499DhMJrTmmIFCmJ3QloGpQG8K9symccB7S7SJpCKLwtw==", - "dev": true, - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz", - "integrity": "sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.3.tgz", - "integrity": "sha512-b5OzMD1Hi8BBzgQdRHyVVaYrk9zG0wset1it2o3BgonkPadXfOv0aXRqd7864DeOIu3FGKP/h6lr15FE5mahVw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.10.3", - "@babel/helper-plugin-utils": "^7.10.3", - "resolve": "^1.8.1", - "semver": "^5.5.1" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz", - "integrity": "sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz", - "integrity": "sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz", - "integrity": "sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-regex": "^7.10.1" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.3.tgz", - "integrity": "sha512-yaBn9OpxQra/bk0/CaA4wr41O0/Whkg6nqjqApcinxM7pro51ojhX6fv1pimAnVjVfDy14K0ULoRL70CA9jWWA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.3" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz", - "integrity": "sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz", - "integrity": "sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz", - "integrity": "sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" - } - }, - "@babel/preset-env": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.3.tgz", - "integrity": "sha512-jHaSUgiewTmly88bJtMHbOd1bJf2ocYxb5BWKSDQIP5tmgFuS/n0gl+nhSrYDhT33m0vPxp+rP8oYYgPgMNQlg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.10.3", - "@babel/helper-compilation-targets": "^7.10.2", - "@babel/helper-module-imports": "^7.10.3", - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/plugin-proposal-async-generator-functions": "^7.10.3", - "@babel/plugin-proposal-class-properties": "^7.10.1", - "@babel/plugin-proposal-dynamic-import": "^7.10.1", - "@babel/plugin-proposal-json-strings": "^7.10.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", - "@babel/plugin-proposal-numeric-separator": "^7.10.1", - "@babel/plugin-proposal-object-rest-spread": "^7.10.3", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.1", - "@babel/plugin-proposal-optional-chaining": "^7.10.3", - "@babel/plugin-proposal-private-methods": "^7.10.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.1", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.1", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.1", - "@babel/plugin-transform-arrow-functions": "^7.10.1", - "@babel/plugin-transform-async-to-generator": "^7.10.1", - "@babel/plugin-transform-block-scoped-functions": "^7.10.1", - "@babel/plugin-transform-block-scoping": "^7.10.1", - "@babel/plugin-transform-classes": "^7.10.3", - "@babel/plugin-transform-computed-properties": "^7.10.3", - "@babel/plugin-transform-destructuring": "^7.10.1", - "@babel/plugin-transform-dotall-regex": "^7.10.1", - "@babel/plugin-transform-duplicate-keys": "^7.10.1", - "@babel/plugin-transform-exponentiation-operator": "^7.10.1", - "@babel/plugin-transform-for-of": "^7.10.1", - "@babel/plugin-transform-function-name": "^7.10.1", - "@babel/plugin-transform-literals": "^7.10.1", - "@babel/plugin-transform-member-expression-literals": "^7.10.1", - "@babel/plugin-transform-modules-amd": "^7.10.1", - "@babel/plugin-transform-modules-commonjs": "^7.10.1", - "@babel/plugin-transform-modules-systemjs": "^7.10.3", - "@babel/plugin-transform-modules-umd": "^7.10.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.3", - "@babel/plugin-transform-new-target": "^7.10.1", - "@babel/plugin-transform-object-super": "^7.10.1", - "@babel/plugin-transform-parameters": "^7.10.1", - "@babel/plugin-transform-property-literals": "^7.10.1", - "@babel/plugin-transform-regenerator": "^7.10.3", - "@babel/plugin-transform-reserved-words": "^7.10.1", - "@babel/plugin-transform-shorthand-properties": "^7.10.1", - "@babel/plugin-transform-spread": "^7.10.1", - "@babel/plugin-transform-sticky-regex": "^7.10.1", - "@babel/plugin-transform-template-literals": "^7.10.3", - "@babel/plugin-transform-typeof-symbol": "^7.10.1", - "@babel/plugin-transform-unicode-escapes": "^7.10.1", - "@babel/plugin-transform-unicode-regex": "^7.10.1", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.10.3", - "browserslist": "^4.12.0", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.0" - } - }, - "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.3.tgz", - "integrity": "sha512-RzGO0RLSdokm9Ipe/YD+7ww8X2Ro79qiXZF3HU9ljrM+qnJmH1Vqth+hbiQZy761LnMJTMitHDuKVYTk3k4dLw==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.3.tgz", - "integrity": "sha512-5BjI4gdtD+9fHZUsaxPHPNpwa+xRkDO7c7JbhYn2afvrkDu5SfAAbi9AIMXw2xEhO/BR35TqiW97IqNvCo/GqA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.3", - "@babel/parser": "^7.10.3", - "@babel/types": "^7.10.3" - } - }, - "@babel/traverse": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.3.tgz", - "integrity": "sha512-qO6623eBFhuPm0TmmrUFMT1FulCmsSeJuVGhiLodk2raUDFhhTECLd9E9jC4LBIWziqt4wgF6KuXE4d+Jz9yug==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.3", - "@babel/generator": "^7.10.3", - "@babel/helper-function-name": "^7.10.3", - "@babel/helper-split-export-declaration": "^7.10.1", - "@babel/parser": "^7.10.3", - "@babel/types": "^7.10.3", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.3.tgz", - "integrity": "sha512-nZxaJhBXBQ8HVoIcGsf9qWep3Oh3jCENK54V4mRF7qaJabVsAYdbTtmSD8WmAp1R6ytPiu5apMwSXyxB1WlaBA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.3", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "@hapi/address": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", - "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", - "dev": true - }, - "@hapi/bourne": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", - "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", - "dev": true - }, - "@hapi/hoek": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", - "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", - "dev": true - }, - "@hapi/joi": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", - "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", - "dev": true, - "requires": { - "@hapi/address": "2.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/topo": "3.x.x" - } - }, - "@hapi/topo": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", - "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", - "dev": true, - "requires": { - "@hapi/hoek": "^8.3.0" - } - }, - "@intervolga/optimize-cssnano-plugin": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz", - "integrity": "sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==", - "dev": true, - "requires": { - "cssnano": "^4.0.0", - "cssnano-preset-default": "^4.0.0", - "postcss": "^7.0.0" - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true - }, - "@nuxt/opencollective": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.3.0.tgz", - "integrity": "sha512-Vf09BxCdj1iT2IRqVwX5snaY2WCTkvM0O4cWWSO1ThCFuc4if0Q/nNwAgCxRU0FeYHJ7DdyMUNSdswCLKlVqeg==", - "requires": { - "chalk": "^2.4.2", - "consola": "^2.10.1", - "node-fetch": "^2.6.0" - } - }, - "@soda/friendly-errors-webpack-plugin": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.0.tgz", - "integrity": "sha512-RLotfx6k1+nfLacwNCenj7VnTMPxVwYKoGOcffMFoJDKM8tXzBiCN0hMHFJNnoAojduYAsxuiMm0EOMixgiRow==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "error-stack-parser": "^2.0.2", - "string-width": "^2.0.0", - "strip-ansi": "^5" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - } - } - } - } - }, - "@soda/get-current-script": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@soda/get-current-script/-/get-current-script-1.0.2.tgz", - "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==", - "dev": true - }, - "@sphinxxxx/color-conversion": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz", - "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==" - }, - "@types/anymatch": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", - "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==", - "dev": true - }, - "@types/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, - "@types/connect": { - "version": "3.4.34", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", - "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/connect-history-api-fallback": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.3.tgz", - "integrity": "sha512-7SxFCd+FLlxCfwVwbyPxbR4khL9aNikJhrorw8nUIOqeuooc9gifBuDQOJw5kzN7i6i3vLn9G8Wde/4QDihpYw==", - "dev": true, - "requires": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "@types/express": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.11.tgz", - "integrity": "sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.18", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.18.tgz", - "integrity": "sha512-m4JTwx5RUBNZvky/JJ8swEJPKFd8si08pPF2PfizYjGZOKr/svUWPcoUmLow6MmPzhasphB7gSTINY67xn3JNA==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/http-proxy": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.5.tgz", - "integrity": "sha512-GNkDE7bTv6Sf8JbV2GksknKOsk7OznNYHSdrtvPJXO0qJ9odZig6IZKUi5RFGi6d1bf6dgIAe4uXi3DBc7069Q==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/http-proxy-middleware": { - "version": "0.19.3", - "resolved": "https://registry.npmjs.org/@types/http-proxy-middleware/-/http-proxy-middleware-0.19.3.tgz", - "integrity": "sha512-lnBTx6HCOUeIJMLbI/LaL5EmdKLhczJY5oeXZpX/cXE4rRqb3RmV7VcMpiEfYkmTjipv3h7IAyIINe4plEv7cA==", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/http-proxy": "*", - "@types/node": "*" - } - }, - "@types/json-schema": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", - "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", - "dev": true - }, - "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, - "@types/minimist": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", - "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", - "dev": true - }, - "@types/node": { - "version": "14.0.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.14.tgz", - "integrity": "sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", - "dev": true - }, - "@types/q": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", - "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", - "dev": true - }, - "@types/qs": { - "version": "6.9.5", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.5.tgz", - "integrity": "sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ==", - "dev": true - }, - "@types/range-parser": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", - "dev": true - }, - "@types/serve-static": { - "version": "1.13.9", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz", - "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==", - "dev": true, - "requires": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "@types/source-list-map": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", - "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", - "dev": true - }, - "@types/tapable": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz", - "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==", - "dev": true - }, - "@types/uglify-js": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.12.0.tgz", - "integrity": "sha512-sYAF+CF9XZ5cvEBkI7RtrG9g2GtMBkviTnBxYYyq+8BWvO4QtXfwwR6a2LFwCi4evMKZfpv6U43ViYvv17Wz3Q==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "@types/webpack": { - "version": "4.41.26", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.26.tgz", - "integrity": "sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA==", - "dev": true, - "requires": { - "@types/anymatch": "*", - "@types/node": "*", - "@types/tapable": "*", - "@types/uglify-js": "*", - "@types/webpack-sources": "*", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "@types/webpack-dev-server": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/@types/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz", - "integrity": "sha512-rIb+LtUkKnh7+oIJm3WiMJONd71Q0lZuqGLcSqhZ5qjN9gV/CNmZe7Bai+brnBPZ/KVYOsr+4bFLiNZwjBicLw==", - "dev": true, - "requires": { - "@types/connect-history-api-fallback": "*", - "@types/express": "*", - "@types/http-proxy-middleware": "*", - "@types/serve-static": "*", - "@types/webpack": "*" - } - }, - "@types/webpack-sources": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.1.0.tgz", - "integrity": "sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } - } - }, - "@vue/babel-helper-vue-jsx-merge-props": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz", - "integrity": "sha512-6tyf5Cqm4m6v7buITuwS+jHzPlIPxbFzEhXR5JGZpbrvOcp1hiQKckd305/3C7C36wFekNTQSxAtgeM0j0yoUw==", - "dev": true - }, - "@vue/babel-plugin-transform-vue-jsx": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.1.2.tgz", - "integrity": "sha512-YfdaoSMvD1nj7+DsrwfTvTnhDXI7bsuh+Y5qWwvQXlD24uLgnsoww3qbiZvWf/EoviZMrvqkqN4CBw0W3BWUTQ==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", - "html-tags": "^2.0.0", - "lodash.kebabcase": "^4.1.1", - "svg-tags": "^1.0.0" - } - }, - "@vue/babel-preset-app": { - "version": "4.4.6", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.4.6.tgz", - "integrity": "sha512-urIa6Qk3lKacLvscrzxMNyYlTqKFcPAUo5MohOjv1ISZ9PssHw693WTOrqSC0XksdMLtp/rnLvc6l5G8Muk0lw==", - "dev": true, - "requires": { - "@babel/core": "^7.9.6", - "@babel/helper-compilation-targets": "^7.9.6", - "@babel/helper-module-imports": "^7.8.3", - "@babel/plugin-proposal-class-properties": "^7.8.3", - "@babel/plugin-proposal-decorators": "^7.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-jsx": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.9.6", - "@babel/preset-env": "^7.9.6", - "@babel/runtime": "^7.9.6", - "@vue/babel-preset-jsx": "^1.1.2", - "babel-plugin-dynamic-import-node": "^2.3.3", - "core-js": "^3.6.5", - "core-js-compat": "^3.6.5", - "semver": "^6.1.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@vue/babel-preset-jsx": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.1.2.tgz", - "integrity": "sha512-zDpVnFpeC9YXmvGIDSsKNdL7qCG2rA3gjywLYHPCKDT10erjxF4U+6ay9X6TW5fl4GsDlJp9bVfAVQAAVzxxvQ==", - "dev": true, - "requires": { - "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", - "@vue/babel-sugar-functional-vue": "^1.1.2", - "@vue/babel-sugar-inject-h": "^1.1.2", - "@vue/babel-sugar-v-model": "^1.1.2", - "@vue/babel-sugar-v-on": "^1.1.2" - } - }, - "@vue/babel-sugar-functional-vue": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.1.2.tgz", - "integrity": "sha512-YhmdJQSVEFF5ETJXzrMpj0nkCXEa39TvVxJTuVjzvP2rgKhdMmQzlJuMv/HpadhZaRVMCCF3AEjjJcK5q/cYzQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-inject-h": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.1.2.tgz", - "integrity": "sha512-VRSENdTvD5htpnVp7i7DNuChR5rVMcORdXjvv5HVvpdKHzDZAYiLSD+GhnhxLm3/dMuk8pSzV+k28ECkiN5m8w==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-v-model": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.1.2.tgz", - "integrity": "sha512-vLXPvNq8vDtt0u9LqFdpGM9W9IWDmCmCyJXuozlq4F4UYVleXJ2Fa+3JsnTZNJcG+pLjjfnEGHci2339Kj5sGg==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", - "camelcase": "^5.0.0", - "html-tags": "^2.0.0", - "svg-tags": "^1.0.0" - } - }, - "@vue/babel-sugar-v-on": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.1.2.tgz", - "integrity": "sha512-T8ZCwC8Jp2uRtcZ88YwZtZXe7eQrJcfRq0uTFy6ShbwYJyz5qWskRFoVsdTi9o0WEhmQXxhQUewodOSCUPVmsQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", - "camelcase": "^5.0.0" - } - }, - "@vue/cli-overlay": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.5.11.tgz", - "integrity": "sha512-aDQNw+oGk5+KR0vL9TocjfzyYHTJxR2lS8iPbcL4lRglCs2dudOE7QWXypj5dM4rQus0jJ5fxJTS55o9uy9fcQ==", - "dev": true - }, - "@vue/cli-plugin-babel": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-4.3.1.tgz", - "integrity": "sha512-tBqu0v1l4LfWX8xuJmofpp+8xQzKddFNxdLmeVDOX/omDBQX0qaVDeMUtRxxSTazI06SKr605SnUQoa35qwbvw==", - "dev": true, - "requires": { - "@babel/core": "^7.9.0", - "@vue/babel-preset-app": "^4.3.1", - "@vue/cli-shared-utils": "^4.3.1", - "babel-loader": "^8.1.0", - "cache-loader": "^4.1.0", - "thread-loader": "^2.1.3", - "webpack": "^4.0.0" - } - }, - "@vue/cli-plugin-eslint": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.3.1.tgz", - "integrity": "sha512-5UEP93b8C/JQs9Rnuldsu8jMz0XO4wNXG0lL/GdChYBEheKCyXJXzan7qzEbIuvUwG3I+qlUkGsiyNokIgXejg==", - "dev": true, - "requires": { - "@vue/cli-shared-utils": "^4.3.1", - "eslint-loader": "^2.2.1", - "globby": "^9.2.0", - "inquirer": "^7.1.0", - "webpack": "^4.0.0", - "yorkie": "^2.0.0" - } - }, - "@vue/cli-plugin-router": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.3.1.tgz", - "integrity": "sha512-m0ntr5R6q62oNMODgoyHAVAd/sDtsH15GdBrScZsPNeyHxmzmNBDlsNM38yYGGY064zDRRWif15d1yaTREybrA==", - "dev": true, - "requires": { - "@vue/cli-shared-utils": "^4.3.1" - } - }, - "@vue/cli-plugin-vuex": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.3.1.tgz", - "integrity": "sha512-mukwOlhZGBJhkqO2b3wHFFHjK5aP00b1WUHdrOfLR7M18euhaTyb4kA5nwZwEOmU3EzZx6kHzSFCRy/XaMkLug==", - "dev": true - }, - "@vue/cli-service": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.5.11.tgz", - "integrity": "sha512-FXeJh2o6B8q/njv2Ebhe9EsLXt9sPMXGDY5zVvcV5jgj9wkoej9yLfnmwWCau5kegNClP6bcM+BEHuMYxJ+ubQ==", - "dev": true, - "requires": { - "@intervolga/optimize-cssnano-plugin": "^1.0.5", - "@soda/friendly-errors-webpack-plugin": "^1.7.1", - "@soda/get-current-script": "^1.0.0", - "@types/minimist": "^1.2.0", - "@types/webpack": "^4.0.0", - "@types/webpack-dev-server": "^3.11.0", - "@vue/cli-overlay": "^4.5.11", - "@vue/cli-plugin-router": "^4.5.11", - "@vue/cli-plugin-vuex": "^4.5.11", - "@vue/cli-shared-utils": "^4.5.11", - "@vue/component-compiler-utils": "^3.1.2", - "@vue/preload-webpack-plugin": "^1.1.0", - "@vue/web-component-wrapper": "^1.2.0", - "acorn": "^7.4.0", - "acorn-walk": "^7.1.1", - "address": "^1.1.2", - "autoprefixer": "^9.8.6", - "browserslist": "^4.12.0", - "cache-loader": "^4.1.0", - "case-sensitive-paths-webpack-plugin": "^2.3.0", - "cli-highlight": "^2.1.4", - "clipboardy": "^2.3.0", - "cliui": "^6.0.0", - "copy-webpack-plugin": "^5.1.1", - "css-loader": "^3.5.3", - "cssnano": "^4.1.10", - "debug": "^4.1.1", - "default-gateway": "^5.0.5", - "dotenv": "^8.2.0", - "dotenv-expand": "^5.1.0", - "file-loader": "^4.2.0", - "fs-extra": "^7.0.1", - "globby": "^9.2.0", - "hash-sum": "^2.0.0", - "html-webpack-plugin": "^3.2.0", - "launch-editor-middleware": "^2.2.1", - "lodash.defaultsdeep": "^4.6.1", - "lodash.mapvalues": "^4.6.0", - "lodash.transform": "^4.6.0", - "mini-css-extract-plugin": "^0.9.0", - "minimist": "^1.2.5", - "pnp-webpack-plugin": "^1.6.4", - "portfinder": "^1.0.26", - "postcss-loader": "^3.0.0", - "ssri": "^7.1.0", - "terser-webpack-plugin": "^2.3.6", - "thread-loader": "^2.1.3", - "url-loader": "^2.2.0", - "vue-loader": "^15.9.2", - "vue-loader-v16": "npm:vue-loader@^16.1.0", - "vue-style-loader": "^4.1.2", - "webpack": "^4.0.0", - "webpack-bundle-analyzer": "^3.8.0", - "webpack-chain": "^6.4.0", - "webpack-dev-server": "^3.11.0", - "webpack-merge": "^4.2.2" - }, - "dependencies": { - "@vue/cli-plugin-router": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.5.11.tgz", - "integrity": "sha512-09tzw3faOs48IUPwLutYaNC7eoyyL140fKruTwdFdXuBLDdSQVida57Brx0zj2UKXc5qF8hk4GoGrOshN0KfNg==", - "dev": true, - "requires": { - "@vue/cli-shared-utils": "^4.5.11" - } - }, - "@vue/cli-plugin-vuex": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.11.tgz", - "integrity": "sha512-JBPeZLubiSHbRkEKDj0tnLiU43AJ3vt6JULn4IKWH1XWZ6MFC8vElaP5/AA4O3Zko5caamDDBq3TRyxdA2ncUQ==", - "dev": true - }, - "@vue/cli-shared-utils": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.5.11.tgz", - "integrity": "sha512-+aaQ+ThQG3+WMexfSWNl0y6f43edqVqRNbguE53F3TIH81I7saS5S750ayqXhZs2r6STJJyqorQnKtAWfHo29A==", - "dev": true, - "requires": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.2", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "read-pkg": "^5.1.1", - "request": "^2.88.2", - "semver": "^6.1.0", - "strip-ansi": "^6.0.0" - } - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "cacache": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", - "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", - "dev": true, - "requires": { - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.2", - "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "minipass": "^3.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "p-map": "^3.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^2.7.1", - "ssri": "^7.0.0", - "unique-filename": "^1.1.1" - } - }, - "find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "ssri": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", - "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1", - "minipass": "^3.1.1" - } - }, - "terser-webpack-plugin": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz", - "integrity": "sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w==", - "dev": true, - "requires": { - "cacache": "^13.0.1", - "find-cache-dir": "^3.3.1", - "jest-worker": "^25.4.0", - "p-limit": "^2.3.0", - "schema-utils": "^2.6.6", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.6.12", - "webpack-sources": "^1.4.3" - } - } - } - }, - "@vue/cli-shared-utils": { - "version": "4.4.6", - "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.4.6.tgz", - "integrity": "sha512-ba+FZZCjiTSu2otnLjY4qXqASe7ZIQ/QBljk5oRPgqrR0p1NUkDPUcZhqa041aOaSW1yAfSfhOD7Q84nMnWhzQ==", - "dev": true, - "requires": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.2", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "read-pkg": "^5.1.1", - "request": "^2.88.2", - "semver": "^6.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@vue/component-compiler-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.2.0.tgz", - "integrity": "sha512-lejBLa7xAMsfiZfNp7Kv51zOzifnb29FwdnMLa96z26kXErPFioSf9BMcePVIQ6/Gc6/mC0UrPpxAWIHyae0vw==", - "dev": true, - "requires": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^7.0.14", - "postcss-selector-parser": "^6.0.2", - "prettier": "^1.18.2", - "source-map": "~0.6.1", - "vue-template-es2015-compiler": "^1.9.0" - }, - "dependencies": { - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", - "dev": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } - } - }, - "@vue/eslint-config-prettier": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-6.0.0.tgz", - "integrity": "sha512-wFQmv45c3ige5EA+ngijq40YpVcIkAy0Lihupnsnd1Dao5CBbPyfCzqtejFLZX1EwH/kCJdpz3t6s+5wd3+KxQ==", - "dev": true, - "requires": { - "eslint-config-prettier": "^6.0.0" - } - }, - "@vue/preload-webpack-plugin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz", - "integrity": "sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==", - "dev": true - }, - "@vue/web-component-wrapper": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", - "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==", - "dev": true - }, - "@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", - "dev": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "dev": true - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", - "dev": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dev": true, - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "ace-builds": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.4.12.tgz", - "integrity": "sha512-G+chJctFPiiLGvs3+/Mly3apXTcfgE45dT5yp12BcWZ1kUs+gm0qd3/fv4gsz6fVag4mM0moHVpjHDIgph6Psg==" - }, - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true - }, - "acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", - "dev": true - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "adaptivecards": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/adaptivecards/-/adaptivecards-2.0.0.tgz", - "integrity": "sha512-SFYAZ1Mg3f3K96ssVRVDv1gNZaTcgYo1SI+c2cxFFYV0+tbc5i0kS9AhY/4ybRt4VUKibIkgNzac9fO+VWU5Mg==" - }, - "address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", - "dev": true - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true - }, - "ajv-keywords": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.0.tgz", - "integrity": "sha512-eyoaac3btgU8eJlvh01En8OCKzRqlLe2G5jDsCr3RiE2uLGMEEB1aaGwVVpwR8M95956tGH6R+9edC++OvzaVw==", - "dev": true - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "dev": true, - "requires": { - "type-fest": "^0.11.0" - }, - "dependencies": { - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", - "dev": true - } - } - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "dev": true - }, - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", - "dev": true - }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "autoprefixer": { - "version": "9.8.6", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", - "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "colorette": "^1.2.1", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - }, - "dependencies": { - "caniuse-lite": { - "version": "1.0.30001192", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001192.tgz", - "integrity": "sha512-63OrUnwJj5T1rUmoyqYTdRWBqFFxZFlyZnRRjDR8NSUQFB6A+j/uBORU/SyJ5WzDLg4SPiZH40hQCBNdZ/jmAw==", - "dev": true - } - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", - "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", - "dev": true - }, - "axios": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", - "requires": { - "follow-redirects": "^1.10.0" - } - }, - "babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - } - }, - "babel-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", - "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", - "dev": true, - "requires": { - "find-cache-dir": "^2.1.0", - "loader-utils": "^1.4.0", - "mkdirp": "^0.5.3", - "pify": "^4.0.1", - "schema-utils": "^2.6.5" - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-transform-remove-console": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz", - "integrity": "sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bfj": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", - "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "check-types": "^8.0.3", - "hoopy": "^0.1.4", - "tryer": "^1.0.1" - } - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", - "dev": true - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "bn.js": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", - "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", - "dev": true - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true - } - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true, - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - }, - "dependencies": { - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - } - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "bootstrap": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.5.0.tgz", - "integrity": "sha512-Z93QoXvodoVslA+PWNdk23Hze4RBYIkpb5h8I2HY2Tu2h7A0LpAgLcyrhrSUyo2/Oxm2l1fRZPs1e5hnxnliXA==" - }, - "bootstrap-vue": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-2.15.0.tgz", - "integrity": "sha512-ncxWkDG0mKFVot314wWKJELi+ESO7k6ngV//qvJFs9iVzlFI8Hx3rBVbpcPW2vrJ+0vitH8N2SOwn4fdQ3frMQ==", - "requires": { - "@nuxt/opencollective": "^0.3.0", - "bootstrap": ">=4.5.0 <5.0.0", - "popper.js": "^1.16.1", - "portal-vue": "^2.1.7", - "vue-functional-data-merge": "^3.1.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "browserify-sign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz", - "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==", - "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.2", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.2.tgz", - "integrity": "sha512-MfZaeYqR8StRZdstAK9hCKDd2StvePCYp5rHzQCPicUjfFliDgmuaBNPHYUTpAywBN8+Wc/d7NYVFkO0aqaBUw==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001088", - "electron-to-chromium": "^1.3.483", - "escalade": "^3.0.1", - "node-releases": "^1.1.58" - } - }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "buffer-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/buffer-json/-/buffer-json-2.0.0.tgz", - "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - }, - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cache-loader": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-4.1.0.tgz", - "integrity": "sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==", - "dev": true, - "requires": { - "buffer-json": "^2.0.0", - "find-cache-dir": "^3.0.0", - "loader-utils": "^1.2.3", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.1", - "schema-utils": "^2.0.0" - }, - "dependencies": { - "find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001090", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001090.tgz", - "integrity": "sha512-QzPRKDCyp7RhjczTPZaqK3CjPA5Ht2UnXhZhCI4f7QiB5JK6KEuZBxIzyWnB3wO4hgAj4GMRxAhuiacfw0Psjg==", - "dev": true - }, - "case-sensitive-paths-webpack-plugin": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", - "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "check-types": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz", - "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", - "dev": true - }, - "chokidar": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", - "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.4.0" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-highlight": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.10.tgz", - "integrity": "sha512-CcPFD3JwdQ2oSzy+AMG6j3LRTkNjM82kzcSKzoVw6cLanDCJNlsLjeqVTOTfOfucnWv5F0rmBemVf1m9JiIasw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "highlight.js": "^10.0.0", - "mz": "^2.4.0", - "parse5": "^5.1.1", - "parse5-htmlparser2-tree-adapter": "^6.0.0", - "yargs": "^16.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "cli-spinners": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.3.0.tgz", - "integrity": "sha512-Xs2Hf2nzrvJMFKimOR7YR0QwZ8fc0u98kdtwN1eNAZzNQgH3vK2pXzff6GJtKh7S5hoJ87ECiAiZFS2fb5Ii2w==", - "dev": true - }, - "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, - "clipboardy": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", - "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", - "dev": true, - "requires": { - "arch": "^2.1.1", - "execa": "^1.0.0", - "is-wsl": "^2.1.1" - }, - "dependencies": { - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - } - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", - "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", - "dev": true, - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.4" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "color-string": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", - "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true - }, - "consola": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.14.0.tgz", - "integrity": "sha512-A2j1x4u8d6SIVikhZROfpFJxQZie+cZOfQMyI/tu2+hWXe8iAv7R6FW6s6x04/7zBCst94lPddztot/d6GJiuQ==" - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "consolidate": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", - "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", - "dev": true, - "requires": { - "bluebird": "^3.1.1" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "copy-webpack-plugin": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz", - "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==", - "dev": true, - "requires": { - "cacache": "^12.0.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", - "normalize-path": "^3.0.0", - "p-limit": "^2.2.1", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "webpack-log": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - } - } - }, - "core-js": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", - "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" - }, - "core-js-compat": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", - "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", - "dev": true, - "requires": { - "browserslist": "^4.8.5", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - } - } - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "dev": true, - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, - "css-loader": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", - "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.32", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.2.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^2.7.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", - "dev": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "requires": { - "css-tree": "^1.1.2" - }, - "dependencies": { - "css-tree": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", - "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", - "dev": true - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "dev": true - }, - "default-gateway": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-5.0.5.tgz", - "integrity": "sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA==", - "dev": true, - "requires": { - "execa": "^3.3.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", - "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "p-finally": "^2.0.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "p-finally": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", - "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "dependencies": { - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "^3.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", - "dev": true, - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "requires": { - "buffer-indexof": "^1.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "requires": { - "utila": "~0.4" - } - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", - "dev": true - } - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", - "dev": true - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "easy-stack": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.0.tgz", - "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g=", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.483", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.483.tgz", - "integrity": "sha512-+05RF8S9rk8S0G8eBCqBRBaRq7+UN3lDs2DAvnG8SBSgQO3hjy0+qt4CmRk5eiuGbTcaicgXfPmBi31a+BD3lg==", - "dev": true - }, - "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" - } - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.2.0.tgz", - "integrity": "sha512-S7eiFb/erugyd1rLb6mQ3Vuq+EXHv5cpCkNqqIkYkBgN2QdFnyCZzFBleqwGEx4lgNGYij81BWnCrFNK7vxvjQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, - "entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "error-stack-parser": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", - "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", - "dev": true, - "requires": { - "stackframe": "^1.1.1" - } - }, - "es-abstract": { - "version": "1.18.0-next.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", - "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.1", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.3", - "string.prototype.trimstart": "^1.0.3" - }, - "dependencies": { - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.1.tgz", - "integrity": "sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "eslint-scope": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", - "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } - }, - "eslint-config-prettier": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz", - "integrity": "sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==", - "dev": true, - "requires": { - "get-stdin": "^6.0.0" - } - }, - "eslint-loader": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.2.1.tgz", - "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==", - "dev": true, - "requires": { - "loader-fs-cache": "^1.0.0", - "loader-utils": "^1.0.2", - "object-assign": "^4.0.1", - "object-hash": "^1.1.4", - "rimraf": "^2.6.1" - } - }, - "eslint-plugin-prettier": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz", - "integrity": "sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-plugin-vue": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz", - "integrity": "sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==", - "dev": true, - "requires": { - "natural-compare": "^1.4.0", - "semver": "^5.6.0", - "vue-eslint-parser": "^7.0.0" - } - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - }, - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "acorn": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", - "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", - "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "event-pubsub": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", - "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", - "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", - "dev": true - }, - "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", - "dev": true, - "requires": { - "original": "^1.0.0" - } - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "dev": true, - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } - }, - "file-loader": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz", - "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==", - "dev": true, - "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.5.0" - } - }, - "filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "follow-redirects": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.2.tgz", - "integrity": "sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA==" - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", - "dev": true, - "requires": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" - } - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "hash-sum": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", - "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", - "dev": true - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "highlight.js": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.6.0.tgz", - "integrity": "sha512-8mlRcn5vk/r4+QcqerapwBYTe+iPL5ih6xrNylxrnBdHQiijDETfXX7VIxC3UiCRiINBJfANBAsPzAvRQj8RpQ==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hoopy": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", - "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", - "dev": true - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true - }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", - "dev": true - }, - "html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", - "dev": true - }, - "html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", - "dev": true, - "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - } - } - }, - "html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", - "dev": true - }, - "html-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", - "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", - "dev": true, - "requires": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" - }, - "dependencies": { - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - } - } - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, - "http-parser-js": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", - "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "dev": true, - "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "dev": true, - "requires": { - "postcss": "^7.0.14" - } - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", - "dev": true, - "requires": { - "import-from": "^2.1.0" - } - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "inquirer": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.2.0.tgz", - "integrity": "sha512-E0c4rPwr9ByePfNlTIB8z51kK1s2n6jrHuJeEHENl/sbq2G/S1auvibgEwNR4uSyiU+PiYHqSwsgGiXjG8p5ZQ==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^3.0.0", - "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.5.3", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "dev": true, - "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - }, - "dependencies": { - "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - } - } - } - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arguments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", - "dev": true, - "requires": { - "call-bind": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "dev": true - }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "dev": true, - "requires": { - "ci-info": "^1.5.0" - } - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-docker": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", - "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "requires": { - "is-path-inside": "^2.1.0" - } - }, - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "requires": { - "path-is-inside": "^1.0.2" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" - } - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.0" - } - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "javascript-natural-sort": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", - "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=" - }, - "javascript-stringify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.0.1.tgz", - "integrity": "sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow==", - "dev": true - }, - "jest-worker": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", - "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", - "dev": true, - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jmespath": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", - "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=" - }, - "js-message": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.5.tgz", - "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=", - "dev": true - }, - "js-queue": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.0.tgz", - "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=", - "dev": true, - "requires": { - "easy-stack": "^1.0.0" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/json-source-map/-/json-source-map-0.6.1.tgz", - "integrity": "sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", - "dev": true - }, - "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "jsoneditor": { - "version": "8.6.8", - "resolved": "https://registry.npmjs.org/jsoneditor/-/jsoneditor-8.6.8.tgz", - "integrity": "sha512-WgNnGe3/zcRE5MjZlPy4lHnXb7N17N2S+MJjJDeeemJ/2eZ/9LB5m4arDHt19WMngtDuAj6xWf6m721nNzDniQ==", - "requires": { - "ace-builds": "^1.4.11", - "ajv": "^6.12.2", - "javascript-natural-sort": "^0.7.1", - "jmespath": "^0.15.0", - "json-source-map": "^0.6.1", - "mobius1-selectr": "^2.4.13", - "picomodal": "^3.0.0", - "vanilla-picker": "^2.10.1" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "konva": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/konva/-/konva-6.0.0.tgz", - "integrity": "sha512-YTwmtz3KzbzdC0KDRHWLzuk0KXB4NUdaQqytrxacXE1C39V6wCk7Nnu0wgq+GdGbG6m8A1qiEU9TSJ19qdIzDw==" - }, - "launch-editor": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.2.1.tgz", - "integrity": "sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw==", - "dev": true, - "requires": { - "chalk": "^2.3.0", - "shell-quote": "^1.6.1" - } - }, - "launch-editor-middleware": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz", - "integrity": "sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg==", - "dev": true, - "requires": { - "launch-editor": "^2.2.1" - } - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "linkify-it": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz", - "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==", - "requires": { - "uc.micro": "^1.0.1" - } - }, - "loader-fs-cache": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", - "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", - "dev": true, - "requires": { - "find-cache-dir": "^0.1.1", - "mkdirp": "^0.5.1" - }, - "dependencies": { - "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, - "requires": { - "find-up": "^1.0.0" - } - } - } - }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" - }, - "lodash.defaultsdeep": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", - "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", - "dev": true - }, - "lodash.kebabcase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=", - "dev": true - }, - "lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.transform": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", - "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "markdown-it": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-11.0.0.tgz", - "integrity": "sha512-+CvOnmbSubmQFSA9dKz1BRiaSMV7rhexl3sngKqFyXSagoA3fBdJQ8oZWtRy2knXdpDXaBw44euz37DeJQ9asg==", - "requires": { - "argparse": "^1.0.7", - "entities": "~2.0.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", - "dev": true - }, - "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", - "dev": true - }, - "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "dev": true, - "requires": { - "mime-db": "1.44.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "mini-css-extract-plugin": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", - "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "normalize-url": "1.9.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - }, - "dependencies": { - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "mobius1-selectr": { - "version": "2.4.13", - "resolved": "https://registry.npmjs.org/mobius1-selectr/-/mobius1-selectr-2.4.13.tgz", - "integrity": "sha512-Mk9qDrvU44UUL0EBhbAA1phfQZ7aMZPjwtL7wkpiBzGh8dETGqfsh50mWoX9EkjDlkONlErWXArHCKfoxVg0Bw==" - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "^1.1.1" - } - }, - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" - }, - "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true - }, - "node-ipc": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.1.tgz", - "integrity": "sha512-FAyICv0sIRJxVp3GW5fzgaf9jwwRQxAKDJlmNFUL5hOy+W4X/I5AypyHoq0DXXbo9o/gt79gj++4cMr4jVWE/w==", - "dev": true, - "requires": { - "event-pubsub": "4.3.0", - "js-message": "1.0.5", - "js-queue": "2.0.0" - } - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "node-releases": { - "version": "1.1.58", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.58.tgz", - "integrity": "sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-hash": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", - "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", - "dev": true - }, - "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", - "dev": true - }, - "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", - "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", - "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has": "^1.0.3" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "open": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", - "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "dev": true - }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "ora": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", - "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dev": true, - "requires": { - "url-parse": "^1.4.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "dev": true, - "requires": { - "retry": "^0.12.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - } - } - }, - "parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", - "dev": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" - } - }, - "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "dev": true - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true - }, - "picomodal": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/picomodal/-/picomodal-3.0.0.tgz", - "integrity": "sha1-+s0w9PvzSoCcHgTqUl8ATzmcC4I=" - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "pnp-webpack-plugin": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", - "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", - "dev": true, - "requires": { - "ts-pnp": "^1.1.6" - } - }, - "popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" - }, - "portal-vue": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/portal-vue/-/portal-vue-2.1.7.tgz", - "integrity": "sha512-+yCno2oB3xA7irTt0EU5Ezw22L2J51uKAacE/6hMPMoO/mx3h4rXFkkBkT4GFsMDv/vEe8TNKC3ujJJ0PTwb6g==" - }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-calc": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", - "dev": true, - "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-load-config": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", - "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" - } - }, - "postcss-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", - "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "dev": true, - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", - "dev": true, - "requires": { - "postcss": "^7.0.5" - } - }, - "postcss-modules-local-by-default": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", - "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", - "dev": true, - "requires": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.32", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", - "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", - "dev": true, - "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" - } - }, - "postcss-modules-values": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", - "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", - "dev": true, - "requires": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "dev": true, - "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-selector-parser": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", - "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1", - "util-deprecate": "^1.0.2" - } - }, - "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", - "dev": true, - "requires": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", - "dev": true - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, - "pretty-error": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", - "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", - "dev": true, - "requires": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "dev": true, - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true, - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "regenerate": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", - "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", - "dev": true, - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", - "dev": true - }, - "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - }, - "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" - } - }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "renderkid": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz", - "integrity": "sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==", - "dev": true, - "requires": { - "css-select": "^2.0.2", - "dom-converter": "^0.2", - "htmlparser2": "^3.10.1", - "lodash": "^4.17.20", - "strip-ansi": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "rxjs": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", - "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sass": { - "version": "1.26.9", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.9.tgz", - "integrity": "sha512-t8AkRVi+xvba4yZiLWkJdgJHBFCB3Dh4johniQkPy9ywkgFHNasXFEFP+RG/F6LhQ+aoE4aX+IorIWQjS0esVw==", - "dev": true, - "requires": { - "chokidar": ">=2.0.0 <4.0.0" - } - }, - "sass-loader": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", - "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "loader-utils": "^1.2.3", - "neo-async": "^2.6.1", - "schema-utils": "^2.6.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "selfsigned": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", - "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", - "dev": true, - "requires": { - "node-forge": "^0.10.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", - "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", - "dev": true - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } - } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "sockjs": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", - "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", - "dev": true, - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^3.4.0", - "websocket-driver": "^0.7.4" - } - }, - "sockjs-client": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.0.tgz", - "integrity": "sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==", - "dev": true, - "requires": { - "debug": "^3.2.6", - "eventsource": "^1.0.7", - "faye-websocket": "^0.11.3", - "inherits": "^2.0.4", - "json3": "^3.3.3", - "url-parse": "^1.4.7" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", - "dev": true - }, - "spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - } - }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "stackframe": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", - "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - } - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", - "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", - "dev": true - }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", - "dev": true - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - } - }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - }, - "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "terser-webpack-plugin": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", - "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", - "dev": true, - "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^3.1.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "requires": { - "any-promise": "^1.0.0" - } - }, - "thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", - "dev": true, - "requires": { - "thenify": ">= 3.1.0 < 4" - } - }, - "thread-loader": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-2.1.3.tgz", - "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==", - "dev": true, - "requires": { - "loader-runner": "^2.3.1", - "loader-utils": "^1.1.0", - "neo-async": "^2.6.0" - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "timers-browserify": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true - }, - "toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", - "dev": true - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", - "dev": true - }, - "ts-pnp": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", - "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", - "dev": true - }, - "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", - "dev": true - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" - }, - "uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", - "dev": true, - "requires": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-loader": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz", - "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==", - "dev": true, - "requires": { - "loader-utils": "^1.2.3", - "mime": "^2.4.4", - "schema-utils": "^2.5.0" - } - }, - "url-parse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", - "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - } - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, - "v-jsoneditor": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/v-jsoneditor/-/v-jsoneditor-1.4.1.tgz", - "integrity": "sha512-XRCDxaCU4Dga9BiDKXeva7h2P9mIcOm953HkFIEIJ/giyMXwP3bQp63HnVB4L7eP6xnbhNK0HZ0dvtyKVJ0Wdg==", - "requires": { - "jsoneditor": "^8.6.4" - } - }, - "v8-compile-cache": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vanilla-picker": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/vanilla-picker/-/vanilla-picker-2.10.1.tgz", - "integrity": "sha512-Bo4HOKkSorcQoRB08HwDMb8X2jt3SsZw7gzFlbzXbhnaxdUVJBm3LOUudr7M1SCVwPCo8d3nq8ajiAg8lAoqPg==", - "requires": { - "@sphinxxxx/color-conversion": "^2.2.2" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "vue": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz", - "integrity": "sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ==" - }, - "vue-eslint-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz", - "integrity": "sha512-Kr21uPfthDc63nDl27AGQEhtt9VrZ9nkYk/NTftJ2ws9XiJwzJJCnCr3AITQ2jpRMA0XPGDECxYH8E027qMK9Q==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "eslint-scope": "^5.0.0", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.2.1", - "esquery": "^1.0.1", - "lodash": "^4.17.15" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "eslint-scope": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", - "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "vue-functional-data-merge": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz", - "integrity": "sha512-leT4kdJVQyeZNY1kmnS1xiUlQ9z1B/kdBFCILIjYYQDqZgLqCLa0UhjSSeRX6c3mUe6U5qYeM8LrEqkHJ1B4LA==" - }, - "vue-hot-reload-api": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", - "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", - "dev": true - }, - "vue-konva": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/vue-konva/-/vue-konva-2.1.3.tgz", - "integrity": "sha512-9gW9FhDSrUCEJwAb7LvX3inCzNt0WckXwRABve3ALFMCqCVtfcjRURuaTNB7iFNhlzsUKg2W9SZKt1fD9G3w3g==" - }, - "vue-loader": { - "version": "15.9.6", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.6.tgz", - "integrity": "sha512-j0cqiLzwbeImIC6nVIby2o/ABAWhlppyL/m5oJ67R5MloP0hj/DtFgb0Zmq3J9CG7AJ+AXIvHVnJAPBvrLyuDg==", - "dev": true, - "requires": { - "@vue/component-compiler-utils": "^3.1.0", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.1.0" - }, - "dependencies": { - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", - "dev": true - } - } - }, - "vue-loader-v16": { - "version": "npm:vue-loader@16.1.2", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.1.2.tgz", - "integrity": "sha512-8QTxh+Fd+HB6fiL52iEVLKqE9N1JSlMXLR92Ijm6g8PZrwIxckgpqjPDWRP5TWxdiPaHR+alUWsnu1ShQOwt+Q==", - "dev": true, - "optional": true, - "requires": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "optional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "optional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "optional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "optional": true - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "optional": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "optional": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "vue-router": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.3.4.tgz", - "integrity": "sha512-SdKRBeoXUjaZ9R/8AyxsdTqkOfMcI5tWxPZOUX5Ie1BTL5rPSZ0O++pbiZCeYeythiZIdLEfkDiQPKIaWk5hDg==" - }, - "vue-style-loader": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", - "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==", - "dev": true, - "requires": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" - }, - "dependencies": { - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", - "dev": true - } - } - }, - "vue-template-compiler": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz", - "integrity": "sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA==", - "dev": true, - "requires": { - "de-indent": "^1.0.2", - "he": "^1.1.0" - } - }, - "vue-template-es2015-compiler": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", - "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", - "dev": true - }, - "vuex": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.4.0.tgz", - "integrity": "sha512-ajtqwEW/QhnrBZQsZxCLHThZZaa+Db45c92Asf46ZDXu6uHXgbfVuBaJ4gzD2r4UX0oMJHstFwd2r2HM4l8umg==" - }, - "watchpack": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", - "integrity": "sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g==", - "dev": true, - "requires": { - "chokidar": "^3.4.0", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.0" - } - }, - "watchpack-chokidar2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", - "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", - "dev": true, - "optional": true, - "requires": { - "chokidar": "^2.1.8" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "optional": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "optional": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "optional": true - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "optional": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "optional": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "optional": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - } - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webpack": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", - "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.6.1", - "webpack-sources": "^1.4.1" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "webpack-bundle-analyzer": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz", - "integrity": "sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1", - "bfj": "^6.1.1", - "chalk": "^2.4.1", - "commander": "^2.18.0", - "ejs": "^2.6.1", - "express": "^4.16.3", - "filesize": "^3.6.1", - "gzip-size": "^5.0.0", - "lodash": "^4.17.19", - "mkdirp": "^0.5.1", - "opener": "^1.5.1", - "ws": "^6.0.0" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - } - } - }, - "webpack-chain": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz", - "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", - "dev": true, - "requires": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^2.0.1" - } - }, - "webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", - "dev": true, - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - } - }, - "webpack-dev-server": { - "version": "3.11.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", - "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - } - }, - "webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "dependencies": { - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "y18n": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", - "dev": true - } - } - }, - "yargs-parser": { - "version": "20.2.6", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.6.tgz", - "integrity": "sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA==", - "dev": true - }, - "yorkie": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", - "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", - "dev": true, - "requires": { - "execa": "^0.8.0", - "is-ci": "^1.0.10", - "normalize-path": "^1.0.0", - "strip-indent": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", - "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "normalize-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", - "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } - } - } - } -} diff --git a/source/pic2card/ui/package.json b/source/pic2card/ui/package.json deleted file mode 100644 index 0d27245016..0000000000 --- a/source/pic2card/ui/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "pic2card", - "version": "0.1.0", - "private": true, - "scripts": { - "serve": "VUE_APP_ENV=development VUE_APP_BASE_URL=http://172.17.0.5:5050 vue-cli-service serve", - "serve-production": "VUE_APP_ENV=production VUE_APP_BASE_URL=http://172.17.0.5:5050 vue-cli-service serve", - "build": "VUE_APP_ENV=production VUE_APP_BASE_URL=http://172.17.0.5:5050 vue-cli-service build", - "lint": "vue-cli-service lint" - }, - "dependencies": { - "adaptivecards": "^2.0.0", - "axios": "^0.21.1", - "bootstrap": "^4.5.0", - "bootstrap-vue": "^2.15.0", - "core-js": "^3.6.4", - "elliptic": ">=6.5.3", - "konva": "^6.0.0", - "lodash": ">=4.17.19", - "markdown-it": "^11.0.0", - "serialize-javascript": ">=3.1.0", - "v-jsoneditor": "^1.4.1", - "vue": "^2.6.11", - "vue-konva": "^2.1.2", - "vue-router": "^3.1.6", - "vuex": "^3.1.3", - "websocket-extensions": ">=0.1.4" - }, - "devDependencies": { - "@vue/cli-plugin-babel": "~4.3.0", - "@vue/cli-plugin-eslint": "~4.3.0", - "@vue/cli-plugin-router": "~4.3.0", - "@vue/cli-plugin-vuex": "~4.3.0", - "@vue/cli-service": "^4.5.11", - "@vue/eslint-config-prettier": "^6.0.0", - "babel-eslint": "^10.1.0", - "babel-plugin-transform-remove-console": "^6.9.4", - "eslint": "^6.7.2", - "eslint-plugin-prettier": "^3.1.1", - "eslint-plugin-vue": "^6.2.2", - "prettier": "^1.19.1", - "sass": "^1.19.0", - "sass-loader": "^8.0.0", - "vue-template-compiler": "^2.6.11" - } -} diff --git a/source/pic2card/ui/public/favicon.ico b/source/pic2card/ui/public/favicon.ico deleted file mode 100644 index df36fcfb72..0000000000 Binary files a/source/pic2card/ui/public/favicon.ico and /dev/null differ diff --git a/source/pic2card/ui/public/icons/template.svg b/source/pic2card/ui/public/icons/template.svg deleted file mode 100644 index 8551ebb056..0000000000 --- a/source/pic2card/ui/public/icons/template.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/source/pic2card/ui/public/icons/upload.svg b/source/pic2card/ui/public/icons/upload.svg deleted file mode 100644 index 0e176276f7..0000000000 --- a/source/pic2card/ui/public/icons/upload.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/source/pic2card/ui/public/index.html b/source/pic2card/ui/public/index.html deleted file mode 100644 index 4927c9709f..0000000000 --- a/source/pic2card/ui/public/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - <%= htmlWebpackPlugin.options.title %> - - - - - -
- - - - \ No newline at end of file diff --git a/source/pic2card/ui/src/App.vue b/source/pic2card/ui/src/App.vue deleted file mode 100644 index be8b9307c4..0000000000 --- a/source/pic2card/ui/src/App.vue +++ /dev/null @@ -1,45 +0,0 @@ - - - - - diff --git a/source/pic2card/ui/src/assets/logo.png b/source/pic2card/ui/src/assets/logo.png deleted file mode 100644 index f3d2503fc2..0000000000 Binary files a/source/pic2card/ui/src/assets/logo.png and /dev/null differ diff --git a/source/pic2card/ui/src/assets/logo.svg b/source/pic2card/ui/src/assets/logo.svg deleted file mode 100644 index 145b6d1308..0000000000 --- a/source/pic2card/ui/src/assets/logo.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 46 diff --git a/source/pic2card/ui/src/components/config.js b/source/pic2card/ui/src/components/config.js deleted file mode 100644 index 5b239fa691..0000000000 --- a/source/pic2card/ui/src/components/config.js +++ /dev/null @@ -1,275 +0,0 @@ -export default { - adaptiveHostConfig: { - spacing: { - small: 3, - default: 8, - medium: 20, - large: 30, - extraLarge: 40, - padding: 10 - }, - separator: { - lineThickness: 1, - lineColor: "#EEEEEE" - }, - supportsInteractivity: true, - fontTypes: { - default: { - fontFamily: - "'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif", - fontSizes: { - small: 12, - default: 14, - medium: 17, - large: 21, - extraLarge: 26 - }, - fontWeights: { - lighter: 200, - default: 400, - bolder: 600 - } - }, - monospace: { - fontFamily: "'Courier New', Courier, monospace", - fontSizes: { - small: 12, - default: 14, - medium: 17, - large: 21, - extraLarge: 26 - }, - fontWeights: { - lighter: 200, - default: 400, - bolder: 600 - } - } - }, - containerStyles: { - default: { - backgroundColor: "#FFFFFF", - foregroundColors: { - default: { - default: "#000000", - subtle: "#6f6f6f" - }, - accent: { - default: "#0063B1", - subtle: "#0063B1" - }, - attention: { - default: "#ED0000", - subtle: "#DDED0000" - }, - good: { - default: "#028A02", - subtle: "#DD027502" - }, - warning: { - default: "#B75C00", - subtle: "#DDB75C00" - } - } - }, - emphasis: { - backgroundColor: "#F9F9F9", - foregroundColors: { - default: { - default: "#000000", - subtle: "#6f6f6f" - }, - accent: { - default: "#2E89FC", - subtle: "#882E89FC" - }, - attention: { - default: "#ED0000", - subtle: "#DDED0000" - }, - good: { - default: "#028A02", - subtle: "#DD027502" - }, - warning: { - default: "#B75C00", - subtle: "#DDB75C00" - } - } - }, - accent: { - backgroundColor: "#C7DEF9", - foregroundColors: { - default: { - default: "#333333", - subtle: "#EE333333" - }, - dark: { - default: "#000000", - subtle: "#66000000" - }, - light: { - default: "#FFFFFF", - subtle: "#33000000" - }, - accent: { - default: "#2E89FC", - subtle: "#882E89FC" - }, - attention: { - default: "#cc3300", - subtle: "#DDcc3300" - }, - good: { - default: "#028A02", - subtle: "#DD027502" - }, - warning: { - default: "#e69500", - subtle: "#DDe69500" - } - } - }, - good: { - backgroundColor: "#CCFFCC", - foregroundColors: { - default: { - default: "#333333", - subtle: "#EE333333" - }, - dark: { - default: "#000000", - subtle: "#66000000" - }, - light: { - default: "#FFFFFF", - subtle: "#33000000" - }, - accent: { - default: "#2E89FC", - subtle: "#882E89FC" - }, - attention: { - default: "#cc3300", - subtle: "#DDcc3300" - }, - good: { - default: "#028A02", - subtle: "#DD027502" - }, - warning: { - default: "#e69500", - subtle: "#DDe69500" - } - } - }, - attention: { - backgroundColor: "#FFC5B2", - foregroundColors: { - default: { - default: "#333333", - subtle: "#EE333333" - }, - dark: { - default: "#000000", - subtle: "#66000000" - }, - light: { - default: "#FFFFFF", - subtle: "#33000000" - }, - accent: { - default: "#2E89FC", - subtle: "#882E89FC" - }, - attention: { - default: "#cc3300", - subtle: "#DDcc3300" - }, - good: { - default: "#028A02", - subtle: "#DD027502" - }, - warning: { - default: "#e69500", - subtle: "#DDe69500" - } - } - }, - warning: { - backgroundColor: "#FFE2B2", - foregroundColors: { - default: { - default: "#333333", - subtle: "#EE333333" - }, - dark: { - default: "#000000", - subtle: "#66000000" - }, - light: { - default: "#FFFFFF", - subtle: "#33000000" - }, - accent: { - default: "#2E89FC", - subtle: "#882E89FC" - }, - attention: { - default: "#cc3300", - subtle: "#DDcc3300" - }, - good: { - default: "#028A02", - subtle: "#DD027502" - }, - warning: { - default: "#e69500", - subtle: "#DDe69500" - } - } - } - }, - imageSizes: { - small: 40, - medium: 80, - large: 160 - }, - actions: { - maxActions: 5, - spacing: "default", - buttonSpacing: 8, - showCard: { - actionMode: "inline", - inlineTopMargin: 8 - }, - actionsOrientation: "horizontal", - actionAlignment: "stretch" - }, - adaptiveCard: { - allowCustomStyle: false - }, - imageSet: { - imageSize: "medium", - maxImageHeight: 100 - }, - factSet: { - title: { - color: "default", - size: "default", - isSubtle: false, - weight: "bolder", - wrap: true, - maxWidth: 150 - }, - value: { - color: "default", - size: "default", - isSubtle: false, - weight: "default", - wrap: true - }, - spacing: 8 - } - } -}; diff --git a/source/pic2card/ui/src/components/loader/Loader.vue b/source/pic2card/ui/src/components/loader/Loader.vue deleted file mode 100644 index ea9d41bea8..0000000000 --- a/source/pic2card/ui/src/components/loader/Loader.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - - - diff --git a/source/pic2card/ui/src/main.js b/source/pic2card/ui/src/main.js deleted file mode 100644 index bcfd210138..0000000000 --- a/source/pic2card/ui/src/main.js +++ /dev/null @@ -1,22 +0,0 @@ -import Vue from "vue"; -import App from "./App.vue"; -import router from "./router"; -import store from "./store"; -import Loader from "./components/loader/Loader.vue"; -import { BootstrapVue, IconsPlugin } from "bootstrap-vue"; -import VJsoneditor from "v-jsoneditor/src/index"; - -Vue.config.productionTip = false; - -import VueKonva from "vue-konva"; -Vue.use(VueKonva); -Vue.use(VJsoneditor); -Vue.component("app-loading", Loader); -Vue.component("json-viewer", VJsoneditor); -// Install BootstrapVue -Vue.use(BootstrapVue); -new Vue({ - router, - store, - render: h => h(App) -}).$mount("#app"); diff --git a/source/pic2card/ui/src/router/index.js b/source/pic2card/ui/src/router/index.js deleted file mode 100644 index 459a5b3f54..0000000000 --- a/source/pic2card/ui/src/router/index.js +++ /dev/null @@ -1,41 +0,0 @@ -import Vue from "vue"; -import VueRouter from "vue-router"; -import LandingPage from "../views/landing-page/LandingPage.vue"; -import Pic2Card from "../views/pic2card/Pic2Card.vue"; -import CardDetailView from "../views/pic2card/CardDetailView.vue"; -import RenderImage from "../views/render-all-image/RenderImage.vue"; - -Vue.use(VueRouter); - -const routes = [ - { - path: "/cardview", - name: "cardDetailView", - component: CardDetailView, - props: true - }, - { - path: "/renderAll", - name: "renderAllImage", - component: RenderImage, - props: true - }, - { - path: "/pic2card", - name: "Pic2Card", - component: Pic2Card - }, - { - path: "/", - name: "LandingPage", - component: LandingPage - } -]; - -export const router = new VueRouter({ - mode: "history", - base: process.env.BASE_URL, - routes -}); - -export default router; diff --git a/source/pic2card/ui/src/scss/jsoneditor.scss b/source/pic2card/ui/src/scss/jsoneditor.scss deleted file mode 100644 index 13e123f588..0000000000 --- a/source/pic2card/ui/src/scss/jsoneditor.scss +++ /dev/null @@ -1,43 +0,0 @@ -.jsoneditor { - color: #1a1a1a; - border: none !important; - box-sizing: border-box; - width: 100%; - height: 100%; - position: relative; - padding: 0; - line-height: 100%; -} -.ace-jsoneditor .ace_text-layer { - color: gray; -} -.ace-jsoneditor .ace_variable { - color: #1a1a1a; -} -.ace-jsoneditor .ace_string { - color: green; -} - -// .ace-jsoneditor .ace_gutter { -// display: none; -// width: 0px; -// height: 0px; -// } -.ace_scrollbar::-webkit-scrollbar { - background: transparent !important; - height: 50px !important; - width: 15px !important; -} -.ace_scrollbar::-webkit-scrollbar-thumb { - background-color: rgba(0, 0, 0, 0.2); - border: solid whiteSmoke 6px !important; - -webkit-border-radius: 5px !important; - border-radius: 5px !important; -} -.ace_scrollbar::-webkit-scrollbar-thumb:hover { - background-color: rgba(0, 0, 0, 0.3) !important; -} -.ace_scrollbar::-webkit-scrollbar-track { - -webkit-border-radius: 5px !important; - border-radius: 5px !important; -} diff --git a/source/pic2card/ui/src/services/ImageApi.js b/source/pic2card/ui/src/services/ImageApi.js deleted file mode 100644 index ea29b8d7ee..0000000000 --- a/source/pic2card/ui/src/services/ImageApi.js +++ /dev/null @@ -1,36 +0,0 @@ -import axios from "axios"; -const baseURL = process.env.VUE_APP_BASE_URL; -const apiClient = axios.create({ - baseURL: baseURL, - withCredentials: false, - headers: { - Accept: "application/json", - "Content-Type": "application/json" - }, - timeout: 2000000 -}); - -export default { - baseURL() { - return apiClient.baseURL; - }, - getTemplateImages() { - return apiClient.get("/get_card_templates"); - }, - getAdaptiveCard(base64_image) { - let data = { - image: base64_image - }; - // Creating fresh client instance to handle the request, as - // latency of this endpoint is higher.sample_predict_json_debug - return axios({ - method: "post", - url: baseURL + "/predict_json_debug", - timeout: 2000000, - data: data, - headers: { - "Content-Type": "application/json" - } - }); - } -}; diff --git a/source/pic2card/ui/src/store/index.js b/source/pic2card/ui/src/store/index.js deleted file mode 100644 index f877b97885..0000000000 --- a/source/pic2card/ui/src/store/index.js +++ /dev/null @@ -1,10 +0,0 @@ -import Vue from "vue"; -import Vuex from "vuex"; -import pic2card from "./pic2card.module"; -Vue.use(Vuex); - -export default new Vuex.Store({ - modules: { - pic2card - } -}); diff --git a/source/pic2card/ui/src/store/pic2card.module.js b/source/pic2card/ui/src/store/pic2card.module.js deleted file mode 100755 index 0c73858317..0000000000 --- a/source/pic2card/ui/src/store/pic2card.module.js +++ /dev/null @@ -1,32 +0,0 @@ -const state = { - base64_images: [], - error: null -}; - -const getters = { - getTemplateImages(state) { - return state.base64_images; - } -}; - -const actions = { - saveTemplateImages(context, base64_images) { - context.commit("UpdateTemplateImages", base64_images); - } -}; - -const mutations = { - UpdateTemplateImages(state, base64_images) { - state.base64_images = base64_images; - }, - updateError(state, error) { - state.error = error; - } -}; - -export default { - state, - actions, - mutations, - getters -}; diff --git a/source/pic2card/ui/src/utils/config.js b/source/pic2card/ui/src/utils/config.js deleted file mode 100644 index 441446ad9a..0000000000 --- a/source/pic2card/ui/src/utils/config.js +++ /dev/null @@ -1,1727 +0,0 @@ -export default { - adaptiveHostConfig: { - spacing: { - small: 3, - default: 8, - medium: 20, - large: 30, - extraLarge: 40, - padding: 10 - }, - separator: { - lineThickness: 1, - lineColor: "#EEEEEE" - }, - supportsInteractivity: true, - fontTypes: { - default: { - fontFamily: - "'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif", - fontSizes: { - small: 12, - default: 14, - medium: 17, - large: 21, - extraLarge: 26 - }, - fontWeights: { - lighter: 200, - default: 400, - bolder: 600 - } - }, - monospace: { - fontFamily: "'Courier New', Courier, monospace", - fontSizes: { - small: 12, - default: 14, - medium: 17, - large: 21, - extraLarge: 26 - }, - fontWeights: { - lighter: 200, - default: 400, - bolder: 600 - } - } - }, - containerStyles: { - default: { - backgroundColor: "#FFFFFF", - foregroundColors: { - default: { - default: "#000000", - subtle: "#767676" - }, - accent: { - default: "#0063B1", - subtle: "#0063B1" - }, - attention: { - default: "#FF0000", - subtle: "#DDFF0000" - }, - good: { - default: "#54a254", - subtle: "#DD54a254" - }, - warning: { - default: "#c3ab23", - subtle: "#DDc3ab23" - } - } - }, - emphasis: { - backgroundColor: "#F0F0F0", - foregroundColors: { - default: { - default: "#000000", - subtle: "#767676" - }, - accent: { - default: "#2E89FC", - subtle: "#882E89FC" - }, - attention: { - default: "#FF0000", - subtle: "#DDFF0000" - }, - good: { - default: "#54a254", - subtle: "#DD54a254" - }, - warning: { - default: "#c3ab23", - subtle: "#DDc3ab23" - } - } - }, - accent: { - backgroundColor: "#C7DEF9", - foregroundColors: { - default: { - default: "#333333", - subtle: "#EE333333" - }, - dark: { - default: "#000000", - subtle: "#66000000" - }, - light: { - default: "#FFFFFF", - subtle: "#33000000" - }, - accent: { - default: "#2E89FC", - subtle: "#882E89FC" - }, - attention: { - default: "#cc3300", - subtle: "#DDcc3300" - }, - good: { - default: "#54a254", - subtle: "#DD54a254" - }, - warning: { - default: "#e69500", - subtle: "#DDe69500" - } - } - }, - good: { - backgroundColor: "#CCFFCC", - foregroundColors: { - default: { - default: "#333333", - subtle: "#EE333333" - }, - dark: { - default: "#000000", - subtle: "#66000000" - }, - light: { - default: "#FFFFFF", - subtle: "#33000000" - }, - accent: { - default: "#2E89FC", - subtle: "#882E89FC" - }, - attention: { - default: "#cc3300", - subtle: "#DDcc3300" - }, - good: { - default: "#54a254", - subtle: "#DD54a254" - }, - warning: { - default: "#e69500", - subtle: "#DDe69500" - } - } - }, - attention: { - backgroundColor: "#FFC5B2", - foregroundColors: { - default: { - default: "#333333", - subtle: "#EE333333" - }, - dark: { - default: "#000000", - subtle: "#66000000" - }, - light: { - default: "#FFFFFF", - subtle: "#33000000" - }, - accent: { - default: "#2E89FC", - subtle: "#882E89FC" - }, - attention: { - default: "#cc3300", - subtle: "#DDcc3300" - }, - good: { - default: "#54a254", - subtle: "#DD54a254" - }, - warning: { - default: "#e69500", - subtle: "#DDe69500" - } - } - }, - warning: { - backgroundColor: "#FFE2B2", - foregroundColors: { - default: { - default: "#333333", - subtle: "#EE333333" - }, - dark: { - default: "#000000", - subtle: "#66000000" - }, - light: { - default: "#FFFFFF", - subtle: "#33000000" - }, - accent: { - default: "#2E89FC", - subtle: "#882E89FC" - }, - attention: { - default: "#cc3300", - subtle: "#DDcc3300" - }, - good: { - default: "#54a254", - subtle: "#DD54a254" - }, - warning: { - default: "#e69500", - subtle: "#DDe69500" - } - } - } - }, - imageSizes: { - small: 40, - medium: 80, - large: 160 - }, - actions: { - maxActions: 5, - spacing: "default", - buttonSpacing: 8, - showCard: { - actionMode: "inline", - inlineTopMargin: 8 - }, - actionsOrientation: "horizontal", - actionAlignment: "stretch" - }, - adaptiveCard: { - allowCustomStyle: false - }, - imageSet: { - imageSize: "medium", - maxImageHeight: 100 - }, - factSet: { - title: { - color: "default", - size: "default", - isSubtle: false, - weight: "bolder", - wrap: true, - maxWidth: 150 - }, - value: { - color: "default", - size: "default", - isSubtle: false, - weight: "default", - wrap: true - }, - spacing: 8 - } - }, - webChat: { - spacing: { - small: 3, - default: 8, - medium: 20, - large: 30, - extraLarge: 40, - padding: 10 - }, - separator: { - lineThickness: 1, - lineColor: "#EEEEEE" - }, - supportsInteractivity: true, - fontTypes: { - default: { - fontFamily: "Calibri, sans-serif", - fontSizes: { - small: 12, - default: 14, - medium: 17, - large: 21, - extraLarge: 26 - }, - fontWeights: { - lighter: 200, - default: 400, - bolder: 600 - } - }, - monospace: { - fontFamily: "'Courier New', Courier, monospace", - fontSizes: { - small: 12, - default: 14, - medium: 17, - large: 21, - extraLarge: 26 - }, - fontWeights: { - lighter: 200, - default: 400, - bolder: 600 - } - } - }, - containerStyles: { - default: { - backgroundColor: "#FFFFFF", - foregroundColors: { - default: { - default: "#000000", - subtle: "#767676" - }, - accent: { - default: "#0063B1", - subtle: "#0063B1" - }, - attention: { - default: "#FF0000", - subtle: "#DDFF0000" - }, - good: { - default: "#54a254", - subtle: "#DD54a254" - }, - warning: { - default: "#c3ab23", - subtle: "#DDc3ab23" - } - } - }, - emphasis: { - backgroundColor: "#F0F0F0", - foregroundColors: { - default: { - default: "#000000", - subtle: "#767676" - }, - accent: { - default: "#2E89FC", - subtle: "#882E89FC" - }, - attention: { - default: "#FF0000", - subtle: "#DDFF0000" - }, - good: { - default: "#54a254", - subtle: "#DD54a254" - }, - warning: { - default: "#c3ab23", - subtle: "#DDc3ab23" - } - } - }, - accent: { - backgroundColor: "#C7DEF9", - foregroundColors: { - default: { - default: "#333333", - subtle: "#EE333333" - }, - dark: { - default: "#000000", - subtle: "#66000000" - }, - light: { - default: "#FFFFFF", - subtle: "#33000000" - }, - accent: { - default: "#2E89FC", - subtle: "#882E89FC" - }, - attention: { - default: "#cc3300", - subtle: "#DDcc3300" - }, - good: { - default: "#54a254", - subtle: "#DD54a254" - }, - warning: { - default: "#e69500", - subtle: "#DDe69500" - } - } - }, - good: { - backgroundColor: "#CCFFCC", - foregroundColors: { - default: { - default: "#333333", - subtle: "#EE333333" - }, - dark: { - default: "#000000", - subtle: "#66000000" - }, - light: { - default: "#FFFFFF", - subtle: "#33000000" - }, - accent: { - default: "#2E89FC", - subtle: "#882E89FC" - }, - attention: { - default: "#cc3300", - subtle: "#DDcc3300" - }, - good: { - default: "#54a254", - subtle: "#DD54a254" - }, - warning: { - default: "#e69500", - subtle: "#DDe69500" - } - } - }, - attention: { - backgroundColor: "#FFC5B2", - foregroundColors: { - default: { - default: "#333333", - subtle: "#EE333333" - }, - dark: { - default: "#000000", - subtle: "#66000000" - }, - light: { - default: "#FFFFFF", - subtle: "#33000000" - }, - accent: { - default: "#2E89FC", - subtle: "#882E89FC" - }, - attention: { - default: "#cc3300", - subtle: "#DDcc3300" - }, - good: { - default: "#54a254", - subtle: "#DD54a254" - }, - warning: { - default: "#e69500", - subtle: "#DDe69500" - } - } - }, - warning: { - backgroundColor: "#FFE2B2", - foregroundColors: { - default: { - default: "#333333", - subtle: "#EE333333" - }, - dark: { - default: "#000000", - subtle: "#66000000" - }, - light: { - default: "#FFFFFF", - subtle: "#33000000" - }, - accent: { - default: "#2E89FC", - subtle: "#882E89FC" - }, - attention: { - default: "#cc3300", - subtle: "#DDcc3300" - }, - good: { - default: "#54a254", - subtle: "#DD54a254" - }, - warning: { - default: "#e69500", - subtle: "#DDe69500" - } - } - } - }, - imageSizes: { - small: 40, - medium: 80, - large: 160 - }, - actions: { - maxActions: 100, - spacing: "default", - buttonSpacing: 8, - showCard: { - actionMode: "inline", - inlineTopMargin: 8 - }, - actionsOrientation: "vertical", - actionAlignment: "stretch" - }, - adaptiveCard: { - allowCustomStyle: false - }, - imageSet: { - imageSize: "medium", - maxImageHeight: 100 - }, - factSet: { - title: { - color: "default", - size: "default", - isSubtle: false, - weight: "bolder", - wrap: true, - maxWidth: 150 - }, - value: { - color: "default", - size: "default", - isSubtle: false, - weight: "default", - wrap: true - }, - spacing: 8 - } - }, - microsoftTeamslight: { - choiceSetInputValueSeparator: ",", - supportsInteractivity: true, - spacing: { - small: 8, - default: 12, - medium: 16, - large: 20, - extraLarge: 24, - padding: 16 - }, - separator: { - lineThickness: 1, - lineColor: "#EEEEEE" - }, - imageSizes: { - small: 32, - medium: 52, - large: 100 - }, - fontTypes: { - default: { - fontFamily: "'Segoe UI', Tahoma, Geneva, Verdana, sans-serif", - fontSizes: { - small: 12, - default: 14, - medium: 14, - large: 18, - extraLarge: 24 - }, - fontWeights: { - lighter: 200, - default: 400, - bolder: 600 - } - }, - monospace: { - fontFamily: "'Courier New', Courier, monospace", - fontSizes: { - small: 12, - default: 14, - medium: 14, - large: 18, - extraLarge: 24 - }, - fontWeights: { - lighter: 200, - default: 400, - bolder: 600 - } - } - }, - containerStyles: { - default: { - foregroundColors: { - default: { - default: "#ff252424", - subtle: "#bf252424" - }, - dark: { - default: "#252424", - subtle: "#bf252424" - }, - light: { - default: "#ffffff", - subtle: "#fff3f2f1" - }, - accent: { - default: "#6264a7", - subtle: "#8b8cc7" - }, - good: { - default: "#92c353", - subtle: "#e592c353" - }, - warning: { - default: "#f8d22a", - subtle: "#e5f8d22a" - }, - attention: { - default: "#c4314b", - subtle: "#e5c4314b" - } - }, - backgroundColor: "#ffffff" - }, - emphasis: { - foregroundColors: { - default: { - default: "#ff252424", - subtle: "#bf252424" - }, - dark: { - default: "#252424", - subtle: "#bf252424" - }, - light: { - default: "#ffffff", - subtle: "#fff3f2f1" - }, - accent: { - default: "#6264a7", - subtle: "#8b8cc7" - }, - good: { - default: "#92c353", - subtle: "#e592c353" - }, - warning: { - default: "#f8d22a", - subtle: "#e5f8d22a" - }, - attention: { - default: "#c4314b", - subtle: "#e5c4314b" - } - }, - backgroundColor: "#fff9f8f7" - }, - accent: { - backgroundColor: "#C7DEF9", - foregroundColors: { - default: { - default: "#ff252424", - subtle: "#bf252424" - }, - dark: { - default: "#252424", - subtle: "#bf252424" - }, - light: { - default: "#ffffff", - subtle: "#fff3f2f1" - }, - accent: { - default: "#6264a7", - subtle: "#8b8cc7" - }, - good: { - default: "#92c353", - subtle: "#e592c353" - }, - warning: { - default: "#f8d22a", - subtle: "#e5f8d22a" - }, - attention: { - default: "#c4314b", - subtle: "#e5c4314b" - } - } - }, - good: { - backgroundColor: "#CCFFCC", - foregroundColors: { - default: { - default: "#ff252424", - subtle: "#bf252424" - }, - dark: { - default: "#252424", - subtle: "#bf252424" - }, - light: { - default: "#ffffff", - subtle: "#fff3f2f1" - }, - accent: { - default: "#6264a7", - subtle: "#8b8cc7" - }, - good: { - default: "#92c353", - subtle: "#e592c353" - }, - warning: { - default: "#f8d22a", - subtle: "#e5f8d22a" - }, - attention: { - default: "#c4314b", - subtle: "#e5c4314b" - } - } - }, - attention: { - backgroundColor: "#FFC5B2", - foregroundColors: { - default: { - default: "#ff252424", - subtle: "#bf252424" - }, - dark: { - default: "#252424", - subtle: "#bf252424" - }, - light: { - default: "#ffffff", - subtle: "#fff3f2f1" - }, - accent: { - default: "#6264a7", - subtle: "#8b8cc7" - }, - good: { - default: "#92c353", - subtle: "#e592c353" - }, - warning: { - default: "#f8d22a", - subtle: "#e5f8d22a" - }, - attention: { - default: "#c4314b", - subtle: "#e5c4314b" - } - } - }, - warning: { - backgroundColor: "#FFE2B2", - foregroundColors: { - default: { - default: "#ff252424", - subtle: "#bf252424" - }, - dark: { - default: "#252424", - subtle: "#bf252424" - }, - light: { - default: "#ffffff", - subtle: "#fff3f2f1" - }, - accent: { - default: "#6264a7", - subtle: "#8b8cc7" - }, - good: { - default: "#92c353", - subtle: "#e592c353" - }, - warning: { - default: "#f8d22a", - subtle: "#e5f8d22a" - }, - attention: { - default: "#c4314b", - subtle: "#e5c4314b" - } - } - } - }, - actions: { - maxActions: 6, - spacing: "Default", - buttonSpacing: 8, - showCard: { - actionMode: "Inline", - inlineTopMargin: 16, - style: "emphasis" - }, - preExpandSingleShowCardAction: false, - actionsOrientation: "Horizontal", - actionAlignment: "Left" - }, - adaptiveCard: { - allowCustomStyle: false - }, - imageSet: { - imageSize: "Medium", - maxImageHeight: 100 - }, - factSet: { - title: { - size: "Default", - color: "Default", - isSubtle: false, - weight: "Bolder", - warp: true - }, - value: { - size: "Default", - color: "Default", - isSubtle: false, - weight: "Default", - warp: true - }, - spacing: 16 - } - }, - microsoftTeamsDark: { - choiceSetInputValueSeparator: ",", - supportsInteractivity: true, - spacing: { - small: 8, - default: 12, - medium: 16, - large: 20, - extraLarge: 24, - padding: 16 - }, - separator: { - lineThickness: 1, - lineColor: "#EEEEEE" - }, - fontTypes: { - default: { - fontFamily: "'Segoe UI', Tahoma, Geneva, Verdana, sans-serif", - fontSizes: { - small: 12, - default: 14, - medium: 14, - large: 18, - extraLarge: 24 - }, - fontWeights: { - lighter: 200, - default: 400, - bolder: 600 - } - }, - monospace: { - fontFamily: "'Courier New', Courier, monospace", - fontSizes: { - small: 12, - default: 14, - medium: 14, - large: 18, - extraLarge: 24 - }, - fontWeights: { - lighter: 200, - default: 400, - bolder: 600 - } - } - }, - imageSizes: { - small: 32, - medium: 52, - large: 100 - }, - containerStyles: { - default: { - foregroundColors: { - default: { - default: "#ffffffff", - subtle: "#bfffffff" - }, - dark: { - default: "#ff201f1f", - subtle: "#ff2d2c2c" - }, - light: { - default: "#ffffffff", - subtle: "#bfffffff" - }, - accent: { - default: "#ffa6a7dc", - subtle: "#ff8b8cc7" - }, - good: { - default: "#ff92c353", - subtle: "#e592c353" - }, - warning: { - default: "#fff8d22a", - subtle: "#e5f8d22a" - }, - attention: { - default: "#ffd74654", - subtle: "#e5d74654" - } - }, - backgroundColor: "#ff2d2c2c" - }, - emphasis: { - foregroundColors: { - default: { - default: "#ffffffff", - subtle: "#bfffffff" - }, - dark: { - default: "#ff201f1f", - subtle: "#ff2d2c2c" - }, - light: { - default: "#ffffffff", - subtle: "#bfffffff" - }, - accent: { - default: "#ffa6a7dc", - subtle: "#ff8b8cc7" - }, - good: { - default: "#ff92c353", - subtle: "#e592c353" - }, - warning: { - default: "#fff8d22a", - subtle: "#e5f8d22a" - }, - attention: { - default: "#ffd74654", - subtle: "#e5d74654" - } - }, - backgroundColor: "#ff292828" - }, - accent: { - backgroundColor: "#C7DEF9", - foregroundColors: { - default: { - default: "#ff201f1f", - subtle: "#ff2d2c2c" - }, - dark: { - default: "#ff201f1f", - subtle: "#ff2d2c2c" - }, - light: { - default: "#ffffffff", - subtle: "#bfffffff" - }, - accent: { - default: "#ffa6a7dc", - subtle: "#ff8b8cc7" - }, - good: { - default: "#ff92c353", - subtle: "#e592c353" - }, - warning: { - default: "#fff8d22a", - subtle: "#e5f8d22a" - }, - attention: { - default: "#ffd74654", - subtle: "#e5d74654" - } - } - }, - good: { - backgroundColor: "#CCFFCC", - foregroundColors: { - default: { - default: "#ff201f1f", - subtle: "#ff2d2c2c" - }, - dark: { - default: "#ff201f1f", - subtle: "#ff2d2c2c" - }, - light: { - default: "#ffffffff", - subtle: "#bfffffff" - }, - accent: { - default: "#ffa6a7dc", - subtle: "#ff8b8cc7" - }, - good: { - default: "#ff92c353", - subtle: "#e592c353" - }, - warning: { - default: "#fff8d22a", - subtle: "#e5f8d22a" - }, - attention: { - default: "#ffd74654", - subtle: "#e5d74654" - } - } - }, - attention: { - backgroundColor: "#FFC5B2", - foregroundColors: { - default: { - default: "#ff201f1f", - subtle: "#ff2d2c2c" - }, - dark: { - default: "#ff201f1f", - subtle: "#ff2d2c2c" - }, - light: { - default: "#ffffffff", - subtle: "#bfffffff" - }, - accent: { - default: "#ffa6a7dc", - subtle: "#ff8b8cc7" - }, - good: { - default: "#ff92c353", - subtle: "#e592c353" - }, - warning: { - default: "#fff8d22a", - subtle: "#e5f8d22a" - }, - attention: { - default: "#ffd74654", - subtle: "#e5d74654" - } - } - }, - warning: { - backgroundColor: "#FFE2B2", - foregroundColors: { - default: { - default: "#ff201f1f", - subtle: "#ff2d2c2c" - }, - dark: { - default: "#ff201f1f", - subtle: "#ff2d2c2c" - }, - light: { - default: "#ffffffff", - subtle: "#bfffffff" - }, - accent: { - default: "#ffa6a7dc", - subtle: "#ff8b8cc7" - }, - good: { - default: "#ff92c353", - subtle: "#e592c353" - }, - warning: { - default: "#fff8d22a", - subtle: "#e5f8d22a" - }, - attention: { - default: "#ffd74654", - subtle: "#e5d74654" - } - } - } - }, - actions: { - maxActions: 6, - spacing: "Default", - buttonSpacing: 8, - showCard: { - actionMode: "Inline", - inlineTopMargin: 16, - style: "emphasis" - }, - preExpandSingleShowCardAction: false, - actionsOrientation: "Horizontal", - actionAlignment: "Left" - }, - adaptiveCard: { - allowCustomStyle: false - }, - imageSet: { - imageSize: "Medium", - maxImageHeight: 100 - }, - factSet: { - title: { - size: "Default", - color: "Default", - isSubtle: false, - weight: "Bolder", - warp: true - }, - value: { - size: "Default", - color: "Default", - isSubtle: false, - weight: "Default", - warp: true - }, - spacing: 16 - } - }, - cortanaSkillsDark: { - spacing: { - small: 4, - default: 8, - medium: 12, - padding: 16, - large: 20, - extraLarge: 32 - }, - separator: { - lineThickness: 1, - lineColor: "#505050" - }, - imageSizes: { - small: 32, - medium: 48, - large: 96 - }, - fontTypes: { - default: { - fontFamily: "Segoe UI, Tahoma, Geneva, Verdana, sans-serif", - fontSizes: { - small: 12, - default: 14, - medium: 16, - large: 18, - extraLarge: 24 - }, - fontWeights: { - lighter: 200, - default: 400, - bolder: 600 - } - }, - monospace: { - fontFamily: "Courier New, Courier, monospace", - fontSizes: { - small: 12, - default: 14, - medium: 16, - large: 18, - extraLarge: 24 - }, - fontWeights: { - lighter: 200, - default: 400, - bolder: 600 - } - } - }, - fontSizes: { - small: 12, - default: 14, - medium: 16, - large: 18, - extraLarge: 24 - }, - fontWeights: { - lighter: 200, - default: 400, - bolder: 600 - }, - containerStyles: { - default: { - backgroundColor: "#222222", - foregroundColors: { - default: { - default: "#FFFFFF", - subtle: "#D2D2D2" - }, - dark: { - default: "#000000", - subtle: "#737373" - }, - light: { - default: "#FFFFFF", - subtle: "#D2D2D2" - }, - accent: { - default: "#82C7FF", - subtle: "#3AA0F3" - }, - good: { - default: "#92C353", - subtle: "#498205" - }, - warning: { - default: "#F8D22A", - subtle: "#C19C00" - }, - attention: { - default: "#D74553", - subtle: "#D13438" - } - } - }, - emphasis: { - backgroundColor: "#2F2F2F", - foregroundColors: { - default: { - default: "#FFFFFF", - subtle: "#D2D2D2" - }, - dark: { - default: "#000000", - subtle: "#737373" - }, - light: { - default: "#FFFFFF", - subtle: "#D2D2D2" - }, - accent: { - default: "#82C7FF", - subtle: "#3AA0F3" - }, - good: { - default: "#92C353", - subtle: "#498205" - }, - warning: { - default: "#F8D22A", - subtle: "#C19C00" - }, - attention: { - default: "#D74553", - subtle: "#D13438" - } - } - }, - accent: { - backgroundColor: "#1B3345", - foregroundColors: { - default: { - default: "#FFFFFF", - subtle: "#D2D2D2" - }, - dark: { - default: "#000000", - subtle: "#737373" - }, - light: { - default: "#FFFFFF", - subtle: "#D2D2D2" - }, - accent: { - default: "#82C7FF", - subtle: "#3AA0F3" - }, - good: { - default: "#92C353", - subtle: "#498205" - }, - warning: { - default: "#F8D22A", - subtle: "#C19C00" - }, - attention: { - default: "#D74553", - subtle: "#D13438" - } - } - }, - good: { - backgroundColor: "#92C353", - foregroundColors: { - default: { - default: "#000000", - subtle: "#415725" - }, - dark: { - default: "#000000", - subtle: "#415725" - }, - light: { - default: "#FFFFFF", - subtle: "#EBF4E0" - }, - accent: { - default: "#82C7FF", - subtle: "#3AA0F3" - }, - good: { - default: "#92C353", - subtle: "#498205" - }, - warning: { - default: "#F8D22A", - subtle: "#C19C00" - }, - attention: { - default: "#D74553", - subtle: "#D13438" - } - } - }, - attention: { - backgroundColor: "#D74553", - foregroundColors: { - default: { - default: "#000000", - subtle: "#601F25" - }, - dark: { - default: "#000000", - subtle: "#601F25" - }, - light: { - default: "#FFFFFF", - subtle: "#F7DEE0" - }, - accent: { - default: "#82C7FF", - subtle: "#3AA0F3" - }, - good: { - default: "#92C353", - subtle: "#498205" - }, - warning: { - default: "#F8D22A", - subtle: "#C19C00" - }, - attention: { - default: "#D74553", - subtle: "#D13438" - } - } - }, - warning: { - backgroundColor: "#F8D22A", - foregroundColors: { - default: { - default: "#000000", - subtle: "#6F5E12" - }, - dark: { - default: "#000000", - subtle: "#6F5E12" - }, - light: { - default: "#FFFFFF", - subtle: "#FDF7D9" - }, - accent: { - default: "#82C7FF", - subtle: "#3AA0F3" - }, - good: { - default: "#92C353", - subtle: "#498205" - }, - warning: { - default: "#F8D22A", - subtle: "#C19C00" - }, - attention: { - default: "#D74553", - subtle: "#D13438" - } - } - } - }, - actions: { - maxActions: 5, - spacing: "Default", - buttonSpacing: 12, - showCard: { - actionMode: "Inline", - inlineTopMargin: 16, - style: "Emphasis" - }, - preExpandSingleShowCardAction: false, - actionsOrientation: "Horizontal", - actionAlignment: "Stretch", - iconSize: 20, - iconPlacement: "leftOfTitle" - }, - imageSet: { - imageSize: "Medium", - maxImageHeight: 100 - }, - factSet: { - title: { - size: "Default", - color: "Default", - isSubtle: false, - weight: "Bolder", - warp: true, - maxWidth: 150 - }, - value: { - size: "Default", - color: "Default", - isSubtle: false, - weight: "Default", - wrap: true - }, - spacing: 12 - } - }, - cortanaSkillsLight: { - spacing: { - small: 4, - default: 8, - medium: 12, - padding: 16, - large: 20, - extraLarge: 32 - }, - separator: { - lineThickness: 1, - lineColor: "#E6E6E6" - }, - imageSizes: { - small: 32, - medium: 48, - large: 96 - }, - fontTypes: { - default: { - fontFamily: "Segoe UI, Tahoma, Geneva, Verdana, sans-serif", - fontSizes: { - small: 12, - default: 14, - medium: 16, - large: 18, - extraLarge: 24 - }, - fontWeights: { - lighter: 200, - default: 400, - bolder: 600 - } - }, - monospace: { - fontFamily: "Courier New, Courier, monospace", - fontSizes: { - small: 12, - default: 14, - medium: 16, - large: 18, - extraLarge: 24 - }, - fontWeights: { - lighter: 200, - default: 400, - bolder: 600 - } - } - }, - fontSizes: { - small: 12, - default: 14, - medium: 16, - large: 18, - extraLarge: 24 - }, - fontWeights: { - lighter: 200, - default: 400, - bolder: 600 - }, - containerStyles: { - default: { - backgroundColor: "#ffffff", - foregroundColors: { - default: { - default: "#000000", - subtle: "#737373" - }, - dark: { - default: "#000000", - subtle: "#737373" - }, - light: { - default: "#FFFFFF", - subtle: "#D2D2D2" - }, - accent: { - default: "#0078D4", - subtle: "#004D8C" - }, - good: { - default: "#107C10", - subtle: "#0B6A0B" - }, - warning: { - default: "#CA5010", - subtle: "#8E562E" - }, - attention: { - default: "#C50F1F", - subtle: "#A80000" - } - } - }, - emphasis: { - backgroundColor: "#F2F2F2", - foregroundColors: { - default: { - default: "#000000", - subtle: "#737373" - }, - dark: { - default: "#000000", - subtle: "#737373" - }, - light: { - default: "#FFFFFF", - subtle: "#D2D2D2" - }, - accent: { - default: "#0078D4", - subtle: "#004D8C" - }, - good: { - default: "#107C10", - subtle: "#0B6A0B" - }, - warning: { - default: "#CA5010", - subtle: "#8E562E" - }, - attention: { - default: "#C50F1F", - subtle: "#A80000" - } - } - }, - accent: { - backgroundColor: "#E5F1FA", - foregroundColors: { - default: { - default: "#000000", - subtle: "#737373" - }, - dark: { - default: "#000000", - subtle: "#737373" - }, - light: { - default: "#FFFFFF", - subtle: "#D2D2D2" - }, - accent: { - default: "#0078D4", - subtle: "#004D8C" - }, - good: { - default: "#107C10", - subtle: "#0B6A0B" - }, - warning: { - default: "#CA5010", - subtle: "#8E562E" - }, - attention: { - default: "#C50F1F", - subtle: "#A80000" - } - } - }, - good: { - backgroundColor: "#107C10", - foregroundColors: { - default: { - default: "#FFFFFF", - subtle: "#D4E7D4" - }, - dark: { - default: "#000000", - subtle: "#073707" - }, - light: { - default: "#FFFFFF", - subtle: "#D4E7D4" - }, - accent: { - default: "#0078D4", - subtle: "#004D8C" - }, - good: { - default: "#107C10", - subtle: "#0B6A0B" - }, - warning: { - default: "#CA5010", - subtle: "#8E562E" - }, - attention: { - default: "#C50F1F", - subtle: "#A80000" - } - } - }, - attention: { - backgroundColor: "#C50F1F", - foregroundColors: { - default: { - default: "#FFFFFF", - subtle: "#F4D4D7" - }, - dark: { - default: "#000000", - subtle: "#58060D" - }, - light: { - default: "#FFFFFF", - subtle: "#F4D4D7" - }, - accent: { - default: "#0078D4", - subtle: "#004D8C" - }, - good: { - default: "#107C10", - subtle: "#0B6A0B" - }, - warning: { - default: "#CA5010", - subtle: "#8E562E" - }, - attention: { - default: "#C50F1F", - subtle: "#A80000" - } - } - }, - warning: { - backgroundColor: "#FCE100", - foregroundColors: { - default: { - default: "#000000", - subtle: "#716500" - }, - dark: { - default: "#000000", - subtle: "#716500" - }, - light: { - default: "#FFFFFF", - subtle: "#FEF9D2" - }, - accent: { - default: "#0078D4", - subtle: "#004D8C" - }, - good: { - default: "#107C10", - subtle: "#0B6A0B" - }, - warning: { - default: "#CA5010", - subtle: "#8E562E" - }, - attention: { - default: "#C50F1F", - subtle: "#A80000" - } - } - } - }, - actions: { - maxActions: 5, - spacing: "Default", - buttonSpacing: 12, - showCard: { - actionMode: "Inline", - inlineTopMargin: 16, - style: "Emphasis" - }, - preExpandSingleShowCardAction: false, - actionsOrientation: "Horizontal", - actionAlignment: "Stretch", - iconSize: 20, - iconPlacement: "leftOfTitle" - }, - imageSet: { - imageSize: "Medium", - maxImageHeight: 100 - }, - factSet: { - title: { - size: "Default", - color: "Default", - isSubtle: false, - weight: "Bolder", - wrap: true, - maxWidth: 150 - }, - value: { - size: "Default", - color: "Default", - isSubtle: false, - weight: "Default", - wrap: true - }, - spacing: 12 - } - } -}; diff --git a/source/pic2card/ui/src/views/dashboard/Dashboard.vue b/source/pic2card/ui/src/views/dashboard/Dashboard.vue deleted file mode 100644 index 112045f4b7..0000000000 --- a/source/pic2card/ui/src/views/dashboard/Dashboard.vue +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/source/pic2card/ui/src/views/footer/Footer.vue b/source/pic2card/ui/src/views/footer/Footer.vue deleted file mode 100644 index 29120559c9..0000000000 --- a/source/pic2card/ui/src/views/footer/Footer.vue +++ /dev/null @@ -1,20 +0,0 @@ - - - - - diff --git a/source/pic2card/ui/src/views/header/Header.vue b/source/pic2card/ui/src/views/header/Header.vue deleted file mode 100644 index 0b01c97113..0000000000 --- a/source/pic2card/ui/src/views/header/Header.vue +++ /dev/null @@ -1,52 +0,0 @@ - - - - - diff --git a/source/pic2card/ui/src/views/landing-page/LandingPage.vue b/source/pic2card/ui/src/views/landing-page/LandingPage.vue deleted file mode 100644 index b8823efc21..0000000000 --- a/source/pic2card/ui/src/views/landing-page/LandingPage.vue +++ /dev/null @@ -1,123 +0,0 @@ - - - - diff --git a/source/pic2card/ui/src/views/pic2card/CardDetailView.vue b/source/pic2card/ui/src/views/pic2card/CardDetailView.vue deleted file mode 100644 index c3a166b2f3..0000000000 --- a/source/pic2card/ui/src/views/pic2card/CardDetailView.vue +++ /dev/null @@ -1,281 +0,0 @@ - - - - diff --git a/source/pic2card/ui/src/views/pic2card/Pic2Card.vue b/source/pic2card/ui/src/views/pic2card/Pic2Card.vue deleted file mode 100644 index f9e4f29a2f..0000000000 --- a/source/pic2card/ui/src/views/pic2card/Pic2Card.vue +++ /dev/null @@ -1,164 +0,0 @@ - - - diff --git a/source/pic2card/ui/src/views/render-all-image/RenderImage.vue b/source/pic2card/ui/src/views/render-all-image/RenderImage.vue deleted file mode 100644 index 955fe56821..0000000000 --- a/source/pic2card/ui/src/views/render-all-image/RenderImage.vue +++ /dev/null @@ -1,121 +0,0 @@ - - - diff --git a/source/pic2card/ui/src/views/render-all-image/RenderImageItem.vue b/source/pic2card/ui/src/views/render-all-image/RenderImageItem.vue deleted file mode 100644 index 9c4e9c045d..0000000000 --- a/source/pic2card/ui/src/views/render-all-image/RenderImageItem.vue +++ /dev/null @@ -1,248 +0,0 @@ - - - -