b-searchBuilder div.dtsb-group div.dtsb-criteria span.dtsp-joiner{margin-right:.8em}div.dtsb-searchBuilder div.dtsb-titleRow{height:40px}div.dtsb-searchBuilder div.dtsb-titleRow div.dtsb-title{padding-top:10px}div.dtsb-searchBuilder div.dtsb-group button.dtsb-clearGroup{margin-right:8px}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria .form-control{width:auto;display:inline-block}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-condition{border-color:#28a745}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-data{border-color:#dc3545}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-value,div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria input.dtsb-value{border-color:#007bff}div.dtsb-searchBuilder div.dtsb-group div.dtsb-logicContainer{border-radius:4px;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start;margin-top:10px}div.dtsb-searchBuilder div.dtsb-group div.dtsb-logicContainer button.dtsb-logic{border:none;border-radius:0px;flex-grow:1;flex-shrink:0;flex-basis:3em;margin:0px}div.dtsb-searchBuilder div.dtsb-group div.dtsb-logicContainer button.dtsb-clearGroup{border:none;border-radius:0px;width:2em;margin:0px}div.dt-button-collection div.dtsb-searchBuilder{padding-left:10px;padding-right:10px}
div.dtsp-topRow {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  border: 2px solid rgba(0, 0, 0, 0);
  border-radius: 3px;
  justify-content: space-around;
  align-content: flex-start;
  align-items: flex-start;
}
div.dtsp-topRow input.dtsp-search {
  text-overflow: ellipsis;
  min-width: 50px;
  flex-basis: 90px;
  max-width: none;
}
div.dtsp-topRow input.dtsp-search::placeholder {
  color: black;
}
div.dtsp-topRow div.dtsp-subRow1 {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  flex: 1 1 auto;
}
div.dtsp-topRow div.dtsp-subRow1 div.dtsp-searchCont {
  posit


a);e.removeEvent(h,d,P,a)}A=c}}function S(c,d){var b=s;for(var a in b)b.hasOwnProperty(a)&&M!=a&&b[a][c](d)}function ab(){return E}function K(b){var b=e.getEvent(b);l&&A&&!n(b.srcElement,u)&&S("onMouseOver",b);var g=b.target?b.target:b.srcElement,d=b.relatedTarget?b.relatedTarget:b.fromElement;if(!n(u,g)||n(u,d))return;E=a;if(typeof v.enterHandler==f)try{v.enterHandler(v,k(b,u),C,o)}catch(c){q.error(c.name+" while executing enter handler: "+c.message,c)}}function L(a){var a=e.getEvent(a);l&&A&&!n(a.srcElement,u)&&S("onMouseOut",a);var d=a.target?a.target:a.srcElement,g=a.relatedTarget?a.relatedTarget:a.toElement;if(!n(u,d)||n(u,g))return;E=c;if(typeof v.exitHandler==f)try{v.exitHandler(v,k(a,u),C,o)}catch(b){q.error(b.name+" while executing exit handler: "+b.message,b)}}function U(b){var b=e.getEvent(b);if(b.button==2)return;C=a;G=p(b);N=G;O=(new Date).getTime();if(typeof v.pressHandler==f)try{v.pressHandler(v,k(b,u))}catch(c){q.error(c.name+" while executing press handler: "+c.message,c)}(v.pressHandler||v.dragHandler)&&e.cancelEvent(b);if(!l||!t){Y();t=a;m=[H]}else l&&m.push(H)}function B(a){var a=e.getEvent(a),g=C,d=E;if(a.button==2)return;C=c;if(typeof v.releaseHandler==f)try{v.releaseHandler(v,k(a,u),g,d)}catch(b){q.error(b.name+" while executing release handler: "+b.message,b)}g&&d&&W(a)}function V(a){var a=e.getEvent(a);if(a.button==2)return;for(var b=0;b<m.length;b++){var d=m[b];!d.hasMouse()&&d.onMouseUp(a)}I();t=c;a.srcElement.fireEvent("on"+a.type,r.createEventObject(a));e.stopEvent(a)}function P(a){!E&&B(a);I()}function T(a){v.clickHandler&&e.cancelEvent(a)}function W(a){var a=e.getEvent(a);if(a.button==2)return;var h=(new Date).getTime()-O,d=p(a),c=N.distanceTo(d),g=h<=i.clickTimeThreshold&&c<=i.clickDistThreshold;if(typeof v.clickHandler==f)try{v.clickHandler(v,k(a,u),g,a.shiftKey)}catch(b){q.error(b.name+" while executing click handler: "+b.message,b)}}function J(a){var a=e.getEvent(a),c=p(a),d=c.minus(G);G=c;if(typeof v.dragHandler==f){try{v.dragHandler(v,k(a,u),d,a.shiftKey)}catch(b){q.error(b.name+" while executing drag handler: "+b.message,b)}e.cancelEvent(a)}}function Q(b){for(var a=0;a<m.length;a++)m[a].onMouseMove(b);


/*
 * Copyright 2012 Tilera Corporation. All Rights Reserved.
 *
 *   This program is free software; you can redistribute it and/or
 *   modify it under the terms of the GNU General Public License
 *   as published by the Free Software Foundation, version 2.
 *
 *   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, GOOD TITLE or
 *   NON INFRINGEMENT.  See the GNU General Public License for
 *   more details.
 *
 * TILE-Gx specific __mcount support
 */

#include <linux/linkage.h>
#include <asm/ftrace.h>

#define REGSIZE 8

	.text
	.global __mcount

	.macro	MCOUNT_SAVE_REGS
	addli	sp, sp, -REGSIZE
	{
	 st     sp, lr
	 addli	r29, sp, - (12 * REGSIZE)
	}
	{
	 addli	sp, sp, - (13 * REGSIZE)
	 st     r29, sp
	}
	addli	r29, r29, REGSIZE
	{ st	r29, r0; addli	r29, r29, REGSIZE }
	{ st	r29, r1; addli	r29, r29, REGSIZE }
	{ st	r29, r2; addli	r29, r29, REGSIZE }
	{ st	r29, r3; addli	r29, r29, REGSIZE }
	{ st	r29, r4; addli	r29, r29, REGSIZE }
	{ st	r29, r5; addli	r29, r29, REGSIZE }
	{ st	r29, r6; addli	r29, r29, REGSIZE }
	{ st	r29, r7; addli	r29, r29, REGSIZE }
	{ st	r29, r8; addli	r29, r29, REGSIZE }
	{ st	r29, r9; addli	r29, r29, REGSIZE }
	{ st	r29, r10; addli	r29, r29, REGSIZE }
	.endm

	.macro	MCOUNT_RESTORE_REGS
	addli	r29, sp, (2 * REGSIZE)
	{ ld	r0, r29; addli	r29, r29, REGSIZE }
	{ ld	r1, r29; addli	r29, r29, REGSIZE }
	{ ld	r2, r29; addli	r29, r29, REGSIZE }
	{ ld	r3, r29; addli	r29, r29, REGSIZE }
	{ ld	r4, r29; addli	r29, r29, REGSIZE }
	{ ld	r5, r29; addli	r29, r29, REGSIZE }
	{ ld	r6, r29; addli	r29, r29, REGSIZE }
	{ ld	r7, r29; addli	r29, r29, REGSIZE }
	{ ld	r8, r29; addli	r29, r29, REGSIZE }
	{ ld	r9, r29; addli	r29, r29, REGSIZE }
	{ ld	r10, r29; addli	lr, sp, (13 * REGSIZE) }
	{ ld	lr, lr;  addli	sp, sp, (14 * REGSIZE) }
	.endm

	.macro  RETURN_BACK
	{ move	r12, lr; move	lr, r10 }
	jrp	r12
	.endm

#ifdef CONFIG_DYNAMIC_FTRACE

	.align	64
STD_ENTRY(__mcount)
__mcount:
	j	ftrace_stub
STD_ENDPROC(__mcount)

	.align	64
STD_ENTRY(ftrace_caller)
	MCOUNT_SAVE_REGS

	/* arg1: self return address */
	/* arg2


₃, TC 92₅₇₇.
    '4t3a5g3f5x,'
    // #5064: 5 fonts: HK 96₁₂₃, JP 66₂₀₂, KR 84₃₄₄, SC 88₄₇₂, TC 92₅₇₇.
    '4t3a5l4x4a,'
    // #5065: 5 fonts: HK 96₁₂₃, JP 67₂₀₃, KR 88₃₄₈, SC 88₄₇₂, TC 92₅₇₇.
    '4t3b5o4t4a,'
    // #5066: 5 fonts: HK 96₁₂₃, JP 68₂₀₄, KR 79₃₃₉, SC 38₄₂₂, TC 92₅₇₇.
    '4t3c5e3e5y,'
    // #5067: 5 fonts: HK 96₁₂₃, JP 69₂₀₅, KR 73₃₃₃, SC 87₄₇₁, TC 92₅₇₇.
    '4t3d4x5h4b,'
    // #5068: 5 fonts: HK 96₁₂₃, JP 69₂₀₅, KR 82₃₄₂, SC 45₄₂₉, TC 92₅₇₇.
    '4t3d5g3i5r,'
    // #5069: 5 fonts: HK 96₁₂₃, JP 70₂₀₆, KR 88₃₄₈, SC 88₄₇₂, TC 92₅₇₇.
    '4t3e5l4t4a,'
    // #5070: 5 fonts: HK 96₁₂₃, JP 70₂₀₆, KR 91₃₅₁, SC 93₄₇₇, TC 92₅₇₇.
    '4t3e5o4v3v,'
    // #5071: 5 fonts: HK 96₁₂₃, JP 71₂₀₇, KR 66₃₂₆, SC 8₃₉₂, TC 92₅₇₇.
    '4t3f4o2n7c,'
    // #5072: 5 fonts: HK 96₁₂₃, JP 72₂₀₈, KR 67₃₂₇, SC 87₄₇₁, TC 92₅₇₇.
    '4t3g4o5n4b,'
    // #5073: 5 fonts: HK 96₁₂₃, JP 72₂₀₈, KR 88₃₄₈, SC 88₄₇₂, TC 92₅₇₇.
    '4t3g5j4t4a,'
    // #5074: 5 fonts: HK 96₁₂₃, JP 74₂₁₀, KR 77₃₃₇, SC 87₄₇₁, TC 92₅₇₇.
    '4t3i4w5d4b,'
    // #5075: 5 fonts: HK 96₁₂₃, JP 74₂₁₀, KR 84₃₄₄, SC 49₄₃₃, TC 92₅₇₇.
    '4t3i5d3k5n,'
    // #5076: 5 fonts: HK 96₁₂₃, JP 75₂₁₁, KR 73₃₃₃, SC 83₄₆₇, TC 92₅₇₇.
    '4t3j4r5d4f,'
    // #5077: 5 fonts: HK 96₁₂₃, JP 75₂₁₁, KR 89₃₄₉, SC 88₄₇₂, TC 92₅₇₇.
    '4t3j5h4s4a,'
    // #5078:


006;

var eventTime = 30;     // 30 minutes

var lobbyRange = [0, 0];

function init() {
        setEventRequirements();
}

function setLobbyRange() {
        return lobbyRange;
}

function setEventRequirements() {
        var reqStr = "";

        reqStr += "\r\n    Number of players: ";
        if(maxPlayers - minPlayers >= 1) reqStr += minPlayers + " ~ " + maxPlayers;
        else reqStr += minPlayers;

        reqStr += "\r\n    Level range: ";
        if(maxLevel - minLevel >= 1) reqStr += minLevel + " ~ " + maxLevel;
        else reqStr += minLevel;

        reqStr += "\r\n    Time limit: ";
        reqStr += eventTime + " minutes";

        em.setProperty("party", reqStr);
}

function setEventExclusives(eim) {
        var itemSet = [4001015, 4001016, 4001018];
        eim.setExclusiveItems(itemSet);
}

function setEventRewards(eim) {
        var itemSet, itemQty, evLevel, expStages;

        evLevel = 1;    //Rewards at clear PQ
        itemSet = [];
        itemQty = [];
        eim.setEventRewards(evLevel, itemSet, itemQty);

        expStages = [];    //bonus exp given on CLEAR stage signal
        eim.setEventClearStageExp(expStages);
}

function getEligibleParty(party) {      //selects, from the given party, the team that is allowed to attempt this event
        var eligible = [];
        var hasLeader = false;

        if(party.size() > 0) {
                var partyList = party.toArray();

                for(var i = 0; i < party.size(); i++) {
                        var ch = partyList[i];

                        if(ch.getMapId() == recruitMap && ch.getLevel() >= minLevel && ch.getLevel() <= maxLevel) {
                                if(ch.isLeader()) hasLeader = true;
                                eligible.push(ch);
                        }
                }
        }

        if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
        return eligible;
}

function setup(level, lobbyid) {
        var eim = em.newInstance("PreZakum" + lobbyid);
        eim.setProperty("level", level);
        eim.setProperty("gotDocuments", 0);

        eim.getInstanceMap(280010000).resetPQ(level);
        eim.getInstanceMap(280010010).resetPQ(level);
        eim.getInstanceMap(280010011).resetPQ(level);
        eim.getInstanceMap(280010020).resetPQ(level);
        eim.getInstanceMap(280010030).resetPQ(level);
        eim.getInstanceMap(280010031).resetPQ(level);
        eim.getInstanceMap(280010040).resetPQ(level);
        eim.getInstanceMap(280010041).resetPQ(level);
        eim.getInstanceMap(280010050).resetPQ(level);
        eim.getInstanceMap(280010060).resetPQ(level);
        eim.getInstanceMap(280010070).resetPQ(level);
        eim.getInstanceMap(280010071).resetPQ(level);
        eim.getInstanceMap(280010080).resetPQ(level);
        eim.getInstanceMap(280010081).resetPQ(level);
        eim.getInstanceMap(280010090).resetPQ(level);
        eim.getInstanceMap(280010091).resetPQ(level);
        eim.getInstanceMap(280010100).resetPQ(level);
        eim.getInstanceMap(280010101).resetPQ(level);
        eim.getInstanceMap(280010110).resetPQ(level);
        eim.getInstanceMap(280010120).rese


QUEUE(GraphImpl.HUGE, UnionFindAlgo.QUEUE) {
        @Override
        public Object run(final Graph graph) {
            return algo.runAny(
                graph,
                Pools.DEFAULT,
                AllocationTracker.EMPTY,
                (int) (graph.nodeCount() / Pools.DEFAULT_CONCURRENCY),
                Pools.DEFAULT_CONCURRENCY,
                Double.NaN,
                NOTHING);
        }
    },
    HUGE_HUGE_FORK_JOIN(GraphImpl.HUGE, UnionFindAlgo.FORK_JOIN) {
        @Override
        public Object run(final Graph graph) {
            return algo.runAny(
                graph,
                Pools.DEFAULT,
                AllocationTracker.EMPTY,
                (int) (graph.nodeCount() / Pools.DEFAULT_CONCURRENCY),
                Pools.DEFAULT_CONCURRENCY,
                Double.NaN,
                NOTHING);
        }
    },
    HUGE_HUGE_FJ_MERGE(GraphImpl.HUGE, UnionFindAlgo.FJ_MERGE) {
        @Override
        public Object run(final Graph graph) {
            return algo.runAny(
                graph,
                Pools.DEFAULT,
                AllocationTracker.EMPTY,
                (int) (graph.nodeCount() / Pools.DEFAULT_CONCURRENCY),
                Pools.DEFAULT_CONCURRENCY,
                Double.NaN,
                NOTHING);
        }
    },
    HUGE_HUGE_SEQ(GraphImpl.HUGE, UnionFindAlgo.SEQ) {
        @Override
        public Object run(final Graph graph) {
            return algo.runAny(
                graph,
                Pools.DEFAULT,
                AllocationTracker.EMPTY,
                (int) (graph.nodeCount() / Pools.DEFAULT_CONCURRENCY),
                Pools.DEFAULT_CONCURRENCY,
                Double.NaN,
                NOTHING);
        }
    };

    final GraphImpl graph;
    final UnionFindAlgo algo;

    UFBenchmarkCombination(GraphImpl graph, UnionFindAlgo algo) {
        this.graph = graph;
        this.algo = algo;
    }

    public Object run(Graph graph) {
        return algo.run(
                graph,
                Pools.DEFAULT,
                (int) (graph.nodeCount() / Pools.DEFAULT_CONCURRENCY),
                Pools.DEFAULT_CONCURRENCY);
    }
}
/*
 * Copyright (c) 2017 "Neo4j, Inc." <http://neo4j.com>
 *
 * This file is part of Neo4j Graph Algorithms <http://github.com/neo4j-contrib/neo4j-graph-algorithms>.
 *
 * Neo4j Graph Algorithms is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * 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, see <http://www.gnu.org/licenses/>.
 */
package org.neo4j.graphalgo.bench;

import org.neo4j.graphalgo.BetweennessCentralityProc;
import org.neo4j.graphalgo.core.utils.Pools;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.RelationshipType;
import org.neo4j.graphdb.Transaction;
import org.neo4j.internal.kernel.api.exceptions.KernelException;
import org.


  ; 00
  db $F4   ; 01
  db $38   ; 02
  db $E8   ; 03

tbl_F46A
  db $20   ; 00
  db $90   ; 01

tbl_F46C
  db $1E   ; 00
  db $00   ; 01
  db $10   ; 02

tbl_F46F
  db $00   ; 00
  db $24   ; 01

sub_F471
  LDX ram_game_mode
  LDA ram_0084_plr
  BNE bra_F499_loop
bra_F477_loop
  LDY #$00
  STY ram_006C_plr,X
  INY ; 01
  STY ram_00E4_plr,X
  INY ; 02
  STY ram_plr_handler,X
  LDA #$F0
  STA ram_00E2_plr,X
  LDA #$3F
  STA ram_plr_pos_Y,X
  DEX
  BPL bra_F477_loop
  LDX ram_001E
  BEQ bra_F494
  LDA #$00
  STA ram_plr_handler - $01,X
bra_F494
  INC ram_0084_plr
  JMP loc_F63B
bra_F499_loop
  LDA ram_0037_plr_timer,X
  BNE bra_F4A0
  JSR sub_F504
bra_F4A0
  LDA ram_plr_pos_Y,X
  STA ram_0001
  LDA ram_plr_handler,X
  ORA ram_006C_plr,X
  PHA
  CMP #$01
  BNE bra_F4C9
  LDA ram_0001
  CMP #$3F
  BNE bra_F4B7
  LDA #con_sfx_3_plr_jump
  STA ram_sfx_3
bra_F4B7
  LDA #$00
  STA ram_002F_plr,X
  TXA
  JSR sub_C83D
  LDA ram_0001
  CMP #$3F
  BCC bra_F4C7_not_overflow
  LDA #$3F
bra_F4C7_not_overflow
  STA ram_plr_pos_Y,X
bra_F4C9
  PLA
  PHA
  TAY
  LDA tbl_F466,Y
  STA ram_0002
  LDA tbl_F46A,X
  STA ram_0000
  STA ram_000E
  LDA #$00
  STA ram_000F
  TXA
  PHA
  TAY
  INY
  JSR sub_EAFC
  PLA
  TAX
  PLA
  CMP #$01
  BNE bra_F500
  LDA tbl_F46F,X
  TAY
  LDA ram_spr_X,Y
  CLC
  ADC #$08
  STA ram_spr_X,Y
  LDA ram_spr_X + $0C,Y
  CLC
  ADC #$08
  STA ram_spr_X + $0C,Y
bra_F500
  DEX
  BPL bra_F499_loop
  RTS

sub_F504
  LDY ram_plr_handler,X
  LDA tbl_F46C,Y
  STA ram_0037_plr_timer,X
  LDA ram_006C_plr,X
  EOR #$01
  STA ram_006C_plr,X
  BNE bra_F517
  LDA #con_sfx_3_kill_seal_or_ice
  STA ram_sfx_3
bra_F517
  LDA #$00
  STA ram_00E0_plr,X
  RTS

tbl_F51C_start_index
  db $20   ; 01 041B-0420
  db $89   ; 02 0484-0489

tbl_F51E


import aqt
from aqt.qt import (QDialog, QVBoxLayout, QHBoxLayout, QTextEdit, QLineEdit,
                    QPushButton, QWidget, QScrollArea, Qt, QTextCursor,
                    QTimer, QSizePolicy, pyqtSignal)
from aqt.utils import showInfo, tooltip
import requests
import json
import threading
import queue
import markdown
import re
from functools import partial

from .config_manager import get_config
from .anki_card_creator import create_sentence_card

# --- 样式 ---
DARK_THEME_STYLESHEET = """
    AIExplanationDialog { background-color: #2e2e2e; }
    QScrollArea { border: none; background-color: transparent; }
    #conversationWidget { background-color: transparent; }
    QLineEdit {
        background-color: #3c3c3c; color: #f0f0f0; border: 1px solid #555;
        border-radius: 15px; padding: 8px 12px; font-size: 14px;
    }
    QPushButton {
        background-color: #555; color: #f0f0f0; border: none;
        border-radius: 15px; padding: 8px 16px; font-size: 14px;
    }
    QPushButton:hover { background-color: #666; }
    QPushButton:pressed { background-color: #444; }
"""
USER_BUBBLE_STYLE = "QTextEdit { background-color: #3c3c3c; color: #f0f0f0; border-radius: 15px; padding: 10px; border: none; font-size: 14px; }"
AI_BUBBLE_STYLE = "QTextEdit { background-color: #f0f0f0; color: #1e1e1e; border-radius: 15px; padding: 10px; border: none; font-size: 14px; }"

prompt = """你是ContextFlow软件的语言学习助手，你将扮演一位资深的语言学家和友善的语言导师。你的任务是为语言学习者提供精准、简洁且高度相关的词汇/短语解释。

除例句外，输出篇幅控制在约200-300字。

你的核心原则是**灵活应变**。你需要首先判断用户输入的类型，然后选择最合适的解释策略，而不是死板地遵循一个固定模板。

# 用户输入：
- 原始例句: '{sentence}'
- 目标内容: '{word_to_explain}'

# 你的工作流程：

### 第一步：智能分析
在生成回答前，请先在内部完成以下思考：
1.  **判断输入类型**: 用户选中的 `{word_to_explain}` 是一个标准的【单词】、一个【固定短语/成语】、一个【语法结构】、一个【句子片段】，还是一个可能因不理解而产生的【错误组合】（例如，选中了“我是个老师”里的“个老”）？
2.  **确定解释重点**: 基于你的判断，决定解释的侧重点。目标是解决用户最根本的困惑，而不是机械地填充所有栏目。

### 第二步：生成解释卡片
请根据你的分析，**参考**使用以下最相关的模块，组合成一份清晰易懂的学习卡片。
对于不必要或不相关的模块，请**直接省略**。
对于你觉得非常有必要的，也可以***自行添加**。
请使用 Markdown 格式化你的回答。

---

#### 📌 核心解释
- **永远需要。** 针对选中的 `{word_to_explain}` 给出最核心的定义。
- 如果是**单词**，提供词性、拼音和基本含义。
- 如果是**短语或句子**，解释其整体意思。

#### 🌐 语境解析
- **大多数情况需要。** 解释 `{word_to_explain}` 在原句 `{sentence}` 中的具体作用和含义。

#### ✨ 用法辨析与扩展
- **（如果适用且有价值）** 提供近义词、反义词、形近词的辨析，或介绍相关的常见搭配、语法结构。**如果没有高质量的辨析内容，请果断跳过此项，保持简洁。**

#### 🔍 特别提醒 / 结构分析
- **（当判断为错误选择或复杂结构时使用）** 温和地指出这可能不是一个常规的词汇单位，并分解解释其组成部分。
- **例如**: 对于“个老”，应分别解释“个”（量词）和“老师”（名词），并说明正确的句子结构是“（一）个老师”。这能直接解决用户的根本困惑。

---

### 第三步：应用实例
最后，根据用户的学习要求生成 2-3 个高质量例句，来展示相关用法。
请确保例句和翻译使用以下JSON格式输出，一个例句翻译对就是一个JSON对象，这一部分必须放在段落最后且无额外内容或注释，以便系统识别：

- 词汇量大致为：{vocab_level}
- 学习目标是：{learning_goal}
- 句子最大难度：{difficulty_level}
- 句子最大长度:{sentence_length_desc}

**重要**: 例句和翻译必须以独立的 JSON 对象格式提供，并置于回答的末尾。不要在 JSON 代码块同一行内添加任何解释性文字或注释，以便系统识别：
系统会自动识别json语法，任何除json语法和代码块符号外的多余的注释，空行，逗号都会被残留，因此请避免任何多余的符合和格式。

```json
{{
  "sentence": "例句原文",
  "translation": "例句翻译"
}}```

你的回答应该像一位经验丰富的老师，既有深度，又懂得因材施教，直击要点。现在，请根据这个新的指导原则，为用户服务。

完成以上步骤后，等待用户的追问。对于追问，随后的追问，不必遵循上述流程，完全灵活的处理。例句生成工具依然可以调用，但建议只在用户主动提出时调用

"""

# 【修改】重新引入创建独立UI组件的逻辑
class MessageBubble(QWidget):
    example_sentence_requested = pyqtSignal(str, str)

    def __init__(self, text: str, sender: str, parent_dialog, parent=None):
        super().__init__(parent)
        self.sender = sender
        self.parent_dialog = parent_dialog

        self.main_layout = QHBoxLayout(self)
        self.main_layout.setContentsMargins(5, 5, 5, 5)

        self.content_widget = QWidget()
        self.content_layout = QVBoxLayout(self.content_widget)
        self.content_layout.setContentsMargins(0, 0, 0, 0)
        self.content_layout.setSpacing(5)

        self.text_display = QTextEdit()
        self.text_display.setReadOnly(True)
        self.text_display.document().setDocumentMargin(0)
        self.text_display.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
        self.text_display.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
        self.text_display.setMinimumHeight(40)
        # 初始宽度设置，但后续会通过 resizeEvent 动态调整
        self.text_display.setFixedWidth(int(parent_dialog.width() * 0.75))
        self.text_display.setSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred) # 允许宽度调整

        self.text_display.textChanged.connect(self._adjust_main_text_height)

        if sender == "user":
            self.text_display.setPlainText(text)
            self.text_display.setStyleSheet(USER_BUBBLE_STYLE)
        else:
            self.text_display.setStyleSheet(AI_BUBBLE_


//
const LINE_C = 29;
const LINE_A = 33;
const LINE_B = 34;
// AUTOGENERATED END

const LINE_B_COL = 3;
const LINE_C_COL = 1;

Future<void> helper() async {
  // LINE_C
}

void testMain() {
  debugger(); // LINE_A
  helper(); // LINE_B
}

final tests = <IsolateTest>[
  hasStoppedAtBreakpoint,
  stoppedAtLine(LINE_A),
  stepOver,
  hasStoppedAtBreakpoint,
  stoppedAtLine(LINE_B),
  stepInto,
  (VmService service, IsolateRef isolateRef) async {
    final isolateId = isolateRef.id!;
    final stack = await service.getStack(isolateId);
    final frames = stack.frames!;
    expect(frames.length, greaterThan(2));

    // We used to return a negative token position for this frame.
    // See issue #27128.
    var frame = frames[0];
    expect(frame.function!.name, 'helper');
    expect(frame.location!.line, LINE_C + 1);
    expect(frame.location!.column, LINE_C_COL);

    frame = frames[1];
    expect(frame.function!.name, 'testMain');
    expect(frame.location!.line, LINE_B);
    expect(frame.location!.column, LINE_B_COL);
  }
];

void main([args = const <String>[]]) => runIsolateTests(
      args,
      tests,
      'positive_token_pos_test.dart',
      testeeConcurrent: testMain,
    );
// Copyright (c) 2023, 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.
// VMOptions=--verbose_debug

// ignore_for_file: prefer_function_declarations_over_variables

import 'dart:developer';

import 'package:test/test.dart';
import 'package:vm_service/vm_service.dart';

import 'common/service_test_common.dart';
import 'common/test_helper.dart';

// AUTOGENERATED START
//
// Update these constants by running:
//
// dart pkg/vm_service/test/update_line_numbers.dart pkg/vm_service/test/local_variable_declaration_test.dart
//
const LINE_A = 28;
const LINE_B = 37;
const LINE_C = 42;
// AUTOGENERATED END

void testParameters(int jjjj, int oooo, [int? hhhh, int? nnnn]) {
  debugger(); // LINE_A
}

void testMain() {
  // ignore: unused_local_variable
  int? xxx, yyyy, zzzzz;
  for (int i = 0; i < 1; i++) {
    // ignore: unused_local_variable
    final foo = () {};
    debugger(); // LINE_B
  }
  final bar = () {
    print(xxx);
    print(yyyy);
    debugger(); // LINE_C
  };

  bar();
  testParameters(0, 0);
}

String? getLine(Script script, int line) {
  final index = line - script.lineOffset! - 1;
  final lines = script.source!.split('\n');
  if (lines.length < index) {
    return null;
  }
  return lines[index];
}

String? getToken(Script script, int tokenPos) {
  final line = script.getLineNumberFromTokenPos(tokenPos);
  int? col = script.getColumnNumberFromTokenPos(tokenPos);
  if ((line == null) || (col == null)) {
    return null;
  }
  // Line and column numbers start at 1 in the VM.
  --col;
  final sourceLine = getLine(script, line);
  if (sourceLine == null) {
    return null;
  }
  final length = guessTokenLength(script, line, col);
  if (length == null)


ry();
        return new LQuery<>(getSqlBuilder());
    }

    // endregion
}
/*
 * Copyright 2017-2024 noear.org and authors
 *
 * 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
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package io.github.kiryu1223.drink.core.api.crud.read.group;

import io.github.kiryu1223.drink.base.page.PagedResult;
import io.github.kiryu1223.drink.core.api.Result;
import io.github.kiryu1223.drink.core.api.crud.read.EndQuery;
import io.github.kiryu1223.drink.core.api.crud.read.LQuery;
import io.github.kiryu1223.drink.core.api.crud.read.QueryBase;
import io.github.kiryu1223.drink.core.exception.NotCompiledException;
import io.github.kiryu1223.drink.core.sqlBuilder.QuerySqlBuilder;
import io.github.kiryu1223.expressionTree.delegate.Func1;
import io.github.kiryu1223.expressionTree.expressions.ExprTree;
import io.github.kiryu1223.expressionTree.expressions.annos.Expr;

import java.math.BigDecimal;
import java.util.List;

/**
 * 分组查询过程对象
 *
 * @author kiryu1223
 * @since 3.0
 */
