result.translations[I18nLocale.fromString('en')],
      specialExpectedEnOutput,
    );
    expect(
      result.translations[I18nLocale.fromString('de')],
      specialExpectedDeOutput,
    );
  });
}
part of 'pluralization.dart';

/// A very tolerant plural resolver suitable for most languages.
/// This is used as fallback.
final _defaultResolver = _Resolvers(
  cardinal: (n, {zero, one, two, few, many, other}) {
    if (n == 0) {
      return zero ?? other ?? n.toString();
    }
    if (n == 1) {
      return one ?? other ?? n.toString();
    }
    return other ?? n.toString();
  },
  ordinal: (n, {zero, one, two, few, many, other}) {
    return other ?? n.toString();
  },
);

/// Predefined pluralization resolvers
/// See https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html
/// Sorted by language alphabetically
///
/// Contribution would be nice! (Only this file needs to be changed)
final Map<String, _Resolvers> _resolverMap = {
  // Czech
  'cs': _Resolvers(
    cardinal: (n, {zero, one, two, few, many, other}) {
      if (n == 0) {
        return zero ?? other!;
      }
      if (n == 1) {
        return one ?? other!;
      }
      if (n >= 2 && n <= 4) {
        return few ?? other!;
      }
      return other!;
    },
    ordinal: (n, {zero, one, two, few, many, other}) {
      return other!;
    },
  ),
  // German
  'de': _Resolvers(
    cardinal: (n, {zero, one, two, few, many, other}) {
      if (n == 0) {
        return zero ?? other!;
      }
      if (n == 1) {
        return one ?? other!;
      }
      return other!;
    },
    ordinal: (n, {zero, one, two, few, many, other}) {
      return other!;
    },
  ),
  // English
  'en': _Resolvers(
    cardinal: (n, {zero, one, two, few, many, other}) {
      if (n == 0) {
        return zero ?? other!;
      }
      if (n == 1) {
        return one ?? other!;
      }
      return other!;
    },
    ordinal: (n, {zero, one, two, few, many, other}) {
      if (n % 10 == 1 && n % 100 != 11) {
        return one ?? other!;
      }
      if (n % 10 == 2 && n % 100 != 12) {
        return two ?? other!;
      }
      if (n % 10 == 3 && n % 100 != 13) {
        return few ?? other!;
      }
      return other!;
    },
  ),
  // Spanish
  'es': _Resolvers(
    cardinal: (n, {zero, one, two, few, many, other}) {
      if (n == 0) {
        return zero ?? other!;
      }
      if (n == 1) {
        return one ?? other!;
      }
      return other!;
    },
    ordinal: (n, {zero, one, two, few, many, other}) {
      return other!;
    },
  ),
  // French
  'fr': _Resolvers(
    cardinal: (n, {zero, one, two, few, many, other}) {
      final i = n.toInt();
      final v = i == n ? 0 : n.toString().split('.')[1].length;
      if (n == 0) {
        return zero ?? one ?


.createImageBitmap(new Blob([x],{type:s}),{premultiplyAlpha:"none",...r}).then(R=>{e(R),h&&URL.revokeObjectURL(o)}).catch(R=>{t&&t("Error while trying to load image: "+a,R)})},void 0,i||void 0,!0,(x,R)=>{l(R)}),null;const c=new Image;Xr(o,c);const u=[],f=()=>{u.forEach(x=>{x.target.addEventListener(x.name,x.handler)})},d=()=>{u.forEach(x=>{x.target.removeEventListener(x.name,x.handler)}),u.length=0},g=()=>{d(),e(c),h&&c.src&&URL.revokeObjectURL(c.src)},m=x=>{d(),l(x),h&&c.src&&URL.revokeObjectURL(c.src)},b=x=>{if(x.blockedURI!==c.src||x.disposition==="report")return;d();const R=new Error(`CSP violation of policy ${x.effectiveDirective} ${x.blockedURI}. Current policy is ${x.originalPolicy}`);de.UseFallbackTexture=!1,l(R),h&&c.src&&URL.revokeObjectURL(c.src),c.src=""};u.push({target:c,name:"load",handler:g}),u.push({target:c,name:"error",handler:m}),u.push({target:document,name:"securitypolicyviolation",handler:b}),f();const y=o.substring(0,5)==="blob:",A=o.substring(0,5)==="data:",P=()=>{y||A||!tt.IsCustomRequestAvailable?c.src=o:gi(o,(x,R,S)=>{const D=!s&&S?S:s,G=new Blob([x],{type:D}),X=URL.createObjectURL(G);h=!0,c.src=X},void 0,i||void 0,!0,(x,R)=>{l(R)})},I=()=>{i&&i.loadImage(o,c)};if(!y&&!A&&i&&i.enableTexturesOffline)i.open(I,P);else{if(o.indexOf("file:")!==-1){const x=decodeURIComponent(o.substring(5).toLowerCase());if(Ji.FilesToLoad[x]&&typeof URL<"u"){try{let R;try{R=URL.createObjectURL(Ji.FilesToLoad[x])}catch{R=URL.createObjectURL(Ji.FilesToLoad[x])}c.src=R,h=!0}catch{c.src=""}return c}}P()}return c},ss=(a,e,t,i,s)=>{const r=new FileReader,n={onCompleteObservable:new O,abort:()=>r.abort()};return r.onloadend=()=>n.onCompleteObservable.notifyObservers(n),s&&(r.onerror=()=>{s(new Wr(`Unable to read ${a.name}`,a))}),r.onload=o=>{e(o.target.result)},t&&(r.onprogress=t),i?r.readAsArrayBuffer(a):r.readAsText(a),n},gi=(a,e,t,i,s,r,n)=>{if(a.name)return ss(a,e,t,s,r?c=>{r(void 0,c)}:void 0);const o=a;if(o.indexOf("file:")!==-1){let c=decodeURIComponent(o.substring(5).toLowerCase());c.indexOf("./")===0&&(c=c.substring(2));const u=Ji.FilesToLoad[c];if(u)return ss(u,e,t,s,r?f=>r(void 0,new Ws(f.message,f.file)):void 0)}const{match:h,type:l}=Ga(o);if(h){const c={onCompleteObservable:new O,abort:()=>()=>{}};try{const u=s?Qr(o):za(o);e(u,void 0,l)}catch(u){r?r(void 0,u):F.Error(u.message||"Failed to parse the Data URL")}return is.SetImmediate(()=>{c.onCompleteObservable.notifyObservers(c)}),c}return Yr(o,(c


tNode(AArch64ISD::UDOT, DL, DT, Zeros, Ones, Val);
    } else if (VT == MVT::v4i32) {
      Val = DAG.getNode(AArch64ISD::UDOT, DL, DT, Zeros, Ones, Val);
    } else {
      llvm_unreachable("Unexpected type for custom ctpop lowering");
    }

    return Val;
  }

  // Widen v8i8/v16i8 CTPOP result to VT by repeatedly widening pairwise adds.
  unsigned EltSize = 8;
  unsigned NumElts = VT.is64BitVector() ? 8 : 16;
  while (EltSize != VT.getScalarSizeInBits()) {
    EltSize *= 2;
    NumElts /= 2;
    MVT WidenVT = MVT::getVectorVT(MVT::getIntegerVT(EltSize), NumElts);
    Val = DAG.getNode(AArch64ISD::UADDLP, DL, WidenVT, Val);
  }

  return Val;
}

SDValue AArch64TargetLowering::LowerCTTZ(SDValue Op, SelectionDAG &DAG) const {
  EVT VT = Op.getValueType();
  assert(VT.isScalableVector() ||
         useSVEForFixedLengthVectorVT(
             VT, /*OverrideNEON=*/Subtarget->useSVEForFixedLengthVectors()));

  SDLoc DL(Op);
  SDValue RBIT = DAG.getNode(ISD::BITREVERSE, DL, VT, Op.getOperand(0));
  return DAG.getNode(ISD::CTLZ, DL, VT, RBIT);
}

SDValue AArch64TargetLowering::LowerMinMax(SDValue Op,
                                           SelectionDAG &DAG) const {

  EVT VT = Op.getValueType();
  SDLoc DL(Op);
  unsigned Opcode = Op.getOpcode();
  ISD::CondCode CC;
  switch (Opcode) {
  default:
    llvm_unreachable("Wrong instruction");
  case ISD::SMAX:
    CC = ISD::SETGT;
    break;
  case ISD::SMIN:
    CC = ISD::SETLT;
    break;
  case ISD::UMAX:
    CC = ISD::SETUGT;
    break;
  case ISD::UMIN:
    CC = ISD::SETULT;
    break;
  }

  if (VT.isScalableVector() ||
      useSVEForFixedLengthVectorVT(
          VT, /*OverrideNEON=*/Subtarget->useSVEForFixedLengthVectors())) {
    switch (Opcode) {
    default:
      llvm_unreachable("Wrong instruction");
    case ISD::SMAX:
      return LowerToPredicatedOp(Op, DAG, AArch64ISD::SMAX_PRED);
    case ISD::SMIN:
      return LowerToPredicatedOp(Op, DAG, AArch64ISD::SMIN_PRED);
    case ISD::UMAX:
      return LowerToPredicatedOp(Op, DAG, AArch64ISD::UMAX_PRED);
    case ISD::UMIN:
      return LowerToPredicatedOp(Op, DAG, AArch64ISD::UMIN_PRED);
    }
  }

  SDValue Op0 = Op.getOperand(0);
  SDValue Op1 = Op.getOperand(1);
  SDValue Cond = DAG.getSetCC(DL, VT, Op0, Op1, CC);
  return DAG.getSelect(DL, VT, Cond, Op0, Op1);
}

SDValue AArch64TargetLowering::LowerBitreverse(SDValue Op,
                                               SelectionDAG &DAG) const {


 workflow = this.WorkflowStore.Get(this.WorkflowId);

            if (workflow == null)
            {
                throw new CommandConfigurationException(String.Format("Workflow not found matching id {0}", this.WorkflowId));
            }

            workflow.IsSuspended = false;
            workflow.ResumeOn = DateTime.UtcNow;

            return workflow;
        }

        public override void Validate()
        {
            if (this.WorkflowStore == null)
            {
                throw new CommandConfigurationException("Workflow store was not set");
            }
            if (this.WorkflowId == Guid.Empty)
            {
                throw new CommandConfigurationException("Workflow id property was not set");
            }
        }
    }
}


 stdCoder.encode(data);
}
exports.encode = encode;
function decode(s) {
    return stdCoder.decode(s);
}
exports.decode = decode;
/**
 * Implements URL-safe Base64 encoding.
 * (Same as Base64, but '+' is replaced with '-', and '/' with '_').
 *
 * Operates in constant time.
 */
var URLSafeCoder = /** @class */ (function (_super) {
    __extends(URLSafeCoder, _super);
    function URLSafeCoder() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    // URL-safe encoding have the following encoded/decoded ranges:
    //
    // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789  -   _
    // Index:   0 - 25                    26 - 51              52 - 61   62  63
    // ASCII:  65 - 90                    97 - 122             48 - 57   45  95
    //
    URLSafeCoder.prototype._encodeByte = function (b) {
        var result = b;
        // b >= 0
        result += 65;
        // b > 25
        result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);
        // b > 51
        result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);
        // b > 61
        result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 45);
        // b > 62
        result += ((62 - b) >>> 8) & ((62 - 45) - 63 + 95);
        return String.fromCharCode(result);
    };
    URLSafeCoder.prototype._decodeChar = function (c) {
        var result = INVALID_BYTE;
        // c == 45 (c > 44 and c < 46)
        result += (((44 - c) & (c - 46)) >>> 8) & (-INVALID_BYTE + c - 45 + 62);
        // c == 95 (c > 94 and c < 96)
        result += (((94 - c) & (c - 96)) >>> 8) & (-INVALID_BYTE + c - 95 + 63);
        // c > 47 and c < 58
        result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);
        // c > 64 and c < 91
        result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);
        // c > 96 and c < 123
        result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);
        return result;
    };
    return URLSafeCoder;
}(Coder));
exports.URLSafeCoder = URLSafeCoder;
var urlSafeCoder = new URLSafeCoder();
function encodeURLSafe(data) {
    return urlSafeCoder.encode(data);
}
exports.encodeURLSafe = encodeURLSafe;
function decodeURLSafe(s) {
    return urlSafeCoder.decode(s);
}
exports.decodeURLSafe = decodeURLSafe;
exports.encodedLength = function (length) {
    return stdCoder.encodedLength(length);
};
exports.maxDecodedLength = function (length) {
    return stdCoder.maxDecodedLength(length);
};
exports.decodedLength = function (s) {
    return stdCoder.decodedLength(s);
};
//# sourceMappingURL=base64.js.map

/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// Copyright (C) 2016 Dmitry Chestnykh
// MIT License. See LICENSE file for details.
Object.defineProperty(exports, "__esModule", { value: true });
/**
 * Package utf8 implements UTF-8 encoding and decoding.
 */
var INVALID_UTF16 = "utf8: invalid string";
var INVALID_UTF8 = "utf8: invalid source encoding";
/**
 * Encodes the given string into UTF-8 byte array.
 *


/*
 *  Copyright (C) 2021 - This file is part of libecc project
 *
 *  Authors:
 *      Arnaud EBALARD <arnaud.ebalard@ssi.gouv.fr>
 *      Ryad BENADJILA <ryadbenadjila@gmail.com>
 *
 *  This software is licensed under a dual BSD and GPL v2 license.
 *  See LICENSE file at the root folder of the project.
 */
#include <libecc/lib_ecc_config.h>
#ifdef WITH_HASH_SM3

#ifndef __SM3_H__
#define __SM3_H__

#include <libecc/words/words.h>
#include <libecc/utils/utils.h>

#define SM3_STATE_SIZE    8 /* in 32 bits word */
#define SM3_BLOCK_SIZE   64
#define SM3_DIGEST_SIZE  32
#define SM3_DIGEST_SIZE_BITS  256

/* Compute max hash digest and block sizes */
#ifndef MAX_DIGEST_SIZE
#define MAX_DIGEST_SIZE	0
#endif
#if (MAX_DIGEST_SIZE < SM3_DIGEST_SIZE)
#undef MAX_DIGEST_SIZE
#define MAX_DIGEST_SIZE SM3_DIGEST_SIZE
#endif

#ifndef MAX_DIGEST_SIZE_BITS
#define MAX_DIGEST_SIZE_BITS    0
#endif
#if (MAX_DIGEST_SIZE_BITS < SM3_DIGEST_SIZE_BITS)
#undef MAX_DIGEST_SIZE_BITS
#define MAX_DIGEST_SIZE_BITS SM3_DIGEST_SIZE_BITS
#endif

#ifndef MAX_BLOCK_SIZE
#define MAX_BLOCK_SIZE  0
#endif
#if (MAX_BLOCK_SIZE < SM3_BLOCK_SIZE)
#undef MAX_BLOCK_SIZE
#define MAX_BLOCK_SIZE SM3_BLOCK_SIZE
#endif

