Uri source, CompilerOptions options,
    {List<Uri> additionalSources = const <Uri>[],
    bool retainDataForTesting = false,
    bool requireMain = true}) async {
  ProcessedOptions pOptions = new ProcessedOptions(
      options: options, inputs: [source, ...additionalSources]);
  return await CompilerContext.runWithOptions(pOptions, (context) async {
    CompilerResult result = await generateKernelInternal(
        includeHierarchyAndCoreTypes: true,
        retainDataForTesting: retainDataForTesting);
    Component? component = result.component;
    if (component == null) return null;

    if (requireMain && component.mainMethod == null) {
      context.options.report(
          messageMissingMain.withLocation(source, -1, noLength),
          Severity.error);
      return null;
    }
    return result;
  });
}

/// Generates a kernel representation for a module containing [sources].
///
/// A module is a collection of libraries that are compiled together. Libraries
/// in the module may depend on each other and may have dependencies to
/// libraries in other modules. Unlike library dependencies, module dependencies
/// must be acyclic.
///
/// This API is intended for modular compilation. Dependencies to other modules
/// are specified using [CompilerOptions.additionalDills]. Any dependency
/// of [sources] that is not listed in [CompilerOptions.additionalDills] and
/// [CompilerOptions.sdkSummary] is treated as an additional source file for the
/// module.
///
/// Any `part` declarations found in [sources] must refer to part files which
/// are also listed in the module sources, otherwise an error results.  (It
/// is not permitted to refer to a part file declared in another module).
///
/// The return value is a [CompilerResult] object with no main method set in
/// the [Component] of its `component` property. The [Component] includes
/// external libraries for those libraries loaded through summaries.
Future<CompilerResult> kernelForModule(
    List<Uri> sources, CompilerOptions options) async {
  return (await generateKernel(
      ProcessedOptions(options: options, inputs: sources),
      includeHierarchyAndCoreTypes: true));
}
// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

/// Defines the front-end API for converting source code to Dart Kernel objects.

import 'package:_fe_analyzer_shared/src/macros/bootstrap.dart';
import 'package:_fe_analyzer_shared/src/macros/executor/isolated_executor.dart'
    as isolatedExecutor;
import 'package:_fe_analyzer_shared/src/macros/executor/multi_executor.dart';
import 'package:_fe_analyzer_shared/src/macros/executor/serialization.dart';
import 'package:_fe_analyzer_shared/src/messages/severity.dart' show Severity;
import 'package:kernel/ast.dart';

import 'package:front_end/src/api_prototype/file_system.dart' show FileSystem;
import 'package:front_end/src/api_prototype/front_end.dart'
    show CompilerOptions, CompilerResult;
import 'package:front_end/src/api_prototype/kernel_generator.dart';
import 'package:front_end/src/api_prototype/memory_file_system.dart';
import 'package:front_end/src/base/nnbd_mode.dart';
import 'package:front_end/src/base/processed_options.dart'
    show ProcessedOptions;
import 'package:front_end/src/fasta/compiler_context.dart' show CompilerContext;
import 'package:front_end/src/fasta/crash.dart' show withCrashReporting;
import 'package:front_end/src/fasta/dill/dill_target.d


[]): number {
  let map = new Map()
  for (const n of nums) {
    if (!map.has(n)) {
      map.set(n, true)
    } else {
      return n
    }
  }
  return 0
}
// this variable is of type number and it is binded to 10
let pizzaCost: number = 10;
const pizzaToppings: number = 5;

// here you need to apply the actually type since "any", in the tsconfig.json has been enabled as strict true.
// at then end of the function the :number means that the function is going to be returning a number
function calculatePrice(cost: number, toppings: number): number {
return cost + 1.5 * toppings;
}
const cost: number = calculatePrice(pizzaCost, pizzaToppings);
console.log(`pizza costs: ${cost}`);function f(input: boolean) {
    let a= 100;
    if(input){
        let b = a+1;
        return b;
    }
    return b;
}
f(true)

let defaults = {food: 'rich',price: '$$',ambiance:'noisy'};
let search = {food:'spicy',...defaults};
console.log(search)export type Maybe<T> = T | null;
/** All built-in and custom scalars, mapped to their actual values */
export type Scalars = {
  ID: string;
  String: string;
  Boolean: boolean;
  Int: number;
  Float: number;
  /** Long type */
  Long: any;
  /** Unrepresentable type */
  UNREPRESENTABLE: any;
};

export type AAgotRequest = {
  __typename?: "AAgotRequest";
  type?: Maybe<AgotRequestType>;
  choices?: Maybe<Array<Maybe<AgotChoice>>>;
  instruction?: Maybe<Scalars["String"]>;
  player?: Maybe<AgotPlayer>;
};

export type AddAttachmentData = {
  __typename?: "AddAttachmentData";
  toCard: Scalars["Long"];
  cardId: Scalars["Long"];
};

export type AddCardData = {
  __typename?: "AddCardData";
  index: Scalars["Int"];
  toPlayer?: Maybe<Scalars["String"]>;
  toArea?: Maybe<AngArea>;
  cardId: Scalars["Long"];
};

export type AddDuplicateData = {
  __typename?: "AddDuplicateData";
  toCard: Scalars["Long"];
  cardId: Scalars["Long"];
};

export type AddLogData = {
  __typename?: "AddLogData";
  log?: Maybe<GameLogRow>;
};

export type AgendaCard = {
  __typename?: "AgendaCard";
  imageSource?: Maybe<Scalars["String"]>;
  seed?: Maybe<AgotCardSeed>;
  revealed: Scalars["Boolean"];
  attachmentIds?: Maybe<Array<Maybe<Scalars["Long"]>>>;
  duplicateIds?: Maybe<Array<Maybe<Scalars["Long"]>>>;
  power: Scalars["Int"];
  id: Scalars["Long"];
  kneeling: Scalars["Boolean"];
};

export enum AgotCardSeed {
  /**
   *
The Power of Wealth
Neutral.
When you announce The Power of Wealth
   * as your agenda, name 1 faction. You may include cards from that faction in
   * your draw deck and plot deck.Reduce the cost of the first in-faction card you
   * marshal or play each round by 1.Draft format only..
Valyrian
   * Draft Set.

   **/
  ThePowerOfWealthVds = "THE_POWER_OF_WEALTH_VDS",
  /**
   *
Protectors of the Realm (VDS)
Neutr


/*
 * UUID/GUID definition
 *
 * Copyright (C) 2010, Intel Corp.
 *	Huang Ying <ying.huang@intel.com>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License version
 * 2 as published by the Free Software Foundation;
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
#ifndef _LINUX_UUID_H_
#define _LINUX_UUID_H_

#include <uapi/linux/uuid.h>

static inline int uuid_le_cmp(const uuid_le u1, const uuid_le u2)
{
	return memcmp(&u1, &u2, sizeof(uuid_le));
}

static inline int uuid_be_cmp(const uuid_be u1, const uuid_be u2)
{
	return memcmp(&u1, &u2, sizeof(uuid_be));
}

extern void uuid_le_gen(uuid_le *u);
extern void uuid_be_gen(uuid_be *u);

#endif


与博士相遇，揭示了她与博士一同创造源石并探索宇宙的过去。
- 菱形符号：在源石内化宇宙中无处不在的符号，可能代表着源石或博士与普瑞赛斯的某种联系。
- 特蕾西娅与源石花圃：特蕾西娅曾试图在卡兹戴尔附近利用源石创造花圃，象征和平共存的理想，但最终失败。
- 死魂灵的使命：寄宿在魂灵熔炉中的死魂灵，渴望焚尽萨卡兹的敌人和宿命，最终被特蕾西娅解放。
- 新名字维什戴尔：特蕾西娅给予W的新名字，寓意“许愿”与“家”，象征新的开始和希望。
- 感染者的花：特蕾西娅曾带阿米娅见过的一种花，阿米娅在感染者垂死时在他们手心画这朵花，象征着温柔和对生命的珍视。
## 关键人物
阿米娅;博士;凯尔希;Logos;W（维什戴尔）;赫德雷;伊内丝;推进之王（维娜）;号角;风笛;戴菲恩;萨卢斯;奎萨图什塔;孽茨雷;曼弗雷德;阿斯卡纶;闪灵;夜莺（丽兹）;玛嘉烈;查尔斯·林奇（蒸汽骑士）;“灰礼帽”（贝林厄姆）;开斯特公爵;高多汀公爵;威灵顿公爵;爱布拉娜;九;塔露拉;喀利喀;普瑞赛斯;特蕾西娅;杜卡雷（意识残留）;明椒;娜汀;费斯特;洛洛;可露希尔;海蒂;陈
## 角色剧情概括
-   **[阿米娅](../char_v3/char_002_amiya.md)([v1](../chars/char_002_amiya.md))**：作为新的“魔王”继承者，在本次活动中领导罗德岛小队深入战场，试图阻止“阿喃那”。她展现出仁慈和包容，收留了受血魔影响的萨卡兹佣兵。在源石内化宇宙中，她与特蕾西娅进行意志上的对决，理解了特蕾西娅的理想和牺牲，最终接受了魔王的力量，并帮助众人逃离源石内部。她对博士过去的行为感到困惑，但最终选择相信现在的博士。在飞


	if self._signal._handlerListHead == self then
		self._signal._handlerListHead = self._next
	else
		local prev = self._signal._handlerListHead
		while prev and prev._next ~= self do
			prev = prev._next
		end
		if prev then
			prev._next = self._next
		end
	end
end

Connection.Destroy = Connection.Disconnect

-- Make Connection strict
setmetatable(Connection, {
	__index = function(_tb, key)
		error(("Attempt to get Connection::%s (not a valid member)"):format(tostring(key)), 2)
	end,
	__newindex = function(_tb, key, _value)
		error(("Attempt to set Connection::%s (not a valid member)"):format(tostring(key)), 2)
	end,
})

local Signal = {}
Signal.__index = Signal

function Signal.new()
	local self = setmetatable({
		_handlerListHead = false,
		_proxyHandler = nil,
	}, Signal)
	return self
end

function Signal.Is(obj)
	return type(obj) == "table" and getmetatable(obj) == Signal
end

function Signal:Connect(fn)
	local connection = Connection.new(self, fn)
	if self._handlerListHead then
		connection._next = self._handlerListHead
		self._handlerListHead = connection
	else
		self._handlerListHead = connection
	end
	return connection
end

function Signal:DisconnectAll()
	local item = self._handlerListHead
	while item do
		item.Connected = false
		item = item._next
	end
	self._handlerListHead = false
end

function Signal:Fire(...)
	local item = self._handlerListHead
	while item do
		task.defer(item._fn, ...)
		item = item._next
	end
end

function Signal:Wait()
	local waitingCoroutine = coroutine.running()
	local cn
	cn = self:Connect(function(...)
		cn:Disconnect()
		task.spawn(waitingCoroutine, ...)
	end)
	return coroutine.yield()
end

-- Make signal strict
setmetatable(Signal, {
	__index = function(_tb, key)
		error(("Attempt to get Signal::%s (not a valid member)"):format(tostring(key)), 2)
	end,
	__newindex = function(_tb, key, _value)
		error(("Attempt to set Signal::%s (not a valid member)"):format(tostring(key)), 2)
	end,
})

return Signal


石深渊里运出来的。这就是我们需要你帮忙的原因，$N。$B$B你的第一件任务是到燃烧平原去，从那里的石头傀儡身上收集一些元素碎片。一旦你收集到足够数量的碎片之后就回到我这里来，我会鉴定它们的来源。",
    ["O"] = "到燃烧平原去为圣职者塞朵拉·穆瓦丹尼收集10块断裂的元素碎片。$b$b塞多拉曾经说过，那里的机械傀儡和元素生物是这种碎片的主要来源。",
    ["T"] = "机器的崛起",
  },
  [4062] = {
    ["D"] = "G。L。A。$B$B那些碎片上刻着这样的文字。在这些大写字母下面有一个军衔标志。你在燃烧平原所摧毁的机器的等级是四，我相信这是个比较低的军衔。$B$B把这块碎片样品交给东边一处营地里的鲁特维尔·沃拉图斯吧，他是个著名的元素学者，应该能对我们的研究有所帮助。",
    ["O"] = "将元素碎片样本交给鲁特维尔·沃拉图斯。$B$B塞多拉说鲁特维尔就在东边的一处营地里。",
    ["T"] = "机器的崛起",
  },
  [4082] = {
    ["D"] = "根据卡加斯探险队的指挥官高图斯大人的命令：$B$B侦查分队的首领雷克斯洛特—加龙省—加龙省带回了关于高阶黑铁军官行踪的情报。他们在戒备森严的城市中心地带训练部队，准备对付我们。到黑石深渊去消灭他们！$B$B完成这个任务将可获得丰厚的奖励。",
    ["O"] = "到黑石深渊去消灭那些邪恶的侵略者！$B$B高图斯军阀要你杀死10个铁怒医师，、10个铁怒士兵和10个铁怒军官。完成任务之后回去向他复命。",
    ["T"] = "格杀勿论：高阶黑铁军官",
  },
  [4083] = {
    ["D"] = "鬼魂之杯飘在空中，缓慢的时起时落……就像一个濒死的心脏。",
    ["O"] = "把这些找到的宝石放入鬼魂之杯",
    ["T"] = "鬼魂之杯",
  },
  [4105] = {
    ["D"] = "There be something other than demons on my mind, mon. My tribe, my own people. Lost to the madness of bad, very bad voodoo. One day the Loa be seeking our Speaker in his slumber. The Loa asked for strong mojo to be made, the Mojo of Dreams.$B$BA mojo that strong needed blessed water, blessed by the Dragons. So I be finding my way to the big green portal. There I found the demons and dirtied my hands


py of the license in this archive (see LICENSE).
 *
 * Copyright Nikolai Kudashov, 2013-2018.
 */

package org.telegram.ui.Cells;

import android.content.Context;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.FrameLayout;
import android.widget.TextView;

import org.telegram.messenger.AndroidUtilities;
import org.telegram.messenger.LocaleController;
import org.telegram.ui.ActionBar.Theme;
import org.telegram.ui.Components.LayoutHelper;
import org.telegram.ui.Components.RadioButton;

public class RadioColorCell extends FrameLayout {