public class GroupedQuery<Key, T> extends QueryBase<GroupedQuery<Key, T>, Key> {
    public GroupedQuery(QuerySqlBuilder sqlBuilder) {
        super(sqlBuilder);
    }

    // region [HAVING]

    /**
     * 设置having

     * 注意：此函数的ExprTree[func类型]版本为真正被调用的函数
     *
     * @param func 返回bool的lambda表达式(强制要求参数为lambda表达式，不可以是方法引用以及匿名对象)
     * @return this
     */
    public GroupedQuery<Key, T> having(@Expr(Expr.BodyType.Expr) Func1<Group<Key, T>, Boolean> func) {
        throw new NotCompiledException();
    }

    public GroupedQuery<Key, T> having(ExprTree<Func1<Group<Key, T>, Boolean>> expr) {
        having(expr.getTree());
        return this;
    }

    public GroupedQuery<Key, T> havingIf(boolean condition, @Expr(Expr.BodyType.Expr) Func1<Group<Key, T>, Boolean> func) {
        throw new NotCompiledException();
    }

    public GroupedQuery<Key, T> havingIf(boolean condition, ExprTree<Func1<Group<Key, T>, Boolean>> expr) {
        if (condition) having(expr.getTree());
        return this;
    }

    // endregion

    // region [ORDER BY]

