_amount - #Details.tabela_instancias
end

function Details:GetOpenedWindowsAmount()
	local amount = 0
	for _, instance in Details:ListInstances() do
		if (instance:IsEnabled()) then
			amount = amount + 1
		end
	end
	return amount
end

function Details:GetNumRows()
	return self.rows_fit_in_window
end

function Details:GetRow (index)
	return self.barras [index]
end

function Details:GetSkin()
	return Details.skins [self.skin]
end

function Details:GetSkinTexture()
	return Details.skins [self.skin] and Details.skins [self.skin].file
end

function Details:GetAllLines()
	return self.barras
end
function Details:GetLine(lineId) --alias of _detalhes:GetRow(index)
	return self.barras[lineId]
end
function Details:GetNumLinesShown() --alis of _detalhes:GetNumRows()
	return self.rows_fit_in_window
end

---comment
---@param displayId number
---@return actor
---@return actor
---@return actor
---@return actor
---@return actor
function Details:GetTop5Actors(displayId)
	local combatObject = self.showing
	local container = combatObject:GetContainer(displayId)
	local actorTable = container._ActorTable
	return actorTable[1], actorTable[2], actorTable[3], actorTable[4], actorTable[5]
end

---get the combat object which the instance is showing, get the display and subDisplay, then refresh the window in report mode and get the rankIndex actor
---@param self instance
---@param displayId attributeid
---@param subDisplayId attributeid
---@param rankIndex number
---@return actor
function Details:GetActorBySubDisplayAndRank(displayId, subDisplayId, rankIndex)
	local classObject = Details:GetDisplayClassByDisplayId(displayId)
	local combatObject = self:GetCombat()
	local bIsForceRefresh = false
	local bIsExport = true
	local totalDone, subDisplayName, firstPlaceTotal, actorAmount = classObject:RefreshWindow(self, combatObject, bIsForceRefresh, bIsExport)

	local actorContainer = combatObject:GetContainer(displayId)
	local actorTable = actorContainer:GetActorTable()

	return actorTable[rankIndex]
end

--@attributeId: DETAILS_ATTRIBUTE_DAMAGE, DETAILS_ATTRIBUTE_HEAL
--@rankIndex: the rank id of the actor shown in the window
---@param self instance
---@param displayId attributeid
---@param rankIndex number
function Details:GetActorByRank(displayId, rankIndex)
	local combatObject = self:GetCombat()
	if (combatObject) then
		local container = combatObject:GetContainer(displayId)
		if (container) then
			return container._ActorTable[rankIndex]
		end
	end

	--[=[
	local firstRow = window1:GetLine(1)
	if (firstRow and firstRow:IsShown()) then
		local actor = firstRow:GetActor()
		if (actor) then
			local total = actor.total
			local combatTime = Details:GetCurrentCombat():GetCombatTime()
			print("dps:", total/combatTime)
		end
	end

	local actorTable = container._ActorTable
	for i = 1, #actorTable do
		local actor = actorTable[rankIndex]
		return actor
	end
	--]=]
end

------------------------------------------------------------------------------------------------------------------------

--retorna se a inst�ncia esta ou n�o ativa
function Details:IsAtiva()
	return self.ativa
end

--english alias
function Details:IsShown()