    private TextView textView;
    private RadioButton radioButton;
    private final Theme.ResourcesProvider resourcesProvider;

    public RadioColorCell(Context context) {
        this(context, null);
    }

    public RadioColorCell(Context context, Theme.ResourcesProvider resourcesProvider) {
        super(context);
        this.resourcesProvider = resourcesProvider;

        radioButton = new RadioButton(context);
        radioButton.setSize(AndroidUtilities.dp(20));
        radioButton.setColor(getThemedColor(Theme.key_dialogRadioBackground), getThemedColor(Theme.key_dialogRadioBackgroundChecked));
        addView(radioButton, LayoutHelper.createFrame(22, 22, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, (LocaleController.isRTL ? 0 : 18), 14, (LocaleController.isRTL ? 18 : 0), 0));

        textView = new TextView(context);
        textView.setTextColor(getThemedColor(Theme.key_dialogTextBlack));
        textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
        textView.setLines(1);
        textView.setMaxLines(1);
        textView.setSingleLine(true);
        textView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL);
        addView(textView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, (LocaleController.isRTL ? 21 : 51), 13, (LocaleController.isRTL ? 51 : 21), 0));
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(50), MeasureSpec.EXACTLY));
    }

    public void setCheckColor(int color1, int color2) {
        radioButton.setColor(color1, color2);
    }

    public void setTextAndValue(String text, boolean checked) {
        textView.setText(text);
        radioButton.setChecked(checked, false);
    }

    public void setChecked(boolean checked, boolean animated) {
        radioButton.setChecked(checked, animated);
    }

    @Override
    public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
        super.onInitializeAccessibilityNodeInfo(info);
        info.setClassName("android.widget.RadioButton");
        info.setCheckable(true);
        info.setChecked(radioButton.isChecked());
    }

    private int getThemedColor(String key) {
        Integer color = resourcesProvider != null ? resourcesProvider.getColor(key) : null;
        return color != null ? color : Theme.getColor(key);
    }
}
/*
 * This is the source code of Telegram for Android v. 5.x.x.
 * It is licensed under GNU GPL v. 2 or later.
 * You should have received a copy of the license in this archive (see LICENSE).
 *
 * Copyright Nikolai Kudashov, 2013-2018.
 */


shape_tuple_for_cython_arr
#define __pyx_n_s_H __pyx_mstate_global->__pyx_n_s_H
#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0
#define __pyx_n_s_IndexError __pyx_mstate_global->__pyx_n_s_IndexError
#define __pyx_kp_s_Index_out_of_bounds_axis_d __pyx_mstate_global->__pyx_kp_s_Index_out_of_bounds_axis_d
#define __pyx_kp_s_Indirect_dimensions_not_supporte __pyx_mstate_global->__pyx_kp_s_Indirect_dimensions_not_supporte
#define __pyx_kp_u_Invalid_mode_expected_c_or_fortr __pyx_mstate_global->__pyx_kp_u_Invalid_mode_expected_c_or_fortr
#define __pyx_kp_u_Invalid_shape_in_axis __pyx_mstate_global->__pyx_kp_u_Invalid_shape_in_axis
#define __pyx_n_s_K __pyx_mstate_global->__pyx_n_s_K
#define __pyx_n_s_MemoryError __pyx_mstate_global->__pyx_n_s_MemoryError
#define __pyx_kp_s_MemoryView_of_r_at_0x_x __pyx_mstate_global->__pyx_kp_s_MemoryView_of_r_at_0x_x
#define __pyx_kp_s_MemoryView_of_r_object __pyx_mstate_global->__pyx_kp_s_MemoryView_of_r_object
#define __pyx_n_s_N __pyx_mstate_global->__pyx_n_s_N
#define __pyx_n_b_O __pyx_mstate_global->__pyx_n_b_O
#define __pyx_kp_u_Out_of_bounds_on_buffer_access_a __pyx_mstate_global->__pyx_kp_u_Out_of_bounds_on_buffer_access_a
#define __pyx_n_s_PickleError __pyx_mstate_global->__pyx_n_s_PickleError
#define __pyx_n_s_R __pyx_mstate_global->__pyx_n_s_R
#define __pyx_n_s_Sequence __pyx_mstate_global->__pyx_n_s_Sequence
#define __pyx_kp_s_Step_may_not_be_zero_axis_d __pyx_mstate_global->__pyx_kp_s_Step_may_not_be_zero_axis_d
#define __pyx_n_s_TypeError __pyx_mstate_global->__pyx_n_s_TypeError
#define __pyx_kp_s_Unable_to_convert_item_to_object __pyx_mstate_global->__pyx_kp_s_Unable_to_convert_item_to_object
#define __pyx_n_s_ValueError __pyx_mstate_global->__pyx_n_s_ValueError
#define __pyx_n_s_View_MemoryView __pyx_mstate_global->__pyx_n_s_View_MemoryView
#define __pyx_kp_u__2 __pyx_mstate_global->__pyx_kp_u__2
#define __pyx_n_s__28 __pyx_mstate_global->__pyx_n_s__28
#define __pyx_n_s__3 __pyx_mstate_global->__pyx_n_s__3
#define __pyx_kp_u__6 __pyx_mstate_global->__pyx_kp_u__6
#define __pyx_kp_u__7 __pyx_mstate_global->__pyx_kp_u__7
#define __pyx_n_s_abc __pyx_m


var dictCount = dict.Count;
			var dictParams = new Dictionary<string, (object, Type)>(dictCount, StringComparer.Ordinal);

			string currentKey, currentKeyBracketed, paramName;

			var sbSql = new StringBuilder(";WITH S(");
			var sbParams = new StringBuilder();
			var sbInsertColumns = new StringBuilder();
			var sbInsertValues = new StringBuilder();
			var sbUpdateSql = new StringBuilder();

			int i = 0, insertColumnCount = 0, updateColumnCount = 0;

			foreach (var kvp in dict)
			{
				currentKey = kvp.Key;
				currentKeyBracketed = "[" + currentKey + "]";
				if (i++ != 0)
				{
					sbSql.Append(',');
					sbParams.Append(',');
				}

				sbSql.Append(currentKeyBracketed);
				paramName = "@#" + currentKey;
				sbParams.Append(paramName);
				dictParams.Add(paramName, kvp.Value);

				if (excludedInsertProperties == null || !excludedInsertProperties(currentKey))
				{
					if (insertColumnCount++ > 0)
					{
						sbInsertColumns.Append(',');
						sbInsertValues.Append(',')


/******************************************************************************
 *
 * Copyright(c) 2007 - 2017 Realtek Corporation.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of version 2 of the GNU General Public License as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 *
 *****************************************************************************/
#ifndef __DRV_TYPES_GSPI_H__
#define __DRV_TYPES_GSPI_H__

/* SPI Header Files */
#ifdef PLATFORM_LINUX
	#include <linux/platform_device.h>
	#include <linux/spi/spi.h>
	#include <linux/gpio.h>
	/* #include <mach/ldo.h> */
	#include <asm/mach-types.h>
	#include <asm/gpio.h>
	#include <asm/io.h>
	#include <mach/board.h>
	#include <mach/hardware.h>
	#include <mach/irqs.h>
	#include <custom_gpio.h>
#endif

typedef struct gspi_data {
	u8  func_number;

	u8  tx_block_mode;
	u8  rx_block_mode;
	u32 block_transfer_len;

#ifdef PLATFORM_LINUX
	struct spi_device *func;

	struct workqueue_struct *priv_wq;
	struct delayed_work irq_work;
#endif
} GSPI_DATA, *PGSPI_DATA;

#endif /*  #ifndef __DRV_TYPES_GSPI_H__ */


->mIsShowLinkPoint = isSelected();
	}
}

void DAAbstractNodeGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent* event)
{
	DAGraphicsResizeableItem::mouseReleaseEvent(event);
	if (isResizing()) {
		return;
	}
	if (LinkPointShowOnSelect == d_ptr->mLinkPointShowType) {
		d_ptr->mIsShowLinkPoint = isSelected();
	}
}

void DAAbstractNodeGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent* event)
{
	if (getLinkPointShowType() == LinkPointShowOnHover) {
		if (!d_ptr->mIsShowLinkPoint) {
			d_ptr->mIsShowLinkPoint = true;
			// 刷新
			update();
		}
	}
	DAGraphicsResizeableItem::hoverEnterEvent(event);
}

void DAAbstractNodeGraphicsItem::hoverMoveEvent(QGraphicsSceneHoverEvent* event)
{
	DAGraphicsResizeableItem::hoverMoveEvent(event);
}

void DAAbstractNodeGraphicsItem::hoverLeaveEvent(QGraphicsSceneHoverEvent* event)
{
	if (getLinkPointShowType() == LinkPointShowOnHover) {
		d_ptr->mIsShowLinkPoint = false;
		// 刷新
		update();
	}
	DAGraphicsResizeableItem::hoverLeaveEvent(event);
}

/**
 * @brief
 * 此函数在DAAbstractNodeLinkGraphicsItem的attachedTo/From过程中调用
 * @param item
 * @param pl
 * @return 如果返回false，说明记录不成功，已经有相同的连接了
 */
bool DAAbstractNodeGraphicsItem::recordLinkInfo(DAAbstractNodeLinkGraphicsItem* link, const DANodeLinkPoint& pl)
{
	for (DAAbstractNodeGraphicsItem::PrivateData::LinkInfo& ld : d_ptr->mLinkInfos) {
		if (ld.point.isEqualWayName(pl)) {
			ld.linkitems.append(link);
			return (true);
		}
	}
	// 下面永远不会达到
	// 没有找到，就查看node有没有
	if (rawNode()->getInputKeys().contains(pl.name) && pl.way == DANodeLinkPoint::Input) {
		// 存在input
		// 说明没有插入这个点
		DAAbstractNodeGraphicsItem::PrivateData::LinkInfo& li = d_ptr->addLinkPoint(pl);
		li.linkitems.append(link);
		return true;
	}
	if (rawNode()->getOutputKeys().contains(pl.name) && pl.way == DANodeLinkPoint::Output) {
		// 存在output
		// 说明没有插入这个点
		DAAbstractNodeGraphicsItem::PrivateData::LinkInfo& li = d_ptr->addLinkPoint(pl);
		li.linkitems.append(link);
		return true;
	}
	qDebug() << "can not record linked info";
	return false;
}

/**
 * @brief 连接的link在销毁时调用，把item记录的link信息消除
 * @param item
 * @param pl
 * @return
 */
bool DAAbstractNodeGraphicsItem::removeLinkInfo(DAAbstractNodeLinkGraphicsItem* link, const DANodeLinkPoint& pl)
{
	for (DAAbstractNodeGraphicsItem::PrivateData::LinkInfo& ld : d_ptr->mLinkInfos) {
		if (ld.point.isEqualWayName(pl)) {
			return ld.linkitems.re


}{${i3.join("")}}`;
        t2.rules.global.apply(o2);
      }
      return n2;
    };
    return s(i2, { get name() {
      return i2();
    }, toString: i2 });
  });
  var G = class {
    constructor(e2, t2, r2, n2) {
      this.token = null == e2 ? "" : String(e2), this.value = null == t2 ? "" : String(t2), this.scale = null == r2 ? "" : String(r2), this.prefix = null == n2 ? "" : String(n2);
    }
    get computedValue() {
      return "var(" + this.variable + ")";
    }
    get variable() {
      return "--" + S(this.prefix) + S(this.scale) + this.token;
    }
    toString() {
      return this.computedValue;
    }
  };
  var F = o();
  var J = (e2, t2) => F(e2, () => (r2, n2) => {
    n2 = "object" == typeof r2 && r2 || Object(n2);
    const i2 = `.${r2 = (r2 = "string" == typeof r2 ? r2 : "") || `${S(e2.prefix)}t-${z(n2)}`}`, o2 = {}, l2 = [];
    for (const t3 in n2) {
      o2[t3] = {};
      for (const r3 in n2[t3]) {
        const i3 = `--${S(e2.prefix)}${t3}-${r3}`, s3 = k(String(n2[t3][r3]), e2.prefix, t3);
        o2[t3][r3] = new G(r3, s3, t3, e2.prefix), l2.push(`${i3}:${s3}`);
      }
    }
    const s2 = () => {
      if (l2.length && !t2.rules.themed.cache.has(r2)) {
        t2.rules.themed.cache.add(r2);
        const i3 = `${n2 === e2.theme ? ":root," : ""}.${r2}{${l2.join(";")}}`;
        t2.rules.themed.apply(i3);
      }
      return r2;
    };
    return { ...o2, get className() {
      return s2();
    }, selector: i2, toString: s2 };
  });
  var U = o();
  var Y = o();
  var q = (e2) => {
    const t2 = ((e3) => {
      let t3 = false;
      const r2 = U(e3, (e4) => {
        t3 = true;
        const r3 = "prefix" in (e4 = "object" == typeof e4 && e4 || {}) ? String(e4.prefix) : "", i2 = "object" == typeof e4.media && e4.media || {}, o2 = "object" == typeof e4.root ? e4.root || null : globalThis.document || null, l2 = "object" == typeof e4.theme && e4.theme || {}, s2 = { prefix: r3, media: i2, theme: l2, themeMap: "object" == typeof e4.themeMap && e4.themeMap || { ...n }, utils: "object" == typeof e4.utils && e4.utils || {} }, a2 = E(o2), c2 = { css: M(s2, a2), globalCss: D(s2, a2), keyframes: V(s2, a2), createTheme: J(s2, a2), reset() {
          a2.reset(), c2.theme.toString();
        }, theme: {}, sheet: a2, config: s2, prefix: r3, getCssText: a2.toString, toString: a2.toString };
        return String(c2.theme = c2.createTheme(l2)), c2;


fCountedProducer`：是引用计数生产者的结构体，它维护了生产者的引用计数和生产者本身的功能。

函数：
1. `newCCBalancerWrapper`：创建一个连接管理器（ClientConnBalancer）的包装器，用于维护连接管理器的生命周期。
2. `updateClientConnState`：用于更新连接管理器的状态。
3. `updateSubConnState`：用于更新子连接的状态。
4. `resolverError`：用于通知连接管理器出现解析错误。
5. `switchTo`：用于切换连接管理器的模式。
6. `buildLoadBalancingPolicy`：用于构建负载均衡策略。
7. `close`：用于关闭包装器。
8. `enterIdleMode`：将连接管理器设置为空闲模式。
9. `closeBalancer`：关闭负载均衡器。
10. `exitIdleMode`：将连接管理器从空闲模式切换为活跃模式。
11. `isIdleOrClosed`：判断连接管理器是否处于空闲或关闭状态。
12. `NewSubConn`：创建一个新的子连接。
13. `RemoveSubConn`：移除子连接。
14. `UpdateAddresses`：更新连接管理器的地址列表。
15. `UpdateState`：更新连接管理器的状态。
16. `ResolveNow`：立即执行解析操作。
17. `Target`：表示连接目标的字符串类型。
18. `String`：返回连接目标的字符串表示。
19. `Connect`：用于建立连接。
20. `Shutdown`：关闭连接。
21. `NewStream`：创建一个新的gRPC流。
22. `Invoke`：调用gRPC方法。
23. `GetOrBuildProducer`：获取或构建生产者。

以上是对`balancer_conn_wrappers.go`文件中结构体和函数的详细介绍。这些结构体和函数为gRPC连接的负载均衡器和连接管理器提供了管理和控制的功能。

# File: alertmanager/nflog/nflog.go

文件 nflog.go 是 alertmanager 项目中用于处理日志的文件，其主要作用是定义了与日志相关的函数、结构体和变量。

- ErrNotFound 变量表示未找到错误，用于表示查找操作未找到任何结果的情况。
- ErrInvalidState 变量表示无效状态错误，用于表示状态无效的情况。

以下是其他几个结构体和它们的作用：
- query 结构体定义了查询的参数和结果。
- QueryParam 结构体定义了查询参数的详细信息。
- Log 结构体定义了日志的内容和级别。
- MaintenanceFunc 结构体定义了维护功能的函数。
- metrics 结构体定义了指标数据。
- state 结构体定�


			dev_err(&z->dev, "Error creating sysfs files\n");
	}

	/* Mark all available Zorro II memory */
	zorro_for_each_dev(z) {
		if (z->rom.er_Type & ERTF_MEMLIST)
			mark_region(zorro_resource_start(z),
				    zorro_resource_end(z)+1, 1);
	}

	/* Unmark all used Zorro II memory */
	for (i = 0; i < m68k_num_memory; i++)
		if (m68k_memory[i].addr < 16*1024*1024)
			mark_region(m68k_memory[i].addr,
				    m68k_memory[i].addr+m68k_memory[i].size,
				    0);

	return 0;
}

