_rec_train/best_accuracy.pdparams`文件路径。

PaddleOCR提供的配置文件是在8卡训练（相当于总的batch size是`8*128=1024`）、且没有加载预训练模型情况下的配置文件，因此您的场景中，学习率与总的batch size需要对应线性调整，例如：

* 如果您的场景中是单卡训练，单卡batch_size=128，则总的batch_size=128，在加载预训练模型的情况下，建议将学习率调整为`[1e-4, 2e-5]`左右（piecewise学习率策略，需设置2个值，下同）。
* 如果您的场景中是单卡训练，因为显存限制，只能设置单卡batch_size=64，则总的batch_size=64，在加载预训练模型的情况下，建议将学习率调整为`[5e-5, 1e-5]`左右。

如果有通用真实场景数据加进来，建议每个epoch中，垂类场景数据与真实场景的数据量保持在1:1左右。

比如：您自己的垂类场景识别数据量为1W，数据标签文件为`vertical.txt`，收集到的通用场景识别数据量为10W，数据标签文件为`general.txt`，

那么，可以设置`label_file_list`和`ratio_list`参数如下所示。每个epoch中，`vertical.txt`中会进行全采样（采样比例为1.0），包含1W条数据；`general.txt`中会按照0.1的采样比例进行采样，包含`10W*0.1=1W`条数据，最终二者的比例为`1:1`。

```yaml
Train:
  dataset:
    name: SimpleDataSet
    data_dir: ./train_data/
    label_file_list:
    - vertical.txt
    - general.txt
    ratio_list: [1.0, 0.1]
