n.lpstrInitialDir)
			combo.SelectString (-1, m_ofn.lpstrInitialDir);
	}

	combo.Detach ();

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

// ***************************************************************************

// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010  Winch Gate Property Limited
//
// This source file has been modified by the following contributors:
// Copyright (C) 2019  Jan BOON (Kaetemi) <jan.boon@kaetemi.be>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero 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 Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

#include "stdafx.h"

#include <sstream>

#include "editor_primitive.h"
#include "generate_primitive.h"
#include "world_editor.h"
#include "world_editor_doc.h"

using namespace std;
using namespace NLMISC;
using namespace NLLIGO;
using namespace NL3D;
using namespace NLGEORGES;

// ***************************************************************************

/*

Implementation notes:
---------------------

- Load all the "landscape zones" overlapped by the source zone
- Build a quad tree with all primitives to check overlapping
- List all the plants used the source zone
- Sort them by size (Place first the biggest one)
- For each plants in the sorted list
	- Compute a grid position depending the plant size and the plant density
	- Jitter it with a random function
	- Test if the final position is valid
		- Check the primitive doesn't overlappe another primitive (using the quad tree)
		- Check the final position is posed over the landscape, not in a hole
		- Make some Z samples (Z_SAMPLE_COUNT, hard coded) around the position with the collision radius
			- For each check if the delta z is behind a fixed (Z_THRESHOLD, hard coded) threshold
*/

// *** Features

// Enable / disable z position test
#define TEST_Z_POSITION

// *** todo : pass this as generation parameters

// Test N time max to place a point
#define GENERATE_PRIMITIVE_TEST_COUNT 4

// Small epsilon for triangle selection
#define SELECTION_EPSILON (0.1f)

// Z sample to do around the position to check Z
#define Z_SAMPLE_COUNT 8

// Z threshold used to validate each sample
#define Z_THRESHOLD (0.8f)

// ***************************************************************************

CGeneratePrimitive::CGeneratePrimitive ()
{
	_Landscape = NULL;
	/* todo COL_USING_VISUAL_COLLISION_MANAGER
	_VCM = NULL;
	_VCE = NULL; */
}

//


## [5、Doris源码？]()

###### [6、Doris学习资料？]()
* [Doris中文官网](http://doris.apache.org/master/zh-CN/)
* [Doris官网中文文档](http://doris.apache.org/master/zh-CN/installing/compilation.html)
* [Doris官网](http://doris.apache.org/)
* [Doris文档](http://doris.apache.org/documentation/cn/index.html)
* [GitHub代码-百度](https://github.com/baidu-doris/incubator-doris)
* [GitHub代码-Apache](https://github.com/apache/incubator-doris)
* [GitHub - wiki](https://github.com/apache/incubator-doris/wiki)

##### 1、HBase逻辑视图基本概念
    行键、列簇、列限定符、单元格、时间戳
    1）、table：表，一个表包含多行数据。
    2）、row：行，一行数据包含一个唯一标识rowkey、多个column以及对应的值。
    在HBase中，一张表中所有row都按照rowkey的字典序由小到大排序。
    3）、column：列，与关系型数据库中的列不同，HBase中的column由columnfamily（列簇）
    以及qualif ier（列名）两部分组成，两者中间使用":"相连。
    4）、timestamp：时间戳，每个cell在写入HBase的时候都会默认分配一个时间戳作为该cell的版本，
    当然，用户也可以在写入的时候自带时间戳。
    5）、cell：单元格，由五元组（row, column, timestamp, type, value）组成的结构，
    其中type表示Put/Delete这样的操作类型，timestamp代表这个cell的版本。
    这个结构在数据库中实际是以KV结构存储的，其中（row, column,timestamp, type）是K，value字段对应KV结构的V。

##### 1、State和CheckPoint
    State一般指一个具体的Task/Operator的状态，State数据默认保存在Java的堆内存中。
    而CheckPoint（可以理解为CheckPoint是把State数据持久化存储了）则表示了一个Flink Job在一个特定时刻的一份
    全局状态快照，即包含了所有Task/Operator的状态。

    Task是Flink中执行的基本单位，Operator是算子（Transformation）。

##### 2、Flink state类型
    State可以被记录，在失败的情况下数据还可以恢复。Flink中有以下两种基本类型的


ASYNC_STMT_PCALLBACK
// #[cfg(feature = "v3_8")]
// SQL_ATTR_ASYNC_STMT_PCONTEXT

//=====================================================================================//

#[odbc_type(SQLULEN)]
pub struct Noscan;
pub const SQL_NOSCAN_OFF: Noscan = Noscan(0);
pub const SQL_NOSCAN_ON: Noscan = Noscan(1);

#[odbc_type(SQLULEN)]
pub struct CursorType;
pub const SQL_CURSOR_FORWARD_ONLY: CursorType = CursorType(0);
pub const SQL_CURSOR_KEYSET_DRIVEN: CursorType = CursorType(1);
pub const SQL_CURSOR_DYNAMIC: CursorType = CursorType(2);
pub const SQL_CURSOR_STATIC: CursorType = CursorType(3);

#[odbc_type(SQLULEN)]
pub struct Concurrency;
pub const SQL_CONCUR_READ_ONLY: Concurrency = Concurrency(1);
pub const SQL_CONCUR_LOCK: Concurrency = Concurrency(2);
pub const SQL_CONCUR_ROWVER: Concurrency = Concurrency(3);
pub const SQL_CONCUR_VALUES: Concurrency = Concurrency(4);

#[odbc_type(SQLULEN)]
pub struct SimulateCursor;
pub const SQL_SC_NON_UNIQUE: SimulateCursor = SimulateCursor(0);
pub const SQL_SC_TRY_UNIQUE: SimulateCursor = SimulateCursor(1);
pub const SQL_SC_UNIQUE: SimulateCursor = SimulateCursor(2);

#[odbc_type(SQLULEN)]
pub struct RetrieveData;
pub const SQL_RD_OFF: RetrieveData = RetrieveData(0);
pub const SQL_RD_ON: RetrieveData = RetrieveData(1);

#[odbc_type(SQLULEN)]
pub struct UseBookmarks;
pub const SQL_UB_OFF: UseBookmarks = UseBookmarks(0);
pub const SQL_UB_ON: UseBookmarks = UseBookmarks(1);

#[odbc_type(SQLULEN)]
pub struct AsyncEnable;
pub const SQL_ASYNC_ENABLE_OFF: AsyncEnable = AsyncEnable(0);
pub const SQL_ASYNC_ENABLE_ON: AsyncEnable = AsyncEnable(1);

#[odbc_type(SQLULEN)]
pub struct CursorScrollable;
pub const SQL_NONSCROLLABLE: CursorScrollable = CursorScrollable(0);
pub const SQL_SCROLLABLE: CursorScrollable = CursorScrollable(1);

#[odbc_type(SQLULEN)]
pub struct CursorSensitivity;
pub const SQL_UNSPECIFIED: CursorSensitivity = CursorSensitivity(0);
pub const SQL_INSENSITIVE: CursorSensitivity = CursorSensitivity(1);
pub const SQL_SENSITIVE: CursorSensitivity = CursorSensitivity(2);
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

use {
    fuchsia_async::{Time, TimeoutExt},
    fuchsia_bluetooth::types::Channel,
    fuchsia_syslog::{fx_log_info, fx_vlog},
    fuchsia_zircon::Duration,
    futures::{future, future::Ready, stream::FilterMap, Stream, StreamExt},
    std::convert::TryFrom,
};

#[cfg(test)]
mod tests;

mod types;

use crate::{
    avctp::{
        Command as AvctpCommand, CommandStream as AvctpCommandStream, Header as AvctpHeader,
        Packet as AvctpPacket, Peer as AvctpPeer,
    },
    Decodable, Encodable, Error, Result,
};

use self::types::BT_SIG_COMPANY_ID;

pub use self::types::{CommandType, Header, OpCode, PacketType, ResponseType, SubunitType};

pub type CommandStream = FilterMap<
    AvctpCommandStream,
    Ready<Option<Result<Command>>>,
    fn(Result<AvctpCommand>) -> Ready<Option<Result<Command>>>,
>;

/// Represents a re


on_change = [this](size_t index, OptionsField::value_t n) { radio_bw = index ; receiver_model.set_nbfm_configuration(n); };
            break;
        case WFM_MODULATION:
            audio_sampling_rate = audio::Rate::Hz_48000;
            freqman_set_bandwidth_option(new_mod, field_bw);
            baseband::run_image(portapack::spi_flash::image_tag_wfm_audio);
            receiver_model.set_modulation(ReceiverModel::Mode::WidebandFMAudio);
            receiver_model.set_wfm_configuration(field_bw.selected_index_value());
            // bw 200k (0) default
            field_bw.set_by_value(0);
            field_bw.on_change = [this](size_t index, OptionsField::value_t n) { radio_bw = index ; receiver_model.set_wfm_configuration(n); };
            break;
        case SPEC_MODULATION:
            audio_sampling_rate = audio::Rate::Hz_24000;
            freqman_set_bandwidth_option(new_mod, field_bw);
            baseband::run_image(portapack::spi_flash::image_tag_capture);
            receiver_model.set_modulation(ReceiverModel::Mode::Capture);
            // 12k5 (0) default
            field_bw.on_change = [this](size_t index, OptionsField::value_t sampling_rate) {
                radio_bw = index;
                // Baseband needs to know the desired sampling and oversampling rates.
                baseband::set_sample_rate(sampling_rate, get_oversample_rate(sampling_rate));
                // The radio needs to know the effective sampling rate.
                auto actual_sampling_rate = get_actual_sample_rate(sampling_rate);
                receiver_model.set_sampling_rate(actual_sampling_rate);
                receiver_model.set_baseband_bandwidth(filter_bandwidth_for_sampling_rate(actual_sampling_rate));
            };
            field_bw.set_by_value(0);
        default:
            break;
    }
    if (new_mod != SPEC_MODULATION) {
        // Reset receiver model to fix bug when going from SPEC to audio, the sound is distorted.
        receiver_model.set_sampling_rate(3072000);
        receiver_model.set_baseband_bandwidth(1750000);
    }
    if (new_mod != NFM_MODULATION) {
        text_ctcss.set("             ");
    }

    m4_manage_stat_update();  // rx_sat hack

    if (audio_mode) {
        audio::set_rate(audio_sampling_rate);
        audio::output::start();
        receiver_model.set_headphone_volume(receiver_model.headphone_volume());  // WM8731 hack.
    }
    receiver_model.enable();

    return step_mode.selected_index();
}

void LevelView::handle_coded_squelch(const uint32_t value) {
    if (field_mode.selected_index() == NFM_MODULATION)
        text_ctcss.set(tone_key_string_by_value(value, text_ctcss.parent_rect().width() / 8));
    else
        text_ctcss.set("        ");
}

void LevelView::on_freqchg(int64_t freq) {
    receiver_model.set_target_frequency(freq);
    button_frequency.set_text("<" + to_string_short_freq(freq) + " MHz>");
}

}  // namespace ui::external_app::level
// CVS Spam app by RocketGod (@rocketgod-git) https://betask


ptr;return new P.ptr(O.nil,$ifaceNil,new F.Value.ptr(BJ.nil,0,0),new J.ptr(BK.nil,new I.ptr(false,false,false,false,false,false,false,false,false),0,0,BL.zero()),false,false,false,false);}));AF=F.TypeOf(new $Uint8(0));AX=new BN([$toNativeArray($kindUint16,[9,13]),$toNativeArray($kindUint16,[32,32]),$toNativeArray($kindUint16,[133,133]),$toNativeArray($kindUint16,[160,160]),$toNativeArray($kindUint16,[5760,5760]),$toNativeArray($kindUint16,[8192,8202]),$toNativeArray($kindUint16,[8232,8233]),$toNativeArray($kindUint16,[8239,8239]),$toNativeArray($kindUint16,[8287,8287]),$toNativeArray($kindUint16,[12288,12288])]);BB=new G.Pool.ptr(0,0,BI.nil,(function(){var $ptr;return new AV.ptr($ifaceNil,O.nil,0,false,new AW.ptr(false,false,false,0,0,0));}));BD=C.New("syntax error scanning complex number");BE=C.New("syntax error scanning boolean");}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})();
$packages["github.com/bep/gr/support"]=(function(){var $pkg={},$init,A,B,C,E,D;A=$packages["errors"];B=$packages["fmt"];C=$packages["github.com/gopherjs/gopherjs/js"];E=$sliceType($emptyInterface);D=function(a){var $ptr,a,b,c,d,e,f,g,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$ptr=$f.$ptr;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=$global.require;if(b===undefined){$s=-1;return[null,A.New("require() not defined; if this is not Node.js, give Browserify a try")];}c=null;d=a;e=0;while(true){if(!(e<d.$length)){break;}f=((e<0||e>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+e]);if(!(c===null)){c=c[$externalize(f,$String)];}else{c=b($externalize(f,$String));}e++;}if(c===undefined){$s=1;continue;}$s=2;continue;case 1:g=B.Errorf("Module %q not found",new E([a]));$s=3;case 3:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}$s=-1;return[null,g];case 2:$s=-1;return[c,$ifaceNil];}return;}if($f===undefined){$f={$blk:D};}$f.$ptr=$ptr;$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Require=D;$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;