#define SM3_HASH_MAGIC ((word_t)(0x2947510312849204ULL))
#define SM3_HASH_CHECK_INITIALIZED(A, ret, err) \
        MUST_HAVE((((void *)(A)) != NULL) && ((A)->magic == SM3_HASH_MAGIC), ret, err)

typedef struct {
	/* Number of bytes processed */
	u64 sm3_total;
	/* Internal state */
	u32 sm3_state[SM3_STATE_SIZE];
	/* Internal buffer to handle updates in a block */
	u8 sm3_buffer[SM3_BLOCK_SIZE];
        /* Initialization magic value */
        word_t magic;
} sm3_context;

ATTRIBUTE_WARN_UNUSED_RET int sm3_init(sm3_context *ctx);
ATTRIBUTE_WARN_UNUSED_RET int sm3_update(sm3_context *ctx, const u8 *input, u32 ilen);
ATTRIBUTE_WARN_UNUSED_RET int sm3_final(sm3_context *ctx, u8 output[SM3_DIGEST_SIZE]);
ATTRIBUTE_WARN_UNUSED_RET int sm3_scattered(const u8 **inputs, const u32 *ilens,
		   u8 output[SM3_DIGEST_SIZE]);
ATTRIBUTE_WARN_UNUSED_RET int sm3(const u8 *input, u32 ilen, u8 output[SM3_DIGEST_SIZE]);

#endif /* __SM3_H__ */
#endif /* WITH_HASH_SM3 */


strl	%r0, 1
	strl	%r0, 0x100000000

#CHECK: error: invalid operand
#CHECK: strv	%r0, -524289
#CHECK: error: invalid operand
#CHECK: strv	%r0, 524288

	strv	%r0, -524289
	strv	%r0, 524288

#CHECK: error: invalid operand
#CHECK: strvg	%r0, -524289
#CHECK: error: invalid operand
#CHECK: strvg	%r0, 524288

	strvg	%r0, -524289
	strvg	%r0, 524288

#CHECK: error: invalid operand
#CHECK: stsch	-1
#CHECK: error: invalid operand
#CHECK: stsch	4096
#CHECK: error: invalid use of indexed addressing
#CHECK: stsch	0(%r1,%r2)

	stsch	-1
	stsch	4096
	stsch	0(%r1,%r2)

#CHECK: error: invalid operand
#CHECK: stsi	-1
#CHECK: error: invalid operand
#CHECK: stsi	4096
#CHECK: error: invalid use of indexed addressing
#CHECK: stsi	0(%r1,%r2)

	stsi	-1
	stsi	4096
	stsi	0(%r1,%r2)

#CHECK: error: invalid operand
#CHECK: sty	%r0, -524289
#CHECK: error: invalid operand
#CHECK: sty	%r0, 524288

	sty	%r0, -524289
	sty	%r0, 524288

#CHECK: error: invalid operand
#CHECK: su	%f0, -1
#CHECK: error: invalid operand
#CHECK: su	%f0, 4096

	su	%f0, -1
	su	%f0, 4096

#CHECK: error: invalid operand
#CHECK: sw	%f0, -1
#CHECK: error: invalid operand
#CHECK: sw	%f0, 4096

	sw	%f0, -1
	sw	%f0, 4096

#CHECK: error: invalid register pair
#CHECK: sxbr	%f0, %f2
#CHECK: error: invalid register pair
#CHECK: sxbr	%f2, %f0

	sxbr	%f0, %f2
	sxbr	%f2, %f0

#CHECK: error: invalid register pair
#CHECK: sxr	%f0, %f2
#CHECK: error: invalid register pair
#CHECK: sxr	%f2, %f0

	sxr	%f0, %f2
	sxr	%f2, %f0

#CHECK: error: invalid register pair
#CHECK: sxtr	%f0, %f0, %f2
#CHECK: error: invalid register pair
#CHECK: sxtr	%f0, %f2, %f0
#CHECK: error: invalid register pair
#CHECK: sxtr	%f2, %f0, %f0

	sxtr	%f0, %f0, %f2
	sxtr	%f0, %f2, %f0
	sxtr	%f2, %f0, %f0

#CHECK: error: instruction requires: fp-extension
#CHECK: sxtra	%f0, %f0, %f0, 0

	sxtra	%f0, %f0, %f0, 0

#CHECK: error: invalid operand
#CHECK: sy	%r0, -524289
#CHECK: error: invalid operand
#CHECK: sy	%r0, 524288

	sy	%r0, -524289
	sy	%r0, 524288

#CHECK: error: invalid operand
#CHECK: tbdr	%f0, -1, %f0
#CHECK: error: invalid operand
#CHECK: t


0 <unknown>

