// -*- C++ -*-
// Module:  Log4CPLUS
// File:    loggerfactory.h
// Created: 6/2001
// Author:  Tad E. Smith
//
//
// Copyright 2001-2009 Tad E. Smith
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/** @file */

#ifndef _LOG4CPLUS_SPI_LOGGER_FACTORY_HEADER
#define _LOG4CPLUS_SPI_LOGGER_FACTORY_HEADER

#include <log4cplus/config.hxx>
#include <log4cplus/tstring.h>
#include <log4cplus/helpers/pointer.h>

namespace log4cplus {
    // Forward Declarations
    class Logger;
    class Hierarchy;

    namespace spi {
        /**
         * Implement this interface to create new instances of Logger or
         * a sub-class of Logger.
         */
        class LOG4CPLUS_EXPORT LoggerFactory {
        public:
            /**
             * Creates a new Logger object.
             */
            virtual Logger makeNewLoggerInstance(const log4cplus::tstring& name,
                                                 Hierarchy& h) = 0;
            virtual ~LoggerFactory() = 0;
        };

    } // end namespace spi
} // end namespace log4cplus

#endif // _LOG4CPLUS_SPI_LOGGER_FACTORY_HEADER


},
            Point{x: self.x + 0, y: self.y - 1},
            Point{x: self.x + 1, y: self.y - 1},
        ]
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn spiral_point_correct() {
        let tests = vec![
            (0, Point{x: 0, y: 0}),
            (1, Point{x: 1, y: 0}),
            (2, Point{x: 1, y: 1}),
        ];

        for t in tests {
            assert_eq!(Point::new(t.0), t.1)
        }
    }

    #[test]
    fn spiral_distance_correct() {
        let tests = vec![
            (0, 0),
            (1, 1),
            (2, 2),
            (11, 3),
            (22, 2),
            (1023, 31),
        ];

        for t in tests {
            assert_eq!(Point::new(t.0).manhattan_distance_from_origin(), t.1);
        }
    }
}

const PUZZLE: &'static str = "Spiral Memory";
const INPUT: &'static str = r"
289326
";
use crate::ffi;
use crate::types::{PyAny, PyBytes};
use crate::{AsPyPointer, FromPyPointer, PyResult, Python};
use std::os::raw::{c_char, c_int};

/// The current version of the marshal binary format.
pub const VERSION: i32 = 4;

/// Serialize an object to bytes using the Python built-in marshal module.
///
/// The built-in marshalling only supports a limited range of object.
/// The exact types supported depend on the version argument.
/// The [`VERSION`] constant holds the highest version currently supported.
///
/// See the [python documentation](https://docs.python.org/3/library/marshal.html) for more details.
///
/// # Example:
/// ```
/// # use pyo3::{marshal, types::PyDict};
/// # let gil = pyo3::Python::acquire_gil();
/// # let py = gil.python();
/// #
/// let dict = PyDict::new(py);
/// dict.set_item("aap", "noot").unwrap();
/// dict.set_item("mies", "wim").unwrap();
/// dict.set_item("zus", "jet").unwrap();
///
/// let bytes = marshal::dumps(py, dict, marshal::VERSION);
/// ```
pub fn dumps<'a>(py: Python<'a>, object: &impl AsPyPointer, version: i32) -> PyResult<&'a PyBytes> {
    unsafe {
        let bytes = ffi::PyMarshal_WriteObjectToString(object.as_ptr(), version as c_int);
        FromPyPointer::from_owned_ptr_or_err(py, bytes)
    }
}

/// Deserialize an object from bytes using the Python built-in marshal module.
pub fn loads<'a, B>(py: Python<'a>, data: &B) -> PyResult<&'a PyAny>
where
    B: AsRef<[u8]> + ?Sized,
{
    let data = data.as_ref();
    unsafe {
        let c_str = data.as_ptr() as *const c_char;
        let object = ffi::PyMarshal_ReadObjectFromString(c_str, data.len() as isize);
        FromPyPointer::from_owned_ptr_or_err(py, object)
    }
}

#[cfg(test)]
mod test {
    use super::*;
    use crate::types::PyDict;

