AE_MODE, CaptureRequest.CONTROL_AE_MODE_OFF);
			Camera2Controller.previewRequestBuilder.set(CaptureRequest.SENSOR_EXPOSURE_TIME, exposureTime);

			if(frameDuration > 0)
				Camera2Controller.previewRequestBuilder.set(CaptureRequest.SENSOR_FRAME_DURATION, frameDuration);

			if(sensorSensitivity > 0)
				Camera2Controller.previewRequestBuilder.set(CaptureRequest.SENSOR_SENSITIVITY, sensorSensitivity);

			Camera2Controller.setRepeatingRequest();
			isManualExposureTime = true;
		}

		PreferenceManager.getDefaultSharedPreferences(ApplicationScreen.getMainContext()).edit()
				.putLong(ApplicationScreen.sExposureTimePref, iTime).commit();
	}

	public static void setCameraCollorEffectCamera2(int mode)
	{
		if (Camera2Controller.previewRequestBuilder != null && Camera2Controller.getInstance().camDevice != null)
		{
			if (ApplicationScreen.instance.useColorFilters())
			{
				Camera2Controller.previewRequestBuilder.set(CaptureRequest.CONTROL_EFFECT_MODE, mode);
				Camera2Controller.setRepeatingRequest();
			}
		}
	}

	public static void resetCameraAEModeCamera2()
	{
		if (Camera2Controller.previewRequestBuilder != null && Camera2Controller.getInstance().camDevice != null
				&& Camera2Controller.getInstance().mCaptureSession != null)
		{
			try
			{
				Camera2Controller.getInstance().configurePreviewRequest(true);
			} catch (CameraAccessException e)
			{
				e.printStackTrace();
			}
		}
	}

	public static void setCameraFocusDistanceCamera2(float fDistance)
	{
		if (Camera2Controller.previewRequestBuilder != null && Camera2Controller.getInstance().camDevice != null
				&& Camera2Controller.getInstance().mCaptureSession != null)
		{
			Camera2Controller.previewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_OFF);
			Camera2Controller.previewRequestBuilder.set(CaptureRequest.LENS_FOCUS_DISTANCE, fDistance);
			Camera2Controller.setRepeatingRequest();
		}

		PreferenceManager.getDefaultSharedPreferences(ApplicationScreen.getMainContext()).edit()
				.putFloat(ApplicationScreen.sFocusDistancePref, fDistance).commit();

		PreferenceManager.getDefaultSharedPreferences(ApplicationScreen.getMainContext()).edit()
				.putInt(CameraController.isFrontCamera() ? ApplicationScreen.sRearFocusModePref
				: ApplicationScreen.sFrontFocusModePref, CameraParameters.MF_MODE).commit();
	}
	//////////////////////////////////////////////////////////////////////////////////////

	public static void setCameraFocusAreasCamera2(List<Area> focusAreas)
	{
		if(activeRect == null)
			return;

		Rect zoomRect = getZoomRect(zoomLevel, activeRect.width(), activeRect.height());
		if (focusAreas != null && zoomRect != null)
		{
			af_regions = new MeteringRectangle[focusAreas.size()];
			for (int i = 0; i < focusAreas.size(); i++)
			{
				Rect r = focusAreas.get(i).rect;

//				Matrix matrix = new Matrix();
//				matrix.setScale(1, 1);
//				matrix.preTranslate(1000.0f, 1000.0f);
//				matrix.postScale((zoomRect.width() - 1) / 2000.0f, (zoomRect.height() - 1) / 2000.0f);
//				matrix.postTranslate((activeRect.width() - zoomRect.width()) / 2, (activeRect.height() - zoomRect.height()) / 2);
//
//				RectF rectF = new RectF(r.left, r.top, r.right, r.bottom);
//				matrix.mapRect(rectF);
//				Util.rectFToRect(rectF, r);
//
				int c


ng::new();
        self.rec(node, parser, &mut buf, 0);
        buf
    }

    fn rec(&self, node: &ParseNode, parser: &Parser, buf: &mut String, prec: u32) {
        //println!("rec {:?}", node);
        if let Info::Atom(tok) = node.info {
            let tok = parser.tok_str(tok);
            match tok {
                "ph" => buf.push_str("\\varphi"),
                "ps" => buf.push_str("\\psi"),
                "ch" => buf.push_str("\\chi"),
                "th" => buf.push_str("\\theta"),
                "ta" => buf.push_str("\\tau"),
                "et" => buf.push_str("\\eta"),
                "ze" => buf.push_str("\\zeta"),
                "si" => buf.push_str("\\sigma"),
                "rh" => buf.push_str("\\rho"),
                "mu" => buf.push_str("\\mu"),
                "la" => buf.push_str("\\lambda"),
                "ka" => buf.push_str("\\kappa"),
                "|-" => self.unary("\\vdash", 5, node, parser, buf, prec),
                "<->" => self.infixl("\\leftrightarrow", 20, node, parser, buf, prec),
                "->" => self.infixr("\\rightarrow", 25, node, parser, buf, prec),
                "\\/" => self.infixl("\\vee", 30, node, parser, buf, prec),
                "/\\" => self.infixl("\\wedge", 35, node, parser, buf, prec),
                "-." => self.unary("\\neg", 40, node, parser, buf, prec),
                _ => {
                    if !node.children.is_empty() {
                        buf.push_str("(");
                    }
                    buf.push_str(tok);
                    if !node.children.is_empty() {
                        for child in &node.children {
                            buf.push(' ');
                            self.rec(child, parser, buf, 9999);
                        }
                        buf.push_str(")");
                    }
                }
            }
        } else {
            println!("unexpected {:?} in typeset", node);
        }
    }

    fn unary(&self, sym: &str, myprec: u32, node: &ParseNode, parser: &Parser,
        buf: &mut String, prec: u32)
    {
        if myprec < prec {
            buf.push('(');
        }
        buf.push_str(sym);
        buf.push(' ');
        self.rec(&node.children[0], parser, buf, myprec);
        if myprec < prec {
            buf.push(')');
        }
    }

    fn infixl(&self, sym: &str, myprec: u32, node: &ParseNode, parser: &Parser,
        buf: &mut String, prec: u32)
    {
        if myprec < prec {
            buf.push('(');
        }
        self.rec(&node.children[0], parser, buf, myprec);
        buf.push(' ');
        buf.push_str(sym);
        buf.push(' ');
        self.rec(&node.children[1], parser, buf, myprec + 1);
        if myprec < prec {
            buf.push(')');
        }
    }

    fn infixr(&self, sym: &str, myprec: u32, node: &ParseNode, parser: &Parser,
        buf: &mut String, prec: u32)
    {
        if myprec < prec {
            buf.push('(');
        }
        self.rec(&node.children[0], parser, buf, myprec + 1);
        buf.push(' ');
        buf.push_str(sym);
        buf.push(' ');
        self.rec(&node.children[1], parser, buf, myprec);
        if myprec < prec {
            buf.push(')');
        }
    }
}
//! 内存置换文件

use super::*;
use crate::memory::*;
use algorithm::{Allocator, AllocatorImpl};

/// 内存置换文件在硬盘�


. здоровья. Если его уровень максимальный, вы получаете укрепление в том же объеме.",
					"trTR": "Formunu değiştiren bir Şekil Değiştirme Yeteneği kullandığında {#} Can kazan. Canın tamamen doluysa aynı miktarda Güçlendirme kazan.",
					"zhCN": "当你使用可以改变你形态的变形技能时, 获得 {#} 点生命。如果你处于满生命状态, 则获得等量的强固值。",
					"zhTW": "使用變形技能改變形態時,獲得 {#} 點生命值。如果生命值全滿,則獲得等量的強韌。"
				},
				"dungeon": "Fading Echo",
				"region": "Kehjistan",
				"values": [
					""
				]
			},
			"Aspect of Cyclonic Force": {
				"id": 36,
				"type": "Legendary",
				"description": "Cyclone Armor also provides Physical Damage Reduction. In addition, Cyclone Armor will also be applied to all Nearby Allies.",
				"nameLocalized": {
					"deDE": "der Zyklonmacht",
					"esES": "de fuerza ciclónica",
					"esMX": "de Fuerza Ciclónica",
					"frFR": "de force cyclonique",
					"itIT": "della Forza Ciclonica",
					"jaJP": "サイクロンフォースの",
					"koKR": "용오름의 힘의",
					"plPL": "Siły Cyklonu",
					"ptBR": "da Força Ciclônica",
					"ruRU": "[ms]силы циклона[fs]силы циклона[ns]силы циклона[p]силы циклона",
					"trTR": "[n2]Siklonik Kuvvet",
					"zhCN": "旋风斥力之",
					"zhTW": "颶風力量之"
				},
				"descriptionLocalized": {
					"deDE": "Zyklonrüstung gewährt auch physische Schadensreduktion. Zusätzlich wirkt sich Zyklonrüstung auch auf alle Verbündeten in der Nähe aus.",
					"esES": "Armadura de ciclón también proporciona reducción de daño físico. Además, Armadura de ciclón se aplicará también a todos los aliados cercanos.",
					"esMX": "Armadura de Ciclón también proporciona reducción de daño físico. Además, Armadura de Ciclón también se aplicará a todos los aliados cercanos.",
					"frFR": "Armure cyclonique confère aussi une réduction des dégâts physiques et est également lancée sur les forces alliées proches.",
					"itIT": "Corazza del Ciclone fornisce anche una riduzione dei danni fisici. Inoltre, Corazza del Ciclone viene applicata anche a tutti gli alleati vicini.",
					"jaJP": "〈旋風の護り〉に物理ダメージ減少効果が追加される。さらに〈旋風の護り〉の効果が周囲のすべての味方にも及ぶ。",
					"koKR": "회오리 갑옷이 물리 피해 감소도 부여합니다. 추가로 회오리 갑옷이 주위 모든 아군에게도 적용됩니다.",


from .common import GenericTool
import os
import tempfile

class AgentFilesystem(GenericTool):
    tool_name = "filesystem"
    properties = {"function_priorities": {"answer_file":90}}

    def __init__(self):
        pass

    def ls(self,dirname):
        """
        Lists the content of a specified directory.

        Args:
            dirname (str): The directory path to list.

        Returns:
            str: A string containing the directory contents, including ".\n..\nciao.txt\npagina.md".
        """

        if not dirname.startswith(tempfile.gettempdir()):
            return "Error: You only have access to" + tempfile.gettempdir()

        try:
            files = os.listdir(dirname)
        except OSError as e:
            raise Exception(f"Error accessing directory: {str(e)}") from None

        return "\n".join(files)

    def read_file(self,file_name):
        """Reads a file and outputs its content. This function fails if the file is too large."""
        if not file_name.startswith("/"):
            return "Error: You need to input a full path for the file_name"
        if not file_name.startswith(tempfile.gettempdir()):
            return "Error: You don't have access to that directory"
        file_stats = os.stat(file_name)
        file_size = file_stats.st_size

        if file_size > 2048:
            return f"file {file_name} is too large for read(). You should use the query_file() tool to query its content if the tool is available."
        with open(file_name,"r") as f:
            content = f.read()
        return content

    def write_file(self,file_name,file_content):
        """writes a file. files can only be created in /tmp"""
        if not file_name.startswith("/"):
            return "Error: You need to input a full path for the file_name"
        if not file_name.startswith(tempfile.gettempdir()):
            return "Error: You don't have access to that directory. please use " + tempfile.gettempdir()
        with open(file_name,"w") as f:
            f.write(file_content)
        return "file " + file_name + " created successfilly"

    def answer_file(self, file_name):
        """Returns a file as answer for the user question. The file must have been created previously"""
        with open(file_name,"r") as f:
            content = f.read()
        print ("------------- agent answer from file\n" + content)
        return content


'13101',	'[[10040,30,2],[10001,1500,2]]',	'2'},
{'13102',	'',	'',	'通关主线',	'通关1-2【队员】',	'1',	'',	'',	'',	'13101',	'',	'',	'21102',	'13102',	'[[10040,30,2],[10001,1500,2]]',	'2'},
{'13103',	'',	'',	'通关主线',	'通关1-3【陨铁】',	'1',	'',	'',	'',	'13102',	'',	'',	'21103',	'13103',	'[[10040,30,2],[10001,1500,2]]',	'2'},
{'13104',	'',	'',	'通关主线',	'通关1-4【交易】',	'1',	'',	'',	'',	'13103',	'',	'',	'21104',	'13104',	'[[10040,30,2],[10001,1500,2]]',	'2'},
{'13105',	'',	'',	'通关主线',	'通关1-5【墨菲】',	'1',	'',	'',	'',	'13104',	'',	'',	'21105',	'13105',	'[[10040,30,2],[10001,1500,2]]',	'2'},
{'13106',	'',	'',	'通关主线',	'通关1-6【丛林】',	'1',	'',	'',	'',	'13105',	'',	'',	'21106',	'13106',	'[[10040,30,2],[10001,1500,2]]',	'2'},
{'13107',	'',	'',	'通关主线',	'通关1-7【炸毛】',	'1',	'',	'',	'',	'13106',	'',	'',	'21107',	'13107',	'[[10040,30,2],[10001,1500,2]]',	'2'},
{'13108',	'',	'',	'通关主线',	'通关1-8【循迹】',	'1',	'',	'',	'',	'13107',	'',	'',	'21108',	'13108',	'[[10040,30,2],[10001,1500,2]]',	'2'},
{'13109',	'',	'',	'通关主线',	'通关1-9【尾随】',	'1',	'',	'',	'',	'13108',	'',	'',	'21109',	'13109',	'[[10040,30,2],[10001,1500,2]]',	'2'},
{'13110',	'',	'',	'通关主线',	'通关1-10【妖精】',	'1',	'',	'',	'',	'13109',	'',	'',	'21110',	'13110',	'[[10040,30,2],[10001,1500,2]]',	'2'},
{'13111',	'',	'',	'通关主线',	'通关1-11【燃烧】',	'1',	'',	'',	'',	'13110',	'',	'',	'21111',	'13111',	'[[10040,30,2],[10001,1500,2]]',	'2'},
{'13112',	'',	'',	'通关主线',	'通关1-12【试炼】',	'1',	'',	'',	'',	'13111',


"boost_1_45">Boost 1.45 release

Fixed a hanging problem with
    intermodule_holder
    in Win32 platforms related to a Boost.Interprocess issue described at
    ticket #4606.

Removed an internal assertion incompatible with program termination
    via std::exit.

Boost 1.44 release

Fixed an incorrect mode of usage of Boost.Variant in
    one of the examples.

Boost 1.40 release

Maintenance fixes.

Boost 1.39 release

The refcounted
    component was not thread-safe due to an incorrect implementation and could deadlock
    under heavy usage conditions. This problem has been corrected.

Boost 1.38 release

Initial release of Boost.Flyweight.

Future work

Index

Acknowledgements

Revised September 4th 2014

© Copyright 2006-2014 Joaquín M López Muñoz.
Distributed under the Boost Software
License, Version 1.0. (See accompanying file
LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0.1 Transitional//EN">

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Boost.Flyweight Documentation - Factories reference</title>
<link rel="stylesheet" href="../style.css" type="text/css">
<link rel="start" href="../index.html">
<link rel="prev" href="tags.html">
<link rel="up" href="index.html">
<link rel="next" href="holders.html">

Boost.Flyweight
Factories reference

<div class


oErrorHandlerDriver.Create(MyoErrorHandlerBridge.Create()))))
            using (var hub = Hub.Create(channel))
            {
                // listen for when a Myo connects
                hub.MyoConnected += (sender, e) =>
                {
                    Console.WriteLine("Myo {0} has connected!", e.Myo.Handle);

                    // unlock the Myo so that it doesn't keep locking between our poses
                    e.Myo.Unlock(UnlockType.Hold);

                    // setup for the pose we want to watch for
                    var pose = HeldPose.Create(e.Myo, Pose.Fist, Pose.FingersSpread);

                    // set the interval for the event to be fired as long as
                    // the pose is held by the user
                    pose.Interval = TimeSpan.FromSeconds(0.5);

                    pose.Start();
                    pose.Triggered += Pose_Triggered;
                };

                // start listening for Myo data
                channel.StartListening();

                ConsoleHelper.UserInputLoop(hub);
            }
        }
        #endregion

        #region Event Handlers
        private static void Pose_Triggered(object sender, PoseEventArgs e)
        {
            Console.WriteLine("{0} arm Myo is holding pose {1}!", e.Myo.Arm, e.Pose);
        }
        #endregion
    }
}