st3d    { z5.d, z6.d, z7.d }, p3, [x17, x16, lsl #3]
// CHECK-INST: st3d    { z5.d - z7.d }, p3, [x17, x16, lsl #3]
// CHECK-ENCODING: [0x25,0x6e,0xd0,0xe5]
// CHECK-ERROR: instruction requires: sve or sme
// CHECK-UNKNOWN: e5d06e25 <unknown>

st3d    { z0.d, z1.d, z2.d }, p0, [x0]
// CHECK-INST: st3d    { z0.d - z2.d }, p0, [x0]
// CHECK-ENCODING: [0x00,0xe0,0xd0,0xe5]
// CHECK-ERROR: instruction requires: sve or sme
// CHECK-UNKNOWN: e5d0e000 <unknown>

st3d    { z23.d, z24.d, z25.d }, p3, [x13, #-24, mul vl]
// CHECK-INST: st3d    { z23.d - z25.d }, p3, [x13, #-24, mul vl]
// CHECK-ENCODING: [0xb7,0xed,0xd8,0xe5]
// CHECK-ERROR: instruction requires: sve or sme
// CHECK-UNKNOWN: e5d8edb7 <unknown>

st3d    { z21.d, z22.d, z23.d }, p5, [x10, #15, mul vl]
// CHECK-INST: st3d    { z21.d - z23.d }, p5, [x10, #15, mul vl]
// CHECK-ENCODING: [0x55,0xf5,0xd5,0xe5]
// CHECK-ERROR: instruction requires: sve or sme
// CHECK-UNKNOWN: e5d5f555 <unknown>


Gui.setNextWindowBgAlpha
import imgui.ImGui.style
import imgui.ImGui.text
import imgui.ImGui.textColored
import imgui.api.g
import imgui.dsl.tooltip
import imgui.statics.mergedModsFromKeys

//-----------------------------------------------------------------------------
// [SECTION] ERROR CHECKING
// Error Checking and Debug Tools
//-----------------------------------------------------------------------------

// Helper function to verify ABI compatibility between caller code and compiled version of Dear ImGui.
// Verify that the type sizes are matching between the calling file's compilation unit and imgui.cpp's compilation unit
// If this triggers you have an issue:
// - Most commonly: mismatched headers and compiled code version.
// - Or: mismatched configuration #define, compilation settings, packing pragma etc.
//   The configuration settings mentioned in imconfig.h must be set for all compilation units involved with Dear ImGui,
//   which is way it is required you put them in your imconfig file (and not just before including imgui.h).
//   Otherwise it is possible that different compilation units would see different structure layout
fun errorCheckNewFrameSanityChecks() {

    // Check user data
    // (We pass an error message in the assert expression to make it visible to programmers who are not using a debugger, as most assert handlers display their argument)
    assert(g.initialized)
    assert(io.deltaTime > 0f || g.frameCount == 0) { "Need a positive DeltaTime!" }
    assert(g.frameCount == 0 || g.frameCountEnded == g.frameCount) { "Forgot to call Render() or EndFrame() at the end of the previous frame?" }
    assert(io.displaySize.x >= 0f && io.displaySize.y >= 0f) { "Invalid DisplaySize value!" } // TODO glm
    assert(io.fonts.isBuilt) { "Font Atlas not built! Make sure you called ImGui_ImplXXXX_NewFrame() function for renderer backend, which should call io.Fonts->GetTexDataAsRGBA32() / GetTexDataAsAlpha8()" }
    assert(style.curveTessellationTol > 0f) { "Invalid style setting!" }
    assert(style.circleTessellationMaxError > 0f) { "Invalid style setting!" }
    assert(style.alpha in 0f..1f) { "Invalid style setting!" } // Allows us to avoid a few clamps in color computations
    assert(style.windowMinSize.x >= 1f && style.windowMinSize.y >= 1f) { "Invalid style setting." } // TODO glm
    assert(style.windowMenuButtonPosition == Dir.None || style.windowMenuButtonPosition == Dir.Left || style.windowMenuButtonPosition == Dir.Right)
    assert(g.style.colorButtonPosition == Dir.Left || g.style.colorButtonPosition == Dir.Right)

    // Check: the beta io.ConfigWindowsResizeFromEdges option requires backend to honor mouse cursor changes and set the ImGuiBackendFlags_HasMouseCursors flag accordingly.
    if (io.configWindowsResizeFromEdges && io.backendFlags hasnt BackendFlag.HasMouseCursors)
        io.configWindowsResizeFromEdges = false
}

fun errorCheckEndFrameSanityChecks() {

    // Verify that io.KeyXXX fields haven't been tampered with. Key mods should not be modified between NewFrame() and EndFrame()
    // One possible reason leading to this assert is that your backends update inputs _AFTER_ NewFrame().
    // It is known that when some modal native windows called mid-frame takes focus away, some backends such as GLFW will
    // send key release events mid-frame. This would normally trigger this assertion and lead to sheared inputs.
    // We silently accommodate for this case by ignoring the case where all io.KeyXXX modifiers were released (aka key_mod_flags == 0),
    // while still correctly asserting on mid-frame key press events.
    val keyMods = mergedModsFromKeys
    assert(keyMods.isEmpty || g.io.keyMods == keyMods) { "Mismat


/**************
 Initialization
 **************/
.global _testdiv
_testdiv:
 sts.l  pr, @-r15
 mov.l  _pfail, r13 !fail address
 bra    _testgo
 nop
_pfail: .long _fail

_testgo:
 mov.l  _ptestvalue, r9
/******************************************
 Unsigned R1(32bit) / R0(16bit) -> R1(16bit)
 ******************************************/
 mov.l @r9+, r1
 mov.l @r9+, r0
 div0u
 div1 r0, r1
 div1 r0, r1
 div1 r0, r1
 div1 r0, r1
 div1 r0, r1
 div1 r0, r1
 div1 r0, r1
 div1 r0, r1
 div1 r0, r1
 div1 r0, r1
 div1 r0, r1
 div1 r0, r1
 div1 r0, r1
 div1 r0, r1
 div1 r0, r1
 div1 r0, r1
 rotcl r1
 mov.l @r9+, r2
 cmp/eq r2, r1
 bt     .+6
 jmp    @r13
 nop
/**********************************************
 Unsigned R1:R2(64bit) / R0(32bit) -> R2(32bit)
 **********************************************/
 mov.l @r9+, r1
 mov.l @r9+, r2
 mov.l @r9+, r0
 div0u
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1

 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1

 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1

 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1
 rotcl r2
 div1  r0,r1

 rotcl r2
 mov.l @r9+, r3
 cmp/eq r3, r2
 bt     .+6
 jmp    @r13
 nop
/*****************************************
 Signed R1(16bit) / R0(16bit) -> R1(16bit)
 *****************************************/
 mov.l @r9+, r1
 mov.l @r9+, r0
 div0s r0, r1
 div1  r0, r1
 div1  r0, r1
 div1  r0, r1
 div1  r0, r1
 div1  r0, r1
 div1  r0, r1
 div1  r0, r1
 div1  r0, r1
 div1  r0, r1


 ease;
    width: 148px;
    z-index: 99;

    .figma-dark & {
      background-color: var(--figma-color-bg-hover);
      border-color: var(--figma-color-border);
      color: var(--figma-color-text);
      filter: drop-shadow(0 4px 4px var(--figma-color-bg));
    }

    &.align-right {
      right: 0;
    }
  }

  .dropdown-overlay-close {
    inset: 0;
    pointer-events: none;
    position: fixed;
    transform: translate(100%, 0);
    z-index: 9;
  }

  &.opened {
    overflow: visible;

    .dropdown-options {
      opacity: 1;
      padding: var(--spacing-xs) 0;
    }

    .dropdown {
      z-index: 99;
    }

    .dropdown-overlay-close {
      pointer-events: auto;
      transform: none;
    }
  }

  .dropdown-option {
    cursor: pointer;
    line-height: 24px;
    list-style: none;
    padding-left: var(--spacing-lg);
    width: 100%;

    &:hover {
      background-color: var(--background-accent);
    }
  }

  .dropdown-option-disabled {
    & .dropdown-option {
      cursor: default;
      opacity: 0.5;

      &:hover {
        background-color: transparent;
      }
    }
  }

  .dropdown-option-selected {
    left: 5px;
    position: absolute;
    top: 5px;
  }
}/*
	Copyright (c) 2016 eBay Software Foundation.
	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.
 */
.big-chart-container{
  z-index:1040;
  display:block;
  position:fixed;
  top:0;
  left:0;
  bottom:0;
  right:0;
  background-color: rgba(0,0,0,0.4);
}

.big-chart-content{
  position: fixed;
  background-color:black;
  /*animation-name: animatetop;
  animation-duration: 0.8s*/
}

.bark-close {
  position: relative;
  display: inline-block;
  width: 30px;
  height: 30px;
  overflow: hidden;
  background: transparent;
  border: 0;
}
.bark-close:hover::before, .bark-close:hover::after {
  background: #ECED25;
}
.bark-close::before, .bark-close::after {
  content: '';
  position: absolute;
  height: 2px;
  width: 100%;
  top: 50%;
  left: 0;
  margin-top: -1px;
  background: #fff;
}
.bark-close::before {
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -o-transform: rotate(45deg);
  transform: rotate(45deg);
}
.bark-close::after {
  -webkit-transform: rotate(-45deg);
  -moz-transform: rotate(-45deg);
  -ms-transform: rotate(-45deg);
  -o-transform: rotate(-45deg);
  transform: rotate(-45deg);
}
.bark-close.big {


5
// 3. permission denied
//     1). main.OpenFile
//         /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/v2/geg/errors/gerror/gerror2.go:10
//     2). main.OpenConfig
//         /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/v2/geg/errors/gerror/gerror2.go:14
//     3). main.ReadConfig
//         /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/v2/geg/errors/gerror/gerror2.go:18
//     4). main.main
//         /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/v2/geg/errors/gerror/gerror2.go:25
```

可以看到，调用端可以通过 `Wrap` 方法将底层的错误信息进行层级叠加，并且包含完整的错误堆栈信息。

## `HasStack` 判断错误是否带堆栈

- 说明：通过 `HasStack` 方法我们可以判断给定的 `error` 接口对象是否实现（包含）了堆栈信息。
- 格式：

```go
HasStack(err error) bool
```

- 示例：

```go
func ExampleHasStack() {
      err1 := errors.New("sql error")
      err2 := gerror.New("write error")
      fmt.Println(gerror.HasStack(err1))
      fmt.Println(gerror.HasStack(err2))

      // Output:
      // false
      // true
}
```

## `Stack` 获取堆栈信息

- 说明：通过 `Stack` 方法我们可以获得 `error` 对象的完整堆栈信息，返回堆栈列表字符串。 注意参数为标准库 `error` 类型，当该参数为 `gerror` 模块生成的 `error` 时， 或者开发者自定义的 `error` 对象实现了该接口时支持打印，否则，返回空字符串。
- 格式：

```go
Stack(err error) string
```

- 示例：

```go
func ExampleStack() {
       var err error
      err = errors.New("sql error")
      err = gerror.Wrap(err, "adding failed")
      err = gerror.Wrap(err, "api calling failed")
      fmt.Println(gerror.Stack(err))

      // Output:
      // 1. api calling failed
      //     1).  main.main
      //         /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/.example/other/test.go:14
      // 2. adding failed
      //     1).  main.main
      //         /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/.example/other/test.go:13
      // 3. sql error
}
```

## `Current` 获取当前 `error`

- 说明： `Current` 方法用于获取当前层级的错误信息，通过 `error` 接口对象返回。
- 格式：

```go
Current(err error) error
```

- 示例：

```go
func ExampleCurrent() {
        var err error
      err = errors.New("sql error")
      err = gerror.Wrap(err, "adding failed")


��"],
  'こわれたくさり': ["⛓💥"],
  'こわれる': ["💔"],
  'こんが': ["🪘"],
  'こんご': ["🇨🇩","🇨🇬"],
  'こんご - きんしゃさ': ["🇨🇩"],
  'こんご - ぶらざびる': ["🇨🇬"],
  'こんごきょうわこく': ["🇨🇬"],
  'こんごこっき - きんしゃさ': ["🇨🇩"],
  'こんごのはた - ぶらざびる': ["🇨🇬"],
  'こんごみんしゅきょうわこく': ["🇨🇩"],
  'こんさーてぃーな': ["🪗"],
  'こんせんと': ["🔌"],
  'こんちゅう': ["🐝","🐛","🦋","🪲","🐞","🐜","🦗","🪳","🕷","🦟","🪰"],
  'こんとろーらー': ["🎮"],
  'こんとろーる': ["🎛"],
  'こんとろーるのぶ': ["🎛"],
  'こんにちは': ["👋","🫂"],
  'こんぱす': ["🧭"],
  'こんびにえんす': ["🏪"],
  'こんびにえんすすとあ': ["🏪"],
  'こんぴゅーた': ["🛜"],
  'こんぴゅーたー': ["💻","⌨","🖥","🖨","🖱","🖲","💾","💿","📀"],
  'こーすたー': ["🎢"],
  'こーと': ["🧥"],
  'こーとじぼわーる': ["🇨🇮"],
  'こーとじぼわーるこっき': ["🇨🇮"],
  'こーひー': ["☕"],
  'こーん': ["🌽"],
  'こーんうぉーる': ["🇬🇧"],
  'ご': ["5⃣","🕔","🕠"],
  'ごうい': ["🤝"],
  'ごうかく': ["🈴"],
  'ごうきゅう': ["😭"],
  'ごうしゅう': ["🇺🇸"],
  'ごうよくなかお': ["🤑"],
  'ごきげんななめ': ["🙁"],
  'ごきぶり': ["🪳"],
  'ごはん': ["🍚","🍛"],
  'ごふ': ["🧿"],
  'ごみ': ["🗑","🚯","🚮"],
  'ごみすてじょう': ["🚮"],
  'ごみばこ': ["🗑","🚮"],
  'ごみ箱': ["🗑"],
  'ごむせいさんだる': ["🩴"],
  'ごめんなさい': ["🙇♀","🙇","🙇♂"],
  'ごらく': ["🎩","📽"],
  'ごりら': ["🦍"],
  'ごるふ': ["🥏","⛳","🏌♀","🏌","🏌♂"],


des cauchemars",
  },
  [3370] = {
    ["D"] = "Cet éclat détient de grands secrets. Il s\'agit de l\'essence pure du Rêve d\'émeraude. Ce que je vois dans cet éclat n\'a rien d\'un rêve cependant. On pourrait même appeler ce genre de vision un cauchemar.$B$BMon souhait n\'est pas de vous alarmer, $N, mais je crois qu\'il serait mieux pour vous de remettre cet éclat aux mains d\'un grand druide, et ce dès que vous le pouvez.$B$BLa personne que vous devez trouver au Cercle cénarien se nomme Mathrengyl Pasdelours. Partez pour Darnassus. Je ne peux vous en dire plus.",
    ["O"] = "Apportez l\'Éclat de cauchemar à Mathrengyl Pasdelours à Darnassus.",
    ["T"] = "Au cœur des cauchemars",
  },
  [3371] = {
    ["D"] = "Il y a, à présent, un creux vide de sens, là où se trouvait autrefois mon cœur, $N. Je ne me remettrai pas de la perte de Dorius. Je dois faire en sorte que sa dernière volonté soit accomplie. Justice doit être rendue contre ceux qui ont commis ce meurtre de sang-froid.$B$BRetournez à la Gorge des Vents brûlants et respectez sa dernière volonté : libérez ses hommes. Les nains sombrefers forcent leurs esclaves à travailler dans une mine étouffante appelée la Fosse aux scories. Allez chercher les hommes de Dorius là-bas.",
    ["O"] = "Retourner à la Gorge des Vents brûlants et trouver l\'Equipe d\'archéologues de Dorius.",
    ["T"] = "La justice des nains",
  },
  [3372] = {
    ["D"] = "Libérez-les, $R. Leurs corps sont morts, mais la puissance de Suntara les oblige à achever leur travail.$B$BL\'autel de Suntara est la clé pour les libérer. Allez au nord-ouest, dans les collines au-dessus de la caverne… Le Marteau du crépuscule y garde une relique. Emparez-vous-en et placez-la sur l\'autel de Suntara.$B$B<L\'archéologue mourant s\'effondre.>",
    ["O"] = "Trouvez l\'Artéfact mystérieux gardé par les Idolâtres du Marteau du crépuscule dans le quart nord-ouest de la Gorge des Vents brûlants, et rapportez-le à l\'Autel de Suntara, dans la Fosse aux scories.",
    ["T"] = "La libération",
  },
  [3373] = {
    ["D"] = "Alors que vous touchez la gemme, une voix grave résonne dans votre esprit.$B$B« $GMortel:Mortelle;, considérez ma requête. Je suis Eranikus des dragons verts, gardien de ce temple maudit. J\'avais pour charge de m\'assurer que les trolls n\'amènent plus en ces lieux leurs dieux abominables. Mais j\'ai échoué. Alors que j\'imprègne cette gemme d\'une partie de mon essence, je sens que mon étreinte sur le Rêve s\'évanouit vers le néant. Je vous en prie, placez cette gemme dans le Réceptacle d\'essence de mon antre, et que notre magie en ces lieux purge l\'infection de mon esprit et me permette de reposer. »",
    ["O"] = "Placer l\'Essence d\'Eranikus dans le Réceptacle d\'essence situé dans son antre da


nvas, 0, 0, opts.width as number, opts.height as number);
	};

	/**重新缓存坐标轴和函数曲线 */
	private reCache() {
		let { coorCtx, funCtx } = this;
		this.cacheCoor(coorCtx);
		this.cacheFun(funCtx as CanvasRenderingContext2D, false, true);
	};

	private show() {
		this.drawCoor();
		this.cacheFun(this.ctx as CanvasRenderingContext2D, this.opts.animation);
	};

	/** 标记点 */
	private markPoint(ctx: CanvasRenderingContext2D, p: MarkPoint) {
		let { centerPos, opts } = this;
		if (!opts.width) throw new Error("opts.width is undefined!");
		if (!opts.height) throw new Error("opts.height is undefined!");
		if (!opts.xUnit) throw new Error("opts.xUnit is undefined!");
		if (!opts.yUnit) throw new Error("opts.yUnit is undefined!");
		if (!opts.domain) throw new Error("opts.domain is undefined!");
		if (!opts.fun) throw new Error("opts.fun is undefined!");
		if (!opts.range) throw new Error("opts.range is undefined!");

		let topMax = centerPos.y;//上边的边界
		let bottomMax = centerPos.y - opts.height;//下边的边界
		let rightMax = opts.width - centerPos.x;//右边的边界

		let xUnitConvert = opts.xUnit.convert as any;
		let yUnitConvert = opts.yUnit.convert as any;

		//若x不在定义域内，返回
		if (p.x === undefined || !opts.domain(xUnitConvert(p.x))) return;
		//先把坐标值转换为像素值
		let x = GraphFunction.value2pixel(p.x, opts.xUnit);
		p.y = p.y as any || opts.fun(p.x).toFixed(2);
		//若y不在值域内，返回
		if (!opts.range(yUnitConvert(p.y))) return;

		if (p.y == 0) p.y = 0;//保留小数位后，如果y为0.00，就赋值为0
		if (p.y as number - Math.floor(p.y as number) == 0) p.y = Math.floor(p.y as number);//如果y的小数部分为0，那么就抛弃小数部分
		p.mark = p.mark || "P";
		let y = GraphFunction.value2pixel(p.y as number, opts.yUnit);
		ctx.beginPath();
		ctx.save();
		ctx.strokeStyle = opts.markPointColor as string;
		ctx.lineWidth = opts.markPointLineWidth as number;
		ctx.fillStyle = opts.markPointColor as string;
		ctx.font = opts.markPointFontSize + "px 微软雅黑";
		ctx.setLineDash([3, 3]);

		let coor = this.centerCoor2CanvasCoor(x, y);
		if (p.showDotted === undefined || p.showDotted !== false) {
			ctx.drawLine(this.centerCoor2CanvasCoor(0, y), coor);
			ctx.drawLine(this.centerCoor2CanvasCoor(x, 0), coor);
		}
		ctx.stroke();

		//y的值没有超出画布高度，才有必要花点
		if (y > bottomMax && y < topMax) {
			ctx.beginPath();
			ctx.arc(coor.x, coor.y, opts.markPointRadius as number, 0, 2 * Math.PI);
			ctx.fill();
		}

		let xText = xUnitConvert(p.x) + opts.xUnit.suffix;
		let yText = yUnitConvert(p.y) + opts.yUnit.suffix;
		let coorText = p.mark + "( " + xText + "，" + yText + " )";
		let coorText


              interleaved_data[p*2*k_circles + 2*c + 1] = 0.5f + r * Sin((t_float)p/k_points_per * 6.28f);
            }
        }
        static int offset = 0;
        ImGui::BulletText("Offsetting is useful for realtime plots (see above) and circular buffers.");
        ImGui::BulletText("Striding is useful for interleaved data (e.g. audio) or plotting structs.");
        ImGui::BulletText("Here, all circle data is stored in a single interleaved buffer:");
        ImGui::BulletText("[c0.x0 c0.y0 ... cn.x0 cn.y0 c0.x1 c0.y1 ... cn.x1 cn.y1 ... cn.xm cn.ym]");
        ImGui::BulletText("The offset value indicates which circle point index is considered the first.");
        ImGui::BulletText("Offsets can be negative and/or larger than the actual data count.");
        ImGui::SliderInt("Offset", &offset, -2*k_points_per, 2*k_points_per);
        if (ImPlot::BeginPlot("##strideoffset")) {
            ImPlot::SetColormap(ImPlotColormap_Jet);
            char buff[16];
            for (int c = 0; c < k_circles; ++c) {
                sprintf(buff, "Circle %d", c);
                ImPlot::PlotLine(buff, &interleaved_data[c*2 + 0], &interleaved_data[c*2 + 1], k_points_per, offset, 2*k_circles*sizeof(t_float));
            }
            ImPlot::EndPlot();
            ImPlot::SetColormap(ImPlotColormap_Default);
        }
        // offset++; uncomment for animation!
    }
    //-------------------------------------------------------------------------
    if (ImGui::CollapsingHeader("Custom Ticks")) {
        static bool custom_ticks  = true;
        static bool custom_labels = true;
        ImGui::Checkbox("Show Custom Ticks", &custom_ticks);
        if (custom_ticks) {
            ImGui::SameLine();
            ImGui::Checkbox("Show Custom Labels", &custom_labels);
        }
        double pi = 3.14;
        const char* pi_str[] = {"PI"};
        static double yticks[] = {1,3,7,9};
        static const char*  ylabels[] = {"One","Three","Seven","Nine"};
        static double yticks_aux[] = {0.2,0.4,0.6};
        static const char* ylabels_aux[] = {"A","B","C","D","E","F"};
        if (custom_ticks) {
            ImPlot::SetNextPlotTicksX(&pi,1,custom_labels ? pi_str : NULL, true);
            ImPlot::SetNextPlotTicksY(yticks, 4, custom_labels ? ylabels : NULL);
            ImPlot::SetNextPlotTicksY(yticks_aux, 3, custom_labels ? ylabels_aux : NULL, false, 1);
            ImPlot::SetNextPlotTicksY(0, 1, 6, custom_labels ? ylabels_aux : NULL, false, 2);
        }
        ImPlot::SetNextPlotLimits(2.5,5,0,10);
        if (ImPlot::BeginPlot("Custom Ticks", NULL, NULL, ImVec2(-1,0), ImPlotFlags_Default | ImPlotFlags_YAxis2 | ImPlotFlags_YAxis3)) {

            ImPlot::EndPlot();
        }
    }
    //-------------------------------------------------------------------------
    if (ImGui::CollapsingHeader("Custom Styles")) {
        static ImVec4 my_map[3] = {
            ImVec4(0.000f, 0.980f, 0.604f, 1.0f),
            ImVec4(0.996f, 0.278f, 0.380f, 1.0f),
            ImVec4(0.1176470593f, 0.5647059083f, 1.0f, 1.0f),
        };
        ImPlot::SetColormap(my_map


(downsample)    Sequential (
    (0)     Conv2d( in_channels=64 out_channels=256 kernel_size=(1, 1) stride=(1, 1) padding=(0, 0) dilation=(1, 1) groups=1 bias=0 )
    (1)     BatchNorm2d( num_features=256 eps=0.000010 momentum=0.100000 )
   )

  )

  (1)   Bottleneck (
   (conv1)    Conv2d( in_channels=256 out_channels=64 kernel_size=(1, 1) stride=(1, 1) padding=(0, 0) dilation=(1, 1) groups=1 bias=0 )
   (bn1)    BatchNorm2d( num_features=64 eps=0.000010 momentum=0.100000 )
   (conv2)    Conv2d( in_channels=64 out_channels=64 kernel_size=(3, 3) stride=(1, 1) padding=(1, 1) dilation=(1, 1) groups=1 bias=0 )
   (bn2)    BatchNorm2d( num_features=64 eps=0.000010 momentum=0.100000 )
   (conv3)    Conv2d( in_channels=256 out_channels=256 kernel_size=(1, 1) stride=(1, 1) padding=(0, 0) dilation=(1, 1) groups=1 bias=0 )
   (bn3)    BatchNorm2d( num_features=256 eps=0.000010 momentum=0.100000 )
  )

  (2)   Bottleneck (
   (conv1)    Conv2d( in_channels=256 out_channels=64 kernel_size=(1, 1) stride=(1, 1) padding=(0, 0) dilation=(1, 1) groups=1 bias=0 )
   (bn1)    BatchNorm2d( num_features=64 eps=0.000010 momentum=0.100000 )
   (conv2)    Conv2d( in_channels=64 out_channels=64 kernel_size=(3, 3) stride=(1, 1) padding=(1, 1) dilation=(1, 1) groups=1 bias=0 )
   (bn2)    BatchNorm2d( num_features=64 eps=0.000010 momentum=0.100000 )
   (conv3)    Conv2d( in_channels=256 out_channels=256 kernel_size=(1, 1) stride=(1, 1) padding=(0, 0) dilation=(1, 1) groups=1 bias=0 )
   (bn3)    BatchNorm2d( num_features=256 eps=0.000010 momentum=0.100000 )
  )

 )

 /*  .... */

 (avgpool)  AvgPool2d( kernel_size=(7, 7) stride=(1, 1) padding=(0, 0) )
 (fc)  nn.Linear( in_features=2048 out_features=1000 bias=1 )
)
```

### Inspect a Tensor

```c++
auto net = torch::resnet50_imagenet();