```

### 3.4 训练调优

训练过程并非一蹴而就的，完成一个阶段的训练评估后，建议收集分析当前模型在真实场景中的 badcase，有针对性的调整训练数据比例，或者进一步新增合成数据。通过多次迭代训练，不断优化模型效果。

如果在训练时修改了自定义字典，由于无法加载最后一层FC的参数，在迭代初期acc=0是正常的情况，不必担心，加载预训练模型依然可以加快模型收敛。
# 端对端OCR算法-PGNet
- [一、简介](#简介)
- [二、环境配置](#环境配置)
- [三、快速使用](#快速使用)
- [四、模型训练、评估、推理](#模型训练、评估、推理)

## 一、简介
OCR算法可以分为两阶段算法和端对端的算法。二阶段OCR算法一般分为两个部分，文


E
	add r0, r5, #0
	add r1, r4, #0
	mov r2, #3
	bl ov92_0225DF58
	add r0, r5, #0
	add r1, r4, #0
	bl ov92_0225EDB4
	ldr r0, _0225FAB4 ; =0x00002BB8
	mov r1, #1
	str r1, [r5, r0]
	b _0225FA8E
_0225FA76:
	ldr r0, _0225FAB4 ; =0x00002BB8
	mov r1, #0
	str r1, [r5, r0]
	sub r0, #0xba
	strh r1, [r5, r0]
	mov r0, #0x2b
	lsl r0, r0, #8
	strh r1, [r6, r0]
	add r0, #8
	str r1, [r7, r0]
	ldr r0, _0225FAA8 ; =0x00002B9C
	str r1, [r7, r0]
_0225FA8E:
	ldr r0, [sp]
	add r4, r4, #1
	add r0, r0, #4
	str r0, [sp]
	ldr r0, [sp, #4]
	add r7, r7, #4
	add r6, r6, #2
	cmp r4, r0
	blt _0225F9DE
_0225FAA0:
	add sp, #8
	pop {r3, r4, r5, r6, r7, pc}
	.balign 4, 0
_0225FAA4: .word 0x00002B08
_0225FAA8: .word 0x00002B9C
_0225FAAC: .word 0x00002AFE
_0225FAB0: .word 0x000021A4
_0225FAB4: .word 0x00002BB8
	thumb_func_end ov92_0225F9C4

	thumb_func_start ov92_0225FAB8
ov92_0225FAB8: ; 0x0225FAB8
	push {r3, r4, r5, lr}
	add r4, r0, #0
	ldr r1, _0225FC1C ; =0x00002B9C
	ldr r2, [r4]
	add r3, r4, r1
	lsl r2, r2, #2
	ldr r5, [r3, r2]
	cmp r5, #3
	bls _0225FACC
	b _0225FC18
_0225FACC:
	add r5, r5, r5
	add r5, pc
	ldrh r5, [r5, #6]
	lsl r5, r5, #0x10
	asr r5, r5, #0x10
	add pc, r5
_0225FAD8: ; jump table
	.short _0225FAE0 - _0225FAD8 - 2 ; case 0
	.short _0225FB52 - _0225FAD8 - 2 ; case 1
	.short _0225FB8C - _0225FAD8 - 2 ; case 2
	.short _0225FBEA - _0225FAD8 - 2 ; case 3
_0225FAE0:
	mov r1, #0
	bl ov92_0225ED68
	cmp r0, #0
	beq _0225FB28
	ldr r0, _0225FC20 ; =0x00002AFC
	mov r1, #0
	strh r1, [r4, r0]
	add r0, r4, #0
	bl


iones de crédito podrá publicar a través del sitio electrónico que tenga la propia Comisión,
la suspensión de operaciones ordenada conforme a este artículo.
(85)

La orden de suspensión a que se refiere este artículo es sin perjuicio de las sanciones que
puedan resultar aplicables en términos de lo previsto en esta Ley y demás disposiciones.
(85)

Ar tículo 129.- La REFR#1285 Comisión Nacional Bancaria y de Valores, con acuerdo de su Junta de
Gobierno, en protección de los intereses del público ahorrador y acreedores de una institución de
banca múltiple, declarará como medida cautelar la intervención de la institución de banca
múltiple cuando se presente alguno de los supuestos siguientes:
(85)

I. En el transcurso de un mes, el índice de capitalización de la institución de banca múltiple
disminuya de un nivel igual o superior al requerido conforme a lo establecido en artículo 50
de esta Ley, a un nivel igual o inferior al requerimiento mínimo de capital fundamental
establecido conforme al citado artículo 50 y las disposiciones que de él emanen, salvo en los
casos en que la REFR#1286 Junta de Gobierno del Instituto para la Protección al Ahorro Bancario haya
determinado lo señalado en el inciso b) de la fracción II del artículo 148 de esta Ley, en los
cuales se aplicará lo dispuesto en el penúltimo párrafo del artículo 29 Bis de esta Ley;

(85)

II. Incurra en la causal de revocación a que se refiere la fracción V del artículo 28 de esta Ley, y
la propia institución no opere bajo el régimen a que se refiere el artículo 29 Bis 2 de la
misma, o

(85)

III. Se presente algún supuesto de incumplimiento de los previstos en la fracción VI del artículo
28 de esta Ley y, a juicio del REFR#1287 Comité de Estabilidad Bancaria, se pueda actualizar alguno de
los supuestos a que hace referencia el artículo 29 Bis 6 de esta Ley.

(85)

En el caso en que una institución de banca múltiple se ubique en el supuesto a que se refiere la
fracción I del presente artículo, la REFR#1288 Comisión Nacional Bancaria y de Valores, previo a la
declaración de intervención de la institución, prevendrá a ésta para que en un plazo máximo de
un día hábil reintegre el capital en la cantidad necesaria para mantener sus operaciones dentro
de los límites respectivos en términos de esta Ley. Transcurrido dicho plazo sin que se verifique
dicha circunstancia, la citada REFR#1289 Comisión procederá a declarar la intervención. Dentro del plazo
indicado, las <a href="#"


tV2 = doc.createElementNS(XAdESv1_3_2, "xades:SigningCertificate");
		sigSignedProp.appendChild(sigCertV2);

		Element sigCert = doc.createElementNS(XAdESv1_3_2, "xades:Cert");
		sigCertV2.appendChild(sigCert);

		Element sigCertDig = doc.createElementNS(XAdESv1_3_2, "xades:CertDigest");
		sigCert.appendChild(sigCertDig);

		Element sigDigMet = doc.createElementNS(XMLNS, "ds:DigestMethod");
		sigDigMet.setAttribute("Algorithm", "http://www.w3.org/2000/09/xmldsig#sha1");
		//sigDigMet.setAttribute("Algorithm", "http://www.w3.org/2000/09/xmldsig#sha256");
		sigCertDig.appendChild(sigDigMet);

		Element sigDigValue = doc.createElementNS(XMLNS, "ds:DigestValue");
		sigDigValue.setTextContent(getCertificateDigest(cert, "SHA1"));
		//sigDigValue.setTextContent(getCertificateDigest(cert, "SHA-256"));
		sigCertDig.appendChild(sigDigValue);

		Element sigIssuerSerial = doc.createElementNS(XAdESv1_3_2, "xades:IssuerSerial");
		sigCert.appendChild(sigIssuerSerial);

		String issuerName = cert.getIssuerX500Principal().toString();
		String serialId = cert.getSerialNumber().toString();

		Element sigIssuerName = doc.createElementNS(XMLNS, "ds:X509IssuerName");
		sigIssuerName.setTextContent(issuerName);
		sigIssuerSerial.appendChild(sigIssuerName);

		Element sigIssuerNumber = doc.createElementNS(XMLNS, "ds:X509SerialNumber");
		sigIssuerNumber.setTextContent(serialId);
		sigIssuerSerial.appendChild(sigIssuerNumber);

		if (!policyOID.isEmpty()) {
			sigSignedProp.appendChild(addPolicy(doc));
		}

		Element sigSigDataObjeProp = doc.createElementNS(XAdESv1_3_2, "xades:SignedDataObjectProperties");
		sigProp.appendChild(sigSigDataObjeProp);

		Element sigDataObjFormat = doc.createElementNS(XAdESv1_3_2, "xades:DataObjectFormat");
		sigDataObjFormat.setAttribute("ObjectReference", "#r" + id);
		sigSigDataObjeProp.appendChild(sigDataObjFormat);

		/*
		 * Element sigDescription = doc.createElementNS(XAdESv1_3_2,
		 * "xades:Description"); sigDescription.setTextContent(doc.getBaseURI());
		 * sigDataObjFormat.appendChild(sigDescription);
		 */

		Element sigMimeType = doc.createElementNS(XAdESv1_3_2, "xades:MimeType");
		sigMimeType.setTextContent("text/xml");
		sigDataObjFormat.appendChild(sigMimeType);

		return sigObject;

	}

	/**
	 * create the SignatureHashReference tag
	 *
	 * @param doc
	 * @param signedTagData
	 * @return
	 * @throws XMLSignerException
	 */
	private Element createSignatureHashReference(Document doc, byte[] signedTagData) throws XMLSignerException {

		HashMap<String, String> param = new HashMap<String, String>();
		param.put("id", "sigref" + id);
		param.put("type", Constants.SignedProperties);
		param.put("uri", "#xades-" + id);
		param.put("alg", "http://www.w3.org/2001/10/xml-exc-c14n#WithComments");
		param.put("digAlg", AlgorithmsValues.getSignatureDigest(getSignatureDigest()));

		MessageDigest md = null;

		try {
			md = MessageDigest.getInstance(getSignatureDigest());
		} catch (NoSuchAlgorithmException e) {
			logger.error(xadesMessagesBundle.getString("error.no.algorithm", e.getMessage()));
			throw new XMLSignerException(xadesMessagesBundle.getString


().ge(xs.iter()));

    // Sequence with NaN
    let u = [1, 2];
    let v = [0 / 0, 3];

    assert(!u.iter().lt(v.iter()));
    assert(!u.iter().le(v.iter()));
    assert(!u.iter().gt(v.iter()));
    assert(!u.iter().ge(v.iter()));

    let a = [0 / 0];
    let b = [1];
    let c = [2];

    assert(a.iter().lt(b.iter()) == a[0] < b[0]);
    assert(a.iter().le(b.iter()) == a[0] <= b[0]);
    assert(a.iter().gt(b.iter()) == a[0] > b[0]);
    assert(a.iter().ge(b.iter()) == a[0] >= b[0]);

    assert(c.iter().lt(b.iter()) == c[0] < b[0]);
    assert(c.iter().le(b.iter()) == c[0] <= b[0]);
    assert(c.iter().gt(b.iter()) == c[0] > b[0]);
    assert(c.iter().ge(b.iter()) == c[0] >= b[0]);
  });

  test("multi_iter", () => {
    let xs = [1, 2, 3, 4];
    let ys = [4, 3, 2, 1];
    assert(xs.iter().eq(ys.iter().rev()));
    assert(xs.iter().lt(xs.iter().skip(2)));
  });

  test("counter_from_iter", () => {
    let it = range_from(0)
      .step_by(5)
      .take(10);
    let xs: number[] = it.collect();
    assert_eq(xs, [0, 5, 10, 15, 20, 25, 30, 35, 40, 45]);
  });

  test("iterator_chain", () => {
    let xs = [0, 1, 2, 3, 4, 5];
    let expected = [0, 1, 2, 3, 4, 5, 30, 40, 50, 60];
    {
      let ys = [30, 40, 50, 60];
      let it = xs.iter().chain(ys);
      let i = 0;
      for (let x of it) {
        assert_eq(x, expected[i]);
        i += 1;
      }
      assert_eq(i, expected.len());
    }

    {
      let ys = range_from(30)
        .step_by(10)
        .take(4);
      let it = xs
        .iter()
        .cloned()
        .chain(ys);
      let i = 0;
      for (let x of it) {
        assert_eq(x, expected[i]);
        i += 1;
      }
      assert_eq(i, expected.len());
    }
  });

  test("iterator_chain_nth", () => {
    let xs = [0, 1, 2, 3, 4, 5];
    let ys = [30, 40, 50, 60];
    let zs: number[] = [];
    let expected = [0, 1, 2, 3, 4, 5, 30, 40, 50, 60];
    for (let [i, x] of expected.iter().enumerate()) {
      assert_eq(
        Some(x),
        xs
          .iter()
          .chain(ys)
          .nth(i)
      );
    }
    assert_eq(
      zs
        .iter()
        .chain(xs)
        .nth(0),
      Some(0)
    );

    let it = xs.iter().chain(zs);
    assert_eq(it.nth(5), Some(5));
    assert_eq(it.next(), None());
  });

  test("iterator_chain_nth_back", () => {
    let xs = [0, 1, 2, 3, 4, 5];
    let ys = [30, 40, 50, 60];
    let zs: number[] = [];
    let expected = [0, 1, 2, 3, 4, 5, 30, 40, 50, 60];
    for (let [i, x] of expected
      .iter()
      .rev()
      .enumerate()) {
      assert_eq(
        Some(x),
        xs
          .iter()
          .chain(ys)


n.setAdd(tmpCoords, n);
			n.normalize();

			m.setAdd(center1, tmpCoords2);
			m.setAdd(m, tmpCoords3);
			if (fading) {
				manager.texture(1, zFading);
			}
			drawNV(n, m);

			if (fading) {
				m.setAdd(center, tmpCoords2);
				m.setAdd(m, tmpCoords3);
				manager.texture(lineFading, zFading);
				drawNV(n, m);
			}

			m.setAdd(center2, tmpCoords2);
			m.setAdd(m, tmpCoords3);
			if (fading) {
				manager.texture(1, zFading);
			}
			drawNV(n, m);

			// v < 0
			n.setMul(ev2, -2 * v);
			n.setAdd(tmpCoords, n);
			n.normalize();

			m.setSub(center1, tmpCoords2);
			m.setAdd(m, tmpCoords3);
			if (fading) {
				manager.texture(1, zFading);
			}
			drawNV(n, m);

			if (fading) {
				m.setSub(center, tmpCoords2);
				m.setAdd(m, tmpCoords3);
				manager.texture(lineFading, zFading);
				drawNV(n, m);
			}

			m.setSub(center2, tmpCoords2);
			m.setAdd(m, tmpCoords3);
			if (fading) {
				manager.texture(1, zFading);
			}
			drawNV(n, m);

		}

		// set indices
		if (min == 0) {
			arrayIndex = latitude * 12;
		} else {
			arrayIndex = (latitude - 1) * 12;
		}
		if (fading) {
			arrayIndex *= 2;
		}
		arrayI = manager.getCurrentGeometryIndices(arrayIndex);

		short index = 0;

		if (fading) {
			if (min == 0) {
				arrayI.put(index);
				arrayI.put((short) (index + 3));
				arrayI.put((short) (index + 1));

				arrayI.put((short) (index + 1));
				arrayI.put((short) (index + 3));
				arrayI.put((short) (index + 4));

				arrayI.put((short) (index + 1));
				arrayI.put((short) (index + 4));
				arrayI.put((short) (index + 2));

				arrayI.put((short) (index + 2));
				arrayI.put((short) (index + 4));
				arrayI.put((short) (index + 5));

				arrayI.put(index);
				arrayI.put((short) (index + 1));
				arrayI.put((short) (index + 6));

				arrayI.put((short) (index + 1));
				arrayI.put((short) (index + 7));
				arrayI.put((short) (index + 6));

				arrayI.put((short) (index + 1));
				arrayI.put((short) (index + 2));
				arrayI.put((short) (index + 7));

				arrayI.put((short) (index + 2));
				arrayI.put((short) (index + 8));
				arrayI.put((short) (index + 7));

				index += 3;
			}
			for (int vi = 1; vi < latitude; vi++) {
				arrayI.put(index);
				arrayI.put((short) (index + 6));
				arrayI.put((short) (index + 1));

				arrayI.put((short) (index + 1));
				arrayI.put((short) (index + 6));
				arrayI.put((short) (index + 7));

				arrayI.put((short) (index + 1));
				arrayI.put((short) (index + 7));
				arrayI.put((short) (index + 2));

				arrayI.put((short) (index + 2));
				arrayI.put((short) (index + 7));


al Animation<double> linesLength;

  final Animation<double> linesGap;

  @override
  void performLayout(Size size) {
    const logoSize = Size(155, 54);
    const maxOffset = 32.7;

    final uSize = layoutChild(
      _ForegroundPart.u,
      const BoxConstraints.tightFor(width: 41.84, height: 54),
    );
    final bSize = layoutChild(
      _ForegroundPart.b,
      const BoxConstraints.tightFor(width: 41.55, height: 54),
    );
    final eSize = layoutChild(
      _ForegroundPart.e,
      const BoxConstraints.tightFor(width: 39.05, height: 54),
    );
    final rSize = layoutChild(
      _ForegroundPart.r,
      const BoxConstraints.tightFor(width: 19.42, height: 54),
    );

    final screenRect = Offset.zero & size;
    final logoRect = screenRect.center.translate(
          -logoSize.width / 2,
          -logoSize.height / 2,
        ) &
        logoSize;

    var uRect = logoRect.topLeft & uSize;

    if (offset.value > 0) {
      uRect = uRect.translate(maxOffset * offset.value, 0);
    }

    const ubGap = 5.88;

    final bRect = uRect.topRight.translate(ubGap, 0) & bSize;
    final eRect = bRect.topRight.translate(3.02, 0) & eSize;
    final rRect = eRect.topRight.translate(4.23, 0) & rSize;

    positionChild(_ForegroundPart.u, uRect.topLeft);
    positionChild(_ForegroundPart.b, bRect.topLeft);
    positionChild(_ForegroundPart.e, eRect.topLeft);
    positionChild(_ForegroundPart.r, rRect.topLeft);

    if (linesLength.value == 0 || linesGap.value == 1) {
      layoutChild(
        _ForegroundPart.leftLine,
        const BoxConstraints.tightFor(width: 0, height: 0),
      );
      layoutChild(
        _ForegroundPart.rightLine,
        const BoxConstraints.tightFor(width: 0, height: 0),
      );

      return;
    }

    const initialLineSize = Size(8.5, 54);
    const maxLineWidth = 50;
    final maxLineHeight = screenRect.height;

    final gap = math.max(0, (screenRect.width - ubGap) * linesGap.value);

    final lineSize = Size(
      initialLineSize.width +
          (maxLineWidth - initialLineSize.width) * linesGap.value,
      initialLineSize.height +
          (maxLineHeight - initialLineSize.height) * linesLength.value,
    );

    layoutChild(_ForegroundPart.leftLine, BoxConstraints.tight(lineSize));
    layoutChild(_ForegroundPart.rightLine, BoxConstraints.tight(lineSize));

    final leftLineRect = uRect.centerRight.translate(
          -lineSize.width - gap / 2,
          -lineSize.height / 2,
        ) &
        lineSize;

    positionChild(_ForegroundPart.leftLine, leftLineRect.topLeft);
    positionChild(
      _ForegroundPart.rightLine,
      leftLineRect.topRight.translate(ubGap + gap, 0),
    );
  }

  @override
  bool shouldRelayout(_ForegroundLayoutDelegate oldDelegate) {
    return offset != oldDelegate.offset ||
        linesLength != oldDelegate.linesLength ||
        linesGap != oldDelegate.linesGap;
  }
}

abstract class _LetterPainter extends CustomPainter {
  _LetterPainter({
    required this.color,
    required this.maskColor,
    required this.opacity,
    required this.progress,
  }) : super(repaint: Listenable.merge([opacity, progress]));

  final Color color;

  final Color maskColor;

  final Animation<double> opacity;

  final Animation<double> progress;

  Path? _letterPath;

  List<PathMetric>? _maskPathMetrics;


mple.com/audio)                                       |
| 形式化推理                                   | 已知“所有猫都会爬树”，“汤姆是一只猫”，请问“汤姆会爬树”这个命题是真还是假？                             |
| 文本生成                                     | 请根据以下关键词生成一段文章：人工智能、自然语言处理、深度学习、GPT-3.5。                                  |
|天气预报|今天的天气是怎么样的？|
|电影推荐|你有什么好的电影推荐吗？|
|健康咨询|如何提高免疫力？|
|旅游攻略|去巴厘岛旅游应该怎么安排行程？|
|新闻报道|最近发生了哪些国内外重要事件？|
|菜谱推荐|有什么好吃的夏季凉菜推荐吗？|
|英语学习|如何提高英语口语水平？|
|股票投资|现在值得投资的股票有哪些？|
|运动健身|如何科学合理地进行肌肉训练？|
|科技趋势|未来五年内哪些科技将会引领潮流？|
|Open Generation|为我写一篇关于人工智能的未来发展趋势的文章。|
|Classification|将以下新闻分类：政治、娱乐、科技、经济 <br> "华尔街日报：美国与中国可能很快达成贸易协议" |
|Editing|请修改下面这句话中的语法错误，“她常常去逛商场，买鞋子和手袋。”|
|Open Generation|请你描述一下深蓝计划（The Blue Plan）是什么以及其目标。|
|Comparison|阐述人工智能和机器学习的区别？|
|Cause and Effect|为什么在过去的几年中，人工智能开始得到广泛的应用？|
|Open Generation|写一篇介绍近期人工智能创新应用的文章。|
|Opinion|你认为人工智能会对就业市场产生什么影响？|
|Open Generation|请你撰写一份关于人工智能伦理方面的研究报告。|
|Definition|请解释一下什么是神经网络，以及它如何应用于人工智能技术中。|
| 分类 | 哪些动物属于哺乳动物？ |
| 开放式生成 | 描述一下你最喜欢的旅游目的地。 |
| 编辑 | 将以下句子改为更加简洁的表达方式：在我看来，这项工作非常重要。 |
| 开放式生成 | 如果你有无限的时间和资源，你会尝试做什么？ |
| 分类 | 这个食品是素食还是非素食？ |
| 编辑 | 检查以下这段文字是否有语法错误并进行修改：“他们几乎每天都去公园跑步，而且感觉身体变得越来越强壮。” |
| 开放式生成 | 如果你可以穿越时空，你会前往哪个历史时期？ |
| 分类 | 哪些国家拥有核武器？ |
| 编辑 | 将以下句子中的被动语态改为主动语态：“这本书被我读完了。” |
| 开放式


cros();
        Utc.timestamp(tsmic.0 as i64, tsmic.1)
    }
}

impl From<Timestamp> for NaiveDateTime {
    fn from(timestamp: Timestamp) -> NaiveDateTime {
        let tsmic = timestamp.from_timestamp_micros();
        NaiveDateTime::from_timestamp(tsmic.0 as i64, tsmic.1)
    }
}

impl<'ts> From<&'ts Timestamp> for DateTime<Utc> {
    fn from(timestamp: &Timestamp) -> DateTime<Utc> {
        (*timestamp).into()
    }
}

impl<'ts> From<&'ts Timestamp> for NaiveDateTime {
    fn from(timestamp: &Timestamp) -> NaiveDateTime {
        (*timestamp).into()
    }
}

impl<T: ToTimestampMicros> From<T> for Timestamp {
    fn from(source: T) -> Timestamp {
        source.to_timestamp_micros().into()
    }
}

pub trait FromTimestampMicros {
    fn from_timestamp_micros(&self) -> (u64, u32);
}

impl FromTimestampMicros for u64 {
    fn from_timestamp_micros(&self) -> (u64, u32) {
        (self / 1_000_000, (self % 1_000_000) as u32)
    }
}

impl FromTimestampMicros for Timestamp {
    fn from_timestamp_micros(&self) -> (u64, u32) {
        self.0.from_timestamp_micros()
    }
}

pub trait ToTimestampMicros {
    fn to_timestamp_micros(&self) -> u64;
}

impl<T: TimeZone> ToTimestampMicros for DateTime<T> {
    fn to_timestamp_micros(&self) -> u64 {
        (self.timestamp() * 1_000_000
            + <i64 as ::std::convert::From<_>>::from(self.timestamp_subsec_micros())) as u64
    }
}

impl ToTimestampMicros for NaiveDate {
    fn to_timestamp_micros(&self) -> u64 {
        self.and_time(NaiveTime::from_hms(0, 0, 0))
            .to_timestamp_micros()
    }
}

impl ToTimestampMicros for NaiveDateTime {
    fn to_timestamp_micros(&self) -> u64 {
        (self.timestamp() * 1_000_000
            + <i64 as ::std::convert::From<_>>::from(self.timestamp_subsec_micros())) as u64
    }
}

impl Default for Timestamp {
    fn default() -> Timestamp {
        Utc::now().into()
    }
}

impl Display for Timestamp {
    fn fmt(&self, f: &mut Formatter) -> Result<(), FmtError> {
        let date: DateTime<Utc> = self.into();

        write!(f, "{}", date)
    }
}

impl Deref for Timestamp {
    type Target = u64;

    fn deref(&self) -> &Self::Target {
        &self.0
    }
}

impl ToPrimitive for Timestamp {
    fn to_i64(&self) -> Option<i64> {
        self.0.to_i64()
    }

    fn to_u64(&self) -> Option<u64> {
        Some(self.0)
    }
}

impl NumCast for Timestamp {
    fn from<T>(n: T) -> Option<Self>
    where
        T: ToPrimitive,
    {
        if let Some(v) = n.to_u64() {
            Some(Timestamp(v))
        } else {
            None
        }
    }
}

impl Zero for Timestamp {
    fn zero() -> Timestamp {
        0.into()
    }

    fn is_zero(&self) -> bool {
        self.0 == 0
    }
}

impl One for Timestamp {
    fn one() -> Timestamp {
        MIN_TIMESTAMP
    }
}

impl Add<Timestamp> for Timestamp {
    type Output = Timestamp;

    fn add(self, rhs: Timestamp) -> Self::Output {
        (self.0


def relative(I_1, alpha_max, i_max=100):
    """
      For a collection of intervals I_1 this functions computes
      RLT by formulas (2) and (3). This function will be typically called
      on the output of the gudhi persistence_intervals_in_dimension function.

    Args:
      I_1: list of intervals e.g. [[0, 1], [0, 2], [0, np.inf]].
      alpha_max: float, the maximal persistence value
      i_max: int, upper bound on the value of beta_1 to compute.

    Returns
      An array of size (i_max, ) containing desired RLT.
    """
    persistence_intervals = []
    for interval in I_1:
        if not np.isinf(interval[1]):
            persistence_intervals.append(list(interval))
        elif np.isinf(interval[1]):
            persistence_intervals.append([interval[0], alpha_max])
    if len(persistence_intervals) == 0:
        rlt = np.zeros(i_max)
        rlt[0] = 1.0
        return rlt
    persistence_intervals_ext = persistence_intervals + [[0, alpha_max]]
    persistence_intervals_ext = np.array(persistence_intervals_ext)
    persistence_intervals = np.array(persistence_intervals)
    switch_points = np.sort(np.unique(persistence_intervals_ext.flatten()))
    rlt = np.zeros(i_max)
    for i in range(switch_points.shape[0] - 1):
        midpoint = (switch_points[i] + switch_points[i + 1]) / 2
        s = 0
        for interval in persistence_intervals:
            if midpoint >= interval[0] and midpoint < interval[1]:
                s = s + 1
        if s < i_max:
            rlt[s] += switch_points[i + 1] - switch_points[i]
    return rlt / alpha_max


REF="#note_1">[1] The constant WOULD_BLOCK, defined in the header <boost/iostreams/char_traits.hpp>, is used to indicate that input is temporarily unavilable.

    The Iostreams library defines two convenience classes, input_filter and input_wfilter, which provide member typedefs char_type and category as well as default implementations of several member functions. When defining a new model of InputFilter, it is often sufficient to derive from input_filter or input_wfilter and to define a member function get.

II. Multi-Character InputFilter

    The following example shows a Multi-Character InputFilter which performs the same filtering operation as the Filter in Example I.

    #include <ctype.h>                 // isalpha
    #include <cstdio.h>                // EOF
    #include <boost/iostreams/categories.hpp> // input_filter_tag
    #include <boost/iostreams/operations.hpp> // get

    using namespace std;
    using namespace boost::io;

    struct alphabetic_input_filter {
        typedef char                       char_type;
        typedef multichar_input_filter_tag  category;

        template<typename Source>
        streamsize read(Source& src, char* s, streamsize n)
            {
                int   c;
                char* first = s;
                char* last  = s + n;
                while ( first != last &&
                        (c = boost::iostreams::get(src)) != EOF &&
                         c != WOULD_BLOCK &&
                        isalpha((unsigned char) c) )
                {
                    *first++ = c;
                }
                streamsize result = static_cast<streamsize>(first - s);
                return result == <SPAN


foo: #M1
      B: #M3
        interface: #M8
          map
            bar: #M6
            foo: #M1
          implemented
            bar: #M6
            foo: #M1
          superImplemented
            [1]
              bar: #M6
              foo: #M1
          inherited
            bar: #M6
            foo: #M1
    exportMapId: #M5
    exportMap
      A: #M0
      B: #M3
''',
    );
  }

  test_manifest_class_method_add_with_generic() async {
    await _runLibraryManifestScenario(
      initialCode: r'''
class A<T> {
  T foo() {}
}

class B with A<int> {}
''',
      expectedInitialEvents: r'''
[operation] linkLibraryCycle SDK
[operation] linkLibraryCycle
  package:test/test.dart
    hashForRequirements: #H0
    declaredClasses
      A: #M0
        declaredMethods
          foo: #M1
        interface: #M2
          map
            foo: #M1
          implemented
            foo: #M1
      B: #M3
        interface: #M4
          map
            foo: #M1
          implemented
            foo: #M1
          superImplemented
            [1]
              foo: #M1
          inherited
            foo: #M1
    exportMapId: #M5
    exportMap
      A: #M0
      B: #M3
''',
      updatedCode: r'''
class A<T> {
  T foo() {}
  void bar() {}
}

class B with A<int> {}
''',
      expectedUpdatedEvents: r'''
[operation] linkLibraryCycle
  package:test/test.dart
    hashForRequirements: #H1
    declaredClasses
      A: #M0
        declaredMethods
          bar: #M6
          foo: #M1
        interface: #M7
          map
            bar: #M6
            foo: #M1
          implemented
            bar: #M6
            foo: #M1
      B: #M3
        interface: #M8
          map
            bar: #M6
            foo: #M1
          implemented
            bar: #M6
            foo: #M1
          superImplemented
            [1]
              bar: #M6
              foo: #M1
          inherited
            bar: #M6
            foo: #M1
    exportMapId: #M5
    exportMap
      A: #M0
      B: #M3
''',
    );
  }

  test_manifest_class_method_combinedSignatures_conflict_removeOne() async {
    await _runLibraryManifestScenario(
      initialCode: r'''
abstract class A {
  int foo();
}

abstract class B {
  double foo();
}

abstract class C implements A, B {}
''',
      expectedInitialEvents: r'''
[operation] linkLibraryCycle SDK
[operation] linkLibraryCycle
  package:test/test.dart
    hashForRequirements: #H0
    declaredClasses
      A: #M0
        declaredMethods
          foo: #M1
        interface: #M2
          map
            foo: #M1
      B: #M3
        declaredMethods
          foo: #M4
        interface: #M5
          map
            foo: #M4
      C: #M6
        interface: #M7
    exportMapId: #M8
    exportMap
      A: #M0
      B: #M3
      C: #M6
''',
      updatedCode: r'''
abstract class A {
  int foo();
}

abstract class B {}

abstract class C implements A, B {}
''',
      expectedUpdatedEvents: r'''
[operation] linkLibraryCycle
  package:test/test.dart
    hashForRequirements: #H1
    declaredCl


 firstOne.token;
    assert(colon.lexeme == ":");
    String initializerString =
        addInitializers.map((e) => "this._$e = $e").join(", ");
    replacements[colon] =
        new Replacement(colon, colon, ": $initializerString,");
  }

  // If there are anything in addInitializers we need to patch
  // up the body too -- if we replace `{this.foo}` with `{dynamic foo}`
  // and the body says `foo = 42;` before that would change the field,
  // now it will change the parameter value. We must patch up all usages
  // - even reads to work on things like
  //  class C {
  //    int field1;
  //    int field2;
  //    C(this.field1) : field2 = field1 + 1;
  //  }
  if (addInitializers.isNotEmpty) {
    BlockFunctionBodyEnd? blockFunctionBody =
        constructor.getBlockFunctionBody();
    if (blockFunctionBody != null) {
      List<IdentifierHandle> identifiers =
          blockFunctionBody.recursivelyFind<IdentifierHandle>();
      for (IdentifierHandle identifier in identifiers) {
        Token token = identifier.token;
        IdentifierContext context = identifier.context;
        if (namedFields.contains(token.lexeme) &&
            addInitializers.contains(token.lexeme)) {
          // For now naively assume that if it's a continuation it says
          // `this.`
          if (!context.isContinuation) {
            replacements[token] = new Replacement(token, token, "_$token");
          }
        }
      }
    }
  }
}

class Replacement {
  final Token beginToken;
  final Token endToken;
  final String replacement;

  Replacement(this.beginToken, this.endToken, this.replacement);
}

String? getExtends(TopLevelDeclarationEnd cls) {
  ClassDeclarationEnd classDeclaration = cls.getClassDeclaration();

  ClassExtendsHandle classExtends = classDeclaration.getClassExtends();
  Token? extendsKeyword = classExtends.extendsKeyword;
  if (extendsKeyword == null) {
    return null;
  } else {
    return extendsKeyword.next.toString();
  }
}

void debugDumpNode(ParserAstNode node) {
  node.children!.forEach((element) {
    print("${element.what} (${element.deprecatedArguments}) "
        "(${element.children})");
  });
}

void debugDumpNodeRecursively(ParserAstNode node, {String indent = ""}) {
  print("$indent${node.what} (${node.deprecatedArguments})");
  if (node.children == null) return;
  node.children!.forEach((element) {
    print("$indent${element.what} (${element.deprecatedArguments})");
    if (element.children != null) {
      element.children!.forEach((element) {
        debugDumpNodeRecursively(element, indent: "  $indent");
      });
    }
  });
}
void test(int abstract) {}
void test([int abstract]) {}
void test([int abstract = 42]) {}
void test({int abstract}) {}
void test({int abstract: 42}) {}
void test({int abstract = 42}) {}

void test(int as) {}
void test([int as]) {}
void test([int as = 42]) {}
void test({int as}) {}
void test({int as: 42}) {}
void test({int as = 42}) {}

void test(int assert) {}
void test([int assert]) {}
void test([int assert = 42]) {}
void test({int assert}) {}
void test({int assert: 42}) {}
void test({int assert = 42}) {}

void test(int async) {}
void test([int async]) {}
void test([int async = 42]) {}
void test({int async}) {}
void test({int async: 42}) {}
void test({int asy


  ResponseTypeCode response_type_code_ = kResponseTypeDefault;

  v8::Isolate* const isolate_;
  // Set to true if the XMLHttpRequest was created in an isolated world.
  bool is_isolated_world_;
  // Stores the SecurityOrigin associated with the isolated world if any.
  scoped_refptr<SecurityOrigin> isolated_world_security_origin_;

  // This blob loader will be used if |m_downloadingToFile| is true and
  // |m_responseTypeCode| is NOT ResponseTypeBlob.
  Member<BlobLoader> blob_loader_;

  // Positive if we are dispatching events.
  // This is an integer specifying the recursion level rather than a boolean
  // because in some cases we have recursive dispatching.
  int event_dispatch_recursion_level_ = 0;

  bool async_ = true;

  bool with_credentials_ = false;

  // Used to skip m_responseDocument creation if it's done previously. We need
  // this separate flag since m_responseDocument can be 0 for some cases.
  bool parsed_response_ = false;
  bool error_ = false;
  bool upload_events_allowed_ = true;
  bool upload_complete_ = false;
  // True iff the ongoing resource loading is using the downloadToBlob
  // option.
  bool downloading_to_blob_ = false;
  bool response_text_overflow_ = false;
  bool send_flag_ = false;
  bool response_array_buffer_failure_ = false;

  probe::AsyncTaskId async_task_id_;
};

std::ostream& operator<<(std::ostream&, const XMLHttpRequest*);

}  // namespace blink

#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_XMLHTTPREQUEST_XML_HTTP_REQUEST_H_


Url,
      channelName: channelName ?? this.channelName,
      channelThumbnailUrl: channelThumbnailUrl ?? this.channelThumbnailUrl,
      channelId: channelId ?? this.channelId,
      uploaderVerified: uploaderVerified ?? this.uploaderVerified,
    );
  }

  Map<String, dynamic> toMap() {
    return <String, dynamic>{
      'id': id,
      'title': title,
      'thumbnailUrl': thumbnailUrl,
      'channelName': channelName,
      'channelThumbnailUrl': channelThumbnailUrl,
      'channelId': channelId,
      'uploaderVerified': uploaderVerified,
    };
  }

  factory VideoBasicInfo.fromMap(Map<String, dynamic> map) {
    return VideoBasicInfo(
      id: map['id'] as String,
      title: map['title'] != null ? map['title'] as String : null,
      thumbnailUrl: map['thumbnailUrl'] != null ? map['thumbnailUrl'] as String : null,
      channelName: map['channelName'] != null ? map['channelName'] as String : null,
      channelThumbnailUrl: map['channelThumbnailUrl'] != null ? map['channelThumbnailUrl'] as String : null,
      channelId: map['channelId'] != null ? map['channelId'] as String : null,
      uploaderVerified: map['uploaderVerified'] != null ? map['uploaderVerified'] as bool : null,
    );
  }

  String toJson() => json.encode(toMap());

  factory VideoBasicInfo.fromJson(String source) => VideoBasicInfo.fromMap(json.decode(source) as Map<String, dynamic>);

  @override
  String toString() {
    return 'VideoBasicInfo(id: $id, title: $title, thumbnailUrl: $thumbnailUrl, channelName: $channelName, channelThumbnailUrl: $channelThumbnailUrl, channelId: $channelId, uploaderVerified: $uploaderVerified)';
  }

  @override
  bool operator ==(covariant VideoBasicInfo other) {
    if (identical(this, other)) return true;

    return
      other.id == id &&
      other.title == title &&
      other.thumbnailUrl == thumbnailUrl &&
      other.channelName == channelName &&
      other.channelThumbnailUrl == channelThumbnailUrl &&
      other.channelId == channelId &&
      other.uploaderVerified == uploaderVerified;
  }

  @override
  int get hashCode {
    return id.hashCode ^
      title.hashCode ^
      thumbnailUrl.hashCode ^
      channelName.hashCode ^
      channelThumbnailUrl.hashCode ^
      channelId.hashCode ^
      uploaderVerified.hashCode;
  }
}
// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'invidious_trending_resp.dart';

// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************

InvidiousTrendingResp _$InvidiousTrendingRespFromJson(
        Map<String, dynamic> json) =>
    InvidiousTrendingResp(
      type: json['type'] as String?,
      title: json['title'] as String?,
      videoId: json['videoId'] as String?,
      author: json['author'] as String?,
      authorId: json['authorId'] as String?,
      authorUrl: json['authorUrl'] as String?,
      authorVerified: json['authorVerified'] as bool?,
      videoThumbnails: (json['videoThumbnails'] as List<dynamic>?)
          ?.map((e) => VideoThumbnail.fromJson(e as Map<String, dynamic>))
          .toList(),
      description: json['description'] as String?,
      descriptionHtml: json['descriptionHtml'] as String?,
      viewCount: (json['viewCount'] as num?)?.toInt(),
      viewCountText: json['viewCountText'] as String?,
      published: (json['published'] as num?)?.t


',
      );
    }

    _offset += futureTime.difference(controlledNow);
    // Ensure that we cancel the current actual timer, trigger any pending
    // timers, and create a new actual timer.
    _triggerPendingTimers();
  }

  /// Wait for all scheduled microtasks to be done.
  Future<void> _waitForMicroTasks() async {
    await Future.delayed(Duration(microseconds: 0));
  }
}

final class _TravelingTimer {
  /// [ClockController] to which this [_TravelingTimer] belongs.
  final ClockController _owner;

  /// [DateTime] when this [_TravelingTimer] was created in
  /// [ClockController._controlledTime].
  final DateTime _createdInControlledTime;

  /// Zone, for creation of timers.
  final Zone _zone;

  /// Duration for the timer to trigger.
  final Duration _duration;

  /// Callback to be invoked when this [_TravelingTimer] is triggered.
  final void Function(_TravelingTimer timer) _trigger;

  /// [DateTime] when this [_TravelingTimer] is supposed to be triggered,
  /// measured in [ClockController._controlledTime].
  DateTime get _elapsesAtInFakeTime => _createdInControlledTime.add(_duration);

  _TravelingTimer({
    required ClockController owner,
    required DateTime createdInControlledTime,
    required Zone zone,
    required Duration duration,
    required void Function() trigger,
  }) : _owner = owner,
       _createdInControlledTime = createdInControlledTime,
       _zone = zone,
       _duration = duration,
       _trigger = ((_) => trigger());

  void cancel() => _owner._cancelPendingTimer(this);
}
// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// Objective C support is only available on mac.
@TestOn('mac-os')
library;

import 'dart:ffi';

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

import 'util.dart';

void main() {
  group('converter', () {
    setUpAll(() {
      // TODO(https://github.com/dart-lang/native/issues/1068): Remove this.
      DynamicLibrary.open(testDylib);
    });

    test('basics', () {
      final obj = NSObject();
      expect(toObjCObject(obj), obj);

      // NSNull.null$() is a singleton.
      expect(toObjCObject(null), NSNull.null$());
      expect(toNullableDartObject(NSNull.null$()), null);

      expect(toObjCObject(123), isA<NSNumber>());
      expect((toObjCObject(123) as NSNumber).longLongValue, 123);
      expect(toDartObject(toObjCObject(123)), isA<int>());
      expect(toDartObject(toObjCObject(123)), 123);

      expect(toObjCObject(1.23), isA<NSNumber>());
      expect((toObjCObject(1.23) as NSNumber).doubleValue, 1.23);
      expect(toDartObject(toObjCObject(1.23)), isA<double>());
      expect(toDartObject(toObjCObject(1.23)), 1.23);

      expect(toObjCObject('hello'), isA<NSString>());
      expect((toObjCObject('hello') as NSString).toDartString(), 'hello');

      expect(toObjCObject(DateTime(2025)), isA<NSDate>());
      expect(
        (toObjCObject(DateTime(2025)) as NSDate).toDateTime(),
        DateTime(2025),
      );
    });

    test('list', () {
      final obj = NSObject();
      final dartList = [123, 'abc', obj];

      expect(toObjCObject(dartList), isA<NSArray>());
      final objCList = toObjCObject(dartList) as NSArray;
      expect(objCList.length, 3);

      expect(toDartObject(objCList[0]), 123);
      expect(toDartObject(objCList[1]), 'abc');
      expect(


andi $22, $22, 1
  srl $23, $1, 28
  andi $23, $23, 1
#endif
.endm

.macro extract_flags
  lw $1, REG_CPSR($16)            # load CPSR
#ifndef MIPS_XBURST
  nop
#endif
  extract_flags_body
.endm

.macro save_registers
  sw $3, REG_R0($16)
  sw $7, REG_R1($16)
  sw $8, REG_R2($16)
  sw $9, REG_R3($16)
  sw $10, REG_R4($16)
  sw $11, REG_R5($16)
  sw $12, REG_R6($16)
  sw $13, REG_R7($16)
  sw $14, REG_R8($16)
  sw $15, REG_R9($16)
  sw $24, REG_R11($16)
  sw $25, REG_R12($16)
  sw $18, REG_R10($16)
  sw $28, REG_R13($16)
  sw $30, REG_R14($16)
.endm

.macro restore_registers
  lw $3, REG_R0($16)
  lw $7, REG_R1($16)
  lw $8, REG_R2($16)
  lw $9, REG_R3($16)
  lw $10, REG_R4($16)
  lw $11, REG_R5($16)
  lw $12, REG_R6($16)
  lw $13, REG_R7($16)
  lw $14, REG_R8($16)
  lw $15, REG_R9($16)
  lw $24, REG_R11($16)
  lw $25, REG_R12($16)
  lw $18, REG_R10($16)
  lw $28, REG_R13($16)
  lw $30, REG_R14($16)
#ifndef MIPS_XBURST
  nop                             # load delay slot for $30
#endif
.endm

# Process a hardware event. Since an interrupt might be
# raised we have to check if the PC has changed.

# $4: next address
# $16: register base
# $17: cycle counter

.balign 32

mips_update_gba:
  sw $4, REG_PC($16)              # current PC = $4

  addiu $sp, $sp, -4              # make room on the stack
  sw $ra,($sp)                    # save return address
  collapse_flags                  # update cpsr
  save_registers                  # save registers
  jal update_gba                  # process the next event
  sw $0, CHANGED_PC_STATUS($16)

  lw $1, CHANGED_PC_STATUS($16)   # load the new value 3 instructions early
  lw $ra, ($sp)                   # restore return address
  addiu $sp, $sp, 4               # fix stack

  bne $1, $0, lookup_pc
  addu $17, $2, $0                # $17 = new cycle count (delay slot)

  restore_registers

  jr $ra                          # if not, go back to caller
  nop                             # delay so the caller can use $30

# Perform an indirect branch.

# $4: GBA address to branch to

mips_indirect_branch_arm:
  save_registers
  jal block_lookup_address_arm    # $2 = MIPS address to jump to
  nop

  restore_registers

  jr $2                           # jump to it
  nop                             # delay so the target can use $30

mips_indirect_branch_thumb:
  save_registers
  jal block_lookup_address_thumb  # $2 = MIPS address to jump to
  nop

  restore_registers

  jr $2                           # jump to it
  nop                             # delay so the target can use $30

mips_indirect_branch_dual:
  save_registers


# Copyright (C) 2006-2012 Aaron Bentley
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#

"""Tests of the 'brz import' command."""

import os

from ... import tests
from .. import features

LzmaFeature = features.ModuleAvailableFeature("lzma")

class TestImport(tests.TestCaseWithTransport):
    def test_import_upstream(self):
        self.run_bzr("init source")
        os.mkdir("source/src")
        with open("source/src/myfile", "wb") as f:
            f.write(b"hello?")
        os.chdir("source")
        self.run_bzr("add")
        self.run_bzr("commit -m hello")
        self.run_bzr("export ../source-0.1.tar.gz")
        self.run_bzr("export ../source-0.1.tar.bz2")
        self.run_bzr("export ../source-0.1")
        self.run_bzr("init ../import")
        os.chdir("../import")
        self.run_bzr("import ../source-0.1.tar.gz")
        self.assertPathExists("src/myfile")
        result = self.run_bzr("import ../source-0.1.tar.gz", retcode=3)[1]
        self.assertContainsRe(result, "Working tree has uncommitted changes")
        self.run_bzr("commit -m commit")
        self.run_bzr("import ../source-0.1.tar.gz")
        os.chdir("..")
        self.run_bzr("init import2")
        self.run_bzr("import source-0.1.tar.gz import2")
        self.assertPathExists("import2/src/myfile")
        self.run_bzr("import source-0.1.tar.gz import3")
        self.assertPathExists("import3/src/myfile")
        self.run_bzr("import source-0.1.tar.bz2 import4")
        self.assertPathExists("import4/src/myfile")
        self.run_bzr("import source-0.1 import5")
        self.assertPathExists("import5/src/myfile")

    def test_import_upstream_lzma(self):
        self.requireFeature(LzmaFeature)
        self.run_bzr("init source")
        os.mkdir("source/src")
        with open("source/src/myfile", "wb") as f:
            f.write(b"hello?")
        os.chdir("source")
        self.run_bzr("add")
        self.run_bzr("commit -m hello")
        self.run_bzr("export ../source-0.1.tar.lzma")
        self.run_bzr("export ../source-0.1.tar.xz")
        os.chdir("..")
        self.run_bzr("import source-0.1.tar.lzma import1")
        self.assertPathExists("import1/src/myfile")
        self.run_bzr("import source-0.1.tar.xz import2")
        self.assertPathExists("import2/src/myfile")


ss.VServerGroup) map[string]string {
	vserverGroupMap := make(map[string]string)
	if vServerGroups != nil && len(vServerGroups) > 0 {
		for _, v := range vServerGroups {
			vserverGroupAttributes := v.VServerGroupAttributes.VServerGroupAttribute
			for _, a := range vserverGroupAttributes {
				key := fmt.Sprintf("%s_%s_%d_%d", v.LoadBalancerId, a.VServerGroupId, a.Port, a.Weight)
				vserverGroupMap[key] = key
			}
		}
	}
	return vserverGroupMap
}

func vserverGroupMapFromConfig(vserverGroups *schema.Set) map[string]string {
	vserverGroupMap := make(map[string]string)
	vserverGroupList := vserverGroups.List()
	if len(vserverGroupList) > 0 {
		for _, v := range vserverGroupList {
			vserverGroup := v.(map[string]interface{})
			loadBalancerId := vserverGroup["loadbalancer_id"].(string)
			attrs := vserverGroup["vserver_attributes"].(*schema.Set).List()
			for _, e := range attrs {
				vserverAttribute := e.(map[string]interface{})
				vserverGroupId := vserverAttribute["vserver_group_id"].(string)
				port := vserverAttribute["port"].(int)
				weight := vserverAttribute["weight"].(int)
				key := fmt.Sprintf("%s_%s_%d_%d", loadBalancerId, vserverGroupId, port, weight)
				vserverGroupMap[key] = key
			}
		}
	}
	return vserverGroupMap
}

func attachOrDetachVserverGroupMap(newMap map[string]string, oldMap map[string]string) (map[string]string, map[string]string) {
	attachMap := make(map[string]string)
	detachMap := make(map[string]string)
	for k, v := range newMap {
		if _, ok := oldMap[k]; !ok {
			attachMap[k] = v
		}
	}
	for k, v := range oldMap {
		if _, ok := newMap[k]; !ok {
			detachMap[k] = v
		}
	}
	return attachMap, detachMap
}

func buildEssVserverGroupListMap(vserverGroupMap map[string]string) map[string][]string {
	vserverGroupRequestMap := make(map[string][]string, 0)
	for _, v := range vserverGroupMap {
		attrs := strings.Split(v, "_")
		loadbalancerId := attrs[0]
		if _, ok := vserverGroupRequestMap[loadbalancerId]; !ok {
			vserverGroupAttributes := make([]string, 0)
			vserverGroupAttributes = append(vserverGroupAttributes, v)
			vserverGroupRequestMap[loadbalancerId] = vserverGroupAttributes
		} else {
			vserverGroupAttributes := vserverGroupRequestMap[loadbalancerId]
			vserverGroupAttributes = append(vserverGroupAttributes, v)
			vserverGroupRequestMap[loadbalancerId] = vserverGroupAttributes
		}
	}
	return vserverGroupRequestMap
}

func attachVserverGroups(d *schema.ResourceData, client *connectivity.AliyunClient, attachMap map[string]string, force bool) error {
	if len(attachMap) > 0 {
		vserverGroupListMap := buildEssVserverGroupListMap(attachMap)
		request := map[string]interface{}{}
		var response map[string]interface{}
		attachScalingGroupVserverGroups := make([]map[string]interface{}, 0)
		for k, v := range vserverGroupListMap {
			vserverAttributes := make([]map[string]interface{}, 0)
			for _, e := range v {
				attrs := strings.Split(e, "_")
				vserverAttribute := map[string]interface{}{
					"VServer


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

using System;
using Unity.Mathematics;
using UnityEngine;

namespace GLTFast.Schema {

    /// <summary>
    /// A set of parameter values that are used to define the metallic-roughness
    /// material model from Physically-Based Rendering (PBR) methodology.
    /// </summary>
    [System.Serializable]
    public class PbrMetallicRoughness {

        /// <summary>
        /// The RGBA components of the base color of the material.
        /// The fourth component (A) is the opacity of the material.
        /// These values are linear.
        /// </summary>
        public float[] baseColorFactor = {1,1,1,1};

        /// <summary>
        /// Base color of the material in linear color space.
        /// </summary>
        public Color baseColor {
            get =>
                new Color(
                    baseColorFactor[0],
                    baseColorFactor[1],
                    baseColorFactor[2],
                    baseColorFactor[3]
                );
            set {
                baseColorFactor = new[] { value.r, value.g, value.b, value.a };
            }
        }

        /// <summary>
        /// The base color texture.
        /// This texture contains RGB(A) components in sRGB color space.
        /// The first three components (RGB) specify the base color of the material.
        /// If the fourth component (A) is present, it represents the opacity of the
        /// material. Otherwise, an opacity of 1.0 is assumed.
        /// </summary>
        public TextureInfo baseColorTexture = null;

        /// <summary>
        /// The metalness of the material.
        /// A value of 1.0 means the material is a metal.


ediaEvent<M>,
  onLoadedData?: TMediaEvent<M>,
  onLoadedMetadata?: TMediaEvent<M>,
  onLoadStart?: TMediaEvent<M>,
  onPause?: TMediaEvent<M>,
  onPlay?: TMediaEvent<M>,
  onPlaying?: TMediaEvent<M>,
  onProgress?: TMediaEvent<M>,
  onRateChange?: TMediaEvent<M>,
  onSeeked?: TMediaEvent<M>,
  onSeeking?: TMediaEvent<M>,
  onStalled?: TMediaEvent<M>,
  onSuspend?: TMediaEvent<M>,
  onTimeUpdate?: TMediaEvent<M>,
  onVolumeChange?: TMediaEvent<M>,
  onWaiting?: TMediaEvent<M>
}

export interface IMediaState {
  buffered?: any[];
  duration?: number;
  isPlaying?: boolean;
  muted?: boolean;
  time?: number;
  volume?: number;
  canPlay?: boolean;
}

const defaultState = {
  buffered: [],
  time: 0,
  duration: 0,
  isPlaying: false,
  muted: false,
  volume: 1,
  canPlay: false,
};

export class Media<P extends IMediaProps<M>, S extends IMediaState, M extends IMedia> extends React.Component<P, S> implements IMedia {
  tag: 'video' | 'audio' = 'video';
  props: P;
  el: HTMLMediaElement = null;

  state: S = defaultState as S;

  ref = (el) => {
    this.el = el;
  };

  componentDidMount () {
    this.setState({
      volume: this.el.volume,
      muted: this.el.muted,
    });

    this.event('onMount')(this);

    // We run this code after `onMount` event to allow user
    // to set `playsinline` attribute, if needed.
    if (this.props.autoPlay && this.el.paused) {
      this.play();
    }
  }

  componentWillUnmount () {
    this.el = null;

    this.event('onUnmount')(this);
  }

  componentDidUpdate (prevProps) {
    if (prevProps.src !== this.props.src) {
      this.setState(defaultState);
    }
  }

  // Some browsers return `Promise` on `.play()` and may throw errors
  // if one tries to execute another `.play()` or `.pause()` while that
  // promise is resolving. So we prevent that with this lock.
  // See: https://bugs.chromium.org/p/chromium/issues/detail?id=593273
  lockPlay: boolean = false;

  play = () => {
    if (this.el && !this.lockPlay) {
      const promise = this.el.play();
      const isPromise = typeof promise === 'object';

      if (isPromise) {
        this.lockPlay = true;

        const resetLock = () => {
          this.lockPlay = false;
        };

        promise.then(resetLock, resetLock);
      }
    }
  };

  pause = () => {
    if (this.el && !this.lockPlay) {
      this.el.pause();
    }
  };

  seek = (time: number) => {
    if (this.el) {
      time = Math.min(this.state.duration, Math.max(0, time));
      this.el.currentTime = time;
    }
  };

  volume = (volume) => {
    if (this.el) {
      volume = Math.min(1, Math.max(0, volume));

      this.el.volume = volume;
      this.setState({
        volume
      });
    }
  };

  mute = () => {
    if (this.el) {
      this.el.muted = true;
    }
  };

  unmute = () => {
    if (this.el) {
      this.el.muted = false;
    }


 approval event with the new allowance.
	if !isTransferFrom {
		return method.Outputs.Pack(true)
	}

	var newAllowance *big.Int
	if ownerIsSpender {
		// NOTE: in case the spender is the owner we emit an approval event with
		// the maxUint256 value.
		newAllowance = abi.MaxUint256
	} else {
		newAllowance = new(big.Int).Sub(prevAllowance, amount)
	}

	if err = p.EmitApprovalEvent(ctx, stateDB, from, spenderAddr, newAllowance); err != nil {
		return nil, err
	}

	return method.Outputs.Pack(true)
}
package bank_test

import (
	"math/big"
	"testing"

	//nolint:revive // dot imports are fine for Ginkgo
	. "github.com/onsi/ginkgo/v2"
	//nolint:revive // dot imports are fine for Ginkgo
	. "github.com/onsi/gomega"

	sdk "github.com/cosmos/cosmos-sdk/types"
	"github.com/ethereum/go-ethereum/common"

	"github.com/haqq-network/haqq/precompiles/bank"
	"github.com/haqq-network/haqq/precompiles/bank/testdata"
	"github.com/haqq-network/haqq/precompiles/testutil"
	"github.com/haqq-network/haqq/testutil/integration/haqq/factory"
	"github.com/haqq-network/haqq/testutil/integration/haqq/grpc"
	"github.com/haqq-network/haqq/testutil/integration/haqq/keyring"
	"github.com/haqq-network/haqq/testutil/integration/haqq/network"
	integrationutils "github.com/haqq-network/haqq/testutil/integration/haqq/utils"
	testutiltx "github.com/haqq-network/haqq/testutil/tx"
	"github.com/haqq-network/haqq/utils"
	coinomicstypes "github.com/haqq-network/haqq/x/coinomics/types"
	evmtypes "github.com/haqq-network/haqq/x/evm/types"
)

var is *IntegrationTestSuite

// IntegrationTestSuite is the implementation of the TestSuite interface for Bank precompile
// unit testis.
type IntegrationTestSuite struct {
	bondDenom, tokenDenom string
	evmosAddr, xmplAddr   common.Address

	// tokenDenom is the specific token denomination used in testing the Bank precompile.
	// This denomination is used to instantiate the precompile.
	network     *network.UnitTestNetwork
	factory     factory.TxFactory
	grpcHandler grpc.Handler
	keyring     keyring.Keyring

	precompile *bank.Precompile
}

func (is *IntegrationTestSuite) SetupTest() {
	keyring := keyring.New(2)
	genesis := integrationutils.CreateGenesisWithTokenPairs(keyring)
	integrationNetwork := network.NewUnitTestNetwork(
		network.WithPreFundedAccounts(keyring.GetAllAccAddrs()...),
		network.WithCustomGenesis(genesis),
	)
	grpcHandler := grpc.NewIntegrationHandler(integrationNetwork)
	txFactory := factory.New(integrationNetwork, grpcHandler)

	ctx := integrationNetwork.GetContext()
	sk := integrationNetwork.App.StakingKeeper
	bondDenom := sk.BondDenom(ctx)
	Expect(bondDenom).ToNot(BeEmpty(), "bond denom cannot be empty")

	is.bondDenom = bondDenom
	is.tokenDenom = "xmpl"
	is.factory = txFactory
	is.grpcHandler = grpcHandler
	is.keyring = keyring
	is.network = integrationNetwork

	tokenPairID := is.network.App.Erc20Keeper.GetTokenPairID(is.network.GetContext(), is.bondDenom)
	tokenPair, found := is.network.App.Erc20Keeper.GetTokenPair(is.network


estSubstring().solutionV2("bbbbb"))
            println(LengthOfLongestSubstring().solutionV2("pwwkew"))
        }
    }

    fun solution(s: String): Int {
        var max = 0
        val deque = ArrayDeque<Char>()
        s.forEach {
            while (deque.contains(it)) {
                deque.removeFirst()
            }
            deque.add(it)
            max = deque.size.coerceAtLeast(max)
        }

        return max
    }

    /**
     * O(n)
     * 滑动窗口
     */
    fun solutionV2(s: String): Int {
        var max = 0
        var left = 0
        var right = 0
        val map = hashMapOf<Char, Int>()
        while (right < s.length) {
            if (map.contains(s[right]) && map[s[right]] ?: 0 >= left) {
                left = (map[s[right]] ?: 0) + 1
            }
            map[s[right]] = right
            max = max.coerceAtLeast(++right - left)
        }
        return max
    }
}package com.daily.algothrim.leetcode

/**
 * 查找常用字符(leetcode 1002)
 *
 * 给定仅有小写字母组成的字符串数组 A，返回列表中的每个字符串中都显示的全部字符（包括重复字符）组成的列表。例如，如果一个字符在每个字符串中出现 3 次，但不是 4 次，则需要在最终答案中包含该字符 3 次。
 * 你可以按任意顺序返回答案。
 *
 * 示例 1：
 *
 * 输入：["bella","label","roller"]
 * 输出：["e","l","l"]
 * 示例 2：
 *
 * 输入：["cool","lock","cook"]
 * 输出：["c","o"]
 *
 * 提示：
 *
 * 1 <= A.length <= 100
 * 1 <= A[i].length <= 100
 * A[i][j] 是小写字母
 */
class CommonChars {

    companion object {
        @JvmStatic
        fun main(args: Array<String>) {
            CommonChars().solution(arrayOf("bella", "label", "roller")).forEach {
                println(it)
            }
            println()
            CommonChars().solution(arrayOf("cool", "lock", "cook")).forEach {
                println(it)
            }
            println()
            CommonChars().solutionV2(arrayOf("bella", "label", "roller")).forEach {
                println(it)
            }
            println()
            CommonChars().solutionV2(arrayOf("cool", "lock", "cook")).forEach {
                println(it)
            }
            println()
            CommonChars().solutionV2(arrayOf("acabcddd", "bcbdbcbd", "baddbadb", "cbdddcac", "aacbcccd", "ccccddda", "cababaab", "addcaccd")).forEach {
                println(it)
            }
        }
    }

    fun solution(A: Array<String>): List<String> {
        var result = mutableListOf<String>()
        var temp = mutableListOf<String>()
        if (A.isEmpty()) return emptyList()

        A[0].forEachIndexed { index, c ->
            result.add(index, c.toString())
        }

        var i = 1
        while (i < A.size) {
            A[i].forEach {
                if (result.contains(it.toString())) {
                    temp.add(it.toString())


#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Bizmeka 스텔스 로그인 - 자동화 감지 완벽 우회
수작업과 동일하게 동작
"""

import asyncio
from playwright.async_api import async_playwright
from datetime import datetime
import os
import random

class BizmekaStealthLogin:
    def __init__(self):
        self.logs_dir = "logs/stealth"
        os.makedirs(self.logs_dir, exist_ok=True)

    async def create_stealth_browser(self):
        """완벽한 스텔스 브라우저 생성"""
        playwright = await async_playwright().start()

        # 실제 Chrome 경로 사용 (있다면)
        chrome_path = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
        if os.path.exists(chrome_path):
            browser = await playwright.chromium.launch(
                executable_path=chrome_path,
                headless=False,
                slow_mo=100,
                args=[
                    '--disable-blink-features=AutomationControlled',
                    '--disable-automation',
                    '--disable-dev-shm-usage',
                    '--no-sandbox',
                    '--disable-web-security',
                    '--disable-features=IsolateOrigins,site-per-process',
                    '--start-maximized',
                    '--disable-infobars',
                    '--disable-extensions',
                    '--disable-gpu',
                    '--disable-default-apps',
                    '--disable-sync',
                    '--disable-translate',
                    '--hide-scrollbars',
                    '--metrics-recording-only',
                    '--mute-audio',
                    '--no-first-run',
                    '--safebrowsing-disable-auto-update',
                    '--password-store=basic',
                    '--use-mock-keychain'
                ]
            )
        else:
            browser = await playwright.chromium.launch(
                headless=False,
                slow_mo=100,
                args=['--disable-blink-features=AutomationControlled']
            )

        # 실제 브라우저처럼 컨텍스트 생성
        context = await browser.new_context(
            viewport={'width': 1920, 'height': 1080},
            screen={'width': 1920, 'height': 1080},
            user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
            locale='ko-KR',
            timezone_id='Asia/Seoul',
            permissions=['geolocation', 'notifications'],
            color_scheme='light',
            reduced_motion='no-preference',
            forced_colors='none',
            accept_downloads=True,
            has_touch=False,
            is_mobile=False,
            device_scale_factor=1,
            offline=False,
            http_credentials=None,
            ignore_https_errors=False,
            java_script_enabled=True,
            bypass_csp=False,
            extra_http_headers={
                'Accept-Language': 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7',
                'Accept-Encoding': 'gzip, deflate, br',
                'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8',
                'Sec-Ch-Ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
                'Sec-Ch-Ua-Mobile': '?0',
                'Sec-Ch-Ua-Platform': '"Windows"',
                'Sec-Fetch-Site': 'none',
                'Sec-Fetch-Mode': 'navigate',
                'Sec-Fetch-User': '?1',
                'Sec-Fetch-Dest': 'document',
                'Upgrade-Insecure-Requests': '1'
            }
        )

        # 완벽한 자동화 우회 스크립트
        await context.add_init_script("""
            // navigator.webdriver 제거
            Object.defineProperty(navigator, 'webdriver', {
                get: () => undefined
            });

            // Chrome 객체 정의
            window.chrome = {
                runtime: {},
                loadTimes: function() {},
                csi: function() {},
                app: {}
            };

            // 플러그인 정의
            Object.defineProperty(navigator, 'plugins', {
                get: () => [
                    {
                        0: {type: "application/x-google-chrome-pdf", suffixes: "pdf"},
                        1: {type: "application/pdf", suffixes: "pdf"},
                        description: "Portable Document Format",
                        filename: "internal-pdf-viewer",
                        length: 2,


t.

        Example:
            >>> # ENABLE_DOCTEST
            >>> from ibeis.algo.verif.clf_helpers import *  # NOQA
            >>> pblm = IrisProblem()
            >>> pblm.setup()
            >>> pblm.samples

    """

    def setup(pblm):
        import sklearn.datasets
        iris = sklearn.datasets.load_iris()

        pblm.primary_task_key = 'iris'
        pblm.default_data_key = 'learn(all)'
        pblm.default_clf_key = 'RF'

        X_df = pd.DataFrame(iris.data, columns=iris.feature_names)
        samples = MultiTaskSamples(X_df.index)
        samples.apply_indicators(
            {'iris': {name: iris.target == idx
                      for idx, name in enumerate(iris.target_names)}})
        samples.X_dict = {'learn(all)': X_df}

        pblm.samples = samples
        pblm.xval_kw['type'] = 'StratifiedKFold'

if __name__ == '__main__':
    r"""
    CommandLine:
        python -m ibeis.algo.verif.samples
        python -m ibeis.algo.verif.samples --allexamples
    """
    import multiprocessing
    multiprocessing.freeze_support()  # for win32
    import utool as ut  # NOQA
    ut.doctest_funcs()


整合式版面配置中 (標題與圖片會重疊)，使用縱向方向圖片會使得大量圖片被標題遮擋。 在三面板和整合式版面配置中，如果可能的話，建議您對所有圖片使用相同的大小和形狀。 利用這種方式，使用者在導覽時就不會因不同大小的圖片而分散注意力。",
        "div2a": "建議主要圖片的最大圖像大小為 1000 像素 (寬) x 750 像素 (高)，縮圖的最大圖像大小為 140 像素 (寬) x 93 像素 (高)。",
        "div3": "使用 HTML 標記將說明文字格式化",
        "div4": "您可以在標題中輸入 HTML 標記以定義格式和連結。例如，這些標記會新增綠色超連結:",
        "div4aa": "建立側面板導覽的封面頁
「側面板」版面配置支援選用的封面頁，讓您能使用美觀的全螢幕圖片來吸引觀眾的目光。 若要配置側面板導覽的封面頁，請先將部分或所有點新增至導覽。 接著按一下「組織」按鈕，然後在出現的對話方塊中，確定要用來定義封面頁的導覽點是導覽中的第一個點。 接著按一下該對話方塊中的「將第一個點作為封面頁」方塊。 第一個導覽點的名稱將成為封面頁上顯示的標題、該點的標題將成為子標題，並將該點的圖片作為封面頁圖片。 封面頁不支援影片。 有關詳細資訊，請參閱此常見問題集。",
        "div4a": "為導覽寫出適當的子標題",
        "div4b": "請利用時間為導覽編寫吸引人的子標題。 子標題是吸引人們關注您的導覽並簡要介紹內容的良好途徑。 它也是告知觀眾該導覽所在的州或國家的好地方。 例如，不要假設大家都知道導覽中城市或城鎮的位置。 但不要製作太長的子標題。 如果想不到適當的子標題，請將其留空。 與三面板和整合式版面配置不同的是，側面板版面配置不支援其標頭中的子標題。 若在「側面板」版面配置中使用封面頁選項，封面頁將顯示導覽中第一點的標題，並作為導覽的子標題。",
        "div


TypeBox->AddString(DEFAULT_EXPORT_NAMES[i]);

	// // //

	// Set default selection
	pTypeBox->SetCurSel(m_iExportOption);

#ifdef _DEBUG
	GetDlgItem(IDC_PLAY)->ShowWindow(SW_SHOW);
#endif

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

void CExportDialog::OnBnClickedExport()
{
	CComboBox *pTypeCombo = static_cast<CComboBox*>(GetDlgItem(IDC_TYPE));
	CString ItemText;

	m_iExportOption = pTypeCombo->GetCurSel();
	pTypeCombo->GetLBText(m_iExportOption, ItemText);

	// Check built in exporters
	for (int i = 0; i < DEFAULT_EXPORTERS; ++i) {
		if (!ItemText.Compare(DEFAULT_EXPORT_NAMES[i])) {
			(this->*DEFAULT_EXPORT_FUNCS[i])();
			return;
		}
	}

	// // //
}

void CExportDialog::CreateNSF()
{
	CFamiTrackerDoc *pDoc = CFamiTrackerDoc::GetDoc();
	CString	DefFileName = pDoc->GetFileTitle();
	CCompiler Compiler(pDoc, new CEditLog(GetDlgItem(IDC_OUTPUT)));
	CString Name, Artist, Copyright;
	CString filter = LoadDefaultFilter(NSF_FILTER[0], NSF_FILTER[1]);
	int MachineType = 0;

	// Collect header info
	GetDlgItemText(IDC_NAME, Name);
	GetDlgItemText(IDC_ARTIST, Artist);
	GetDlgItemText(IDC_COPYRIGHT, Copyright);

	if (IsDlgButtonChecked(IDC_NTSC) != 0)
		MachineType = 0;
	else if (IsDlgButtonChecked(IDC_PAL) != 0)
		MachineType = 1;
	else if (IsDlgButtonChecked(IDC_DUAL) != 0)
		MachineType = 2;

	USES_CONVERSION;

	pDoc->SetSongName(T2A(Name.GetBuffer()));
	pDoc->SetSongArtist(T2A(Artist.GetBuffer()));
	pDoc->SetSongCopyright(T2A(Copyright.GetBuffer()));

	CFileDialog FileDialog(FALSE, NSF_FILTER[1], DefFileName, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, filter);

	FileDialog.m_pOFN->lpstrInitialDir = theApp.GetSettings()->GetPath(PATH_NSF);

	if (FileDialog.DoModal() == IDCANCEL)
		return;

	// Display wait cursor
	CWaitCursor wait;

	Compiler.ExportNSF(FileDialog.GetPathName(), MachineType);

	theApp.GetSettings()->SetPath(FileDialog.GetPathName(), PATH_NSF);
}

void CExportDialog::CreateNES()
{
	CFamiTrackerDoc *pDoc = CFamiTrackerDoc::GetDoc();
	CString	DefFileName = pDoc->GetFileTitle();
	CCompiler Compiler(pDoc, new CEditLog(GetDlgItem(IDC_OUTPUT)));
	CString filter = LoadDefaultFilter(NES_FILTER[0], NES_FILTER[1]);

	CFileDialog FileDialog(FALSE, NES_FILTER[1], DefFileName, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, filter);

	FileDialog.m_pOFN->lpstrInitialDir = theApp.GetSettings()->GetPath(PATH_NSF);

	if (FileDialog.DoModal() == IDCANCEL)
		return;

	// Display wait cursor
	CWaitCursor wait;

	Compiler.ExportNES(FileDialog.GetPathName(), (IsDlgButtonChecked(IDC_PAL) != 0));

	theApp.GetSettings()->SetPath(FileDialog.GetPathName(), PATH_NSF);
}

void CExportDialog::CreateBIN()
{
	CFamiTrackerDoc *pDoc = CFamiTrackerDoc::GetDoc();
	CCompiler Compiler(pDoc, new CEditLog(GetDlgItem


 putréfiée"
end

-- Dawn of the Infinite

L = BigWigs:NewBossLocale("Dawn of the Infinite Trash", "frFR")
if L then
	------ Galakrond's Fall ------
	L.infinite_chronoweaver = "Chrono-tisseuse de l'Infini"
	L.infinite_timeslicer = "Tranchetemps de l'Infini"
	L.epoch_ripper = "Eventreur d'époques"
	L.coalesced_time = "Temps amalgamé"
	L.interval = "Intervalle"
	L.timestream_leech = "Sangsue du flux temporel"
	L.timestream_anomaly = "Anomalie du flux temporel"
	L.infinite_infiltrator = "Infiltrateur de l'Infini"
	L.risen_dragon = "Dragon ressuscité"
	L.iridikrons_creation = "Création d'Iridikron"

	--L.iridikron_warmup_trigger = "So the titans' puppets have come to face me."

	------ Murozond's Rise ------
	L.infinite_twilight_magus = "Maga du crépuscule de l'Infini"
	L.valow = "Valow, gardien lige-du-temps"
	L.spurlok = "Spurlok, sentinelle lige-du-temps"
	L.lerai = "Lerai, vierge lige-du-temps"
	L.timeline_marauder = "Maraudeuse des lignes temporelles"
	L.infinite_saboteur = "Saboteur infini"
	L.infinite_riftmage = "Mage de faille infini"
	L.timelost_waveshaper = "Sculpte-vagues perdu dans le temps"
	L.timelost_aerobot = "Aérobot perdu dans le temps"
	L.chronaxie = "Chronaxie"
	L.horde_destroyer = "Destructeur de la Horde"
	L.alliance_destroyer = "Destructeur de l'Alliance"
	L.horde_farseer = "Long-voyant de la Horde"
	L.paladin_of_the_silver_hand = "Paladin de la Main d'argent."
	L.horde_raider_alliance_knight = "Chevaucheur de la Horde / Chevalier de l'Alliance"
	L.infinite_timebender = "Courbe-temps de l'Infini"

	L.custom_on_rift_autotalk_desc = "Canalise automatiquement pour ouvrir la faille temporelle."
	L.rift_opened = "Faille temporelle ouverte"
	L.rift_stability = "Stabilité de la faille"
	L.rift_stability_desc = "Affiche une alerte lorsque la faille temporelle a été ouverte."

	--L.manifested_timeways_warmup_trigger = "Even the Aspect of Time cannot be allowed to disrupt the timeways!"
end

-- Halls of Infusion

L = BigWigs:NewBossLocale("Halls of Infusion Trash", "frFR")
if L then
	L.custom_on_autotalk_desc = "Choisit automatiquement les options de dialogue pour avoir les améliorations de métiers."

	L.primalist_ravager = "Ravageuse primaliste"
	L.primalist_geomancer = "Géomancien primaliste"
	L.containment_apparatus = "Appareil de confinement"
	L.refti_defender = "Défenseur refti"
	L.dazzling_dragonfly = "Libellule éblouissante


.1.14 文字行距
      3.1.15 文字颜色
      3.1.16 文字颜色强调
      3.1.17 缩略语
      3.1.18 地址
      3.1.19 引用
      3.1.20 上标 下标
      3.1.21 内容样式
      3.1.22 列表
      3.1.23 描述
	  3.1.24 隐藏 显示
	  3.1.25 尺寸
    3.2 代码
    3.3 表格
    3.4 表单
      3.4.1 input,textarea 文本域 文本区域
      3.4.2 radio,checkbox 单选 多选
      3.4.3 select 下拉框
      3.4.4 input-file 文件上传
      3.4.5 表单布局
	  3.4.6 表单验证
    3.5 按钮
    3.6 图片
    3.7 图标
	3.8 动画
  4. 组件
    4.1 按钮组
    4.2 导航
      4.2.1 导航条
      4.2.2 面包屑导航
      4.2.3 翻页导航
	  4.2.4 顶部导航
	  4.2.5 向导
	  4.2.6 竖向导向tab导航
	  4.2.7 横向tab
    4.3 菜单
	  4.3.1 下拉菜单
	  4.3.2 横向菜单（暂无）
	  4.3.3 树状菜单（暂无）
    4.4 幻灯片
    4.5 选项卡
    4.6 便签与标号
    4.7 缩略图
    4.8 警告
    4.9 进度条 loading
    4.10 对话框 弹出层
    4.11 客服
    4.12 返回顶部
    4.13 分享
    4.14 面板
    4.15 案例
    4.16 滚动
    4.17 搜索
    4.18 广告
    4.19 标签
	  4.19.1 标签输入效果
	  4.19.2 标签混排效果
	  4.19.3 tag云标签
    4.20 折叠
    4.21 遮罩条
    4.22 评论列表
  5. 页面
	5.1 404页面
	5.2 博客列表页（暂无）
	5.3 博客详情页（暂无）
	5.4 关于我们页（暂无）
	5.5 帮助列表页（暂无）
	5.6 帮助详情页（暂无）

----------------------------------
CSS写作注意事项：
  1. 页面编码规范
    1.1. 统一使用 UTF-8 编码,用@charset "utf-8"指定页面编码。
    1.2. 全局字体设置：
         windows 7系统：微软雅黑 Arial；
         windows XP及以下：新宋体，宋体，Arial
         MAC默认字体：Helvetica Neue和Helvetica Hiragino San


 value of FileReference field.
func (i *InputDocumentFileLocation) GetFileReference() (value []byte) {
	if i == nil {
		return
	}
	return i.FileReference
}

// GetThumbSize returns value of ThumbSize field.
func (i *InputDocumentFileLocation) GetThumbSize() (value string) {
	if i == nil {
		return
	}
	return i.ThumbSize
}

// InputSecureFileLocation represents TL type `inputSecureFileLocation#cbc7ee28`.
// Location of encrypted telegram passport¹ file.
//
// Links:
//  1. https://core.telegram.org/passport
//
// See https://core.telegram.org/constructor/inputSecureFileLocation for reference.
type InputSecureFileLocation struct {
	// File ID, id parameter value from secureFile¹
	//
	// Links:
	//  1) https://core.telegram.org/constructor/secureFile
	ID int64
	// Checksum, access_hash parameter value from secureFile¹
	//
	// Links:
	//  1) https://core.telegram.org/constructor/secureFile
	AccessHash int64
}