static struct platform_driver amiga_zorro_driver = {
	.driver   = {
		.name	= "amiga-zorro",
		.owner	= THIS_MODULE,
	},
};

static int __init amiga_zorro_init(void)
{
	return platform_driver_probe(&amiga_zorro_driver, amiga_zorro_probe);
}

module_init(amiga_zorro_init);

MODULE_LICENSE("GPL");


: background-image-settings-markdown-page-white-and-black
      -
        label: Kawaii
        value: background-image-settings-markdown-page-kawaii
  -
    id: background-image-settings-markdown-page-random
    title: Random background
    title.zh: 随机背景
    description: Images will be refreshed when Obsidian launches; nInternet connection required
    description.zh: 图片在Obsidian打开时刷新；需要联网
    type: class-toggle
    default: false
  -
    id: background-image-settings-markdown-page-random-options
    title: Random image with a certain color
    title.zh: 特定颜色的随机背景
    type: class-select
    allowEmpty: false
    default: background-image-settings-markdown-page-random-default
    options:
      -
        label: None
        value: background-image-settings-markdown-page-random-default
      -
        label: Blue
        value: background-image-settings-markdown-page-random-blue
      -
        label: Green
        value: background-image-settings-markdown-page-random-green
      -
        label: Pink
        value: background-image-settings-markdown-page-random-pink
      -
        label: Purple
        value: background-image-settings-markdown-page-random-purple
      -
        label: Red
        value: background-image-settings-markdown-page-random-red
      -
        label: Yellow and Orange
        value: background-image-settings-markdown-page-random-yellow-and-orange
  -
    id: background-settings-command-palette
    title: 1.2.3 Images of Command Palette
    title.zh: 1.2.3 命令面板背景
    type: heading
    level: 3
    collapsed: true
  -
    id: background-image-settings-command-palette-switch
    title: Remove Images of Command Palette
    title.zh: 移除命令面板背景
    type: class-toggle
    default: false
  -
    id: background-image-settings-command-palette-same-as-workplace
    title: Consistent with Workplace Background Image
    title.zh: 与工作页面背景保持一致
    type: class-toggle
    default: false
  -
    id: background-image-settings-command-palette-custom
    title: Custom Background Image
    title.zh: 自定义图片
    type: class-toggle
    default: false
  -
    id: background-command-palette-theme-light-custom
    title: Custom Theme light (url)
    description: Customise the background image. Use the format in the Default below for an Online image. Use the following format to point to a local file - url("app://local/D:/Documents/Pictures/Unsplash/UnsplashTemp.jpg").
    description.zh: 需在上方选项种选择Custom，以自定义背景。使用Default内格式设置网络图片。使用以下格式设置本地图片  url("app://local/D:/Documents/Pictures/Unsplash/UnsplashTemp.jpg")
    type: variable-text
    default: url("https://")
  -
    id: background-command-palette-theme-dark-custom
    title: Custom Theme Dark (url)
    description: Customise the background image. Use the format in the Default below for an Online image. Use the following format to point to a local file - url("app://l


My Shopping Cart (6 items)

			<form method="post">

Items in cart

							Image
							Name
							Details
							Quantity
							Total
							Action

							Delores Mug

Product ID: BV98765432

Color: White

									<svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true">
										<circle cx="16" cy="16" r="15.5" fill-opacity="0" />
										<path d="M9.99887 14.864H21.9989V16.76H9.99887V14.864Z" stroke-width="0" />
									</svg>
									<input type="number" min="1" value="4" aria-label="Quantity" required>
									<svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true">
										<circle cx="16" cy="16" r="15.5" fill-opacity="0" />
										<path d="M10.4986 14.864H15.0346V9.92H16.9546V14.864H21.4906V16.76H16.9546V21.728H15.0346V16.76H10.4986V14.864Z" stroke-width="0" />
									</svg>

							$64.00
							Remove

							Delores Hat

Product ID: BV12345678

Color: Black

									<svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true">
										<circle cx="16" cy="16" r="15.5" fill-opacity="0" />
										<path d="M9.99887 14.864H21.9989V16.76H9.99887V14.864Z" stroke-width="0" />
									</svg>
									<input type="number" min="1" value="1" aria-label="Quantity" required>
									<svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true">
										<circle cx="16" cy="16" r="15.5" fill-opacity="0" />
										<path d="M10.4986 14.


import pickle
import numpy as np
import matplotlib.pyplot as plt

# Load the saved Recorder object from the file
file_path = '/home/tian/emato/emato/data/acc/truck_HWFET_flat_NLP_1.16_14.51_38.91_gd_True_ptime_5.pkl'
with open(file_path, 'rb') as file:
    recorder = pickle.load(file)['recorder']

# Extract the time (Tt), leading car velocity (Tvl), and ego car velocity (Tve)
Tt = np.array(recorder.Tt)
Tvl = np.array(recorder.Tvl)
Tve = np.array(recorder.Tve)

# Plot the velocities of the leading car and ego car over time
plt.figure(figsize=(10, 6))

plt.plot(Tt, Tvl, label='Leading Car Velocity', linewidth=2)
plt.plot(Tt, Tve, label='Ego Car Velocity', linewidth=2)

# Setting Times New Roman font for labels and title
plt.title('Vehicle Velocities over Time', fontname='Times New Roman', fontsize=16)
plt.xlabel('Time [s]', fontname='Times New Roman', fontsize=14)
plt.ylabel('Velocity [m/s]', fontname='Times New Roman', fontsize=14)

# Setting Times New Roman font for ticks
plt.xticks(fontname='Times New Roman', fontsize=12)
plt.yticks(fontname='Times New Roman', fontsize=12)

plt.legend(loc='best', fontsize=12)
plt.grid(True)
plt.tight_layout()

plt.show()


"""empty message

Revision ID: e7511c6ea2f0
Revises: 83ede3ac8a37
Create Date: 2024-07-27 19:26:54.114732

"""
from alembic import op
import sqlalchemy as sa

# revision identifiers, used by Alembic.
revision = 'e7511c6ea2f0'
down_revision = '83ede3ac8a37'
branch_labels = None
depends_on = None

def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.create_table('spoons',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.Column('spoons', sa.Integer(), nullable=False),
    sa.Column('date', sa.String(length=20), nullable=True),
    sa.Column('user_id', sa.Integer(), nullable=False),
    sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
    sa.PrimaryKeyConstraint('id')
    )
    with op.batch_alter_table('users', schema=None) as batch_op:
        batch_op.drop_column('spoons')

    # ### end Alembic commands ###

def downgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    with op.batch_alter_table('users', schema=None) as batch_op:
        batch_op.add_column(sa.Column('spoons', sa.INTEGER(), autoincrement=False, nullable=False))

    op.drop_table('spoons')
    # ### end Alembic commands ###


  double flaeche = laenge * breite;
  return flaeche;
}

// Methode, die den Umfang eines Rechtecks berechnet
double berechneUmfang(double laenge, double breite) {
  double umfang = 2 * (laenge + breite);
  return umfang;
}

// Methode, die den Durchschnitt einer Notenliste berechnet
double berechneDurchschnitt(List<double> noten) {
  double summe = 0;
  for (int i = 0; i < noten.length; i = i + 1) {
    summe = summe + noten[i];
  }
  double durchschnitt = summe / noten.length;
  return durchschnitt;
}

// Methode, die eine Note bewertet
String bewerteNote(double note) {
  if (note <= 1.5) {
    return "Sehr gut";
  } else if (note <= 2.5) {
    return "Gut";
  } else if (note <= 3.5) {
    return "Befriedigend";
  } else {
    return "Verbesserungswürdig";
  }
}

// Methode, die einen Wochentag zurückgibt
String holeWochentag(int tag) {
  if (tag == 1) {
    return "Montag";
  } else if (tag == 2) {
    return "Dienstag";
  } else if (tag == 3) {
    return "Mittwoch";
  } else if (tag == 4) {
    return "Donnerstag";
  } else if (tag == 5) {
    return "Freitag";
  } else if (tag == 6) {
    return "Samstag";
  } else if (tag == 7) {
    return "Sonntag";
  } else {
    return "Ungültiger Tag";
  }
}

// Methode, die prüft, ob eine Zahl eine Primzahl ist
bool pruefePrimzahl(int zahl) {
  if (zahl < 2) {
    return false;
  }

  for (int i = 2; i < zahl; i = i + 1) {
    if (zahl % i == 0) {
      return false;
    }
  }

  return true;
}

/*
 * ÜBUNGEN:
 * Erstelle eine Methode, die dein Alter in Tagen berechnet und zurückgibt
 * Schreibe eine Methode, die prüft, ob eine Zahl gerade ist und true/false zurückgibt
 */
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:todo/firebase_options.dart';
import 'package:todo/injection.dart' as di;
import 'package:todo/presentation/routes/router.dart';
// Old: import 'package:todo/presentation/routes/router.gr.dart' as r;
import 'package:todo/theme.dart';