thodPut,
					"/hosts/ee37c360-7eae-4250-a677-6ee12adce8e2",
					strings.NewReader(hostJson),
				)
				Expect(err).NotTo(HaveOccurred())
				req.Header.Set("Accept", consts.HTTPMediaTypeJson)
				req.Header.Set("Content-Type", consts.HTTPMediaTypeJson)
				w = httptest.NewRecorder()
				router.ServeHTTP(w, req)
				Expect(w.Code).To(Equal(http.StatusBadRequest))
			})
		})
		Context("Provide a Host data that contains invalid hostname", func() {
			It("Should fail to update Host", func() {
				router.Handle("/hosts/{hId}", hvsRoutes.ErrorHandler(hvsRoutes.JsonResponseHandler(hostController.Update))).Methods(http.MethodPut)
				hostJson := `{
								"host_name": "local host",
								"connection_string": "intel:https://ta.ip.com:1443"
							}`

				req, err := http.NewRequest(
					http.MethodPut,
					"/hosts/ee37c360-7eae-4250-a677-6ee12adce8e2",
					strings.NewReader(hostJson),
				)
				Expect(err).NotTo(HaveOccurred())
				req.Header.Set("Accept", consts.HTTPMediaTypeJson)
				req.Header.Set("Content-Type", consts.HTTPMediaTypeJson)
				w = httptest.NewRecorder()
				router.ServeHTTP(w, req)
				Expect(w.Code).To(Equal(http.StatusBadRequest))
			})
		})
		Context("Provide a non-existent Host data", func() {
			It("Should fail to update Host", func() {
				router.Handle("/hosts/{hId}", hvsRoutes.ErrorHandler(hvsRoutes.JsonResponseHandler(hostController.Update))).Methods(http.MethodPut)
				hostJson := `{
								"host_name": "localhost1",
								"connection_string": "intel:https://ta.ip.com:1443"
							}`

				req, err := http.NewRequest(
					http.MethodPut,
					"/hosts/73755fda-c910-46be-821f-e8ddeab189e9",
					strings.NewReader(hostJson),
				)
				Expect(err).NotTo(HaveOccurred())
				req.Header.Set("Accept", consts.HTTPMediaTypeJson)
				req.Header.Set("Content-Type", consts.HTTPMediaTypeJson)
				w = httptest.NewRecorder()
				router.ServeHTTP(w, req)
				Expect(w.Code).To(Equal(http.StatusNotFound))
			})
		})
	})

	// Specs for HTTP Delete to "/hosts/{hId}"
	Describe("Delete an existing Host", func() {
		Context("Delete Host by ID", func() {
			It("Should delete a Host", func() {
				router.Handle("/hosts/{hId}", hvsRoutes.ErrorHandler(hvsRoutes.ResponseHandler(hostController.Delete))).Methods(http.MethodDelete)
				req, err := http.NewRequest(http.MethodDelete, "/hosts/ee37c360-7eae-4250-a677-6ee12adce8e2", nil)
				Expect(err).NotTo(HaveOccurred())
				w = httptest.NewRecorder()
				router.ServeHTTP(w, req)
				Expect(w.Code).To(Equal(http.StatusNoContent))
			})
		})
		Context("Delete Host by non-existent ID", func() {
			It("Should fail to delete Host", func() {
				router.Handle("/hosts/{hId}", hvsRoutes.ErrorHandler(hvsRoutes.ResponseHandler(hostController.Delete))).Methods(http.MethodDelete)
				req, err := http.NewRequest(http.MethodDelete, "/hosts/73755fda-c910-46be-821f-e8ddeab


*/
#define XST_SPI_SLAVE_ONLY          1158	/* device is configured as slave-only */
#define XST_SPI_SLAVE_MODE_FAULT    1159	/* slave was selected while disabled */

/********************** OPB Arbiter statuses 1176 - 1200 *********************/

#define XST_OPBARB_INVALID_PRIORITY  1176	/* the priority registers have either
						 * one master assigned to two or more
						 * priorities, or one master not
						 * assigned to any priority
						 */
#define XST_OPBARB_NOT_SUSPENDED     1177	/* an attempt was made to modify the
						 * priority levels without first
						 * suspending the use of priority
						 * levels
						 */
#define XST_OPBARB_PARK_NOT_ENABLED  1178	/* bus parking by id was enabled but
						 * bus parking was not enabled
						 */
#define XST_OPBARB_NOT_FIXED_PRIORITY 1179	/* the arbiter must be in fixed
						 * priority mode to allow the
						 * priorities to be changed
						 */

/************************ Intc statuses 1201 - 1225 **************************/

#define XST_INTC_FAIL_SELFTEST      1201	/* self test failed */
#define XST_INTC_CONNECT_ERROR      1202	/* interrupt already in use */

/********************** TmrCtr statuses 1226 - 1250 **************************/

#define XST_TMRCTR_TIMER_FAILED     1226	/* self test failed */

/********************** WdtTb statuses 1251 - 1275 ***************************/

#define XST_WDTTB_TIMER_FAILED      1251L

/********************** PlbArb statuses 1276 - 1300 **************************/

#define XST_PLBARB_FAIL_SELFTEST    1276L

/********************** Plb2Opb statuses 1301 - 1325 *************************/

#define XST_PLB2OPB_FAIL_SELFTEST   1301L

/********************** Opb2Plb statuses 1326 - 1350 *************************/

#define XST_OPB2PLB_FAIL_SELFTEST   1326L

/********************** SysAce statuses 1351 - 1360 **************************/

#define XST_SYSACE_NO_LOCK          1351L	/* No MPU lock has been granted */

/********************** PCI Bridge statuses 1361 - 1375 **********************/

#define XST_PCI_INVALID_ADDRESS     1361L

/**************************** Type Definitions *******************************/

/**
 * The status typedef.
 */
typedef u32 XStatus;

/***************** Macros (Inline Functions) Definitions *********************/

/************************** Function Prototypes ******************************/

#endif				/* end of protection macro */


first-child::after,.nes-table thead:last-child tr:last-child th:last-child::before{display:none}.nes-text.is-primary{color:#209cee}.nes-text.is-success{color:#92cc41}.nes-text.is-warning{color:#f7d51d}.nes-text.is-error{color:#e76e55}.nes-text.is-disabled{color:#d3d3d3}.nes-input,.nes-textarea{border-image-slice:2;border-image-width:2;border-image-repeat:stretch;border-image-source:url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8" ?><svg version="1.1" width="5" height="5" xmlns="http://www.w3.org/2000/svg"><path d="M2 1 h1 v1 h-1 z M1 2 h1 v1 h-1 z M3 2 h1 v1 h-1 z M2 3 h1 v1 h-1 z" fill="rgb(33,37,41)" /></svg>');border-image-outset:2;width:calc(100% - 8px);padding:.5rem 1rem;margin:4px;background-clip:padding-box}@media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.nes-input,.nes-textarea{border-image-repeat:space}}@supports (-moz-appearance:meterbar){.nes-input,.nes-textarea{border-image-repeat:stretch}}.nes-input.is-dark,.nes-textarea.is-dark{border-image-source:url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8" ?><svg version="1.1" width="5" height="5" xmlns="http://www.w3.org/2000/svg"><path d="M2 1 h1 v1 h-1 z M1 2 h1 v1 h-1 z M3 2 h1 v1 h-1 z M2 3 h1 v1 h-1 z" fill="rgb(255,255,255)" /></svg>');outline-color:#e7e7e7;color:#fff;background-color:#212529}.nes-input.is-success,.nes-textarea.is-success{border-image-source:url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8" ?><svg version="1.1" width="5" height="5" xmlns="http://www.w3.org/2000/svg"><path d="M2 1 h1 v1 h-1 z M1 2 h1 v1 h-1 z M3 2 h1 v1 h-1 z M2 3 h1 v1 h-1 z" fill="rgb(146,204,65)" /></svg>');outline-color:#76c442}.nes-input.is-warning,.nes-textarea.is-warning{border-image-source:url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8" ?><svg version="1.1" width="5" height="5" xmlns="http://www.w3.org/2000/svg"><path d="M2 1 h1 v1 h-1 z M1 2 h1 v1 h-1 z M3 2 h1 v1 h-1 z M2 3 h1 v1 h-1 z" fill="rgb(247,213,29)" /></svg>');outline-color:#f2c409}.nes-input.is-error,.nes-textarea.is-error{border-image-source:url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8" ?><svg version="1.1" width="5" height="5" xmlns=


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

void FActorInfo::SetDamageFactor(FName type, fixed_t factor)
{
	if (DamageFactors == NULL)
	{
		DamageFactors = new DmgFactors;
	}
	DamageFactors->Insert(type, factor);
}

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

void FActorInfo::SetPainChance(FName type, int chance)
{
	if (chance >= 0)
	{
		if (PainChances == NULL) PainChances=new PainChanceList;
		PainChances->Insert(type, MIN(chance, 256));
	}
	else
	{
		if (PainChances != NULL)
			PainChances->Remove(type);
	}
}

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

void FActorInfo::SetPainFlash(FName type, PalEntry color)
{
	if (PainFlashes == NULL)
		PainFlashes = new PainFlashList;

	PainFlashes->Insert(type, color);
}

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

bool FActorInfo::GetPainFlash(FName type, PalEntry *color) const
{
	const FActorInfo *info = this;

	while (info != NULL)
	{
		if (info->PainFlashes != NULL)
		{
			PalEntry *flash = info->PainFlashes->CheckKey(type);
			if (flash != NULL)
			{
				*color = *flash;
				return true;
			}
		}
		// Try parent class
		info = info->Class->ParentClass->ActorInfo;
	}
	return false;
}

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

void FActorInfo::SetColorSet(int index, const FPlayerColorSet *set)
{
	if (set != NULL)
	{
		if (ColorSets == NULL) ColorSets = new FPlayerColorSetMap;
		ColorSets->Insert(index, *set);
	}
	else
	{
		if (ColorSets != NULL)
			ColorSets->Remove(index);
	}
}

//==========================================================================
//
// DmgFactors :: CheckFactor
//
// Checks for the existance of a certain damage type. If that type does not
// exist, the damage factor for type 'None' will be returned, if present.
//
//==========================================================================

fixed_t *DmgFactors::CheckFactor(FName type)
{
	fixed_t *pdf = CheckKey(type);
	if (pdf == NULL && type != NAME_None)
	{
		pdf = CheckKey(NAME_None);
	}
	return pdf;
}

static void SummonActor (int command, int command2, FCommandLine argv)
{
	if (CheckCheatmode ())
		return;

	if (argv.argc() > 1)
	{
		const PClass *type = PClass::FindClass (argv[1]);
		if (type == NULL)
		{
			Printf ("Unknown class '%s'\n", argv[1]);
			return;
		}
		Net_WriteByte (argv.argc() > 2 ? command2 : command);
		Net_WriteString (type->TypeName.GetChars());

		if (argv.argc () > 2) {
			Net_WriteWord (atoi (argv[2])); // angle
			if (argv.argc () > 3) Net_WriteWord (atoi (argv[3])); // TID
			else Net_WriteWord (0);
			if (argv.argc () > 4) Net_WriteByte (atoi (argv[4])); // special
			else Net_WriteByte (0);
			for(int i = 5; i < 10; i++) { // args[5]
				if(i < argv.argc()) Net_WriteLong (atoi (argv[i]));
				else Net_WriteLong (0);
			}
		}
	}
}

CCMD (summon)
{
	SummonActor (DEM_SUMMON, DEM_SUMMON2, argv);
}

CCMD (summonfriend)
{
	SummonActor (DEM_SUMMONFRIEND, DEM_SUMMONFRIEND2, argv);
}

CCMD (summonmbf)
{
	SummonActor (DEM_SUMMONMBF, DEM_SUMM


大小不同。提价幅度大的地区每百斤粮食 提高两元以上，幅度小的地区只提三角五分。

   鉴于提高城镇粮食统销价格，对城镇人民生活有较大的影响，为了使绝大部分职工不因粮食提价而发生生 活困难，决定另外给予必要的补贴。各地按照粮食提价幅度的高低，对于收入低的职工，每人每月分别给予适当补贴，收入高的可以不补贴，有些提价特别少的城镇 也可以全部不补贴。这对于缩小收入高低不同的职工的生活差距也是有好处的。关于补贴的具体办法由国务院另行下达。提高城镇粮价对于手工业、服务业的影响不 大，这些行业的产品价格和服务收费可以不变。

   二、适当提高煤炭的市场销售价格。商业部门经营煤炭有亏损地区，可以经过核实，按合理经营的 费用标准，把煤炭价格提高到不亏损或者略有利润的程度；商业部门经营煤炭有利润的地区，煤炭价格可以不动，也可以稍加提高，以便把地区间和品种间的价格摆 得更加合理。这样，煤炭的市场销售价格，全国平均每吨大约提高一元上下，其中，东北地区每吨煤炭大约提高二元上下，全国提价金额约为七千万元。

   三、在不影响棉布市场销售价格总水平的条件下，合理调整棉布价格。提高某些低档布价格，降低某些高档布价格，同时合理调整各地区棉布的地区差价，批零差价。这样调整，全国棉布提价降低相抵以后，提价金额只有九十万元，对于城乡人民生活无大影响。

   四、我国农产品的收购价格，在建国后十五年中，提高了百分之九十上下，历史上遗留下来的工业品价格高、农产品价格低的不合理现象有所改善。目前农产品的 收购价格，一般是比较适当的，从各种作物的收益来看，只有粮食价格偏低一些。但是目前全面提高粮食统购价格的条件还不具备，总


: String?, pageUrl: String?): String? {
    val autoCache =
        pageUrl != null && (pageUrl.contains("#autoCache#") || pageUrl.contains("#cacheOnly#"))
    return if (autoCache) {
        StringUtil.md5(pageTitle + "￥￥￥" + pageUrl)
    } else null
}

fun isCacheOnly(pageUrl: String?): Boolean {
    return pageUrl?.contains("#cacheOnly#") == true
}

fun hasCache(context: Context, cacheMd5: String?): Boolean {
    val file =
        File(
            UriUtils.getRootDir(context) +
                    File.separator + "cache" +
                    File.separator + "pages" +
                    File.separator + cacheMd5 + ".json"
        )
    return file.exists() && file.length() > 0
}

fun getCache(context: Context, cacheMd5: String?): PageCache {
    return if (cacheMd5.isNullOrEmpty()) {
        PageCache(emptyList())
    } else {
        val file =
            File(
                UriUtils.getRootDir(context) +
                        File.separator + "cache" +
                        File.separator + "pages" +
                        File.separator + cacheMd5 + ".json"
            )
        if (file.exists()) {
            try {
                val text = FileUtil.fileToString(file.absolutePath)
                if (!text.isNullOrEmpty()) {
                    val pageCache = PageCache()
                    if (text.startsWith("[") && text.endsWith("]")) {
                        pageCache.data = JSON.parseArray(text, ArticleList::class.java)
                    }
                    return JSON.parseObject(text, PageCache::class.java)
                }
            } catch (e: Exception) {
                e.printStackTrace()
            }
        }
        return PageCache(emptyList())
    }
}

fun saveCache(context: Context, cacheMd5: String?, data: List<ArticleList>) {
    saveCache(context, cacheMd5, data, null)
}

fun saveCache(context: Context, cacheMd5: String?, data: List<ArticleList>, code: String? = null) {
    if (cacheMd5.isNullOrEmpty()) {
        return
    }
    //避免后续data修改导致写入文件的数据变化
    val temp = ArrayList(data)
    HeavyTaskUtil.executeNewTask {
        val json =
            File(
                UriUtils.getRootDir(context) +
                        File.separator + "cache" +
                        File.separator + "pages" +
                        File.separator + cacheMd5 + ".json"
            )
        if (temp.isNullOrEmpty()) {
            json.delete()
        } else {
            val pageCache = PageCache(temp, code)
            FileUtil.bytesToFile(json.absolutePath, JSON.toJSONBytes(pageCache))
        }
    }
}

fun clearCache(context: Context) {
    HeavyTaskUtil.executeNewTask {
        //删除过期的文件
        val dir = File(
            UriUtils.getRootDir(context) +
                    File.separator + "cache" +
                    File.separator + "pages"
        )
        if (!dir.exists()) {
            return@executeNewTask
        }
        var files = dir.listFiles()
        if (files == null || files.isEmpty()) {
            return@executeNewTask
        }
        val now = System.currentTimeMillis()
        for (file in files) {
            if (now - file.lastModified() > 3600 * 1000 * 24 * 15) {
                //删除大于15天的
                if (!file.isDirectory) {
                    file.delete()
                }
            }
        }
        //删除超出200个的
        f


高可用。
- **自定义哈希函数**：
  - Python 需实现 `__hash__` 和 `__eq__`，Java 需重写 `hashCode` 和 `equals`。
- **哈希攻击与安全性**：
  - 恶意构造大量冲突可导致 DoS，Python 3.3+ 加入哈希随机种子防护。
- **内存局部性**：
  - 链地址法易 cache miss，开放寻址法更友好。
- **与其他结构对比**：
  - 哈希表查找快但无序，树结构有序且支持范围查找。

---

# 六、常见陷阱与注意事项
- Key 必须可哈希且不可变（Python: 实现 `__hash__`/`__eq__`，Java: `hashCode`/`equals`）。
- 插入过多未扩容，查找性能急剧下降。
- 开放寻址法删除需“删除标记”避免探查链断裂。
- HashSet/HashMap 判断唯一性依赖 hashCode+equals，TreeSet/TreeMap 依赖 compareTo/Comparator。
- 链表过长时性能退化，JDK8+用红黑树优化。

---

# 七、学习建议与面试高频
1. 理解哈希表原理与典型应用。
2. 熟悉链地址法与[开放寻址法（Open Addressing）](../算法/开放寻址法（Open%20Addressing）.md)的优缺点。
3. 阅读 Java HashMap、Python dict、Redis dict 源码（建议先看 Java）。
4. 实现简单哈希表（建议用 Java/Python）。
5. 理解扩容机制与 rehash 细节。
6. 掌握哈希表与树、数组等结构的对比。
7. 面试常考：HashSet/TreeSet 区别、hashCode/equals 机制、哈希冲突处理、扩容原理等。

---

> **参考：**
> - [ArrayList 和 LinkedList 的性能差异](../001-Java扩展/ArrayList%20和%20LinkedList%20的性能差异.md)
> - [HashSet 和 TreeSet 的底层实现](../001-Java扩展/HashSet%20和%20TreeSet%20的底层实现.md)

# 1 人工智能知识体系

## 1.1 核心学习路径
- [AI学习路线与转型指南](03-知乎-AI学习路线.md)
- [人工智能基础认知](00-人工智能的理解.md)
- [从Java转型AI实战指南](02%20-%20如何转型AI.md)

## 1.2 关键技术模块
### 1.2.1 开发工具链
- [Spring AI集成方案](Spring%20AI/SpringAI核心概念.md)
- [


.Append(changes.Replace{Before: values[3], After: changes.Nil})
	if strong, c = strong.Next(); c != nil {
		t.Error("Unexpected change on terminated stream", c)
	}

	s.Append(changes.Replace{Before: changes.Nil, After: values[3]})
	if _, c = strong.Next(); c != nil {
		t.Error("Unexpected change on terminated stream", c)
	}
}

func TestStreammyUnionpStreamboo(t *testing.T) {
	s := streams.New()
	values := valuesFormyUnionpStream()
	strong := &myUnionpStream{Stream: s, Value: values[0]}
	expected := strong.Value.boo
	if !reflect.DeepEqual(expected, strong.boo().Value) {
		t.Error("Substream returned unexpected value", strong.boo().Value)
	}

	child := strong.boo()
	for kk := range values {
		child = child.Update(values[kk].boo)
		strong = strong.Latest()
		if !reflect.DeepEqual(child.Value, values[kk].boo) {
			t.Error("updating child didn't  take effect", child.Value)
		}
		if !reflect.DeepEqual(child.Value, strong.Value.boo) {
			t.Error("updating child didn't  take effect", child.Value)
		}

		if _, ok := strong.Value.getBoo(); !ok {
			t.Error("Getter failed")
		}

		if _, ok := strong.Value.getBoop(); ok {
			t.Error("Getter failed")
		}

		if _, ok := strong.Value.getStr(); ok {
			t.Error("Getter failed")
		}

		if _, ok := strong.Value.GetStr16(); ok {
			t.Error("Getter failed")
		}

	}

	v := strong.Value.setBoo(values[0].boo)
	if !reflect.DeepEqual(v.boo, values[0].boo) {
		t.Error("Could not update", "setBoo")
	}
}
func TestStreammyUnionpStreamboop(t *testing.T) {
	s := streams.New()
	values := valuesFormyUnionpStream()
	strong := &myUnionpStream{Stream: s, Value: values[0]}
	expected := strong.Value.boop
	if !reflect.DeepEqual(expected, strong.boop().Value) {
		t.Error("Substream returned unexpected value", strong.boop().Value)
	}

	child := strong.boop()
	for kk := range values {
		child = child.Update(values[kk].boop)
		strong = strong.Latest()
		if !reflect.DeepEqual(child.Value, values[kk].boop) {
			t.Error("updating child didn't  take effect", child.Value)
		}
		if !reflect.DeepEqual(child.Value, strong.Value.boop) {
			t.Error("updating child didn't  take effect", child.Value)
		}

		if _, ok := strong.Value.getBoo(); ok {
			t.Error("Getter failed")
		}

		if _, ok := strong.Value.getBoop(); !ok {
			t.Error("Getter failed")
		}

		if _, ok := strong.Value.getStr(); ok {
			t.Error("Getter failed")
		}

		if _, ok := strong.Value.GetStr16(); ok {
			t.Error("Getter failed")
		}

	}

	v := strong.Value.setBoop(values[0].boop)
	if !reflect.DeepEqual(v.boop, values[0].boop) {
		t.Error("Could not update", "setBoop")
	}
}
func TestStreammyUnionpStreamstr(t *testing.T) {
	s := streams.New()
	values := valuesFormyUnionpStream()
	strong := &myUnionpStream{Stream: s, Value: values[0]}
	expected := strong.Value.str
	if !re


            latitude: None,
            longitude: None,
            vertical_rate_source: None,
            last_seen: time,
            last_cpr_even: None,
            last_cpr_odd: None,
        }
    }

    fn update_position(&mut self, cpr_frame: CPRFrame) {
        let last_parity = cpr_frame.parity.clone();
        match last_parity {
            Parity::Even => {
                self.last_cpr_even = Some(cpr_frame);
            }
            Parity::Odd => {
                self.last_cpr_odd = Some(cpr_frame);
            }
        }
        if let (Some(even), Some(odd)) = (&self.last_cpr_even, &self.last_cpr_odd) {
            let position = match last_parity {
                Parity::Even => cpr::get_position((&odd, &even)),
                Parity::Odd => cpr::get_position((&even, &odd)),
            };
            if let Some(Position {
                latitude,
                longitude,
            }) = position
            {
                self.latitude = Some(latitude);
                self.longitude = Some(longitude);
            }
        }
    }
}

/// Stores the set of currently tracked aircraft
#[derive(Default)]
pub struct Tracker {
    map: HashMap<ICAOAddress, Aircraft>,
    num_messages: u64,
    num_unknown_messages: u64,
    unknown_message_counts: HashMap<u8, u64>,
    known_message_counts: HashMap<u8, u64>,
}

impl Tracker {
    /// Create a new tracker
    pub fn new() -> Self {
        Tracker::default()
    }

    /// Update the tracker with a received ADSB message in AVR format
    pub fn update_with_avr(&mut self, frame: &str, time: chrono::DateTime<Utc>) -> Result<(), adsb::ParserError> {
        let (message, _) = adsb::parse_avr(frame)?;
        self.update_with_message(message, time);
        Ok(())
    }

    /// Update the tracker with a received ADSB message in binary format
    pub fn update_with_binary(&mut self, frame: &[u8], time: chrono::DateTime<Utc>) -> Result<(), adsb::ParserError> {
        let (message, _) = adsb::parse_binary(frame)?;
        self.update_with_message(message, time);
        Ok(())
    }

    fn update_unknown_message_statistics(&mut self, message: Message) {
        let df = message.downlink_format;
        *self.unknown_message_counts.entry(df).or_insert(0) += 1;
        self.num_unknown_messages += 1;
    }

    fn update_with_message(&mut self, message: Message, time: chrono::DateTime<Utc>) {
        use ADSBMessageKind::*;

        self.num_messages += 1;
        let (icao_address, kind) = match message {

            Message {
                kind: ADSBMessage {
                    icao_address, kind, ..
                },
                ..
            } => {
                *self.known_message_counts.entry(message.downlink_format).or_insert(0) += 1;
                (icao_address, kind)
            },
            _ => {
                self.update_unknown_message_statistics(message);
                return
            },
        };

        let aircraft = self
            .map
            .entry(icao_address)
            .or_insert_with(|| Aircraft::new(icao_address, time));

        match kind {
            AircraftIdentification { callsign, .. } => {
                aircraft.callsi


) for p in pass_to_compare}
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:77: for pass_name, count in optimus_dict.items():
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:78: if count != dict(inductor_dict).get(pass_name, 0):
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:87: def normalize_node_kwargs_pass(graph):
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:91: def fuse_parallel_linear_pass(graph):
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:99: def remove_split_ops_pass(graph):
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:103: def fuse_chunk_reshape_unsqueeze_concat_pass(graph):
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:107: def fuse_chunk_reshape_concat_pass(graph):
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:111: def remove_noop_pass(graph):
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:115: def stack_to_unsqueeze_pass(graph):
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:119: def merge_concats_pass(graph):
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:167: def _get_pass_name_func(p):
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:169: pass_name = p.pass_name
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:170: pass_func = p.apply
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:172: pass_name = p.__name__.lstrip("_")
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:173: pass_func = p
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:175: pass_name = None
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:176: pass_func = None
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:178: return pass_name, pass_func
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:181: def _run_pre_dispatch_passes(
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:184: add_passes: Optional[str] = None,
- .venv/lib/python3.12/site-packages/torch/_inductor/fx_passes/pre_grad.py:185: remove_passes: Optional[str] = None,
-


'REV_AT_EPOCH': 2581,
      'BSTAR': 0.00263,
      'MEAN_MOTION_DOT': 0.00038226,
      'MEAN_MOTION_DDOT': 0,
      'SEMIMAJOR_AXIS': 6927.889,
      'PERIOD': 95.644,
      'APOAPSIS': 550.74,
      'PERIAPSIS': 548.767,
      'OBJECT_TYPE': 'PAYLOAD',
      'RCS_SIZE': 'LARGE',
      'COUNTRY_CODE': 'US',
      'LAUNCH_DATE': '2020-01-07',
      'SITE': 'AFETR',
      'DECAY_DATE': null,
      'DECAYED': 0,
      'FILE': 2770046,
      'GP_ID': 156071140,
      'TLE_LINE0': '0 STARLINK-1081',
      'TLE_LINE1':
          '1 44962U 20001BA  20173.33335648  .00038226  00000-0  26291-2 0  9999',
      'TLE_LINE2':
          '2 44962  52.9990 317.1208 0001424 119.0892 254.6827 15.05571337 25811'
    },
    'version': 'v1.0',
    'launch': '5eb87d3cffd86e000604b380',
    'id': '5eed7714096e5900069856af'
  },
  {
    'spaceTrack': {
      'CCSDS_OMM_VERS': '2.0',
      'COMMENT': 'GENERATED VIA SPACE-TRACK.ORG API',
      'CREATION_DATE': '2020-06-21 10:06:09',
      'ORIGINATOR': '18 SPCS',
      'OBJECT_NAME': 'STARLINK-1115',
      'OBJECT_ID': '2020-001BM',
      'CENTER_NAME': 'EARTH',
      'REF_FRAME': 'TEME',
      'TIME_SYSTEM': 'UTC',
      'MEAN_ELEMENT_THEORY': 'SGP4',
      'EPOCH': '2020-06-21 08:00:01.999872',
      'MEAN_MOTION': 15.05572942,
      'ECCENTRICITY': 0.0001499,
      'INCLINATION': 52.996,
      'RA_OF_ASC_NODE': 317.1405,
      'ARG_OF_PERICENTER': 108.6916,
      'MEAN_ANOMALY': 49.1405,
      'EPHEMERIS_TYPE': 0,
      'CLASSIFICATION_TYPE': 'U',
      'NORAD_CAT_ID': 44973,
      'ELEMENT_SET_NO': 999,
      'REV_AT_EPOCH': 2580,
      'BSTAR': 0.00232,
      'MEAN_MOTION_DOT': 0.00033656,
      'MEAN_MOTION_DDOT': 0,
      'SEMIMAJOR_AXIS': 6927.884,
      'PERIOD': 95.644,
      'APOAPSIS': 550.788,
      'PERIAPSIS': 548.711,
      'OBJECT_TYPE': 'PAYLOAD',
      'RCS_SIZE': 'LARGE',
      'COUNTRY_CODE': 'US',
      'LAUNCH_DATE': '2020-01-07',
      'SITE': 'AFETR',
      'DECAY_DATE': null,
      'DECAYED': 0,
      'FILE': 2770047,
      'GP_ID': 156071296,
      'TLE_LINE0': '0 STARLINK-1115',
      'TLE_LINE1':
          '1 44973U 20001BM  20173.33335648  .00033656  00000-0  23185-2 0  9992',
      'TLE_LINE2':
          '2 44973  52.9963 317.1405 0001


to render one frame buffer. This
        /// is the sum of TimeForContraints, TimeForTraverse, and TimeForDispatchTraverseList.
        public long TimeForFrame
        {
            get { return m_timeForConstraints + m_timeForTraverse + m_timeForDispatchTraverseList; }
        }

        ///
        /// Gets or sets the number of TraverseNode objects that came out of RenderAction.BuildTraverseList
        /// and that took TimeForTraverse miliseconds to prepare
        public int TraverseNodeCount
        {
            get { return m_traverseNodeCount; }
            set { m_traverseNodeCount = value; }
        }

        ///
        /// Gets or sets the number of OpenGL render state changes for rendering one frame
        public int RenderStateChanges
        {
            get { return m_renderStateChanges; }
            set { m_renderStateChanges = value; }
        }

        ///
        /// Gets the number of times a frame has been rendered. Is the number of times that ResetFrame
        /// has been called.
        public int FrameCount
        {
            get { return m_frameCount; }
        }

        ///
        /// Gets the average number of frames drawn per second over the last 5 seconds (or whatever
        /// is specified by AverageFrameRateTime)
        public float AverageFrameRate
        {
            get { return (float)m_updateTimes.Count / (float)AverageFrameRateTime; }
        }

        ///
        /// Number of seconds used to calculate the running average frame rate. Must be > 0.
        public int AverageFrameRateTime = 5;

        ///
        /// Gets or sets custom text to add to the display string, which is useful for temporary
        /// measurements without having to modify this RenderStats class
        public string CustomText
        {
            get { return m_customText; }
            set { m_customText = value; }
        }

        ///
        /// Prepares a string containing the results to be displayed
        /// <returns>Results string</returns>
        public virtual string GetDisplayString()
        {
            return string.Format("{0} {1}; {2}ms {3:F2}fps {4}",
                "polys".Localize("abbreviation of 'polygons'"), m_nPrimitives,
                //"frame", m_frameCount % 1000,
                //"nodes", m_traverseNodeCount,
                //Localization.StateChanges, m_renderStateChanges,
                //"states", m_renderStateChanges,
                TimeForFrame,
                AverageFrameRate,
                m_customText);
        }

        private bool m_enabled = true;
        private int m_nPrimitives;
        private int m_nVertices;
        private int m_traverseNodeCount;
        private int m_renderStateChanges;
        private int m_frameCount;
        private long m_timeForConstraints, m_timeForTraverse, m_timeForDispatchTraverseList;
        private string m_customText = string.Empty;
        private readonly Queue<DateTime> m_updateTimes = new Queue<DateTime>();
    }
}


616d0000b2735076e4160d018e378f488c33',
    'isAlbum': true,
    'list': [],
  },
  {
    'ytid': 'OLAK5uy_lVxq_QCXDlleCnpsszQyiFextilkX12_w',
    'title': "WE DON'T TRUST YOU - Future, Metro Boomin",
    'image': 'https://i.scdn.co/image/ab67616d00001e02a46b07c291e6dfdee13b3ee8',
    'isAlbum': true,
    'list': [],
  },
  {
    'ytid': 'OLAK5uy_kZqVnh5DXwZ95R5yuAnWUX20OjrNJh09U',
    'title': 'Fireworks & Rollerblades - Benson Boone',
    'image': 'https://i.scdn.co/image/ab67616d0000b273cc04ff3e70e146ba9abacf40',
    'isAlbum': true,
    'list': [],
  },
  {
    'ytid': 'OLAK5uy_mbcpEgHbfi3deQRnyGfQWnlzgQd86_tMI',
    'title': 'Wasteland, Baby! - Hozier',
    'image': 'https://i.scdn.co/image/ab67616d00001e025795e01c151ba5a8ce4bd295',
    'isAlbum': true,
    'list': [],
  },
  {
    'ytid': 'OLAK5uy_mG42_gxfZ-Cq6Y921XWm43Z75YAiaSIWI',
    'title': 'eternal sunshine (slightly deluxe) - Ariana Grande',
    'image': 'https://i.scdn.co/image/ab67616d0000b273bd3de668e4784d791c4ab695',
    'isAlbum': true,
    'list': [],
  },
  {
    'ytid': 'OLAK5uy_kmtA2RV4sA_baCJwuaazeDtKmBM85j-yo',
    'title': 'UTOPIA - Travis Scott',
    'image': 'https://i.scdn.co/image/ab67616d00001e02881d8d8378cd01099babcd44',
    'isAlbum': true,
    'list': [],
  },
  {
    'ytid': 'OLAK5uy_kDuqdPyyBdToRV-mvWklRE_ysv7-LqveI',
    'title': 'One Thing At A Time - Morgan Wallen',
    'image': 'https://i.scdn.co/image/ab67616d0000b273705079df9a25a28b452c1fc9',
    'isAlbum': true,
    'list': [],
  },
  {
    'ytid': 'OLAK5uy_kFa9tOyLsP4JH1EqSD3hIudVdkmQWfKT0',
    'title': 'DECIDE - Djo',
    'image': 'https://i.scdn.co/image/ab67616d0000b273fddfffec51b4580acae727c1',
    'isAlbum': true,
    'list': [],
  },
  {
    'ytid': 'OLAK5uy_ngyCd9rAr-KZ5eI5juhaOe-LgrjlteONU',
    'title':
        'Hard To Imagine The Neighbourhood Ever Changing - The Neighbourhood',
    'image': 'https://i.scdn.co/image/ab67616d0000b2739b6ac98a52f62d5cb473da40',
    'isAlbum': true,
    'list': [],
  },
  {
    'ytid': 'OLAK5uy_m2MkFaiKAqsvU


ximumSurfaces = int.fromEnvironment(
    'FLUTTER_WEB_MAXIMUM_SURFACES',
    defaultValue: 8,
  );

  /// Set this flag to `true` to cause the engine to visualize the semantics tree
  /// on the screen for debugging.
  ///
  /// This only works in profile and release modes. Debug mode does not support
  /// passing compile-time constants.
  ///
  /// Example:
  ///
  /// ```
  /// flutter run -d chrome --profile --dart-define=FLUTTER_WEB_DEBUG_SHOW_SEMANTICS=true
  /// ```
  bool get debugShowSemanticsNodes => _configuration?.debugShowSemanticsNodes ?? _defaultDebugShowSemanticsNodes;
  static const bool _defaultDebugShowSemanticsNodes = bool.fromEnvironment(
    'FLUTTER_WEB_DEBUG_SHOW_SEMANTICS',
  );

  /// Returns the [hostElement] in which the Flutter Application is supposed
  /// to render, or `null` if the user hasn't specified anything.
  DomElement? get hostElement => _configuration?.hostElement;

  /// Returns the [requestedRendererType] to be used with the current Flutter
  /// application, normally 'canvaskit' or 'auto'.
  ///
  /// This value may come from the JS configuration, but also a specific JS value:
  /// `window.flutterWebRenderer`.
  ///
  /// This is used by the Renderer class to decide how to initialize the engine.
  String? get requestedRendererType => _configuration?.renderer ?? _requestedRendererType;

  /// Whether to use color emojis or not.
  ///
  /// The font used to render color emojis is large (~24MB). This configuration
  /// gives developers the ability to decide for their app.
  bool get useColorEmoji => _configuration?.useColorEmoji ?? false;
}

@JS('window.flutterConfiguration')
external JsFlutterConfiguration? get _jsConfiguration;

/// The JS bindings for the object that's set as `window.flutterConfiguration`.
@JS()
@staticInterop
class JsFlutterConfiguration {}

extension JsFlutterConfigurationExtension on JsFlutterConfiguration {
  @JS('assetBase')
  external JSString? get _assetBase;
  String? get assetBase => _assetBase?.toDart;

  @JS('canvasKitBaseUrl')
  external JSString? get _canvasKitBaseUrl;
  String? get canvasKitBaseUrl => _canvasKitBaseUrl?.toDart;

  @JS('canvasKitVariant')
  external JSString? get _canvasKitVariant;
  String? get canvasKitVariant => _canvasKitVariant?.toDart;

  @JS('canvasKitForceCpuOnly')
  external JSBoolean? get _canvasKitForceCpuOnly;
  bool? get canvasKitForceCpuOnly => _canvasKitForceCpuOnly?.toDart;

  @JS('canvasKitMaximumSurfaces')
  external JSNumber? get _canvasKitMaximumSurfaces;
  double? get canvasKitMaximumSurfaces => _canvasKitMaximumSurfaces?.toDart;

  @JS('debugShowSemanticsNodes')
  external JSBoolean? get _debugShowSemanticsNodes;
  bool? get debugShowSemanticsNodes => _debugShowSemanticsNodes?.toDart;

  external DomElement? get hostElement;

  @JS('renderer')
  external JSString? get _renderer;
  String? get renderer => _renderer?.toDart;

  @JS('useColorEmoji')
  external JSBoolean? get _useColorEmoji;
  bool? get useColorEmoji => _useColorEmoji?.toDart;
}

/// A JavaScript entrypoint that allows developer to set rendering backend
/// at runtime before launching the application.
@JS('window.flutterWebRenderer')
external JSString? get __requestedRendererType;
String? get _requestedRendererType => __requestedRendererType?.toDart;
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'd


lies this filter to estimate inline vectors (3rd eigenvectors).
   * @param x input array for 3-D image.
   * @param w1 1st component of inline vector.
   * @param w2 2nd component of inline vector.
   * @param w3 3rd component of inline vector.
   */
  public void applyForInline(float[][][] x,
    float[][][] w1, float[][][] w2, float[][][] w3)
  {
    apply(x,
      null,null,
      null,null,null,
      null,null,null,
      w1,w2,w3,
      null,null,null,
      null,null);
  }

  /**
   * Applies this filter to estimate inline vectors and linearities.
   * Inline vectors are 3rd eigenvectors corresponding to smallest eigenvalues.
   * @param x input array for 3-D image.
   * @param w1 1st component of inline vector.
   * @param w2 2nd component of inline vector.
   * @param w3 3rd component of inline vector.
   * @param el linearity in range [0,1].
   */
  public void applyForInlineLinear(float[][][] x,
    float[][][] w1, float[][][] w2, float[][][] w3,
    float[][][] el)
  {
    apply(x,
      null,null,
      null,null,null,
      null,null,null,
      w1,w2,w3,
      null,null,null,
      null,el);
  }

  /**
   * Applies this filter to estimate compressed 3-D structure tensors.
   * @param x input array for 3-D image.
   * @return structure tensors.
   */
  public EigenTensors3 applyForTensors(float[][][] x) {
    return applyForTensors(x,true);
  }

  /**
   * Applies this filter to estimate 3-D structure tensors.
   * @param x input array for 3-D image.
   * @param compressed true, for compressed tensors; false, otherwise.
   * @return structure tensors.
   */
  public EigenTensors3 applyForTensors(float[][][] x, boolean compressed) {
    int n1 = x[0][0].length;
    int n2 = x[0].length;
    int n3 = x.length;
    float[][][] u2 = new float[n3][n2][n1];
    float[][][] u3 = new float[n3][n2][n1];
    float[][][] w1 = new float[n3][n2][n1];
    float[][][] w2 = new float[n3][n2][n1];
    float[][][] eu = new float[n3][n2][n1];
    float[][][] ev = new float[n3][n2][n1];
    float[][][] ew = new float[n3][n2][n1];
    apply(x,
      null,null,
      null,u2,u3,
      null,null,null,
      w1,w2,null,
      eu,ev,ew,
      null,null);

    // Compute u1 such that u3 > 0.
    float[][][] u1 = u3;
    for (int i3=0; i3<n3; ++i3) {
      for (int i2=0; i2<n2; ++i2) {
        for (int i1=0; i1<n1; ++i1) {
          float u2i = u2[i3][i2][i1];
          float u3i = u3[i3][i2][i1];
          float u1s = 1.0f-u2i*u2i-u3i*u3i;
          float u1i = (u1s>0.0f)?sqrt(u1s):0.0f;
          if (u3i<0.0f) {
            u1i = -u


e given slot and advances the cursor by 2.
	ReadU16(u8),
	/// Reads the dword under the cursor, writes to the given slot and advances the cursor by 4.
	ReadI32(u8),
	/// Reads the dword under the cursor, writes to the given slot and advances the cursor by 4.
	ReadU32(u8),
	/// Writes zero to the given save slot.
	Zero(u8),
	/// Sets a retry point when matching fails.
	///
	/// When matching fails the cursor is restored and matching begins again skipping _N_ atoms.
	Case(u8),
	/// Continues matching after a case atom, skipping the next _N_ atoms.
	Break(u8),
	/// Null instruction, used to make the parser easier to write.
	Nop,
}

/// Patterns are a vector of [`Atom`](enum.Atom.html)s.
pub type Pattern = Vec<Atom>;

/// Returns the length of the save array needed for this signature.
pub fn save_len(pat: &[Atom]) -> usize {
	pat.iter().filter_map(|&atom| {
		match atom {
			Atom::Save(slot) | Atom::Pir(slot) | Atom::Check(slot) | Atom::Zero(slot) |
			Atom::ReadI8(slot) | Atom::ReadI16(slot) | Atom::ReadI32(slot) |
			Atom::ReadU8(slot) | Atom::ReadU16(slot)| Atom::ReadU32(slot) => Some(slot as usize + 1),
			_ => None,
		}
	}).max().unwrap_or(0)
}

/// Pattern parser.
///
/// # Remarks
///
/// Following are examples of the pattern syntax.
/// The syntax takes inspiration from [YARA hexadecimal strings](https://yara.readthedocs.io/en/v3.7.0/writingrules.html#hexadecimal-strings).
///
/// ```text
/// 55 89 e5 83 ? ec
/// ```
///
/// Case insensitive hexadecimal characters match the exact byte pattern and question marks serve as placeholders for unknown bytes.
///
/// Note that a single question mark matches a whole byte. The syntax to mask part of a byte is not yet available.
///
/// Spaces (code point 32) are completely optional and carry no semantic meaning, their purpose is to visually group things together.
///
/// ```text
/// b9 ' 37 13 00 00
/// ```
///
/// Single quotes are used as a bookmarks, to save the current cursor rva in the save array passed to the scanner.
///
/// It is no longer necessary to do tedious address calculations to read information out of the byte stream after a match was found.
/// This power really comes to life with the capability to follow relative and absolute references.
///
/// The first entry in the save array is reserved for the rva where the pattern was matched.
/// The rest of the save array is filled in order of appearance of the quotes. Here the rva of the quote can be found in `save[1]`.
///
/// ```text
/// b8 [16] 50 [13-42] ff
/// ```
///
/// Pairs of decimal numbers separated by a hypen in square brackets indicate the lower and upper bound of number of bytes to skip.
/// The scanner is non greedy and considers the first match while skipping as little as possible.
///
/// A single decimal number in square brackets without hypens is a fixed size jump, equivalent to writing that number of consecutive question marks.
///
/// ```text
/// 31 c0 74 % ' c3
/// e8 $ ' 31 c0 c3
/// 68 * ' 31 c0 c3
/// ```
///
/// These symbols are used to follow; a signed 1 byte relative jump: `%`, a signed 4 byte relative jump: `$` and an absolute pointer: `*`.
///
/// They are designed to be able to have the scanner follow short jumps, calls and longer jumps, and absolute pointers.
///
/// Composes really well with bookmarks to find the addresses of referenced functions and other data without tedious address calculations.


TYPES(4, test_eval_tensor_generator);
  CALL_SUBTESTS_DIMS_LAYOUTS_TYPES(4, test_eval_tensor_reverse);
  CALL_SUBTESTS_DIMS_LAYOUTS_TYPES(5, test_eval_tensor_slice);
  CALL_SUBTESTS_DIMS_LAYOUTS_TYPES(5, test_eval_tensor_shuffle);

  CALL_SUBTESTS_LAYOUTS_TYPES(6, test_eval_tensor_reshape_with_bcast);
  CALL_SUBTESTS_LAYOUTS_TYPES(6, test_eval_tensor_forced_eval);
  CALL_SUBTESTS_LAYOUTS_TYPES(6, test_eval_tensor_chipping_of_bcast);

  CALL_SUBTESTS_DIMS_LAYOUTS_TYPES(7, test_assign_to_tensor);
  CALL_SUBTESTS_DIMS_LAYOUTS_TYPES(7, test_assign_to_tensor_reshape);
  CALL_SUBTESTS_DIMS_LAYOUTS_TYPES(7, test_assign_to_tensor_chipping);
  CALL_SUBTESTS_DIMS_LAYOUTS_TYPES(8, test_assign_to_tensor_slice);
  CALL_SUBTESTS_DIMS_LAYOUTS_TYPES(8, test_assign_to_tensor_shuffle);

  // Force CMake to split this test.
  // EIGEN_SUFFIXES;1;2;3;4;5;6;7;8

  // clang-format on
}
// This file is part of Eigen, a lightweight C++ template library
// for linear algebra.
//
// Copyright (C) 2017 Viktor Csomor <viktor.csomor@gmail.com>
//
// This Source Code Form is subject to the terms of the Mozilla
// Public License v. 2.0. If a copy of the MPL was not distributed
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.

#include "main.h"

#include <Eigen/CXX11/Tensor>
#include <utility>

using Eigen::Tensor;
using Eigen::RowMajor;

static void calc_indices(int i, int& x, int& y, int& z)
{
  x = i / 4;
  y = (i % 4) / 2;
  z = i % 2;
}

static void test_move()
{
  int x;
  int y;
  int z;

  Tensor<int,3> tensor1(2, 2, 2);
  Tensor<int,3,RowMajor> tensor2(2, 2, 2);

  for (int i = 0; i < 8; i++)
  {
    calc_indices(i, x, y, z);
    tensor1(x,y,z) = i;
    tensor2(x,y,z) = 2 * i;
  }

  // Invokes the move constructor.
  Tensor<int,3> moved_tensor1 = std::move(tensor1);
  Tensor<int,3,RowMajor> moved_tensor2 = std::move(tensor2);

  VERIFY_IS_EQUAL(tensor1.size(), 0);
  VERIFY_IS_EQUAL(tensor2.size(), 0);

  for (int i = 0; i < 8; i++)
  {
    calc_indices(i, x, y, z);
    VERIFY_IS_EQUAL(moved_tensor1(x,y,z), i);
    VERIFY_IS_EQUAL(moved_tensor2(x,y,z), 2 * i);
  }

  Tensor<int,3> moved_tensor3(2,2,2);
  Tensor<int,3,RowMajor> moved_tensor4(2,2,2);

  moved_tensor3.setZero();
  moved_tensor4.setZero();

  // Invokes the move assignment operator.
  moved_tensor3 = std::move(moved_tensor1);
  moved_tensor4 = std::move(moved_tensor2);

  for (int i = 0; i < 8; i++)
  {
    calc_indices(i, x, y, z);
    VERIFY_IS_EQUAL(moved_tensor3(x,y,z), i);
    VERIFY_IS_EQUAL(moved_tensor4(x,y,z), 2 * i);
  }
}

EIGEN_DECLARE


ine HVrhek_undef	0x00 /* Value is undef. */
#define HVrhek_delete	0x10 /* Value is placeholder - signifies delete. */
#define HVrhek_IV	0x20 /* Value is IV. */
#define HVrhek_UV	0x30 /* Value is UV. */
#define HVrhek_PV	0x40 /* Value is a (byte) string. */
#define HVrhek_PV_UTF8	0x50 /* Value is a (utf8) string. */
/* Two spare. As these have to live in the optree, you can't store anything
   interpreter specific, such as SVs. :-( */
#define HVrhek_typemask 0x70

#ifdef USE_ITHREADS
/* A big expression to find the key offset */
#define REF_HE_KEY(chain)						\
	((((chain->refcounted_he_data[0] & 0x60) == 0x40)		\
	    ? chain->refcounted_he_val.refcounted_he_u_len + 1 : 0)	\
	 + 1 + chain->refcounted_he_data)
#endif

#  ifdef USE_ITHREADS
#    define HINTS_REFCNT_LOCK		MUTEX_LOCK(&PL_hints_mutex)
#    define HINTS_REFCNT_UNLOCK		MUTEX_UNLOCK(&PL_hints_mutex)
#  else
#    define HINTS_REFCNT_LOCK		NOOP
#    define HINTS_REFCNT_UNLOCK		NOOP
#  endif
#endif

#ifdef USE_ITHREADS
#  define HINTS_REFCNT_INIT		MUTEX_INIT(&PL_hints_mutex)
#  define HINTS_REFCNT_TERM		MUTEX_DESTROY(&PL_hints_mutex)
#else
#  define HINTS_REFCNT_INIT		NOOP
#  define HINTS_REFCNT_TERM		NOOP
#endif

/* Hash actions
 * Passed in PERL_MAGIC_uvar calls
 */
#define HV_DISABLE_UVAR_XKEY	0x01
/* We need to ensure that these don't clash with G_DISCARD, which is 2, as it
   is documented as being passed to hv_delete().  */
#define HV_FETCH_ISSTORE	0x04
#define HV_FETCH_ISEXISTS	0x08
#define HV_FETCH_LVALUE		0x10
#define HV_FETCH_JUST_SV	0x20
#define HV_DELETE		0x40
#define HV_FETCH_EMPTY_HE	0x80 /* Leave HeVAL null. */

/* Must not conflict with HVhek_UTF8 */
#define HV_NAME_SETALL		0x02

/*
=for apidoc newHV

Creates a new HV.  The reference count is set to 1.

=cut
*/

#define newHV()	MUTABLE_HV(newSV_type(SVt_PVHV))

#include "hv_func.h"

/*
 * ex: set ts=8 sts=4 sw=4 et:
 */


nBestCastPoint = getBestCastPoint(currentPositionCastArr);
        // 如果可以移动的话预先计算移动后的最优解
        if (!skillFirstGrid && GameBattleHelper.canMove(this.currentBattler)) {
            var moveMapGrids = GameBattleHelper.getEffectRange(this.currentBattler.posGrid, this.currentBattler.battlerSetting.battleActor.MoveGrid);
            var preResArr: { castPoint: Point, targets: ProjectSceneObject_1[], moveMapGrid: Point }[] = [];
            for (var s = 0; s < moveMapGrids.length; s++) {
                var moveMapGrid = moveMapGrids[s];
                var preRes: any = this.getSkillCastPlace(skill, target, moveMapGrid);
                if (preRes) {
                    preRes.moveMapGrid = moveMapGrid;
                    preResArr.push(preRes);
                }
            }
            if (preResArr.length > 0) {
                var needMoveBestCastPoint = getBestCastPoint(preResArr);
                this.referenceMoveGrids.push(needMoveBestCastPoint.moveMapGrid);
                // 如果目标是敌对关系则锁定一次该敌对目标，移动后不需要重新获取目标了
                if (GameBattleHelper.isHostileRelationship(this.currentBattler, target)) {
                    this.lockOnceEnemy = target;
                }
                // 如果该方案比当前位置上的最优解更好的话则放弃此次结算，让角色以参考点进行移动
                if (currentPositionBestCastPoint && currentPositionBestCastPoint.targets.length < needMoveBestCastPoint.targets.length) {
                    currentPositionBestCastPoint = null;
                }
            }
        }
        // 内部方法：获取最大性价比的施放地点
        function getBestCastPoint(castPointArr: { castPoint: Point, targets: ProjectSceneObject_1[] }[]) {
            var len = castPointArr.length;
            var maxTargetLength = 0;
            var castPointInfo: any = null;
            for (var i = 0; i < len; i++) {
                var targetLength = castPointArr[i].targets.length;
                if (maxTargetLength < targetLength) {
                    maxTargetLength = targetLength;
                    castPointInfo = castPointArr[i];
                }
            }
            return castPointInfo;
        }
        return currentPositionBestCastPoint;
    }
    /**
     * 获取技能的最大作用距离范围
     */
    static getSkillMaxEffectDistance(skill: Module_技能): number {
        if (skill.targetType == 0) return 0;
        if (skill.targetType == 3 || skill.targetType == 4) return 5;
        if (skill.effectRangeType == 0) return skill.effectRange1;
        if (skill.effectRangeType == 1) return skill.effectRange2B;
        return 0;
    }

}import React from 'react'
import { AlertMessage, AlertOptions } from '../types'
import { Alert, createAlert, hideAlert, showAlert } from './alert'

type Timeout = ReturnType<typeof setTimeout>

type AlertMessageData = {
  alert: Alert
  openingTimeout: Timeout
  messageTimeout: Timeout
  closingTimeout?: Timeout
}

type UseAlertStateResult = {
  alerts: Alert[]
  alert: (message: AlertMessage, options?: AlertOptions) => void
  dismissAlert: (id: string) => void
}

export default function useAlertState(): UseAlertStateResult {
  const [alertsData, setAlerts] = React.useState<AlertMessageData[]>([])
  const alerts = React.useMemo(() => alertsData.map((data) => data.alert), [alert


ax-width: 646px) 100vw, 646px" />

上传Macron团队泄露文件到archive.org上的源文件包含了一个操作人的E-mail地址：frankmacher1@gmx.de

frankmacher1@gmx.de 这个邮箱地址注册于一家德国的免费邮件服务提供商，其操作历史与APT28组织的活动紧密相连，可以找到的记录包括针对美国 DNS和德国总理Angela Merkel政党的一系列网络钓鱼攻击。

专家认为，APT28组织编辑并通过社交媒体传播这些文件，是心理战的一部分，就像2016年针对美国总统大选的套路一样。

意大利安全公司TS-WAY雇员 Pierluigi Paganini 从同事兼网络情报主任Emanuele Gentili那里获取到一些有趣的文件：

<img class="aligncenter size-full wp-image-102246 j-lazy" src="http://www.mottoin.com/wp-content/themes/JustNews/themer/assets/images/lazy.png" data-original="http://www.mottoin.com/wp-content/uploads/2017/06/14965003321.png" alt="" width="646" height="365" data-srcset="http://www.mottoin.com/wp-content/uploads/2017/06/14965003321.png 646w, http://www.mottoin.com/wp-content/uploads/2017/06/14965003321-300x170.png 300w" sizes="(max-width: 646px) 100


='none' d='M0 0h24v24H0z' fill='none'%3E%3C/path%3E%3Cpath d='M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z'%3E%3C/path%3E%3Cpath d='M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2'%3E%3C/path%3E%3C/svg%3E") no-repeat 50% 50%;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='icon icon-tabler icon-tabler-copy' width='22' height='22' viewBox='0 0 24 24' stroke-width='1' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'%3E%3C/path%3E%3Cpath d='M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z'%3E%3C/path%3E%3Cpath d='M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2'%3E%3C/path%3E%3C/svg%3E") no-repeat 50% 50%;-webkit-mask-size:cover;mask-size:cover;background-color:#495057}.btn-clipboard:hover{border-color:transparent}.btn-clipboard:hover::after{width:22px;height:22px;display:inline-block;content:'';-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='icon icon-tabler icon-tabler-copy' width='22' height='22' viewBox='0 0 24 24' stroke-width='1' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'%3E%3C/path%3E%3Cpath d='M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z'%3E%3C/path%3E%3Cpath d='M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2'%3E%3C/path%3E%3C/svg%3E") no-repeat 50% 50%;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='icon icon-tabler icon-tabler-copy' width='22' height='22' viewBox='0 0 24 24' stroke-width='1' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'%3E%3C/path%3E%3Cpath d='M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z'%3E%3C/path%3E%3Cpath d='M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2'%3E%3C/path%3E%3C/svg%3E") no-repeat 50% 50%;-webkit-mask-size:cover;mask-size:cover;background-color:#212529}.btn-clipboard:focus,.btn-clipboard:active{border-color:transparent !important}.btn-clipboard:focus::


  */
    const String& GetDescription() const;

    /**
     * Gets copyright information of the dataset
     * @return copyright information of the dataset
     */
    const String& GetCopyright() const;

  private:
    // restrict the following functions
    DatasetInfo(const DatasetInfo&);
    const DatasetInfo& operator=(const DatasetInfo&);

  private:
    Parameter<String>* m_pTitle;
    Parameter<String>* m_pAuthor;
    Parameter<String>* m_pDescription;
    Parameter<String>* m_pCopyright;
  }; // class DatasetInfo

  /**
   * Register DatasetInfo with MetaClassManager
   */
  KARTO_TYPE(DatasetInfo);

  /**
   * Type declaration of DatasetInfo managed by SmartPointer
   */
  typedef SmartPointer<DatasetInfo> DatasetInfoPtr;

  //@}

}

#endif // __OpenKarto_Object_h__


�지만 바로 검은쐐기 때문에 그들이 떠난 겁니다.$B$B그 원정대가 야생늪 마을 바로 북쪽, 이곳의 서쪽에 있는 백열의 드레나이 경비탑의 남쪽에 야영지를 차렸었는데 갑자기 거대한 말벌이 나타나 공격했지 뭡니까! 으흐흐, 그 말벌의 독침을 가지고 아이언포지로 돌아가면 원정대원들에게 보여주면 어떨까요? 하하, 그들이 놀라 자빠질 표정을 생각하니 흥분돼서 참을 수가 없군요!",
    ["O"] = "텔레도르에 있는 발굴조사단장 코날에게 검은쐐기의 독침을 가져가야 합니다.",
    ["T"] = "검은쐐기의 맹독",
  },
  [9897] = {
    ["D"] = "제가 가진 걸 나눠 가져도 괜찮아요. 저 끔찍한 갱클리의 끝없는 도적질에서 벗어났다 게 너무나 기쁠 뿐이랍니다, 흑흑! 그리고 저는 장가르 습지대에서 수없이 많은 가죽을 모아 놨기 때문에 당신이 좀 가져가도 전혀 문제 될 게 없답니다!",
    ["O"] = "나그란드의 네싱워리 탐험대에 있는 해럴드 레인에게 가죽 꾸러미를 줘야 합니다.",
    ["T"] = "살았다!",
  },
  [9898] = {
    ["D"] = "그녀는 내 거요. 그렇소. 바로 이 몸이 차지할 거요.$B$B마가샤보다 아름다운 트롤을 본 적 있소? 그녀의 마음을 얻을 방법을 찾아야 하오. 그녀는 주라이를 마음에 두고 있지만 금방 마음이 바뀔 거요. 아주 확실한 계획이 하나 있소.$B$B먼저 내 뛰어난 사냥 솜씨를 보여줄 방법을 찾아야 하오. 당신과 내가 상부상조할 기회이기도 하지


* @param tagId
	 *            标签ID
	 * @see com.foxinmy.weixin4j.qy.model.User
	 * @see  获取标签成员说明
	 * @see com.foxinmy.weixin4j.qy.api.TagApi
	 * @return 成员列表Contacts#getUsers和部门列表 Contacts#getPartyIds
	 * @throws WeixinException
	 */
	public Contacts getTagUsers(int tagId) throws WeixinException {
		return tagApi.getTagUsers(tagId);
	}

	/**
	 * 新增标签成员(标签对管理组可见且未加锁，成员属于管理组管辖范围)
	 *
	 * @param tagId
	 *            标签ID
	 * @param userIds
	 *            企业成员ID列表，注意：userlist、partylist不能同时为空
	 * @param partyIds
	 *            企业部门ID列表，注意：userlist、partylist不能同时为空
	 * @see  新增标签成员说明
	 * @see com.foxinmy.weixin4j.qy.api.TagApi
	 * @see com.foxinmy.weixin4j.qy.model.IdParameter
	 * @return 非法的userIds和partyIds
	 * @throws WeixinException
	 */
	public IdParameter addTagUsers(int tagId, List<String> userIds,
			List<Integer> partyIds) throws WeixinException {
		return tagApi.addTagUsers(tagId, userIds, partyIds);
	}

	/**
	 * 删除标签成员(标签对管理组可见且未加锁，成员属于管理组管辖范围)
	 *
	 * @param tagId
	 *            标签ID
	 * @param userIds
	 *            企业成员ID列表，注意：userlist、partylist不能同时为空
	 * @param partyIds
	 *            企业部门ID列表，注意：userlist、partylist不能同时为空
	 * @see  删除标签成员说明
	 * @see com.foxinmy.weixin4j.qy.api.TagApi
	 * @see com.foxinmy.weixin4j.qy.model.IdParameter
	 * @return 非法的userIds和partyIds
	 * @throws WeixinException
	 */
	public IdParameter deleteTagUsers(int tagId, List<String> userIds,
			List<Integer> partyIds) throws WeixinException {
		return tagApi.deleteTagUsers(tagId, userIds, partyIds);
	}

	/**
	 * 获取微信服务器IP地址
	 *
	 * @return IP地址
	 * @see com.foxinmy.weixin4j.qy.api.HelperApi
	 * @see <a href=
	 *      "http://qydev.weixin.qq.com/wiki/index.php?title=%E5%9B%9E%E8%B0%83%E6%A8%A1%E5%BC%8F#.E8.8E.B7.E5.8F.96.E5.BE.AE.E4.BF.A1.E


}

.j-installation-error {
  background-color: #1c3d5c;
  background-image: linear-gradient(90deg, #1c3d5c 0%, #2a5c8b 100%);
}
.closebutton {
    /* NOTE! This URL is relative to the HTML page, not the CSS */
	filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(
		src='../highslide/graphics/close.png', sizingMethod='scale');

	background: none;
	cursor: hand;
}

/* Viewport fixed hack */
.highslide-viewport {
	position: absolute;
    left: expression( ( ( ignoreMe1 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
	top: expression( ( ignoreMe2 = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) + 'px' );
	width: expression( ( ( ignoreMe3 = document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) ) + 'px' );
	height: expression( ( ( ignoreMe4 = document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) ) + 'px' );
}

/* Thumbstrip PNG fix */
.highslide-scroll-down, .highslide-scroll-up {
	position: relative;
	overflow: hidden;
}
.highslide-scroll-down div, .highslide-scroll-up div {
	/* NOTE! This URL is relative to the HTML page, not the CSS */
	filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(
		src='../highslide/graphics/scrollarrows.png', sizingMethod='scale');
	background: none !important;
	position: absolute;
	cursor: hand;
	width: 75px;
	height: 75px !important;
}
.highslide-thumbstrip-horizontal .highslide-scroll-down div {
	left: -50px;
	top: -15px;
}
.highslide-thumbstrip-horizontal .highslide-scroll-up div {
	top: -15px;
}
.highslide-thumbstrip-vertical .highslide-scroll-down div {
	top: -50px;
}

/* Thumbstrip marker arrow trasparent background fix */
.highslide-thumbstrip .highslide-marker {
	border-color: white; /* match the background */
}
.dark .highslide-thumbstrip-horizontal .highslide-marker {
	border-color: #111;
}
.highslide-viewport .highslide-marker {
	border-color: #333;
}
.highslide-thumbstrip {
	float: left;
}

/* Positioning fixes for the control bar */
.text-controls .highslide-controls {
	width: 480px;
}
.text-controls a span {
	width: 4em;
}
.text-controls .highslide-full-expand a span {
	width: 0;
}
.text-controls .highslide-close a span {
	width: 0;
}

/* Special */
.in-page .highslide-thumbstrip-horizontal .highslide-marker {
    border-bottom: gray;
}
.highslide-wrapper div {
	font-family: Verdana, Helvetica;
	font-size: 10pt;
}
.highslide {
	cursor: url(graphics/zoomin.cur), pointer;
	outline: none;
	text-decoration: none;
}
/*
.highslide img {
	border: 2px solid silver;
}
.highslide:hover img {
	border-color: gray;
}
*/
.highslide-active-anchor img, .highslide-active-anchor:hover img {
	border-color: black;
}
.highslide-image {
	border-wid


#       Licensed to the Apache Software Foundation (ASF) under one
#       or more contributor license agreements.  See the NOTICE file
#       distributed with this work for additional information
#       regarding copyright ownership.  The ASF licenses this file
#       to you under the Apache License, Version 2.0 (the
#       "License"); you may not use this file except in compliance
#       with the License.  You may obtain a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#       Unless required by applicable law or agreed to in writing,
#       software distributed under the License is distributed on an
#       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#       KIND, either express or implied.  See the License for the
#       specific language governing permissions and limitations
#       under the License.

from allura.lib.widgets import form_fields as ffw

class ShortUrlFormWidget(ffw.Lightbox):
    defaults = dict(
        ffw.Lightbox.defaults,
        name='short-url-modal',
        trigger='a.add-short-url, a.update-short-url',
        content_template='forgeshorturl:templates/form.html')


:0px 2px 4px rgba(0, 0, 0, 0.5),inset 0 1px 0px #727272;-webkit-box-shadow:0px 2px 4px rgba(0, 0, 0, 0.5),inset 0 1px 0px #727272;box-shadow:0px 2px 4px rgba(0, 0, 0, 0.5),inset 0 1px 0px #727272;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;z-index:320;position:relative;width:300px;font-size:11px;line-height:1.2;}#user-menu .um-gravatar{float:left;margin-right:8px;}#user-menu .um-header-info .um-user-link,#user-menu .um-header-info .mod-flair{font-size:18px;color:#e2e2e2!important;}#user-menu .um-header-info .um-flair .badgecount,#user-menu .um-header-info .um-flair .reputation-score{color:#e2e2e2;}#user-menu .um-about-me{clear:both;font-size:11px;margin:5px 0;overflow:hidden;}#user-menu .um-links a{margin-right:8px;font-size:11px;}#user-menu a,#user-menu a:visited{color:#b4d4ec;text-decoration:none;}#user-menu a:hover{color:#dcecf7;}#portalLink{margin-left:-6px;float:left;margin-top:6px;}.mainbar-captcha{width:610px !important;}.sidebar-captcha{width:350px !important;}.content-tag{margin-top:15px!important;}#adzerk1{height:90px;}a.genu{background:url('img/sprites.png?v=5') no-repeat -55px -66px;display:block;width:120px;height:18px;text-indent:-999em;outline:none;font-size:1px;float:left;}div#seWrapper{width:460px;background-color:#fefefe;border:1px solid #aaa;border-top:none;padding:0;font-family:Arial,Helvetica,sans-serif;-moz-box-shadow:4px 4px 7px #ababab;-webkit-box-shadow:4px 4px 7px #ababab;box-shadow:4px 4px 7px #ababab;z-index:999;top:31px!important;}#seWrapper .seIntro{font-size:11px;line-height:12px;padding:5px;color:#fff;background:#aaa;}#seWrapper .seIntro a,#seWrapper .seIntro a:visited{color:#fff!important;text-decoration:underline;}#seWrapper .seNav,#seWrapper .seFooter{padding:5px;}#seWrapper .seNav{background-color:#f2f2f2;font-size:12px;}#seWrapper .seNavLinks{list-style:none;margin:0;padding:0;overflow:hidden;}#seWrapper .seNavLinks li{float:left;font-size:11px;text-transform:lowercase;margin:0 15px 0 0;line-height:14px;}#seWrapper .seNavLinks li a{text-decoration:none;color:#707070;display:block;padding:2px 8px;-moz-border-radius:15px;-webkit-border-radius:15px;border-radius:15px;}ul.seNavLinks li a.seCurrent,ul.seNavLinks li a.seCurrent:hover,ul.seNavLinks li a.seCurrent:visited{color:#fff!important;background-color:#bbb;}ul.seNavLinks li a:hover,ul.seNavLinks li a:focus{background-color:#dfdfdf;}#seWrapper .seContainer{overflow-y:auto;padding:0;height:240px;}#seWrapper .seFooter{background-color:#aaa;text-align:right;font-size:10px;}#seWrapper .seFooter a{color:#fff;}.seNumAnswer,.seNumAnswer:vis


{{ *}}v0.w) }
v2.w=vmax(v17.w,v0.w)

#CHECK: 1f1ed6fc { v28.h = vmax(v22.h{{ *}},{{ *}}v30.h) }
v28.h=vmax(v22.h,v30.h)

#CHECK: 1f0cc8d8 { v24.uh = vmax(v8.uh{{ *}},{{ *}}v12.uh) }
v24.uh=vmax(v8.uh,v12.uh)

#CHECK: 1f00c1b0 { v16.ub = vmax(v1.ub{{ *}},{{ *}}v0.ub) }
v16.ub=vmax(v1.ub,v0.ub)

#CHECK: 1f12d08e { v14.w = vmin(v16.w{{ *}},{{ *}}v18.w) }
v14.w=vmin(v16.w,v18.w)

#CHECK: 1f1ad466 { v6.h = vmin(v20.h{{ *}},{{ *}}v26.h) }
v6.h=vmin(v20.h,v26.h)

#CHECK: 1f13df5d { v29.uh = vmin(v31.uh{{ *}},{{ *}}v19.uh) }
v29.uh=vmin(v31.uh,v19.uh)

#CHECK: 1f09c226 { v6.ub = vmin(v2.ub{{ *}},{{ *}}v9.ub) }
v6.ub=vmin(v2.ub,v9.ub)

#CHECK: 1f41d34f { v15.b = vshuffo(v19.b{{ *}},{{ *}}v1.b) }
v15.b=vshuffo(v19.b,v1.b)

#CHECK: 1f5fc72e { v14.b = vshuffe(v7.b{{ *}},{{ *}}v31.b) }
v14.b=vshuffe(v7.b,v31.b)

#CHECK: 1f34d0f7 { v23.b = vdeale(v16.b{{ *}},{{ *}}v20.b) }
v23.b=vdeale(v16.b,v20.b)

#CHECK: 1f4bd6c4 { v5:4.b = vshuffoe(v22.b{{ *}},{{ *}}v11.b) }
v5:4.b=vshuffoe(v22.b,v11.b)

#CHECK: 1f5dcea2 { v3:2.h = vshuffoe(v14.h{{ *}},{{ *}}v29.h) }
v3:2.h=vshuffoe(v14.h,v29.h)

#CHECK: 1f4fd186 { v6.h = vshuffo(v17.h{{ *}},{{ *}}v15.h) }
v6.h=vshuffo(v17.h,v15.h)

#CHECK: 1f5bda79 { v25.h = vshuffe(v26.h{{ *}},{{ *}}v27.h) }
v25.h=vshuffe(v26.h,v27.h)

#CHECK: 1f41d1f2 { v19:18 = vcombine(v17{{ *}},{{ *}}v1) }
v19:18=vcombine(v17,v1)

#CHE


u128().into())?;

    // Only contract owner or proposal owner allowed
    require!(is_owner || proposal.owner == info.sender, Unauthorized);

    let signers_len = signers.len();

    // validate new config
    require!(f != 0, InvalidInput);
    require!(signers_len <= MAX_ORACLES, TooManySigners);
    // See corresponding comment https://github.com/smartcontractkit/chainlink-terra/blob/5c229358eea2633922de615be509eb47c5bcb998/pkg/terra/config_digester.go#L30
    // If this requirement of len(transmitters) == len(signers) is removed, we'll need
    // to update the config digester to include a length prefix on transmitters.
    require!(transmitters.len() == signers.len(), InvalidInput);
    require!(payees.len() == signers.len(), InvalidInput);
    require!(3 * (usize::from(f)) < signers_len, InvalidInput);
    require!(onchain_config.is_empty(), InvalidInput);

    // store on proposal

    // only modify if proposal isn't finalized yet
    require!(!proposal.finalized, InvalidInput);

    proposal.f = f;
    proposal.oracles = signers
        .into_iter()
        .zip(transmitters.into_iter())
        .zip(payees.into_iter())
        .map(|((signers, transmitters), payees)| (signers, transmitters, payees))
        .collect();

    PROPOSALS.save(deps.storage, id.u128().into(), &proposal)?;

    Ok(Response::default())
}

pub fn execute_propose_offchain_config(
    deps: DepsMut,
    _env: Env,
    info: MessageInfo,
    id: ProposalId,
    offchain_config_version: u64,
    offchain_config: Binary,
) -> Result<Response, ContractError> {
    let is_owner = OWNER.is_owner(deps.as_ref(), &info.sender)?;
    let mut proposal = PROPOSALS.load(deps.storage, id.u128().into())?;

    // Only contract owner or proposal owner allowed
    require!(is_owner || proposal.owner == info.sender, Unauthorized);

    // validate new config
    require!(!offchain_config.is_empty(), InvalidInput);

    // store on proposal

    // only modify if proposal isn't finalized yet
    require!(!proposal.finalized, InvalidInput);

    proposal.offchain_config_version = offchain_config_version;
    proposal.offchain_config = offchain_config;

    PROPOSALS.save(deps.storage, id.u128().into(), &proposal)?;

    Ok(Response::default())
}

pub fn query_proposal(deps: Deps, id: ProposalId) -> StdResult<Proposal> {
    let proposal = PROPOSALS.load(deps.storage, id.u128().into())?;
    Ok(proposal)
}

pub fn query_latest_config_details(deps: Deps) -> StdResult<LatestConfigDetailsResponse> {
    let config = CONFIG.load(deps.storage)?;
    Ok(LatestConfigDetailsResponse {
        config_count: config.config_count,
        block_number: config.latest_config_block_number,
        config_digest: config.latest_config_digest,
    })
}

pub fn query_transmitters(deps: Deps) -> StdResult<TransmittersResponse> {
    let addresses: Vec<_> = TRANSMITTERS
        .keys(deps.storage, None, None, Order::Ascending)
        .map(to_addr)
        .collect();
    Ok(TransmittersResponse { addresses })
}

// ---
// --- Onchain Validation
// ---

pub fn query_validator_config(deps: Deps) -> StdResult<Option<Validator>> {
    let config = CONFIG.load(deps.storage)?;
    Ok(config.validator)
}

pub fn execute_set_validator_config(
    deps: DepsMut,
    _


#ifndef NW4R_LYT_ANIMATION_H
#define NW4R_LYT_ANIMATION_H
#include "nw4r/types_nw4r.h"
#include "ut_LinkList.h"
#include "lyt_resourceAccessor.h"
#include "lyt_common.h"

namespace nw4r
{
    namespace lyt
    {
        namespace res
        {
            struct AnimationBlock
            {

            };
        }

        struct AnimationBlock
        {
            res::DataBlockHeader header; // at 0x0
            u16 frameSize; // at 0x8
            bool loop; // at 0xA
            // . . .
        };

        struct AnimTransform
        {
            inline AnimTransform() : mNode(), mResource(NULL), mFrame(0.0f) {}

            u16 GetFrameSize() const;
            bool IsLoopData() const;

            ut::LinkListNode mNode; // at 0x0
            AnimationBlock *mResource; // at 0xC
            f32 mFrame; // at 0x10
        };

        struct AnimTransformBasic : AnimTransform
        {
            AnimTransformBasic();
            virtual ~AnimTransformBasic();
            virtual UNKTYPE SetResource(const res::AnimationBlock *, ResourceAccessor *);
            virtual UNKTYPE Bind(Pane *, bool);
            virtual UNKTYPE Bind(Material *);
            virtual UNKTYPE Animate(u32, Pane *);
            virtual UNKTYPE Animate(u32, Material *);

            u32 INT_0x14;
            u32 INT_0x18;
            u16 INT_0x1C;
        };

        struct AnimationLink
        {
            inline AnimationLink() : mNode()
            {
                Reset();
            }

            inline void Reset()
            {
                Set(NULL, 0, false);
            }

            inline void Set(AnimTransform *pTransform, u16 us, bool b)
            {
                mTransform = pTransform;
                SHORT_0xC = us;
                BOOL_0xE = b;
            }

            ut::LinkListNode mNode; // at 0x0
            AnimTransform *mTransform; // at 0x8
            u16 SHORT_0xC;
            bool BOOL_0xE;
        };
    }
}

#endif


?.forEach { (k, v) ->
            println("$k, $v")
        }
        println("\nplaceholders")
        m.template.fileTemplates?.forEach { (k, v) ->
            println("$k, $v")
        }

        m.template.expandPkgName(true)
        println(m.template.getTreeGraph(templateFile = true))
    }
}package com.dengzii.plugin.template.tools.ui

import com.intellij.openapi.ui.JBMenuItem
import com.intellij.openapi.ui.JBPopupMenu
import java.awt.Component
import java.awt.event.MouseEvent

/**
 *

 * author : dengzi
 * e-mail : dengzii@foxmail.com
 * github : https://github.com/dengzii
 * time   : 2020/1/16
 * desc   :
 *

 */
object PopMenuUtils {

    /**
     * Return a [JBPopupMenu] instance with [menu].
     *
     * @param menu The menu item and click event callback pair.
     */
    fun create(menu: Map<String, () -> Unit?>): JBPopupMenu {

        val popMenu = JBPopupMenu()
        menu.forEach { (k, v) ->
            if (k.isBlank()) {
                popMenu.addSeparator()
                return@forEach
            }
            val item = JBMenuItem(k)
            item.addActionListener {
                v.invoke()
            }
            popMenu.add(item)
        }
        return popMenu
    }

    /**
     * Show a [JBPopupMenu] that location depends on [event]'s x, y.
     *
     * @param event The mouse event.
     * @param menu The menu item and click event callback pair.
     */
    fun show(event: MouseEvent, menu: Map<String, () -> Unit?>) {
        create(menu).show(event.source as Component, event.x, event.y)
    }
}package com.dengzii.plugin.adb

import java.text.SimpleDateFormat
import java.util.*

/**
 *

 * author : dengzi
 * e-mail : dengzii@foxmail.com
 * github : https://github.com/dengzii
 * time   : 2019/10/8
 * desc   :
 *

 */
object XLog {

    private var ENABLE = true
    private var LOG = StringBuilder()

    fun getAllLog(): String {
        return LOG.toString()
    }

    fun disable() {
        ENABLE = false
    }

    fun enable() {
        ENABLE = true
    }

    fun d(log: String) {
        d(getDefaultTag(), log)
    }

    fun d(tag: String, log: String) {
        log(false, "${getTime()} $tag: $log")
    }

    fun e(e: Throwable) {
        e(getDefaultTag(), e)
    }

    fun e(tag: String, e: Throwable) {
        log(true, "${getTime()} $tag: ${e.message}")
        e.printStackTrace()
    }

    fun e(msg: String) {
        log(true, "${getTime()} ${getDefaultTag()} $msg")
    }

    fun e(tag: String, msg: String) {
        log(true, "${getTime()} $tag $msg")
    }

    private fun log(error: Boolean, log: String) {
        if (!ENABLE) {
            return
        }
        LOG.append(log).append("\n")
        if (error) {
            System.err.println(log)
        } else {
            println(log)
        }
    }

    private fun getDefaultTag(sourceDist: Int = 0): String {
        val stacks = Thread.currentThread().stackTrace
        val stack = stacks[4 - sourceDist]
        val className = stack.className.split(".").last()
        return "${className}.${stack.methodName}:${stack.lineNumber}"
    }

    private fun getTime(): String {
        val da = SimpleDateFormat("MM-dd/HH:mm")
        return da.format(Date())


",
    },
    [ITEM_TYPE_DISPLAY_CATEGORY_ENCHANTING] =
    {
        up = "EsoUI/Art/Inventory/inventory_tabIcon_Craftbag_enchanting_up.dds",
        down = "EsoUI/Art/Inventory/inventory_tabIcon_Craftbag_enchanting_down.dds",
        over = "EsoUI/Art/Inventory/inventory_tabIcon_Craftbag_enchanting_over.dds",
    },
    [ITEM_TYPE_DISPLAY_CATEGORY_PROVISIONING] =
    {
        up = "EsoUI/Art/Inventory/inventory_tabIcon_Craftbag_provisioning_up.dds",
        down = "EsoUI/Art/Inventory/inventory_tabIcon_Craftbag_provisioning_down.dds",
        over = "EsoUI/Art/Inventory/inventory_tabIcon_Craftbag_provisioning_over.dds",
    },
    [ITEM_TYPE_DISPLAY_CATEGORY_STYLE_MATERIAL] =
    {
        up = "EsoUI/Art/Inventory/inventory_tabIcon_Craftbag_styleMaterial_up.dds",
        down = "EsoUI/Art/Inventory/inventory_tabIcon_Craftbag_styleMaterial_down.dds",
        over = "EsoUI/Art/Inventory/inventory_tabIcon_Craftbag_styleMaterial_over.dds",
    },
    [ITEM_TYPE_DISPLAY_CATEGORY_TRAIT_ITEM] =
    {
        up = "EsoUI/Art/Inventory/inventory_tabIcon_Craftbag_itemTrait_up.dds",
        down = "EsoUI/Art/Inventory/inventory_tabIcon_Craftbag_itemTrait_down.dds",
        over = "EsoUI/Art/Inventory/inventory_tabIcon_Craftbag_itemTrait_over.dds",
    },
    [ITEM_TYPE_DISPLAY_CATEGORY_FOOD] =
    {
        up = "EsoUI/Art/Crafting/provisioner_indexIcon_meat_up.dds",
        down = "EsoUI/Art/Crafting/provisioner_indexIcon_meat_down.dds",
        over = "EsoUI/Art/Crafting/provisioner_indexIcon_meat_over.dds",
    },
    [ITEM_TYPE_DISPLAY_CATEGORY_DRINK] =
    {
        up = "EsoUI/Art/Crafting/provisioner_indexIcon_beer_up.dds",
        down = "EsoUI/Art/Crafting/provisioner_indexIcon_beer_down.dds",
        over = "EsoUI/Art/Crafting/provisioner_indexIcon_beer_over.dds",
    },
    [ITEM_TYPE_DISPLAY_CATEGORY_RECIPE] =
    {
        up = "EsoUI/Art/Inventory/inventory_tabIcon_recipe_up.dds",
        down = "EsoUI/Art/Inventory/inventory_tabIcon_recipe_down.dds",
        over = "EsoUI/Art/Inventory/inventory_tabIcon_recipe_over.dds",
    },
    [ITEM_TYPE_DISPLAY_CATEGORY_POTION] =
    {
        up = "EsoUI/Art/TradingHouse/Tradinghouse_Potions_Potionsolvent_Up.dds",
        down = "EsoUI/Art/TradingHouse/Tradinghouse_Potions_Potionsolvent_Down.dds",
        over = "EsoUI/Art/TradingHouse/Tradinghouse_Potions_Potionsolvent_Over.dds",
    },
    [ITEM_TYPE_DISPLAY_CATEGORY_POISON] =
    {
        up = "EsoUI/Art/TradingHous


3
	lda	YCoord0_0F,Y	; 4+
	sta	YEND		; 3
	stx	LINE_INDEX	; 3
	lda	XSTART		; 3
	sec			; 2
	sbc	XEND		; 3
	bcs	L1B1A		; 2+
	eor	#$ff		; 2
	adc	#$01		; 2
	ldy	#$e8		; 2
	bne	L1B22		; 3

L1B1A:
	beq	L1B20		; 2+
	ldy	#$ca		; 2
	bne	L1B22		; 3

L1B20:
	ldy	#$ea		; 2
L1B22:
	sta	DELTA_X		; 3
	sty	L1B79		; 4
	sty	L1BA6		; 4
	lda	YSTART		; 3
	sec			; 2
	sbc	YEND		; 3
	bcs	L1B39		; 2+
	eor	#$ff		; 2
	adc	#$01		; 2
	ldy	#$c8		; 2
	bne	L1B41		; 3

L1B39:
	beq	L1B3F		; 2+
	ldy	#$88		; 2
	bne	L1B41		; 3

L1B3F:
	ldy	#$ea		; 2
L1B41:
	sta	DELTA_Y		; 3
	sty	L1B5B		; 4
	sty	L1BB8		; 4
	ldx	XSTART		; 3
	ldy	YSTART		; 3
	lda	#$00		; 2
	sta	LINE_ADJ	; 3
	lda	DELTA_X		; 3
	cmp	DELTA_Y		; 3
	bcs	L1B96		; 2+
L1B57:
	cpy	YEND		; 3
	beq	L1B8B		; 2+
L1B5B:
	nop			; 2
	lda	YTableLo,Y	; 4+
	sta	HPTR		; 3
	lda	YTableHi,Y	; 4+
	ora	HPAGE		; 3
	sta	HPTR+1		; 3
	lda	LINE_ADJ	; 3
	clc			; 2
	adc	DELTA_X		; 3
	cmp	DELTA_Y		; 3
	bcs	L1B75		; 2+
	sta	LINE_ADJ	; 3
	bcc	L1B7A		; 3

L1B75:
	sbc	DELTA_Y		; 3
	sta	LINE_ADJ	; 3
L1B79:
	nop			; 2
L1B7A:
	sty	YSAVE		; 3
	ldy	Div7Tab,X	; 4+
	lda	(HPTR),Y	; 5+
	ora	HiResBitTab,X	; 4+
	sta	(HPTR),Y	; 6
	ldy	YSAVE		; 3
	jmp	L1B57		; 3

L1B8B:
	ldx	LINE_INDEX	; 3
	inx			; 2
	cpx	LAST_LINE	; 3
	beq	L1B95		; 2+
	jmp	DrawLineList+2	; 3

L1B95:
	rts			; 6

L1B96:
	lda	YTableLo,Y	; 4+
	sta	HPTR		; 3
	lda	YTableHi,Y	; 4+
	ora	HPAGE		; 3
	sta	HPTR+1		; 3
L1BA2:
	cpx	XEND		; 3
	beq	L1B8B		; 2+
L1BA6:
	nop			; 2
	lda	LINE_ADJ	; 3
	clc			; 2
	adc	DELTA_Y		; 3
	cmp	DELTA_X		; 3
	bcs	L1BB4		; 2+
	sta	LINE_ADJ	; 3
	bcc	L1BC5		; 3

L1BB4:
	sbc	DELT


or(int dimension = 0; dimension < dimensions; dimension++)
            {
                dynamic start = point.GetCoordinate(dimension);
                dynamic end = start + vector.GetDelta(dimension);
                if (start <= end)
                {
                    _intervals[dimension] = new Interval<T>(start, true, end, true);
                }
                else
                {
                    _intervals[dimension] = new Interval<T>(end, true, start, true);
                }
            }
        }

        public Box(params Interval<T>[] intervals) : this((IEnumerable<Interval<T>>) intervals)
        {
        }

        public Box(IEnumerable<Interval<T>> intervals)
        {
            _intervals = intervals.ToArray();
        }

        public int Dimensions
        {
            get
            {
                return _intervals == null ? 0 : _intervals.Length;
            }
        }

        public Interval<T> GetInterval(int dimension)
        {
            if (dimension < 0 || _intervals == null || dimension >= _intervals.Length)
            {
                throw new IndexOutOfRangeException();
            }

            return _intervals[dimension];
        }

        private Interval<T>[] _intervals;
    }
}


 新春佳节，是团圆与欢乐的时刻，也是我们感恩回馈的时刻。奉天安全团队与禾信智安希望通过这次抽奖活动，为大家带来一份特别的惊喜，让我们的陪伴与守护成为你新年的第一份好运！

    快来参与吧，让我们一起迎接一个充满希望与安全的新年！祝大家新春快乐，万事如意！

![](https://mmbiz.qpic.cn/mmbiz_gif/fib280k2DW13xl37QYibVeXhn3Hia62nGvpbr10q3gNEf9iceQdKdA8qoVhJmvhicoEuhXLAha8AibHk4Wex71Sr5sSQ/640?wx_fmt=gif&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1 "")

#  博斯外贸管理软件V6.0 log/logined.jsp SQL注入漏洞
Superhero  Nday Poc   2025-01-25 17:20

![](https://mmbiz.qpic.cn/mmbiz_png/Melo944GVOJECe5vg2C5YWgpyo1D5bCkYN4sZibCVo6EFo0N9b7Kib4I4N6j6Y10tynLOdgov9ibUmaNwW5yeoCbQ/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")

![](https://mmbiz.qpic.cn/mmbiz_png/Melo944GVOJECe5vg2C5YWgpyo1D5bCkhic5lbbPcpxTLtLccZ04WhwDotW7g2b3zBgZeS5uvFH4dxf0tj0Rutw/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")

![](https://mmbiz.qpic.cn/mmbiz_png/Melo944GVOJECe5vg2C5YWgpyo1D5bCk524CiapZejYicic1Hf8LPt8qR893A3IP38J3NMmskDZjyqNkShewpibEfA/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")

内容仅用于学习交流自查使用，由于传播、利用本公众号所提供的
POC
信息及
POC对应脚本
而造成的任何直接或者间接的后果及损失，均由使用者本人负责，公众号nday poc及作者不为此承担任何责任，一旦造成后果请自行承担！如文章有侵权烦请及时告知，我们会立即删除文章并致歉。谢谢！

**00******

**产品简介**

博斯外贸管理软件V6.0是杭州博斯软件开发
有限公司推出的一款针对外贸业务的管理软件。涵盖了外贸邮件CRM、外贸业务管理系统、外贸ERP等多个模块，能够全面满


k(n.check,i,m,a)),f-=m,a+=m,_e)break e}else n.head&&(n.head.comment=null);n.mode=q;case q:if(512&n.flags){for(;d<16;){if(0===f)break e;f--,h+=i[a++]<<d,d+=8}if(h!==(65535&n.check)){e.msg="header crc mismatch",n.mode=he;break}h=0,d=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=G;break;case K:for(;d<32;){if(0===f)break e;f--,h+=i[a++]<<d,d+=8}e.adler=n.check=r(h),h=0,d=0,n.mode=Y;case Y:if(0===n.havedict)return e.next_out=s,e.avail_out=u,e.next_in=a,e.avail_in=f,n.hold=h,n.bits=d,R;e.adler=n.check=1,n.mode=G;case G:if(t===O||t===B)break e;case W:if(n.last){h>>>=7&d,d-=7&d,n.mode=ue;break}for(;d<3;){if(0===f)break e;f--,h+=i[a++]<<d,d+=8}switch(n.last=1&h,h>>>=1,d-=1,3&h){case 0:n.mode=J;break;case 1:if(c(n),n.mode=ne,t===B){h>>>=2,d-=2;break e}break;case 2:n.mode=$;break;case 3:e.msg="invalid block type",n.mode=he}h>>>=2,d-=2;break;case J:for(h>>>=7&d,d-=7&d;d<32;){if(0===f)break e;f--,h+=i[a++]<<d,d+=8}if((65535&h)!=(h>>>16^65535)){e.msg="invalid stored block lengths",n.mode=he;break}if(n.length=65535&h,h=0,d=0,n.mode=Q,t===B)break e;case Q:n.mode=X;case X:if(m=n.length){if(m>f&&(m=f),m>u&&(m=u),0===m)break e;p.arraySet(o,i,a,m,s),f-=m,a+=m,u-=m,s+=m,n.length-=m;break}n.mode=G;break;case $:for(;d<14;){if(0===f)break e;f--,h+=i[a++]<<d,d+=8}if(n.nlen=257+(31&h),h>>>=5,d-=5,n.ndist=1+(31&h),h>>>=5,d-=5,n.ncode=4+(15&h),h>>>=4,d-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=he;break}n.have=0,n.mode=ee;case ee:for(;n.have<n.ncode;){for(;d<3;){if(0===f)break e;f--,h+=i[a++]<<d,d+=8}n.lens[Be[n.have++]]=7&h,h>>>=3,d-=3}for(;n.have<19;)n.lens[Be[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,xe={bits:n.lenbits},Ee=_(E,n.lens,0,19,n.lencode,0,n.work,xe


	stx	%o3,	[%l1]
	st	%o5,	[%l2]
	stb	%o5,	[%l3]
	st	%o5,	[%l4]
	st	%o6,	[%l5]
	sth	%o0,	[%l6]
	st	%o6,	[%l7]
	st	%o0,	[%g1]
	stx	%o3,	[%g2]
	stb	%o5,	[%g3]
	stx	%o1,	[%g4]
	stb	%o5,	[%g5]
	ldub	[%g4],	%l0
	ldub	[%l7],	%l0
	stx	%i3,	[%l1]
	sth	%i7,	[%l2]
	sth	%i7,	[%l3]
	sth	%i3,	[%l4]
	st	%i6,	[%l5]
	stb	%i0,	[%l6]
	st	%i0,	[%l7]
	stx	%i5,	[%g1]
	st	%i4,	[%g2]
	stx	%i5,	[%g3]
	st	%i5,	[%g4]
	stx	%i2,	[%g5]
	ld	[%g5],	%l0
	ld	[%l6],	%l0

	stb	%o5,	[%g1]
	stx	%o6,	[%g2]
	stx	%o7,	[%g3]
	st	%o1,	[%g4]
	stx	%o4,	[%g5]
	sth	%o3,	[%l1]
	stx	%o7,	[%l2]
	stx	%o1,	[%l3]
	stb	%o5,	[%l4]
	sth	%o1,	[%l5]
	sth	%o0,	[%l6]
	sth	%o6,	[%l7]
	ldub	[%g4],	%l0
	ldub	[%l7],	%l0
	stx	%i3,	[%g1]
	sth	%i6,	[%g2]
	sth	%i7,	[%g3]
	stx	%i5,	[%g4]
	stx	%i3,	[%g5]
	sth	%i7,	[%l1]
	sth	%i3,	[%l2]
	st	%i1,	[%l3]
	st	%i3,	[%l4]
	stb	%i5,	[%l5]
	sth	%i2,	[%l6]
	sth	%i7,	[%l7]
	ld	[%g5],	%l0
	ldub	[%l6],	%l0

stb_tc0_2:
	mov	0x0,	%l0
	setx	dtte_64kb_data_0,	%l0,	%l1
	add	%l1,	0, %l2
	setx	dtte_512kb_data_4,	%l0,	%l1
	add	%l1,	16, %l3
	setx	dtte_8kb_data_4,	%l0,	%l1
	add	%l1,	16, %l4
	setx	dtte_8kb1_data_2,	%l0,	%l1
	add	%l1,	40, %l5
	setx	dtte_512kb_data_3,	%l0,	%l1
	add	%l1,	0, %


 antlr.TreesStringTree(s, ruleNames, recog)
}

func (s *AssignmentStatementContext) EnterRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(qasm3ParserListener); ok {
		listenerT.EnterAssignmentStatement(s)
	}
}

func (s *AssignmentStatementContext) ExitRule(listener antlr.ParseTreeListener) {
	if listenerT, ok := listener.(qasm3ParserListener); ok {
		listenerT.ExitAssignmentStatement(s)
	}
}

func (s *AssignmentStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} {
	switch t := visitor.(type) {
	case qasm3ParserVisitor:
		return t.VisitAssignmentStatement(s)

	default:
		return t.VisitChildren(s)
	}
}

func (p *qasm3Parser) AssignmentStatement() (localctx IAssignmentStatementContext) {
	localctx = NewAssignmentStatementContext(p, p.GetParserRuleContext(), p.GetState())
	p.EnterRule(localctx, 68, qasm3ParserRULE_assignmentStatement)
	var _la int

	p.EnterOuterAlt(localctx, 1)
	{
		p.SetState(442)
		p.IndexedIdentifier()
	}
	{
		p.SetState(443)

		var _lt = p.GetTokenStream().LT(1)

		localctx.(*AssignmentStatementContext).op = _lt

		_la = p.GetTokenStream().LA(1)

		if !(_la == qasm3ParserEQUALS || _la == qasm3ParserCompoundAssignmentOperator) {
			var _ri = p.GetErrorHandler().RecoverInline(p)

			localctx.(*AssignmentStatementContext).op = _ri
		} else {
			p.GetErrorHandler().ReportMatch(p)
			p.Consume()
		}
	}
	p.SetState(446)
	p.GetErrorHandler().Sync(p)
	if p.HasError() {
		goto errorExit
	}

	switch p.GetTokenStream().LA(1) {
	case qasm3ParserBOOL, qasm3ParserBIT, qasm3ParserINT, qasm3ParserUINT, qasm3ParserFLOAT, qasm3ParserANGLE, qasm3ParserCOMPLEX, qasm3ParserARRAY, qasm3ParserDURATION, qasm3ParserSTRETCH, qasm3ParserDURATIONOF, qasm3ParserBooleanLiteral, qasm3ParserLPAREN, qasm3ParserMINUS, qasm3ParserTILDE, qasm3ParserEXCLAMATION_POINT, qasm3ParserImaginaryLiteral, qasm3ParserBinaryIntegerLiteral, qasm3ParserOctalIntegerLiteral, qasm3ParserDecimalIntegerLiteral, qasm3ParserHexIntegerLiteral, qasm3ParserIdentifier, qasm3ParserHardwareQubit, qasm3ParserFloatLiteral, qasm3ParserTimingLiteral, qasm3ParserBitstringLiteral:
		{
			p.SetState(444)
			p.expression(0)
		}

	case qasm3ParserMEASURE:
		{
			p.SetState(445)
			p.MeasureExpression()
		}

	default:
		p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
		goto errorExit
	}
	{
		p.SetState(448)
		p.Match(qasm3ParserSEMICOLON)
		if p.HasError() {
			// Recognition error - abort rule
			goto errorExit
		}
	}

errorExit:
	if p.HasError() {
		v := p.GetError()
		localctx.SetException(v)
		p.GetErrorHandler().ReportError(p, v)
		p.GetErrorHandler().Recover(p, v)
		p.SetError(nil)
	}
	p.ExitRule()
	return localctx
	goto errorExit // Trick to prevent compiler error if the label is not used
}

// IExpressionStatementContext is an interface to support dynamic dispatch.
type IExpressionStatementContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// Getter signatures
	Expression() IExpressionContext
	SEMICOLON()


AliasPubkey',
      type: IsarType.string,
    ),
    r'myPubkey': PropertySchema(
      id: 5,
      name: r'myPubkey',
      type: IsarType.string,
    ),
    r'otherFields': PropertySchema(
      id: 6,
      name: r'otherFields',
      type: IsarType.string,
    ),
    r'relay': PropertySchema(
      id: 7,
      name: r'relay',
      type: IsarType.string,
    ),
    r'sessionId': PropertySchema(
      id: 8,
      name: r'sessionId',
      type: IsarType.string,
    ),
    r'sharePubkey': PropertySchema(
      id: 9,
      name: r'sharePubkey',
      type: IsarType.string,
    ),
    r'shareSecretKey': PropertySchema(
      id: 10,
      name: r'shareSecretKey',
      type: IsarType.string,
    ),
    r'status': PropertySchema(
      id: 11,
      name: r'status',
      type: IsarType.long,
    ),
    r'toAliasPubkey': PropertySchema(
      id: 12,
      name: r'toAliasPubkey',
      type: IsarType.string,
    ),
    r'toPubkey': PropertySchema(
      id: 13,
      name: r'toPubkey',
      type: IsarType.string,
    )
  },
  estimateSize: _secretSessionDBISAREstimateSize,
  serialize: _secretSessionDBISARSerialize,
  deserialize: _secretSessionDBISARDeserialize,
  deserializeProp: _secretSessionDBISARDeserializeProp,
  idName: r'id',
  indexes: {
    r'sessionId': IndexSchema(
      id: 6949518585047923839,
      name: r'sessionId',
      unique: true,
      replace: true,
      properties: [
        IndexPropertySchema(
          name: r'sessionId',
          type: IndexType.hash,
          caseSensitive: true,
        )
      ],
    )
  },
  links: {},
  embeddedSchemas: {},
  getId: _secretSessionDBISARGetId,
  getLinks: _secretSessionDBISARGetLinks,
  attach: _secretSessionDBISARAttach,
  version: '3.1.0+1',
);

int _secretSessionDBISAREstimateSize(
  SecretSessionDBISAR object,
  List<int> offsets,
  Map<Type, List<int>> allOffsets,
) {
  var bytesCount = offsets.last;
  {
    final value = object.myAliasPrivkey;
    if (value != null) {
      bytesCount += 3 + value.length * 3;
    }
  }
  {
    final value = object.myAliasPubkey;
    if (value != null) {
      bytesCount += 3 + value.length * 3;
    }
  }
  {
    final value = object.myPubkey;
    if (value != null) {
      bytesCount += 3 + value.length * 3;
    }
  }
  {
    final value = object.otherFields;
    if (value != null) {
      bytesCount += 3 + value.length * 3;
    }
  }
  {
    final value = object.relay;
    if (value != null) {
      bytesCount += 3 + value.length * 3;
    }
  }
  bytesCount += 3 + object.sessionId.length * 3;
  {
    final value = object.sharePubkey;
    if (value != null) {
      bytesCount += 3 + value.length * 3;
    }
  }
  {
    final value = object.shareSecretKey;
    if (value != null) {
      bytesCount += 3 + value.length * 3;
    }
  }
  {
    final value = object.toAliasPubkey;
    if (value != null) {
      bytesCount += 3 + value.length


/*	$NetBSD: iomap.h,v 1.3 1996/08/23 11:17:00 leo Exp $	*/

/*
 * Copyright (c) 1995 Leo Weppelman.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *      This product includes software developed by Leo Weppelman.
 * 4. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef _MACHINE_IOMAP_H
#define _MACHINE_IOMAP_H
/*
 * Atari TT hardware:
 * I/O Address maps
 */
#ifdef _KERNEL
vm_offset_t	stio_addr;	/* Where the st io-area is mapped	*/
#define	AD_STIO	(stio_addr)	/* .. see atari_init.c			*/

/*
 * PCI KVA addresses. These are determined in atari_init.c. Exept for
 * the config-space, they should be used for a PCI-console only. Other
 * cards should use the bus-functions to map io & mem spaces.
 * Each card gets an config area of NBPG  bytes.
 */
vm_offset_t	pci_conf_addr;	/* KVA base of PCI config space		*/
vm_offset_t	pci_io_addr;	/* KVA base of PCI io-space		*/
vm_offset_t	pci_mem_addr;	/* KVA base of PCI mem-space		*/
#endif /* _KERNEL */

#define	PCI_CONFB_PHYS	(0xA0000000L)
#define	PCI_CONFM_PHYS	(0x00080000L)
#define	PCI_IO_PHYS	(0xB0000000L)
#define	PCI_MEM_PHYS	(0x80000000L)

#define PCI_CONF_SIZE	(4 * NBPG)
#define PCI_IO_SIZE	(NBPG)
#define PCI_MEM_SIZE	(32 * 1024)

#define	AD_RAM		(0x000000L)	/* main memory			*/
#define	AD_CART		(0xFA0000L)	/* expansion cartridge		*/
#define	AD_ROM		(0xFC0000L)	/* system ROM			*/
#define	STIO_SIZE	(0x8000L)	/* Size of mapped I/O devices	*/

/*
 * Physical address of I/O area. Use only for pte initialisation!
 */
#define	STIO_PHYS	((machineid & ATARI_HADES)	\
				? 0xffff8000L		\
				: 0x00ff8000L)

/*
 * I/O addresses in the STIO area:
 */
#define	AD_RAMCFG	(AD_STIO + 0x0000)	/* ram configuration	*/
#define AD_FAL_MON_TYPE	(AD_STIO + 0x0006)	/* Falcon monitor type	*/
#define	AD_VIDEO	(AD_STIO + 0x0200)	/* video controller	*/
#define AD_RESERVED	(AD_STIO + 0x0400)	/* reserved		*/
#define	AD_DMA		(AD_STIO + 0x0600)	/* DMA device access	*/
#define	AD_SCSI_DMA	(AD_STIO + 0x0700)	/* SCSI DMA registers	*/
#define	AD_NCR5380	(AD_STIO + 0x0780)	/* SCSI controller	*/
#define	AD_SOUND	(AD_STIO + 0x0800)	/* YM-2149		*/
#define	AD_RTC		(AD_STIO + 0x0960)	/* TT realtime clock	*/
#define	AD_SCC		(AD_STIO + 0x0C80)	/* SCC 8530		*/
#define	AD_SCU		(AD_STIO + 0x0E00)	/* System Control Unit	*/

#define	AD_MFP		(AD_STIO + 0x7A00)	/* 68901		*/
#define	AD_MFP2		(AD_STIO + 0x7A80)	/* 68901-TT		*/
#define	AD_ACIA		(AD_STIO + 0x7C00)	/* 2 * 6850		*/
#endif /* _MACHINE_IOMAP_H */


within(aad, in_out, 0..)
    }

    /// Authenticates and decrypts (“opens”) data in place.
    ///
    /// `received_tag` should contain the authentication tag.
    ///
    /// `aad` is the additional authenticated data (AAD), if any.
    ///
    /// On input, `in_out` must contain the ciphertext. When
    /// `open_in_place_separate_tag()` returns `Ok(plaintext)`, the input
    /// ciphertext has been overwritten by the plaintext; `plaintext` will refer
    /// to the plaintext without the tag.
    ///
    /// When `open_in_place_separate_tag()` returns `Err(..)`, `in_out` may have
    /// been overwritten in an unspecified way.
    pub fn open_in_place_separate_tag<'in_out, A>(
        &mut self,
        aad: Aad<A>,
        in_out: &'in_out mut [u8],
        received_tag: &Tag,
    ) -> Result<&'in_out mut [u8], error::Unspecified>
    where
        A: AsRef<[u8]>,
    {
        open_in_place_separate_tag_(
            &self.key,
            self.nonce_sequence.advance()?,
            aad,
            in_out,
            received_tag,
        )
    }

    /// Authenticates and decrypts (“opens”) data in place, with a shift.
    ///
    /// `aad` is the additional authenticated data (AAD), if any.
    ///
    /// On input, `in_out[ciphertext_and_tag]` must be the ciphertext followed
    /// by the tag. When `open_within()` returns `Ok(plaintext)`, the plaintext
    /// will be at `in_out[0..plaintext.len()]`. In other words, the following
    /// two code fragments are equivalent for valid values of
    /// `ciphertext_and_tag`, except `open_within` will often be more efficient:
    ///
    ///
    /// ```skip
    /// let plaintext = key.open_within(aad, in_out, cipertext_and_tag)?;
    /// ```
    ///
    /// ```skip
    /// let ciphertext_and_tag_len = in_out[ciphertext_and_tag].len();
    /// in_out.copy_within(ciphertext_and_tag, 0);
    /// let plaintext = key.open_in_place(aad, &mut in_out[..ciphertext_and_tag_len])?;
    /// ```
    ///
    /// Similarly, `key.open_within(aad, in_out, 0..)` is equivalent to
    /// `key.open_in_place(aad, in_out)`.
    ///
    ///  When `open_in_place()` returns `Err(..)`, `in_out` may have been
    /// overwritten in an unspecified way.
    ///
    /// The shifting feature is useful in the case where multiple packets are
    /// being reassembled in place. Consider this example where the peer has
    /// sent the message “Split stream reassembled in place” split into
    /// three sealed packets:
    ///
    /// ```ascii-art
    ///                 Packet 1                  Packet 2                 Packet 3
    /// Input:  [Header][Ciphertext][Tag][Header][Ciphertext][Tag][Header][Ciphertext][Tag]
    ///                      |         +--------------+                        |
    ///               +------+   +-----+    +----------------------------------+
    ///               v          v          v
    /// Output: [Plaintext][Plaintext][Plaintext]
    ///        “Split stream reassembled in place”
    /// ```
    ///
    /// This re


lected = getCatalogIdByParam(msgText, catalogList);
	if (_catalogDocSelected == null) {
		ret = -5;
		return new Promise(res => res(ret));
	}
	catalogId = _catalogDocSelected._id;
	catalogSelected = {
		name: _catalogDocSelected.name,
		note: _catalogDocSelected.note
	};
	await optionsModel.findOne({ catalogId }).exec().then((_res) => {
		if (!_res) {
			ret = -7;
		} else {
			unSavedList = _res.optionList;
		}
	}).catch(err => {
		console.error("select: optionsModel.findOne: err:", err);
		ret = -6;
	});
	if (ret < 0)
		return new Promise(res => res(ret));

	await currentListModel.updateMany({ chatId }, {
			$set: {
				catalogId,
				options: unSavedList
			}
		}, { upsert: true }).exec().then((raw) => {
			console.log("currentListModel.update: raw", raw);
	}).catch(err => {
		ret = -8;
		console.error("currentListModel.update: err:", err);
	});
	if (ctx.State) {
		ctx.State.edited = false;
		ctx.State.catalogId = catalogId;
		console.log("Select: state changed:", JSON.stringify(ctx.State));
	}
	return new Promise(res => res(ret));
};

export default select;

/*
 * 对外暴露的切换接口
 */
// export const loadCatalog = () => {
//
// };

		// 切换时不自动保存
	// // 尝试保存状态
	// if (ctx.State && ctx.State.edited) { // 尝试保存未保存的当前列表
	// 	const _filter: DBCurrentListInterface = {
	// 		chatId,
	// 		catalogId: ctx.State.catalogId
	// 	};
	// 	await currentListModel.findOne(_filter).exec((err, _res) => {
	// 		if (err) {
	// 			console.error("select: model.findOne(_filter): err:", err);
	// 			console.error("select: model.findOne(_filter): filter:", _filter);
	// 			ret = -1;
	// 		} else if (!_res) {
	// 			console.error("select: model.findOne(_filter): filter:", _filter);
	// 			ret = -2;
	// 		} else {
	// 			unSavedList = _res.options;
	// 			catalogId = _res.catalogId;
	// 		}
	// 	});
	// 	if (ret < 0) {
	// 		return new Promise(res => res(ret));
	// 	}
	// }
	// // 执行保存
	// if (unSavedList.length > 0) { // 执行保存
	// 	await optionsModel.update({ catalogId }, {
	// 		catalogId: catalogId,
	// 		options: unSavedList
	// 	}, (err, raw) => {
	// 		if (err) {
	// 			console.error("select: model.findOne(_filter): err:", err);
	// 			ret = -3;
	// 		} else {
	// 			console.log('Edited list has been saved. ', raw);
	// 		}
	// 	})
	// 	if (ret < 0)
	// 		return new Promise(res => res(ret));
	// }import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'myDate'
})
export class MyDatePipe implements PipeTransform {

  transform(value: any):