    /**
     * 设置orderBy的字段以及升�


")
    suspend fun getIllustNew(
        @Query("content_type") contentType: String? = null //illust manga
    ): IllustNext

    @GET("/v1/illust/ranking") //?filter=for_android
    suspend fun getIllustRanking(
        @Query("mode") mode: String,
        @Query("date") date: String?
    ): IllustNext

    @GET("/v2/illust/follow")
    suspend fun getFollowIllusts(
        @Query("restrict") restrict: String
    ): IllustNext

    // @FormUrlEncoded
    // @POST("/v1/mute/edit")
    // public abstract l<PixivResponse> postMuteSetting(@Header("Authorization") String paramString, @Field("add_user_ids[]") List<Long> paramList1, @Field("delete_user_ids[]") List<Long> paramList2, @Field("add_tags[]") List<String> paramList3, @Field("delete_tags[]") List<String> paramList4);
    @GET("/v2/illust/bookmark/detail")
    suspend fun getIllustBookmarkDetail(
        @Query("illust_id") pid: Int
    ): BookMarkDetailResponse

    @GET("v1/user/bookmark-tags/illust")
    suspend fun getIllustBookmarkTags(
        @Query("user_id") uid: Int,
        @Query("restrict") restrict: String
    ): BookMarkTagsResponse

    @GET("/v1/ugoira/metadata")
    suspend fun getUgoiraMetadata(
        @Query("illust_id") pid: Int
    ): UgoiraMetadataResponse

    @GET("/v1/user/browsing-history/illusts")
    suspend fun getIllustBrowsingHistory(
    ): IllustNext

    @FormUrlEncoded
    @POST("/v2/user/browsing-history/illust/add")
    suspend fun postAddIllustBrowsingHistory(
        @Field("illust_ids[]") illust_idList: List<Int>
    ): ResponseBody

    @GET("/v1/user/bookmarks/illust")
    suspend fun getLikeIllust(
        @Query("user_id") uid: Int,
        @Query("restrict") restrict: String,
        @Query("tag") tag: String?
    ): IllustNext

    @FormUrlEncoded
    @POST("/v2/illust/bookmark/add")
    suspend fun postLikeIllust(
        @Field("illust_id") illust_id: Int,
        @Field("restrict") restrict: String,
        @Field("tags[]") tagList: List<String>?
    ): ResponseBody

    @FormUrlEncoded
    @POST("/v1/illust/bookmark/delete")
    suspend fun postUnlikeIllust(
        @Field("illust_id") illust_id: Int
    ): ResponseBody

    @GET("/v2/search/autocomplete?merge_plain_keyword_results=true")
    suspend fun getSearchAutoCompleteKeywords(
        @Query("word") word: String?
    ): TagsListResponse

    @GET("/v1/trending-tags/illust") //?filter=for_android
    suspend fun getIllustTrendTags(
    ): TrendingtagResponse

    //    &start_date=2019-11-24&end_date=2019-12-01
    @GET("/v1/search/illust?filter=for_android&merge_plain_keyword_results=true")
    suspend fun getSearchIllust(
        @Query("word") word: String,
        @Query("sort") sort: String,
        @Query("search_target") search_target: String?,
        @Query("start_date") start_date: String?,
        @Query("end_date") end_date: String?,
        @Query("bookmark_num") paramInteger: Int?
    ): SearchIllustResponse

    @GET("/v1/search/popular-preview/illust?merge_plain_keyword_results=true") //&filter=for_android
    suspend fun getSearchIllustPreview(
        @Query("word") word: Strin


 Divisor Latch Low Register (DLAB = 1) (read/write) */
#define HWDLH		__REG(0x41600004)  /* Divisor Latch High Register (DLAB = 1) (read/write) */

#define IER_DMAE	(1 << 7)	/* DMA Requests Enable */
#define IER_UUE		(1 << 6)	/* UART Unit Enable */
#define IER_NRZE	(1 << 5)	/* NRZ coding Enable */
#define IER_RTIOE	(1 << 4)	/* Receiver Time Out Interrupt Enable */
#define IER_MIE		(1 << 3)	/* Modem Interrupt Enable */
#define IER_RLSE	(1 << 2)	/* Receiver Line Status Interrupt Enable */
#define IER_TIE		(1 << 1)	/* Transmit Data request Interrupt Enable */
#define IER_RAVIE	(1 << 0)	/* Receiver Data Available Interrupt Enable */

#define IIR_FIFOES1	(1 << 7)	/* FIFO Mode Enable Status */
#define IIR_FIFOES0	(1 << 6)	/* FIFO Mode Enable Status */
#define IIR_TOD		(1 << 3)	/* Time Out Detected */
#define IIR_IID2	(1 << 2)	/* Interrupt Source Encoded */
#define IIR_IID1	(1 << 1)	/* Interrupt Source Encoded */
#define IIR_IP		(1 << 0)	/* Interrupt Pending (active low) */

#define FCR_ITL2	(1 << 7)	/* Interrupt Trigger Level */
#define FCR_ITL1	(1 << 6)	/* Interrupt Trigger Level */
#define FCR_RESETTF	(1 << 2)	/* Reset Transmitter FIFO */
#define FCR_RESETRF	(1 << 1)	/* Reset Receiver FIFO */
#define FCR_TRFIFOE	(1 << 0)	/* Transmit and Receive FIFO Enable */
#define FCR_ITL_1	(0)
#define FCR_ITL_8	(FCR_ITL1)
#define FCR_ITL_16	(FCR_ITL2)
#define FCR_ITL_32	(FCR_ITL2|FCR_ITL1)

#define LCR_DLAB	(1 << 7)	/* Divisor Latch Access Bit */
#define LCR_SB		(1 << 6)	/* Set Break */
#define LCR_STKYP	(1 << 5)	/* Sticky Parity */
#define LCR_EPS		(1 << 4)	/* Even Parity Select */
#define LCR_PEN		(1 << 3)	/* Parity Enable */
#define LCR_STB		(1 << 2)	/* Stop Bit */
#define LCR_WLS1	(1 << 1)	/* Word Length Select */
#define LCR_WLS0	(1 << 0)	/* Word Length Select */

#define LSR_FIFOE	(1 << 7)	/* FIFO Error Status */
#define LSR_TEMT	(1 << 6)	/* Transmitter Empty */
#define LSR_TDRQ	(1 << 5)	/* Transmit Data Request */
#define LSR_BI		(1 << 4)	/* Break Interrupt */
#define LSR_FE		(1 << 3)	/* Framing Error */
#define LSR_PE		(1 << 2)	/* Parity Error */
#define LSR_OE		(1 << 1)	/* Overrun Error */
#define LSR_DR		(1 << 0)	/* Data Ready */

#define MCR_LOOP	(1 << 4)
#define MCR_OUT2	(1 << 3)	/* force MSR_DCD in loopback mode */
#define MCR_OUT1	(1 << 2)	/* force MSR_RI in loopback mode */
#define MCR_RTS		(1 << 1)	/* Request to Send */
#define MCR_DTR		(1 << 0)	/* Data Terminal Ready */

#define MSR_DCD		(1 << 7)	/* Data Carrier Detect */
#define MSR_RI		(1 << 6)	/* Ring Indicator */
#define MSR_DSR		(1 << 5)	/* Data Set Ready */
#define MSR_CTS		(1 << 4)	/* Clear To Send */
#define MSR_DDCD	(1 << 3)	/* Delta Data Carrier Detect */
#define MSR_TERI	(1 << 2)	/* Trailing Edge Ring Indicator */
#define MSR_DDSR	(1 << 1)	/* Delta Data Set Ready */
#define MSR_DCTS	(1 << 0)	/* Delta Clear To Send */

/*
 * IrSR (Infrared Selection Register)
 */
#define STISR_RXPL      (1 << 4)        /* Receive Data Polarity */
#define STISR_TXPL      (1 << 3)        /* Transmit Data Polarity */
#define STISR_XMODE     (1 << 2)        /* Transmit Pulse Width Select */
#define STISR_RCVEIR    (1 << 1)        /* Receiver SIR Enable */
#define STISR_XMITIR    (1 << 0)        /* Transmitter SIR Enable */

#endif /* __ASM_ARCH_REGS_UART_H */


iving empty file path")
	}
}

func TestNewTokenFileAuthenticate(t *testing.T) {
	tokenFile, err := os.Create(filepath.Join(t.TempDir(), "token_file"))
	tokenFileContents := "super-secret-token"
	if err != nil {
		t.Fatal(err)
	}
	tokenFileName := tokenFile.Name()
	tokenFile.Close() // WriteFile doesn't need it open
	os.WriteFile(tokenFileName, []byte(tokenFileContents), 0o666)
	defer os.Remove(tokenFileName)

	logger := logging.NewVaultLogger(log.Trace)
	am, err := NewTokenFileAuthMethod(&auth.AuthConfig{
		Logger: logger.Named("auth.method"),
		Config: map[string]interface{}{
			"token_file_path": tokenFileName,
		},
	})
	if err != nil {
		t.Fatal(err)
	}

	path, headers, data, err := am.Authenticate(nil, nil)
	if err != nil {
		t.Fatal(err)
	}
	if path != "auth/token/lookup-self" {
		t.Fatalf("Incorrect path, was %s", path)
	}
	if headers != nil {
		t.Fatalf("Expected no headers, instead got %v", headers)
	}
	if data == nil {
		t.Fatal("Data was nil")
	}
	tokenDataFromAuthMethod := data["token"].(string)
	if tokenDataFromAuthMethod != tokenFileContents {
		t.Fatalf("Incorrect token file contents return by auth method, expected %s, got %s", tokenFileContents, tokenDataFromAuthMethod)
	}

	_, err = os.Stat(tokenFileName)
	if err != nil {
		t.Fatal("Token file removed")
	}
}
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0

package kerberos

import (
	"testing"

	"github.com/hashicorp/go-hclog"
	"github.com/openbao/openbao/command/agentproxyshared/auth"
)