net->load_weights("../resnet50_imagenet.h5");
net->cuda();

Tensor dummy_input = CUDA(kFloat).ones({1, 3, 224, 224});

auto result = net->forward(dummy_input);

cout << result << endl;
```

```
Columns 1 to 10-0.3081  0.0798 -1.1900 -1.4837 -0.5136  0.3683 -2.1639 -0.8705 -1.8812 -0.1608

Columns 11 to 20 0.2168 -0.9283 -1.2954 -1.0791 -1.4445 -0.8946 -0.0959 -1.3099 -1.2062 -1.2327

Columns 21 to 30-1.0658  0.9427  0.5739 -0.2746 -1.0189 -0.3583 -0.1826  0.2785  0.2209 -0.3340

Columns 31 to 40-1.9800 -0.5552 -1.0804 -0.8056 -0.0005 -1.8402 -0.7979 -1.4823  1.3657 -0.8970

/*  .... */

Columns 961 to 970-0.0557 -0.7405 -0.5501 -1.7207 -0.7043 -1.0925  1.5812 -0.1215  0.8915  0.9794

Columns 971 to 980-1.1422 -0.1235 -0.5999 -2.1338 -0.0775 -0.8374 -0.2350 -0.0104


  LiteralType,
  Mixed,
  NullType,
  NumberType,
  PartialType,
  ReadonlyArrayC,
  ReadonlyArrayType,
  ReadonlyType,
  RefinementType,
  StringType,
  TupleType,
  Type,
  TypeOf,
  UndefinedType,
  UnionType,
  unknown,
  VoidType,
} from 'io-ts'
import { mapValues, range } from 'lodash-es'
// import uid from 'uid'

import Chance from 'chance'
import { ObjType } from '../safe'

const chance = new Chance.Chance()

export const defaultOptions = {
  integer: { min: 100, max: 1000 },
  floating: { min: 0, max: 100, fixed: 2 },
  sentence: { words: 4 },
  array: { minLength: 0, maxLength: 6 },
}

export type FakeOptions = typeof defaultOptions

/* eslint-disable functional/immutable-data */
/* eslint-disable @typescript-eslint/no-unsafe-return */
/* eslint-disable @typescript-eslint/no-unsafe-call */
/* eslint-disable @typescript-eslint/no-unsafe-member-access */

const repeatedly = <T>(n: number, f: (index: number) => T): readonly T[] =>
  range(n).map(i => f(i))

function fakeArrayFromType<T extends Mixed>(
  spec: T,
  options: FakeOptions,
): ReadonlyArray<TypeOf<typeof spec>> {
  const n = chance.integer({
    min: options.array.minLength,
    max: options.array.maxLength,
  })

  return repeatedly(n, () => fake(spec, options))
}

function fakeArray<T extends Mixed>(
  spec: ArrayC<T> | ReadonlyArrayC<T>,
  options: FakeOptions,
): TypeOf<typeof spec> {
  return fakeArrayFromType(spec.type, options)
}

export function fake<T extends Mixed>(
  spec: T,
  options: FakeOptions = defaultOptions,
): TypeOf<typeof spec> {
  if (spec.name === 'Int' || spec.name === 'NumID') {
    return chance.integer(options.integer)
  }

  // if (spec.name === 'StrID') {
  //   return uid()
  // }

  // if (spec instanceof OptionType) {
  //   return fake(spec.spec)
  // }

  if (spec instanceof NumberType) {
    return chance.floating(options.floating)
  }

  if (spec instanceof StringType) {
    return chance.sentence(options.sentence)
  }

  if (spec instanceof BooleanType) {
    return chance.bool()
  }

  if (spec.name === 'Date') {
    return chance.date()
  }

  if (spec.name === 'DateFromISOString') {
    return chance.date()
  }

  if (spec instanceof KeyofType) {
    return chance.pickone(Object.keys(spec.keys))
  }

  // if (spec instanceof EnumType) {
  //   return chance.pickone(spec.keys)
  // }

  if (spec instanceof LiteralType) {
    // eslint-disable-next-line @typescript-eslint/no-unsafe-return
    return spec.value
  }

  if (spec instanceof NullType) {
    return null
  }

  if (spec instanceof UndefinedType || spec instanceof VoidType) {
    return undefined
  }

  if (
    spec instanceof ReadonlyType ||
    spec instanceof ExactType ||
    spec instanceof RefinementType // No easy way to do this correctly?
  ) {
    return fake(spec.type, options)
  }

  if (spec instanceof ReadonlyArrayType) {
    return fakeArrayFromType(spec.type, options)
  }

  if (spec instanceof AnyArrayType) {
    return fakeArrayFromType(unknown, options)
  }

  if (spec instanceof ArrayType) {
    return fakeArray(spec, options)
  }

  if (
    spec instanceof Inter


dcats@_Locinfo@std@@QEAAAEAV12@HPEBD@Z\"")
#pragma comment(linker, "/export:?_Addfac@_Locimp@locale@std@@AEAAXPEAVfacet@23@_K@Z=\"C:\\Windows\\System32\\msvcp140d.?_Addfac@_Locimp@locale@std@@AEAAXPEAVfacet@23@_K@Z\"")
#pragma comment(linker, "/export:?_Addstd@ios_base@std@@SAXPEAV12@@Z=\"C:\\Windows\\System32\\msvcp140d.?_Addstd@ios_base@std@@SAXPEAV12@@Z\"")
#pragma comment(linker, "/export:?_Assign@_ContextCallback@details@Concurrency@@AEAAXPEAX@Z=\"C:\\Windows\\System32\\msvcp140d.?_Assign@_ContextCallback@details@Concurrency@@AEAAXPEAX@Z\"")
#pragma comment(linker, "/export:?_Atexit@@YAXP6AXXZ@Z=\"C:\\Windows\\System32\\msvcp140d.?_Atexit@@YAXP6AXXZ@Z\"")
#pragma comment(linker, "/export:?_BADOFF@std@@3_JB=\"C:\\Windows\\System32\\msvcp140d.?_BADOFF@std@@3_JB\"")
#pragma comment(linker, "/export:?_C_str@?$_Yarn@D@std@@QEBAPEBDXZ=\"C:\\Windows\\System32\\msvcp140d.?_C_str@?$_Yarn@D@std@@QEBAPEBDXZ\"")
#pragma comment(linker, "/export:?_C_str@?$_Yarn@G@std@@QEBAPEBGXZ=\"C:\\Windows\\System32\\msvcp140d.?_C_str@?$_Yarn@G@std@@QEBAPEBGXZ\"")
#pragma comment(linker, "/export:?_C_str@?$_Yarn@_W@std@@QEBAPEB_WXZ=\"C:\\Windows\\System32\\msvcp140d.?_C_str@?$_Yarn@_W@std@@QEBAPEB_WXZ\"")
#pragma comment(linker, "/export:?_CallInContext@_ContextCallback@details@Concurrency@@QEBAXV?$function@$$A6AXXZ@std@@_N@Z=\"C:\\Windows\\System32\\msvcp140d.?_CallInContext@_ContextCallback@details@Concurrency@@QEBAXV?$function@$$A6AXXZ@std@@_N@Z\"")
#pragma comment(linker, "/export:?_Callfns@ios_base@std@@AEAAXW4event@12@@Z=\"C:\\Windows\\System32\\msvcp140d.?_Callfns@ios_base@std@@AEAAXW4event@12@@Z\"")
#pragma comment(linker, "/export:?_Capture@_ContextCallback@details@Concurrency@@AEAAXXZ=\"C:\\Windows\\System32\\msvcp140d.?_Capture@_ContextCallback@details@Concurrency@@AEAAXXZ\"")
#pragma comment(linker, "/export:?_Clocptr@_Locimp@locale@std@@0PEAV123@EA=\"C:\\Windows\\System32\\msvcp140d.?_Clocptr@_Locimp@locale@std@@0PEAV123@EA\"")
#pragma comment(linker, "/export:?_Debug_message@std@@YAXPEBG0I@Z=\"C:\\Windows\\System32\\msvcp140d.?_Debug_message@std@@YAXPEBG0I@Z\"")
#pragma comment(linker, "/export:?_Debug_message@std@@YAXPEB_W0I@Z=\"C:\\Windows\\System32\\msvcp140d.?_Debug_message@std@@YAXPEB_W0I@Z\"")
#pragma comment(linker, "/export:?_Decref@facet@locale@std@@UEAAPEAV_Facet_base@3@XZ=\"C:\\Windows\\System32\\msvcp140d.?_Decref@f


erify(t,e,r.alg))},st.jws.JWS.includedArray=function(t,e){var r=st.jws.JWS.inArray;if(null===t)return!1;if("object"!=typeof t)return!1;if("number"!=typeof t.length)return!1;for(var n=0;n<t.length;n++)if(!r(t[n],e))return!1;return!0},st.jws.JWS.inArray=function(t,e){if(null===e)return!1;if("object"!=typeof e)return!1;if("number"!=typeof e.length)return!1;for(var r=0;r<e.length;r++)if(e[r]==t)return!0;return!1},st.jws.JWS.jwsalg2sigalg={HS256:"HmacSHA256",HS384:"HmacSHA384",HS512:"HmacSHA512",RS256:"SHA256withRSA",RS384:"SHA384withRSA",RS512:"SHA512withRSA",ES256:"SHA256withECDSA",ES384:"SHA384withECDSA",ES512:"SHA512withECDSA",PS256:"SHA256withRSAandMGF1",PS384:"SHA384withRSAandMGF1",PS512:"SHA512withRSAandMGF1",none:"none"},st.jws.JWS.isSafeJSONString=function(t,e,n){var o=null;try{return"object"!=typeof(o=ot(t))||o.constructor===Array?0:(e&&(e[n]=o),1)}catch(r){return 0}},st.jws.JWS.readSafeJSONString=function(t){var e=null;try{return"object"!=typeof(e=ot(t))||e.constructor===Array?null:e}catch(r){return null}},st.jws.JWS.getEncodedSignatureValueFromJWS=function(t){var e=t.match(/^[^.]+\.[^.]+\.([^.]+)$/);if(null==e)throw"JWS signature is not a form of 'Head.Payload.SigValue'.";return e[1]},st.jws.JWS.getJWKthumbprint=function(t){if("RSA"!==t.kty&&"EC"!==t.kty&&"oct"!==t.kty)throw"unsupported algorithm for JWK Thumprint";var e="{";if("RSA"===t.kty){if("string"!=typeof t.n||"string"!=typeof t.e)throw"wrong n and e value for RSA key";e+='"e":"'+t.e+'",',e+='"kty":"'+t.kty+'",',e+='"n":"'+t.n+'"}'}else if("EC"===t.kty){if("string"!=typeof t.crv||"string"!=typeof t.x||"string"!=typeof t.y)throw"wrong crv, x and y value for EC key";e+='"crv":"'+t.crv+'",',e+='"kty":"'+t.kty+'",',e+='"x":"'+t.x+'",',e+='"y":"'+t.y+'"}'}else if("oct"===t.kty){if("string"!=typeof t.k)throw"wrong k value for oct(symmetric) key";e+='"kty":"'+t.kty+'",',e+='"k":"'+t.k+'"}'}var r=wt(e);return _t(st.crypto.Util.hashHex(r,"sha256"))},st.jws.IntDate={},st.jws.IntDate.get=function(t){var e=st.jws.IntDate,r=e.getNow,n=e.getZulu;if("now"==t)return r();if("now + 1hour"==t)return r()+3600;if("now + 1day"==t)return r()+86400;if("now + 1month"==t)return r()+2592e3;if("now + 1year"==t)return r


mate(parent, output, subdivisionBuffer1, subdivisionBuffer2, count + 1)
                freeBuffers.push(parent)
                continue
            }

            // If we do not yet have a sufficiently "flat" (in other words, detailed) approximation we keep
            // subdividing the curve we are currently operating on.
            val rightChild = if (freeBuffers.isNotEmpty()) freeBuffers.pop() else arrayOfNulls(count + 1)
            bezierSubdivide(parent, subdivisionBuffer2, rightChild, subdivisionBuffer1, count + 1)

            // We re-use the buffer of the parent for one of the children, so that we save one allocation per iteration.
            if (count + 1 >= 0) {
                System.arraycopy(subdivisionBuffer2, 0, parent, 0, count + 1)
            }

            toFlatten.push(rightChild)
            toFlatten.push(parent)
        }
        output.add(controlPoints[count])
        return output
    }

    /**
     * Creates a piecewise-linear approximation of a Catmull-Rom spline.
     *
     * @param controlPoints The control points.
     */
    fun approximateCatmull(controlPoints: List<Vector2>): MutableList<Vector2> {
        val result = mutableListOf<Vector2>()

        for (i in 0 until controlPoints.size - 1) {
            val v1 = if (i > 0) controlPoints[i - 1] else controlPoints[i]
            val v2 = controlPoints[i]
            val v3 = if (i < controlPoints.size - 1) controlPoints[i + 1] else v2 + v2 - v1
            val v4 = if (i < controlPoints.size - 2) controlPoints[i + 2] else v3 + v3 - v2

            for (c in 0 until CATMULL_DETAIL) {
                result.add(catmullFindPoint(v1, v2, v3, v4, c.toFloat() / CATMULL_DETAIL))
                result.add(catmullFindPoint(v1, v2, v3, v4, (c + 1).toFloat() / CATMULL_DETAIL))
            }
        }

        return result
    }

    /**
     * Creates a piecewise-linear approximation of a circular arc curve.
     *
     * @param controlPoints The control points.
     */
    fun approximateCircularArc(controlPoints: List<Vector2>): MutableList<Vector2> {
        if (controlPoints.size != 3) {
            return approximateBezier(controlPoints)
        }

        val a = controlPoints[0]
        val b = controlPoints[1]
        val c = controlPoints[2]

        // If we have a degenerate triangle where a side-length is almost zero, then give up and fall
        // back to a more numerically stable method.
        if (almostEquals(0f, (b.y - a.y) * (c.x - a.x) - (b.x - a.x) * (c.y - a.y))) {
            return approximateBezier(controlPoints)
        }

        // See: https://en.wikipedia.org/wiki/Circumscribed_circle#Cartesian_coordinates_2
        val d = 2 * (a.x * (b -c).y + b.x * (c - a).y + c.x * (a - b).y)
        val aSq = a.lengthSquared
        val bSq = b.lengthSquared
        val cSq = c.lengthSquared

        val center: Vector2 = Vector2(
            aSq * (b - c).y + bSq * (c - a).y + cSq * (a - b).y,
            aSq * (c - b).x + bSq * (a - c).x + cSq * (b - a).x
        ) / d

        val dA = a - center
        val dC = c - center

        val radius = dA.length
        val thetaStart = atan2(dA.y.toDouble(), dA.x.toDouble())
        var thetaEnd = atan2(dC.y.toDouble(), dC.x.toDouble())

        while (thetaEnd < thetaStart) {
            thetaEnd += 2 * Math.PI
        }

        var direction = 1.0
        var thetaRange = thetaEnd - thetaStart

        // Decide in which direction to draw the circle, depending on which side of
        // AC B lies.


3-7.3-.13-.11c-.84-.7-2.06-.7-2.9 0l-.13.12-7.43 7.3c-.31-.5-.49-1.08-.49-1.71V6.25C3 4.45 4.46 3 6.25 3h12.5ZM16.5 7.25a1.25 1.25 0 1 0 0 2.5 1.25 1.25 0 0 0 0-2.5Z\"/>") { } }
    public class ImageOff : Icon { public ImageOff() : base("ImageOff", IconVariant.Filled, IconSize.Size28, "<path d=\"M3.28 2.22a.75.75 0 1 0-1.06 1.06l1.4 1.4c-.4.6-.62 1.3-.62 2.07v14.5c0 .76.23 1.48.62 2.07l8.97-8.97a2 2 0 0 1 .4-.3l1.35 1.36a.5.5 0 0 0-.7 0l-8.96 8.97c.6.4 1.3.62 2.07.62h14.5c.76 0 1.48-.23 2.07-.62l1.4 1.4a.75.75 0 0 0 1.06-1.06L3.28 2.22Zm2.94.82 18.74 18.74c.03-.17.04-.35.04-.53V6.75A3.75 3.75 0 0 0 21.25 3H6.75c-.18 0-.36.01-.53.04ZM21.75 9a2.25 2.25 0 1 1-4.5 0 2.25 2.25 0 0 1 4.5 0Z\"/>") { } }
    public class ImageTable : Icon { public ImageTable() : base("ImageTable", IconVariant.Filled, IconSize.Size28, "<path d=\"M6.5 3A3.75 3.75 0 0 0 3 6.5h3.5V3ZM3 8v12h3.5V8H3Zm5-1.5h12V3H8v3.5ZM21.5 3v3.5H25A3.75 3.75 0 0 0 21.5 3ZM25 8h-3.5v12H25V8Zm0 13.5h-3.5V25a3.75 3.75 0 0 0 3.5-3.5ZM20 25v-3.5H8V25h12ZM6.5 25v-3.5H3A3.75 3.75 0 0 0 6.5 25ZM8 19.16l4.59-4.58a2 2 0 0 1 2.82 0L20 19.17V8H8v11.17ZM15.5 11a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Zm3.2 9-4.35-4.35a.5.5 0 0 0-.7 0L9.29 20h9.42Z\"/>") { } }
    public class ImmersiveReader : Icon { public ImmersiveReader() : base("ImmersiveReader", IconVariant.Filled, IconSize.Size28, "<path d=\"M11.5 4c.98 0 1.86.4 2.5 1.05A3.49 3.49 0 0 1 16.5 4H24a2 2 0 0 1 2 2v9.52a1.75 1.75 0 0 0-2-.35V6h-7.5c-.83 0-1.5.67-1.5 1.5V17h-.25c-.97 0-1.75.78-1.75 1.75V7.5c0-.83-.67-1.5-1.5-1.5H4v16h7.5c.83 0 1.5-.67 1.5-1.5v1.75c0 .45.17.85.44 1.16-.55.37-1.22.59-1.94.59H4a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h7.5ZM21 23.98l.02.02H21v-.02Zm-1.49-7


: return
            RevealFileAction.openDirectory(targetPath)
        }

        private fun getTargetPath(): Path? {
            val selectedRow = table.selectedRow
            val item = table.model.getItem(table.convertRowIndexToModel(selectedRow))
            val targetDirectory = item.modDirectory ?: return null
            return targetDirectory.toPathOrNull()
        }
    }

    /**
     * 打开模组的Steam创意工坊页面。（直接在Steam应用中打开）
     */
    class OpenModPageInSteamAction(
        private val table: ParadoxModDependenciesTable
    ) : DumbAwareAction(PlsIcons.General.Steam) {
        init {
            templatePresentation.text = PlsBundle.message("mod.dependencies.popup.action.OpenModPageInSteam.text")
            templatePresentation.description = PlsBundle.message("mod.dependencies.popup.action.OpenModPageInSteam.description")
        }

        override fun getActionUpdateThread() = ActionUpdateThread.EDT

        override fun update(e: AnActionEvent) {
            val presentation = e.presentation
            presentation.isEnabled = getSteamId() != null
            if (presentation.isVisible) {
                val targetUrl = getTargetUrl()
                if (targetUrl != null) {
                    presentation.description = templatePresentation.description + " (" + targetUrl + ")"
                }
            }
        }

        override fun actionPerformed(e: AnActionEvent) {
            val targetUrl = getTargetUrl() ?: return //ignore
            BrowserUtil.open(targetUrl)
        }

        private fun getTargetUrl(): String? {
            val steamId = getSteamId() ?: return null
            return PlsFacade.getDataProvider().getSteamWorkshopUrlInSteam(steamId)
        }

        private fun getSteamId(): String? {
            val selectedRow = table.selectedRow
            val item = table.model.getItem(table.convertRowIndexToModel(selectedRow))
            return PlsFacade.getProfilesSettings().modDescriptorSettings.getValue(item.modDirectory.orEmpty()).remoteId
        }
    }

    /**
     * 打开模组的Steam创意工坊页面。
     */
    class OpenModPageInSteamWebsiteAction(
        private val table: ParadoxModDependenciesTable
    ) : DumbAwareAction(PlsIcons.General.Steam) {
        init {
            templatePresentation.text = PlsBundle.message("mod.dependencies.popup.action.OpenModPageInSteamWebsite.text")
            templatePresentation.description = PlsBundle.message("mod.dependencies.popup.action.OpenModPageInSteamWebsite.description")
        }

        override fun getActionUpdateThread() = ActionUpdateThread.EDT

        override fun update(e: AnActionEvent) {
            val presentation = e.presentation
            presentation.isEnabled = getSteamId() != null
            if (presentation.isVisible) {
                val targetUrl = getTargetUrl()
                if (targetUrl != null) {
                    presentation.description = templatePresentation.description + " (" + targetUrl + ")"
                }
            }
        }

        override fun actionPerformed(e: AnActionEvent) {
            val targetUrl = getTargetUrl() ?: return //ignore
            BrowserUtil.open(targetUrl)
        }

        private fun getTargetUrl(): String? {
            val steamId = getSteamId() ?: return null
            return PlsFacade.getDataProvider().getSteamWorkshopUrl(steamId)
        }

        private fun getSteamId(): String? {
            val selectedRow = table.selectedRow
            val item = table.model.getItem(table.convertRowIndexToModel(selectedRow))
            return PlsFacade.getProfilesSettings().modDescriptorSettings.getValue(item.modDirectory.orEmpty()).remoteId
        }
    }