ar command = (ICommandBarElement)sender;
            //if (CommandBarFlyout1.PrimaryCommands.Contains(command))
            //{
            //    CommandBarFlyout1.PrimaryCommands.Remove(command);
            //}
            //else if (CommandBarFlyout1.SecondaryCommands.Contains(command))
            //{
            //    CommandBarFlyout1.SecondaryCommands.Remove(command);
            //}
        }

        private void ShowMenu(bool isTransient)
        {
            CommandBarFlyout1.ShowMode = isTransient ? FlyoutShowMode.Transient : FlyoutShowMode.Standard;
            CommandBarFlyout1.ShowAt(Image1);
        }

        private void MyImageButton_ContextMenuOpening(object sender, ContextMenuEventArgs e)
        {
            // always show a context menu in standard mode
            ShowMenu(false);
        }

        private void MyImageButton_Click(object sender, RoutedEventArgs e)
        {
            ShowMenu((sender as Button).IsMouseOver);
        }
    }
}


/chromeDisabledSelect.png) 1x, url(Images/chromeDisabledSelect_2x.png) 2x), linear-gradient(#f1f1f1, #f1f1f1 38%, #e6e6e6);border-color: rgba(80, 80, 80, 0.2);box-shadow: 0 1px 0 rgba(80, 80, 80, 0.08),inset 0 1px 2px rgba(255, 255, 255, 0.75);color: #aaa;}.custom-expandable-section::before {-webkit-user-select: none;background-image: url(Images/statusbarButtonGlyphs.png);background-size: 320px 144px;opacity: 0.5;content: "a";width: 8px;margin-right: 4px;padding-right: 2px;color: transparent;text-shadow: none;}.custom-expandable-section::before {background-position: -4px -96px;}.custom-expandable-section.expanded::before {background-position: -20px -96px;}/* inspectorCommon.css */html {height: 100%;overflow: hidden;}body {height: 100%;width: 100%;position: relative;overflow: hidden;margin: 0;}html /deep/ .component-root {cursor: default;font-family: Lucida Grande, sans-serif;font-size: 12px;tab-size: 4;-webkit-user-select: none;color: #222;}html /deep/ .platform-linux {color: rgb(48, 57, 66);font-family: Ubuntu, Arial, sans-serif;}html /deep/ .platform-mac {color: rgb(48, 57, 66);font-family: 'Lucida Grande', sans-serif;}html /deep/ .platform-windows {font-family: 'Segoe UI', Tahoma, sans-serif;}html /deep/ .platform-mac .monospace,html /deep/ .platform-mac .source-code {font-size: 11px !important;font-family: Menlo, monospace;}html /deep/ .platform-windows .monospace,html /deep/ .platform-windows .source-code {font-size: 12px !important;font-family: Consolas, Lucida Console, monospace;}html /deep/ .platform-linux .monospace,html /deep/ .platform-linux .source-code {font-size: 11px !important;font-family: dejavu sans mono, monospace;}body /deep/ .source-code {font-family: monospace;font-size: 11px !important;white-space: pre-wrap;}body /deep/ * {box-sizing: border-box;}body /deep/ :focus {outline: none;}body /deep/ img {-webkit-user-drag: none;}body /deep/ iframe,body /deep/ a img {border: none;}body /deep/ .fill {position: absolute;top: 0;left: 0;right: 0;bottom: 0;}body /deep/ iframe.fill {width: 100%;height: 100%;}body /deep/ .view {position: relative;flex: auto;}body /deep/ .hbox {display: flex;flex-direction: row !important;position: relative;}body /deep/ .vbox {display: flex;flex-direction: column !important;position: relative;}body /deep/ .flex-auto {flex: auto;}body /deep/ .flex-centered {display: flex;align-items: center;justify-content: center;}body /deep/ iframe.view {position: absolute;width: 100%;height: 100%;left: 0;right: 0;top: 0;bottom: 0;}body /deep/ .hidden {display: none !important;}body /deep/ .monospace {font-size: 10px !important;font-family: monospace;}body /deep/ .highlighted-search-result {border-radius: 1px;padding: 1px;margin: -1px;background-color: rgba(255, 255, 0, 0.8);}body /deep/ .link {cursor: pointer;text-decoration: underline;color: rgb(17, 85, 204);}body /deep/ button,body /deep/ input,body /deep/ select {font-family: inherit;font-size: inherit;}body /deep/ input[type="search"]:focus,body /deep/ input[type="text"]:focus {outline: auto 5px -webkit-focus-ring-color;}.overflow-auto {overflow: auto;}/* inspectorSyntaxHighlight.css *//**


 === status))
			return errorRes(res, 400, 'Invalid job status');

		const jobBuilder = {
			...job,
			company,
			role,
			email,
			status,
			coverLetter,
			location,
			recruiter,
			blockers,
			nextSteps
		};

		const updatedJob = await Job.findByIdAndUpdate(id, jobBuilder, {
			new: true
		}).exec();

		// await job.save();
		return successRes(res, updatedJob);
	} catch (error) {
		console.error(error);
		return errorRes(res, 500, error);
	}
});
import Utils from 'Utils';
import Unit from '~/units/Unit';
import generateArray from '~/modules/generateArray';
import Squad from '~/units/Squad';

const sortUnitByWeapon = (units) => {
    const weapons = [];
    units.map( unit => {
        for(let i = 0; i < weapons.length; i++) {//loop per weapon types
            if(weapons[i][0].weapon.range === unit.weapon.range) {
                weapons[i].push(unit);//weapon of this type already exists in array
                return;//after add weapon to array, leave loop
            }
        }
        weapons.push([ unit ]);//add new type of weapon, and add units to this type
    });
    return weapons;
}

const isMoreThanOneWeaponType = (units: Unit[]): boolean => {
    const firstWeapon = units[0].weapon.range;
    return units.reduce( (prev, curr) =>
        firstWeapon !== curr.weapon.range ? true : prev, false);
}