_page_utils.dart';
import 'package:horopic/utils/common_functions.dart';
import 'package:horopic/picture_host_manage/manage_api/alist_manage_api.dart';
import 'package:horopic/widgets/common_widgets.dart';
import 'package:horopic/widgets/custom_speed_dial.dart';

class AlistFileInformation extends StatefulWidget {
  final Map fileMap;
  const AlistFileInformation({super.key, required this.fileMap});

  @override
  AlistFileInformationState createState() => AlistFileInformationState();
}

class AlistFileInformationState extends State<AlistFileInformation> {
  String rawUrl = '';

  @override
  initState() {
    super.initState();
    getcompleteInformation();
  }

  List<Widget> _buildBasicInfoSection() {
    return [
      buildInfoSection(
        '基本信息',
        [
          buildInfoItem(
            context: context,
            title: '文件名称',
            value: widget.fileMap['name'],
            icon: Icons.insert_drive_file,
            copyable: true,
          ),
          const Divider(height: 1, indent: 56),
          buildInfoItem(
            context: context,
            title: '文件大小',
            value: getFileSize(int.parse(widget.fileMap['size'].toString())),
            icon: Icons.data_usage,
          ),
        ],
      ),
    ];
  }

  List<Widget> _buildTimeInfoSection() {
    return [
      buildInfoSection(
        '时间信息',
        [
          buildInfoItem(
            context: context,
            title: '文件创建时间',
            value: widget.fileMap['modified'].toString().substring(0, 19),
            icon: Icons.access_time,
          ),
        ],
      ),
    ];
  }

  List<Widget> _buildAccessLinksSection() {
    return [
      buildInfoSection(
        '访问链接',
        [
          buildInfoItem(
            context: context,
            title: '文件签名',
            value: widget.fileMap['sign'].toString(),
            icon: Icons.verified,
            copyable: true,
          ),
          const Divider(height: 1, indent: 56),
          buildInfoItem(
            context: context,
            title: '缩略图链接',
            value: widget.fileMap['thumb'].toString(),
            icon: Icons.image,
            copyable: true,
          ),
          const Divider(height: 1, indent: 56),
          buildInfoItem(
            context: context,
            title: '原始文件链接',
            value: rawUrl,
            icon: Icons.link,
            copyable: true,
          ),
        ],
      ),
    ];
  }