产过程的稳定性分析
- 可靠性工程中的寿命分布

**信号处理**：
- 噪声的分布
- 信号幅度的分布
- 通信系统中的误码率

## 中心极限定理

### 定理内容

设 $X_1, X_2, \ldots, X_n$ 是独立同分布的随机变量，期望为 $\mu$，方差为 $\sigma^2$，则当 $n$ 充分大时，标准化随机变量：

$$Z_n = \frac{\sum_{i=1}^{n} X_i - n\mu}{\sigma\sqrt{n}}$$

近似服从标准正态分布 $N(0, 1)$。

### 实际意义

中心极限定理解释了为什么正态分布在自然界中如此普遍：
- 许多现象是大量独立因素综合作用的结果
- 即使单个因素不服从正态分布，其和也近似正态分布
- 这为统计推断提供了理论基础

## 与其他分布的关系

### 1. 与二项分布的关系

当 $n$ 很大且 $p$ 不接近0或1时，二项分布 $B(n, p)$ 近似于正态分布 $N(np, np(1-p))$。

### 2. 与泊松分布的关系

当 $\lambda$ 很大时，泊松分布 $P(\lambda)$ 近似于正态分布 $N(\lambda, \lambda)$。

### 3. 与卡方分布的关系

标准正态分布的平方服从自由度为1的卡方分布：
$Z^2 \sim \chi^2(1)$

### 4. 与t分布的关系

t分布是标准正态分布与卡方分布的组合，用于小样本统计推断。

## 实际计算示例

### 示例1：标准化计算

**问题**：设 $X \sim N(100, 16)$，求 $P(95 \leq X \leq 105)$。

**解答**：
1. 标准化：$Z = \frac{X - 100}{4}$
2. $P(95 \leq X \leq 105) = P(-1.25 \leq Z \leq 1.25)$
3. $= \Phi(1.25) - \Phi(-1.25) = 2\Phi(1.25) - 1 \approx 0.7887$

### 示例2：分位数计算

**问题**：求标准正态分布的95%分位数。

**解答**：
- 需要找到 $z$ 使得 $P(Z \leq z) = 0.95$
- 查表得 $z \approx 1.645$

### 示例3：质量控制

**问题**：某产品的长度服从 $N(10, 0.04)$，规格为 $10 \pm 0.3$，求合格率。

**解答**：
1. 标准化：$Z = \frac{X - 10}{0.2}$
2. $P(9.7 \leq X \leq 10.3) = P(-1.5 \leq Z \leq 1.5)$
3. $= 2\Phi(1.5) - 1 \approx 0.8664$


_b[i][j] > 0 {
                match best {
                    Some(b) => best = Some(min(b, path_a[i][j] + path_b[i][j])),
                    None => best = Some(path_a[i][j] + path_b[i][j]),
                }
            }
        }
    }

    best.expect("No solution found for part 2")
}

fn check(path_a: &[Vec<usize>], path_b: &[Vec<usize>], x: isize, y: isize) -> bool {
    path_a[(SHIFT + x) as usize][(SHIFT + y) as usize] > 0
        && path_b[(SHIFT + x) as usize][(SHIFT + y) as usize] > 0
}

fn path(steps: &[Step]) -> Vec<Vec<usize>> {
    let mut ret = vec![vec![0; MAP_SIZE]; MAP_SIZE];

    let mut curr = (MAP_SIZE / 2, MAP_SIZE / 2);

    let mut dist = 0;

    for step in steps {
        for _ in 0..step.len() {
            match step {
                Step::Down(_) => curr = (curr.0, curr.1 - 1),
                Step::Up(_) => curr = (curr.0, curr.1 + 1),
                Step::Left(_) => curr = (curr.0 - 1, curr.1),
                Step::Right(_) => curr = (curr.0 + 1, curr.1),
            }
            dist += 1;
            ret[curr.0][curr.1] = dist;
        }
    }

    ret
}

fn parse() -> Vec<Vec<Step>> {
    let mut content = String::new();

    File::open("res/day3.txt")
        .unwrap()
        .read_to_string(&mut content)
        .unwrap();

    content
        .split_ascii_whitespace()
        .map(|line| line.split(',').map(Step::from).collect())
        .collect()
}

#[derive(Debug)]
enum Step {
    Left(usize),
    Right(usize),
    Up(usize),
    Down(usize),
}

impl Step {
    pub fn len(&self) -> usize {
        match self {
            Self::Left(v) | Self::Right(v) | Self::Up(v) | Self::Down(v) => *v,
        }
    }
}

impl From<&str> for Step {
    fn from(s: &str) -> Self {
        let re = Regex::new("(L|R|U|D)([0-9]+)").unwrap();

        match re.captures(s) {
            Some(c) => {
                let n = c.get(2).unwrap().as_str().parse().unwrap();

                match c.get(1).unwrap().as_str() {
                    "L" => Self::Left(n),
                    "R" => Self::Right(n),
                    "U" => Self::Up(n),
                    "D" => Self::Down(n),
                    _ => panic!("Couldn't parse '{}' as a step", s),
                }
            }
            None => panic!("Couldn't parse {} as a step", s),
        }
    }
}
use std::cell::Cell;
use std::ops::{Deref, DerefMut};
use std::rc::Rc;

use glib::subclass::prelude::*;
use parking_lot::RwLock;

use super::highlights::HighlightDefinitions;

mod imp {
    use std::cell::Cell;
    use std::rc::Rc;

    use glib::subclass::prelude::*;
    use parking_lot::{RwLock, RwLockReadGuard};

    use crate::vimview::HighlightDefinitions;

    #[derive(Derivative)]
    #[derivative(Debug)]
    pub struct _TextBuf {
        rows: usize,
        cols: usize,

        #[derivative(Debug = "ignore")]
        cells: Box<[super::TextLine]>,
        metrics: Option<Rc<Cell<crate::metrics::Metrics>>>,

        #[derivative(Debug = "ignore")]
        hldefs: Option<Rc<RwLock<HighlightDefinitions>>>,

        #[derivative(Debug = "ignore")]
        pctx: Option<Rc<pango::Context>>,
    }