const setDestinationPoint = (
  destination: Squad | Point,
  units: Unit[],
  attack:boolean,
  oneWeaponType:boolean,
  onePlace:boolean
) => {
    //A CO GDY jednostki które są zaznaczone, mają różny zasięg broni???
    //-rozdzielić na dwie metody, inne pola na którszej broni, inne dla dłuższej, cała funkcja x 2 aż musi iść
    let unitsOutOfRange = [];

    if(attack) {
      if (!('center' in destination)) {
        debugger
        return
      }

      units.forEach((unit) => { // if distance < weapon.range, then unit can stay
        if (Utils.dis(unit, destination.center) < unit.weapon.range) {
          unit.squad.aim = destination
          unit.stay()
        } else {
          unitsOutOfRange.push(unit) // rest of untis needs to find be closer to aim
        }
      })

      if(unitsOutOfRange.length === 0) return; // All units are in range

      // if units are in different group, then firstly they need to create differend groups depending on position
      if(!onePlace) {
          //START TESTING: "Units are in the same place?"
          let allInOneGroup = true;
          const unitsInDifferentPlaces = [[],[],[],[]],//4 arrays, one per kartezjan space
                groupX = units[0].x,//to testing, because maybe all units are in one group
                groupY = units[0].y;//but group is on others space of karetzjian area

          unitsOutOfRange.map(unit => {
              const x = unit.x < destination.center.x ? 1 : 0;
              const y = unit.y > destination.center.y ? 2 : 0;//which kartezjan space
              unitsInDifferentPlaces[x + y].push(unit);

              if(Math.abs(groupX - unit.x) > 200 || Math.abs(groupY - unit.y) > 200) {
                  allInOneGroup = false;//czy wszystkie jednostki sa w jendym miejscu, czyli czy ich odelgosc od pierwszej jendostki jest mniejsza niz 200
              }
          });

          if(!allInOneGroup) {
              let countOther = 0;//test, is more than one kartezjan space
              unitsIn


<TodayReviewWord> todayReviewWordData = [];
  List<WordModel> todayNewWordData = [];

  //本轮需要学习的单词数量, 与服务器获取的单词数量绑定
  int thisStageStudyWordCount = 0;

  // 小结页面需要
  final List<SummaryWordItem> summaryWordData = [];

  // 默认就是在加载单词
  final isLoading = Rx<bool>(true);

  setIsLoading() {
    Timer(const Duration(seconds: 1), () {
      log("修改加载状态");
      isLoading.value = false;
    });
  }

  setCurrentStudyWord() {
    if (currentStudyMode.value == StudyMode.studyNewWord) {
      currentStudyWord = todayNewWordData[currentIndex];
    } else {
      currentStudyWord = todayReviewWordData[currentIndex].word;
    }
    log(currentStudyWord.toString());
  }

  switchKnowWord() {
    knowWordLevel = KnowWordLevel.konw;
  }

  switchUnKnowWord() {
    knowWordLevel = KnowWordLevel.unKnow;
  }

  switchWordSimple() {
    knowWordLevel = KnowWordLevel.simple;
  }

  setInKnowUI() {
    isInKnowWordUI = true;
  }

  setOutKnowUI() {
    isInKnowWordUI = false;
  }

  fetchStudyWord() async {
    // try {
    //获取一轮学习单词数据, 即新词或复习词响应数据
    final studtWordRes = await studyWordApi.getStageWord();
    //不管先学什么,  这一轮学习的长度是确定的
    thisStageStudyWordCount = studtWordRes.data.length;

    //新词
    if (studtWordRes.type == 0) {
      currentStudyMode.value = StudyMode.studyNewWord;
      todayNewWordData = studtWordRes.data;
    } else {
      currentStudyMode.value = StudyMode.reviewOldWord;
      todayReviewWordData = studtWordRes.data;
    }
    setCurrentStudyWord();
    // } catch (e, s) {
    //   log(e.toString(), stackTrace: s);
    //   Get.snackbar("错误", "获取本轮学习单词时出错,请稍后再尝试,即将跳转至主页");
    //   Get.offNamed(AppPagesName.index);
    // rethrow;
    // }
  }

  addStudyRecord() {
    DateTime now = DateTime.now().toUtc();
    String nextReviewTime = now.toIso8601String();
    //默认 简单和不认识, 都是今天复习, 简单词由于标记为简单, 所以下次复习时间无意义
    log(nextReviewTime);
    bool isSimple = false;
    bool isKnow = true;
    //默认新学单词, 学习次数必定为1
    int studyTimes = 1;

    if (knowWordLevel == KnowWordLevel.unKnow) {
      isKnow = false;
    }
    if (knowWordLevel == KnowWordLevel.konw) {
      //认识那就明天再复习
      nextReviewTime = now.add(duration).toIso8601String();
      log("nextReviewTime: $nextReviewTime");
    }
    if (knowWordLevel == KnowWordLevel.simple) {
      isSimple = true;
    }

    if (currentStudyMode.value == StudyMode.reviewOldWord) {
      //如果是复习单词,则在原有基础上加1
      studyTimes = todayReviewWordData[currentIndex].studyTimes + 1;
    }

    summaryWordData.add(SummaryWordItem(
        name: currentStudyWord.name,
        type: currentStudyWord.type,
        USAudio: currentStudyWord.USAudio,
        explainCN: currentStudyWord.explainCN,
        isKnow: isKnow));

    finishWord.add(UploadWordItem(
        wordId: currentStudyWord.id,
        nextReviewTime: nextReviewTime,
        isSimple: isSimple,
        studyTimes: studyTimes));
  }

  //添加学习记录后下一个单词
  nextWord() {


down(function()
        helpers.stop_kong()
        db:truncate()
      end)

      it("init_worker should run ttl cleanup in background timer", function ()
        helpers.pwait_until(function()
          assert.errlog().has.line([[cleaning up expired rows from table ']] .. "keyauth_credentials" .. [[' took .+ seconds]], false, 2)
        end, 5)

        local ok, err = db.connector:query("SELECT * FROM keyauth_credentials")
        assert.is_nil(err)
        assert.same(0, #ok)

        -- Check all tables are cleaned so that we don't need to wait for another loop
        local names_of_table_with_ttl = db.connector._get_topologically_sorted_table_names(db.strategies)
        assert.truthy(#names_of_table_with_ttl > 0)

        for _, name in ipairs(names_of_table_with_ttl) do
          assert.errlog().has.line([[cleaning up expired rows from table ']] .. name .. [[' took .+ seconds]], false, 2)
        end
      end)
    end)
  end)
end


>false</GenerateWindowsMetadata>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm'">
    <ClCompile>
      <PrecompiledHeader>NotUsing</PrecompiledHeader>
      <CompileAsWinRT>false</CompileAsWinRT>
      <SDLCheck>true</SDLCheck>
      <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\..\..\..\..\Sdk\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>WINSTORE;_CRT_SECURE_NO_WARNINGS;CUSTOM_ALLOC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </ClCompile>
    <Link>
      <SubSystem>Console</SubSystem>
      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm'">
    <ClCompile>
      <PrecompiledHeader>NotUsing</PrecompiledHeader>
      <CompileAsWinRT>false</CompileAsWinRT>
      <SDLCheck>true</SDLCheck>
      <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\..\..\..\..\Sdk\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>WINSTORE;_CRT_SECURE_NO_WARNINGS;CUSTOM_ALLOC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </ClCompile>
    <Link>
      <SubSystem>Console</SubSystem>
      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
    </Link>
  </ItemDefinitionGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>
]==]
  content = content:gsub("##NAME##", plugin.name.lower)
  createFileWithContent(windowsphone_dir, plugin.name.lower .. ".WindowsPhone.vcxproj", content .. "\n")

  content =
[==[
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
	<ItemGroup>
	</ItemGroup>
</Project>
]==]
  createFileWithContent(windowsphone_dir, plugin.name.lower .. ".WindowsPhone.vcxproj.filters", content .. "\n")

  winrt.createGpluginSection()
  return "Finished creating winrt solution files."
end

------------------------------------------------------------------------------
-- ios
------------------------------------------------------------------------------

ios = {}
--
ios.createFiles = function()
  print("\n\nCreating iOS solution files\n-----------------------")
  -- mkdir doesn't like /'s on Windows when os.execute'd
  local dir = "source" .. os.sep .. "ios"
  createDirectory(dir)

  local function printTable(t)
    for k, v in pairs(t) do
      print(k, v)
    end
  end

  package.path = "../../ui/Tools/?.lua;" .. package.path
  Export = {} -- avoid error on import
  Export.registerPreFinish = function() end -- ""
  require("export_init")
  require("export_ios")

  print(iOSProject.addGroup("public_name_sources_group", "../../common", "SourceBuild", "SourceBuild"))
  print(iOSProject.addGroup("source3", "source4", plugin.name.lower .."1", plugin.name.lower .."1"))

  iOSProject.addSources(plugin.source


member to do one more XOR(A,B) when finishing AES
// operations in a loop.
typedef struct {
    meow_u128 A;
    meow_u128 B;
} meow_aes_128;

#define MeowU32From(A, I) (vgetq_lane_u32(vreinterpretq_u32_u8((A)), (I)))
#define MeowU64From(A, I) (vgetq_lane_u64(vreinterpretq_u64_u8((A)), (I)))

static int
MeowHashesAreEqualImpl(meow_u128 A, meow_u128 B)
{
    uint8x16_t Powers = {
        1, 2, 4, 8, 16, 32, 64, 128, 1, 2, 4, 8, 16, 32, 64, 128,
    };

    uint8x16_t Input = vceqq_u8(A, B);
    uint64x2_t Mask = vpaddlq_u32(vpaddlq_u16(vpaddlq_u8(vandq_u8(Input, Powers))));

    meow_u16 Output;
    vst1q_lane_u8((meow_u8*)&Output + 0, vreinterpretq_u8_u64(Mask), 0);
    vst1q_lane_u8((meow_u8*)&Output + 1, vreinterpretq_u8_u64(Mask), 8);
    return Output == 0xFFFF;
}

#define MeowHashesAreEqual(A, B) MeowHashesAreEqualImpl((A), (B))

static meow_aes_128
Meow128_AESDEC(meow_aes_128 Prior, meow_u128 Xor)
{
    meow_aes_128 R;
    R.A = vaesimcq_u8(vaesdq_u8(Prior.A, Prior.B));
    R.B = Xor;
    return(R);
}

static meow_aes_128
Meow128_AESDEC_Mem(meow_aes_128 Prior, void *Xor)
{
    meow_aes_128 R;
    R.A = vaesimcq_u8(vaesdq_u8(Prior.A, Prior.B));
    R.B = vld1q_u8((meow_u8*)Xor);
    return(R);
}

static meow_u128
Meow128_AESDEC_Finalize(meow_aes_128 Value)
{
    meow_u128 R = veorq_u8(Value.A, Value.B);
    return(R);
}

static meow_u128
Meow128_Zero()
{
    meow_u128 R = vdupq_n_u8(0);
    return(R);
}

static meow_aes_128
Meow128_GetAESConstant(const meow_u8 *Ptr)
{
    meow_aes_128 R;
    R.A = vld1q_u8(Ptr);
    R.B = vdupq_n_u8(0);
    return(R);
}

static meow_u128
Meow128_Set64x2(meow_u64 Low64, meow_u64 High64)
{
   meow_u128 R = vreinterpretq_u8_u64(vcombine_u64(vcreate_u64(Low64), vcreate_u64(High64)));
   return(R);
}

static meow_aes_128
Meow128_Set64x2_State(meow_u64 Low64, meow_u64 High64)
{
   meow_aes_128 R;
   R.A = Meow128_Set64x2(Low64, High64);
   R.B = Meow128_Zero();
   return(R);
}

#define Meow128_And_Mem(A,B) vandq_u8((A), vld1q_u8((meow_u8 *)B))
#define Meow128_Shuffle_Mem(Mem,Control) vqtbl1q_u8(vld1q_u8((meow_u8 *)(Mem)),vld1q_u8((meow_u8 *)(Control)))

#endif

#define MEOW_HASH_VERSION 4
#define MEOW_HASH_VERSION_NAME "0.4/himalayan"

#if MEOW_INCLUDE_C

// NOTE(casey): Unfortunately, if you want an ANSI-C version, we have to slow everyone
// else down because you can't return 128-bit values by register anymore (in case the
// CPU doesn't support that)
union meow_hash
{
    meow_u128 u128;
    meow_u64 u64[2];
    meow_u32 u32[4];
};
#define Meow128_CopyToHash(A, B) ((B).u128 = (A))

#undef MeowU64From
#undef MeowU32From
#undef MeowHashesAreEqual
#define MeowU32From(A, I) ((A).u32[I])
#define MeowU64From(A, I) ((A).u64[I])
#define MeowHashesAreEqual(A, B) (((A).u32[0] == (B).u32[0]) && ((A).u32[1] == (B).u32[1]) && ((A).u32[2] == (B).u32[2]) && ((A).u32[3] == (B).u32[3]))

#else

typedef meow_u128 meow_hash;
#define Meow128_CopyToHash(A, B) ((B) = (A))

#endif

typedef struct meow_hash_state meow_hash_state;
typedef meow_hash meow_hash_implementation(meow_u64 Seed, meow_u64 Len, void *Source);
typedef void meow_absorb_implementation(struct meow_hash_state *State, meow_u64 Len, void *Source);

#define MEOW_HASH_INTRINSICS_H
#endif


",9]">
　火の玉UFOも十尺の宇宙人も、ただ単に人を寄せ付けない様に演出していたのだという。

　火球UFO和十尺的外星人据她说都是为了防止人类靠近的演出。

「私は”正体不明の恐ろしい何か”に見えるように演出していただけよ。誰かが宇宙人だ、って言い始めたから、一人歩きして宇宙人に見える様になったんでしょう。それにしても十尺もある宇宙人ねぇ……」

“我只是演出了‘真相不明的可怕的什么东西’。因为有人说外星人什么的所以就变得大家都会看到外星人了吧。但十尺高的外星人什么的……”

　都市伝説という物はこうした噂から始まるのだ、と説明する彼女は、正体ある物を正体不明へと変えてしまう力を持っている。実在が確かで正体不明な物、これは誰にでも噂レベルの正体を当てはめる事が出来るという事である。まさに今回のような都市伝説を生み出す存在と言えよう。

　她称都市传说这类的东西往往都是从这种传闻流传起来的，她持有着能将有真面目的东西化作没有真面目的东西的能力。无论谁都能将传闻程度的原形添在确实存在着的不知真面目的东西上。这次的都市传说就是个典型的例子。

（姫海棠 はたて）

（姬海棠果）

<

<a href="./东方求闻口授-火焰猫燐&宫古芳香（文文新闻）-中日对照.md" title="东方求闻口授/火焰猫�


олб",
  [70526] = "Фонарный столб",
  [70527] = "Фонарный столб",
  [70528] = "Фонарный столб",
  [70530] = "Фонарный столб",
  [70531] = "Фонарный столб",
  [70532] = "Фонарный столб",
  [70533] = "Фонарный столб",
  [70534] = "Фонарный столб",
  [70535] = "Фонарный столб",
  [70536] = "Фонарный столб",
  [70537] = "Фонарный столб",
  [70538] = "Фонарный столб",
  [70539] = "Фонарный столб",
  [70540] = "Фонарный столб",
  [70541] = "Фонарный столб",
  [70542] = "Фонарный столб",
  [70543] = "Фонарный столб",
  [70544] = "Фонарный столб",
  [70545] = "Фонарный столб",
  [70546] = "Фонарный столб",
  [70547] = "Фонарный столб",
  [70548] = "Фонарный столб",
  [70549] = "Фонарный столб",
  [70551] = "Фонарный столб",
  [70552] = "Фонарный столб",
  [70553] = "Фонарный столб",
  [70554] = "Фонарный столб",
  [70555] = "Фонарный столб",
  [70556] = "Фонарный столб",
  [70557] = "Фонарный столб",
  [73939] = "Покрытые слизью залежи железа",
  [73940] = "Покрытая слизью серебряная жила",
  [73941] = "Покрытая слизью золотая жила",
  [74075] = "Котел",
  [74076] = "Котел",
  [74077] = "Котел",
  [74078] = "Котел",
  [74091] = "Таверна \"Старый моряк\"",
  [74135] = "Костер",
  [74138] = "Жаровня",
  [74146] = "Большой костер",
  [74439] = "Жаровня",
  [74440] = "Жаровня",
  [74441] = "Жаровня",
  [74442] = "Жаровня",
  [74443] = "Коптильная рама для мяса",
  [74444] = "Жаровня",
  [74445] = "Коптильная рама для мяса",
  [74446] = "Коптильная рама для мяса",
  [74447] = "Большой сундук, окованный железом",
  [74448] = "Большой добротный сундук",
  [74727] = "Большой костер",
  [74728] = "Коптильная рама для мяса",
  [74729] = "Жаровня",
  [74730] = "Жаровня",
  [75293] = "Большой побитый сундук",
  [75295] = "Большой сундук, око


 = utf8.encode(s);
    if (bytesNeeded.length > 65535)
      throw FormatException("Length cannot be greater than 65535");
    writeShort(bytesNeeded.length, endian);
    write(bytesNeeded);
  }

  Uint8List u64BigIntBytesHelper(BigInt x) {
    String radixString = x.toRadixString(2);
    while (radixString.length < 64) {
      radixString = '0' + radixString;
    }
    List<int> bytes = [];
    for (int i = 0; i < 8; i++) {
      bytes.add(int.parse(radixString.substring(i * 8, i * 8 + 8), radix: 2));
    }
    return Uint8List.fromList(bytes);
  }

  // Fix int64 accessor not supported by dart2js
  // https://github.com/shamblett/cbor/commit/563954b02e883d3506069dd83ec98a6f4ab59447
  Uint8List u64BytesHelper(int x) {
    if (x.isInfinite) throw FormatException("Cannot process Infinite number");
    String radixString = x.toRadixString(2);
    while (radixString.length < 64) {
      radixString = '0' + radixString;
    }
    List<int> bytes = [];
    for (int i = 0; i < 8; i++) {
      bytes.add(int.parse(radixString.substring(i * 8, i * 8 + 8), radix: 2));
    }
    return Uint8List.fromList(bytes);
  }

  List<int> get bytes => data;
}

class XdrDataInputStream extends DataInput {
  XdrDataInputStream(Uint8List data) : super.fromUint8List(data);

  int read() {
    return readByte();
  }

  String readString() {
    int length = readInt();
    List<int> bytes = readBytes(length);
    return utf8.decode(bytes);
  }

  List<int?> readIntArray() {
    var l = readInt();
    // var result = List<int>(l);
    List<int?> result = []..length = l;
    for (int i = 0; i < l; i++) {
      result[i] = readInt();
    }
    return result;
  }

  List<double?> readFloatArray() {
    var l = readInt();
    // var result = List<double>(l);
    List<double?> result = []..length = l;
    for (int i = 0; i < l; i++) {
      result[i] = readFloat();
    }
    return result;
  }

  List<double?> readDoubleArray() {
    var l = readInt();
    // var result = List<double>(l);
    List<double?> result = []..length = l;
    for (int i = 0; i < l; i++) {
      result[i] = readDouble();
    }
    return result;
  }
}

class XdrDataOutputStream extends DataOutput {
  writeString(String s) {
    List<int> bytesNeeded = utf8.encode(s);
    if (bytesNeeded.length > 65535)
      throw FormatException("Length cannot be greater than 65535");
    writeInt(bytesNeeded.length);
    write(bytesNeeded);
  }

  writeIntArray(List<int> a) {
    writeInt(a.length);
    for (int i = 0; i < a.length; i++) {
      writeInt(a[i]);
    }
  }

  writeFloatArray(List<double> a) {
    writeInt(a.length);
    for (int i = 0; i < a.length; i++) {
      writeFloat(a[i]);
    }
  }

  writeDoubleArray(List<double> a) {


>
   就在这一天，《文汇报》星火燎原革命造反总部等革命组织开始酝酿着《文汇报》的夺权斗争。

   同日，传来无产阶级革命派的喜讯：上海工人革命造反总司令部主办的《工人造反报》创刊号出版。

   在中百公司门口，“赤卫队”围攻六省一市静坐工人，造成武斗事件，气焰十分嚣张。

   十二月二十九日  工总司的代表和革命学生到康平路劝说广大受蒙蔽的“赤卫队”员回厂抓革命，促生产，并且指出他们到张春桥同志的家中造反是犯了方向性的错误。

   但是，“赤卫队”的一小撮头头仍然一意孤行。这天，“赤卫队”又冲了张春桥同志的家，恐吓张春桥同志的爱人说：“如果中央负责同志不来，到六点钟问题还不解决，那上海就要停水、停电、停车了！”真是不打自招，一语道破了以陈、曹为首的一小撮走资本主义道路的当权派炮打中央文革的反革命计划!

   当晚，传出“有十二个‘赤卫队’员被造反派打死”的谣言。在旧市委内一小撮别有用心的家伙的挑动下，“赤卫队”和革命工人、学生在康平路和衡山宾馆发生了冲突，造成了又一次严重的武斗事件。

   同晚，“赤卫队”铁路局联络站召开黑会，借口到市内造华东局的反，决定把队伍全都拉出去。

   这天，市民政局局长在盲哑福利工厂刮起了工人加工资的妖风。

   十二月三十日  凌晨两点多钟，“赤卫队”铁路联络站头头打电话到上海铁路分局调度所，要“调度所全部停下来，准备到康平路去”，同时又分别布置各个车站、机务段都停下来到康平路去，使得调度所工作人员除了几个看家的以外，几乎全部离开了工


   (float, x, x)(float, y, y)(float, z, z)(float, intensity, intensity)(std::uint16_t,
                                                                         label,
                                                                         label)(std::uint16_t,
                                                                                id,
                                                                                id))

void PointT2XYZI(pcl::PointCloud<PointXYZILID> &src, pcl::PointCloud<pcl::PointXYZI>::Ptr dst) {
  dst->points.clear();
  for (const auto &pt : src.points) {
    pcl::PointXYZI pt_xyzi;
    pt_xyzi.x = pt.x;
    pt_xyzi.y = pt.y;
    pt_xyzi.z = pt.z;
    pt_xyzi.intensity = pt.intensity;
    dst->points.push_back(pt_xyzi);
  }
}
std::vector<int> outlier_classes = {UNLABELED, OUTLIER};
std::vector<int> ground_classes =
    {ROAD, PARKING, SIDEWALKR, OTHER_GROUND, LANE_MARKING, VEGETATION, TERRAIN};
std::vector<int> ground_classes_except_terrain = {ROAD,
                                                  PARKING,
                                                  SIDEWALKR,
                                                  OTHER_GROUND,
                                                  LANE_MARKING};

template <typename PointT>
int count_num_ground(const pcl::PointCloud<PointT> &pc) {
  int num_ground = 0;

  std::vector<int>::iterator iter;

  for (auto const &pt : pc.points) {
    iter = std::find(ground_classes.begin(), ground_classes.end(), pt.label);
    if (iter != ground_classes.end()) {  // corresponding class is in ground classes
      if (pt.label == VEGETATION) {
        if (pt.z < VEGETATION_THR) {
          num_ground++;
        }
      } else {
        num_ground++;
      }
    }
  }
  return num_ground;
}

std::map<int, int> set_initial_gt_counts(std::vector<int> &gt_classes) {
  map<int, int> gt_counts;
  for (size_t i = 0; i < gt_classes.size(); ++i) {
    gt_counts.insert(pair<int, int>(gt_classes.at(i), 0));
  }
  return gt_counts;
}

template <typename PointT>
std::map<int, int> count_num_each_class(const pcl::PointCloud<PointT> &pc) {
  auto gt_counts = set_initial_gt_counts(ground_classes);
  std::vector<int>::iterator iter;

  for (auto const &pt : pc.points) {
    iter = std::find(ground_classes.begin(), ground_classes.end(), pt.label);
    if (iter != ground_classes.end()) {  // corresponding class is in ground classes
      if (pt.label == VEGETATION) {
        if (pt.z < VEGETATION_THR) {
          gt_counts.find(pt.label)->second++;
        }
      } else {
        gt_counts.find(pt.label)->second++;
      }
    }
  }
  return gt_counts;
}

template <typename PointT>
int count_num_outliers(const pcl::PointCloud<PointT> &pc) {
  int num_outliers = 0;

  std::vector<int>::iterator iter;

  for (auto const &pt : pc.points) {
    iter = std::find(outlier_classes.begin(),


5]
/*0x8666*/      strh.w r2, [r0, #0x84]
/*0x866a*/      strh.w r2, [r3, #0x84]
/*0x866e*/      ldrb r2, [r6]
/*0x8670*/      cmp r2, #2
/*0x8672*/      blo jump_869c
/*0x8674*/      ldrb r2, [r6]
/*0x8676*/      cmp r2, #2
/*0x8678*/      beq jump_869c
/*0x867a*/      ldrb r2, [r6]
/*0x867c*/      cmp r2, #4
/*0x867e*/      bne function_e_96
/*0x8680*/      ldr.w r2, [ip, #0x24]
/*0x8684*/      cmp r2, lr
/*0x8686*/      bls jump_868c
/*0x8688*/      strh.w r1, [r0, #0x84]
            jump_868c:
/*0x868c*/      ldr.w r0, [ip, #0x24]
/*0x8690*/      cmp r0, r4
/*0x8692*/      bls function_e_96
/*0x8694*/      movs r0, #1
/*0x8696*/      str.w r0, [ip, #0x24]
/*0x869a*/      b function_e_96
            jump_869c:
/*0x869c*/      strh.w r1, [r0, #0x84]
/*0x86a0*/      b function_e_96
            jump_86a2:
/*0x86a2*/      ldr.w r4, [ip, #0x24]
/*0x86a6*/      bic r4, r4, #0xff000000
/*0x86aa*/      cmp.w r4, #0x190
/*0x86ae*/      bhs jump_86ba
/*0x86b0*/      strh.w r1, [r0, #0x84]
/*0x86b4*/      strh.w r1, [r3, #0x84]
/*0x86b8*/      b function_e_96
            jump_86ba:
/*0x86ba*/      strh.w r2, [r0, #0x84]
/*0x86be*/      strh.w r2, [r3, #0x84]
/*0x86c2*/      ldr.w r0, [ip, #0x24]
/*0x86c6*/      bic r0, r0, #0xff000000
/*0x86ca*/      cmp.w r0, #0x320
/*0x86ce*/      bls function_e_96
/*0x86d0*/      ldr.w r0, [ip, #0x24]
/*0x86d4*/      and r0, r0, #0xf0000000
/*0x86d8*/      str.w r0, [ip, #0x24]
/*0x86dc*/      ldr.w r0, [ip, #0x24]
/*0x86e0*/      add.w r0, r0, #0x10000000
/*0x86e4*/      .short 0x1c40 /* adds r0, r0, #1 */
/*0x86e6*/      str.w r0, [ip, #0x24]
/*0x86ea*/      ldr.w r0, [ip, #0x24]
/*0x86ee*/      and r0, r0, #0xf0000000
/*0x86f2*/      cmp.w r0, #0x40000000
/*0x86f6*/      bls function_e_96
/*0x86f8*/      str.w r2, [ip, #0x24]
/*0x86fc*/      strb.w r2, [r6, #0x25]
/*0x8700*/      b function_e_96

/*0x8702*/  .byte 0x00


  QDBusConnection con = QDBusConnection::sessionBus();
    QVERIFY(con.isConnected());

    QDBusServiceWatcher watcher(watchedName, con, QDBusServiceWatcher::WatchForUnregistration);
    watcher.setObjectName("watcher for disappearance");

    QSignalSpy spyR(&watcher, SIGNAL(serviceRegistered(QString)));
    QSignalSpy spyU(&watcher, SIGNAL(serviceUnregistered(QString)));
    QSignalSpy spyO(&watcher, SIGNAL(serviceOwnerChanged(QString,QString,QString)));
    QTestEventLoop::instance().connect(&watcher, SIGNAL(serviceUnregistered(QString)), SLOT(exitLoop()));

    // register a name
    QVERIFY(con.registerService(registeredName));

    // unregister it:
    con.unregisterService(registeredName);

    QTestEventLoop::instance().enterLoop(1);
    QVERIFY(!QTestEventLoop::instance().timeout());

    QCOMPARE(spyR.size(), 0);

    QCOMPARE(spyU.size(), 1);
    QCOMPARE(spyU.at(0).at(0).toString(), registeredName);

    QCOMPARE(spyO.size(), 1);
    QCOMPARE(spyO.at(0).at(0).toString(), registeredName);
    QCOMPARE(spyO.at(0).at(1).toString(), con.baseService());
    QVERIFY(spyO.at(0).at(2).toString().isEmpty());
}

void tst_QDBusServiceWatcher::watchForDisappearanceUniqueConnection()
{
    QDBusConnection con = QDBusConnection::sessionBus();
    QVERIFY(con.isConnected());

    // second connection
    QString watchedName = QDBusConnection::connectToBus(QDBusConnection::SessionBus, "session2").baseService();
    QVERIFY(!watchedName.isEmpty());

    QDBusServiceWatcher watcher(watchedName, con, QDBusServiceWatcher::WatchForUnregistration);
    watcher.setObjectName("watcher for disappearance");

    QSignalSpy spyR(&watcher, SIGNAL(serviceRegistered(QString)));
    QSignalSpy spyU(&watcher, SIGNAL(serviceUnregistered(QString)));
    QSignalSpy spyO(&watcher, SIGNAL(serviceOwnerChanged(QString,QString,QString)));
    QTestEventLoop::instance().connect(&watcher, SIGNAL(serviceUnregistered(QString)), SLOT(exitLoop()));

    // unregister it:
    QDBusConnection::disconnectFromBus("session2");

    QTestEventLoop::instance().enterLoop(1);
    QVERIFY(!QTestEventLoop::instance().timeout());

    QCOMPARE(spyR.size(), 0);

    QCOMPARE(spyU.size(), 1);
    QCOMPARE(spyU.at(0).at(0).toString(), watchedName);

    QCOMPARE(spyO.size(), 1);
    QCOMPARE(spyO.at(0).at(0).toString(), watchedName);
    QCOMPARE(spyO.at(0).at(1).toString(), watchedName);
    QVERIFY(spyO.at(0).at(2).toString().isEmpty());
}

void tst_QDBusServiceWatcher::watchForOwnerChange_data()
{
    watchForCreation_data();
}

void tst_QDBusServiceWatcher::watchForOwnerChange()
{
    QFETCH(QString, watchedName);
    QFETCH(QString, registeredName);

    QDBusConnection con = QDBusConnection::sessionBus();
    QVERIFY(con.isConnected());

    QDBusServiceWatcher watcher(watchedName, con, QDBusServiceWatcher::WatchForOwnerChange);

    QSignalSpy spyR(&watcher, SIGNAL(serviceRegistered(QString)));
    QSignalSpy spyU(&watcher, SIGNAL(serviceUnregistered(QString)));
    QSignalSpy spyO


ys = event.selectedRows!.map((e) => e.key);

          return event.selectedRows?.length == 1 &&
              selectedKeys.contains(stateManager.refRows[3].key);
        }))),
      ).called(1);

      expect(stateManager.currentSelectingRows.length, 1);
    },
  );

  buildGrid(onSelected: mock.oneParamReturnVoid<PlutoGridOnSelectedEvent>).test(
    '1, 3, 5 행이 선택 된 상태에서, '
    'escape 키를 입력하면, '
    'onSelected 콜백의 selectedRows 가 null 로 호출 되어야 한다.',
    (tester) async {
      await tester.tap(find.text('column0 value 1'));
      await tester.pumpAndSettle();
      await tester.tap(find.text('column0 value 3'));
      await tester.pumpAndSettle();
      reset(mock);
      await tester.tap(find.text('column0 value 5'));
      await tester.pumpAndSettle();

      verify(
        mock.oneParamReturnVoid(
            argThat(PlutoObjectMatcher<PlutoGridOnSelectedEvent>(rule: (event) {
          final selectedKeys = event.selectedRows!.map((e) => e.key);

          return event.selectedRows?.length == 3 &&
              selectedKeys.contains(stateManager.refRows[1].key) &&
              selectedKeys.contains(stateManager.refRows[3].key) &&
              selectedKeys.contains(stateManager.refRows[5].key);
        }))),
      ).called(1);

      expect(stateManager.currentSelectingRows.length, 3);

      await tester.sendKeyEvent(LogicalKeyboardKey.escape);
      await tester.pumpAndSettle();

      verify(
        mock.oneParamReturnVoid(
            argThat(PlutoObjectMatcher<PlutoGridOnSelectedEvent>(rule: (event) {
          return event.selectedRows == null;
        }))),
      ).called(1);

      expect(stateManager.currentSelectingRows.length, 0);
    },
  );

  buildGrid(onSelected: mock.oneParamReturnVoid<PlutoGridOnSelectedEvent>).test(
    '2 ~ 5 행을 드래그해서 선택하면, '
    'onSelected 콜백의 selectedRows 가 2 ~ 5 행을 포함하여 호출 되어야 한다.',
    (tester) async {
      final gridHelper = BuildGridHelper();

      await gridHelper.selectRows(
        columnTitle: 'column0',
        startRowIdx: 2,
        endRowIdx: 5,
        tester: tester,
      );
      await tester.pumpAndSettle();

      verify(
        mock.oneParamReturnVoid(
            argThat(PlutoObjectMatcher<PlutoGridOnSelectedEvent>(rule: (event) {
          final selectedKeys = event.selectedRows!.map((e) => e.key);

          return event.selectedRows?.length == 4 &&
              selectedKeys.contains(stateManager.refRows[2].key) &&
              selectedKeys.contains(stateManager.refRows[3].key) &&
              selectedKeys.contains(stateManager.refRows[4].key) &&
              selectedKeys.contains(stateManager.refRows[5].key);
        }))),
      ).called(1);
    },
  );
}
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
import 'package:pluto_grid/pluto_grid.dart';
import 'package:pluto_grid


            lastPostedPlayerMetrics = serializer.struct(lastPostedPlayerMetrics,
                PlayerMetrics.class);

        if (version > 0x1b8)
            lbp1GameProgressionStatus =
                serializer.enum32(lbp1GameProgressionStatus);

        if (version > 0x1cf)
        {
            lbp1GameProgressionEventHappenedBits =
                serializer.i32(lbp1GameProgressionEventHappenedBits);
            lbp1GameProgressionEventsExplainedBits =
                serializer.i32(lbp1GameProgressionEventsExplainedBits);
        }

        if (version > 0x26c)
            demoProgressionStatus = serializer.i32(demoProgressionStatus);

        if (version > 0x36b)
            lbp2GameProgressionFlags = serializer.i32(lbp2GameProgressionFlags);

        if (version >= 0x387)
            pendingInventoryItems = serializer.array(pendingInventoryItems,
                InventoryItem.class);

        podLevel = serializer.resource(podLevel, ResourceType.LEVEL, true);

        if (version > 0x14f)
            playerId = serializer.struct(playerId, NetworkPlayerID.class);

        if (version > 0x296 || revision.has(Branch.LEERDAMMER, Revisions.LD_SAVEGAME_INFO))
        {
            ownerPlayerId = serializer.struct(ownerPlayerId, NetworkPlayerID.class);
            ownerPsid = serializer.struct(ownerPsid, OpenPSID.class);
        }

        if (version > 0x2eb || revision.has(Branch.LEERDAMMER, Revisions.LD_OWNER_ID))
            ownerUserId = serializer.i32(ownerUserId);

        if (version > 0x175)
            eulaAgreed = serializer.sha1(eulaAgreed);

        if (version >= 0x3d5)
            acceptingPlayer = serializer.struct(acceptingPlayer,
                NetworkPlayerID.class);

        syncedProfile = serializer.resource(syncedProfile,
            ResourceType.SYNCED_PROFILE, true);

        if (version > 0x1a1)
        {
            voipMutedPlayers = serializer.array(voipMutedPlayers,
                NetworkPlayerID.class);
            voipChatPaused = serializer.bool(voipChatPaused);
            enableMusicInPlayMode = serializer.bool(enableMusicInPlayMode);
        }

        if (version > 0x1b4)
            enableMusicInPod = serializer.bool(enableMusicInPod);

        if (version > 0x1b5)
        {
            legacyInventoryCollections =
                serializer.array(legacyInventoryCollections,
                    LegacyInventoryCollection.class, true);
            legacyInventoryViews = serializer.array(legacyInventoryViews,
                InventoryView.class, true);
        }

        if (version > 0x316)
            inventoryCollections = serializer.array(inventoryCollections,
                InventoryCollection.class, true);

        if (version > 0x1e0)
            avatarIcon = serializer.resource(avatarIcon, ResourceType.TEXTURE,
                true);

        if (version > 0x23c)
            saveIcon = serializer.resource(saveIcon, ResourceType.TEXTURE, true);

        if (version > 0x1e5)
            lbp1CreateModeVOProgress = serializer.i32(lbp1CreateModeVOProgress);

        if (version > 0x1ff)
        {
            gamma = serializer.f32(gamma);
            screenSize = serializer.f32(screenSize);
        }

        if (version > 0x35e)
            hasSeenCalibrationScreen = serializer.bool(hasSeenCalibrationScreen);

        // these are both s32[]
        if (version > 0x205)
            lbp1VOPlayed = serializer.intvector(lbp1VOPlayed);
        if (version > 0x36b)


   private static Polynom MultiplyGeneratorPolynomByLeadterm(Polynom genPolynom, PolynomItem leadTerm, int lowerExponentBy)
    {
        var resultPolynom = new Polynom();
        foreach (var polItemBase in genPolynom.PolyItems)
        {
            var coefficient = (polItemBase.Coefficient + leadTerm.Coefficient) % 255;
            resultPolynom.PolyItems.Add(new PolynomItem(coefficient, polItemBase.Exponent - lowerExponentBy));
        }
        return resultPolynom;
    }

    /// <summary>
    /// Normalizes alpha exponent to 0-255 range.
    /// Formula: (exp mod 256) + floor(exp / 256)
    /// </summary>
    /// <param name="alphaExp">Alpha exponent to normalize.</param>
    /// <returns>Normalized exponent (0-255).</returns>
    /// <remarks>
    /// In GF(256), α^255 = α^0 (cyclic group)
    /// So we need to keep exponents in range [0, 255]
    /// </remarks>
    private static int ShrinkAlphaExp(int alphaExp)
    {
        return (int)(alphaExp % 256 + Math.Floor((double)(alphaExp / 256)));
    }
}


used, _peak_pause_used, _unreturned_pause,

        end_new_gen_used, end_old_gen_used, end_perm_gen_used,

        gen_live, gen_frag, garbage_found, garbage_collected, sideband_limited,

        _pages_promoted_to_old, _pages_relocated,  _norelocate_pages, _reloc_spike_pages, _cycle_end_gen_small_pages, _cycle_end_gen_mid_pages, _cycle_end_gen_large_pages,

        pause1_start_secs, pause1_duration, pause2_start_secs, pause2_duration, pause3_start_secs, pause3_duration,
        _pause4_count, pause4_start_secs, pause4_duration, pause4_max,

        intercycle_seconds, intercycle_alloc_rate, intercycle_perm_alloc_rate, intracycle_seconds, _intracycle_alloc_rate, intracycle_perm_alloc_rate,

        gc_thread_count, grant_mode, pause_mode, _cycle_past_committed, _cycle_used_pause, _cycle_pause_exceeded,

        Threads::number_of_threads(), _threads_delayed, _average_thread_delay, _max_thread_delay
    };
    GPGC_HistoricalCycleStats::record(m.enabled(), m.stream(), cycle_stats);
  }

  if ( _threads_delayed>0 && GPGCDieWhenThreadDelayed ) {
    // Diagnostic mode option: Exit the AVM when a JavaThread is delayed waiting on a GC cycle.  This is
    // used to run tests that verify GPGC is keeping up with the application's allocation rate.
gclog_or_tty->flush();
    ShouldNotReachHere();
  }
}
/*
 * Copyright 1997-2005 Sun Microsystems, Inc.  All Rights Reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.
 *
 * This code 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
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
 * CA 95054 USA or visit www.sun.com if you need additional information or
 * have any questions.
 *
 */
// This file is a derivative work resulting from (and including) modifications
// made by Azul Systems, Inc.  The date of such changes is 2010.
// Copyright 2010 Azul Systems, Inc.  All Rights Reserved.
//
// Please contact Azul Systems, Inc., 1600 Plymouth Street, Mountain View,
// CA 94043 USA, or visit www.azulsystems.com if you need additional information
// or have any questions.
#ifndef GENERATEOOPMAP_HPP
#define GENERATEOOPMAP_HPP

#include "allocation.hpp"
#include "bytecodeStream.hpp"
#include "commonAsm.hpp"

// Forward definition
class MethodOopMap;
class GenerateOopMap;
class BasicBlock;
class CellTypeState;
class StackMap;

// These two should be removed. But requires som code to be cleaned up
#define MAXARGSIZE      256      // This should be enough
#define MAX_LOCAL_VARS  65536    // 16-bit entry

typedef void (*jmpFct_t)(GenerateOopMap *c, int bcpDelta, int* data);

//  RetTable
//
// Contains maping between jsr targets and there return addresses. One-to-many


 // radians
	const maxPolarAngle = Math.PI/2 + polarAmp/2; // radians
	const PolarSpeed = 0.001;

	// Position in spherical coordinates
	let movement = new THREE.Vector2();

	let spherical = new THREE.Spherical(minDistance, Math.PI/2, 0);
	// let targetSpherical = new THREE.Spherical(minDistance, Math.PI/2, 0);

	let panOffset = new THREE.Vector3();
	// let zoomChanged = false;

	let rotateStart = new THREE.Vector2();
	let rotateEnd = new THREE.Vector2();
	let rotateDelta = new THREE.Vector2();

	// let panStart = new THREE.Vector2();
	// let panEnd = new THREE.Vector2();
	// let panDelta = new THREE.Vector2();

	// public methods

	// this method is exposed, but perhaps it would be better if we can make it private...
	this.update = function () {
		let offset = new THREE.Vector3();

		// so camera.up is the orbit axis
		const quat = new THREE.Quaternion().setFromUnitVectors( object.up, new THREE.Vector3( 0, 1, 0 ) );
		const quatInverse = quat.clone().inverse();

		const twoPI = 2 * Math.PI;

		return function update() {
			let position = scope.object.position;

			offset.copy(position).sub(target);

			// rotate offset to "y-axis-is-up" space
			offset.applyQuaternion(quat);

			// angle from z-axis around y-axis
			spherical.setFromVector3(offset);

			// TODO slow down on extremity using distance
			spherical.theta += movement.x * AzimuthSpeed;
			spherical.phi += movement.y * PolarSpeed;

			movement.divideScalar(1.5);
			// restrict theta to be between desired limits
			var min = minAzimuthAngle;
			var max = maxAzimuthAngle;

			if ( isFinite( min ) && isFinite( max ) ) {
				if ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;
				if ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;
				if ( min < max ) {
					spherical.theta =  clamp(spherical.theta, min, max);
				} else {
					spherical.theta = ( spherical.theta > ( min + max ) / 2 ) ? Math.max( min, spherical.theta ) : Math.min( max, spherical.theta );
				}
			}

			// restrict to be between desired limits
			// spherical.theta = clamp(spherical.theta, minAzimuthAngle, maxAzimuthAngle);
			spherical.phi = clamp(spherical.phi, minPolarAngle, maxPolarAngle);

			// spherical.phi = clamp(spherical.phi, minPolarAngle, maxPolarAngle);
			spherical.makeSafe();

			spherical.radius = minDistance + currentStep * dollyDeltaStep;
			spherical.radius = clamp(spherical.radius, minDistance, maxDistance);

			offset.setFromSpherical(spherical);

			// rotate offset back to "camera-up-vector-is-up" space
			offset.applyQuaternion(quatInverse);

			position.copy(target).add(offset);

			scope.object.lookAt(target);

			return true;
		};

	}();

	this.lock = function () {
		this.domElement.requestPointerLock();
		// console.log("lock");
		this.enabled = true;
	};

	this.unlock = function () {
		this.domElement.ownerDocument.exitPointerLock();
		// console.log("unlock");
		this.enabled = false;
	};

	this.connect = function () {
		scope.domElement.ownerDocument.addEventListener( 'mousewheel', onMouseWheel, { passive: false } );
		scope.domElement.ownerDocument.addEventListener( 'mousemove', onMouseMove, false );
		scope.domElement.ownerDocument.addEventListener( 'pointerlockchange', onPointerlockChange, false );
		scope.domElement.ownerDocument.addEventListener( 'pointerlockerror', o


issue a certificate with a different validity duration so a client must check the delta between the notBefore and and notAfter fields in the issued certificate to determine the actual duration.\n\nThe v1.22+ in-tree implementations of the well-known Kubernetes signers will honor this field as long as the requested duration is not greater than the maximum duration they will honor per the --cluster-signing-duration CLI flag to the Kubernetes controller manager.\n\nCertificate signers may not honor this field for various reasons:\n\n  1. Old signer that is unaware of the field (such as the in-tree\n     implementations prior to v1.22)\n  2. Signer whose configured maximum is shorter than the requested duration\n  3. Signer whose configured minimum is longer than the requested duration\n\nThe minimum valid value for expirationSeconds is 600, i.e. 10 minutes.",
                                                                      "descriptionCN": "有效期秒数是颁发证书的请求的有效期。证书签发者可以发布一个具有不同有效期的证书，以便客户端检查发行证书时颁发证书之间的差值来确定实际有效期。\n已知的Kubernetes签署者的v1.22+树实现将尊重这个字段，只要该请求的有效期不大于控制器管理器命令中设置的最大执行期限 --cluster-signing-duration CLI标志。\n签名者可能由于各种原因无法尊重这个字段：\n  1. 不知道这个字段的老签发者（如在v1.22之前）\n  2. 设置的最大执行时间小于请求的有效期\n  3. 设置的最小执行时间大于请求的有效期",
                                                                      "type": "integer",
                                                                      "format": "int32"
                                                                  },
                                                                  "extra": {
                                                                      "description": "extra contains extra attributes of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.",
                                                                      "descriptionCN": "\"extra\" 指的是用户创建的证书签名请求所拥有的额外属性。这些属性是由 API 服务器在创建时自动填充并不可变的。",
                                                                      "type": "object"
                                                                  },
                                                                  "groups": {
                                                                      "description": "groups contains group membership of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.",
                                                                      "descriptionCN": "\"Groups\"包含创建证书签名请求的用户群体成员。在创建时由API服务器动态填充，并不可变。",
                                                                      "type": "array",
                                                                      "items": {},
                                                                      "x-kubernetes-list-type": "atomic"
                                                                  },
                                                                  "request": {
                                                                      "description": "request contains an x509 certificate signing request encoded in a \"CERTIFICATE REQUEST\" PEM block. When serialized as JSON or YAML, the data is additionally base64-encoded.",
                                                                      "descriptionCN": "请求包含一个证书签名请求以PEM格式编码在\"CERTIFICATE REQUEST\"块中。当序列化为JSON或YAML时，数据还会被Base64编码。",
                                                                      "type": "string",
                                                                      "format": "byte",
                                                                      "x-kubernetes-list-type": "atomic"
                                                                  },
                                                                  "signerName": {
                                                                      "description": "signerName indicates the requested signer, and is a qualified name.\n\nList/watch requests for CertificateSigningRequests can filter on this field using a \"spec.signerName=NAME\" fieldSelector.\n\nWell-known Kubernetes signers are:\n 1. \"kubernetes.io/kube-apiserver-client\": issues client certificates that can be used to authenticate to kube-apiserver.\n  Requests for this signer are never auto-approved by kube-controller-manager, can be issued by the \"csrsigning\" controller in kube-controller-manager.\n 2. \"kubernetes.io/k


min(a[2], b[2]);
        return out;
    }

    export function max (a: LVec3, b: LVec3, out: LVec3 = same(a)): LVec3
    {
        out[0] = Math.max(a[0], b[0]);
        out[1] = Math.max(a[1], b[1]);
        out[2] = Math.max(a[2], b[2]);
        return out;
    }

    export function round (a: LVec3, out: LVec3 = same(a)): LVec3
    {
        out[0] = Math.round(a[0]);
        out[1] = Math.round(a[1]);
        out[2] = Math.round(a[2]);
        return out;
    }
}
'use strict';
// Add "My todo:" to the beginning of the todoText
// Add " - Download games" to the end of the todoText
// Add " - Diablo" to the end of the todoText but with indention

// Expected output:

// My todo:
//  - Buy milk
//  - Download games
//      - Diablo

let todoText: string = ' - Buy milk\n';

console.log(todoText);

let myTodo = {
  thingsToDo: {
    first: 'Buy milk',
    second: 'Download games - \n Diablo',
  },
};

console.log(myTodo.thingsToDo.first);

console.log(myTodo.thingsToDo.second);
import { Data } from "./lib/types";

export interface State {
  /** The recipe data that is fetched from the server. */
  data: Data | null;

  /** Keys of this map determine which recipes are included in the shopping list. */
  shoppingListRecipes: { [index: number]: {} };

  /** When true show the recipes that a shopping list item is for. */
  showNotes: boolean;
}
import { OperatingSystemMemento } from './OperatingSystemMemento'

export class OperatingSystem {
  public log: string[] = []
  private backupNumber: number = 0
  private backupDate: Date = new Date()

  public createBackup() {
    this.backupNumber++
    this.backupDate = new Date()

    this.log.push(
      `Creating backup: ${this.backupNumber}@${this.backupDate.toString()}`,
    )
  }

  public save(): OperatingSystemMemento {
    this.log.push(
      `Saving snapshot: ${this.backupNumber}@${this.backupDate.toString()}`,
    )
    return new OperatingSystemMemento(this.backupNumber, this.backupDate)
  }

  public load(snapshot: OperatingSystemMemento) {
    const backupNumber = snapshot.getBackupNumber()
    const backupDate = snapshot.getBackupDate()
    this.log.push(
      `Loading snapshot: ${backupNumber}@${backupDate.toString()}. Current state: ${
        this.backupNumber
      }@${this.backupDate.toString()}`,
    )

    this.backupNumber = backupNumber
    this.backupDate = backupDate
  }
}
import { IMessage } from "../database/element/IMessage";
import { IAccount } from "../database/IAccount";
import { ProjectMember } from "./Member";

/**
 * Message pack for display in the text channel
 */
export interface MessagePack{
    /**
     * Sender
     */
    user: IAccount
    /**
     * Sender position in the project
     */
    sender: ProjectMember | undefined
    /**
     * Message data
     */
    message: IMessage
}import { Injectable } from '@angular/core';
import { Lista } from '../models/lista.model';

@Injectable({
  providedIn: 'root'
})
export class DeseosService {

  listas: Lista[]=[];

  constructor() {

    this.cargarStorage();

    //const lista1=new Lista('lista de compras');
    //const lista2=new Lista('li


 && _addDepositFieldValid) &&
        !_netAddValid &&
        _totalAdd.gtZero();
  }

  // This generic add funds method can be delegated to either the V0 or V1 impls and so must accommodate
  // ERC20 token approvals and transactions.
  void _addFunds() async {
    if (!_addBalanceFieldValid) {
      return;
    }
    setState(() {
      txPending = true;
    });

    final progress = ERC20PayableTransactionCallbacks(
      onApprovalCallback: (txHash, seriesIndex, seriesTotal) async {
        await UserPreferencesDapp().addTransaction(DappTransaction(
          transactionHash: txHash,
          chainId: web3Context!.chain.chainId /*always Ethereum*/,
          type: DappTransactionType.addFunds,
          subtype: "approve",
          series_index: seriesIndex,
          series_total: seriesTotal,
        ));
      },
      onTransactionCallback: (txHash, seriesIndex, seriesTotal) async {
        await UserPreferencesDapp().addTransaction(DappTransaction(
          transactionHash: txHash,
          chainId: web3Context!.chain.chainId,
          // always Ethereum
          type: DappTransactionType.addFunds,
          // TODO: Localize
          subtype: "push",
          series_index: seriesIndex,
          series_total: seriesTotal,
        ));
      },
    );

    try {
      await widget.addFunds(
        wallet: wallet,
        signer: widget.signer,
        // nulls guarded by _addBalanceFieldValid and _addDepositFieldValid
        addBalance: _addBalanceField.value!,
        addEscrow: _addDepositField.value!,
        callbacks: progress,
      );

      _addBalanceField.clear();
      _addDepositField.clear();
      setState(() {});
    } catch (err, stack) {
      log('Error on add funds: $err, $stack');
    }
    setState(() {
      txPending = false;
    });
  }

  @override
  void dispose() {
    _addBalanceField.removeListener(_formFieldChanged);
    _addDepositField.removeListener(_formFieldChanged);
    super.dispose();
  }
}
@JS()
library wallet_connect_eth_provider;

import 'package:flutter_web3/flutter_web3.dart';
import 'package:js/js.dart';
import 'package:js/js_util.dart';

class WalletConnectEthereumProvider
    extends Interop<_WalletConnectEthereumProviderImpl> {
  static Future<WalletConnectEthereumProvider> init({
    required String projectId,
    required Map<int, String> rpcMap,
    bool? showQrModal,
    required List<int> chains,
    List<int>? optionalChains,
  }) async {
    chains.forEach((chainId) {
      assert(rpcMap.containsKey(chainId),
          'Chain id ($chainId}) must be in rpc map.');
    });
    var options = _WalletConnectEthereumProviderOptionsImpl(
      projectId: projectId,
      rpcMap: _convertRpc(rpcMap),
      showQrModal: showQrModal,
      chains: chains,
      optionalChains: optionalChains,
    );
    return WalletConnectEthereumProvider.wrap(
      await promiseToFuture(_WalletConnectEthereumProviderImpl.init(options)),
    );
  }

  WalletConnectEthereumProvider.wrap(_WalletConnectEthereumProviderImpl impl)
      : super.internal(impl);

  List<String> get accounts => impl.accounts;

  // String get chainId => impl.chainId;
  int get chainId => impl.chainId;

  bool get connected => impl.connected;

  bool get isConnecting => impl.isConnecting;

  Map<int, String> get rpc => (convertToDart(getProperty(impl, 'rpc')) as Map)
      .map((key, value) => MapEntry(int.parse(key), value.toString()));

  String get rpcUrl => impl.rpcUrl;

  Future<void> connect() =>


tify').invokeMethod('com.amap.api.maps.model.BitmapDescriptor::getWidth', {"refId": refId});

    // handle native call

    // convert native result to dart side object
    if (result == null) {
      return null;
    } else {

      return result;
    }
  }

  Future<int> getHeight() async {
    // print log
    if (fluttifyLogEnabled) {
      print('fluttify-dart: com.amap.api.maps.model.BitmapDescriptor@$refId::getHeight([])');
    }

    // invoke native method
    final result = await MethodChannel('me.yohom/amap_map_fluttify').invokeMethod('com.amap.api.maps.model.BitmapDescriptor::getHeight', {"refId": refId});

    // handle native call

    // convert native result to dart side object
    if (result == null) {
      return null;
    } else {

      return result;
    }
  }

  //endregion
}

extension com_amap_api_maps_model_BitmapDescriptor_Batch on List<com_amap_api_maps_model_BitmapDescriptor> {
  //region getters

  //endregion

  //region setters

  //endregion

  //region methods
  Future<List<String>> getId_batch() async {
    if (false) {
      return Future.error('all args must have same length!');
    }

    // invoke native method
    final resultBatch = await MethodChannel('me.yohom/amap_map_fluttify').invokeMethod('com.amap.api.maps.model.BitmapDescriptor::getId_batch', [for (int i = 0; i < this.length; i++) {"refId": this[i].refId}]);

    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).map((result) => result).toList();

      return typedResult;
    }
  }

  Future<List<com_amap_api_maps_model_BitmapDescriptor>> clone_batch() async {
    if (false) {
      return Future.error('all args must have same length!');
    }

    // invoke native method
    final resultBatch = await MethodChannel('me.yohom/amap_map_fluttify').invokeMethod('com.amap.api.maps.model.BitmapDescriptor::clone_batch', [for (int i = 0; i < this.length; i++) {"refId": this[i].refId}]);

    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).map((result) => com_amap_api_maps_model_BitmapDescriptor()..refId = result..tag = 'amap_map_fluttify').toList();
      kNativeObjectPool.addAll(typedResult);
      return typedResult;
    }
  }

  Future<List<android_graphics_Bitmap>> getBitmap_batch() async {
    if (false) {
      return Future.error('all args must have same length!');
    }

    // invoke native method
    final resultBatch = await MethodChannel('me.yohom/amap_map_fluttify').invokeMethod('com.amap.api.maps.model.BitmapDescriptor::getBitmap_batch', [for (int i = 0; i < this.length; i++) {"refId": this[i].refId}]);

    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).map((result) => android_graphics_Bitmap()..refId = result..tag = 'amap_map_fluttify').toList();


ia only screen and (min-width : @tabletBreakpoint) {
  .ui.large.modal {
    width: @largeTabletWidth;
    margin: @largeTabletMargin;
  }
}
@media only screen and (min-width : @computerBreakpoint) {
  .ui.large.modal {
    width: @largeComputerWidth;
    margin: @largeComputerMargin;
  }
}
@media only screen and (min-width : @largeMonitorBreakpoint) {
  .ui.large.modal {
    width: @largeLargeMonitorWidth;
    margin: @largeLargeMonitorMargin;
  }
}
@media only screen and (min-width : @widescreenMonitorBreakpoint) {
  .ui.large.modal {
    width: @largeWidescreenMonitorWidth;
    margin: @largeWidescreenMonitorMargin;
  }
}

.loadUIOverrides();
h4 {
  letter-spacing: .1rem; }
.container {
  max-width: 900px; }
.header {
  margin-top: 60px;
  margin-bottom: 60px;
  text-align: left; }
.main-description h1 {
  margin-bottom: 0px; }
.main-description p {
  margin-bottom: 0px; }
.main-description .fa {
  font-size: 22px;
  margin-top: 5px; }
.paper {
  margin-bottom: 20px }
.paper .title {
  /*text-transform: uppercase; */}
.paper p {
  margin-bottom: 2px }
.paper-buttons {
    margin-top: 2px }
.paper .button {
  display: inline-block;
  height: 20px;
  padding: 0 5px;
  font-weight: 100;
  line-height: 20px;
  margin-bottom: 0px;
  text-transform: none; }
.section-header {
  text-transform: uppercase;
  font-size: 1.5rem;
  letter-spacing: .2rem;
  font-weight: 600; }
.docs-section {
  border-top: 1px solid #eee;
  padding: 4rem 0;
  margin-bottom: 0;}
.footer {
  text-align: center;
  color: rgba(0, 0, 0, 0.4);
  border-top: 1px solid #eee;
  padding: 15px 0 40px 0;
  margin-bottom: 0;}
.navbar {
  display: none; }
.title-subtitle h3 {
  margin-bottom: 0px; }
.title-subtitle h5 {
  color: rgba(0, 0, 0, 0.60); }
.image {
  text-align: center; }

/*  ================ Project styling  ================ */
.project-container {
  margin-bottom: 30px;
}
.project-image-container {
  border: 1px solid rgba(0,0,0,0.2);
  padding: 3px;
  transition: 0.3s;
}
.project-image-container:hover {
  transition: 0.3s;
}
.project-image-container:hover img {
  opacity: 0.4;
}
.project-caption {
  padding: 3px;
}
.menu {
  text-align: center;
}
.menu ul {
  list-style: none;
}
.menu li {
  display: inline;
  padding: 0px 10px;
}

/* Larger than phone */
@media (min-width: 550px) {
  .header {
    margin-top: 5rem; }
}

/* Larger than tablet */
@media (min-width: 750px) {
  /* Navbar */
  .navbar + .docs-section {
    border-top-width: 0; }
  .navbar,
  .navbar-spacer {
    display: block;
    width: 100%;
    height: 6.5rem;
    background: #fff;
    z-index: 99;
    border-top: 1px solid #eee;
    border-bottom: 1px solid #eee; }
  .navbar-spacer {
    display: none; }
  .navbar > .container {
    width: 100%; }


/*
 * Souffle - A Datalog Compiler
 * Copyright (c) 2019, The Souffle Developers. All rights reserved
 * Licensed under the Universal Permissive License v 1.0 as shown at:
 * - https://opensource.org/licenses/UPL
 * - <souffle root>/licenses/SOUFFLE-UPL.txt
 */

/************************************************************************
 *
 * @file SubroutineReturn.h
 *
 ***********************************************************************/

#pragma once

#include "ram/Expression.h"
#include "ram/Node.h"
#include "ram/Operation.h"
#include "souffle/utility/ContainerUtil.h"
#include "souffle/utility/MiscUtil.h"
#include "souffle/utility/StreamUtil.h"
#include <cassert>
#include <iosfwd>
#include <memory>
#include <ostream>
#include <utility>
#include <vector>

namespace souffle::ram {

/**
 * @class SubroutineReturn
 * @brief A statement for returning from a ram subroutine
 *
 * For example:
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~
 *   ...
 *     RETURN (t0.0, t0.1)
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~
 */
class SubroutineReturn : public Operation {
public:
    SubroutineReturn(VecOwn<Expression> vals) : Operation(NK_SubroutineReturn), expressions(std::move(vals)) {
        assert(allValidPtrs(expressions));
    }

    /** @brief Getter for expressions */
    std::vector<Expression*> getValues() const {
        return toPtrVector(expressions);
    }

    std::size_t getNumValues() const {
        return expressions.size();
    }

    SubroutineReturn* cloning() const override {
        VecOwn<Expression> newValues;
        for (auto& expr : expressions) {
            newValues.emplace_back(expr->cloning());
        }
        return new SubroutineReturn(std::move(newValues));
    }

    void apply(const NodeMapper& map) override {
        for (auto& expr : expressions) {
            expr = map(std::move(expr));
        }
    }

    static bool classof(const Node* n) {
        return n->getKind() == NK_SubroutineReturn;
    }

protected:
    void print(std::ostream& os, int tabpos) const override {
        os << times(" ", tabpos);
        os << "RETURN (";
        for (auto val : getValues()) {
            os << *val;
            if (val != *(getValues().end() - 1)) {
                os << ", ";
            }
        }
        os << ")" << std::endl;
    }

    bool equal(const Node& node) const override {
        const auto& other = asAssert<SubroutineReturn>(node);
        return equal_targets(expressions, other.expressions);
    }

    NodeVec getChildren() const override {
        return toPtrVector<Node const>(expressions);
    }

    /** Return expressions */
    VecOwn<Expression> expressions;
};

}  // namespace souffle::ram


),
          Space.xm!,

          Space.x1!,
        ],
      ),
    );
  }
}
import 'package:audioplayers/audioplayers.dart';

class MyAudioPlayer {
  AudioPlayer audioPlayer = AudioPlayer();
  String audioFilePath = 'assets/audios/torizzi_home.mp3';
  bool isPlaying = false;

  Future<void> toggleAudio() async {
    isPlaying = !isPlaying;

    if (isPlaying) {
      await audioPlayer.setSourceUrl(audioFilePath);
      audioPlayer.resume();
    } else {
      audioPlayer.pause();
    }
  }

  void pause() {
    audioPlayer.pause();
  }

  void dispose() {
    audioPlayer.dispose();
  }
}
import 'package:audioplayers/audioplayers.dart';

class AudioFear1 {
  AudioPlayer audioPlayer = AudioPlayer();
  String audioFilePath = 'assets/audios/fear_2.mp3';
  bool isPlaying = false;

  Future<void> initAudio() async {
    await audioPlayer.setReleaseMode(ReleaseMode.release);
  }

  Future<void> toggleAudio() async {
    isPlaying = !isPlaying;

    if (isPlaying) {
      await audioPlayer.setSourceUrl(audioFilePath);
      audioPlayer.resume();
    } else {
      audioPlayer.pause();
    }
  }

  void dispose() {
    audioPlayer.dispose();
  }
}
import 'package:flutter/material.dart';

class ContainerButton extends StatefulWidget {
  const ContainerButton({
    super.key,
    required this.labelText,
    required this.subLabelText,
    required this.onPressed,
    required this.isParentButton,
  });

  final String labelText;
  final String subLabelText;
  final VoidCallback onPressed;
  final bool isParentButton;

  @override
  State<ContainerButton> createState() => _ContainerButtonState();
}

class _ContainerButtonState extends State<ContainerButton> {
  @override
  Widget build(BuildContext context) {
    final Color buttonColor = widget.isParentButton
        ? const Color(0xFF96B9DB)
        : const Color(0xFFE5C1C5);

    return Padding(
      padding: const EdgeInsets.only(left: 30),
      child: GestureDetector(
        onTap: widget.onPressed,
        child: Container(
          decoration: BoxDecoration(
            borderRadius: BorderRadius.circular(50.0),
            color: buttonColor,
          ),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text(
                widget.labelText,
                style: const TextStyle(
                  fontFamily: 'BMJUA',
                  fontSize: 35,
                  color: Colors.black,
                ),
                textAlign: TextAlign.center,
              ),
              const SizedBox(
                height: 10,
              ),
              Text(
                widget.subLabelText,
                style: const TextStyle(
                  fontFamily: 'Sriracha',
                  fontSize: 25,
                ),
                textAlign: TextAlign.center,
              ),
            ],
          ),
        ),
      ),
    );
  }
}
// 이 코드에서는 비디오 녹화와 관련된 작업을 수행합니다.

import 'dart:async';
import 'package:camera/camera.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'upload.dart';

class Video extends StatefulWidget {
  final int number;

  // Video 위젯 생성자
  const Video({super.key, required this.number});

  @override
  State<Video> createState() {
    return _VideoState();


 mae1
            MSE_ += mse1
            CC_ += cc1
        print(np.mean(CC_)/num)
    return MAE_/(num),MSE_/num,CC_/num
def write2excel(MAE_test,MSE_test,CC_test,excel_path):
    MAE_test = np.concatenate([MAE_test, np.mean(MAE_test, axis=1)[:, None]], axis=1)
    MSE_test = np.concatenate([MSE_test, np.mean(MSE_test, axis=1)[:, None]], axis=1)
    CC_test = np.concatenate([CC_test, np.mean(CC_test, axis=1)[:, None]], axis=1)
    MAE_test = np.concatenate([MAE_test, np.mean(MAE_test, axis=0)[ None]], axis=0)
    MSE_test = np.concatenate([MSE_test, np.mean(MSE_test, axis=0)[None]], axis=0)
    CC_test = np.concatenate([CC_test, np.mean(CC_test, axis=0)[ None]], axis=0)
    # print(CC_test)
    df1 = pd.DataFrame(MAE_test).round(4)
    df2 = pd.DataFrame(MSE_test).round(4)
    df3 = pd.DataFrame(CC_test).round(4)
    with pd.ExcelWriter(excel_path, engine='xlsxwriter') as writer:
        df1.to_excel(writer, sheet_name='MAE_test', index=True)
        df2.to_excel(writer, sheet_name='MSE_test', index=True)
        df3.to_excel(writer, sheet_name='CC_test', index=True)

if __name__=='__main__':
    # input your testpath
    testds = read_tfrecords(testpath).batch(args.bs).prefetch(buffer_size=tf.data.experimental.AUTOTUNE)

    # loading model with modelpath
    model = tf.keras.models.load_model(modelpath)
    # For MCMA-based, input shape is (1024,12)
    MAE_test,MSE_test,CC_test=test_ae(model=model,ds=testds,output_num=1)
    # For UNet-based, input shape is (1024,1)
    MAE_test,MSE_test,CC_test=test_unet(model=model1,ds=testds,filtered=filtered,idxlead=1)
    # For EKGAN-based, needs paddingfor16
    MAE_test,MSE_test,CC_test=test_ekgan(model=model1,ds=testds,filtered=filtered)

    if not os.path.exists(resultpath):
        os.mkdir(resultpath)

    write2excel(MAE_test, MSE_test, CC_test, excel_path)


return resolved}var proxyHandler={get(stubs,prop){switch(prop){case"__memory_base":return memoryBase;case"__table_base":return tableBase}if(prop in wasmImports&&!wasmImports[prop].stub){return wasmImports[prop]}if(!(prop in stubs)){var resolved;stubs[prop]=function(){if(!resolved)resolved=resolveSymbol(prop);if(!resolved){throw new Error(`Dynamic linking error: cannot resolve symbol ${prop}`)}return resolved.apply(null,arguments)}}return stubs[prop]}};var proxy=new Proxy({},proxyHandler);var info={"GOT.mem":new Proxy({},GOTHandler),"GOT.func":new Proxy({},GOTHandler),"env":proxy,"wasi_snapshot_preview1":proxy};function postInstantiation(module,instance){updateTableMap(tableBase,metadata.tableSize);moduleExports=relocateExports(instance.exports,memoryBase);if(!flags.allowUndefined){reportUndefinedSymbols()}function addEmAsm(addr,body){var args=[];var arity=0;for(;arity<16;arity++){if(body.indexOf("$"+arity)!=-1){args.push("$"+arity)}else{break}}args=args.join(",");var func=`(${args}) => { ${body} };`;ASM_CONSTS[start]=eval(func)}if("__start_em_asm"in moduleExports){var start=moduleExports["__start_em_asm"];var stop=moduleExports["__stop_em_asm"];while(start<stop){var jsString=UTF8ToString(start);addEmAsm(start,jsString);start=HEAPU8.indexOf(0,start)+1}}function addEmJs(name,cSig,body){var jsArgs=[];cSig=cSig.slice(1,-1);if(cSig!="void"){cSig=cSig.split(",");for(var i in cSig){var jsArg=cSig[i].split(" ").pop();jsArgs.push(jsArg.replace("*",""))}}var func=`(${jsArgs}) => ${body};`;moduleExports[name]=eval(func)}for(var name in moduleExports){if(name.startsWith("__em_js__")){var start=moduleExports[name];var jsString=UTF8ToString(start);var parts=jsString.split("<::>");addEmJs(name.replace("__em_js__",""),parts[0],parts[1]);delete moduleExports[name]}}var applyRelocs=moduleExports["__wasm_apply_data_relocs"];if(applyRelocs){if(runtimeInitialized){applyRelocs()}else{__RELOC_FUNCS__.push(applyRelocs)}}var init=moduleExports["__wasm_call_ctors"];if(init){if(runtimeInitialized){init()}else{__ATINIT__.push(init)}}return moduleExports}if(flags.loadAsync){if(binary instanceof WebAssembly.Module){var instance=new WebAssembly.Instance(binary,info);return Promise.resolve(postInstantiation(binary,instance))}return WebAssembly.instantiate(binary,info).then(result=>postInstantiation(result.module,result.instance))}var module=binary instanceof WebAssembly.Module?binary:new WebAssembly.Module(binary);var instance=new WebAssembly.Instance(module,info);return postInstantiation(module,instance)}if(flags.loadAsync){return metadata.neededDynlibs.reduce((chain,dynNeeded)=>chain.then(()=>loadDynamicLibrary(dynNeeded,flags)),Promise.resolve()).then(loadModule)}metadata.neededDynlibs.forEach(needed=>loadDynamicLibrary(needed,flags,localScope));return loadModule()};Module["loadWebAssemblyModule"]=loadWebAssemblyModule;var mergeLibSymbols=(exports,libName)=>{for(var sym in exports){if(!exports.hasOwnProperty(sym)){continue}const setImport=target=>{if(!isSymbolDefined(target)){wasmImports[target]=exports[sym]}};setImport(sym);const main_alias="__main_argc_argv";if


-columnmenu-item-content {
    overflow: hidden;
}

.k-column-menu-group-header {
    padding-block: 4px;
    padding-inline: 8px;
    display: flex;
    flex: 0 0 auto;
    position: relative;
    user-select: none;
}

.k-column-menu-group-header-text {
    border-bottom-width: 1px;
    border-bottom-style: solid;
    font-size: 12px;
    line-height: 1.4285714286;
    font-weight: bold;
    flex: 1 1 auto;
}

.k-rtl .k-grid-virtual .k-grid-content .k-grid-table-wrap,
.k-rtl .k-grid-virtual .k-grid-content .k-grid-table,
.k-rtl .k-grid-virtual .k-grid-content > .k-height-container,
[dir="rtl"] .k-grid-virtual .k-grid-content .k-grid-table-wrap,
[dir="rtl"] .k-grid-virtual .k-grid-content .k-grid-table,
[dir="rtl"] .k-grid-virtual .k-grid-content > .k-height-container,
.k-rtl.k-grid-virtual .k-grid-content .k-grid-table-wrap,
.k-rtl.k-grid-virtual .k-grid-content .k-grid-table,
.k-rtl.k-grid-virtual .k-grid-content > .k-height-container,
[dir="rtl"].k-grid-virtual .k-grid-content .k-grid-table-wrap,
[dir="rtl"].k-grid-virtual .k-grid-content .k-grid-table,
[dir="rtl"].k-grid-virtual .k-grid-content > .k-height-container {
    float: right;
}

.k-grid-header,
.k-grid-header-wrap,
.k-grouping-header,
.k-grid .k-table-th,
.k-grid td,
.k-grid .k-table-td,
.k-grid-footer,
.k-grid-footer-wrap,
.k-grid-content-locked,
.k-grid-footer-locked,
.k-grid-header-locked,
.k-filter-row > .k-table-th,
.k-filter-row > td,
.k-filter-row > .k-table-td {
    border-color: #cccdcc;
}

.k-grid-header,
.k-grouping-header,
.k-grid-add-row,
.k-grid-footer {
    color: #272727;
    background-color: #f3f4f3;
}

.k-grid .k-table {
    background-color: inherit;
}

.k-grid-toolbar {
    border-color: inherit;
    box-shadow: none;
}

.k-grid-content {
    background-color: #ffffff;
}

.k-group-footer td,
.k-grouping-row td,
.k-group-footer .k-table-td,
.k-grouping-row .k-table-td,
.k-table-tbody .k-group-cell {
    color: #272727;
    background-color: #ebebeb;
}

.k-grouping-dropclue::before {
    border-color: #272727 transparent transparent;
}

.k-grouping-dropclue::after {
    background-color: #272727;
}

.k-grid {
    border-color: #cccdcc;
    color: #272727;
    background-color: #ffffff;
}

.k-grid .k-table-row.k-


		define_token token
.endmacro

; lay down a keyword and an address (RTS style),
; optionally define a token symbol
.macro keyword_rts key, vec, token
        .segment "BAS_VEC"
		.word	vec-1
		keyword key, token
.endmacro

; lay down a keyword and an address,
; optionally define a token symbol
.macro keyword_addr key, vec, token
        .segment "BAS_VEC"
		.addr	vec
		keyword key, token
.endmacro

.macro count_tokens
        .segment "BAS_DUM"
		NUM_TOKENS := <(*-DUMMY_START)
.endmacro

.macro init_error_table
        .segment "BAS_ERR"
ERROR_MESSAGES:
.endmacro

.macro define_error error, msg
        .segment "BAS_ERR"
		error := <(*-ERROR_MESSAGES)
		htasc msg
.endmacro

;---------------------------------------------
; set the MSB of every byte of a string
.macro asc80 str
	.repeat	.strlen(str),I
		.byte	.strat(str,I)+$80
	.endrep
.endmacro


			if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_EventReputerSubmissionWindowOpened                    protoreflect.MessageDescriptor
	fd_EventReputerSubmissionWindowOpened_topic_id           protoreflect.FieldDescriptor
	fd_EventReputerSubmissionWindowOpened_nonce_block_height protoreflect.FieldDescriptor
	fd_EventReputerSubmissionWindowOpened_window_end_block   protoreflect.FieldDescriptor
)

func init() {
	file_emissions_v9_events_proto_init()
	md_EventReputerSubmissionWindowOpened = File_emissions_v9_events_proto.Messages().ByName("EventReputerSubmissionWindowOpened")
	fd_EventReputerSubmissionWindowOpened_topic_id = md_EventReputerSubmissionWindowOpened.Fields().ByName("topic_id")
	fd_EventReputerSubmissionWindowOpened_nonce_block_height = md_EventReputerSubmissionWindowOpened.Fields().ByName("nonce_block_height")
	fd_EventReputerSubmissionWindowOpened_window_end_block = md_EventReputerSubmissionWindowOpened.Fields().ByName("window_end_block")
}

var _ protoreflect.Message = (*fastReflection_EventReputerSubmissionWindowOpened)(nil)

type fastReflection_EventReputerSubmissionWindowOpened EventReputerSubmissionWindowOpened

func (x *EventReputerSubmissionWindowOpened) ProtoReflect() protoreflect.Message {
	return (*fastReflection_EventReputerSubmissionWindowOpened)(x)
}

func (x *EventReputerSubmissionWindowOpened) slowProtoReflect() protoreflect.Message {
	mi := &file_emissions_v9_events_proto_msgTypes[72]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

var _fastReflection_EventReputerSubmissionWindowOpened_messageType fastReflection_EventReputerSubmissionWindowOpened_messageType
var _ protoreflect.MessageType = fastReflection_EventReputerSubmissionWindowOpened_messageType{}

type fastReflection_EventReputerSubmissionWindowOpened_messageType struct{}

func (x fastReflection_EventReputerSubmissionWindowOpened_messageType) Zero() protoreflect.Message {
	return (*fastReflection_EventReputerSubmissionWindowOpened)(nil)
}
func (x fastReflection_EventReputerSubmissionWindowOpened_messageType) New() protoreflect.Message {
	return new(fastReflection_EventReputerSubmissionWindowOpened)
}
func (x fastReflection_EventReputerSubmissionWindowOpened_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_EventReputerSubmissionWindowOpened
}

//


---------------------------------------------
-- Spirits Within
--
-- Description: Delivers an unavoidable attack. Damage varies with HP and TP.
-- Type: Magical/Breath
-- Utsusemi/Blink absorb: Ignores shadows and most damage reduction.
-- Range: Melee
---------------------------------------------
require("scripts/globals/monstertpmoves")
require("scripts/globals/settings")
require("scripts/globals/status")
require("scripts/globals/utils")
require("scripts/globals/msg")

function onMobSkillCheck(target,mob,skill)
    if (mob:getPool() ~= 4249) then
        mob:messageBasic(dsp.msg.basic.READIES_WS, 0, 39)
    end

    return 0
end

function onMobWeaponSkill(target, mob, skill)
    if (mob:getPool() == 4249) then -- Volker@Throne_Room only
        target:showText(mob,zones[dsp.zone.THRONE_ROOM].text.RETURN_TO_THE_DARKNESS)
    end

    local tp = skill:getTP()
    local hp = mob:getH


olated = pOldPortal->m_matrixThisToLinked * PortalEyeInterpolation.m_vEyePosition_Interpolated;

			//Vector vForward;
			//m_hPortalEnvironment.Get()->GetVectors( &vForward, NULL, NULL );

			PortalEyeInterpolation.m_vEyePosition_Interpolated = EyeFootPosition();

			PortalEyeInterpolation.m_bEyePositionIsInterpolating = true;
		}
	}

	if( IsInAVehicle() )
		PortalEyeInterpolation.m_bEyePositionIsInterpolating = false;

	if( !PortalEyeInterpolation.m_bEyePositionIsInterpolating )
	{
		PortalEyeInterpolation.m_vEyePosition_Uninterpolated = EyeFootPosition();
		PortalEyeInterpolation.m_vEyePosition_Interpolated = PortalEyeInterpolation.m_vEyePosition_Uninterpolated;
		return;
	}

	Vector vThisFrameUninterpolatedPosition = EyeFootPosition();

	//find offset between this and last frame's uninterpolated movement, and apply this as freebie movement to the interpolated position
	PortalEyeInterpolation.m_vEyePosition_Interpolated += (vThisFrameUninterpolatedPosition - PortalEyeInterpolation.m_vEyePosition_Uninterpolated);
	PortalEyeInterpolation.m_vEyePosition_Uninterpolated = vThisFrameUninterpolatedPosition;

	Vector vDiff = vThisFrameUninterpolatedPosition - PortalEyeInterpolation.m_vEyePosition_Interpolated;

	float fLength = vDiff.Length();
	float fFollowSpeed = gpGlobals->frametime * 100.0f;
	const float fMaxDiff = 150.0f;
	if( fLength > fMaxDiff )
	{
		//camera lagging too far behind, give it a speed boost to bring it within maximum range
		fFollowSpeed = fLength - fMaxDiff;
	}
	else if( fLength < fFollowSpeed )
	{
		//final move
		PortalEyeInterpolation.m_bEyePositionIsInterpolating = false;
		PortalEyeInterpolation.m_vEyePosition_Interpolated = vThisFrameUninterpolatedPosition;
		return;
	}

	if ( fLength > 0.001f )
	{
		vDiff *= (fFollowSpeed/fLength);
		PortalEyeInterpolation.m_vEyePosition_Interpolated += vDiff;
	}
	else
	{
		PortalEyeInterpolation.m_vEyePosition_Interpolated = vThisFrameUninterpolatedPosition;
	}

#else
	PortalEyeInterpolation.m_vEyePosition_Interpolated = BaseClass::EyePosition();
#endif
}