  getcompleteInformation() async {
    Map fileMap = widget.fileMap;
    var res = await AlistManageAPI().getFileInfo(fileMap['fullPath']);
    if (res[0] == 'success') {
      setState(() {
        rawUrl = res[1]['raw_url'];
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
          elevation: 0,
          centerTitle: true,
          leading: getLeadingIcon(context),
          title: titleText('文件基本信息'),
          flexibleSpace: getFlexibleSpace(context)),
      body: ListView(
        physics: const BouncingScrollPhysics(),
        padding: const EdgeInsets.symmetric(vertical: 16.0),
        children: [
          ..._buildBasicInfoSection(),
          ..._buildTimeInfoSection(),
          ..._buildAccessLinksSection(),
          const SizedBox(height: 16),
        ],
      ),
      floatingActionButton: SpeedDial(
        icon: Icons.more_vert,
        activeIcon: Icons.close,
        children: [
          SpeedDialChild(
            child: const Icon(Icons.content_copy),
            backgroundColor: Theme.of(context).primaryColor,
            foregroundColor: Co


ult() -> Self {
        Self::new()
    }
}

impl<T> Clone for Instance<T>
where
    T: Tabulate,
{
    #[inline(always)]
    fn clone(&self) -> Self {
        Self::new()
    }
}

impl<T> Drop for Instance<T>
where
    T: Tabulate,
{
    #[inline(always)]
    fn drop(&mut self) {
        T::counter().sub_assign(one());
    }
}

impl<T> std::hash::Hash for Instance<T>
where
    T: Tabulate,
{
    #[inline(always)]
    fn hash<H: std::hash::Hasher>(&self, _: &mut H) {}
}

impl<T> Ord for Instance<T>
where
    T: Tabulate,
{
    #[inline(always)]
    fn cmp(&self, _: &Self) -> std::cmp::Ordering {
        std::cmp::Ordering::Equal
    }
}

impl<T> PartialOrd for Instance<T>
where
    T: Tabulate,
{
    #[inline(always)]
    fn partial_cmp(&self, _: &Self) -> Option<std::cmp::Ordering> {
        Some(std::cmp::Ordering::Equal)
    }
}

impl<T> Eq for Instance<T> where T: Tabulate {}

impl<T> PartialEq for Instance<T>
where
    T: Tabulate,
{
    #[inline(always)]
    fn eq(&self, _: &Self) -> bool {
        true
    }
}

/// Track the population of `Self`.
pub trait Tabulate: Sized {
    /// The type of the counter used to track instances of `Self`.
    type Counter: Counter;

    /// Produces a reference to the counter tracking instances of `Self`.
    fn counter() -> &'static Self::Counter;

    /// Produces the number of extant instances of `T`.
    fn instances() -> <Self::Counter as Counter>::Primitive {
        Self::counter().fetch()
    }
}
mod exec;
mod exit;
mod process_id;
mod spawn;
mod watchdog;

use crate::utils::pckg;
use duckscript::types::command::Commands;
use duckscript::types::error::ScriptError;

static PACKAGE: &str = "process";

pub(crate) fn load(commands: &mut Commands, parent: &str) -> Result<(), ScriptError> {
    let package = pckg::concat(parent, PACKAGE);

    commands.set(exec::create(&package))?;
    commands.set(exit::create(&package))?;
    commands.set(process_id::create(&package))?;
    commands.set(spawn::create(&package))?;
    commands.set(watchdog::create(&package))?;

    Ok(())
}
<gh_stars>10-100
use crate::{parse::*, *};

type Typ = String;
type Ident = String;
type Expr = String;
type Val = String;

#[derive(Clone, Copy)]
struct Parser;
impl<'a> ValueParser<Val, &'a str> for Parser {
    fn parse_value(self, input: &'a str) -> SmtRes<Val> {
        Ok(input.into())
    }
}
impl<'a> ExprParser<Expr, (), &'a str> for Parser {
    fn parse_expr(self, input: &'a str, _: ()) -> SmtRes<Expr> {
        Ok(input.into())
    }
}
impl<'a> IdentParser<Ident, Typ, &'a str> for Parser {
    fn parse_ident(self, input: &'a str) -> SmtRes<Ident> {
        Ok(input.into())
    }
    fn parse_type(self, input: &'a str) -> SmtRes<Typ> {
        Ok(input.into())
    }
}
impl<'a> ModelParser<Ident, Typ, Val, &'a str> for Parser {
    fn parse_value(
        self,
        input: &'a str,


 testing purposes and changes happen frequently. For
production usage please take snapshot of repository and publish it
using publish snapshot command.

Example:

    $ aptly publish repo testing
`,
		Flag: *flag.NewFlagSet("aptly-publish-repo", flag.ExitOnError),
	}
	cmd.Flag.String("distribution", "", "distribution name to publish")
	cmd.Flag.String("component", "", "component name to publish (for multi-component publishing, separate components with commas)")
	cmd.Flag.String("gpg-key", "", "GPG key ID to use when signing the release")
	cmd.Flag.Var(&keyRingsFlag{}, "keyring", "GPG keyring to use (instead of default)")
	cmd.Flag.String("secret-keyring", "", "GPG secret keyring to use (instead of default)")
	cmd.Flag.Bool("skip-signing", false, "don't sign Release files with GPG")
	cmd.Flag.String("origin", "", "origin name to publish")
	cmd.Flag.String("label", "", "label to publish")
	cmd.Flag.Bool("force-overwrite", false, "overwrite files in package pool in case of mismatch")

	return cmd
}
// Package cmd implements console commands
package cmd

import (
	"fmt"
	"github.com/smira/aptly/aptly"
	"github.com/smira/aptly/deb"
	"github.com/smira/commander"
	"github.com/smira/flag"
	"os"
	"time"
)

// ListPackagesRefList shows list of packages in PackageRefList
func ListPackagesRefList(reflist *deb.PackageRefList) (err error) {
	fmt.Printf("Packages:\n")

	if reflist == nil {
		return
	}

	err = reflist.ForEach(func(key []byte) error {
		p, err2 := context.CollectionFactory().PackageCollection().ByKey(key)
		if err2 != nil {
			return err2
		}
		fmt.Printf("  %s\n", p)
		return nil
	})
	if err != nil {
		return fmt.Errorf("unable to load packages: %s", err)
	}

	return
}

// RootCommand creates root command in command tree
func RootCommand() *commander.Command {
	cmd := &commander.Command{
		UsageLine: os.Args[0],
		Short:     "Debian repository management tool",
		Long: `
aptly is a tool to create partial and full mirrors of remote
repositories, manage local repositories, filter them, merge,
upgrade individual packages, take snapshots and publish them
back as Debian repositories.

aptly's goal is to establish repeatability and controlled changes
in a package-centric environment. aptly allows to fix a set of packages
in a repository, so that package installation and upgrade becomes
deterministic. At the same time aptly allows to perform controlled,
fine-grained changes in repository contents to transition your
package environment to new version.`,
		Flag: *flag.NewFlagSet("aptly", flag.ExitOnError),
		Subcommands: []*commander.Command{
			makeCmdDb(),
			makeCmdGraph(),
			makeCmdMirror(),
			makeCmdRepo(),
			makeCmdServe(),
			makeCmdSnapshot(),
			makeCmdPublish(),
			makeCmdVersion(),
		},
	}

	cmd.Flag.Bool("dep-follow-suggests", false, "when processing dependencies, follow Suggests")
	cmd.Flag.Bool("dep-follow-source", false, "when processing dependencies, follow from binary to Source packages")
	cmd.Flag.Bool("dep-follow-recommends", false, "when processing dependencies, follow Recommends")
	cmd.Flag.Bool("dep-follow-all-variants", false, "when processing dependencies, follow a & b if depdency is 'a|b'")
	cmd.Flag.String("architectures", "", "list of architectures to consider during (comma-separated), default to all available")
	cmd.Flag


A8 800B8858 0C02E247 */  jal   func_800B891C
/* 060AAC 800B885C 02002025 */   move  $a0, $s0
/* 060AB0 800B8860 10000012 */  b     .L800B88AC_ovl1
/* 060AB4 800B8864 02404825 */   move  $t1, $s2
.L800B8868_ovl1:
/* 060AB8 800B8868 92240007 */  lbu   $a0, 7($s1)
/* 060ABC 800B886C 0C001340 */  jal   func_80004D00_ovl1
/* 060AC0 800B8870 24060058 */   li    $a2, 88
/* 060AC4 800B8874 0C02E3CD */  jal   calc_save_file_checksum
/* 060AC8 800B8878 02002025 */   move  $a0, $s0
/* 060ACC 800B887C 8E780064 */  lw    $t8, 0x64($s3)
/* 060AD0 800B8880 02402825 */  move  $a1, $s2
/* 060AD4 800B8884 24060058 */  li    $a2, 88
/* 060AD8 800B8888 14580005 */  bne   $v0, $t8, .L800B88A0_ovl1
/* 060ADC 800B888C 00000000 */   nop
/* 060AE0 800B8890 0C00134D */  jal   func_80004D34_ovl1
/* 060AE4 800B8894 92240001 */   lbu   $a0, 1($s1)
/* 060AE8 800B8898 10000004 */  b     .L800B88AC_ovl1
/* 060AEC 800B889C 02404825 */   move  $t1, $s2
.L800B88A0_ovl1:
/* 060AF0 800B88A0 0C02E380 */  jal   func_800B8E00
/* 060AF4 800B88A4 02002025 */   move  $a0, $s0
/* 060AF8 800B88A8 02404825 */  move  $t1, $s2
.L800B88AC_ovl1:
/* 060AFC 800B88AC 02805025 */  move  $t2, $s4
/* 060B00 800B88B0 264B0054 */  addiu $t3, $s2, 0x54
.L800B88B4_ovl1:
/* 060B04 800B88B4 8D280000 */  lw    $t0, ($t1)
/* 060B08 800B88B8 2529000C */  addiu $t1, $t1, 0xc
/* 060B0C 800B88BC 254A000C */  addiu $t2, $t2, 0xc
/* 060B10 800B88C0 AD48FFF4 */  sw    $t0, -0xc($t2)
/* 060B14 800B88C4 8D39FFF8 */  lw    $t9, -8($t1)
/* 060B18 800B88C8 AD59FFF8 */  sw    $t9, -8($t2)
/* 060B1C 800B88CC 8D28FFFC */  lw    $t0, -4($t1)
/* 060B20 800B88D0 152BFFF8 */  bne   $t1, $t3, .L800B88B4_ovl1
/* 060B24 800B88D4 AD48FFFC */   sw    $t0, -4($t2)
/* 060B28 800B88D8 8D280000 */  lw    $t0, ($t1)
/* 060B2C 800B88DC 26100001 */  addiu $s0, $s0, 1
/* 060B30 800B88E0 267300


理器，就是一个操作系统调度资源最直观的例子：

![image-20221004220940367](https://images.drshw.tech/images/notes/image-20221004220940367.png)

### 1.1.2 操作系统的功能和目标

根据硬件、操作系统、应用程序的架构图，操作系统需要实现三种不同类型的功能，即：

<img src="https://images.drshw.tech/images/notes/image-20221004221559336.png" alt="image-20221004221559336" style="zoom:50%;" />

① 作为**系统资源的管理者**（这些资源包括软件、硬件、文件等），需要实现的功能；

② 作为**用户与计算机硬件之间的接口**，要为其上层的用户、应用程序提供简单易用的服务，需要实现的功能；

③ 作为**最接近硬件的层次**，需要在纯硬件的基础上实现的功能。

依照这些类型，下面我们对其进行逐个分析。

#### 作为系统资源的管理者

在讲这个之前，我们提前补充一个概念：**进程**是一个程序的执行过程。执行前**需要将该程序放到内存中**，才能被CPU处理。

作为系统资源的管理者，操作系统需要提供**文件管理、存储器管理、处理机管理、设备管理**四大功能：

以使用QQ和朋友视频聊天为例，以下的四个Step就对应了上面的四种管理机制：

![image-20221004222803858](https://images.drshw.tech/images/notes/image-20221004222803858.png)

大概了解这些功能的概念后，下面给出详细的说明：

1. 处理器管理

   在多道程序环境下，处理器的分配和运行都是以**进程**为基本单位，因而对处理器的管理可归结为**对进程的管理**。进程管理的主要功能有：进程控制，进程同步，进程通信，死锁处理，处理器调度等。

2. 存储器管理

   存储器管理的主要任务是**为多通道程序的运行提供良好的环境**，方便用户使用以及提高内存的利用率。因此，存储器管理应具备：内存分配、地址映射、内存保护与共享和内存扩充等。

3. 文件管理

   文件管理主要包括文件的存储空间管理、目录管理及文件读写管理及保护等。

4. 设备管理

   设备管


> attributes define the distance, in meters, of the width, height and breadth of the area around the observer that should be meshed.
The <dfn class="dfn-paneled idl-code" data-dfn-for="XRWorldMeshFeature/quality" data-dfn-type="attribute" data-export id="dom-xrworldmeshfeature-quality-quality">quality</dfn> attribute defines the UA dependent quality of the mesh.

The following code attempts to create an immersive-ar XRSession with world meshing.

<c- a>let</c-> xrSession<c- p>;</c->

navigator<c- p>.</c->xr<c- p>.</c->requestSession<c- p>(</c-><c- u>"immersive-ar"</c-><c- p>,</c-> <c- p>{</c->
                            requiredFeature<c- o>:</c-> <c- p>{</c->
                                name<c- o>:</c-> <c- u>"XRWorldMeshFeature"</c-><c- p>,</c->
                                quality<c- o>:</c-> <c- u>"medium"</c-><c- p>}}).</c->then<c- p>((</c->session<c- p>)</c-> <c- p>=></c-> <c- p>{</c->
    xrSession <c- o>=</c-> session<c- p>;</c->
<c- p>});</c->

 should the world mesh follow the observer or should it stay relative to the original position or should it be configurable?

 should the world mesh have an XRSpace?

2.3. XRNearMeshFeature

The "nearmesh" feature is used to request meshing near the observer. It is UA dependent what the scanned area for the near mesh is but it MUST not overlap with the world mesh.

<c- b>dictionary</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="dictionary" data-export id="dictdef-xrnearmeshfeature"><c- g>XRNearMeshFeature</c-></dfn>: <c- n>XRFeatureInit</c-> {
    <c- n>XRMesh


.9, 0.9],
        rotation: 0,
        x: 3.4,
        y: 1.9,
        arrowKeys: {
          up: 'stickers/vim.png',
          down: 'stickers/streetfighter.png',
          left: 'stickers/github.png',
        },
        window: {
          x: 0,
          y: 0,
          top: -100,
          right: 100,
          bottom: 100,
          left: -100,
        },
      },
      {
        name: 'Hunter College',
        type: StickerOpen.LaptopOpen,
        bgColor: '#5f259f',
        textColor: '#fff',
        texture: 'stickers/hunter.png',
        size: scaleImg(2088, 762, 0.0015),
        rotation: 0,
        x: -2.7,
        y: 5.3,
        arrowKeys: {
          up: 'stickers/hackathons.png',
          right: 'stickers/mk.png',
        },
        window: {
          x: 0,
          y: 0,
          top: -100,
          right: 100,
          bottom: 100,
          left: -100,
        },
      },
      {
        name: 'Work Experience',
        type: StickerOpen.LaptopOpen,
        bgColor: '#4285F4',
        textColor: '#fff',
        texture: 'stickers/google.png',
        size: [1.6, 1.6],
        rotation: -0.1,
        x: -1.3,
        y: 1,
        arrowKeys: {
          left: 'stickers/hackathons.png',
          right: 'stickers/github.png',
          down: 'stickers/miguel.png',
        },
        window: {
          x: 0,
          y: 0,
          top: -100,
          right: 100,
          bottom: 100,
          left: -100,
        },
      },
      {
        name: 'Mechanical Keyboards',
        type: StickerOpen.LaptopOpen,
        bgColor: '#fec8cd',
        textColor: '#a30000',
        texture: 'stickers/mk.png',
        size: scaleImg(532, 352, 0.005),
        rotation: .4,
        x: 2.8,
        y: 5,
        arrowKeys: {
          up: 'stickers/streetfighter.png',
          left: 'stickers/hunter.png',
        },
        window: {
          x: 0,
          y: 0,
          top: -100,
          right: 100,
          bottom: 100,
          left: -100,
        },
      },
      {
        name: 'Hackathons',
        type: StickerOpen.LaptopOpen,
        bgColor: '#fed330',
        textColor: '#000',
        texture: 'stickers/hackathons.png',
        size: [2, 2],
        rotation: -0.12,
        x: -3.2,
        y: 1.23,
        arrowKeys: {
          right: 'stickers/google.png',
          down: 'stickers/hunter.png',
        },
        window: {
          x: 0,
          y: 0,
          top: -100,
          right: 100,
          bottom: 100,
          left: -100,
        },
      },
      {
        name: 'Github',
        type: StickerOpen.OpenLink,
        href: 'https://github.com/AceroM',
        texture: 'stickers/github.png',
        size: [1.3, 1.3],
        rotation: 0.12,
        x: 2.4,
        y: 1,
        arrowKeys: {
          right: 'stickers/vim.png',
          down: 'stickers/JS.png',
          left: 'stickers/google.png',
        },
        window: {
          x: 0,
          y: 0,
          top: -100,


    "minecraft": [APP_CATEGORY_GAMES],
    "netflix": [APP_CATEGORY_STREAMING],
    "nintendo": [APP_CATEGORY_GAMES],
    "okcupid": [APP_CATEGORY_ADULT],
    "pandora": [APP_CATEGORY_STREAMING],
    "pinterest": [APP_CATEGORY_SOCIAL_MEDIA],
    "playstation": [APP_CATEGORY_GAMES, APP_CATEGORY_SHOPPING],
    "plex": [APP_CATEGORY_STREAMING],
    "reddit": [
        APP_CATEGORY_ADULT,
        APP_CATEGORY_CHAT_MESSAGING,
        APP_CATEGORY_SOCIAL_MEDIA,
    ],
    "roblox": [APP_CATEGORY_GAMES],
    "signal": [APP_CATEGORY_CHAT_MESSAGING],
    "skype": [APP_CATEGORY_CHAT_MESSAGING, APP_CATEGORY_STREAMING],
    "slack": [APP_CATEGORY_CHAT_MESSAGING],
    "snapchat": [APP_CATEGORY_CHAT_MESSAGING],
    "soundcloud": [APP_CATEGORY_STREAMING],
    "spotify": [APP_CATEGORY_STREAMING],
    "steam": [APP_CATEGORY_GAMES, APP_CATEGORY_SHOPPING],
    "stream": [APP_CATEGORY_CHAT_MESSAGING],
    "target": [APP_CATEGORY_SHOPPING],
    "ticketmaster": [APP_CATEGORY_SHOPPING],
    "tiktok": [APP_CATEGORY_SOCIAL_MEDIA],
    "tinder": [APP_CATEGORY_ADULT, APP_CATEGORY_SOCIAL_MEDIA],
    "tumblr": [APP_CATEGORY_SOCIAL_MEDIA],
    "twitch": [APP_CATEGORY_GAMES, APP_CATEGORY_STREAMING],
    "twitter": [APP_CATEGORY_SOCIAL_MEDIA],
    "ubisoft": [APP_CATEGORY_GAMES],
    "vimeo": [APP_CATEGORY_STREAMING],
    "walmart": [APP_CATEGORY_SHOPPING],
    "wechat": [APP_CATEGORY_CHAT_MESSAGING],
    "whatsapp": [APP_CATEGORY_CHAT_MESSAGING],
    "xbox": [APP_CATEGORY_GAMES],
    "xbox_live": [APP_CATEGORY_GAMES],
    "yahoo_mail": [APP_CATEGORY_CHAT_MESSAGING],
    "youtube": [APP_CATEGORY_STREAMING],
    "zoom_video": [APP_CATEGORY_CHAT_MESSAGING],
}


(&self, other: &Self) -> bool {
				$(self.$attributes.equals(other.$attributes))&&*
			}
		}
	};
}

vector!(Vector2; x, y);
vector!(Vector3; x, y, z);
vector!(Vector4; x, y, z, w);

impl Vector3 {
	pub fn cross(a: Self, b: Self) -> Self {
		Self {
			x: (a.y * b.z) - (a.z * b.y),
			y: -((a.x * b.z) - (a.z * b.x)),
			z: (a.x * b.y) - (a.y * b.x),
		}
	}

	pub fn as_vec4(&self) -> Vector4 {
		Vector4 {x: self.x, y: self.y, z: self.z, w: 0.0 }
	}
}

impl Vector2 {
	pub fn as_vec4(&self) -> Vector4 {
		Vector4 {x: self.x, y: self.y, z: 0.0, w: 0.0 }
	}

	pub fn as_vec3(&self) -> Vector3 {
		Vector3 {x: self.x, y: self.y, z: 0.0 }
	}
}

<reponame>rtgill82/girdle<gh_stars>0
//
// Copyright (c) 2022, <NAME> <<EMAIL>>
//

mod dictionary;
use dictionary::Dictionary;

mod gtk;
use crate::gtk::UI;

const ID: &str = "com.github.rtgill82.girdle";

const DICTIONARIES: &[&str] = &[
    "/usr/share/dict/words",
    "/usr/dict/words"
];

fn main() {
    UI::run(ID);
}
<gh_stars>0
/// NOTE: These syscalls only support wasm_32 for now because they take u32 offset
use libc::{c_int, c_long, getenv};

use std::ffi::CString;
use std::mem;
use std::os::raw::c_char;

use crate::env::call_malloc;
use crate::utils::{copy_cstr_into_wasm, read_string_from_wasm};
use wasmer_runtime_core::vm::Ctx;

extern "C" {
    #[link_name = "_putenv"]
    pub fn putenv(s: *const c_char) -> c_int;
}

// #[no_mangle]
/// emscripten: _getenv // (name: *const char) -> *const c_char;
pub fn _getenv(ctx: &mut Ctx, name: u32) -> u32 {
    debug!("emscripten::_getenv");
    let name_string = read_string_from_wasm(ctx.memory(0), name);
    debug!("=> name({:?})", name_string);
    let c_str = unsafe { getenv(name_string.as_ptr() as *const libc::c_char) };
    if c_str.is_null() {
        return 0;
    }
    unsafe { copy_cstr_into_wasm(ctx, c_str as *const c_char) }
}

/// emscripten: _setenv // (name: *const char, name: *const value, overwrite: int);
pub fn _setenv(ctx: &mut Ctx, name: u32, value: u32, overwrite: u32) -> c_int {
    debug!("emscripten::_setenv");
    let name_addr = emscripten_memory_pointer!(ctx.memory(0), name);
    let value_addr = emscripten_memory_pointer!(ctx.memory(0), value);
    // setenv does not exist on windows, so we hack it with _putenv
    let name = read_string_from_wasm(ctx.memory(0), name);
    let value = read_string_from_wasm(ctx.memory(0), value);
    let putenv_string = format!("{}={}", name, value);
    let putenv_cstring = CString::new(putenv_string).unwrap();
    let putenv_raw_ptr = putenv_cstring.as_ptr();
    debug!("=> name({:?})", name);
    debug!("=> value({:?})", value);
    unsafe { putenv(putenv_


forwards;-webkit-transition:all 140ms ease-in-out;transition:all 140ms ease-in-out;-webkit-transition:all 140ms ease-in-out 180ms ease-in-out 0s;-o-transition:all 140ms ease-in-out 180ms ease-in-out 0s;transition:all 140ms ease-in-out 180ms ease-in-out 0s;font-size:15px;line-height:1.4;background:rgba(62,120,173,0.95);border-radius:4px;z-index:500;box-shadow:0 1px 10px rgba(100,100,100,0.4);cursor:pointer;color:#fff;padding:8px 2px 8px 34px;margin-left:-120px;width:94px;position:fixed;top:60px;left:50%}.MoreStoriesIndicator:hover{background:rgba(62,120,173,0.7)}.MoreStoriesIndicator:active{-webkit-animation:fadeOut 100ms ease-out 0s 1 normal forwards;-o-animation:fadeOut 100ms ease-out 0s 1 normal forwards;animation:fadeOut 100ms ease-out 0s 1 normal forwards}.MoreStoriesIndicator .refresh{display:block;width:16px;height:19px;position:absolute;left:11px;top:9px;background-image:url(//qsf.fs.quoracdn.net/-4-images.icons.more_stories2x.png-26-04f1ccb2d9bbbe04.png);background-size:16px 19px}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:1.5),only screen and (min-resolution:192dpi){.MoreStoriesIndicator .refresh{background-image:url(//qsf.fs.quoracdn.net/-4-images.icons.more_stories2x.png-26-04f1ccb2d9bbbe04.png)}}.MoreStoriesIndicator .text{color:#fff;margin-top:-1px}.FeedBottomIndicator{background:#fafafa;padding:16px;margin-bottom:16px;border:1px solid #e2e2e2;color:#949494;border-radius:3px;text-align:center}.HomeTabFeedBottomIndicator .no_underline:hover{text-decoration:none}.HomeTabFeedBottomIndicator .go_to_explore_wrapper{border:1px solid #efefef;background-color:#fff;border-radius:4px;border-bottom:1px solid #e2e2e2;margin-bottom:8px;padding:16px}.TopicPageHeader .topic_photo_img{width:100px;height:100px}.TopicPageHeader .content_wrapper{min-width:0}.TopicPageHeader .topic_name,.TopicPageHeader .TopicName{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-weight:bold;line-height:1.3;color:#333;font-size:23px}@media only screen and (min-device-width:320px) and (max-device-width:360px){.TopicPageHeader .topic_name,.TopicPageHeader .TopicName{font-size:21px}}.TopicPageHeader .TopicNameInlineEditor{position:relative}.TopicPageHeader .TopicNameInlineEditor:hover{outline:1px dashed #ccc;outline-offset:8px}.TopicPageHeader .TopicNameInlineEditor .inline_editor_edit{position:absolute;right:0;top:50%;margin-top:-8px}.TopicPageHeader .TopicNameEdit{*zoom:1}.TopicPageHeader .TopicNameEdit:before,.TopicPageHeader .TopicNameEdit:after{display:table;content:"";zoom:1}.TopicPageHeader .TopicNameEdit:after{clear:both}.TopicPageHeader .TopicNameEdit .parentheses_content{display:block;font-size:19px}.TopicPageHeader .TopicNameEdit h1,.TopicPageHeader .TopicNameEdit input{display:inline;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-w


u yōng,dú,yá,chēng chèng,niú,niú,pìn,jiū lè,móu mù,tā,mǔ,láo,rèn,māng,fāng,máo,mù,gāng,wù,yàn,gē qiú,bèi,sì,jiàn,gǔ,yòu chōu,kē,shēng,mǔ,dǐ,qiān,quàn,quán,zì,tè,xī,máng,kēng,qiān,wǔ,gù,xī,lí,lí,pǒu,jī,gāng,zhí tè,bēn,quán,chún,dú,jù,jiā,jiān qián,fēng,piān,kē,jú,kào,chú,xì,bèi,luò,jiè,má,sān,wèi,máo lí,dūn,tóng,qiáo,jiàng,xī,lì,dú,liè,pái,piāo,bào,xī,chōu,wéi,kuí,chōu,quǎn,quǎn,quǎn bá,fàn,qiú,jǐ,chái,zhuó bào,hān àn,gē,zhuàng,guǎng,mǎ,yóu,kàng gǎng,pèi fèi,hǒu,yà,yín,huān fān,zhuàng,yǔn,kuáng,niǔ,dí,kuáng,zhòng,mù,bèi,pī,jú,yí quán chí,shēng xīng,páo,xiá,tuó yí,hú,líng,fèi,pī,nǐ,yǎo,yòu,gǒu,xuè,jū,dàn,bó,kǔ,xiǎn,níng,huán huān,hěn,jiǎo,hé mò,zhào,jié,xùn,shān,tà shì,róng,shòu,tóng dòng,lǎo,dú,xiá,shī,kuài,zhēng,yù,sūn,yú,bì,máng dòu,xī shǐ,juàn,lí,xiá,yín,suān,láng,bèi,zhì,yán,shā,lì,hàn,xiǎn,jīng,pái,fēi,xiāo,bài pí,qí,ní,biāo,yìn,lái,liè,jiān yàn,qiāng,kūn,yàn,guō,zòng,mí,chāng,yī yǐ,zhì,zhēng,yá wèi,měng,cāi,cù,shē,liè,diǎn,luó,hú,zōng,hú,wěi,fēng,wō,yuán,xīng,zhū,māo máo,wèi,chuàn chuān,xiàn,tuān tuàn,yà jiá qiè,náo,xiē hè gé hài,jiā,hóu,biān piàn,yóu,yóu,méi,chá,yáo,sūn,bó pò,míng,huá,yuán,sōu,mǎ,huán,dāi,yù,shī,háo,qiāng,yì,zhēn,cāng,háo gāo,màn,jìng,jiǎng,mò,zhāng,


* Khaiii 품사 분석 API의 Wrapper입니다.
 *
 * * 이 Wrapper는 아직 실험 단계입니다.
 *
 * * Khaiii Shared Object가 이미 설치되어 있어야 합니다. (자동설치 하지 않으며, 설치 방법은
 *   [Khaiii:설치](https://github.com/kakao/khaiii/wiki/빌드-및-설치)를 참조하세요.)
 *
 * * Shared object와 JNI를 통한 송수신 과정에서 Exception 또는 Segmentation fault 등이 발생할 수 있습니다.
 *
 * ## 참고
 * **형태소**는 의미를 가지는 요소로서는 더 이상 분석할 수 없는 가장 작은 말의 단위로 정의됩니다.
 *
 * **형태소 분석**은 문장을 형태소의 단위로 나누는 작업을 의미합니다.
 * 예) '문장을 형태소로 나눠봅시다'의 경우,
 * * 문장/일반명사, -을/조사,
 * * 형태소/일반명사, -로/조사,
 * * 나누-(다)/동사, -어-/어미, 보-(다)/동사, -ㅂ시다/어미
 * 로 대략 나눌 수 있습니다.
 *
 * 아래를 참고해보세요.
 * * [Morpheme] 형태소를 저장하는 클래스입니다.
 * * [POS] 형태소의 분류를 담은 Enum class
 *
 * ## 사용법 예제
 *
 * ### Kotlin
 * ```kotlin
 * val tagger = Tagger()
 * val sentence = tagger.tagSentence("문장 1개입니다.")
 * val sentences = tagger.tag("문장들입니다. 결과는 목록이 됩니다.")
 * // 또는
 * val sentences = tagger("문장들입니다. 결과는 목록이 됩니다.")
 * ```
 *
 * ### Scala + [koalanlp-scala](https://koalanlp.github.io/scala-support/)
 * ```scala
 * import kr.bydelta.koala.Implicits._
 * val tagger = new Tagger()
 * val sentence = tagger.tagSentence("문장 1개입니다.")
 * val sentences = tagger.tag("문장들입니다. 결과는 목록이 됩니다.")
 * // 또는
 * val sentences = tagger("문장들입니다. 결과는 목록이 됩니다.")
 * ```
 *
 * ### Java
 * ```java
 * Tagger tagger = new Tagger()
 * Sentence sentence = tagger.tagSentence("문장 1개입니다.")
 * List<Sentence> sentences = tagger.tag("문장들입니다. 결과는 목록이 됩니다.")
 * // 또는
 * List<Sentence> sentences = tagger.invoke("문장들입니다. 결과는 목록이 됩니다.")
 * ```
 *
 * @since 2.0.0
 * @constructor 분석기를 생성합니다.
 * @param resourceDirectory 리소스가 저장된 위치입니다. 플랫폼의 기본값을 사용할 경우 "". (기본값 "")
 * @param option Khaiii 분석 과정에서 사용할 설정입니다.
 */
class Tagger(resourceDirectory: String = "", option: KhaiiiConfig = KhaiiiConfig()) : CanTagOnlyASentence<Khaiii


	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "analytics.management.profileFilterLinks.delete", "response", internallog.HTTPResponse(res, nil))
	return nil
}

type ManagementProfileFilterLinksGetCall struct {
	s             *Service
	accountId     string
	webPropertyId string
	profileId     string
	linkId        string
	urlParams_    gensupport.URLParams
	ifNoneMatch_  string
	ctx_          context.Context
	header_       http.Header
}

// Get: Returns a single profile filter link.
//
// - accountId: Account ID to retrieve profile filter link for.
// - linkId: ID of the profile filter link.
// - profileId: Profile ID to retrieve filter link for.
// - webPropertyId: Web property Id to retrieve profile filter link for.
func (r *ManagementProfileFilterLinksService) Get(accountId string, webPropertyId string, profileId string, linkId string) *ManagementProfileFilterLinksGetCall {
	c := &ManagementProfileFilterLinksGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.accountId = accountId
	c.webPropertyId = webPropertyId
	c.profileId = profileId
	c.linkId = linkId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ManagementProfileFilterLinksGetCall) Fields(s ...googleapi.Field) *ManagementProfileFilterLinksGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *ManagementProfileFilterLinksGetCall) IfNoneMatch(entityTag string) *ManagementProfileFilterLinksGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ManagementProfileFilterLinksGetCall) Context(ctx context.Context) *ManagementProfileFilterLinksGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ManagementProfileFilterLinksGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ManagementProfileFilterLinksGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks/{linkId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"accountId":     c.accountId,
		"webPropertyId": c.webPropertyId,
		"profileId":     c.profileId,
		"linkId":        c.linkId,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "analytics.management.profileFilterLinks.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_,


Picker, Func<TInput, TProperty> valueFactory)
        {
            return (CompositeNodeComposer<T>)this.ReplaceNodes(
                with: n =>
                    (NodeComposer<T>)((NodeComposer<T>)n).With(propertyPicker, valueFactory),
                when: n => n is NodeComposer<T>);
        }

        /// <inheritdoc />
        public IPostprocessComposer<T> WithAutoProperties()
        {
            return (CompositeNodeComposer<T>)this.ReplaceNodes(
                with: n =>
                    (NodeComposer<T>)((NodeComposer<T>)n).WithAutoProperties(),
                when: n => n is NodeComposer<T>);
        }

        /// <inheritdoc />
        public IPostprocessComposer<T> Without<TProperty>(Expression<Func<T, TProperty>> propertyPicker)
        {
            return (CompositeNodeComposer<T>)this.ReplaceNodes(
                with: n =>
                    (NodeComposer<T>)((NodeComposer<T>)n).Without(propertyPicker),
                when: n => n is NodeComposer<T>);
        }


import numpy as np

from sklearn.base import clone
from sklearn.gaussian_process.kernels import (
    GenericKernelMixin,
    Hyperparameter,
    Kernel,
    StationaryKernelMixin,
)

class MiniSeqKernel(GenericKernelMixin, StationaryKernelMixin, Kernel):
    """
    A minimal (but valid) convolutional kernel for sequences of variable
    length.
    """

    def __init__(self, baseline_similarity=0.5, baseline_similarity_bounds=(1e-5, 1)):
        self.baseline_similarity = baseline_similarity
        self.baseline_similarity_bounds = baseline_similarity_bounds

    @property
    def hyperparameter_baseline_similarity(self):
        return Hyperparameter(
            "baseline_similarity", "numeric", self.baseline_similarity_bounds
        )

    def _f(self, s1, s2):
        return sum(
            [1.0 if c1 == c2 else self.baseline_similarity for c1 in s1 for c2 in s2]
        )

    def _g(self, s1, s2):
        return sum([0.0 if c1 == c2 else 1.0 for c1 in s1 for c2 in s2])

    def __call__(self, X, Y=None, eval_gradient=False):
        if Y is None:
            Y = X

        if eval_gradient:
            return (
                np.array([[self._f(x, y) for y in Y] for x in X]),
                np.array([[[self._g(x, y)] for y in Y] for x in X]),
            )
        else:
            return np.array([[self._f(x, y) for y in Y] for x in X])

    def diag(self, X):
        return np.array([self._f(x, x) for x in X])

    def clone_with_theta(self, theta):
        cloned = clone(self)
        cloned.theta = theta
        return cloned


dio = RegExp(
    r"""^#EXT-X-MEDIA:TYPE=AUDIO(?:.*,URI="(.*m3u8[^"]*)")""",
    caseSensitive: false,
    multiLine: true,
  );

//GET m3u8 file
  late String content = "";
  final dio.Response response = await dio.Dio().get(
    m3u8,
    options: dio.Options(
      headers: httpHeaders,
      followRedirects: true,
      receiveDataWhenStatusError: true,
    ),
  );
  // await Get.find<SearchEngine>().loadLink(m3u8, headers: httpHeaders);
  if (response.statusCode == 200) {
    content = response.data;
  }
  final String? directoryPath;
  if (kIsWeb) {
    directoryPath = null;
  } else {
    directoryPath = (await getTemporaryDirectory()).path;
  }

//Find matches
  List<RegExpMatch> playlistMatches =
      regExpPlaylist.allMatches(content).toList();
  List<RegExpMatch> audioMatches = regExpAudio.allMatches(content).toList();
  Map<String, dynamic> sources = {};
  Map<String, String> sourceUrls = {};
  final List<String> audioUrls = [];
  if (playlistMatches.isEmpty) {}
  for (int i = 0; i < playlistMatches.length; i++) {
    RegExpMatch playlistMatch = playlistMatches[i];
    final RegExpMatch? playlist = netRegx2.firstMatch(m3u8);
    final String sourceURL = (playlistMatch.group(3)).toString();
    final String quality = (playlistMatch.group(1)).toString();
    final bool isNetwork = netRegxUrl.hasMatch(sourceURL);
    String playlistUrl = sourceURL;

    if (!isNetwork) {
      final String? dataURL = playlist!.group(0);
      playlistUrl = "$dataURL$sourceURL";
    }
//Find audio url
    for (final RegExpMatch audioMatch in audioMatches) {
      final String audio = (audioMatch.group(1)).toString();
      final bool isNetwork = netRegxUrl.hasMatch(audio);
      final RegExpMatch? match = netRegx2.firstMatch(playlistUrl);
      String audioUrl = audio;

      if (!isNetwork && match != null) {
        audioUrl = "${match.group(0)}$audio";
      }
      audioUrls.add(audioUrl);
    }

    final String audioMetadata;
    if (audioUrls.isNotEmpty) {
      if (i < audioUrls.length) {
        //talker.info("using $i audio");
        audioMetadata =
            """#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-medium",NAME="audio-medium",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="2",URI="${audioUrls[i]}"\n""";
      } else {
        //talker.info("using last audio");
        audioMetadata =
            """#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-medium",NAME="audio-medium",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="2",URI="${audioUrls.last}"\n""";
      }
    } else {
      audioMetadata = "";
    }

    if (directoryPath != null) {
      final File file = File(path.join(directoryPath, 'hls$quality.m3u8'));
      file.writeAsStringSync(
        """#EXTM3U\n#EXT-X-VERSION:3\n#EXT-X-INDEPENDENT-SEGMENTS\n$audioMetadata#EXT-X-STREAM-INF:CLOSED-CAPTIONS=NONE,BANDWIDTH=1469712,RESOLUTION=$quality,AUDIO="audio-medium",GROUP-ID="audio-medium",FRAME-RATE=30.000\n$playlistUrl""",
      );

      sources[quality] = file;
    } else {
      sourceUrls[quality] = playlistUrl;
    }
  }
  List<Quality> Qualities = [];
  addAutoSource() async {
    final File file = File(path.join(directoryPath!, 'hls_Auto.m3u8'));
    file.writeAsStringSync


2, CMOV
TEXT ·sequenceDecs_decode_bmi2(SB), $8-32
	MOVQ    br+8(FP), BX
	MOVQ    24(BX), AX
	MOVBQZX 40(BX), DX
	MOVQ    (BX), CX
	MOVQ    32(BX), BX
	ADDQ    BX, CX
	MOVQ    CX, (SP)
	MOVQ    ctx+16(FP), CX
	MOVQ    72(CX), SI
	MOVQ    80(CX), DI
	MOVQ    88(CX), R8
	MOVQ    104(CX), R9
	MOVQ    s+0(FP), CX
	MOVQ    144(CX), R10
	MOVQ    152(CX), R11
	MOVQ    160(CX), R12

sequenceDecs_decode_bmi2_main_loop:
	MOVQ (SP), R13

	// Fill bitreader to have enough for the offset and match length.
	CMPQ BX, $0x08
	JL   sequenceDecs_decode_bmi2_fill_byte_by_byte
	MOVQ DX, CX
	SHRQ $0x03, CX
	SUBQ CX, R13
	MOVQ (R13), AX
	SUBQ CX, BX
	ANDQ $0x07, DX
	JMP  sequenceDecs_decode_bmi2_fill_end

sequenceDecs_decode_bmi2_fill_byte_by_byte:
	CMPQ    BX, $0x00
	JLE     sequenceDecs_decode_bmi2_fill_check_overread
	CMPQ    DX, $0x07
	JLE     sequenceDecs_decode_bmi2_fill_end
	SHLQ    $0x08, AX
	SUBQ    $0x01, R13
	SUBQ    $0x01, BX
	SUBQ    $0x08, DX
	MOVBQZX (R13), CX
	ORQ     CX, AX
	JMP     sequenceDecs_decode_bmi2_fill_byte_by_byte

sequenceDecs_decode_bmi2_fill_check_overread:
	CMPQ DX, $0x40
	JA   error_overread

sequenceDecs_decode_bmi2_fill_end:
	// Update offset
	MOVQ   $0x00000808, CX
	BEXTRQ CX, R8, R14
	MOVQ   AX, R15
	LEAQ   (DX)(R14*1), CX
	ROLQ   CL, R15
	BZHIQ  R14, R15, R15
	MOVQ   CX, DX
	MOVQ   R8, CX
	SHRQ   $0x20, CX
	ADDQ   R15, CX
	MOVQ   CX, 16(R9)

	// Update match length
	MOVQ   $0x00000808, CX
	BEXTRQ CX, DI, R14
	MOVQ   AX, R15
	LEAQ   (DX)(R14*1), CX
	ROLQ   CL, R15
	BZHIQ  R14, R15, R15
	MOVQ   CX, DX
	MOVQ   DI, CX
	SHRQ   $0x20, CX
	ADDQ   R15, CX
	MOVQ   CX, 8(R9)

	// Fill bitreader to have enough for the remaining
	CMPQ BX, $0x08
	JL   sequenceDecs_decode_bmi2_fill_2_byte_by_byte
	MOVQ DX, CX
	SHRQ $0x03, CX
	SUBQ CX, R13
	MOVQ (R13), AX
	SUBQ CX, BX
	ANDQ $0x07, DX
	JMP  sequenceDecs_decode_bmi2_fill_2_end

sequenceDecs_decode_bmi2_fill_2_byte_by_byte:
	CMPQ    BX, $0x00
	JLE     sequenceDecs_decode_bmi2_fill_2_check_overread
	CMPQ    DX, $0x07
	JLE     sequenceDecs_decode_bmi2_fill_2_end
	SHLQ    $0x08, AX
	SUBQ    $0x01, R13
	SUBQ    $0x01, BX
	SUBQ


(b-a)/2, m = a+half;
		a += offset;

		for(int i = 0; i < half - offset; i++)
			if((i & ~offset) == i) this.compSwap(array, a+i, m+i);
	}

    @Override
    public void runSort(int[] array, int currentLength, int bucketCount) {
		this.end = currentLength;
		currentLength = 1 << (int)(Math.ceil(Math.log(currentLength)/Math.log(2)));

		for(int k = 2; k <= currentLength; k*=2)
			for(int j = 0; j < k/2; j++)
				for(int i = 0; i+j < this.end; i+=k)
					this.rangeComp(array, i, i+k, j);
    }
}
package io.github.arrayv.sorts.concurrent;

import io.github.arrayv.main.ArrayVisualizer;
import io.github.arrayv.sortdata.SortMeta;
import io.github.arrayv.sorts.templates.Sort;

/*
 *
MIT License

Copyright (c) 2020 Marcel Pi Nacy

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
 *
 */

@SortMeta(
    name = "Fold",
    showcaseName = "Fold Sorting Network",
    runName = "Fold Sort"
)
public final class FoldSort extends Sort {
    public FoldSort(ArrayVisualizer arrayVisualizer) {
        super(arrayVisualizer);
    }

    int end;

	void compSwap(int[] array, int a, int b) {
		if(b < end && Reads.compareIndices(array, a, b, 0.5, true) == 1)
			Writes.swap(array, a, b, 0.5, true, false);
	}

	void halver(int[] array, int low, int high)
    {
        while (low < high)
        {
            this.compSwap(array, low++, high--);
        }
    }

    @Override
    public void runSort(int[] array, int size, int bucketCount) {
    	int ceilLog = 1;
    	for (; (1 << ceilLog) < size; ceilLog++);

    	end  = size;
    	size = 1 << ceilLog;

        for (int k = size >> 1; k > 0; k >>= 1)        //log(N)
        {
            for (int i = size; i >= k; i >>= 1)        //log(N)
            {
                for (int j = 0; j < end; j += i)    //N
                {
                    halver(array, j, j + i - 1);
                }
            }
        }
    }
}
package io.github.arrayv.sorts.concurrent;

import io.github.arrayv.main.ArrayVisualizer;
import io.github.arrayv.sortdata.SortMeta;
import io.github.arrayv.sorts.templates.Sort;

/*
 *
MIT License

Copyright (c) 2020 aphitorite

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software


	e2:SetOperation(s.retop)
	c:RegisterEffect(e2)
end
function s.retcon(e,tp,eg,ep,ev,re,r,rp)
	local c=e:GetHandler()
	local ec=c:GetPreviousEquipTarget()
	return c:IsReason(REASON_LOST_TARGET) and ec:IsReason(REASON_RELEASE)
end
function s.rettg(e,tp,eg,ep,ev,re,r,rp,chk)
	if chk==0 then return e:GetHandler():IsAbleToHand() end
	Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0)
end
function s.retop(e,tp,eg,ep,ev,re,r,rp)
	local c=e:GetHandler()
	if c:IsRelateToEffect(e) then
		Duel.SendtoHand(c,nil,REASON_EFFECT)
		Duel.ConfirmCards(1-tp,c)
	end
end


hiddenXxlUp{display:none!important}}@media (min-width:1920px){.ms-Fabric--v9-6-0 .ms-hiddenLgUp,.ms-Fabric--v9-6-0 .ms-hiddenMdUp,.ms-Fabric--v9-6-0 .ms-hiddenXlUp,.ms-Fabric--v9-6-0 .ms-hiddenXxlUp,.ms-Fabric--v9-6-0 .ms-hiddenXxxl{display:none!important}}.ms-Fabric--v9-6-0 .ms-sm12{width:100%}.ms-Fabric--v9-6-0 .ms-sm11{width:91.66666666666666%}.ms-Fabric--v9-6-0 .ms-sm10{width:83.33333333333334%}.ms-Fabric--v9-6-0 .ms-sm9{width:75%}.ms-Fabric--v9-6-0 .ms-sm8{width:66.66666666666666%}.ms-Fabric--v9-6-0 .ms-sm7{width:58.333333333333336%}.ms-Fabric--v9-6-0 .ms-sm6{width:50%}.ms-Fabric--v9-6-0 .ms-sm5{width:41.66666666666667%}.ms-Fabric--v9-6-0 .ms-sm4{width:33.33333333333333%}.ms-Fabric--v9-6-0 .ms-sm3{width:25%}.ms-Fabric--v9-6-0 .ms-sm2{width:16.666666666666664%}.ms-Fabric--v9-6-0 .ms-sm1{width:8.333333333333332%}[dir=ltr] .ms-Fabric--v9-6-0 .ms-smPull12{right:100%}[dir=rtl] .ms-Fabric--v9-6-0 .ms-smPull12{left:100%}[dir=ltr] .ms-Fabric--v9-6-0 .ms-smPull11{right:91.66667%}[dir=rtl] .ms-Fabric--v9-6-0 .ms-smPull11{left:91.66667%}[dir=ltr] .ms-Fabric--v9-6-0 .ms-smPull10{right:83.33333%}[dir=rtl] .ms-Fabric--v9-6-0 .ms-smPull10{left:83.33333%}[dir=ltr] .ms-Fabric--v9-6-0 .ms-smPull9{right:75%}[dir=rtl] .ms-Fabric--v9-6-0 .ms-smPull9{left:75%}[dir=ltr] .ms-Fabric--v9-6-0 .ms-smPull8{right:66.66667%}[dir=rtl] .ms-Fabric--v9-6-0 .ms-smPull8{left:66.66667%}[dir=ltr] .ms-Fabric--v9-6-0 .ms-smPull7{right:58.33333%}[dir=rtl] .ms-Fabric--v9-6-0 .ms-smPull7{left:58.33333%}[dir=ltr] .ms-Fabric--v9-6-0 .ms-smPull6{right:50%}[dir=rtl] .ms-Fabric--v9-6-0 .ms-smPull6{left:50%}[dir=ltr] .ms-Fabric--v9-6-0 .ms-smPull5{right:41.66667%}[dir=rtl] .ms-Fabric--v9-6-0 .ms-smPull5{left:41.66667%}[dir=ltr] .ms-Fabric--v9-6-0 .ms-smPull4{right:33.33333%}[dir=rtl] .ms-Fabric--v9-6-0 .ms-smPull4{left:33.33333%}[dir=ltr] .


t.appendChild(div);
  element.appendChild(script);
  return response;
}
import { useEffect, useRef } from 'react';

type Props = {
    skip?: boolean;
    options?: IntersectionObserverInit;
    onIntersect: () => void;
};

const NOOP = () => {};

const useIntersect = ({ skip = false, options = {}, onIntersect }: Props) => {
    const observableRef = useRef<HTMLDivElement | null>(null);
    const { root, rootMargin, threshold } = options;

    useEffect(() => {
        if (skip) return NOOP;

        const observer = new window.IntersectionObserver(
            (entries) => {
                if (entries.some((entry) => entry.isIntersecting)) onIntersect();
            },
            { root, rootMargin, threshold },
        );

        if (observableRef.current) observer.observe(observableRef.current);

        return () => {
            observer.disconnect();
        };
    }, [onIntersect, root, rootMargin, skip, threshold]);

    return { observableRef };
};

export default useIntersect;
import { Gravity, Unit } from "../../types";

const brixToPlato = (brix: number): number => {
    return brix / 1.03;
}

const platoToBrix = (plato: number): number => {
    return plato * 1.03;
}

const platoToSg = (plato: number): number => {
    return 1 + (plato / (258.6 - ((plato / 258.2) * 227.1)));
}

const sgToPlato = (sg: number): number => {
    return 668.72 * sg - 463.37 - 205.347 * Math.pow(sg, 2);
}

const brixToOe = (brix: number): number => {
    return brix * 4.25;
}

const oeToBrix = (oe: number): number => {
    return oe / 4.25;
}

interface UnitConversion {
    brix: number;
    plato: number;
    sg: number;
    oe: number;
}

export const convertUnits = (amount: number, unit: Unit): UnitConversion => {
    switch (unit) {
        case Unit.Brix:
            return { brix: amount, plato: brixToPlato(amount), sg: platoToSg(brixToPlato(amount)), oe: brixToOe(amount) };
        case Unit.Plato:
            return { brix: platoToBrix(amount), plato: amount, sg: platoToSg(amount), oe: brixToOe(platoToBrix(amount)) };
        case Unit.SG:
            return { brix: platoToBrix(sgToPlato(amount)), plato: sgToPlato(amount), sg: amount, oe: brixToOe(platoToBrix(sgToPlato(amount))) };
        case Unit.Oechsle:
            return { brix: oeToBrix(amount), plato: brixToPlato(oeToBrix(amount)), sg: platoToSg(brixToPlato(oeToBrix(amount))), oe: amount };
    }
}

const calcApparentExtractSG = (ogUnit: UnitConversion, fgUnit: UnitConversion): number => {
    return 1.001843 - 0.002318474 * ogUnit.plato - 0.000007775 * Math.pow(ogUnit.plato, 2) -
        0.000000034 * Math.pow(ogUnit.plato, 3) + 0.00574 * fgUnit.brix +
        0.00003344 * Math.pow(fgUnit.brix, 2) +
        0.000000086 * Math.pow(fgUnit.brix, 3);
}

const calcApparentExtractSGTerrill = (ogUnit: UnitConversion, fgUnit: UnitConversion): number => {
    return 1.0000 - 0.00085683 * ogUnit.plato + 0.0034941 * fgUnit.plato;
}

const calcRealExtract = (ogUnit: UnitConversion, apparentExPlato: number): number => {
    return 0.1808 * og


import unittest
from PIL import Image
from magic_pdf.model.ppTableModel import ppTableModel

class TestppTableModel(unittest.TestCase):
    def test_image2html(self):
        img = Image.open("tests/test_table/assets/table.jpg")
        # 修改table模型路径
        config = {"device": "cuda",
                  "model_dir": "D:/models/PDF-Extract-Kit/models/TabRec/TableMaster"}
        table_model = ppTableModel(config)
        res = table_model.img2html(img)
        true_value = """

Methods	R	P	F	FPS

SegLink [26]	70.0	86.0	77.0	8.9

PixelLink [4]	73.2	83.0	77.8	-

TextSnake [18]	73.9	83.2	78.3	1.1

TextField [37]	75.9	87.4	81.3	5.2

MSR[38]	76.7	87.4	81.7	-

FTSN[3]	77.1	87.6	82.0	-

LSE[30]	81.7	84.2	82.9	-

CRAFT [2]	78.2	88.2	82.9	8.6

MCN [16]	79	88.	83	-

ATRR[35]	82.1	85.2	83.6	-

PAN [34]	83.8	84.4	84.1	30.2

DB[12]	79.2	91.5	84.9	32.0

DRRG [41]	82.30	88.05	85.08	-

Ours (SynText)	80.68	85.40	82.97	12.68

Ours (MLT-17)	84.54	86.62	85.57	12.31

	\n"""
        self.assertEqual(true_value, res)

if __name__ == "__main__":
    unittest.main()


language governing rights and limitations under the License.
##
## The Original Code is reddit.
##
## The Original Developer is the Initial Developer.  The Initial Developer of
## the Original Code is reddit Inc.
##
## All portions of the code written by reddit are Copyright (c) 2006-2015
## reddit Inc. All Rights Reserved.
###############################################################################

<%!
   from r2.config import feature
%>

<%namespace file="utils.html" import="nsfw_stamp, quarantine_stamp" />

%for sr in thing.subreddits:
  <%
    if sr.spammy():
      sr_class = 'sr-banned'
    else:
      sr_class = ''
  %>

    /r/${sr.name}
    %if sr.quarantine:
      ${quarantine_stamp()}
    %elif sr.over_18 and c.user.pref_label_nsfw:
      ${nsfw_stamp()}
    %endif

%endfor

## The contents of this file are subject to the Common Public Attribution
## License Version 1.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://code.reddit.com/LICENSE. The License is based on the Mozilla Public
## License Version 1.1, but Sections 14 and 15 have been added to cover use of
## software over a computer network and provide for limited attribution for the
## Original Developer. In addition, Exhibit A has been modified to be
## consistent with Exhibit B.
##
## Software distributed under the License is distributed on an "AS IS" basis,
## WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
## the specific language governing rights and limitations under the License.
##
## The Original Code is reddit.
##
## The Original Developer is the Initial Developer.  The Initial Developer of
## the Original Code is reddit Inc.
##
## All portions of the code written by reddit are Copyright (c) 2006-2015
## reddit Inc. All Rights Reserved.
###############################################################################

<%namespace file="utils.html" import="text_with_links" />

%if thing.suggestion_type:

%if thing.suggestion_type == 'explore':
  ${_('or')}
  ${_('explore some new subreddits')}
%elif thing.suggestion_type == 'multis':
  ${_('or try a multi:')}
  %for multi in thing.suggestions:
      /m/${multi.name}
  %endfor
%elif thing.suggestion_type == 'random':
  ${text_with_links(
    _('or try a %(random_subreddit)s'),
    random_subreddit=dict(link_text=_("random subreddit"), path="/r/random")
  )}
%endif

%endif
## The contents of this file are subject to the Common Public Attribution
## License Version 1.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://code.reddit.com/LICENSE. The License is based on the Mozilla Public
## License Version 1.1, but Sections 14 and 15 have been added to cover use of
## software over a computer network and provide for limited attribution for the
## Original Developer. In ad


BetaFunction.html for more detailed information.
func Beta(a, b float64) float64 {
	return gonum.Beta(a, b)
}

// Lbeta returns the natural logarithm of the complete beta function B(a,b).
// Lbeta is defined as:
//
//	Ln(Γ(a)Γ(b)/Γ(a+b))
//
// Special cases are:
//
//	Lbeta(a,b) returns NaN if a or b is Inf
//	Lbeta(a,b) returns NaN if a and b are 0
//	Lbeta(a,b) returns NaN if a or b is NaN
//	Lbeta(a,b) returns NaN if a or b is < 0
//	Lbeta(a,b) returns +Inf if a xor b is 0.
func Lbeta(a, b float64) float64 {
	return gonum.Lbeta(a, b)
}
// Copyright ©2016 The gonum Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package native

import (
	"math"

	"github.com/gonum/blas"
	"github.com/gonum/blas/blas64"
	"github.com/gonum/lapack"
)

// Dlaqr23 performs the orthogonal similarity transformation of an n×n upper
// Hessenberg matrix to detect and deflate fully converged eigenvalues from a
// trailing principal submatrix using aggressive early deflation [1].
//
// On return, H will be overwritten by a new Hessenberg matrix that is a
// perturbation of an orthogonal similarity transformation of H. It is hoped
// that on output H will have many zero subdiagonal entries.
//
// If wantt is true, the matrix H will be fully updated so that the
// quasi-triangular Schur factor can be computed. If wantt is false, then only
// enough of H will be updated to preserve the eigenvalues.
//
// If wantz is true, the orthogonal similarity transformation will be
// accumulated into Z[iloz:ihiz+1,ktop:kbot+1], otherwise Z is not referenced.
//
// ktop and kbot determine a block [ktop:kbot+1,ktop:kbot+1] along the diagonal
// of H. It must hold that
//  0 <= ilo <= ihi < n,     if n > 0,
//  ilo == 0 and ihi == -1,  if n == 0,
// and the block must be isolated, that is, it must hold that
//  ktop == 0   or H[ktop,ktop-1] == 0,
//  kbot == n-1 or H[kbot+1,kbot] == 0,
// otherwise Dlaqr23 will panic.
//
// nw is the deflation window size. It must hold that
//  0 <= nw <= kbot-ktop+1,
// otherwise Dlaqr23 will panic.
//
// iloz and ihiz specify the rows of the n×n matrix Z to which transformations
// will be applied if wantz is true. It must hold that
//  0 <= iloz <= ktop,  and  kbot <= ihiz < n,
// otherwise Dlaqr23 will panic.
//
// sr and si must have length kbot+1, otherwise Dlaqr23 will panic.
//
// v and ldv represent an nw×nw work matrix.
// t and ldt represent an nw×nh work matrix, and nh must be at least nw.
// wv and ldwv represent an nv×nw work matrix.
//
// work must have length at least lwork and lwork must be at least max(1,2*nw),
// otherwise Dlaqr23 will panic. Larger values of lwork may result in greater
// efficiency. On return, work[0] will contain the optimal value of lwork.
//
// If lwork is -1, instead


 childFilePath = childFile.getPath();
                if (childFilePath.endsWith(".class")) {
                    if (childFilePath.indexOf("\\classes") >= 0 || childFilePath.indexOf("/classes") >= 0) {
                        int start = childFilePath.indexOf("\\classes");
                        if (start == -1) {
                            start = childFilePath.indexOf("/classes");
                        }
                        childFilePath = childFilePath.substring(start + 9, childFilePath.lastIndexOf("."));
                    }
                    childFilePath = childFilePath.replace("\\", ".");
                    childFilePath = childFilePath.replace("/", ".");
                    myClassName.add(childFilePath);
                }
            }
        }

        return myClassName;
    }

    /**
     * 从jar获取某包下所有类
     * @param jarPath jar文件路径
     * @param childPackage 是否遍历子包
     * @return 类的完整名称
     */
    private static List<String> getClassNameByJar(String jarPath, boolean childPackage) {
        List<String> myClassName = new ArrayList<String>();
        String[] jarInfo = jarPath.split("!");
        String jarFilePath = jarInfo[0].substring(jarInfo[0].indexOf("/"));
        String packagePath = jarInfo[1].substring(1);
        try {
            JarFile jarFile = new JarFile(jarFilePath);
            Enumeration<JarEntry> entrys = jarFile.entries();
            while (entrys.hasMoreElements()) {
                JarEntry jarEntry = entrys.nextElement();
                String entryName = jarEntry.getName();

                if (entryName.endsWith(".class")) {
                    if (childPackage) {
                        if (entryName.startsWith(packagePath)) {
                            entryName = entryName.replace("/", ".").substring(0, entryName.lastIndexOf("."));
                            myClassName.add(entryName);
                        }
                    } else {
                        int index = entryName.lastIndexOf("/");
                        String myPackagePath;
                        if (index != -1) {
                            myPackagePath = entryName.substring(0, index);
                        } else {
                            myPackagePath = entryName;
                        }
                        if (myPackagePath.equals(packagePath)) {
                            entryName = entryName.replace("/", ".").substring(0, entryName.lastIndexOf("."));
                            myClassName.add(entryName);
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return myClassName;
    }

    /**
     * 从所有jar中搜索该包，并获取该包下所有类
     * @param urls URL集合
     * @param packagePath 包路径
     * @param childPackage 是否遍历子包
     * @return 类的完整名称
     */
    private static List<String> getClassNameByJars(URL[] urls, String packagePath, boolean childPackage) {
        List<String> myClassName = new ArrayList<String>();
        if (urls != null) {
            for (int i = 0; i < urls.length; i++) {
                URL url = urls[i];
                String urlPath = url.getPath();
                // 不


ارد و وضوح ۵۰ سانتیمتری از آن نیز بالاتر خواهد بود. این به‌طور کلی محدودهٔ تصاویری است که بینگ ارائه می‌کند، هرچند که در مکان‌های مختلف متفاوت است و در بسیاری از جاها حتی بدتر از دو متر است، در این صورت شناسایی اشیای درون تصویر دشوار می‌شود.

![Comparison of low and high resolution imagery][]

هرچه وضوح تصویر هوایی بالاتر باشد استفاده از آن برای کشیدن نقشه آسان‌تر است.

 زمین‌مرجع (ژئورفرنس) کردن
---------------

هر پیکسل یک تصویر هوایی، یک اندازه دارد و یک موقعیت جغرافیایی نیز دارد. همانطور که در بالا ذکر شد، علت این امر این است که تصاویر هوایی ژئورفرنس شده‌اند.

یک پیکسل در یک تصویر هوایی، درست همانند یک نقطهٔ GPS دارای طول و عرض جغرافیایی است. با این حال، همانطور که وضوح ضعیف می‌تواند چالش‌هایی برای نقشه‌کشی ایجاد کند، تصاویری که بد ژئورفرنس شده باشند نیز در رسم صحیح نقشه اختلال ایجاد می‌کنند.

بیایید چند لحظه فکر کنیم ژئورفرنس‌کردن چگونه است و چرا انجام آن چالش‌برانگیز است. وقتی کسی تصویری را ژئورفرنس می‌کند، ابتدا چند پیکسل را که مکان‌های کاملاً شناحته شده‌ای هستند روی تصویر شناسایی می‌کند. اگر یک عکس مربع‌شکل داشته باشیم، ابتدا مختصات چهارگوشهٔ آن را شناسایی می‌کنیم و با استفاده از آن‌ها می‌توانیم تصویر را در محل صحیح قرار دهیم.

این کار به‌نظر خیلی ساده است. اما توجه کنید که: زمین گرد است؛ لنزهای دوربین گرد هستند؛ و با این حال عکس‌ها مسطح و دو‌بعدی‌اند. این یعنی هنگامی که یک عکس مسط


n) {
          mostRecentRebuildFailed = true
          journalWriter = blackholeSink().buffer()
        }
      }
    }
  }

  @Synchronized
  @Throws(IOException::class)
  fun initialize() {
    assert(Thread.holdsLock(this))
    if (initialized) {
      return  // Already initialized.
    }

    // If a bkp file exists, use it instead.
    if (fileSystem.exists(journalFileBackup)) {
      // If journal file also exists just delete backup file.
      if (fileSystem.exists(journalFile)) {
        fileSystem.delete(journalFileBackup)
      } else {
        fileSystem.rename(journalFileBackup, journalFile)
      }
    }

    // Prefer to pick up where we left off.
    if (fileSystem.exists(journalFile)) {
      try {
        readJournal()
        processJournal()
        initialized = true
        return
      } catch (journalIsCorrupt: IOException) {
        //logger.w("DiskLruCache " + directory + " is corrupt: "
        //    + journalIsCorrupt.getMessage() + ", removing", journalIsCorrupt);
      }

      // The cache is corrupted, attempt to delete the contents of the directory. This can throw and
      // we'll let that propagate out as it likely means there is a severe filesystem problem.
      try {
        delete()
      } finally {
        isClosed = false
      }
    }
    rebuildJournal()
    initialized = true
  }

  @Throws(IOException::class)
  private fun readJournal() {
    fileSystem.source(journalFile).buffer().use { source ->
      val magic = source.readUtf8LineStrict()
      val version = source.readUtf8LineStrict()
      val appVersionString = source.readUtf8LineStrict()
      val valueCountString = source.readUtf8LineStrict()
      val blank = source.readUtf8LineStrict()
      if (MAGIC != magic
          || VERSION_1 != version
          || appVersion.toString() != appVersionString
          || valueCount.toString() != valueCountString
          || "" != blank) {
        throw IOException("unexpected journal header: [" + magic + ", " + version + ", "
            + valueCountString + ", " + blank + "]")
      }
      var lineCount = 0
      while (true) {
        try {
          readJournalLine(source.readUtf8LineStrict())
          lineCount++
        } catch (endOfJournal: EOFException) {
          break
        }
      }
      redundantOpCount = lineCount - lruEntries.size

      // If we ended on a truncated line, rebuild the journal before appending to it.
      if (!source.exhausted()) {
        rebuildJournal()
      } else {
        journalWriter = newJournalWriter()
      }
    }
  }

  @Throws(FileNotFoundException::class)
  private fun newJournalWriter(): BufferedSink {
    val fileSink = fileSystem.appendingSink(journalFile)
    val faultHidingSink: Sink = object : FaultHidingSink(fileSink) {
      override fun onException(e: IOException?) {
        assert(Thread.holdsLock(this@DiskLruCache))
        hasJournalErrors = true
      }
    }
    return faultHidingSink.buffer()
  }

  @Throws(IOException::class)
  private fun readJournalLine(line: String) {
    val firstSpace = line.indexOf(' ')
    if (firstSpace == -1) {
      throw IOException("unexpected journal line: $line")
    }
    val keyBegin = firstSpace + 1
    val secondSpace = line.indexOf(' ', keyBegin)
    val key: String
    if (secondSpace == -1) {
      key = line.substring(keyBegin)
      if (firstSpace == REMOVE.length && line.startsWith(REMOVE)) {
        lruEntries.remove(key)
        return
      }
    } else {
      key = line


ses of the callback file.
   */
  public dispose() {
    clearInterval(this.updateInterval);
    try {
      unlinkSync(this.path);
    } catch {
      // ignored
    }
  }
}
/*
npm install --save readline-sync
npm i -D @types/readline-sync
*/

import { question, questionInt } from "readline-sync";

type Operador = "+" | "-" | "*" | "/";

const calcular = (numero1: number, operador: Operador, numero2: number) => {
  switch (operador) {
    case "+":
      return numero1 + numero2;
    case "-":
      return numero1 - numero2;
    case "*":
      return numero1 * numero2;
    case "/":
      if (numero2 == 0) {
        throw new Error("0 division");
      }
      return numero1 / numero2;
    default:
      throw new Error("invalid operation");
  }
}

const numero1 = questionInt("Insira o primeiro numero: \n");
const operador: string = question("insira o operador: \n");
const numero2 = questionInt("Insira o segundo numero: \n");

try {
  const resultado = calcular(
    numero1,
    operador as Operador,
    numero2
  );
  console.log(resultado);
} catch (error) {
  console.error(error.message);
}
import { Project } from "@/interfaces/Project";

const createProjectFromServer = (data: any): Project => {
  const { project_id, project_name, color, status } = data;
  if (![project_id, project_name, status].some((val) => val)) {
    const errorMessage =
      "Error creating <Project> model. Some mandatory props are missing: ";
    console.error(errorMessage, project_id, project_name, status);
  }
  const project: Project = {
    id: Number(project_id),
    name: String(project_name),
    color: color ?? "",
    status: String(status),
  };
  return project;
};

export const createProjectsFromServer = (projects: any[]): Project[] => {
  if (!Array.isArray(projects)) {
    console.error("Error creating Projects model");
    return [];
  }
  return projects.map(createProjectFromServer);
};
import { expect } from 'chai';
import 'mocha';
import { TestHelper } from '../../../../testHelper';
import { Insert } from '../../../../../src/operations/text/types/insert';
import { TextOperation } from '../../../../../src/operations/text/textOperation';

describe('Insert operation', () => {

  it('should compare two `Insert` operation', () => {
    const doc = TestHelper.randomText(TestHelper.randomIntBetween(10, 20));
    const docB = TestHelper.randomText(TestHelper.randomIntBetween(10, 20));
    const sameCase = new Insert(doc, 15);
    const testVector: Array<{a: TextOperation; b: TextOperation; result: boolean}> = [
      { a: new Insert(doc, 3), b: new Insert(doc, 7), result: false },
      { a: new Insert(doc, 7), b: new Insert(doc, 3), result: false },
      { a: new Insert(doc, 1), b: new Insert(docB, 1), result: false },
      { a: new Insert(doc, 9), b: new Insert(docB, 4), result: false },
      { a: new Insert(doc, 5), b: new Insert(doc, 5), result: true },
      { a: sameCase, b: sameCase, result: true },
    ];
    testVector.forEach(({a, b, result}) => {
      const isEqual = a.equals(b);
      expect(isEqual).to.be.equal(result);
    });
  });

  it('should compare two `Insert` operation', () => {
    const operation = new Insert('Hello World!', 7);
    expect(operation.toString()).to.be.equal('Insert("Hello World!", 7)');
  });


.finalize();
  EXPECT_FALSE(verifyModule(*M, &errs()));
}

TEST_F(OpenMPIRBuilderTest, OMPAtomicReadInt) {
  OpenMPIRBuilder OMPBuilder(*M);
  OMPBuilder.initialize();
  F->setName("func");
  IRBuilder<> Builder(BB);

  OpenMPIRBuilder::LocationDescription Loc({Builder.saveIP(), DL});

  IntegerType *Int32 = Type::getInt32Ty(M->getContext());
  AllocaInst *XVal = Builder.CreateAlloca(Int32);
  XVal->setName("AtomicVar");
  AllocaInst *VVal = Builder.CreateAlloca(Int32);
  VVal->setName("AtomicRead");
  AtomicOrdering AO = AtomicOrdering::Monotonic;
  OpenMPIRBuilder::AtomicOpValue X = {XVal, Int32, false, false};
  OpenMPIRBuilder::AtomicOpValue V = {VVal, Int32, false, false};

  BasicBlock *EntryBB = BB;

  Builder.restoreIP(OMPBuilder.createAtomicRead(Loc, X, V, AO));
  LoadInst *AtomicLoad = nullptr;
  StoreInst *StoreofAtomic = nullptr;

  for (Instruction &Cur : *EntryBB) {
    if (isa<LoadInst>(Cur)) {
      AtomicLoad = cast<LoadInst>(&Cur);
      if (AtomicLoad->getPointerOperand() == XVal)
        continue;
      AtomicLoad = nullptr;
    } else if (isa<StoreInst>(Cur)) {
      StoreofAtomic = cast<StoreInst>(&Cur);
      if (StoreofAtomic->getPointerOperand() == VVal)
        continue;
      StoreofAtomic = nullptr;
    }
  }

  EXPECT_NE(AtomicLoad, nullptr);
  EXPECT_TRUE(AtomicLoad->isAtomic());

  EXPECT_NE(StoreofAtomic, nullptr);
  EXPECT_EQ(StoreofAtomic->getValueOperand(), AtomicLoad);

  Builder.CreateRetVoid();
  OMPBuilder.finalize();

  EXPECT_FALSE(verifyModule(*M, &errs()));
}

TEST_F(OpenMPIRBuilderTest, OMPAtomicWriteFlt) {
  OpenMPIRBuilder OMPBuilder(*M);
  OMPBuilder.initialize();
  F->setName("func");
  IRBuilder<> Builder(BB);

  OpenMPIRBuilder::LocationDescription Loc({Builder.saveIP(), DL});

  LLVMContext &Ctx = M->getContext();
  Type *Float32 = Type::getFloatTy(Ctx);
  AllocaInst *XVal = Builder.CreateAlloca(Float32);
  XVal->setName("AtomicVar");
  OpenMPIRBuilder::AtomicOpValue X = {XVal, Float32, false, false};
  AtomicOrdering AO = AtomicOrdering::Monotonic;
  Constant *ValToWrite = ConstantFP::get(Float32, 1.0);

  Builder.restoreIP(OMPBuilder.createAtomicWrite(Loc, X, ValToWrite, AO));

  IntegerType *IntCastTy =
      IntegerType::get(M->getContext(), Float32->getScalarSizeInBits());

  Value *ExprCast = Builder.CreateBitCast(ValToWrite, IntCastTy);

  StoreInst *StoreofAtomic = cast<StoreInst>(XVal->getNextNode());
  EXPECT_EQ(StoreofAtomic->getValueOperand(), ExprCast);
  EXPECT_EQ(StoreofAtomic->getPointerOperand(), XVal);
  EXPECT_TRUE(StoreofAtomic->isAtomic());

  Builder.CreateRetVoid();
  OMPBuilder.finalize();
  EXPECT_FALSE(verifyModule(*M, &errs()));
}

TEST_F(OpenMPIRBuilderTest, OMPAtomicWriteInt) {
  OpenMPIRBuilder OMPBuilder(*M);
  OMPBuilder.initialize();
  F->setName("func");
  IRBuilder<> Builder(BB);

  OpenMPIRBuilder::LocationDescription Lo


         let user = await this.userRepository.deleteUser(id);
            if (!user) {
                throw new ErrorResponse(`User with id: ${id} not found`, 404);
            }
            return {
                success: true,
                data: `User removed successfully`,
            };

        } catch (error) {
            throw error;
        }
    };
}
import type { IView } from 'View';
import type { IViewModelGetMethods } from 'View/ViewModel';
import { addClass, removeClass } from 'utilities/changeClassList';

import type ISliderContainerView from './SliderContainerView.model';

class SliderContainerView implements ISliderContainerView {
  private readonly target: HTMLElement;

  private readonly viewModel: IViewModelGetMethods;

  private slider: HTMLElement;

  constructor(target: HTMLElement, mainView: IView) {
    this.target = target;
    this.viewModel = mainView.getViewModel();
    this.slider = this.create();
  }

  get(): HTMLElement {
    return this.slider;
  }

  // Обновляет классы контейнера
  update() {
    const { sliderVerticalClass } = this.viewModel.getData('classes');
    const { sliderRangeClass } = this.viewModel.getData('classes');
    if (this.viewModel.getData('isVertical')) {
      addClass(this.slider, sliderVerticalClass);
    } else {
      removeClass(this.slider, sliderVerticalClass);
    }
    if (this.viewModel.getData('modelData')?.isRange) {
      addClass(this.slider, sliderRangeClass);
    } else {
      removeClass(this.slider, sliderRangeClass);
    }
  }

  mount() {
    this.target.appendChild(this.slider);
  }

  private create(): HTMLElement {
    const slider = document.createElement('div');
    const { sliderClass } = this.viewModel.getData('classes');
    addClass(slider, sliderClass);
    this.slider = slider;
    this.update();
    return this.slider;
  }
}

export default SliderContainerView;
import { _decorator, Component, Node, Vec3, tween, Tween } from "cc";
const { ccclass, property, menu } = _decorator;

@ccclass("TweenRepeatForever")
@menu("tween/TweenRepeatForever")
export class TweenRepeatForever extends Component {

    private tweenRF: Tween;

    onLoad () {
        // 一直重复执行下去
        this.tweenRF = tween(this.node)
            .by(1, { scale: new Vec3(2, 2, 2) })
            .repeatForever()
    }

    onEnable () {
        this.tweenRF.start();
    }

    onDisable () {
        this.tweenRF.stop();
    }
}
import { Directive, forwardRef, Input } from '@angular/core';
import { Validator, AbstractControl, NG_VALIDATORS } from '@angular/forms';

export const EQUAL_VALIDATOR: any = {
  provide: NG_VALIDATORS,
  useExisting: forwardRef(() => EqualValidator),
  multi: true
};

/**
 * Generated class for the EqualValidatorDirective directive.
 *
 * See https://angular.io/api/core/Directive for more info on Angular
 * Directives.
 */
@Directive({
  selector: '[validateEqual][formControlName], [validateEqual][formControl], [validateEqual][ngModel]',
  providers: [EQUAL_VALIDATOR]
})

export class EqualValidator implements Validator {

  constructor() {
    console.log('Hello EqualValidatorDirective Directive');
  }

  @Input() validateEqual: string;
  @Input() reverse: string;

  private get isReverse() {
    if (!this.reverse) return false;
    return this.reverse === 'true' ? true : false;
  }

  validate(c: AbstractControl): { [key: string]: any } {
    let v = c.value;

    let e = c.root.get(this.validateEqual);

    if (e && v !== e.value && !this.isReverse) {
      return {
        validateEqual: false
      }
    }

    if (e && v !== e.value && this.isReverse) {
      e.setErrors


MCSS
 - mfidl/IMFWorkQueueServices::EndRegisterTopologyWorkQueuesWithMMCSS
dev_langs:
 - c++
topic_type:
 - APIRef
 - kbSyntax
api_type:
 - COM
api_location:
 - mfuuid.lib
 - mfuuid.dll
api_name:
 - IMFWorkQueueServices.EndRegisterTopologyWorkQueuesWithMMCSS
---

# IMFWorkQueueServices::EndRegisterTopologyWorkQueuesWithMMCSS

## -description

Completes an asynchronous request to register the topology work queues with the Multimedia Class Scheduler Service (MMCSS).

## -parameters

### -param pResult [in]

Pointer to the IMFAsyncResult interface. Pass in the same pointer that your callback object received in the IMFAsyncCallback::Invoke method.

## -returns

The method returns an HRESULT. Possible values include, but are not limited to, those in the following table.

Return code
Description

S_OK

The method succeeded.

## -remarks

Call this method when the IMFWorkQueueServices::BeginRegisterTopologyWorkQueuesWithMMCSS method completes asynchronously.

## -see-also

IMFWorkQueueServices---
description: Use this topic to help manage Windows and Windows Server technologies with Windows PowerShell.
external help file: Microsoft.BackgroundIntelligentTransfer.Management.dll-Help.xml
Module Name: BitsTransfer
ms.date: 12/20/2016
online version: https://learn.microsoft.com/powershell/module/bitstransfer/remove-bitstransfer?view=windowsserver2022-ps&wt.mc_id=ps-gethelp
schema: 2.0.0
title: Remove-BitsTransfer
---

# Remove-BitsTransfer

## SYNOPSIS
Cancels a BITS transfer job.

## SYNTAX

```
Remove-BitsTransfer [-BitsJob] <BitsJob[]> [-WhatIf] [-Confirm] [<CommonParameters>]
```

## DESCRIPTION
The **Remove-BitsTransfer** cmdlet cancels a Background Intelligent Transfer Service (BITS) transfer job.
It deletes the underlying transfer job, removes any temporary files from the client, and deletes the associated **BitsJob** object.

When the **Remove-BitsTransfer** cmdlet cancels a transfer job, it deletes all the transfers.
Consider a scenario is which you are transferring three files.
One file is completely transferred, one file is pending, and one file is currently being transferred.
In this scenario, **Remove-BitsTransfer** cancels the whole transfer and deletes the underlying files.
Any files that were already transferred are not available after you use the **Remove-BitsTransfer** cmdlet to cancel the transfer job.
Optionally, you can use the **Complete-BitsTransfer** cmdlet to commit any files that are completely downloaded and to cancel the pending and current transfers.
The transferred file is not be deleted and is available.

## EXAMPLES

### Example 1: Cancel all BITS transfer jobs owned by the current user
```
PS C:\> Get-BitsTransfer | Remove-BitsTransfer
```

This command cancels all the BITS transfer jobs that are owned by the current user.

The output of the **Get-BitsTransfer** cmdlet is piped to the **Remove-BitsTransfer** cmdlet.
The output is a set of **BitsJob** objects.

### Example 2: Cancel all BI


193217] = "獸人帳篷",
[193218] = "獸人帳篷",
[193219] = "獸人帳篷",
[193387] = "達拉然噴泉術集中",
[193400] = "薩鋼炸彈堆",
[193401] = "未啟動的炸彈堆",
[193402] = "已銹蝕的犯人置物箱",
[193403] = "哀泣礦場文件",
[193404] = "哀泣礦場帳本",
[193405] = "哀泣礦場地圖",
[193406] = "哀泣礦場日程表",
[193407] = "幽暗城 - 被遺忘者 - 化學組件05",
[193409] = "荒疫貨車 [憤怒之門 - 雙方]",
[193410] = "破的瘟疫桶子 [憤怒之門 - 雙方]",
[193411] = "幽暗城 - 被遺忘者 - 火焰大",
[193412] = "破的瘟疫桶子 (2) [憤怒之門 - 雙方]",
[193413] = "幽暗城 - 被遺忘者 - 火焰小",
[193414] = "瘟疫桶子 [憤怒之門 - 雙方]",
[193415] = "尖刺 [憤怒之門 - 雙方]",
[193420] = "大型瘟疫桶子 [憤怒之門 - 雙方]",
[193422] = "椅子",
[193423] = "椅子",
[193424] = "支配之眼",
[193425] = "幽暗城傳送門",
[193426] = "四騎士之箱",
[193427] = "奧格瑪傳送門",
[193560] = "勘察員索林的地圖",
[193561] = "勘察員克羅娜的筆記",
[193562] = "寒冰皇冠 - 奈薩斯 - 龍蛋 - 藍色龍蛋 01",
[193563] = "寒冰皇冠 - 奈薩斯 - 龍蛋 - 藍色龍蛋 02",
[193564] = "Doodad_Azjol_Platform_FX_01",
[193565] = "依米海姆顱骨堆",
[193566] = "VR_StandingLight_Snow_Blue",
[193578] = "椅子",
[193579] = "遮蓋秘境 (光環產生器)",
[193580] = "默德雷薩瘟疫大鍋",
[193582] = "秘境、秘境進入陷阱、聯盟",
[193583] = "地精工具桶01",
[193584] = "地精工具桶02",
[193585] = "午餐盒工具",
[193586] = "地精維修光01",
[193589] = "發明神殿的寶珠",
[193590] = "TOI法印 1",
[193591] = "TOI法印 2",
[193592] = "TOI法印 3",
[193593] = "TOI法印 4",
[193594] = "TOI法印 5",
[193596] = "彌米爾之砧 (小型)",
[193597] = "黑暗符文箱",
[193598] = "營火",
[193599] = "篝火",
[193602] = "集合石",
[193603] = "伊瑞苟斯的貯藏箱",
[193604] = "往時光之穴的達拉然傳送門",
[193607] = "秘境、秘境進入陷阱、部落",
[193610] = "城底區藥劑",
[193611] = "啟動水晶",
[193612] = "路障",
[193


5px}.DV-well .DV-navControls{position:relative;height:40px;background-position:0 bottom}.DV-navigation{padding:10px}.DV-contentsHeader,.DV-descriptionHead{text-transform:uppercase;color:#666;font-family:Arial,Helvetica,sans-serif;font-size:12px;margin:0 0 5px;padding:0;font-weight:bold;clear:left;display:block}.DV-chapter,.DV-annotationMarker{margin:0 0 12px 0;padding:0;font-family:Arial,Helvetica,sans-serif;font-size:12px;font-weight:bold}.DV-collapsed .DV-annotationMarker{display:none}.DV-annotationMarker{margin-left:14px}.DV-annotationMarker .DV-navPageNumber{visibility:hidden}.DV-annotationMarker .DV-trigger:hover .DV-navPageNumber{visibility:visible}.DV-chapter .DV-annotationMarker{margin-left:14px}.DV-hasChildren .DV-annotationMarker{margin:0 0 4px;padding:0 0 0 8px;background:transparent url(images/DV/embed/bullet4x4.gif?1405385188) no-repeat 0 4px;font-family:Arial,Helvetica,sans-serif;font-size:11px;font-weight:normal;margin-left:12px}.DV-ie .DV-annotationMarker{margin-bottom:3px}.DV-chapter div.DV-first{margin:0 0 3px 0;background:none;display:block;padding:0;font-weight:bold}.DV-chapter div.DV-first:after{content:".";display:block;height:0;clear:both;visibility:hidden}.DV-chapter div.DV-first{display:inline-block}.DV-navigation .DV-noChildren{margin-left:14px}.DV-navigation div.DV-first span.DV-trigger{font-size:12px;float:left;display:inline;width:210px;margin-left:5px}.DV-navigation .DV-noChildren div.DV-first span.DV-trigger{margin-left:0}.DV-descriptionToggle,.DV-navigation div.DV-first span.DV-expander{background:url(images/DV/embed/expanders.png?1405385188) no-repeat 0 5px}.DV-navigation div.DV-first span.DV-expander{width:7px;height:13px;padding-right:0;text-indent:-1000em;float:left;display:inline;margin:0;padding:0}.DV-navigation div.DV-collapsed div.DV-first span.DV-expander{background-position:0 -31px}.DV-navigation div span{text-decoration:none;color:#004276}.DV-navigation div span:focus{outline:0}.DV-navigation .DV-trigger:hover .DV-navAnnotationTitle{text-decoration:underline}.DV-navigation .DV-navPageNumber{color:#666;font-size:10px;padding-left:4px;font-weight:normal}.DV-navigation .DV-selected span{color:#000;font-weight:bold}.DV-descriptionToggle{float:left;display:inline;text-decoration:none;text-indent:-1000em;width:7px;height:13px;margin-right:6px;background-position:0 -31px}.DV-descriptionToggle.DV-showDescription{background-position:0 5px}.DV-descriptionText{clear:left;padding:14px;background-color:#f7f7f7}.DV-pageNumberContainer input{background-color:#FFF;border-color:#7b9ed3 #d2deef #d2deef #7b9ed3;border-style:solid;border-width:1px;color:#333;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:12px;margin-left:5px;margin-right:5px;padding:4px 8px;position:relative;text-align:center;width:27px;margin-top:0}.DV-ie .DV-pageNumberContainer input{margin-top:-5px}.DV-sear


lue(true)
             .help("search korean torrent magnet file"))
    .get_matches();
    if let Some(keyword) = matches.value_of("keyword") {
        let keyword = keyword.to_owned();
        println!("[*] Hisho {} starts crawling!!!", version);
        let data = execute(keyword);
        if data.len() > 0 {
            print_table(data);
        }
    }
}<filename>chess_engine_wasm_bindings/src/lib.rs
use chess_engine_core::{Board, Color, Move, Piece};
use js_sys::Array;
use wasm_bindgen::prelude::*;

//Build:
//wasm-pack build --target web chess_engine_wasm_bindings && cp -r chess_engine_wasm_bindings/pkg site/static/
#[wasm_bindgen]
pub struct JsBoard {
    inner: Board,
}
#[wasm_bindgen]
impl JsBoard {
    #[wasm_bindgen(constructor)]
    pub fn new() -> JsBoard {
        let board = Board::new();
        JsBoard { inner: board }
    }

    #[wasm_bindgen]
    pub fn get_piece_at(&self, row: usize, col: usize) -> Option<JsPiece> {
        let piece = self.inner.pieces[row][col];
        match piece {
            Some(piece) => Some(JsPiece::new(&piece)),
            None => None,
        }
    }

    #[wasm_bindgen]
    pub fn get_board(&self) -> Array {
        let pieces = self.inner.pieces;
        let mut result = Vec::new();
        for row in pieces.iter() {
            let mut row_vec = Vec::new();
            for piece in row.iter() {
                row_vec.push(piece.map(|p| JsPiece::new(&p)));
            }
            result.push(row_vec.into_iter().map(JsValue::from).collect::<Array>());
        }
        result.into_iter().map(JsValue::from).collect()
    }

    pub fn get_legal_moves(&self, row: i8, col: i8) -> Array {
        let moves = self.inner.get_legal_moves((row, col));
        let mut result = Vec::new();
        for move_ in moves {
            result.push(JsMove::from_move(move_));
        }
        result.into_iter().map(JsValue::from).collect()
    }

    pub fn apply_move(&mut self, move_: JsMove) -> bool {
        let move_ = move_.get();
        self.inner.apply_move(&move_)
    }

    pub fn get_move_from_pos(&self, from_row: i8, from_col: i8, to_row: i8, to_col: i8) -> Option<JsMove> {
        let moves = self.inner.get_legal_moves((from_row, from_col));
        for move_ in moves {
            if move_.to == (to_row, to_col) {
                return Some(JsMove::from_move(move_));
            }
        }
        None
    }
}

#[wasm_bindgen]
pub struct JsPiece {
    inner: Piece,
}

#[wasm_bindgen]
impl JsPiece {
    pub fn is_white(&self) -> bool {
        self.inner.get_color() == Color::White
    }
    pub fn is_black(&self) -> bool {
        self.inner.get_color() == Color::Black
    }

    pub fn get_piece_type(&self) -> String {
        match self.inner {
            Piece::Pawn(_) => "pawn".to_string(),
            Piece::Rook(_) => "rook".to_string(),
            Piece::Knight(_) => "knight".to_string(),
            Piece::Bishop(_) => "bishop".to_string(),
            Piece::Queen(_) => "queen".to_string(),
            Piece::King(_) => "king".to_string(),
        }
    }

    pub fn get_color(&self) -> String {
        match


지식 남들에게 설명하기
	- 옵시디언 문서 작성 및 정리

- 정보처리기사 암기
	- Death of ping
	- Smurfing
	- SYN Flooding
	- Tear drop
	- Land Attack
	- Ddos
	- LRU
	- VPN
	- 방화벽
	- 칩입탐지시스템(IDS)
	- 침입방지시스템(IPS)
	- 데이터유출방지(DLP)
	- 웹 방화벽
	- NAC
	- ESM
	- SIEM
	- SSH
	- 탬퍼 프루핑(Tamper Proofing)
	- OAuth (Open Authoration)
	- 생성 패턴 (Creational)
	- 구조 패턴 (Structural)
	- 행위 패턴 (Behavioral)
	- 추상 팩토리
	- 빌더
	- 팩토리 메서드
	- 프로토타입
	- 싱글톤
	- 어댑터
	- 브리지
	- 컴포지트
	- 데코레이터
	- 퍼싸드
	- 플라이웨이트
	- 프록시
	- 책임 연쇄
	- 커맨드
	- 인터프리터
	- 반복자
	- 중재자
	- 메멘토
	- 옵저버
	- 상태
	- 전략
	- 탬플릿 메소드
	- 방문자
- 키워드
	- Kubernetes 관리 플랫폼
		- 클러스터 구성, 워크로드 배포 등 쿠버네티스 구성 및 자동화 관리
	- MLOps 플랫폼 (Kubeflow) 구성, 관리 자동화 개발
	- Flask
	- Django
	- gRFC
	- RDBMS
	- NoSQL

- 코딩 노하우
	-  **모든 플랫폼 공통 – 비즈니스 가치를 위한 아키텍처 전략**

	- **기술은 수단, 가치는 목적**이다. 리팩토링은 "깨끗한 코드"가 아니라 "매출, 유지보수 비용, 기회비용 절감"이라는 명확한 KPI 기준에서 우선순위가 결정돼야 한다.
	- **선택적 기술 부채 전략**을 세워라. MVP 단계에서는 일