    impl Default for _TextBuf {
        fn default() -> Self {
            _TextBuf::new(1, 1)
        }


n', res[10]))
print(string.format('mAP@50: %6.4f\n', res[50]))

--file = io.open(opt.outfile, "w")
--io.output(file)
io.write(string.format('%.4f,%.4f,%.


449.07,237.75l-77.22,73.12H294.61l-67.6,64v-64H140.14V36.58H449.07Z"],
    "twitter": [512, 512, [], "f099", "M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"],
    "twitter-square": [448, 512, [], "f081", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8.2 5.7.2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3.6 10.4.8 15.8.8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.447 65.447 0 0 1-29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z"],
    "typo3": [448, 512, [], "f42b", "M178.7 78.4c0-2


一的，应当认定为刑法第三百五十三条第一款规定的“情节严重”：

（一）引诱、教唆、欺骗多人或者多次引诱、教唆、欺骗他人吸食、注射毒品的；

（二）对他人身体健康造成严重危害的；

（三）导致他人实施故意杀人、故意伤害、交通肇事等犯罪行为的；

（四）国家工作人员引诱、教唆、欺骗他人吸食、注射毒品的；

（五）其他情节严重的情形。

第十二条 容留他人吸食、注射毒品，具有下列情形之一的，应当依照刑法第三百五十四条的规定，以容留他人吸毒罪定罪处罚：

（一）一次容留多人吸食、注射毒品的；

（二）二年内多次容留他人吸食、注射毒品的；

（三）二年内曾因容留他人吸食、注射毒品受过行政处罚的；

（四）容留未成年人吸食、注射毒品的；

（五）以牟利为目的容留他人吸食、注射毒品的；

（六）容留他人吸食、注射毒品造成严重后果的；

（七）其他应当追究刑事责任的情形。

向他人贩卖毒品后又容留其吸食、注射毒品，或者容留他人吸食、注射毒品并向其贩卖毒品，符合前款规定的容留他人吸毒罪的定罪条件的，以贩卖毒品罪和容留他人吸毒罪数罪并罚。

容留近亲属吸食、注射毒品，情节显著轻微危害不大的，不作为犯罪处理；需要追究刑事责任的，可以酌情从宽处罚。

第十三条 依法从事生产、运输、管理、使用国家管制的麻醉药品、精神药品的人员，违反国家规定，向吸食、注射毒品的人提供国家规定管制的能够使人形成瘾癖的麻醉药品、精神药品，具有下列情形之一的，应当依照刑法第三百五十五条第一款的规定，以非法提供麻醉药品、精神药品罪定罪处罚：

（一）非法提供麻醉药品、精神药品达到刑法第三百四十七条第三款或者本解释第二条规定的“数量较大”标准最低值的百分之五十，不满“数量较大”标准的；

（二）二年内


qlType.int, requiredDuringInsert: false);
  static const VerificationMeta _idCardapioMeta =
      const VerificationMeta('idCardapio');
  @override
  late final GeneratedColumn<int> idCardapio = GeneratedColumn<int>(
      'ID_CARDAPIO', aliasedName, true,
      type: DriftSqlType.int,
      requiredDuringInsert: false,
      $customConstraints: 'NULLABLE REFERENCES CARDAPIO(ID)');
  static const VerificationMeta _perguntaMeta =
      const VerificationMeta('pergunta');
  @override
  late final GeneratedColumn<String> pergunta = GeneratedColumn<String>(
      'PERGUNTA', aliasedName, true,
      additionalChecks:
          GeneratedColumn.checkTextLength(minTextLength: 0, maxTextLength: 100),
      type: DriftSqlType.string,
      requiredDuringInsert: false);
  @override
  List<GeneratedColumn> get $columns => [id, idCardapio, pergunta];
  @override
  String get aliasedName => _alias ?? actualTableName;
  @override
  String get actualTableName => $name;
  static const String $name = 'CARDAPIO_PERGUNTA_PADRAO';
  @override
  VerificationContext validateIntegrity(
      Insertable<CardapioPerguntaPadrao> instance,
      {bool isInserting = false}) {
    final context = VerificationContext();
    final data = instance.toColumns(true);
    if (data.containsKey('ID')) {
      context.handle(_idMeta, id.isAcceptableOrUnknown(data['ID']!, _idMeta));
    }
    if (data.containsKey('ID_CARDAPIO')) {
      context.handle(
          _idCardapioMeta,
          idCardapio.isAcceptableOrUnknown(
              data['ID_CARDAPIO']!, _idCardapioMeta));
    }
    if (data.containsKey('PERGUNTA')) {
      context.handle(_perguntaMeta,
          pergunta.isAcceptableOrUnknown(data['PERGUNTA']!, _perguntaMeta));
    }
    return context;
  }

  @override
  Set<GeneratedColumn> get $primaryKey => {id};
  @override
  CardapioPerguntaPadrao map(Map<String, dynamic> data, {String? tablePrefix}) {
    final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : '';
    return CardapioPerguntaPadrao(
      id: attachedDatabase.typeMapping
          .read(DriftSqlType.int, data['${effectivePrefix}ID']),
      idCardapio: attachedDatabase.typeMapping
          .read(DriftSqlType.int, data['${effectivePrefix}ID_CARDAPIO']),
      pergunta: attachedDatabase.typeMapping
          .read(DriftSqlType.string, data['${effectivePrefix}PERGUNTA']),
    );
  }

  @override
  $CardapioPerguntaPadraosTable createAlias(String alias) {
    return $CardapioPerguntaPadraosTable(attachedDatabase, alias);
  }
}

class CardapioPerguntaPadrao extends DataClass
    implements Insertable<CardapioPerguntaPadrao> {
  final int? id;
  final int? idCardapio;
  final String? pergunta;
  const CardapioPerguntaPadrao({this.id, this.idCardapio, this.pergunta});
  @override
  Map<String, Expression> toColumns(bool nullToAbsent) {
    final map = <String, Expression>{};
    if (!nullToAbsent || id != null) {
      map['ID'] = Variable<int>(id);
    }
    if (!nullToAbsent || idCardapio != null) {
      map['ID_CARD


nvalidCal > 0) {
         std::stringstream ss;
         ss << "Calibrator produces '" << numInvalidRaw
            << "/" << nLat * nLon << " invalid ensembles for timestep " << t << ".";
         Util::warning(ss.str());
      }
   }
   return true;
}

float CalibratorZaga::getInvCdf(float iQuantile, float iEnsMean, float iEnsFrac, const Parameters& iParameters) {
   if(iQuantile < 0 || iQuantile >= 1) {
      Util::warning("Quantile must be in the interval [0,1)");
      return Util::MV;
   }
   if(!Util::isValid(iEnsMean) || !Util::isValid(iEnsFrac))
      return Util::MV;

   if(iEnsMean < 0 || iEnsFrac < 0 || iEnsFrac > 1)
      return Util::MV;

   // Check that parameters are valid
   for(int i =0; i < iParameters.size(); i++) {
      if(!Util::isValid(iParameters[i]))
         return Util::MV;
   }

   if(iQuantile == 0)
      return 0;

   // Check if we are in the discrete mass
   float P0 = getP0(iEnsMean, iEnsFrac, iParameters);
   if(!Util::isValid(P0))
      return Util::MV;
   if(iQuantile < P0)
      return 0;

   float mua = iParameters[0];
   float mub = iParameters[1];
   float sa  = iParameters[2];
   float sb  = iParameters[3];

   float quantileCont = (iQuantile-P0)/(1-P0);
   // Compute parameters of distribution (in same way as done in gamlss in R)
   float mu    = exp(mua + mub * pow(iEnsMean, 1.0/3));
   float sigma = exp(sa + sb * iEnsMean);

   if(mu <= 0 || sigma <= 0)
      return Util::MV;
   if(!Util::isValid(mu) || !Util::isValid(sigma))
      return Util::MV;

   // Parameters in boost and wikipedia
   float shape = 1/(sigma*sigma); // k
   float scale = sigma*sigma*mu;  // theta
   if(!Util::isValid(scale) || !Util::isValid(shape))
      return Util::MV;

   // std::cout << mu << " " << sigma << " " << P0 << " " << shape << " " << scale << std::endl;
   boost::math::gamma_distribution<> dist(shape, scale);
   float value = boost::math::quantile(dist, quantileCont);
   if(!Util::isValid(value))
      return Util::MV;
   return value;
}
float CalibratorZaga::getCdf(float iThreshold, float iEnsMean, float iEnsFrac, const Parameters& iParameters) {
   if(!Util::isValid(iThreshold) || !Util::isValid(iEnsMean) || !Util::isValid(iEnsFrac))
      return Util::MV;

   if(iEnsMean < 0 || iEnsFrac < 0 || iEnsFrac > 1)
      return Util::MV;

   if(iThreshold < 0)
      return 0;

   // Check that parameters are valid
   for(int i =0; i < iParameters.size(); i++) {
      if(!Util::isValid(iParameters[i]))
         return Util::MV;
   }

   // Check if we are in the discrete mass
   float P0 = getP0(iEnsMean, iEnsFrac, iParameters);
   if(!Util::isValid(P0))
      return Util::MV;
   if(iThreshold == 0)
      return P0;

   float mua = iParameters[0];
   float mub = iParameters[1];
   float sa  = iParameters[2];
   float sb  = iParameters[3];

   // Compute parameters of distribution (in same way as done in gamlss in R)
   float mu    = exp(mua + mub * pow(iEnsMean, 1.0/3));
   float sigma = exp(sa + sb * iEnsMean);

   // std::cout << mua << " " << mub << " " << sa << " " << sb << " " << mu << " " << sigma << std::endl;

   if(mu <= 0 || sigma <= 0)
      return Util::MV;
   if(!Util::isValid(mu) || !Util::isValid(sigma))
      return Util::MV;

   // Parameters in boost and wikipedia


ar Xτ fptower.E4
	Xτ.Sub(&Y2, &X3)
	p.Z.Mul(&Xτ, &XZ) // p.Z = Xτ * (q.X * q.Z)

	// --- Step 3: Compute the Y-coordinate of the intermediate point τ ---
	// Calculates Yτ = q.Y * (9*q.X^3 - 8*q.Y^2).
	// Reuses X3 and Y2 from previous steps.
	mulBy3(&X3) // X3 = 9*q.X^3
	var Yτ fptower.E4
	Yτ.Double(&Y2) // Yτ = 8*q.Y^2
	Yτ.Sub(&X3, &Yτ).Mul(&Yτ, &q.Y)

	// --- Step 4: Compute powers of the intermediate point's coordinates ---
	var Xτ2, Xτ3, Yτ2 fptower.E4
	Xτ2.Square(&Xτ)    // Xτ2 = Xτ^2
	Xτ3.Mul(&Xτ2, &Xτ) // Xτ3 = Xτ^3
	Yτ2.Square(&Yτ)    // Yτ2 = Yτ^2

	// --- Step 5: Compute the final X and Y coordinates of the result [3]q ---
	// This step re-applies the same transformation using (Xτ, Yτ) as input.
	// p.X = 4*Yτ^2 - 3*Xτ^3
	mulBy3(&Xτ3) // Xτ3 = 3*Xτ^3
	mulBy4(&Yτ2) // Yτ2 = 4*Yτ^2
	p.X.Sub(&Yτ2, &Xτ3)

	// p.Y = Yτ * (9*Xτ^3 - 8*Yτ^2)
	// Reuses Xτ3 and Yτ2 from the previous calculation.
	mulBy3(&Xτ3)     // Xτ3 = 9*Xτ^3
	Yτ2.Double(&Yτ2) // Yτ2 = 8*Yτ^2
	p.Y.Sub(&Xτ3, &Yτ2).Mul(&p.Y, &Yτ)

	// --- Step 6: Finalize the Z-coordinate ---
	// p.Z = 3 * p.Z = 3 * Xτ * (q.X * q.Z)
	mulBy3(&p.Z)

	return p
}

// ScalarMultiplication computes and returns p = [s]a
// where p and a are Jacobian points.
// using the GLV technique.
// see https://www.iacr.org/archive/crypto2001/21390189.pdf
func (p *G2Jac) ScalarMultiplication(q *G2Jac, s *big.Int) *G2Jac {
	if s.BitLen() >= g2ScalarMulChoose {
		return p.mulGLV(q, s)
	} else {
		return p.mulWindowed(q, s)
	}
}

// ScalarMultiplicationBase computes and returns p = [s]g
// where g is the prime subgroup generator.
func (p *G2Jac) ScalarMultiplicationBase(s *big.Int) *G2Jac {
	if s.BitLen() >= g2ScalarMulChoose {
		return p.mulGLV(&g2Gen, s)
	} else {
		return p.mulWindowed(&g2Gen, s)
	}

}

// String converts p to affine coordinates and returns its string representation E(x,y) or "O" if it is infinity.
func (p *G2Jac) String() string {
	_p := G2Affine{}
	_p.FromJacobian(p)
	return _p.String()
}

// FromAffine converts a point


able(V1_CGROUP_PATH)).thenReturn(true);
    when(filesystem.lines(V1_CGROUP_PATH)).thenReturn(Stream.of(line));

    CgroupV1ContainerIdExtractor extractor = new CgroupV1ContainerIdExtractor(filesystem);
    Optional<String> result = extractor.extractContainerId();
    assertThat(result).isEmpty();
  }

  @ParameterizedTest
  @MethodSource("validLines")
  void validCgroupLines(String line, String expectedContainerId) throws IOException {
    when(filesystem.isReadable(V1_CGROUP_PATH)).thenReturn(true);
    when(filesystem.lines(V1_CGROUP_PATH)).thenReturn(Stream.of(line));

    CgroupV1ContainerIdExtractor extractor = new CgroupV1ContainerIdExtractor(filesystem);
    Optional<String> result = extractor.extractContainerId();
    assertThat(result.orElse("fail")).isEqualTo(expectedContainerId);
  }

  // See https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7437
  @Test
  void hostStyleCgroupFile() throws IOException {
    String line = "1:name=systemd:/user.slice/user-0.slice/session-31207.scope";
    when(filesystem.isReadable(V1_CGROUP_PATH)).thenReturn(true);
    when(filesystem.lines(V1_CGROUP_PATH)).thenReturn(Stream.of(line));

    CgroupV1ContainerIdExtractor extractor = new CgroupV1ContainerIdExtractor(filesystem);
    Optional<String> result = extractor.extractContainerId();
    assertThat(result).isEmpty();
  }

  static Stream<Arguments> validLines() {
    return Stream.of(
        // with suffix
        arguments(
            "13:name=systemd:/podruntime/docker/kubepods/ac679f8a8319c8cf7d38e1adf263bc08d231f2ff81abda3915f6e8ba4d64156a.aaaa",
            "ac679f8a8319c8cf7d38e1adf263bc08d231f2ff81abda3915f6e8ba4d64156a"),
        // with prefix and suffix
        arguments(
            "13:name=systemd:/podruntime/docker/kubepods/crio-dc679f8a8319c8cf7d38e1adf263bc08d234f0749ea715fb6ca3bb259db69956.stuff",
            "dc679f8a8319c8cf7d38e1adf263bc08d234f0749ea715fb6ca3bb259db69956"),
        // just container id
        arguments(
            "13:name=systemd:/pod/d86d75589bf6cc254f3e2cc29debdf85dde404998aa128997a819ff991827356",
            "d86d75589bf6cc254f3e2cc29debdf85dde404998aa128997a819ff991827356"),
        // with prefix
        arguments(
            "//\n"
                + "1:name=systemd:/podruntime/docker/kubepods/docker-dc579f8a8319c8cf7d38e1adf263bc08d230600179b07acfd7eaf9646778dc31"
                + "2:name=systemd:/podruntime/docker/kubepods/docker-dc579f8a8319c8cf7d38e1adf263bc08d230600179b07acfd7eaf9646778dc31"
                + "3:name=systemd:/podruntime/docker/kubepods/docker-dc579f8a8319c8cf7d38e1adf263bc08d230600179b07acfd7eaf9646778dc31",
            "dc579f8a8319c8cf7d38e1adf263bc08d230600179b07acfd7eaf9646778dc31"),
        // with two dashes in prefix
        arguments(
            "11:perf_event:/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod4415fd05_2c0f_4533_909b_f2180dca8d7c.slice/cri-containerd-713a77a26fe2a38


osition 1
F7 - save position 2
F8 - load position 2

escape - exit";

	public float keyNotPressedForSeconds = 0;

	private void Update()
	{
		if (Input.anyKey) keyNotPressedForSeconds = 0;
		else keyNotPressedForSeconds += Time.deltaTime;
	}

	private void OnGUI()
	{
		var restore = GUI.skin.label.alignment;
		GUI.skin.label.alignment = TextAnchor.UpperRight;
		if (keyNotPressedForSeconds > 1)
			GUI.Label(new Rect(5, 5, Screen.width - 10, Screen.height - 10), text);

		GUI.skin.label.alignment = restore;
	}

}


ptionID)
	}
	if len(s.downlinkSubscriptions) == 0 {
		if s.downlink != nil {
			close(s.downlink)
			s.downlink = nil
		}
	}
}

func (s *schedule) Subscribe(subscriptionID string) <-chan *router_pb.DownlinkMessage {
	s.Lock()
	defer s.Unlock()
	if s.downlink == nil {
		s.downlink = make(chan *router_pb.DownlinkMessage)
		go func() {
			for downlink := range s.downlink {
				if s.gateway != nil && s.gateway.Utilization != nil {
					s.gateway.Utilization.AddTx(downlink) // FIXME: Issue #420
				}
				s.RLock()
				for subscriptionID, ch := range s.downlinkSubscriptions {
					select {
					case ch <- downlink:
					default:
						s.ctx.WithField("SubscriptionID", subscriptionID).Warn("Could not send downlink message")
					}
				}
				s.RUnlock()
			}
		}()
	}

	if _, ok := s.downlinkSubscriptions[subscriptionID]; ok {
		return nil
	}
	sub := make(chan *router_pb.DownlinkMessage)
	s.downlinkSubscriptions[subscriptionID] = sub

	return sub
}

func (s *schedule) IsActive() bool {
	s.RLock()
	defer s.RUnlock()
	return s.downlink != nil
}
// Copyright © 2017 The Things Network
// Use of this source code is governed by the MIT license that can be found in the LICENSE file.

package cayennelpp

import (
	"testing"

	protocol "github.com/TheThingsNetwork/go-cayenne-lib/cayennelpp"
	. "github.com/smartystreets/assertions"
)

func TestDecode(t *testing.T) {
	a := New(t)

	buf := []byte{
		1, protocol.DigitalInput, 255,
		2, protocol.DigitalOutput, 100,
		3, protocol.AnalogInput, 21, 74,
		4, protocol.AnalogOutput, 234, 182,
		5, protocol.Luminosity, 1, 244,
		6, protocol.Presence, 50,
		7, protocol.Temperature, 255, 100,
		8, protocol.RelativeHumidity, 99,
		9, protocol.Accelerometer, 254, 88, 0, 15, 6, 130,
		10, protocol.BarometricPressure, 41, 239,
		11, protocol.Gyrometer, 1, 99, 2, 49, 254, 102,
		12, protocol.GPS, 7, 253, 135, 0, 190, 245, 0, 8, 106,
	}

	decoder := new(Decoder)
	fields, valid, err := decoder.Decode(buf, 1)
	a.So(err, ShouldBeNil)
	a.So(valid, ShouldBeTrue)
	a.So(fields, ShouldHaveLength, 12)
	a.So(fields["digital_in_1"], ShouldEqual, 255)
	a.So(fields["digital_out_2"], ShouldEqual, 100)
	a.So(fields["analog_in_3"], ShouldEqual, 54.5)
	a.So(fields["analog_out_4"], ShouldEqual, -54.5)
	a.So(fields["luminosity_5"], ShouldEqual, 500)
	a.So(fields["presence_6"], ShouldEqual, 50)
	a.So(fields["temperature_7"], ShouldEqual, -15.6)
	a.So(fields["relative_humidity_8"], ShouldEqual, 49.5)
	a.So(fields["accelerometer_9"], ShouldResemble, map[string]float32{
		"x": -0.424,
		"y": 0.015,
		"z": 1.666,
	})
	a.So(fields["barometric_pressure_10"], ShouldEqual, 1073.5)
	a.So(fields["gyrometer_11"], ShouldResemble, map[string]float32{
		"x": 3.55,
		"y": 5.61,


li>Pricing

FAQ

Support

License Terms

Resources

Freebies

Documentation

Blog

Privacy Policy

Refund Policy

          Copyright © 2025 Phoenixcoded

<link rel="stylesheet" href="../assets/css/plugins/tiny-slider.css" />

Frequently Asked Questions

Answers to common queries about SaasAble.

          <button class="btn btn-primary btn-lg min-w-[215px]">Get in Touch</button>

            <div class="item


ions-rtl {
  direction: rtl;
}

/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
/* stylelint-disable no-duplicate-selectors */
/* stylelint-disable */
/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
.ant-modal,
.ant-image-preview {
  pointer-events: none;
}
.ant-modal.zoom-enter,
.ant-modal.zoom-appear,
.ant-image-preview.zoom-enter,
.ant-image-preview.zoom-appear {
  -webkit-transform: none;
          transform: none;
  opacity: 0;
  -webkit-animation-duration: 0.3s;
          animation-duration: 0.3s;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
}
.ant-modal-mask,
.ant-image-preview-mask {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1000;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.45);
  filter: alpha(opacity=50);
}
.ant-modal-mask-hidden,
.ant-image-preview-mask-hidden {
  display: none;
}
.ant-modal-wrap,
.ant-image-preview-wrap {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  overflow: auto;
  outline: 0;
  -webkit-overflow-scrolling: touch;
}
.ant-message {
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  margin: 0;
  padding: 0;
  color: rgba(0, 0, 0, 0.85);
  font-size: 14px;
  font-variant: tabular-nums;
  line-height: 1.5715;
  list-style: none;
  -webkit-font-feature-settings: 'tnum';
          font-feature-settings: 'tnum';
  position: fixed;
  top: 8px;
  left: 0;
  z-index: 1010;
  width: 100%;
  pointer-events: none;
}
.ant-message-notice {
  padding: 8px;
  text-align: center;
}
.ant-message-notice-content {
  display: inline-block;
  padding: 10px 16px;
  background: #fff;
  border-radius: 2px;
  -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);
          box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);
  pointer-events: all;
}
.ant-message-success .anticon {
  color: #52c41a;
}
.ant-message-error .anticon {
  color: #ff4d4f;
}
.ant-message-warning .anticon {
  color: #faad14;
}
.ant-message-info .anticon,
.ant-message-loading .anticon {
  color: #eb2f96;
}
.ant-message .anticon {
  position: relative;
  top: 1px;
  margin-right: 8px;
  font-size: 16px;
}
.ant-messag


lueInfo = valueParser.getValueInfo(attrName, attrValue)!!
        if (valueInfo.valueType <= ValueType.REFERENCE_ATTR) {
            usedReferenceRMap.putIfAbsent(valueInfo.valueWithoutPackageName, idMap[valueInfo.valueWithoutPackageName] ?: 0)
            /*idMap?.apply {
                valueInfo.value = idMap[valueInfo.valueWithoutPackageName]?.toString() ?: valueInfo.value
            }*/
        }
        return valueInfo
    }