// InputSecureFileLocationTypeID is TL type id of InputSecureFileLocation.
const InputSecureFileLocationTypeID = 0xcbc7ee28

// construct implements constructor of InputFileLocationClass.
func (i InputSecureFileLocation) construct() InputFileLocationClass { return &i }

// Ensuring interfaces in compile-time for InputSecureFileLocation.
var (
	_ bin.Encoder     = &InputSecureFileLocation{}
	_ bin.Decoder     = &InputSecureFileLocation{}
	_ bin.BareEncoder = &InputSecureFileLocation{}
	_ bin.BareDecoder = &InputSecureFileLocation{}

	_ InputFileLocationClass = &InputSecureFileLocation{}
)

func (i *InputSecureFileLocation) Zero() bool {
	if i == nil {
		return true
	}
	if !(i.ID == 0) {
		return false
	}
	if !(i.AccessHash == 0) {
		return false
	}

	return true
}

// String implements fmt.Stringer.
func (i *InputSecureFileLocation) String() string {
	if i == nil {
		return "InputSecureFileLocation(nil)"
	}
	type Alias InputSecureFileLocation
	return fmt.Sprintf("InputSecureFileLocation%+v", Alias(*i))
}

// FillFrom fills InputSecureFileLocation from given interface.
func (i *InputSecureFileLocation) FillFrom(from interface {
	GetID() (value int64)
	GetAccessHash() (value int64)
}) {
	i.ID = from.GetID()
	i.AccessHash = from.GetAccessHash()
}

// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*InputSecureFileLocation) TypeID() uint32 {
	return InputSecureFileLocationTypeID
}

// TypeName returns name of type in TL schema.
func (*InputSecureFileLocation) TypeName() string {
	return "inputSecureFileLocation"
}

// TypeInfo returns info about TL type.
func (i *InputSecureFileLocation) TypeInfo() tdp.Type {
	typ := tdp.Type{
		Name: "inputSecureFileLocation",
		ID:   InputSecureFileLocationTypeID,
	}
	if i == nil {
		typ.Null = true
		return typ
	}
	typ.Fields = []tdp.Field{
		{
			Name:       "ID",
			SchemaName: "id",
		},
		{
			Name:       "AccessHash",
			SchemaName: "access_hash",
		},
	}
	return typ
}

// Encode implements bin.Encoder.
func (i *InputSecure


        else if (aWhere == "current" && !TMP_Places.isBookmarklet(aNode.uri)) {
          if (!browserWindow.Tabmix.callerTrace("PC_doCommand")) {
            aWhere = TMP_Places.fixWhereToOpen(null, aWhere);
          }
        }
      }
      if (browserWindow && aWhere == "current")
        browserWindow.gBrowser.selectedBrowser.tabmix_allowLoad = true;
      $&`
      )
      .toCode();
  },

  // Lazy getter for titlefrombookmark preference
  get titlefrombookmark() {
    const PREF = "extensions.tabmix.titlefrombookmark";
    let updateValue = () => {
      let value = Services.prefs.getBoolPref(PREF);
      let definition = {value, configurable: true};
      Object.defineProperty(this, "titlefrombookmark", definition);
      return value;
    };

    Services.prefs.addObserver(PREF, updateValue);
    this._removeObserver = () => {
      Services.prefs.removeObserver(PREF, updateValue);
    };
    return updateValue();
  },

  /* :::::::::::::::   AsyncPlacesUtils   ::::::::::::::: */

  fetch(guidOrInfo, onResult = null, options = {}) {
    return lazy.PlacesUtils.bookmarks.fetch(guidOrInfo, onResult, options);
  },

  async getBookmarkTitle(url) {
    try {
      const {guid, title} = await this.fetch({url});
      if (guid) {
        return title;
      }
    } catch (ex) {
      TabmixSvc.console.reportError(ex, "Error function name changed", "not a function");
    }
    return null;
  },

  async applyCallBackOnUrl(aUrl, aCallBack) {
    let hasHref = aUrl.indexOf("#") > -1;
    let result =
      (await aCallBack.apply(this, [aUrl])) || hasHref ?
        await aCallBack.apply(this, [aUrl.split("#")[0] ?? aUrl])
      : null;
    // when IE Tab is installed try to find url with or without the prefix
    const ietab = Tabmix.gIeTab;
    if (!result && ietab) {
      let prefix = "chrome://" + ietab.folder + "/content/reloaded.html?url=";
      if (aUrl != prefix) {
        let url = aUrl.startsWith(prefix) ? aUrl.replace(prefix, "") : prefix + aUrl;
        result =
          (await aCallBack.apply(this, [url])) || hasHref ?
            await aCallBack.apply(this, [url.split("#")[0] ?? url])
          : null;
      }
    }
    return result;
  },

  async asyncGetTitleFromBookmark(url, title, titlefrombookmark) {
    if ((!this.titlefrombookmark && !titlefrombookmark) || !url) {
      return title;
    }

    try {
      const getTitle = (/** @type {string} */ _url) => this.getBookmarkTitle(_url);
      const titleFromBookmark = await this.applyCallBackOnUrl(url, getTitle);
      return titleFromBookmark || title;
    } catch (err) {
      TabmixSvc.console.reportError(err, "Error form asyncGetTitleFromBookmark");
      return "";
    }
  },
};
import {isVersion} from "chrome://tabmix-resource/content/BrowserVersion.sys.mjs";
import {PrivateBrowsingUtils} from "resource://gre/modules/PrivateBrowsingUtils.sys.mjs";

/** @type {TabmixModules.SingleWindowModeUtils} */
export const SingleWindowModeUtils = {
  //
  /**
   * Locate a browser window.
   *
   * @param aExclude A scripted window object that we do not want to use.
   * @returns A scripted window object representing a browser window that is not
   *   the same as aExclude, and is additionally not a popup window.
   */
  getBrowserWindow(aExclude) {


13>::value + is_map_arg<T14>::value
        + is_map_arg<T15>::value + is_map_arg<T16>::value
        + is_map_arg<T17>::value + is_map_arg<T18>::value
        + is_map_arg<T19>::value + is_map_arg<T20>::value
        );

};

template<
      typename T0, typename T1, typename T2, typename T3, typename T4
    , typename T5, typename T6, typename T7, typename T8, typename T9
    , typename T10, typename T11, typename T12, typename T13, typename T14
    , typename T15, typename T16, typename T17, typename T18, typename T19
    >
struct map_impl
{
    typedef aux::map_count_args<
          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
        > arg_num_;

    typedef typename aux::map_chooser< arg_num_::value >
        ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
};

} // namespace aux

template<
      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
    , typename T12 = na, typename T13 = na, typename T14 = na
    , typename T15 = na, typename T16 = na, typename T17 = na
    , typename T18 = na, typename T19 = na
    >
struct map
    : aux::map_impl<
          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
        >::type
{
    typedef typename aux::map_impl<
          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
        >::type type;
};

}}

//
// Copyright (c) 2021 - 2025 Advanced Micro Devices, Inc. All rights reserved.
//
//-------------------------------------------------------------------------------------------------

/// \file mainDisplayGamma.cpp
/// \brief Demonstrates how to obtain the display Gamma when programming with ADLX and perform related tests.

#include "SDK/ADLXHelper/Windows/Cpp/ADLXHelper.h"
#include "SDK/Include/IDisplayGamma.h"
#include "SDK/Include/IDisplays.h"
#include <iostream>
#include <string>
#include <vector>

// Use adlx namespace
using namespace adlx;

// ADLXHelper instance
// No outstanding interfaces from ADLX must exist when ADLX destory.
// Use global variables to ensure validity of the interface.
static ADLXHelper g_ADLXHelp;

// Print Gamma ramp
static void ShowGammaRamp(const ADLX_GammaRamp& gammaRamp);

// Display Gamma support
void ShowDisplayGammaSupport(const IADLXDisplayServicesPtr& displayService, const IADLXDisplayPtr& display);

// Get current Gamma state
void GetCurrentGammaState(const IADLXDisplayServicesPtr& displayService, const IADLXDisplayPtr& display);

//  Set gamma by coefficient; if return value is 0, gamma coefficient is successfully set. Else an error occured.
ADLX_RESULT SetGammaWithCustomCoeffs(const IADLXDisplayServicesPtr& displayService, const IADLXDisplayPtr& display);

// Set Gamma
void SetGamma(const IADLXDisplayServicesPtr& displayService, const IADLXDisplayPtr& display, const int key);

// Main menu
void MainMenu();

// Menu


html>
{{appName}}

Event binding

<button (click)="showData($event)">按钮</button>
<input type="text" [value]="userName">

This paragraph class comes from *myClass* property

This paragraph class does not apply

Text color is styled using style binding

<input type="text" [(ngModel)]="userName">

Two way binding! Hello {{ userName }}!

ngIfElse example!

  Hello you are logged in

<ng-template #isLogOut>
  You're logged out..
</ng-template>

ngFor directive

    {{l}}

    {{std.name}}

ngSwitch directive

User is logged in..

admin is logged in

Please choose login name

 paragraph style is applied using ngStyle

  {{user.userName}}

font size 24px!!!!

ng-template

<ng-template>ng-template tag is a virtual element</ng-template>
<ng-template [ngIf]=true>

ng-template works!

</ng-template>

  <ng-template ngFor let-item [ngForOf]="Fruits" let-i="index">

{{i}}

{{item}}

  </ng-template>

Test component

<app-child [userName]="name"></app-child>
<!DOCTYPE html>

  <meta charset="UTF-8">
  <title>index</title>

<time></time>
<time-formatted id="elem" datetime="2019-12-01"
                year="numeric" month="long" day="numeric"
                hour="numeric" minute="numeric" second="numeric"
                time-zone-name="short"
></time-formatted>

<button is="hello-button">Click me</button>

<button is="hello-button" disabled>Disabled</button>
<input type="range">
<show-hello name="james"></show-hello>

<!DOCTYPE html>

<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.


ct PHY_DM_STRUCT *)p_dm_void;
	unsigned char			thermal_value = 0, delta, delta_LCK, channel, is_decrease;
	unsigned char			thermal_value_avg_count = 0;
	unsigned int			thermal_value_avg = 0, reg0x18;
	unsigned int			bb_swing_reg[4] = {0xc1c, 0xe1c, 0x181c, 0x1a1c};
	int					ele_D, value32;
	char					OFDM_index[2], index;
	unsigned int			i = 0, j = 0, rf_path, max_rf_path = 2, rf;
	struct rtl8192cd_priv		*priv = p_dm->priv;
	unsigned char			OFDM_min_index =
		7; /* OFDM BB Swing should be less than +2.5dB, which is required by Arthur and Mimic */
	struct _IQK_INFORMATION	*p_iqk_info = &p_dm->IQK_info;

#ifdef MP_TEST
	if ((OPMODE & WIFI_MP_STATE) || *(p_dm->p_mp_mode)) {
		channel = priv->pshare->working_channel;
		if (priv->pshare->mp_txpwr_tracking == false)
			return;
	} else
#endif
	{
		channel = (priv->pmib->dot11RFEntry.dot11channel);
	}

#if RTL8881A_SUPPORT
	if (p_dm->support_ic_type == ODM_RTL8881A) {
		max_rf_path = 1;
		if ((get_bonding_type_8881A() == BOND_8881AM
		     || get_bonding_type_8881A() == BOND_8881AN)
		    && priv->pshare->rf_ft_var.use_intpa8881A
		    && (*p_dm->p_band_type == ODM_BAND_2_4G))
			OFDM_min_index =
				6;		/* intPA - upper bond set to +3 dB (base: -2 dB)ot11RFEntry.phy_band_select == PHY_BAND_2G)) */
		else
			OFDM_min_index =
				10;		/* OFDM BB Swing should be less than +1dB, which is required by Arthur and Mimic */
	}
#endif

	thermal_value = (unsigned char)phy_query_rf_reg(priv, RF_PATH_A, 0x42,
			0xfc00, 1); /* 0x42: RF Reg[15:10] 88E */
	ODM_RT_TRACE(p_dm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
		     ("\nReadback Thermal Meter = 0x%x pre thermal meter 0x%x EEPROMthermalmeter 0x%x\n",
		      thermal_value, priv->pshare->thermal_value,
		      priv->pmib->dot11RFEntry.ther));

	/* 4 Query OFDM BB swing default setting 	Bit[31:21] */
	for (rf_path = 0 ; rf_path < max_rf_path ; rf_path++) {
		ele_D = phy_query_bb_reg(priv, bb_swing_reg[rf_path], 0xffe00000);
		ODM_RT_TRACE(p_dm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
			     ("0x%x:0x%x ([31:21] = 0x%x)\n", bb_swing_reg[rf_path],
			      phy_query_bb_reg(priv, bb_swing_reg[rf_path], MASKDWORD), ele_D));
		for (i = 0; i < OFDM_TABLE_SIZE_8812; i++) {/* 4 */
			if (ele_D == ofdm_swing_table_8812[i]) {
				OFDM_index[rf_path] = (unsigned char)i;
				ODM_RT_TRACE(p_dm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
					     ("OFDM_index[%d]=%d\n", rf_path, OFDM_index[rf_path]));
				break;
			}
		}
	}
#if 0
	/* Query OFDM path A default setting 	Bit[31:21] */
	ele_D = phy_query_bb_reg(priv, 0xc1c, 0xffe00000);
	ODM_RT_TRACE(p_dm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
		     ("0xc1c:0x%x ([31:21] = 0x%x)\n", phy_query_bb_reg(priv, 0xc1c, MASKDWORD),
		      ele_D));
	for (i = 0; i < OFDM_TABLE_SIZE_8812; i++) {/* 4 */
		if (ele_D == ofdm_swing_table_8812[i]) {
			OFDM_index[0] = (unsigned char)i;
			ODM_RT_TRACE(p_dm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
				     ("OFDM_index[0]=%d\n", OFDM_index[0]));
			break;
		}
	}
	/* Query OFDM path B default setting */
	if (rf == 2) {
		ele_D = phy_query_bb_reg(priv, 0xe1c, 0xffe00000);
		ODM_RT_TRACE(p_dm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
			     ("0xe1c:0x%x ([32:21] = 0x%x)\n", phy_query_bb_reg(priv, 0xe1c, MASKDWORD),
			      ele_D));
		for (i = 0; i < OFDM_TABLE_SIZE_8812; i++) {
			if (ele_D == ofdm_swing_table_8812[i]) {
				OFDM_index[1] = (unsigned char)i;
				ODM_RT_TRACE(p_dm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
					     ("OFDM_index[1]=%d\n", OFDM_index[1]));
				break;
			}
		}
	}
#endif
	/* Initialize */
	if (!priv->pshare->thermal_value) {
		priv->pshare->thermal_value = priv->pmib->dot11RFEntry.ther;
		priv->pshare->thermal_value_lck = thermal_value;
	}

	/* calculate average thermal meter */
	{
		priv->pshare->thermal_value_avg_8812[priv->pshare->thermal_value_avg_index_8812]
			= thermal_value;
		priv->pshare->thermal_value_avg_index_8812++;
		if (priv->pshare->thermal_value_avg_index_8812 == AVG_THERMAL_NUM_8812)
			priv->pshare->thermal_value_avg_index_8812 = 0;

		for (i = 0; i < AVG_THERMAL_NUM_8812; i++) {
			if (priv->pshare->thermal_value_avg_8812[i]) {
				thermal_value_avg += priv->pshare->thermal_value_avg_8812[i];
				thermal_value_avg_count++;
			}
		}

		if (thermal_value_avg_count) {
			thermal_value = (unsigned char)(thermal_value_avg /
							thermal_value_avg_count);
			/* printk("AVG Thermal Meter = 0x%x\n", thermal_value); */
		}
	}

	/* 4 If necessary,  do power tracking */

	if (!priv->pmib->dot11RFEntry.ther) /*Don't do power tracking since no calibr


 bottom: N) {
        let top = self.top();
        self.set_bottom_and_top(bottom, top);
    }

    /// Sets the largest y-coordinate of the view cuboid.
    #[inline]
    pub fn set_top(&mut self, top: N) {
        let bottom = self.bottom();
        self.set_bottom_and_top(bottom, top);
    }

    /// Sets the near plane offset of the view cuboid.
    #[inline]
    pub fn set_znear(&mut self, znear: N) {
        let zfar = self.zfar();
        self.set_znear_and_zfar(znear, zfar);
    }

    /// Sets the far plane offset of the view cuboid.
    #[inline]
    pub fn set_zfar(&mut self, zfar: N) {
        let znear = self.znear();
        self.set_znear_and_zfar(znear, zfar);
    }

    /// Sets the view cuboid coordinates along the `x` axis.
    #[inline]
    pub fn set_left_and_right(&mut self, left: N, right: N) {
        assert!(left < right, "The left corner must be farther than the right corner.");
        self.matrix.m11 = <N as Cast<f64>>::from(2.0) / (right - left);
        self.matrix.m14 = -(right + left) / (right - left);
    }

    /// Sets the view cuboid coordinates along the `y` axis.
    #[inline]
    pub fn set_bottom_and_top(&mut self, bottom: N, top: N) {
        assert!(bottom < top, "The top corner must be higher than the bottom corner.");
        self.matrix.m22 = <N as Cast<f64>>::from(2.0) / (top - bottom);
        self.matrix.m24 = -(top + bottom) / (top - bottom);
    }

    /// Sets the near and far plane offsets of the view cuboid.
    #[inline]
    pub fn set_znear_and_zfar(&mut self, znear: N, zfar: N) {
        assert!(!::is_zero(&(zfar - znear)));
        self.matrix.m33 = -<N as Cast<f64>>::from(2.0) / (zfar - znear);
        self.matrix.m34 = -(zfar + znear) / (zfar - znear);
    }

    /// Projects a point.
    #[inline]
    pub fn project_point(&self, p: &Point3<N>) -> Point3<N> {
        Point3::new(
            self.matrix.m11 * p.x + self.matrix.m14,
            self.matrix.m22 * p.y + self.matrix.m24,
            self.matrix.m33 * p.z + self.matrix.m34
        )
    }

    /// Projects a vector.
    #[inline]
    pub fn project_vector(&self, p: &Vector3<N>) -> Vector3<N> {
        Vector3::new(
            self.matrix.m11 * p.x,
            self.matrix.m22 * p.y,
            self.matrix.m33 * p.z
        )
    }
}

impl<N: BaseFloat> OrthographicMatrix3<N> {
    /// Returns the 4D matrix (using homogeneous coordinates) of this projection.
    #[inline]
    pub fn to_matrix(&self) -> Matrix4<N> {
        self.matrix
    }
}

#[cfg(feature="arbitrary")]
impl<N: Arbitrary + BaseFloat> Arbitrary for OrthographicMatrix3<N> {
    fn arbitrary<G: Gen>(g: &mut G) -> OrthographicMatrix3<N> {
        let x: Orthographic3<N> = Arbitrary::arbitrary(g);
        x.to_orthographic_matrix()
    }
}

/// Simple helper function for rejection sampling
#[cfg(feature="arbitrary")]
#[inline]
pub fn reject<G: Gen, F: FnMut(&T) -> bool, T: Arbitrary>(g: &mut G, f: F) -> T {
    use std::iter::repeat;
    repeat(()).


               - state - true or false
                - device_id - device target for playback
        '''
        if not isinstance(state, bool):
            self._warn('state must be a boolean')
            return
        state = str(state).lower()
        self._put(self._append_device_id("me/player/shuffle?state=%s" % state, device_id))

    def _append_device_id(self, path, device_id):
        ''' Append device ID to API path.

            Parameters:
                - device_id - device id to append
        '''
        if device_id:
            path += "&device_id=%s" % device_id
        return path

    def _get_id(self, type, id):
        fields = id.split(':')
        if len(fields) >= 3:
            if type != fields[-2]:
                self._warn('expected id of type %s but found type %s %s',
                           type, fields[-2], id)
            return fields[-1]
        fields = id.split('/')
        if len(fields) >= 3:
            itype = fields[-2]
            if type != itype:
                self._warn('expected id of type %s but found type %s %s',
                           type, itype, id)
            return fields[-1]
        return id

    def _get_uri(self, type, id):
        return 'spotify:' + type + ":" + self._get_id(type, id)


[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
["Umbrellabirds"],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
["Fire-eyes"],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
["Tuftedcheeks"],
["Horneros"],
[],
["Tit-Spinetails and Wiretail"],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
["Whistlers"],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
["Fantails"],
[],
[],
[],
["Logrunners"],
["Monarchs"],
["Shrikes"],
[],
[],
["Coughs and Treepies"],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
["Shrike-flycatchers, wattle-eyes and batises"],
["Vangas and Newtonias"],
["Chats and Old World flycatchers"],
["Wattle-eyes"],
["Batis"],
[],
["Bush-shrikes"],
[],
[],
["Currawongs"],
[],
["Woodswallows"],
["Butcherbirds"],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
["Hoopoe-Larks"],
[],
[],
[],
[],
[],
["Monarchs"],
[],
["Long-tailed Tits"],
["Old World warblers"],
[],
[],
[],
[],
[],
["Old World Warblers"],
["Whiteyes, Babblers, Parrotbills and more"],
[],
["Jerys	"],
["Treecreepers"],
[],
["Wrens"],
["Gnatcatchers"],
[],
[],
[],
["Mockingbirds and Thrashers"],
[],
["Thrushes"],
["Chats and Old World Flycatchers"],
[],
[],
["Finches and more"],
[],
[],
[],
[


'argent", nil, {"Retournez voir le chevalier-seigneur Vaillessang à Lune-d'argent."}},
[9692] = {"La voie de l'adepte", nil, {"Apportez une Gemme de Kor corrompue, une Caisse de lingots de forge-sang, une bonne mesure de Sang du Courroucé et un Insigne de chevalier de sang au Chevalier-seigneur Vaillessang, à Lune-d'argent."}},
[9693] = {"Ce qu'Argus signifie pour moi", nil, {"L'exarque Admetius du Guet du sang vous a demandé de parler au redresseur de torts Boros."}},
[9694] = {"Le Guet du sang", nil, {"Le redresseur de torts Boros au Guet du sang veut que vous tuiez 10 Espions Epervier du soleil."}},
[9695] = {"Les ordres du roi-soleil", nil, {"Apportez les Ordres du roi-soleil au redresseur de torts Boros au Guet du sang."}},
[9696] = {"Traductions...", nil, {"Apportez la Missive des Eperviers du soleil à l'interrogatrice Elysia au Guet du sang."}},
[9697] = {"La gardienne Leesa'oh", nil, {"Parlez à la gardienne Leesa'oh au Poste de garde cénarien dans le marécage de Zangar."}},
[9698] = {"Une audience avec le Prophète", nil, {"Apportez la Missive des Eperviers du soleil traduite au prophète Velen à l'Exodar."}},
[9699] = {"Vérité ou fiction", nil, {"Apportez les Ordres de Velen au redresseur de torts Boros, au Guet du sang."}},
[9700] = {"Des traits de magie dans l'obscurité", nil, {"Le redresseur de torts Boros du Guet du sang veut que vous trouviez l'emplacement du Portail du soleil et que vous tuiez 5 Anomalies du Vide."}},
[9701] = {"L'observation des sporelins", nil, {"Examiner le Vallon des pontes dans le marécage de Zangar, puis rapporter vos découvertes à la gardienne Leesa'oh au Poste de garde cénarien dans le marécage de Zangar."}},
[9702] = {"Un problème de gloutonnerie", nil, {"Rassembler 10 morceaux d'Aliments abandonnés puis revenir voir la gardienne Leesa'oh au Poste de garde cénarien dans le marécage de Zangar."}},
[9703] = {"Le cryocœur", nil, {"Le redresseur de torts Kuros au Guet du sang veut que vous récupériez 12 boîtes de Fournitures médicales."}},
[9704] = {"Tuée par les Déshérités", nil, {"Allez au sud dans les ruines de Lune-d'argent et cherchez l'Estafette morte dans l'allée du Point-du-jour."}},
[9705] = {"Récupérer un paquet", nil, {"Retournez voir l'estafette Alarion avec le Paquet d'Erona."}},
[9706] = {"Le journal de Galaen - Le destin du redresseur de torts Saruan", nil, {"Apportez le Journal de Galaen au redresseur de torts Kuros au Guet du sang."}},
[9707] = {"Forger l'arme", nil, {"Apportez la Caisse de matériaux à Bemarrin à Lune-d'argent."}},
[9708] = {"Des champignons familiers", nil, {"Collectez 15 Échantillons de champignon et apportez-les à la gardienne Leesa'oh au Poste de garde cénarien dans le marécage de Zangar."}},


obowiązania z tytułu leasingu finansowego i operacyjnego"]},e.exports["Capital expenditures - fixed assets_study"]={en:["Capital expenditures - fixed assets"],pl:["Nakłady inwestycyjne - środki trwałe"]},e.exports["Capital expenditures - other assets_study"]={en:["Capital expenditures - other assets"],pl:["Nakłady inwestycyjne - pozostałe aktywa"]},e.exports["Capitalized lease obligations_study"]={en:["Capitalized lease obligations"],pl:["Skapitalizowane zobowiązania z tytułu leasingu"]},e.exports["Cash and short term investments_study"]={en:["Cash and short term investments"],pl:["Środki pieniężne i inwestycje krótkoterminowe"]},e.exports["Cash conversion cycle_study"]={en:["Cash conversion cycle"],pl:["Cykl konwersji gotówki"]},e.exports["Cash & equivalents_study"]={en:["Cash & equivalents"],pl:["Środki pieniężne i ich ekwiwalenty"]},e.exports["Cash from financing activities_study"]={en:["Cash from financing activities"],pl:["Środki Pieniężne z Działalności Finansowej"]},e.exports["Cash from investing activities_study"]={en:["Cash from investing activities"],pl:["Środki Pieniężne z Działalności Inwestycyjnej"]},e.exports["Cash from operating activities_study"]={en:["Cash from operating activities"],pl:["Środki Pieniężne z Działalności Operacyjnej"]},e.exports["Change in accounts payable_study"]={en:["Change in accounts payable"],pl:["Zmiana stanu zobowiązań"]},e.exports["Change in accounts receivable_study"]={en:["Change in accounts receivable"],pl:["Zmiana stanu należności"]},e.exports["Change in accrued expenses_study"]={en:["Change in accrued expenses"],pl:["Zmiana stanu rozliczeń międzyokresowych"]},e.exports["Change in inventories_study"]={en:["Change in inventories"],pl:["Zmiana stanu zapasów"]},e.exports["Change in other assets/liabilities_study"]={en:["Change in other assets/liabilities"],pl:["Zmiana stanu innych aktywów/zobowiązań"]},e.exports["Change in taxes payable_study"]={en:["Change in taxes payable"],pl:["Zmiana stanu zobowiązań podatkowych"]},e.exports["Changes in working capital_study"]={en:["Changes in working capital"],pl:["Zmiany w kapitale obrotowym"]},e.exports["COGS to revenue ratio_study"]={en:["COGS to revenue ratio"],pl:["Koszt Własny Sprzedaży/Przychód"]},e.exports["Common dividends paid_study"]={en:["Common dividends paid"],pl:["Wypłacone dywidendy powszechne"]},e.exports["Common equity, total_study"]={en:["Common equity, total"],pl:["Kapitał podstawowy ogółem"]},e.exports["Common stock par/Carrying value_study"]={en:["Common stock par/Carrying value"],pl:["Wartość księgowa akcji zwykłych"]},e.exports["Cost of goods_study"]={en:["Cost of goods"],
pl:["Koszt własny sprzedaży"]},e.exports["Cost of goods sold_study"]={en:["Cost of goods sold"],pl:["Koszt sprzedanych towarów"]},e.exports["Current portion of LT debt and capital leases_stud


�ումն ուղարկվեց։ Ձեր {email}-ի աշխատատարածքի ադմինիստրատորը կարող է հաստատել հարցումը։","RequestWorkspaceAccessModal.requestWorkspaceAccessMessage":"Դուք կարող եք հասանելիություն խնդրել աշխատատարածքի հաշվին։","RequestWorkspaceAccessModal.signOutButton":"Դուրս գրվել","RequestWorkspaceAccessModal.subtitle":"ChatGPT Enterprise-ը միացվել է ձեր աշխատատարածքում","RequestWorkspaceAccessModal.title":"Հասանելիություն խնդրել {workspaceName}-ին","RequireMfaForAuthPluginsModal.primaryButtonTitle":"Կարգավորել երկգործոն իսկորոշումը","RequireMfaForAuthPluginsModal.secondaryButtonTitle":"Անջատել օժանդակ մոդուլները","RequireMfaForAuthPluginsModal.title":"Ձեր օժանդակ մոդուլներից մի քանիսի համար պահանջվում է երկգործոն իսկորոշում։","RequiresMfaModal.cancelButton":"Չեղարկել","RequiresMfaModal.disclaimer":"Այս օժանդակ մոդուլի համար հարկավոր է միացնել երկգործոն իսկորոշումը՝ լրացուցիչ անվտանգության համար։ Կարգավորեք երկգործոն իսկորոշումը և նորից փորձեք։","RequiresMfaModal.enableMfaButton":"Միացնել երկգործոն իսկորոշումը","RequiresMfaModal.title":"Միացնել երկգործոն իսկորոշումը","ResetMemoriesButton.resetChatGPT":"Մաքրել ChatGPT-ի հիշ