func TestNewKerberosAuthMethod(t *testing.T) {
	if _, err := NewKerberosAuthMethod(nil); err == nil {
		t.Fatal("err should be returned for nil input")
	}
	if _, err := NewKerberosAuthMethod(&auth.AuthConfig{}); err == nil {
		t.Fatal("err should be returned for nil config map")
	}

	authConfig := simpleAuthConfig()
	delete(authConfig.Config, "username")
	if _, err := NewKerberosAuthMethod(authConfig); err == nil {
		t.Fatal("err should be returned for missing username")
	}

	authConfig = simpleAuthConfig()
	delete(authConfig.Config, "service")
	if _, err := NewKerberosAuthMethod(authConfig); err == nil {
		t.Fatal("err should be returned for missing service")
	}

	authConfig = simpleAuthConfig()
	delete(authConfig.Config, "realm")
	if _, err := NewKerberosAuthMethod(authConfig); err == nil {
		t.Fatal("err should be returned for missing realm")
	}

	authConfig = simpleAuthConfig()
	delete(authConfig.Config, "keytab_path")
	if _, err := NewKerberosAuthMethod(authConfig); err == nil {
		t.Fatal("err should be returned for missing keytab_path")
	}

	authConfig = simpleAuthConfig()
	delete(authConfig.Config, "krb5conf_path")
	if _, err := NewKerberosAuthMethod(authConfig); err == nil {
		t.Fatal("err should be returned for missing krb5


achAction(v string) *CreateUsageLimitInput {
	s.BreachAction = &v
	return s
}

// SetPeriod sets the Period field's value.
func (s *CreateUsageLimitInput) SetPeriod(v string) *CreateUsageLimitInput {
	s.Period = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *CreateUsageLimitInput) SetResourceArn(v string) *CreateUsageLimitInput {
	s.ResourceArn = &v
	return s
}

// SetUsageType sets the UsageType field's value.
func (s *CreateUsageLimitInput) SetUsageType(v string) *CreateUsageLimitInput {
	s.UsageType = &v
	return s
}

type CreateUsageLimitOutput struct {
	_ struct{} `type:"structure"`

	// The returned usage limit object.
	UsageLimit *UsageLimit `locationName:"usageLimit" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateUsageLimitOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateUsageLimitOutput) GoString() string {
	return s.String()
}

// SetUsageLimit sets the UsageLimit field's value.
func (s *CreateUsageLimitOutput) SetUsageLimit(v *UsageLimit) *CreateUsageLimitOutput {
	s.UsageLimit = v
	return s
}

type CreateWorkgroupInput struct {
	_ struct{} `type:"structure"`

	// The base data warehouse capacity of the workgroup in Redshift Processing
	// Units (RPUs).
	BaseCapacity *int64 `locationName:"baseCapacity" type:"integer"`

	// An array of parameters to set for advanced control over a database. The options
	// are auto_mv, datestyle, enable_case_sensitivity_identifier, enable_user_activity_logging,
	// query_group, search_path, and query monitoring metrics that let you define
	// performance boundaries. For more information about query monitoring rules
	// and available metrics, see Query monitoring metrics for Amazon Redshift Serverless
	// (https://docs.aws.amazon.com/redshift/latest/dg/cm-c-wlm-query-monitoring-rules.html#cm-c-wlm-query-monitoring-metrics-serverless).
	ConfigParameters []*ConfigParameter `locationName:"configParameters" type:"list"`

	// The value that specifies whether to turn on enhanced virtual private cloud
	// (VPC) routing, which forces Amazon Redshift Serverless to route traffic through
	// your VPC instead of over the internet.
	EnhancedVpcRouting *bool `locationName:"enhancedVpcRouting" type:"boolean"`

	// The maximum data-warehouse capacity Amazon Redshift Serverless uses to serve
	// queries. The max capacity is specified in RPUs.
	MaxCapacity *int64 `locationName:"maxCapacity" type:"integer"`

	// The name of the namespace to associate with the workgroup.
	//
	// NamespaceName is a required field
	NamespaceName *string `locationName:"namespaceName" min:"3" type:"string" required:"true"`

	// The custom port to use when connecting to a workgroup. Valid port ranges
	// are 5431-5455 and 8191-8215. The default is 5439.
	Port *int64 `locationName:"port" type:"integer"`

	// A value that specifies whether the workgroup can be accessed from a public
	// network.
	PubliclyAccessible *bool `locationName:"publiclyAccessible" type:"boolean"`

	// An array of security group IDs to associate with the workgroup.
	SecurityGroupIds []*string `locationName:"securityGroupIds" type:"list"`

	// An array of VPC subnet IDs to associate with the


)Unsafe.SizeOf<T>();
        destIndex   = (nuint)Unsafe.ByteOffset(ref destStart, ref dest);

        src  = ref srcStart;
        dest = ref destStart;
    }
    //-------------------------------------------------------------------------
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    private static void Vector128Decode<T, TOperation>(ref T src, ref byte dest, nuint srcLength, nuint destLength, ref nuint sourceIndex, ref nuint destIndex)
        where T          : struct
        where TOperation : IOperation<T>
    {
        ref T srcStart     = ref src;
        ref byte destStart = ref dest;
        ref T simdSrcEnd   = ref Unsafe.Add(ref srcStart, srcLength - 24 + 1);  // +1 for <=

        // The JIT won't hoist these "constants", so help it
        Vector128<sbyte> lutLo          = TBase64Encoder.DecodeLutLo128();
        Vector128<sbyte> lutHi          = TBase64Encoder.DecodeLutHi128();
        Vector128<sbyte> lutShift       = TBase64Encoder.DecodeLutShift128();
        Vector128<sbyte> mergeConstant0 = Vector128.Create(0x01400140).AsSByte();
        Vector128<short> mergeConstant1 = Vector128.Create(0x00011000).AsInt16();
        Vector128<sbyte> shuffleVec     = Vector128.Create(
            2,  1,  0,  6,
            5,  4, 10,  9,
            8, 14, 13, 12,
           -1, -1, -1, -1
        );

        Vector128<sbyte> maskSlashOrUnderscore     = TBase64Encoder.MaskSlashOrUnderscore128();
        Vector128<sbyte> shiftForSlashOrUnderscore = TBase64Encoder.ShiftForSlashOrUnderscore128();

        //while (remaining >= 24)
        do
        {
            src.AssertRead<Vector128<sbyte>, T>(ref srcStart, srcLength);

            Vector128<sbyte> str       = TOperation.ReadVector128(ref src);
            Vector128<sbyte> hiNibbles = Vector128.ShiftRightLogical(str.AsInt32(), 4).AsSByte() & maskSlashOrUnderscore;

            if (!TBase64Encoder.TryDecode128Core(str, hiNibbles, maskSlashOrUnderscore, lutLo, lutHi, lutShift, shiftForSlashOrUnderscore, out str))
                break;
#if DEBUG
            OnVector128DecodingIteration();
#endif
            Vector128<short> merge_ab_and_bc = VectorHelper.MultiplyAddAdjacent(str            , mergeConstant0);
            Vector128<int> output            = VectorHelper.MultiplyAddAdjacent(merge_ab_and_bc, mergeConstant1);

            str = VectorHelper.Shuffle(output.AsSByte(), shuffleVec);

            dest.AssertWrite<Vector128<sbyte>, byte>(ref destStart, destLength);
            str.AsByte().StoreUnsafe(ref dest);

            src  = ref Unsafe.Add(ref src , 16);
            dest = ref Unsafe.Add(ref dest, 12);
        }
        while (Unsafe.IsAddressLessThan(ref src, ref simdSrcEnd));

        sourceIndex = (uint)(ulong)Unsafe.ByteOffset(ref srcStart , ref src) / (uint)Unsafe.SizeOf<T>();
        destIndex   = (uint)(ulong)Unsafe.ByteOffset(ref destStart, ref dest);

        src  = ref srcStart;
        dest = ref destStart;

#if DEBUG
        OnVector128Decoded();
#endif
    }
    //-------------------------------------------------------------


(tableToSnaps[val]) + len(tableToPitrs[val])

		for _, snap := range tableToSnaps[val] {
			jsonBuf.WriteString(
				fmt.Sprintf(
					"{'timestamp':'%s', 'source':'snapshot', 'source_name':'%s'}",
					snap.ts, snap.name,
				))

			cnt--
			if cnt > 0 {
				jsonBuf.WriteString(", ")
			}
		}

		for _, pitr := range tableToPitrs[val] {
			jsonBuf.WriteString(
				fmt.Sprintf(
					"{'start_time':'%s', 'end_time':'%s', 'source':'pitr', 'source_name':'%s'}",
					pitr.start, pitr.end, pitr.name,
				))

			cnt--
			if cnt > 0 {
				jsonBuf.WriteString(", ")
			}
		}

		jsonBuf.WriteString("]")

		row[4] = jsonBuf.Bytes()

		rows = append(rows, row)
	}

	return rows, nil
}

func searchTables(
	ctx context.Context,
	ses *Session,
	bh BackgroundExec,
	level tree.RecoveryWindowLevel,
	accountName string,
	databaseName string,
	tableName string,
	pitrsRecords []tableRecoveryWindow,
	snapRecords []tableRecoveryWindowForSnapshot,
	opAccount uint32,
) (
	tableToSnaps map[[3]string][]snapItem,
	tableToPitrs map[[3]string][]pitrItem,
	err error,
) {

	var (
		newCtx context.Context

		sqlRet []ExecResult

		searchSQL string

		searchCondA string
		searchCondB string
		searchCondC string

		fromAccount    uint32
		needUpdateFrom = true
	)

	skipCond := ""
	for i, db := range skipDbs {
		skipCond += fmt.Sprintf("'%s'", db)
		if i != len(skipDbs)-1 {
			skipCond += ","
		}
	}

	searchCondA = fmt.Sprintf(" reldatabase not in (%s)", skipCond)

	// if the account name doesn't equal to the login acc,
	// this query must be `show recovery_window for acc` in the sys account.
	// if so, we cannot ensure that the account we want to show keep unchanged all the time.(delete, recreate...),
	//  that's why we need to query the account id again and again when attaching different TS.
	if accountName == ses.GetTenantName() {
		needUpdateFrom = false
		fromAccount = opAccount
	}

	makeCondB := func(ts int64) error {
		if needUpdateFrom {
			if fromAccount, err = getAccountIdByTS(ctx, bh, accountName, ts); err != nil {
				return err
			}
		}

		switch level {
		case tree.RECOVERYWINDOWLEVELACCOUNT:
			searchCondB = fmt.Sprintf(
				" AND account_id = %d",
				fromAccount,
			)
		case tree.RECOVERYWINDOWLEVELDATABASE:
			searchCondB = fmt.Sprintf(
				" AND account_id = %d AND reldatabase = '%s'",
				fromAccount, databaseName,
			)
		case tree.RECOVERYWINDOWLEVELTABLE:
			searchCondB = fmt.Sprintf(
				" AND account_id = %d AND reldatabase = '%s' AND relname = '%s'",
				fromAccount, databaseName, tableName,
			)
		default:
			return moerr.NewInternalErrorNoCtxf("show recovery window level does not exist")
		}

		return nil
	}

	var (
		endStr   string
		startStr string
		startTS  int64
	)

	tableToSnaps = make(map[[3]string][]snapItem)
	tableToPitrs = make(map[[3]string][]pi


peof V!=typeof C[0]})?["filter-in-large",k,["literal",C.sort(at)]]:["filter-in-small",k,["literal",C]]}}function rr(k){switch(k){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",k]}}function sr(k){return["!",k]}function Sr(k){return Wr(As(k.value))?Wt(xs({},k,{expressionContext:"filter",valueSpec:{value:"boolean"}})):Nr(k)}function Nr(k){var C=k.value,V=k.key;if(so(C)!=="array")return[new Qn(V,C,"array expected, "+so(C)+" found")];var se=k.styleSpec,_e,ke=[];if(C.length<1)return[new Qn(V,C,"filter array must have at least 1 element")];switch(ke=ke.concat(Fr({key:V+"[0]",value:C[0],valueSpec:se.filter_operator,style:k.style,styleSpec:k.styleSpec})),Gi(C[0])){case"<":case"<=":case">":case">=":C.length>=2&&Gi(C[1])==="$type"&&ke.push(new Qn(V,C,'"$type" cannot be use with operator "'+C[0]+'"'));case"==":case"!=":C.length!==3&&ke.push(new Qn(V,C,'filter array for operator "'+C[0]+'" must have 3 elements'));case"in":case"!in":C.length>=2&&(_e=so(C[1]),_e!=="string"&&ke.push(new Qn(V+"[1]",C[1],"string expected, "+_e+" found")));for(var Ne=2;Ne<C.length;Ne++)_e=so(C[Ne]),Gi(C[1])==="$type"?ke=ke.concat(Fr({key:V+"["+Ne+"]",value:C[Ne],valueSpec:se.geometry_type,style:k.style,styleSpec:k.styleSpec})):_e!=="string"&&_e!=="number"&&_e!=="boolean"&&ke.push(new Qn(V+"["+Ne+"]",C[Ne],"string, number, or boolean expected, "+_e+" found"));break;case"any":case"all":case"none":for(var it=1;it<C.length;it++)ke=ke.concat(Nr({key:V+"["+it+"]",value:C[it],style:k.style,styleSpec:k.styleSpec}));break;case"has":case"!has":_e=so(C[1]),C.length!==2?ke.push(new Qn(V,C,'filter array for "'+C[0]+'" operator must have 2 elements')):_e!=="string"&&ke.push(new Qn(V+"[1]",C[1],"string expected, "+_e+" found"));break;case"within":_e=so(C[1]),C.length!==2?ke.push(new Qn(V,C,'filter array for "'+C[0]+'" operator must have 2 elements')):_e!=="object"&&ke.push(new Qn(V+"[1]",C[1],"object expected, "+_e+" found"));break}return ke}function Qr(k,C){var V=k.key,se=k.style,_e=k.styleSpec,ke=k.value,Ne=k.objectKey,it=_e[C+"_"+k.layerType];if(!it)return[];var kt=Ne.match(/^(.*)-transition$/);if(C==="paint"&&kt&&it[kt[1]]&&it[kt[1]].transition)return qo({key:V,value:ke,valueSpec:_e.transition,style:se,styleSpec


 a SVG point
 *
 * @param  {SVGPoint} point
 * @param  {Float} zoomScale    Number representing how much to zoom
 * @param  {Boolean} zoomAbsolute Default false. If true, zoomScale is treated as an absolute value.
 *                                Otherwise, zoomScale is treated as a multiplied (e.g. 1.10 would zoom in 10%)
 */
SvgPanZoom.prototype.zoomAtPoint = function(zoomScale, point, zoomAbsolute) {
  var originalState = this.viewport.getOriginalState()

  if (!zoomAbsolute) {
    // Fit zoomScale in set bounds
    if (this.getZoom() * zoomScale < this.options.minZoom * originalState.zoom) {
      zoomScale = (this.options.minZoom * originalState.zoom) / this.getZoom()
    } else if (this.getZoom() * zoomScale > this.options.maxZoom * originalState.zoom) {
      zoomScale = (this.options.maxZoom * originalState.zoom) / this.getZoom()
    }
  } else {
    // Fit zoomScale in set bounds
    zoomScale = Math.max(this.options.minZoom * originalState.zoom, Math.min(this.options.maxZoom * originalState.zoom, zoomScale))
    // Find relative scale to achieve desired scale
    zoomScale = zoomScale/this.getZoom()
  }

  var oldCTM = this.viewport.getCTM()
    , relativePoint = point.matrixTransform(oldCTM.inverse())
    , modifier = this.svg.createSVGMatrix().translate(relativePoint.x, relativePoint.y).scale(zoomScale).translate(-relativePoint.x, -relativePoint.y)
    , newCTM = oldCTM.multiply(modifier)

  if (newCTM.a !== oldCTM.a) {
    this.viewport.setCTM(newCTM)
  }
}

/**
 * Zoom at center point
 *
 * @param  {Float} scale
 * @param  {Boolean} absolute Marks zoom scale as relative or absolute
 */
SvgPanZoom.prototype.zoom = function(scale, absolute) {
  this.zoomAtPoint(scale, SvgUtils.getSvgCenterPoint(this.svg, this.width, this.height), absolute)
}

/**
 * Zoom used by public instance
 *
 * @param  {Float} scale
 * @param  {Boolean} absolute Marks zoom scale as relative or absolute
 */
SvgPanZoom.prototype.publicZoom = function(scale, absolute) {
  if (absolute) {
    scale = this.computeFromRelativeZoom(scale)
  }

  this.zoom(scale, absolute)
}

/**
 * Zoom at point used by public instance
 *
 * @param  {Float} scale
 * @param  {SVGPoint|Object} point    An object that has x and y attributes
 * @param  {Boolean} absolute Marks zoom scale as relative or absolute
 */
SvgPanZoom.prototype.publicZoomAtPoint = function(scale, point, absolute) {
  if (absolute) {
    // Transform zoom into a relative value
    scale = this.computeFromRelativeZoom(scale)
  }

  // If not a SVGPoint but has x and y then create a SVGPoint
  if (Utils.getType(point) !== 'SVGPoint') {
    if('x' in point && 'y' in point) {
      point = SvgUtils.createSVGPoint(this.svg, point.x, point.y)
    } else {
      throw new Error('Given point is invalid')
    }
  }

  this.zoomAtPoint(scale, point, absolute)
}

/**
 * Get zoom scale
 *
 * @return {Float} zoom scale
 */
SvgPanZoom.prototype.getZoom = function() {
  return this.viewport.getZoom()
}

/**
 * Get zoom scale for public usage
 *
 * @return {Float} zoom scale
 */
SvgPanZoom.prototype.getRelativeZoom = function() {
  retur


pub fn maximum_logical_processors(&self) -> usize {
        usize::pow(2, self.apic_id_size() as u32)
    }

    /// Number of physical threads in the processor.
    ///
    /// # Platforms
    /// ✅ AMD ❌ Intel (reserved=0)
    pub fn num_phys_threads(&self) -> usize {
        get_bits(self.ecx, 0, 7) as usize + 1
    }

    /// Maximum page count for INVLPGB instruction.
    ///
    /// # Platforms
    /// ✅ AMD ❌ Intel (reserved=0)
    pub fn invlpgb_max_pages(&self) -> u16 {
        get_bits(self.edx, 0, 15) as u16
    }

    /// The maximum ECX value recognized by RDPRU.
    ///
    /// # Platforms
    /// ✅ AMD ❌ Intel (reserved=0)
    pub fn max_rdpru_id(&self) -> u16 {
        get_bits(self.edx, 16, 31) as u16
    }
}

bitflags! {
    #[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
    struct ProcessorCapacityAndFeatureEbx: u32 {
        const CLZERO = 1 << 0;
        const INST_RETCNT_MSR = 1 << 1;
        const RSTR_FP_ERR_PTRS = 1 << 2;
        const INVLPGB = 1 << 3;
        const RDPRU = 1 << 4;
        const MCOMMIT = 1 << 8;
        const WBNOINVD = 1 << 9;
        const INT_WBINVD = 1 << 13;
        const EFER_LMSLE_UNSUPP = 1 << 20;
        const INVLPGB_NESTED = 1 << 21;
    }
}

/// Encrypted Memory Capabilities
///
/// # Platforms
/// ✅ AMD ❌ Intel
#[derive(Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
pub struct MemoryEncryptionInfo {
    eax: MemoryEncryptionInfoEax,
    ebx: u32,
    ecx: u32,
    edx: u32,
}

impl MemoryEncryptionInfo {
    pub(crate) fn new(data: CpuIdResult) -> Self {
        Self {
            eax: MemoryEncryptionInfoEax::from_bits_truncate(data.eax),
            ebx: data.ebx,
            ecx: data.ecx,
            edx: data.edx,
        }
    }

    /// Secure Memory Encryption is supported if set.
    pub fn has_sme(&self) -> bool {
        self.eax.contains(MemoryEncryptionInfoEax::SME)
    }

    /// Secure Encrypted Virtualization is supported if set.
    pub fn has_sev(&self) -> bool {
        self.eax.contains(MemoryEncryptionInfoEax::SEV)
    }

    /// The Page Flush MSR is available if set.
    pub fn has_page_flush_msr(&self) -> bool {
        self.eax.contains(MemoryEncryptionInfoEax::PAGE_FLUSH_MSR)
    }

    /// SEV Encrypted State is supported if set.
    pub fn has_sev_es(&self) -> bool {
        self.eax.contains(MemoryEncryptionInfoEax::SEV_ES)
    }

    /// SEV Secure Nested Paging supported if set.
    pub fn has_sev_snp(&self) -> bool {
        self.eax.contains(MemoryEncryptionInfoEax::SEV_SNP)
    }

    /// VM Permission Levels supported if set.
    pub fn has_vmpl(&self) -> bool {
        self.eax.contains(MemoryEncryptionInfoEax::VMPL)
    }

    /// Hardware cache coherency across encryption domains enforced if set.
    pub fn has_hw_enforced_cache_coh(&self) -> bool {
        self.eax.contains(MemoryEncryptionInfoEax::HWENFCACHECOH)
    }

    /// SEV guest execution


### Alan Francisco Emmanuel Aguilar Fuentes
### Programacion de Redes Unidad 1 Recuperacion 2
edades = input().split()
edades_unicas = sorted(set(edades), key=int, reverse=True)
print(edades_unicas)


新数据点的一组原型中选择原型 I，从这个意义上说，它产生了内核函数的最高值。原型本身作为预测的解释返回。此过程有三个调整参数：内核类型、内核缩放参数和原型数量。所有参数都可以在交叉验证循环中进行优化。这种方法不使用批评。

作为第三种选择，我们可以使用 MMD 批评家，通过检查原型和批评以及它们的模型预测，使任何机器学习模型都可以全球解释。程序如下：

\1.    与 MMD 评论家一起寻找原型和评论。

\2.    像往常一样训练机器学习模型。

\3.    用机器学习模型预测原型和批评的结果。

\4.    分析预测：在哪种情况下算法是错误的？现在，您有一些很好地表示数据的示例，帮助您发现机器学习模型的弱点。

这有什么用呢?还记得谷歌的图像分类器将黑人定义为大猩猩的时候吗?也许他们应该在部署图像识别模型之前使用这里描述的过程。仅仅检查模型的性能是不够的，因为如果99%是正确的，这个问题仍然可能在1%中。标签也可能是错的!遍历所有训练数据并执行完整性检查(如果预测有问题)可能会发现问题，但不可行。但是，选择——比方说几千个——原型和批评是可行的，而且可能暴露了数据的一个问题:它可能显示缺乏深色皮肤的人的图像，这表明数据集的多样性存在问题。或者它可以显示一个或多个深色皮肤的人的图片作为原型，或者(可能)作为对臭名昭著的“大猩猩”分类的批评。我不保证mdd -批评家一定会拦截这类错误，但这是一个很好的完整性检查。

6.3.2 示例

我从mmd -批评家的论文中选取了一些例子。这两个应用程序都基于图像数据集。每个图像由2048维的图像嵌入表示。图像嵌入是一个带有数字的向量，它捕获图像的抽象属性。嵌入向量通常从经过训练的神经网络中提取，用于解决图像识别任务，在这种情况下是ImageNet挑战。利用这些嵌入向量计算图像之间的核距离。

第一个数据集包含来自ImageNet数据集的不同犬种。mmd -批评家应用于两个犬种类别的数据。狗在左边，原型通常显示狗的脸，而批评是没有狗的脸或不同的颜色(如黑色和白色)的图像。在右边，原型包含了


STATUS_FVE_NO_FEATURE_LICENSE = 0xC0210026,
		/// <summary>
		/// Group policy does not permit turning off BitLocker Drive Encryption on roaming data volumes.
		/// </summary>
		STATUS_FVE_POLICY_USER_DISABLE_RDV_NOT_ALLOWED = 0xC0210027,
		/// <summary>
		/// Bitlocker Drive Encryption failed to recover from aborted conversion. This could be due to either all conversion logs being corrupted or the media being write-protected.
		/// </summary>
		STATUS_FVE_CONV_RECOVERY_FAILED = 0xC0210028,
		/// <summary>
		/// The requested virtualization size is too big.
		/// </summary>
		STATUS_FVE_VIRTUALIZED_SPACE_TOO_BIG = 0xC0210029,
		/// <summary>
		/// The drive is too small to be protected using BitLocker Drive Encryption.
		/// </summary>
		STATUS_FVE_VOLUME_TOO_SMALL = 0xC0210030,
		/// <summary>
		/// The callout does not exist.
		/// </summary>
		STATUS_FWP_CALLOUT_NOT_FOUND = 0xC0220001,
		/// <summary>
		/// The filter condition does not exist.
		/// </summary>
		STATUS_FWP_CONDITION_NOT_FOUND = 0xC0220002,
		/// <summary>
		/// The filter does not exist.
		/// </summary>
		STATUS_FWP_FILTER_NOT_FOUND = 0xC0220003,
		/// <summary>
		/// The layer does not exist.
		/// </summary>
		STATUS_FWP_LAYER_NOT_FOUND = 0xC0220004,
		/// <summary>
		/// The provider does not exist.
		/// </summary>
		STATUS_FWP_PROVIDER_NOT_FOUND = 0xC0220005,
		/// <summary>
		/// The provider context does not exist.
		/// </summary>
		STATUS_FWP_PROVIDER_CONTEXT_NOT_FOUND = 0xC0220006,
		/// <summary>
		/// The sublayer does not exist.
		/// </summary>
		STATUS_FWP_SUBLAYER_NOT_FOUND = 0xC0220007,
		/// <summary>
		/// The object does not exist.
		/// </summary>
		STATUS_FWP_NOT_FOUND = 0xC0220008,
		/// <summary>
		/// An object with that GUID or LUID already exists.
		/// </summary>
		STATUS_FWP_ALREADY_EXISTS = 0xC0220009,
		/// <summary>
		/// The object is referenced by other objects and cannot be deleted.
		/// </summary>
		STATUS_FWP_IN_USE = 0xC022000A,
		/// <summary>
		/// The call is not allowed from within a dynamic session.
		/// </summary>
		STATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS = 0xC022000B,
		/// <summary>
		/// The call was made from the wrong session and cannot be completed.
		/// </summary>
		STATUS_FWP_WRONG_SESSION = 0xC022000C,
		/// <summary>
		/// The call must be made from within an explicit transaction.
		/// </summary>
		STATUS_FWP_NO_TXN_IN_PROGRESS = 0xC022000D,
		/// <summary>
		/// The call is not allowed from within an explicit transaction.
		/// </summary>
		STATUS_FWP_TXN_IN_PROGRESS = 0xC022000E,
		/// <summary>
		/// The explicit transaction has been forcibly canceled.
		/// </summary>
		STATUS_FWP_TXN_ABORTED = 0xC022000F,
		/// <summary>
		/// The session has been canceled.
		/// </summary>
		STATUS_FWP_SESSION_ABORTED = 0xC0220010,
		/// <summary>
		/// The call is not allowed from within a read-only transaction.
		/// </summary>
		STATUS_FWP_INCOMPATIBLE_TXN = 0xC0220011,
		/// <summary>
		/// The call timed


             capabilities = setOf(KeySchemeCapability.SHARED_SECRET_DERIVATION)
            )
        }
    }

    @Test
    fun `Should throw IllegalArgumentException when initializing with empty capabilities`() {
        assertThrows<IllegalArgumentException> {
            KeySchemeTemplate(
                codeName = ECDSA_SECP256K1_CODE_NAME,
                algorithmOIDs = listOf(AlgorithmIdentifier(X9ObjectIdentifiers.id_ecPublicKey, SECObjectIdentifiers.secp256k1)),
                algorithmName = "some-algorithm",
                algSpec = null,
                keySize = null,
                capabilities = emptySet()
            )
        }
    }
}@file:JvmName("KeySchemeTemplates")

package net.corda.crypto.cipher.suite.schemes

import net.corda.v5.crypto.KeySchemeCodes.ECDSA_SECP256K1_CODE_NAME
import net.corda.v5.crypto.KeySchemeCodes.ECDSA_SECP256R1_CODE_NAME
import net.corda.v5.crypto.KeySchemeCodes.EDDSA_ED25519_CODE_NAME
import net.corda.v5.crypto.KeySchemeCodes.GOST3410_GOST3411_CODE_NAME
import net.corda.v5.crypto.KeySchemeCodes.RSA_CODE_NAME
import net.corda.v5.crypto.KeySchemeCodes.SM2_CODE_NAME
import net.corda.v5.crypto.KeySchemeCodes.SPHINCS256_CODE_NAME
import net.corda.v5.crypto.KeySchemeCodes.X25519_CODE_NAME
import org.bouncycastle.asn1.ASN1Integer
import org.bouncycastle.asn1.ASN1ObjectIdentifier
import org.bouncycastle.asn1.DLSequence
import org.bouncycastle.asn1.bc.BCObjectIdentifiers
import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers
import org.bouncycastle.asn1.gm.GMObjectIdentifiers
import org.bouncycastle.asn1.nist.NISTObjectIdentifiers
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers
import org.bouncycastle.asn1.sec.SECObjectIdentifiers
import org.bouncycastle.asn1.x509.AlgorithmIdentifier
import org.bouncycastle.asn1.x9.X9ObjectIdentifiers
import org.bouncycastle.jcajce.spec.EdDSAParameterSpec
import org.bouncycastle.jce.ECNamedCurveTable
import org.bouncycastle.jce.spec.GOST3410ParameterSpec
import org.bouncycastle.pqc.jcajce.spec.SPHINCS256KeyGenParameterSpec

/**
 * OID of the EdDSA 25519PH Curve.
 * The OID taken from https://tools.ietf.org/html/draft-ietf-curdle-pkix-00
 */
@JvmField
val ID_CURVE_25519PH = ASN1ObjectIdentifier("1.3.101.112")

/**
 * OID of the X25519 Curve.
 * The OID taken from https://datatracker.ietf.org/doc/html/rfc8410#section-3
 */
@JvmField
val ID_CURVE_X25519 = ASN1ObjectIdentifier("1.3.101.110")

/**
 * DLSequence (ASN1Sequence) for SHA512 truncated to 256 bits, used in SPHINCS-256 key scheme.
 */
@JvmField
val SHA512_256 = DLSequence(arrayOf(NISTObjectIdentifiers.id_sha512_256))

/**
 * Template to create [KeyScheme] for RSA.
 */
@JvmField
val RSA_TEMPLATE = KeySchemeTemplate(
    codeName = RSA_CODE_NAME,
    algorithmOIDs = listOf(AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, null)),
    algorithmName = "RSA",
    algSpec = null,
    keySize = 3072,
    capabilities = setOf(KeySchemeCapability.SIGN)
)

/**
 * Template to create [KeyScheme] for ECDSA with SECP256K1 curve.
 */
@JvmField
val ECDSA_SECP256K1_TEMPLATE = KeySchemeTemplate(
    codeName = ECDSA_SECP256K1_CODE_NAME,
    algorithmOIDs = listOf(AlgorithmIdentifier(X9ObjectIdentifiers.id_


t {
        tokio::select! {
            _ = tokio::signal::ctrl_c() => {
                info!("Got CTRL-C, will start server now. Hit CTRL-C again to exit");
            }
            _ = import_task => {}
        }
    }

    let (port_tx, mut port_rx) = sync::mpsc::unbounded_channel::<u16>();

    let server = {
        let db_filename = db_filename.clone();
        let host = host.clone();
        tokio::spawn(async move {
            let mut port = 5636;
            loop {
                let sqlite_datastore =
                    sqlite::eventstore::SQLiteEventStore::new(db_connection_builder.clone());
                let ds = crate::datastore::Datastore::SQLite(sqlite_datastore);
                let config = crate::server::ServerConfig {
                    port: port.to_string(),
                    host: host.clone(),
                    elastic_url: "".to_string(),
                    elastic_index: "".to_string(),
                    no_check_certificate: false,
                    datastore: "sqlite".to_string(),
                    sqlite_filename: Some(db_filename.clone()),
                    ..crate::server::ServerConfig::default()
                };
                let context = match crate::server::build_context(config.clone(), Some(ds)).await {
                    Ok(context) => Arc::new(context),
                    Err(err) => {
                        error!("Failed to build server context: {}", err);
                        std::process::exit(1);
                    }
                };
                debug!("Successfully build server context");
                match crate::server::build_server_try_bind(&config, context).await {
                    Ok(server) => {
                        debug!("Looks like a successful bind to port {}", port);
                        port_tx.send(port).unwrap();
                        server.await;
                        break;
                    }
                    Err(_) => {
                        warn!(
                            "Failed to start server on port {}, will try {}",
                            port,
                            port + 1
                        );
                        port += 1;
                    }
                }
            }
        })
    };

    let port = port_rx.recv().await.unwrap();
    let url = format!("http://{}:{}", host, port);
    info!("Server started at {}", url);

    let connect_url = if host == "0.0.0.0" {
        format!("http://127.0.0.1:{}", port)
    } else {
        format!("http://{}:{}", host, port)
    };

    if !no_open {
        if let Err(err) = webbrowser::open(&connect_url) {
            error!("Failed to open {} in browser: {}", url, err);
        }

        info!(
            "If your browser didn't open, try connecting to {}",
            connect_url
        );
    }

    tokio::spawn(async move {
        tokio::signal::ctrl_c()
            .await
            .expect("Failed to register CTRL-C handler");
        info!("Got CTRL-C, exiting");
        let _ = std::fs::remove_file(&db_filename);
        let _ = std::fs::remove_file(&format!("{}-shm", &db_filename));
        let _ = std::fs::remove_file(&format!("{}-wal", &db_filename));
        std::process::exit(0);
    });

    server.await?;
    Ok(())
}

async fn run_import(
    db: Arc<Mutex<rusqlite::Connection>>,
    limit: u64,
    input: &str,
)


gle_to_target - current_yaw
        angle_diff = math.atan2(math.sin(angle_diff), math.cos(angle_diff))  # Normalize

        # print(f"🔁 Aligning: angle_diff = {angle_diff:.3f} rad")
        print(f"🧭 angle_diff: {angle_diff:.3f} | yaw: {math.degrees(current_yaw):.2f}°")

        ANGLE_THRESHOLD = 0.25
        MAX_ANGULAR_SPEED = 1.0
        LINEAR_SPEED = 0.2
        ANGULAR_KP = 2.0

        twist = Twist()

        if abs(angle_diff) > ANGLE_THRESHOLD:
                # Count how long we've been rotating
            self.rotation_counter = getattr(self, "rotation_counter", 0) + 1
            if self.rotation_counter > 50:
                print("⚠ Stuck rotating too long, skipping to next waypoint.")
                self.path_index += 1
                self.rotation_counter = 0
                return
            twist.linear.x = 0.0 # small nudge forward
            angular_z = ANGULAR_KP * angle_diff
            if abs(angular_z) < 0.05:
                angular_z = 0.05 * (1 if angular_z > 0 else -1)
            #twist.angular.z = ANGULAR_KP * angle_diff
            twist.angular.z = max(-MAX_ANGULAR_SPEED, min(MAX_ANGULAR_SPEED, ANGULAR_KP * angle_diff))
            #if abs(angle_diff) < 0.4:  # allow nudge if almost aligned
            #    twist.linear.x = 0.05
            #else:
            #    twist.linear.x = 0.0

        else:
            self.rotation_counter = 0  # ✅ Reset if aligned
            twist.angular.z = 0.0
            twist.linear.x = LINEAR_SPEED
            if hasattr(self, "target_heading"):
                del self.target_heading  # 🔁 Reset heading so it recalculates at next step

        self.publisher.publish(twist)

        # Check if we reached this waypoint
        dx = target[0] - current_grid[0]
        dy = target[1] - current_grid[1]

        distance = math.hypot(dx, dy)
        if distance < 0.6:
            self.path_index += 1
            self.stop()  # brief pause before next move
            if hasattr(self, "target_heading"):
                del self.target_heading

    def stop(self):
        self.publisher.publish(Twist())

def main():
    rclpy.init()

    x_dim, y_dim = 100, 100
    goal = (70, 80)
    view_range = 5

    new_map = OccupancyGridMap(x_dim=x_dim, y_dim=y_dim)
    gui = Animation(title="D* Lite Path Planning", width=7, height=7, margin=0,
                    x_dim=x_dim, y_dim=y_dim, start=(0, 0), goal=goal, viewing_range=view_range)
    gui.world = new_map

    slam = SLAM(map=new_map, view_range=view_range)
    follower = CmdVelController(robot_name="bot_name10", resolution=0.1, grid_center=(x_dim // 2, y_dim // 2))
    follower.grid = new_map
    follower.slam = slam

    executor = MultiThreadedExecutor()
    executor.add_node(slam)
    executor.add_node(follower)
    threading.Thread(target=executor.spin, daemon=True).start()

    #populate_grid_from_gazebo(grid=new_map, slam=slam)

    timeout_counter = 0
    while follower.position is None:
        rclpy.spin_once(follower, timeout_sec=0.1)
        timeout_counter += 1
        if timeout_counter > 150:  # ~15 seconds
            print("❌ Timeout: Robot not found in /model_states. Exiting.")
            return
    print(f"✅ Robot found at {follower.position}")

    start_grid = follower.world_to_grid(follower.position)
    gui.set_start(start_grid)
    gui.set_position(start_grid)

    dstar = DStarLite(map=new_map, s_start=start_grid, s_goal=goal)
    initial_vertices, slam_map = slam.rescan(global_position=start_grid)
    dstar.new_edges_and_old_costs = initial_vertices
    dstar.sensed_map = slam_map
    gui.world = slam_map

   # path, g, rhs = dstar.move_and_replan(robot_position=start_grid)
    try:
        path, g, rhs = dstar.move_and_replan(robot_position=start_grid)
         # ✅ Path validity check
        if not path or len(path) < 2:
            print("❌ No valid path found or too short — skipping update.")
        else:
            follower.update_path(path)

    except Exception as e:
        print(f"🔥 Replanning failed: {e}")
        path = []
        dstar.k_m = 0  # optional reset
    follower.update_path(path)

    while not gui.done:
        # GUI needs to keep running
        gui.run_game(path=path)
        if follower.position is not None:
            grid_pos = follower.world_to_grid(follower.position)
            print("📍 Robot position in world:", follower.position, "→ grid:", grid_pos)
        gui.set_position(grid_pos)

           #g


(dataStruct.tp_3_us == sys_tp_t{t_us{TP_3_US}});
  REQUIRE(dataStruct.tp_4_ns == hpc_tp_t{t_ns{TP_4_NS}});

  std::string genjson = JS::serializeStruct(dataStruct);
  JsonData dataStruct2;
  REQUIRE(memcmp(&dataStruct2, &dataStruct, sizeof(JsonData)));
  JS::ParseContext parseContext2(genjson);
  REQUIRE(parseContext2.parseTo(dataStruct2) == JS::Error::NoError);
  REQUIRE(dataStruct2.tp_0_s  == sys_tp_t{t_s {TP_0_S }});
  REQUIRE(dataStruct2.tp_0_ms == sys_tp_t{t_ms{TP_0_MS}});
  REQUIRE(dataStruct2.tp_0_us == sys_tp_t{t_us{TP_0_US}});
  REQUIRE(dataStruct2.tp_0_ns == hpc_tp_t{t_ns{TP_0_NS}});
  REQUIRE(dataStruct2.tp_1_s  == sys_tp_t{t_s {TP_1_S }});
  REQUIRE(dataStruct2.tp_2_ms == sys_tp_t{t_ms{TP_2_MS}});
  REQUIRE(dataStruct2.tp_3_us == sys_tp_t{t_us{TP_3_US}});
  REQUIRE(dataStruct2.tp_4_ns == hpc_tp_t{t_ns{TP_4_NS}});

  JsonData2 dataStruct3;
  JS::ParseContext parseContext3(genjson);
  REQUIRE(parseContext3.parseTo(dataStruct3) == JS::Error::NoError);
  REQUIRE(dataStruct3.tp_0_s  == TP_0_S);
  REQUIRE(dataStruct3.tp_0_ms == TP_0_S);
  REQUIRE(dataStruct3.tp_0_us == TP_0_S);
  REQUIRE(dataStruct3.tp_0_ns == TP_0_S);
  REQUIRE(dataStruct3.tp_1_s  == TP_1_S );
  REQUIRE(dataStruct3.tp_2_ms == TP_2_MS);
  REQUIRE(dataStruct3.tp_3_us == TP_3_US);
  REQUIRE(dataStruct3.tp_4_ns == TP_4_NS);
}
} // namespace
/* auto-generated on 2025-09-29 20:34:35 -0700. version 4.0.7 Do not edit! */
/* including simdjson.cpp:  */
/* begin file simdjson.cpp */
#define SIMDJSON_SRC_SIMDJSON_CPP

/* including base.h: #include <base.h> */
/* begin file base.h */
#ifndef SIMDJSON_SRC_BASE_H
#define SIMDJSON_SRC_BASE_H

/* including simdjson/base.h: #include <simdjson/base.h> */
/* begin file simdjson/base.h */
/**
 * @file Base declarations for all simdjson headers
 * @private
 */
#ifndef SIMDJSON_BASE_H
#define SIMDJSON_BASE_H

/* including simdjson/common_defs.h: #include "simdjson/common_defs.h" */
/* begin file simdjson/common_defs.h */
#ifndef SIMDJSON_COMMON_DEFS_H
#define SIMDJSON_COMMON_DEFS_H

#include <cassert>
/* including simdjson/compiler_check.h: #include "simdjson/compiler_check.h" */
/* begin file simdjson/compiler_check.h */
#ifndef SIMDJSON_COMPILER_CHECK_H
#define SIMDJSON_COMPILER_CHECK_H

#ifndef __cplusplus
#error simdjson requires a C++ compiler
#endif

#ifndef SIMDJSON_CPLUSPLUS
#if defined(_MSVC_LANG) && !defined(__clang__)
#define SIMDJSON_CPLUSPLUS (_MSC_VER == 1


   assert False
    return ''
    '# jackboxes_alkalinity_pyramid -> manpower_reviews_gloves'
    e8gy4__nc6r[0]: 0.0 = uuhwker9cq4
    zj4pn4z1nlx
    '# jackboxes_alkalinity_pyramid -> manpower_reviews_gloves'
    import ol3hfrw0li0, clreybd9enf, e2jdgjpu1gj as g7ghd26yeeg, v2wovzksrir
    nonlocal byyautcnuru
    yim3ma3dt7f &= oi27nr6w4qx
@{False, bhwerf9hr5e}
def ciwfjwqv7db():
    w43i_bws0xa = fxc4osmqs2y = reyjuc73z2y = ds8s3w5xrlf = m1sbdw6039v = 0j
    pass
    '# jackboxes_alkalinity_pyramid -> manpower_reviews_gloves'
    del x56vfkopg9k
    global xkeu4pah4br
    raise trvy3qh_5hm
    ud2z6rm_v07 = None
    '# jackboxes_alkalinity_pyramid -> manpower_reviews_gloves'
    nonlocal y8253w385gr
    assert o3wbdbci65d
    raise b''
    wecn6wnox0p: r3npnz7gwtc = un19vwyikmc
    '# jackboxes_alkalinity_pyramid -> manpower_reviews_gloves'
def zwl9n8ff7r5(fg733s0frkn: ptrgtfh8_37, tgbhtsd5v5d, as85vkep1ok, jkrwnhdo5sf: n9g653c38h2, ds0jhogfeme: cnjbeztpzm6, k53vh_5z6ws, qpfpuvtwtqk, ipposn_gdkf: bjfexkamrey, pm1wr1zz_37, wii4fxfrev6: vebz8pd7rnh):
    tezjv79ur9g -= ''
    '# jackboxes_alkalinity_pyramid -> manpower_reviews_gloves'
    0j
    '# jackboxes_alkalinity_pyramid -> manpower_reviews_gloves'
    from dx5c5fnpfl1 import i1zp8sb6y_l as aqkz32fq1l2, fepz5gy8sb3, ln_5iaf647c, cs4o_2u3v97 as xnfbjf6mo0i, o792_erc59a, qaeju8rk3dd as bgyoqjjzkko, jvkxa_v652g, moep4jo6n6c as le_7958flim, dxl7e8yr1wl as qn_lc_4htht, fb4hfyfi8fj
    pass
    import tt484rxd5kw as u6n16uc6upm, lfuqy3bp9dn, qfleinlo690 as uxcowxz0l_3, njzaco_7cz9, gzq54z2yoz2 as mau1c7jrhcv
    return
    del oisg_1blna8
    global veroahs98vn
    import sbz3lu69fcv as zqz9m3zqbrz, kuxg0lrd4gm, bck48eoj8m5 as jjb3535feo5, iu_wlno2cf8
    assert a780zwn7fgx
    '# jackboxes_alkalinity_pyramid -> manpower_reviews_gloves'
@None(ewfbrlwws17, b'', i3ci78q5aqu, gtfolli9zhr=aayqekm50ro, ivy_hk9_ku2=False, q8xbzcd2git='')
@await c7amnmis8j2
def adse7ji0ata(pegmxu40mjv, vro7qj77a_9: ciutq7css0m, va_xt6tamfi: b7sq9ti9vy1, fq0cxs8ifch, h2nh_15vwhv: wwc9av9zgq5):
    0.0.n7mhng2fewo /= nymvy0v1mu3
    wo5g6cu_98v = tmuljimtims
    raise 0
    global l0ozura3aw4
    '# jackboxes_alkalinity_pyramid -> manpower_reviews_gloves'
    nonlocal b0qj6qlx2pv
    from gy9azj70e4_ import yz5o5z0zb1h, tvgxl1yii5g
    del vj69yc44bqk
    ''
    '# jackboxes_alkalinity_pyramid -> manpower_reviews_gloves'
    gosqt1vj9rm: rwjq54sc1w7 = n962jw3napn
    pass
    '# jackboxes_alkalinity_pyramid -> manpower_reviews_gloves'


_field_thumbnails/youtube/2rj2sGLBV2I.jpg?itok=hcyjo0WZ" alt="" />

„Für Mensch und Umwelt″ ist der Leitspruch des UBA und bringt auf den Punkt, wofür wir da sind. In diesem Video geben wir Einblick in unsere Arbeit.

Umweltbundesamt

Kontakt
<address>Wörlitzer Platz 1
 06844 Dessau-Roßlau</address><address>Bitte kontaktieren Sie uns bevorzugt per E-Mail: buergerservice [at] uba [dot] de</address><address>Telefonisch erreichen Sie uns Mo - Fr zu den Servicezeiten 9.00 – 15.00 Uhr unter: +49-340-2103-2416</address><address>Fax: +49-340-2104-2285</address><address> </address>

 Das UBA

Wer wir sind

Was wir tun

Unsere Geschichte

Das UBA als Forschungseinrichtung

<li class="collaps


// (c) Copyright HutongGames, LLC 2010-2013. All rights reserved.

using UnityEngine;

namespace HutongGames.PlayMaker.Actions
{
	[ActionCategory(ActionCategory.Time)]
	[Tooltip("Multiplies a Float by Time.deltaTime to use in frame-rate independent operations. E.g., 10 becomes 10 units per second.")]
	public class PerSecond : FsmStateAction
	{
		[RequiredField]
        [Tooltip("The float value to multiply be Time.deltaTime.")]
		public FsmFloat floatValue;
		[RequiredField]
		[UIHint(UIHint.Variable)]
        [Tooltip("Store the result in a float variable.")]
		public FsmFloat storeResult;
        [Toolti


vscl.t r302, r302, s001
    vsub.s s102, s102, s011
    vsub.s s212, s212, s011
    vsub.s s322, s322, s011
    sv.q r102, 0($a1)
    usv.q r202, 12($a1)
    svt s302, s312, s322, $a1, 24
    jr $ra

gfunc psplaMat3AddU
    singleOpMat3U vadd
    jr $ra

gfunc psplaMat4AddU
    singleOpMat4U vadd
    jr $ra

gfunc psplaMat3AddA
    singleOpMat3A vadd
    jr $ra

gfunc psplaMat4AddA
    singleOpMat4A vadd
    jr $ra

gfunc psplaMat3SubtractU
    singleOpMat3U vsub
    jr $ra

gfunc psplaMat4SubtractU
    singleOpMat4U vsub
    jr $ra

gfunc psplaMat3SubtractA
    singleOpMat3A vsub
    jr $ra

gfunc psplaMat4SubtractA
    singleOpMat4A vsub
    jr $ra

gfunc psplaMat3ScaleU
    pushf $f0
    lm3u 0, $a0
    popf $f0
    mfc1 $t0, $f12
    mtv $t0, s200
    vmscl.t m100, m000, s200
    usv.q r100, 0($a1)
    usv.q r101, 12($a1)
    svt s102, s112, s122, $a1, 24
    jr $ra

gfunc psplaMat4ScaleU
    pushf $f0
    lm4u 0, $a0
    popf $f0
    mfc1 $t0, $f12
    mtv $t0, s200
    vmscl.q m100, m000, s200
    usv.q r100, 0($a1)
    usv.q r101, 16($a1)
    usv.q r102, 32($a1)
    usv.q r103, 48($a1)
    jr $ra

gfunc psplaMat3ScaleA
    lm3a 0, $a0
    mfc1 $t0, $f12
    mtv $t0, s200
    vmscl.t m100, m000, s200
    sv.q r100, 0($a1)
    usv.q r101, 12($a1)
    usv.q r102, 24($a1)
    jr $ra

gfunc psplaMat4ScaleA
    lm4a 0, $a0
    mfc1 $t0, $f12
    mtv $t0, s200
    vmscl.q m100, m000, s200
    sv.q r100, 0($a1)
    sv.q r101, 16($a1)
    sv.q r102, 32($a1)
    sv.q r103, 48($a1)
    jr $ra

gfunc psplaMat2MultiplyU
    sub $sp, $sp, 8
    s.s $f0, 4($sp)
    s.s $f4, 0($sp)
    lm2u 0, $a0
    lm2u 1, $a1
    l.s $f4, 0($sp)
    l.s $f0, 4($sp)
    add $sp, $sp, 8
    vmmul.p m200, m000, m100
    vmov.p r220, r201
    usv.q r200, 0($a2)
    jr $ra

gfunc psplaMat3MultiplyU
    sub $sp


= vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry );\n#ifdef DOUBLE_SIDED\n\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\n\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry );\n#endif\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x,


LList;
		public var percent:Number = 0;
		public var onload:Function;
		public var onerror:Function;
		public var onpreload:Function;
		public var onprogress:Function;

		private var loader:URLLoader;

		public function XMLLoder(url:String) : void
		{
			this.url = url;

			xml = new XML();
			xml.ignoreWhite = true;

            loader = new URLLoader();
            loader.load(new URLRequest(url));
			loader.addEventListener(Event.OPEN, preloadHandler);
			loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
			loader.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            loader.addEventListener(Event.COMPLETE, loadedHandler);
		}

		private function preloadHandler(event:Event) : void
        {
			onpreload = onpreload || new Function;
			onpreload(event);
		}

		private function errorHandler(event:IOErrorEvent) : void
		{
			onerror = onerror || new Function;
			onerror(event);
		}

		private function progressHandler(event:ProgressEvent) : void
		{
			percent = Math.round((event.bytesLoaded / event.bytesTotal) * 100);

			onprogress = onprogress || new Function;
			onprogress(event, percent);
		}

		private function loadedHandler(event:Event) : void
		{
			xml = XML(loader.data);

			onload = onload || new Function;
			onload(xml);
		}
	}

}</textarea><textarea id="perl-code">#!/usr/bin/perl
use strict;
use warnings;

print "Hello, World...\n";
</textarea>
           <textarea id="go-code">package main

import (
    "github.com/astaxie/beego"
)

type MainController struct {
    beego.Controller
}

func (this *MainController) Get() {
    this.Ctx.WriteString("hello world")
}

func main() {
    beego.Router("/", &MainController{})
    beego.Run()
}</textarea><textarea id="python-code">#!/usr/bin/env python

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()</textarea>
           <textarea id="css-code">    body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,
    th,td,hr,button,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section {
        margin:0;padding:0;
    }

    article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary {
        display: block;
    }

    audio, canvas, video {
        display: inline-block;
    }

    body, button, input, select, textarea {
        font:12px/1.5 Tahoma, "Hiragino Sans GB", "Microsoft Yahei", Arial;
    }

    body {
        font-size:12px;
        color:#666;
        background:#fff url(../images/) no-repeat left top;
    }

    a {
        color:#444;
        text-decoration: none;
    }

    a:hover {
        color:#065BC2;
        text-decoration: none;
    }

    .clear {
        zoom:1;
    }

    .clear:after {
        content:"";
        height:0;
        visibility:hidden;
        clear:both;
        display:block;
    }

    img {
        border:none;
        vertical-align: middle;
    }

    ul {
        list-style: none;
    }</textarea>

                <textarea style="display:none;"></textarea>


/JavaEnvUtils.html#JAVA_1_0">JAVA_1_0 -
Static variable in class org.apache.tools.ant.util.JavaEnvUtils

Version constant for Java 1.0

JAVA_1_1 -
Static variable in class org.apache.tools.ant.Project

Deprecated. since 1.5.x.
             Use JavaEnvUtils.JAVA_1_1 instead.

JAVA_1_1 -
Static variable in class org.apache.tools.ant.util.JavaEnvUtils

Version constant for Java 1.1

JAVA_1_2 -
Static variable in class org.apache.tools.ant.Project

Deprecated. since 1.5.x.
             Use JavaEnvUtils.JAVA_1_2 instead.

JAVA_1_2 -
Static variable in class org.apache.tools.ant.util.JavaEnvUtils

Version constant for Java 1.2

JAVA_1_3 -
Static variable in class org.apache.tools.ant.Project

Deprecated. since 1.5.x.
             Use JavaEnvUtils.JAVA_1_3 instead.

JAVA_1_3 -
Static variable in class org.apache.tools.ant.util.JavaEnvUtils

Version constant for Java 1.3

JAVA_1_4 -
Static variable in class org.apache.tools.ant.Project

Deprecated. since 1.5.x.
             Use <A HREF="./org/apache/tools/ant/util/JavaEn


eList

componentList

javax.swing.JComboBox componentList

desktop

BImageDesktop desktop

splitPane

javax.swing.JSplitPane splitPane

xmlSplit

javax.swing.JSplitPane xmlSplit

tree

javax.swing.JTree tree

treemodel

javax.swing.tree.DefaultTreeModel treemodel

xmlTable

BXMLTable xmlTable

top

BTreeNode top

root

BElement root

db

BDB db

xmlFile

java.lang.String xmlFile

projectName

java.lang.String projectName

</A


elling progress

Config.ShowTimer    = true  -- Shows the timer countdown withing the dial
Config.ShowProgress = false -- Shows the progress within the dial

Config.Easing       = "easeLinear" -- The easing used for the dial animation - see rprogress/ui/js/easings.js

Config.DisableControls = {
    Mouse           = false,    -- Disable mouse controls until progress is complete
    Player          = false,    -- Disable player movement until progress is complete
    Vehicle         = false     -- Disable vehicle control until progress is complete
}

Config.onStart      = function()end
Config.onComplete   = function()end

Config.MiniGameOptions = {
    MaxAngle = 240,
    Rotation = -120,
    Radius = 100,
    Stroke = 30,
    Difficulty = {
        Custom = {
            Zone = 40,         -- The percentage of the dial that is the trigger zone (lower = harder)
            Duration = 1000    -- Time in milliseconds for the dial to fill in one direction (lower = harder)
        },
        Easy = {
            Zone = 30,
            Duration = 500
        },
        Medium = {
            Zone = 20,
            Duration = 500
        },
        Hard = {
            Zone = 10,
            Duration = 500
        }
    }
}


/*      */
/*      */     public String getLanguage()
/*      */     {
/*  517 */       return "pl";
/*      */     }
/*      */
/*      */     public int match(CharsetDetector det)
/*      */     {
/*  522 */       return match(det, ngrams, byteMap);
/*      */     }
/*      */   }
/*      */
/*      */   static class CharsetRecog_8859_2_ro extends CharsetRecog_sbcs.CharsetRecog_8859_2
/*      */   {
/*  528 */     private static int[] ngrams = { 2122016, 2122083, 2122593, 2122597, 2122607, 2122613, 2122853, 2122857, 2124897, 2125153, 2125925, 2125938, 2126693, 2126819, 2127214, 2144873, 2158190, 6365283, 6365284, 6386277, 6386720, 6386789, 6386976, 6513010, 6516590, 6518048, 6546208, 6579488, 6627425, 6627427, 6627428, 6627440, 6627443, 6644000, 6646048, 6646885, 6647412, 6648692, 6889569, 6889571, 6889572, 6889584, 6907168, 6908192, 6909472, 7102752, 7103776, 7106418, 7107945, 7234848, 7238770, 7303712, 7365998, 7496992, 7497057, 7501088, 7594784, 7628064, 7631477, 7660320, 7694624, 7695392, 12216608, 15625760 };
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */     public String getLanguage()
/*      */     {
/*  537 */       return "ro";
/*      */     }
/*      */
/*      */     public int match(CharsetDetector det)
/*      */     {
/*  542 */       return match(det, ngrams, byteMap);
/*      */     }
/*      */   }
/*      */
/*      */   static abstract class CharsetRecog_8859_5 extends CharsetRecog_sbcs
/*      */   {
/*  548 */     protected static byte[] byteMap = { 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 0, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 32, 32, 32, 32, 32, 32, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, 32, -2, -1, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38


//HEADER_GOES_HERE
#ifndef __TOWNERS_H__
#define __TOWNERS_H__

extern int storeflag; // weak
extern int sgnCowMsg; // weak
extern int numtowners; // idb
extern DWORD sgdwCowClicks; // weak
extern BOOL bannerflag; // weak // unused 0x6AAC28
extern BOOL boyloadflag; // weak
extern BYTE *pCowCels; // idb
extern TownerStruct towner[16];

int GetActiveTowner(int t);
void SetTownerGPtrs(BYTE *pData, BYTE **pAnim);
void NewTownerAnim(int tnum, unsigned char *pAnim, int numFrames, int Delay);
void InitTownerInfo(int i, long w, BOOL sel, int t, int x, int y, char ao, int tp);
void InitQstSnds(int i);
void InitSmith();
void InitBarOwner();
void InitTownDead();
void InitWitch();
void InitBarmaid();
void InitBoy();
void InitHealer();
void InitTeller();
void InitDrunk();
void InitCows();
void InitTowners();
void FreeTownerGFX();
void TownCtrlMsg(int i);
void TownBlackSmith();
void TownBarOwner();
void TownDead();
void TownHealer();
void TownStory();
void TownDrunk();
void TownBoy();
void TownWitch();
void TownBarMaid();
void TownCow();
void ProcessTowners();
ItemStruct *PlrHasItem(int pnum, int item, int &i);
void TownerTalk(int first, int t);
void TalkToTowner(int p, int t);
void CowSFX(int pnum);

/* data */

extern char AnimOrder[6][148];
extern int TownCowX[3];
extern int TownCowY[3];
extern int TownCowDir[3];
extern int cowoffx[8];
extern int cowoffy[8];
extern int Qtalklist[11][16];
extern int CowPlaying;

#endif /* __TOWNERS_H__ */


/*
 * Copyright (C) 2024-present, Guanyou.Chen. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef SERVICES_COM_ANDROID_SERVER_AM_ACTIVITYMANAGERSERVICE_H_
#define SERVICES_COM_ANDROID_SERVER_AM_ACTIVITYMANAGERSERVICE_H_

#include "java/lang/Object.h"

namespace com {
namespace android {
namespace server {
namespace am {

class ActivityManagerService : public java::lang::Object {
public:
    ActivityManagerService(uint32_t obj) : java::lang::Object(obj) {}
    ActivityManagerService(java::lang::Object& obj) : java::lang::Object(obj) {}
    ActivityManagerService(art::mirror::Object& obj) : java::lang::Object(obj) {}

    int dump(int argc, char* const argv[]);
    static int Main(int argc, char* const argv[]);
};

} // namespace am
} // namespace server
} // namespace android
} // namespace com

#endif // SERVICES_COM_ANDROID_SERVER_AM_ACTIVITYMANAGERSERVICE_H_


adius;
            mBorderRadii[3] = mCornerRadius;
            mBorderRadii[4] = mCornerRadius;
            mBorderRadii[5] = mCornerRadius;
            mBorderRadii[6] = mCornerRadius;
            mBorderRadii[7] = mCornerRadius;
        } else {
            boolean isRtl = isRtl();
            mBorderRadii[0] = isRtl ? mCornerRadiusTopRight : mCornerRadiusTopLeft;
            mBorderRadii[1] = isRtl ? mCornerRadiusTopRight : mCornerRadiusTopLeft;
            mBorderRadii[2] = isRtl ? mCornerRadiusTopLeft : mCornerRadiusTopRight;
            mBorderRadii[3] = isRtl ? mCornerRadiusTopLeft : mCornerRadiusTopRight;
            mBorderRadii[4] = isRtl ? mCornerRadiusBottomLeft : mCornerRadiusBottomRight;
            mBorderRadii[5] = isRtl ? mCornerRadiusBottomLeft : mCornerRadiusBottomRight;
            mBorderRadii[6] = isRtl ? mCornerRadiusBottomRight : mCornerRadiusBottomLeft;
            mBorderRadii[7] = isRtl ? mCornerRadiusBottomRight : mCornerRadiusBottomLeft;
        }
        mBackgroundNormal.setCornerRadii(mBorderRadii);
        mBackgroundPressed.setCornerRadii(mBorderRadii);
        mBackgroundUnable.setCornerRadii(mBorderRadii);
        mBackgroundChecked.setCornerRadii(mBorderRadii);
        mBackgroundSelected.setCornerRadii(mBorderRadii);
    }

    /**
     * 设置View大小变化监听,用来更新渐变半径
     */
    private void addOnGlobalLayoutListener() {
        if (mView == null) return;
        mView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
            @Override
            public void onViewAttachedToWindow(View v) {
                ViewTreeObserver observer = v.getViewTreeObserver();
                observer.addOnGlobalLayoutListener(RBaseHelper.this);
            }

            @Override
            public void onViewDetachedFromWindow(View v) {
                ViewTreeObserver observer = v.getViewTreeObserver();
                observer.removeGlobalOnLayoutListener(RBaseHelper.this);
                v.removeOnAttachStateChangeListener(this);
            }
        });
    }

    /**
     * 获取背景颜色
     * 备注:
     * 数组[0]:背景类型(1:单一颜色 2:颜色数组 3:图片资源)
     * 数组[1]:单一颜色,可能为0
     * 数组[2]:颜色数组,可能为null
     * 数组[3]:图片资源drawable,可能为null
     *
     * @param a
     * @param styleableRes
     * @return
     */
    private Object[] getBackgroundInfo(TypedArray a, @StyleableRes int styleableRes) {
        int bgType = BG_TYPE_COLOR;//背景类型
        int bgColor = 0;//单一颜色
        int[] bgColorArray = null;//多个颜色
        Drawable drawable = null;//图片资源

        //resId==0表示直接使用#cccccc这种模式，不为0说明可以获取到资源类型
        int resId = a.getResourceId(styleableRes, 0);
        if (resId == 0) {//#cccccc
            bgColor = a.getColor(styleableRes, 0);
            bgType = BG_TYPE_COLOR;
        } else {//其他资源类型
            String typeName = mContext.getResources().getResourceTypeName(resId);
            if ("array".equals(typeName)) {//color-array
                bgType = BG_TYPE_COLOR_ARRAY;
                String[] strArray = mContext.getResources().getStringArray(resId);
                int[] intArray = mContext.getResources().getIntArray(resId);
                int length = Math.min(intArray.length, strArray.length);
                bgColorArray = new int


// Copyright (c) 2010-2013 SIL International
// This software is licensed under the LGPL, version 2.1 or later
// (http://www.gnu.org/licenses/lgpl-2.1.html)
//
// File: ImportDateFormatDlg.cs
// Responsibility: mcconnel
//
// <remarks>
// </remarks>

using System;
using System.Windows.Forms;
using SIL.FieldWorks.Common.FwUtils;

namespace SIL.FieldWorks.LexText.Controls.DataNotebook
{
	/// ----------------------------------------------------------------------------------------
	/// <summary>
	///
	/// </summary>
	/// ----------------------------------------------------------------------------------------
	public partial class ImportDateFormatDlg : Form
	{
		private IHelpTopicProvider m_helpTopicProvider;
		bool m_fGenDate;
		// This example DateTime value must match that found in DateFieldOptions.cs!
		DateTime m_dtExample = new DateTime(1999, 3, 29, 15, 30, 45);

		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Initializes a new instance of the <see cref="T:ImportDateFormatDlg"/> class.
		/// </summary>
		/// -------------------------------------------------------------


", TC_PASS, "ok");
    test_passed = true;
  } else {
    SDK_RPRINT(test, "TSMutexCreate", "TestCase1", TC_FAIL, "mutex can't be grabbed twice from the same thread");
    SDK_RPRINT(test, "TSMutexLock", "TestCase1", TC_FAIL, "mutex can't be grabbed twice from the same thread");
    SDK_RPRINT(test, "TSMutexLockTry", "TestCase1", TC_FAIL, "mutex can't be grabbed twice from the same thread");
  }

  TSMutexUnlock(mutexp);
  SDK_RPRINT(test, "TSMutexUnLock", "TestCase1", TC_PASS, "ok");

  if (test_passed) {
    *pstatus = REGRESSION_TEST_PASSED;
  } else {
    *pstatus = REGRESSION_TEST_FAILED;
  }
}

/* IOBuffer */

//////////////////////////////////////////////
//       SDK_API_TSIOBuffer
//
// Unit Test for API: TSIOBufferCreate
//                    TSIOBufferWaterMarkGet
//                    TSIOBufferWaterMarkSet
//////////////////////////////////////////////

REGRESSION_TEST(SDK_API_TSIOBufferCreate)(RegressionTest *test, int /* atype ATS_UNUSED */, int *pstatus)
{
  bool test_passed = false;
  *pstatus         = REGRESSION_TEST_INPROGRESS;

  int64_t watermark = 1000;

  TSIOBuffer bufp = TSIOBufferCreate();

  TSIOBufferWaterMarkSet(bufp, watermark);
  watermark = TSIOBufferWaterMarkGet(bufp);

  if (watermark == 1000) {
    SDK_RPRINT(test, "TSIOBufferCreate", "TestCase1", TC_PASS, "ok");
    SDK_RPRINT(test, "TSIOBufferWaterMarkGet", "TestCase1", TC_PASS, "ok");
    SDK_RPRINT(test, "TSIOBufferWaterMarkSet", "TestCase1", TC_PASS, "ok");
    test_passed = true;
  } else {
    SDK_RPRINT(test, "TSIOBufferCreate", "TestCase1", TC_FAIL, "watermark failed");
    SDK_RPRINT(test, "TSIOBufferWaterMarkGet", "TestCase1", TC_FAIL, "watermark failed");
    SDK_RPRINT(test, "TSIOBufferWaterMarkSet", "TestCase1", TC_FAIL, "watermark failed");
  }

  TSIOBufferDestroy(bufp);

  // Status of the whole test
  *pstatus = ((test_passed == true) ? REGRESSION_TEST_PASSED : REGRESSION_TEST_FAILED);
  return;
}

//////////////////////////////////////////////
//       SDK_API_TSIOBuffer
//
// Unit Test for API: TSIOBufferSizedCreate
//                    TSIOBufferProduce
//                    TSIOBufferReaderAlloc
//                    TSIOBufferReaderAvail
//////////////////////////////////////////////

REGRESSION_TEST(SDK_API_TSIOBufferProduce)(RegressionTest *test, int /* atype ATS_UNUSED */, int *pstatus)
{
  bool test_passed = false;
  *pstatus         = REGRESSION_TEST_INPROGRESS;

  TSIOBuffer bufp = TSIOBufferSizedCreate(TS_IOBUFFER_SIZE_INDEX_4K); // size is 4096

  TSIOBufferReader readerp = TSIOBufferReaderAlloc(bufp);

  TSIOBufferProduce(bufp, 10);

  int64_t reader_avail = TSIOBufferReaderAvail(readerp);
  if (reader_avail == 10) {
    SDK_RPRINT(test, "TSIOBufferProduce", "TestCase1", TC_PASS, "ok");
    SDK_RPRINT(test, "TSIOBufferReaderAlloc", "TestCase1", TC_PASS, "ok");
    SDK_RPRINT(test, "TSIOBufferReaderAvail", "TestCase1", TC_PASS, "ok");
    te


->bins[_ii]) && (obj) != UTHASH_DBIN)

  regex_t *UTRegexCompile(char *pattern_str);
  int UTRegexExtractInt(regex_t *rx, char *str, int nvals, int *val1, int *val2, int *val3);

// UTQ: doubly-linked list (requires *prev and *next fields in elements)

#define UTQ(type)      \
  struct {	       \
    type *head;	       \
    type *tail;	       \
  }

#define UTQ_HEAD(q) (q).head
#define UTQ_TAIL(q) (q).tail
#define UTQ_EMPTY(q) ((q).head == NULL)
#define UTQ_CLEAR(q) do { (q).head = NULL; (q).tail = NULL; } while(0)

#define UTQ_ADD_HEAD(q, obj)			\
  do {						\
    (obj)->next = (q).head;			\
    (obj)->prev = NULL;				\
    if((q).head) (q).head->prev = (obj);	\
    else {					\
      (q).tail = (obj);				\
      (q).head = (obj);				\
    }						\
  } while(0)

#define UTQ_ADD_TAIL(q, obj)			\
  do {						\
    if((q).tail) {				\
      (q).tail->next = obj;			\
      (obj)->prev = (q).tail;			\
    }						\
    else {					\
      (q).head = obj;				\
      (obj)->prev = NULL;			\
    }						\
    (q).tail = obj;				\
    (obj)->next = NULL;				\
  } while(0)

#define UTQ_INSERTAFTER(q, obj, after)			\
  do {							\
    (obj)->next = (after)->next;			\
    (obj)->prev = (after);				\
    if((after)->next) (after)->next->prev = (obj);	\
    else (q).tail = (obj);				\
    (after)->next = (obj);				\
  } while(0)

#define UTQ_REMOVE(q, obj)				\
  do {							\
    if((obj)->prev) (obj)->prev->next = (obj)->next;	\
    else (q).head = (obj)->next;			\
    if((obj)->next) (obj)->next->prev = (obj)->prev;	\
    else (q).tail = (obj)->prev;			\
    (obj)->next = (obj)->prev = NULL;			\
  } while(0)

#define UTQ_REMOVE_HEAD(q, result)		\
  do {						\
    result = (q).head;				\
    UTQ_REMOVE(q, result);			\
  } while(0)

#define UTQ_REMOVE_TAIL(q, result)		\
  do {						\
    result = (q).tail;				\
    UTQ_REMOVE(q, result);			\
  } while(0)

#define UTQ_WALK(q, ptr) for((ptr)=(q).head; (ptr); (ptr)=(ptr)->next)

#if defined(__cplusplus)
} /* extern "C" */
#endif

#endif /* UTIL_H */