From 7b011d4afe9ceecd4fea2c85e7f6a778064dad6d Mon Sep 17 00:00:00 2001 From: Roland Rabien Date: Fri, 22 Sep 2023 15:04:42 -0700 Subject: [PATCH 01/37] Fixes tree items not coming back when search is cleared --- .../components/component_tree_view_item.h | 24 +++++++++---------- melatonin/inspector_component.h | 17 ++++++++++++- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/melatonin/components/component_tree_view_item.h b/melatonin/components/component_tree_view_item.h index dc6c99d..753834b 100644 --- a/melatonin/components/component_tree_view_item.h +++ b/melatonin/components/component_tree_view_item.h @@ -262,6 +262,18 @@ namespace melatonin validateSubItems(); } + void validateSubItems() + { + // Ideally we'd just re-render the sub-items branch: + // auto subItemToValidate = dynamic_cast (getSubItem (i)); + + // However, that wasn't working so the scorched earth strategy is + // if any child has a deleted component, we re-render the whole branch + // (we don't explicitly know if things were added or removed) + clearSubItems(); + addItemsForChildComponents(); + } + juce::String getComponentName() { juce::String res = ""; @@ -312,18 +324,6 @@ namespace melatonin } } - void validateSubItems() - { - // Ideally we'd just re-render the sub-items branch: - // auto subItemToValidate = dynamic_cast (getSubItem (i)); - - // However, that wasn't working so the scorched earth strategy is - // if any child has a deleted component, we re-render the whole branch - // (we don't explicitly know if things were added or removed) - clearSubItems(); - addItemsForChildComponents(); - } - void selectTabbedComponentChildIfNeeded() { if (!getParentItem()) diff --git a/melatonin/inspector_component.h b/melatonin/inspector_component.h index 2783d5b..33c8b86 100644 --- a/melatonin/inspector_component.h +++ b/melatonin/inspector_component.h @@ -82,13 +82,26 @@ namespace melatonin searchBox.setColour (juce::TextEditor::focusedOutlineColourId, juce::Colours::transparentBlack); searchBox.setTextToShowWhenEmpty ("Filter components...", colors::searchText); searchBox.setJustification (juce::Justification::centredLeft); - searchBox.onEscapeKey = [&] { searchBox.setText (""); searchBox.giveAwayKeyboardFocus(); }; + searchBox.onEscapeKey = [&] + { + searchBox.setText (""); + searchBox.giveAwayKeyboardFocus(); + lastSearchText = {}; + getRoot()->validateSubItems(); + }; logo.onClick = []() { juce::URL ("https://github.com/sudara/melatonin_inspector/").launchInDefaultBrowser(); }; searchBox.onTextChange = [this] { auto searchText = searchBox.getText(); ensureTreeIsConstructed(); + if ( lastSearchText.isNotEmpty() && ! searchText.startsWith ( lastSearchText ) ) + { + getRoot()->validateSubItems(); + } + + lastSearchText = searchText; + // try to find the first item that matches the search string if (searchText.isNotEmpty()) { @@ -371,6 +384,8 @@ namespace melatonin InspectorImageButton enabledButton { "enabled", { 8, 6 }, true }; InspectorImageButton fpsToggle { "speedometer", { 2, 7 }, true }; + juce::String lastSearchText; + std::unique_ptr rootItem; ComponentTreeViewItem* getRoot() From 17bd3dabe7c4a86cf9ef48b7633c0c923dbaf43b Mon Sep 17 00:00:00 2001 From: Tobias Hienzsch Date: Mon, 25 Sep 2023 12:54:10 +0200 Subject: [PATCH 02/37] Fix gcc Wimplicit-int-float-conversion. --- melatonin/components/overlay.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/melatonin/components/overlay.h b/melatonin/components/overlay.h index c8e659f..cc90e76 100644 --- a/melatonin/components/overlay.h +++ b/melatonin/components/overlay.h @@ -373,7 +373,7 @@ namespace melatonin if (selectedComponent && hoveredComponent) { int labelHeight = 15; - auto paddingToLabel = 4; + auto paddingToLabel = 4.0f; // top if (lineToTopHoveredComponent.getLength() > 0) From 96e8c5627da5f24e80018276aa2edb5bf7b6011a Mon Sep 17 00:00:00 2001 From: Sudara Date: Tue, 7 Nov 2023 14:46:52 +0100 Subject: [PATCH 03/37] Fix README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dff6a9a..2a9f72a 100644 --- a/README.md +++ b/README.md @@ -194,7 +194,7 @@ If you're rolling old school, or just prefer Projucer life, you'll be happy to n You can still use git to add it as a submodule if you'd like stay up to date with any changes: ``` -git submodule add -b main https://github.com/sudara/melatonin_perfetto.git modules/melatonin_perfetto +git submodule add -b main https://github.com/sudara/melatonin_inspector.git modules/melatonin_inspector ``` Or just download it and stick it somewhere. From 301d4f6c53b94085255282209b1135ae4c68ce76 Mon Sep 17 00:00:00 2001 From: Simon Conan Date: Tue, 7 Nov 2023 16:22:55 +0100 Subject: [PATCH 04/37] Fix crash when closing colour component (callback refers to dangling parent pointer). --- melatonin/components/colour_property_component.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/melatonin/components/colour_property_component.h b/melatonin/components/colour_property_component.h index 7415c2b..8477956 100644 --- a/melatonin/components/colour_property_component.h +++ b/melatonin/components/colour_property_component.h @@ -112,9 +112,12 @@ namespace melatonin colourSelector->setLookAndFeel (&getLookAndFeel()); colourSelector->setSize (300, 300); colourSelector->setCurrentColour (juce::Colour ((uint32_t) int (value.getValue())), juce::dontSendNotification); - colourSelector->onDismiss = [this, cs = colourSelector.get()]() { - value = (int) cs->getCurrentColour().getARGB(); - repaint(); + colourSelector->onDismiss = [this, parentRef = juce::WeakReference (this), cs = colourSelector.get()]() { + if (! parentRef.wasObjectDeleted()) + { + value = (int) cs->getCurrentColour().getARGB(); + repaint(); + } }; colourSelector->onChange = [this, cs = colourSelector.get()]() { value = (int) cs->getCurrentColour().getARGB(); From f4f5263c7c9f195bcb0eeb0cd3b2ad549c8d1ce8 Mon Sep 17 00:00:00 2001 From: Sudara Date: Tue, 26 Dec 2023 21:38:13 +0100 Subject: [PATCH 05/37] Add sccache, increase timeout to 2 min --- .github/workflows/ci.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4d3ec46..df25d0b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,8 +28,8 @@ jobs: strategy: fail-fast: false matrix: - app: [member_enabled, member_disabled, unique_ptr_enabled, unique_ptr_disabled] - os: [macos-latest, windows-latest] + app: [ member_enabled, member_disabled, unique_ptr_enabled, unique_ptr_disabled ] + os: [ macos-latest, windows-latest ] steps: - name: Checkout @@ -37,6 +37,9 @@ jobs: with: fetch-depth: 1 + - name: Run sccache-cache + uses: mozilla-actions/sccache-action@v0.0.3 + - name: Configure run: cmake -B Builds -DTARGET_NAME:STRING=${{ matrix.app }} @@ -46,7 +49,7 @@ jobs: - name: Run if: ${{ matrix.os == 'macos-latest' }} working-directory: Builds/${{ matrix.app }}_artefacts - timeout-minutes: 1 + timeout-minutes: 2 run: | ls -ahl ${{ matrix.app }}.app/Contents/MacOS/${{ matrix.app }} & @@ -54,7 +57,7 @@ jobs: - name: Run if: ${{ matrix.os == 'windows-latest' }} working-directory: Builds/${{ matrix.app }}_artefacts - timeout-minutes: 1 + timeout-minutes: 2 run: | ls -ahl ./Debug/${{ matrix.app }}.exe & From fec04dff9928726a61744af0d9229e8bfef881e4 Mon Sep 17 00:00:00 2001 From: Sudara Date: Tue, 26 Dec 2023 22:10:26 +0100 Subject: [PATCH 06/37] Only screenshot windows for now --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index df25d0b..7c6d46c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -63,5 +63,6 @@ jobs: ./Debug/${{ matrix.app }}.exe & - uses: OrbitalOwen/desktop-screenshot-action@0.1 + if: ${{ matrix.os == 'windows-latest' }} with: file-name: ${{ matrix.os }}-${{matrix.app}}.jpg From f678c38185a1b4e6be654aa00e841f93a5d27938 Mon Sep 17 00:00:00 2001 From: Roland Rabien Date: Wed, 27 Dec 2023 19:05:29 -0800 Subject: [PATCH 07/37] Allow root component to be changed, optionally following the mouse. --- melatonin/components/fps_meter.h | 19 ++++- melatonin/helpers/overlay_mouse_listener.h | 34 +++++--- melatonin/inspector_component.h | 25 +++++- melatonin_inspector.h | 98 ++++++++++++++++++---- 4 files changed, 138 insertions(+), 38 deletions(-) diff --git a/melatonin/components/fps_meter.h b/melatonin/components/fps_meter.h index 113193b..f54eec9 100644 --- a/melatonin/components/fps_meter.h +++ b/melatonin/components/fps_meter.h @@ -14,10 +14,8 @@ namespace melatonin class FPSMeter : public juce::Component, private juce::Timer { public: - explicit FPSMeter (juce::Component& o) : overlay (o) + FPSMeter () { - overlay.addChildComponent (this); - // don't repaint the parent // unfortunately, on macOS, this no longer works // See FAQ in README for more info @@ -26,6 +24,19 @@ namespace melatonin setInterceptsMouseClicks (false, false); } + void setRoot (juce::Component& o) + { + overlay = &o; + + overlay->addChildComponent (this); + } + + void clearRoot() + { + if (overlay) + overlay->removeChildComponent (this); + } + void timerCallback() override { TRACE_EVENT ("component", "fps timer callback"); @@ -108,7 +119,7 @@ namespace melatonin } private: - juce::Component& overlay; + juce::Component* overlay = nullptr; juce::Rectangle bounds; juce::Font font = juce::Font (juce::Font::getDefaultMonospacedFontName(), 16.0f, juce::Font::plain); double lastTime = juce::Time::getMillisecondCounterHiRes(); diff --git a/melatonin/helpers/overlay_mouse_listener.h b/melatonin/helpers/overlay_mouse_listener.h index 1f28161..fc2815b 100644 --- a/melatonin/helpers/overlay_mouse_listener.h +++ b/melatonin/helpers/overlay_mouse_listener.h @@ -8,32 +8,42 @@ namespace melatonin class OverlayMouseListener : public juce::MouseListener { public: - explicit OverlayMouseListener (juce::Component& c, bool startEnabled = true) : root (c) + OverlayMouseListener() { - // Listen to all mouse movements for all children of the root - if (startEnabled) - { - enabled = true; - root.addMouseListener (this, true); - } } ~OverlayMouseListener() override { + if (enabled && root) + root->removeMouseListener (this); + } + + void setRoot (juce::Component& c) + { + root = &c; + if (enabled) - root.removeMouseListener (this); + root->addMouseListener (this, true); + } + + void clearRoot() + { + if (enabled && root) + root->removeMouseListener (this); + + root = nullptr; } void enable() { enabled = true; - root.addMouseListener (this, true); + root->addMouseListener (this, true); } void disable() { enabled = false; - root.removeMouseListener (this); + root->removeMouseListener (this); } void mouseEnter (const juce::MouseEvent& event) override @@ -78,7 +88,7 @@ namespace melatonin void mouseExit (const juce::MouseEvent& event) override { - if (event.originalComponent == &root) + if (event.originalComponent == root) { mouseExitCallback(); } @@ -94,7 +104,7 @@ namespace melatonin private: JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (OverlayMouseListener) - juce::Component& root; + juce::Component* root = nullptr; bool enabled = false; bool isDragging { false }; }; diff --git a/melatonin/inspector_component.h b/melatonin/inspector_component.h index 33c8b86..9d1b205 100644 --- a/melatonin/inspector_component.h +++ b/melatonin/inspector_component.h @@ -19,7 +19,7 @@ namespace melatonin class InspectorComponent : public juce::Component { public: - explicit InspectorComponent (juce::Component& rootComponent, bool enabledAtStart = true) : root (rootComponent), inspectorEnabled (enabledAtStart) + explicit InspectorComponent() { TRACE_COMPONENT(); @@ -48,7 +48,6 @@ namespace melatonin addAndMakeVisible (searchIcon); addChildComponent (clearButton); - colorPicker.setRootComponent (&root); colorPicker.togglePickerCallback = [this] (bool value) { if (toggleOverlayCallback) { @@ -153,6 +152,24 @@ namespace melatonin tree.setRootItem (nullptr); } + void setRoot (juce::Component& r) + { + root = &r; + colorPicker.setRootComponent (root); + + tree.setRootItem (nullptr); + rootItem = nullptr; + + if (inspectorEnabled) + ensureTreeIsConstructed(); + } + + void clearRoot() + { + root = nullptr; + colorPicker.setRootComponent (nullptr); + } + void paint (juce::Graphics& g) override { auto mainPanelGradient = juce::ColourGradient::horizontal (colors::panelBackgroundDarker, (float) mainColumnBounds.getX(), colors::panelBackgroundLighter, (float) mainColumnBounds.getWidth()); @@ -185,7 +202,7 @@ namespace melatonin tree.setRootItem (nullptr); // construct the root item - rootItem = std::make_unique (&root, outlineComponentCallback, selectComponentCallback); + rootItem = std::make_unique (root, outlineComponentCallback, selectComponentCallback); tree.setRootItem (rootItem.get()); getRoot()->setOpenness (ComponentTreeViewItem::Openness::opennessOpen); @@ -354,7 +371,7 @@ namespace melatonin private: Component::SafePointer selectedComponent; - Component& root; + Component* root; juce::SharedResourcePointer settings; ComponentModel model; bool inspectorEnabled; diff --git a/melatonin_inspector.h b/melatonin_inspector.h index 7d2a2cf..1b46b19 100644 --- a/melatonin_inspector.h +++ b/melatonin_inspector.h @@ -30,7 +30,7 @@ END_JUCE_MODULE_DECLARATION namespace melatonin { - class Inspector : public juce::ComponentListener, public juce::DocumentWindow + class Inspector : public juce::ComponentListener, public juce::DocumentWindow, private juce::Timer { public: class InspectorKeyCommands : public juce::KeyListener @@ -65,21 +65,13 @@ namespace melatonin } }; explicit Inspector (juce::Component& rootComponent, bool inspectorEnabledAtStart = true) - : juce::DocumentWindow ("Melatonin Inspector", colors::background, 7, true), - inspectorComponent (rootComponent), - root (rootComponent) + : juce::DocumentWindow ("Melatonin Inspector", colors::background, 7, true) { TRACE_COMPONENT(); - root.addChildComponent (overlay); - overlay.setBounds (root.getLocalBounds()); - root.addComponentListener (this); - - // allow us to open/close the inspector by key command - // bit sketchy because we're modifying the source app to accept key focus - root.addKeyListener (&keyListener); - root.setWantsKeyboardFocus (true); this->addKeyListener (&keyListener); + setRoot (rootComponent); + // needs to come before the LNF restoreBoundsIfNeeded(); @@ -98,15 +90,48 @@ namespace melatonin ~Inspector() override { - root.removeKeyListener (&keyListener); + clearRoot(); + this->removeKeyListener (&keyListener); - root.removeComponentListener (this); // needed, otherwise removing look and feel will save bounds settings->props.reset(); setLookAndFeel (nullptr); } + void setRoot (juce::Component& rootComponent) + { + clearRoot(); + + root = &rootComponent; + + root->addChildComponent (overlay); + overlay.setBounds (root->getLocalBounds()); + root->addComponentListener (this); + + // allow us to open/close the inspector by key command + // bit sketchy because we're modifying the source app to accept key focus + root->addKeyListener (&keyListener); + root->setWantsKeyboardFocus (true); + + fpsMeter.setRoot (*root); + overlayMouseListener.setRoot (*root); + inspectorComponent.setRoot (*root); + } + + void clearRoot() + { + if (root == nullptr) + return; + + root->removeKeyListener (&keyListener); + root->removeComponentListener (this); + + fpsMeter.clearRoot(); + overlayMouseListener.clearRoot(); + inspectorComponent.clearRoot(); + } + void moved() override { TRACE_COMPONENT(); @@ -288,18 +313,29 @@ namespace melatonin toggle (!inspectorEnabled); } + void setRootFollowsComponentUnderMouse (bool follow) + { + rootFollowsComponentUnderMouse = follow; + + if (rootFollowsComponentUnderMouse) + startTimerHz (25); + else + stopTimer(); + } + std::function onClose; private: juce::SharedResourcePointer settings; melatonin::InspectorLookAndFeel inspectorLookAndFeel; melatonin::InspectorComponent inspectorComponent; - juce::Component& root; + juce::Component::SafePointer root; bool inspectorEnabled = false; melatonin::Overlay overlay; - melatonin::FPSMeter fpsMeter { root }; - melatonin::OverlayMouseListener overlayMouseListener { root, false }; + melatonin::FPSMeter fpsMeter; + melatonin::OverlayMouseListener overlayMouseListener; InspectorKeyCommands keyListener { *this }; + bool rootFollowsComponentUnderMouse = false; // Resize our overlay when the root component changes void componentMovedOrResized (Component& rootComponent, bool wasMoved, bool wasResized) override @@ -310,6 +346,32 @@ namespace melatonin } } + void componentBeingDeleted (juce::Component& component) override + { + if (&component == root) + { + clearRoot(); + + auto& d = juce::Desktop::getInstance(); + for (int i = 0; i < d.getNumComponents(); i++) + { + if (auto c = d.getComponent (i); c != nullptr && c != this) + { + setRoot (*c); + return; + } + } + } + } + + void timerCallback() override + { + for (auto ms : juce::Desktop::getInstance().getMouseSources()) + if (auto c = ms.getComponentUnderMouse()) + if (auto top = c->getTopLevelComponent(); top != nullptr && top != root && top != this) + setRoot (*top); + } + void setupCallbacks() { overlayMouseListener.outlineComponentCallback = [this] (Component* c) { this->outlineComponent (c); }; @@ -328,7 +390,7 @@ namespace melatonin }; inspectorComponent.toggleFPSCallback = [this] (bool enable) { if (enable) - this->fpsMeter.setBounds (root.getLocalBounds().removeFromRight (60).removeFromTop (40)); + this->fpsMeter.setBounds (root->getLocalBounds().removeFromRight (60).removeFromTop (40)); this->fpsMeter.setVisible (enable); }; } From 1c296505d07c2d00976fac56decbe73d95d5acf5 Mon Sep 17 00:00:00 2001 From: Roland Rabien Date: Wed, 27 Dec 2023 19:08:42 -0800 Subject: [PATCH 08/37] Initialize variable --- melatonin/inspector_component.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/melatonin/inspector_component.h b/melatonin/inspector_component.h index 9d1b205..b5aee1e 100644 --- a/melatonin/inspector_component.h +++ b/melatonin/inspector_component.h @@ -371,7 +371,7 @@ namespace melatonin private: Component::SafePointer selectedComponent; - Component* root; + Component* root = nullptr; juce::SharedResourcePointer settings; ComponentModel model; bool inspectorEnabled; From e2b4598cdaee8130a1d4c0a0203af494874e0ad2 Mon Sep 17 00:00:00 2001 From: Roland Rabien Date: Thu, 11 Jan 2024 06:50:57 -0800 Subject: [PATCH 09/37] Init variable --- melatonin/inspector_component.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/melatonin/inspector_component.h b/melatonin/inspector_component.h index b5aee1e..509cb8d 100644 --- a/melatonin/inspector_component.h +++ b/melatonin/inspector_component.h @@ -374,7 +374,7 @@ namespace melatonin Component* root = nullptr; juce::SharedResourcePointer settings; ComponentModel model; - bool inspectorEnabled; + bool inspectorEnabled = false; juce::Rectangle mainColumnBounds, topArea, searchBoxBounds, treeViewBounds; InspectorImageButton logo { "logo" }; From b7a0f2de07ed8692963605561fe1a3793885994b Mon Sep 17 00:00:00 2001 From: Sudara Date: Fri, 19 Jan 2024 15:38:19 +0100 Subject: [PATCH 10/37] Update README.md [ci skip] --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 2a9f72a..4e067f5 100644 --- a/README.md +++ b/README.md @@ -278,8 +278,7 @@ void paint (juce::Graphics& g) override { melatonin::ComponentTimer timer { this }; - // Call derived class paintContent method - timedPaint (g); + // do all your expensive painting... ``` This simply times the method and stores it in the component's own properties. It will store up to 3 values named `timing1`, `timing2`, `timing3`. From 7b30ee345cbdf835b38d7a26c1c52a6a5506d084 Mon Sep 17 00:00:00 2001 From: Paul Walker Date: Sun, 10 Mar 2024 20:01:24 -0400 Subject: [PATCH 11/37] Accesibility Change One: Show Acessible Info This change does two things 1. If a widget is accessible with a title, use that title for the melatonin sidebar rather than clasname and preferentially over juce name. (If it has both an accessible title and juce name and they differ the juce name is shown additionally) 2. collect and display basic accessible info in the inspector panel. these are title, type, value, and handler class. --- melatonin/component_model.h | 65 +++++++++++++++++++++++++++ melatonin/components/properties.h | 16 +++++++ melatonin/helpers/component_helpers.h | 13 ++++++ 3 files changed, 94 insertions(+) diff --git a/melatonin/component_model.h b/melatonin/component_model.h index 5a8462b..e71c0ef 100644 --- a/melatonin/component_model.h +++ b/melatonin/component_model.h @@ -22,6 +22,12 @@ namespace melatonin juce::Value lookAndFeelValue, typeValue, fontValue, alphaValue; juce::Value pickedColor; juce::Value timing1, timing2, timing3, timingMax, hasChildren; + + struct AccessiblityDetail + { + juce::Value title, value, role, handlerType; + } accessiblityDetail; + double timingWithChildren1, timingWithChildren2, timingWithChildren3, timingWithChildrenMax; ComponentModel() = default; @@ -145,6 +151,65 @@ namespace melatonin interceptsMouseValue.addListener (this); childrenInterceptsMouseValue.addListener (this); + if (selectedComponent->isAccessible() && selectedComponent->getAccessibilityHandler()) + { + auto* accH = selectedComponent->getAccessibilityHandler(); + accessiblityDetail.handlerType = type (*accH); + if (accH->getValueInterface()) + { + accessiblityDetail.value = accH->getValueInterface()->getCurrentValueAsString(); + } + else + { + accessiblityDetail.value = "no value interface"; + } + accessiblityDetail.title = accH->getTitle(); + auto role = accH->getRole(); + switch (role) + { + // Amazingly juce doesn' thave a display name fn for these +#define DN(x) \ + case juce::AccessibilityRole::x: \ + accessiblityDetail.role = #x; \ + break; + DN (button) + DN (toggleButton) + DN (radioButton) + DN (comboBox) + DN (image) + DN (slider) + DN (label) + DN (staticText) + DN (editableText) + DN (menuItem) + DN (menuBar) + DN (popupMenu) + DN (table) + DN (tableHeader) + DN (column) + DN (row) + DN (cell) + DN (hyperlink) + DN (list) + DN (listItem) + DN (tree) + DN (treeItem) + DN (progressBar) + DN (group) + DN (dialogWindow) + DN (window) + DN (scrollBar) + DN (tooltip) + DN (splashScreen) + DN (ignored) + DN (unspecified) +#undef DN + default: + accessiblityDetail.role = juce::String ("Unknown ") + juce::String ((int) role); + break; + } + } + { bool interceptsMouse = false; bool childrenInterceptsMouse = false; diff --git a/melatonin/components/properties.h b/melatonin/components/properties.h index 7f71ab6..63a9272 100644 --- a/melatonin/components/properties.h +++ b/melatonin/components/properties.h @@ -68,6 +68,22 @@ namespace melatonin } panel.addProperties (props, padding); + if (model.accessibilityHandledValue.getValue()) + { + auto& ad = model.accessiblityDetail; + auto aprops = juce::Array { + new juce::TextPropertyComponent (ad.title, "Title", 200, false, false), + new juce::TextPropertyComponent (ad.value, "Value", 200, false, false), + new juce::TextPropertyComponent (ad.role, "Role", 200, false, false), + new juce::TextPropertyComponent (ad.handlerType, "Handler", 200, false, false), + }; + for (auto* p : aprops) + { + p->setLookAndFeel (&getLookAndFeel()); + } + panel.addSection ("Accessibility", aprops); + } + resized(); } diff --git a/melatonin/helpers/component_helpers.h b/melatonin/helpers/component_helpers.h index f4c1838..ad22121 100644 --- a/melatonin/helpers/component_helpers.h +++ b/melatonin/helpers/component_helpers.h @@ -49,6 +49,19 @@ namespace melatonin return juce::String ("Editor: ") + editor->getAudioProcessor()->getName(); } #endif + else if (c && c->isAccessible() && c->getAccessibilityHandler() && !c->getAccessibilityHandler()->getTitle().isEmpty()) + { + // If a widget has an accessible name, prefer that to the internal + // name since it is user facing in a screen reader + auto acctitle = c->getAccessibilityHandler()->getTitle(); + auto nm = c->getName(); + if (nm != acctitle && !nm.isEmpty()) + { + // but if i also have an internal name, dont' suppress it + acctitle += "(name=" + nm + ")"; + } + return acctitle; + } else if (c && !c->getName().isEmpty()) { return c->getName(); From 1ddf31658120a17438be15ce5eac10c0c1765675 Mon Sep 17 00:00:00 2001 From: Paul Walker Date: Mon, 11 Mar 2024 12:58:14 -0400 Subject: [PATCH 12/37] Updates post reviews - Remove clumsy (name=) from the title - Add name to the properties tearsheet - Add an accesibility panel section to the main component - Move the accesible information display into that panel --- melatonin/component_model.h | 3 ++ melatonin/components/accesibility.h | 55 +++++++++++++++++++++++++++ melatonin/components/properties.h | 17 +-------- melatonin/helpers/component_helpers.h | 8 ---- melatonin/inspector_component.h | 9 +++++ 5 files changed, 68 insertions(+), 24 deletions(-) create mode 100644 melatonin/components/accesibility.h diff --git a/melatonin/component_model.h b/melatonin/component_model.h index e71c0ef..e808684 100644 --- a/melatonin/component_model.h +++ b/melatonin/component_model.h @@ -16,6 +16,7 @@ namespace melatonin virtual void componentModelChanged (ComponentModel& model) = 0; }; + juce::Value nameValue; juce::Value widthValue, heightValue, xValue, yValue; juce::Value enabledValue, opaqueValue, hasCachedImageValue, accessibilityHandledValue; juce::Value visibleValue, wantsFocusValue, interceptsMouseValue, childrenInterceptsMouseValue; @@ -127,6 +128,7 @@ namespace melatonin return; } + nameValue = selectedComponent->getName(); lookAndFeelValue = lnfString (selectedComponent); visibleValue = selectedComponent->isVisible(); enabledValue = selectedComponent->isEnabled(); @@ -138,6 +140,7 @@ namespace melatonin typeValue = type (*selectedComponent); accessibilityHandledValue = selectedComponent->isAccessible(); + nameValue.addListener(this); widthValue.addListener (this); heightValue.addListener (this); xValue.addListener (this); diff --git a/melatonin/components/accesibility.h b/melatonin/components/accesibility.h new file mode 100644 index 0000000..13f5daf --- /dev/null +++ b/melatonin/components/accesibility.h @@ -0,0 +1,55 @@ + +#pragma once +#include "melatonin_inspector/melatonin/component_model.h" + +namespace melatonin +{ + class Accessibility : public juce::Component, private ComponentModel::Listener + { + public: + Accessibility(ComponentModel & m) : model(m) { + addAndMakeVisible (&panel); + model.addListener (*this); + } + + void updateProperties() + { + panel.clear(); + + if (!model.getSelectedComponent()) + return; + + auto& ad = model.accessiblityDetail; + auto aprops = juce::Array { + new juce::TextPropertyComponent (ad.title, "Title", 200, false, false), + new juce::TextPropertyComponent (ad.value, "Value", 200, false, false), + new juce::TextPropertyComponent (ad.role, "Role", 200, false, false), + new juce::TextPropertyComponent (ad.handlerType, "Handler", 200, false, false), + }; + for (auto* p : aprops) + { + p->setLookAndFeel (&getLookAndFeel()); + } + panel.addProperties(aprops, 0); + resized(); + } + + protected: + ComponentModel& model; + void componentModelChanged (ComponentModel& model) override { + updateProperties(); + } + + + void resized() override + { + TRACE_COMPONENT(); + // let the property panel know what total height we need to be + panel.setBounds (getLocalBounds().withTrimmedTop (padding)); + } + + int padding {3}; + + juce::PropertyPanel panel { "Accessibility" }; + }; +} diff --git a/melatonin/components/properties.h b/melatonin/components/properties.h index 63a9272..9addc2b 100644 --- a/melatonin/components/properties.h +++ b/melatonin/components/properties.h @@ -68,22 +68,6 @@ namespace melatonin } panel.addProperties (props, padding); - if (model.accessibilityHandledValue.getValue()) - { - auto& ad = model.accessiblityDetail; - auto aprops = juce::Array { - new juce::TextPropertyComponent (ad.title, "Title", 200, false, false), - new juce::TextPropertyComponent (ad.value, "Value", 200, false, false), - new juce::TextPropertyComponent (ad.role, "Role", 200, false, false), - new juce::TextPropertyComponent (ad.handlerType, "Handler", 200, false, false), - }; - for (auto* p : aprops) - { - p->setLookAndFeel (&getLookAndFeel()); - } - panel.addSection ("Accessibility", aprops); - } - resized(); } @@ -98,6 +82,7 @@ namespace melatonin // Always have class up top juce::Array props = { new juce::TextPropertyComponent (model.typeValue, "Class", 200, false, false), + new juce::TextPropertyComponent (model.nameValue, "Name", 200, false, false), }; // Then prioritize model properties diff --git a/melatonin/helpers/component_helpers.h b/melatonin/helpers/component_helpers.h index ad22121..ebecd1e 100644 --- a/melatonin/helpers/component_helpers.h +++ b/melatonin/helpers/component_helpers.h @@ -51,15 +51,7 @@ namespace melatonin #endif else if (c && c->isAccessible() && c->getAccessibilityHandler() && !c->getAccessibilityHandler()->getTitle().isEmpty()) { - // If a widget has an accessible name, prefer that to the internal - // name since it is user facing in a screen reader auto acctitle = c->getAccessibilityHandler()->getTitle(); - auto nm = c->getName(); - if (nm != acctitle && !nm.isEmpty()) - { - // but if i also have an internal name, dont' suppress it - acctitle += "(name=" + nm + ")"; - } return acctitle; } else if (c && !c->getName().isEmpty()) diff --git a/melatonin/inspector_component.h b/melatonin/inspector_component.h index 509cb8d..f41f160 100644 --- a/melatonin/inspector_component.h +++ b/melatonin/inspector_component.h @@ -7,6 +7,7 @@ #include "melatonin_inspector/melatonin/components/component_tree_view_item.h" #include "melatonin_inspector/melatonin/components/preview.h" #include "melatonin_inspector/melatonin/components/properties.h" +#include "melatonin_inspector/melatonin/components/accesibility.h" #include "melatonin_inspector/melatonin/lookandfeel.h" /* @@ -37,12 +38,14 @@ namespace melatonin addChildComponent (colorPicker); addChildComponent (preview); addChildComponent (properties); + addChildComponent (accessibility); // z-order on panels is higher so they are clickable addAndMakeVisible (boxModelPanel); addAndMakeVisible (colorPickerPanel); addAndMakeVisible (previewPanel); addAndMakeVisible (propertiesPanel); + addAndMakeVisible (accessibilityPanel); addAndMakeVisible (searchBox); addAndMakeVisible (searchIcon); @@ -251,6 +254,9 @@ namespace melatonin colorPicker.setBounds (colorPickerBounds.withTrimmedLeft (32)); colorPickerPanel.setBounds (colorPickerBounds.removeFromTop (32).removeFromLeft (200)); + accessibilityPanel.setBounds (mainCol.removeFromTop (32)); + accessibility.setBounds (mainCol.removeFromTop (accessibility.isVisible() ? 110 : 0).withTrimmedLeft(32)); + propertiesPanel.setBounds (mainCol.removeFromTop (33)); // extra pixel for divider properties.setBounds (mainCol.withTrimmedLeft (32)); @@ -391,6 +397,9 @@ namespace melatonin Properties properties { model }; CollapsablePanel propertiesPanel { "PROPERTIES", &properties, true }; + Accessibility accessibility { model }; + CollapsablePanel accessibilityPanel { "ACCESSIBILITY", &accessibility, false }; + // TODO: move to its own component juce::TreeView tree; juce::Label emptySelectionPrompt { "SelectionPrompt", "Select any component to see components tree" }; From c472f0a89e64100b5668d2539e6cf415b93ab46f Mon Sep 17 00:00:00 2001 From: Sudara Date: Tue, 12 Mar 2024 10:07:00 +0100 Subject: [PATCH 13/37] Fix warning and run clang-format on accessibility.h --- melatonin/components/accesibility.h | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/melatonin/components/accesibility.h b/melatonin/components/accesibility.h index 13f5daf..b47d509 100644 --- a/melatonin/components/accesibility.h +++ b/melatonin/components/accesibility.h @@ -7,7 +7,8 @@ namespace melatonin class Accessibility : public juce::Component, private ComponentModel::Listener { public: - Accessibility(ComponentModel & m) : model(m) { + explicit Accessibility (ComponentModel& m) : model (m) + { addAndMakeVisible (&panel); model.addListener (*this); } @@ -30,17 +31,18 @@ namespace melatonin { p->setLookAndFeel (&getLookAndFeel()); } - panel.addProperties(aprops, 0); + panel.addProperties (aprops, 0); resized(); } protected: ComponentModel& model; - void componentModelChanged (ComponentModel& model) override { + + void componentModelChanged (ComponentModel&) override + { updateProperties(); } - void resized() override { TRACE_COMPONENT(); @@ -48,7 +50,7 @@ namespace melatonin panel.setBounds (getLocalBounds().withTrimmedTop (padding)); } - int padding {3}; + int padding { 3 }; juce::PropertyPanel panel { "Accessibility" }; }; From 67e96c51b90c712c4409c3445e3796b078177016 Mon Sep 17 00:00:00 2001 From: Paul Walker Date: Tue, 12 Mar 2024 09:13:36 -0400 Subject: [PATCH 14/37] Modify ci.yml 'on' to run on pull request; Activate linux ci.yml runs on PR and ci turns on ubuntu Adjust the code to compile with Werror on linux 1. Remove a shadow edgeGap 2 .For the binary assets created externally by projucer, supress the redundant-decls warning that code has and ignores when compiled externally Closes #93 --- .github/workflows/ci.yml | 15 ++++++++++++++- CMakeLists.txt | 6 ++++++ melatonin/components/colour_property_component.h | 6 +++--- melatonin_inspector.cpp | 3 +++ 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7c6d46c..2774b5b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,6 +3,10 @@ name: CI on: workflow_dispatch: push: + pull_request: + branches: + - main + - next env: CMAKE_BUILD_PARALLEL_LEVEL: 3 # Use up to 3 cpus to build juceaide, etc @@ -29,7 +33,7 @@ jobs: fail-fast: false matrix: app: [ member_enabled, member_disabled, unique_ptr_enabled, unique_ptr_disabled ] - os: [ macos-latest, windows-latest ] + os: [ macos-latest, windows-latest, ubuntu-latest ] steps: - name: Checkout @@ -37,6 +41,15 @@ jobs: with: fetch-depth: 1 + - name: Install Linux Deps + if: runner.os == 'Linux' + run: | + sudo apt-get update + sudo apt install libasound2-dev libx11-dev libxcomposite-dev libxcursor-dev libxext-dev libxinerama-dev libxrandr-dev libxrender-dev libfreetype6-dev libglu1-mesa-dev libjack-jackd2-dev + sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 9 + sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 9 + + - name: Run sccache-cache uses: mozilla-actions/sccache-action@v0.0.3 diff --git a/CMakeLists.txt b/CMakeLists.txt index 5c89ed2..08d10f9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,12 @@ if (MelatoninInspector_IS_TOP_LEVEL) juce_add_gui_app ("${TARGET_NAME}" VERSION 1.0.0) target_sources("${TARGET_NAME}" PRIVATE "tests/${TARGET_NAME}.cpp") + + target_compile_definitions("${TARGET_NAME}" PUBLIC + JUCE_USE_CURL=0 + JUCE_WEB_BROWSER=0 + ) + set_target_properties("${TARGET_NAME}" PROPERTIES COMPILE_WARNING_AS_ERROR ON) endif () diff --git a/melatonin/components/colour_property_component.h b/melatonin/components/colour_property_component.h index 8477956..38b521d 100644 --- a/melatonin/components/colour_property_component.h +++ b/melatonin/components/colour_property_component.h @@ -46,9 +46,9 @@ namespace melatonin { public: explicit ColorSelector (int selectorFlags = (showAlphaChannel | showColourAtTop | showSliders | showColourspace), - int edgeGap = 4, - int gapAroundColourSpaceComponent = 7) - : juce::ColourSelector (selectorFlags, edgeGap, gapAroundColourSpaceComponent) + int _edgeGap = 4, + int _gapAroundColourSpaceComponent = 7) + : juce::ColourSelector (selectorFlags, _edgeGap, _gapAroundColourSpaceComponent) { addChangeListener (this); } diff --git a/melatonin_inspector.cpp b/melatonin_inspector.cpp index f7b4cff..ce09792 100644 --- a/melatonin_inspector.cpp +++ b/melatonin_inspector.cpp @@ -3,6 +3,8 @@ // As recommended by the JUCE MODULE API, these cpp files are included by the main module cpp // See https://github.com/juce-framework/JUCE/blob/master/docs/JUCE%20Module%20Format.md#module-cpp-files +#include +JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE("-Wredundant-decls") // NOLINTBEGIN(bugprone-suspicious-include) #include "LatestCompiledAssets/BinaryData1.cpp" #include "LatestCompiledAssets/BinaryData10.cpp" @@ -23,4 +25,5 @@ #include "LatestCompiledAssets/BinaryData8.cpp" #include "LatestCompiledAssets/BinaryData9.cpp" // NOLINTEND(bugprone-suspicious-include) +JUCE_END_IGNORE_WARNINGS_GCC_LIKE From 514a15f5fab7d4e8d1e1346615196cc8c3eefa75 Mon Sep 17 00:00:00 2001 From: Paul Walker Date: Wed, 13 Mar 2024 08:50:32 -0400 Subject: [PATCH 15/37] Begin Focus vs Mouse mode 1. Add a setSelectionMode with an enum for current FOLLOWS_MOUSE or FOLLOWS_FOCUS 2. Unregister / register appropriate focus listener, structure for other options 3. Add the listener to update state With this plus `inspectr->setFocusMode` called explicitly on launch melatonin is equivalent to the surge focus debugger. Awesome. The primary thing not done yet is a toggle button in teh UI to swap modes. You can only swap programatically. Addresses #97 --- melatonin_inspector.h | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/melatonin_inspector.h b/melatonin_inspector.h index 1b46b19..105e8e9 100644 --- a/melatonin_inspector.h +++ b/melatonin_inspector.h @@ -30,7 +30,7 @@ END_JUCE_MODULE_DECLARATION namespace melatonin { - class Inspector : public juce::ComponentListener, public juce::DocumentWindow, private juce::Timer + class Inspector : public juce::ComponentListener, public juce::DocumentWindow, private juce::Timer, public juce::FocusChangeListener { public: class InspectorKeyCommands : public juce::KeyListener @@ -325,6 +325,39 @@ namespace melatonin std::function onClose; + enum SelectionMode + { + FOLLOWS_MOUSE, + FOLLOWS_FOCUS + } selectionMode{FOLLOWS_MOUSE}; + + void setSelectionMode(SelectionMode newSM) + { + if (newSM == selectionMode) + return; + // Out with the old + switch(selectionMode) + { + case FOLLOWS_FOCUS: + juce::Desktop::getInstance().removeFocusChangeListener(this); + break; + case FOLLOWS_MOUSE: + break; + } + + // And in with the new + selectionMode = newSM; + switch(selectionMode) + { + case FOLLOWS_FOCUS: + juce::Desktop::getInstance().addFocusChangeListener(this); + break; + case FOLLOWS_MOUSE: + break; + } + + } + private: juce::SharedResourcePointer settings; melatonin::InspectorLookAndFeel inspectorLookAndFeel; @@ -364,6 +397,13 @@ namespace melatonin } } + void globalFocusChanged (Component* focusedComponent) override + { + inspectorComponent.toggleOverlayCallback(true); + inspectorComponent.selectComponentCallback(focusedComponent); + } + + private: void timerCallback() override { for (auto ms : juce::Desktop::getInstance().getMouseSources()) From f485efc811898f53c8ab82bbb669f6af68b9d629 Mon Sep 17 00:00:00 2001 From: Sudara Date: Fri, 15 Mar 2024 13:28:23 +0100 Subject: [PATCH 16/37] Run clang-format and fix a couple clang tidy things --- melatonin_inspector.h | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/melatonin_inspector.h b/melatonin_inspector.h index 105e8e9..5d32534 100644 --- a/melatonin_inspector.h +++ b/melatonin_inspector.h @@ -51,7 +51,8 @@ namespace melatonin inspector.toggle(); return true; } - else if (keyPress.isKeyCode (juce::KeyPress::escapeKey)) + + if (keyPress.isKeyCode (juce::KeyPress::escapeKey)) { if (inspector.inspectorEnabled) { @@ -325,37 +326,35 @@ namespace melatonin std::function onClose; - enum SelectionMode - { + enum SelectionMode { FOLLOWS_MOUSE, FOLLOWS_FOCUS - } selectionMode{FOLLOWS_MOUSE}; + } selectionMode { FOLLOWS_MOUSE }; - void setSelectionMode(SelectionMode newSM) + void setSelectionMode (SelectionMode newMode) { - if (newSM == selectionMode) + if (newMode == selectionMode) return; // Out with the old - switch(selectionMode) + switch (selectionMode) { case FOLLOWS_FOCUS: - juce::Desktop::getInstance().removeFocusChangeListener(this); + juce::Desktop::getInstance().removeFocusChangeListener (this); break; case FOLLOWS_MOUSE: break; } // And in with the new - selectionMode = newSM; - switch(selectionMode) + selectionMode = newMode; + switch (selectionMode) { case FOLLOWS_FOCUS: - juce::Desktop::getInstance().addFocusChangeListener(this); + juce::Desktop::getInstance().addFocusChangeListener (this); break; case FOLLOWS_MOUSE: break; } - } private: @@ -384,7 +383,7 @@ namespace melatonin if (&component == root) { clearRoot(); - + auto& d = juce::Desktop::getInstance(); for (int i = 0; i < d.getNumComponents(); i++) { @@ -399,14 +398,14 @@ namespace melatonin void globalFocusChanged (Component* focusedComponent) override { - inspectorComponent.toggleOverlayCallback(true); - inspectorComponent.selectComponentCallback(focusedComponent); + inspectorComponent.toggleOverlayCallback (true); + inspectorComponent.selectComponentCallback (focusedComponent); } private: void timerCallback() override { - for (auto ms : juce::Desktop::getInstance().getMouseSources()) + for (auto& ms : juce::Desktop::getInstance().getMouseSources()) if (auto c = ms.getComponentUnderMouse()) if (auto top = c->getTopLevelComponent(); top != nullptr && top != root && top != this) setRoot (*top); From 9ebfb5a08faac177acd3e454ab815ab47e044db0 Mon Sep 17 00:00:00 2001 From: Sudara Date: Sun, 17 Mar 2024 11:34:47 +0100 Subject: [PATCH 17/37] Add "keyboard focus" toggle. Disable mouse listening when key focused --- Assets/move-off.png | Bin 1076 -> 1093 bytes Assets/tab-off.png | Bin 0 -> 531 bytes Assets/tab-on.png | Bin 0 -> 503 bytes CMakeLists.txt | 7 +++-- LatestCompiledAssets/BinaryData1.cpp | 8 +++++- LatestCompiledAssets/BinaryData12.cpp | 31 +++++++++++---------- LatestCompiledAssets/BinaryData17.cpp | 24 +++++++--------- LatestCompiledAssets/BinaryData18.cpp | 23 ++++++--------- LatestCompiledAssets/BinaryData19.cpp | 28 +++++++++++++++++++ LatestCompiledAssets/BinaryData20.cpp | 28 +++++++++++++++++++ LatestCompiledAssets/InspectorBinaryData.h | 10 +++++-- melatonin/helpers/misc.h | 1 + melatonin/inspector_component.h | 15 ++++++++-- melatonin_inspector.cpp | 5 ++-- melatonin_inspector.h | 9 ++++-- 15 files changed, 132 insertions(+), 57 deletions(-) create mode 100644 Assets/tab-off.png create mode 100644 Assets/tab-on.png create mode 100644 LatestCompiledAssets/BinaryData19.cpp create mode 100644 LatestCompiledAssets/BinaryData20.cpp diff --git a/Assets/move-off.png b/Assets/move-off.png index e31134a0b79172fc651520cf36345e72cf25dbb3..ee605363ec98a9d52b858eafa483338aa6649150 100644 GIT binary patch delta 1021 zcmVo<_h}+yu2w^AaTyAz~Pj#C}op_%6|_NS`_k2Zg%t-z}~+loq_2JRJQG;*dL}Xk(7ZP; zJ2I*f-~iD!pe~-nQ`L18;>_#W2RFb|Jc=^}eiaD3r%((+;;yJeG!t(CPp_m#PM7j~ zCB`s%BXFnq`zp3vp?lPf^VW6f%*KwB!tMjSI^JU_fpIHB!A*6c!13%CUlg39#8 z!r?Omtba}SbgPem(@9-+7Ouoc6RC|lJ9m5Pi~u#@P_8TsS0Qz?p0CkLhHVG0_tue} zosBFb7Ya7AGovRlXW2up9LR+7{~(P3jAf)>Y%?Y-?Tz+*5kp>LRBM2+(#TLtSi2Xf z>5-aOlS4(v2WT!yCr-PUL&BcxUUVdF8A3q@=z6@};fimoV2TdS|j}VZSJF?q7ES@8RDSyNvcxNZSyvXKK!%Gkl z&wqKhu(>;sn;LbR=~f%?hrqL;VYWFTYmGk9Q!YkTJmG180MRQQWE?KcVR?{fxY&Yt zzpK+hQ95zMP6}0iZX)vKYpA18Jg%-#BPO0uP9fvB)vI!Ej(D7%j*fUjIRZjdlq0}6 zjCnQJ4~5bI!{|s*%`KPwPN@QvckQ9v+jf%2+sOG@7`u%@(Yi+_tJp~aY^?bU`F40R)5J!L_t(|0o9tnQxicH$KT!$M8c0WG*mWNq=^MKjG6(*v9R?I zu+mC2VgxHoOh6g2(n@<9XKeg2Fj0qwG&E__V1Z2rM*@i>m%H`7!()!P7cZAxI6gC( z+1uRZzHfiLeQ!4a3YlK`l*&CTj)FooP{hNf&%?T|rMm`QavUzALcjC2E-ZjSlIAJk*rP`x$|l3^ebnzS_T z+ug$)Udc~SuD82~dTOw?)nlGI-N$X)9eR(m6C1+c14TSoT)FPQE@UU(w7viN*Ac$A zcTQtq(vb6i$A37t^7kg+ik?&Eg*v5h`@(m_G&Wkr6AV~A=(*S!Ky01rt59pV)-yx5 zf}V+u0q(f3?_@+h;0TQJh=l>3cpU#p;SEfS?+^+S&mG=ix>2FB2Ejd`%nOB~op|n8 z#f99}I)))Bbft|TH+pP65Jo&*&rMw_|L7ao4Emj}dVc_Y{UdzkT`VRc61;&DR`B!6 zy=oC31|1@T;urCivsmnf$haQoES0zerB1~YT?`?91LScnig==%IS_H!2uVZ{PZ%JH zLUuCre4>zBGt6C(fUpNJ@<5ZnA=v# z-v9?aK!4pjv|GEv_Ql5%(ngt`KRtDOfRb*?Tm6AlYdr7qzqr0zg5K+~pY53$)Vzj^ zT-C@GK8)J7oksKEq(DZX<_yk@vS#%5N>8+p3e7YvjbaU)AVpfn;eURI&N530A zv=03JqDV0~#0*Mq=B6(Gvo;A=VwxAwA*!|xJ@NwaL?quyD|WI`+XIPo5=;5%I2!db zsr_U`8b2W-9U0(H0~zS=KoSi2Ylukbj7*TjmVrY*zI_DCJrE6Sd7dw1FV8|m0>>Tg zRe#cUACXP)hv961ycMCr#b8>G zqG)o{KAI=*xn3|{9rv6{9Vuve12HS?7K$5J_yamyXwUV71{Bjf2V&Gzhe$mK+`%k; zD^R@meJw(?{b1g2RBoX_`bkW*kBr3rrQY^t^S)CaA|oxU&`&t%M1;U{Ly+k?IVxa* zta1y$5D&XfO@9k<#-5Q9F>Fyx+h1c*{8&ZtQtAMmX895+x&DJ#IzIytCf!y|$qFRt zZ6Q&7uT}A(kiJ!j7RDn^jr@beh%iZ}-yfK9lSRP2P+Tz{FSn zJIp*6TH@jiX>{MKbFi$9IZ*qA+D$f|fXaqBajA15gmbJsOEX(@WJ^(kW Vc+pZAyT||l002ovPDHLkV1g#Y;iLcn literal 0 HcmV?d00001 diff --git a/Assets/tab-on.png b/Assets/tab-on.png new file mode 100644 index 0000000000000000000000000000000000000000..81225b3f24a6f8986c2644591e0d482bb5fc4786 GIT binary patch literal 503 zcmV z7+$$mLb@2pz_#L*s_Gg~ejLMA%zo+Xf3$x}*kU}r;7`M<2g|ttMJvGoemW1ZsEp_! zjK5vm>}l;eXzC95s4VXB4@|a@&(q5xa%OlAr0u*zXwLzj_4Qj}wZ{4wNQhZKroAXc z4)iB6^C7Zg4tOphYEcgv8F>o*DCMq%P~XU+*!Mt^W?r@w7a-*xH9B2nq~AhB575T4 zVM22~OmUq@@rrf;d3qc{le~#X61=$@&1{mjEykaWA7_Tqd zt@js3-UC$cT>W}2;||bmXo_Zi0OD!?*}_AuHBXM|#<16&1V~QgM#Qj=)a<H literal 0 HcmV?d00001 diff --git a/CMakeLists.txt b/CMakeLists.txt index 08d10f9..1397f6f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,10 +52,11 @@ endif () # Assets are precompiled in the module to make it Projucer friendly # # To add or modify images: -# * Uncomment the following lines to generate the assets again +# * Uncomment the following CMake lines to generate the MelatoninInspectorAssets binary +# * uncomment #include "InspectorBinaryData.h in misc.h and comment out the LatestCompiledAssets include # * build as you would normally via CMake -# * run modules/melatonin_inspector/copy_cmake_assets.rb from your main PROJECT folder -# * comment these lines back out +# * run ./modules/melatonin_inspector/copy_cmake_assets.rb from your root PROJECT folder +# * comment these lines back out and swap the misc.h include again #file(GLOB_RECURSE MelatoninInspectorAssetFiles CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/Assets/*") #juce_add_binary_data(MelatoninInspectorAssets SOURCES ${MelatoninInspectorAssetFiles} HEADER_NAME InspectorBinaryData.h NAMESPACE InspectorBinaryData) diff --git a/LatestCompiledAssets/BinaryData1.cpp b/LatestCompiledAssets/BinaryData1.cpp index 05320ac..3274527 100644 --- a/LatestCompiledAssets/BinaryData1.cpp +++ b/LatestCompiledAssets/BinaryData1.cpp @@ -95,11 +95,13 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) case 0x14ab743c: numBytes = 673; return eyedropperoff_png; case 0xc74a0a86: numBytes = 671; return eyedropperon_png; case 0x78ded995: numBytes = 25781; return logo_png; - case 0x48464668: numBytes = 1076; return moveoff_png; + case 0x48464668: numBytes = 1093; return moveoff_png; case 0xd13642da: numBytes = 958; return moveon_png; case 0xd5ac3312: numBytes = 941; return search_png; case 0xca80f4b8: numBytes = 1419; return speedometeroff_png; case 0x40c48a8a: numBytes = 1371; return speedometeron_png; + case 0x4714be24: numBytes = 531; return taboff_png; + case 0x8f1be39e: numBytes = 503; return tabon_png; case 0xf76847cf: numBytes = 850; return timingoff_png; case 0x10aaf893: numBytes = 867; return timingon_png; default: break; @@ -127,6 +129,8 @@ const char* namedResourceList[] = "search_png", "speedometeroff_png", "speedometeron_png", + "taboff_png", + "tabon_png", "timingoff_png", "timingon_png" }; @@ -149,6 +153,8 @@ const char* originalFilenames[] = "search.png", "speedometer-off.png", "speedometer-on.png", + "tab-off.png", + "tab-on.png", "timing-off.png", "timing-on.png" }; diff --git a/LatestCompiledAssets/BinaryData12.cpp b/LatestCompiledAssets/BinaryData12.cpp index 3e5f74c..5557b4f 100644 --- a/LatestCompiledAssets/BinaryData12.cpp +++ b/LatestCompiledAssets/BinaryData12.cpp @@ -11,21 +11,22 @@ namespace InspectorBinaryData //================== move-off.png ================== static const unsigned char temp_binary_data_11[] = -{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,48,0,0,0,48,8,6,0,0,0,87,2,249,135,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,3,201,73,68,65,84,120, -1,213,154,191,83,19,65,20,199,223,222,15,68,194,143,52,52,84,54,88,164,137,5,54,140,154,1,199,177,176,245,15,176,210,74,52,98,4,43,75,76,64,25,177,210,74,123,27,103,108,252,49,48,81,135,134,52,52,105,210,96,129,77,6,71,2,137,35,151,187,245,189,195,99, -142,184,23,47,151,93,56,62,51,153,217,219,220,229,190,111,127,188,125,111,55,0,10,153,94,248,148,202,61,43,142,130,66,52,80,196,195,165,207,195,186,174,167,152,227,164,169,12,138,80,98,192,253,249,247,137,166,213,60,239,93,59,205,230,56,213,129,2,164, -27,64,66,153,102,102,152,198,250,188,58,206,152,73,117,55,95,148,76,144,140,116,3,152,110,142,249,197,31,212,99,221,80,189,54,14,146,97,32,17,154,180,52,238,219,221,195,28,94,201,79,79,174,183,187,135,122,106,176,182,213,99,158,58,221,199,109,219,29, -122,143,179,19,27,194,223,3,69,60,88,92,185,238,191,46,100,39,222,180,189,255,249,215,17,190,183,119,78,99,96,210,144,243,127,199,56,183,242,247,38,223,138,158,83,230,133,58,165,112,251,194,119,195,52,54,90,197,19,12,88,61,232,185,216,24,64,108,157,234, -171,80,107,183,214,51,67,183,130,158,137,141,1,238,184,175,239,100,68,61,224,8,140,242,136,133,1,158,120,28,255,73,225,13,76,139,239,16,10,18,207,29,222,96,186,81,161,178,6,193,61,160,204,11,133,161,157,120,238,88,197,133,220,213,58,134,33,41,116,165, -141,32,55,122,108,61,16,70,60,93,207,77,93,42,255,232,27,216,12,250,157,174,122,0,125,253,35,124,229,93,44,38,33,18,188,129,18,86,240,243,202,189,106,17,31,6,29,34,130,226,23,241,149,179,88,236,133,200,184,30,231,44,149,184,3,165,78,197,19,93,12,33,126, -3,228,113,45,138,120,162,155,57,16,113,216,8,73,68,17,79,24,32,137,66,118,50,244,124,162,144,91,51,204,93,144,128,176,7,102,158,44,167,65,33,81,90,155,34,93,81,253,161,30,32,215,70,49,59,46,231,148,2,174,67,140,160,48,61,247,116,121,152,219,86,201,223, -0,7,61,64,221,58,180,91,187,194,246,197,199,18,210,70,153,157,63,61,117,123,128,146,110,202,91,253,129,84,107,60,239,241,191,184,190,91,130,222,235,177,159,237,153,25,212,188,134,139,92,213,200,21,62,140,218,182,157,70,243,224,164,64,70,160,230,12,206, -139,178,102,244,246,74,79,180,143,10,205,52,45,141,98,13,156,32,69,90,198,225,132,64,73,15,105,158,191,147,169,184,115,128,198,18,78,140,34,141,45,111,71,65,245,88,15,34,232,189,222,220,160,134,118,112,213,198,28,217,245,68,7,94,136,92,19,45,231,156, -243,42,196,20,108,245,234,118,255,224,71,191,27,61,180,14,252,253,162,72,49,56,196,12,74,110,230,166,46,254,179,54,9,87,98,154,23,208,33,170,182,14,61,242,2,241,68,36,223,73,43,118,178,81,219,3,137,116,18,75,249,233,56,26,245,50,169,253,100,68,26,63, -33,34,29,25,224,79,3,25,232,239,64,18,12,248,107,136,72,232,140,76,144,195,150,129,67,63,190,125,4,203,61,16,13,108,121,158,47,100,47,207,66,68,2,199,29,237,85,210,118,31,149,195,38,224,199,65,96,66,163,227,70,43,198,26,201,157,129,100,37,174,226,137, -64,3,108,92,145,117,208,83,24,98,159,105,221,239,15,35,190,211,221,233,168,8,39,177,255,36,37,138,248,163,68,104,0,29,46,136,234,227,38,158,16,26,64,39,35,1,55,111,198,73,60,33,52,192,198,188,77,84,207,53,54,26,148,92,31,23,66,3,122,28,59,225,198,220, -154,214,208,117,94,213,152,253,141,130,41,140,6,203,166,174,55,84,156,54,70,69,106,30,57,179,244,37,205,237,102,219,147,121,106,132,40,193,98,16,82,119,167,41,98,108,151,79,80,60,47,83,60,33,125,123,125,59,49,184,42,74,79,169,206,250,253,171,4,146,145, -110,192,203,91,99,22,185,90,255,97,157,74,247,171,228,128,131,132,106,134,177,234,93,227,241,233,90,220,220,111,40,232,175,54,170,211,211,63,29,136,227,49,101,42,141,245,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; +{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,48,0,0,0,48,8,6,0,0,0,87,2,249,135,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,3,218,73,68,65,84,120, +1,213,153,59,76,219,64,24,199,191,239,28,67,37,50,148,34,133,153,206,101,71,170,84,137,215,202,206,86,9,150,46,144,240,46,25,58,5,154,208,146,192,210,133,165,93,216,179,33,202,107,168,196,142,170,78,157,58,129,4,116,104,212,38,177,239,122,159,75,130, +3,231,16,59,103,112,127,83,252,138,255,159,239,190,215,29,64,136,204,231,15,199,23,10,71,99,16,34,12,66,98,113,253,168,159,129,24,71,193,39,23,215,119,251,33,36,66,49,96,238,195,151,4,26,98,234,250,45,177,229,229,194,231,94,8,1,237,6,144,248,88,165,154, +17,92,92,11,22,208,101,3,203,204,173,237,116,129,102,180,27,96,148,171,211,13,226,107,8,76,24,102,231,50,104,6,65,35,228,180,52,239,155,221,195,25,20,215,166,7,183,154,221,51,247,105,167,171,227,194,136,219,220,76,8,97,39,232,92,110,118,104,79,117,175, +86,3,220,44,230,15,138,238,227,108,106,176,105,52,90,120,191,59,192,152,57,33,80,196,105,202,53,92,68,40,101,147,131,202,15,19,90,20,242,75,110,118,244,24,192,222,191,37,158,64,56,245,122,46,50,6,16,86,143,85,164,175,125,243,60,19,88,242,122,38,50,6, +208,188,55,46,59,50,170,17,224,0,209,54,160,46,158,195,83,213,117,20,226,204,235,217,7,55,192,83,60,138,51,4,126,21,8,188,167,80,12,66,226,174,168,67,52,19,111,0,79,175,164,70,78,151,242,123,37,198,48,122,35,112,167,248,228,136,19,121,222,166,134,183, +43,221,213,99,175,255,105,43,15,44,228,15,222,200,20,155,148,63,31,67,16,16,170,210,105,127,32,224,215,127,199,141,226,91,193,128,128,72,241,121,41,126,73,254,124,4,193,161,247,119,75,39,69,57,23,190,249,21,79,180,225,3,226,37,104,66,32,246,197,128,191, +240,43,158,104,199,7,130,77,27,53,102,16,241,132,182,40,148,75,13,181,236,79,84,114,179,63,229,64,130,111,162,28,129,249,252,193,36,132,200,187,87,207,207,252,62,67,149,174,234,124,195,8,56,161,237,66,214,236,66,80,11,184,5,17,130,202,244,197,194,225, +51,3,172,77,247,116,171,143,128,211,73,93,118,22,174,196,71,19,169,141,58,59,119,123,234,140,0,53,224,80,174,44,11,87,33,117,179,158,175,209,74,134,109,7,175,247,214,145,157,157,141,44,35,23,10,54,178,51,163,39,49,103,217,67,174,28,200,132,242,255,32, +141,0,140,101,164,95,108,51,38,44,237,141,246,125,17,67,94,98,84,107,128,176,210,200,80,75,88,187,23,168,233,145,154,87,147,67,69,199,7,104,46,73,39,78,187,151,67,194,158,235,94,120,189,183,238,27,181,122,105,102,212,249,224,245,40,68,177,217,234,48, +211,128,120,2,17,133,73,109,246,147,234,180,59,140,54,228,129,171,4,147,150,53,248,56,68,12,106,110,86,147,195,183,114,147,50,19,59,126,225,147,176,150,14,107,72,77,202,196,26,168,31,160,140,205,206,205,95,160,17,63,181,148,27,223,213,232,245,234,129, +176,64,31,63,33,32,190,12,112,183,129,50,236,126,7,77,32,136,143,16,144,150,59,178,219,61,44,158,35,130,41,127,196,33,120,103,39,191,188,200,230,82,195,75,16,16,207,121,183,176,185,59,144,155,26,117,154,233,86,27,240,135,192,179,161,97,182,57,33,107, +141,62,209,83,46,70,85,60,225,105,128,0,209,43,29,100,28,46,204,97,121,144,104,184,216,130,120,191,171,211,65,81,58,113,195,78,10,85,126,110,34,242,229,107,168,163,80,60,174,174,80,35,38,158,80,78,33,227,183,213,171,114,111,142,120,156,157,142,142,120, +66,57,2,66,84,148,35,192,56,140,121,53,215,15,133,210,0,195,232,72,80,205,45,151,252,78,169,2,148,119,237,161,220,219,146,199,219,200,249,89,24,187,141,65,209,186,71,38,171,216,73,1,108,172,249,11,249,118,144,98,209,11,173,171,211,78,197,216,164,159, +160,209,212,41,222,249,79,208,140,93,45,175,40,219,83,103,195,194,218,4,205,132,178,205,74,107,76,70,185,178,81,223,239,10,49,252,134,178,193,225,116,118,220,90,169,159,224,246,70,148,114,71,203,188,46,236,143,133,221,158,254,5,44,42,182,214,83,216,43, +211,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; const char* moveoff_png = (const char*) temp_binary_data_11; } diff --git a/LatestCompiledAssets/BinaryData17.cpp b/LatestCompiledAssets/BinaryData17.cpp index b5101f3..968274d 100644 --- a/LatestCompiledAssets/BinaryData17.cpp +++ b/LatestCompiledAssets/BinaryData17.cpp @@ -9,20 +9,16 @@ namespace InspectorBinaryData { -//================== timing-off.png ================== +//================== tab-off.png ================== static const unsigned char temp_binary_data_16[] = -{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,27,0,0,0,32,8,6,0,0,0,227,105,3,59,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,2,231,73,68,65,84,120, -1,221,87,221,109,19,65,16,254,102,29,243,138,169,128,165,3,167,131,164,130,196,9,72,60,37,151,6,146,75,5,113,58,56,211,0,23,158,144,32,137,59,136,169,0,211,193,150,224,71,20,97,15,51,123,235,99,157,248,236,59,99,241,192,39,89,218,211,206,206,183,51,59, -127,38,172,64,210,75,115,38,62,69,77,208,11,122,147,127,206,92,213,190,193,63,196,255,75,182,179,114,215,96,72,76,14,117,241,19,147,85,219,132,154,72,222,167,22,143,216,147,101,39,252,156,92,198,225,23,198,249,48,155,212,209,177,146,44,57,76,45,27,92, -0,156,4,130,42,45,35,241,192,77,126,151,229,104,74,38,36,29,54,124,37,203,20,205,224,136,232,50,191,205,134,203,54,159,5,72,242,46,237,10,209,247,152,72,20,140,8,116,73,45,218,165,25,189,186,185,27,144,230,20,25,218,87,139,148,36,136,90,102,190,63,57, -58,191,194,58,203,60,209,148,31,16,92,166,36,104,227,108,85,162,150,103,143,210,148,225,189,209,9,154,243,155,219,193,217,82,178,226,125,188,69,5,145,88,34,111,144,161,1,130,14,189,172,213,111,33,239,127,186,251,112,61,223,47,221,24,132,54,38,82,72,84, -58,113,243,62,130,91,69,79,63,121,155,238,45,144,137,11,146,249,109,68,224,122,19,162,37,132,62,29,120,198,31,23,200,130,175,21,78,136,250,104,0,13,6,159,131,79,9,65,131,240,105,147,227,244,208,147,133,133,23,86,171,208,0,39,199,231,23,234,42,126,244, -79,176,136,25,212,59,133,117,224,11,79,198,140,131,72,96,136,154,208,96,144,176,207,194,37,7,79,247,181,170,132,180,80,182,61,205,93,3,226,174,63,32,97,94,183,236,68,81,39,199,105,80,249,198,6,163,114,189,131,174,17,86,139,194,170,31,168,9,110,249,71, -183,98,210,56,191,207,170,171,204,20,227,114,61,131,213,0,153,39,97,61,171,52,148,217,23,100,71,109,234,173,17,143,117,218,198,253,44,255,154,141,196,229,61,41,93,189,58,149,37,38,214,126,166,7,196,37,252,186,238,169,170,66,251,12,109,209,59,13,107,130, -147,0,33,239,87,46,92,179,93,76,209,141,214,206,16,227,91,248,180,113,105,217,6,162,201,204,73,164,143,141,68,73,94,110,114,253,177,109,29,52,61,66,32,137,243,138,20,48,62,183,194,135,108,38,218,102,176,5,72,135,255,211,211,218,69,101,242,209,40,77,240, -178,20,154,242,189,102,59,254,2,69,243,244,163,132,90,149,207,163,214,147,229,95,178,177,182,149,32,107,37,105,31,54,37,148,122,121,170,245,50,124,186,185,85,158,120,65,80,198,109,138,30,85,90,255,126,221,92,90,50,183,76,228,252,110,124,158,158,30,152, -17,50,138,231,123,113,131,84,138,235,42,82,239,1,131,36,84,118,91,18,181,228,162,226,177,88,118,249,116,117,148,246,163,30,55,151,212,131,78,10,175,175,161,12,188,244,69,156,125,46,117,98,57,45,99,203,46,87,57,55,250,208,37,244,27,252,139,153,172,235, -242,107,39,98,79,106,112,40,86,28,72,150,90,177,216,150,202,73,70,243,153,20,133,22,134,90,51,215,233,250,13,140,194,63,59,254,43,233,232,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; +{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,48,0,0,0,48,8,6,0,0,0,87,2,249,135,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,1,168,73,68,65,84,120, +1,237,216,63,75,195,64,24,6,240,231,174,197,185,56,232,170,238,130,126,131,254,25,220,138,171,163,159,160,77,161,70,113,150,182,86,72,179,11,142,93,107,247,54,245,19,40,184,171,223,192,44,157,66,243,122,87,84,74,208,33,228,188,244,240,126,67,201,53,16, +222,135,188,119,92,14,176,44,203,178,44,43,63,76,254,156,123,193,14,129,238,8,56,16,195,18,214,28,3,141,24,184,211,117,42,111,76,22,31,131,30,97,64,225,9,33,7,59,228,49,224,193,188,226,165,146,236,26,14,208,49,12,37,91,190,152,252,243,218,169,50,172, +177,51,111,74,43,195,18,135,225,108,128,188,21,161,193,197,96,90,143,162,104,114,211,62,154,39,239,185,94,48,94,29,247,156,74,29,41,104,121,3,49,43,236,22,138,27,87,248,3,58,91,104,207,245,131,6,20,211,59,7,98,212,84,135,72,61,7,220,193,44,125,43,80, +188,247,125,45,66,180,253,96,222,111,84,110,161,64,250,73,76,180,143,140,196,254,165,222,246,102,243,190,83,30,34,35,45,171,208,79,56,232,68,132,192,114,67,144,233,57,57,42,96,129,172,114,11,192,16,15,187,78,77,127,11,113,198,158,145,18,49,108,81,76, +219,95,99,81,252,88,69,241,82,234,0,157,102,249,18,41,185,254,131,88,58,63,3,16,38,221,86,77,201,10,36,233,109,33,81,124,175,85,241,161,144,190,85,136,227,165,215,80,91,188,164,37,0,167,197,107,180,25,41,107,155,85,90,2,116,154,213,241,111,247,210,238, +62,147,236,7,77,222,140,15,192,196,87,254,59,204,60,23,90,226,226,12,229,9,134,18,181,223,139,0,236,84,92,135,48,79,40,106,111,114,121,64,42,207,24,193,104,4,51,132,140,97,38,107,150,181,195,178,44,203,250,215,62,0,55,170,120,209,82,24,187,200,0,0,0, +0,73,69,78,68,174,66,96,130,0,0 }; -const char* timingoff_png = (const char*) temp_binary_data_16; +const char* taboff_png = (const char*) temp_binary_data_16; } diff --git a/LatestCompiledAssets/BinaryData18.cpp b/LatestCompiledAssets/BinaryData18.cpp index 5c84270..270649e 100644 --- a/LatestCompiledAssets/BinaryData18.cpp +++ b/LatestCompiledAssets/BinaryData18.cpp @@ -9,20 +9,15 @@ namespace InspectorBinaryData { -//================== timing-on.png ================== +//================== tab-on.png ================== static const unsigned char temp_binary_data_17[] = -{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,27,0,0,0,32,8,6,0,0,0,227,105,3,59,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,2,248,73,68,65,84,120, -1,221,87,75,78,27,65,16,173,234,25,67,118,33,155,72,136,79,134,27,12,55,176,79,144,112,2,204,9,192,18,24,101,133,189,138,8,72,192,9,48,39,192,55,176,115,2,38,39,200,40,88,33,75,86,17,193,51,93,169,238,158,143,191,67,27,172,44,120,210,88,221,170,158,121, -221,213,85,175,202,8,5,160,222,113,11,16,183,193,22,34,222,192,229,207,225,84,51,252,71,188,94,50,183,208,42,157,54,56,113,8,182,120,120,115,95,100,70,176,4,221,125,241,32,118,202,32,112,9,72,242,131,33,56,252,60,184,1,110,212,238,109,190,129,197,4,103, -76,16,237,242,170,42,207,150,166,127,5,187,32,233,10,87,235,45,152,149,140,126,156,45,193,98,116,4,68,123,48,27,66,136,169,134,235,135,237,73,198,177,0,161,222,153,15,139,253,155,33,34,181,115,196,26,16,108,194,227,159,119,184,82,71,149,83,32,177,194, -235,174,120,203,97,178,210,99,215,94,211,221,201,17,60,117,50,77,132,81,39,115,153,38,137,118,138,18,53,127,247,120,15,80,28,229,238,22,45,92,217,223,153,72,166,239,71,70,55,217,98,98,119,172,30,158,195,12,208,65,68,78,135,61,224,25,62,108,224,242,65, -51,181,231,110,164,126,231,37,68,122,231,202,3,24,87,50,183,74,106,208,237,73,121,136,140,122,95,171,217,110,36,53,159,67,52,70,8,104,210,65,208,229,16,25,255,166,23,26,226,218,97,3,102,128,10,6,125,5,163,132,32,47,146,169,71,191,78,63,25,222,159,60, -72,79,69,208,132,25,64,191,79,119,149,171,64,170,43,24,193,227,194,121,118,58,160,93,77,6,14,124,204,22,244,75,109,176,37,210,9,47,141,187,137,46,70,237,90,85,84,90,24,123,89,229,174,224,129,111,172,216,181,149,29,77,68,201,105,36,92,76,189,99,41,186, -217,216,141,124,193,145,227,25,3,125,7,91,80,116,153,184,62,192,181,250,116,149,41,245,131,108,140,228,137,60,129,201,238,84,42,148,217,45,160,164,73,196,91,133,139,7,171,128,33,155,13,184,118,208,133,88,108,241,201,182,108,148,37,127,17,238,93,157,128, -218,37,248,193,250,189,245,125,187,64,42,245,189,124,226,132,28,32,144,250,181,12,243,135,159,141,92,201,100,136,223,146,169,55,40,45,115,129,200,58,179,16,223,215,3,1,127,221,214,4,227,139,97,210,67,7,146,66,215,124,94,229,150,42,37,26,178,202,58,233, -195,60,32,227,188,166,137,88,43,147,137,70,73,181,204,128,112,173,43,245,11,96,138,167,172,38,211,86,26,181,154,140,123,135,64,149,149,196,232,193,66,191,243,92,66,186,59,221,214,122,105,16,166,167,210,60,67,11,123,39,220,110,211,118,190,176,84,193,229, -90,8,54,36,99,125,11,139,176,136,54,7,115,17,199,94,40,69,231,3,132,160,202,59,8,167,57,141,52,33,169,106,101,79,171,135,34,34,170,104,143,13,96,114,119,117,123,220,224,208,25,109,90,2,35,0,137,134,146,120,203,151,224,51,129,63,210,230,5,74,198,38,169, -203,212,190,209,52,165,162,97,255,47,70,157,70,22,86,249,39,59,98,211,196,184,170,210,114,221,35,111,200,85,234,94,101,204,162,224,180,181,102,62,129,127,223,116,102,170,183,33,227,63,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; +{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,48,0,0,0,48,8,6,0,0,0,87,2,249,135,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,1,140,73,68,65,84,120, +1,237,216,79,78,194,64,20,6,240,239,53,192,154,45,10,9,222,160,220,64,111,224,17,240,6,237,162,18,119,176,84,76,208,19,128,55,208,19,232,13,228,8,44,4,150,118,229,66,106,159,111,192,16,241,79,226,164,117,202,132,249,45,128,161,155,247,165,111,218,153, +1,28,199,113,28,199,41,14,169,15,158,15,154,224,100,8,134,47,163,42,182,29,225,22,84,14,169,22,78,104,89,124,154,60,90,81,248,166,24,94,185,85,66,186,24,200,192,182,226,149,170,234,26,79,126,28,195,86,204,126,233,235,127,180,127,74,216,98,60,189,224, +79,195,170,7,203,185,0,69,43,193,0,126,58,15,176,168,140,232,32,140,191,93,219,236,105,237,57,104,234,14,248,168,44,238,241,15,76,182,144,207,211,203,33,114,102,120,14,164,237,188,67,104,207,1,158,245,245,91,97,181,198,250,24,72,136,89,63,166,189,40, +68,14,244,39,49,243,33,178,98,14,120,46,33,106,81,15,25,25,121,10,253,40,229,174,132,80,223,200,162,216,247,64,146,102,94,182,20,23,32,229,30,53,58,93,100,164,223,66,68,15,208,198,178,97,66,115,61,76,113,157,71,241,138,118,0,121,122,28,65,147,188,137, +71,18,188,185,26,208,13,53,162,0,57,49,219,66,170,248,122,212,70,142,76,6,24,231,93,188,98,42,192,24,175,47,218,173,247,23,70,222,3,84,239,92,253,122,45,227,14,208,109,104,138,102,125,0,226,105,255,217,194,67,173,53,79,142,233,198,176,215,157,4,72,78, +228,70,196,176,142,212,236,189,5,30,213,206,38,240,146,214,242,192,212,10,82,184,90,143,73,205,203,218,29,199,113,156,157,246,14,130,136,121,153,169,217,8,58,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* timingon_png = (const char*) temp_binary_data_17; +const char* tabon_png = (const char*) temp_binary_data_17; } diff --git a/LatestCompiledAssets/BinaryData19.cpp b/LatestCompiledAssets/BinaryData19.cpp new file mode 100644 index 0000000..f032c2f --- /dev/null +++ b/LatestCompiledAssets/BinaryData19.cpp @@ -0,0 +1,28 @@ +/* ==================================== JUCER_BINARY_RESOURCE ==================================== + + This is an auto-generated file: Any edits you make may be overwritten! + +*/ + +#include + +namespace InspectorBinaryData +{ + +//================== timing-off.png ================== +static const unsigned char temp_binary_data_18[] = +{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,27,0,0,0,32,8,6,0,0,0,227,105,3,59,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,2,231,73,68,65,84,120, +1,221,87,221,109,19,65,16,254,102,29,243,138,169,128,165,3,167,131,164,130,196,9,72,60,37,151,6,146,75,5,113,58,56,211,0,23,158,144,32,137,59,136,169,0,211,193,150,224,71,20,97,15,51,123,235,99,157,248,236,59,99,241,192,39,89,218,211,206,206,183,51,59, +127,38,172,64,210,75,115,38,62,69,77,208,11,122,147,127,206,92,213,190,193,63,196,255,75,182,179,114,215,96,72,76,14,117,241,19,147,85,219,132,154,72,222,167,22,143,216,147,101,39,252,156,92,198,225,23,198,249,48,155,212,209,177,146,44,57,76,45,27,92, +0,156,4,130,42,45,35,241,192,77,126,151,229,104,74,38,36,29,54,124,37,203,20,205,224,136,232,50,191,205,134,203,54,159,5,72,242,46,237,10,209,247,152,72,20,140,8,116,73,45,218,165,25,189,186,185,27,144,230,20,25,218,87,139,148,36,136,90,102,190,63,57, +58,191,194,58,203,60,209,148,31,16,92,166,36,104,227,108,85,162,150,103,143,210,148,225,189,209,9,154,243,155,219,193,217,82,178,226,125,188,69,5,145,88,34,111,144,161,1,130,14,189,172,213,111,33,239,127,186,251,112,61,223,47,221,24,132,54,38,82,72,84, +58,113,243,62,130,91,69,79,63,121,155,238,45,144,137,11,146,249,109,68,224,122,19,162,37,132,62,29,120,198,31,23,200,130,175,21,78,136,250,104,0,13,6,159,131,79,9,65,131,240,105,147,227,244,208,147,133,133,23,86,171,208,0,39,199,231,23,234,42,126,244, +79,176,136,25,212,59,133,117,224,11,79,198,140,131,72,96,136,154,208,96,144,176,207,194,37,7,79,247,181,170,132,180,80,182,61,205,93,3,226,174,63,32,97,94,183,236,68,81,39,199,105,80,249,198,6,163,114,189,131,174,17,86,139,194,170,31,168,9,110,249,71, +183,98,210,56,191,207,170,171,204,20,227,114,61,131,213,0,153,39,97,61,171,52,148,217,23,100,71,109,234,173,17,143,117,218,198,253,44,255,154,141,196,229,61,41,93,189,58,149,37,38,214,126,166,7,196,37,252,186,238,169,170,66,251,12,109,209,59,13,107,130, +147,0,33,239,87,46,92,179,93,76,209,141,214,206,16,227,91,248,180,113,105,217,6,162,201,204,73,164,143,141,68,73,94,110,114,253,177,109,29,52,61,66,32,137,243,138,20,48,62,183,194,135,108,38,218,102,176,5,72,135,255,211,211,218,69,101,242,209,40,77,240, +178,20,154,242,189,102,59,254,2,69,243,244,163,132,90,149,207,163,214,147,229,95,178,177,182,149,32,107,37,105,31,54,37,148,122,121,170,245,50,124,186,185,85,158,120,65,80,198,109,138,30,85,90,255,126,221,92,90,50,183,76,228,252,110,124,158,158,30,152, +17,50,138,231,123,113,131,84,138,235,42,82,239,1,131,36,84,118,91,18,181,228,162,226,177,88,118,249,116,117,148,246,163,30,55,151,212,131,78,10,175,175,161,12,188,244,69,156,125,46,117,98,57,45,99,203,46,87,57,55,250,208,37,244,27,252,139,153,172,235, +242,107,39,98,79,106,112,40,86,28,72,150,90,177,216,150,202,73,70,243,153,20,133,22,134,90,51,215,233,250,13,140,194,63,59,254,43,233,232,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; + +const char* timingoff_png = (const char*) temp_binary_data_18; +} diff --git a/LatestCompiledAssets/BinaryData20.cpp b/LatestCompiledAssets/BinaryData20.cpp new file mode 100644 index 0000000..3f58919 --- /dev/null +++ b/LatestCompiledAssets/BinaryData20.cpp @@ -0,0 +1,28 @@ +/* ==================================== JUCER_BINARY_RESOURCE ==================================== + + This is an auto-generated file: Any edits you make may be overwritten! + +*/ + +#include + +namespace InspectorBinaryData +{ + +//================== timing-on.png ================== +static const unsigned char temp_binary_data_19[] = +{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,27,0,0,0,32,8,6,0,0,0,227,105,3,59,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,2,248,73,68,65,84,120, +1,221,87,75,78,27,65,16,173,234,25,67,118,33,155,72,136,79,134,27,12,55,176,79,144,112,2,204,9,192,18,24,101,133,189,138,8,72,192,9,48,39,192,55,176,115,2,38,39,200,40,88,33,75,86,17,193,51,93,169,238,158,143,191,67,27,172,44,120,210,88,221,170,158,121, +221,213,85,175,202,8,5,160,222,113,11,16,183,193,22,34,222,192,229,207,225,84,51,252,71,188,94,50,183,208,42,157,54,56,113,8,182,120,120,115,95,100,70,176,4,221,125,241,32,118,202,32,112,9,72,242,131,33,56,252,60,184,1,110,212,238,109,190,129,197,4,103, +76,16,237,242,170,42,207,150,166,127,5,187,32,233,10,87,235,45,152,149,140,126,156,45,193,98,116,4,68,123,48,27,66,136,169,134,235,135,237,73,198,177,0,161,222,153,15,139,253,155,33,34,181,115,196,26,16,108,194,227,159,119,184,82,71,149,83,32,177,194, +235,174,120,203,97,178,210,99,215,94,211,221,201,17,60,117,50,77,132,81,39,115,153,38,137,118,138,18,53,127,247,120,15,80,28,229,238,22,45,92,217,223,153,72,166,239,71,70,55,217,98,98,119,172,30,158,195,12,208,65,68,78,135,61,224,25,62,108,224,242,65, +51,181,231,110,164,126,231,37,68,122,231,202,3,24,87,50,183,74,106,208,237,73,121,136,140,122,95,171,217,110,36,53,159,67,52,70,8,104,210,65,208,229,16,25,255,166,23,26,226,218,97,3,102,128,10,6,125,5,163,132,32,47,146,169,71,191,78,63,25,222,159,60, +72,79,69,208,132,25,64,191,79,119,149,171,64,170,43,24,193,227,194,121,118,58,160,93,77,6,14,124,204,22,244,75,109,176,37,210,9,47,141,187,137,46,70,237,90,85,84,90,24,123,89,229,174,224,129,111,172,216,181,149,29,77,68,201,105,36,92,76,189,99,41,186, +217,216,141,124,193,145,227,25,3,125,7,91,80,116,153,184,62,192,181,250,116,149,41,245,131,108,140,228,137,60,129,201,238,84,42,148,217,45,160,164,73,196,91,133,139,7,171,128,33,155,13,184,118,208,133,88,108,241,201,182,108,148,37,127,17,238,93,157,128, +218,37,248,193,250,189,245,125,187,64,42,245,189,124,226,132,28,32,144,250,181,12,243,135,159,141,92,201,100,136,223,146,169,55,40,45,115,129,200,58,179,16,223,215,3,1,127,221,214,4,227,139,97,210,67,7,146,66,215,124,94,229,150,42,37,26,178,202,58,233, +195,60,32,227,188,166,137,88,43,147,137,70,73,181,204,128,112,173,43,245,11,96,138,167,172,38,211,86,26,181,154,140,123,135,64,149,149,196,232,193,66,191,243,92,66,186,59,221,214,122,105,16,166,167,210,60,67,11,123,39,220,110,211,118,190,176,84,193,229, +90,8,54,36,99,125,11,139,176,136,54,7,115,17,199,94,40,69,231,3,132,160,202,59,8,167,57,141,52,33,169,106,101,79,171,135,34,34,170,104,143,13,96,114,119,117,123,220,224,208,25,109,90,2,35,0,137,134,146,120,203,151,224,51,129,63,210,230,5,74,198,38,169, +203,212,190,209,52,165,162,97,255,47,70,157,70,22,86,249,39,59,98,211,196,184,170,210,114,221,35,111,200,85,234,94,101,204,162,224,180,181,102,62,129,127,223,116,102,170,183,33,227,63,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; + +const char* timingon_png = (const char*) temp_binary_data_19; +} diff --git a/LatestCompiledAssets/InspectorBinaryData.h b/LatestCompiledAssets/InspectorBinaryData.h index 2ef7177..507e1c2 100644 --- a/LatestCompiledAssets/InspectorBinaryData.h +++ b/LatestCompiledAssets/InspectorBinaryData.h @@ -42,7 +42,7 @@ namespace InspectorBinaryData const int logo_pngSize = 25781; extern const char* moveoff_png; - const int moveoff_pngSize = 1076; + const int moveoff_pngSize = 1093; extern const char* moveon_png; const int moveon_pngSize = 958; @@ -56,6 +56,12 @@ namespace InspectorBinaryData extern const char* speedometeron_png; const int speedometeron_pngSize = 1371; + extern const char* taboff_png; + const int taboff_pngSize = 531; + + extern const char* tabon_png; + const int tabon_pngSize = 503; + extern const char* timingoff_png; const int timingoff_pngSize = 850; @@ -63,7 +69,7 @@ namespace InspectorBinaryData const int timingon_pngSize = 867; // Number of elements in the namedResourceList and originalFileNames arrays. - const int namedResourceListSize = 18; + const int namedResourceListSize = 20; // Points to the start of a list of resource names. extern const char* namedResourceList[]; diff --git a/melatonin/helpers/misc.h b/melatonin/helpers/misc.h index cd916ce..d481ed5 100644 --- a/melatonin/helpers/misc.h +++ b/melatonin/helpers/misc.h @@ -1,4 +1,5 @@ #pragma once +//#include "InspectorBinaryData.h" // uncomment when adding assets via CMake #include "../../LatestCompiledAssets/InspectorBinaryData.h" #include diff --git a/melatonin/inspector_component.h b/melatonin/inspector_component.h index f41f160..43db65b 100644 --- a/melatonin/inspector_component.h +++ b/melatonin/inspector_component.h @@ -27,8 +27,10 @@ namespace melatonin setMouseClickGrabsKeyboardFocus (false); addAndMakeVisible (enabledButton); - addAndMakeVisible (fpsToggle); addAndMakeVisible (logo); + addAndMakeVisible (fpsToggle); + addAndMakeVisible (moveToggle); + addAndMakeVisible (tabToggle); addChildComponent (tree); addChildComponent (emptySearchLabel); @@ -145,6 +147,11 @@ namespace melatonin searchBox.giveAwayKeyboardFocus(); }; + tabToggle.on = false; + tabToggle.onClick = [this] { + toggleSelectionMode(tabToggle.on); + }; + // the tree view is empty even if inspector is enabled // since at the moment when this panel getting initialized, the root component most likely doesn't have any children YET // we can either wait and launch async update or add empty label @@ -233,7 +240,8 @@ namespace melatonin topArea = mainCol.removeFromTop (headerHeight); auto toolbar = topArea; enabledButton.setBounds (toolbar.removeFromLeft (48)); - fpsToggle.setBounds (toolbar.removeFromLeft (48)); + fpsToggle.setBounds (toolbar.removeFromLeft (42)); + tabToggle.setBounds (toolbar.removeFromLeft (42)); logo.setBounds (toolbar.removeFromRight (56)); mainCol.removeFromTop (12); @@ -374,6 +382,7 @@ namespace melatonin std::function toggleCallback; std::function toggleOverlayCallback; std::function toggleFPSCallback; + std::function toggleSelectionMode; private: Component::SafePointer selectedComponent; @@ -409,6 +418,8 @@ namespace melatonin InspectorImageButton searchIcon { "search", { 8, 8 } }; InspectorImageButton enabledButton { "enabled", { 8, 6 }, true }; InspectorImageButton fpsToggle { "speedometer", { 2, 7 }, true }; + InspectorImageButton moveToggle { "move", { 0, 6 }, true }; + InspectorImageButton tabToggle { "tab", { 0, 6 }, true }; juce::String lastSearchText; diff --git a/melatonin_inspector.cpp b/melatonin_inspector.cpp index ce09792..00f7d87 100644 --- a/melatonin_inspector.cpp +++ b/melatonin_inspector.cpp @@ -3,8 +3,6 @@ // As recommended by the JUCE MODULE API, these cpp files are included by the main module cpp // See https://github.com/juce-framework/JUCE/blob/master/docs/JUCE%20Module%20Format.md#module-cpp-files -#include -JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE("-Wredundant-decls") // NOLINTBEGIN(bugprone-suspicious-include) #include "LatestCompiledAssets/BinaryData1.cpp" #include "LatestCompiledAssets/BinaryData10.cpp" @@ -16,7 +14,9 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE("-Wredundant-decls") #include "LatestCompiledAssets/BinaryData16.cpp" #include "LatestCompiledAssets/BinaryData17.cpp" #include "LatestCompiledAssets/BinaryData18.cpp" +#include "LatestCompiledAssets/BinaryData19.cpp" #include "LatestCompiledAssets/BinaryData2.cpp" +#include "LatestCompiledAssets/BinaryData20.cpp" #include "LatestCompiledAssets/BinaryData3.cpp" #include "LatestCompiledAssets/BinaryData4.cpp" #include "LatestCompiledAssets/BinaryData5.cpp" @@ -25,5 +25,4 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE("-Wredundant-decls") #include "LatestCompiledAssets/BinaryData8.cpp" #include "LatestCompiledAssets/BinaryData9.cpp" // NOLINTEND(bugprone-suspicious-include) -JUCE_END_IGNORE_WARNINGS_GCC_LIKE diff --git a/melatonin_inspector.h b/melatonin_inspector.h index 5d32534..1ba0a51 100644 --- a/melatonin_inspector.h +++ b/melatonin_inspector.h @@ -301,7 +301,7 @@ namespace melatonin if (newStatus) // without this, target apps that have UI to open the inspector // will select that piece of UI within the same click, see #70 - juce::Timer::callAfterDelay (500, [&]() { overlayMouseListener.enable(); }); + juce::Timer::callAfterDelay (500, [&] { overlayMouseListener.enable(); }); else { clearSelections(); @@ -335,6 +335,7 @@ namespace melatonin { if (newMode == selectionMode) return; + // Out with the old switch (selectionMode) { @@ -342,6 +343,7 @@ namespace melatonin juce::Desktop::getInstance().removeFocusChangeListener (this); break; case FOLLOWS_MOUSE: + overlayMouseListener.disable(); break; } @@ -353,6 +355,7 @@ namespace melatonin juce::Desktop::getInstance().addFocusChangeListener (this); break; case FOLLOWS_MOUSE: + overlayMouseListener.enable(); break; } } @@ -398,8 +401,7 @@ namespace melatonin void globalFocusChanged (Component* focusedComponent) override { - inspectorComponent.toggleOverlayCallback (true); - inspectorComponent.selectComponentCallback (focusedComponent); + selectComponent (focusedComponent); } private: @@ -432,6 +434,7 @@ namespace melatonin this->fpsMeter.setBounds (root->getLocalBounds().removeFromRight (60).removeFromTop (40)); this->fpsMeter.setVisible (enable); }; + inspectorComponent.toggleSelectionMode = [this] (bool enable) { this->setSelectionMode (enable ? FOLLOWS_FOCUS : FOLLOWS_MOUSE); }; } }; } From 65a1c2e27132ed06abfdddba9d7ea44dcab47413 Mon Sep 17 00:00:00 2001 From: Sudara Date: Sun, 17 Mar 2024 12:03:12 +0100 Subject: [PATCH 18/37] copy_cmake_assets.rb should insert JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE --- copy_cmake_assets.rb | 21 ++++++++++++--------- melatonin_inspector.cpp | 4 +++- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/copy_cmake_assets.rb b/copy_cmake_assets.rb index c5810cf..515cad5 100755 --- a/copy_cmake_assets.rb +++ b/copy_cmake_assets.rb @@ -3,7 +3,7 @@ # Note, this needs to be run from your PROJECT directory, not the module's directory # e.g. # modules/melatonin_inspector/copy_cmake_assets.rb -# +# # You can run it over and over without worry... require 'fileutils' @@ -22,31 +22,34 @@ if !File.directory? source_dir puts "source_dir not found, check the build_dir: " + source_dir elsif !File.directory? target_cpp_dir - puts "target_cpp_dir not found, check it: " + target_cpp_dir + puts "target_cpp_dir not found, check it: " + target_cpp_dir else - + puts "Removing existing *.cpp and InspectorBinaryData.h" FileUtils.rm_rf Dir.glob "#{target_cpp_dir}/*.cpp" FileUtils.rm_f target_h_file - + puts "Copying over the newly generated assets" FileUtils.cp Dir["#{source_dir}/*.cpp"], "#{target_cpp_dir}/" - + puts "Coping over InspectorBinaryData.h" FileUtils.cp "#{source_dir}/InspectorBinaryData.h", target_h_file - + puts "Rewriting #{mela_cpp_file} with new includes" cpp_file = File.open mela_cpp_file, 'w' cpp_file.write "// WARNING! This file is automatically written by copy_cmake_assets.rb\n\n" cpp_file.write "// As recommended by the JUCE MODULE API, these cpp files are included by the main module cpp\n" cpp_file.write "// See https://github.com/juce-framework/JUCE/blob/master/docs/JUCE%20Module%20Format.md#module-cpp-files\n\n" + cpp_file.write "#include \n" + cpp_file.write "JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE(\"-Wredundant-decls\")\n" cpp_file.write "// NOLINTBEGIN(bugprone-suspicious-include)\n" - + Dir["#{target_cpp_dir}/*.cpp"].each do |file| cpp_file.write "#include \"LatestCompiledAssets/#{File.basename(file)}\"\n" end - cpp_file.write "// NOLINTEND(bugprone-suspicious-include)\n\n" + cpp_file.write "// NOLINTEND(bugprone-suspicious-include)\n" + cpp_file.write "JUCE_END_IGNORE_WARNINGS_GCC_LIKE\n" cpp_file.close end -puts "All done." \ No newline at end of file +puts "All done." diff --git a/melatonin_inspector.cpp b/melatonin_inspector.cpp index 00f7d87..d742f71 100644 --- a/melatonin_inspector.cpp +++ b/melatonin_inspector.cpp @@ -3,6 +3,8 @@ // As recommended by the JUCE MODULE API, these cpp files are included by the main module cpp // See https://github.com/juce-framework/JUCE/blob/master/docs/JUCE%20Module%20Format.md#module-cpp-files +#include +JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE("-Wredundant-decls") // NOLINTBEGIN(bugprone-suspicious-include) #include "LatestCompiledAssets/BinaryData1.cpp" #include "LatestCompiledAssets/BinaryData10.cpp" @@ -25,4 +27,4 @@ #include "LatestCompiledAssets/BinaryData8.cpp" #include "LatestCompiledAssets/BinaryData9.cpp" // NOLINTEND(bugprone-suspicious-include) - +JUCE_END_IGNORE_WARNINGS_GCC_LIKE From ddd7e2a3192dff37f49798e1b3cce9a1e3f83a65 Mon Sep 17 00:00:00 2001 From: Sudara Date: Tue, 19 Mar 2024 13:27:48 +0100 Subject: [PATCH 19/37] When exiting the root element, existing hover outlines should clear. Resolves #104. --- melatonin/helpers/overlay_mouse_listener.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/melatonin/helpers/overlay_mouse_listener.h b/melatonin/helpers/overlay_mouse_listener.h index fc2815b..60b997f 100644 --- a/melatonin/helpers/overlay_mouse_listener.h +++ b/melatonin/helpers/overlay_mouse_listener.h @@ -90,8 +90,13 @@ namespace melatonin { if (event.originalComponent == root) { + // TODO: Sudara is wondering if this callback is needed... mouseExitCallback(); } + + // not sure if there's a better way to ask "is the mouse outside the plugin now?" + if (!root->contains(event.getEventRelativeTo(root).position)) + outlineComponentCallback (nullptr); } std::function outlineComponentCallback; From 65190b35d7a4483532fe5ba214b47192097e5f19 Mon Sep 17 00:00:00 2001 From: Sudara Date: Tue, 19 Mar 2024 14:52:34 +0100 Subject: [PATCH 20/37] Store "keyboard focus" in settings. Fix focus edge cases. --- melatonin/component_model.h | 2 +- melatonin/helpers/overlay_mouse_listener.h | 11 +++++-- melatonin/inspector_component.h | 21 +++++++------ melatonin_inspector.h | 34 ++++++++++++++++++---- 4 files changed, 49 insertions(+), 19 deletions(-) diff --git a/melatonin/component_model.h b/melatonin/component_model.h index e808684..8e2ef8d 100644 --- a/melatonin/component_model.h +++ b/melatonin/component_model.h @@ -1,7 +1,7 @@ #pragma once #include - +#include "helpers/component_helpers.h" #include "juce_gui_basics/juce_gui_basics.h" namespace melatonin diff --git a/melatonin/helpers/overlay_mouse_listener.h b/melatonin/helpers/overlay_mouse_listener.h index 60b997f..eba5a3f 100644 --- a/melatonin/helpers/overlay_mouse_listener.h +++ b/melatonin/helpers/overlay_mouse_listener.h @@ -36,14 +36,19 @@ namespace melatonin void enable() { + // replace me with an if condition if you are hitting this on purpose + jassert (!enabled); enabled = true; root->addMouseListener (this, true); } void disable() { - enabled = false; - root->removeMouseListener (this); + if (enabled) + { + enabled = false; + root->removeMouseListener (this); + } } void mouseEnter (const juce::MouseEvent& event) override @@ -95,7 +100,7 @@ namespace melatonin } // not sure if there's a better way to ask "is the mouse outside the plugin now?" - if (!root->contains(event.getEventRelativeTo(root).position)) + if (!root->contains (event.getEventRelativeTo (root).position)) outlineComponentCallback (nullptr); } diff --git a/melatonin/inspector_component.h b/melatonin/inspector_component.h index 43db65b..d3e40b6 100644 --- a/melatonin/inspector_component.h +++ b/melatonin/inspector_component.h @@ -2,12 +2,12 @@ #include "components/inspector_image_button.h" #include "helpers/misc.h" +#include "melatonin_inspector/melatonin/components/accesibility.h" #include "melatonin_inspector/melatonin/components/box_model.h" #include "melatonin_inspector/melatonin/components/color_picker.h" #include "melatonin_inspector/melatonin/components/component_tree_view_item.h" #include "melatonin_inspector/melatonin/components/preview.h" #include "melatonin_inspector/melatonin/components/properties.h" -#include "melatonin_inspector/melatonin/components/accesibility.h" #include "melatonin_inspector/melatonin/lookandfeel.h" /* @@ -86,8 +86,7 @@ namespace melatonin searchBox.setColour (juce::TextEditor::focusedOutlineColourId, juce::Colours::transparentBlack); searchBox.setTextToShowWhenEmpty ("Filter components...", colors::searchText); searchBox.setJustification (juce::Justification::centredLeft); - searchBox.onEscapeKey = [&] - { + searchBox.onEscapeKey = [&] { searchBox.setText (""); searchBox.giveAwayKeyboardFocus(); lastSearchText = {}; @@ -99,7 +98,7 @@ namespace melatonin auto searchText = searchBox.getText(); ensureTreeIsConstructed(); - if ( lastSearchText.isNotEmpty() && ! searchText.startsWith ( lastSearchText ) ) + if (lastSearchText.isNotEmpty() && !searchText.startsWith (lastSearchText)) { getRoot()->validateSubItems(); } @@ -136,8 +135,10 @@ namespace melatonin toggleCallback (!inspectorEnabled); }; + // TODO: refactor this "on" state, it's terribly named fpsToggle.on = false; fpsToggle.onClick = [this] { + // TODO: I don't like that the "on" state implicitly was toggled here settings->props->setValue ("fpsEnabled", fpsToggle.on); toggleFPSCallback (fpsToggle.on); }; @@ -147,9 +148,11 @@ namespace melatonin searchBox.giveAwayKeyboardFocus(); }; - tabToggle.on = false; + // TODO: sorta sketchy to "know" the enum default... + tabToggle.on = settings->props->getIntValue ("selectionMode", 0); tabToggle.onClick = [this] { - toggleSelectionMode(tabToggle.on); + settings->props->setValue ("selectionMode", fpsToggle.on); + toggleSelectionMode (tabToggle.on); }; // the tree view is empty even if inspector is enabled @@ -263,7 +266,7 @@ namespace melatonin colorPickerPanel.setBounds (colorPickerBounds.removeFromTop (32).removeFromLeft (200)); accessibilityPanel.setBounds (mainCol.removeFromTop (32)); - accessibility.setBounds (mainCol.removeFromTop (accessibility.isVisible() ? 110 : 0).withTrimmedLeft(32)); + accessibility.setBounds (mainCol.removeFromTop (accessibility.isVisible() ? 110 : 0).withTrimmedLeft (32)); propertiesPanel.setBounds (mainCol.removeFromTop (33)); // extra pixel for divider properties.setBounds (mainCol.withTrimmedLeft (32)); @@ -281,7 +284,7 @@ namespace melatonin tree.setBounds (treeViewBounds); } - void displayComponentInfo (Component* component, bool collapseTreeBeforeSelection=false) + void displayComponentInfo (Component* component, bool collapseTreeBeforeSelection = false) { TRACE_COMPONENT(); @@ -315,7 +318,7 @@ namespace melatonin } } - void selectComponent (Component* component, bool collapseTreeBeforeSelection=false) + void selectComponent (Component* component, bool collapseTreeBeforeSelection = false) { TRACE_COMPONENT(); diff --git a/melatonin_inspector.h b/melatonin_inspector.h index 1ba0a51..6c3d7ac 100644 --- a/melatonin_inspector.h +++ b/melatonin_inspector.h @@ -86,6 +86,10 @@ namespace melatonin setupCallbacks(); setResizable (true, false); // calls resized + + // order mattecrs, set the mode before we toggle on + setSelectionMode (static_cast (settings->props->getIntValue ("inspectorSelectionMode", FOLLOWS_MOUSE))); + toggle (inspectorEnabledAtStart); } @@ -95,6 +99,10 @@ namespace melatonin this->removeKeyListener (&keyListener); + // the mouse listener is owned and removes itself on destruction + if (selectionMode == FOLLOWS_FOCUS) + juce::Desktop::getInstance().removeFocusChangeListener (this); + // needed, otherwise removing look and feel will save bounds settings->props.reset(); setLookAndFeel (nullptr); @@ -299,9 +307,12 @@ namespace melatonin overlay.setVisible (newStatus); if (newStatus) - // without this, target apps that have UI to open the inspector - // will select that piece of UI within the same click, see #70 - juce::Timer::callAfterDelay (500, [&] { overlayMouseListener.enable(); }); + { + if (selectionMode == FOLLOWS_MOUSE) + // without this, target apps that have UI to open the inspector + // will select that piece of UI within the same click, see #70 + callAfterDelay (500, [&] { overlayMouseListener.enable(); }); + } else { clearSelections(); @@ -340,6 +351,7 @@ namespace melatonin switch (selectionMode) { case FOLLOWS_FOCUS: + selectComponent (nullptr); juce::Desktop::getInstance().removeFocusChangeListener (this); break; case FOLLOWS_MOUSE: @@ -358,6 +370,9 @@ namespace melatonin overlayMouseListener.enable(); break; } + + settings->props->setValue ("inspectorSelectionMode", selectionMode); + settings->saveIfNeeded(); } private: @@ -401,10 +416,17 @@ namespace melatonin void globalFocusChanged (Component* focusedComponent) override { - selectComponent (focusedComponent); + // nullptr focus events fire when focus is lost + if (focusedComponent == nullptr) + return; + + // we only want to respond to focus events related to the UI under inspection (root) + // Unfortunately, we can't test to see if the focusedComponent is a child of root + // because JUCE UI like list boxes or text editors sometimes technically have no parent :/ + if (focusedComponent != root && focusedComponent->getTopLevelComponent() != inspectorComponent.getTopLevelComponent()) + selectComponent (focusedComponent); } - private: void timerCallback() override { for (auto& ms : juce::Desktop::getInstance().getMouseSources()) @@ -420,7 +442,7 @@ namespace melatonin overlayMouseListener.selectComponentCallback = [this] (Component* c) { this->selectComponent (c, true); }; overlayMouseListener.componentStartDraggingCallback = [this] (Component* c, const juce::MouseEvent& e) { this->startDragComponent (c, e); }; overlayMouseListener.componentDraggedCallback = [this] (Component* c, const juce::MouseEvent& e) { this->dragComponent (c, e); }; - overlayMouseListener.mouseExitCallback = [this]() { if (this->inspectorEnabled) inspectorComponent.redisplaySelectedComponent(); }; + overlayMouseListener.mouseExitCallback = [this] { if (this->inspectorEnabled) inspectorComponent.redisplaySelectedComponent(); }; inspectorComponent.selectComponentCallback = [this] (Component* c) { this->selectComponent (c, false); }; inspectorComponent.outlineComponentCallback = [this] (Component* c) { this->outlineComponent (c); }; From 9d347868b324e6a9192968e23d5472db865b729b Mon Sep 17 00:00:00 2001 From: Sudara Date: Wed, 20 Mar 2024 10:38:44 +0100 Subject: [PATCH 21/37] Keyboard focus and selection should be technically accurate re: inspector --- melatonin_inspector.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/melatonin_inspector.h b/melatonin_inspector.h index 6c3d7ac..33ffeba 100644 --- a/melatonin_inspector.h +++ b/melatonin_inspector.h @@ -377,13 +377,13 @@ namespace melatonin private: juce::SharedResourcePointer settings; - melatonin::InspectorLookAndFeel inspectorLookAndFeel; - melatonin::InspectorComponent inspectorComponent; + InspectorLookAndFeel inspectorLookAndFeel; + InspectorComponent inspectorComponent; juce::Component::SafePointer root; bool inspectorEnabled = false; - melatonin::Overlay overlay; - melatonin::FPSMeter fpsMeter; - melatonin::OverlayMouseListener overlayMouseListener; + Overlay overlay; + FPSMeter fpsMeter; + OverlayMouseListener overlayMouseListener; InspectorKeyCommands keyListener { *this }; bool rootFollowsComponentUnderMouse = false; @@ -416,15 +416,15 @@ namespace melatonin void globalFocusChanged (Component* focusedComponent) override { - // nullptr focus events fire when focus is lost + // ignore nullptr focus events, they are frequent and cause glitchiness if (focusedComponent == nullptr) return; - // we only want to respond to focus events related to the UI under inspection (root) - // Unfortunately, we can't test to see if the focusedComponent is a child of root - // because JUCE UI like list boxes or text editors sometimes technically have no parent :/ - if (focusedComponent != root && focusedComponent->getTopLevelComponent() != inspectorComponent.getTopLevelComponent()) - selectComponent (focusedComponent); + // This gets sent all components, even subcomponents of the inspector + // (which will result in the selection being cleared). + // I tried filtering those out for cleaner UX, + // but it caused glitchy incorrectness in focus selections + selectComponent (focusedComponent); } void timerCallback() override From 2ddbaa0cda65d6cf43c8ccb8dd02b3cf5a0e3602 Mon Sep 17 00:00:00 2001 From: Roland Rabien Date: Thu, 4 Apr 2024 15:13:44 -0700 Subject: [PATCH 22/37] Add button properties --- melatonin/component_model.h | 40 +++++++++++++++++++++++++++++++ melatonin/components/properties.h | 10 ++++++++ 2 files changed, 50 insertions(+) diff --git a/melatonin/component_model.h b/melatonin/component_model.h index e808684..2c6a1c5 100644 --- a/melatonin/component_model.h +++ b/melatonin/component_model.h @@ -24,6 +24,8 @@ namespace melatonin juce::Value pickedColor; juce::Value timing1, timing2, timing3, timingMax, hasChildren; + juce::Value isToggleable, toggleState, clickTogglesState, radioGroupId; + struct AccessiblityDetail { juce::Value title, value, role, handlerType; @@ -140,6 +142,14 @@ namespace melatonin typeValue = type (*selectedComponent); accessibilityHandledValue = selectedComponent->isAccessible(); + if (auto button = dynamic_cast (selectedComponent.getComponent())) + { + isToggleable = button->isToggleable(); + toggleState = button->getToggleState(); + clickTogglesState = button->getClickingTogglesState(); + radioGroupId = button->getRadioGroupId(); + } + nameValue.addListener(this); widthValue.addListener (this); heightValue.addListener (this); @@ -154,6 +164,11 @@ namespace melatonin interceptsMouseValue.addListener (this); childrenInterceptsMouseValue.addListener (this); + isToggleable.addListener (this); + toggleState.addListener (this); + clickTogglesState.addListener (this); + radioGroupId.addListener (this); + if (selectedComponent->isAccessible() && selectedComponent->getAccessibilityHandler()) { auto* accH = selectedComponent->getAccessibilityHandler(); @@ -260,6 +275,11 @@ namespace melatonin interceptsMouseValue.removeListener (this); childrenInterceptsMouseValue.removeListener (this); + isToggleable.removeListener (this); + toggleState.removeListener (this); + clickTogglesState.removeListener (this); + radioGroupId.removeListener (this); + for (auto& np : namedProperties) np.value.removeListener (this); @@ -321,6 +341,26 @@ namespace melatonin { selectedComponent->setInterceptsMouseClicks (interceptsMouseValue.getValue(), childrenInterceptsMouseValue.getValue()); } + else if (value.refersToSameSourceAs (isToggleable)) + { + if (auto button = dynamic_cast (selectedComponent.getComponent())) + button->setToggleable (isToggleable.getValue()); + } + else if (value.refersToSameSourceAs (toggleState)) + { + if (auto button = dynamic_cast (selectedComponent.getComponent())) + button->setToggleState (toggleState.getValue(), juce::dontSendNotification); + } + else if (value.refersToSameSourceAs (clickTogglesState)) + { + if (auto button = dynamic_cast (selectedComponent.getComponent())) + button->setClickingTogglesState (clickTogglesState.getValue()); + } + else if (value.refersToSameSourceAs (radioGroupId)) + { + if (auto button = dynamic_cast (selectedComponent.getComponent())) + button->setRadioGroupId (radioGroupId.getValue()); + } else { for (auto& nv : namedProperties) diff --git a/melatonin/components/properties.h b/melatonin/components/properties.h index 9addc2b..16c128c 100644 --- a/melatonin/components/properties.h +++ b/melatonin/components/properties.h @@ -105,6 +105,16 @@ namespace melatonin } } + // add class specific properies + if (dynamic_cast (model.getSelectedComponent())) + { + props.addArray (juce::Array { + new juce::BooleanPropertyComponent (model.isToggleable, "Is Toggleable", ""), + new juce::BooleanPropertyComponent (model.toggleState, "Toggle State", ""), + new juce::BooleanPropertyComponent (model.clickTogglesState, "Clicking Toggles State", ""), + new juce::TextPropertyComponent (model.radioGroupId, "Radio Group ID", 5, false) }); + } + // then the rest of the component flags props.addArray (juce::Array { new juce::TextPropertyComponent (model.lookAndFeelValue, "LookAndFeel", 200, false, false), From 27392d618203b16356abd1f17fa6dcde0b14cda4 Mon Sep 17 00:00:00 2001 From: Sudara Date: Thu, 11 Apr 2024 13:50:32 -0600 Subject: [PATCH 23/37] Only select components that are under the root's peer --- melatonin_inspector.h | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/melatonin_inspector.h b/melatonin_inspector.h index 33ffeba..d2ea8e3 100644 --- a/melatonin_inspector.h +++ b/melatonin_inspector.h @@ -420,11 +420,10 @@ namespace melatonin if (focusedComponent == nullptr) return; - // This gets sent all components, even subcomponents of the inspector - // (which will result in the selection being cleared). - // I tried filtering those out for cleaner UX, - // but it caused glitchy incorrectness in focus selections - selectComponent (focusedComponent); + // This gets sent all components, even subcomponents of the inspector itself + // (which is undesirable since we're not dogfoodiing). + if (focusedComponent->getPeer() == root->getPeer()) + selectComponent (focusedComponent); } void timerCallback() override From eabe3a5cd75be08a080426244a79a35d3533d797 Mon Sep 17 00:00:00 2001 From: Ruurd Adema Date: Fri, 19 Apr 2024 20:22:56 +0200 Subject: [PATCH 24/37] Unsubscribe Accessibility from model in destructor. Fixes #109. --- melatonin/components/accesibility.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/melatonin/components/accesibility.h b/melatonin/components/accesibility.h index b47d509..1b3360c 100644 --- a/melatonin/components/accesibility.h +++ b/melatonin/components/accesibility.h @@ -13,6 +13,11 @@ namespace melatonin model.addListener (*this); } + ~Accessibility() override + { + model.removeListener (*this); + } + void updateProperties() { panel.clear(); From fd7923be65d53805aaf44955b03b956ce5f71c5a Mon Sep 17 00:00:00 2001 From: James J Date: Tue, 23 Apr 2024 23:31:13 +0100 Subject: [PATCH 25/37] Make copy of property value string when displaying properties with object values --- melatonin/components/properties.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/melatonin/components/properties.h b/melatonin/components/properties.h index 16c128c..53dd748 100644 --- a/melatonin/components/properties.h +++ b/melatonin/components/properties.h @@ -99,7 +99,10 @@ namespace melatonin } else if (!propertiesToIgnore.contains (nv.name)) { - auto customProperty = new juce::TextPropertyComponent (nv.value, nv.name, 200, false); + const auto value = nv.value.getValue().isObject() + ? juce::Value (nv.value.getValue().toString()) + : nv.value; + auto customProperty = new juce::TextPropertyComponent (value, nv.name, 200, false); customProperty->getProperties().set ("isUserProperty", true); props.add (customProperty); } From 6b6ac9d1f48c2cf8909a641ba1c92884f0bccaea Mon Sep 17 00:00:00 2001 From: Sudara Date: Sat, 11 May 2024 20:00:04 +0200 Subject: [PATCH 26/37] Update CI to macos-14 windows-2022 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2774b5b..1e54fca 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,7 +33,7 @@ jobs: fail-fast: false matrix: app: [ member_enabled, member_disabled, unique_ptr_enabled, unique_ptr_disabled ] - os: [ macos-latest, windows-latest, ubuntu-latest ] + os: [ macos-14, windows-2022, ubuntu-latest ] steps: - name: Checkout From 64eaf7db343f42b61ba12db6f23b634b9eab2633 Mon Sep 17 00:00:00 2001 From: Sudara Date: Sat, 11 May 2024 20:06:22 +0200 Subject: [PATCH 27/37] Bump sccache-action to 0.0.4 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1e54fca..6200e39 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,7 +51,7 @@ jobs: - name: Run sccache-cache - uses: mozilla-actions/sccache-action@v0.0.3 + uses: mozilla-actions/sccache-action@v0.0.4 - name: Configure run: cmake -B Builds -DTARGET_NAME:STRING=${{ matrix.app }} From cf56ab9bca8d6632e9b3619d347c32de8367a0bc Mon Sep 17 00:00:00 2001 From: Sudara Date: Sat, 11 May 2024 20:08:59 +0200 Subject: [PATCH 28/37] Use latest xcode to please juce --- .github/workflows/ci.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6200e39..0b9f516 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -49,7 +49,13 @@ jobs: sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 9 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 9 - + # This block can be removed once 15.1 is default (JUCE requires it when building on macOS 14) + - name: Use latest Xcode on system (macOS) + if: ${{ matrix.os == 'macos-14' }} + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: latest-stable + - name: Run sccache-cache uses: mozilla-actions/sccache-action@v0.0.4 From 3b1deb611a9e3e3826e6c307fb54823112724a28 Mon Sep 17 00:00:00 2001 From: dikadk Date: Sun, 17 Mar 2024 21:59:16 -0400 Subject: [PATCH 29/37] Updated logic for the "Move" toggle --- melatonin/components/overlay.h | 47 +++++++++++++++------- melatonin/helpers/overlay_mouse_listener.h | 17 +++++++- melatonin/inspector_component.h | 30 ++++++++++++-- melatonin_inspector.h | 16 ++++++++ 4 files changed, 92 insertions(+), 18 deletions(-) diff --git a/melatonin/components/overlay.h b/melatonin/components/overlay.h index cc90e76..93007cf 100644 --- a/melatonin/components/overlay.h +++ b/melatonin/components/overlay.h @@ -188,18 +188,25 @@ namespace melatonin // take over the outline from the hover outlinedComponent = nullptr; selectedComponent = component; - resizable = std::make_unique (component, &constrainer); - resizable->setBorderThickness (juce::BorderSize (6)); - addAndMakeVisible (*resizable); - setSelectedAndResizeableBounds (component); + setupResizableComponent(selectedComponent); + + setSelectedAndResizeableBounds(component); repaint(); + } - if (selectedComponent) - { - constrainer.setMinimumOnscreenAmounts (selectedComponent->getHeight(), selectedComponent->getWidth(), selectedComponent->getHeight(), selectedComponent->getWidth()); - // reset previous selection and update mouse cursor - selectedComponent->setMouseCursor (juce::MouseCursor::DraggingHandCursor); - } + void setupResizableComponent (Component* component) { + if(isDraggingEnabled) { + resizable = std::make_unique(component, &constrainer); + dynamic_cast(resizable.get())->setBorderThickness(juce::BorderSize(6)); + addAndMakeVisible(*resizable); + + if (selectedComponent) { + constrainer.setMinimumOnscreenAmounts(selectedComponent->getHeight(), selectedComponent->getWidth(), selectedComponent->getHeight(), selectedComponent->getWidth()); + // reset previous selection and update mouse cursor + selectedComponent->setMouseCursor(juce::MouseCursor::DraggingHandCursor); + } + } else if (resizable) + resizable.reset(); } // When our selected component has been dragged or resized this is our callback @@ -208,6 +215,9 @@ namespace melatonin { TRACE_COMPONENT(); + if (!isDraggingEnabled) + return; + if (wasResized || wasMoved) { // sort of annoying if hover triggers on resize @@ -235,7 +245,7 @@ namespace melatonin void mouseEnter (const juce::MouseEvent&) override { - if (!selectedComponent) + if (!selectedComponent || !isDraggingEnabled) return; selectedComponent->setMouseCursor (juce::MouseCursor::DraggingHandCursor); @@ -244,7 +254,7 @@ namespace melatonin void mouseMove (const juce::MouseEvent&) override { - if (!selectedComponent) + if (!selectedComponent || !isDraggingEnabled) return; selectedComponent->setMouseCursor (juce::MouseCursor::DraggingHandCursor); repaint(); @@ -272,12 +282,20 @@ namespace melatonin } } + void enableDragging (bool enableDragging) + { + isDraggingEnabled = enableDragging; + + setupResizableComponent(selectedComponent); + } + private: Component::SafePointer outlinedComponent; Component::SafePointer hoveredComponent; juce::Rectangle outlinedBounds; bool isDragging = false; + bool isDraggingEnabled = false; juce::ComponentDragger componentDragger; juce::ComponentBoundsConstrainer boundsConstrainer; @@ -303,7 +321,7 @@ namespace melatonin distanceToRightLabelBounds, distanceToBottomLabelBounds; - std::unique_ptr resizable; + std::unique_ptr resizable; juce::ComponentBoundsConstrainer constrainer; juce::Label dimensions; @@ -363,7 +381,8 @@ namespace melatonin selectedBounds = getLocalAreaForOutline (component, 1); drawDimensionsLabel(); calculateLinesToParent(); - resizable->setBounds (selectedBounds); + if (resizable) + resizable->setBounds (selectedBounds); repaint(); } diff --git a/melatonin/helpers/overlay_mouse_listener.h b/melatonin/helpers/overlay_mouse_listener.h index eba5a3f..581294d 100644 --- a/melatonin/helpers/overlay_mouse_listener.h +++ b/melatonin/helpers/overlay_mouse_listener.h @@ -51,6 +51,11 @@ namespace melatonin } } + void enableDragging (bool enable) + { + dragEnabled = enable; + } + void mouseEnter (const juce::MouseEvent& event) override { outlineComponentCallback (event.originalComponent); @@ -58,6 +63,9 @@ namespace melatonin void mouseMove (const juce::MouseEvent& event) override { + //if(!selectionEnabled || !dragEnabled) + // return; + if (outlineDistanceCallback && event.mods.isAltDown()) outlineDistanceCallback (event.originalComponent); else @@ -66,7 +74,7 @@ namespace melatonin void mouseUp (const juce::MouseEvent& event) override { - if (event.mods.isLeftButtonDown() && !isDragging) + if (event.mods.isLeftButtonDown()) { selectComponentCallback (event.originalComponent); } @@ -75,6 +83,9 @@ namespace melatonin void mouseDown (const juce::MouseEvent& event) override { + if(!dragEnabled) + return; + if (event.mods.isLeftButtonDown() && event.originalComponent->isMouseOverOrDragging()) { componentStartDraggingCallback (event.originalComponent, event); @@ -83,6 +94,9 @@ namespace melatonin void mouseDrag (const juce::MouseEvent& event) override { + if(!dragEnabled) + return; + // takes care of small mouse position drift on selection if (event.getDistanceFromDragStart() > 3 && event.originalComponent->isMouseOverOrDragging()) { @@ -117,5 +131,6 @@ namespace melatonin juce::Component* root = nullptr; bool enabled = false; bool isDragging { false }; + bool dragEnabled { false }, selectionEnabled { false }; }; } diff --git a/melatonin/inspector_component.h b/melatonin/inspector_component.h index d3e40b6..64ca6fc 100644 --- a/melatonin/inspector_component.h +++ b/melatonin/inspector_component.h @@ -27,9 +27,10 @@ namespace melatonin setMouseClickGrabsKeyboardFocus (false); addAndMakeVisible (enabledButton); + addAndMakeVisible (enableDragging); + addAndMakeVisible (fpsToggle); addAndMakeVisible (logo); addAndMakeVisible (fpsToggle); - addAndMakeVisible (moveToggle); addAndMakeVisible (tabToggle); addChildComponent (tree); @@ -136,6 +137,17 @@ namespace melatonin }; // TODO: refactor this "on" state, it's terribly named + enableDragging.on = settings->props->getBoolValue ("enableDragging", false); + enableDragging.onClick = [this] { + if (enableDragging.on) + tabToggle.on = false; + + toggleMoveCallback (enableDragging.on); + toggleSelectionMode (tabToggle.on); + + settings->props->setValue("enableDragging",enableDragging.on); + }; + fpsToggle.on = false; fpsToggle.onClick = [this] { // TODO: I don't like that the "on" state implicitly was toggled here @@ -151,8 +163,17 @@ namespace melatonin // TODO: sorta sketchy to "know" the enum default... tabToggle.on = settings->props->getIntValue ("selectionMode", 0); tabToggle.onClick = [this] { - settings->props->setValue ("selectionMode", fpsToggle.on); + settings->props->setValue ("selectionMode", tabToggle.on); toggleSelectionMode (tabToggle.on); + + toggleMoveCallback (enableDragging.on); + + if (tabToggle.on) + { + enableDragging.on = false; + toggleMoveCallback(false); + } + enableDragging.repaint(); }; // the tree view is empty even if inspector is enabled @@ -245,6 +266,8 @@ namespace melatonin enabledButton.setBounds (toolbar.removeFromLeft (48)); fpsToggle.setBounds (toolbar.removeFromLeft (42)); tabToggle.setBounds (toolbar.removeFromLeft (42)); + enableDragging.setBounds (toolbar.removeFromLeft (42)); + fpsToggle.setBounds (toolbar.removeFromLeft (48)); logo.setBounds (toolbar.removeFromRight (56)); mainCol.removeFromTop (12); @@ -386,6 +409,7 @@ namespace melatonin std::function toggleOverlayCallback; std::function toggleFPSCallback; std::function toggleSelectionMode; + std::function toggleMoveCallback; private: Component::SafePointer selectedComponent; @@ -420,8 +444,8 @@ namespace melatonin InspectorImageButton clearButton { "clear", { 0, 6 } }; InspectorImageButton searchIcon { "search", { 8, 8 } }; InspectorImageButton enabledButton { "enabled", { 8, 6 }, true }; + InspectorImageButton enableDragging { "move", { 2, 7 }, true }; InspectorImageButton fpsToggle { "speedometer", { 2, 7 }, true }; - InspectorImageButton moveToggle { "move", { 0, 6 }, true }; InspectorImageButton tabToggle { "tab", { 0, 6 }, true }; juce::String lastSearchText; diff --git a/melatonin_inspector.h b/melatonin_inspector.h index d2ea8e3..0eb73f8 100644 --- a/melatonin_inspector.h +++ b/melatonin_inspector.h @@ -65,6 +65,14 @@ namespace melatonin return false; } }; + + void restoreMenuState () + { + overlayMouseListener.enableDragging (settings->props->getBoolValue ("enableDragging", false)); + + overlay.enableDragging(settings->props->getBoolValue ("enableDragging", false)); + } + explicit Inspector (juce::Component& rootComponent, bool inspectorEnabledAtStart = true) : juce::DocumentWindow ("Melatonin Inspector", colors::background, 7, true) { @@ -76,6 +84,8 @@ namespace melatonin // needs to come before the LNF restoreBoundsIfNeeded(); + restoreMenuState(); + // use our own lnf for both overlay and inspector setLookAndFeel (&inspectorLookAndFeel); overlay.setLookAndFeel (&inspectorLookAndFeel); @@ -455,6 +465,12 @@ namespace melatonin this->fpsMeter.setBounds (root->getLocalBounds().removeFromRight (60).removeFromTop (40)); this->fpsMeter.setVisible (enable); }; + + inspectorComponent.toggleMoveCallback = [this] (bool enable) { + overlayMouseListener.enableDragging (enable); + overlay.enableDragging (enable); + }; + inspectorComponent.toggleSelectionMode = [this] (bool enable) { this->setSelectionMode (enable ? FOLLOWS_FOCUS : FOLLOWS_MOUSE); }; } }; From 0eab52ea536ab2e6223ba72422464d33caf561bd Mon Sep 17 00:00:00 2001 From: dikadk Date: Wed, 15 May 2024 23:45:41 -0400 Subject: [PATCH 30/37] cleanup --- melatonin_inspector.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/melatonin_inspector.h b/melatonin_inspector.h index 0eb73f8..7ce5583 100644 --- a/melatonin_inspector.h +++ b/melatonin_inspector.h @@ -68,9 +68,9 @@ namespace melatonin void restoreMenuState () { - overlayMouseListener.enableDragging (settings->props->getBoolValue ("enableDragging", false)); - - overlay.enableDragging(settings->props->getBoolValue ("enableDragging", false)); + bool propValue = settings->props->getBoolValue ("enableDragging", false); + overlayMouseListener.enableDragging (propValue); + overlay.enableDragging(propValue); } explicit Inspector (juce::Component& rootComponent, bool inspectorEnabledAtStart = true) From 2f4e181eb18143cc1932ef1a131f375315fb18c5 Mon Sep 17 00:00:00 2001 From: dikadk Date: Wed, 15 May 2024 23:48:59 -0400 Subject: [PATCH 31/37] Clean --- melatonin/helpers/overlay_mouse_listener.h | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/melatonin/helpers/overlay_mouse_listener.h b/melatonin/helpers/overlay_mouse_listener.h index 581294d..9e2a699 100644 --- a/melatonin/helpers/overlay_mouse_listener.h +++ b/melatonin/helpers/overlay_mouse_listener.h @@ -63,9 +63,6 @@ namespace melatonin void mouseMove (const juce::MouseEvent& event) override { - //if(!selectionEnabled || !dragEnabled) - // return; - if (outlineDistanceCallback && event.mods.isAltDown()) outlineDistanceCallback (event.originalComponent); else @@ -131,6 +128,6 @@ namespace melatonin juce::Component* root = nullptr; bool enabled = false; bool isDragging { false }; - bool dragEnabled { false }, selectionEnabled { false }; + bool dragEnabled { false }; }; } From 8bfdc7ef9dc04f078d84bd913028bcf4879254ed Mon Sep 17 00:00:00 2001 From: Sudara Date: Sat, 25 May 2024 13:05:03 +0200 Subject: [PATCH 32/37] Fix icon positioning --- melatonin/inspector_component.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/melatonin/inspector_component.h b/melatonin/inspector_component.h index 64ca6fc..afab45e 100644 --- a/melatonin/inspector_component.h +++ b/melatonin/inspector_component.h @@ -267,7 +267,6 @@ namespace melatonin fpsToggle.setBounds (toolbar.removeFromLeft (42)); tabToggle.setBounds (toolbar.removeFromLeft (42)); enableDragging.setBounds (toolbar.removeFromLeft (42)); - fpsToggle.setBounds (toolbar.removeFromLeft (48)); logo.setBounds (toolbar.removeFromRight (56)); mainCol.removeFromTop (12); @@ -444,7 +443,7 @@ namespace melatonin InspectorImageButton clearButton { "clear", { 0, 6 } }; InspectorImageButton searchIcon { "search", { 8, 8 } }; InspectorImageButton enabledButton { "enabled", { 8, 6 }, true }; - InspectorImageButton enableDragging { "move", { 2, 7 }, true }; + InspectorImageButton enableDragging { "move", { -1, 7 }, true }; InspectorImageButton fpsToggle { "speedometer", { 2, 7 }, true }; InspectorImageButton tabToggle { "tab", { 0, 6 }, true }; From 6342d4a50b1f047e9a57189603f0e17b617636d1 Mon Sep 17 00:00:00 2001 From: Sudara Date: Sat, 25 May 2024 13:34:46 +0200 Subject: [PATCH 33/37] Run clang tidy and consolidate restoreStateFromProps --- melatonin_inspector.h | 113 +++++++++++++++++++++--------------------- 1 file changed, 56 insertions(+), 57 deletions(-) diff --git a/melatonin_inspector.h b/melatonin_inspector.h index 7ce5583..52845d6 100644 --- a/melatonin_inspector.h +++ b/melatonin_inspector.h @@ -66,13 +66,6 @@ namespace melatonin } }; - void restoreMenuState () - { - bool propValue = settings->props->getBoolValue ("enableDragging", false); - overlayMouseListener.enableDragging (propValue); - overlay.enableDragging(propValue); - } - explicit Inspector (juce::Component& rootComponent, bool inspectorEnabledAtStart = true) : juce::DocumentWindow ("Melatonin Inspector", colors::background, 7, true) { @@ -84,7 +77,7 @@ namespace melatonin // needs to come before the LNF restoreBoundsIfNeeded(); - restoreMenuState(); + restoreStateFromProps(); // use our own lnf for both overlay and inspector setLookAndFeel (&inspectorLookAndFeel); @@ -97,9 +90,6 @@ namespace melatonin setResizable (true, false); // calls resized - // order mattecrs, set the mode before we toggle on - setSelectionMode (static_cast (settings->props->getIntValue ("inspectorSelectionMode", FOLLOWS_MOUSE))); - toggle (inspectorEnabledAtStart); } @@ -347,44 +337,6 @@ namespace melatonin std::function onClose; - enum SelectionMode { - FOLLOWS_MOUSE, - FOLLOWS_FOCUS - } selectionMode { FOLLOWS_MOUSE }; - - void setSelectionMode (SelectionMode newMode) - { - if (newMode == selectionMode) - return; - - // Out with the old - switch (selectionMode) - { - case FOLLOWS_FOCUS: - selectComponent (nullptr); - juce::Desktop::getInstance().removeFocusChangeListener (this); - break; - case FOLLOWS_MOUSE: - overlayMouseListener.disable(); - break; - } - - // And in with the new - selectionMode = newMode; - switch (selectionMode) - { - case FOLLOWS_FOCUS: - juce::Desktop::getInstance().addFocusChangeListener (this); - break; - case FOLLOWS_MOUSE: - overlayMouseListener.enable(); - break; - } - - settings->props->setValue ("inspectorSelectionMode", selectionMode); - settings->saveIfNeeded(); - } - private: juce::SharedResourcePointer settings; InspectorLookAndFeel inspectorLookAndFeel; @@ -455,23 +407,70 @@ namespace melatonin inspectorComponent.selectComponentCallback = [this] (Component* c) { this->selectComponent (c, false); }; inspectorComponent.outlineComponentCallback = [this] (Component* c) { this->outlineComponent (c); }; - inspectorComponent.toggleCallback = [this] (bool enable) { this->toggle (enable); }; - inspectorComponent.toggleOverlayCallback = [this] (bool enable) { + inspectorComponent.toggleCallback = [this] (const bool enable) { this->toggle (enable); }; + inspectorComponent.toggleOverlayCallback = [this] (const bool enable) { this->overlay.setVisible (enable); overlayMouseListener.enable(); }; - inspectorComponent.toggleFPSCallback = [this] (bool enable) { + inspectorComponent.toggleFPSCallback = [this] (const bool enable) { if (enable) this->fpsMeter.setBounds (root->getLocalBounds().removeFromRight (60).removeFromTop (40)); this->fpsMeter.setVisible (enable); }; - inspectorComponent.toggleMoveCallback = [this] (bool enable) { - overlayMouseListener.enableDragging (enable); - overlay.enableDragging (enable); - }; + inspectorComponent.toggleMoveCallback = [this] (const bool enable) { this->setDraggingEnabled (enable); }; - inspectorComponent.toggleSelectionMode = [this] (bool enable) { this->setSelectionMode (enable ? FOLLOWS_FOCUS : FOLLOWS_MOUSE); }; + inspectorComponent.toggleSelectionMode = [this] (const bool enable) { this->setSelectionMode (enable ? FOLLOWS_FOCUS : FOLLOWS_MOUSE); }; + } + + enum SelectionMode { + FOLLOWS_MOUSE, + FOLLOWS_FOCUS + } selectionMode { FOLLOWS_MOUSE }; + + void setSelectionMode (SelectionMode newMode) + { + if (newMode == selectionMode) + return; + + // Out with the old + switch (selectionMode) + { + case FOLLOWS_FOCUS: + selectComponent (nullptr); + juce::Desktop::getInstance().removeFocusChangeListener (this); + break; + case FOLLOWS_MOUSE: + overlayMouseListener.disable(); + break; + } + + // And in with the new + selectionMode = newMode; + switch (selectionMode) + { + case FOLLOWS_FOCUS: + juce::Desktop::getInstance().addFocusChangeListener (this); + break; + case FOLLOWS_MOUSE: + overlayMouseListener.enable(); + break; + } + + settings->props->setValue ("inspectorSelectionMode", selectionMode); + settings->saveIfNeeded(); + } + + void setDraggingEnabled (const bool enable) + { + overlayMouseListener.enableDragging (enable); + overlay.enableDragging (enable); + } + + void restoreStateFromProps() + { + setDraggingEnabled(settings->props->getBoolValue ("enableDragging", false)); + setSelectionMode (static_cast (settings->props->getIntValue ("inspectorSelectionMode", FOLLOWS_MOUSE))); } }; } From 6805cbeba2926491d1d57b18ec29d5dde1e3687b Mon Sep 17 00:00:00 2001 From: Sudara Date: Sat, 25 May 2024 13:34:59 +0200 Subject: [PATCH 34/37] Add lock-off and lock-on icons --- Assets/lock-off.png | Bin 0 -> 516 bytes Assets/lock-on.png | Bin 0 -> 474 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Assets/lock-off.png create mode 100644 Assets/lock-on.png diff --git a/Assets/lock-off.png b/Assets/lock-off.png new file mode 100644 index 0000000000000000000000000000000000000000..9fd0b291318c6b8c2244923b1172172884476e97 GIT binary patch literal 516 zcmV+f0{i`mP)98qy?P1HXHvNb&-cFbegP0dh)oEFm0R~obVLdSrXz@9Y7+k zkA83LrMtha0E1|RZ2R{Cl%GbAT6eqt z<3ij2xD00X9p+R|^P86{Me0WYWfjafABc0o+ln<)jZhqBM|orDB({wL*hT?tqX4#1 z0NW^lZ3`J-05jshob*AFasUQcoaT=vFc2V*fe=CnQSbqsC3lgU7DKiG0000c+p`fJ0 z49#XHxfmdG)B}3-{63g0A=yJA5Z%7q~??u(`L^_2n834&ety<<-K2XtXT)(bR7J$ zZ4%_v!}NWh4sQsVy3lK#R3~zuU-fyhWWNG=w%Ex;7v80#>u2f=%Pm63gGWr7-K7wu z54t7$0L;~`Ln{0!yfR$u_l&NpgZgP@$vyy81JHr)_Fra=cwr=fB{zq-CRdNndH)(< z6C{9d62Ld(Zy`?aFOhSkuUc>`fl@ Date: Sat, 25 May 2024 17:44:06 +0200 Subject: [PATCH 35/37] Resizing should work if component was selected before drag enabled --- melatonin/components/overlay.h | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/melatonin/components/overlay.h b/melatonin/components/overlay.h index 93007cf..15a176a 100644 --- a/melatonin/components/overlay.h +++ b/melatonin/components/overlay.h @@ -188,24 +188,28 @@ namespace melatonin // take over the outline from the hover outlinedComponent = nullptr; selectedComponent = component; - setupResizableComponent(selectedComponent); + setupResizableComponent (selectedComponent); - setSelectedAndResizeableBounds(component); + setSelectedAndResizeableBounds (component); repaint(); } - void setupResizableComponent (Component* component) { - if(isDraggingEnabled) { - resizable = std::make_unique(component, &constrainer); - dynamic_cast(resizable.get())->setBorderThickness(juce::BorderSize(6)); - addAndMakeVisible(*resizable); + void setupResizableComponent (Component* component) + { + if (isDraggingEnabled) + { + resizable = std::make_unique (component, &constrainer); + dynamic_cast (resizable.get())->setBorderThickness (juce::BorderSize (6)); + addAndMakeVisible (*resizable); - if (selectedComponent) { - constrainer.setMinimumOnscreenAmounts(selectedComponent->getHeight(), selectedComponent->getWidth(), selectedComponent->getHeight(), selectedComponent->getWidth()); + if (selectedComponent) + { + constrainer.setMinimumOnscreenAmounts (selectedComponent->getHeight(), selectedComponent->getWidth(), selectedComponent->getHeight(), selectedComponent->getWidth()); // reset previous selection and update mouse cursor - selectedComponent->setMouseCursor(juce::MouseCursor::DraggingHandCursor); + selectedComponent->setMouseCursor (juce::MouseCursor::DraggingHandCursor); } - } else if (resizable) + } + else if (resizable) resizable.reset(); } @@ -286,7 +290,11 @@ namespace melatonin { isDraggingEnabled = enableDragging; - setupResizableComponent(selectedComponent); + if (selectedComponent) + { + setupResizableComponent (selectedComponent); + setSelectedAndResizeableBounds (selectedComponent); + } } private: From 8174df18cae3258a30361208709d75a857b1ce3e Mon Sep 17 00:00:00 2001 From: Sudara Date: Sat, 25 May 2024 17:45:38 +0200 Subject: [PATCH 36/37] Compiled assets for the lock icon --- CMakeLists.txt | 2 +- LatestCompiledAssets/BinaryData1.cpp | 6 + LatestCompiledAssets/BinaryData11.cpp | 377 +------------------- LatestCompiledAssets/BinaryData12.cpp | 27 +- LatestCompiledAssets/BinaryData13.cpp | 384 ++++++++++++++++++++- LatestCompiledAssets/BinaryData14.cpp | 33 +- LatestCompiledAssets/BinaryData15.cpp | 38 +- LatestCompiledAssets/BinaryData16.cpp | 37 +- LatestCompiledAssets/BinaryData17.cpp | 32 +- LatestCompiledAssets/BinaryData18.cpp | 31 +- LatestCompiledAssets/BinaryData19.cpp | 24 +- LatestCompiledAssets/BinaryData20.cpp | 23 +- LatestCompiledAssets/BinaryData21.cpp | 28 ++ LatestCompiledAssets/BinaryData22.cpp | 28 ++ LatestCompiledAssets/InspectorBinaryData.h | 8 +- 15 files changed, 568 insertions(+), 510 deletions(-) create mode 100644 LatestCompiledAssets/BinaryData21.cpp create mode 100644 LatestCompiledAssets/BinaryData22.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 1397f6f..2565728 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,7 +55,7 @@ endif () # * Uncomment the following CMake lines to generate the MelatoninInspectorAssets binary # * uncomment #include "InspectorBinaryData.h in misc.h and comment out the LatestCompiledAssets include # * build as you would normally via CMake -# * run ./modules/melatonin_inspector/copy_cmake_assets.rb from your root PROJECT folder +# * run ./modules/melatonin_inspector/copy_cmake_assets.rb from your root PROJECT folder (not the melatonin_inspector folder) # * comment these lines back out and swap the misc.h include again #file(GLOB_RECURSE MelatoninInspectorAssetFiles CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/Assets/*") diff --git a/LatestCompiledAssets/BinaryData1.cpp b/LatestCompiledAssets/BinaryData1.cpp index 3274527..0feaa0f 100644 --- a/LatestCompiledAssets/BinaryData1.cpp +++ b/LatestCompiledAssets/BinaryData1.cpp @@ -94,6 +94,8 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) case 0xf2aeeae3: numBytes = 303; return expandon_png; case 0x14ab743c: numBytes = 673; return eyedropperoff_png; case 0xc74a0a86: numBytes = 671; return eyedropperon_png; + case 0x219463ce: numBytes = 516; return lockoff_png; + case 0x649be0b4: numBytes = 474; return lockon_png; case 0x78ded995: numBytes = 25781; return logo_png; case 0x48464668: numBytes = 1093; return moveoff_png; case 0xd13642da: numBytes = 958; return moveon_png; @@ -123,6 +125,8 @@ const char* namedResourceList[] = "expandon_png", "eyedropperoff_png", "eyedropperon_png", + "lockoff_png", + "lockon_png", "logo_png", "moveoff_png", "moveon_png", @@ -147,6 +151,8 @@ const char* originalFilenames[] = "expand-on.png", "eyedropper-off.png", "eyedropper-on.png", + "lock-off.png", + "lock-on.png", "logo.png", "move-off.png", "move-on.png", diff --git a/LatestCompiledAssets/BinaryData11.cpp b/LatestCompiledAssets/BinaryData11.cpp index f71a147..54c802b 100644 --- a/LatestCompiledAssets/BinaryData11.cpp +++ b/LatestCompiledAssets/BinaryData11.cpp @@ -9,374 +9,15 @@ namespace InspectorBinaryData { -//================== logo.png ================== +//================== lock-off.png ================== static const unsigned char temp_binary_data_10[] = -{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,118,0,0,0,108,8,6,0,0,0,191,234,70,236,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,100,74,73,68,65, -84,120,1,237,189,91,144,157,215,117,30,184,247,254,175,231,218,55,52,128,110,54,65,16,4,33,170,155,148,108,193,148,100,199,54,219,54,237,216,241,37,78,42,205,41,37,85,153,169,74,149,93,165,202,84,230,105,94,1,60,204,67,166,230,105,106,204,170,209,195, -212,164,230,65,25,64,185,141,149,40,78,16,171,17,57,178,101,11,150,45,17,109,154,132,72,64,4,187,1,52,186,79,119,159,251,127,217,123,190,111,237,255,52,154,87,145,18,237,154,139,126,242,160,207,253,242,175,189,214,250,214,183,46,91,171,191,130,195,57, -167,249,247,210,165,75,248,123,65,45,47,43,189,177,161,220,242,13,252,93,81,238,66,245,188,43,184,61,121,13,238,215,120,158,243,15,40,53,143,219,215,212,58,110,172,42,117,99,195,168,149,101,181,176,169,220,248,105,101,212,171,55,213,238,221,179,238,177, -198,45,115,162,117,218,77,63,174,204,55,95,191,105,91,115,103,117,119,71,185,34,188,99,14,58,133,123,236,180,82,221,111,20,174,245,153,179,90,221,194,245,150,114,173,238,45,221,153,9,229,115,15,58,75,248,188,91,106,22,239,113,18,239,209,63,184,133,219, -167,241,154,155,110,183,121,214,61,183,162,204,45,60,222,184,113,218,54,127,70,233,155,124,17,62,251,165,175,239,219,197,214,121,167,86,55,204,194,230,178,83,231,175,171,115,91,231,221,246,13,229,248,59,110,220,184,226,86,86,230,241,25,171,246,194,5, -229,46,93,122,248,59,121,240,190,201,117,62,198,219,90,107,167,62,194,67,171,143,240,152,8,148,7,191,240,197,139,151,212,229,203,203,213,125,107,138,194,229,181,229,27,87,32,224,53,17,244,218,26,158,187,177,206,147,160,22,22,148,62,143,199,175,95,87, -234,167,159,87,250,15,174,42,183,213,217,208,143,173,212,13,95,119,91,157,182,179,59,74,191,122,243,166,154,59,225,133,179,16,39,102,43,27,219,133,211,137,153,217,95,112,163,197,123,70,221,83,106,216,180,110,107,83,169,79,45,46,168,45,252,183,128,255, -110,238,43,87,62,184,103,78,156,240,143,243,245,7,61,163,219,205,19,184,190,37,223,114,166,189,224,238,188,161,212,146,186,35,183,251,83,133,60,175,187,115,218,159,120,124,182,58,171,212,215,126,63,115,88,107,106,121,69,169,14,132,187,245,138,114,11, -231,148,222,90,228,111,132,192,23,134,238,220,86,215,173,66,184,87,170,133,205,151,95,240,171,218,189,240,130,146,223,116,249,178,178,90,243,220,81,176,148,175,118,60,143,63,172,160,63,114,193,250,213,121,73,81,83,177,114,245,229,203,107,118,253,210, -122,176,125,99,149,171,185,210,218,117,253,28,53,17,199,43,11,215,181,130,32,183,22,107,90,221,88,174,78,20,5,10,13,198,227,212,148,123,127,122,75,67,145,84,163,125,90,43,156,244,59,119,252,73,63,246,88,100,30,148,39,108,163,191,37,191,163,214,54,250, -222,61,255,93,234,45,163,91,117,235,186,77,252,237,89,151,14,140,238,54,181,142,108,105,83,220,215,173,105,61,186,237,156,60,103,224,159,203,215,241,229,237,3,235,14,134,70,247,247,172,59,243,49,163,83,124,134,255,196,59,242,255,65,163,112,179,45,8,156, -50,62,123,86,245,230,148,187,187,115,83,171,39,149,218,253,90,230,22,102,134,16,244,121,183,240,57,165,103,102,148,197,218,173,22,47,15,104,177,242,103,104,114,92,188,168,28,46,208,92,109,41,92,17,204,15,41,88,163,62,162,99,162,173,52,43,55,110,44,195, -28,41,17,42,5,125,77,93,179,80,88,117,1,43,119,237,178,95,76,215,20,133,202,235,231,213,204,226,121,8,85,169,217,147,55,53,79,80,188,168,2,17,234,73,47,212,238,61,104,203,45,8,252,96,75,119,166,182,116,99,38,208,75,43,73,144,155,192,28,220,220,210,225, -116,20,20,97,104,76,51,10,18,92,159,93,8,76,25,4,38,223,13,204,148,10,76,122,44,14,187,35,232,197,3,165,120,95,134,251,212,142,82,83,120,142,25,71,1,159,187,183,21,5,20,112,130,219,124,191,254,200,232,218,60,238,195,34,216,192,194,57,22,220,195,123,70, -6,235,74,209,58,156,12,83,211,130,213,232,193,236,247,113,30,119,239,102,78,189,202,223,16,203,111,90,94,85,102,107,75,185,206,213,235,230,11,157,235,208,224,150,252,110,46,118,85,249,162,137,73,118,23,189,57,190,164,28,229,161,39,231,243,168,5,252,176, -199,71,162,177,254,11,104,248,18,103,248,5,105,102,86,174,224,75,95,244,194,92,199,106,165,32,169,165,244,155,203,203,199,241,3,150,213,213,127,122,221,45,158,57,175,63,77,255,5,223,69,13,216,197,201,122,236,244,105,213,217,191,163,169,29,20,226,68,123, -62,117,126,65,141,212,182,217,190,207,79,157,87,234,184,82,233,224,129,238,227,241,193,88,83,59,32,125,92,170,191,131,108,95,143,251,214,181,143,133,70,77,77,41,181,191,175,130,178,101,249,234,65,166,117,61,118,142,207,73,106,70,7,15,112,255,140,255, -61,91,253,29,55,59,59,251,150,223,56,196,251,152,188,180,222,18,204,187,225,129,18,243,77,3,222,110,148,46,124,121,100,139,167,82,19,22,75,246,165,175,43,187,120,102,67,111,190,54,116,231,207,159,135,53,218,208,106,253,190,173,140,148,82,254,138,37,246, -224,149,181,13,10,213,235,240,133,11,23,96,135,47,65,168,23,14,53,246,7,209,222,31,74,176,147,21,165,33,84,231,77,136,7,77,213,187,226,171,57,154,97,10,117,25,166,248,204,243,222,66,124,225,11,215,213,211,63,53,101,8,128,168,165,173,174,247,151,13,128, -154,62,0,77,176,114,47,24,190,122,194,251,192,182,210,253,193,182,126,180,233,53,238,216,49,248,90,8,146,143,149,193,129,169,39,83,110,48,222,215,163,177,209,243,233,180,222,190,183,231,230,79,76,235,131,131,3,21,167,218,131,164,238,195,239,60,55,15, -51,140,219,166,44,45,31,239,118,74,75,193,170,3,165,198,145,117,83,167,166,212,120,132,159,179,167,212,244,52,76,243,192,57,46,152,14,22,74,189,143,251,33,239,0,175,229,162,218,222,44,108,99,184,141,207,56,161,218,53,235,102,32,96,126,134,247,203,167, -213,237,27,10,139,104,67,62,119,225,121,128,44,250,28,28,231,206,157,151,231,173,174,226,241,75,19,199,165,8,21,141,95,248,112,91,27,151,28,132,108,39,231,244,195,10,247,7,54,197,248,137,74,87,2,188,8,77,133,48,245,149,43,254,66,77,93,94,83,250,133,23, -174,152,85,124,201,106,133,2,20,93,87,175,109,41,189,56,130,63,5,2,17,161,18,201,2,149,118,250,161,238,244,3,253,224,216,189,160,251,186,209,69,184,109,120,177,187,15,12,116,83,21,58,48,197,124,96,238,238,29,152,176,17,4,188,80,152,59,189,65,24,229,48, -191,245,153,32,130,22,206,46,204,4,101,191,111,240,176,177,131,192,68,105,91,207,28,15,3,53,12,76,147,247,245,141,137,147,150,14,235,97,48,44,195,160,49,23,135,161,13,3,252,111,28,46,131,221,65,224,180,49,110,198,152,14,254,30,195,27,149,248,155,64,179, -91,243,248,91,215,154,166,187,220,9,204,60,204,127,189,181,160,169,197,7,240,239,252,254,116,255,217,102,98,110,223,2,218,134,43,153,61,185,172,23,102,150,221,245,47,64,191,175,214,4,79,188,242,74,165,80,60,95,203,15,149,107,245,130,42,213,197,107,86, -34,136,101,1,157,154,218,235,207,247,135,51,203,63,176,198,30,249,32,1,117,151,137,242,214,228,203,42,248,81,71,1,227,11,106,174,195,9,80,250,206,206,205,128,190,136,126,72,194,21,132,19,60,1,60,206,172,212,160,165,30,180,208,71,82,59,251,13,250,60,173, -197,164,198,83,46,129,224,18,128,30,106,90,105,250,102,140,219,102,191,180,1,4,151,143,27,110,156,247,241,124,231,166,231,154,122,111,172,92,148,40,61,206,7,58,202,181,206,35,231,146,113,221,141,139,129,110,52,176,80,240,188,48,225,87,199,13,213,87,195, -131,186,109,54,149,234,245,122,112,238,252,70,77,149,197,93,151,142,154,88,152,7,42,141,91,46,131,38,215,18,231,68,139,249,20,252,179,117,199,185,217,74,139,7,0,96,253,131,19,174,209,190,167,251,0,96,52,209,12,187,102,239,21,110,247,123,240,193,56,63, -155,64,208,139,64,208,12,149,32,188,146,231,136,97,222,60,254,82,176,2,62,47,242,4,123,85,38,94,89,89,217,0,184,186,104,213,135,56,62,180,96,15,205,175,22,52,167,1,100,245,149,23,4,213,201,49,137,89,159,123,78,153,237,109,128,7,0,7,198,120,175,108,2, -33,46,42,128,35,255,153,187,93,252,160,25,165,239,192,145,54,176,210,137,104,9,94,122,149,201,157,134,246,196,208,142,33,4,171,224,30,71,219,93,61,130,128,230,230,219,154,154,137,211,175,162,164,175,21,174,140,11,60,167,65,17,53,84,6,65,134,177,183,37, -69,6,225,225,58,226,9,51,234,59,27,198,74,231,120,110,20,186,67,179,86,100,202,197,184,93,111,212,213,160,63,144,251,226,168,238,40,120,10,56,231,2,153,195,235,118,122,206,216,134,156,220,20,190,57,131,128,199,119,113,137,119,221,168,63,13,129,111,187, -102,58,43,239,203,223,48,220,203,75,106,116,88,20,54,206,22,44,99,104,62,118,114,110,195,109,220,240,166,153,224,106,115,243,186,238,116,94,179,107,107,149,86,92,89,147,239,112,5,255,17,124,210,234,241,175,63,231,31,220,28,255,64,26,123,241,162,7,73, -188,62,9,190,121,27,90,42,166,253,204,25,101,94,123,77,89,174,194,107,235,248,17,231,40,212,13,8,53,246,39,28,136,242,0,194,228,245,5,196,153,7,189,123,186,78,161,2,185,78,195,220,110,221,219,215,143,193,193,117,186,61,211,152,134,246,182,154,106,107, -179,167,98,8,118,6,90,214,3,12,109,66,237,108,107,40,159,71,193,41,200,36,140,188,64,243,98,132,191,53,53,28,42,254,81,97,169,116,212,196,154,28,227,121,41,62,63,135,192,75,173,249,183,200,134,174,86,171,249,251,240,122,128,36,91,175,67,184,33,32,170, -171,201,98,8,26,206,246,239,246,85,30,53,92,70,129,183,176,240,172,179,244,227,212,228,49,132,12,119,172,110,151,15,108,13,66,38,14,224,17,109,193,23,35,102,78,23,115,219,63,40,220,137,217,211,238,43,95,185,169,158,68,28,44,40,90,77,4,188,46,238,10,202, -32,225,194,53,2,171,27,18,65,88,196,143,250,34,60,240,135,37,49,194,15,250,196,163,54,222,127,128,123,135,64,231,231,149,166,255,32,56,250,28,66,24,134,51,128,253,162,165,119,119,150,85,11,43,191,65,180,203,147,0,13,61,129,95,125,239,187,247,148,141, -16,150,156,50,186,124,117,87,13,198,199,116,59,8,77,31,102,181,173,218,64,173,3,173,118,250,20,170,138,160,109,182,102,76,88,27,232,145,13,84,182,51,210,209,84,93,135,212,88,188,107,102,181,241,2,170,235,28,171,36,134,160,16,181,202,55,47,15,32,236,52, -85,101,79,185,188,28,155,56,172,105,4,20,54,72,160,229,3,172,128,148,100,133,179,181,90,10,31,171,92,86,88,27,22,163,176,128,214,154,77,120,221,122,160,106,61,109,163,105,191,160,7,248,76,248,105,21,196,3,23,193,92,119,226,125,247,88,112,76,117,199,22, -218,101,221,232,117,231,70,0,106,225,95,22,118,216,92,210,253,27,176,76,75,119,52,136,21,188,190,16,119,244,53,10,247,42,208,243,76,75,45,46,174,187,237,109,128,38,197,88,31,33,17,237,54,148,6,8,106,34,76,134,63,31,88,107,63,176,198,30,245,169,188,121, -148,38,19,34,2,166,100,189,18,172,176,71,138,209,156,82,95,127,73,25,210,120,124,94,134,248,175,191,15,191,3,109,237,193,151,34,76,52,181,134,71,184,131,241,158,8,212,34,54,69,0,161,172,209,38,130,112,233,7,161,160,226,9,123,0,49,97,65,115,58,210,206, -224,186,104,40,36,130,32,200,82,27,149,112,55,38,10,82,55,26,193,239,69,74,135,161,210,5,98,27,101,99,27,70,227,195,239,92,132,90,143,135,177,13,112,95,24,72,208,104,67,8,123,132,23,214,146,196,226,229,242,206,58,177,214,224,49,121,77,68,13,199,194,128, -137,159,225,117,248,236,254,126,215,166,179,77,241,191,113,218,213,198,54,237,65,9,173,79,104,238,119,213,120,175,85,18,92,77,80,244,194,34,60,58,207,193,157,165,146,136,249,6,36,185,66,235,123,131,255,47,151,159,255,252,186,222,126,113,219,173,129,153, -187,116,209,71,22,147,243,126,201,71,68,176,152,250,251,250,219,15,33,88,154,221,139,70,85,209,245,5,255,15,180,245,138,161,127,128,47,80,228,71,9,148,232,79,17,190,169,47,95,37,42,244,159,65,225,6,199,106,1,153,29,154,93,222,39,166,23,190,180,156,53, -102,31,49,38,195,149,65,49,8,34,154,91,60,113,122,86,139,191,220,131,9,166,64,5,173,26,47,64,83,102,65,81,36,46,12,199,58,128,169,45,74,111,134,3,8,172,40,253,103,38,20,134,213,15,127,99,12,205,69,200,18,52,160,201,147,191,5,44,52,23,78,0,186,177,136, -93,17,240,68,142,32,84,191,96,96,121,45,23,10,5,76,97,235,129,179,57,125,50,191,3,204,241,4,148,229,17,180,124,220,117,211,101,195,110,199,60,91,251,234,137,118,203,118,183,75,17,194,8,134,99,27,254,150,215,69,184,237,210,205,192,60,223,190,5,82,3,44, -22,77,51,209,51,181,225,220,57,175,189,244,180,56,183,150,22,17,23,156,95,98,25,109,39,8,65,235,143,68,176,71,137,125,9,164,149,143,193,214,141,248,6,34,95,56,135,22,204,239,151,191,168,220,236,51,42,216,253,253,13,167,158,173,155,54,66,25,210,127,19, -161,30,5,72,124,229,110,175,107,18,196,158,141,190,54,99,8,213,154,129,33,146,229,201,3,149,43,154,153,89,8,50,79,28,85,58,132,240,134,217,88,94,219,78,83,51,30,143,85,0,1,22,208,78,53,246,194,133,125,80,46,209,38,35,200,109,198,42,203,32,212,18,168, -54,192,107,75,127,106,2,92,47,203,177,11,129,134,248,88,12,193,231,163,24,39,127,172,176,144,68,224,42,182,30,184,56,106,241,72,69,208,238,34,79,29,0,176,213,169,181,19,240,53,176,214,38,64,230,201,172,115,249,232,192,101,16,110,154,192,255,66,147,3, -104,112,3,113,238,3,89,12,165,245,136,121,193,205,76,41,199,88,151,97,223,75,227,179,150,22,206,115,205,36,115,142,248,90,8,148,97,17,244,199,86,138,244,125,193,212,7,138,99,39,28,176,100,34,68,87,189,214,210,84,220,184,177,237,174,209,225,3,37,49,187, -241,101,248,12,181,189,33,239,59,123,42,214,20,42,217,163,33,126,12,137,216,20,66,125,4,102,88,52,53,232,154,126,217,15,90,51,51,136,47,97,197,218,3,99,135,3,67,116,75,77,237,34,92,117,117,99,50,8,51,47,106,122,208,133,174,232,177,129,106,152,176,76, -53,194,31,179,223,203,12,222,42,204,35,13,67,110,66,203,235,46,15,84,108,162,2,202,108,112,255,168,128,194,59,255,248,0,127,11,101,162,48,45,194,98,156,7,142,175,25,22,161,45,76,56,42,248,250,60,76,35,19,232,88,7,41,46,49,214,81,49,52,65,128,133,213, -192,247,112,227,186,44,52,103,198,134,207,205,0,174,50,248,91,152,91,51,13,12,97,251,3,51,202,141,110,152,41,57,7,163,251,7,154,177,239,65,134,88,250,1,23,246,9,44,186,5,213,152,242,74,69,139,182,59,23,234,36,185,41,207,223,252,221,235,154,201,144,107, -94,184,134,0,138,202,67,161,242,241,141,141,141,143,198,199,86,154,42,126,117,114,31,194,27,255,129,96,149,200,129,94,189,122,222,126,30,233,170,22,76,240,151,145,141,97,80,46,169,179,111,21,238,83,171,200,190,108,210,167,133,242,197,25,220,183,192,24, -13,199,51,122,148,117,17,147,78,33,140,1,168,106,67,51,33,204,108,111,160,33,124,131,147,28,208,79,26,156,217,162,55,214,9,52,151,166,16,10,109,38,218,233,242,220,68,73,98,134,136,131,32,65,32,139,220,208,199,210,228,66,97,185,164,225,137,35,23,88,133, -184,23,223,63,199,125,17,148,16,143,103,253,92,5,41,238,47,149,179,208,86,203,215,231,185,42,225,80,249,114,216,96,27,227,137,46,119,101,80,243,26,14,12,238,202,220,150,226,123,99,216,230,192,150,30,89,227,189,161,189,72,24,89,3,205,37,46,96,184,212, -25,192,65,52,154,34,144,89,104,45,227,222,61,152,102,147,31,179,237,154,114,253,142,114,51,43,170,202,30,41,152,99,201,12,169,137,73,62,15,164,242,229,173,47,151,207,169,11,102,149,224,31,246,241,98,37,3,90,76,104,172,253,97,5,43,97,205,141,101,1,73, -142,38,152,166,129,40,248,197,23,241,229,102,174,155,69,100,103,102,17,206,28,165,7,201,194,148,88,254,188,77,82,253,177,71,34,65,225,195,148,177,165,49,182,7,146,1,38,151,62,149,90,10,126,206,100,240,165,131,93,168,17,52,129,102,151,207,7,165,20,196, -153,247,173,54,7,242,133,70,137,0,41,63,8,211,208,4,83,144,69,97,76,16,67,242,128,208,144,96,25,32,204,129,48,75,44,4,160,40,235,240,56,5,27,64,144,37,204,176,45,51,23,69,17,99,89,203,251,35,190,63,31,131,176,185,6,8,168,98,2,39,32,55,36,7,236,8,118, -52,164,112,11,15,182,100,161,226,190,49,4,90,7,224,162,144,27,169,179,195,158,181,179,97,221,13,113,255,120,174,175,167,84,195,230,48,201,101,31,239,204,53,195,24,24,113,174,66,254,176,141,48,12,11,201,82,176,254,140,223,68,172,155,185,206,230,208,205, -116,206,91,102,194,152,17,226,35,203,222,28,59,129,203,10,132,197,251,72,239,3,83,138,116,169,43,48,3,68,102,87,4,142,211,252,138,67,23,154,12,217,28,230,160,73,145,202,63,20,234,1,76,48,67,25,102,92,106,45,173,239,13,118,93,71,247,204,254,247,240,148, -55,15,20,5,74,146,135,254,116,148,232,160,63,212,198,13,65,249,133,153,192,99,198,157,49,196,198,235,68,201,176,127,48,145,65,100,65,54,22,48,183,188,24,154,216,2,231,155,143,133,58,8,18,252,235,98,152,88,29,242,177,18,23,195,251,237,56,46,1,141,32,53, -184,79,27,225,31,124,78,18,149,153,70,64,173,35,94,10,92,183,120,220,149,0,227,120,77,152,192,52,243,2,19,61,192,105,4,217,128,247,214,124,111,147,227,243,130,48,213,113,13,238,194,212,196,93,208,68,143,203,113,16,164,38,32,195,101,241,123,162,142,214, -219,8,247,14,184,8,144,76,26,212,61,228,225,121,81,200,49,246,225,190,50,181,101,24,10,82,168,4,81,27,55,152,219,58,175,58,51,62,43,196,168,227,194,133,135,178,184,164,73,34,184,247,149,221,7,210,88,201,54,92,188,32,174,181,130,220,242,166,11,48,189, -52,25,96,80,160,173,55,133,38,108,47,221,9,152,166,62,96,142,20,230,183,86,1,37,242,176,143,226,135,221,3,107,68,162,33,168,15,2,18,13,68,190,93,147,133,121,81,215,41,78,216,96,60,54,52,183,68,185,13,248,81,103,50,131,211,142,180,92,17,148,35,165,211, -90,12,19,12,80,164,11,106,181,161,121,165,246,2,198,32,102,165,150,243,6,80,50,191,100,224,111,51,92,199,59,104,160,33,7,105,58,62,119,18,194,27,104,224,16,38,24,167,217,241,122,192,216,6,178,181,208,90,147,120,51,237,10,87,242,177,4,90,15,43,224,128, -152,28,56,37,209,222,81,15,75,161,142,243,140,208,73,67,71,235,83,137,29,131,229,74,76,90,22,89,223,129,9,117,164,43,85,179,167,8,168,130,178,86,36,176,88,5,180,119,186,210,218,225,193,150,155,121,106,193,169,55,238,168,187,197,200,182,224,115,27,234, -180,221,240,224,73,52,153,0,234,210,67,37,99,54,72,95,212,23,127,72,83,76,224,164,60,100,186,226,203,91,152,111,117,12,191,58,51,202,76,168,66,174,58,194,247,54,168,66,156,0,40,218,3,227,64,218,147,84,37,207,27,129,59,140,242,182,38,72,10,33,220,140, -23,250,213,146,224,132,230,117,108,24,186,36,89,205,140,32,208,26,156,85,97,251,1,129,15,77,108,9,180,11,115,105,156,152,92,184,24,24,84,107,240,89,153,16,20,176,237,145,207,250,80,192,16,164,49,88,147,120,222,8,82,142,241,60,120,57,8,15,66,197,109,107, -66,57,97,33,254,203,117,1,180,237,68,152,33,62,0,86,211,226,123,184,8,130,84,161,200,17,166,26,64,0,127,211,36,2,223,28,150,52,227,161,142,32,220,72,4,12,83,107,45,240,118,1,132,92,194,36,151,58,41,35,64,181,134,77,237,176,134,88,216,82,184,212,136,125, -155,15,27,101,125,224,253,246,12,204,205,168,74,242,179,170,35,190,53,6,253,200,240,231,44,194,159,235,146,246,123,237,170,178,158,135,151,240,7,73,123,229,142,148,215,232,119,243,181,31,136,121,162,80,9,187,175,200,210,129,166,118,174,35,94,61,47,241, -42,239,146,234,1,100,107,58,251,71,64,22,204,76,109,58,210,3,34,6,164,188,92,27,48,6,104,145,225,76,141,194,212,130,108,2,34,74,152,73,164,80,106,58,135,227,133,235,131,85,205,168,213,166,40,114,248,83,152,74,152,61,72,19,60,81,172,121,159,129,64,11, -58,105,250,201,65,4,203,11,65,67,112,5,245,9,140,4,220,158,46,17,141,224,215,106,75,235,192,53,67,88,132,37,230,248,39,36,104,66,126,213,6,46,15,75,89,223,76,61,18,59,51,241,22,59,83,208,38,141,178,162,4,164,130,249,14,75,64,106,32,35,103,134,142,240, -0,230,4,129,109,129,236,156,49,57,18,13,144,163,113,42,194,74,162,95,197,138,179,176,62,78,37,96,199,176,64,232,94,186,118,160,90,189,186,29,69,48,75,208,255,221,225,158,107,232,102,73,30,92,170,62,78,144,150,161,162,132,26,97,16,171,111,212,27,227,243, -238,53,68,25,243,43,200,244,32,197,117,109,101,195,66,168,147,60,253,225,185,126,183,82,26,243,126,154,122,180,42,130,101,45,116,228,36,248,73,234,51,94,101,157,15,75,88,152,122,35,10,94,122,20,160,9,105,183,131,62,78,40,50,52,204,204,156,128,79,137, -219,72,177,129,149,57,32,70,5,155,212,239,123,126,247,0,66,117,99,106,41,133,154,5,52,193,252,221,9,132,105,97,124,85,19,33,11,132,58,130,6,14,179,2,120,186,8,233,47,233,55,33,168,8,114,13,33,12,8,222,70,48,15,49,81,176,46,178,8,167,22,8,206,68,176,184, -176,4,32,150,112,201,51,27,66,200,129,171,174,71,226,87,241,58,231,159,67,223,169,29,162,212,82,209,59,71,142,225,115,132,96,137,247,71,101,148,141,248,28,35,62,154,247,97,25,65,116,133,128,56,250,252,60,202,131,17,191,59,110,195,12,27,198,221,1,129, -224,200,8,143,61,29,55,244,184,232,3,76,195,197,76,227,57,181,105,93,98,37,188,86,224,235,137,191,133,75,219,164,31,6,216,188,117,154,53,7,234,209,68,153,187,160,30,47,93,92,71,170,239,58,100,241,28,57,3,67,171,89,185,68,200,243,221,57,100,243,94,66, -245,47,210,135,69,87,60,158,243,68,181,185,182,190,174,24,175,206,62,115,51,96,112,173,170,212,27,75,87,234,77,163,31,45,30,4,140,85,9,20,58,93,99,218,88,138,205,42,174,51,179,129,228,59,115,106,18,204,47,195,152,160,18,106,32,254,209,4,3,92,10,10,208, -22,80,148,2,16,199,68,160,249,66,2,157,34,231,105,208,136,103,35,147,151,208,189,208,37,20,150,117,94,104,142,194,198,169,226,95,176,248,49,30,137,252,125,97,64,65,66,77,99,94,135,197,15,248,215,186,28,160,84,27,121,14,23,11,66,92,151,149,33,162,154, -16,90,143,215,218,80,209,170,19,128,241,221,152,109,130,62,19,96,193,83,132,89,81,72,140,140,176,22,32,13,130,207,249,94,153,1,239,40,128,42,109,48,62,207,66,107,134,166,61,135,53,4,237,29,239,246,5,103,248,147,134,60,5,104,85,17,110,21,18,102,167,183, -204,51,112,107,189,187,74,24,169,213,181,227,114,255,197,139,171,150,25,179,181,42,68,66,216,41,18,125,183,92,237,123,250,88,102,112,222,126,31,209,217,246,246,188,254,220,231,90,154,73,227,217,30,194,155,19,161,190,173,124,181,160,164,222,110,27,157, -2,1,111,119,15,76,251,137,57,51,194,137,192,247,54,182,5,86,233,206,64,7,179,248,241,52,96,61,184,44,91,5,254,21,13,72,196,235,79,12,24,67,71,13,5,34,181,222,151,242,100,66,87,2,104,179,201,112,34,169,142,56,223,32,25,200,52,145,221,163,13,135,180,120, -29,190,213,194,37,6,128,113,142,40,12,186,93,34,210,128,109,134,210,1,32,225,254,64,17,5,225,4,225,58,125,175,147,11,68,132,191,12,109,193,122,240,108,225,30,112,200,9,150,92,14,227,239,146,34,131,3,229,51,17,184,225,130,117,129,47,71,11,62,198,69,72, -101,126,89,176,83,248,178,197,120,52,178,81,173,133,213,2,3,142,112,40,236,193,122,195,7,51,214,165,207,45,1,188,104,138,131,182,181,99,248,220,221,187,165,109,60,6,86,10,190,118,188,179,80,10,102,1,51,181,240,188,114,95,4,155,247,249,121,37,57,93,146, -21,228,16,46,92,144,48,200,85,170,251,22,173,13,223,71,99,69,91,153,38,36,79,41,89,66,112,193,80,86,160,224,154,222,124,109,217,205,254,212,77,221,0,191,183,252,232,146,186,189,121,15,100,59,57,224,109,36,200,79,234,153,112,70,5,16,170,5,9,97,107,83, -38,68,150,102,212,52,18,206,0,11,50,142,9,96,170,189,79,197,234,77,88,46,100,41,108,158,252,66,66,151,178,4,115,91,250,231,128,76,128,210,224,109,32,176,146,130,198,117,249,65,129,32,7,19,64,224,20,38,252,172,217,221,190,219,252,246,183,255,237,179,251, -7,247,31,31,143,251,115,195,81,247,49,167,139,58,206,103,93,136,86,56,153,48,76,183,195,40,221,110,52,167,190,55,53,181,240,250,83,103,158,189,241,232,194,51,29,124,28,62,28,43,79,132,4,0,69,149,197,139,97,34,193,43,131,40,137,225,37,96,155,75,152,28, -124,15,205,5,50,46,225,255,13,45,52,62,124,20,217,32,205,20,209,56,62,67,92,13,161,54,105,74,219,136,129,239,0,180,118,241,244,18,84,219,76,195,116,59,29,59,91,182,84,163,0,128,58,25,24,40,129,123,99,211,150,11,139,91,88,114,11,118,22,10,48,179,165,212, -231,206,93,87,103,206,43,253,218,149,215,224,103,231,41,84,15,14,222,227,208,239,35,216,195,98,102,185,243,146,47,227,96,226,252,250,245,243,234,105,161,192,206,202,67,201,220,86,240,234,119,141,110,34,139,81,3,177,127,188,29,6,52,193,172,116,176,166, -111,142,181,90,166,3,70,9,164,191,65,42,86,76,177,33,96,162,201,197,9,136,105,129,83,158,153,60,192,249,50,20,170,66,12,72,223,70,114,33,137,37,7,96,202,17,78,47,12,40,150,35,195,33,104,41,148,3,210,38,19,209,233,188,217,250,250,55,254,249,175,236,239, -221,91,25,244,247,158,150,20,23,44,38,179,23,48,145,12,125,44,41,13,41,34,210,4,214,56,145,188,77,229,225,79,132,157,78,210,198,235,143,45,62,243,123,79,60,241,233,141,211,39,151,183,1,164,144,143,149,135,65,49,17,186,145,82,14,37,221,131,116,109,14, -66,130,198,31,40,205,21,68,207,142,232,77,135,228,47,232,28,138,40,231,2,192,201,108,197,80,65,228,14,154,32,38,192,42,55,28,144,50,131,174,97,9,254,198,186,153,86,211,246,118,173,101,109,85,23,138,207,60,238,107,111,12,75,207,9,224,232,35,138,222,94, -182,11,159,187,174,183,182,186,142,52,174,232,25,50,64,19,249,188,93,99,191,175,96,89,70,202,172,130,176,30,184,239,183,175,42,67,178,122,156,120,223,187,139,172,205,66,124,90,234,147,164,114,224,77,152,98,64,222,246,49,4,22,225,48,172,17,175,226,24, -117,199,65,30,215,97,109,131,48,131,80,21,51,53,56,195,68,191,185,34,151,132,211,166,189,48,213,176,96,22,39,4,16,198,191,37,237,93,32,255,145,231,101,1,18,212,4,143,104,250,194,189,254,118,227,143,254,232,139,191,124,247,222,171,191,130,83,139,148,184, -165,69,214,202,78,126,160,7,129,242,195,161,13,80,60,24,90,199,236,32,226,94,72,128,167,195,48,113,132,40,73,132,44,30,183,152,157,121,100,253,179,63,246,119,254,175,69,8,24,191,148,252,8,162,91,47,96,129,91,1,197,8,16,93,208,219,50,212,113,34,84,6,212, -72,235,89,93,71,44,139,116,238,136,139,1,63,10,102,197,106,160,1,172,147,50,33,21,137,172,80,11,137,252,225,1,210,126,16,238,40,175,23,116,184,225,116,27,95,97,71,189,177,215,46,89,90,51,51,85,56,198,180,164,26,55,20,132,187,240,80,184,43,87,214,220, -36,173,247,129,76,241,164,26,157,215,89,169,206,191,116,212,235,43,204,181,250,76,235,110,149,99,93,254,196,105,173,14,182,205,54,174,31,3,163,100,230,141,97,57,203,8,194,13,65,238,22,73,221,153,116,20,132,72,136,27,152,222,172,4,188,196,105,26,101,128, -165,117,104,40,238,3,58,20,243,27,67,120,176,106,34,84,10,209,32,77,224,196,198,73,216,34,194,13,24,33,67,12,160,107,204,215,254,224,127,251,205,187,219,223,253,229,60,31,183,66,0,143,162,40,248,84,178,194,202,23,196,2,47,187,234,6,165,61,41,183,199, -59,147,16,12,129,167,170,76,26,158,129,215,1,117,41,122,73,16,199,187,187,119,127,241,43,235,47,174,62,178,240,241,127,245,43,63,251,143,255,141,162,223,214,180,189,192,3,136,97,16,19,133,92,15,37,76,113,20,8,165,233,84,76,174,17,240,171,65,231,140,236, -16,22,106,26,101,170,0,201,1,131,172,194,18,12,5,44,204,24,196,117,137,53,178,219,27,72,228,52,78,2,221,71,134,43,61,14,171,13,208,57,236,207,129,123,118,166,209,7,213,8,194,162,171,72,254,40,183,240,252,117,253,197,47,118,221,234,170,151,147,164,224, -201,46,30,105,25,249,64,26,43,230,151,253,53,107,190,246,149,215,145,20,14,110,92,145,213,131,216,230,22,8,247,196,52,164,0,237,4,66,255,142,137,241,107,168,84,172,20,52,53,168,39,236,108,143,84,33,96,127,212,204,194,225,62,161,62,252,44,206,0,161,132, -132,40,12,35,32,76,96,40,248,223,50,36,250,68,40,11,108,105,99,34,96,1,80,138,156,1,206,101,89,6,123,123,183,230,191,245,173,127,253,143,199,89,15,75,25,100,14,128,214,112,144,81,176,224,154,51,45,164,62,100,32,22,246,176,154,210,249,219,242,175,4,174, -244,8,52,211,20,55,13,128,133,102,98,29,49,223,9,178,169,32,113,104,196,162,71,105,242,230,207,63,251,15,255,199,199,31,253,228,93,2,45,44,159,210,208,209,19,184,147,128,12,168,183,248,139,24,45,160,134,210,52,243,43,224,155,96,85,2,84,33,176,182,96, -66,163,184,160,41,102,34,223,102,240,199,176,28,131,238,129,77,166,27,110,23,9,131,227,113,203,49,73,63,234,20,194,41,47,204,20,150,237,43,147,124,237,178,144,20,203,229,145,190,38,91,153,226,195,152,118,162,185,239,45,88,255,84,22,170,105,38,124,55, -0,156,22,54,129,134,59,64,195,39,61,217,223,153,57,45,21,242,221,170,94,73,124,43,184,96,16,246,154,182,142,102,152,236,210,56,241,204,146,233,103,1,57,86,166,195,198,204,196,208,159,70,65,196,112,130,28,111,78,191,138,144,3,156,171,161,151,226,185,99, -172,90,86,102,24,182,195,188,246,202,213,191,177,181,189,241,95,129,38,106,247,7,227,120,52,28,135,57,208,216,104,132,16,67,59,111,120,241,134,57,104,194,48,102,194,198,103,221,45,97,51,31,166,242,242,186,38,226,18,246,153,188,162,88,111,126,10,62,27, -26,134,32,8,108,9,139,165,21,65,188,226,2,8,122,159,248,216,207,254,206,179,207,252,230,183,232,123,41,200,80,252,182,1,76,200,129,124,1,23,50,66,6,10,28,92,154,13,11,154,104,228,105,139,36,130,80,71,32,176,108,12,110,140,164,20,126,29,100,27,210,205, -34,97,96,32,76,230,113,251,123,64,20,101,97,219,166,41,130,125,35,204,203,195,74,71,54,142,205,129,75,88,95,183,207,65,101,87,241,147,174,248,186,40,167,142,100,222,38,130,125,111,34,217,85,188,240,26,235,229,30,30,172,110,103,244,44,109,23,96,250,239, -129,50,97,142,149,69,104,123,172,178,6,219,205,90,94,198,107,242,1,51,158,28,103,233,10,117,128,97,141,68,38,121,2,34,2,81,11,180,49,38,88,34,77,8,205,163,80,199,121,25,80,152,244,173,140,55,137,140,33,153,240,181,155,191,247,235,189,254,173,255,6,43, -126,106,56,176,233,96,159,49,102,162,218,211,45,187,240,200,124,57,55,59,93,78,181,235,174,22,215,108,45,173,3,140,38,46,78,88,141,70,119,46,69,32,92,171,226,120,121,3,254,82,51,122,241,121,73,81,96,205,5,0,11,173,227,56,68,122,47,112,44,5,32,127,12, -61,108,253,249,95,92,251,239,191,242,7,191,243,27,92,96,4,109,4,111,184,31,118,53,50,19,28,32,191,3,226,19,84,111,201,130,196,134,104,159,191,57,40,199,12,183,252,57,103,14,18,196,69,4,139,198,90,46,86,94,50,222,103,241,122,194,114,161,99,74,157,65,248, -216,152,242,69,127,52,197,236,105,250,181,207,173,122,101,92,246,150,116,82,46,163,222,166,164,239,159,221,185,200,196,238,188,254,252,202,154,158,244,158,44,62,51,23,180,62,19,34,126,69,216,129,148,92,125,176,45,45,22,124,172,165,67,169,87,98,189,47, -107,119,169,173,118,8,239,2,161,130,248,54,172,51,138,107,116,181,185,97,238,20,41,81,69,246,6,212,29,127,179,142,154,49,131,71,132,46,48,185,16,174,19,28,75,45,86,193,221,205,175,253,45,103,119,127,163,44,84,186,187,61,74,29,18,64,237,214,180,58,177, -56,83,198,224,123,184,70,166,103,155,118,110,118,202,182,167,155,174,13,1,207,76,183,92,179,134,84,66,2,164,103,130,202,213,78,132,251,16,108,148,185,152,109,234,161,166,227,68,240,234,53,220,151,76,27,37,21,86,242,114,179,185,249,221,191,255,31,255, -240,127,249,219,146,41,96,2,41,194,58,0,93,140,120,25,171,7,108,84,170,131,28,56,107,204,28,48,112,52,81,61,204,134,97,53,7,18,254,146,83,182,121,70,248,161,104,201,136,202,210,150,87,130,3,40,69,156,78,75,91,202,131,7,158,106,36,27,213,6,205,200,132, -60,89,62,62,143,5,13,18,130,74,242,253,210,164,170,197,29,45,149,9,222,46,203,183,132,58,95,85,238,197,23,255,68,255,201,246,134,234,92,157,97,139,160,106,225,195,247,193,207,238,171,105,245,232,241,190,249,203,93,96,134,123,92,109,129,217,239,130,227, -5,36,118,253,66,78,5,191,52,180,15,140,74,28,40,248,64,96,127,104,97,68,47,22,130,28,12,146,132,212,32,243,36,240,164,112,199,36,114,113,62,65,201,1,70,146,58,208,80,22,172,253,222,254,198,143,57,123,239,31,12,135,89,210,235,102,112,121,169,158,153,107, -23,9,8,121,208,131,38,31,41,129,188,229,216,155,88,48,27,46,137,35,193,80,176,108,134,101,82,206,43,38,5,38,107,219,72,176,42,82,86,226,118,241,187,217,185,65,152,92,240,53,198,139,21,112,151,201,3,81,106,222,71,91,119,208,223,91,30,149,157,205,165,147, -207,188,9,20,132,85,160,229,172,145,209,14,180,247,235,172,250,209,17,34,97,50,30,17,205,191,113,245,132,165,55,5,18,93,252,192,16,47,29,226,249,129,219,239,43,177,12,6,216,106,54,72,84,119,138,203,16,223,125,100,221,49,144,213,49,56,246,242,22,48,244, -169,155,250,254,27,179,238,212,19,74,253,234,239,40,33,241,175,73,49,254,42,219,69,32,179,135,139,213,188,93,168,218,139,93,170,209,39,101,165,107,248,239,252,121,95,117,72,255,202,21,164,226,45,67,51,252,113,112,194,211,31,15,12,147,231,172,177,101, -91,5,24,40,121,29,139,179,89,26,202,10,8,95,108,150,168,152,137,113,152,186,148,1,15,178,236,36,117,185,210,121,17,60,66,80,5,105,146,65,162,105,179,197,246,124,20,221,251,175,239,221,61,168,111,126,175,151,158,253,216,35,217,163,167,231,203,108,88,234, -254,1,194,30,151,66,91,27,64,90,44,24,174,225,130,219,186,134,215,25,93,79,107,208,190,80,23,35,216,69,87,7,32,77,113,194,35,33,88,165,72,148,138,202,159,107,36,4,146,32,183,204,201,225,27,209,90,92,55,204,10,136,58,224,207,161,111,6,192,125,245,230, -183,254,209,214,246,75,39,13,157,105,73,109,181,18,158,145,96,225,66,200,203,2,161,186,146,223,103,202,88,180,150,231,132,22,139,121,92,90,175,176,168,249,2,118,152,227,41,164,47,233,194,152,183,149,222,33,229,91,65,15,42,107,184,123,194,71,33,236,27, -38,165,11,236,35,197,132,12,71,39,0,234,45,37,194,239,166,177,135,69,224,234,97,102,135,169,58,117,67,153,27,200,2,252,228,47,181,3,164,14,213,34,76,241,108,68,106,158,245,75,212,80,200,12,24,145,73,102,38,155,51,73,150,143,193,84,212,131,186,245,192, -105,196,196,185,36,200,125,98,156,81,32,145,47,133,74,190,54,18,191,106,133,200,39,175,59,216,251,234,255,112,176,55,56,113,255,222,126,180,252,201,165,108,103,251,192,236,220,31,134,187,247,179,48,10,19,49,212,80,25,18,13,18,173,36,53,132,25,217,88, -147,250,65,110,208,110,223,237,33,246,181,8,82,11,5,116,163,114,216,124,92,228,58,162,207,106,101,139,129,150,216,151,128,10,203,5,52,101,32,4,6,208,177,246,224,74,116,150,214,128,207,146,232,41,173,213,94,254,220,175,94,186,8,16,78,54,25,102,202,21, -134,245,25,8,206,36,190,5,58,198,10,46,220,33,50,14,11,198,185,112,39,14,137,163,162,222,142,11,60,199,146,98,99,149,198,208,166,69,139,174,97,96,75,41,97,237,131,102,204,240,229,71,5,226,87,8,252,141,126,121,242,51,190,186,226,220,98,215,93,171,42,43, -124,203,170,122,75,129,155,121,167,80,47,189,69,216,203,213,56,129,133,77,100,23,86,54,212,202,179,190,187,124,106,38,144,102,36,246,215,196,85,85,0,83,150,242,119,70,251,218,95,228,87,235,16,106,129,147,201,21,42,37,44,149,198,186,88,121,176,164,229, -183,106,57,107,101,41,128,132,148,17,18,158,230,214,95,254,254,111,220,221,60,88,124,117,99,183,246,227,159,61,91,236,237,140,204,235,127,177,159,12,15,130,160,81,111,187,52,174,187,56,170,185,56,76,85,13,218,153,68,41,78,109,164,90,205,186,45,70,44, -252,77,84,45,105,2,76,53,96,154,83,121,30,159,159,224,111,20,112,81,16,214,42,31,15,49,202,245,166,218,147,27,78,248,12,81,102,37,228,162,168,196,4,122,201,237,209,96,248,212,127,248,198,255,250,107,178,20,104,109,12,1,31,100,5,232,199,124,177,170,126, -163,99,170,177,210,218,73,73,79,187,70,242,109,44,244,42,93,22,107,149,157,30,120,173,102,143,82,86,121,204,121,47,7,118,242,145,151,103,55,197,117,223,180,39,197,110,180,172,151,215,212,59,142,119,128,167,11,85,229,249,132,170,98,204,196,246,71,38,124, -151,241,223,206,189,194,189,254,242,200,182,59,165,155,63,238,95,195,38,37,86,68,140,147,190,238,169,190,128,38,17,112,152,186,62,50,208,210,78,65,48,65,62,94,69,42,168,42,29,20,139,113,181,100,86,128,150,11,225,132,105,237,184,136,107,181,193,252,189, -55,223,248,123,189,78,25,253,216,179,103,178,122,45,202,95,121,233,65,154,166,109,8,171,5,161,54,92,28,167,42,141,18,149,196,53,17,84,154,214,112,61,85,173,169,134,158,153,169,195,105,38,58,9,235,138,207,75,162,26,158,139,11,133,26,114,49,224,18,48,211, -23,136,221,242,45,190,94,102,150,1,204,184,196,5,57,86,100,232,73,114,105,161,62,172,152,59,231,211,101,242,207,214,230,237,223,220,239,239,212,75,237,147,23,1,136,18,104,38,222,22,22,8,128,170,148,140,21,113,152,175,199,114,88,216,72,221,225,121,74, -39,186,102,232,170,104,142,97,161,205,52,67,195,172,175,153,226,100,11,231,48,241,9,120,181,192,127,150,20,187,18,25,207,62,255,235,53,253,10,66,79,154,100,181,186,206,102,184,42,98,127,15,193,78,212,216,55,47,95,49,44,173,89,101,161,213,150,114,175, -109,109,232,141,27,27,42,124,42,53,143,227,194,58,225,187,59,190,46,184,61,11,194,97,212,116,172,97,2,50,213,113,196,166,165,32,96,153,11,67,28,254,136,162,204,145,28,97,225,25,219,16,125,197,3,137,5,15,76,60,209,95,208,125,177,78,2,144,226,246,171,127, -242,119,242,60,8,142,205,79,231,143,60,214,202,58,15,250,208,210,38,130,123,209,62,8,42,134,16,19,23,197,49,180,48,118,73,2,109,12,112,155,45,118,96,114,155,211,137,154,155,175,217,180,150,138,134,38,97,13,207,75,229,66,225,198,213,37,130,112,137,211, -252,89,209,162,146,226,169,72,47,64,192,217,144,86,150,33,15,121,103,198,61,124,138,173,252,25,156,64,81,52,191,241,231,255,226,151,137,125,248,80,33,225,15,75,117,124,73,14,92,48,203,169,140,145,144,7,56,66,22,121,166,199,200,74,209,146,5,209,72,51, -236,81,190,31,76,177,55,168,133,176,103,111,111,79,210,121,84,158,6,194,30,54,175,181,230,110,9,135,112,21,166,152,207,189,241,121,112,198,171,171,21,121,234,222,59,220,153,152,98,254,119,101,101,195,185,35,109,28,180,235,203,43,203,10,185,116,197,22, -13,146,18,76,51,177,147,124,52,238,106,182,56,116,118,16,100,35,139,110,165,205,130,25,148,135,213,249,205,36,33,89,65,100,172,51,152,38,214,42,49,43,45,168,147,46,202,9,234,20,134,127,120,112,103,254,206,27,111,254,92,61,105,9,164,220,219,46,194,238, -94,16,199,17,180,15,130,11,145,38,71,22,92,177,194,144,194,149,11,66,154,246,108,221,77,77,215,221,184,31,235,1,76,86,90,79,117,45,197,243,224,139,43,173,21,33,83,184,73,101,150,39,194,213,18,207,104,85,113,85,202,171,49,110,148,108,185,20,222,64,184, -74,143,160,181,243,81,177,228,172,213,189,237,91,191,218,61,216,110,152,138,0,7,237,41,218,27,133,82,48,128,144,167,144,58,44,89,196,56,55,44,94,119,38,151,186,174,110,31,218,212,28,27,214,39,119,246,129,1,59,164,99,219,210,101,207,158,250,121,118,239, -35,236,97,60,203,1,39,212,216,167,159,158,50,91,175,116,157,39,24,160,177,151,42,197,84,239,129,138,249,37,197,20,95,196,7,95,184,104,5,61,85,141,185,231,241,95,255,214,45,179,84,61,151,132,63,43,15,101,52,0,160,156,157,214,166,201,6,211,62,208,28,159, -48,2,2,101,11,70,233,125,43,87,41,205,48,127,92,2,147,132,164,151,41,193,23,3,164,178,214,95,147,67,117,196,50,184,255,205,205,155,203,101,22,232,52,169,43,106,100,191,171,76,214,15,224,71,155,16,102,44,2,149,75,136,60,59,194,154,36,141,177,186,99,55, -125,172,230,166,231,234,106,238,120,221,62,250,100,211,214,155,137,42,88,222,74,115,13,141,78,211,196,165,181,186,107,182,82,46,6,106,184,162,73,166,25,15,77,84,217,87,175,185,206,51,84,194,82,81,136,142,230,57,247,2,182,132,211,74,136,104,81,6,91,150, -205,63,222,248,151,63,39,61,83,36,57,112,97,93,21,11,234,4,86,209,28,177,167,183,148,200,7,240,138,150,26,72,49,136,29,124,139,156,79,214,38,79,77,107,93,71,168,211,237,178,73,116,74,1,98,154,109,100,214,103,23,246,164,54,155,252,60,39,232,236,238,102, -110,1,57,113,182,212,48,25,48,225,40,220,17,173,125,155,198,178,217,234,82,21,234,92,14,38,43,97,117,89,185,235,32,255,79,128,179,228,244,20,210,92,195,158,115,59,148,95,99,95,43,82,38,248,50,181,214,192,212,154,164,17,71,18,230,72,85,4,132,202,21,106, -139,216,23,143,85,224,193,216,73,92,89,146,32,150,21,77,230,135,165,41,163,209,131,95,78,144,60,160,22,146,93,26,116,93,80,140,2,147,38,53,88,129,68,5,20,110,2,95,29,83,184,145,154,57,94,3,51,20,233,222,3,96,148,81,8,173,76,116,156,32,79,218,151,58,23, -48,91,137,138,12,120,76,152,8,3,51,205,74,222,40,140,189,57,22,225,38,162,213,1,83,188,71,132,235,249,9,156,148,210,249,230,37,185,120,129,87,26,59,161,179,212,206,131,7,63,78,22,170,196,194,20,237,36,86,168,64,20,236,11,4,12,13,142,99,35,133,118,172, -185,66,122,135,36,69,129,28,47,207,149,99,249,94,1,78,117,223,218,150,239,188,22,115,156,182,142,235,81,207,247,221,50,204,252,211,111,20,110,19,214,147,25,30,142,127,224,253,203,203,239,140,110,222,6,158,156,158,104,236,11,236,15,169,94,176,190,225, -107,135,123,119,207,186,25,240,150,28,250,193,178,210,57,246,129,182,218,150,69,88,173,86,83,21,187,206,13,6,156,249,0,64,128,44,206,254,104,36,93,109,242,206,73,46,177,170,148,117,178,70,23,247,129,182,208,88,194,92,223,2,154,24,20,180,230,242,57,248, -182,83,16,162,196,156,1,46,229,24,17,104,163,166,164,95,131,2,137,34,199,251,113,162,92,72,141,222,131,233,15,89,118,29,234,225,65,40,21,141,227,94,72,65,35,75,215,80,172,144,73,146,216,53,218,52,15,184,167,65,166,42,21,237,247,66,77,189,214,86,96,202, -77,132,91,133,244,50,132,137,158,204,78,132,58,249,123,216,241,165,135,163,253,143,247,70,247,235,134,153,122,205,192,143,105,28,68,108,248,206,100,161,138,28,146,181,44,100,151,62,3,113,79,109,164,57,24,86,179,135,87,122,116,67,208,55,115,124,203,158, -60,167,30,79,73,191,15,51,103,244,179,111,17,213,58,135,158,173,203,125,107,27,239,204,238,188,35,109,231,147,235,23,124,58,72,249,140,14,80,177,212,15,247,23,111,153,198,126,168,31,28,35,24,64,160,5,170,101,42,240,100,4,209,28,73,129,38,116,112,88,171, -5,101,78,218,105,172,16,197,1,114,0,92,177,92,20,26,134,228,154,152,96,23,136,127,210,228,76,73,72,136,119,8,2,245,198,235,223,254,248,120,100,131,70,19,102,28,160,8,204,20,171,201,240,56,52,17,145,22,146,219,138,149,104,228,172,140,76,53,193,186,8,171, -132,141,48,69,44,108,41,192,240,176,78,188,201,183,4,14,178,10,209,23,168,249,146,39,208,5,137,81,227,136,180,161,37,173,128,12,156,149,215,49,22,70,184,133,24,183,194,35,101,197,87,89,165,39,218,170,143,170,169,92,39,187,100,200,62,5,223,121,245,63, -125,242,167,126,236,115,255,5,148,18,22,97,137,4,21,8,14,196,179,33,171,180,72,88,210,14,247,50,154,45,158,51,90,117,184,37,70,68,44,92,29,170,70,138,69,152,240,59,53,85,3,161,18,178,241,174,86,226,87,246,173,106,227,75,245,17,235,178,105,90,61,57,101, -118,23,207,151,204,205,46,47,3,64,249,249,37,90,29,73,6,188,69,176,85,30,86,174,87,149,231,186,243,219,215,205,23,190,160,100,202,11,215,26,11,154,85,224,219,54,134,96,69,160,117,138,157,221,96,156,92,99,10,104,152,172,234,16,223,58,81,174,86,19,44,161, -217,47,17,32,40,183,161,52,78,80,48,32,10,88,214,226,125,17,253,18,184,87,240,102,161,122,243,206,157,199,97,110,157,7,72,36,226,33,92,152,207,146,109,148,165,118,237,217,72,103,227,194,165,117,224,146,32,16,20,83,140,148,196,36,12,64,33,31,196,151,136, -160,187,49,76,112,192,14,59,144,19,185,200,34,18,153,140,53,80,39,34,17,228,73,243,144,221,115,82,240,196,116,13,83,125,178,48,88,245,20,228,62,244,177,206,251,94,143,155,164,177,67,196,130,251,3,201,201,121,161,243,119,118,246,182,207,224,177,175,147, -229,40,133,19,101,161,58,222,164,144,222,3,240,33,153,102,242,22,107,146,76,6,235,178,152,136,112,134,197,210,80,219,1,91,128,34,184,160,168,167,187,7,165,203,145,216,229,52,26,182,164,28,212,141,62,214,92,96,43,136,122,233,37,101,23,23,89,162,116,222, -205,92,61,207,233,6,44,130,120,75,109,241,59,80,177,215,218,75,50,241,133,83,77,206,45,158,119,164,19,137,198,186,59,133,99,149,58,159,211,31,60,52,13,44,129,153,61,198,36,65,195,223,1,211,162,70,67,197,52,57,123,106,152,117,229,28,16,11,78,55,23,66, -66,11,57,94,48,190,49,81,149,45,149,10,48,0,29,119,74,252,29,174,204,45,212,32,72,154,91,22,114,35,211,130,245,84,107,6,69,179,29,178,12,14,148,31,27,105,2,51,127,42,118,179,39,105,224,51,61,56,0,215,155,133,4,38,138,160,105,118,17,241,109,45,4,192,10, -0,160,2,181,112,166,134,247,8,29,23,13,45,6,179,56,4,78,124,190,44,38,216,198,144,102,221,25,117,36,177,41,25,60,79,76,120,255,234,179,67,2,162,252,121,227,79,29,13,78,150,236,33,42,75,1,137,200,199,29,158,163,210,250,8,32,106,120,63,155,1,120,32,241, -164,194,10,72,49,44,100,191,210,56,30,232,239,221,194,155,1,183,176,253,146,211,114,228,13,128,140,57,251,138,89,30,8,85,222,247,198,164,75,96,109,242,85,223,3,21,123,173,245,131,45,47,175,172,81,197,15,159,40,57,88,8,117,110,33,241,175,121,163,176,132, -227,172,104,239,218,166,84,185,179,101,131,5,224,28,253,192,100,122,80,53,35,83,184,65,213,147,106,89,130,173,164,50,80,180,85,14,86,230,11,3,167,200,155,206,33,46,133,9,13,16,190,36,170,62,29,148,25,212,27,233,60,71,114,63,27,146,232,8,245,226,19,13, -53,115,34,176,243,167,2,11,18,74,53,129,47,74,124,16,98,99,18,155,120,126,160,154,115,129,226,99,181,25,171,206,254,68,205,158,60,27,168,99,139,137,157,154,169,185,197,165,182,123,252,227,83,182,86,199,243,102,35,55,59,31,227,92,38,206,215,221,80,192, -212,54,82,139,204,211,146,78,174,24,99,249,127,34,92,207,47,79,132,61,202,186,143,48,173,66,239,64,43,196,46,3,2,66,45,0,202,183,156,228,131,156,10,173,227,201,137,77,88,75,156,58,153,141,177,7,212,12,20,223,0,50,166,21,108,137,155,235,40,142,3,228,252, -71,98,27,22,183,177,251,125,115,83,74,150,36,31,203,212,29,93,232,123,162,98,191,52,47,56,239,98,47,41,95,114,177,174,152,92,231,99,212,216,209,203,165,227,172,65,245,168,175,129,29,212,247,61,253,213,155,116,160,43,77,133,29,195,240,136,153,225,249, -9,16,192,6,62,133,69,219,159,87,210,100,137,183,124,9,9,0,165,220,144,149,254,199,8,140,232,48,251,7,227,242,254,157,94,128,64,93,250,238,12,88,32,112,184,234,19,127,3,2,105,89,247,200,199,141,59,251,201,134,107,207,107,215,235,142,204,233,149,41,16, -233,124,63,36,148,96,166,211,26,96,83,29,214,47,33,56,137,245,210,227,109,154,111,34,106,157,212,99,222,7,171,80,119,115,243,117,85,111,198,204,132,51,243,64,144,6,249,196,242,62,110,82,159,96,36,177,231,147,0,19,111,230,212,67,127,235,152,244,40,155, -186,90,176,124,169,173,122,207,185,126,243,220,255,112,134,105,116,10,236,30,19,107,198,161,96,192,25,67,92,24,203,210,232,177,160,158,25,29,230,183,27,181,105,153,245,40,167,12,177,230,110,211,43,27,173,40,251,122,94,120,65,233,229,27,147,9,170,15,229, -248,174,249,88,152,98,153,47,196,159,180,189,188,42,67,31,105,138,39,147,78,152,113,104,116,173,219,229,140,133,193,148,227,120,156,158,32,185,62,204,110,221,17,17,79,180,149,181,63,94,83,51,164,166,144,0,201,133,83,22,255,169,30,42,44,105,24,191,128, -107,129,88,101,74,121,231,222,136,37,129,146,245,123,228,137,122,142,12,129,155,93,8,203,126,47,215,199,22,227,178,217,138,44,120,15,27,227,130,215,169,151,255,248,0,234,28,59,10,143,117,223,221,29,109,238,222,116,250,96,59,212,119,94,25,201,226,169, -213,16,10,225,228,82,25,162,88,98,87,23,129,240,143,229,132,107,34,110,152,108,66,85,162,174,144,238,17,113,170,32,51,45,9,7,43,89,158,67,141,117,149,80,189,82,20,117,130,53,109,124,232,102,205,195,83,205,94,34,72,21,8,223,87,119,28,61,24,202,82,25,162, -41,174,102,78,172,113,46,157,107,186,100,60,115,248,122,54,142,207,116,150,156,140,126,88,145,70,56,25,161,75,154,120,173,74,0,28,133,198,239,74,41,78,134,70,241,185,107,243,15,99,36,63,0,18,241,212,19,150,131,25,204,172,154,85,236,214,102,225,90,84, -13,195,10,145,217,225,124,165,209,145,247,45,203,201,212,132,92,128,147,160,152,188,138,97,131,42,168,136,189,239,30,33,49,111,0,251,29,75,113,65,210,209,24,101,89,169,239,223,29,6,237,99,16,214,94,25,236,222,203,21,81,51,178,35,186,179,219,87,175,188, -180,21,222,126,185,167,147,168,9,127,90,135,127,14,152,133,129,239,15,133,101,10,97,67,26,237,84,202,171,34,220,23,225,179,106,117,156,77,184,192,246,84,147,183,37,17,191,176,52,227,230,23,154,229,244,76,138,133,130,60,58,203,29,180,169,160,177,0,75, -145,168,155,228,103,37,18,154,196,180,62,81,32,62,150,235,180,168,132,137,43,225,164,179,143,185,91,246,231,178,201,90,249,39,54,26,90,202,68,34,70,89,219,206,50,25,32,231,18,166,120,31,255,221,124,213,191,95,77,38,191,221,145,9,171,52,197,136,93,205, -196,199,170,67,36,240,240,156,191,35,209,206,117,185,186,58,175,201,120,92,187,118,77,111,255,187,109,245,250,104,209,144,241,200,134,112,165,8,34,70,169,209,163,253,61,4,220,13,61,197,42,48,216,172,154,141,117,111,48,16,128,80,166,177,113,214,39,205, -35,137,199,67,99,146,144,165,61,100,13,217,202,17,148,108,192,192,205,82,58,20,137,255,217,120,238,76,183,255,234,47,1,252,164,160,14,217,138,133,133,224,157,20,180,83,159,250,88,189,4,214,50,221,221,92,109,222,238,5,125,56,117,104,119,208,185,175,3, -178,82,218,214,171,220,188,132,66,234,204,167,34,221,154,181,106,234,132,114,141,105,118,27,32,220,129,96,109,21,143,102,227,28,231,189,168,234,160,232,231,121,88,233,26,40,193,204,35,177,175,157,7,71,194,15,43,159,147,215,147,248,86,251,163,170,150, -19,95,92,126,226,233,191,249,47,4,81,133,154,145,19,139,122,28,139,98,164,63,179,204,74,233,3,40,216,208,27,75,243,116,6,139,166,19,248,44,214,25,196,140,157,234,174,94,203,212,48,100,135,96,211,114,234,91,35,244,165,148,73,177,104,57,83,227,187,200, -157,188,246,154,82,79,32,225,190,125,28,249,217,107,224,244,175,225,11,172,122,107,203,227,45,225,206,164,3,128,143,113,136,52,252,173,90,191,180,46,115,131,239,86,136,24,198,214,169,77,100,168,242,105,126,88,176,135,127,90,52,197,123,90,145,45,42,218, -35,157,237,14,85,152,134,240,189,126,44,64,238,38,154,235,107,205,242,137,17,8,25,210,73,134,0,9,106,235,184,178,91,83,105,127,167,151,181,171,158,11,118,152,3,209,34,127,80,15,245,51,159,157,26,111,111,13,202,63,61,232,167,79,62,61,95,6,113,97,242,113, -238,158,253,185,217,242,205,155,125,125,247,86,102,70,29,154,98,200,22,68,87,119,119,172,206,124,178,129,240,39,151,115,141,48,73,223,189,179,171,154,0,73,56,181,170,57,5,237,30,128,131,31,56,209,90,118,46,68,65,136,68,2,8,17,248,151,40,14,52,210,200, -0,101,197,36,162,209,82,140,33,5,9,94,89,141,136,222,223,8,77,178,35,109,36,144,145,3,69,72,20,2,250,137,153,2,44,38,152,251,180,14,112,201,147,194,26,174,42,60,177,148,179,19,127,204,120,50,129,187,233,31,176,192,173,180,201,188,214,123,247,145,247, -74,253,60,229,206,204,29,176,84,75,238,233,68,153,221,57,73,178,203,123,32,23,251,54,125,125,23,83,44,97,142,162,96,159,51,87,94,184,162,57,228,146,35,226,38,225,78,7,4,5,7,66,178,155,142,163,94,39,125,158,25,190,80,218,26,26,65,118,96,114,66,124,89, -178,78,89,101,154,16,253,176,103,70,250,86,39,203,137,53,246,208,24,241,177,244,139,236,50,174,183,234,111,228,50,212,193,10,171,71,147,44,28,45,242,211,240,173,44,70,117,91,111,60,80,223,253,78,47,120,233,107,35,16,227,129,233,220,199,119,219,207,224, -119,67,213,152,179,174,49,171,221,153,31,139,221,147,159,106,217,209,176,112,48,171,248,252,12,90,222,145,159,255,96,19,208,210,147,70,62,3,135,108,18,179,56,240,12,46,7,189,41,194,5,83,53,51,211,176,52,233,82,230,98,124,100,35,101,53,76,227,73,238,221, -30,161,27,57,170,47,221,57,106,6,199,165,132,122,126,100,2,221,143,160,39,254,86,111,138,7,213,52,56,158,39,230,42,83,210,234,249,64,58,242,212,219,14,118,90,50,249,194,112,231,165,177,8,212,62,143,116,42,139,249,39,157,119,71,159,255,46,26,171,75,159, -2,146,222,16,25,36,66,240,196,97,209,119,119,110,42,86,166,63,232,69,138,92,113,13,39,133,29,117,17,242,135,179,69,0,31,103,56,187,208,56,176,60,174,145,88,152,51,207,160,225,103,4,120,114,2,244,99,11,33,216,217,141,200,66,148,128,21,221,200,87,2,103, -64,206,56,35,231,158,90,122,243,230,75,91,42,183,25,249,93,81,20,118,74,117,182,199,193,181,127,179,149,196,205,18,198,182,166,178,33,146,34,211,145,25,247,67,181,187,73,64,194,100,123,224,78,156,118,234,141,191,28,155,151,254,75,174,23,206,25,55,61, -47,240,84,189,252,103,119,129,130,19,38,11,244,212,92,228,198,163,28,160,37,86,52,187,89,158,187,44,183,38,69,38,136,51,50,145,88,208,160,110,21,153,47,196,185,136,163,10,144,34,101,101,114,125,233,189,39,188,39,145,142,15,52,106,105,251,22,201,175,18, -217,72,150,36,203,130,207,10,23,224,23,150,65,14,95,227,115,191,165,120,130,200,66,190,50,36,133,52,7,5,76,255,181,135,180,221,220,12,206,87,115,74,239,14,253,140,40,86,129,222,124,61,47,31,93,90,82,7,157,135,74,9,0,197,199,57,254,240,176,57,235,93,53, -182,18,175,56,140,138,160,48,236,139,229,24,116,230,98,121,144,82,100,171,228,96,228,87,21,187,196,178,251,48,175,99,166,236,252,12,194,160,173,100,228,29,181,86,26,89,232,64,97,205,160,53,48,195,57,137,97,48,75,185,180,181,197,236,44,15,73,43,150,210, -113,254,232,169,199,239,252,210,223,251,88,191,0,155,193,162,47,209,14,229,233,90,24,55,53,216,133,223,108,180,104,110,69,231,89,55,204,176,164,213,70,178,29,73,131,122,43,64,172,77,183,31,186,205,191,208,250,245,63,203,216,3,105,63,189,122,198,206,28, -111,112,29,185,189,7,125,197,194,52,190,7,66,42,55,236,102,122,170,221,112,68,201,163,126,41,35,15,96,142,229,241,36,9,29,27,167,39,220,49,227,111,17,163,164,114,220,195,226,122,220,62,54,123,242,214,91,78,46,62,44,145,110,78,45,137,0,158,7,186,163,32, -228,176,139,76,55,176,112,105,134,249,220,225,112,40,67,61,79,144,255,199,226,202,239,251,153,201,204,201,238,130,190,101,197,138,170,246,41,224,177,176,64,83,124,69,46,149,80,223,210,252,252,142,180,221,209,131,233,190,11,184,252,218,231,148,204,220, -61,57,119,214,221,125,121,100,57,58,110,62,247,171,41,169,202,98,216,169,206,9,101,204,113,66,216,50,205,140,211,84,56,4,139,168,152,4,5,81,126,0,130,130,166,215,114,30,4,87,117,232,79,128,230,42,7,18,250,206,55,212,159,127,230,103,207,14,142,47,197, -101,175,63,228,180,88,35,221,141,192,21,123,59,185,25,13,56,77,205,232,241,168,52,121,86,170,28,177,103,218,2,163,217,45,220,160,99,221,253,91,142,8,216,205,46,202,76,9,149,247,83,245,103,95,237,234,91,27,251,48,149,218,62,118,102,202,206,30,111,178, -87,199,189,241,93,36,63,225,25,219,51,13,87,107,72,135,58,168,202,132,229,145,172,86,33,34,102,18,223,199,197,161,47,105,100,77,84,224,29,45,0,150,58,140,99,225,214,237,169,197,79,110,168,192,215,198,193,247,58,230,240,249,27,65,154,177,253,140,232,215, -165,184,29,192,45,213,33,212,178,24,187,26,77,48,222,161,141,84,34,147,237,156,162,147,63,168,162,136,233,135,178,224,136,66,22,142,239,244,110,234,197,206,134,230,236,103,191,83,200,97,93,140,59,90,204,246,118,74,81,254,210,102,31,14,87,69,240,203,10, -10,86,40,54,101,36,1,180,118,232,125,44,87,211,248,77,132,54,112,14,204,252,239,38,3,157,229,67,196,138,138,116,177,28,156,112,22,147,94,137,165,80,76,67,17,157,192,126,10,87,102,44,21,82,81,36,117,247,240,182,251,59,106,112,176,151,221,252,133,191,253, -177,193,96,212,53,96,202,57,83,2,75,221,146,71,23,45,161,214,177,90,127,212,43,244,153,103,210,188,214,44,16,224,143,85,119,191,52,221,29,163,16,187,154,153,249,84,172,36,251,92,35,83,71,178,60,214,243,139,45,196,216,214,229,120,207,108,84,234,227,143, -76,185,214,108,82,146,170,6,80,2,216,49,228,151,113,61,100,39,128,98,69,108,150,177,151,199,151,204,16,165,211,41,151,62,240,145,170,69,41,94,177,4,120,245,219,11,199,151,31,16,241,149,130,252,224,106,114,154,100,229,7,149,112,120,73,32,49,177,0,228, -156,221,184,48,195,57,194,6,224,56,95,149,136,68,246,222,174,159,174,122,84,174,180,144,229,40,183,76,219,125,234,51,161,84,81,80,30,28,193,191,182,118,69,189,125,251,151,119,8,118,114,248,209,4,213,4,176,201,130,56,239,255,20,205,212,144,152,222,254, -179,210,18,60,49,31,139,111,43,218,219,174,215,165,61,144,215,169,98,15,223,113,12,18,212,89,206,242,150,230,96,134,0,156,235,29,73,21,160,229,121,147,31,142,53,109,136,250,147,185,155,79,127,106,161,31,215,17,160,176,247,20,116,35,56,98,203,236,11,223, -24,150,21,39,29,44,17,48,200,237,151,251,1,53,89,194,149,204,83,6,69,102,212,247,94,226,91,70,162,85,35,152,182,39,158,105,148,236,18,34,159,154,164,145,59,190,56,85,146,39,102,133,69,90,143,221,104,0,158,185,95,232,153,227,45,88,29,198,193,129,175,84, -167,78,179,22,86,25,73,40,56,207,163,72,178,65,126,167,242,74,123,106,233,227,255,78,123,130,177,234,203,44,196,244,102,85,236,90,64,208,108,249,24,225,75,231,240,175,178,232,225,106,24,191,114,62,20,85,129,213,49,176,252,142,147,238,51,153,199,184,39, -123,17,112,23,146,169,70,33,173,30,183,111,12,228,181,91,139,93,183,177,113,223,110,188,176,230,222,77,134,239,64,197,82,26,115,137,83,175,151,245,218,198,154,155,200,149,53,79,127,12,100,204,173,73,88,49,71,238,178,9,165,72,145,51,100,182,159,249,216, -239,237,116,221,241,70,67,166,132,242,139,134,100,80,226,216,62,100,159,240,67,234,145,178,21,176,96,175,105,18,49,103,73,120,33,165,71,140,89,221,215,191,98,255,243,221,205,78,254,228,39,142,229,206,20,82,227,59,98,25,61,158,52,198,95,152,96,77,33,15, -7,133,218,187,95,234,206,22,117,46,212,39,159,8,93,92,131,73,238,102,212,54,39,133,106,21,111,255,157,255,210,15,16,135,227,179,52,5,135,69,164,44,242,222,244,213,12,174,97,138,99,240,198,145,8,158,32,41,138,56,217,175,148,248,38,36,157,84,37,144,116, -168,30,206,35,117,135,103,209,157,126,244,83,55,172,244,108,6,126,97,171,192,74,107,60,167,108,26,78,111,115,76,230,192,112,101,30,80,226,50,30,226,87,100,113,201,57,171,156,207,200,215,177,10,37,141,56,213,124,95,117,183,219,246,17,88,197,215,254,242, -142,163,182,114,19,12,30,135,179,142,57,3,106,237,138,204,129,122,95,193,42,53,169,82,188,164,54,32,84,58,216,43,85,227,206,188,90,182,28,77,160,212,105,197,217,247,253,150,231,47,17,131,218,52,225,96,72,229,154,200,4,112,84,123,10,111,79,142,140,62, -118,50,137,84,0,20,199,230,100,136,244,51,146,78,57,126,112,46,241,155,43,115,200,24,94,56,99,77,174,43,187,187,170,127,231,118,240,141,24,203,247,220,143,207,64,163,193,81,35,22,165,112,109,89,50,174,199,253,77,124,50,66,6,22,163,67,208,236,193,201, -199,72,1,20,99,112,182,120,254,48,151,148,155,173,168,191,131,123,90,125,243,247,246,195,24,200,185,209,74,132,59,138,18,18,159,218,215,36,67,154,245,70,84,208,244,51,231,75,222,24,0,202,213,235,169,36,31,88,103,204,145,21,82,7,165,125,242,215,85,92, -241,220,204,194,58,204,240,125,56,110,58,12,164,225,56,26,202,9,50,6,211,101,249,187,83,114,188,16,46,175,211,61,101,35,111,209,242,138,122,37,232,36,235,228,147,236,100,157,160,189,96,165,182,246,114,228,93,23,21,233,68,238,224,69,51,44,253,83,56,174, -254,246,107,150,61,178,151,47,175,77,24,237,119,23,236,164,152,109,34,220,201,154,100,175,8,167,196,112,91,176,157,123,202,189,92,149,158,14,192,23,79,230,13,243,203,180,90,126,92,59,137,108,114,159,181,90,170,250,102,88,114,142,11,231,17,106,153,159, -228,57,99,250,34,250,90,112,199,118,66,152,27,153,89,88,138,146,221,250,118,251,63,252,212,47,60,241,224,137,167,155,195,31,255,185,153,114,52,238,153,71,159,108,113,6,177,59,177,148,210,40,154,159,127,225,248,120,250,68,110,167,216,87,26,23,238,238, -237,62,75,38,220,83,207,214,240,118,88,105,48,122,4,50,210,36,43,189,57,161,68,40,253,222,144,168,216,177,207,149,157,40,32,230,25,214,216,138,77,82,53,152,230,102,171,102,57,231,105,52,202,125,245,132,243,237,61,2,171,39,25,29,175,154,238,217,159,248, -141,127,1,7,108,169,216,236,192,195,50,229,228,68,241,173,92,208,182,192,50,238,59,73,245,150,50,238,143,24,1,222,41,73,68,184,52,199,131,65,95,222,142,209,5,185,247,169,169,41,228,117,58,170,47,181,219,165,19,58,177,58,22,207,212,244,141,139,219,110, -229,226,188,104,108,21,199,190,127,18,96,82,87,236,181,245,138,97,93,49,111,94,127,219,243,66,32,99,22,140,15,111,67,45,246,246,20,171,20,185,237,9,135,51,179,174,152,166,165,200,135,142,136,143,25,12,59,32,65,65,225,210,191,112,18,90,40,102,139,185, -128,128,195,94,168,92,25,139,230,99,206,217,41,247,59,106,144,68,115,87,63,187,250,200,193,103,127,254,120,231,103,254,246,241,97,86,244,213,241,83,169,105,76,27,176,70,200,114,61,232,25,100,84,130,205,215,187,230,212,185,154,8,248,96,167,48,183,55,70, -38,105,24,175,177,136,47,200,7,28,63,29,186,159,254,187,83,57,229,211,108,165,212,60,1,73,5,139,122,141,31,169,3,112,100,64,129,147,59,164,0,164,135,135,113,108,16,50,171,100,164,78,214,190,109,66,203,210,210,185,47,45,30,95,185,199,193,69,88,42,150, -130,231,107,144,71,144,1,96,145,79,233,200,115,9,154,194,74,99,195,58,180,24,105,29,182,83,22,249,192,53,109,77,218,41,253,78,50,109,117,176,107,173,236,53,128,24,182,124,16,153,25,184,192,221,102,230,56,103,145,26,75,161,178,60,70,186,218,47,168,170, -15,229,125,242,177,106,178,14,69,178,107,106,123,89,57,90,227,153,25,222,199,88,246,166,42,122,75,86,45,46,136,198,242,201,117,142,88,24,182,196,140,112,115,4,99,185,218,113,6,216,251,105,19,152,106,14,147,28,121,141,133,95,30,144,65,35,242,97,117,74, -1,79,148,59,97,111,217,228,22,34,224,45,137,59,0,164,190,242,127,216,255,128,240,102,115,231,65,55,124,252,169,153,209,99,79,213,179,227,75,193,232,205,239,117,130,83,31,107,23,223,123,237,129,186,245,23,251,154,118,254,213,63,31,152,189,123,165,196, -157,68,188,124,199,99,143,66,19,27,165,93,124,82,149,237,121,144,122,236,174,33,231,228,123,184,164,246,1,104,152,69,133,242,59,216,169,2,42,20,190,59,211,221,253,161,33,10,54,50,131,79,58,222,97,162,15,119,40,19,83,150,36,201,253,95,252,185,127,114, -153,211,193,74,142,118,204,16,193,224,187,23,128,212,163,33,121,96,63,190,32,22,215,227,164,6,154,11,187,156,196,175,169,215,86,14,182,238,87,53,10,164,18,185,119,144,140,9,74,172,107,130,8,34,88,229,99,159,174,146,48,159,251,245,243,238,57,234,30,107, -138,47,42,67,18,201,39,153,222,39,31,91,29,220,49,210,49,29,196,237,67,86,252,224,46,203,116,209,28,204,49,133,187,181,185,165,56,7,240,216,83,76,5,207,168,244,56,136,10,58,253,102,245,198,53,156,142,57,41,165,64,230,134,167,57,1,87,155,41,254,7,22,86, -102,54,16,84,16,41,58,41,122,161,153,102,23,11,135,117,200,92,60,72,66,217,255,244,175,244,63,59,249,200,244,254,55,255,224,181,244,211,171,143,13,166,142,199,250,147,63,51,15,100,44,173,3,1,173,44,71,188,12,123,5,88,40,163,23,158,104,232,153,71,180, -157,62,25,150,143,60,97,178,95,250,135,179,227,103,126,166,53,126,226,153,250,72,134,23,248,34,23,235,219,239,164,195,219,19,130,94,99,129,60,71,38,12,195,128,220,49,231,70,136,9,102,55,78,233,59,61,84,197,249,3,156,245,87,127,246,31,93,146,57,107,156, -66,195,248,21,32,48,144,150,65,44,152,20,177,124,148,75,238,121,144,201,0,18,155,143,199,150,86,107,128,248,149,183,9,156,136,136,155,22,217,164,168,46,231,206,78,7,38,141,219,110,178,107,23,143,62,92,31,39,182,245,4,52,45,203,125,178,159,145,239,214, -176,27,43,151,222,129,140,223,71,99,181,227,74,152,164,134,88,56,229,31,218,80,159,226,182,157,217,216,246,15,182,220,95,108,149,126,254,61,130,174,233,150,181,61,187,111,243,168,42,213,232,247,44,145,113,81,141,129,5,107,239,252,138,205,4,92,4,9,23, -89,104,15,227,60,14,48,200,217,208,195,47,134,208,7,198,233,205,87,237,131,205,215,210,127,245,27,127,255,199,14,192,0,142,62,241,236,137,131,56,181,57,78,182,89,254,212,137,209,227,207,180,237,184,24,193,103,229,156,25,130,19,12,12,130,219,59,247,14, -212,75,223,232,196,131,46,200,201,81,81,133,232,18,127,86,185,243,10,250,248,8,73,232,36,222,158,158,74,139,40,13,114,206,11,227,217,25,15,225,25,160,185,0,83,218,151,81,248,89,7,31,95,126,238,197,165,211,43,247,56,120,196,201,228,34,203,161,185,12,0, -44,126,1,120,202,208,50,196,97,49,27,149,30,230,216,242,91,91,51,246,85,116,174,242,175,135,91,197,244,21,39,148,231,131,122,57,134,143,229,57,101,212,193,237,93,56,200,155,109,53,156,210,118,102,243,8,117,40,131,193,31,110,155,118,84,128,239,40,102, -155,104,44,7,120,61,7,255,250,121,229,55,24,228,177,172,188,49,230,80,169,229,159,60,29,220,121,67,57,217,196,243,110,105,103,231,248,12,4,127,182,105,163,121,21,244,190,107,225,131,235,102,204,68,120,134,132,65,1,140,28,112,216,4,204,173,97,235,131, -15,127,66,233,154,16,194,208,90,153,166,71,118,30,56,185,224,28,15,58,96,101,214,127,87,125,243,111,53,131,185,197,199,213,47,242,177,229,79,28,63,128,6,153,238,190,14,151,206,70,249,99,103,27,193,141,63,122,160,78,158,154,51,156,20,53,183,128,147,88, -102,201,226,82,35,99,189,20,66,15,132,46,19,58,213,74,201,158,160,219,170,82,72,85,143,176,1,90,84,186,244,247,3,89,195,233,130,182,236,33,91,8,191,9,70,77,38,26,44,45,126,236,202,103,62,243,194,31,225,59,151,196,253,48,216,136,145,67,177,60,196,77,156, -17,23,196,88,161,220,209,35,8,69,91,99,164,226,56,188,11,24,194,54,27,49,199,2,177,195,0,25,159,132,46,205,206,5,13,55,96,34,5,120,100,26,41,198,238,97,14,27,49,43,190,252,28,252,107,242,245,101,247,229,150,114,203,29,169,30,85,208,212,74,192,23,100, -47,188,163,204,225,59,226,159,106,93,11,239,72,225,50,125,183,182,182,172,159,159,57,99,252,86,160,62,225,190,251,157,80,183,231,125,114,156,157,237,220,221,202,100,136,89,186,48,140,117,19,244,238,194,71,44,14,12,200,163,32,75,97,228,216,70,105,101, -102,169,225,222,145,108,196,42,199,38,224,92,96,91,74,31,158,225,140,68,68,185,17,59,194,117,213,250,207,6,45,214,159,114,74,204,223,252,251,238,151,23,31,83,191,180,189,213,13,103,143,181,237,160,7,181,96,47,12,22,193,238,118,86,251,246,215,55,205,210, -99,243,172,6,181,51,199,146,114,136,16,233,165,111,190,25,159,92,154,178,199,142,213,114,254,112,210,144,32,230,153,205,81,99,240,119,249,184,64,218,142,172,85,207,140,179,28,73,128,161,25,141,134,122,127,175,167,239,221,223,11,7,253,33,140,72,174,251, -253,158,30,102,3,189,180,244,196,151,254,214,207,255,119,255,39,160,125,206,173,36,0,22,10,21,8,113,198,73,26,50,34,40,14,252,44,10,55,176,185,184,155,0,9,85,196,98,22,86,128,105,42,90,177,184,30,151,12,113,91,160,222,68,37,108,221,238,13,240,107,96, -245,88,196,54,217,121,43,40,115,75,98,66,245,79,219,205,25,229,254,201,243,74,223,223,240,233,186,85,172,210,23,110,248,25,33,111,223,116,233,125,135,100,122,213,189,160,56,170,224,106,231,53,187,176,57,172,182,47,203,220,99,171,167,213,217,149,64,115, -216,52,167,135,143,122,126,107,176,46,190,212,96,127,223,54,79,42,153,235,31,135,125,97,87,56,33,133,219,160,48,248,176,58,42,57,112,99,98,162,100,78,82,226,205,49,68,110,153,125,167,121,147,41,222,5,59,43,77,206,209,34,255,241,159,155,223,123,233,143, -244,255,142,16,105,112,227,79,239,196,32,40,130,157,187,93,93,175,39,69,163,25,151,208,48,253,205,107,111,70,49,8,217,233,185,52,63,54,95,207,127,230,23,206,14,78,61,62,61,70,76,76,127,41,168,213,149,71,42,150,170,58,23,87,217,233,2,153,239,97,159,131, -41,116,152,36,1,83,126,64,248,44,73,213,131,143,157,251,204,139,191,184,250,79,254,121,105,240,53,149,76,0,43,227,136,248,0,43,21,84,24,200,8,118,110,243,201,150,99,145,101,76,125,24,217,132,99,251,0,22,137,134,217,210,193,105,228,132,100,51,88,150,28, -49,79,66,103,192,13,154,202,93,203,52,104,3,108,19,195,73,214,150,77,102,80,72,73,12,66,147,63,128,182,210,130,190,120,195,215,124,115,114,30,133,250,246,68,159,126,31,193,138,208,185,71,221,252,198,186,228,101,165,35,96,29,166,121,190,90,16,28,7,116, -11,127,207,37,230,209,233,72,54,51,72,143,71,33,39,136,7,205,1,137,82,105,134,70,48,104,178,52,144,73,161,82,150,150,225,15,206,69,26,233,96,8,173,149,84,31,199,1,21,126,28,144,104,107,200,105,180,58,200,11,63,73,70,6,99,114,58,27,212,123,233,81,117, -236,39,126,97,252,223,226,29,103,254,243,191,127,181,245,179,127,115,121,248,250,95,110,71,227,161,142,79,157,158,30,246,186,67,89,74,33,12,10,17,50,247,35,28,143,139,160,0,129,145,81,99,199,0,53,72,186,83,99,113,17,20,60,236,143,244,96,56,50,221,131, -190,217,219,239,27,54,151,245,122,131,96,231,193,1,210,60,225,173,103,63,253,155,255,211,194,137,115,119,233,83,177,64,65,162,154,130,220,18,115,84,16,106,33,190,148,166,56,176,156,23,40,99,128,56,215,120,50,14,40,131,224,240,79,217,108,112,141,68,57, -205,50,181,149,130,237,67,239,167,27,13,219,117,15,181,149,137,245,20,218,58,25,76,77,42,209,239,21,112,93,205,92,61,111,253,78,217,111,157,91,172,212,195,73,168,223,87,176,50,255,191,106,126,230,155,93,239,40,35,59,117,28,153,243,196,61,220,90,8,125, -12,55,212,69,182,167,41,237,221,198,32,61,35,131,51,58,57,123,36,217,225,158,5,118,92,147,105,167,20,50,59,220,35,228,212,56,215,63,148,57,197,176,82,69,44,147,69,33,96,19,165,58,146,13,27,112,59,147,177,74,90,182,134,4,90,14,56,135,248,231,127,51,255, -229,147,167,130,223,120,233,155,91,181,211,79,206,14,175,254,203,239,182,143,157,104,150,244,93,155,223,235,199,51,115,53,199,166,132,246,108,152,167,181,160,40,104,24,45,83,140,16,44,114,197,200,201,178,248,92,81,168,125,228,33,59,187,189,112,52,28, -81,160,102,119,183,27,116,187,195,241,212,236,201,175,124,246,217,127,112,185,0,181,201,172,27,146,4,101,14,134,44,231,244,19,86,248,192,193,112,11,32,167,189,96,97,156,11,114,226,36,249,145,170,203,45,199,168,146,128,32,103,38,93,237,68,200,214,198, -38,17,94,84,70,1,69,13,188,184,83,6,237,150,109,128,164,217,191,143,144,7,160,137,109,177,164,111,251,48,197,221,123,133,123,233,209,125,123,94,38,186,251,190,157,13,191,15,207,97,145,255,209,180,93,160,222,199,12,139,198,114,224,156,79,197,170,109,0, -135,151,90,74,247,106,243,220,130,69,205,206,105,117,247,65,160,27,179,165,235,182,88,70,226,41,178,144,197,224,248,91,131,42,62,216,142,85,138,191,86,250,118,66,53,42,70,50,176,35,137,164,251,140,204,189,98,123,59,126,180,142,25,223,24,63,89,141,212, -77,204,118,97,152,175,82,200,120,91,133,224,36,169,100,18,184,123,253,21,243,221,7,119,213,31,157,121,42,53,205,134,62,241,200,227,109,38,95,57,215,31,80,186,31,238,220,129,239,220,181,102,235,141,126,52,26,23,81,41,201,97,82,195,8,149,153,53,2,253,67, -130,98,156,145,127,206,161,181,99,13,97,154,253,206,40,139,107,199,254,237,249,207,254,221,255,249,212,163,159,250,22,150,17,33,113,193,33,174,185,165,95,117,69,28,115,103,82,102,222,180,184,140,24,244,164,21,70,49,18,194,137,154,138,149,90,214,146,4, -190,133,144,153,233,185,132,6,172,148,209,243,141,182,157,117,145,240,143,128,140,182,57,155,168,238,192,218,221,7,120,115,112,218,181,94,193,169,229,106,80,95,178,167,146,7,234,102,150,185,115,181,66,109,233,174,8,111,126,251,180,250,60,204,245,197, -175,94,124,135,80,223,83,99,143,78,142,193,159,163,213,112,138,229,24,95,252,237,117,63,67,183,81,55,143,157,198,157,183,16,171,157,110,132,100,148,203,157,93,163,118,65,90,28,15,67,206,46,218,222,237,233,198,84,203,112,94,175,29,105,115,20,72,149,3, -14,83,228,222,54,204,133,27,153,77,204,217,191,210,206,95,176,156,168,148,25,79,94,87,53,119,109,13,57,225,180,100,241,47,83,166,162,185,161,12,34,57,126,178,60,246,200,41,251,196,241,197,114,181,223,207,158,184,125,179,147,180,90,156,128,230,184,209, -160,137,107,44,56,71,94,126,4,40,36,121,92,111,138,123,7,67,61,28,229,65,247,96,96,250,131,242,102,191,31,188,252,232,169,159,248,247,58,108,245,184,0,180,51,190,29,203,72,20,43,116,33,181,150,108,133,83,30,7,8,80,146,113,124,0,77,98,146,173,220,175, -57,184,139,205,177,113,194,65,108,5,177,6,76,181,96,238,52,76,203,190,204,81,108,202,152,91,96,65,217,85,139,59,106,249,237,74,89,109,183,96,121,114,23,190,115,186,84,191,69,77,93,119,236,213,17,30,191,58,30,214,19,127,0,193,78,132,203,216,232,242,229, -11,178,37,8,39,180,77,70,189,113,66,219,12,16,178,236,46,121,83,41,153,89,188,147,24,22,145,207,226,244,203,230,185,144,213,248,101,231,134,237,126,192,13,121,57,73,134,99,204,250,244,183,12,211,169,153,99,109,234,49,167,182,165,156,120,25,112,154,56, -7,80,155,16,161,108,1,108,236,252,54,44,134,169,106,153,232,13,81,114,106,91,201,113,140,37,19,215,70,8,65,25,115,106,57,160,144,13,65,230,196,241,242,216,177,133,236,108,154,22,167,16,27,47,34,174,154,3,19,112,140,177,40,16,49,209,240,16,153,149,97, -54,214,119,32,244,206,221,173,209,157,246,244,199,190,85,218,168,207,40,140,224,71,102,29,195,219,9,215,76,237,35,236,117,156,251,231,56,130,149,255,122,211,43,123,71,100,200,62,32,238,197,117,206,46,78,234,145,29,2,243,114,102,113,100,98,248,221,145, -203,108,132,156,32,132,13,206,152,66,37,67,151,196,156,198,182,111,79,204,183,220,206,27,120,218,148,247,173,172,33,238,87,19,217,56,249,116,25,196,144,186,177,44,11,130,100,196,100,151,50,47,217,138,51,248,48,26,235,181,214,39,5,124,145,219,154,34,11, -181,9,193,46,118,106,154,51,41,238,252,228,157,224,224,219,75,174,81,222,147,125,235,30,175,178,62,97,43,12,6,247,216,171,194,105,123,125,51,222,243,181,199,65,58,14,6,84,208,146,27,254,114,7,20,68,128,131,20,154,155,5,28,27,79,225,234,58,195,30,101, -198,102,20,154,113,196,25,13,80,104,14,204,242,115,137,11,6,22,108,191,148,73,252,44,192,16,215,5,50,40,48,227,65,233,219,42,76,88,117,25,148,210,115,75,196,93,142,113,27,217,29,153,166,38,191,147,157,83,126,32,181,140,96,151,137,48,74,82,169,36,245, -153,115,147,183,87,172,125,40,132,246,140,130,64,72,7,86,186,200,76,79,50,103,67,121,71,96,110,14,31,10,189,31,141,8,150,98,176,55,174,36,9,1,170,144,248,222,202,222,180,81,207,49,137,211,9,138,178,6,9,6,45,191,69,26,35,11,18,18,51,141,5,183,209,185, -229,100,134,34,184,97,169,35,86,94,176,50,93,156,237,173,27,126,87,143,247,26,107,251,1,246,221,185,192,118,15,189,86,109,231,204,253,195,63,183,120,222,169,149,101,203,81,153,225,235,75,150,25,159,77,100,248,159,196,151,19,52,7,226,122,124,199,185,228, -164,236,155,98,123,251,12,225,248,227,234,0,136,32,224,1,3,57,113,27,92,168,229,138,14,103,240,131,106,202,19,228,149,25,235,65,11,202,177,245,160,36,150,250,9,49,117,50,140,210,151,196,177,136,162,40,93,238,159,163,116,142,44,127,22,70,176,231,8,148, -113,98,11,46,1,60,63,199,58,202,40,28,147,24,208,178,220,143,73,58,28,51,129,116,160,106,225,28,16,223,24,192,28,144,13,220,204,39,144,221,3,64,28,69,192,64,65,30,38,178,77,142,196,169,142,251,171,197,126,32,166,180,72,86,154,10,68,84,214,17,167,38,17, -175,199,28,240,227,202,134,79,162,235,36,181,113,85,37,81,140,123,46,223,129,37,203,107,197,52,123,158,170,100,58,133,202,115,71,250,144,123,22,81,168,68,195,11,191,59,244,155,25,174,109,4,19,13,101,42,149,66,229,118,164,239,181,113,225,187,10,246,136, -244,133,178,90,126,225,194,100,24,163,32,99,217,81,239,240,184,41,151,169,42,1,79,136,222,170,227,139,131,192,230,222,50,227,164,227,82,14,27,153,117,194,133,154,58,80,96,43,41,115,252,224,81,25,23,28,82,11,54,176,28,244,108,217,47,163,34,199,137,225, -64,73,238,80,133,245,47,179,128,93,229,183,104,250,24,39,241,164,210,215,69,1,5,204,19,108,184,83,128,159,68,234,119,201,1,104,133,224,32,68,19,198,204,211,148,220,77,2,177,37,135,175,113,56,30,135,94,0,189,114,84,50,132,136,215,4,68,185,16,174,204,108, -146,247,132,55,39,189,137,207,204,71,54,199,155,9,241,224,98,152,224,56,244,38,152,161,12,22,32,129,82,2,35,76,36,156,179,114,36,30,50,84,199,251,12,176,128,193,58,236,245,75,110,50,236,71,198,91,59,85,231,206,209,7,160,43,59,110,63,47,236,100,35,97, -142,216,107,128,27,8,79,42,203,237,89,24,226,108,33,69,199,105,2,243,27,80,164,21,14,45,189,34,5,134,146,92,95,243,187,110,191,219,102,15,239,233,99,39,199,145,129,94,147,50,71,181,190,174,12,119,201,146,201,170,243,27,230,112,111,128,91,8,170,127,60, -212,201,84,18,164,0,70,108,1,228,152,219,225,248,64,239,171,41,21,129,145,138,65,90,112,47,245,58,125,48,66,160,188,59,210,41,64,88,183,231,183,105,73,140,223,74,52,21,16,149,115,223,142,128,251,51,112,62,20,25,42,191,73,18,235,176,57,70,167,240,211, -200,149,128,45,69,63,44,147,90,170,158,25,154,107,139,36,60,169,29,22,163,179,130,25,22,219,9,23,205,22,199,66,230,58,65,237,124,141,179,146,45,69,67,249,141,188,95,138,238,10,154,82,37,37,61,218,249,125,120,72,127,142,57,77,220,111,178,84,112,71,203, -72,123,208,45,219,146,194,10,153,196,19,255,76,201,53,210,148,113,150,101,113,207,96,159,17,112,105,199,200,136,49,43,198,193,211,212,86,126,38,53,246,1,20,35,44,150,124,161,224,88,73,120,115,189,74,154,94,189,138,196,250,202,26,0,212,21,61,41,128,184, -114,101,195,85,116,226,7,3,79,71,5,203,189,1,86,170,157,35,232,183,95,168,70,221,174,172,172,4,100,163,126,122,241,188,254,3,144,211,91,139,183,130,229,246,105,173,222,0,159,28,220,51,73,51,10,118,119,118,21,123,124,194,162,39,147,109,185,83,35,243,181, -245,54,155,162,125,55,188,205,178,144,229,33,54,203,67,132,150,166,77,27,25,177,167,37,211,17,236,231,216,112,7,35,191,3,22,183,37,147,239,69,33,82,239,240,140,195,93,178,232,41,33,204,80,249,25,136,50,10,12,241,18,242,163,213,102,74,190,81,138,85,145, -44,84,15,89,246,10,53,103,35,114,198,68,127,41,37,200,72,218,251,205,149,40,68,230,141,89,237,17,232,90,201,60,114,81,181,40,112,202,26,93,70,61,173,118,203,226,68,161,216,147,251,101,48,196,123,197,133,248,86,241,171,48,232,19,161,54,154,118,60,4,201, -31,239,186,189,162,45,2,132,157,176,76,205,29,198,172,48,195,201,248,172,60,54,211,81,66,70,92,169,246,111,223,184,162,100,148,4,229,80,117,35,188,235,134,74,223,87,176,228,139,57,188,130,233,59,170,232,242,141,109,55,191,50,175,183,217,34,143,15,34, -82,230,198,74,91,220,133,242,103,150,245,201,194,155,247,141,151,183,244,236,98,18,14,191,231,171,44,184,7,79,191,209,15,56,97,38,60,30,6,227,142,7,83,20,50,146,201,102,176,59,54,169,241,91,138,74,19,112,201,82,21,165,71,121,206,145,139,38,229,214,39, -73,108,74,74,62,16,108,20,60,220,254,140,90,92,104,207,108,17,52,1,253,112,70,60,59,198,57,41,205,248,153,23,178,136,140,159,129,33,101,58,80,73,47,68,144,90,145,108,19,226,2,169,122,200,165,0,77,230,80,107,238,138,37,101,43,54,150,253,0,168,217,99,75, -74,148,59,85,50,137,49,40,148,207,216,48,100,197,165,59,142,203,169,208,239,82,41,123,203,130,228,79,166,113,123,80,148,237,118,91,61,128,139,98,246,134,128,105,183,218,199,189,221,60,225,226,91,183,68,64,221,183,109,20,252,91,51,176,148,147,94,229,35, -131,167,43,7,251,174,197,108,223,87,176,149,214,26,223,236,115,65,85,66,118,156,47,68,32,69,147,192,221,40,89,198,200,78,107,238,113,135,244,83,160,216,74,127,63,52,13,238,160,187,139,211,8,63,114,156,123,168,226,232,231,253,128,195,32,155,237,192,68, -121,83,143,247,6,50,45,85,134,125,113,212,235,152,176,199,239,228,204,13,92,229,59,24,191,113,17,107,193,24,6,73,151,30,19,10,92,241,208,78,184,65,29,198,177,241,3,60,34,53,230,108,165,170,220,147,197,218,92,12,212,106,73,17,226,126,10,176,76,32,116, -216,78,100,34,156,130,148,153,12,151,106,7,231,205,45,133,43,187,83,210,228,66,67,101,161,24,111,118,51,242,191,185,55,189,97,157,117,62,4,125,137,248,84,237,0,150,240,4,34,96,206,252,103,242,156,37,165,156,219,113,240,160,176,245,147,211,46,224,140, -172,212,55,52,191,38,27,5,151,50,241,238,201,179,103,213,201,57,95,33,202,65,93,139,0,170,236,131,173,90,37,171,182,20,47,59,253,62,219,140,126,95,84,92,81,139,238,112,227,173,202,182,95,184,176,58,1,83,193,243,207,159,7,65,13,63,112,101,67,176,20,77, -138,218,84,172,45,149,221,141,183,171,226,242,12,171,52,27,208,60,53,173,238,52,97,129,157,148,144,112,53,55,107,128,252,220,132,129,123,178,68,182,224,120,117,34,103,210,112,124,45,17,51,48,111,46,9,249,164,26,201,14,255,71,77,34,104,33,160,161,77,86, -81,128,79,3,49,28,51,53,30,228,4,60,5,51,164,177,223,148,129,243,84,75,155,21,5,231,163,6,0,88,1,43,185,97,153,249,60,68,207,114,29,207,31,19,157,227,253,128,134,242,180,12,50,169,160,195,199,197,164,9,185,65,41,43,36,104,110,107,177,31,128,41,230,217, -11,149,149,35,229,176,198,93,42,108,18,121,255,233,247,110,111,137,80,73,242,79,132,74,176,249,24,210,114,97,225,133,202,222,156,141,117,70,28,247,197,191,250,83,126,229,112,18,173,199,59,218,85,35,240,223,243,248,64,62,246,232,237,163,197,201,212,94, -191,119,248,186,246,64,234,184,121,140,64,136,80,189,27,234,111,247,67,189,200,45,188,129,246,154,200,0,213,30,135,217,29,26,93,118,15,204,168,102,244,20,0,213,30,52,245,100,91,155,157,78,95,79,87,166,121,12,115,204,162,115,154,101,14,146,164,137,165, -105,150,153,139,54,3,145,3,232,83,70,110,220,203,77,163,13,98,36,171,246,145,229,96,176,60,87,147,158,91,106,169,58,236,49,70,66,144,247,243,113,195,234,186,92,6,106,177,81,172,52,126,215,201,72,197,82,26,203,130,187,178,106,115,100,243,84,152,135,101, -204,89,195,67,39,187,81,66,226,37,247,112,47,66,220,1,160,84,192,167,178,17,141,207,111,2,253,82,152,67,34,228,237,3,41,254,206,17,171,114,54,34,51,95,20,106,148,31,179,105,11,4,109,50,46,89,241,25,67,176,228,130,147,71,207,138,48,191,188,181,161,159, -83,203,150,69,132,116,117,47,222,184,226,86,46,67,139,47,93,32,10,174,74,6,222,25,187,30,61,62,64,28,251,78,129,210,113,203,84,84,209,94,175,194,11,231,90,122,109,101,89,253,225,119,118,202,201,230,192,28,207,23,220,206,109,147,53,59,243,236,34,42,185, -51,163,35,34,60,153,180,165,118,54,29,237,187,193,193,190,156,12,102,58,88,130,201,205,117,101,183,79,218,46,156,56,18,230,188,206,236,8,205,32,104,68,33,1,0,206,44,120,85,137,99,105,42,193,102,148,76,151,49,79,36,92,45,121,32,18,6,220,20,88,143,203, -160,34,234,195,234,47,183,29,96,200,2,62,36,231,109,238,149,67,218,94,242,76,150,181,174,208,216,113,144,35,92,179,172,103,162,64,35,92,152,153,25,195,228,102,145,31,75,27,143,11,232,98,202,93,21,109,50,227,196,252,82,168,236,64,164,80,235,244,227,7, -211,37,133,218,2,101,56,172,109,185,59,219,243,101,127,106,9,239,179,80,222,70,174,53,185,127,214,206,44,110,232,47,111,41,183,176,48,148,212,28,195,25,252,181,76,155,94,184,114,161,74,163,78,10,4,222,255,248,64,62,86,222,80,76,178,62,172,230,146,2,170, -181,43,135,117,199,36,48,54,182,193,74,117,253,136,249,159,252,245,57,241,141,108,226,98,43,17,231,27,159,93,65,24,84,211,250,193,14,146,240,212,92,228,230,19,132,66,163,204,179,85,236,89,140,243,150,142,230,148,78,245,80,182,130,61,216,99,191,11,192, -21,71,191,114,138,89,52,217,9,26,26,51,24,203,110,84,177,201,14,23,40,203,58,33,29,157,64,251,216,55,84,11,253,132,150,88,197,111,249,61,172,191,10,234,9,171,41,164,191,40,81,210,179,110,57,190,61,105,251,231,16,24,9,218,29,130,72,193,106,27,15,7,54, -106,166,28,84,11,13,133,230,238,129,148,168,43,41,144,103,156,154,131,124,32,77,200,129,161,25,22,172,46,61,1,17,180,218,246,49,44,232,125,172,83,161,11,59,11,238,160,113,75,54,112,224,231,112,19,7,254,237,108,250,109,69,191,12,78,248,185,231,86,185, -241,242,161,15,101,220,90,213,15,79,66,155,163,254,246,29,199,7,218,102,148,135,116,112,250,54,75,230,164,57,152,218,169,141,53,105,186,93,191,244,80,243,159,95,62,79,186,11,95,82,149,113,118,43,216,64,128,176,204,137,228,75,200,14,109,22,150,19,198, -134,28,150,129,223,60,189,135,16,62,179,42,235,195,171,29,155,51,83,76,234,68,206,244,223,236,105,245,72,75,141,59,3,199,184,119,4,92,67,116,89,111,196,250,160,24,201,34,96,124,152,212,106,0,89,67,61,224,120,175,156,3,191,198,26,169,65,147,64,172,172, -67,99,149,205,72,70,75,69,135,229,251,156,58,26,214,98,23,165,177,46,213,72,58,225,232,164,243,128,93,112,74,79,205,37,16,32,204,64,196,38,0,58,206,164,76,235,44,126,231,132,255,196,113,91,7,182,196,142,238,219,114,102,138,51,166,234,28,160,162,40,84, -164,152,108,255,254,62,44,82,199,53,70,205,114,152,128,235,5,43,115,12,12,244,43,123,165,229,224,23,41,184,94,186,163,102,95,134,80,63,5,161,238,42,119,245,119,175,203,200,37,37,66,85,66,244,175,94,83,110,123,178,117,55,112,235,11,254,244,30,10,178,138, -115,222,83,94,31,216,20,87,194,117,210,213,40,102,249,146,240,148,76,196,179,68,245,69,105,233,99,8,164,202,206,130,114,231,22,21,64,194,64,246,140,97,135,30,95,79,228,55,121,47,246,215,34,151,83,114,43,146,122,60,237,216,77,192,169,218,233,200,185,233, -147,13,191,250,1,170,200,84,49,111,153,142,96,153,113,158,219,240,101,140,17,181,77,36,180,8,155,114,178,193,201,14,202,62,19,131,36,10,96,190,197,76,134,145,152,74,78,243,38,224,33,29,84,166,22,116,194,8,87,249,134,120,30,30,67,122,177,96,12,138,59, -243,33,196,60,198,251,38,53,208,137,184,77,243,202,247,173,147,112,72,173,229,166,193,200,153,202,66,19,215,129,53,195,44,13,191,66,247,118,199,166,112,51,41,231,12,207,250,22,72,178,74,209,108,41,53,216,211,79,88,71,127,58,3,19,204,221,227,94,250,103, -202,178,61,149,243,135,121,78,206,81,168,68,192,204,222,48,250,120,161,18,42,180,149,51,65,142,186,195,247,243,175,242,184,250,144,199,97,74,143,133,182,23,171,109,165,165,215,231,97,24,196,199,23,22,86,165,35,76,182,35,5,51,181,123,194,251,93,38,230, -247,193,135,62,5,234,140,19,61,153,164,39,183,60,217,9,132,241,46,39,150,115,51,166,237,157,158,111,127,200,253,22,38,236,48,144,141,133,73,254,22,236,84,243,75,150,67,38,101,177,12,135,138,225,18,213,130,197,234,12,145,162,60,117,156,87,200,82,7,254, -13,195,49,114,188,137,152,216,201,80,143,94,206,38,110,37,197,102,52,247,212,170,58,22,14,59,6,201,22,179,238,183,89,17,248,123,187,61,233,116,96,149,109,25,212,75,213,61,80,217,28,124,238,8,2,29,146,77,154,130,223,244,59,75,18,87,52,170,218,235,62,76, -241,99,21,72,58,41,37,188,213,166,102,192,37,52,193,28,83,187,60,95,69,26,151,189,64,15,19,56,111,219,9,235,251,9,149,71,160,62,228,193,226,54,36,124,204,242,231,183,245,246,246,138,218,222,190,98,230,215,55,244,154,94,113,171,248,2,219,47,158,214,219, -199,111,233,86,107,71,183,182,22,221,233,227,243,238,229,253,187,68,163,142,13,170,237,182,230,232,79,54,52,43,248,35,53,131,244,206,160,175,213,0,103,113,122,10,238,12,235,102,111,212,81,249,254,72,138,180,147,132,150,180,229,106,181,76,135,83,60,157, -136,250,77,29,185,74,72,106,232,179,241,81,129,196,66,35,87,81,45,116,41,98,26,128,90,246,6,41,250,65,141,108,248,160,143,112,132,215,155,88,149,105,225,198,253,128,91,129,2,237,2,185,194,28,52,17,135,114,236,71,28,64,120,200,0,196,224,137,18,114,212, -131,18,225,20,99,88,39,219,128,78,181,35,144,248,72,146,207,55,129,194,67,36,238,186,160,53,27,229,193,40,118,205,102,2,115,157,56,88,17,71,128,88,48,192,70,224,196,93,56,10,36,205,129,193,28,219,34,51,152,229,252,196,172,27,253,52,40,196,206,188,122, -189,133,133,213,90,84,55,250,167,221,10,119,36,67,24,115,233,26,40,219,35,102,119,117,245,131,107,234,15,33,88,167,87,241,73,95,250,210,151,36,150,229,223,249,237,207,235,47,33,155,127,237,218,37,189,190,189,141,199,127,85,157,122,125,81,49,119,123,123, -29,137,226,165,103,85,111,180,173,119,58,90,5,35,152,231,207,62,169,166,92,91,141,0,156,6,56,127,41,253,30,178,237,7,33,183,233,5,227,4,253,169,1,28,197,8,57,198,56,105,108,3,233,197,35,110,228,170,144,231,84,249,38,39,138,227,140,231,13,151,128,247, -139,226,129,26,179,105,181,172,115,47,19,58,11,215,226,136,1,64,89,182,143,192,86,184,160,1,205,219,31,128,255,77,108,29,26,24,104,41,86,119,181,216,111,199,67,234,79,215,113,157,179,12,235,153,29,176,7,9,120,107,38,102,70,106,36,147,231,220,128,141, -53,77,228,78,247,45,204,131,59,121,188,237,250,61,214,79,239,178,114,205,206,115,19,68,102,245,240,59,64,35,178,15,71,189,9,235,116,26,9,146,128,46,169,115,198,253,2,132,186,69,254,247,11,74,45,254,186,146,209,8,176,118,18,151,206,207,43,253,165,109, -57,205,52,201,250,243,191,35,66,117,31,86,168,242,92,245,3,30,23,47,94,52,135,125,62,19,128,86,109,69,74,147,76,20,247,252,243,103,196,44,115,136,53,59,176,39,219,167,113,123,82,142,65,231,196,236,147,143,223,49,119,192,45,179,11,191,172,98,94,130,140, -100,58,10,56,210,143,102,249,46,180,37,108,4,135,139,144,9,251,8,102,90,250,92,248,79,171,169,226,57,141,56,24,231,248,110,223,219,73,153,12,219,80,161,12,234,240,251,20,200,12,165,216,255,229,163,137,20,107,179,183,162,95,189,179,191,206,226,50,14,248, -32,229,105,14,172,205,105,102,231,90,142,108,153,238,192,207,2,217,167,194,247,58,183,71,147,251,148,199,12,52,187,210,142,177,200,46,201,5,123,251,214,45,153,49,44,9,115,229,83,113,63,245,244,89,25,197,47,155,34,41,159,45,91,243,189,170,130,120,39,123, -246,122,183,230,141,177,47,8,255,224,66,229,241,161,53,118,114,124,245,171,95,149,191,76,196,175,174,126,85,186,244,192,31,3,197,173,112,187,105,36,13,86,212,235,175,191,162,90,173,68,111,169,45,117,78,159,119,127,88,124,79,133,39,140,154,126,98,222, -149,175,76,187,109,72,112,62,57,48,119,110,23,140,109,85,45,145,89,19,42,175,5,102,120,31,38,13,34,33,93,119,239,14,211,36,136,127,225,254,130,7,0,51,219,82,100,164,187,48,215,41,205,107,43,65,176,209,211,195,3,72,192,52,221,112,8,173,198,253,233,56, -118,163,160,71,226,30,132,109,195,245,65,0,142,11,233,38,119,73,131,218,5,31,138,88,165,221,140,96,41,34,167,99,166,211,35,59,24,140,132,41,42,70,145,173,185,216,13,161,141,92,30,101,183,131,239,153,56,189,11,227,208,236,112,8,118,73,116,166,33,212,233, -71,181,222,27,129,236,236,112,46,195,35,54,131,107,57,190,184,167,255,226,207,51,87,215,35,142,190,113,211,72,176,47,130,119,125,243,27,126,170,218,241,227,94,75,39,9,22,178,75,32,32,44,140,160,28,23,47,174,186,175,126,117,117,114,158,213,135,57,126, -96,141,229,81,181,77,28,214,71,225,75,225,219,92,82,108,42,89,7,226,134,207,229,150,211,135,200,155,149,23,157,206,121,25,99,51,1,86,188,127,50,241,77,38,171,222,58,173,56,207,8,249,2,189,5,96,197,221,73,210,230,188,126,163,135,228,3,174,115,115,68,238, -163,199,189,8,198,131,93,206,48,214,163,177,7,94,41,72,15,154,247,36,157,214,113,218,213,140,73,219,162,209,28,142,205,57,15,109,197,22,69,38,34,14,240,31,167,182,178,115,60,29,181,132,44,97,3,55,143,125,185,142,247,27,78,154,206,166,92,88,204,0,217, -63,96,133,173,28,108,191,96,83,26,105,193,73,41,139,60,0,203,19,158,92,170,226,207,155,234,107,191,159,57,224,163,67,144,196,105,178,175,44,92,215,191,117,238,188,83,171,170,36,31,176,177,242,208,220,78,64,232,164,250,112,178,229,235,135,213,216,31,74, -176,147,227,33,159,236,143,75,213,236,178,229,53,229,227,93,32,229,27,55,86,29,169,199,231,88,191,94,29,175,44,40,125,253,11,215,213,226,153,243,48,209,55,165,16,125,178,211,229,109,160,231,133,69,191,183,27,203,48,39,59,70,49,108,160,112,135,93,248, -199,22,16,50,51,71,48,215,29,25,147,211,81,35,196,72,28,142,61,74,15,180,222,109,217,36,219,151,173,78,246,56,105,76,77,171,228,228,129,30,223,181,142,155,41,140,129,138,166,167,253,164,135,238,171,96,141,150,252,251,140,250,16,118,99,79,215,241,94,172, -110,224,227,205,83,199,156,186,207,158,224,123,142,37,64,159,56,34,80,238,147,64,22,137,207,99,251,11,127,11,211,110,204,120,177,145,141,169,77,198,169,175,93,61,111,73,17,50,60,164,240,46,168,135,200,151,71,181,49,210,132,132,80,74,169,15,37,204,163, -199,135,138,99,63,232,113,193,85,254,97,205,151,111,76,182,158,134,105,17,254,147,43,86,246,140,193,177,216,2,204,95,33,251,114,86,118,9,225,193,253,101,118,222,232,151,91,192,153,143,45,46,88,158,188,96,148,219,143,61,113,66,42,248,134,97,94,194,132, -137,214,156,156,67,46,160,91,148,35,196,196,20,4,95,31,76,91,59,238,35,195,62,93,90,178,62,81,217,182,76,106,103,230,94,217,78,155,229,35,39,0,221,194,172,156,71,120,27,237,88,123,31,233,52,198,157,123,172,18,236,20,229,60,139,202,194,86,185,123,107, -92,48,87,218,60,229,220,246,245,45,59,78,16,225,84,37,64,76,136,199,248,110,244,159,119,145,24,239,238,40,199,203,108,207,11,85,126,200,246,125,252,93,182,156,23,209,61,215,117,28,245,78,161,78,206,211,164,94,91,102,250,95,196,237,203,202,30,33,247,127, -96,161,242,248,72,52,118,114,76,70,246,189,240,194,149,128,153,126,17,238,197,11,178,171,165,108,163,134,36,241,5,191,39,173,234,60,127,221,176,240,153,175,155,236,116,249,232,120,202,252,235,127,118,214,2,45,234,77,36,238,159,71,26,240,238,55,110,74, -117,6,133,77,192,149,169,68,118,180,144,215,41,223,98,200,235,199,42,224,69,141,86,236,182,255,46,98,202,234,58,77,56,146,225,242,188,238,224,173,179,245,217,74,177,125,223,95,7,54,80,61,102,93,148,116,136,138,70,202,3,176,28,253,125,255,57,212,206,187, -85,133,3,167,184,223,172,222,103,247,238,134,52,36,115,18,123,50,102,97,183,223,27,251,234,85,210,130,87,0,144,214,216,72,46,212,171,20,164,85,241,63,181,20,119,87,61,127,31,14,249,190,223,241,87,161,177,218,111,10,79,94,249,194,225,186,67,78,126,178, -245,180,220,227,133,186,42,197,113,231,182,206,59,142,65,255,227,221,179,229,226,175,111,104,14,167,58,127,228,13,125,226,217,191,46,22,45,246,154,44,233,65,158,233,165,37,17,66,112,140,101,37,133,29,80,136,39,72,92,20,118,190,61,95,82,168,67,48,12,211, -72,102,243,62,150,160,204,39,243,37,181,95,237,227,111,215,223,110,35,104,162,80,137,108,31,32,121,193,69,195,177,12,47,125,99,161,60,184,179,84,122,237,36,139,118,83,157,132,32,255,24,23,230,78,119,191,163,202,133,231,151,221,43,176,62,20,170,215,208, -117,119,245,234,21,75,161,17,244,110,108,92,114,60,47,116,77,212,84,225,218,47,92,146,173,210,201,13,124,228,66,80,31,241,113,184,163,165,159,197,109,160,189,66,94,179,156,102,226,63,228,71,41,214,200,74,239,137,90,95,95,247,53,84,114,172,30,190,215, -194,166,210,204,120,244,85,221,252,225,239,238,148,212,6,234,201,68,200,143,173,220,146,247,225,140,199,103,0,188,182,153,112,184,195,124,176,15,47,188,150,43,77,19,89,132,119,12,169,60,94,231,125,242,1,8,71,78,224,57,47,227,49,217,85,153,172,208,83, -169,217,248,86,225,118,106,133,99,126,84,198,200,190,122,244,23,122,29,37,30,120,110,101,217,178,176,111,251,69,143,114,177,32,53,139,186,233,122,164,156,5,241,140,76,106,87,222,151,226,169,230,26,80,239,242,101,225,128,223,158,56,255,200,180,149,199, -71,174,177,213,151,147,233,130,132,232,236,4,35,82,231,202,156,32,118,233,148,175,144,32,239,219,222,222,246,60,243,69,110,231,181,46,1,59,47,51,157,43,182,179,176,236,254,112,115,167,60,255,91,136,59,17,3,178,192,107,115,230,186,83,219,202,54,20,82, -103,155,167,75,206,101,104,225,47,181,105,73,29,148,220,31,72,114,194,18,43,223,148,207,9,69,211,110,85,241,51,62,27,66,229,115,238,225,246,210,157,131,242,211,172,51,186,191,111,55,112,125,246,153,194,253,202,175,156,21,173,36,73,159,60,173,44,181,146, -19,71,95,130,70,202,56,158,149,251,22,168,95,173,86,25,152,229,229,43,238,220,57,126,111,210,130,107,50,117,71,90,27,47,120,179,75,11,198,20,28,221,82,37,84,30,78,85,163,242,62,74,161,138,28,212,95,221,161,39,112,221,183,220,248,59,57,176,100,210,162, -176,60,217,99,124,210,191,171,170,58,141,11,190,203,143,87,55,54,214,15,119,155,166,249,246,215,207,203,76,12,142,79,248,181,133,183,254,6,191,83,227,245,195,113,247,147,131,104,251,165,175,239,91,78,92,161,47,228,95,249,14,43,28,217,235,91,67,169,129, -156,142,67,2,129,143,17,181,147,152,167,49,161,54,146,100,153,52,69,201,215,188,176,202,223,35,181,95,210,253,38,153,152,117,16,55,50,96,84,246,183,39,174,224,100,23,142,199,195,253,71,5,170,14,103,227,170,143,86,91,229,253,212,95,211,113,52,229,119, -244,126,191,207,15,171,218,17,36,93,186,112,120,255,68,232,28,173,75,13,120,184,83,188,167,105,184,209,193,115,188,82,153,66,63,221,102,93,209,148,19,121,19,156,113,1,108,125,113,221,177,8,128,36,59,183,13,219,250,98,87,110,179,69,165,83,109,254,199, -131,241,229,106,53,72,133,199,252,6,219,89,30,150,80,123,79,177,238,191,27,71,253,34,92,121,238,185,117,3,122,213,202,246,24,23,149,44,72,186,158,53,95,91,175,94,184,252,66,233,170,200,229,162,187,164,47,168,11,246,253,82,109,31,229,241,215,38,88,30, -147,64,155,113,239,145,197,42,135,207,16,249,9,99,87,174,176,149,196,247,126,250,132,190,220,171,56,94,174,138,141,137,38,197,143,145,185,225,89,95,157,236,59,195,114,157,195,119,245,215,230,231,215,228,125,145,176,112,220,115,158,73,236,86,235,186,254, -242,151,187,146,208,6,26,150,13,0,231,63,47,211,186,237,100,71,100,89,92,248,30,236,26,191,60,97,135,38,45,165,4,65,36,19,160,165,55,94,240,143,107,128,160,139,30,32,170,11,23,14,23,233,91,52,145,12,29,232,88,171,254,138,143,191,146,56,246,189,142,195, -166,92,169,174,123,171,95,145,249,141,48,209,27,27,27,142,254,248,70,181,253,26,125,49,181,99,237,133,53,241,79,190,41,73,149,43,213,253,32,201,203,85,229,133,193,19,253,2,17,11,46,243,243,235,208,156,53,241,119,215,174,173,123,225,201,177,106,41,188, -127,250,79,207,91,154,70,10,91,214,205,218,21,17,252,197,11,19,215,112,73,62,155,87,87,170,240,68,201,140,73,95,49,200,251,233,43,15,113,255,5,169,202,159,8,181,26,120,161,15,199,7,76,46,127,29,66,253,127,204,33,179,69,156,108,206,106,170,235,154,245, -204,71,238,63,122,123,114,93,46,107,107,151,131,201,237,203,151,253,245,203,151,93,0,153,6,126,134,6,46,234,225,125,188,48,153,51,121,156,239,55,121,143,201,109,38,56,220,197,135,159,203,247,61,250,221,142,126,143,163,223,235,232,115,38,191,75,253,232, -248,224,135,63,121,213,228,8,117,209,136,32,14,133,224,2,255,248,195,251,222,190,40,46,30,17,154,23,170,127,46,5,206,235,254,242,78,65,170,31,29,127,117,199,81,109,56,114,194,143,104,140,82,15,47,111,21,226,81,43,112,244,246,219,223,239,221,4,250,255, -54,193,254,127,98,21,30,61,233,250,97,67,139,59,250,216,36,75,242,246,215,190,219,253,71,239,251,168,195,144,31,29,63,58,126,116,252,232,248,209,241,255,155,227,255,6,74,236,217,76,222,25,217,71,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; +{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,48,0,0,0,48,8,6,0,0,0,87,2,249,135,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,1,153,73,68,65,84,120, +1,237,215,191,75,66,81,20,7,240,115,238,19,151,150,40,176,213,220,157,109,11,33,105,115,119,169,255,32,181,44,7,23,27,50,20,17,105,105,105,169,197,189,45,26,162,33,112,111,23,215,130,200,165,161,231,187,247,246,30,21,248,140,194,235,189,122,9,207,103, +82,185,7,207,247,190,243,126,1,16,66,136,77,8,134,149,91,247,73,116,68,10,4,166,36,200,181,175,159,123,18,68,63,130,178,83,43,108,61,129,65,198,2,148,174,110,150,240,37,154,99,0,217,191,214,9,6,215,210,117,59,205,195,237,55,48,192,72,128,160,121,231, +53,122,2,2,18,19,150,244,184,231,86,76,132,96,96,64,176,243,10,205,7,18,24,245,107,12,208,14,80,58,127,136,253,24,27,148,207,32,189,10,95,117,115,245,98,58,43,133,87,67,134,161,217,103,2,178,229,214,109,18,52,105,7,112,92,55,188,147,126,243,124,101,152, +175,239,103,30,155,59,159,35,210,56,200,116,61,247,189,48,30,2,49,146,2,77,218,1,144,203,208,232,72,134,23,223,141,143,10,230,93,242,225,89,104,45,202,13,208,164,29,64,34,174,143,126,111,236,165,187,191,173,229,92,244,198,138,99,160,201,200,73,60,41, +83,151,206,81,115,13,48,11,20,192,182,8,204,89,112,95,0,131,104,132,108,251,247,1,148,159,70,143,90,119,187,254,227,66,219,255,184,12,102,245,29,230,84,79,243,155,151,42,69,234,71,0,101,21,204,55,31,136,115,193,219,138,53,83,141,80,28,102,71,121,99,232, +36,182,141,2,216,70,1,108,163,0,182,81,0,219,40,128,109,11,25,96,0,51,226,191,156,244,65,145,114,0,6,88,156,230,143,38,48,16,32,143,129,16,66,8,81,240,1,157,37,119,145,154,22,67,182,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* logo_png = (const char*) temp_binary_data_10; +const char* lockoff_png = (const char*) temp_binary_data_10; } diff --git a/LatestCompiledAssets/BinaryData12.cpp b/LatestCompiledAssets/BinaryData12.cpp index 5557b4f..360cca1 100644 --- a/LatestCompiledAssets/BinaryData12.cpp +++ b/LatestCompiledAssets/BinaryData12.cpp @@ -9,24 +9,15 @@ namespace InspectorBinaryData { -//================== move-off.png ================== +//================== lock-on.png ================== static const unsigned char temp_binary_data_11[] = -{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,48,0,0,0,48,8,6,0,0,0,87,2,249,135,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,3,218,73,68,65,84,120, -1,213,153,59,76,219,64,24,199,191,239,28,67,37,50,148,34,133,153,206,101,71,170,84,137,215,202,206,86,9,150,46,144,240,46,25,58,5,154,208,146,192,210,133,165,93,216,179,33,202,107,168,196,142,170,78,157,58,129,4,116,104,212,38,177,239,122,159,75,130, -3,231,16,59,103,112,127,83,252,138,255,159,239,190,215,29,64,136,204,231,15,199,23,10,71,99,16,34,12,66,98,113,253,168,159,129,24,71,193,39,23,215,119,251,33,36,66,49,96,238,195,151,4,26,98,234,250,45,177,229,229,194,231,94,8,1,237,6,144,248,88,165,154, -17,92,92,11,22,208,101,3,203,204,173,237,116,129,102,180,27,96,148,171,211,13,226,107,8,76,24,102,231,50,104,6,65,35,228,180,52,239,155,221,195,25,20,215,166,7,183,154,221,51,247,105,167,171,227,194,136,219,220,76,8,97,39,232,92,110,118,104,79,117,175, -86,3,220,44,230,15,138,238,227,108,106,176,105,52,90,120,191,59,192,152,57,33,80,196,105,202,53,92,68,40,101,147,131,202,15,19,90,20,242,75,110,118,244,24,192,222,191,37,158,64,56,245,122,46,50,6,16,86,143,85,164,175,125,243,60,19,88,242,122,38,50,6, -208,188,55,46,59,50,170,17,224,0,209,54,160,46,158,195,83,213,117,20,226,204,235,217,7,55,192,83,60,138,51,4,126,21,8,188,167,80,12,66,226,174,168,67,52,19,111,0,79,175,164,70,78,151,242,123,37,198,48,122,35,112,167,248,228,136,19,121,222,166,134,183, -43,221,213,99,175,255,105,43,15,44,228,15,222,200,20,155,148,63,31,67,16,16,170,210,105,127,32,224,215,127,199,141,226,91,193,128,128,72,241,121,41,126,73,254,124,4,193,161,247,119,75,39,69,57,23,190,249,21,79,180,225,3,226,37,104,66,32,246,197,128,191, -240,43,158,104,199,7,130,77,27,53,102,16,241,132,182,40,148,75,13,181,236,79,84,114,179,63,229,64,130,111,162,28,129,249,252,193,36,132,200,187,87,207,207,252,62,67,149,174,234,124,195,8,56,161,237,66,214,236,66,80,11,184,5,17,130,202,244,197,194,225, -51,3,172,77,247,116,171,143,128,211,73,93,118,22,174,196,71,19,169,141,58,59,119,123,234,140,0,53,224,80,174,44,11,87,33,117,179,158,175,209,74,134,109,7,175,247,214,145,157,157,141,44,35,23,10,54,178,51,163,39,49,103,217,67,174,28,200,132,242,255,32, -141,0,140,101,164,95,108,51,38,44,237,141,246,125,17,67,94,98,84,107,128,176,210,200,80,75,88,187,23,168,233,145,154,87,147,67,69,199,7,104,46,73,39,78,187,151,67,194,158,235,94,120,189,183,238,27,181,122,105,102,212,249,224,245,40,68,177,217,234,48, -211,128,120,2,17,133,73,109,246,147,234,180,59,140,54,228,129,171,4,147,150,53,248,56,68,12,106,110,86,147,195,183,114,147,50,19,59,126,225,147,176,150,14,107,72,77,202,196,26,168,31,160,140,205,206,205,95,160,17,63,181,148,27,223,213,232,245,234,129, -176,64,31,63,33,32,190,12,112,183,129,50,236,126,7,77,32,136,143,16,144,150,59,178,219,61,44,158,35,130,41,127,196,33,120,103,39,191,188,200,230,82,195,75,16,16,207,121,183,176,185,59,144,155,26,117,154,233,86,27,240,135,192,179,161,97,182,57,33,107, -141,62,209,83,46,70,85,60,225,105,128,0,209,43,29,100,28,46,204,97,121,144,104,184,216,130,120,191,171,211,65,81,58,113,195,78,10,85,126,110,34,242,229,107,168,163,80,60,174,174,80,35,38,158,80,78,33,227,183,213,171,114,111,142,120,156,157,142,142,120, -66,57,2,66,84,148,35,192,56,140,121,53,215,15,133,210,0,195,232,72,80,205,45,151,252,78,169,2,148,119,237,161,220,219,146,199,219,200,249,89,24,187,141,65,209,186,71,38,171,216,73,1,108,172,249,11,249,118,144,98,209,11,173,171,211,78,197,216,164,159, -160,209,212,41,222,249,79,208,140,93,45,175,40,219,83,103,195,194,218,4,205,132,178,205,74,107,76,70,185,178,81,223,239,10,49,252,134,178,193,225,116,118,220,90,169,159,224,246,70,148,114,71,203,188,46,236,143,133,221,158,254,5,44,42,182,214,83,216,43, -211,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; +{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,48,0,0,0,48,8,6,0,0,0,87,2,249,135,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,1,111,73,68,65,84,120, +1,237,216,65,78,194,64,20,6,224,255,141,160,91,92,162,209,148,27,200,13,228,4,234,9,140,55,160,9,186,21,214,154,208,43,120,3,111,160,71,232,13,108,226,162,91,87,38,32,237,115,90,53,161,160,164,195,12,206,130,247,173,154,73,39,121,255,155,153,182,41,32, +132,16,98,155,17,28,227,244,238,20,25,206,160,248,28,140,224,123,56,6,84,12,181,51,162,118,152,192,33,103,1,248,101,220,194,222,236,22,204,253,149,55,18,69,152,52,70,212,9,223,224,128,147,0,101,241,187,31,79,250,242,164,230,148,24,211,102,207,69,8,5, +23,138,206,215,47,30,229,189,95,115,172,89,7,224,116,28,252,178,109,18,228,212,195,244,125,159,14,111,8,153,186,208,107,157,84,39,114,159,95,245,121,177,100,191,2,121,182,216,201,68,23,222,165,163,235,103,234,12,203,45,66,199,131,71,76,154,221,165,16, +164,15,186,37,251,0,204,213,173,67,42,252,41,188,50,92,236,247,140,174,170,131,250,105,101,201,62,0,85,3,208,129,238,246,95,102,141,120,97,36,128,37,55,135,184,38,87,143,206,121,255,26,96,19,36,128,111,18,192,55,227,111,33,78,239,47,145,115,164,175,90, +112,43,129,82,67,106,15,30,76,38,153,175,0,231,195,13,20,95,8,144,231,17,12,173,17,192,254,229,179,130,113,99,228,16,251,38,1,124,147,0,190,73,0,223,36,128,111,18,192,183,109,12,64,206,255,44,204,73,96,104,141,207,105,14,151,254,176,57,161,27,195,24, +65,8,33,132,48,240,9,69,30,98,232,32,134,213,8,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* moveoff_png = (const char*) temp_binary_data_11; +const char* lockon_png = (const char*) temp_binary_data_11; } diff --git a/LatestCompiledAssets/BinaryData13.cpp b/LatestCompiledAssets/BinaryData13.cpp index 9eb5e2d..51b1f83 100644 --- a/LatestCompiledAssets/BinaryData13.cpp +++ b/LatestCompiledAssets/BinaryData13.cpp @@ -9,22 +9,374 @@ namespace InspectorBinaryData { -//================== move-on.png ================== +//================== logo.png ================== static const unsigned char temp_binary_data_12[] = -{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,48,0,0,0,48,8,6,0,0,0,87,2,249,135,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,3,83,73,68,65,84,120, -1,213,153,77,82,27,49,16,133,159,6,3,89,194,146,240,83,195,13,194,13,240,13,224,6,225,4,64,85,128,98,21,103,149,50,80,133,57,65,224,4,225,6,230,6,57,2,19,72,32,187,152,77,138,196,246,116,90,194,118,198,182,100,51,74,11,134,111,101,207,140,60,175,173, -238,150,186,5,4,132,110,15,223,211,77,117,11,1,81,8,4,139,95,69,74,117,243,37,85,101,181,184,115,129,0,4,49,128,110,143,99,80,179,14,66,220,185,212,64,52,185,162,230,182,19,8,19,65,24,139,120,205,12,210,102,157,46,143,103,32,140,184,1,160,214,167,1,241, -93,98,76,183,62,67,24,81,23,210,65,203,126,95,25,249,144,82,53,245,122,103,123,228,239,232,153,122,117,207,179,85,138,209,166,216,12,91,216,61,181,254,28,2,65,223,15,168,239,69,243,187,35,223,69,87,71,107,40,165,199,32,197,194,105,208,213,26,60,126,214, -54,78,222,133,60,81,75,239,206,249,223,62,179,136,215,119,19,215,184,194,24,96,104,77,213,88,108,99,232,186,66,195,53,164,132,130,96,252,126,170,169,215,141,225,25,32,186,115,141,43,196,12,100,196,191,177,63,128,196,53,246,217,13,24,33,62,65,138,19,243, -73,209,211,187,208,184,172,163,25,41,62,106,151,213,252,126,66,215,213,6,167,222,196,249,30,60,19,99,197,207,237,39,255,158,173,204,168,229,138,117,22,254,203,128,135,133,11,91,246,212,231,197,144,248,113,120,27,64,55,135,188,232,144,228,86,57,183,120, -141,127,16,19,222,66,18,15,241,102,24,188,17,115,27,131,143,120,141,88,22,122,76,214,233,66,183,31,99,164,19,151,16,192,58,3,198,191,3,226,243,111,155,132,97,161,207,0,157,218,88,124,93,56,56,101,224,109,186,214,102,10,166,12,61,3,204,141,233,230,23, -22,191,138,162,162,181,233,202,46,99,132,137,129,135,2,220,84,75,189,192,28,220,207,119,201,227,235,94,26,29,239,205,16,27,35,174,15,55,116,163,32,162,31,71,155,15,221,3,217,172,18,152,24,17,213,117,92,68,104,182,103,241,82,105,167,119,145,90,220,171, -232,190,13,175,201,9,94,12,92,244,232,94,211,194,94,205,196,128,246,37,206,205,101,96,162,215,14,9,237,235,78,105,142,247,102,98,131,183,28,45,179,83,213,95,122,89,200,228,102,213,230,153,80,23,40,42,90,219,159,95,43,217,117,164,111,37,238,220,40,243, -30,188,130,162,193,197,13,123,202,208,250,228,191,27,29,76,119,209,228,114,158,214,97,222,182,139,11,175,65,157,98,228,39,4,241,53,32,247,110,52,83,73,73,210,128,39,185,12,24,219,61,240,37,197,25,60,121,180,1,97,196,235,124,78,31,212,226,174,247,230, -209,233,119,116,85,93,83,75,123,231,230,115,142,2,252,169,113,27,112,115,112,201,121,247,20,247,165,147,162,138,215,184,13,200,174,124,24,234,247,143,21,47,149,38,199,97,175,200,250,79,82,226,129,219,133,248,231,187,216,131,216,28,46,88,41,148,120,141, -35,11,241,201,136,13,165,206,139,36,94,99,55,160,169,236,51,192,181,178,171,184,126,46,236,109,149,18,159,75,17,231,104,211,21,230,198,42,17,119,138,211,59,68,124,173,141,175,58,70,212,242,182,247,234,41,137,236,33,223,245,65,141,231,116,115,228,67,102, -225,226,34,74,8,241,212,214,105,203,172,90,111,242,126,158,79,40,203,16,68,254,128,227,119,105,221,81,158,114,193,212,218,128,48,226,6,152,216,208,149,93,255,97,93,176,244,27,228,136,201,8,77,177,222,187,144,170,141,162,165,223,71,65,223,170,91,161,203, -211,191,181,205,150,96,11,168,116,103,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; +{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,118,0,0,0,108,8,6,0,0,0,191,234,70,236,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,100,74,73,68,65, +84,120,1,237,189,91,144,157,215,117,30,184,247,254,175,231,218,55,52,128,110,54,65,16,4,33,170,155,148,108,193,148,100,199,54,219,54,237,216,241,37,78,42,205,41,37,85,153,169,74,149,93,165,202,84,230,105,94,1,60,204,67,166,230,105,106,204,170,209,195, +212,164,230,65,25,64,185,141,149,40,78,16,171,17,57,178,101,11,150,45,17,109,154,132,72,64,4,187,1,52,186,79,119,159,251,127,217,123,190,111,237,255,52,154,87,145,18,237,154,139,126,242,160,207,253,242,175,189,214,250,214,183,46,91,171,191,130,195,57, +167,249,247,210,165,75,248,123,65,45,47,43,189,177,161,220,242,13,252,93,81,238,66,245,188,43,184,61,121,13,238,215,120,158,243,15,40,53,143,219,215,212,58,110,172,42,117,99,195,168,149,101,181,176,169,220,248,105,101,212,171,55,213,238,221,179,238,177, +198,45,115,162,117,218,77,63,174,204,55,95,191,105,91,115,103,117,119,71,185,34,188,99,14,58,133,123,236,180,82,221,111,20,174,245,153,179,90,221,194,245,150,114,173,238,45,221,153,9,229,115,15,58,75,248,188,91,106,22,239,113,18,239,209,63,184,133,219, +167,241,154,155,110,183,121,214,61,183,162,204,45,60,222,184,113,218,54,127,70,233,155,124,17,62,251,165,175,239,219,197,214,121,167,86,55,204,194,230,178,83,231,175,171,115,91,231,221,246,13,229,248,59,110,220,184,226,86,86,230,241,25,171,246,194,5, +229,46,93,122,248,59,121,240,190,201,117,62,198,219,90,107,167,62,194,67,171,143,240,152,8,148,7,191,240,197,139,151,212,229,203,203,213,125,107,138,194,229,181,229,27,87,32,224,53,17,244,218,26,158,187,177,206,147,160,22,22,148,62,143,199,175,95,87, +234,167,159,87,250,15,174,42,183,213,217,208,143,173,212,13,95,119,91,157,182,179,59,74,191,122,243,166,154,59,225,133,179,16,39,102,43,27,219,133,211,137,153,217,95,112,163,197,123,70,221,83,106,216,180,110,107,83,169,79,45,46,168,45,252,183,128,255, +110,238,43,87,62,184,103,78,156,240,143,243,245,7,61,163,219,205,19,184,190,37,223,114,166,189,224,238,188,161,212,146,186,35,183,251,83,133,60,175,187,115,218,159,120,124,182,58,171,212,215,126,63,115,88,107,106,121,69,169,14,132,187,245,138,114,11, +231,148,222,90,228,111,132,192,23,134,238,220,86,215,173,66,184,87,170,133,205,151,95,240,171,218,189,240,130,146,223,116,249,178,178,90,243,220,81,176,148,175,118,60,143,63,172,160,63,114,193,250,213,121,73,81,83,177,114,245,229,203,107,118,253,210, +122,176,125,99,149,171,185,210,218,117,253,28,53,17,199,43,11,215,181,130,32,183,22,107,90,221,88,174,78,20,5,10,13,198,227,212,148,123,127,122,75,67,145,84,163,125,90,43,156,244,59,119,252,73,63,246,88,100,30,148,39,108,163,191,37,191,163,214,54,250, +222,61,255,93,234,45,163,91,117,235,186,77,252,237,89,151,14,140,238,54,181,142,108,105,83,220,215,173,105,61,186,237,156,60,103,224,159,203,215,241,229,237,3,235,14,134,70,247,247,172,59,243,49,163,83,124,134,255,196,59,242,255,65,163,112,179,45,8,156, +50,62,123,86,245,230,148,187,187,115,83,171,39,149,218,253,90,230,22,102,134,16,244,121,183,240,57,165,103,102,148,197,218,173,22,47,15,104,177,242,103,104,114,92,188,168,28,46,208,92,109,41,92,17,204,15,41,88,163,62,162,99,162,173,52,43,55,110,44,195, +28,41,17,42,5,125,77,93,179,80,88,117,1,43,119,237,178,95,76,215,20,133,202,235,231,213,204,226,121,8,85,169,217,147,55,53,79,80,188,168,2,17,234,73,47,212,238,61,104,203,45,8,252,96,75,119,166,182,116,99,38,208,75,43,73,144,155,192,28,220,220,210,225, +116,20,20,97,104,76,51,10,18,92,159,93,8,76,25,4,38,223,13,204,148,10,76,122,44,14,187,35,232,197,3,165,120,95,134,251,212,142,82,83,120,142,25,71,1,159,187,183,21,5,20,112,130,219,124,191,254,200,232,218,60,238,195,34,216,192,194,57,22,220,195,123,70, +6,235,74,209,58,156,12,83,211,130,213,232,193,236,247,113,30,119,239,102,78,189,202,223,16,203,111,90,94,85,102,107,75,185,206,213,235,230,11,157,235,208,224,150,252,110,46,118,85,249,162,137,73,118,23,189,57,190,164,28,229,161,39,231,243,168,5,252,176, +199,71,162,177,254,11,104,248,18,103,248,5,105,102,86,174,224,75,95,244,194,92,199,106,165,32,169,165,244,155,203,203,199,241,3,150,213,213,127,122,221,45,158,57,175,63,77,255,5,223,69,13,216,197,201,122,236,244,105,213,217,191,163,169,29,20,226,68,123, +62,117,126,65,141,212,182,217,190,207,79,157,87,234,184,82,233,224,129,238,227,241,193,88,83,59,32,125,92,170,191,131,108,95,143,251,214,181,143,133,70,77,77,41,181,191,175,130,178,101,249,234,65,166,117,61,118,142,207,73,106,70,7,15,112,255,140,255, +61,91,253,29,55,59,59,251,150,223,56,196,251,152,188,180,222,18,204,187,225,129,18,243,77,3,222,110,148,46,124,121,100,139,167,82,19,22,75,246,165,175,43,187,120,102,67,111,190,54,116,231,207,159,135,53,218,208,106,253,190,173,140,148,82,254,138,37,246, +224,149,181,13,10,213,235,240,133,11,23,96,135,47,65,168,23,14,53,246,7,209,222,31,74,176,147,21,165,33,84,231,77,136,7,77,213,187,226,171,57,154,97,10,117,25,166,248,204,243,222,66,124,225,11,215,213,211,63,53,101,8,128,168,165,173,174,247,151,13,128, +154,62,0,77,176,114,47,24,190,122,194,251,192,182,210,253,193,182,126,180,233,53,238,216,49,248,90,8,146,143,149,193,129,169,39,83,110,48,222,215,163,177,209,243,233,180,222,190,183,231,230,79,76,235,131,131,3,21,167,218,131,164,238,195,239,60,55,15, +51,140,219,166,44,45,31,239,118,74,75,193,170,3,165,198,145,117,83,167,166,212,120,132,159,179,167,212,244,52,76,243,192,57,46,152,14,22,74,189,143,251,33,239,0,175,229,162,218,222,44,108,99,184,141,207,56,161,218,53,235,102,32,96,126,134,247,203,167, +213,237,27,10,139,104,67,62,119,225,121,128,44,250,28,28,231,206,157,151,231,173,174,226,241,75,19,199,165,8,21,141,95,248,112,91,27,151,28,132,108,39,231,244,195,10,247,7,54,197,248,137,74,87,2,188,8,77,133,48,245,149,43,254,66,77,93,94,83,250,133,23, +174,152,85,124,201,106,133,2,20,93,87,175,109,41,189,56,130,63,5,2,17,161,18,201,2,149,118,250,161,238,244,3,253,224,216,189,160,251,186,209,69,184,109,120,177,187,15,12,116,83,21,58,48,197,124,96,238,238,29,152,176,17,4,188,80,152,59,189,65,24,229,48, +191,245,153,32,130,22,206,46,204,4,101,191,111,240,176,177,131,192,68,105,91,207,28,15,3,53,12,76,147,247,245,141,137,147,150,14,235,97,48,44,195,160,49,23,135,161,13,3,252,111,28,46,131,221,65,224,180,49,110,198,152,14,254,30,195,27,149,248,155,64,179, +91,243,248,91,215,154,166,187,220,9,204,60,204,127,189,181,160,169,197,7,240,239,252,254,116,255,217,102,98,110,223,2,218,134,43,153,61,185,172,23,102,150,221,245,47,64,191,175,214,4,79,188,242,74,165,80,60,95,203,15,149,107,245,130,42,213,197,107,86, +34,136,101,1,157,154,218,235,207,247,135,51,203,63,176,198,30,249,32,1,117,151,137,242,214,228,203,42,248,81,71,1,227,11,106,174,195,9,80,250,206,206,205,128,190,136,126,72,194,21,132,19,60,1,60,206,172,212,160,165,30,180,208,71,82,59,251,13,250,60,173, +197,164,198,83,46,129,224,18,128,30,106,90,105,250,102,140,219,102,191,180,1,4,151,143,27,110,156,247,241,124,231,166,231,154,122,111,172,92,148,40,61,206,7,58,202,181,206,35,231,146,113,221,141,139,129,110,52,176,80,240,188,48,225,87,199,13,213,87,195, +131,186,109,54,149,234,245,122,112,238,252,70,77,149,197,93,151,142,154,88,152,7,42,141,91,46,131,38,215,18,231,68,139,249,20,252,179,117,199,185,217,74,139,7,0,96,253,131,19,174,209,190,167,251,0,96,52,209,12,187,102,239,21,110,247,123,240,193,56,63, +155,64,208,139,64,208,12,149,32,188,146,231,136,97,222,60,254,82,176,2,62,47,242,4,123,85,38,94,89,89,217,0,184,186,104,213,135,56,62,180,96,15,205,175,22,52,167,1,100,245,149,23,4,213,201,49,137,89,159,123,78,153,237,109,128,7,0,7,198,120,175,108,2, +33,46,42,128,35,255,153,187,93,252,160,25,165,239,192,145,54,176,210,137,104,9,94,122,149,201,157,134,246,196,208,142,33,4,171,224,30,71,219,93,61,130,128,230,230,219,154,154,137,211,175,162,164,175,21,174,140,11,60,167,65,17,53,84,6,65,134,177,183,37, +69,6,225,225,58,226,9,51,234,59,27,198,74,231,120,110,20,186,67,179,86,100,202,197,184,93,111,212,213,160,63,144,251,226,168,238,40,120,10,56,231,2,153,195,235,118,122,206,216,134,156,220,20,190,57,131,128,199,119,113,137,119,221,168,63,13,129,111,187, +102,58,43,239,203,223,48,220,203,75,106,116,88,20,54,206,22,44,99,104,62,118,114,110,195,109,220,240,166,153,224,106,115,243,186,238,116,94,179,107,107,149,86,92,89,147,239,112,5,255,17,124,210,234,241,175,63,231,31,220,28,255,64,26,123,241,162,7,73, +188,62,9,190,121,27,90,42,166,253,204,25,101,94,123,77,89,174,194,107,235,248,17,231,40,212,13,8,53,246,39,28,136,242,0,194,228,245,5,196,153,7,189,123,186,78,161,2,185,78,195,220,110,221,219,215,143,193,193,117,186,61,211,152,134,246,182,154,106,107, +179,167,98,8,118,6,90,214,3,12,109,66,237,108,107,40,159,71,193,41,200,36,140,188,64,243,98,132,191,53,53,28,42,254,81,97,169,116,212,196,154,28,227,121,41,62,63,135,192,75,173,249,183,200,134,174,86,171,249,251,240,122,128,36,91,175,67,184,33,32,170, +171,201,98,8,26,206,246,239,246,85,30,53,92,70,129,183,176,240,172,179,244,227,212,228,49,132,12,119,172,110,151,15,108,13,66,38,14,224,17,109,193,23,35,102,78,23,115,219,63,40,220,137,217,211,238,43,95,185,169,158,68,28,44,40,90,77,4,188,46,238,10,202, +32,225,194,53,2,171,27,18,65,88,196,143,250,34,60,240,135,37,49,194,15,250,196,163,54,222,127,128,123,135,64,231,231,149,166,255,32,56,250,28,66,24,134,51,128,253,162,165,119,119,150,85,11,43,191,65,180,203,147,0,13,61,129,95,125,239,187,247,148,141, +16,150,156,50,186,124,117,87,13,198,199,116,59,8,77,31,102,181,173,218,64,173,3,173,118,250,20,170,138,160,109,182,102,76,88,27,232,145,13,84,182,51,210,209,84,93,135,212,88,188,107,102,181,241,2,170,235,28,171,36,134,160,16,181,202,55,47,15,32,236,52, +85,101,79,185,188,28,155,56,172,105,4,20,54,72,160,229,3,172,128,148,100,133,179,181,90,10,31,171,92,86,88,27,22,163,176,128,214,154,77,120,221,122,160,106,61,109,163,105,191,160,7,248,76,248,105,21,196,3,23,193,92,119,226,125,247,88,112,76,117,199,22, +218,101,221,232,117,231,70,0,106,225,95,22,118,216,92,210,253,27,176,76,75,119,52,136,21,188,190,16,119,244,53,10,247,42,208,243,76,75,45,46,174,187,237,109,128,38,197,88,31,33,17,237,54,148,6,8,106,34,76,134,63,31,88,107,63,176,198,30,245,169,188,121, +148,38,19,34,2,166,100,189,18,172,176,71,138,209,156,82,95,127,73,25,210,120,124,94,134,248,175,191,15,191,3,109,237,193,151,34,76,52,181,134,71,184,131,241,158,8,212,34,54,69,0,161,172,209,38,130,112,233,7,161,160,226,9,123,0,49,97,65,115,58,210,206, +224,186,104,40,36,130,32,200,82,27,149,112,55,38,10,82,55,26,193,239,69,74,135,161,210,5,98,27,101,99,27,70,227,195,239,92,132,90,143,135,177,13,112,95,24,72,208,104,67,8,123,132,23,214,146,196,226,229,242,206,58,177,214,224,49,121,77,68,13,199,194,128, +137,159,225,117,248,236,254,126,215,166,179,77,241,191,113,218,213,198,54,237,65,9,173,79,104,238,119,213,120,175,85,18,92,77,80,244,194,34,60,58,207,193,157,165,146,136,249,6,36,185,66,235,123,131,255,47,151,159,255,252,186,222,126,113,219,173,129,153, +187,116,209,71,22,147,243,126,201,71,68,176,152,250,251,250,219,15,33,88,154,221,139,70,85,209,245,5,255,15,180,245,138,161,127,128,47,80,228,71,9,148,232,79,17,190,169,47,95,37,42,244,159,65,225,6,199,106,1,153,29,154,93,222,39,166,23,190,180,156,53, +102,31,49,38,195,149,65,49,8,34,154,91,60,113,122,86,139,191,220,131,9,166,64,5,173,26,47,64,83,102,65,81,36,46,12,199,58,128,169,45,74,111,134,3,8,172,40,253,103,38,20,134,213,15,127,99,12,205,69,200,18,52,160,201,147,191,5,44,52,23,78,0,186,177,136, +93,17,240,68,142,32,84,191,96,96,121,45,23,10,5,76,97,235,129,179,57,125,50,191,3,204,241,4,148,229,17,180,124,220,117,211,101,195,110,199,60,91,251,234,137,118,203,118,183,75,17,194,8,134,99,27,254,150,215,69,184,237,210,205,192,60,223,190,5,82,3,44, +22,77,51,209,51,181,225,220,57,175,189,244,180,56,183,150,22,17,23,156,95,98,25,109,39,8,65,235,143,68,176,71,137,125,9,164,149,143,193,214,141,248,6,34,95,56,135,22,204,239,151,191,168,220,236,51,42,216,253,253,13,167,158,173,155,54,66,25,210,127,19, +161,30,5,72,124,229,110,175,107,18,196,158,141,190,54,99,8,213,154,129,33,146,229,201,3,149,43,154,153,89,8,50,79,28,85,58,132,240,134,217,88,94,219,78,83,51,30,143,85,0,1,22,208,78,53,246,194,133,125,80,46,209,38,35,200,109,198,42,203,32,212,18,168, +54,192,107,75,127,106,2,92,47,203,177,11,129,134,248,88,12,193,231,163,24,39,127,172,176,144,68,224,42,182,30,184,56,106,241,72,69,208,238,34,79,29,0,176,213,169,181,19,240,53,176,214,38,64,230,201,172,115,249,232,192,101,16,110,154,192,255,66,147,3, +104,112,3,113,238,3,89,12,165,245,136,121,193,205,76,41,199,88,151,97,223,75,227,179,150,22,206,115,205,36,115,142,248,90,8,148,97,17,244,199,86,138,244,125,193,212,7,138,99,39,28,176,100,34,68,87,189,214,210,84,220,184,177,237,174,209,225,3,37,49,187, +241,101,248,12,181,189,33,239,59,123,42,214,20,42,217,163,33,126,12,137,216,20,66,125,4,102,88,52,53,232,154,126,217,15,90,51,51,136,47,97,197,218,3,99,135,3,67,116,75,77,237,34,92,117,117,99,50,8,51,47,106,122,208,133,174,232,177,129,106,152,176,76, +53,194,31,179,223,203,12,222,42,204,35,13,67,110,66,203,235,46,15,84,108,162,2,202,108,112,255,168,128,194,59,255,248,0,127,11,101,162,48,45,194,98,156,7,142,175,25,22,161,45,76,56,42,248,250,60,76,35,19,232,88,7,41,46,49,214,81,49,52,65,128,133,213, +192,247,112,227,186,44,52,103,198,134,207,205,0,174,50,248,91,152,91,51,13,12,97,251,3,51,202,141,110,152,41,57,7,163,251,7,154,177,239,65,134,88,250,1,23,246,9,44,186,5,213,152,242,74,69,139,182,59,23,234,36,185,41,207,223,252,221,235,154,201,144,107, +94,184,134,0,138,202,67,161,242,241,141,141,141,143,198,199,86,154,42,126,117,114,31,194,27,255,129,96,149,200,129,94,189,122,222,126,30,233,170,22,76,240,151,145,141,97,80,46,169,179,111,21,238,83,171,200,190,108,210,167,133,242,197,25,220,183,192,24, +13,199,51,122,148,117,17,147,78,33,140,1,168,106,67,51,33,204,108,111,160,33,124,131,147,28,208,79,26,156,217,162,55,214,9,52,151,166,16,10,109,38,218,233,242,220,68,73,98,134,136,131,32,65,32,139,220,208,199,210,228,66,97,185,164,225,137,35,23,88,133, +184,23,223,63,199,125,17,148,16,143,103,253,92,5,41,238,47,149,179,208,86,203,215,231,185,42,225,80,249,114,216,96,27,227,137,46,119,101,80,243,26,14,12,238,202,220,150,226,123,99,216,230,192,150,30,89,227,189,161,189,72,24,89,3,205,37,46,96,184,212, +25,192,65,52,154,34,144,89,104,45,227,222,61,152,102,147,31,179,237,154,114,253,142,114,51,43,170,202,30,41,152,99,201,12,169,137,73,62,15,164,242,229,173,47,151,207,169,11,102,149,224,31,246,241,98,37,3,90,76,104,172,253,97,5,43,97,205,141,101,1,73, +142,38,152,166,129,40,248,197,23,241,229,102,174,155,69,100,103,102,17,206,28,165,7,201,194,148,88,254,188,77,82,253,177,71,34,65,225,195,148,177,165,49,182,7,146,1,38,151,62,149,90,10,126,206,100,240,165,131,93,168,17,52,129,102,151,207,7,165,20,196, +153,247,173,54,7,242,133,70,137,0,41,63,8,211,208,4,83,144,69,97,76,16,67,242,128,208,144,96,25,32,204,129,48,75,44,4,160,40,235,240,56,5,27,64,144,37,204,176,45,51,23,69,17,99,89,203,251,35,190,63,31,131,176,185,6,8,168,98,2,39,32,55,36,7,236,8,118, +52,164,112,11,15,182,100,161,226,190,49,4,90,7,224,162,144,27,169,179,195,158,181,179,97,221,13,113,255,120,174,175,167,84,195,230,48,201,101,31,239,204,53,195,24,24,113,174,66,254,176,141,48,12,11,201,82,176,254,140,223,68,172,155,185,206,230,208,205, +116,206,91,102,194,152,17,226,35,203,222,28,59,129,203,10,132,197,251,72,239,3,83,138,116,169,43,48,3,68,102,87,4,142,211,252,138,67,23,154,12,217,28,230,160,73,145,202,63,20,234,1,76,48,67,25,102,92,106,45,173,239,13,118,93,71,247,204,254,247,240,148, +55,15,20,5,74,146,135,254,116,148,232,160,63,212,198,13,65,249,133,153,192,99,198,157,49,196,198,235,68,201,176,127,48,145,65,100,65,54,22,48,183,188,24,154,216,2,231,155,143,133,58,8,18,252,235,98,152,88,29,242,177,18,23,195,251,237,56,46,1,141,32,53, +184,79,27,225,31,124,78,18,149,153,70,64,173,35,94,10,92,183,120,220,149,0,227,120,77,152,192,52,243,2,19,61,192,105,4,217,128,247,214,124,111,147,227,243,130,48,213,113,13,238,194,212,196,93,208,68,143,203,113,16,164,38,32,195,101,241,123,162,142,214, +219,8,247,14,184,8,144,76,26,212,61,228,225,121,81,200,49,246,225,190,50,181,101,24,10,82,168,4,81,27,55,152,219,58,175,58,51,62,43,196,168,227,194,133,135,178,184,164,73,34,184,247,149,221,7,210,88,201,54,92,188,32,174,181,130,220,242,166,11,48,189, +52,25,96,80,160,173,55,133,38,108,47,221,9,152,166,62,96,142,20,230,183,86,1,37,242,176,143,226,135,221,3,107,68,162,33,168,15,2,18,13,68,190,93,147,133,121,81,215,41,78,216,96,60,54,52,183,68,185,13,248,81,103,50,131,211,142,180,92,17,148,35,165,211, +90,12,19,12,80,164,11,106,181,161,121,165,246,2,198,32,102,165,150,243,6,80,50,191,100,224,111,51,92,199,59,104,160,33,7,105,58,62,119,18,194,27,104,224,16,38,24,167,217,241,122,192,216,6,178,181,208,90,147,120,51,237,10,87,242,177,4,90,15,43,224,128, +152,28,56,37,209,222,81,15,75,161,142,243,140,208,73,67,71,235,83,137,29,131,229,74,76,90,22,89,223,129,9,117,164,43,85,179,167,8,168,130,178,86,36,176,88,5,180,119,186,210,218,225,193,150,155,121,106,193,169,55,238,168,187,197,200,182,224,115,27,234, +180,221,240,224,73,52,153,0,234,210,67,37,99,54,72,95,212,23,127,72,83,76,224,164,60,100,186,226,203,91,152,111,117,12,191,58,51,202,76,168,66,174,58,194,247,54,168,66,156,0,40,218,3,227,64,218,147,84,37,207,27,129,59,140,242,182,38,72,10,33,220,140, +23,250,213,146,224,132,230,117,108,24,186,36,89,205,140,32,208,26,156,85,97,251,1,129,15,77,108,9,180,11,115,105,156,152,92,184,24,24,84,107,240,89,153,16,20,176,237,145,207,250,80,192,16,164,49,88,147,120,222,8,82,142,241,60,120,57,8,15,66,197,109,107, +66,57,97,33,254,203,117,1,180,237,68,152,33,62,0,86,211,226,123,184,8,130,84,161,200,17,166,26,64,0,127,211,36,2,223,28,150,52,227,161,142,32,220,72,4,12,83,107,45,240,118,1,132,92,194,36,151,58,41,35,64,181,134,77,237,176,134,88,216,82,184,212,136,125, +155,15,27,101,125,224,253,246,12,204,205,168,74,242,179,170,35,190,53,6,253,200,240,231,44,194,159,235,146,246,123,237,170,178,158,135,151,240,7,73,123,229,142,148,215,232,119,243,181,31,136,121,162,80,9,187,175,200,210,129,166,118,174,35,94,61,47,241, +42,239,146,234,1,100,107,58,251,71,64,22,204,76,109,58,210,3,34,6,164,188,92,27,48,6,104,145,225,76,141,194,212,130,108,2,34,74,152,73,164,80,106,58,135,227,133,235,131,85,205,168,213,166,40,114,248,83,152,74,152,61,72,19,60,81,172,121,159,129,64,11, +58,105,250,201,65,4,203,11,65,67,112,5,245,9,140,4,220,158,46,17,141,224,215,106,75,235,192,53,67,88,132,37,230,248,39,36,104,66,126,213,6,46,15,75,89,223,76,61,18,59,51,241,22,59,83,208,38,141,178,162,4,164,130,249,14,75,64,106,32,35,103,134,142,240, +0,230,4,129,109,129,236,156,49,57,18,13,144,163,113,42,194,74,162,95,197,138,179,176,62,78,37,96,199,176,64,232,94,186,118,160,90,189,186,29,69,48,75,208,255,221,225,158,107,232,102,73,30,92,170,62,78,144,150,161,162,132,26,97,16,171,111,212,27,227,243, +238,53,68,25,243,43,200,244,32,197,117,109,101,195,66,168,147,60,253,225,185,126,183,82,26,243,126,154,122,180,42,130,101,45,116,228,36,248,73,234,51,94,101,157,15,75,88,152,122,35,10,94,122,20,160,9,105,183,131,62,78,40,50,52,204,204,156,128,79,137, +219,72,177,129,149,57,32,70,5,155,212,239,123,126,247,0,66,117,99,106,41,133,154,5,52,193,252,221,9,132,105,97,124,85,19,33,11,132,58,130,6,14,179,2,120,186,8,233,47,233,55,33,168,8,114,13,33,12,8,222,70,48,15,49,81,176,46,178,8,167,22,8,206,68,176,184, +176,4,32,150,112,201,51,27,66,200,129,171,174,71,226,87,241,58,231,159,67,223,169,29,162,212,82,209,59,71,142,225,115,132,96,137,247,71,101,148,141,248,28,35,62,154,247,97,25,65,116,133,128,56,250,252,60,202,131,17,191,59,110,195,12,27,198,221,1,129, +224,200,8,143,61,29,55,244,184,232,3,76,195,197,76,227,57,181,105,93,98,37,188,86,224,235,137,191,133,75,219,164,31,6,216,188,117,154,53,7,234,209,68,153,187,160,30,47,93,92,71,170,239,58,100,241,28,57,3,67,171,89,185,68,200,243,221,57,100,243,94,66, +245,47,210,135,69,87,60,158,243,68,181,185,182,190,174,24,175,206,62,115,51,96,112,173,170,212,27,75,87,234,77,163,31,45,30,4,140,85,9,20,58,93,99,218,88,138,205,42,174,51,179,129,228,59,115,106,18,204,47,195,152,160,18,106,32,254,209,4,3,92,10,10,208, +22,80,148,2,16,199,68,160,249,66,2,157,34,231,105,208,136,103,35,147,151,208,189,208,37,20,150,117,94,104,142,194,198,169,226,95,176,248,49,30,137,252,125,97,64,65,66,77,99,94,135,197,15,248,215,186,28,160,84,27,121,14,23,11,66,92,151,149,33,162,154, +16,90,143,215,218,80,209,170,19,128,241,221,152,109,130,62,19,96,193,83,132,89,81,72,140,140,176,22,32,13,130,207,249,94,153,1,239,40,128,42,109,48,62,207,66,107,134,166,61,135,53,4,237,29,239,246,5,103,248,147,134,60,5,104,85,17,110,21,18,102,167,183, +204,51,112,107,189,187,74,24,169,213,181,227,114,255,197,139,171,150,25,179,181,42,68,66,216,41,18,125,183,92,237,123,250,88,102,112,222,126,31,209,217,246,246,188,254,220,231,90,154,73,227,217,30,194,155,19,161,190,173,124,181,160,164,222,110,27,157, +2,1,111,119,15,76,251,137,57,51,194,137,192,247,54,182,5,86,233,206,64,7,179,248,241,52,96,61,184,44,91,5,254,21,13,72,196,235,79,12,24,67,71,13,5,34,181,222,151,242,100,66,87,2,104,179,201,112,34,169,142,56,223,32,25,200,52,145,221,163,13,135,180,120, +29,190,213,194,37,6,128,113,142,40,12,186,93,34,210,128,109,134,210,1,32,225,254,64,17,5,225,4,225,58,125,175,147,11,68,132,191,12,109,193,122,240,108,225,30,112,200,9,150,92,14,227,239,146,34,131,3,229,51,17,184,225,130,117,129,47,71,11,62,198,69,72, +101,126,89,176,83,248,178,197,120,52,178,81,173,133,213,2,3,142,112,40,236,193,122,195,7,51,214,165,207,45,1,188,104,138,131,182,181,99,248,220,221,187,165,109,60,6,86,10,190,118,188,179,80,10,102,1,51,181,240,188,114,95,4,155,247,249,121,37,57,93,146, +21,228,16,46,92,144,48,200,85,170,251,22,173,13,223,71,99,69,91,153,38,36,79,41,89,66,112,193,80,86,160,224,154,222,124,109,217,205,254,212,77,221,0,191,183,252,232,146,186,189,121,15,100,59,57,224,109,36,200,79,234,153,112,70,5,16,170,5,9,97,107,83, +38,68,150,102,212,52,18,206,0,11,50,142,9,96,170,189,79,197,234,77,88,46,100,41,108,158,252,66,66,151,178,4,115,91,250,231,128,76,128,210,224,109,32,176,146,130,198,117,249,65,129,32,7,19,64,224,20,38,252,172,217,221,190,219,252,246,183,255,237,179,251, +7,247,31,31,143,251,115,195,81,247,49,167,139,58,206,103,93,136,86,56,153,48,76,183,195,40,221,110,52,167,190,55,53,181,240,250,83,103,158,189,241,232,194,51,29,124,28,62,28,43,79,132,4,0,69,149,197,139,97,34,193,43,131,40,137,225,37,96,155,75,152,28, +124,15,205,5,50,46,225,255,13,45,52,62,124,20,217,32,205,20,209,56,62,67,92,13,161,54,105,74,219,136,129,239,0,180,118,241,244,18,84,219,76,195,116,59,29,59,91,182,84,163,0,128,58,25,24,40,129,123,99,211,150,11,139,91,88,114,11,118,22,10,48,179,165,212, +231,206,93,87,103,206,43,253,218,149,215,224,103,231,41,84,15,14,222,227,208,239,35,216,195,98,102,185,243,146,47,227,96,226,252,250,245,243,234,105,161,192,206,202,67,201,220,86,240,234,119,141,110,34,139,81,3,177,127,188,29,6,52,193,172,116,176,166, +111,142,181,90,166,3,70,9,164,191,65,42,86,76,177,33,96,162,201,197,9,136,105,129,83,158,153,60,192,249,50,20,170,66,12,72,223,70,114,33,137,37,7,96,202,17,78,47,12,40,150,35,195,33,104,41,148,3,210,38,19,209,233,188,217,250,250,55,254,249,175,236,239, +221,91,25,244,247,158,150,20,23,44,38,179,23,48,145,12,125,44,41,13,41,34,210,4,214,56,145,188,77,229,225,79,132,157,78,210,198,235,143,45,62,243,123,79,60,241,233,141,211,39,151,183,1,164,144,143,149,135,65,49,17,186,145,82,14,37,221,131,116,109,14, +66,130,198,31,40,205,21,68,207,142,232,77,135,228,47,232,28,138,40,231,2,192,201,108,197,80,65,228,14,154,32,38,192,42,55,28,144,50,131,174,97,9,254,198,186,153,86,211,246,118,173,101,109,85,23,138,207,60,238,107,111,12,75,207,9,224,232,35,138,222,94, +182,11,159,187,174,183,182,186,142,52,174,232,25,50,64,19,249,188,93,99,191,175,96,89,70,202,172,130,176,30,184,239,183,175,42,67,178,122,156,120,223,187,139,172,205,66,124,90,234,147,164,114,224,77,152,98,64,222,246,49,4,22,225,48,172,17,175,226,24, +117,199,65,30,215,97,109,131,48,131,80,21,51,53,56,195,68,191,185,34,151,132,211,166,189,48,213,176,96,22,39,4,16,198,191,37,237,93,32,255,145,231,101,1,18,212,4,143,104,250,194,189,254,118,227,143,254,232,139,191,124,247,222,171,191,130,83,139,148,184, +165,69,214,202,78,126,160,7,129,242,195,161,13,80,60,24,90,199,236,32,226,94,72,128,167,195,48,113,132,40,73,132,44,30,183,152,157,121,100,253,179,63,246,119,254,175,69,8,24,191,148,252,8,162,91,47,96,129,91,1,197,8,16,93,208,219,50,212,113,34,84,6,212, +72,235,89,93,71,44,139,116,238,136,139,1,63,10,102,197,106,160,1,172,147,50,33,21,137,172,80,11,137,252,225,1,210,126,16,238,40,175,23,116,184,225,116,27,95,97,71,189,177,215,46,89,90,51,51,85,56,198,180,164,26,55,20,132,187,240,80,184,43,87,214,220, +36,173,247,129,76,241,164,26,157,215,89,169,206,191,116,212,235,43,204,181,250,76,235,110,149,99,93,254,196,105,173,14,182,205,54,174,31,3,163,100,230,141,97,57,203,8,194,13,65,238,22,73,221,153,116,20,132,72,136,27,152,222,172,4,188,196,105,26,101,128, +165,117,104,40,238,3,58,20,243,27,67,120,176,106,34,84,10,209,32,77,224,196,198,73,216,34,194,13,24,33,67,12,160,107,204,215,254,224,127,251,205,187,219,223,253,229,60,31,183,66,0,143,162,40,248,84,178,194,202,23,196,2,47,187,234,6,165,61,41,183,199, +59,147,16,12,129,167,170,76,26,158,129,215,1,117,41,122,73,16,199,187,187,119,127,241,43,235,47,174,62,178,240,241,127,245,43,63,251,143,255,141,162,223,214,180,189,192,3,136,97,16,19,133,92,15,37,76,113,20,8,165,233,84,76,174,17,240,171,65,231,140,236, +16,22,106,26,101,170,0,201,1,131,172,194,18,12,5,44,204,24,196,117,137,53,178,219,27,72,228,52,78,2,221,71,134,43,61,14,171,13,208,57,236,207,129,123,118,166,209,7,213,8,194,162,171,72,254,40,183,240,252,117,253,197,47,118,221,234,170,151,147,164,224, +201,46,30,105,25,249,64,26,43,230,151,253,53,107,190,246,149,215,145,20,14,110,92,145,213,131,216,230,22,8,247,196,52,164,0,237,4,66,255,142,137,241,107,168,84,172,20,52,53,168,39,236,108,143,84,33,96,127,212,204,194,225,62,161,62,252,44,206,0,161,132, +132,40,12,35,32,76,96,40,248,223,50,36,250,68,40,11,108,105,99,34,96,1,80,138,156,1,206,101,89,6,123,123,183,230,191,245,173,127,253,143,199,89,15,75,25,100,14,128,214,112,144,81,176,224,154,51,45,164,62,100,32,22,246,176,154,210,249,219,242,175,4,174, +244,8,52,211,20,55,13,128,133,102,98,29,49,223,9,178,169,32,113,104,196,162,71,105,242,230,207,63,251,15,255,199,199,31,253,228,93,2,45,44,159,210,208,209,19,184,147,128,12,168,183,248,139,24,45,160,134,210,52,243,43,224,155,96,85,2,84,33,176,182,96, +66,163,184,160,41,102,34,223,102,240,199,176,28,131,238,129,77,166,27,110,23,9,131,227,113,203,49,73,63,234,20,194,41,47,204,20,150,237,43,147,124,237,178,144,20,203,229,145,190,38,91,153,226,195,152,118,162,185,239,45,88,255,84,22,170,105,38,124,55, +0,156,22,54,129,134,59,64,195,39,61,217,223,153,57,45,21,242,221,170,94,73,124,43,184,96,16,246,154,182,142,102,152,236,210,56,241,204,146,233,103,1,57,86,166,195,198,204,196,208,159,70,65,196,112,130,28,111,78,191,138,144,3,156,171,161,151,226,185,99, +172,90,86,102,24,182,195,188,246,202,213,191,177,181,189,241,95,129,38,106,247,7,227,120,52,28,135,57,208,216,104,132,16,67,59,111,120,241,134,57,104,194,48,102,194,198,103,221,45,97,51,31,166,242,242,186,38,226,18,246,153,188,162,88,111,126,10,62,27, +26,134,32,8,108,9,139,165,21,65,188,226,2,8,122,159,248,216,207,254,206,179,207,252,230,183,232,123,41,200,80,252,182,1,76,200,129,124,1,23,50,66,6,10,28,92,154,13,11,154,104,228,105,139,36,130,80,71,32,176,108,12,110,140,164,20,126,29,100,27,210,205, +34,97,96,32,76,230,113,251,123,64,20,101,97,219,166,41,130,125,35,204,203,195,74,71,54,142,205,129,75,88,95,183,207,65,101,87,241,147,174,248,186,40,167,142,100,222,38,130,125,111,34,217,85,188,240,26,235,229,30,30,172,110,103,244,44,109,23,96,250,239, +129,50,97,142,149,69,104,123,172,178,6,219,205,90,94,198,107,242,1,51,158,28,103,233,10,117,128,97,141,68,38,121,2,34,2,81,11,180,49,38,88,34,77,8,205,163,80,199,121,25,80,152,244,173,140,55,137,140,33,153,240,181,155,191,247,235,189,254,173,255,6,43, +126,106,56,176,233,96,159,49,102,162,218,211,45,187,240,200,124,57,55,59,93,78,181,235,174,22,215,108,45,173,3,140,38,46,78,88,141,70,119,46,69,32,92,171,226,120,121,3,254,82,51,122,241,121,73,81,96,205,5,0,11,173,227,56,68,122,47,112,44,5,32,127,12, +61,108,253,249,95,92,251,239,191,242,7,191,243,27,92,96,4,109,4,111,184,31,118,53,50,19,28,32,191,3,226,19,84,111,201,130,196,134,104,159,191,57,40,199,12,183,252,57,103,14,18,196,69,4,139,198,90,46,86,94,50,222,103,241,122,194,114,161,99,74,157,65,248, +216,152,242,69,127,52,197,236,105,250,181,207,173,122,101,92,246,150,116,82,46,163,222,166,164,239,159,221,185,200,196,238,188,254,252,202,154,158,244,158,44,62,51,23,180,62,19,34,126,69,216,129,148,92,125,176,45,45,22,124,172,165,67,169,87,98,189,47, +107,119,169,173,118,8,239,2,161,130,248,54,172,51,138,107,116,181,185,97,238,20,41,81,69,246,6,212,29,127,179,142,154,49,131,71,132,46,48,185,16,174,19,28,75,45,86,193,221,205,175,253,45,103,119,127,163,44,84,186,187,61,74,29,18,64,237,214,180,58,177, +56,83,198,224,123,184,70,166,103,155,118,110,118,202,182,167,155,174,13,1,207,76,183,92,179,134,84,66,2,164,103,130,202,213,78,132,251,16,108,148,185,152,109,234,161,166,227,68,240,234,53,220,151,76,27,37,21,86,242,114,179,185,249,221,191,255,31,255, +240,127,249,219,146,41,96,2,41,194,58,0,93,140,120,25,171,7,108,84,170,131,28,56,107,204,28,48,112,52,81,61,204,134,97,53,7,18,254,146,83,182,121,70,248,161,104,201,136,202,210,150,87,130,3,40,69,156,78,75,91,202,131,7,158,106,36,27,213,6,205,200,132, +60,89,62,62,143,5,13,18,130,74,242,253,210,164,170,197,29,45,149,9,222,46,203,183,132,58,95,85,238,197,23,255,68,255,201,246,134,234,92,157,97,139,160,106,225,195,247,193,207,238,171,105,245,232,241,190,249,203,93,96,134,123,92,109,129,217,239,130,227, +5,36,118,253,66,78,5,191,52,180,15,140,74,28,40,248,64,96,127,104,97,68,47,22,130,28,12,146,132,212,32,243,36,240,164,112,199,36,114,113,62,65,201,1,70,146,58,208,80,22,172,253,222,254,198,143,57,123,239,31,12,135,89,210,235,102,112,121,169,158,153,107, +23,9,8,121,208,131,38,31,41,129,188,229,216,155,88,48,27,46,137,35,193,80,176,108,134,101,82,206,43,38,5,38,107,219,72,176,42,82,86,226,118,241,187,217,185,65,152,92,240,53,198,139,21,112,151,201,3,81,106,222,71,91,119,208,223,91,30,149,157,205,165,147, +207,188,9,20,132,85,160,229,172,145,209,14,180,247,235,172,250,209,17,34,97,50,30,17,205,191,113,245,132,165,55,5,18,93,252,192,16,47,29,226,249,129,219,239,43,177,12,6,216,106,54,72,84,119,138,203,16,223,125,100,221,49,144,213,49,56,246,242,22,48,244, +169,155,250,254,27,179,238,212,19,74,253,234,239,40,33,241,175,73,49,254,42,219,69,32,179,135,139,213,188,93,168,218,139,93,170,209,39,101,165,107,248,239,252,121,95,117,72,255,202,21,164,226,45,67,51,252,113,112,194,211,31,15,12,147,231,172,177,101, +91,5,24,40,121,29,139,179,89,26,202,10,8,95,108,150,168,152,137,113,152,186,148,1,15,178,236,36,117,185,210,121,17,60,66,80,5,105,146,65,162,105,179,197,246,124,20,221,251,175,239,221,61,168,111,126,175,151,158,253,216,35,217,163,167,231,203,108,88,234, +254,1,194,30,151,66,91,27,64,90,44,24,174,225,130,219,186,134,215,25,93,79,107,208,190,80,23,35,216,69,87,7,32,77,113,194,35,33,88,165,72,148,138,202,159,107,36,4,146,32,183,204,201,225,27,209,90,92,55,204,10,136,58,224,207,161,111,6,192,125,245,230, +183,254,209,214,246,75,39,13,157,105,73,109,181,18,158,145,96,225,66,200,203,2,161,186,146,223,103,202,88,180,150,231,132,22,139,121,92,90,175,176,168,249,2,118,152,227,41,164,47,233,194,152,183,149,222,33,229,91,65,15,42,107,184,123,194,71,33,236,27, +38,165,11,236,35,197,132,12,71,39,0,234,45,37,194,239,166,177,135,69,224,234,97,102,135,169,58,117,67,153,27,200,2,252,228,47,181,3,164,14,213,34,76,241,108,68,106,158,245,75,212,80,200,12,24,145,73,102,38,155,51,73,150,143,193,84,212,131,186,245,192, +105,196,196,185,36,200,125,98,156,81,32,145,47,133,74,190,54,18,191,106,133,200,39,175,59,216,251,234,255,112,176,55,56,113,255,222,126,180,252,201,165,108,103,251,192,236,220,31,134,187,247,179,48,10,19,49,212,80,25,18,13,18,173,36,53,132,25,217,88, +147,250,65,110,208,110,223,237,33,246,181,8,82,11,5,116,163,114,216,124,92,228,58,162,207,106,101,139,129,150,216,151,128,10,203,5,52,101,32,4,6,208,177,246,224,74,116,150,214,128,207,146,232,41,173,213,94,254,220,175,94,186,8,16,78,54,25,102,202,21, +134,245,25,8,206,36,190,5,58,198,10,46,220,33,50,14,11,198,185,112,39,14,137,163,162,222,142,11,60,199,146,98,99,149,198,208,166,69,139,174,97,96,75,41,97,237,131,102,204,240,229,71,5,226,87,8,252,141,126,121,242,51,190,186,226,220,98,215,93,171,42,43, +124,203,170,122,75,129,155,121,167,80,47,189,69,216,203,213,56,129,133,77,100,23,86,54,212,202,179,190,187,124,106,38,144,102,36,246,215,196,85,85,0,83,150,242,119,70,251,218,95,228,87,235,16,106,129,147,201,21,42,37,44,149,198,186,88,121,176,164,229, +183,106,57,107,101,41,128,132,148,17,18,158,230,214,95,254,254,111,220,221,60,88,124,117,99,183,246,227,159,61,91,236,237,140,204,235,127,177,159,12,15,130,160,81,111,187,52,174,187,56,170,185,56,76,85,13,218,153,68,41,78,109,164,90,205,186,45,70,44, +252,77,84,45,105,2,76,53,96,154,83,121,30,159,159,224,111,20,112,81,16,214,42,31,15,49,202,245,166,218,147,27,78,248,12,81,102,37,228,162,168,196,4,122,201,237,209,96,248,212,127,248,198,255,250,107,178,20,104,109,12,1,31,100,5,232,199,124,177,170,126, +163,99,170,177,210,218,73,73,79,187,70,242,109,44,244,42,93,22,107,149,157,30,120,173,102,143,82,86,121,204,121,47,7,118,242,145,151,103,55,197,117,223,180,39,197,110,180,172,151,215,212,59,142,119,128,167,11,85,229,249,132,170,98,204,196,246,71,38,124, +151,241,223,206,189,194,189,254,242,200,182,59,165,155,63,238,95,195,38,37,86,68,140,147,190,238,169,190,128,38,17,112,152,186,62,50,208,210,78,65,48,65,62,94,69,42,168,42,29,20,139,113,181,100,86,128,150,11,225,132,105,237,184,136,107,181,193,252,189, +55,223,248,123,189,78,25,253,216,179,103,178,122,45,202,95,121,233,65,154,166,109,8,171,5,161,54,92,28,167,42,141,18,149,196,53,17,84,154,214,112,61,85,173,169,134,158,153,169,195,105,38,58,9,235,138,207,75,162,26,158,139,11,133,26,114,49,224,18,48,211, +23,136,221,242,45,190,94,102,150,1,204,184,196,5,57,86,100,232,73,114,105,161,62,172,152,59,231,211,101,242,207,214,230,237,223,220,239,239,212,75,237,147,23,1,136,18,104,38,222,22,22,8,128,170,148,140,21,113,152,175,199,114,88,216,72,221,225,121,74, +39,186,102,232,170,104,142,97,161,205,52,67,195,172,175,153,226,100,11,231,48,241,9,120,181,192,127,150,20,187,18,25,207,62,255,235,53,253,10,66,79,154,100,181,186,206,102,184,42,98,127,15,193,78,212,216,55,47,95,49,44,173,89,101,161,213,150,114,175, +109,109,232,141,27,27,42,124,42,53,143,227,194,58,225,187,59,190,46,184,61,11,194,97,212,116,172,97,2,50,213,113,196,166,165,32,96,153,11,67,28,254,136,162,204,145,28,97,225,25,219,16,125,197,3,137,5,15,76,60,209,95,208,125,177,78,2,144,226,246,171,127, +242,119,242,60,8,142,205,79,231,143,60,214,202,58,15,250,208,210,38,130,123,209,62,8,42,134,16,19,23,197,49,180,48,118,73,2,109,12,112,155,45,118,96,114,155,211,137,154,155,175,217,180,150,138,134,38,97,13,207,75,229,66,225,198,213,37,130,112,137,211, +252,89,209,162,146,226,169,72,47,64,192,217,144,86,150,33,15,121,103,198,61,124,138,173,252,25,156,64,81,52,191,241,231,255,226,151,137,125,248,80,33,225,15,75,117,124,73,14,92,48,203,169,140,145,144,7,56,66,22,121,166,199,200,74,209,146,5,209,72,51, +236,81,190,31,76,177,55,168,133,176,103,111,111,79,210,121,84,158,6,194,30,54,175,181,230,110,9,135,112,21,166,152,207,189,241,121,112,198,171,171,21,121,234,222,59,220,153,152,98,254,119,101,101,195,185,35,109,28,180,235,203,43,203,10,185,116,197,22, +13,146,18,76,51,177,147,124,52,238,106,182,56,116,118,16,100,35,139,110,165,205,130,25,148,135,213,249,205,36,33,89,65,100,172,51,152,38,214,42,49,43,45,168,147,46,202,9,234,20,134,127,120,112,103,254,206,27,111,254,92,61,105,9,164,220,219,46,194,238, +94,16,199,17,180,15,130,11,145,38,71,22,92,177,194,144,194,149,11,66,154,246,108,221,77,77,215,221,184,31,235,1,76,86,90,79,117,45,197,243,224,139,43,173,21,33,83,184,73,101,150,39,194,213,18,207,104,85,113,85,202,171,49,110,148,108,185,20,222,64,184, +74,143,160,181,243,81,177,228,172,213,189,237,91,191,218,61,216,110,152,138,0,7,237,41,218,27,133,82,48,128,144,167,144,58,44,89,196,56,55,44,94,119,38,151,186,174,110,31,218,212,28,27,214,39,119,246,129,1,59,164,99,219,210,101,207,158,250,121,118,239, +35,236,97,60,203,1,39,212,216,167,159,158,50,91,175,116,157,39,24,160,177,151,42,197,84,239,129,138,249,37,197,20,95,196,7,95,184,104,5,61,85,141,185,231,241,95,255,214,45,179,84,61,151,132,63,43,15,101,52,0,160,156,157,214,166,201,6,211,62,208,28,159, +48,2,2,101,11,70,233,125,43,87,41,205,48,127,92,2,147,132,164,151,41,193,23,3,164,178,214,95,147,67,117,196,50,184,255,205,205,155,203,101,22,232,52,169,43,106,100,191,171,76,214,15,224,71,155,16,102,44,2,149,75,136,60,59,194,154,36,141,177,186,99,55, +125,172,230,166,231,234,106,238,120,221,62,250,100,211,214,155,137,42,88,222,74,115,13,141,78,211,196,165,181,186,107,182,82,46,6,106,184,162,73,166,25,15,77,84,217,87,175,185,206,51,84,194,82,81,136,142,230,57,247,2,182,132,211,74,136,104,81,6,91,150, +205,63,222,248,151,63,39,61,83,36,57,112,97,93,21,11,234,4,86,209,28,177,167,183,148,200,7,240,138,150,26,72,49,136,29,124,139,156,79,214,38,79,77,107,93,71,168,211,237,178,73,116,74,1,98,154,109,100,214,103,23,246,164,54,155,252,60,39,232,236,238,102, +110,1,57,113,182,212,48,25,48,225,40,220,17,173,125,155,198,178,217,234,82,21,234,92,14,38,43,97,117,89,185,235,32,255,79,128,179,228,244,20,210,92,195,158,115,59,148,95,99,95,43,82,38,248,50,181,214,192,212,154,164,17,71,18,230,72,85,4,132,202,21,106, +139,216,23,143,85,224,193,216,73,92,89,146,32,150,21,77,230,135,165,41,163,209,131,95,78,144,60,160,22,146,93,26,116,93,80,140,2,147,38,53,88,129,68,5,20,110,2,95,29,83,184,145,154,57,94,3,51,20,233,222,3,96,148,81,8,173,76,116,156,32,79,218,151,58,23, +48,91,137,138,12,120,76,152,8,3,51,205,74,222,40,140,189,57,22,225,38,162,213,1,83,188,71,132,235,249,9,156,148,210,249,230,37,185,120,129,87,26,59,161,179,212,206,131,7,63,78,22,170,196,194,20,237,36,86,168,64,20,236,11,4,12,13,142,99,35,133,118,172, +185,66,122,135,36,69,129,28,47,207,149,99,249,94,1,78,117,223,218,150,239,188,22,115,156,182,142,235,81,207,247,221,50,204,252,211,111,20,110,19,214,147,25,30,142,127,224,253,203,203,239,140,110,222,6,158,156,158,104,236,11,236,15,169,94,176,190,225, +107,135,123,119,207,186,25,240,150,28,250,193,178,210,57,246,129,182,218,150,69,88,173,86,83,21,187,206,13,6,156,249,0,64,128,44,206,254,104,36,93,109,242,206,73,46,177,170,148,117,178,70,23,247,129,182,208,88,194,92,223,2,154,24,20,180,230,242,57,248, +182,83,16,162,196,156,1,46,229,24,17,104,163,166,164,95,131,2,137,34,199,251,113,162,92,72,141,222,131,233,15,89,118,29,234,225,65,40,21,141,227,94,72,65,35,75,215,80,172,144,73,146,216,53,218,52,15,184,167,65,166,42,21,237,247,66,77,189,214,86,96,202, +77,132,91,133,244,50,132,137,158,204,78,132,58,249,123,216,241,165,135,163,253,143,247,70,247,235,134,153,122,205,192,143,105,28,68,108,248,206,100,161,138,28,146,181,44,100,151,62,3,113,79,109,164,57,24,86,179,135,87,122,116,67,208,55,115,124,203,158, +60,167,30,79,73,191,15,51,103,244,179,111,17,213,58,135,158,173,203,125,107,27,239,204,238,188,35,109,231,147,235,23,124,58,72,249,140,14,80,177,212,15,247,23,111,153,198,126,168,31,28,35,24,64,160,5,170,101,42,240,100,4,209,28,73,129,38,116,112,88,171, +5,101,78,218,105,172,16,197,1,114,0,92,177,92,20,26,134,228,154,152,96,23,136,127,210,228,76,73,72,136,119,8,2,245,198,235,223,254,248,120,100,131,70,19,102,28,160,8,204,20,171,201,240,56,52,17,145,22,146,219,138,149,104,228,172,140,76,53,193,186,8,171, +132,141,48,69,44,108,41,192,240,176,78,188,201,183,4,14,178,10,209,23,168,249,146,39,208,5,137,81,227,136,180,161,37,173,128,12,156,149,215,49,22,70,184,133,24,183,194,35,101,197,87,89,165,39,218,170,143,170,169,92,39,187,100,200,62,5,223,121,245,63, +125,242,167,126,236,115,255,5,148,18,22,97,137,4,21,8,14,196,179,33,171,180,72,88,210,14,247,50,154,45,158,51,90,117,184,37,70,68,44,92,29,170,70,138,69,152,240,59,53,85,3,161,18,178,241,174,86,226,87,246,173,106,227,75,245,17,235,178,105,90,61,57,101, +118,23,207,151,204,205,46,47,3,64,249,249,37,90,29,73,6,188,69,176,85,30,86,174,87,149,231,186,243,219,215,205,23,190,160,100,202,11,215,26,11,154,85,224,219,54,134,96,69,160,117,138,157,221,96,156,92,99,10,104,152,172,234,16,223,58,81,174,86,19,44,161, +217,47,17,32,40,183,161,52,78,80,48,32,10,88,214,226,125,17,253,18,184,87,240,102,161,122,243,206,157,199,97,110,157,7,72,36,226,33,92,152,207,146,109,148,165,118,237,217,72,103,227,194,165,117,224,146,32,16,20,83,140,148,196,36,12,64,33,31,196,151,136, +160,187,49,76,112,192,14,59,144,19,185,200,34,18,153,140,53,80,39,34,17,228,73,243,144,221,115,82,240,196,116,13,83,125,178,48,88,245,20,228,62,244,177,206,251,94,143,155,164,177,67,196,130,251,3,201,201,121,161,243,119,118,246,182,207,224,177,175,147, +229,40,133,19,101,161,58,222,164,144,222,3,240,33,153,102,242,22,107,146,76,6,235,178,152,136,112,134,197,210,80,219,1,91,128,34,184,160,168,167,187,7,165,203,145,216,229,52,26,182,164,28,212,141,62,214,92,96,43,136,122,233,37,101,23,23,89,162,116,222, +205,92,61,207,233,6,44,130,120,75,109,241,59,80,177,215,218,75,50,241,133,83,77,206,45,158,119,164,19,137,198,186,59,133,99,149,58,159,211,31,60,52,13,44,129,153,61,198,36,65,195,223,1,211,162,70,67,197,52,57,123,106,152,117,229,28,16,11,78,55,23,66, +66,11,57,94,48,190,49,81,149,45,149,10,48,0,29,119,74,252,29,174,204,45,212,32,72,154,91,22,114,35,211,130,245,84,107,6,69,179,29,178,12,14,148,31,27,105,2,51,127,42,118,179,39,105,224,51,61,56,0,215,155,133,4,38,138,160,105,118,17,241,109,45,4,192,10, +0,160,2,181,112,166,134,247,8,29,23,13,45,6,179,56,4,78,124,190,44,38,216,198,144,102,221,25,117,36,177,41,25,60,79,76,120,255,234,179,67,2,162,252,121,227,79,29,13,78,150,236,33,42,75,1,137,200,199,29,158,163,210,250,8,32,106,120,63,155,1,120,32,241, +164,194,10,72,49,44,100,191,210,56,30,232,239,221,194,155,1,183,176,253,146,211,114,228,13,128,140,57,251,138,89,30,8,85,222,247,198,164,75,96,109,242,85,223,3,21,123,173,245,131,45,47,175,172,81,197,15,159,40,57,88,8,117,110,33,241,175,121,163,176,132, +227,172,104,239,218,166,84,185,179,101,131,5,224,28,253,192,100,122,80,53,35,83,184,65,213,147,106,89,130,173,164,50,80,180,85,14,86,230,11,3,167,200,155,206,33,46,133,9,13,16,190,36,170,62,29,148,25,212,27,233,60,71,114,63,27,146,232,8,245,226,19,13, +53,115,34,176,243,167,2,11,18,74,53,129,47,74,124,16,98,99,18,155,120,126,160,154,115,129,226,99,181,25,171,206,254,68,205,158,60,27,168,99,139,137,157,154,169,185,197,165,182,123,252,227,83,182,86,199,243,102,35,55,59,31,227,92,38,206,215,221,80,192, +212,54,82,139,204,211,146,78,174,24,99,249,127,34,92,207,47,79,132,61,202,186,143,48,173,66,239,64,43,196,46,3,2,66,45,0,202,183,156,228,131,156,10,173,227,201,137,77,88,75,156,58,153,141,177,7,212,12,20,223,0,50,166,21,108,137,155,235,40,142,3,228,252, +71,98,27,22,183,177,251,125,115,83,74,150,36,31,203,212,29,93,232,123,162,98,191,52,47,56,239,98,47,41,95,114,177,174,152,92,231,99,212,216,209,203,165,227,172,65,245,168,175,129,29,212,247,61,253,213,155,116,160,43,77,133,29,195,240,136,153,225,249, +9,16,192,6,62,133,69,219,159,87,210,100,137,183,124,9,9,0,165,220,144,149,254,199,8,140,232,48,251,7,227,242,254,157,94,128,64,93,250,238,12,88,32,112,184,234,19,127,3,2,105,89,247,200,199,141,59,251,201,134,107,207,107,215,235,142,204,233,149,41,16, +233,124,63,36,148,96,166,211,26,96,83,29,214,47,33,56,137,245,210,227,109,154,111,34,106,157,212,99,222,7,171,80,119,115,243,117,85,111,198,204,132,51,243,64,144,6,249,196,242,62,110,82,159,96,36,177,231,147,0,19,111,230,212,67,127,235,152,244,40,155, +186,90,176,124,169,173,122,207,185,126,243,220,255,112,134,105,116,10,236,30,19,107,198,161,96,192,25,67,92,24,203,210,232,177,160,158,25,29,230,183,27,181,105,153,245,40,167,12,177,230,110,211,43,27,173,40,251,122,94,120,65,233,229,27,147,9,170,15,229, +248,174,249,88,152,98,153,47,196,159,180,189,188,42,67,31,105,138,39,147,78,152,113,104,116,173,219,229,140,133,193,148,227,120,156,158,32,185,62,204,110,221,17,17,79,180,149,181,63,94,83,51,164,166,144,0,201,133,83,22,255,169,30,42,44,105,24,191,128, +107,129,88,101,74,121,231,222,136,37,129,146,245,123,228,137,122,142,12,129,155,93,8,203,126,47,215,199,22,227,178,217,138,44,120,15,27,227,130,215,169,151,255,248,0,234,28,59,10,143,117,223,221,29,109,238,222,116,250,96,59,212,119,94,25,201,226,169, +213,16,10,225,228,82,25,162,88,98,87,23,129,240,143,229,132,107,34,110,152,108,66,85,162,174,144,238,17,113,170,32,51,45,9,7,43,89,158,67,141,117,149,80,189,82,20,117,130,53,109,124,232,102,205,195,83,205,94,34,72,21,8,223,87,119,28,61,24,202,82,25,162, +41,174,102,78,172,113,46,157,107,186,100,60,115,248,122,54,142,207,116,150,156,140,126,88,145,70,56,25,161,75,154,120,173,74,0,28,133,198,239,74,41,78,134,70,241,185,107,243,15,99,36,63,0,18,241,212,19,150,131,25,204,172,154,85,236,214,102,225,90,84, +13,195,10,145,217,225,124,165,209,145,247,45,203,201,212,132,92,128,147,160,152,188,138,97,131,42,168,136,189,239,30,33,49,111,0,251,29,75,113,65,210,209,24,101,89,169,239,223,29,6,237,99,16,214,94,25,236,222,203,21,81,51,178,35,186,179,219,87,175,188, +180,21,222,126,185,167,147,168,9,127,90,135,127,14,152,133,129,239,15,133,101,10,97,67,26,237,84,202,171,34,220,23,225,179,106,117,156,77,184,192,246,84,147,183,37,17,191,176,52,227,230,23,154,229,244,76,138,133,130,60,58,203,29,180,169,160,177,0,75, +145,168,155,228,103,37,18,154,196,180,62,81,32,62,150,235,180,168,132,137,43,225,164,179,143,185,91,246,231,178,201,90,249,39,54,26,90,202,68,34,70,89,219,206,50,25,32,231,18,166,120,31,255,221,124,213,191,95,77,38,191,221,145,9,171,52,197,136,93,205, +196,199,170,67,36,240,240,156,191,35,209,206,117,185,186,58,175,201,120,92,187,118,77,111,255,187,109,245,250,104,209,144,241,200,134,112,165,8,34,70,169,209,163,253,61,4,220,13,61,197,42,48,216,172,154,141,117,111,48,16,128,80,166,177,113,214,39,205, +35,137,199,67,99,146,144,165,61,100,13,217,202,17,148,108,192,192,205,82,58,20,137,255,217,120,238,76,183,255,234,47,1,252,164,160,14,217,138,133,133,224,157,20,180,83,159,250,88,189,4,214,50,221,221,92,109,222,238,5,125,56,117,104,119,208,185,175,3, +178,82,218,214,171,220,188,132,66,234,204,167,34,221,154,181,106,234,132,114,141,105,118,27,32,220,129,96,109,21,143,102,227,28,231,189,168,234,160,232,231,121,88,233,26,40,193,204,35,177,175,157,7,71,194,15,43,159,147,215,147,248,86,251,163,170,150, +19,95,92,126,226,233,191,249,47,4,81,133,154,145,19,139,122,28,139,98,164,63,179,204,74,233,3,40,216,208,27,75,243,116,6,139,166,19,248,44,214,25,196,140,157,234,174,94,203,212,48,100,135,96,211,114,234,91,35,244,165,148,73,177,104,57,83,227,187,200, +157,188,246,154,82,79,32,225,190,125,28,249,217,107,224,244,175,225,11,172,122,107,203,227,45,225,206,164,3,128,143,113,136,52,252,173,90,191,180,46,115,131,239,86,136,24,198,214,169,77,100,168,242,105,126,88,176,135,127,90,52,197,123,90,145,45,42,218, +35,157,237,14,85,152,134,240,189,126,44,64,238,38,154,235,107,205,242,137,17,8,25,210,73,134,0,9,106,235,184,178,91,83,105,127,167,151,181,171,158,11,118,152,3,209,34,127,80,15,245,51,159,157,26,111,111,13,202,63,61,232,167,79,62,61,95,6,113,97,242,113, +238,158,253,185,217,242,205,155,125,125,247,86,102,70,29,154,98,200,22,68,87,119,119,172,206,124,178,129,240,39,151,115,141,48,73,223,189,179,171,154,0,73,56,181,170,57,5,237,30,128,131,31,56,209,90,118,46,68,65,136,68,2,8,17,248,151,40,14,52,210,200, +0,101,197,36,162,209,82,140,33,5,9,94,89,141,136,222,223,8,77,178,35,109,36,144,145,3,69,72,20,2,250,137,153,2,44,38,152,251,180,14,112,201,147,194,26,174,42,60,177,148,179,19,127,204,120,50,129,187,233,31,176,192,173,180,201,188,214,123,247,145,247, +74,253,60,229,206,204,29,176,84,75,238,233,68,153,221,57,73,178,203,123,32,23,251,54,125,125,23,83,44,97,142,162,96,159,51,87,94,184,162,57,228,146,35,226,38,225,78,7,4,5,7,66,178,155,142,163,94,39,125,158,25,190,80,218,26,26,65,118,96,114,66,124,89, +178,78,89,101,154,16,253,176,103,70,250,86,39,203,137,53,246,208,24,241,177,244,139,236,50,174,183,234,111,228,50,212,193,10,171,71,147,44,28,45,242,211,240,173,44,70,117,91,111,60,80,223,253,78,47,120,233,107,35,16,227,129,233,220,199,119,219,207,224, +119,67,213,152,179,174,49,171,221,153,31,139,221,147,159,106,217,209,176,112,48,171,248,252,12,90,222,145,159,255,96,19,208,210,147,70,62,3,135,108,18,179,56,240,12,46,7,189,41,194,5,83,53,51,211,176,52,233,82,230,98,124,100,35,101,53,76,227,73,238,221, +30,161,27,57,170,47,221,57,106,6,199,165,132,122,126,100,2,221,143,160,39,254,86,111,138,7,213,52,56,158,39,230,42,83,210,234,249,64,58,242,212,219,14,118,90,50,249,194,112,231,165,177,8,212,62,143,116,42,139,249,39,157,119,71,159,255,46,26,171,75,159, +2,146,222,16,25,36,66,240,196,97,209,119,119,110,42,86,166,63,232,69,138,92,113,13,39,133,29,117,17,242,135,179,69,0,31,103,56,187,208,56,176,60,174,145,88,152,51,207,160,225,103,4,120,114,2,244,99,11,33,216,217,141,200,66,148,128,21,221,200,87,2,103, +64,206,56,35,231,158,90,122,243,230,75,91,42,183,25,249,93,81,20,118,74,117,182,199,193,181,127,179,149,196,205,18,198,182,166,178,33,146,34,211,145,25,247,67,181,187,73,64,194,100,123,224,78,156,118,234,141,191,28,155,151,254,75,174,23,206,25,55,61, +47,240,84,189,252,103,119,129,130,19,38,11,244,212,92,228,198,163,28,160,37,86,52,187,89,158,187,44,183,38,69,38,136,51,50,145,88,208,160,110,21,153,47,196,185,136,163,10,144,34,101,101,114,125,233,189,39,188,39,145,142,15,52,106,105,251,22,201,175,18, +217,72,150,36,203,130,207,10,23,224,23,150,65,14,95,227,115,191,165,120,130,200,66,190,50,36,133,52,7,5,76,255,181,135,180,221,220,12,206,87,115,74,239,14,253,140,40,86,129,222,124,61,47,31,93,90,82,7,157,135,74,9,0,197,199,57,254,240,176,57,235,93,53, +182,18,175,56,140,138,160,48,236,139,229,24,116,230,98,121,144,82,100,171,228,96,228,87,21,187,196,178,251,48,175,99,166,236,252,12,194,160,173,100,228,29,181,86,26,89,232,64,97,205,160,53,48,195,57,137,97,48,75,185,180,181,197,236,44,15,73,43,150,210, +113,254,232,169,199,239,252,210,223,251,88,191,0,155,193,162,47,209,14,229,233,90,24,55,53,216,133,223,108,180,104,110,69,231,89,55,204,176,164,213,70,178,29,73,131,122,43,64,172,77,183,31,186,205,191,208,250,245,63,203,216,3,105,63,189,122,198,206,28, +111,112,29,185,189,7,125,197,194,52,190,7,66,42,55,236,102,122,170,221,112,68,201,163,126,41,35,15,96,142,229,241,36,9,29,27,167,39,220,49,227,111,17,163,164,114,220,195,226,122,220,62,54,123,242,214,91,78,46,62,44,145,110,78,45,137,0,158,7,186,163,32, +228,176,139,76,55,176,112,105,134,249,220,225,112,40,67,61,79,144,255,199,226,202,239,251,153,201,204,201,238,130,190,101,197,138,170,246,41,224,177,176,64,83,124,69,46,149,80,223,210,252,252,142,180,221,209,131,233,190,11,184,252,218,231,148,204,220, +61,57,119,214,221,125,121,100,57,58,110,62,247,171,41,169,202,98,216,169,206,9,101,204,113,66,216,50,205,140,211,84,56,4,139,168,152,4,5,81,126,0,130,130,166,215,114,30,4,87,117,232,79,128,230,42,7,18,250,206,55,212,159,127,230,103,207,14,142,47,197, +101,175,63,228,180,88,35,221,141,192,21,123,59,185,25,13,56,77,205,232,241,168,52,121,86,170,28,177,103,218,2,163,217,45,220,160,99,221,253,91,142,8,216,205,46,202,76,9,149,247,83,245,103,95,237,234,91,27,251,48,149,218,62,118,102,202,206,30,111,178, +87,199,189,241,93,36,63,225,25,219,51,13,87,107,72,135,58,168,202,132,229,145,172,86,33,34,102,18,223,199,197,161,47,105,100,77,84,224,29,45,0,150,58,140,99,225,214,237,169,197,79,110,168,192,215,198,193,247,58,230,240,249,27,65,154,177,253,140,232,215, +165,184,29,192,45,213,33,212,178,24,187,26,77,48,222,161,141,84,34,147,237,156,162,147,63,168,162,136,233,135,178,224,136,66,22,142,239,244,110,234,197,206,134,230,236,103,191,83,200,97,93,140,59,90,204,246,118,74,81,254,210,102,31,14,87,69,240,203,10, +10,86,40,54,101,36,1,180,118,232,125,44,87,211,248,77,132,54,112,14,204,252,239,38,3,157,229,67,196,138,138,116,177,28,156,112,22,147,94,137,165,80,76,67,17,157,192,126,10,87,102,44,21,82,81,36,117,247,240,182,251,59,106,112,176,151,221,252,133,191,253, +177,193,96,212,53,96,202,57,83,2,75,221,146,71,23,45,161,214,177,90,127,212,43,244,153,103,210,188,214,44,16,224,143,85,119,191,52,221,29,163,16,187,154,153,249,84,172,36,251,92,35,83,71,178,60,214,243,139,45,196,216,214,229,120,207,108,84,234,227,143, +76,185,214,108,82,146,170,6,80,2,216,49,228,151,113,61,100,39,128,98,69,108,150,177,151,199,151,204,16,165,211,41,151,62,240,145,170,69,41,94,177,4,120,245,219,11,199,151,31,16,241,149,130,252,224,106,114,154,100,229,7,149,112,120,73,32,49,177,0,228, +156,221,184,48,195,57,194,6,224,56,95,149,136,68,246,222,174,159,174,122,84,174,180,144,229,40,183,76,219,125,234,51,161,84,81,80,30,28,193,191,182,118,69,189,125,251,151,119,8,118,114,248,209,4,213,4,176,201,130,56,239,255,20,205,212,144,152,222,254, +179,210,18,60,49,31,139,111,43,218,219,174,215,165,61,144,215,169,98,15,223,113,12,18,212,89,206,242,150,230,96,134,0,156,235,29,73,21,160,229,121,147,31,142,53,109,136,250,147,185,155,79,127,106,161,31,215,17,160,176,247,20,116,35,56,98,203,236,11,223, +24,150,21,39,29,44,17,48,200,237,151,251,1,53,89,194,149,204,83,6,69,102,212,247,94,226,91,70,162,85,35,152,182,39,158,105,148,236,18,34,159,154,164,145,59,190,56,85,146,39,102,133,69,90,143,221,104,0,158,185,95,232,153,227,45,88,29,198,193,129,175,84, +167,78,179,22,86,25,73,40,56,207,163,72,178,65,126,167,242,74,123,106,233,227,255,78,123,130,177,234,203,44,196,244,102,85,236,90,64,208,108,249,24,225,75,231,240,175,178,232,225,106,24,191,114,62,20,85,129,213,49,176,252,142,147,238,51,153,199,184,39, +123,17,112,23,146,169,70,33,173,30,183,111,12,228,181,91,139,93,183,177,113,223,110,188,176,230,222,77,134,239,64,197,82,26,115,137,83,175,151,245,218,198,154,155,200,149,53,79,127,12,100,204,173,73,88,49,71,238,178,9,165,72,145,51,100,182,159,249,216, +239,237,116,221,241,70,67,166,132,242,139,134,100,80,226,216,62,100,159,240,67,234,145,178,21,176,96,175,105,18,49,103,73,120,33,165,71,140,89,221,215,191,98,255,243,221,205,78,254,228,39,142,229,206,20,82,227,59,98,25,61,158,52,198,95,152,96,77,33,15, +7,133,218,187,95,234,206,22,117,46,212,39,159,8,93,92,131,73,238,102,212,54,39,133,106,21,111,255,157,255,210,15,16,135,227,179,52,5,135,69,164,44,242,222,244,213,12,174,97,138,99,240,198,145,8,158,32,41,138,56,217,175,148,248,38,36,157,84,37,144,116, +168,30,206,35,117,135,103,209,157,126,244,83,55,172,244,108,6,126,97,171,192,74,107,60,167,108,26,78,111,115,76,230,192,112,101,30,80,226,50,30,226,87,100,113,201,57,171,156,207,200,215,177,10,37,141,56,213,124,95,117,183,219,246,17,88,197,215,254,242, +142,163,182,114,19,12,30,135,179,142,57,3,106,237,138,204,129,122,95,193,42,53,169,82,188,164,54,32,84,58,216,43,85,227,206,188,90,182,28,77,160,212,105,197,217,247,253,150,231,47,17,131,218,52,225,96,72,229,154,200,4,112,84,123,10,111,79,142,140,62, +118,50,137,84,0,20,199,230,100,136,244,51,146,78,57,126,112,46,241,155,43,115,200,24,94,56,99,77,174,43,187,187,170,127,231,118,240,141,24,203,247,220,143,207,64,163,193,81,35,22,165,112,109,89,50,174,199,253,77,124,50,66,6,22,163,67,208,236,193,201, +199,72,1,20,99,112,182,120,254,48,151,148,155,173,168,191,131,123,90,125,243,247,246,195,24,200,185,209,74,132,59,138,18,18,159,218,215,36,67,154,245,70,84,208,244,51,231,75,222,24,0,202,213,235,169,36,31,88,103,204,145,21,82,7,165,125,242,215,85,92, +241,220,204,194,58,204,240,125,56,110,58,12,164,225,56,26,202,9,50,6,211,101,249,187,83,114,188,16,46,175,211,61,101,35,111,209,242,138,122,37,232,36,235,228,147,236,100,157,160,189,96,165,182,246,114,228,93,23,21,233,68,238,224,69,51,44,253,83,56,174, +254,246,107,150,61,178,151,47,175,77,24,237,119,23,236,164,152,109,34,220,201,154,100,175,8,167,196,112,91,176,157,123,202,189,92,149,158,14,192,23,79,230,13,243,203,180,90,126,92,59,137,108,114,159,181,90,170,250,102,88,114,142,11,231,17,106,153,159, +228,57,99,250,34,250,90,112,199,118,66,152,27,153,89,88,138,146,221,250,118,251,63,252,212,47,60,241,224,137,167,155,195,31,255,185,153,114,52,238,153,71,159,108,113,6,177,59,177,148,210,40,154,159,127,225,248,120,250,68,110,167,216,87,26,23,238,238, +237,62,75,38,220,83,207,214,240,118,88,105,48,122,4,50,210,36,43,189,57,161,68,40,253,222,144,168,216,177,207,149,157,40,32,230,25,214,216,138,77,82,53,152,230,102,171,102,57,231,105,52,202,125,245,132,243,237,61,2,171,39,25,29,175,154,238,217,159,248, +141,127,1,7,108,169,216,236,192,195,50,229,228,68,241,173,92,208,182,192,50,238,59,73,245,150,50,238,143,24,1,222,41,73,68,184,52,199,131,65,95,222,142,209,5,185,247,169,169,41,228,117,58,170,47,181,219,165,19,58,177,58,22,207,212,244,141,139,219,110, +229,226,188,104,108,21,199,190,127,18,96,82,87,236,181,245,138,97,93,49,111,94,127,219,243,66,32,99,22,140,15,111,67,45,246,246,20,171,20,185,237,9,135,51,179,174,152,166,165,200,135,142,136,143,25,12,59,32,65,65,225,210,191,112,18,90,40,102,139,185, +128,128,195,94,168,92,25,139,230,99,206,217,41,247,59,106,144,68,115,87,63,187,250,200,193,103,127,254,120,231,103,254,246,241,97,86,244,213,241,83,169,105,76,27,176,70,200,114,61,232,25,100,84,130,205,215,187,230,212,185,154,8,248,96,167,48,183,55,70, +38,105,24,175,177,136,47,200,7,28,63,29,186,159,254,187,83,57,229,211,108,165,212,60,1,73,5,139,122,141,31,169,3,112,100,64,129,147,59,164,0,164,135,135,113,108,16,50,171,100,164,78,214,190,109,66,203,210,210,185,47,45,30,95,185,199,193,69,88,42,150, +130,231,107,144,71,144,1,96,145,79,233,200,115,9,154,194,74,99,195,58,180,24,105,29,182,83,22,249,192,53,109,77,218,41,253,78,50,109,117,176,107,173,236,53,128,24,182,124,16,153,25,184,192,221,102,230,56,103,145,26,75,161,178,60,70,186,218,47,168,170, +15,229,125,242,177,106,178,14,69,178,107,106,123,89,57,90,227,153,25,222,199,88,246,166,42,122,75,86,45,46,136,198,242,201,117,142,88,24,182,196,140,112,115,4,99,185,218,113,6,216,251,105,19,152,106,14,147,28,121,141,133,95,30,144,65,35,242,97,117,74, +1,79,148,59,97,111,217,228,22,34,224,45,137,59,0,164,190,242,127,216,255,128,240,102,115,231,65,55,124,252,169,153,209,99,79,213,179,227,75,193,232,205,239,117,130,83,31,107,23,223,123,237,129,186,245,23,251,154,118,254,213,63,31,152,189,123,165,196, +157,68,188,124,199,99,143,66,19,27,165,93,124,82,149,237,121,144,122,236,174,33,231,228,123,184,164,246,1,104,152,69,133,242,59,216,169,2,42,20,190,59,211,221,253,161,33,10,54,50,131,79,58,222,97,162,15,119,40,19,83,150,36,201,253,95,252,185,127,114, +153,211,193,74,142,118,204,16,193,224,187,23,128,212,163,33,121,96,63,190,32,22,215,227,164,6,154,11,187,156,196,175,169,215,86,14,182,238,87,53,10,164,18,185,119,144,140,9,74,172,107,130,8,34,88,229,99,159,174,146,48,159,251,245,243,238,57,234,30,107, +138,47,42,67,18,201,39,153,222,39,31,91,29,220,49,210,49,29,196,237,67,86,252,224,46,203,116,209,28,204,49,133,187,181,185,165,56,7,240,216,83,76,5,207,168,244,56,136,10,58,253,102,245,198,53,156,142,57,41,165,64,230,134,167,57,1,87,155,41,254,7,22,86, +102,54,16,84,16,41,58,41,122,161,153,102,23,11,135,117,200,92,60,72,66,217,255,244,175,244,63,59,249,200,244,254,55,255,224,181,244,211,171,143,13,166,142,199,250,147,63,51,15,100,44,173,3,1,173,44,71,188,12,123,5,88,40,163,23,158,104,232,153,71,180, +157,62,25,150,143,60,97,178,95,250,135,179,227,103,126,166,53,126,226,153,250,72,134,23,248,34,23,235,219,239,164,195,219,19,130,94,99,129,60,71,38,12,195,128,220,49,231,70,136,9,102,55,78,233,59,61,84,197,249,3,156,245,87,127,246,31,93,146,57,107,156, +66,195,248,21,32,48,144,150,65,44,152,20,177,124,148,75,238,121,144,201,0,18,155,143,199,150,86,107,128,248,149,183,9,156,136,136,155,22,217,164,168,46,231,206,78,7,38,141,219,110,178,107,23,143,62,92,31,39,182,245,4,52,45,203,125,178,159,145,239,214, +176,27,43,151,222,129,140,223,71,99,181,227,74,152,164,134,88,56,229,31,218,80,159,226,182,157,217,216,246,15,182,220,95,108,149,126,254,61,130,174,233,150,181,61,187,111,243,168,42,213,232,247,44,145,113,81,141,129,5,107,239,252,138,205,4,92,4,9,23, +89,104,15,227,60,14,48,200,217,208,195,47,134,208,7,198,233,205,87,237,131,205,215,210,127,245,27,127,255,199,14,192,0,142,62,241,236,137,131,56,181,57,78,182,89,254,212,137,209,227,207,180,237,184,24,193,103,229,156,25,130,19,12,12,130,219,59,247,14, +212,75,223,232,196,131,46,200,201,81,81,133,232,18,127,86,185,243,10,250,248,8,73,232,36,222,158,158,74,139,40,13,114,206,11,227,217,25,15,225,25,160,185,0,83,218,151,81,248,89,7,31,95,126,238,197,165,211,43,247,56,120,196,201,228,34,203,161,185,12,0, +44,126,1,120,202,208,50,196,97,49,27,149,30,230,216,242,91,91,51,246,85,116,174,242,175,135,91,197,244,21,39,148,231,131,122,57,134,143,229,57,101,212,193,237,93,56,200,155,109,53,156,210,118,102,243,8,117,40,131,193,31,110,155,118,84,128,239,40,102, +155,104,44,7,120,61,7,255,250,121,229,55,24,228,177,172,188,49,230,80,169,229,159,60,29,220,121,67,57,217,196,243,110,105,103,231,248,12,4,127,182,105,163,121,21,244,190,107,225,131,235,102,204,68,120,134,132,65,1,140,28,112,216,4,204,173,97,235,131, +15,127,66,233,154,16,194,208,90,153,166,71,118,30,56,185,224,28,15,58,96,101,214,127,87,125,243,111,53,131,185,197,199,213,47,242,177,229,79,28,63,128,6,153,238,190,14,151,206,70,249,99,103,27,193,141,63,122,160,78,158,154,51,156,20,53,183,128,147,88, +102,201,226,82,35,99,189,20,66,15,132,46,19,58,213,74,201,158,160,219,170,82,72,85,143,176,1,90,84,186,244,247,3,89,195,233,130,182,236,33,91,8,191,9,70,77,38,26,44,45,126,236,202,103,62,243,194,31,225,59,151,196,253,48,216,136,145,67,177,60,196,77,156, +17,23,196,88,161,220,209,35,8,69,91,99,164,226,56,188,11,24,194,54,27,49,199,2,177,195,0,25,159,132,46,205,206,5,13,55,96,34,5,120,100,26,41,198,238,97,14,27,49,43,190,252,28,252,107,242,245,101,247,229,150,114,203,29,169,30,85,208,212,74,192,23,100, +47,188,163,204,225,59,226,159,106,93,11,239,72,225,50,125,183,182,182,172,159,159,57,99,252,86,160,62,225,190,251,157,80,183,231,125,114,156,157,237,220,221,202,100,136,89,186,48,140,117,19,244,238,194,71,44,14,12,200,163,32,75,97,228,216,70,105,101, +102,169,225,222,145,108,196,42,199,38,224,92,96,91,74,31,158,225,140,68,68,185,17,59,194,117,213,250,207,6,45,214,159,114,74,204,223,252,251,238,151,23,31,83,191,180,189,213,13,103,143,181,237,160,7,181,96,47,12,22,193,238,118,86,251,246,215,55,205,210, +99,243,172,6,181,51,199,146,114,136,16,233,165,111,190,25,159,92,154,178,199,142,213,114,254,112,210,144,32,230,153,205,81,99,240,119,249,184,64,218,142,172,85,207,140,179,28,73,128,161,25,141,134,122,127,175,167,239,221,223,11,7,253,33,140,72,174,251, +253,158,30,102,3,189,180,244,196,151,254,214,207,255,119,255,39,160,125,206,173,36,0,22,10,21,8,113,198,73,26,50,34,40,14,252,44,10,55,176,185,184,155,0,9,85,196,98,22,86,128,105,42,90,177,184,30,151,12,113,91,160,222,68,37,108,221,238,13,240,107,96, +245,88,196,54,217,121,43,40,115,75,98,66,245,79,219,205,25,229,254,201,243,74,223,223,240,233,186,85,172,210,23,110,248,25,33,111,223,116,233,125,135,100,122,213,189,160,56,170,224,106,231,53,187,176,57,172,182,47,203,220,99,171,167,213,217,149,64,115, +216,52,167,135,143,122,126,107,176,46,190,212,96,127,223,54,79,42,153,235,31,135,125,97,87,56,33,133,219,160,48,248,176,58,42,57,112,99,98,162,100,78,82,226,205,49,68,110,153,125,167,121,147,41,222,5,59,43,77,206,209,34,255,241,159,155,223,123,233,143, +244,255,142,16,105,112,227,79,239,196,32,40,130,157,187,93,93,175,39,69,163,25,151,208,48,253,205,107,111,70,49,8,217,233,185,52,63,54,95,207,127,230,23,206,14,78,61,62,61,70,76,76,127,41,168,213,149,71,42,150,170,58,23,87,217,233,2,153,239,97,159,131, +41,116,152,36,1,83,126,64,248,44,73,213,131,143,157,251,204,139,191,184,250,79,254,121,105,240,53,149,76,0,43,227,136,248,0,43,21,84,24,200,8,118,110,243,201,150,99,145,101,76,125,24,217,132,99,251,0,22,137,134,217,210,193,105,228,132,100,51,88,150,28, +49,79,66,103,192,13,154,202,93,203,52,104,3,108,19,195,73,214,150,77,102,80,72,73,12,66,147,63,128,182,210,130,190,120,195,215,124,115,114,30,133,250,246,68,159,126,31,193,138,208,185,71,221,252,198,186,228,101,165,35,96,29,166,121,190,90,16,28,7,116, +11,127,207,37,230,209,233,72,54,51,72,143,71,33,39,136,7,205,1,137,82,105,134,70,48,104,178,52,144,73,161,82,150,150,225,15,206,69,26,233,96,8,173,149,84,31,199,1,21,126,28,144,104,107,200,105,180,58,200,11,63,73,70,6,99,114,58,27,212,123,233,81,117, +236,39,126,97,252,223,226,29,103,254,243,191,127,181,245,179,127,115,121,248,250,95,110,71,227,161,142,79,157,158,30,246,186,67,89,74,33,12,10,17,50,247,35,28,143,139,160,0,129,145,81,99,199,0,53,72,186,83,99,113,17,20,60,236,143,244,96,56,50,221,131, +190,217,219,239,27,54,151,245,122,131,96,231,193,1,210,60,225,173,103,63,253,155,255,211,194,137,115,119,233,83,177,64,65,162,154,130,220,18,115,84,16,106,33,190,148,166,56,176,156,23,40,99,128,56,215,120,50,14,40,131,224,240,79,217,108,112,141,68,57, +205,50,181,149,130,237,67,239,167,27,13,219,117,15,181,149,137,245,20,218,58,25,76,77,42,209,239,21,112,93,205,92,61,111,253,78,217,111,157,91,172,212,195,73,168,223,87,176,50,255,191,106,126,230,155,93,239,40,35,59,117,28,153,243,196,61,220,90,8,125, +12,55,212,69,182,167,41,237,221,198,32,61,35,131,51,58,57,123,36,217,225,158,5,118,92,147,105,167,20,50,59,220,35,228,212,56,215,63,148,57,197,176,82,69,44,147,69,33,96,19,165,58,146,13,27,112,59,147,177,74,90,182,134,4,90,14,56,135,248,231,127,51,255, +229,147,167,130,223,120,233,155,91,181,211,79,206,14,175,254,203,239,182,143,157,104,150,244,93,155,223,235,199,51,115,53,199,166,132,246,108,152,167,181,160,40,104,24,45,83,140,16,44,114,197,200,201,178,248,92,81,168,125,228,33,59,187,189,112,52,28, +81,160,102,119,183,27,116,187,195,241,212,236,201,175,124,246,217,127,112,185,0,181,201,172,27,146,4,101,14,134,44,231,244,19,86,248,192,193,112,11,32,167,189,96,97,156,11,114,226,36,249,145,170,203,45,199,168,146,128,32,103,38,93,237,68,200,214,198, +38,17,94,84,70,1,69,13,188,184,83,6,237,150,109,128,164,217,191,143,144,7,160,137,109,177,164,111,251,48,197,221,123,133,123,233,209,125,123,94,38,186,251,190,157,13,191,15,207,97,145,255,209,180,93,160,222,199,12,139,198,114,224,156,79,197,170,109,0, +135,151,90,74,247,106,243,220,130,69,205,206,105,117,247,65,160,27,179,165,235,182,88,70,226,41,178,144,197,224,248,91,131,42,62,216,142,85,138,191,86,250,118,66,53,42,70,50,176,35,137,164,251,140,204,189,98,123,59,126,180,142,25,223,24,63,89,141,212, +77,204,118,97,152,175,82,200,120,91,133,224,36,169,100,18,184,123,253,21,243,221,7,119,213,31,157,121,42,53,205,134,62,241,200,227,109,38,95,57,215,31,80,186,31,238,220,129,239,220,181,102,235,141,126,52,26,23,81,41,201,97,82,195,8,149,153,53,2,253,67, +130,98,156,145,127,206,161,181,99,13,97,154,253,206,40,139,107,199,254,237,249,207,254,221,255,249,212,163,159,250,22,150,17,33,113,193,33,174,185,165,95,117,69,28,115,103,82,102,222,180,184,140,24,244,164,21,70,49,18,194,137,154,138,149,90,214,146,4, +190,133,144,153,233,185,132,6,172,148,209,243,141,182,157,117,145,240,143,128,140,182,57,155,168,238,192,218,221,7,120,115,112,218,181,94,193,169,229,106,80,95,178,167,146,7,234,102,150,185,115,181,66,109,233,174,8,111,126,251,180,250,60,204,245,197, +175,94,124,135,80,223,83,99,143,78,142,193,159,163,213,112,138,229,24,95,252,237,117,63,67,183,81,55,143,157,198,157,183,16,171,157,110,132,100,148,203,157,93,163,118,65,90,28,15,67,206,46,218,222,237,233,198,84,203,112,94,175,29,105,115,20,72,149,3, +14,83,228,222,54,204,133,27,153,77,204,217,191,210,206,95,176,156,168,148,25,79,94,87,53,119,109,13,57,225,180,100,241,47,83,166,162,185,161,12,34,57,126,178,60,246,200,41,251,196,241,197,114,181,223,207,158,184,125,179,147,180,90,156,128,230,184,209, +160,137,107,44,56,71,94,126,4,40,36,121,92,111,138,123,7,67,61,28,229,65,247,96,96,250,131,242,102,191,31,188,252,232,169,159,248,247,58,108,245,184,0,180,51,190,29,203,72,20,43,116,33,181,150,108,133,83,30,7,8,80,146,113,124,0,77,98,146,173,220,175, +57,184,139,205,177,113,194,65,108,5,177,6,76,181,96,238,52,76,203,190,204,81,108,202,152,91,96,65,217,85,139,59,106,249,237,74,89,109,183,96,121,114,23,190,115,186,84,191,69,77,93,119,236,213,17,30,191,58,30,214,19,127,0,193,78,132,203,216,232,242,229, +11,178,37,8,39,180,77,70,189,113,66,219,12,16,178,236,46,121,83,41,153,89,188,147,24,22,145,207,226,244,203,230,185,144,213,248,101,231,134,237,126,192,13,121,57,73,134,99,204,250,244,183,12,211,169,153,99,109,234,49,167,182,165,156,120,25,112,154,56, +7,80,155,16,161,108,1,108,236,252,54,44,134,169,106,153,232,13,81,114,106,91,201,113,140,37,19,215,70,8,65,25,115,106,57,160,144,13,65,230,196,241,242,216,177,133,236,108,154,22,167,16,27,47,34,174,154,3,19,112,140,177,40,16,49,209,240,16,153,149,97, +54,214,119,32,244,206,221,173,209,157,246,244,199,190,85,218,168,207,40,140,224,71,102,29,195,219,9,215,76,237,35,236,117,156,251,231,56,130,149,255,122,211,43,123,71,100,200,62,32,238,197,117,206,46,78,234,145,29,2,243,114,102,113,100,98,248,221,145, +203,108,132,156,32,132,13,206,152,66,37,67,151,196,156,198,182,111,79,204,183,220,206,27,120,218,148,247,173,172,33,238,87,19,217,56,249,116,25,196,144,186,177,44,11,130,100,196,100,151,50,47,217,138,51,248,48,26,235,181,214,39,5,124,145,219,154,34,11, +181,9,193,46,118,106,154,51,41,238,252,228,157,224,224,219,75,174,81,222,147,125,235,30,175,178,62,97,43,12,6,247,216,171,194,105,123,125,51,222,243,181,199,65,58,14,6,84,208,146,27,254,114,7,20,68,128,131,20,154,155,5,28,27,79,225,234,58,195,30,101, +198,102,20,154,113,196,25,13,80,104,14,204,242,115,137,11,6,22,108,191,148,73,252,44,192,16,215,5,50,40,48,227,65,233,219,42,76,88,117,25,148,210,115,75,196,93,142,113,27,217,29,153,166,38,191,147,157,83,126,32,181,140,96,151,137,48,74,82,169,36,245, +153,115,147,183,87,172,125,40,132,246,140,130,64,72,7,86,186,200,76,79,50,103,67,121,71,96,110,14,31,10,189,31,141,8,150,98,176,55,174,36,9,1,170,144,248,222,202,222,180,81,207,49,137,211,9,138,178,6,9,6,45,191,69,26,35,11,18,18,51,141,5,183,209,185, +229,100,134,34,184,97,169,35,86,94,176,50,93,156,237,173,27,126,87,143,247,26,107,251,1,246,221,185,192,118,15,189,86,109,231,204,253,195,63,183,120,222,169,149,101,203,81,153,225,235,75,150,25,159,77,100,248,159,196,151,19,52,7,226,122,124,199,185,228, +164,236,155,98,123,251,12,225,248,227,234,0,136,32,224,1,3,57,113,27,92,168,229,138,14,103,240,131,106,202,19,228,149,25,235,65,11,202,177,245,160,36,150,250,9,49,117,50,140,210,151,196,177,136,162,40,93,238,159,163,116,142,44,127,22,70,176,231,8,148, +113,98,11,46,1,60,63,199,58,202,40,28,147,24,208,178,220,143,73,58,28,51,129,116,160,106,225,28,16,223,24,192,28,144,13,220,204,39,144,221,3,64,28,69,192,64,65,30,38,178,77,142,196,169,142,251,171,197,126,32,166,180,72,86,154,10,68,84,214,17,167,38,17, +175,199,28,240,227,202,134,79,162,235,36,181,113,85,37,81,140,123,46,223,129,37,203,107,197,52,123,158,170,100,58,133,202,115,71,250,144,123,22,81,168,68,195,11,191,59,244,155,25,174,109,4,19,13,101,42,149,66,229,118,164,239,181,113,225,187,10,246,136, +244,133,178,90,126,225,194,100,24,163,32,99,217,81,239,240,184,41,151,169,42,1,79,136,222,170,227,139,131,192,230,222,50,227,164,227,82,14,27,153,117,194,133,154,58,80,96,43,41,115,252,224,81,25,23,28,82,11,54,176,28,244,108,217,47,163,34,199,137,225, +64,73,238,80,133,245,47,179,128,93,229,183,104,250,24,39,241,164,210,215,69,1,5,204,19,108,184,83,128,159,68,234,119,201,1,104,133,224,32,68,19,198,204,211,148,220,77,2,177,37,135,175,113,56,30,135,94,0,189,114,84,50,132,136,215,4,68,185,16,174,204,108, +146,247,132,55,39,189,137,207,204,71,54,199,155,9,241,224,98,152,224,56,244,38,152,161,12,22,32,129,82,2,35,76,36,156,179,114,36,30,50,84,199,251,12,176,128,193,58,236,245,75,110,50,236,71,198,91,59,85,231,206,209,7,160,43,59,110,63,47,236,100,35,97, +142,216,107,128,27,8,79,42,203,237,89,24,226,108,33,69,199,105,2,243,27,80,164,21,14,45,189,34,5,134,146,92,95,243,187,110,191,219,102,15,239,233,99,39,199,145,129,94,147,50,71,181,190,174,12,119,201,146,201,170,243,27,230,112,111,128,91,8,170,127,60, +212,201,84,18,164,0,70,108,1,228,152,219,225,248,64,239,171,41,21,129,145,138,65,90,112,47,245,58,125,48,66,160,188,59,210,41,64,88,183,231,183,105,73,140,223,74,52,21,16,149,115,223,142,128,251,51,112,62,20,25,42,191,73,18,235,176,57,70,167,240,211, +200,149,128,45,69,63,44,147,90,170,158,25,154,107,139,36,60,169,29,22,163,179,130,25,22,219,9,23,205,22,199,66,230,58,65,237,124,141,179,146,45,69,67,249,141,188,95,138,238,10,154,82,37,37,61,218,249,125,120,72,127,142,57,77,220,111,178,84,112,71,203, +72,123,208,45,219,146,194,10,153,196,19,255,76,201,53,210,148,113,150,101,113,207,96,159,17,112,105,199,200,136,49,43,198,193,211,212,86,126,38,53,246,1,20,35,44,150,124,161,224,88,73,120,115,189,74,154,94,189,138,196,250,202,26,0,212,21,61,41,128,184, +114,101,195,85,116,226,7,3,79,71,5,203,189,1,86,170,157,35,232,183,95,168,70,221,174,172,172,4,100,163,126,122,241,188,254,3,144,211,91,139,183,130,229,246,105,173,222,0,159,28,220,51,73,51,10,118,119,118,21,123,124,194,162,39,147,109,185,83,35,243,181, +245,54,155,162,125,55,188,205,178,144,229,33,54,203,67,132,150,166,77,27,25,177,167,37,211,17,236,231,216,112,7,35,191,3,22,183,37,147,239,69,33,82,239,240,140,195,93,178,232,41,33,204,80,249,25,136,50,10,12,241,18,242,163,213,102,74,190,81,138,85,145, +44,84,15,89,246,10,53,103,35,114,198,68,127,41,37,200,72,218,251,205,149,40,68,230,141,89,237,17,232,90,201,60,114,81,181,40,112,202,26,93,70,61,173,118,203,226,68,161,216,147,251,101,48,196,123,197,133,248,86,241,171,48,232,19,161,54,154,118,60,4,201, +31,239,186,189,162,45,2,132,157,176,76,205,29,198,172,48,195,201,248,172,60,54,211,81,66,70,92,169,246,111,223,184,162,100,148,4,229,80,117,35,188,235,134,74,223,87,176,228,139,57,188,130,233,59,170,232,242,141,109,55,191,50,175,183,217,34,143,15,34, +82,230,198,74,91,220,133,242,103,150,245,201,194,155,247,141,151,183,244,236,98,18,14,191,231,171,44,184,7,79,191,209,15,56,97,38,60,30,6,227,142,7,83,20,50,146,201,102,176,59,54,169,241,91,138,74,19,112,201,82,21,165,71,121,206,145,139,38,229,214,39, +73,108,74,74,62,16,108,20,60,220,254,140,90,92,104,207,108,17,52,1,253,112,70,60,59,198,57,41,205,248,153,23,178,136,140,159,129,33,101,58,80,73,47,68,144,90,145,108,19,226,2,169,122,200,165,0,77,230,80,107,238,138,37,101,43,54,150,253,0,168,217,99,75, +74,148,59,85,50,137,49,40,148,207,216,48,100,197,165,59,142,203,169,208,239,82,41,123,203,130,228,79,166,113,123,80,148,237,118,91,61,128,139,98,246,134,128,105,183,218,199,189,221,60,225,226,91,183,68,64,221,183,109,20,252,91,51,176,148,147,94,229,35, +131,167,43,7,251,174,197,108,223,87,176,149,214,26,223,236,115,65,85,66,118,156,47,68,32,69,147,192,221,40,89,198,200,78,107,238,113,135,244,83,160,216,74,127,63,52,13,238,160,187,139,211,8,63,114,156,123,168,226,232,231,253,128,195,32,155,237,192,68, +121,83,143,247,6,50,45,85,134,125,113,212,235,152,176,199,239,228,204,13,92,229,59,24,191,113,17,107,193,24,6,73,151,30,19,10,92,241,208,78,184,65,29,198,177,241,3,60,34,53,230,108,165,170,220,147,197,218,92,12,212,106,73,17,226,126,10,176,76,32,116, +216,78,100,34,156,130,148,153,12,151,106,7,231,205,45,133,43,187,83,210,228,66,67,101,161,24,111,118,51,242,191,185,55,189,97,157,117,62,4,125,137,248,84,237,0,150,240,4,34,96,206,252,103,242,156,37,165,156,219,113,240,160,176,245,147,211,46,224,140, +172,212,55,52,191,38,27,5,151,50,241,238,201,179,103,213,201,57,95,33,202,65,93,139,0,170,236,131,173,90,37,171,182,20,47,59,253,62,219,140,126,95,84,92,81,139,238,112,227,173,202,182,95,184,176,58,1,83,193,243,207,159,7,65,13,63,112,101,67,176,20,77, +138,218,84,172,45,149,221,141,183,171,226,242,12,171,52,27,208,60,53,173,238,52,97,129,157,148,144,112,53,55,107,128,252,220,132,129,123,178,68,182,224,120,117,34,103,210,112,124,45,17,51,48,111,46,9,249,164,26,201,14,255,71,77,34,104,33,160,161,77,86, +81,128,79,3,49,28,51,53,30,228,4,60,5,51,164,177,223,148,129,243,84,75,155,21,5,231,163,6,0,88,1,43,185,97,153,249,60,68,207,114,29,207,31,19,157,227,253,128,134,242,180,12,50,169,160,195,199,197,164,9,185,65,41,43,36,104,110,107,177,31,128,41,230,217, +11,149,149,35,229,176,198,93,42,108,18,121,255,233,247,110,111,137,80,73,242,79,132,74,176,249,24,210,114,97,225,133,202,222,156,141,117,70,28,247,197,191,250,83,126,229,112,18,173,199,59,218,85,35,240,223,243,248,64,62,246,232,237,163,197,201,212,94, +191,119,248,186,246,64,234,184,121,140,64,136,80,189,27,234,111,247,67,189,200,45,188,129,246,154,200,0,213,30,135,217,29,26,93,118,15,204,168,102,244,20,0,213,30,52,245,100,91,155,157,78,95,79,87,166,121,12,115,204,162,115,154,101,14,146,164,137,165, +105,150,153,139,54,3,145,3,232,83,70,110,220,203,77,163,13,98,36,171,246,145,229,96,176,60,87,147,158,91,106,169,58,236,49,70,66,144,247,243,113,195,234,186,92,6,106,177,81,172,52,126,215,201,72,197,82,26,203,130,187,178,106,115,100,243,84,152,135,101, +204,89,195,67,39,187,81,66,226,37,247,112,47,66,220,1,160,84,192,167,178,17,141,207,111,2,253,82,152,67,34,228,237,3,41,254,206,17,171,114,54,34,51,95,20,106,148,31,179,105,11,4,109,50,46,89,241,25,67,176,228,130,147,71,207,138,48,191,188,181,161,159, +83,203,150,69,132,116,117,47,222,184,226,86,46,67,139,47,93,32,10,174,74,6,222,25,187,30,61,62,64,28,251,78,129,210,113,203,84,84,209,94,175,194,11,231,90,122,109,101,89,253,225,119,118,202,201,230,192,28,207,23,220,206,109,147,53,59,243,236,34,42,185, +51,163,35,34,60,153,180,165,118,54,29,237,187,193,193,190,156,12,102,58,88,130,201,205,117,101,183,79,218,46,156,56,18,230,188,206,236,8,205,32,104,68,33,1,0,206,44,120,85,137,99,105,42,193,102,148,76,151,49,79,36,92,45,121,32,18,6,220,20,88,143,203, +160,34,234,195,234,47,183,29,96,200,2,62,36,231,109,238,149,67,218,94,242,76,150,181,174,208,216,113,144,35,92,179,172,103,162,64,35,92,152,153,25,195,228,102,145,31,75,27,143,11,232,98,202,93,21,109,50,227,196,252,82,168,236,64,164,80,235,244,227,7, +211,37,133,218,2,101,56,172,109,185,59,219,243,101,127,106,9,239,179,80,222,70,174,53,185,127,214,206,44,110,232,47,111,41,183,176,48,148,212,28,195,25,252,181,76,155,94,184,114,161,74,163,78,10,4,222,255,248,64,62,86,222,80,76,178,62,172,230,146,2,170, +181,43,135,117,199,36,48,54,182,193,74,117,253,136,249,159,252,245,57,241,141,108,226,98,43,17,231,27,159,93,65,24,84,211,250,193,14,146,240,212,92,228,230,19,132,66,163,204,179,85,236,89,140,243,150,142,230,148,78,245,80,182,130,61,216,99,191,11,192, +21,71,191,114,138,89,52,217,9,26,26,51,24,203,110,84,177,201,14,23,40,203,58,33,29,157,64,251,216,55,84,11,253,132,150,88,197,111,249,61,172,191,10,234,9,171,41,164,191,40,81,210,179,110,57,190,61,105,251,231,16,24,9,218,29,130,72,193,106,27,15,7,54, +106,166,28,84,11,13,133,230,238,129,148,168,43,41,144,103,156,154,131,124,32,77,200,129,161,25,22,172,46,61,1,17,180,218,246,49,44,232,125,172,83,161,11,59,11,238,160,113,75,54,112,224,231,112,19,7,254,237,108,250,109,69,191,12,78,248,185,231,86,185, +241,242,161,15,101,220,90,213,15,79,66,155,163,254,246,29,199,7,218,102,148,135,116,112,250,54,75,230,164,57,152,218,169,141,53,105,186,93,191,244,80,243,159,95,62,79,186,11,95,82,149,113,118,43,216,64,128,176,204,137,228,75,200,14,109,22,150,19,198, +134,28,150,129,223,60,189,135,16,62,179,42,235,195,171,29,155,51,83,76,234,68,206,244,223,236,105,245,72,75,141,59,3,199,184,119,4,92,67,116,89,111,196,250,160,24,201,34,96,124,152,212,106,0,89,67,61,224,120,175,156,3,191,198,26,169,65,147,64,172,172, +67,99,149,205,72,70,75,69,135,229,251,156,58,26,214,98,23,165,177,46,213,72,58,225,232,164,243,128,93,112,74,79,205,37,16,32,204,64,196,38,0,58,206,164,76,235,44,126,231,132,255,196,113,91,7,182,196,142,238,219,114,102,138,51,166,234,28,160,162,40,84, +164,152,108,255,254,62,44,82,199,53,70,205,114,152,128,235,5,43,115,12,12,244,43,123,165,229,224,23,41,184,94,186,163,102,95,134,80,63,5,161,238,42,119,245,119,175,203,200,37,37,66,85,66,244,175,94,83,110,123,178,117,55,112,235,11,254,244,30,10,178,138, +115,222,83,94,31,216,20,87,194,117,210,213,40,102,249,146,240,148,76,196,179,68,245,69,105,233,99,8,164,202,206,130,114,231,22,21,64,194,64,246,140,97,135,30,95,79,228,55,121,47,246,215,34,151,83,114,43,146,122,60,237,216,77,192,169,218,233,200,185,233, +147,13,191,250,1,170,200,84,49,111,153,142,96,153,113,158,219,240,101,140,17,181,77,36,180,8,155,114,178,193,201,14,202,62,19,131,36,10,96,190,197,76,134,145,152,74,78,243,38,224,33,29,84,166,22,116,194,8,87,249,134,120,30,30,67,122,177,96,12,138,59, +243,33,196,60,198,251,38,53,208,137,184,77,243,202,247,173,147,112,72,173,229,166,193,200,153,202,66,19,215,129,53,195,44,13,191,66,247,118,199,166,112,51,41,231,12,207,250,22,72,178,74,209,108,41,53,216,211,79,88,71,127,58,3,19,204,221,227,94,250,103, +202,178,61,149,243,135,121,78,206,81,168,68,192,204,222,48,250,120,161,18,42,180,149,51,65,142,186,195,247,243,175,242,184,250,144,199,97,74,143,133,182,23,171,109,165,165,215,231,97,24,196,199,23,22,86,165,35,76,182,35,5,51,181,123,194,251,93,38,230, +247,193,135,62,5,234,140,19,61,153,164,39,183,60,217,9,132,241,46,39,150,115,51,166,237,157,158,111,127,200,253,22,38,236,48,144,141,133,73,254,22,236,84,243,75,150,67,38,101,177,12,135,138,225,18,213,130,197,234,12,145,162,60,117,156,87,200,82,7,254, +13,195,49,114,188,137,152,216,201,80,143,94,206,38,110,37,197,102,52,247,212,170,58,22,14,59,6,201,22,179,238,183,89,17,248,123,187,61,233,116,96,149,109,25,212,75,213,61,80,217,28,124,238,8,2,29,146,77,154,130,223,244,59,75,18,87,52,170,218,235,62,76, +241,99,21,72,58,41,37,188,213,166,102,192,37,52,193,28,83,187,60,95,69,26,151,189,64,15,19,56,111,219,9,235,251,9,149,71,160,62,228,193,226,54,36,124,204,242,231,183,245,246,246,138,218,222,190,98,230,215,55,244,154,94,113,171,248,2,219,47,158,214,219, +199,111,233,86,107,71,183,182,22,221,233,227,243,238,229,253,187,68,163,142,13,170,237,182,230,232,79,54,52,43,248,35,53,131,244,206,160,175,213,0,103,113,122,10,238,12,235,102,111,212,81,249,254,72,138,180,147,132,150,180,229,106,181,76,135,83,60,157, +136,250,77,29,185,74,72,106,232,179,241,81,129,196,66,35,87,81,45,116,41,98,26,128,90,246,6,41,250,65,141,108,248,160,143,112,132,215,155,88,149,105,225,198,253,128,91,129,2,237,2,185,194,28,52,17,135,114,236,71,28,64,120,200,0,196,224,137,18,114,212, +131,18,225,20,99,88,39,219,128,78,181,35,144,248,72,146,207,55,129,194,67,36,238,186,160,53,27,229,193,40,118,205,102,2,115,157,56,88,17,71,128,88,48,192,70,224,196,93,56,10,36,205,129,193,28,219,34,51,152,229,252,196,172,27,253,52,40,196,206,188,122, +189,133,133,213,90,84,55,250,167,221,10,119,36,67,24,115,233,26,40,219,35,102,119,117,245,131,107,234,15,33,88,167,87,241,73,95,250,210,151,36,150,229,223,249,237,207,235,47,33,155,127,237,218,37,189,190,189,141,199,127,85,157,122,125,81,49,119,123,123, +29,137,226,165,103,85,111,180,173,119,58,90,5,35,152,231,207,62,169,166,92,91,141,0,156,6,56,127,41,253,30,178,237,7,33,183,233,5,227,4,253,169,1,28,197,8,57,198,56,105,108,3,233,197,35,110,228,170,144,231,84,249,38,39,138,227,140,231,13,151,128,247, +139,226,129,26,179,105,181,172,115,47,19,58,11,215,226,136,1,64,89,182,143,192,86,184,160,1,205,219,31,128,255,77,108,29,26,24,104,41,86,119,181,216,111,199,67,234,79,215,113,157,179,12,235,153,29,176,7,9,120,107,38,102,70,106,36,147,231,220,128,141, +53,77,228,78,247,45,204,131,59,121,188,237,250,61,214,79,239,178,114,205,206,115,19,68,102,245,240,59,64,35,178,15,71,189,9,235,116,26,9,146,128,46,169,115,198,253,2,132,186,69,254,247,11,74,45,254,186,146,209,8,176,118,18,151,206,207,43,253,165,109, +57,205,52,201,250,243,191,35,66,117,31,86,168,242,92,245,3,30,23,47,94,52,135,125,62,19,128,86,109,69,74,147,76,20,247,252,243,103,196,44,115,136,53,59,176,39,219,167,113,123,82,142,65,231,196,236,147,143,223,49,119,192,45,179,11,191,172,98,94,130,140, +100,58,10,56,210,143,102,249,46,180,37,108,4,135,139,144,9,251,8,102,90,250,92,248,79,171,169,226,57,141,56,24,231,248,110,223,219,73,153,12,219,80,161,12,234,240,251,20,200,12,165,216,255,229,163,137,20,107,179,183,162,95,189,179,191,206,226,50,14,248, +32,229,105,14,172,205,105,102,231,90,142,108,153,238,192,207,2,217,167,194,247,58,183,71,147,251,148,199,12,52,187,210,142,177,200,46,201,5,123,251,214,45,153,49,44,9,115,229,83,113,63,245,244,89,25,197,47,155,34,41,159,45,91,243,189,170,130,120,39,123, +246,122,183,230,141,177,47,8,255,224,66,229,241,161,53,118,114,124,245,171,95,149,191,76,196,175,174,126,85,186,244,192,31,3,197,173,112,187,105,36,13,86,212,235,175,191,162,90,173,68,111,169,45,117,78,159,119,127,88,124,79,133,39,140,154,126,98,222, +149,175,76,187,109,72,112,62,57,48,119,110,23,140,109,85,45,145,89,19,42,175,5,102,120,31,38,13,34,33,93,119,239,14,211,36,136,127,225,254,130,7,0,51,219,82,100,164,187,48,215,41,205,107,43,65,176,209,211,195,3,72,192,52,221,112,8,173,198,253,233,56, +118,163,160,71,226,30,132,109,195,245,65,0,142,11,233,38,119,73,131,218,5,31,138,88,165,221,140,96,41,34,167,99,166,211,35,59,24,140,132,41,42,70,145,173,185,216,13,161,141,92,30,101,183,131,239,153,56,189,11,227,208,236,112,8,118,73,116,166,33,212,233, +71,181,222,27,129,236,236,112,46,195,35,54,131,107,57,190,184,167,255,226,207,51,87,215,35,142,190,113,211,72,176,47,130,119,125,243,27,126,170,218,241,227,94,75,39,9,22,178,75,32,32,44,140,160,28,23,47,174,186,175,126,117,117,114,158,213,135,57,126, +96,141,229,81,181,77,28,214,71,225,75,225,219,92,82,108,42,89,7,226,134,207,229,150,211,135,200,155,149,23,157,206,121,25,99,51,1,86,188,127,50,241,77,38,171,222,58,173,56,207,8,249,2,189,5,96,197,221,73,210,230,188,126,163,135,228,3,174,115,115,68,238, +163,199,189,8,198,131,93,206,48,214,163,177,7,94,41,72,15,154,247,36,157,214,113,218,213,140,73,219,162,209,28,142,205,57,15,109,197,22,69,38,34,14,240,31,167,182,178,115,60,29,181,132,44,97,3,55,143,125,185,142,247,27,78,154,206,166,92,88,204,0,217, +63,96,133,173,28,108,191,96,83,26,105,193,73,41,139,60,0,203,19,158,92,170,226,207,155,234,107,191,159,57,224,163,67,144,196,105,178,175,44,92,215,191,117,238,188,83,171,170,36,31,176,177,242,208,220,78,64,232,164,250,112,178,229,235,135,213,216,31,74, +176,147,227,33,159,236,143,75,213,236,178,229,53,229,227,93,32,229,27,55,86,29,169,199,231,88,191,94,29,175,44,40,125,253,11,215,213,226,153,243,48,209,55,165,16,125,178,211,229,109,160,231,133,69,191,183,27,203,48,39,59,70,49,108,160,112,135,93,248, +199,22,16,50,51,71,48,215,29,25,147,211,81,35,196,72,28,142,61,74,15,180,222,109,217,36,219,151,173,78,246,56,105,76,77,171,228,228,129,30,223,181,142,155,41,140,129,138,166,167,253,164,135,238,171,96,141,150,252,251,140,250,16,118,99,79,215,241,94,172, +110,224,227,205,83,199,156,186,207,158,224,123,142,37,64,159,56,34,80,238,147,64,22,137,207,99,251,11,127,11,211,110,204,120,177,145,141,169,77,198,169,175,93,61,111,73,17,50,60,164,240,46,168,135,200,151,71,181,49,210,132,132,80,74,169,15,37,204,163, +199,135,138,99,63,232,113,193,85,254,97,205,151,111,76,182,158,134,105,17,254,147,43,86,246,140,193,177,216,2,204,95,33,251,114,86,118,9,225,193,253,101,118,222,232,151,91,192,153,143,45,46,88,158,188,96,148,219,143,61,113,66,42,248,134,97,94,194,132, +137,214,156,156,67,46,160,91,148,35,196,196,20,4,95,31,76,91,59,238,35,195,62,93,90,178,62,81,217,182,76,106,103,230,94,217,78,155,229,35,39,0,221,194,172,156,71,120,27,237,88,123,31,233,52,198,157,123,172,18,236,20,229,60,139,202,194,86,185,123,107, +92,48,87,218,60,229,220,246,245,45,59,78,16,225,84,37,64,76,136,199,248,110,244,159,119,145,24,239,238,40,199,203,108,207,11,85,126,200,246,125,252,93,182,156,23,209,61,215,117,28,245,78,161,78,206,211,164,94,91,102,250,95,196,237,203,202,30,33,247,127, +96,161,242,248,72,52,118,114,76,70,246,189,240,194,149,128,153,126,17,238,197,11,178,171,165,108,163,134,36,241,5,191,39,173,234,60,127,221,176,240,153,175,155,236,116,249,232,120,202,252,235,127,118,214,2,45,234,77,36,238,159,71,26,240,238,55,110,74, +117,6,133,77,192,149,169,68,118,180,144,215,41,223,98,200,235,199,42,224,69,141,86,236,182,255,46,98,202,234,58,77,56,146,225,242,188,238,224,173,179,245,217,74,177,125,223,95,7,54,80,61,102,93,148,116,136,138,70,202,3,176,28,253,125,255,57,212,206,187, +85,133,3,167,184,223,172,222,103,247,238,134,52,36,115,18,123,50,102,97,183,223,27,251,234,85,210,130,87,0,144,214,216,72,46,212,171,20,164,85,241,63,181,20,119,87,61,127,31,14,249,190,223,241,87,161,177,218,111,10,79,94,249,194,225,186,67,78,126,178, +245,180,220,227,133,186,42,197,113,231,182,206,59,142,65,255,227,221,179,229,226,175,111,104,14,167,58,127,228,13,125,226,217,191,46,22,45,246,154,44,233,65,158,233,165,37,17,66,112,140,101,37,133,29,80,136,39,72,92,20,118,190,61,95,82,168,67,48,12,211, +72,102,243,62,150,160,204,39,243,37,181,95,237,227,111,215,223,110,35,104,162,80,137,108,31,32,121,193,69,195,177,12,47,125,99,161,60,184,179,84,122,237,36,139,118,83,157,132,32,255,24,23,230,78,119,191,163,202,133,231,151,221,43,176,62,20,170,215,208, +117,119,245,234,21,75,161,17,244,110,108,92,114,60,47,116,77,212,84,225,218,47,92,146,173,210,201,13,124,228,66,80,31,241,113,184,163,165,159,197,109,160,189,66,94,179,156,102,226,63,228,71,41,214,200,74,239,137,90,95,95,247,53,84,114,172,30,190,215, +194,166,210,204,120,244,85,221,252,225,239,238,148,212,6,234,201,68,200,143,173,220,146,247,225,140,199,103,0,188,182,153,112,184,195,124,176,15,47,188,150,43,77,19,89,132,119,12,169,60,94,231,125,242,1,8,71,78,224,57,47,227,49,217,85,153,172,208,83, +169,217,248,86,225,118,106,133,99,126,84,198,200,190,122,244,23,122,29,37,30,120,110,101,217,178,176,111,251,69,143,114,177,32,53,139,186,233,122,164,156,5,241,140,76,106,87,222,151,226,169,230,26,80,239,242,101,225,128,223,158,56,255,200,180,149,199, +71,174,177,213,151,147,233,130,132,232,236,4,35,82,231,202,156,32,118,233,148,175,144,32,239,219,222,222,246,60,243,69,110,231,181,46,1,59,47,51,157,43,182,179,176,236,254,112,115,167,60,255,91,136,59,17,3,178,192,107,115,230,186,83,219,202,54,20,82, +103,155,167,75,206,101,104,225,47,181,105,73,29,148,220,31,72,114,194,18,43,223,148,207,9,69,211,110,85,241,51,62,27,66,229,115,238,225,246,210,157,131,242,211,172,51,186,191,111,55,112,125,246,153,194,253,202,175,156,21,173,36,73,159,60,173,44,181,146, +19,71,95,130,70,202,56,158,149,251,22,168,95,173,86,25,152,229,229,43,238,220,57,126,111,210,130,107,50,117,71,90,27,47,120,179,75,11,198,20,28,221,82,37,84,30,78,85,163,242,62,74,161,138,28,212,95,221,161,39,112,221,183,220,248,59,57,176,100,210,162, +176,60,217,99,124,210,191,171,170,58,141,11,190,203,143,87,55,54,214,15,119,155,166,249,246,215,207,203,76,12,142,79,248,181,133,183,254,6,191,83,227,245,195,113,247,147,131,104,251,165,175,239,91,78,92,161,47,228,95,249,14,43,28,217,235,91,67,169,129, +156,142,67,2,129,143,17,181,147,152,167,49,161,54,146,100,153,52,69,201,215,188,176,202,223,35,181,95,210,253,38,153,152,117,16,55,50,96,84,246,183,39,174,224,100,23,142,199,195,253,71,5,170,14,103,227,170,143,86,91,229,253,212,95,211,113,52,229,119, +244,126,191,207,15,171,218,17,36,93,186,112,120,255,68,232,28,173,75,13,120,184,83,188,167,105,184,209,193,115,188,82,153,66,63,221,102,93,209,148,19,121,19,156,113,1,108,125,113,221,177,8,128,36,59,183,13,219,250,98,87,110,179,69,165,83,109,254,199, +131,241,229,106,53,72,133,199,252,6,219,89,30,150,80,123,79,177,238,191,27,71,253,34,92,121,238,185,117,3,122,213,202,246,24,23,149,44,72,186,158,53,95,91,175,94,184,252,66,233,170,200,229,162,187,164,47,168,11,246,253,82,109,31,229,241,215,38,88,30, +147,64,155,113,239,145,197,42,135,207,16,249,9,99,87,174,176,149,196,247,126,250,132,190,220,171,56,94,174,138,141,137,38,197,143,145,185,225,89,95,157,236,59,195,114,157,195,119,245,215,230,231,215,228,125,145,176,112,220,115,158,73,236,86,235,186,254, +242,151,187,146,208,6,26,150,13,0,231,63,47,211,186,237,100,71,100,89,92,248,30,236,26,191,60,97,135,38,45,165,4,65,36,19,160,165,55,94,240,143,107,128,160,139,30,32,170,11,23,14,23,233,91,52,145,12,29,232,88,171,254,138,143,191,146,56,246,189,142,195, +166,92,169,174,123,171,95,145,249,141,48,209,27,27,27,142,254,248,70,181,253,26,125,49,181,99,237,133,53,241,79,190,41,73,149,43,213,253,32,201,203,85,229,133,193,19,253,2,17,11,46,243,243,235,208,156,53,241,119,215,174,173,123,225,201,177,106,41,188, +127,250,79,207,91,154,70,10,91,214,205,218,21,17,252,197,11,19,215,112,73,62,155,87,87,170,240,68,201,140,73,95,49,200,251,233,43,15,113,255,5,169,202,159,8,181,26,120,161,15,199,7,76,46,127,29,66,253,127,204,33,179,69,156,108,206,106,170,235,154,245, +204,71,238,63,122,123,114,93,46,107,107,151,131,201,237,203,151,253,245,203,151,93,0,153,6,126,134,6,46,234,225,125,188,48,153,51,121,156,239,55,121,143,201,109,38,56,220,197,135,159,203,247,61,250,221,142,126,143,163,223,235,232,115,38,191,75,253,232, +248,224,135,63,121,213,228,8,117,209,136,32,14,133,224,2,255,248,195,251,222,190,40,46,30,17,154,23,170,127,46,5,206,235,254,242,78,65,170,31,29,127,117,199,81,109,56,114,194,143,104,140,82,15,47,111,21,226,81,43,112,244,246,219,223,239,221,4,250,255, +54,193,254,127,98,21,30,61,233,250,97,67,139,59,250,216,36,75,242,246,215,190,219,253,71,239,251,168,195,144,31,29,63,58,126,116,252,232,248,209,241,255,155,227,255,6,74,236,217,76,222,25,217,71,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* moveon_png = (const char*) temp_binary_data_12; +const char* logo_png = (const char*) temp_binary_data_12; } diff --git a/LatestCompiledAssets/BinaryData14.cpp b/LatestCompiledAssets/BinaryData14.cpp index 148b7f9..2cd0a00 100644 --- a/LatestCompiledAssets/BinaryData14.cpp +++ b/LatestCompiledAssets/BinaryData14.cpp @@ -9,21 +9,24 @@ namespace InspectorBinaryData { -//================== search.png ================== +//================== move-off.png ================== static const unsigned char temp_binary_data_13[] = -{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,36,0,0,0,36,8,6,0,0,0,225,0,152,152,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,3,66,73,68,65,84,120, -1,205,87,189,114,211,64,16,222,147,9,147,210,37,165,58,38,52,142,171,76,42,204,19,196,36,48,67,103,249,9,172,60,1,118,69,25,65,69,135,66,197,12,144,132,39,64,233,76,21,49,195,144,86,188,129,41,97,198,94,118,207,146,238,172,72,103,89,86,112,190,153,76, -116,231,211,233,187,111,127,110,87,192,10,112,186,110,19,182,192,134,41,236,210,208,78,127,16,16,130,5,145,255,209,11,97,77,136,50,139,156,103,110,7,17,95,2,74,34,77,195,210,136,118,12,196,150,24,249,31,188,8,234,38,164,17,233,192,234,59,251,85,136,21, -18,234,29,14,78,232,159,123,243,5,65,42,96,0,40,126,201,9,36,197,44,108,97,190,122,17,173,31,249,103,158,15,85,9,177,159,96,3,207,51,170,76,104,227,215,112,31,124,211,137,89,81,242,47,7,5,246,244,121,4,28,190,63,123,51,130,42,132,122,71,131,171,216,87, -230,11,4,92,192,84,244,253,11,111,2,37,225,60,119,119,113,74,135,210,28,159,14,116,76,74,121,203,222,93,32,148,53,83,44,247,16,42,128,148,182,99,165,213,225,44,241,196,255,228,5,80,134,144,115,228,118,201,129,207,235,32,163,145,98,243,127,213,72,69,98, -38,218,38,181,173,228,129,200,156,164,100,40,66,214,37,195,224,15,139,169,120,74,143,9,1,155,190,232,154,222,145,132,88,29,80,246,142,128,194,21,106,2,145,226,72,59,78,198,228,224,3,153,96,77,132,144,220,39,153,32,117,130,170,73,173,144,212,60,236,163, -120,72,105,2,186,96,34,68,246,82,11,106,84,71,7,169,116,170,6,248,184,104,157,37,115,135,122,43,172,91,157,20,13,74,31,49,208,144,249,45,152,105,185,98,22,103,223,91,64,124,241,166,206,93,228,71,108,50,59,29,241,173,125,187,80,225,190,13,133,132,238, -20,152,144,98,141,198,210,226,191,96,145,144,110,190,154,17,251,140,157,140,139,130,135,157,58,72,6,104,8,199,181,113,79,221,105,38,95,181,56,147,130,82,169,185,144,6,106,4,206,180,228,11,6,66,114,1,170,164,37,43,196,154,193,55,63,237,172,146,175,208, -146,100,30,33,146,211,79,103,40,105,213,173,18,90,56,0,85,77,70,166,18,68,18,146,73,75,104,153,116,134,239,76,23,224,42,136,15,183,80,99,153,214,167,121,136,202,4,190,145,211,76,202,117,204,186,164,100,145,70,135,75,191,49,47,107,124,40,67,40,91,38,112, -81,37,73,189,96,251,87,32,195,29,139,133,87,160,66,125,82,230,226,110,232,131,240,122,28,182,119,246,185,138,236,196,83,15,168,104,239,210,220,111,254,13,74,128,85,109,61,218,123,69,7,122,11,124,65,40,108,83,157,61,249,126,253,237,210,244,126,110,27, -228,28,186,67,42,164,178,209,22,201,206,163,65,245,82,166,67,149,166,165,60,67,161,125,64,210,58,176,216,14,77,244,241,178,14,164,176,47,147,146,207,237,111,23,44,137,180,231,220,53,66,136,128,90,239,62,252,165,214,72,59,160,137,84,3,10,16,254,28,71, -237,135,251,167,180,233,159,248,131,89,7,111,106,127,55,136,80,135,209,247,63,123,163,240,199,120,66,230,14,116,87,32,165,59,173,157,61,200,51,95,169,222,158,65,102,116,40,131,30,196,29,170,157,67,34,164,107,232,146,11,177,162,60,147,117,133,60,165,74, -19,90,216,152,125,70,171,103,86,169,50,151,145,170,68,104,93,152,72,53,96,3,48,249,212,70,20,74,144,85,138,136,245,55,162,80,130,28,165,190,192,93,0,71,176,140,98,194,63,250,252,124,184,174,6,177,51,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; +{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,48,0,0,0,48,8,6,0,0,0,87,2,249,135,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,3,218,73,68,65,84,120, +1,213,153,59,76,219,64,24,199,191,239,28,67,37,50,148,34,133,153,206,101,71,170,84,137,215,202,206,86,9,150,46,144,240,46,25,58,5,154,208,146,192,210,133,165,93,216,179,33,202,107,168,196,142,170,78,157,58,129,4,116,104,212,38,177,239,122,159,75,130, +3,231,16,59,103,112,127,83,252,138,255,159,239,190,215,29,64,136,204,231,15,199,23,10,71,99,16,34,12,66,98,113,253,168,159,129,24,71,193,39,23,215,119,251,33,36,66,49,96,238,195,151,4,26,98,234,250,45,177,229,229,194,231,94,8,1,237,6,144,248,88,165,154, +17,92,92,11,22,208,101,3,203,204,173,237,116,129,102,180,27,96,148,171,211,13,226,107,8,76,24,102,231,50,104,6,65,35,228,180,52,239,155,221,195,25,20,215,166,7,183,154,221,51,247,105,167,171,227,194,136,219,220,76,8,97,39,232,92,110,118,104,79,117,175, +86,3,220,44,230,15,138,238,227,108,106,176,105,52,90,120,191,59,192,152,57,33,80,196,105,202,53,92,68,40,101,147,131,202,15,19,90,20,242,75,110,118,244,24,192,222,191,37,158,64,56,245,122,46,50,6,16,86,143,85,164,175,125,243,60,19,88,242,122,38,50,6, +208,188,55,46,59,50,170,17,224,0,209,54,160,46,158,195,83,213,117,20,226,204,235,217,7,55,192,83,60,138,51,4,126,21,8,188,167,80,12,66,226,174,168,67,52,19,111,0,79,175,164,70,78,151,242,123,37,198,48,122,35,112,167,248,228,136,19,121,222,166,134,183, +43,221,213,99,175,255,105,43,15,44,228,15,222,200,20,155,148,63,31,67,16,16,170,210,105,127,32,224,215,127,199,141,226,91,193,128,128,72,241,121,41,126,73,254,124,4,193,161,247,119,75,39,69,57,23,190,249,21,79,180,225,3,226,37,104,66,32,246,197,128,191, +240,43,158,104,199,7,130,77,27,53,102,16,241,132,182,40,148,75,13,181,236,79,84,114,179,63,229,64,130,111,162,28,129,249,252,193,36,132,200,187,87,207,207,252,62,67,149,174,234,124,195,8,56,161,237,66,214,236,66,80,11,184,5,17,130,202,244,197,194,225, +51,3,172,77,247,116,171,143,128,211,73,93,118,22,174,196,71,19,169,141,58,59,119,123,234,140,0,53,224,80,174,44,11,87,33,117,179,158,175,209,74,134,109,7,175,247,214,145,157,157,141,44,35,23,10,54,178,51,163,39,49,103,217,67,174,28,200,132,242,255,32, +141,0,140,101,164,95,108,51,38,44,237,141,246,125,17,67,94,98,84,107,128,176,210,200,80,75,88,187,23,168,233,145,154,87,147,67,69,199,7,104,46,73,39,78,187,151,67,194,158,235,94,120,189,183,238,27,181,122,105,102,212,249,224,245,40,68,177,217,234,48, +211,128,120,2,17,133,73,109,246,147,234,180,59,140,54,228,129,171,4,147,150,53,248,56,68,12,106,110,86,147,195,183,114,147,50,19,59,126,225,147,176,150,14,107,72,77,202,196,26,168,31,160,140,205,206,205,95,160,17,63,181,148,27,223,213,232,245,234,129, +176,64,31,63,33,32,190,12,112,183,129,50,236,126,7,77,32,136,143,16,144,150,59,178,219,61,44,158,35,130,41,127,196,33,120,103,39,191,188,200,230,82,195,75,16,16,207,121,183,176,185,59,144,155,26,117,154,233,86,27,240,135,192,179,161,97,182,57,33,107, +141,62,209,83,46,70,85,60,225,105,128,0,209,43,29,100,28,46,204,97,121,144,104,184,216,130,120,191,171,211,65,81,58,113,195,78,10,85,126,110,34,242,229,107,168,163,80,60,174,174,80,35,38,158,80,78,33,227,183,213,171,114,111,142,120,156,157,142,142,120, +66,57,2,66,84,148,35,192,56,140,121,53,215,15,133,210,0,195,232,72,80,205,45,151,252,78,169,2,148,119,237,161,220,219,146,199,219,200,249,89,24,187,141,65,209,186,71,38,171,216,73,1,108,172,249,11,249,118,144,98,209,11,173,171,211,78,197,216,164,159, +160,209,212,41,222,249,79,208,140,93,45,175,40,219,83,103,195,194,218,4,205,132,178,205,74,107,76,70,185,178,81,223,239,10,49,252,134,178,193,225,116,118,220,90,169,159,224,246,70,148,114,71,203,188,46,236,143,133,221,158,254,5,44,42,182,214,83,216,43, +211,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* search_png = (const char*) temp_binary_data_13; +const char* moveoff_png = (const char*) temp_binary_data_13; } diff --git a/LatestCompiledAssets/BinaryData15.cpp b/LatestCompiledAssets/BinaryData15.cpp index d9067ed..1ed3b39 100644 --- a/LatestCompiledAssets/BinaryData15.cpp +++ b/LatestCompiledAssets/BinaryData15.cpp @@ -9,28 +9,22 @@ namespace InspectorBinaryData { -//================== speedometer-off.png ================== +//================== move-on.png ================== static const unsigned char temp_binary_data_14[] = -{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,48,0,0,0,48,8,6,0,0,0,87,2,249,135,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,5,32,73,68,65,84,120, -1,237,88,61,108,35,69,20,126,51,206,143,148,20,231,43,174,162,192,161,160,64,72,23,36,104,239,108,167,64,116,41,174,191,92,137,144,146,93,233,226,11,13,113,40,238,242,3,90,39,20,87,38,161,37,18,142,68,131,196,197,14,66,72,252,72,23,10,144,160,193,180, -184,192,20,23,29,73,188,195,247,246,39,30,239,174,189,182,227,203,73,119,251,73,235,157,157,157,121,239,123,51,111,222,123,107,162,4,9,94,110,8,26,34,150,172,74,214,38,123,26,66,175,227,49,13,241,105,77,213,145,34,251,47,73,242,104,213,204,85,105,72, -184,176,1,76,26,196,110,43,18,179,228,144,238,9,13,65,162,12,229,187,23,53,102,96,3,92,226,106,89,17,101,233,98,168,65,206,202,134,57,179,67,3,160,111,3,64,60,3,133,219,49,196,27,184,78,52,37,167,24,63,73,93,118,200,219,17,19,59,82,163,62,32,251,25,92, -176,190,153,181,73,61,142,34,47,4,85,241,107,74,18,83,235,102,254,42,165,196,7,232,172,240,165,82,194,224,62,184,217,91,120,127,135,132,42,7,231,99,81,88,118,165,96,85,102,169,15,140,244,58,16,130,151,161,166,24,253,86,153,107,198,76,137,98,176,97,230, -142,112,227,107,167,176,85,185,69,54,173,147,82,83,218,144,12,100,125,9,93,197,117,51,183,66,61,160,167,29,232,64,190,209,106,138,133,162,85,105,115,143,20,169,122,171,157,170,235,239,238,110,124,61,9,242,55,209,252,17,59,244,21,238,127,183,139,86,69, -87,103,60,98,13,96,183,9,146,23,164,54,79,224,42,154,17,153,99,178,231,244,49,15,230,243,135,41,169,30,166,100,234,225,131,249,27,135,109,243,199,71,223,198,237,154,75,64,214,236,179,211,215,224,66,155,20,54,34,214,157,186,26,192,7,22,67,172,128,224, -149,53,115,198,40,153,185,6,252,217,108,9,146,141,224,124,54,34,72,158,145,178,229,177,223,22,82,236,125,178,248,238,19,68,33,131,101,7,116,109,187,28,6,52,0,73,137,201,103,206,149,97,149,214,205,153,162,255,140,136,177,3,35,114,124,113,155,122,196,170, -145,253,9,59,243,49,95,186,129,44,59,176,19,105,142,120,221,100,117,12,163,139,214,163,57,132,54,125,114,29,91,61,197,171,69,207,16,124,62,196,200,232,239,32,246,138,223,231,45,80,53,106,124,199,29,0,249,246,67,36,196,15,114,116,108,117,113,235,224,38, -61,35,176,236,212,216,248,22,72,253,170,247,115,194,236,52,39,210,0,206,178,164,185,14,200,255,137,95,94,249,107,194,22,239,127,184,245,237,27,52,100,176,76,150,173,148,154,84,66,252,131,29,248,195,127,199,121,199,227,20,66,164,1,152,112,187,125,144, -184,135,67,90,167,75,130,163,75,142,20,244,62,37,218,57,181,198,70,128,179,162,223,198,74,236,227,208,125,113,118,250,116,137,195,98,147,154,159,226,224,253,70,67,6,203,116,194,174,144,159,179,174,181,133,27,251,208,93,61,231,164,84,100,72,13,29,98,183, -36,86,21,255,153,83,127,63,17,102,80,120,225,210,185,108,228,23,172,236,17,162,32,72,11,75,227,18,58,204,161,82,130,235,121,221,46,233,166,254,161,129,51,246,177,83,75,217,25,104,65,64,16,211,202,33,173,2,35,197,29,184,82,25,253,86,59,183,214,174,68, -26,192,194,180,109,105,220,119,235,151,190,225,149,31,134,67,5,149,38,171,71,43,123,76,42,227,17,12,81,118,122,81,20,10,37,86,252,149,46,88,7,156,32,211,238,59,121,61,56,62,100,128,32,249,42,121,162,97,200,19,167,232,114,12,83,245,13,100,86,234,141,188, -229,147,247,230,206,197,84,238,248,192,81,187,208,93,94,53,114,85,206,65,5,235,81,49,52,74,169,171,20,111,128,74,171,115,197,52,138,133,187,229,246,11,142,211,212,155,17,76,56,30,188,218,74,137,253,9,84,167,69,51,239,148,34,17,9,84,39,119,133,226,12, -232,134,145,254,134,71,115,208,73,27,185,80,253,148,194,169,179,35,157,171,19,167,0,240,209,209,160,150,0,236,42,237,185,130,83,245,168,194,44,26,92,207,136,96,246,220,157,32,97,68,145,214,193,17,15,17,137,15,108,198,163,176,64,93,190,228,34,150,84,253, -171,61,140,174,207,231,246,168,79,112,81,6,87,72,195,21,188,228,211,94,4,198,65,15,219,56,196,11,45,106,234,151,224,216,40,3,16,117,124,197,148,230,248,220,239,119,42,195,45,143,201,160,11,96,209,170,32,108,170,243,213,135,95,212,130,99,100,184,67,182, -133,77,196,142,105,122,78,16,212,204,232,207,65,110,140,208,14,60,69,226,26,211,158,225,139,89,220,202,110,2,178,231,176,10,141,65,255,2,137,195,82,169,250,78,83,218,19,234,191,211,159,185,108,199,121,204,234,193,55,170,164,142,12,206,240,187,199,228, -173,188,112,82,186,218,244,202,235,12,247,117,171,207,7,5,87,163,77,187,249,145,247,88,87,82,237,137,38,149,206,121,32,122,173,25,249,92,112,94,167,98,238,176,213,166,105,47,46,103,232,242,192,101,251,93,210,221,55,226,0,51,34,13,64,44,46,83,52,26,94, -113,87,165,33,195,175,70,253,178,93,40,245,186,254,94,116,224,212,49,191,223,179,14,42,218,31,88,156,27,54,39,72,150,138,102,247,56,126,81,240,39,165,28,31,123,15,135,111,25,171,254,166,71,178,182,102,230,167,162,198,119,76,173,194,253,7,109,155,183, -14,214,151,86,205,124,141,46,1,222,55,247,94,241,179,239,190,63,62,59,185,15,14,87,132,146,38,37,72,144,32,65,130,4,9,18,36,120,241,240,63,154,84,13,228,104,143,129,176,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; +{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,48,0,0,0,48,8,6,0,0,0,87,2,249,135,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,3,83,73,68,65,84,120, +1,213,153,77,82,27,49,16,133,159,6,3,89,194,146,240,83,195,13,194,13,240,13,224,6,225,4,64,85,128,98,21,103,149,50,80,133,57,65,224,4,225,6,230,6,57,2,19,72,32,187,152,77,138,196,246,116,90,194,118,198,182,100,51,74,11,134,111,101,207,140,60,175,173, +238,150,186,5,4,132,110,15,223,211,77,117,11,1,81,8,4,139,95,69,74,117,243,37,85,101,181,184,115,129,0,4,49,128,110,143,99,80,179,14,66,220,185,212,64,52,185,162,230,182,19,8,19,65,24,139,120,205,12,210,102,157,46,143,103,32,140,184,1,160,214,167,1,241, +93,98,76,183,62,67,24,81,23,210,65,203,126,95,25,249,144,82,53,245,122,103,123,228,239,232,153,122,117,207,179,85,138,209,166,216,12,91,216,61,181,254,28,2,65,223,15,168,239,69,243,187,35,223,69,87,71,107,40,165,199,32,197,194,105,208,213,26,60,126,214, +54,78,222,133,60,81,75,239,206,249,223,62,179,136,215,119,19,215,184,194,24,96,104,77,213,88,108,99,232,186,66,195,53,164,132,130,96,252,126,170,169,215,141,225,25,32,186,115,141,43,196,12,100,196,191,177,63,128,196,53,246,217,13,24,33,62,65,138,19,243, +73,209,211,187,208,184,172,163,25,41,62,106,151,213,252,126,66,215,213,6,167,222,196,249,30,60,19,99,197,207,237,39,255,158,173,204,168,229,138,117,22,254,203,128,135,133,11,91,246,212,231,197,144,248,113,120,27,64,55,135,188,232,144,228,86,57,183,120, +141,127,16,19,222,66,18,15,241,102,24,188,17,115,27,131,143,120,141,88,22,122,76,214,233,66,183,31,99,164,19,151,16,192,58,3,198,191,3,226,243,111,155,132,97,161,207,0,157,218,88,124,93,56,56,101,224,109,186,214,102,10,166,12,61,3,204,141,233,230,23, +22,191,138,162,162,181,233,202,46,99,132,137,129,135,2,220,84,75,189,192,28,220,207,119,201,227,235,94,26,29,239,205,16,27,35,174,15,55,116,163,32,162,31,71,155,15,221,3,217,172,18,152,24,17,213,117,92,68,104,182,103,241,82,105,167,119,145,90,220,171, +232,190,13,175,201,9,94,12,92,244,232,94,211,194,94,205,196,128,246,37,206,205,101,96,162,215,14,9,237,235,78,105,142,247,102,98,131,183,28,45,179,83,213,95,122,89,200,228,102,213,230,153,80,23,40,42,90,219,159,95,43,217,117,164,111,37,238,220,40,243, +30,188,130,162,193,197,13,123,202,208,250,228,191,27,29,76,119,209,228,114,158,214,97,222,182,139,11,175,65,157,98,228,39,4,241,53,32,247,110,52,83,73,73,210,128,39,185,12,24,219,61,240,37,197,25,60,121,180,1,97,196,235,124,78,31,212,226,174,247,230, +209,233,119,116,85,93,83,75,123,231,230,115,142,2,252,169,113,27,112,115,112,201,121,247,20,247,165,147,162,138,215,184,13,200,174,124,24,234,247,143,21,47,149,38,199,97,175,200,250,79,82,226,129,219,133,248,231,187,216,131,216,28,46,88,41,148,120,141, +35,11,241,201,136,13,165,206,139,36,94,99,55,160,169,236,51,192,181,178,171,184,126,46,236,109,149,18,159,75,17,231,104,211,21,230,198,42,17,119,138,211,59,68,124,173,141,175,58,70,212,242,182,247,234,41,137,236,33,223,245,65,141,231,116,115,228,67,102, +225,226,34,74,8,241,212,214,105,203,172,90,111,242,126,158,79,40,203,16,68,254,128,227,119,105,221,81,158,114,193,212,218,128,48,226,6,152,216,208,149,93,255,97,93,176,244,27,228,136,201,8,77,177,222,187,144,170,141,162,165,223,71,65,223,170,91,161,203, +211,191,181,205,150,96,11,168,116,103,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* speedometeroff_png = (const char*) temp_binary_data_14; +const char* moveon_png = (const char*) temp_binary_data_14; } diff --git a/LatestCompiledAssets/BinaryData16.cpp b/LatestCompiledAssets/BinaryData16.cpp index 28ce31a..f830898 100644 --- a/LatestCompiledAssets/BinaryData16.cpp +++ b/LatestCompiledAssets/BinaryData16.cpp @@ -9,28 +9,21 @@ namespace InspectorBinaryData { -//================== speedometer-on.png ================== +//================== search.png ================== static const unsigned char temp_binary_data_15[] = -{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,48,0,0,0,48,8,6,0,0,0,87,2,249,135,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,4,240,73,68,65,84,120, -1,237,88,77,108,27,85,16,158,89,59,169,68,15,77,15,84,77,66,133,205,129,3,66,106,144,224,220,244,200,45,135,222,147,28,17,135,196,82,227,150,11,117,46,64,236,160,36,92,56,38,225,74,164,58,18,247,132,35,8,169,201,1,36,184,212,148,54,166,24,9,115,48,168, -177,247,13,223,123,182,247,199,222,117,214,63,9,135,238,39,173,237,125,59,59,111,102,222,155,153,239,153,40,70,140,151,27,76,35,132,148,11,179,36,52,67,34,55,161,121,2,234,39,156,135,138,142,200,162,95,49,126,196,147,43,135,52,34,12,237,128,49,90,201, -60,84,205,225,110,34,218,91,92,197,85,36,75,118,135,117,102,96,7,90,209,126,128,104,207,210,112,40,65,207,42,191,150,221,161,1,208,183,3,82,222,72,145,52,182,123,27,142,8,51,157,194,176,54,234,184,46,247,92,33,166,34,241,88,134,39,51,37,234,3,86,63,194, -242,100,109,142,84,227,81,160,241,204,135,184,50,100,217,105,158,94,185,138,223,31,226,141,3,115,89,188,108,198,132,222,193,181,104,140,237,82,78,208,93,63,48,115,244,129,100,84,65,108,153,7,216,235,57,242,132,213,53,94,50,60,149,221,60,75,7,182,201, -17,190,244,181,35,229,245,59,8,68,30,87,218,35,146,162,4,63,196,92,57,228,198,42,69,64,164,21,112,141,247,153,83,117,5,120,73,30,111,116,108,15,85,9,254,13,241,223,11,151,161,239,22,140,255,30,183,223,96,181,254,240,191,42,57,51,103,4,156,233,64,115, -219,116,24,175,104,139,78,147,105,143,19,41,186,116,186,224,21,225,201,236,183,208,254,165,190,204,111,159,82,121,23,31,175,182,36,75,100,61,127,195,232,236,116,34,194,118,234,233,128,73,216,36,111,116,40,94,229,27,217,101,78,103,170,48,36,227,142,123, -86,196,227,68,151,241,26,117,235,31,215,2,217,227,235,235,53,173,83,235,246,201,37,120,219,216,208,3,61,171,144,156,228,31,154,228,114,140,164,45,51,145,87,230,55,148,83,173,232,70,127,245,28,57,240,150,121,111,242,238,79,126,125,249,77,132,117,201,181, -144,15,121,106,229,118,152,158,80,7,228,105,126,1,79,183,221,1,169,80,210,74,243,245,149,26,157,35,76,126,52,232,103,20,134,105,103,80,241,237,176,0,133,111,33,139,252,73,196,252,29,217,244,153,148,243,183,232,156,96,116,219,252,5,140,255,209,247,32, -65,161,9,109,5,43,50,93,54,229,12,48,63,198,103,205,36,158,162,15,218,203,63,74,24,157,208,141,112,163,225,209,95,152,244,23,247,161,204,182,183,106,39,130,87,64,241,188,255,94,238,65,97,133,46,12,102,174,172,111,200,146,249,32,201,144,45,36,222,242, -181,143,6,244,53,253,73,247,155,101,209,250,188,51,241,70,1,163,83,235,87,244,21,37,158,223,71,231,222,55,221,221,69,96,73,237,74,226,22,187,60,112,7,104,113,80,162,213,15,164,252,105,10,196,32,69,182,164,16,109,112,169,241,35,112,174,57,108,31,183,140, -7,36,115,55,149,208,124,222,139,113,211,250,71,103,168,238,216,151,78,103,177,248,41,220,233,130,48,99,242,77,53,39,55,33,21,124,168,250,34,37,236,34,73,194,117,32,161,180,109,135,212,211,1,133,8,184,235,82,229,107,217,129,28,104,210,15,106,245,12,112, -127,109,33,19,138,67,61,101,12,12,226,84,70,20,219,198,6,189,110,69,90,158,21,170,14,139,21,190,217,41,222,237,0,211,235,158,187,154,33,93,6,170,18,216,85,131,140,63,41,108,32,16,158,134,39,11,205,175,176,55,208,197,149,189,139,16,23,181,225,186,7,201, -179,181,92,128,224,85,58,219,1,28,3,165,61,19,143,145,82,119,28,51,202,121,138,228,132,208,2,69,65,51,73,247,233,69,109,135,211,57,67,69,220,6,202,142,50,143,252,21,58,211,129,243,70,128,209,195,32,32,137,197,163,84,49,89,137,189,214,239,200,91,8,178, -96,150,236,239,158,194,187,84,175,45,159,101,180,174,120,88,5,125,198,72,53,71,172,165,94,39,185,32,7,254,70,148,218,234,198,80,159,247,168,79,240,244,189,28,72,217,4,78,98,205,230,163,148,38,129,185,200,239,123,202,54,146,216,37,118,74,142,59,101,187, -29,176,44,212,95,167,235,77,232,250,204,147,31,149,168,79,180,88,235,50,13,1,172,196,140,47,250,150,148,58,101,186,59,177,221,81,247,101,108,134,254,47,40,221,43,60,176,173,174,146,222,189,2,141,228,17,141,215,61,74,212,44,62,139,205,6,212,88,192,50, -86,207,171,51,203,147,245,247,104,76,189,130,45,252,131,161,237,150,153,219,65,16,165,14,60,15,200,211,194,35,36,81,43,242,172,183,212,150,161,215,109,134,218,131,159,15,108,188,97,163,234,227,214,156,21,125,82,3,181,222,116,236,8,57,216,132,145,57,79, -181,129,2,93,151,189,244,250,220,97,104,251,93,55,136,20,152,192,26,193,14,8,23,3,199,117,199,212,228,110,196,209,55,154,219,108,212,161,237,252,38,69,176,41,252,72,121,82,56,112,255,192,210,173,30,181,189,241,239,230,40,154,79,47,200,49,142,148,215, -248,125,204,173,255,182,124,187,53,92,226,233,108,58,72,62,220,1,77,111,37,185,77,182,125,76,73,217,28,164,148,14,3,169,172,77,209,11,250,4,189,228,10,177,157,185,232,249,99,196,136,17,35,70,140,24,49,98,92,0,254,3,217,93,44,68,3,104,87,149,0,0,0,0,73, -69,78,68,174,66,96,130,0,0 }; +{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,36,0,0,0,36,8,6,0,0,0,225,0,152,152,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,3,66,73,68,65,84,120, +1,205,87,189,114,211,64,16,222,147,9,147,210,37,165,58,38,52,142,171,76,42,204,19,196,36,48,67,103,249,9,172,60,1,118,69,25,65,69,135,66,197,12,144,132,39,64,233,76,21,49,195,144,86,188,129,41,97,198,94,118,207,146,238,172,72,103,89,86,112,190,153,76, +116,231,211,233,187,111,127,110,87,192,10,112,186,110,19,182,192,134,41,236,210,208,78,127,16,16,130,5,145,255,209,11,97,77,136,50,139,156,103,110,7,17,95,2,74,34,77,195,210,136,118,12,196,150,24,249,31,188,8,234,38,164,17,233,192,234,59,251,85,136,21, +18,234,29,14,78,232,159,123,243,5,65,42,96,0,40,126,201,9,36,197,44,108,97,190,122,17,173,31,249,103,158,15,85,9,177,159,96,3,207,51,170,76,104,227,215,112,31,124,211,137,89,81,242,47,7,5,246,244,121,4,28,190,63,123,51,130,42,132,122,71,131,171,216,87, +230,11,4,92,192,84,244,253,11,111,2,37,225,60,119,119,113,74,135,210,28,159,14,116,76,74,121,203,222,93,32,148,53,83,44,247,16,42,128,148,182,99,165,213,225,44,241,196,255,228,5,80,134,144,115,228,118,201,129,207,235,32,163,145,98,243,127,213,72,69,98, +38,218,38,181,173,228,129,200,156,164,100,40,66,214,37,195,224,15,139,169,120,74,143,9,1,155,190,232,154,222,145,132,88,29,80,246,142,128,194,21,106,2,145,226,72,59,78,198,228,224,3,153,96,77,132,144,220,39,153,32,117,130,170,73,173,144,212,60,236,163, +120,72,105,2,186,96,34,68,246,82,11,106,84,71,7,169,116,170,6,248,184,104,157,37,115,135,122,43,172,91,157,20,13,74,31,49,208,144,249,45,152,105,185,98,22,103,223,91,64,124,241,166,206,93,228,71,108,50,59,29,241,173,125,187,80,225,190,13,133,132,238, +20,152,144,98,141,198,210,226,191,96,145,144,110,190,154,17,251,140,157,140,139,130,135,157,58,72,6,104,8,199,181,113,79,221,105,38,95,181,56,147,130,82,169,185,144,6,106,4,206,180,228,11,6,66,114,1,170,164,37,43,196,154,193,55,63,237,172,146,175,208, +146,100,30,33,146,211,79,103,40,105,213,173,18,90,56,0,85,77,70,166,18,68,18,146,73,75,104,153,116,134,239,76,23,224,42,136,15,183,80,99,153,214,167,121,136,202,4,190,145,211,76,202,117,204,186,164,100,145,70,135,75,191,49,47,107,124,40,67,40,91,38,112, +81,37,73,189,96,251,87,32,195,29,139,133,87,160,66,125,82,230,226,110,232,131,240,122,28,182,119,246,185,138,236,196,83,15,168,104,239,210,220,111,254,13,74,128,85,109,61,218,123,69,7,122,11,124,65,40,108,83,157,61,249,126,253,237,210,244,126,110,27, +228,28,186,67,42,164,178,209,22,201,206,163,65,245,82,166,67,149,166,165,60,67,161,125,64,210,58,176,216,14,77,244,241,178,14,164,176,47,147,146,207,237,111,23,44,137,180,231,220,53,66,136,128,90,239,62,252,165,214,72,59,160,137,84,3,10,16,254,28,71, +237,135,251,167,180,233,159,248,131,89,7,111,106,127,55,136,80,135,209,247,63,123,163,240,199,120,66,230,14,116,87,32,165,59,173,157,61,200,51,95,169,222,158,65,102,116,40,131,30,196,29,170,157,67,34,164,107,232,146,11,177,162,60,147,117,133,60,165,74, +19,90,216,152,125,70,171,103,86,169,50,151,145,170,68,104,93,152,72,53,96,3,48,249,212,70,20,74,144,85,138,136,245,55,162,80,130,28,165,190,192,93,0,71,176,140,98,194,63,250,252,124,184,174,6,177,51,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* speedometeron_png = (const char*) temp_binary_data_15; +const char* search_png = (const char*) temp_binary_data_15; } diff --git a/LatestCompiledAssets/BinaryData17.cpp b/LatestCompiledAssets/BinaryData17.cpp index 968274d..c8b05c0 100644 --- a/LatestCompiledAssets/BinaryData17.cpp +++ b/LatestCompiledAssets/BinaryData17.cpp @@ -9,16 +9,28 @@ namespace InspectorBinaryData { -//================== tab-off.png ================== +//================== speedometer-off.png ================== static const unsigned char temp_binary_data_16[] = -{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,48,0,0,0,48,8,6,0,0,0,87,2,249,135,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,1,168,73,68,65,84,120, -1,237,216,63,75,195,64,24,6,240,231,174,197,185,56,232,170,238,130,126,131,254,25,220,138,171,163,159,160,77,161,70,113,150,182,86,72,179,11,142,93,107,247,54,245,19,40,184,171,223,192,44,157,66,243,122,87,84,74,208,33,228,188,244,240,126,67,201,53,16, -222,135,188,119,92,14,176,44,203,178,44,43,63,76,254,156,123,193,14,129,238,8,56,16,195,18,214,28,3,141,24,184,211,117,42,111,76,22,31,131,30,97,64,225,9,33,7,59,228,49,224,193,188,226,165,146,236,26,14,208,49,12,37,91,190,152,252,243,218,169,50,172, -177,51,111,74,43,195,18,135,225,108,128,188,21,161,193,197,96,90,143,162,104,114,211,62,154,39,239,185,94,48,94,29,247,156,74,29,41,104,121,3,49,43,236,22,138,27,87,248,3,58,91,104,207,245,131,6,20,211,59,7,98,212,84,135,72,61,7,220,193,44,125,43,80, -188,247,125,45,66,180,253,96,222,111,84,110,161,64,250,73,76,180,143,140,196,254,165,222,246,102,243,190,83,30,34,35,45,171,208,79,56,232,68,132,192,114,67,144,233,57,57,42,96,129,172,114,11,192,16,15,187,78,77,127,11,113,198,158,145,18,49,108,81,76, -219,95,99,81,252,88,69,241,82,234,0,157,102,249,18,41,185,254,131,88,58,63,3,16,38,221,86,77,201,10,36,233,109,33,81,124,175,85,241,161,144,190,85,136,227,165,215,80,91,188,164,37,0,167,197,107,180,25,41,107,155,85,90,2,116,154,213,241,111,247,210,238, -62,147,236,7,77,222,140,15,192,196,87,254,59,204,60,23,90,226,226,12,229,9,134,18,181,223,139,0,236,84,92,135,48,79,40,106,111,114,121,64,42,207,24,193,104,4,51,132,140,97,38,107,150,181,195,178,44,203,250,215,62,0,55,170,120,209,82,24,187,200,0,0,0, -0,73,69,78,68,174,66,96,130,0,0 }; +{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,48,0,0,0,48,8,6,0,0,0,87,2,249,135,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,5,32,73,68,65,84,120, +1,237,88,61,108,35,69,20,126,51,206,143,148,20,231,43,174,162,192,161,160,64,72,23,36,104,239,108,167,64,116,41,174,191,92,137,144,146,93,233,226,11,13,113,40,238,242,3,90,39,20,87,38,161,37,18,142,68,131,196,197,14,66,72,252,72,23,10,144,160,193,180, +184,192,20,23,29,73,188,195,247,246,39,30,239,174,189,182,227,203,73,119,251,73,235,157,157,157,121,239,123,51,111,222,123,107,162,4,9,94,110,8,26,34,150,172,74,214,38,123,26,66,175,227,49,13,241,105,77,213,145,34,251,47,73,242,104,213,204,85,105,72, +184,176,1,76,26,196,110,43,18,179,228,144,238,9,13,65,162,12,229,187,23,53,102,96,3,92,226,106,89,17,101,233,98,168,65,206,202,134,57,179,67,3,160,111,3,64,60,3,133,219,49,196,27,184,78,52,37,167,24,63,73,93,118,200,219,17,19,59,82,163,62,32,251,25,92, +176,190,153,181,73,61,142,34,47,4,85,241,107,74,18,83,235,102,254,42,165,196,7,232,172,240,165,82,194,224,62,184,217,91,120,127,135,132,42,7,231,99,81,88,118,165,96,85,102,169,15,140,244,58,16,130,151,161,166,24,253,86,153,107,198,76,137,98,176,97,230, +142,112,227,107,167,176,85,185,69,54,173,147,82,83,218,144,12,100,125,9,93,197,117,51,183,66,61,160,167,29,232,64,190,209,106,138,133,162,85,105,115,143,20,169,122,171,157,170,235,239,238,110,124,61,9,242,55,209,252,17,59,244,21,238,127,183,139,86,69, +87,103,60,98,13,96,183,9,146,23,164,54,79,224,42,154,17,153,99,178,231,244,49,15,230,243,135,41,169,30,166,100,234,225,131,249,27,135,109,243,199,71,223,198,237,154,75,64,214,236,179,211,215,224,66,155,20,54,34,214,157,186,26,192,7,22,67,172,128,224, +149,53,115,198,40,153,185,6,252,217,108,9,146,141,224,124,54,34,72,158,145,178,229,177,223,22,82,236,125,178,248,238,19,68,33,131,101,7,116,109,187,28,6,52,0,73,137,201,103,206,149,97,149,214,205,153,162,255,140,136,177,3,35,114,124,113,155,122,196,170, +145,253,9,59,243,49,95,186,129,44,59,176,19,105,142,120,221,100,117,12,163,139,214,163,57,132,54,125,114,29,91,61,197,171,69,207,16,124,62,196,200,232,239,32,246,138,223,231,45,80,53,106,124,199,29,0,249,246,67,36,196,15,114,116,108,117,113,235,224,38, +61,35,176,236,212,216,248,22,72,253,170,247,115,194,236,52,39,210,0,206,178,164,185,14,200,255,137,95,94,249,107,194,22,239,127,184,245,237,27,52,100,176,76,150,173,148,154,84,66,252,131,29,248,195,127,199,121,199,227,20,66,164,1,152,112,187,125,144, +184,135,67,90,167,75,130,163,75,142,20,244,62,37,218,57,181,198,70,128,179,162,223,198,74,236,227,208,125,113,118,250,116,137,195,98,147,154,159,226,224,253,70,67,6,203,116,194,174,144,159,179,174,181,133,27,251,208,93,61,231,164,84,100,72,13,29,98,183, +36,86,21,255,153,83,127,63,17,102,80,120,225,210,185,108,228,23,172,236,17,162,32,72,11,75,227,18,58,204,161,82,130,235,121,221,46,233,166,254,161,129,51,246,177,83,75,217,25,104,65,64,16,211,202,33,173,2,35,197,29,184,82,25,253,86,59,183,214,174,68, +26,192,194,180,109,105,220,119,235,151,190,225,149,31,134,67,5,149,38,171,71,43,123,76,42,227,17,12,81,118,122,81,20,10,37,86,252,149,46,88,7,156,32,211,238,59,121,61,56,62,100,128,32,249,42,121,162,97,200,19,167,232,114,12,83,245,13,100,86,234,141,188, +229,147,247,230,206,197,84,238,248,192,81,187,208,93,94,53,114,85,206,65,5,235,81,49,52,74,169,171,20,111,128,74,171,115,197,52,138,133,187,229,246,11,142,211,212,155,17,76,56,30,188,218,74,137,253,9,84,167,69,51,239,148,34,17,9,84,39,119,133,226,12, +232,134,145,254,134,71,115,208,73,27,185,80,253,148,194,169,179,35,157,171,19,167,0,240,209,209,160,150,0,236,42,237,185,130,83,245,168,194,44,26,92,207,136,96,246,220,157,32,97,68,145,214,193,17,15,17,137,15,108,198,163,176,64,93,190,228,34,150,84,253, +171,61,140,174,207,231,246,168,79,112,81,6,87,72,195,21,188,228,211,94,4,198,65,15,219,56,196,11,45,106,234,151,224,216,40,3,16,117,124,197,148,230,248,220,239,119,42,195,45,143,201,160,11,96,209,170,32,108,170,243,213,135,95,212,130,99,100,184,67,182, +133,77,196,142,105,122,78,16,212,204,232,207,65,110,140,208,14,60,69,226,26,211,158,225,139,89,220,202,110,2,178,231,176,10,141,65,255,2,137,195,82,169,250,78,83,218,19,234,191,211,159,185,108,199,121,204,234,193,55,170,164,142,12,206,240,187,199,228, +173,188,112,82,186,218,244,202,235,12,247,117,171,207,7,5,87,163,77,187,249,145,247,88,87,82,237,137,38,149,206,121,32,122,173,25,249,92,112,94,167,98,238,176,213,166,105,47,46,103,232,242,192,101,251,93,210,221,55,226,0,51,34,13,64,44,46,83,52,26,94, +113,87,165,33,195,175,70,253,178,93,40,245,186,254,94,116,224,212,49,191,223,179,14,42,218,31,88,156,27,54,39,72,150,138,102,247,56,126,81,240,39,165,28,31,123,15,135,111,25,171,254,166,71,178,182,102,230,167,162,198,119,76,173,194,253,7,109,155,183, +14,214,151,86,205,124,141,46,1,222,55,247,94,241,179,239,190,63,62,59,185,15,14,87,132,146,38,37,72,144,32,65,130,4,9,18,36,120,241,240,63,154,84,13,228,104,143,129,176,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* taboff_png = (const char*) temp_binary_data_16; +const char* speedometeroff_png = (const char*) temp_binary_data_16; } diff --git a/LatestCompiledAssets/BinaryData18.cpp b/LatestCompiledAssets/BinaryData18.cpp index 270649e..0c7305d 100644 --- a/LatestCompiledAssets/BinaryData18.cpp +++ b/LatestCompiledAssets/BinaryData18.cpp @@ -9,15 +9,28 @@ namespace InspectorBinaryData { -//================== tab-on.png ================== +//================== speedometer-on.png ================== static const unsigned char temp_binary_data_17[] = -{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,48,0,0,0,48,8,6,0,0,0,87,2,249,135,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,1,140,73,68,65,84,120, -1,237,216,79,78,194,64,20,6,240,239,53,192,154,45,10,9,222,160,220,64,111,224,17,240,6,237,162,18,119,176,84,76,208,19,128,55,208,19,232,13,228,8,44,4,150,118,229,66,106,159,111,192,16,241,79,226,164,117,202,132,249,45,128,161,155,247,165,111,218,153, -1,28,199,113,28,199,41,14,169,15,158,15,154,224,100,8,134,47,163,42,182,29,225,22,84,14,169,22,78,104,89,124,154,60,90,81,248,166,24,94,185,85,66,186,24,200,192,182,226,149,170,234,26,79,126,28,195,86,204,126,233,235,127,180,127,74,216,98,60,189,224, -79,195,170,7,203,185,0,69,43,193,0,126,58,15,176,168,140,232,32,140,191,93,219,236,105,237,57,104,234,14,248,168,44,238,241,15,76,182,144,207,211,203,33,114,102,120,14,164,237,188,67,104,207,1,158,245,245,91,97,181,198,250,24,72,136,89,63,166,189,40, -68,14,244,39,49,243,33,178,98,14,120,46,33,106,81,15,25,25,121,10,253,40,229,174,132,80,223,200,162,216,247,64,146,102,94,182,20,23,32,229,30,53,58,93,100,164,223,66,68,15,208,198,178,97,66,115,61,76,113,157,71,241,138,118,0,121,122,28,65,147,188,137, -71,18,188,185,26,208,13,53,162,0,57,49,219,66,170,248,122,212,70,142,76,6,24,231,93,188,98,42,192,24,175,47,218,173,247,23,70,222,3,84,239,92,253,122,45,227,14,208,109,104,138,102,125,0,226,105,255,217,194,67,173,53,79,142,233,198,176,215,157,4,72,78, -228,70,196,176,142,212,236,189,5,30,213,206,38,240,146,214,242,192,212,10,82,184,90,143,73,205,203,218,29,199,113,156,157,246,14,130,136,121,153,169,217,8,58,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; +{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,48,0,0,0,48,8,6,0,0,0,87,2,249,135,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,4,240,73,68,65,84,120, +1,237,88,77,108,27,85,16,158,89,59,169,68,15,77,15,84,77,66,133,205,129,3,66,106,144,224,220,244,200,45,135,222,147,28,17,135,196,82,227,150,11,117,46,64,236,160,36,92,56,38,225,74,164,58,18,247,132,35,8,169,201,1,36,184,212,148,54,166,24,9,115,48,168, +177,247,13,223,123,182,247,199,222,117,214,63,9,135,238,39,173,237,125,59,59,111,102,222,155,153,239,153,40,70,140,151,27,76,35,132,148,11,179,36,52,67,34,55,161,121,2,234,39,156,135,138,142,200,162,95,49,126,196,147,43,135,52,34,12,237,128,49,90,201, +60,84,205,225,110,34,218,91,92,197,85,36,75,118,135,117,102,96,7,90,209,126,128,104,207,210,112,40,65,207,42,191,150,221,161,1,208,183,3,82,222,72,145,52,182,123,27,142,8,51,157,194,176,54,234,184,46,247,92,33,166,34,241,88,134,39,51,37,234,3,86,63,194, +242,100,109,142,84,227,81,160,241,204,135,184,50,100,217,105,158,94,185,138,223,31,226,141,3,115,89,188,108,198,132,222,193,181,104,140,237,82,78,208,93,63,48,115,244,129,100,84,65,108,153,7,216,235,57,242,132,213,53,94,50,60,149,221,60,75,7,182,201, +17,190,244,181,35,229,245,59,8,68,30,87,218,35,146,162,4,63,196,92,57,228,198,42,69,64,164,21,112,141,247,153,83,117,5,120,73,30,111,116,108,15,85,9,254,13,241,223,11,151,161,239,22,140,255,30,183,223,96,181,254,240,191,42,57,51,103,4,156,233,64,115, +219,116,24,175,104,139,78,147,105,143,19,41,186,116,186,224,21,225,201,236,183,208,254,165,190,204,111,159,82,121,23,31,175,182,36,75,100,61,127,195,232,236,116,34,194,118,234,233,128,73,216,36,111,116,40,94,229,27,217,101,78,103,170,48,36,227,142,123, +86,196,227,68,151,241,26,117,235,31,215,2,217,227,235,235,53,173,83,235,246,201,37,120,219,216,208,3,61,171,144,156,228,31,154,228,114,140,164,45,51,145,87,230,55,148,83,173,232,70,127,245,28,57,240,150,121,111,242,238,79,126,125,249,77,132,117,201,181, +144,15,121,106,229,118,152,158,80,7,228,105,126,1,79,183,221,1,169,80,210,74,243,245,149,26,157,35,76,126,52,232,103,20,134,105,103,80,241,237,176,0,133,111,33,139,252,73,196,252,29,217,244,153,148,243,183,232,156,96,116,219,252,5,140,255,209,247,32, +65,161,9,109,5,43,50,93,54,229,12,48,63,198,103,205,36,158,162,15,218,203,63,74,24,157,208,141,112,163,225,209,95,152,244,23,247,161,204,182,183,106,39,130,87,64,241,188,255,94,238,65,97,133,46,12,102,174,172,111,200,146,249,32,201,144,45,36,222,242, +181,143,6,244,53,253,73,247,155,101,209,250,188,51,241,70,1,163,83,235,87,244,21,37,158,223,71,231,222,55,221,221,69,96,73,237,74,226,22,187,60,112,7,104,113,80,162,213,15,164,252,105,10,196,32,69,182,164,16,109,112,169,241,35,112,174,57,108,31,183,140, +7,36,115,55,149,208,124,222,139,113,211,250,71,103,168,238,216,151,78,103,177,248,41,220,233,130,48,99,242,77,53,39,55,33,21,124,168,250,34,37,236,34,73,194,117,32,161,180,109,135,212,211,1,133,8,184,235,82,229,107,217,129,28,104,210,15,106,245,12,112, +127,109,33,19,138,67,61,101,12,12,226,84,70,20,219,198,6,189,110,69,90,158,21,170,14,139,21,190,217,41,222,237,0,211,235,158,187,154,33,93,6,170,18,216,85,131,140,63,41,108,32,16,158,134,39,11,205,175,176,55,208,197,149,189,139,16,23,181,225,186,7,201, +179,181,92,128,224,85,58,219,1,28,3,165,61,19,143,145,82,119,28,51,202,121,138,228,132,208,2,69,65,51,73,247,233,69,109,135,211,57,67,69,220,6,202,142,50,143,252,21,58,211,129,243,70,128,209,195,32,32,137,197,163,84,49,89,137,189,214,239,200,91,8,178, +96,150,236,239,158,194,187,84,175,45,159,101,180,174,120,88,5,125,198,72,53,71,172,165,94,39,185,32,7,254,70,148,218,234,198,80,159,247,168,79,240,244,189,28,72,217,4,78,98,205,230,163,148,38,129,185,200,239,123,202,54,146,216,37,118,74,142,59,101,187, +29,176,44,212,95,167,235,77,232,250,204,147,31,149,168,79,180,88,235,50,13,1,172,196,140,47,250,150,148,58,101,186,59,177,221,81,247,101,108,134,254,47,40,221,43,60,176,173,174,146,222,189,2,141,228,17,141,215,61,74,212,44,62,139,205,6,212,88,192,50, +86,207,171,51,203,147,245,247,104,76,189,130,45,252,131,161,237,150,153,219,65,16,165,14,60,15,200,211,194,35,36,81,43,242,172,183,212,150,161,215,109,134,218,131,159,15,108,188,97,163,234,227,214,156,21,125,82,3,181,222,116,236,8,57,216,132,145,57,79, +181,129,2,93,151,189,244,250,220,97,104,251,93,55,136,20,152,192,26,193,14,8,23,3,199,117,199,212,228,110,196,209,55,154,219,108,212,161,237,252,38,69,176,41,252,72,121,82,56,112,255,192,210,173,30,181,189,241,239,230,40,154,79,47,200,49,142,148,215, +248,125,204,173,255,182,124,187,53,92,226,233,108,58,72,62,220,1,77,111,37,185,77,182,125,76,73,217,28,164,148,14,3,169,172,77,209,11,250,4,189,228,10,177,157,185,232,249,99,196,136,17,35,70,140,24,49,98,92,0,254,3,217,93,44,68,3,104,87,149,0,0,0,0,73, +69,78,68,174,66,96,130,0,0 }; -const char* tabon_png = (const char*) temp_binary_data_17; +const char* speedometeron_png = (const char*) temp_binary_data_17; } diff --git a/LatestCompiledAssets/BinaryData19.cpp b/LatestCompiledAssets/BinaryData19.cpp index f032c2f..74b74e1 100644 --- a/LatestCompiledAssets/BinaryData19.cpp +++ b/LatestCompiledAssets/BinaryData19.cpp @@ -9,20 +9,16 @@ namespace InspectorBinaryData { -//================== timing-off.png ================== +//================== tab-off.png ================== static const unsigned char temp_binary_data_18[] = -{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,27,0,0,0,32,8,6,0,0,0,227,105,3,59,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,2,231,73,68,65,84,120, -1,221,87,221,109,19,65,16,254,102,29,243,138,169,128,165,3,167,131,164,130,196,9,72,60,37,151,6,146,75,5,113,58,56,211,0,23,158,144,32,137,59,136,169,0,211,193,150,224,71,20,97,15,51,123,235,99,157,248,236,59,99,241,192,39,89,218,211,206,206,183,51,59, -127,38,172,64,210,75,115,38,62,69,77,208,11,122,147,127,206,92,213,190,193,63,196,255,75,182,179,114,215,96,72,76,14,117,241,19,147,85,219,132,154,72,222,167,22,143,216,147,101,39,252,156,92,198,225,23,198,249,48,155,212,209,177,146,44,57,76,45,27,92, -0,156,4,130,42,45,35,241,192,77,126,151,229,104,74,38,36,29,54,124,37,203,20,205,224,136,232,50,191,205,134,203,54,159,5,72,242,46,237,10,209,247,152,72,20,140,8,116,73,45,218,165,25,189,186,185,27,144,230,20,25,218,87,139,148,36,136,90,102,190,63,57, -58,191,194,58,203,60,209,148,31,16,92,166,36,104,227,108,85,162,150,103,143,210,148,225,189,209,9,154,243,155,219,193,217,82,178,226,125,188,69,5,145,88,34,111,144,161,1,130,14,189,172,213,111,33,239,127,186,251,112,61,223,47,221,24,132,54,38,82,72,84, -58,113,243,62,130,91,69,79,63,121,155,238,45,144,137,11,146,249,109,68,224,122,19,162,37,132,62,29,120,198,31,23,200,130,175,21,78,136,250,104,0,13,6,159,131,79,9,65,131,240,105,147,227,244,208,147,133,133,23,86,171,208,0,39,199,231,23,234,42,126,244, -79,176,136,25,212,59,133,117,224,11,79,198,140,131,72,96,136,154,208,96,144,176,207,194,37,7,79,247,181,170,132,180,80,182,61,205,93,3,226,174,63,32,97,94,183,236,68,81,39,199,105,80,249,198,6,163,114,189,131,174,17,86,139,194,170,31,168,9,110,249,71, -183,98,210,56,191,207,170,171,204,20,227,114,61,131,213,0,153,39,97,61,171,52,148,217,23,100,71,109,234,173,17,143,117,218,198,253,44,255,154,141,196,229,61,41,93,189,58,149,37,38,214,126,166,7,196,37,252,186,238,169,170,66,251,12,109,209,59,13,107,130, -147,0,33,239,87,46,92,179,93,76,209,141,214,206,16,227,91,248,180,113,105,217,6,162,201,204,73,164,143,141,68,73,94,110,114,253,177,109,29,52,61,66,32,137,243,138,20,48,62,183,194,135,108,38,218,102,176,5,72,135,255,211,211,218,69,101,242,209,40,77,240, -178,20,154,242,189,102,59,254,2,69,243,244,163,132,90,149,207,163,214,147,229,95,178,177,182,149,32,107,37,105,31,54,37,148,122,121,170,245,50,124,186,185,85,158,120,65,80,198,109,138,30,85,90,255,126,221,92,90,50,183,76,228,252,110,124,158,158,30,152, -17,50,138,231,123,113,131,84,138,235,42,82,239,1,131,36,84,118,91,18,181,228,162,226,177,88,118,249,116,117,148,246,163,30,55,151,212,131,78,10,175,175,161,12,188,244,69,156,125,46,117,98,57,45,99,203,46,87,57,55,250,208,37,244,27,252,139,153,172,235, -242,107,39,98,79,106,112,40,86,28,72,150,90,177,216,150,202,73,70,243,153,20,133,22,134,90,51,215,233,250,13,140,194,63,59,254,43,233,232,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; +{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,48,0,0,0,48,8,6,0,0,0,87,2,249,135,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,1,168,73,68,65,84,120, +1,237,216,63,75,195,64,24,6,240,231,174,197,185,56,232,170,238,130,126,131,254,25,220,138,171,163,159,160,77,161,70,113,150,182,86,72,179,11,142,93,107,247,54,245,19,40,184,171,223,192,44,157,66,243,122,87,84,74,208,33,228,188,244,240,126,67,201,53,16, +222,135,188,119,92,14,176,44,203,178,44,43,63,76,254,156,123,193,14,129,238,8,56,16,195,18,214,28,3,141,24,184,211,117,42,111,76,22,31,131,30,97,64,225,9,33,7,59,228,49,224,193,188,226,165,146,236,26,14,208,49,12,37,91,190,152,252,243,218,169,50,172, +177,51,111,74,43,195,18,135,225,108,128,188,21,161,193,197,96,90,143,162,104,114,211,62,154,39,239,185,94,48,94,29,247,156,74,29,41,104,121,3,49,43,236,22,138,27,87,248,3,58,91,104,207,245,131,6,20,211,59,7,98,212,84,135,72,61,7,220,193,44,125,43,80, +188,247,125,45,66,180,253,96,222,111,84,110,161,64,250,73,76,180,143,140,196,254,165,222,246,102,243,190,83,30,34,35,45,171,208,79,56,232,68,132,192,114,67,144,233,57,57,42,96,129,172,114,11,192,16,15,187,78,77,127,11,113,198,158,145,18,49,108,81,76, +219,95,99,81,252,88,69,241,82,234,0,157,102,249,18,41,185,254,131,88,58,63,3,16,38,221,86,77,201,10,36,233,109,33,81,124,175,85,241,161,144,190,85,136,227,165,215,80,91,188,164,37,0,167,197,107,180,25,41,107,155,85,90,2,116,154,213,241,111,247,210,238, +62,147,236,7,77,222,140,15,192,196,87,254,59,204,60,23,90,226,226,12,229,9,134,18,181,223,139,0,236,84,92,135,48,79,40,106,111,114,121,64,42,207,24,193,104,4,51,132,140,97,38,107,150,181,195,178,44,203,250,215,62,0,55,170,120,209,82,24,187,200,0,0,0, +0,73,69,78,68,174,66,96,130,0,0 }; -const char* timingoff_png = (const char*) temp_binary_data_18; +const char* taboff_png = (const char*) temp_binary_data_18; } diff --git a/LatestCompiledAssets/BinaryData20.cpp b/LatestCompiledAssets/BinaryData20.cpp index 3f58919..285bff2 100644 --- a/LatestCompiledAssets/BinaryData20.cpp +++ b/LatestCompiledAssets/BinaryData20.cpp @@ -9,20 +9,15 @@ namespace InspectorBinaryData { -//================== timing-on.png ================== +//================== tab-on.png ================== static const unsigned char temp_binary_data_19[] = -{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,27,0,0,0,32,8,6,0,0,0,227,105,3,59,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,2,248,73,68,65,84,120, -1,221,87,75,78,27,65,16,173,234,25,67,118,33,155,72,136,79,134,27,12,55,176,79,144,112,2,204,9,192,18,24,101,133,189,138,8,72,192,9,48,39,192,55,176,115,2,38,39,200,40,88,33,75,86,17,193,51,93,169,238,158,143,191,67,27,172,44,120,210,88,221,170,158,121, -221,213,85,175,202,8,5,160,222,113,11,16,183,193,22,34,222,192,229,207,225,84,51,252,71,188,94,50,183,208,42,157,54,56,113,8,182,120,120,115,95,100,70,176,4,221,125,241,32,118,202,32,112,9,72,242,131,33,56,252,60,184,1,110,212,238,109,190,129,197,4,103, -76,16,237,242,170,42,207,150,166,127,5,187,32,233,10,87,235,45,152,149,140,126,156,45,193,98,116,4,68,123,48,27,66,136,169,134,235,135,237,73,198,177,0,161,222,153,15,139,253,155,33,34,181,115,196,26,16,108,194,227,159,119,184,82,71,149,83,32,177,194, -235,174,120,203,97,178,210,99,215,94,211,221,201,17,60,117,50,77,132,81,39,115,153,38,137,118,138,18,53,127,247,120,15,80,28,229,238,22,45,92,217,223,153,72,166,239,71,70,55,217,98,98,119,172,30,158,195,12,208,65,68,78,135,61,224,25,62,108,224,242,65, -51,181,231,110,164,126,231,37,68,122,231,202,3,24,87,50,183,74,106,208,237,73,121,136,140,122,95,171,217,110,36,53,159,67,52,70,8,104,210,65,208,229,16,25,255,166,23,26,226,218,97,3,102,128,10,6,125,5,163,132,32,47,146,169,71,191,78,63,25,222,159,60, -72,79,69,208,132,25,64,191,79,119,149,171,64,170,43,24,193,227,194,121,118,58,160,93,77,6,14,124,204,22,244,75,109,176,37,210,9,47,141,187,137,46,70,237,90,85,84,90,24,123,89,229,174,224,129,111,172,216,181,149,29,77,68,201,105,36,92,76,189,99,41,186, -217,216,141,124,193,145,227,25,3,125,7,91,80,116,153,184,62,192,181,250,116,149,41,245,131,108,140,228,137,60,129,201,238,84,42,148,217,45,160,164,73,196,91,133,139,7,171,128,33,155,13,184,118,208,133,88,108,241,201,182,108,148,37,127,17,238,93,157,128, -218,37,248,193,250,189,245,125,187,64,42,245,189,124,226,132,28,32,144,250,181,12,243,135,159,141,92,201,100,136,223,146,169,55,40,45,115,129,200,58,179,16,223,215,3,1,127,221,214,4,227,139,97,210,67,7,146,66,215,124,94,229,150,42,37,26,178,202,58,233, -195,60,32,227,188,166,137,88,43,147,137,70,73,181,204,128,112,173,43,245,11,96,138,167,172,38,211,86,26,181,154,140,123,135,64,149,149,196,232,193,66,191,243,92,66,186,59,221,214,122,105,16,166,167,210,60,67,11,123,39,220,110,211,118,190,176,84,193,229, -90,8,54,36,99,125,11,139,176,136,54,7,115,17,199,94,40,69,231,3,132,160,202,59,8,167,57,141,52,33,169,106,101,79,171,135,34,34,170,104,143,13,96,114,119,117,123,220,224,208,25,109,90,2,35,0,137,134,146,120,203,151,224,51,129,63,210,230,5,74,198,38,169, -203,212,190,209,52,165,162,97,255,47,70,157,70,22,86,249,39,59,98,211,196,184,170,210,114,221,35,111,200,85,234,94,101,204,162,224,180,181,102,62,129,127,223,116,102,170,183,33,227,63,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; +{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,48,0,0,0,48,8,6,0,0,0,87,2,249,135,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,1,140,73,68,65,84,120, +1,237,216,79,78,194,64,20,6,240,239,53,192,154,45,10,9,222,160,220,64,111,224,17,240,6,237,162,18,119,176,84,76,208,19,128,55,208,19,232,13,228,8,44,4,150,118,229,66,106,159,111,192,16,241,79,226,164,117,202,132,249,45,128,161,155,247,165,111,218,153, +1,28,199,113,28,199,41,14,169,15,158,15,154,224,100,8,134,47,163,42,182,29,225,22,84,14,169,22,78,104,89,124,154,60,90,81,248,166,24,94,185,85,66,186,24,200,192,182,226,149,170,234,26,79,126,28,195,86,204,126,233,235,127,180,127,74,216,98,60,189,224, +79,195,170,7,203,185,0,69,43,193,0,126,58,15,176,168,140,232,32,140,191,93,219,236,105,237,57,104,234,14,248,168,44,238,241,15,76,182,144,207,211,203,33,114,102,120,14,164,237,188,67,104,207,1,158,245,245,91,97,181,198,250,24,72,136,89,63,166,189,40, +68,14,244,39,49,243,33,178,98,14,120,46,33,106,81,15,25,25,121,10,253,40,229,174,132,80,223,200,162,216,247,64,146,102,94,182,20,23,32,229,30,53,58,93,100,164,223,66,68,15,208,198,178,97,66,115,61,76,113,157,71,241,138,118,0,121,122,28,65,147,188,137, +71,18,188,185,26,208,13,53,162,0,57,49,219,66,170,248,122,212,70,142,76,6,24,231,93,188,98,42,192,24,175,47,218,173,247,23,70,222,3,84,239,92,253,122,45,227,14,208,109,104,138,102,125,0,226,105,255,217,194,67,173,53,79,142,233,198,176,215,157,4,72,78, +228,70,196,176,142,212,236,189,5,30,213,206,38,240,146,214,242,192,212,10,82,184,90,143,73,205,203,218,29,199,113,156,157,246,14,130,136,121,153,169,217,8,58,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* timingon_png = (const char*) temp_binary_data_19; +const char* tabon_png = (const char*) temp_binary_data_19; } diff --git a/LatestCompiledAssets/BinaryData21.cpp b/LatestCompiledAssets/BinaryData21.cpp new file mode 100644 index 0000000..6e7d6b3 --- /dev/null +++ b/LatestCompiledAssets/BinaryData21.cpp @@ -0,0 +1,28 @@ +/* ==================================== JUCER_BINARY_RESOURCE ==================================== + + This is an auto-generated file: Any edits you make may be overwritten! + +*/ + +#include + +namespace InspectorBinaryData +{ + +//================== timing-off.png ================== +static const unsigned char temp_binary_data_20[] = +{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,27,0,0,0,32,8,6,0,0,0,227,105,3,59,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,2,231,73,68,65,84,120, +1,221,87,221,109,19,65,16,254,102,29,243,138,169,128,165,3,167,131,164,130,196,9,72,60,37,151,6,146,75,5,113,58,56,211,0,23,158,144,32,137,59,136,169,0,211,193,150,224,71,20,97,15,51,123,235,99,157,248,236,59,99,241,192,39,89,218,211,206,206,183,51,59, +127,38,172,64,210,75,115,38,62,69,77,208,11,122,147,127,206,92,213,190,193,63,196,255,75,182,179,114,215,96,72,76,14,117,241,19,147,85,219,132,154,72,222,167,22,143,216,147,101,39,252,156,92,198,225,23,198,249,48,155,212,209,177,146,44,57,76,45,27,92, +0,156,4,130,42,45,35,241,192,77,126,151,229,104,74,38,36,29,54,124,37,203,20,205,224,136,232,50,191,205,134,203,54,159,5,72,242,46,237,10,209,247,152,72,20,140,8,116,73,45,218,165,25,189,186,185,27,144,230,20,25,218,87,139,148,36,136,90,102,190,63,57, +58,191,194,58,203,60,209,148,31,16,92,166,36,104,227,108,85,162,150,103,143,210,148,225,189,209,9,154,243,155,219,193,217,82,178,226,125,188,69,5,145,88,34,111,144,161,1,130,14,189,172,213,111,33,239,127,186,251,112,61,223,47,221,24,132,54,38,82,72,84, +58,113,243,62,130,91,69,79,63,121,155,238,45,144,137,11,146,249,109,68,224,122,19,162,37,132,62,29,120,198,31,23,200,130,175,21,78,136,250,104,0,13,6,159,131,79,9,65,131,240,105,147,227,244,208,147,133,133,23,86,171,208,0,39,199,231,23,234,42,126,244, +79,176,136,25,212,59,133,117,224,11,79,198,140,131,72,96,136,154,208,96,144,176,207,194,37,7,79,247,181,170,132,180,80,182,61,205,93,3,226,174,63,32,97,94,183,236,68,81,39,199,105,80,249,198,6,163,114,189,131,174,17,86,139,194,170,31,168,9,110,249,71, +183,98,210,56,191,207,170,171,204,20,227,114,61,131,213,0,153,39,97,61,171,52,148,217,23,100,71,109,234,173,17,143,117,218,198,253,44,255,154,141,196,229,61,41,93,189,58,149,37,38,214,126,166,7,196,37,252,186,238,169,170,66,251,12,109,209,59,13,107,130, +147,0,33,239,87,46,92,179,93,76,209,141,214,206,16,227,91,248,180,113,105,217,6,162,201,204,73,164,143,141,68,73,94,110,114,253,177,109,29,52,61,66,32,137,243,138,20,48,62,183,194,135,108,38,218,102,176,5,72,135,255,211,211,218,69,101,242,209,40,77,240, +178,20,154,242,189,102,59,254,2,69,243,244,163,132,90,149,207,163,214,147,229,95,178,177,182,149,32,107,37,105,31,54,37,148,122,121,170,245,50,124,186,185,85,158,120,65,80,198,109,138,30,85,90,255,126,221,92,90,50,183,76,228,252,110,124,158,158,30,152, +17,50,138,231,123,113,131,84,138,235,42,82,239,1,131,36,84,118,91,18,181,228,162,226,177,88,118,249,116,117,148,246,163,30,55,151,212,131,78,10,175,175,161,12,188,244,69,156,125,46,117,98,57,45,99,203,46,87,57,55,250,208,37,244,27,252,139,153,172,235, +242,107,39,98,79,106,112,40,86,28,72,150,90,177,216,150,202,73,70,243,153,20,133,22,134,90,51,215,233,250,13,140,194,63,59,254,43,233,232,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; + +const char* timingoff_png = (const char*) temp_binary_data_20; +} diff --git a/LatestCompiledAssets/BinaryData22.cpp b/LatestCompiledAssets/BinaryData22.cpp new file mode 100644 index 0000000..bd544d4 --- /dev/null +++ b/LatestCompiledAssets/BinaryData22.cpp @@ -0,0 +1,28 @@ +/* ==================================== JUCER_BINARY_RESOURCE ==================================== + + This is an auto-generated file: Any edits you make may be overwritten! + +*/ + +#include + +namespace InspectorBinaryData +{ + +//================== timing-on.png ================== +static const unsigned char temp_binary_data_21[] = +{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,27,0,0,0,32,8,6,0,0,0,227,105,3,59,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82,36,240,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,2,248,73,68,65,84,120, +1,221,87,75,78,27,65,16,173,234,25,67,118,33,155,72,136,79,134,27,12,55,176,79,144,112,2,204,9,192,18,24,101,133,189,138,8,72,192,9,48,39,192,55,176,115,2,38,39,200,40,88,33,75,86,17,193,51,93,169,238,158,143,191,67,27,172,44,120,210,88,221,170,158,121, +221,213,85,175,202,8,5,160,222,113,11,16,183,193,22,34,222,192,229,207,225,84,51,252,71,188,94,50,183,208,42,157,54,56,113,8,182,120,120,115,95,100,70,176,4,221,125,241,32,118,202,32,112,9,72,242,131,33,56,252,60,184,1,110,212,238,109,190,129,197,4,103, +76,16,237,242,170,42,207,150,166,127,5,187,32,233,10,87,235,45,152,149,140,126,156,45,193,98,116,4,68,123,48,27,66,136,169,134,235,135,237,73,198,177,0,161,222,153,15,139,253,155,33,34,181,115,196,26,16,108,194,227,159,119,184,82,71,149,83,32,177,194, +235,174,120,203,97,178,210,99,215,94,211,221,201,17,60,117,50,77,132,81,39,115,153,38,137,118,138,18,53,127,247,120,15,80,28,229,238,22,45,92,217,223,153,72,166,239,71,70,55,217,98,98,119,172,30,158,195,12,208,65,68,78,135,61,224,25,62,108,224,242,65, +51,181,231,110,164,126,231,37,68,122,231,202,3,24,87,50,183,74,106,208,237,73,121,136,140,122,95,171,217,110,36,53,159,67,52,70,8,104,210,65,208,229,16,25,255,166,23,26,226,218,97,3,102,128,10,6,125,5,163,132,32,47,146,169,71,191,78,63,25,222,159,60, +72,79,69,208,132,25,64,191,79,119,149,171,64,170,43,24,193,227,194,121,118,58,160,93,77,6,14,124,204,22,244,75,109,176,37,210,9,47,141,187,137,46,70,237,90,85,84,90,24,123,89,229,174,224,129,111,172,216,181,149,29,77,68,201,105,36,92,76,189,99,41,186, +217,216,141,124,193,145,227,25,3,125,7,91,80,116,153,184,62,192,181,250,116,149,41,245,131,108,140,228,137,60,129,201,238,84,42,148,217,45,160,164,73,196,91,133,139,7,171,128,33,155,13,184,118,208,133,88,108,241,201,182,108,148,37,127,17,238,93,157,128, +218,37,248,193,250,189,245,125,187,64,42,245,189,124,226,132,28,32,144,250,181,12,243,135,159,141,92,201,100,136,223,146,169,55,40,45,115,129,200,58,179,16,223,215,3,1,127,221,214,4,227,139,97,210,67,7,146,66,215,124,94,229,150,42,37,26,178,202,58,233, +195,60,32,227,188,166,137,88,43,147,137,70,73,181,204,128,112,173,43,245,11,96,138,167,172,38,211,86,26,181,154,140,123,135,64,149,149,196,232,193,66,191,243,92,66,186,59,221,214,122,105,16,166,167,210,60,67,11,123,39,220,110,211,118,190,176,84,193,229, +90,8,54,36,99,125,11,139,176,136,54,7,115,17,199,94,40,69,231,3,132,160,202,59,8,167,57,141,52,33,169,106,101,79,171,135,34,34,170,104,143,13,96,114,119,117,123,220,224,208,25,109,90,2,35,0,137,134,146,120,203,151,224,51,129,63,210,230,5,74,198,38,169, +203,212,190,209,52,165,162,97,255,47,70,157,70,22,86,249,39,59,98,211,196,184,170,210,114,221,35,111,200,85,234,94,101,204,162,224,180,181,102,62,129,127,223,116,102,170,183,33,227,63,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; + +const char* timingon_png = (const char*) temp_binary_data_21; +} diff --git a/LatestCompiledAssets/InspectorBinaryData.h b/LatestCompiledAssets/InspectorBinaryData.h index 507e1c2..5b218e3 100644 --- a/LatestCompiledAssets/InspectorBinaryData.h +++ b/LatestCompiledAssets/InspectorBinaryData.h @@ -38,6 +38,12 @@ namespace InspectorBinaryData extern const char* eyedropperon_png; const int eyedropperon_pngSize = 671; + extern const char* lockoff_png; + const int lockoff_pngSize = 516; + + extern const char* lockon_png; + const int lockon_pngSize = 474; + extern const char* logo_png; const int logo_pngSize = 25781; @@ -69,7 +75,7 @@ namespace InspectorBinaryData const int timingon_pngSize = 867; // Number of elements in the namedResourceList and originalFileNames arrays. - const int namedResourceListSize = 20; + const int namedResourceListSize = 22; // Points to the start of a list of resource names. extern const char* namedResourceList[]; From be8843fa745ec2490922a1a6fdb2787116c5d963 Mon Sep 17 00:00:00 2001 From: Sudara Date: Sat, 25 May 2024 19:21:59 +0200 Subject: [PATCH 37/37] Add Selection Lock --- melatonin/helpers/overlay_mouse_listener.h | 19 +++++---- melatonin/inspector_component.h | 48 ++++++++-------------- melatonin_inspector.cpp | 2 + melatonin_inspector.h | 19 ++++++--- 4 files changed, 44 insertions(+), 44 deletions(-) diff --git a/melatonin/helpers/overlay_mouse_listener.h b/melatonin/helpers/overlay_mouse_listener.h index 9e2a699..52b4c74 100644 --- a/melatonin/helpers/overlay_mouse_listener.h +++ b/melatonin/helpers/overlay_mouse_listener.h @@ -36,19 +36,20 @@ namespace melatonin void enable() { - // replace me with an if condition if you are hitting this on purpose - jassert (!enabled); + if (enabled) + return; + enabled = true; root->addMouseListener (this, true); } void disable() { - if (enabled) - { - enabled = false; - root->removeMouseListener (this); - } + if (!enabled) + return; + + enabled = false; + root->removeMouseListener (this); } void enableDragging (bool enable) @@ -80,7 +81,7 @@ namespace melatonin void mouseDown (const juce::MouseEvent& event) override { - if(!dragEnabled) + if (!dragEnabled) return; if (event.mods.isLeftButtonDown() && event.originalComponent->isMouseOverOrDragging()) @@ -91,7 +92,7 @@ namespace melatonin void mouseDrag (const juce::MouseEvent& event) override { - if(!dragEnabled) + if (!dragEnabled) return; // takes care of small mouse position drift on selection diff --git a/melatonin/inspector_component.h b/melatonin/inspector_component.h index afab45e..27be586 100644 --- a/melatonin/inspector_component.h +++ b/melatonin/inspector_component.h @@ -27,7 +27,8 @@ namespace melatonin setMouseClickGrabsKeyboardFocus (false); addAndMakeVisible (enabledButton); - addAndMakeVisible (enableDragging); + addAndMakeVisible (lockedButton); + addAndMakeVisible (enableDraggingButton); addAndMakeVisible (fpsToggle); addAndMakeVisible (logo); addAndMakeVisible (fpsToggle); @@ -137,21 +138,13 @@ namespace melatonin }; // TODO: refactor this "on" state, it's terribly named - enableDragging.on = settings->props->getBoolValue ("enableDragging", false); - enableDragging.onClick = [this] { - if (enableDragging.on) - tabToggle.on = false; - - toggleMoveCallback (enableDragging.on); - toggleSelectionMode (tabToggle.on); - - settings->props->setValue("enableDragging",enableDragging.on); + enableDraggingButton.on = settings->props->getBoolValue ("enableDragging", false); + enableDraggingButton.onClick = [this] { + toggleDragEnabledCallback (enableDraggingButton.on); }; fpsToggle.on = false; fpsToggle.onClick = [this] { - // TODO: I don't like that the "on" state implicitly was toggled here - settings->props->setValue ("fpsEnabled", fpsToggle.on); toggleFPSCallback (fpsToggle.on); }; @@ -163,22 +156,14 @@ namespace melatonin // TODO: sorta sketchy to "know" the enum default... tabToggle.on = settings->props->getIntValue ("selectionMode", 0); tabToggle.onClick = [this] { - settings->props->setValue ("selectionMode", tabToggle.on); toggleSelectionMode (tabToggle.on); - - toggleMoveCallback (enableDragging.on); - - if (tabToggle.on) - { - enableDragging.on = false; - toggleMoveCallback(false); - } - enableDragging.repaint(); }; - // the tree view is empty even if inspector is enabled - // since at the moment when this panel getting initialized, the root component most likely doesn't have any children YET - // we can either wait and launch async update or add empty label + // we don't store this in props + lockedButton.on = false; + lockedButton.onClick = [this] { + toggleLockCallback (lockedButton.on); + }; } ~InspectorComponent() override @@ -266,7 +251,8 @@ namespace melatonin enabledButton.setBounds (toolbar.removeFromLeft (48)); fpsToggle.setBounds (toolbar.removeFromLeft (42)); tabToggle.setBounds (toolbar.removeFromLeft (42)); - enableDragging.setBounds (toolbar.removeFromLeft (42)); + lockedButton.setBounds (toolbar.removeFromLeft (36)); + enableDraggingButton.setBounds (toolbar.removeFromLeft (40)); logo.setBounds (toolbar.removeFromRight (56)); mainCol.removeFromTop (12); @@ -408,7 +394,8 @@ namespace melatonin std::function toggleOverlayCallback; std::function toggleFPSCallback; std::function toggleSelectionMode; - std::function toggleMoveCallback; + std::function toggleDragEnabledCallback; + std::function toggleLockCallback; private: Component::SafePointer selectedComponent; @@ -443,15 +430,16 @@ namespace melatonin InspectorImageButton clearButton { "clear", { 0, 6 } }; InspectorImageButton searchIcon { "search", { 8, 8 } }; InspectorImageButton enabledButton { "enabled", { 8, 6 }, true }; - InspectorImageButton enableDragging { "move", { -1, 7 }, true }; + InspectorImageButton lockedButton { "lock", { 0, 6 }, true }; + InspectorImageButton enableDraggingButton { "move", { -1, 7 }, true }; InspectorImageButton fpsToggle { "speedometer", { 2, 7 }, true }; - InspectorImageButton tabToggle { "tab", { 0, 6 }, true }; + InspectorImageButton tabToggle { "tab", { 1, 6 }, true }; juce::String lastSearchText; std::unique_ptr rootItem; - ComponentTreeViewItem* getRoot() + ComponentTreeViewItem* getRoot() const { return dynamic_cast (tree.getRootItem()); } diff --git a/melatonin_inspector.cpp b/melatonin_inspector.cpp index d742f71..d5b61c8 100644 --- a/melatonin_inspector.cpp +++ b/melatonin_inspector.cpp @@ -19,6 +19,8 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE("-Wredundant-decls") #include "LatestCompiledAssets/BinaryData19.cpp" #include "LatestCompiledAssets/BinaryData2.cpp" #include "LatestCompiledAssets/BinaryData20.cpp" +#include "LatestCompiledAssets/BinaryData21.cpp" +#include "LatestCompiledAssets/BinaryData22.cpp" #include "LatestCompiledAssets/BinaryData3.cpp" #include "LatestCompiledAssets/BinaryData4.cpp" #include "LatestCompiledAssets/BinaryData5.cpp" diff --git a/melatonin_inspector.h b/melatonin_inspector.h index 52845d6..197f73c 100644 --- a/melatonin_inspector.h +++ b/melatonin_inspector.h @@ -220,7 +220,7 @@ namespace melatonin TRACE_COMPONENT(); // don't dogfood the overlay - if (!inspectorEnabled || overlay.isParentOf (c)) + if (!inspectorEnabled || overlay.isParentOf (c) || selectionLock) return; overlay.outlineComponent (c); @@ -241,7 +241,7 @@ namespace melatonin { TRACE_COMPONENT(); - if (!inspectorEnabled || overlay.isParentOf (c)) + if (!inspectorEnabled || overlay.isParentOf (c) || selectionLock) return; overlay.selectComponent (c); @@ -343,6 +343,7 @@ namespace melatonin InspectorComponent inspectorComponent; juce::Component::SafePointer root; bool inspectorEnabled = false; + bool selectionLock = false; Overlay overlay; FPSMeter fpsMeter; OverlayMouseListener overlayMouseListener; @@ -416,11 +417,13 @@ namespace melatonin if (enable) this->fpsMeter.setBounds (root->getLocalBounds().removeFromRight (60).removeFromTop (40)); this->fpsMeter.setVisible (enable); - }; + settings->props->setValue ("fpsEnabled", enable); - inspectorComponent.toggleMoveCallback = [this] (const bool enable) { this->setDraggingEnabled (enable); }; + }; + inspectorComponent.toggleDragEnabledCallback = [this] (const bool enable) { this->setDraggingEnabled (enable); }; inspectorComponent.toggleSelectionMode = [this] (const bool enable) { this->setSelectionMode (enable ? FOLLOWS_FOCUS : FOLLOWS_MOUSE); }; + inspectorComponent.toggleLockCallback = [this] (const bool enable) { this->setSelectionLock (enable); }; } enum SelectionMode { @@ -465,11 +468,17 @@ namespace melatonin { overlayMouseListener.enableDragging (enable); overlay.enableDragging (enable); + settings->props->setValue ("enableDragging", enable); + } + + void setSelectionLock (const bool enable) + { + selectionLock = enable; } void restoreStateFromProps() { - setDraggingEnabled(settings->props->getBoolValue ("enableDragging", false)); + setDraggingEnabled (settings->props->getBoolValue ("enableDragging", false)); setSelectionMode (static_cast (settings->props->getIntValue ("inspectorSelectionMode", FOLLOWS_MOUSE))); } };