    #[test]
    fn marhshal_roundtrip() {
        let gil = Python::acquire_gil();
        let py = gil.python();

        let dict = PyDict::new(py);
        dict.set_item("aap", "noot").unwrap();
        dict.set_item("mies", "wim").unwrap();
        dict.set_item("zus", "jet").unwrap();

        let bytes = dumps(py, dict, VERSION)
            .expect("marshalling failed")


using System;

namespace RtmpSharp.Net
{
    // we use this for responding to invoke requests. but this version of rtmp-sharp doesn't include functionality for
    // handling invocation requests, and is thus currently unused
    class StatusAsObject : AsObject
    {
        readonly Exception exception;

        public StatusAsObject(Exception exception)
            => this.exception = exception;

        public StatusAsObject(string code, string level, string description, object application, ObjectEncoding encoding)
        {
            this["code"]           = code;


3|S|
C The Dead Mire|QID|9782|M|83.80,43.3;70.71,43.44|CN|N|Go to either waypoint and loot the soil that should be near it.|
l Withered Basidium|QID|9901|N|Kill Withered Giants until you get the Withered Basidium, it has quite a low drop chance so it might take a while.|L|24483|US|
A Withered Basidium|QID|9827|M|78.3,45.2|N|Right Click the Withered Basidium.|U|24483|
C Menacing Marshfangs|QID|9791|M|85.00,47.0|N|Kill the rest of the Marshfang Rippers for this quest.|US|
; Back to Telredor
T Fulgor Spores|QID|9777|M|68.6,48.7|N|To Ruam.|
T Withered Basidium|QID|9827|M|68.6,48.7|N|To Ruam.|
A Withered Flesh|QID|10355|PRE|9827|M|68.6,48.7|N|From Ruam.|
T Unfinished Business|QID|9901|M|68.6,49.4|N|To Prospector Conall.|
T The Dead Mire|QID|9782|M|68.3,50.1|N|To Vindicator Idaar.|
A An Unnatural Drought|QID|9783|PRE|9782|M|68.3,50.1|N|From Vindicator Idaar.|
T Menacing Marshfangs|QID|9791|M|67.7,48.0|N|To Noraani.|
C An Unnatural Drought|QID|9783|M|82.00,39.0|N|Kill Withered Giants until you are finished this quest.|S|
C Withered Flesh|QID|10355|M|80.00,40.0|N|Kill and loot Hydras and Bog Lords for their various samples.|
C Plants of Zangarmarsh|QID|9802|M|80.1,73.3|N|Keep killing and looting mobs until you get the plant parts for this quest.|
C An Unnatural Drought|QID|9783|M|82.00,39.0|N|Kill mobs until you finish this quest.|US|
l Unidentified Plant Parts|ACTIVE|9802|M|82.00,39.0|L|24401 30|N|Kill mobs until you have at least 30 Unidentified Plant Parts.\n[Blessings of the Ancients] appears when you are Friendly with the Cenarion Expedition.|S|
; Back to Telredor
T Withered Flesh|QID|10355|M|68.6,48.7|N|To Ruam.|
T An Unnatural Drought|QID|9783|M|68.3,50.1|N|To Vindicator Idaar.|
A Too Many Mouths to Feed|QID|9781|M|67.7,48.0|N|From Haalrun.|
A Umbrafen Eel Filets|QID|9780|PRE|9791|M|67.7,48.0|N|From Noraani.|
; Umbrafen Lake
C Too Many Mouths to Feed|QID|9781|M|75.50,71.18|N|Kill the Hydras.|S|T|Mire Hydra|
C Umbrafen Eel Filets|QID|9780|M|75.50,71.18|N|Kill Eels until you have 8 Eel Filets. You may need to use the potion of underwater breathing.|U|25539|
C Too Many Mouths to Feed|QID|9781|M|75.50,71.18|N|Kill the rest of the Hydras needed for this quest in the lake.|US|T|Mire Hydra|
C The Dying Balance|QID|9895|M|82.04,71.73|N|Kill Boglash, he wanders so it may take a minute to find him.|T|Boglash|
C Umbrafen Oracle|QID|9747|QO|2|M|83.40,82.80;82.70,85.35;85


ponentialWeightedMovingAverage = EMA(span=5, inputs=[OHLCV.close])
AverageDollarVolume(win=5, inputs=[OHLCV.close, OHLCV.volume])
AnnualizedVolatility(win=20, inputs=[Returns(win=2), 252])
BollingerBands = BBANDS(win=20, inputs=[OHLCV.close, 2])
MovingAverageConvergenceDivergenceSignal = MACD(12, 26, 9, inputs=[OHLCV.close])
TrueRange = TRANGE(inputs=[OHLCV.high, OHLCV.low, OHLCV.close])
RSI(win=14, inputs=[OHLCV.close])
FastStochasticOscillator = STOCHF(win=14, inputs=[OHLCV.high, OHLCV.low, OHLCV.close])

StandardDeviation = STDDEV(win=5, inputs=[OHLCV.close])
RollingHigh = MAX(win=5, inputs=[OHLCV.close])
RollingLow = MIN(win=5, inputs=[OHLCV.close])
```

## Factors Common Methods

```python
# Standardization
new_factor = factor.rank(mask=filter)
new_factor = factor.demean(mask=filter, groupby: 'dict or column_name'=None)
new_factor = factor.zscore(mask=filter)
new_factor = factor.to_weight(mask=filter, demean=True)  # return a weight that sum(abs(weight)) = 1

# Quick computation
new_factor = factor1 + factor1
new_factor = factor.abs()
new_factor = factor.sum()

# To filter (Comparison operator):
new_filter = (factor1 < factor2) | (factor1 > 0)
new_filter[n_features] = factor.one_hot()  # one-hot encoding
new_filter = factor.any(win=5)
new_filter = factor.all(win=5)
# Rank filter
new_filter = factor.top(n)
new_filter = factor.bottom(n)
# Specific assets
new_filter = StaticAssets({'AAPL', 'MSFT'})

# Local filter
new_factor = factor.filter(mask=filter_factor)   # fill self unmasked elements with NaNs

# Multiple returns selecting
new_factor = factor[0]

# Others
new_factor = factor.shift(1)
new_factor = factor.quantile(bins=5)  # factor value cross section quantile
new_factor = factor.fill_na(0)
new_factor = factor.fill_na(ffill=True)  # propagate last valid observation forward to next valid

```

## Dataloader

### CsvDirLoader
`loader = spectre.data.CsvDirLoader(prices_path: str, prices_by_year=False, earliest_date: pd.Timestamp = None,
              dividends_path=None, splits_path=None, file_pattern='*.csv', calender_asset: str = None, align_by_time=False,
              ohlcv=('open', 'high', 'low', 'close', 'volume'), adjustments=None,
              split_ratio_is_inverse=False, split_ratio_is_fraction=False,
              prices_index='date', dividends_index='exDate', splits_index='exDate', **read_csv)`

Read CSV files in the directory, each file represents an asset.

Reading csv is very slow, so you also need to use [ArrowLoader](#arrowloader).

**prices_path:** Prices csv folder. When encountering duplicate datetime in `prices_index`,
    Loader will keep the last, drop others.\
**prices_index:** `index_col`for csv in `prices_path`\
**prices_by_year:** If prices file name like 'spy_2017.csv', set this to True\
**ohlcv:** Required, OHLCV column names. When you don't need to use `adjustments` and
    `factors.OHLCV`, you can set this to None.\
**adjustments:** Optional, list, `dividend amount` and `splits ratio` column names.\
**dividends_path:** Dividends csv folder, structured as one csv per asset.
    For duplicate data, loader will first drop the exact same rows, and then for the same
    `dividends_index` but


n new() -> BVHBuildNode<'a> {
        BVHBuildNode{
            bounds: Bounds3f::default(),
            child1: None,
            child2: None,
            split_axis: 0,
            first_prim_offset: 0,
            n_primitives: 0
        }
    }

    pub fn init_leaf(&mut self, first: usize, n: usize, b: &Bounds3f) {
        self.first_prim_offset = first;
        self.n_primitives = n;
        self.bounds = *b;
        self.child1 = None;
        self.child2 = None;
        StatsAccumulator::instance().report_counter(String::from("BVH/Leaf nodes"), 1);
        StatsAccumulator::instance().report_ratio(String::from("BVH/Primitives per leaf node"), n as i64, 1);
    }

    pub fn init_interior(
        &mut self,
        axis: u8,
        c0: &'a mut BVHBuildNode<'a>,
        c1: &'a mut BVHBuildNode<'a>
    ) {
        self.n_primitives = 0;
        self.bounds = c0.bounds.union(&c1.bounds).aabb();
        self.split_axis = axis;
        self.child1 = Some(c0);
        self.child2 = Some(c1);
        StatsAccumulator::instance().report_counter(String::from("BVH/Interior nodes"), 1);
    }
}

pub struct BVHPrimitiveInfo {
    pub primitive_number: usize,
    pub bounds: Box<dyn Bounding3<Float>>,
    pub centroid: Point3f
}

unsafe impl Send for BVHPrimitiveInfo {}

impl BVHPrimitiveInfo {
    pub fn new(primitive_number: usize, bounds: Box<dyn Bounding3<Float>>) -> BVHPrimitiveInfo {
        BVHPrimitiveInfo {
            primitive_number,
            bounds,
            centroid: bounds.centroid()
        }
    }
}

impl Default for BVHPrimitiveInfo {
    fn default() -> BVHPrimitiveInfo {
        BVHPrimitiveInfo{
            primitive_number: 0,
            bounds: Box::new(Bounds3f::default()),
            centroid: Point3f::default()
        }
    }
}

#[derive(Debug, Default, Copy, Clone)]
pub struct MortonPrimitive {
    pub primitive_index: usize,
    pub morton_code: u32
}

#[derive(Debug, Default, Copy, Clone)]
struct BucketInfo {
    pub count: usize,
    pub bounds: Bounds3f
}

#[derive(Debug)]
struct LBVHTreelet<'a> {
    start_index: usize,
    n_primitives: usize,
    build_nodes: Vec<&'a mut BVHBuildNode<'a>>
}

const morton_bits: u32 = 10;
const morton_scale: u32 = 1 << morton_bits;

#[inline]
fn left_shift_3(mut x: u32) -> u32 {
    assert!(x <= morton_scale);
    if x == morton_scale {
        x -= 1;
    }
    x = (x | (x << 16)) & 0b00000011000000000000000011111111;
    // x = ---- --98 ---- ---- ---- ---- 7654 3210
    x = (x | (x << 8)) & 0b00000011000000001111000000001111;
    // x = ---- --98 ---- ---- 7654 ---- ---- 3210
    x = (x | (x << 4)) & 0b00000011000011000011000011000011;
    // x = ---- --98 ---- 76-- --54 ---- 32-- --10
    x = (x | (x << 2)) & 0b00001001001001001001001001001001;
    // x = ---- 9--8 --7- -6-- 5--4 --3- -2-- 1--0
    x
}

#[inline]
fn encode_morton_3(v: &Vector3f) -> u32  {
    assert!(v.x >= num::zero() && v.y >= num::zero() && v.z >= num::zero());
    (left_shift_3(v.z as u32) << 2) | (left_shift_3(v.y as u32) << 1) | left_shift_


, r, r, 0, startAngle, endAngle, anticlockwise);
        };
        SVGPathRebuilder.prototype.ellipse = function (cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise) {
            var firstCmd = this._d.length === 0;
            var dTheta = endAngle - startAngle;
            var clockwise = !anticlockwise;
            var dThetaPositive = Math.abs(dTheta);
            var isCircle = isAroundZero$1(dThetaPositive - PI2$7)
                || (clockwise ? dTheta >= PI2$7 : -dTheta >= PI2$7);
            var unifiedTheta = dTheta > 0 ? dTheta % PI2$7 : (dTheta % PI2$7 + PI2$7);
            var large = false;
            if (isCircle) {
                large = true;
            }
            else if (isAroundZero$1(dThetaPositive)) {
                large = false;
            }
            else {
                large = (unifiedTheta >= PI$4) === !!clockwise;
            }
            var x0 = round4(cx + rx * mathCos$4(startAngle));
            var y0 = round4(cy + ry * mathSin$4(startAngle));
            if (isCircle) {
                if (clockwise) {
                    dTheta = PI2$7 - 1e-4;
                }
                else {
                    dTheta = -PI2$7 + 1e-4;
                }
                large = true;
                if (firstCmd) {
                    this._d.push('M', x0, y0);
                }
            }
            var x = round4(cx + rx * mathCos$4(startAngle + dTheta));
            var y = round4(cy + ry * mathSin$4(startAngle + dTheta));
            if (isNaN(x0) || isNaN(y0) || isNaN(rx) || isNaN(ry) || isNaN(psi) || isNaN(degree) || isNaN(x) || isNaN(y)) {
                return '';
            }
            this._d.push('A', round4(rx), round4(ry), mathRound(psi * degree), +large, +clockwise, x, y);
        };
        SVGPathRebuilder.prototype.rect = function (x, y, w, h) {
            this._add('M', x, y);
            this._add('L', x + w, y);
            this._add('L', x + w, y + h);
            this._add('L', x, y + h);
            this._add('L', x, y);
        };
        SVGPathRebuilder.prototype.closePath = function () {
            if (this._d.length > 0) {
                this._add('Z');
            }
        };
        SVGPathRebuilder.prototype._add = function (cmd, a, b, c, d, e, f, g, h) {
            this._d.push(cmd);
            for (var i = 1; i < arguments.length; i++) {
                var val = arguments[i];
                if (isNaN(val)) {
                    this._invalid = true;
                    return;
                }
                this._d.push(round4(val));
            }
        };
        SVGPathRebuilder.prototype.generateStr = function () {
            this._str = this._invalid ? '' : this._d.join(' ');
            this._d = [];
        };
        SVGPathRebuilder.prototype.getStr = function () {
            return this._str;
        };
        return SVGPathRebuilder;
    }());
    var svgPath = {
        brush: function (el) {
            var style = el.style;
            var svgEl = el.__svgEl;
            if (!svgEl) {
                svgEl = createElement('path');
                el.__svgEl = svgEl;
            }
            if (!el.path) {
                el.createPathProxy();
            }
            var path = el.path;
            if (el.shapeChanged()) {
                path.beginPath();
                el.buildPath(


 (!triangle_indices.empty()) {
            glsafe(::glGenBuffers(1, &this->triangle_indices_VBO_ids[buffer_idx]));
            glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, this->triangle_indices_VBO_ids[buffer_idx]));
            glsafe(::glBufferData(GL_ELEMENT_ARRAY_BUFFER, triangle_indices.size() * sizeof(int), triangle_indices.data(), GL_STATIC_DRAW));
            glsafe(::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0));
            triangle_indices.clear();
        }
    }
}

} // namespace Slic3r
#ifndef slic3r_GLGizmoPainterBase_hpp_
#define slic3r_GLGizmoPainterBase_hpp_

#include "GLGizmoBase.hpp"

#include "slic3r/GUI/GLModel.hpp"

#include "libslic3r/ObjectID.hpp"
#include "libslic3r/TriangleSelector.hpp"
#include "libslic3r/Model.hpp"

#include <cereal/types/vector.hpp>
#include <GL/glew.h>

#include <memory>

namespace Slic3r::GUI {

enum class SLAGizmoEventType : unsigned char;
class ClippingPlane;
struct Camera;
class GLGizmoMmuSegmentation;
class Selection;

enum class PainterGizmoType {
    FDM_SUPPORTS,
    SEAM,
    MMU_SEGMENTATION
};

class TriangleSelectorGUI : public TriangleSelector {
public:
    explicit TriangleSelectorGUI(const TriangleMesh& mesh, float edge_limit = 0.6f)
        : TriangleSelector(mesh, edge_limit) {}
    virtual ~TriangleSelectorGUI() = default;

    virtual void render(ImGuiWrapper* imgui, const Transform3d& matrix);
    //void         render(const Transform3d& matrix) { this->render(nullptr, matrix); }
    void         set_wireframe_needed(bool need_wireframe) { m_need_wireframe = need_wireframe; }
    bool         get_wireframe_needed() { return m_need_wireframe; }

    // BBS
    void request_update_render_data(bool paint_changed = false)
    {
        m_update_render_data = true;
        m_paint_changed |= paint_changed;
    }

    // BBS
    static ColorRGBA enforcers_color;
    static ColorRGBA blockers_color;

#ifdef PRUSASLICER_TRIANGLE_SELECTOR_DEBUG
    void render_debug(ImGuiWrapper* imgui);
    bool m_show_triangles{false};
    bool m_show_invalid{false};
#endif

protected:
    bool m_update_render_data = false;
    // BBS
    bool m_paint_changed = true;

    static ColorRGBA get_seed_fill_color(const ColorRGBA &base_color);

private:
    void update_render_data();

    GLModel                m_iva_enforcers;
    GLModel                m_iva_blockers;
    std::array<GLModel, 3> m_iva_seed_fills;
#ifdef PRUSASLICER_TRIANGLE_SELECTOR_DEBUG
    std::array<GLModel, 3> m_varrays;
#endif // PRUSASLICER_TRIANGLE_SELECTOR_DEBUG

protected:
    GLModel                      m_paint_contour;

    void update_paint_contour();
    void render_paint_contour(const Transform3d& matrix);

    bool                                m_need_wireframe {false};
};

// BBS
struct TrianglePatch {
    std::vector<float>  patch_vertices;
    std::vector<int> triangle_indices;
    std::vector<int> facet_indices;
    EnforcerBlockerType type = EnforcerBlockerType::NONE;
    std::set<EnforcerBlockerType> neighbor_types;
    // if area is larger than GapAreaMax, stop accumulate left triangle areas to improve performance
    float area = 0.f;

    bool is_fragment() const;
};

class TriangleSelectorPatch : public Triang


: Int, val step: Int,
    val str: StringProcessor = StringProcessor { it.toString() },
    val onChanged: () -> Unit = {},
) : Setting(name), ISettingCondition {
    var canShow: () -> Boolean = { true }
    override fun canShow(): Boolean =
        this.canShow.invoke()

    override fun add(table: SettingsTable) {
        val slider = Slider(min.toFloat(), max.toFloat(), step.toFloat(), false)
        slider.value = Core.settings.getInt(name).toFloat()
        val value = Label("", Styles.outlineLabel)
        val content = Table()
        content.add(title, Styles.outlineLabel).left().growX().wrap()
        content.add(value).padLeft(10f).right()
        content.margin(3f, 33f, 3f, 33f)
        content.touchable = Touchable.disabled

        slider.changed {
            Core.settings.put(name, slider.value.toInt())
            value.setText(str(slider.value.toInt()))
            onChanged()
        }

        slider.change()

        addDesc(
            table
                .stack(slider, content)
                .width((Core.graphics.width / 1.2f).coerceAtMost(460f))
                .left()
                .padTop(4f).get()
        )
        table.row()
    }

    override fun addDesc(elem: Element) {
        if (description == null) return
        elem.addTrackTooltip(description)
    }

    companion object {
        fun SettingsTable.addSliderSettingX(
            name: String,
            def: Int, min: Int, max: Int, step: Int,
            str: StringProcessor = StringProcessor { it.toString() },
            onChanged: () -> Unit = {},
        ): SliderSettingX = SliderSettingX(name, def, min, max, step, str, onChanged).apply {
            settings.add(this)
            Core.settings.defaults(name, def)
            rebuild()
        }
    }
}package net.liplum.blocks.cyberion

import arc.graphics.Blending
import arc.graphics.Color
import arc.graphics.g2d.Draw
import arc.graphics.g2d.Fill
import arc.graphics.g2d.Lines
import arc.math.Angles
import arc.math.Interp
import arc.math.Mathf
import arc.util.Time
import mindustry.gen.Building
import mindustry.graphics.Layer
import mindustry.world.draw.DrawBlock
import net.liplum.Var
import plumy.dsl.DrawLayer
import plumy.core.math.smooth

class DrawCyberionAgglomeration : DrawBlock() {
    var flameColor: Color = Var.HologramDark
    var midColor: Color = Var.Hologram
    var flameRad = 1f
    var flameRadiusScl = 5f
    var circleStroke = 1.5f
    var alpha = 0.68f
    var coreRadius = 5f
    var particles = 25
    var particleLife = 40f
    var particleRad = 10f
    var particleStroke = 1.1f
    var particleRadius = 2f
    var drawCenter = true
    var blending: Blending = Blending.additive
    override fun draw(build: Building) {
        DrawLayer(Layer.effect) {
            if (build.warmup() > 0f && flameColor.a > 0.001f) {
                Lines.stroke(circleStroke * build.warmup())
                val si = Mathf.absin(flameRadiusScl, 0.8f)
                val a = alpha * build.warmup()
                Draw.blend(blending)
                if (drawCenter) {
                    val progress = build.progress()
                    val smoothPro = progress.smooth
                    if (progress <= 0.8f) {
                        Draw.color


f) -> nng_sys::nng_socket { self.inner.handle }

	/// Trampoline function for calling the pipe event closure from C.
	///
	/// This is unsafe because you have to be absolutely positive that you
	/// really do have a pointer to an `Inner` type.
	extern "C" fn trampoline(pipe: nng_sys::nng_pipe, ev: i32, arg: *mut c_void)
	{
		let res = catch_unwind(|| unsafe {
			let pipe = Pipe::from_nng_sys(pipe);
			let ev = PipeEvent::from_code(ev);

			assert!(!arg.is_null(), "Null pointer passed as argument to trampoline");
			let inner = &*(arg as *const _ as *const Inner);
			let callback = {
				// Don't hold the lock during the callback, just long enough to increment
				// the Arc's counter.
				let l = inner.pipe_notify.lock().unwrap();
				match l.as_ref() {
					Some(c) => Arc::clone(c),
					None => return,
				}
			};

			(*callback)(pipe, ev)
		});

		// See #6 for a "discussion" about why we abort.
		if res.is_err() {
			error!("Panic in pipe notify callback function");
			std::process::abort();
		}
	}
}

impl PartialEq for Socket
{
	fn eq(&self, other: &Socket) -> bool
	{
		unsafe {
			nng_sys::nng_socket_id(self.inner.handle) == nng_sys::nng_socket_id(other.inner.handle)
		}
	}
}

impl Eq for Socket {}

impl PartialOrd for Socket
{
	fn partial_cmp(&self, other: &Socket) -> Option<Ordering> { Some(self.cmp(other)) }
}

impl Ord for Socket
{
	fn cmp(&self, other: &Socket) -> Ordering
	{
		unsafe {
			let us = nng_sys::nng_socket_id(self.inner.handle);
			let them = nng_sys::nng_socket_id(other.inner.handle);
			us.cmp(&them)
		}
	}
}

impl Hash for Socket
{
	fn hash<H: Hasher>(&self, state: &mut H)
	{
		let id = unsafe { nng_sys::nng_socket_id(self.inner.handle) };
		id.hash(state)
	}
}

#[rustfmt::skip]
expose_options!{
	Socket :: inner.handle -> nng_sys::nng_socket;

	GETOPT_BOOL = nng_sys::nng_getopt_bool;
	GETOPT_INT = nng_sys::nng_getopt_int;
	GETOPT_MS = nng_sys::nng_getopt_ms;
	GETOPT_SIZE = nng_sys::nng_getopt_size;
	GETOPT_SOCKADDR = crate::util::fake_opt;
	GETOPT_STRING = nng_sys::nng_getopt_string;
	GETOPT_UINT64 = nng_sys::nng_getopt_uint64;

	SETOPT = nng_sys::nng_setopt;
	SETOPT_BOOL = nng_sys::nng_setopt_bool;
	SETOPT_INT = nng_sys::nng_setopt_int;
	SETOPT_MS = nng_sys::nng_setopt_ms;
	SETOPT_PTR = nng_sys::nng_setopt_ptr;
	SETOPT_SIZE = nng_sys::nng_setopt_size;
	SETOPT_STRING = nng_sys::nng_setopt_string;

	Gets -> [Raw, MaxTtl, RecvBufferSize,
	         RecvTimeout, SendBufferSize,
	         SendTimeout, SocketName,
	         protocol::pair::Polyamorous,
	         protocol::reqrep::ResendTime,
	         protocol::survey::SurveyTime];
	Sets -> [ReconnectMinTime, ReconnectMaxTime,
	         RecvBufferSize, RecvMaxSize,
	         RecvTimeout, SendBufferSize,
	         SendTimeout, SocketName, MaxTtl,
	         protocol::pair::Polyamorous,
	         protocol::reqrep::ResendTime,
	         protocol::pubsub::Subscribe,
	         protocol::pubsub::Unsubscribe,
	         protocol::survey::SurveyTime,
	         transport::tcp::NoDelay,
	         transport::tcp::KeepAl


Finite(index) ? index : 0; i <= ii; i++) {
        const nsId = root[_symbol_utils.$namespaceId] === NS_DATASETS ? -1 : root[_symbol_utils.$namespaceId];
        node = new XmlObject(nsId, name);
        root[_symbol_utils.$appendChild](node);
      }
      root = node;
    }
    return node;
  }
  [_symbol_utils.$onChild](child) {
    if (!this[_hasChildren] || !this[_symbol_utils.$onChildCheck](child)) {
      return false;
    }
    const name = child[_symbol_utils.$nodeName];
    const node = this[name];
    if (node instanceof XFAObjectArray) {
      if (node.push(child)) {
        this[_symbol_utils.$appendChild](child);
        return true;
      }
    } else {
      if (node !== null) {
        this[_symbol_utils.$removeChild](node);
      }
      this[name] = child;
      this[_symbol_utils.$appendChild](child);
      return true;
    }
    let id = "";
    if (this.id) {
      id = ` (id: ${this.id})`;
    } else if (this.name) {
      id = ` (name: ${this.name} ${this.h.value})`;
    }
    (0, _util.warn)(`XFA - node "${this[_symbol_utils.$nodeName]}"${id} has already enough "${name}"!`);
    return false;
  }
  [_symbol_utils.$onChildCheck](child) {
    return this.hasOwnProperty(child[_symbol_utils.$nodeName]) && child[_symbol_utils.$namespaceId] === this[_symbol_utils.$namespaceId];
  }
  [_symbol_utils.$isNsAgnostic]() {
    return false;
  }
  [_symbol_utils.$acceptWhitespace]() {
    return false;
  }
  [_symbol_utils.$isCDATAXml]() {
    return false;
  }
  [_symbol_utils.$isBindable]() {
    return false;
  }
  [_symbol_utils.$popPara]() {
    if (this.para) {
      this[_symbol_utils.$getTemplateRoot]()[_symbol_utils.$extra].paraStack.pop();
    }
  }
  [_symbol_utils.$pushPara]() {
    this[_symbol_utils.$getTemplateRoot]()[_symbol_utils.$extra].paraStack.push(this.para);
  }
  [_symbol_utils.$setId](ids) {
    if (this.id && this[_symbol_utils.$namespaceId] === _namespaces.NamespaceIds.template.id) {
      ids.set(this.id, this);
    }
  }
  [_symbol_utils.$getTemplateRoot]() {
    return this[_symbol_utils.$globalData].template;
  }
  [_symbol_utils.$isSplittable]() {
    return false;
  }
  [_symbol_utils.$isThereMoreWidth]() {
    return false;
  }
  [_symbol_utils.$appendChild](child) {
    child[_parent] = this;
    this[_children].push(child);
    if (!child[_symbol_utils.$globalData] && this[_symbol_utils.$globalData]) {
      child[_symbol_utils.$globalData] = this[_symbol_utils.$globalData];
    }
  }
  [_symbol_utils.$removeChild](child) {
    const i = this[_children].indexOf(child);
    this[_children].splice(i, 1);
  }
  [_symbol_utils.$hasSettableValue]() {
    return this.hasOwnProperty("value");
  }
  [_symbol_utils.$setValue](_) {}
  [_symbol_utils.$onText](_) {}
  [_symbol_utils.$finalize]() {}
  [_symbol_utils.$clean](builder) {
    delete this[_hasChildren];
    if (this[_symbol_utils.$cleanup]) {
      builder.clean(this[_symbol_utils.$cleanup]);
      delete this[_symbol_utils.$cleanup];
    }
  }
  [_symbol_utils.$indexOf](child) {
    return this[_children].indexOf(child);


area::after{content:" ";position:absolute;border-radius:50%;background:#ff5f56;width:12px;height:12px;top:0;left:12px;margin-top:12px;-webkit-box-shadow:20px 0 #ffbd2e,40px 0 #27c93f;box-shadow:20px 0 #ffbd2e,40px 0 #27c93f}code{padding:1px 5px;top:13px!important;font-family:Inconsolata,Monaco,Consolas,'Courier New',Courier,monospace;font-size:.91rem;color:#e96900;background-color:#f8f8f8;border-radius:2px}.code_copy{position:absolute;top:.7rem;right:25px;z-index:1;filter:invert(50%);cursor:pointer}.codecopy_notice{position:absolute;top:.7rem;right:6px;z-index:1;filter:invert(50%);opacity:0}.code_lang{position:absolute;top:1.2rem;right:46px;line-height:0;font-weight:bold;font-family:normal;z-index:1;filter:invert(50%);cursor:pointer}.code-expand{position:absolute;top:4px;right:0;filter:invert(50%);padding:7px;z-index:999!important;cursor:pointer;transition:all .3s;transform:rotate(0deg)}.code-closed .code-expand{transform:rotate(-180deg)!important;transition:all .3s}.code-closed pre::before{height:0}pre code{padding:0;color:#e8eaf6;background-color:#272822}pre[class*="language-"]{padding:1.2em;margin:.5em 0}code[class*="language-"],pre[class*="language-"]{color:#e8eaf6;white-space:pre-wrap!important}b,strong{font-weight:bold}dfn{font-style:italic}small{font-size:85%}cite{font-style:normal}mark{background-color:#fcf8e3;padding:.2em}.card{border-radius:10px;box-shadow:0 15px 35px rgba(50,50,93,.1),0 5px 15px rgba(0,0,0,.07)!important}.card .card-image img{border-radius:8px 8px 0 0;object-fit:cover}.container .row{margin-bottom:0}.bg-color{background-image:linear-gradient(to right,#009688 0,#5fb878 100%);opacity:.7}.text-color{color:#0f9d58!important}.white-color{color:#fff}.progress-bar{height:4px;position:fixed;bottom:0;z-index:300;background:linear-gradient(to right,#4cbf30 0,#0f9d58 100%);opacity:.8}.sidenav-overlay{z-index:500}.pd-header{margin-top:-64px}header .side-nav{width:240px;z-index:999;box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 7px 10px 0 rgba(0,0,0,0.12)}nav{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 7px 10px 0 rgba(0,0,0,0.12)}header .nav-transparent{background-color:transparent!important;background-image:none;box-shadow:none}header nav .brand-span{font-size:1.45rem}header .brand-logo .logo-img{height:45px;vertical-align:middle;padding-bottom:6px}header .brand-logo .logo-span{font-size:2rem}header .brand-logo .waves-effect{vertical-align:top}header .button-collapse i{font-size:1.5rem}header .side-nav .mobile-head{padding:0 15px}header .side-nav .mobile-head img{margin-top:30px;width:75px;height:75px}header .side-nav


import numpy as np
import pandas as pd
from sklearn.metrics import accuracy_score

def position_returns(yport_pred, hedgeRatio,df,df_opens, start,end):
    df = df.iloc[start:end]
    df_opens = df_opens.iloc[start:end]
    hedgeRatio = hedgeRatio[start:end]
    print(df.shape,hedgeRatio.shape)

    mean = np.mean(yport_pred)
    std = np.std(yport_pred)
    numUnits =  (yport_pred - mean)/std
    print(numUnits.shape)
    positions= pd.DataFrame(np.expand_dims(numUnits, axis=1)*hedgeRatio)*df.values
     # results.evec(:, 0)' can be viewed as the capital allocation, while positions is the dollar capital in each ETF.
    pnl=np.sum((positions.shift().values)*(df_opens.pct_change().values), axis=1)# daily P&L of the strategy, entering at the open
    ret=pnl/np.sum(np.abs(positions.shift()), axis=1)
    ret.fillna(value=0, inplace=True)
    returns = np.cumprod(1+ret)-1
    print('APR=%f Sharpe=%f' % (np.prod(1+ret)**(252/len(ret))-1, np.sqrt(252)*np.mean(ret)/np.std(ret)))
    return positions,pnl, returns

def eval_metrics(actual, predicted):
    rmspe = np.sqrt(np.mean(np.square(((actual - predicted) / actual))))*100

    return rmspe


;
}

.connection-form {
    border-radius: 8px;
    /* padding: 1rem; */
}

columnview>header label {
    font-size: 1rem;
    padding: 4px 0px;
    color: @window_fg_color;
}

themeswitcher {
    padding: 6px;
}

themeswitcher .check {
    background: @accent_bg_color;
    color: @accent_fg_color;
    padding: 2px;
    border-radius: 17px;
    margin: 3px;
}

/* Adapted from https://gitlab.gnome.org/GNOME/gnome-text-editor/-/blob/bf8c0c249f06a0be69e65aed3b786ba02a9f999e/src/TextEditor.css#L51 */

themeswitcher checkbutton {
    outline-offset: 1px;
    transition: none;
}

themeswitcher checkbutton radio {
    -gtk-icon-source: none;
    background: none;
    padding: 12px;
    min-height: 24px;
    min-width: 24px;
    border: none;
    outline-color: currentColor;
    transition: none;
    box-shadow: inset 0 0 0 1px @borders;
}

themeswitcher checkbutton radio:checked {
    box-shadow: inset 0 0 0 2px @accent_bg_color;
}

themeswitcher checkbutton.system radio {
    background: linear-gradient(-45deg, #1e1e1e 49.99%, white 50.01%);
}

themeswitcher checkbutton.light radio {
    color: alpha(black, 0.8);
    background-color: white;
}

themeswitcher checkbutton.dark radio {
    color: white;
    background-color: #1e1e1e;
}/*******************************
           Breadcrumb
*******************************/

.ui.breadcrumb {
  margin: 1em 0em;
  display: inline-block;
  vertical-align: middle;
}

.ui.breadcrumb:first-child {
  margin-top: 0em;
}

.ui.breadcrumb:last-child {
  margin-bottom: 0em;
}

/*******************************
          Content
*******************************/

.ui.breadcrumb .divider {
  display: inline-block;
  opacity: 0.5;
  margin: 0em 0.15em 0em;
  font-size: 1em;
  color: rgba(0, 0, 0, 0.3);
}

.ui.breadcrumb a.section {
  cursor: pointer;
}

.ui.breadcrumb .section {
  display: inline-block;
  margin: 0em;
  padding: 0em;
}

/* Loose Coupling */

.ui.breadcrumb.segment {
  display: inline-block;
  padding: 0.5em 1em;
}

/*******************************
            States
*******************************/

.ui.breadcrumb .active.section {
  font-weight: bold;
}

/*******************************
           Variations
*******************************/

.ui.small.breadcrumb {
  font-size: 0.75em;
}

.ui.large.breadcrumb {
  font-size: 1.1em;
}

.ui.huge.breadcrumb {
  font-size: 1.3em;
}
/*
 * # Semantic - Form
 * http://github.com/jlukic/semantic-ui/
 *
 *
 * Copyright 2013 Contributors
 * Released under the MIT license
 * http://opensource.org/licenses/MIT
 *
 */

/*******************************
           Standard
*******************************/

/*--------------------
        Form
---------------------*/

.ui.form {
  position: relative;
  max-


PHIA WD 22 PCT 15" points="120.5092095,185.0207389 121.2882469,183.6612691 121.9600435,182.4257901 122.9523302,183.4929960 123.2826815,183.8538976 124.1122578,184.7528304 124.8148707,185.5809113 124.9073198,185.6805467 126.0795740,186.9425952 126.4173213,187.3123533 126.9239422,187.8614551 127.0533708,188.0053729 127.3861875,188.3884157 128.7655276,189.8630198 126.7402767,193.4764639 125.3806590,191.9775045 124.9516954,191.4726851 124.4117928,190.8837292 124.0666496,190.4940440 122.8044117,189.1279319 122.1215212,188.3529898 121.2438714,187.4274876 120.6226137,186.7145409 119.9643763,185.9927377 120.5092095,185.0207389"/>
<polygon id="uswijs750" fill="#EBECED" stroke="#FFFFFF" vector-effect="non-scaling-stroke" fill-rule="evenodd" data-district-id="2216" data-district_name="PHILADELPHIA WD 22 PCT 16" points="109.9675504,172.2939761 111.1188494,170.3743339 112.9567369,167.2745657 113.3376271,166.6280426 113.9983298,165.4899848 114.4815302,164.6862592 115.4331393,165.3084269 117.9945948,166.9490900 117.6654761,167.5026200 115.9064785,170.4938964 114.8944694,169.3824081 114.7773672,169.2584173 112.9850880,172.2496937 112.8889409,172.3515432 113.9477909,173.5493823 111.9780094,176.1886135 111.2482781,174.9376356 110.9955840,174.4571715 110.1894281,172.7943673 109.9675504,172.2939761"/>
<polygon id="uswijs751" fill="#EBECED" stroke="#FFFFFF" vector-effect="non-scaling-stroke" fill-rule="evenodd" data-district-id="2217" data-district_name="PHILADELPHIA WD 22 PCT 17" points="112.9850880,172.2496937 114.7773672,169.2584173 114.8944694,169.3824081 115.9064785,170.4938964 117.6654761,167.5026200 117.9945948,166.9490900 120.0518947,168.2664915 121.9415537,169.4886858 122.1732927,169.6414601 121.9748354,169.9802205 121.6765330,170.4584705 121.4028838,170.9854311 119.4441962,174.4106750 118.6084566,175.8454249 117.7147823,177.4285208 117.6013781,177.5724386 115.8534744,175.6372976 113.9477909,173.5493823 112.8889409,172.3515432 112.9850880,172.2496937"/>
<polygon id="uswijs752" fill="#EBECED" stroke="#FFFFFF" vector-effect="non-scaling-stroke" fill-rule="evenodd" data-district-id="2218" data-district_name="PHILADELPHIA WD 22 PCT 18" points="117.7147823,177.4285208 118.6084566,175.8454249 119.4441962,174.4106750 121.4028838,170.9854311 122.2447866,171.9286463 123.0


ssor   stylus

@var select customOldLayout            "⚒ Old Layout" ["Enabled", "Disabled"]
@var checkbox oldBackground            "  🖼 Old Background" 1
@var checkbox oldPlaylists             "  ▶ Old Playlists" 1
@var checkbox oldIcons                 "  🧓 Old Icons" 0

@var select customMoreVideos           "⚒ Video Appearance" ["Disabled", "Enabled"]
@var range videoPerRow                 "  ⚙ Videos Per Rows" [5, 1, 15, 1]
@var checkbox hideProfile              "  🫣 Hide Channel Profile" 1

@var checkbox subscriptionsGrid        "  🔔 Subscriptions Grid" 1
@var select homePage                   "  🏠 Home Page" ["Enabled", "Disabled"]
@var select channelPage                "  📺 Channel Page" ["Enabled", "Disabled"]
@var checkbox sortByOldest             "    ↳ Sort By Oldest" 0
@var checkbox channelSearchResults     "    ↳ Search Result Grid " 1

@var select customAppearance           "⚒ Youtube Appearance" ["Enabled", "Disabled"]
@var checkbox blueCheckMark            "  ✅ Blue Check Mark" 0
@var checkbox searchBox                "  🌑 Dark Search Box" 0
@var checkbox scroll_Bar               "  🌑 Dark Scroll Bar" 1
@var checkbox displayVideoCount        "  📻 Display Videos Count" 0

@var checkbox displayFullTitle         "  🎦 Full Title For Videos" 0
@var select likeDislike                "  🎨 Like/Dislike colors" ['None', 'Navy-Blue', 'Classic']
@var checkbox moreAnimation            "  🎬 More Animations" 1
@var checkbox watchedOverlay           "  👀 Watched Overlay" 0

@var select customRoundness            "⚒ Roundness" ["Enabled", "Disabled"]
@var range borderRadius                "  ⚙ Border Radius" [0, 0, 40, 1, 'px']
@var range buttonRadius                "  ⚙ Buttons Radius" [0, 0, 18, 1, 'px']
@var range profileRadius               "  ⚙ Profiles Radius" [50, 0, 50, 1, '%']

@var select customVideoPage            "⚒ Watch Page" ["Enabled", "Disabled"]
@var checkbox hideTaps                 "  ❌ Hide Taps" 0
@var checkbox channelHandle            "  ❌ Hide Channel Handles" 0

@var checkbox hideLikeAnimation        "  👍 Hide Like Animation" 0
@var checkbox shareBtn                 "  ➡ Hide Share Button" 0
@var checkbox downloadBtn              "  ⬇ Hide Download Button" 0

@var checkbox textBtn                  "  💬 Hide Text Buttons" 0
@var checkbox endCards                 "  💳 Hide End Screen" 0
@var checkbox commentSection           "  💬 Hide Comments" 0
@var checkbox gameSection              "  🎮 Hide Game Section" 1
@var checkbox musicSection             "  🎵 Hide Music Section" 0

==/UserStyle== */
/*
Please report bugs via my email or github issue(If I have some free time, I'll fix them)
Contact: sapondanaisriwan@gmail.com
Support me: https://ko-fi.com/sapondanaisriwan
Support me: https://ko-fi.com/sapondanaisriwan
Support me: https://ko-fi.com/sapondanais


<link rel="manifest" href="/site.webmanifest">
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
    <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
    <meta name="description" content="Using AsNoTracking, Loading Only Required Data, Execute queries in the database when possible, not in memory., Execute multiple queries async and in parallel, Working with stub entities, Disable change tracking and proxy generation">
    <meta property="og:site_name" content="DevTut">
    <meta property="og:title" content="Entity Framework - Optimization Techniques in EF">
    <meta property="og:description" content="Using AsNoTracking, Loading Only Required Data, Execute queries in the database when possible, not in memory., Execute multiple queries async and in parallel, Working with stub entities, Disable change tracking and proxy generation">
    <meta property="og:type" content="article">
    <meta property="og:url" content="/entityframework/optimization-techniques-in-ef.html">
    <meta property="og:image" content="/logo.png">
    <meta name="twitter:title" content="Entity Framework - Optimization Techniques in EF">
    <meta name="twitter:description" content="Using AsNoTracking, Loading Only Required Data, Execute queries in the database when possible, not in memory., Execute multiple queries async and in parallel, Working with stub entities, Disable change tracking and proxy generation">
    <meta name="twitter:url" content="/entityframework/optimization-techniques-in-ef.html">
    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:image" content="/logo.png">
    <meta name="theme-color" content="#ffffff">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="msapplication-TileImage" content="/mstile-150x150.png">
    <meta name="msapplication-TileColor" content="#da532c">
    <meta name="google-site-verification" content="76_rKXgwMVIjd-axJC_1zPV9OS4mEjvtgjYOWVkAdnQ">

    <link rel="preload" href="/assets/css/0.styles.60619e34.css" as="style"><link rel="preload" href="/assets/js/app.1779e102.js" as="script"><link rel="preload" href="/assets/js/3.2cfa8016.js" as="script"><link rel="preload" href="/assets/js/1063.1bc70560.js" as="script">
    <link rel="stylesheet" href="/assets/css/0.styles.60619e34.css">

<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-


>

Rotated Text Control

Drag & Resize Rect

<!DOCTYPE html>

	<meta http-equiv="content-type" content="text/html; charset=UTF-8">
	<title>Organizational Chart inside Popup Dialog</title>

  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet">

	<link href="../../css/primitives.css" media="screen" rel="stylesheet" type="text/css" />


状态
	private transient InternalMergingState<K, W, IN, ACC, ACC> windowMergingState;

	/** The state that holds the merging window metadata (the sets that describe what is merged). */
	// 合并窗口元信息
	private transient InternalListState<K, VoidNamespace, Tuple2<W, W>> mergingSetsState;

	/**
	 * This is given to the {@code InternalWindowFunction} for emitting elements with a given
	 * timestamp.
	 */
	// 在 InternalWindowFunction 中用于输出给定 ts 的元素
	protected transient TimestampedCollector<OUT> timestampedCollector;
	// 给 trigger 使用的上下文
	protected transient Context triggerContext = new Context(null, null);
	// 给窗口函数使用的上下文
	protected transient WindowContext processContext;
	// 获取当前的进程时间
	protected transient WindowAssigner.WindowAssignerContext windowAssignerContext;

	// ------------------------------------------------------------------------
	// State that needs to be checkpointed
	// ------------------------------------------------------------------------

	protected transient InternalTimerService<W> internalTimerService;

	/**
	 * Creates a new {@code WindowOperator} based on the given policies and user functions.
	 */
	/**
	 * 根据给定的 policies 和用户函数创建一个 WindowOperator 实例
	 */
	public WindowOperator(
			WindowAssigner<? super IN, W> windowAssigner,
			TypeSerializer<W> windowSerializer,
			KeySelector<IN, K> keySelector,
			TypeSerializer<K> keySerializer,
			StateDescriptor<? extends AppendingState<IN, ACC>, ?> windowStateDescriptor,
			InternalWindowFunction<ACC, OUT, K, W> windowFunction,
			Trigger<? super IN, ? super W> trigger,
			long allowedLateness,
			OutputTag<IN> lateDataOutputTag) {

		super(windowFunction);  // 设置 userFunction

		checkArgument(!(windowAssigner instanceof BaseAlignedWindowAssigner),
			"The " + windowAssigner.getClass().getSimpleName() + " cannot be used with a WindowOperator. " +
				"This assigner is only used with the AccumulatingProcessingTimeWindowOperator and " +
				"the AggregatingProcessingTimeWindowOperator");

		checkArgument(allowedLateness >= 0);

		checkArgument(windowStateDescriptor == null || windowStateDescriptor.isSerializerInitialized(),
				"window state serializer is not properly initialized");

		this.windowAssigner = checkNotNull(windowAssigner);
		this.windowSerializer = checkNotNull(windowSerializer);
		this.keySelector = checkNotNull(keySelector);
		this.keySerializer = checkNotNull(keySerializer);
		this.windowStateDescriptor = windowStateDescriptor;
		this.trigger = checkNotNull(trigger);
		this.allowedLateness = allowedLateness;
		this.lateDataOutputTag = lateDataOutputTag;

		setChainingStrategy(ChainingStrategy.ALWAYS);
	}

	@Override
	public void open() throws Exception {
		super.open();

		this.numLateRecordsDropped = metrics.counter(LATE_ELEMENTS_DROPPED_METRIC_NAME);
		timestampedCollector = new TimestampedCollector<>(output);

		// windowSerializer 用做命名空间序列器，this 用作 trigger
		internalTimerService =
				getInternalTimerService("window-timers", windowSerializer, this);

		triggerContext = new Context(null, null);
		processContext = new WindowContext(null);

		windowAssignerContext = new WindowAssigner.WindowAssignerContext() {
			@Override
			public long getCurrentProcessingTime() {
				return internalTimerService.currentProcessingTime();
			}
		};

		// create (or restore) the state that hold the actual window contents
		// NOTE - the state ma


ского механотанка",nil},
[39265] = {"Спасенный беженец из Гномрегана",nil},
[39266] = {"Разлом Бездны",nil},
[39267] = {"Моряк Северной Стражи","Экспедиционные войска крепости Северной Стражи"},
[39268] = {"Меткий стрелок Северной Стражи","Экспедиционные войска крепости Северной Стражи"},
[39269] = {"Лейтенант Паллитер","Экспедиционные войска крепости Северной Стражи"},
[39270] = {"Раненый рубака Колючего Холма",nil},
[39271] = {"Главный механик Меггакрут","Король гномов"},
[39272] = {"Пенящийся морской элементаль",nil},
[39273] = {"\"Док\" Вертушка","Начальник медицинской службы"},
[39274] = {"Стражник Колючего Холма",nil},
[39275] = {"Гномреганский медик",nil},
[39276] = {"Throw It On The Ground! Kill Credit",nil},
[39279] = {"Старшина Дранфикса",nil},
[39280] = {"Шахтер Дранфикса",nil},
[39281] = {"Фентон Дранфикс",nil},
[39282] = {"Деваха Дранфикса",nil},
[39283] = {"Целительница земли Норсала","Служители Земли"},
[39294] = {"Старый красный дракон",nil},
[39308] = {"Пляжный шезлонг",nil},
[39312] = {"Goblin Faction Test",nil},
[39313] = {"Налетчик Зин'жатара",nil},
[39314] = {"Охотница Оперенной Луны",nil},
[39315] = {"Frazzlecraz Explosive Kill Credit",nil},
[39316] = {"Vashj'ir Rescue Bunny",nil},
[39317] = {"Разведчик Северной Стражи",nil},
[39318] = {"Northwatch Caravan B",nil},
[39319] = {"Northwatch Caravan C",nil},
[39320] = {"Durotar Watershed Telescope 01 (Raggaran)",nil},
[39321] = {"Разведывательный аппарат Прядуляги",nil},
[39322] = {"Хортон Позвончик",nil},
[39323] = {"Тонк",nil},
[39324] = {"Зен'Таж",nil},
[39325] = {"Престарелая Текла",nil},
[39326] = {"Яраган",nil},
[39327] = {"Радио Прядуляги",nil},
[39328] = {"Вестник рока",nil},
[39329] = {"Вагонетка",nil},
[39330] = {"Крадор","Распорядитель полетов"},
[39331] = {"Durotar Watershed Quest KC 1",nil},
[39332] = {"Durotar Watershed Quest KC 2",nil},
[39333] = {"Durotar Watershed Quest KC 3",nil},
[39334] = {"Durotar Watershed Quest KC 4",nil},
[39335] = {"Wild Mine Cart Ride Kill Credit",nil},
[39337


vascript"></script>

Share on Tumblr

m=245476

➀ ➁ ➂ ➃ ➄

Tag change failed.
.

Add Photo — Add Link — Add Commentary — Correct this page


/*  RetroArch - A frontend for libretro.
 *  Copyright (C) 2010-2014 - Hans-Kristian Arntzen
 *
 *  RetroArch is free software: you can redistribute it and/or modify it under the terms
 *  of the GNU General Public License as published by the Free Software Found-
 *  ation, either version 3 of the License, or (at your option) any later version.
 *
 *  RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 *  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 *  PURPOSE.  See the GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License along with RetroArch.
 *  If not, see <http://www.gnu.org/licenses/>.
 */
#if defined(__ARM_NEON__)

#ifndef __MACH__
.arm
#endif

.align 4
.globl audio_convert_s16_float_asm
.globl _audio_convert_s16_float_asm
# audio_convert_s16_float_asm(float *out, const int16_t *in, size_t samples, const float *gain)
audio_convert_s16_float_asm:
_audio_convert_s16_float_asm:
   # Hacky way to get a constant of 2^-15.
   # Might be faster to just load a constant from memory.
   # It's just done once however ...
   vmov.f32 q8, #0.25
   vmul.f32


com/java/docs/setup#configure_endpoints_for_the_client_library
   * try (PrivilegedAccessManagerClient privilegedAccessManagerClient =
   *     PrivilegedAccessManagerClient.create()) {
   *   String parent = LocationName.of("[PROJECT]", "[LOCATION]").toString();
   *   for (Entitlement element :
   *       privilegedAccessManagerClient.listEntitlements(parent).iterateAll()) {
   *     // doThingsWith(element);
   *   }
   * }
   * }

   *
   * @param parent Required. The parent which owns the entitlement resources.
   * @throws com.google.api.gax.rpc.ApiException if the remote call fails
   */
  public final ListEntitlementsPagedResponse listEntitlements(String parent) {
    ListEntitlementsRequest request =
        ListEntitlementsRequest.newBuilder().setParent(parent).build();
    return listEntitlements(request);
  }

  // AUTO-GENERATED DOCUMENTATION AND METHOD.
  /**
   * Lists entitlements in a given project/folder/organization and location.
   *
   *
Sample code:
   *
   *
{@code
   * // This snippet has been automatically generated and should be regarded as a code template only.
   * // It will require modifications to work:
   * // - It may require correct/in-range values for request initialization.
   * // - It may require specifying regional endpoints when creating the service client as shown in
   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
   * try (PrivilegedAccessManagerClient privilegedAccessManagerClient =
   *     PrivilegedAccessManagerClient.create()) {
   *   ListEntitlementsRequest request =
   *       ListEntitlementsRequest.newBuilder()
   *           .setParent(LocationName.of("[PROJECT]", "[LOCATION]").toString())
   *           .setPageSize(883849137)
   *           .setPageToken("pageToken873572522")
   *           .setFilter("filter-1274492040")
   *           .setOrderBy("orderBy-1207110587")
   *           .build();
   *   for (Entitlement element :
   *       privilegedAccessManagerClient.listEntitlements(request).iterateAll()) {
   *     // doThingsWith(element);
   *   }
   * }
   * }

   *
   * @param request The request object containing all of the parameters for the API call.
   * @throws com.google.api.gax.rpc.ApiException if the remote call fails
   */
  public final ListEntitlementsPagedResponse listEntitlements(ListEntitlementsRequest request) {
    return listEntitlementsPagedCallable().call(request);
  }

  // AUTO-GENERATED DOCUMENTATION AND METHOD.
  /**
   * Lists entitlements in a given project/folder/organization and location.
   *
   *
Sample code:
   *
   *
{@code
   * // This snippet has been automatically generated and should be regarded as a code template only.
   * // It will require modifications to work:
   * // - It may require correct/in-range values for request initialization.
   * // - It may require specifying regional endpoints when creating the service client as shown in
   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
   * try (PrivilegedAccessManagerClient privilegedAccessManagerClient =
   *     PrivilegedAccessManagerClient.create()) {
   *   ListEntitlementsRequest request =
   *       ListEntitlementsRequest.newBuilder()
   *           .setParent(LocationName.of("[PROJECT]", "[LOCATION]").toString())
   *           .setPageSize(883849137)
   *           .setPageToken("pageToken873572522")
   *           .setFilter("filter-1274492040")
   *           .setOrderBy("orderBy-1207110587")


1.h, za1h.h[w15, -1]
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 7].
// CHECK-NEXT: movaz z31.h, za1h.h[w15, -1]
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

movaz z2.b, za0v.b[w15, -1]
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 15].
// CHECK-NEXT: movaz z2.b, za0v.b[w15, -1]
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

movaz z2.b, za0v.b[w15, 16]
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 15].
// CHECK-NEXT: movaz z2.b, za0v.b[w15, 16]
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

movaz z31.s, za1h.s[w15, 4]
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 3].
// CHECK-NEXT: movaz z31.s, za1h.s[w15, 4]
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

movaz z31.s, za1h.s[w15, -1]
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 3].
// CHECK-NEXT: movaz z31.s, za1h.s[w15, -1]
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

movaz z31.d, za1v.d[w15, 2]
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 1].
// CHECK-NEXT: movaz z31.d, za1v.d[w15, 2]
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

movaz z31.d, za1h.d[w15, -1]
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [0, 1].
// CHECK-NEXT: movaz z31.d, za1h.d[w15, -1]
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

// --------------------------------------------------------------------------//
// Invalid vector select register

movaz z0.h, za0v.h[w11, 0]
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must be a register in range [w12, w15]
// CHECK-NEXT: movaz z0.h, za0v.h[w11, 0]
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

movaz z0.h, za0v.h[w16, 0]
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must be a register in range [w12, w15]
// CHECK-NEXT: movaz z0.h, za0v.h[w16, 0]
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:

// --------------------------------------------------------------------------//
// Invalid matrix operand

movaz z31.s, za1h.d[w15, -1]
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid matrix operand, expected za[0-3]h.s or za[0-3]v.s
// CHECK-NEXT: movaz z31.s, za1h.d[w15


5wpM07QXuXc5X0opX2tEJcadjHuV80li/FgxTIEK/5QBCICBD6xEhSMGHgQPgBgLiYVAB1dpSqKDawxTohFw4JSEA3clzgIBPCURwE2JucBR7rhPJJv5OpJwDX+SfDjgx1wACQeJG1aChP9K/IMmdZ8DtESV1WyP3Bt4MwM6sj4NMxMYiqUWHQu4KYA/SYkIjOsm3BXYWMKFDwU2khjCQ4ELJUJ4SmClRArOCmSXGuKma0fYD5CbzHxFpCSGAhfAVSSUGDUk2BWZaff2g6GE15BsBQ9nwmpIGDiyHQddwNTMKkbZaf9fajXQca1EX44puJZUsnY0ObGmITE3GVLCbEhQUjGVt146j6oasWN+49Vph2w1pZ5EansNZqKBm1txbU57iRRcZ86RWMDdWtBJUHBHwoQPi1GV+JCbntmvok7iTX4/Up9mgyTc/FJYDTcndgH/AA5A/CHsyEkVAAAAAElFTkSuQmCC)}.reveal .overlay header a.external .icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR+2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9+engMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR+AAqod/B97TRpQAAAABJRU5ErkJggg==)}.reveal .overlay.overlay-preview.loaded .spinner{opacity:0;visibility:hidden;transform:scale(0.2)}.reveal .overlay.overlay-help .viewport .viewport-inner{width:600px;margin:auto;padding:20px 20px 80px;text-align:center;letter-spacing:normal}.reveal .overlay.overlay-preview.loaded .viewport iframe{opacity:1;visibility:visible}.reveal .overlay.overlay-help .viewport .viewport-inner table{border:1px solid #fff;border-collapse:collapse;display:inline-block;font-size:16px}.reveal .overlay.overlay-help .viewport .viewport-inner table th,.reveal .overlay.overlay-help .viewport .viewport-inner table td{width:200px;padding:14px;border:1px solid #fff;vertical-align:middle}.reveal .overlay.overlay-help .viewport .viewport-inner table th{padding-top:20px;padding-bottom:20px}.reveal .overlay.overlay-help .viewport .viewport-inner .title{font-size:20px}.reveal .roll:hover{background:none;text-shadow:none}.reveal .roll:hover span{background:rgba(0,0,0,0.5);transform:translate3d(0px,0px,-45px) rotateX(90deg)}.reveal .speaker-notes,.reveal aside.notes{display:none}.reveal .speaker-notes{position:absolute;width:70%;max-height:15%;left:15%;bottom:26px;padding:10px;z-index:1;font-size:18px;line-height:1.4;color:#fff;background-color:rgba(0,0,0,0.5);overflow:auto;box-sizing:border-box;text-align:left;font-family:Helvetica,sans-serif;-webkit-overflow-scrolling:touch}.reveal .speaker-notes.visible:not(:empty){display:block}@media screen and (max-width: 1024px){.reveal .speaker-notes{font-size:14px}}@media screen and (max-width: 600px){.reveal .speaker-notes{width:90%;left:5%}}.zoomed .reveal *,.zoomed .reveal *:b


_8063E7E8-_SDA_BASE_
/* 80372784 0036E3E4  41 80 00 08 */	blt lbl_8037278C
/* 80372788 0036E3E8  38 CD 95 24 */	addi r6, r13, lbl_8063E7E4-_SDA_BASE_
lbl_8037278C:
/* 8037278C 0036E3EC  3C 60 80 45 */	lis r3, lbl_8044CAC8@ha
/* 80372790 0036E3F0  A9 24 00 00 */	lha r9, 0(r4)
/* 80372794 0036E3F4  88 B9 00 04 */	lbz r5, 4(r25)
/* 80372798 0036E3F8  7F 84 E3 78 */	mr r4, r28
/* 8037279C 0036E3FC  7F 48 D3 78 */	mr r8, r26
/* 803727A0 0036E400  38 63 CA C8 */	addi r3, r3, lbl_8044CAC8@l
/* 803727A4 0036E404  4C C6 31 82 */	crclr 6
/* 803727A8 0036E408  4B C9 53 1D */	bl OSReport
/* 803727AC 0036E40C  48 00 04 14 */	b lbl_80372BC0
/* 803727B0 0036E410  7F 83 E3 78 */	mr r3, r28
/* 803727B4 0036E414  7F 44 D3 78 */	mr r4, r26
/* 803727B8 0036E418  48 00 1D B1 */	bl GetPlayerTrack__Q44nw4r3snd6detail9SeqPlayerFi
/* 803727BC 0036E41C  2C 03 00 00 */	cmpwi r3, 0
/* 803727C0 0036E420  7C 7C 1B 78 */	mr r28, r3
/* 803727C4 0036E424  41 82 03 FC */	beq lbl_80372BC0
/* 803727C8 0036E428  7C 03 C8 40 */	cmplw r3, r25
/* 803727CC 0036E42C  41 82 03 F4 */	beq lbl_80372BC0
/* 803727D0 0036E430  48 00 2E AD */	bl Close__Q44nw4r3snd6detail8SeqTrackFv
/* 803727D4 0036E434  80 99 00 50 */	lwz r4, 0x50(r25)
/* 803727D8 0036E438  7F 83 E3 78 */	mr r3, r28
/* 803727DC 0036E43C  7F A5 EB 78 */	mr r5, r29
/* 803727E0 0036E440  48 00 2E 81 */	bl SetSeqData__Q44nw4r3snd6detail8SeqTrackFPCvl
/* 803727E4 0036E444  7F 83 E3 78 */	mr r3, r28
/* 803727E8 0036E448  48 00 2E 89 */	bl Open__Q44nw4r3snd6detail8SeqTrackFv
/* 803727EC 0036E44C  48 00 03 D4 */	b lbl_80372BC0
/* 803727F0 0036E450  80 04 00 50 */	lwz r0, 0x50(r4)
/* 803727F4 0036E454  7C 00 32 14 */	add r0, r0, r6
/* 803727F8 0036E458  90 04 00 54 */	stw r0, 0x54(r4)
/* 803727FC 0036E45C  48 00 03 C4 */	b lbl_80372BC0
/* 80372800 0036E460  88 1F 00 06 */	lbz r0, 6(r31)
/* 80372804 0036E464  28 00 00 0


os[4].indices[1] = _ij4[1];
vinfos[4].maxsolutions = _nj4;
vinfos[5].jointtype = 1;
vinfos[5].foffset = j5;
vinfos[5].indices[0] = _ij5[0];
vinfos[5].indices[1] = _ij5[1];
vinfos[5].maxsolutions = _nj5;
std::vector<int> vfree(0);
solutions.AddSolution(vinfos,vfree);
}
}
}

}

}
}
}

}

}

}
} while(0);
if( bgotonextstatement )
{
bool bgotonextstatement = true;
do
{
if( 1 )
{
bgotonextstatement=false;
continue; // branch miss [j0, j4]

}
} while(0);
if( bgotonextstatement )
{
}
}
}
}
}
}

} else
{
{
IkReal j0array[1], cj0array[1], sj0array[1];
bool j0valid[1]={false};
_nj0 = 1;
IkReal x8817=cj1*cj1;
IkReal x8818=cj2*cj2;
IkReal x8819=(cj1*cj2);
IkReal x8820=(sj1*sj2);
IkReal x8821=((1430750000.0)*py);
IkReal x8822=(r00*sj5);
IkReal x8823=((177021000.0)*cj1);
IkReal x8824=(r10*sj5);
IkReal x8825=(cj5*r11);
IkReal x8826=((1530000000.0)*cj1);
IkReal x8827=(cj5*r01);
IkReal x8828=((1430750000.0)*px);
IkReal x8829=((165537775.0)*x8827);
CheckValue<IkReal> x8830 = IKatan2WithCheck(IkReal((((x8823*x8825))+((x8823*x8824))+(((165537775.0)*x8819*x8825))+(((165537775.0)*x8819*x8824))+((x8819*x8821))+(((-47419645.0)*x8827))+(((-47419645.0)*x8822))+(((-409850000.0)*px))+(((-1.0)*x8820*x8821))+((py*x8826))+(((-165537775.0)*x8820*x8824))+(((-165537775.0)*x8820*x8825)))),IkReal((((x8823*x8827))+(((165537775.0)*x8819*x8822))+((x8819*x8828))+((x8819*x8829))+(((47419645.0)*x8824))+(((47419645.0)*x8825))+((x8822*x8823))+(((-1.0)*x8820*x8829))+(((-1.0)*x8820*x8828))+(((409850000.0)*py))+(((-165537775.0)*x8820*x8822))+((px*x8826)))),IKFAST_ATAN2_MAGTHRESH);
if(!x8830.valid){
continue;
}
CheckValue<IkReal> x8831=IKPowWithIntegerCheck(IKsign(((886009034.0)+(((1637636450.0)*x8817*x8818))+(((117541775.0)*x8817))+(((-818818225.0)*x8818))+(((-1637636450.0)*x8819*x8820))+(((1751238000.0)*cj2*x8817))+(((-1751238000.0)*cj1*x8820


                          value=template['name'],
                                    key=f"img_name_{template['id']}"
                                )

                                col_save, col_del = st.columns(2)

                                with col_save:
                                    if st.form_submit_button("", help="Speichern"):
                                        if update_company_image_template(template['id'], new_name):
                                            st.success("Name aktualisiert!")
                                            st.rerun()
                                        else:
                                            st.error("Fehler beim Aktualisieren.")

                                with col_del:
                                    if st.form_submit_button("", help="Löschen", type="secondary"):
                                        if delete_company_image_template(template['id']):
                                            st.success("Bildvorlage gelöscht!")
                                            st.rerun()
                                        else:
                                            st.error("Fehler beim Löschen.")
        else:
            st.info(" Noch keine Bildvorlagen für diese Firma hochgeladen.")

    except ImportError:
        st.error(" Datenbankfunktionen für Bildvorlagen nicht verfügbar.")


48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm64 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm128 0v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H336zM64 400v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H208zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z' /%3E %3C/svg%3E") }
.fa-calendar-minus:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath d='M160 0c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H32V112c0-26.5 21.5-48 48-48h48V32c0-17.7 14.3-32 32-32zM32 192H480V464c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V192zM344 376c13.3 0 24-10.7 24-24s-10.7-24-24-24H168c-13.3 0-24 10.7-24 24s10.7 24 24 24H344z' /%3E %3C/svg%3E") }
.fa-calendar-plus:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath d='M128 32V64H80c-26.5 0-48 21.5-48 48v48H480V112c0-26.5-21.5-48-48-48H384V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H192V32c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 192H32V464c0 26.5 21.5 48 48 48H432c26.5 0 48-21.5 48-48V192zM256 248c13.3 0 24 10.7 24 24v56h56c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V376H176c-13.3 0-24-10.7-24-24s10.


-ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: end;
  -webkit-justify-content: flex-end;
      -ms-flex-pack: end;
          justify-content: flex-end;
  padding: 15px;
  border-top: 1px solid #eceeef;
}

.modal-footer > :not(:first-child) {
  margin-left: .25rem;
}

.modal-footer > :not(:last-child) {
  margin-right: .25rem;
}

.modal-scrollbar-measure {
  position: absolute;
  top: -9999px;
  width: 50px;
  height: 50px;
  overflow: scroll;
}

@media (min-width: 576px) {
  .modal-dialog {
    max-width: 500px;
    margin: 30px auto;
  }
  .modal-sm {
    max-width: 300px;
  }
}

@media (min-width: 992px) {
  .modal-lg {
    max-width: 800px;
  }
}

.tooltip {
  position: absolute;
  z-index: 1070;
  display: block;
  font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.5;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  font-size: 0.875rem;
  word-wrap: break-word;
  opacity: 0;
}

.tooltip.show {
  opacity: 0.9;
}

.tooltip.tooltip-top, .tooltip.bs-tether-element-attached-bottom {
  padding: 5px 0;
  margin-top: -3px;
}

.tooltip.tooltip-top .tooltip-inner::before, .tooltip.bs-tether-element-attached-bottom .tooltip-inner::before {
  bottom: 0;
  left: 50%;
  margin-left: -5px;
  content: "";
  border-width: 5px 5px 0;
  border-top-color: #000;
}

.tooltip.tooltip-right, .tooltip.bs-tether-element-attached-left {
  padding: 0 5px;
  margin-left: 3px;
}

.tooltip.tooltip-right .tooltip-inner::before, .tooltip.bs-tether-element-attached-left .tooltip-inner::before {
  top: 50%;
  left: 0;
  margin-top: -5px;
  content: "";
  border-width: 5px 5px 5px 0;
  border-right-color: #000;
}

.tooltip.tooltip-bottom, .tooltip.bs-tether-element-attached-top {
  padding: 5px 0;
  margin-top: 3px;
}

.tooltip.tooltip-bottom .tooltip-inner::before, .tooltip.bs-tether-element-attached-top .tooltip-inner::before {
  top: 0;
  left: 50%;
  margin-left: -5px;
  content: "";
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}

.tooltip.tooltip-left, .tooltip.bs-tether-element-attached-right {
  padding: 0 5px;
  margin-left: -3px;
}

.tooltip.tooltip-left .tooltip-inner::before, .tooltip.bs-tether-element-attached-right .tooltip-inner::before {
  top: 50%;
  right: 0;
  margin-top: -5px;
  content: "";
  border-width: 5px 0 5px 5px;


0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"],redhat:[512,512,[],"f7bc","M341.52 285.56c33.65 0 82.34-6.94 82.34-47 .22-6.74.86-1.82-20.88-96.24-4.62-19.15-8.68-27.84-42.31-44.65-26.09-13.34-82.92-35.37-99.73-35.37-15.66 0-20.2 20.17-38.87 20.17-18 0-31.31-15.06-48.12-15.06-16.14 0-26.66 11-34.78 33.62-27.5 77.55-26.28 74.27-26.12 78.27 0 24.8 97.64 106.11 228.47 106.11M429 254.84c4.65 22 4.65 24.35 4.65 27.25 0 37.66-42.33 58.56-98 58.56-125.74.08-235.91-73.65-235.91-122.33a49.55 49.55 0 0 1 4.06-19.72C58.56 200.86 0 208.93 0 260.63c0 84.67 200.63 189 359.49 189 121.79 0 152.51-55.08 152.51-98.58 0-34.21-29.59-73.05-82.93-96.24"],yoast:[448,512,


ies: {
            title: { type: "String", group: "Misc" },
            icon: { type: "sap.ui.core.URI", group: "Appearance" }
        },
        defaultAggregation: "content",
        aggregations: {
            content: { type: "sap.ui.core.Control", multiple: true, singularName: "content" }
        },
        events: {}
    };
    renderer = {
        apiVersion: 2,

        /**
         * Renders the HTML for the given control, using the provided
         * {@link sap.ui.core.RenderManager}.
         *
         * @param rm the RenderManager that can be used for writing to the Render-Output-Buffer
         * @param panel the side customziation panel to render
         */
        render(rm: RenderManager, panel: CustomizationPanel): void {
            // create a wrapper element with some styling
            rm.openStart("div", panel);
            rm.class("deveposQdrt-CustomizationPanel");
            rm.openEnd();

            // render the header
            rm.openStart("header", panel.getId() + "-header");
            rm.openEnd();
            rm.renderControl(panel.getHeader());
            rm.close("header");

            const contentItems = panel.getContent();
            if (contentItems?.length > 0) {
                rm.openStart("div", panel.getId() + "-content");
                rm.openEnd();
                // render content aggregation
                for (const contentItem of contentItems) {
                    if (contentItem.getVisible()) {
                        rm.renderControl(contentItem);
                    }
                }
                rm.close("div");
            }
            rm.close("div");
        }
    };
    private _icon: Icon;
    private _titleControl: Title;
    private _headerBox: FlexBox;

    //#region methods generated through metadata
    getContent?(): Control[];
    getIcon?(): URI;
    getTitle?(): string;
    //#endregion

    getHeader(): FlexBox {
        if (this._headerBox) {
            // update the icon
            this._getIconControl();
        } else {
            this._headerBox = new FlexBox({
                alignItems: FlexAlignItems.Center,
                justifyContent: FlexJustifyContent.Start,
                items: [this._getIconControl(), this._getTitleControl()]
            });
        }
        return this._headerBox;
    }

    exit(): void {
        // it is enough to dispose of the header box as the icon and title are aggregations
        // of the box
        if (this._headerBox) {
            this._headerBox.destroy();
        }
    }
    /**
     * Lazily creates the icon control
     * @returns the control for the icon URI
     */
    private _getIconControl(): Icon {
        if (this._icon) {
            this._icon.setSrc(this.getIcon());
        } else {
            this._icon = new Icon({
                src: this.getIcon()
            });
        }

        return this._icon;
    }

    /**
     * Lazily creates the icon control
     * @returns the title control to hold the title
     */
    private _getTitleControl(): Title {
        if (this._titleControl) {
            this._titleControl.setText(this.getTitle());
        } else {
            this._titleControl = new Title({
                text: this.getTitle(),
                titleStyle: "H4"
            });
            this._titleControl.addStyleClass("deveposQdrt-CustomizationPanel__HeaderTitle");
        }
        return this._titleControl;
    }
}
import {Injectable} from '@angular/core';
import {SQLite, SQLiteObject} from '@ionic-native/sqlite';

@


strict; // TODO: Validate strictness (ensure lengths match up with other stricts)

      this._updateCachedProperties();

      return this;
    }
  }, {
    key: "cbind",
    value: function cbind(obj, strict) {
      var _this2 = this;

      Object.keys(obj).forEach(function (name) {
        var coldata = obj[name];

        _this2.col(name, coldata);
      });
      return this;
    }
  }, {
    key: "get",
    value: function get(row, col, missingOK) {
      var _this3 = this;

      if (row > this.effectiveLength) throw new Error("Row argument was out of bounds: " + row + " > " + this.effectiveLength);
      var colIndex = -1;

      if (typeof col === "undefined") {
        var rowData = {};
        this.colnames.forEach(function (name, i) {
          rowData[name] = _this3.columns[i][row % _this3.columns[i].length];
        });
        return rowData;
      } else if (typeof col === "string") {
        colIndex = this._colIndex(col);
      } else if (typeof col === "number") {
        colIndex = col;
      }

      if (colIndex < 0 || colIndex > this.columns.length) {
        if (missingOK) return void 0;else throw new Error("Unknown column index: " + col);
      }

      return this.columns[colIndex][row % this.columns[colIndex].length];
    }
  }, {
    key: "nrow",
    value: function nrow() {
      return this.effectiveLength;
    }
  }]);

  return DataFrame;
}();

exports["default"] = DataFrame;

},{"./util":17}],5:[function(require,module,exports){
"use strict";

var _leaflet = require("./global/leaflet");

var _leaflet2 = _interopRequireDefault(_leaflet);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

// In RMarkdown's self-contained mode, we don't have a way to carry around the
// images that Leaflet needs but doesn't load into the page. Instead, we'll use
// the unpkg CDN.
if (typeof _leaflet2["default"].Icon.Default.imagePath === "undefined") {
  _leaflet2["default"].Icon.Default.imagePath = "https://unpkg.com/leaflet@1.3.1/dist/images/";
}

},{"./global/leaflet":10}],6:[function(require,module,exports){
"use strict";

var _leaflet = require("./global/leaflet");

var _leaflet2 = _interopRequireDefault(_leaflet);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

// add texxtsize, textOnly, and style
_leaflet2["default"].Tooltip.prototype.options.textsize = "10px";
_leaflet2["default"].Tooltip.prototype.options.textOnly = false;
_leaflet2["default"].Tooltip.prototype.options.style = null; // copy original layout to not completely stomp it.

var initLayoutOriginal = _leaflet2["default"].Tooltip.prototype._initLayout;

_leaflet2["default"].Tooltip.prototype._initLayout = function () {
  initLayoutOriginal.call(this);
  this._container.style.fontSize = this.options.textsize;

  if (this.options.textOnly) {
    _leaflet2["default"].DomUtil.addClass(this._container, "leaflet-tooltip-text-only");
  }

  if (this.options.style) {
    for (var property in this.options.style) {
      this._container.style[property] = this.options.style[property];
    }
  }
};

},{"./global/leaflet":10}],7:[function(require,module,exports){
"use strict";

var _leaflet


isDSTShifted=C("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var t={};if(m(t,this),(t=me(t))._a){var e=t._isUTC?d(t._a):xe(t._a);this._isDSTShifted=this.isValid()&&0<E(t._a,e.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted}));var cn=N.prototype;function un(t,e,n,r){var i=re(),a=d().set(r,e);return i[n](a,t)}function ln(t,e,n){if(c(t)&&(e=t,t=void 0),t=t||"",null!=e)return un(t,e,n,"month");var r,i=[];for(r=0;r<12;r++)i[r]=un(t,r,n,"month");return i}function hn(t,e,n,r){"boolean"==typeof t?c(e)&&(n=e,e=void 0):(e=t,t=!1,c(n=e)&&(n=e,e=void 0)),e=e||"";var i,a=re(),o=t?a._week.dow:0;if(null!=n)return un(e,(n+o)%7,r,"day");var s=[];for(i=0;i<7;i++)s[i]=un(e,(i+o)%7,r,"day");return s}cn.calendar=function(t,e,n){var r=this._calendar[t]||this._calendar.sameElse;return O(r)?r.call(e,n):r},cn.longDateFormat=function(t){var e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,(function(t){return t.slice(1)})),this._longDateFormat[t])},cn.invalidDate=function(){return this._invalidDate},cn.ordinal=function(t){return this._ordinal.replace("%d",t)},cn.preparse=sn,cn.postformat=sn,cn.relativeTime=function(t,e,n,r){var i=this._relativeTime[n];return O(i)?i(t,e,n,r):i.replace(/%d/i,t)},cn.pastFuture=function(t,e){var n=this._relativeTime[0<t?"future":"past"];return O(n)?n(e):n.replace(/%s/i,e)},cn.set=function(t){var e,n;for(n in t)O(e=t[n])?this[n]=e:this["_"+n]=e;this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},cn.months=function(t,e){return t?a(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||Et).test(e)?"format":"standalone"][t.month()]:a(this._months)?this._months:this._months.standalone},cn.monthsShort=function(t,e){return t?a(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[Et.test(e)?"format":"standalone"][t.month()]:a(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},cn.monthsParse=function(t,e,n){var r,i,a;if(this._monthsParseExact)return function(t,e,n){var r,i,a,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],r=0;r<12;++r)a=d(


privātu, taču, ja pastāvīgi atrodaties kopā ar draugiem, kuri uzņem selfijus ar jums, subtitros saka, ka viņi ir kopā ar jums, un atzīmē savu atrašanās vietu, liela daļa jūsu pūļu var būt veltīga. Sociālo mediju konglomerāts joprojām var izveidot jūsu profilu, neskatoties uz to, ka jūs personīgi neesat viņu platformā.
\n\n
Viena no bieži apspriestajām situācijām, kad cilvēki neņem vērā visas sekas un potenciāli nopludinātos metadatus, ir jautājums par Bitcoin tirdzniecību ar Monero. Sabiedrībā parasti tiek uzskatīts, ka Monero iegāde ar Bitcoin būs pilnīga tīrīšana un lietotājs saglabā visas privātuma priekšrocības, tiklīdz viņš nonāk Monero, neskatoties uz to, ka sāk no caurredzamas ķēdes.
\n\n
Līdzīgā veidā daži uzskata, ka Monero iegūšana no avotiem, kas nav KYC, un kas ir KYC, ir tikpat privāti. Domājams, ka tas ir līdzīgi skaidras naudas saņemšanai bankā. Šādā gadījumā banka pati zina jūsu seju un vārdu, kā arī zina, cik daudz jums ir jūsu kontā kopumā un cik daudz jūs izņēmāt skaidru naudu, bet nezina, ko jūs darāt ar skaidru naudu pēc tam. Izmantojot Monero privātuma garantijas, tam vajadzētu būt tieši tā, iegūstot Monero no KYC/AML avota, vai ne?
\n\n
Nu, ne gluži.
\n\n
Vispirms spersim ātru soli atpakaļ un definēsim, ko mēs saprotam ar KYC/AML. Šis saīsinājums apzīmē “Pazīsti savu klientu” (KYC)/\"Pret naudas atmazgāšanu\" (AML) likumus, kas pieprasa biržām un uzņēmumiem apkopot identificējošu informāciju par saviem klientiem. Jo lielāka ir apmainītā naudas summa, jo vairāk informācijas tiek prasīts. Kā norāda nosaukums, tas viss tiek darīts, lai samazinātu risku, ka cilvēki varētu legalizēt naudu.
\n\n
Atpakaļ uz Monero. Protams, naudas pārvietošana uz Monero no KYC avota ir astronomiski labāka privātuma nodrošināšanai nekā KYC avota izmantošana, lai iegādātos kaut ko līdzīgu BTC vai jebkurai citai caurspīdīgai monētai, taču joprojām ir jāapsver, kas tiek atklāts un kas tas ir. Atklātā informācija var ietekmēt jūsu privātumu un drošību.
\n\n
Pat pieturoties pie skaidras naudas un bankas scenārija, ja izņemat no bankas lielu summu, tā kā bankai ir zināmi jūsu dati (tostarp j


e&status=done&style=none&taskId=u1a7c6d6f-01ef-4b86-a1f1-5fdc3705a8c&title=&width=295)

## 控制反转是什么?

答案：
控制反转就是说，把对象的控制权交给了 spring，由 spring 容器进行管理，我们不进行任何操作

## **为什么需要控制反转?**

答案：
我们想象一下，没有控制反转的时候，我们需要自己去创建对象，配置对象，还要人工去处理对象与对象之间的各种复杂的依赖关系，当一个工程的代码量很大时，这种关系的维护是非常令人头痛的，所以就有了控制反转这个概念，将对象的创建、配置等一系列操作交给 Spring 去管理，不需要⼈⼯来管理对象之间复杂的依赖关系。

## **IOC 容器有哪些?**

答案：
Spring 主要提供了两种 IOC 容器，一种是 BeanFactory，还有一种是 ApplicationContext
它们的区别，BeanFactory 只提供了最基本的实例化对象和拿对象的功能，而 ApplicationContext 是继承了 BeanFactory 所派生出来的产物，是其子类，它的作用更加的强大，比如支持注解注入、国际化等功能

## **DI 是什么?**

答案：
DI 就是依赖注入，其实和 IOC 大致相同，只不过是同一个概念使用了不同的角度去阐述
DI 所描述的重点是在于依赖，我们说了 IOC 的核心功能就是在于在程序运行时动态的向某个对象提供其他的依赖对象，而这个功能就是依靠 DI 去完成的，比如我们需要注入一个对象 A，而这个对象 A 依赖一个对象 B，那么我们就需要把这个对象 B 注入到对象 A 中，这就是依赖注入。
控制反转是一种思想，依赖注入是实现方式！
**Spring 有三种注入方式:**

- 接口注入
- 构造器函数注入
- setter 注入

## **AOP 是什么?**

答案：
AOP 意为：**面向切面编程，通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术**。
AOP 是 OOP(面向对象编程) 的延续，是 Spring 框架中的一个重要内容，是函数式编程的一种衍生范型。利用 AOP 可以对业务逻辑的各个部分进行隔离，从而使得业务逻辑各部分之间的耦合度降低，提高程序的可重用性，同时提高了开发的效率。
**AOP 实现主要分为两类:**

- **静态 AOP 实现**， AOP 框架**在编译阶段**对程序源代码进行修改，生成了静态的 AOP 代理类（生成的 *.class 文件已经被改掉了，需要使用特定的编译器），比如 AspectJ
- **动态 AOP 实现**， AOP 框架**在运行阶�


NotBlank(pixelinvadersNetIp) && pixelinvadersNetPort > 0) {
        	LOG.log(Level.INFO, "Found PixelInvaders Net Config "+pixelinvadersNetIp+":"+pixelinvadersNetPort);
        	return 0;
        }

        //get blacklist devices
        String blacklist = config.getProperty(ConfigConstant.PIXELINVADERS_BLACKLIST);
        if (blacklist != null) {
            pixelInvadersBlacklist = new ArrayList<String>();
            for (String s: blacklist.split(",")) {
                pixelInvadersBlacklist.add(StringUtils.strip(s));
            }
        }

        //colorcorrection, maximal 16 panels
        for (int i=0; i<16; i++) {
            String pixColAdjustR = config.getProperty(ConfigConstant.PIXELINVADERS_COLORADJUST_R+i);
            String pixColAdjustG = config.getProperty(ConfigConstant.PIXELINVADERS_COLORADJUST_G+i);
            String pixColAdjustB = config.getProperty(ConfigConstant.PIXELINVADERS_COLORADJUST_B+i);

            if (pixColAdjustR!=null && pixColAdjustG!=null && pixColAdjustB!=null) {
            	RGBAdjust adj = new RGBAdjust(
            			parseInt(ConfigConstant.PIXELINVADERS_COLORADJUST_R+i),
            			parseInt(ConfigConstant.PIXELINVADERS_COLORADJUST_G+i),
            			parseInt(ConfigConstant.PIXELINVADERS_COLORADJUST_B+i)
            			);
            	LOG.log(Level.INFO, "Found PixelInvaders color correction for output "+i+": "+adj);
            	pixelInvadersCorrectionMap.put(i, adj);
            }
        }

        return lpdDevice.size();
    }

    /**
     *
     * @return
     */
    private int parsePixelInvaderNetConfig() {
    	if (StringUtils.isNotBlank(pixelinvadersNetIp) && pixelinvadersNetPort > 0) {
        	return lpdDevice.size();
    	}

    	return 0;
    }

    /**
     * Parses the stealth address.
     *
     * @return the int
     */
    private int parseStealthConfig() {
        stealthDevice = new ArrayList<DeviceConfig>();

        String value = config.getProperty(ConfigConstant.STEALTH_ROW1);
        if (StringUtils.isNotBlank(value)) {
            this.deviceXResolution = 16;
            this.deviceYResolution = 16;
            for (String s: value.split(ConfigConstant.DELIM)) {
                try {
                    DeviceConfig cfg = DeviceConfig.valueOf(StringUtils.strip(s));
                    stealthDevice.add(cfg);
                    devicesInRow1++;
                } catch (Exception e) {
                    LOG.log(Level.WARNING, FAILED_TO_PARSE, s);
                }
            }
        }

        value = config.getProperty(ConfigConstant.STEALTH_ROW2);
        if (StringUtils.isNotBlank(value)) {
            for (String s: value.split(ConfigConstant.DELIM)) {
                try {
                    DeviceConfig cfg = DeviceConfig.valueOf(StringUtils.strip(s));
                    stealthDevice.add(cfg);
                    devicesInRow2++;
                } catch (Exception e) {
                    LOG.log(Level.WARNING, FAILED_TO_PARSE, s);
                }
            }
        }

        return stealthDevice.size();
    }

    /**
     * get the size of the software emulated matrix.
     *
     * @return the size or -1 if nothing was defined
     */
    public int getLedPixelSize() {
        int ret=20;

        String tmp = config.getProperty(ConfigConstant.CFG_PIXEL_SIZE, "20");
        try {
            ret = Integer.parseInt(tmp);
        } catch (NumberFormatException e) {
            LOG.log(Level.WARNING,


init-replylink-buttons" data-mw-thread-id="c-PPelberg_(WMF)-2020-04-09T22:31:00.000Z-Over_interne_links-3">(discussiontools-replybutton)

<span class='ext-discussiontools-init-section-subscribeButton oo-ui-widget oo-ui-widget-enabled oo-ui-buttonElement oo-ui-buttonElement-frameless oo-ui-iconElement oo-ui-labelElement oo-ui-flaggedElement-progressive oo-ui-buttonWidget' data-ooui='{"_":"OO.ui.ButtonWidget","href":"\/w\/index.php?title=Overleg:Unclosed_font&action=dtsubscribe&commentname=h-PPelberg_%28WMF%29-2020-04-09T22%3A31%3A00.000Z&section=Kopenhagen","rel":["nofollow"],"framed":false,"icon":"bellOutline","label":"(discussiontools-topicsubscription-button-subscribe-label)","title":"(discussiontools-topicsubscription-button-subscribe-tooltip)","flags":["progressive"],"classes":["ext-discussiontools-init-section-subscribeButton"]}'>(discussiontools-topicsubscription-button-subscribe-label)
Kopenhagen

<span class='ext-


            foreach (var item in items)
            {
                for (int i = 0; i < item.Content.Count; ++i)
                {
                    if (item.Content[i].StartsWith("img:") && !item.Content[i].AsSpan(4).StartsWith("http"))
                    {
                        item.Content[i] = "img:" + baseUrl + item.Content[i].Substring(4);
                    }
                }
            }

            return items;
        }
        catch (Exception e)
        {
            return new List<TimeLineItem>()
            {
                new()
                {
                    Date = "Error while downloading data",
                    Content = new List<string>()
                    {
                        "Sorry, couldn't load the timeline due to an error. Please try again later.",
                        e.Message
                    }
                }
            };
        }
    }

    public void OpenWeb()
    {
        windowManager.OpenUrl(baseUrl);
    }
}


export type Todos_Stddev_Samp_Fields = {
  __typename?: 'todos_stddev_samp_fields';
  category_id?: Maybe<Scalars['Float']>;
  id?: Maybe<Scalars['Float']>;
  workload?: Maybe<Scalars['Float']>;
};

/** order by stddev_samp() on columns of table "todos" */
export type Todos_Stddev_Samp_Order_By = {
  category_id?: Maybe<Order_By>;
  id?: Maybe<Order_By>;
  workload?: Maybe<Order_By>;
};

/** aggregate sum on columns */
export type Todos_Sum_Fields = {
  __typename?: 'todos_sum_fields';
  category_id?: Maybe<Scalars['Int']>;
  id?: Maybe<Scalars['Int']>;
  workload?: Maybe<Scalars['Int']>;
};

/** order by sum() on columns of table "todos" */
export type Todos_Sum_Order_By = {
  category_id?: Maybe<Order_By>;
  id?: Maybe<Order_By>;
  workload?: Maybe<Order_By>;
};

/** update columns of table "todos" */
export type Todos_Update_Column =
  /** column name */
  | 'category_id'
  /** column name */
  | 'completed_at'
  /** column name */
  | 'deleted_at'
  /** column name */
  | 'is_today'
  /** column name */
  | 'title'
  /** column name */
  | 'urgency'
  /** column name */
  | 'workload';

/** aggregate var_pop on columns */
export type Todos_Var_Pop_Fields = {
  __typename?: 'todos_var_pop_fields';
  category_id?: Maybe<Scalars['Float']>;
  id?: Maybe<Scalars['Float']>;
  workload?: Maybe<Scalars['Float']>;
};

/** order by var_pop() on columns of table "todos" */
export type Todos_Var_Pop_Order_By = {
  category_id?: Maybe<Order_By>;
  id?: Maybe<Order_By>;
  workload?: Maybe<Order_By>;
};

/** aggregate var_samp on columns */
export type Todos_Var_Samp_Fields = {
  __typename?: 'todos_var_samp_fields';
  category_id?: Maybe<Scalars['Float']>;
  id?: Maybe<Scalars['Float']>;
  workload?: Maybe<Scalars['Float']>;
};

/** order by var_samp() on columns of table "todos" */
export type Todos_Var_Samp_Order_By = {
  category_id?: Maybe<Order_By>;
  id?: Maybe<Order_By>;
  workload?: Maybe<Order_By>;
};

/** aggregate variance on columns */
export type Todos_Variance_Fields = {
  __typename?: 'todos_variance_fields';
  category_id?: Maybe<Scalars['Float']>;
  id?: Maybe<Scalars['Float']>;
  workload?: Maybe<Scalars['Float']>;
};

/** order by variance() on columns of table "todos" */
export type Todos_Variance_Order_By = {
  category_id?: Maybe<Order_By>;
  id?: Maybe<Order_By>;
  workload?: Maybe<Order_By>;
};

export type Urgency_Enum =
  /** 月 */
  | 'MONTH'
  /** 週 */
  | 'WEEK'
  /** 年 */
  | 'YEAR';

/** expression to compare columns of type urgency_enum. All fields are combined with logical 'AND'. */
export type Urgency_Enum_Comparison_Exp = {
  _eq?: Maybe<Urgency_Enum>;
  _in?: Maybe<Array<Urgency_Enum>>;
  _is_null?: Maybe<Scalars['Boolean']>;
  _neq?: Maybe<Urgency_Enum>;
  _nin?: Maybe<Array<Urgency_Enum>>;
};

/** columns and relationships of "users" */
export type Users = {
  __typename?: 'users';
  auth_id: Scalars['String'];
  color?: Maybe<Color_Enum>;
  goal?: Maybe<Scalars['String']>;
  id: Scala


(Rectangle(40.0, 40.0, Color.RED))
                .collidable()
                .with(ProjectileComponent(Point2D(1.0, 0.0), 100.0))
                .buildAndAttach()
    }
}

fun main() {
    GameApplication.launch(KotlinGameApp::class.java, emptyArray())
}/*
 * FXGL - JavaFX Game Library. The MIT License (MIT).
 * Copyright (c) AlmasB (almaslvl@gmail.com).
 * See LICENSE for details.
 */

package com.almasb.fxgl.tools.dialogues

import com.almasb.fxgl.cutscene.dialogue.DialogueEdge
import com.almasb.fxgl.cutscene.dialogue.DialogueGraph
import com.almasb.fxgl.cutscene.dialogue.DialogueNode

/**
 *
 * @author Almas Baimagambetov (almaslvl@gmail.com)
 */

interface EditorAction {

    fun run()

    fun undo()
}

// possible actions:
// * move node
// * add node
// * remove node (and its incident edges)
// * add edge
// * remove edge
// * bulk action
// * TODO: node text editing

class BulkAction(
        private val actions: List<EditorAction>
) : EditorAction {

    override fun run() {
        actions.forEach { it.run() }
    }

    override fun undo() {
        actions.forEach { it.undo() }
    }
}

class MoveNodeAction(
        private val node: DialogueNode,
        private val newNodeViewGetter: (DialogueNode) -> NodeView,
        private val startX: Double,
        private val startY: Double,
        private val endX: Double,
        private val endY: Double
) : EditorAction {

    override fun run() {
        val nodeView = newNodeViewGetter(node)

        nodeView.layoutX = endX
        nodeView.layoutY = endY
    }

    override fun undo() {
        val nodeView = newNodeViewGetter(node)

        nodeView.layoutX = startX
        nodeView.layoutY = startY
    }
}

class AddNodeAction(
        private val graph: DialogueGraph,
        private val node: DialogueNode
) : EditorAction {

    override fun run() {
        graph.addNode(node)
    }

    override fun undo() {
        graph.removeNode(node)
    }

    override fun toString(): String {
        return "AddNode(${node.type})"
    }
}

class RemoveNodeAction(
        private val graph: DialogueGraph,
        private val node: DialogueNode,

        // where the node was during removal
        private val layoutX: Double,
        private val layoutY: Double,

        // the newly created one (via undo) can be accessed through this
        private val newNodeViewGetter: (DialogueNode) -> NodeView
) : EditorAction {

    private val edges = arrayListOf<DialogueEdge>()

    override fun run() {
        graph.edges.filter { it.source === node || it.target === node }
                .forEach { edges += it }

        graph.removeNode(node)
    }

    override fun undo() {
        graph.addNode(node)

        newNodeViewGetter(node).relocate(layoutX, layoutY)

        edges.forEach {
            graph.addEdge(it)
        }
    }
}

class AddEdgeAction(
        private val graph: DialogueGraph,
        private val source: DialogueNode,
        private val target: DialogueNode
) : EditorAction {

    override fun run() {
        graph.addEdge(source, target)
    }

    override fun undo() {
        graph.removeEdge(source, target)
    }
}

class AddChoiceEdgeAction(
        private val grap


2.ToList();

			Assert.That(mall.Shops2.Count(), Is.EqualTo(0));

			Assert.That(mall.Shops.HasItems);
			Assert.That(mall.Shops2.HasItems);

			Assert.That(mall.Shops.Count(), Is.GreaterThan(0));
			Assert.That(mall.Shops2.Count(), Is.EqualTo(0));
		}

		[Test]
		public void Test_OrderBy_DaoProperty_With_Collection_CustomProject1()
		{
			using (var scope = NewTransactionScope())
			{
				var results = this.model.Malls
					.Where(c => c.Name == "Seattle City")
					.Include(c => c.Shops)
					.Include(c => c.Shops2.IncludedItems().Address.Region)
					.Include(c => c.Address)
					.Select(c => new { mall = c, shops = c.Shops })
					.ToList();

				var x = results[0].shops.Items().Count;

				Assert.That(results[0].shops.Items().Count, Is.GreaterThan(0));

				results = this.model.Malls
					.Where(c => c.Name == "Seattle City")
					.Include(c => c.Shops)
					.Include(c => c.Shops2.IncludedItems().Address.Region)
					.Include(c => c.Address)
					.Select(c => new { mall = c, shops = c.Shops })
					.ToList();

				Assert.That(results[0].shops.Items().Count, Is.EqualTo(x));
			}
		}

		[Test]
		public void Test_OrderBy_DaoProperty_With_Collection_CustomProject2()
		{
			using (var scope = NewTransactionScope())
			{
				var results = this.model.Malls
					.Where(c => c.Name == "Seattle City")
					.Include(c => c.Shops)
					.Include(c => c.Shops2.IncludedItems().Address.Region)
					.Include(c => c.Address)
					.Select(c => new { mall = c, shops = c.Shops2 })
					.ToList();

				Assert.That(results[0].shops.Items().Count, Is.EqualTo(0));

				results = this.model.Malls
					.Where(c => c.Name == "Seattle City")
					.Include(c => c.Shops)
					.Include(c => c.Shops2.IncludedItems().Address.Region)
					.Include(c => c.Address)
					.Select(c => new { mall = c, shops = c.Shops2 })
					.ToList();

				Assert.That(results[0].shops.Items().Count, Is.EqualTo(0));
			}
		}

		[Test]
		public void Test_OrderBy_DaoProperty_With_Collection_Include2()
		{
			using (var scope = NewTransactionScope())
			{
				var malls = this.model.Malls
					.Include(c => c.Shops)
					.Include(c => c.SisterMall.Shops)
					.Include(c => c.Shops2.IncludedItems().Address.Region)
					.Include(c => c.Address)
					.OrderBy(c => c.Name)
					.ToList();
			}
		}

		[Test]
		public void Test_OrderBy_DaoProperty_With_Collection_Include3()
		{
			using (var scope = NewTransactionScope())
			{
				var malls = this.model.Malls
					.OrderBy(c => c.Name)
					.Include(c => c.Shops)
					.Include(c => c.SisterMall.Shops)
					.Include(c => c.Shops2.OrderBy(d => d.CloseDate).IncludedItems().Address.Region)
					.Include(c => c.Address)
					.ToList();
			}
		}

		[Test]
		public void Test_


n(self, list, pn)
            playerConfig:get_data().NPSDisplay = list[1]
            playerConfig:get_data().NPSGraph = list[2]
            playerConfig:set_dirty()
            playerConfig:save()
        end
    }
    setmetatable(t, t)
    return t
end

function StaticBackgrounds()
    local t = {
        Name = "StaticBG",
        LayoutType = "ShowAllInRow",
        SelectType = "SelectOne",
        OneChoiceForAllPlayers = true,
        ExportOnChange = false,
        ExportOnCancel = true,
        Choices = {
            THEME:GetString("OptionNames", "Default"),
            THEME:GetString("OptionNames", "StaticBG"),
        },
        LoadSelections = function(self, list, pn)
            local pref = themeConfig:get_data().global.StaticBackgrounds
            if pref then
                list[2] = true
            else
                list[1] = true
            end
        end,
        SaveSelections = function(self, list, pn)
            local value
            if list[1] then
                value = false
            elseif list[2] then
                value = true
            end
            playerConfig:get_data().StaticBackgrounds = value
            playerConfig:set_dirty()
            playerConfig:save()
        end
    }
    setmetatable(t, t)
    return t
end