Vector C_Portal_Player::EyeFootPosition( const QAngle &qEyeAngles )
{
	return EyePosition() - m_vecViewOffset.Length() * m_PortalLocal.m_Up;
}

void C_Portal_Player::CalcView( Vector &eyeOrigin, QAngle &eyeAngles, float &zNear, float &zFar, float &fov )
{
	HandleTaunting();

	m_pNoDrawForRecursionLevelOne = NULL;
	m_bEyePositionIsTransformedByPortal = false; //assume it's not transformed until it provably is
	UpdatePortalEyeInterpolation();

	QAngle qEyeAngleBackup = EyeAngles();
	Vector ptEyePositionBackup = EyePosition();

	if ( Util_PIP_ShouldDrawPlayer( this ) )
	{
		eyeAngles = EyeAngles();
		eyeAngles[ PITCH ] = -m_vecRemoteViewAngles.x;
		eyeAngles[ YAW ] += m_vecRemoteViewAngles.y - 180.0f;
		Vector vForward;
		AngleVectors( eyeAngles, &vForward );


// MNetworkIncludeByUserGroup = "Origin"
// MNetworkIncludeByName = "m_nModelIndex"
// MNetworkIncludeByName = "m_nRenderFX"
// MNetworkIncludeByName = "m_nRenderMode"
// MNetworkIncludeByName = "m_clrRender"
// MNetworkIncludeByName = "CGameSceneNode::m_hParent"
// MNetworkOverride = "m_clrRender"
// MNetworkVarNames = "float32 m_flFrameRate"
// MNetworkVarNames = "float32 m_flHDRColorScale"
// MNetworkVarNames = "uint8 m_nNumBeamEnts"
// MNetworkVarNames = "HMaterialStrong m_hBaseMaterial"
// MNetworkVarNames = "HMaterialStrong m_nHaloIndex"
// MNetworkVarNames = "BeamType_t m_nBeamType"
// MNetworkVarNames = "uint32 m_nBeamFlags"
// MNetworkVarNames = "CHandle< CBaseEntity > m_hAttachEntity"
// MNetworkVarNames = "AttachmentHandle_t m_nAttachIndex"
// MNetworkVarNames = "float32 m_fWidth"
// MNetworkVarNames = "float32 m_fEndWidth"
// MNetworkVarNames = "float32 m_fFadeLength"
// MNetworkVarNames = "float32 m_fHaloScale"
// MNetworkVarNames = "float32 m_fAmplitude"
// MNetworkVarNames = "float32 m_fStartFrame"
// MNetworkVarNames = "float32 m_fSpeed"
// MNetworkVarNames = "float32 m_flFrame"
// MNetworkVarNames = "BeamClipStyle_t m_nClipStyle"
// MNetworkVarNames = "bool m_bTurnedOff"
// MNetworkVarNames = "VectorWS m_vecEndPos"
class CBeam : public CBaseModelEntity
{
	// MNetworkEnable
	// MNetworkBitCount = 10
	// MNetworkMinValue = -25.000000
	// MNetworkMaxValue = 25.000000
	// MNetworkEncodeFlags = 2
	float32 m_flFrameRate;
	// MNetworkEnable
	float32 m_flHDRColorScale;
	GameTime_t m_flFireTime;
	float32 m_flDamage;
	// MNetworkEnable
	uint8 m_nNumBeamEnts;
	// MNetworkEnable
	CStrongHandle< InfoForResourceTypeIMaterial2 > m_hBaseMaterial;
	// MNetworkEnable
	CStrongHandle< InfoForResourceTypeIMaterial2 > m_nHaloIndex;
	// MNetworkEnable
	BeamType_t m_nBeamType;
	// MNetworkEnable
	uint32 m_nBeamFlags;
	// MNetworkEnable
	CHandle< CBaseEntity >[10] m_hAttachEntity;
	// MNetworkEnable
	AttachmentHandle_t[10] m_nAttachIndex;
	// MNetworkEnable
	// MNetworkBitCount = 10
	// MNetworkMinValue = 0.000000
	// MNetworkMaxValue = 102.300003
	// MNetworkEncodeFlags = 2
	float32 m_fWidth;
	// MNetworkEnable
	// MNetworkBitCount = 10
	// MNetworkMinValue = 0.000000
	// MNetworkMaxValue = 102.300003
	// MNetworkEncodeFlags = 2
	float32 m_fEndWidth;
	// MNetworkEnable
	float32 m_fFadeLength;
	// MNetworkEnable
	float32 m_fHaloScale;
	// MNetworkEnable
	// MNetworkBitCount = 8
	// MNetworkMinValue = 0.000000
	// MNetworkMaxValue = 64.000000
	// MNetworkEncodeFlags = 1
	float32 m_fAmplitude;
	// MNetworkEnable
	// MNetworkBitCount = 8
	// MNetworkMinValue = 0.000000
	// MNetworkMaxValue = 256.000000
	// MNetworkEncodeFlags = 1
	float32 m_fStartFrame;
	// MNetworkEnable
	// MNetworkBitCount = 8
	// MNetworkMinValue = 0.000000
	// MNetworkMaxValue = 100.000000
	float32 m_fSpeed;
	// MNetworkEnable
	// MNetworkBitCount = 20
	// MNetworkMinValue = 0.000000
	// MNetworkMaxValue = 256.000000
	// MNetworkEncodeFlags = 1
	// MNetworkPriority = 32
	float32 m_flFrame;
	// MNetworkEnable
	BeamClipStyle_t m_nClipStyle;
	// MNetworkEnable
	bool m_bTurnedOff;
	// MNetworkEnable
	// MNetworkEncoder = "coord"
	VectorWS m_vecEndPos;
	CHandle< CBaseEntity > m_hEndEntity;
	int32 m_nDissolveType;
};