    private fun getMethodParamType(paramType: String): ParamType {
        return typeMap[paramType] ?: ParamType.UN_SUPPORT
    }

}

enum class ParamType {
    UN_SUPPORT, INT, FLOAT, BOOLEAN, STRING, VALUE_INFO
}package com.qxml.transform.generate.tools

import com.qxml.tools.LayoutTypeNameCorrect
import com.qxml.transform.generate.GenResult
import com.qxml.transform.generate.ViewGenResultInfo
import java.io.File
import java.lang.StringBuilder

object GenReportTool {

    private const val TABLE_HEAD = "\n" +
            "
\n" +
            "
\n" +
            "        LayoutName	LayoutType	Info	\n" +
            "
"

    @JvmStatic
    fun genReport(reportFile: File, genResultMap: Map<String, HashMap<String, ViewGenResultInfo>>) {
        if (!reportFile.parentFile.exists()) {
            reportFile.parentFile.mkdirs()
        }
        if (!reportFile.exists()) {
            reportFile.createNewFile()
        }
        val stringBuilder = StringBuilder()
        stringBuilder.append(TABLE_HEAD).append("\n")
        genResultMap.forEach { (layoutName, hashMap) ->
            var firstLine = true
            hashMap.forEach { (layoutType, viewGenResultInfo) ->
                val firstClo = if (firstLine) {
                    firstLine = false
                    "${layoutName}	"
                } else ""
                val bgColor = if (viewGenResultInfo.result == GenResult.SUCCESS) "#ffffff" else "#fe2047"
                stringBuilder.append("
\n" +
                        "        ${firstClo}${LayoutTypeNameCorrect.toDisplayText(layoutType)}	${viewGenResultInfo.info}	\n" +
                        "
\n")
            }
        }
        stringBuilder.append("
")
        reportFile.writeText(stringBuilder.toString())
    }

}package com.qxml.transform.generate.match.resolver

import com.qxml.constant.Constants
import com.qxml.transform.AttrInfoModel
import com.qxml.transform.generate.value.Value


// ****************************************************************************
//
//                                 Save program
//
// ****************************************************************************

#include "def.h"

	.section	.text

#if USE_SAVE_ASM		// 1=use ASM in Save module

// ----------------------------------------------------------------------------
// clear unused space of program
// ----------------------------------------------------------------------------

.global ClearFreeProg
ClearFreeProg:
	lhu	a0,RAM_PROGNUM_OFF(gp)	// A0 <- program size ProgNum
	li	a2,0xff			// A2 <- byte to clear
	addi	a3,gp,RAM_PROG_OFF	// A3 <- program buffer Prog[0]
	addi	a4,a3,PROGNUM		// A4 <- max. end of program buffer &Prog[PROGNUM]
ClearFreeProg_Clr:
	add	a1,a0,a3		// A1 <- pointer to end of data 'p'
	bge	a1,a4,8f		// exit of buffer is full
1:	sb	a2,0(a1)		// clear one byte
	addi	a1,a1,1			// A1 <- increase pointer
	bne	a1,a4,1b		// next byte
8:	ret

// ----------------------------------------------------------------------------
// clear unused space of variables
// ----------------------------------------------------------------------------

.global ClearFreeVars
ClearFreeVars:
	lhu	a0,RAM_VARSNUM_OFF(gp)	// A0 <- variables size VarsNum
	li	a2,VAR_END		// A2 <- byte to clear
	addi	a3,gp,RAM_VARS_OFF	// A3 <- variable buffer Vars[0]
	addi	a4,a3,VARSNUM		// A4 <- max. end of variable buffer &Vars[VARSNUM]
	j	ClearFreeProg_Clr

// ----------------------------------------------------------------------------
// command Save
// ----------------------------------------------------------------------------

.global CmdSave
CmdSave:
	// push registers
	addi	sp,sp,-8
	sw	ra,0(sp)
	sw	s0,4(sp)

	// stop running (no error report)
	sh	zero,RAM_PROGLINE_OFF(gp) // clear program line

	// check program slot
	lw	a0,RAM_LASTRESULT_OFF(gp) // A0 <- program slot from LastResult
	li	a1,SLOTMAX		// A1 <- max. slot number
	bgtu	a0,a1,9f		// exit if slot number is invalid

	// clear unused space of program
	call	ClearFreeProg

	// check slot 0
	lw	a0,RAM_LASTRESULT_OFF(gp) // A0 <- program slot from LastResult
	beqz	a0,5f			// skip if slot is 0

// --- save to CPU2 (slot 1..11)

	// lock CPU communication
	call	CPU_IntLock

	// send request
1:	call	CPU_SendReady		// sender ready?
	beqz	a0,1b			// wait for send ready
	lw	a0,RAM_LASTRESULT_OFF(gp) // A0 <- program slot from LastResult
	addi	a0,a0,CPU_CMD_SAVE1 - 1	// prepare command
	call	CPU_Send		// send command

	// flush receiver
	call	CPU_RecvReady		// receiver ready?
	beqz	a0,1f			// not ready
	call	CPU_Recv		// destroy received character

	// save data
1:	li	s0,0			// S0 <- index
2:	call	CPU_SendReady		// sender ready


ack period" for short)
     *

     *

     *     Define the <emph>target receive window</emph> as {@code 3 * seqsPerAckPeriod}.
     *

     *     Adjust the current receive window halfway toward the target receive window.
     *

     *     Return the {@code sentSeq} limit as the current acked seq plus the current
     *     receive window.
     *

     *
     * @param timestampNow       value of the timestamp at the time the method is called. The timestamp
     *                           must be obtained from {@code System.nanoTime()}.
     * @param expectedConnection The connection to which the result will be sent. We use it
     *                           to check that it's the same connection the tasklet was crated with.
     */
    // Invoked sequentially by a task scheduler
    int updateAndGetSendSeqLimitCompressed(long timestampNow, Connection expectedConnection) {
        if (!Objects.equals(expectedConnection, memberConnection)) {
            connectionChanged = true;
        }
        final boolean hadPrevStats = prevTimestamp != 0 || prevAckedSeqCompressed != 0;

        final long ackTimeDelta = timestampNow - prevTimestamp;
        prevTimestamp = timestampNow;

        final int ackedSeqCompressed = compressSeq(ackedSeq);
        final int ackedSeqCompressedDelta = ackedSeqCompressed - prevAckedSeqCompressed;
        prevAckedSeqCompressed = ackedSeqCompressed;

        if (hadPrevStats) {
            final double ackedSeqsPerAckPeriod = flowControlPeriodNs * ackedSeqCompressedDelta / ackTimeDelta;
            final int targetRwin = rwinMultiplier * (int) ceil(ackedSeqsPerAckPeriod);
            int rwinDiff = targetRwin - receiveWindowCompressed;
            int numWaitingInInbox = this.numWaitingInInbox;
            // If nothing is waiting in the inbox, our processing speed isn't the cause
            // for less traffic through the processor, it's the sender who's not
            // sending enough data. Don't shrink the RWIN in this case.
            if (numWaitingInInbox == 0 && rwinDiff < 0) {
                rwinDiff = 0;
            }
            rwinDiff /= 2;
            receiveWindowCompressed += rwinDiff;
            if (rwinDiff != 0) {
                logger.finest("receiveWindowCompressed changed by %d to %d", rwinDiff, receiveWindowCompressed);
            }
        }
        return ackedSeqCompressed + receiveWindowCompressed;
    }

    // Only one thread writes to ackedSeq
    @SuppressWarnings({"NonAtomicOperationOnVolatileField", "squid:S3078"})
    long ackItem(long itemWeight) {
        return ackedSeq += itemWeight;
    }

    /**
     * To be called only from testing code.
     */
    void setNumWaitingInInbox(int value) {
        this.numWaitingInInbox = value;
    }

    @Override
    public String toString() {
        return "ReceiverTasklet{" +
                "sourceAddressString='" + sourceAddressString + '\'' +
                ", ordinalString='" + ordinalString + '\'' +
                ", destinationVertexName='" + destinationVertexName + '\'' +
                '}';
    }

    static int compressSeq(long seq) {
        return (int) (seq >> COMPRESSED_SEQ_UNIT_LOG2);
    }

    static long estimatedMemoryFootprint(long itemBlobSize) {
        final int inboxSlot = 4; // slot in ArrayDeque<ObjPtionAndSenderId> inbox
        final int objPtionAndSenderIdHeader = 16; // object header of ObjPtionAndSenderId instance
        final int itemField = 4; // ObjectWithPartitionId.item
        final int itemObjHeader = 16; // header of the item object (unknown type)
        final int partitionIdField = 4; // ObjectWithPartitionId.item
        final int senderIdField = 4; // ObjectWithPartitionId.senderId
        final int estimatedMemoryFootprintField = 8;  // ObjectWithPartitionId.estimatedMemoryFootprint
        final


// RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon -show-encoding < %s | FileCheck %s

// Check that the assembler can handle the documented syntax for AArch64

//----------------------------------------------------------------------
// Vector Maximum Pairwise (Signed and Unsigned Integer)
//----------------------------------------------------------------------
         smaxp v0.8b, v1.8b, v2.8b
         smaxp v0.16b, v1.16b, v2.16b
         smaxp v0.4h, v1.4h, v2.4h
         smaxp v0.8h, v1.8h, v2.8h
         smaxp v0.2s, v1.2s, v2.2s
         smaxp v0.4s, v1.4s, v2.4s

// CHECK: smaxp v0.8b, v1.8b, v2.8b        // encoding: [0x20,0xa4,0x22,0x0e]
// CHECK: smaxp v0.16b, v1.16b, v2.16b     // encoding: [0x20,0xa4,0x22,0x4e]
// CHECK: smaxp v0.4h, v1.4h, v2.4h        // encoding: [0x20,0xa4,0x62,0x0e]
// CHECK: smaxp v0.8h, v1.8h, v2.8h        // encoding: [0x20,0xa4,0x62,0x4e]
// CHECK: smaxp v0.2s, v1.2s, v2.2s        // encoding: [0x20,0xa4,0xa2,0x0e]
// CHECK: smaxp v0.4s, v1.4s, v2.4s        // encoding: [0x20,0xa4,0xa2,0x4e]

         umaxp v0.8b, v1.8b, v2.8b
         umaxp v0.16b, v1.16b, v2.16b
         umaxp v0.4h, v1.4h, v2.4h
         umaxp v0.8h, v1.8h, v2.8h
         umaxp v0.2s, v1.2s, v2.2s
         umaxp v0.4s, v1.4s, v2.4s

// CHECK: umaxp v0.8b, v1.8b, v2.8b         // encoding: [0x20,0xa4,0x22,0x2e]
// CHECK: umaxp v0.16b, v1.16b, v2.16b      // encoding: [0x20,0xa4,0x22,0x6e]
// CHECK: umaxp v0.4h, v1.4h, v2.4h         // encoding: [0x20,0xa4,0x62,0x2e]
// CHECK: umaxp v0.8h, v1.8h, v2.8h         // encoding: [0x20,0xa4,0x62,0x6e]
// CHECK: umaxp v0.2s, v1.2s, v2.2s         // encoding: [0x20,0xa4,0xa2,0x2e]
// CHECK: umaxp v0.4s, v1.4s, v2.4s         // encoding: [0x20,0xa4,0xa2,0x6e]

//----------------------------------------------------------------------
// Vector Minimum Pairwise (Signed and Unsigned Integer)
//----------------------------------------------------------------------
         sminp v0.8b, v1.8b, v2.8b
         sminp v0.16b, v1.16b, v2.16b
         sminp v0.4h, v1


/*
 *
 *                This source code is part of
 *
 *                 G   R   O   M   A   C   S
 *
 *          GROningen MAchine for Chemical Simulations
 *
 *                        VERSION 3.2.0
 * Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
 * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
 * Copyright (c) 2001-2004, The GROMACS development team,
 * check out http://www.gromacs.org for more information.

 * 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.
 *
 * If you want to redistribute modifications, please consider that
 * scientific software is very special. Version control is crucial -
 * bugs must be traceable. We will be happy to consider code for
 * inclusion in the official distribution, but derived work must not
 * be called official GROMACS. Details are found in the README & COPYING
 * files - if they are missing, get the official version at www.gromacs.org.
 *
 * To help us fund GROMACS development, we humbly ask that you cite
 * the papers on the package - you can find them in the top README file.
 *
 * For more info, check our website at http://www.gromacs.org
 *
 * And Hey:
 * Gromacs Runs On Most of All Computer Systems
 */

#ifndef _dihre_h
#define _dihre_h

#include "sysstuff.h"
#include "typedefs.h"

#ifdef __cplusplus
extern "C" {
#endif

  void init_dihres(FILE *fplog,gmx_mtop_t *mtop,t_inputrec *ir,t_fcdata *fcd);

t_ifunc ta_dihres;
/* Calculate the distance restraint forces, return the potential */

#ifdef __cplusplus
}
#endif

#endif	/* _disre_h */


这篇论文探讨了视觉语言模型（VLMs）在处理需要推理和提示的谜题任务时的局限性。研究发现，即使模型在常规视觉问答任务上表现良好，它们在需要多步推理或隐含线索的谜题上仍存在显著困难。作者通过系统实验揭示了VLMs在理解复杂提示和上下文推理方面的能力缺陷，并提出了一些改进方向。

2. 主要贡献和创新点
论文的主要贡献包括：首次系统地评估了VLMs在谜题任务上的表现，揭示了模型在隐含提示和多步推理上的弱点；提出了一个包含多样化谜题任务的新基准数据集；通过实验分析了模型失败的原因，为未来改进VLMs的推理能力提供了方向。创新点在于聚焦于模型对“提示”的理解能力，填补了现有研究中对VLMs复杂推理能力评估的空白。

3. 研究方法
作者采用了多种流行的视觉语言模型（如CLIP、BLIP等）进行实验，构建了一个包含文字谜题、视觉谜题和混合谜题的新数据集。研究方法包括定量评估（准确率等指标）和定性分析（错误案例研究）。技术手段上使用了零样本和小样本学习设置，对比了不同模型架构和训练方式的表现。工具方面可能涉及HuggingFace的Transformer库和PyTorch框架。

4. 实验结果
实验使用了自建的谜题数据集，包含数百个需要多步推理的题目。在零样本设置下，现有VLMs的平均准确率仅为30-40%，远低于人类表现。细粒度分析显示，模型尤其不擅长需要结合多个线索或理解隐喻的题目。实验结论表明，当前的VLMs缺乏真正的推理能力，更多依赖表面模式的匹配。

5. 对领域的潜在影响
这项研究可能推动视觉语言模型向更具推理能力的方向发展，促进对模型真正理解能力而非表面模式识别的关注。它也为评估VLMs提供了新的维度，可能影响未来模型的训练方法和架构设计。此外，研究结果对教育、人机交互等应用领域有启示意义。

6. 局限性或未来工作方向
局限性包括数据集规模可能不够大，且主要关注特定类型的谜题。未来工作可以扩展更多样化的推理任务，探索改进模型推理能力的方法（如链式思考提示），或设计专门的训练目标来增强提示理解能力。另一个方向是研究如何将符号推理与神经网络相结合来解决这类问题。

---

### DeepTheorem: Advancing LLM Reasoning for Theorem Proving Through Natural Language and Reinforcemen


ed between LICW and SICW
	//	(if we're not extremely careful), which would be disastrous.
	//	Also, for locked lines, LICW/SICW is much safer than IHU/IHI/IPFL
	//	because it doesn't leave a window where the line is unlocked;
	//	however, if the error is non-correctable, we have no choice.

.L_icache_locked_uncor:
	//  If locked and uncorrectable however, the only recourse is relocking.
	//  So we need to recover the virtual address so we can do IPFL.
	//  Note:  can't use MEPC instead of MEVADDR, because (a) it might not
	//  point to the correct cache line, and (b) it might be completely wrong
	//  in the case where the mem error happened e.g. during an LICW or IPFL.
#   if XCHAL_ICACHE_WAYS > 1
	//  Recover virtual address in a2:
	extui	a0, a2, 0, 2			// get saved xor'ed bits at bottom
	slli	a0, a0, ICACHE_WAYWIDTH		// line them up
	xor	a2, a2, a0			// restore original MEVADDR
#   endif
	ihu	a2, 0		// unlock line
	ihi	a2, 0		// invalidate line
	ipfl	a2, 0		// refetch-and-lock the line
	j	.L_icache_done
#  else /* LOCKABLE */
	rsr	a0, MEVADDR
	ihi	a0, 0		// invalidate that cache line
	j	.L_done
#  endif /* LOCKABLE */

.L_icache_tag_noncorr:
	//  Non-correctable error in the instruction cache tag.
	//  Just invalidate the tag or the entire set.
#  if XCHAL_ICACHE_LINE_LOCKABLE
	//  Note:  can't use either IIU or III, as these don't write the entire tag,
	//  so they'll get the exception again.  So, have to use SICT.
#   if XCHAL_ICACHE_WAYS > 1
	//  TODO FIXME: avoid this 8-line alternative if waynum is in MEVADDR!?:
	xsr	a2, MEVADDR
	extui	a0, a0, MESR_WAYNUM_SHIFT, 2
	slli	a0, a0, ICACHE_WAYWIDTH
	slli	a2, a2, 32 - ICACHE_WAYWIDTH
	srli	a2, a2, 32 - ICACHE_WAYWIDTH
	or	a2, a2, a0
	iiu	a2, 0		// unlock line ==> also invalidates! (I-side only)
	xsr	a2, MEVADDR
#   else
	rsr	a0, MEVADDR
	iiu	a0, 0		// unlock line ==> also invalidates! (I-side only)
#   endif
	// If line was locked, can't recover lock state, need external info to recover.
	// User can provide an assembler hook routine _xtos_merr_hook_icache_relock
	// to relock the icache at the index in a2:
	//	- any number of lines might still be locked at that index,
	//	  including all of them
	//	- no stack is provided, a0 must be used as starting point to
	//	  load a save area and saved registers as necessary
	//	- unless routine just does ret (i.e. does not modify any
	//	  register, only possible if it does nothing), it needs to
	//	  return by restoring all registers it modified, ending with:
	//


  pub fn is_statff_level_3(&self) -> bool {
        *self == STATFF_LEVEL_A::STATFF_LEVEL_3
    }
    #[doc = "Checks if the value of the field is `STATFF_LEVEL_4`"]
    #[inline(always)]
    pub fn is_statff_level_4(&self) -> bool {
        *self == STATFF_LEVEL_A::STATFF_LEVEL_4
    }
    #[doc = "Checks if the value of the field is `STATFF_LEVEL_5`"]
    #[inline(always)]
    pub fn is_statff_level_5(&self) -> bool {
        *self == STATFF_LEVEL_A::STATFF_LEVEL_5
    }
    #[doc = "Checks if the value of the field is `STATFF_LEVEL_6`"]
    #[inline(always)]
    pub fn is_statff_level_6(&self) -> bool {
        *self == STATFF_LEVEL_A::STATFF_LEVEL_6
    }
    #[doc = "Checks if the value of the field is `STATFF_LEVEL_7`"]
    #[inline(always)]
    pub fn is_statff_level_7(&self) -> bool {
        *self == STATFF_LEVEL_A::STATFF_LEVEL_7
    }
}
#[doc = "Write proxy for field `STATFF_LEVEL`"]
pub struct STATFF_LEVEL_W<'a> {
    w: &'a mut W,
}
impl<'a> STATFF_LEVEL_W<'a> {
    #[doc = r"Writes `variant` to the field"]
    #[inline(always)]
    pub fn variant(self, variant: STATFF_LEVEL_A) -> &'a mut W {
        {
            self.bits(variant.into())
        }
    }
    #[doc = "4 Double words"]
    #[inline(always)]
    pub fn statff_level_0(self) -> &'a mut W {
        self.variant(STATFF_LEVEL_A::STATFF_LEVEL_0)
    }
    #[doc = "8 Double words"]
    #[inline(always)]
    pub fn statff_level_1(self) -> &'a mut W {
        self.variant(STATFF_LEVEL_A::STATFF_LEVEL_1)
    }
    #[doc = "12 Double words"]
    #[inline(always)]
    pub fn statff_level_2(self) -> &'a mut W {
        self.variant(STATFF_LEVEL_A::STATFF_LEVEL_2)
    }
    #[doc = "16 Double words"]
    #[inline(always)]
    pub fn statff_level_3(self) -> &'a mut W {
        self.variant(STATFF_LEVEL_A::STATFF_LEVEL_3)
    }
    #[doc = "24 Double words"]
    #[inline(always)]
    pub fn statff_level_4(self) -> &'a mut W {
        self.variant(STATFF_LEVEL_A::STATFF_LEVEL_4)
    }
    #[doc = "32 Double words"]
    #[inline(always)]
    pub fn statff_level_5(self) -> &'a mut W {
        self.variant(STATFF_LEVEL_A::STATFF_LEVEL_5)
    }
    #[doc = "48 Double words"]
    #[inline(always)]
    pub fn statff_level_6(self) -> &'a mut W {
        self.variant(STATFF_LEVEL_A::STATFF_LEVEL_6)
    }
    #[doc = "64 Double words"]
    #[inline(always)]
    pub fn statff_level_7(self) -> &'a mut W {
        self.variant(STATFF_LEVEL_A::STATFF_LEVEL_7)
    }
    #[doc = r"Writes raw bits to the field"]
    #[inline(always)]
    pub fn bits(self, value: u8) -> &'a mut W {
        self.