import 'application/auth/authbloc/auth_bloc.dart';
import 'injection.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
  await di.init();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  final _appRouter = AppRouter(); // OLD : r.AppRouter();

  MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MultiBlocProvider(
      providers: [
        BlocProvider(
          create: (context) => sl<AuthBloc>()..add(AuthCheckRequestedEvent


hover{margin-left:2px;transform:scale(1.2)}
.snarkFileName .newtab:active{transform:scale(.9)}
.snarkFileName .newtab{background:url(/i2psnark/.res/icons/link.svg) no-repeat center center/16px!important}
.snarkFileName .newtab a,tr:hover .snarkFileName .newtab a:hover,tr:hover .snarkFileName .newtab a:active{font-size:0;border:none!important;box-shadow:none!important;background:none!important}
.snarkFileName a:hover+.newtab{margin-left:2px}
#textview{width:100%;height:100%;height:100vh;display:flex;justify-content:center;align-items:center;position:fixed;top:0;left:0;z-index:9999999;overflow:hidden;background:#000d;backdrop-filter:blur(3px);cursor:crosshair}
#textview-content{padding:38px 24px 22px;height:auto;max-height:80%;width:auto;max-width:80%;position:relative;line-height:1.5;white-space:pre-wrap;overflow-x:hidden;overflow-y:auto;word-break:break-all;font-family:var(--monospaced);font-size:100%;font-weight:500;color:#333;box-shadow:0 0 0 10px #ddd,0 0 0 1px #000,0 0 0 1px #999 inset;background:#fff;cursor:text;scrollbar-color:#999 #0000;animation:fade .15s ease .2s both;will-change:transform}
#textview-content.pre{word-break:break-all;white-space:pre-wrap}
#textview-content.lines{margin:-20px -24px -22px;contain:paint}
#textview[hidden]{display:none;z-index:-1;pointer-events:none}
#viewerFilename{margin-left:-24px;padding:0 0 8px;width:100%;position:absolute;top:0;font-family:var(--bodyfont);font-size:700;border-bottom:1px solid #999;background:#ddd}
#viewerFilename img{margin-right:5px;width:16px;vertical-align:middle}
#textview-content ol{margin:-18px -23px 8px 24px;padding:29px 0 0}
#textview-content li::marker{content:counter(list-item) "  ";counter-increment:list-item}
#textview-content li:nth-child(odd){background:#0001}
:root{
--pause:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Crect width='16' height='64' x='9' fill='%23fff' ry='2'/%3E%3Crect width='16' height='64' x='39' fill='%23fff' ry='2'/%3E%3C/svg%3E");
--pause_hover:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Crect width='16' height='64' x='9' fill='%23f60' ry='2'/%3E%3Crect width='16' height='64' x='39' fill='%23f60' ry='2'/%3E%3C/svg%3E");
--play:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cpath fill='%23fff' d='M6.5 62.5v-61a1.4 1.5 0 0 1 2-1.3l48.3 30.5a1.4 1.5 0 0 1 0 2.6L8.5 63.8a1.4 1.5 0 0 1-2-1.3Z' paint-order='marke


out;
}

.gh-whats-new .kg-button-card a.kg-btn:hover {
    opacity: 0.85;
}

.gh-whats-new .kg-button-card a.kg-btn-accent {
    background-color: var(--accent-color);
    color: #fff;
}

.gh-whats-new .kg-callout-card {
    display: flex;
    padding: 1.2em 1.6em;
    border-radius: 3px;
}

.gh-whats-new .kg-callout-card-grey {
    background: rgba(124, 139, 154, 0.13);
}

.gh-whats-new .kg-callout-card-white {
    background: transparent;
    box-shadow: inset 0 0 0 1px rgba(124, 139, 154, 0.25);
}

.gh-whats-new .kg-callout-card-blue {
    background: rgba(33, 172, 232, 0.12);
}

.gh-whats-new .kg-callout-card-green {
    background: rgba(52, 183, 67, 0.12);
}

.gh-whats-new .kg-callout-card-yellow {
    background: rgba(240, 165, 15, 0.13);
}

.gh-whats-new .kg-callout-card-red {
    background: rgba(209, 46, 46, 0.11);
}

.gh-whats-new .kg-callout-card-pink {
    background: rgba(225, 71, 174, 0.11);
}

.gh-whats-new .kg-callout-card-purple {
    background: rgba(135, 85, 236, 0.12);
}

.gh-whats-new .kg-callout-card-accent {
    background: var(--ghost-accent-color);
    color: #fff;
}

.gh-whats-new .kg-callout-card-accent a {
    color: #fff;
}

.gh-whats-new .kg-callout-card div.kg-callout-emoji {
    padding-right: .8em;
    line-height: 1.25em;
    font-size: 1.15em;
}

.gh-whats-new .kg-callout-card div.kg-callout-text {
    font-size: .95em;
    line-height: 1.5em;
}

.gh-whats-new .kg-callout-card + .kg-callout-card {
    margin-top: 1em;
}

.gh-whats-new .kg-file-card {
    display: flex;
}

.gh-whats-new .kg-file-card a.kg-file-card-container {
    display: flex;
    align-items: center;
    justify-content: space-between;
    color: inherit;
    padding: 6px;
    min-height: 92px;
    border: 1px solid rgb(124 139 154 / 25%);
    border-radius: 3px;
    transition: all ease-in-out 0.35s;
    text-decoration: none;
    width: 100%;
}

.gh-whats-new .kg-file-card a.kg-file-card-container:hover {
    border: 1px solid rgb(124 139 154 / 35%);
}

.gh-whats-new .kg-file-card-contents {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    margin: 4px 8px;
}

.gh-whats-new .kg-file-card-title {
    font-size: 1.15em;
    font-weight: 700;
    line-height: 1.3em;
}

.gh-whats-new .kg-file-card-caption {
    font-size: 0.95em;
    line-height: 1.5em;
    opacity: 0.6;
}

.gh-whats-new .kg-file-card-metadata


interruptions when a session expires. The CLI or the Amazon
  /// Web Services SDKs use the bucket's default encryption configuration for
  /// the CreateSession request. It's not supported to override the
  /// encryption settings values in the CreateSession request. So
  /// in the Zonal endpoint API calls (except CopyObject
  /// and UploadPartCopy),
  /// the encryption request headers must match the default encryption
  /// configuration of the directory bucket.
  /// </note> <note>
  /// For directory buckets, when you perform a
  /// CreateMultipartUpload operation and an
  /// UploadPartCopy operation, the request headers you provide in
  /// the CreateMultipartUpload request must match the default
  /// encryption configuration of the destination bucket.
  /// </note>

  ///

HTTP Host header syntax

  /// Directory buckets  - The HTTP Host header syntax is
  /// Bucket_name.s3express-az_id.region.amazonaws.com.
  ///

  /// The following operations are related to
  /// CreateMultipartUpload:
  ///
  ///

  ///

  /// UploadPart
  ///

  ///

  /// CompleteMultipartUpload
  ///

  ///

  /// AbortMultipartUpload
  ///

  ///

  /// ListParts
  ///

  ///

  /// ListMultipartUploads
  ///

  ///

  ///
  /// Parameter [bucket] :
  /// The name of the bucket where the multipart upload is initiated and where
  /// the object is uploaded.
  ///
  /// Directory buckets - When you use this operation with a directory
  /// bucket, you must use virtual-hosted-style requests in the format
  /// Bucket_name.s3express-az_id.region.amazonaws.com.
  /// Path-style requests are not supported. Directory bucket names must be
  /// unique in the chosen Availability Zone. Bucket names must follow the
  /// format  bucket_base_name--az-id--x-s3 (for
  /// example,  DOC-EXAMPLE-BUCKET--usw2-az1--x-s3).
  /// For information about bucket naming restrictions, see Directory
  /// bucket naming rules in the Amazon S3 User Guide.
  ///
  /// Access points - When you use this action with an access point, you
  /// must provide the alias of the access point in place of the bucket name or
  /// specify the access


tributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.neo4j.ogm.session;

import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import org.junit.jupiter.api.Test;
import org.neo4j.driver.Driver;
import org.neo4j.ogm.config.Configuration;
import org.neo4j.ogm.domain.bike.Bike;
import org.neo4j.ogm.domain.blog.Author;
import org.neo4j.ogm.domain.pizza.Pizza;
import org.neo4j.ogm.driver.TypeSystem;
import org.neo4j.ogm.drivers.bolt.driver.BoltDriver;
import org.neo4j.ogm.testutil.TestContainersTestBase;

/**
 * @author Michael J. Simons
 * @author Gerrit Meier
 */
public class SessionFactoryTest extends TestContainersTestBase {

    @Test
    void shouldMergeBasePackages() {

        Configuration configuration = new Configuration.Builder()
            .withBasePackages(Bike.class.getPackage().getName())
            .uri("bolt://somewhere") // some bolt url to avoid embedded driver (and database) creation
            .build();

        SessionFactory sessionFactory = new SessionFactory(configuration, Author.class.getPackage().getName());
        assertThat(sessionFactory.metaData().classInfo(Bike.class)).isNotNull();
        assertThat(sessionFactory.metaData().classInfo(Author.class)).isNotNull();
        assertThat(sessionFactory.metaData().classInfo(Pizza.class)).isNull();
    }

    @Test
    void shouldUnwrapBoltDriver() {

        SessionFactory sessionFactory = new SessionFactory(getDriver(), Bike.class.getPackage().getName());

        // Neo4j-OGM Driver
        assertThat(sessionFactory.unwrap(BoltDriver.class))
            .isInstanceOf(BoltDriver.class);
        // Native driver
        assertThat(sessionFactory.unwrap(Driver.class))
            .isInstanceOf(Driver.class);

    }

    @Test
    void correctUseStrictQueryingSettingShouldBeApplied() {

        SessionFactory sessionFactory;

        sessionFactory = new SessionFactory(new Configuration.Builder().uri("bolt://something:7687").build(), "org.neo4j.ogm.domain.gh651");
        assertThat(sessionFactory.isUseStrictQuerying()).isTrue();

        sessionFactory = new SessionFactory(new Configuration.Builder().uri("bolt://something:7687").relaxedQuerying().build(), "org.neo4j.ogm.domain.gh651");
        assertThat(sessionFactory.isUseStrictQuerying()).isFalse();

        org.neo4j.ogm.driver.Driver mockedDriver = mock(org.neo4j.ogm.driver.Driver.class);
        when(mockedDriver.getTypeSystem()).thenReturn(TypeSystem.NoNativeTypes.INSTANCE);
        sessionFactory = new SessionFactory(mockedDriver, "org.neo4j.ogm.domain.gh651");
        assertThat(sessionFactory.isUseStrictQuerying()).isTrue();

        sessionFactory = new SessionFactory(mockedDriver, false, "org.neo4j.ogm.domain.gh651");
        assertThat(sessionFactory.isUseStrictQuerying()).isFalse();
    }
}
/*
 * Copyright (c) 2002-2025 "Neo4j,"
 * Neo4j Sweden AB [http://neo4j.com]
 *
 * This file is part of Neo4j.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on


ransactionBuilder.sign(0, changeKeyPair, undefined, Transaction.SIGHASH_ALL, originalAmount);

    // build tx
    const tx = transactionBuilder.build();
    // output rawhex
    const hex = tx.toHex();
    // console.log(`TX hex: ${hex}`)

    // Broadcast transation to the network
    const txidStr = await electrumx.broadcast(hex);

    console.log(`Transaction ID: ${txidStr}`);
    console.log('Check the status of your transaction on this block explorer:');
    CryptoUtil.transactionStatus(txidStr, NETWORK);
    return txidStr;
  } catch (err) {
    console.log('error: ', err);
    throw err;
  }
}
import { TweenBlock, FrameWithGrid, TweenBlockWithCoords } from "./typings";
import Globals from "../globals";
import { gridCopy } from "../utils";
import { getTimingFunction } from "../patterns/timingFunctions";

export default class TweenBlocks {
  prevBlocks: TweenBlock[][][]; // a list of tweenBlocks for each position
  newBlocks: { j: number, i: number, color: number, tweenBlock: TweenBlock }[];

  g: Globals
  constructor(globals: Globals) {
    this.g = globals;
    this.newBlocks = [];
    this.prevBlocks = [];
    for (let j = 0; j < this.g.nRows; j++) {
      const newRow2 = [] as TweenBlock[][];
      for (let i = 0; i < this.g.nCols; i++) {
        newRow2.push([{ start: 0, end: 0 }]); // initial 'tween blocks' just to start
      }
      this.prevBlocks.push(newRow2);
    }
  }

  clearAllBlocks = () => {
    this.clear();
    this.prevBlocks = [];
    for (let j = 0; j < this.g.nRows; j++) {
      const newRow2 = [] as TweenBlock[][];
      for (let i = 0; i < this.g.nCols; i++) {
        newRow2.push([{ start: 0, end: 0 }]); // initial 'tween blocks' just to start
      }
      this.prevBlocks.push(newRow2);
    }
  }

  clear = () => {
    this.newBlocks = [];
  }

  erasePastTweenBlocks = (tweenBlocks: TweenBlockWithCoords[]) => {
    tweenBlocks.forEach(tbwc => {
      const { i, j, start, end } = tbwc;
      this.prevBlocks[j][i] = this.prevBlocks[j][i].filter(tb =>
        !(tb.start === start && tb.end === end))
    })
  }

  removeTweenBlockAt = (j: number, i: number) => {
    this.newBlocks = this.newBlocks.filter(tb => !(tb.i === i && tb.j === j));
  }

  addTweenBlock = (j: number, i: number, color: number, tweenBlock: TweenBlock) => {
    this.removeTweenBlockAt(j, i);
    this.newBlocks.push({ i, j, color, tweenBlock })
  }

  // true if the animation will overlap with a tweenBlock in the given position
  checkForActiveTweens = (start: number, end: number, j: number, i: number) => {
    const tweenBlockList = this.prevBlocks[j][i];
    return tweenBlockList.some(tb => !(start >= tb.end || end <= tb.start));
  }

  // push all current tweenBlocks to their positions and start new
  stashTweenBlocks = () => {
    this.newBlocks.forEach(tb => {
      this.prevBlocks[tb.j][tb.i].push(tb.tweenBlock);
    })
    this.clear();
  }

  loadFromFrames = (frames: FrameWithGrid[]): number => {
    this.clearAllBlocks();
    const gridState = gridCopy(frames[0].grid);
    let elapsed = 0;
    frames.forEach(frame =>


/ detect sound BPM (and adjust processing parameters
        //  accordingly if necessary)
        detectBPM(*inFile, params);
    }

    // Setup the 'SoundTouch' object for processing the sound
    setup(soundTouch, *inFile, params);

    // clock_t cs = clock();    // for benchmarking processing duration
    // Process the sound
    if (inFile && outFile)
    {
        process(soundTouch, *inFile, *outFile);
    }
    // clock_t ce = clock();    // for benchmarking processing duration
    // printf("duration: %lf\n", (double)(ce-cs)/CLOCKS_PER_SEC);

    fprintf(stderr, "Done!\n");
}

}

#if _WIN32
int wmain(int argc, const wchar_t* args[])
#else
int main(int argc, const char* args[])
#endif
{
    try
    {
        soundstretch::printHelloText();
        soundstretch::RunParameters params(argc, args);
        soundstretch::ss_main(params);
    }
    catch (const runtime_error& e)
    {
        fprintf(stderr, "%s\n", e.what());
        return -1;
    }
    catch (const string& e)
    {
        fprintf(stderr, "%s\n", e.c_str());
        return -1;
    }
    return 0;
}
#include "audio.h"

#include <FAudioFX.h>

const char *audio_voice_type_names[3] =
{
	"Source Voice",
	"Submix Voice",
	"Mastering Voice"
};

const char *audio_reverb_preset_names[] =
{
	"Generic",
	"Padded Cell",
	"Room ",
	"Bathroom",
	"Livingroom",
	"Stone Room",
	"Auditorium",
	"Concert Hall",
	"Cave",
	"Arena",
	"Hangar",
	"Carpeted Hallway",
	"Hallway",
	"Stone Corridor",
	"Alley",
	"Forest",
	"City",
	"Mountains",
	"Quarry",
	"Plain",
	"Parking Lot",
	"Sewerpipe",
	"Underwater",
	"Small Room",
	"Medium Room",
	"Large Room",
	"Medium Hall",
	"Large Hall",
	"Plate",
};

// see xaudio2fx.h
const ReverbI3DL2Parameters audio_reverb_presets_i3dl2[] =
{
	{100, -1000, -100,0.0f, 1.49f,0.83f, -2602,0.007f,   200,0.011f,100.0f,100.0f,5000.0f},
	{100, -1000,-6000,0.0f, 0.17f,0.10f, -1204,0.001f,   207,0.002f,100.0f,100.0f,5000.0f},
	{100, -1000, -454,0.0f, 0.40f,0.83f, -1646,0.002f,    53,0.003f,100.0f,100.0f,5000.0f},
	{100, -1000,-1200,0.0f, 1.49f,0.54f,  -370,0.007f,  1030,0.011f,100.0f, 60.0f,5000.0f},
	{100, -1000,-6000,0.0f, 0.50f,0.10f, -1376,0.003f, -1104,0.004f,100.0f,100.0f,5000.0f},
	{100, -1000, -300,0.0f, 2.31f,0.64f,  -711,0.012f,    83,0.017f,100.0f,100.0f,5000.0f},
	{100, -1000, -476,0.0f, 4.32f,0.59f,  -789,0.020f,  -289,0.030f,100.0f,100.0f,5000.0f},
	{100, -1000, -500,0.0f, 3.92f,0.70f, -1230,0.020f,    -2,0.029f,100.0f,100.0f,5000.0f},
	{100, -1000,    0,0.0f, 2.91f,1.30f,  -602,0.015f,  -302,0.022f,100.0f,100.0f,5000.0f},
	{100, -1000, -698,0.0f, 7.24f,0.33f, -1166,0.020f,


                        }
                            Bg.pop();
                        }
                        function wAn(UAn) {
                            Bg.push(IFn);
                            UAn = UAn[nn.AI.apply(null, [PP, A7])]();
                            var SAn;
                            return SAn = -1 !== ["text", "search", "url", "email", "tel", "number"][nn.hs(LP, pQ, PQ)](UAn) ? 0 : "password" === UAn ? 1 : 2,
                            Bg.pop(),
                            SAn;
                        }
                        function DAn(GAn) {
                            Bg.push(j2);
                            var cAn;
                            if (cAn = null == GAn ? Fn[nn.qs(BH, Lj, WQ)][nn.wI.apply(null, [Lh(gQ), xP, nb])] : GAn,
                            null == Fn[nn.qs.apply(null, [BH, !gQ, WQ])][nn.wI(BQ, xP, nb)]) {
                                var WAn;
                                return WAn = -1,
                                Bg.pop(),
                                WAn;
                            }
                            var VAn = cAn[nn.Hn.apply(null, [q7, Jm, kg, HQ])]("name");
                            if (null == VAn) {
                                var YAn = cAn[nn.Hn.call(null, q7, Jm, Ag, HQ)]("id");
                                var RAn;
                                return RAn = null == YAn ? -1 : Kp(AE, [xln, UQ, YAn]),
                                Bg.pop(),
                                RAn;
                            }
                            var vAn;
                            return vAn = Kp(AE, [xln, UQ, VAn]),
                            Bg.pop(),
                            vAn;
                        }
                        function QAn(gAn, pAn) {
                            Bg.push(dB);
                            var BAn = "string" == typeof gAn && gAn[nn.Cs.apply(null, [qh, kV])] > 0;
                            var jAn = !Fn[nn.XI(mQ, b2, zL, OZ)](pAn) && (-1 === Fn[nn.UI(Lj, Nb, Mx)](pAn) || function zAn() {
                                Bg.push(z2);
                                var HAn;
                                return HAn = Fn[nn.JK(gQ, dV, Qj)][nn.OK(fb, !![], Zj)] && "number" == typeof Fn[nn.JK.apply(null, [!gQ, dV, Qj])][nn.OK(fb, hg, Zj)]() ? Fn[nn.FI.apply(null, [qQ, cW, Sg, qQ])][nn.SI(NFn, gM, Hj, !gQ)](Fn[nn.JK(Zg, dV, Qj)][nn.OK(fb, !gQ, Zj)]() / 1e3) : Fn[nn.FI.apply(null, [qQ, cW, dg, ZQ])][nn.SI(NFn, gM, !gQ, Ab)](+new Fn[nn.JK(!!{}, dV, Qj)]() / 1e3),
                                Bg.pop(),
                                HAn;
                            }() < Fn[nn.UI(Og, Nb, Mx)](pAn));
                            if (!BAn || !jAn) {
                                var MAn;
                                return MAn = !1,
                                Bg.pop(),
                                MAn;
                            }
                            var hAn;
                            return hAn = -1 !== gAn[nn.DI.call(null, IM, EV, fg)]("^([a-fA-F0-9]{31,32})$"),
                            Bg.pop(),
                            hAn;
                        }
                        function bAn() {
                            Bg.push(H2);
                            var mAn;
                            void 0 !== Fn[nn.mK.call(null, qQ, LP)][nn.GI.apply(null, [C


ins many times before %s. However lately there have been more and more attacks on our homeland with every attack being that much more brutal and savage then the attack before. I need a brave halfling who is willing to [seek retribution] on these goblins and show them who is boss once and for all.", e.other:GetCleanName()));
	elseif(e.message:findi("seek retribution")) then
		e.self:Say(string.format("I knew I could count on you young %s. As each day goes by more and more bloodthirsty orcs set up camp in the thicket. They are working together with the goblins of Runnyeye through some twisted alliance brought forth by Lord Pickclaw to mount an attack on Rivervale. I strongly feel that this attack may be more then we can handle. If we are able to find out how they plan to


var newExent = child?.geometry?.scrollExtent;
    if (newExent == null || _oldExtent == newExent) {
      return;
    }

    _oldExtent = newExent;
    WidgetsBinding.instance.addPostFrameCallback((_) => onChange(newExent));
  }

  final void Function(double) onChange;

  double? _oldExtent;
}
import 'package:flutter/material.dart';
import 'package:logging/logging.dart';
import 'package:nc_photos/app_localizations.dart';
import 'package:nc_photos/help_utils.dart' as help_util;
import 'package:nc_photos/url_launcher_util.dart';
import 'package:np_log/np_log.dart';
import 'package:np_ui/np_ui.dart';

part 'changelog.g.dart';
part 'changelog/changelog_550.dart';
part 'changelog/changelog_560.dart';
part 'changelog/changelog_570.dart';
part 'changelog/changelog_580.dart';
part 'changelog/changelog_590.dart';
part 'changelog/changelog_600.dart';
part 'changelog/changelog_610.dart';
part 'changelog/changelog_630.dart';
part 'changelog/changelog_640.dart';
part 'changelog/changelog_650.dart';
part 'changelog/changelog_660.dart';
part 'changelog/changelog_662.dart';
part 'changelog/changelog_663.dart';
part 'changelog/changelog_670.dart';
part 'changelog/changelog_680.dart';
part 'changelog/changelog_690.dart';
part 'changelog/changelog_700.dart';
part 'changelog/changelog_710.dart';
part 'changelog/changelog_720.dart';
part 'changelog/changelog_730.dart';
part 'changelog/changelog_740.dart';
part 'changelog/changelog_750.dart';
part 'changelog/changelog_760.dart';
part 'changelog/changelog_770.dart';
part 'changelog/changelog_780.dart';
part 'changelog/changelog_782.dart';
part 'changelog/changelog_790.dart';

class ChangelogArguments {
  const ChangelogArguments(this.fromVersion);

  final int fromVersion;
}

@npLog
class Changelog extends StatelessWidget {
  static const routeName = "/changelog";

  static Route buildRoute(ChangelogArguments args, RouteSettings settings) =>
      MaterialPageRoute(
        builder: (context) => Changelog.fromArgs(args),
        settings: settings,
      );

  static bool hasContent(int fromVersion) =>
      _changelogs.keys.first > fromVersion;

  const Changelog({super.key, this.fromVersion});

  Changelog.fromArgs(ChangelogArguments args, {Key? key})
    : this(key: key, fromVersion: args.fromVersion);

  @override
  build(BuildContext context) => Scaffold(
    appBar: _buildAppBar(),
    body: Builder(builder: (context) => _buildContent(context)),
  );

  AppBar _buildAppBar() =>
      AppBar(title: Text(L10n.global().changelogTitle), elevation: 0);

  Widget _buildContent(BuildContext context) {
    return Column(
      children: [
        Expanded(
          child: ListView.builder(
            itemCount: _changelogs.length,
            itemBuilder: _buildItem,
          ),
        ),
      ],
    );
  }

  Widget _buildItem(BuildContext context, int i) {
    try {
      final version = _changelogs.keys.elementAt(i);
      final String title;
      if (version >


/*
Copyright (c) 2018-2023 Festo SE & Co. KG <https://www.festo.com/net/de_de/Forms/web/contact_international>
Author: Michael Hoffmeister

This source code is licensed under the Apache License 2.0 (see LICENSE.txt).

This source code may use other Open Source software components (see LICENSE.txt).
*/

using AdminShellNS;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Aas = AasCore.Aas3_0;

namespace AnyUi
{
    public enum AnyUiMessageBoxImage
    {
        None = 0,
        Hand = 16,
        Stop = 16,
        Error = 16,
        Question = 32,
        Exclamation = 48,
        Warning = 48,
        Asterisk = 64,
        Information = 64
    }

    public enum AnyUiMessageBoxResult
    {
        None = 0,
        OK = 1,
        Cancel = 2,
        Yes = 6,
        No = 7,
        // Extra buttons to be specified by the user
        Extra0 = 0x100,
        Extra1 = 0x101,
        Extra2 = 0x102,
        Extra3 = 0x103
    }

    public enum AnyUiMessageBoxButton
    {
        OK = 0,
        OKCancel = 1,
        YesNoCancel = 3,
        YesNo = 4,
        Nothing = 5,
    }

    /// <summary>
    /// This action can be used to pass minimal information/ errors/ questions from a
    /// called functionality back to the calling function.
    /// </summary>
    /// <param name="error">True, if an error condition is met.</param>
    /// <param name="message">Message string</param>
    /// <returns>On of AnyUiMessageBoxResult</returns>
    public delegate Task<AnyUiMessageBoxResult> AnyUiMinimalInvokeMessageDelegate(bool error, string message);

    public class AnyUiDialogueDataBase
    {
        // flags
        public bool HasModalSpecialOperation = false;

        // In
        public string Caption;
        public double? MaxWidth;

        // Out
        public bool Result;

        public AnyUiDialogueDataBase(string caption = "", double? maxWidth = null)
        {
            this.Caption = caption;
            this.MaxWidth = maxWidth;
        }
    }

    public class AnyUiDialogueDataEmpty : AnyUiDialogueDataBase
    {
        public string Message = "Waiting for user dialogue.";

        public AnyUiDialogueDataEmpty(
            string caption = "",
            double? maxWidth = null,
            string message = null)
            : base(caption, maxWidth)
        {
            if (message != null)
                this.Message = message;
        }
    }

    public class AnyUiDialogueDataMessageBox : AnyUiDialogueDataEmpty
    {
        public AnyUiMessageBoxButton Buttons = AnyUiMessageBoxButton.OKCancel;
        public AnyUiMessageBoxImage Image = AnyUiMessageBoxImage.None;
        public AnyUiMessageBoxResult ResultButton = AnyUiMessageBoxResult.None;

        public AnyUiDialogueDataMessageBox(
            string caption = "",
            string message = "",
            AnyUiMessageBoxButton buttons = AnyUiMessageBoxButton.OKCancel,
            AnyUiMessageBoxImage image = AnyUiMessageBoxImage.None,
            double? maxWidth = null)
            : base(caption, maxWidth, message)
        {
            Buttons = buttons;
            Image = image;
        }
    }

    public class AnyUiDialogueDataOpenFile : AnyUiDialogueDataEmpty
    {
        /// <summary>
        /// Original file name. <c>TargetFileName</c> might be altered,
        /// when made available by upload or similar.
        /// </summary>
        public string OriginalFileName;

        /// <summary>
        /// Filename, under which the file is (at least temporarily) available)
        /// </summary>
        public string TargetFileName;

        /// <summary>
        /// The <c>Filter</c> string can be decomposed in single items.
        /// </summary>
		public class FilterItem
        {
            public string Name;
            public string Pattern;
        }

        /// <summary>


from nets.mobilenet import MobileNet
from nets.resnet50 import ResNet50
from nets.vgg16 import VGG16

if __name__ == "__main__":
    model = MobileNet([224, 224, 3], classes=1000)
    model.summary()

    for i,layer in enumerate(model.layers):
        print(i,layer.name)


.syntax unified
.arm
.section .text

.extern errno

@ int mount(char *fspec, char *freg, int ronly)
@  0 on success, -1 on error
.global mount
.type mount,%function
mount:
    push    {fp, lr}                                   @ set up our stack frame
    add     fp, sp, #0                                 @ adjust the frame pointer
    push    {r2}                                       @ ronly
    push    {r1}                                       @ freg
    push    {r0}                                       @ fspec
    mov     lr, sp                                     @ pointer to indirect args is kept in lr
    swi     #21                                        @ 21 is mount


d)
	self.path = path
	return self
end

function Led:sysfs_write(attr, val)
	local path = self.path..'/'..attr
	local f = io.open(path, 'w')
	if not f then
		log('failed to open %s', path)
		return
	end
	f:write(val)
	f:close()
end

function Led:set_mode(mode)
	log('%s mode %s', self.path, mode)
	if mode == 'on' or mode == 'off' then
		self:sysfs_write('trigger', 'none')
		if mode == 'off' then
			self:sysfs_write('brightness', '0')
		else
			self:sysfs_write('brightness', '255')
		end
	elseif mode == 'blink-fast' or mode == 'blink-slow' or mode == 'blink-slooow' then
		local time_on, time_off = 50, 950
		if mode == 'blink-fast' then
			time_off = 50
		elseif mode == 'blink-slooow' then
			time_on = 1000
			time_off = 1000
		end
		self:sysfs_write('trigger', 'timer')
		self:sysfs_write('delay_on', tostring(time_on))
		self:sysfs_write('delay_off', tostring(time_off))
	else
		log('bad led mode %s', mode)
		return
	end
end

-- CGMiner class
function CGMinerStatus.new(response)
	local self = setmetatable({}, CGMinerStatus)
	local json = response and CJSON.decode(response)
	self.chains = {}
	for _, dev in ipairs(json.devs[1].DEVS) do
		local chain = {
			mhs_cur = tonumber(dev["MHS 5s"]) or 0,
			mhs_nom = tonumber(dev["nominal MHS"]) or 0,
			mhs_max = tonumber(dev["maximal MHS"]) or 0,
		}
		push(self.chains, chain)
	end
	self.pools = json.pools[1].POOLS
	return self
end

-- Monitor class
function Monitor.new(red_led, green_led, model)
	local self = setmetatable({}, Monitor)
	self.last_time = 0
	self.state = ''
	self.led_override = false
	self.red_led = red_led
	self.green_led = green_led
	self.model = model
	self:set_state('dead', 'initialization')
	return self
end

function Monitor:sample_time()
	local time_diff = get_uptime() - self.last_time
	return math.abs(time_diff) >= SAMPLE_TIME
end

-- check if miner is running
function Monitor:check_healthy(status)
	local active_chains = 0
	local active_pools = 0
	local sick_chains = 0
	for i, chain in ipairs(status.chains) do
		if chain.mhs_nom > 0 then
			--log("chain %d health %f", i, chain.mhs_cur/chain.mhs_nom * 100)
			active_chains = active_chains + 1
			if chain.mhs_cur < chain.mhs_nom * MINIMAL_RATE / 100 then
				sick_chains = sick_chains + 1
			end
		end
	end
	for i, pool in ipairs(status.pools) do
		if pool.Status == 'Alive' then
			active_pools = active_pools + 1
		end
	end
	--log("alive_pools=%d alive_chains=%d sick_chains=%d",
		--active_pools, active_chains, sick_chains)
	if active_pools == 0 then
		return 'dead', 'no active pools'
	end
	if active_chains == 0 then
		return 'dead', 'no active chains'
	end
	if sick_chains > 0 then
		return 'sick', 'low hashrate'
	end
	return 'ok'
end

local state_to_red_led = {
	dead = 'on',
	sick = 'bl


p(0x043a,0)
p(0x043b,0)
p(0x043c,0)
p(0x043d,8)
p(0x043e,-1)
p(0x043f,25)
p(0x0440,10)
p(0x0441,4)
p(0x0442,8)
p(0x0443,8,"selectskill",{2,6})
p(0x0444,-1)
p(0x0445,10)
p(0x0446,14)
p(0x0447,2,"blockplaycancel",0)
p(0x0448,-1)
p(0x0449,4)
p(0x044a,6,"clienttimestamp",2)
p(0x044b,2)

p(0x07d0,6)
p(0x07d1,2)
p(0x07d2,-1)
p(0x07d3,4)
p(0x07d4,4)
p(0x07d5,4)
p(0x07d6,4)
p(0x07d7,8,"partychangeoption2",{2,6})
p(0x07d8,8)
p(0x07d9,254)
p(0x07da,6,"partychangeleader",2)
p(0x07db,8)
p(0x07dc,6)
p(0x07dd,54)
p(0x07de,30)
p(0x07df,54)
p(0x07e0,58)
p(0x07e1,15)
p(0x07e2,8)
p(0x07e3,6)
p(0x07e4,-1,"convertitem",{2,4,8,12})
p(0x07e5,8)
p(0x07e6,8)
p(0x07e7,32)
p(0x07e8,-1)
p(0x07e9,5)
p(0x07ea,2)
p(0x07eb,-1)
p(0x07ec,8)
p(0x07ed,10)
p(0x07ee,6)
p(0x07ef,8)
p(0x07f0,8)
p(0x07f1,15)
p(0x07f2,6)
p(0x07f3,4)
p(0x07f4,3)
p(0x07f5,6,"gmfullstrip",2)
p(0x07f6,14)
p(0x07f7,-1)
p(0x07f8,-1)
p(0x07f9,-1)
p(0x07fa,8)
p(0x07fb,25)
p(0x07fc,10)
p(0x07fd,-1)
p(0x07fe,26)
p(0x07ff,-1)
p(0x0800,-1)
p(0x0801,-1,"purchasereq2",{2,4,8,12})
p(0x0802,18,"bookingregreq",{2,4,6,8,10,12,14,16})
p(0x0803,4)
p(0x0804,14,"bookingsearchreq",{2,4,6,8,12})
p(0x0805,-1)
p(0x0806,2,"bookingdelreq",0)
p(0x0807,4)
p(0x0808,14,"bookingupdatereq",{2,4,6,8,10,12})
p(0x0809,50)
p(0x080a,18)
p(0x080b,6)
p(0x080c,6)
p(0x080d,3)
p(0x080e,14)
p(0x080f,20)
p(0x0810,3)
p(0x0


 dinfo.identity)
	{
		ui.twtIdentity->setRowCount(row+1);
		ui.twtIdentity->setItem(row,0,new QTableWidgetItem(identity.category));
		ui.twtIdentity->setItem(row,1,new QTableWidgetItem(identity.type));
		ui.twtIdentity->setItem(row,2,new QTableWidgetItem(identity.name));
		row++;
	}
	ui.twtIdentity->verticalHeader()->resizeSections(QHeaderView::ResizeToContents);

	std::sort(dinfo.features.begin(), dinfo.features.end());
	ui.lwtFearures->clear();
	foreach(const QString &featureVar, dinfo.features)
	{
		IDiscoFeature dfeature = FDiscovery->discoFeature(featureVar);
		dfeature.var = featureVar;
		QListWidgetItem *listItem = new QListWidgetItem;
		listItem->setIcon(dfeature.icon);
		listItem->setText(dfeature.name.isEmpty() ? dfeature.var : dfeature.name);
		if (FDiscovery->hasFeatureHandler(featureVar))
		{
			QFont font = ui.lwtFearures->font();
			font.setBold(true);
			listItem->setData(Qt::FontRole,font);
		}
		listItem->setData(Qt::UserRole,dfeature.var);
		listItem->setData(Qt::UserRole+1,dfeature.description);
		ui.lwtFearures->addItem(listItem);
	}
	onCurrentFeatureChanged(ui.lwtFearures->currentItem(), NULL);

	if (FDataForms)
	{
		if (FFormMenu)
		{
			FFormMenu->deleteLater();
			FFormMenu = NULL;
		}
		if (!dinfo.extensions.isEmpty())
		{
			FFormMenu = new Menu(ui.pbtExtensions);
			for (int index=0; index<dinfo.extensions.count(); index++)
			{
				IDataForm form = FDataForms->localizeForm(dinfo.extensions.at(index));
				Action *action = new Action(FFormMenu);
				action->setData(ADR_FORM_INDEX,index);
				action->setText(!form.title.isEmpty() ? form.title : FDataForms->fieldValue("FORM_TYPE",form.fields).toString());
				connect(action,SIGNAL(triggered(bool)),SLOT(onShowExtensionForm(bool)));
				FFormMenu->addAction(action);
			}
		}
		ui.pbtExtensions->setMenu(FFormMenu);
		ui.pbtExtensions->setEnabled(FFormMenu!=NULL);
	}

	if (!dinfo.error.isNull())
	{
		ui.lblError->setText(tr("Error: %1").arg(dinfo.error.errorMessage()));
		ui.twtIdentity->setEnabled(false);
		ui.lwtFearures->setEnabled(false);
		ui.lblError->setVisible(true);
	}
	else
	{
		ui.twtIdentity->setEnabled(true);
		ui.lwtFearures->setEnabled(true);
		ui.lblError->setVisible(false);
	}

	ui.twtIdentity->horizontalHeader()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
	ui.twtIdentity->horizontalHeader()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
	ui.twtIdentity->horizontalHeader()->setSectionResizeMode(2,QHeaderView::Stretch);

	ui.pbtUpdate->setEnabled(true);
}

void DiscoInfoWindow::requestDiscoInfo()
{
	if (FDiscovery->requestDiscoInfo(FStreamJid,FContactJid,FNode))
		ui.pbtUpdate->setEnabled(false);
}

void DiscoInfoWindow::onDiscoInfoReceived(const IDiscoInfo &ADiscoInfo)
{
	if (ADiscoInfo.contactJid == FContactJid)
		updateWindow();
}

void Disco


# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"). You
# may not use this file except in compliance with the License. A copy of
# the License is located at
#
#     http://aws.amazon.com/apache2.0/
#
# or in the "license" file accompanying this file. This file is
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
# ANY KIND, either express or implied. See the License for the specific
# language governing permissions and limitations under the License.

from typing import Any

import braket.ir.jaqcd as ir

from braket.circuits.compiler_directive import CompilerDirective
from braket.circuits.serialization import IRType, SerializationProperties
from braket.registers.qubit_set import QubitSet

class StartVerbatimBox(CompilerDirective):
    """Prevents the compiler from modifying any ensuing instructions
    until the appearance of a corresponding ``EndVerbatimBox``.
    """

    def __init__(self):
        super().__init__(["StartVerbatim"])

    def counterpart(self) -> CompilerDirective:
        return EndVerbatimBox()

    @property
    def requires_physical_qubits(self) -> bool:
        return True

    def _to_jaqcd(self, *args, **kwargs) -> Any:
        return ir.StartVerbatimBox.construct()

    def _to_openqasm(self) -> str:
        return "#pragma braket verbatim\nbox{"

class EndVerbatimBox(CompilerDirective):
    """Marks the end of a portion of code following a StartVerbatimBox that prevents the enclosed
    instructions from being modified by the compiler.
    """

    def __init__(self):
        super().__init__(["EndVerbatim"])

    def counterpart(self) -> CompilerDirective:
        return StartVerbatimBox()

    @property
    def requires_physical_qubits(self) -> bool:
        return True

    def _to_jaqcd(self, *args, **kwargs) -> Any:
        return ir.EndVerbatimBox.construct()

    def _to_openqasm(self) -> str:
        return "}"

class Barrier(CompilerDirective):
    """Barrier compiler directive."""

    def __init__(self, qubit_indices: list[int]):
        super().__init__(["||"])
        self._qubit_indices = qubit_indices

    @property
    def qubit_indices(self) -> list[int]:
        return self._qubit_indices

    @property
    def qubit_count(self) -> int:
        return len(self._qubit_indices)

    def _to_jaqcd(self) -> Any:
        raise NotImplementedError("Barrier is not supported in JAQCD")

    def to_ir(
        self,
        target: QubitSet | None,
        ir_type: IRType,
        serialization_properties: SerializationProperties | None = None,
        **kwargs,
    ) -> Any:
        if ir_type.name == "OPENQASM":
            if target:
                qubits = ", ".join(serialization_properties.format_target(int(q)) for q in target)
                return f"barrier {qubits};"
            return "barrier;"
        return super().to_ir(target, ir_type, serialization_properties, **kwargs)


ownloadURLs = []string{
			"https://github.com/rhasspy/piper/releases/download/2023.11.14-2/piper_windows_amd64.zip",
		}
		fileName = "piper_windows_amd64.zip"
	case "darwin":
		if runtime.GOARCH == "arm64" {
			downloadURLs = []string{
				"https://raw.githubusercontent.com/pmbstyle/Alice/main/assets/binaries/piper-macos-arm64",
				"https://github.com/rhasspy/piper/releases/download/2023.11.14-2/piper_macos_aarch64.tar.gz",
			}
			fileName = "piper-macos-arm64"
		} else {
			downloadURLs = []string{
				"https://github.com/rhasspy/piper/releases/download/2023.11.14-2/piper_macos_x64.tar.gz",
			}
			fileName = "piper_macos_x64.tar.gz"
		}
	case "linux":
		if runtime.GOARCH == "arm64" {
			downloadURLs = []string{
				"https://github.com/rhasspy/piper/releases/download/2023.11.14-2/piper_linux_aarch64.tar.gz",
			}
			fileName = "piper_linux_aarch64.tar.gz"
		} else if runtime.GOARCH == "arm" {
			downloadURLs = []string{
				"https://github.com/rhasspy/piper/releases/download/2023.11.14-2/piper_linux_armv7l.tar.gz",
			}
			fileName = "piper_linux_armv7l.tar.gz"
		} else {
			downloadURLs = []string{
				"https://github.com/rhasspy/piper/releases/download/2023.11.14-2/piper_linux_x86_64.tar.gz",
			}
			fileName = "piper_linux_x86_64.tar.gz"
		}
	default:
		return fmt.Errorf("unsupported platform: %s", runtime.GOOS)
	}

	log.Printf("Downloading Piper binary for %s/%s", runtime.GOOS, runtime.GOARCH)
	downloadPath := filepath.Join("bin", fileName)
	var lastErr error
	for i, downloadURL := range downloadURLs {
		log.Printf("Attempting Piper download from source %d/%d: %s", i+1, len(downloadURLs), downloadURL)
		if err := s.downloadFileWithRetry(downloadURL, downloadPath, 2); err != nil {
			lastErr = err
			log.Printf("Piper download source %d failed: %v", i+1, err)
			continue
		}
		log.Printf("Piper download successful from source %d", i+1)
		break
	}
	if _, err := os.Stat(downloadPath); err != nil {
		return fmt.Errorf("failed to download Piper binary from any source: %w", lastErr)
	}

	if runtime.GOOS == "darwin" && runtime.GOARCH == "arm64" && fileName == "piper-macos-arm64" {
		targetPath := filepath.Join("bin", "piper")
		if err := os.Rename(downloadPath, targetPath); err != nil {
			return fmt.Errorf("failed to move binary: %w", err)
		}
		if err := os.Chmod(targetPath, 0755); err != nil {
			return fmt.Errorf("failed to make binary executable: %w", err)
		}
		log.Printf("Direct Piper binary installed: %s", targetPath)
	} else {
		defer os.Remove(downloadPath)
		if err := s.extractPiperBinary(downloadPath); err != nil {
			return fmt.Errorf("failed to extract binary: %w", err)
		}
	}

	log.Printf("Piper binary installed successfully")
	return nil
}

func (s *TTSService) downloadFile(url, filepath string) error {
	client := &http.Client{
		Timeout: 5 * time.Minute,


ndow here.
    // depend on DV_AlterEffect forcing in DROPEFFECT_MOVE and only
    // dropeffect move when drag in same window

    // Notes: We need to use this->grfKeyState instead of grfKeyState
    //  to see if the left mouse was used or not during dragging.
    DV_AlterEffect(pdv, this->grfKeyState, pdwEffect, DVAE_BEFORE | DVAE_AFTER);

    if ((this->grfKeyState & MK_LBUTTON) && (*pdwEffect == DROPEFFECT_MOVE) && (DV_IsDropOnSource(pdv, NULL))) {
        // This means we are left-dropping on ourselves, so we just move
        // the icons.
        DAD_DragLeave();

        pdv->_SameViewMoveIcons();

        SetForegroundWindow(pdv->_hwndMain);

        ASSERT(pdv->_bDropAnchor == FALSE);

        *pdwEffect = 0;  // the underlying objects didn't 'move' anywhere

        if (this->pdtgtCur) {
            this->pdtgtCur->DragLeave();
            this->pdtgtCur->Release();
            this->pdtgtCur = NULL;
        }
    } else if (this->pdtgtCur) {
        // use this local because if pdtgtCur::Drop does a UnlockWindow
        // then hits an error and needs to put up a dialog,
        // we could get re-entered and clobber the defview's pdtgtCur
        IDropTarget *pdtgtCur = this->pdtgtCur;
        this->pdtgtCur = NULL;

        // HACK ALERT!!!!

        //  If we don't call LVUtil_DragEnd here, we'll be able to leave
        // dragged icons visible when the menu is displayed. However, because
        // we are calling IDropTarget::Drop() which may create some modeless
        // dialog box or something, we can not ensure the locked state of
        // the list view -- LockWindowUpdate() can lock only one window at
        // a time. Therefore, we skip this call only if the pdtgtCur
        // is a subclass of CIDLDropTarget, assuming its Drop calls
        // CDefView::DragEnd (or CIDLDropTarget_DragDropMenu) appropriately.
        pdv->_bDropAnchor = TRUE;

        if (!DoesDropTargetSupportDAD(pdtgtCur)) {
            // This will hide the dragged image.
            DAD_DragLeave();

            //  We need to reset the drag image list so that the user
            // can start another drag&drop while we are in this
            // Drop() member function call.
            DAD_SetDragImage(NULL, NULL);
        }

        // Special case if we are dragging within a source window
        DV_AlterEffect(pdv, grfKeyState, pdwEffect, DVAE_BEFORE | DVAE_AFTER);

        IUnknown_SetSite(pdtgtCur, SAFECAST(pdv, IShellView2*));
        pdtgtCur->Drop(pdtobj, grfKeyState, pt, pdwEffect);
        IUnknown_SetSite(pdtgtCur, NULL);
        pdtgtCur->Release();
        DAD_DragLeave();
        pdv->_bDropAnchor = FALSE;
        ASSERT(!DAD_IsDragging());
    } else {
        // We come here if Drop is called without DragMove (with DragEnter).
        TraceMsg(TF_DEFVIEW, "CDV::Drop this->pdtgtCur == 0");
        *pdwEffect = 0;
    }

    DragLeave();    // DoDragDrop does not call DragLeave() after Drop()

    return S_OK;
}

// HACK ALERT!!! (see CDVDropTarget::Drop as well)

//  All the subclasses of CIDLDropTarget MUST call this function from
// within its Drop() member function. Calling CIDLDropTarget_DragDropMenu()
// is sufficient


-20.8 2.8v30.7c3 0 9.5-1.1 9.5 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v144h29.5v-25.8c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7z"],
    "phabricator": [496, 512, [], "f3db", "M323 262.1l-.1-13s21.7-19.8 21.1-21.2l-9.5-20c-.6-1.4-29.5-.5-29.5-.5l-9.4-9.3s.2-28.5-1.2-29.1l-20.1-9.2c-1.4-.6-20.7 21-20.7 21l-13.1-.2s-20.5-21.4-21.9-20.8l-20 8.3c-1.4.5.2 28.9.2 28.9l-9.1 9.1s-29.2-.9-29.7.4l-8.1 19.8c-.6 1.4 21 21 21 21l.1 12.9s-21.7 19.8-21.1 21.2l9.5 20c.6 1.4 29.5.5 29.5.5l9.4 9.3s-.2 31.8 1.2 32.3l20.1 8.3c1.4.6 20.7-23.5 20.7-23.5l13.1.2s20.5 23.8 21.8 23.3l20-7.5c1.4-.6-.2-32.1-.2-32.1l9.1-9.1s29.2.9 29.7-.5l8.1-19.8c.7-1.1-20.9-20.7-20.9-20.7zm-44.9-8.7c.7 17.1-12.8 31.6-30.1 32.4-17.3.8-32.1-12.5-32.8-29.6-.7-17.1 12.8-31.6 30.1-32.3 17.3-.8 32.1 12.5 32.8 29.5zm201.2-37.9l-97-97-.1.1c-75.1-73.3-195.4-72.8-269.8 1.6-50.9 51-27.8 27.9-95.7 95.3-22.3 22.3-22.3 58.7 0 81 69.9 69.4 46.4 46 97.4 97l.1-.1c75.1 73.3 195.4 72.9 269.8-1.6 51-50.9 27.9-27.9 95.3-95.3 22.3-22.3 22.3-58.7 0-81zM140.4 363.8c-59.6-59.5-59.6-156 0-215.5 59.5-59.6 156-59.5 215.6 0 59.5 59.5 59.6 156 0 215.6-59.6 59.5-156 59.4-215.6-.1z"],
    "ussunnah": [482, 512, [], "f407", "M481.9 268.1A240.9


// ImplicitSkippedMessageUpdate is the builder for updating ImplicitSkippedMessage entities.
type ImplicitSkippedMessageUpdate struct {
	config
	hooks    []Hook
	mutation *ImplicitSkippedMessageMutation
}

// Where appends a list predicates to the ImplicitSkippedMessageUpdate builder.
func (ismu *ImplicitSkippedMessageUpdate) Where(ps ...predicate.ImplicitSkippedMessage) *ImplicitSkippedMessageUpdate {
	ismu.mutation.Where(ps...)
	return ismu
}

// Mutation returns the ImplicitSkippedMessageMutation object of the builder.
func (ismu *ImplicitSkippedMessageUpdate) Mutation() *ImplicitSkippedMessageMutation {
	return ismu.mutation
}

// Save executes the query and returns the number of nodes affected by the update operation.
func (ismu *ImplicitSkippedMessageUpdate) Save(ctx context.Context) (int, error) {
	return withHooks(ctx, ismu.sqlSave, ismu.mutation, ismu.hooks)
}

// SaveX is like Save, but panics if an error occurs.
func (ismu *ImplicitSkippedMessageUpdate) SaveX(ctx context.Context) int {
	affected, err := ismu.Save(ctx)
	if err != nil {
		panic(err)
	}
	return affected
}

// Exec executes the query.
func (ismu *ImplicitSkippedMessageUpdate) Exec(ctx context.Context) error {
	_, err := ismu.Save(ctx)
	return err
}

// ExecX is like Exec, but panics if an error occurs.
func (ismu *ImplicitSkippedMessageUpdate) ExecX(ctx context.Context) {
	if err := ismu.Exec(ctx); err != nil {
		panic(err)
	}
}

func (ismu *ImplicitSkippedMessageUpdate) sqlSave(ctx context.Context) (n int, err error) {
	_spec := sqlgraph.NewUpdateSpec(implicitskippedmessage.Table, implicitskippedmessage.Columns, sqlgraph.NewFieldSpec(implicitskippedmessage.FieldID, field.TypeInt))
	if ps := ismu.mutation.predicates; len(ps) > 0 {
		_spec.Predicate = func(selector *sql.Selector) {
			for i := range ps {
				ps[i](selector)
			}
		}
	}
	if n, err = sqlgraph.UpdateNodes(ctx, ismu.driver, _spec); err != nil {
		if _, ok := err.(*sqlgraph.NotFoundError); ok {
			err = &NotFoundError{implicitskippedmessage.Label}
		} else if sqlgraph.IsConstraintError(err) {
			err = &ConstraintError{msg: err.Error(), wrap: err}
		}
		return 0, err
	}
	ismu.mutation.done = true
	return n, nil
}

// ImplicitSkippedMessageUpdateOne is the builder for updating a single ImplicitSkippedMessage entity.
type ImplicitSkippedMessageUpdateOne struct {
	config
	fields   []string
	hooks    []Hook
	mutation *ImplicitSkippedMessageMutation
}

// Mutation returns the ImplicitSkippedMessageMutation object of the builder.
func (ismuo *ImplicitSkippedMessageUpdateOne) Mutation() *ImplicitSkippedMessageMutation {
	return ismuo.mutation
}

// Where appends a list predicates to the ImplicitSkippedMessageUpdate builder.
func (ismuo *ImplicitSkippedMessageUpdateOne) Where(ps ...predicate.ImplicitSkippedMessage) *ImplicitSkippedMessageUpdateOne {
	ismuo.mutation.Where(ps...)
	return ismuo
}

// Select allows selecting one or more fields (columns) of the returned entity.
// The default is selecting


, r1
	bne     branch_21e04c4
	bl      ErrorHandling
.thumb
branch_21e04c4: @ 21e04c4 :thumb
	add     r0, r4, #0x1
	add     r1, sp, #0x10
	add     r2, sp, #0xc
	bl      Function_21e0b24
	add     r5, #0xb8
	ldr     r0, [r5, #0x0]
	add     r1, r4, #0x1
	cmp     r0, #0x0
	beq     branch_21e04de
	.hword  0x1e89 @ sub r1, r1, #0x2
	bpl     branch_21e04de
	.hword  0x1d09 @ add r1, r1, #0x4
.thumb
branch_21e04de: @ 21e04de :thumb
	ldr     r0, [sp, #0xc]
	mov     r2, #0x0
	str     r0, [sp, #0x0]
	ldr     r0, [sp, #0x28]
	str     r0, [sp, #0x4]
	str     r1, [sp, #0x8]
	ldr     r0, [r6, #0x0]
	ldr     r1, [r7, #0x4]
	ldr     r3, [sp, #0x10]
	bl      Function_21d1b4c
	mov     r1, #0x0
	mvn     r1, r1
	cmp     r0, r1
	bne     branch_21e0500
	bl      ErrorHandling
.thumb
branch_21e0500: @ 21e0500 :thumb
	add     sp, #0x14
	pop     {r4-r7,pc}
@ 0x21e0504

.thumb
Function_21e0504: @ 21e0504 :thumb
	push    {r4-r7,lr}
	add     sp, #-0x14
	ldr     r4, [sp, #0x2c]
	mov     r5, r0
	mov     r6, r1
	mov     r7, r2
	mov     r0, r4
	add     r1, sp, #0x10
	add     r2, sp, #0xc
	bl      Function_21e0b24
	mov     r0, r5
	add     r0, #0xb8
	ldr     r0, [r0, #0x0]
	cmp     r0, #0x0
	bne     branch_21e0528
	mov     r1, r4
	b       branch_21e052e
@ 0x21e0528

.thumb
branch_21e0528: @ 21e0528 :thumb
	.hword  0x1ea1 @ sub r1, r4, #0x2
	bpl     branch_21e052e
	.hword  0x1d09 @ add r1, r1, #0x4
.thumb
branch_21e052e: @ 21e052e :thumb
	ldr     r0, [sp, #0xc]
	mov     r2, #0x2
	str     r0, [sp, #0x0]
	ldr     r0, [sp, #0x28]
	str     r0, [sp, #0x4]
	str     r1, [sp, #0x8]
	ldr     r0, [r6, #0x0]
	ldr     r1, [r7, #0x4]
	ldr     r3, [sp, #0x10]
	bl      Function_21d1a78
	mov     r1, #0x0
	mvn     r1, r1
	cmp     r0, r1
	bne     branch_21e0550
	bl      ErrorHandling
.thumb
branch_21e0550:


t of one.)
      */
    private double limbLogLike(PopulationAndLineages pal) {
        double loglike = 0.0;
        int k = pal.t.length - 2;
        for (int i = 1; i <= k; i++) {
            loglike -= Math.log(pal.populationAt(pal.t[i]));
        }
        for (int i = 0; i <= k; i++) {
            final double y = (pal.tipnlin-i) * (pal.tipnlin-i-1) / 2 ;
            final double z = limbLinPopIntegral(pal, pal.t[i], pal.t[i+1]);
            loglike -= y * z;
        }
        if (Double.isNaN(loglike)) {
            System.out.println("BUG in limbLogLike");
        }
        return loglike;
    }

    // integral from t0 to t1 of (endt-begt)/((endt-x)begPop + (x-begt)endPop)
    // with respect to x
    private double limbLinPopIntegral(PopulationAndLineages b, double t0, double t1) {
        final double begt = b.t[0];
        final double endt = b.t[b.t.length-1];
        if (b.rootpop < 1E-20) {
            System.out.println("Underflow in limbLinPopIntegral()");
        }
        final double d = b.rootpop - b.tippop;
        final double c = endt * b.tippop - begt * b.rootpop;
        final double x = Math.abs(d / b.tippop);
        if (x > 0.001) {
            return ((endt - begt) / d) * Math.log((c + d * t1) / (c + d * t0));
        } else {
            double y = d * (t1 - t0) / (c + d * t0);
            double ys = (1.0 - y/2.0 + y*y * (1.0/3.0 - y/4.0 + y*y * (1.0/5.0 - y/6.0)));
            return ((endt - begt) * (t1 - t0) / (c + d * t0)) * ys;
        }
    }

    private static int union2spseqindex(FixedBitSet union) {
        assert union.cardinality() == 1;
        return union.nextOnBit(0);
    }

    /*
      * This is for ordering the unions in the nodes of the AlloppMulLabTree.
      * Those unions are of (species, sequence) pairs.
      *
      * The comparator sorts the unions of (species, sequence) pairs (SpSqUnions)
      * so that all unions containing the same set of species (ignoring sequence)
      * are grouped together. Call the sets of SpSqUnions for the same species a
      * `group'. There can be 1,2 or 3 SpSqUnions in a group.
      *
      * The groups are sorted in order of increasing number of species (clade size).
      * All groups for a single species (a tip in the network) come first, then
      * those groups for two species, and so on to the root for all species.
      * For groups that have equal numbers of species, a lexicographical
      * ordering using species indices is used.
      *
      * Within each group, species and sequence information is used to sort the 1 to 3
      * SpSqUnions. The size of the `clade' of (species, sequence) pairs is used
      * first in the comparison, which ensures that the three nodes with the same species
      * - corresponding to two roots of tetratrees in the AlloppMulLabTree plus a leg-join -
      * are ordered so that the two roots come first.
      *
      */

    static final Comparator<SpSqUnion> SPUNION_ORDER = new Comparator<SpSqUnion>() {
        public int compare(SpSqUnion a, SpSqUnion b) {
            int ac = a.spunion.cardinality();
            int bc = b.spunion


()
	--GEReqCheckEventNPCTarget?
	--EGAnsRegXMasGetPayItem(lpObj.aIndex, 1)
	return 1
end
------------------------------------------------------------------------------------------

--
function Npc_SnowManTalk()
	--CGReqCheckSnowManNPC(lpObj.aIndex)
	return 1
end
------------------------------------------------------------------------------------------

--
function Npc_LittleSantaTalk(BuffEffect)
	if BuffEffect 		== 0 then	--AT_NULL_BUFF_EFFECT
		--lpObj.Life = lpObj.AddLife + lpObj.MaxLife;
		--GCReFillSend(lpObj.aIndex, lpObj.Life, 0xFF, 0, lpObj.iShield)
	elseif BuffEffect 	== 1 then	--AT_INCREASE_ATTACK
		--lpObj.Mana = lpObj.AddMana + lpObj.MaxMana;
		--GCManaSend(lpObj.aIndex, lpObj.Mana, 0xFF, 0, lpObj.BP)
	elseif BuffEffect 	== 94 then	--AT_XMASS_ATTACK
		gObjAddBuffEffect(lpObj.aIndex, BuffEffect, 57, 30, 0, 0, 1800)
	elseif BuffEffect 	== 95 then	--AT_XMASS_DEFENSE
		gObjAddBuffEffect(lpObj.aIndex, BuffEffect, 58, 100, 0, 0, 1800)
	elseif BuffEffect 	== 92 then	--AT_XMASS_HEALTH
		gObjAddBuffEffect(lpObj.aIndex, BuffEffect, 4, 500, 0, 0, 1800)
	elseif BuffEffect 	== 93 then	--AT_XMASS_MANA
		gObjAddBuffEffect(lpObj.aIndex, BuffEffect, 5, 500, 0, 0, 1800)
	elseif BuffEffect 	== 96 then	--AT_XMASS_DEXTERITY
		gObjAddBuffEffect(lpObj.aIndex, BuffEffect, 1, 15, 0, 0, 1800)
	elseif BuffEffect 	== 97 then	--AT_XMASS_AG_RECOVERY
		gObjAddBuffEffect(lpObj.aIndex, BuffEffect, 59, 10, 0, 0, 1800)
	end
	----
	return 1
end
------------------------------------------------------------------------------------------

-- Complete
function NpcLuckyCoinDelgado()
	return 1
end
----------------------------------------------------------


encoding: [0x62,0x91,0x7f,0x58,0x79,0xee]
          vcvtsd2usi {ru-sae}, %xmm30, %ebp

// CHECK: vcvtsd2usi {rd-sae}, %xmm30, %ebp
// CHECK:  encoding: [0x62,0x91,0x7f,0x38,0x79,0xee]
          vcvtsd2usi {rd-sae}, %xmm30, %ebp

// CHECK: vcvtsd2usi {rz-sae}, %xmm30, %ebp
// CHECK:  encoding: [0x62,0x91,0x7f,0x78,0x79,0xee]
          vcvtsd2usi {rz-sae}, %xmm30, %ebp

// CHECK: vcvtsd2usi (%rcx), %ebp
// CHECK:  encoding: [0x62,0xf1,0x7f,0x08,0x79,0x29]
          vcvtsd2usi (%rcx), %ebp

// CHECK: vcvtsd2usi 291(%rax,%r14,8), %ebp
// CHECK:  encoding: [0x62,0xb1,0x7f,0x08,0x79,0xac,0xf0,0x23,0x01,0x00,0x00]
          vcvtsd2usi 291(%rax,%r14,8), %ebp

// CHECK: vcvtsd2usi 1016(%rdx), %ebp
// CHECK:  encoding: [0x62,0xf1,0x7f,0x08,0x79,0x6a,0x7f]
          vcvtsd2usi 1016(%rdx), %ebp

// CHECK: vcvtsd2usi 1024(%rdx), %ebp
// CHECK:  encoding: [0x62,0xf1,0x7f,0x08,0x79,0xaa,0x00,0x04,0x00,0x00]
          vcvtsd2usi 1024(%rdx), %ebp

// CHECK: vcvtsd2usi -1024(%rdx), %ebp
// CHECK:  encoding: [0x62,0xf1,0x7f,0x08,0x79,0x6a,0x80]
          vcvtsd2usi -1024(%rdx), %ebp

// CHECK: vcvtsd2usi -1032(%rdx), %ebp
// CHECK:  encoding: [0x62,0xf1,0x7f,0x08,0x79,0xaa,0xf8,0xfb,0xff,0xff]
          vcvtsd2usi -1032(%rdx), %ebp

// CHECK: vcvtsd2usi %xmm30, %r13d
// CHECK:  encoding: [0x62,0x11,0x7f,0x08,0x79,0xee]
          vcvtsd2usi %xmm30, %r13d

// CHECK: vcvtsd2usi {rn-sae}, %xmm30, %r13d
// CHECK:  encoding: [0x62,0x11,0x7f,0x18,0x79,0xee]
          vcvtsd2usi {rn-sae}, %xmm30, %r13d

// CHECK: vcvtsd2usi {ru-sae}, %xmm30, %r13d
// CHECK:  encoding: [0x62,0x11,0x7f,0x58,0x79,0xee]
          vcvtsd2usi {ru-sae}, %xmm30, %r13d

// CHECK: vcvtsd2usi {rd-sae}, %xmm30, %r13d
// CHECK:  encoding: [0x62,0x11,0x7f,0x38,0x79,0xee]
          vcvtsd2usi {rd-sae}, %xmm30, %r13d

// CHECK: vcvtsd2usi {rz-sae}, %xmm30, %r13d
// CHECK:  encoding: [0x62,0


,
					src_dimm->SpdModuleType,
					node,
					meminfo_hob->MaximumMemoryClockSpeed);
				index++;
			}
		}
	}
	mem_info->dimm_cnt = index;
	printk(BIOS_DEBUG, "%d DIMMs found\n", mem_info->dimm_cnt);
}

void cse_board_reset(void)
{
	early_graphics_stop();
}

void mainboard_romstage_entry(void)
{
	struct chipset_power_state *ps = pmc_get_power_state();
	bool s3wake = pmc_fill_power_state(ps) == ACPI_S3;

	setup_oc_wdt();

	/* Initialize HECI interface */
	cse_init(HECI1_BASE_ADDRESS);

	if (CONFIG(SOC_INTEL_COMMON_BASECODE_DEBUG_FEATURE))
		dbg_feature_cntrl_init();

	/*
	 * Disable Intel TXT if `CPU is unsupported` or `SoC haven't selected the config`.
	 *
	 * It would help to access VGA framebuffer prior calling into CSE
	 * firmware update or FSP-M.
	 */
	if (!CONFIG(INTEL_TXT))
		disable_intel_txt();

	/* Program to Disable UFS Controllers */
	if (!is_devfn_enabled(PCH_DEVFN_UFS) &&
			 (CONFIG(USE_UNIFIED_AP_FIRMWARE_FOR_UFS_AND_NON_UFS))) {
		if (ps->prev_sleep_state == ACPI_S5 && !mainboard_expects_another_reset()) {
			printk(BIOS_INFO, "Disabling UFS controllers\n");
			disable_ufs();
			printk(BIOS_INFO, "Warm Reset after disabling UFS controllers\n");
			system_reset();
		}
	}

	if (CONFIG(SOC_INTEL_CSE_LITE_SYNC_IN_ROMSTAGE) && !s3wake) {
		cse_fill_bp_info();
		if (CONFIG(CHROMEOS_ENABLE_ESOL) &&
		    is_cse_fw_update_required() && !is_cse_boot_to_rw()) {
			elog_add_event_byte(ELOG_TYPE_FW_EARLY_SOL, ELOG_FW_EARLY_SOL_CSE_SYNC);
			ux_inform_user_of_update_operation("CSE update");
		}
		cse_fw_sync();
	}

	/* Program MCHBAR, DMIBAR, GDXBAR and EDRAMBAR */
	systemagent_early_init();
	/* Program SMBus base address and enable it */
	smbus_common_init();

	/* Update coreboot timestamp table with CSE timestamps */
	if (CONFIG(SOC_INTEL_CSE_PRE_CPU_RESET_TELEMETRY))
		cse_get_telemetry_data();

	/*
	 * Set low maximum temp threshold value used for dynamic thermal sensor
	 * shutdown consideration.
	 *
	 * If Dynamic Thermal Shutdown is enabled then PMC logic shuts down the
	 * thermal sensor when CPU is in a C-state and LTT >= DTS Temp.
	 */
	pch_thermal_configuration();

	fsp_memory_init(s3wake);
	pmc_set_disb();
	if (!s3wake)
		save_dimm_info();

	if (CONFIG(ENABLE_EARLY_DMA_PROTECTION))
		vtd_enable_dma_protection();

	/* Keep eSOL active if CSE sync is pending at ramstage */
	if (CONFIG(SOC_INTEL_CSE_LITE_SYNC_IN_RAMSTAGE) && is_cse_fw_update_required())
		return;

	/*
	 * Turn-off early graphics configuration with two purposes:
	 * - Clear any potentially still on-screen message
	 * - Allow PEIM graphics driver to smoothly execute in ramstage if
	 *   RUN_FSP_GOP is selected
	 */
	early_graphics_stop();
}


"0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826",
                "0x3b3fbdb1961ae09cb5b2716b07142e63930fb2eddc4842641ca1df7352766a1",
            ),
            Arguments.of(
                CasesRev1.TD,
                "0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826",
                "0x7f6e8c3d8965b5535f5cc68f837c04e3bbe568535b71aa6c621ddfb188932b8",
            ),
            Arguments.of(
                CasesRev1.TD_BASIC_TYPES,
                "0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826",
                "0x2d80b87b8bc32068247c779b2ef0f15f65c9c449325e44a9df480fb01eb43ec",
            ),
            Arguments.of(
                CasesRev1.TD_PRESET_TYPES,
                "0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826",
                "0x185b339d5c566a883561a88fb36da301051e2c0225deb325c91bb7aa2f3473a",
            ),
            Arguments.of(
                CasesRev1.TD_ENUM_TYPE,
                "0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826",
                "0x3df10475ad5a8f49db4345a04a5b09164d2e24b09f6e1e236bc1ccd87627cc",
            ),
            Arguments.of(
                CasesRev1.TD_FELT_MERKLETREE,
                "0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826",
                "0x4f706783e0d7d0e61433d41343a248a213e9ab341d50ba978dfc055f26484c9",
            ),
        )
    }

    @ParameterizedTest
    @MethodSource("encodeTypeArguments")
    fun `encode type`(data: TypedData, typeName: String, expectedResult: String) {
        val encodedType = data.encodeType(typeName)

        assertEquals(expectedResult, encodedType)
    }

    @Nested
    inner class EncodeBasicTypeTest {
        @Test
        fun `encode selector`() {
            val selector = "transfer"
            val selectorHash = selectorFromName(selector)

            val rawSelectorValueHash = CasesRev0.TD_STRUCT_MERKLETREE.encodeValue(
                typeName = "felt",
                value = Json.encodeToJsonElement(selectorHash),
            )
            val selectorValueHash = CasesRev0.TD_STRUCT_MERKLETREE.encodeValue(
                typeName = "selector",
                value = Json.encodeToJsonElement(selector),
            )

            assertEquals(rawSelectorValueHash, selectorValueHash)
            assertEquals(
                Felt.fromHex("0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e"),
                selectorValueHash,
            )
        }

        @Test
        fun `encode bool`() {
            val values = listOf(true, false, "true", "false", "0x1", "0x0", "1", "0", 1, 0)
            values.forEach {
                val encodedValue = CasesRev1.TD_BASIC_TYPES.encodeValue("bool", encodeToJsonElement(it))
                assertTrue(encodedValue in listOf(Felt.ONE, Felt.ZERO))
            }
        }

        @Test
        fun `encode bool - invalid values`() {
            val invalidValues = listOf("0x2", "2", 2, 1000)
            invalidValues.forEach {
                val value = encodeToJsonElement(it)
                val exception = assertThrows<IllegalArgumentException> {
                    CasesRev1.TD_BASIC_TYPES.encodeValue("bool", value)
                }
                assertEquals("Expected boolean value, got [$value].", exception.message)
            }
        }

        @Test
        fun `encode u128`() {
            val values = listO


-- Copyright 2021-2025 Lienol <lawlienol@gmail.com>
module("luci.controller.openvpn-server", package.seeall)

function index()
    if not nixio.fs.access("/etc/config/luci-app-openvpn-server") then return end

    entry({"admin", "vpn"}, firstchild(), "VPN", 45).dependent = false
    entry({"admin", "vpn", "openvpn-server"}, alias("admin", "vpn", "openvpn-server", "settings"), _("OpenVPN Server"), 50).acl_depends = { "luci-app-openvpn-server" }
    entry({"admin", "vpn", "openvpn-server", "settings"}, cbi("openvpn-server/settings"), _("Server"), 10).leaf = true
    entry({"admin", "vpn", "openvpn-server", "user"}, cbi("openvpn-server/user")).leaf = true
    entry({"admin", "vpn", "openvpn-server", "online"}, cbi("openvpn-server/online"), _("Online Users"), 11).leaf = true
    entry({"admin", "vpn", "openvpn-serv