.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospa


/* This file was written by Bill Cox in 2010, and is licensed under the Apache
   2.0 license.

   This file is meant as a simple example for how to use libsonic.  It is also a
   useful utility on its own, which can speed up or slow down wav files, change
   pitch, and scale volume. */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sonic_lite.h"
#include "wave.h"

/* Run sonic_lite. */
static void runSonic(char* inFileName, char* outFileName, float speed, float volume) {
  waveFile inFile, outFile = NULL;
  short inBuffer[SONIC_INPUT_SAMPLES], outBuffer[SONIC_INPUT_SAMPLES];
  int samplesRead, samplesWritten, sampleRate, numChannels;

  inFile = openInputWaveFile(inFileName, &sampleRate, &numChannels);
  if (numChannels != 1) {
    fprintf(stderr, "sonic_lite only processes mono wave files.  This file has %d channels.\n",
        numChannels);
    exit(1);
  }
  if (sampleRate != SONIC_SAMPLE_RATE) {
    fprintf(stderr,
        "sonic_lite only processes wave files with a sample rate of %d Hz.  This file uses %d\n",
        SONIC_SAMPLE_RATE, sampleRate);
    exit(1);
  }
  if (inFile == NULL) {
    fprintf(stderr, "Unable to read wave file %s\n", inFileName);
    exit(1);
  }
  outFile = openOutputWaveFile(outFileName, sampleRate, 1);
  if (outFile == NULL) {
    closeWaveFile(inFile);
    fprintf(stderr, "Unable to open wave file %s for writing\n", outFileName);
    exit(1);
  }
  sonicInit();
  sonicSetSpeed(speed);
  sonicSetVolume(volume);
  do {
    samplesRead = readFromWaveFile(inFile, inBuffer, SONIC_INPUT_SAMPLES);
    if (samplesRead == 0) {
      sonicFlushStream();
    } else {
      sonicWriteShortToStream(inBuffer, samplesRead);
    }
    do {
      samplesWritten = sonicReadShortFromStream(outBuffer, SONIC_INPUT_SAMPLES);
      if (samplesWritten > 0) {
        writeToWaveFile(outFile, outBuffer, samplesWritten);
      }
    } while (samplesWritten > 0);
  } while (samplesRead > 0);
  closeWaveFile(inFile);
  closeWaveFile(outFile);
}

/* Print the usage. */
static void usage(void) {
  fprintf(
      stderr,
      "Usage: sonic_lite [OPTION]... infile outfile\n"
      "    -s speed   -- Set speed up factor.  2.0 means 2X faster.\n"
      "    -v volume  -- Scale volume by a constant factor.\n");
  exit(1);
}

int main(int argc, char** argv) {
  char* inFileName;
  char* outFileName;
  float speed = 1.0f;
  float volume = 1.0f;
  int xArg = 1;

  while (xArg < argc && *(argv[xArg]) == '-') {
    if (!strcmp(argv[xArg], "-s")) {
      xArg++;
      if (xArg < argc) {
        speed = atof(argv[xArg]);
        printf("Setting speed to %0.2fX\n", speed);
      }
    } else if (!strcmp(argv[xArg], "-v")) {
      xArg++;
      if (xArg < argc) {
        volume = atof(argv[xArg]);
        printf("Setting volume to %0.2f\n", volume);
      }
    }
    xArg++;
  }
  if (argc - xArg != 2) {
    usage();
  }
  inFileName = argv[xArg];
  outFileName = argv[xArg + 1];
  runSonic(inFileName, outFileName, speed, volume);
  return 0;
}


lSetting", "animationClipsJumpSetting", "animationClipsIdleSetting", "animationClipsIdleAlt1Setting", "animationClipsIdleAlt2Setting", "animationClipsSwimSetting", "animationClipsSwimIdleSetting", "animationClipsClimbSetting"}]
  GETUPVAL R2 0
  GETTABLEKS R1 R2 K13 ["mockUseSetting"]
  GETIMPORT R2 K17 [Enum.AvatarSettingsAnimationPacksMode.StandardR15]
  CALL R1 1 1
  SETTABLEKS R1 R0 K0 ["animationPacksSetting"]
  GETUPVAL R2 0
  GETTABLEKS R1 R2 K13 ["mockUseSetting"]
  GETIMPORT R2 K20 [Enum.AvatarSettingsAnimationClipsMode.CustomClips]
  CALL R1 1 1
  SETTABLEKS R1 R0 K1 ["animationClipsSetting"]
  GETUPVAL R2 0
  GETTABLEKS R1 R2 K21 ["mockUseAssetIdSetting"]
  LOADB R2 1
  LOADN R3 12
  CALL R1 2 1
  SETTABLEKS R1 R0 K2 ["animationClipsRunSetting"]
  GETUPVAL R2 0
  GETTABLEKS R1 R2 K21 ["mockUseAssetIdSetting"]
  LOADB R2 1
  LOADN R3 12
  CALL R1 2 1
  SETTABLEKS R1 R0 K3 ["animationClipsWalkSetting"]
  GETUPVAL R2 0
  GETTABLEKS R1 R2 K21 ["mockUseAssetIdSetting"]
  LOADB R2 1
  LOADN R3 12
  CALL R1 2 1
  SETTABLEKS R1 R0 K4 ["animationClipsFallSetting"]
  GETUPVAL R2 0
  GETTABLEKS R1 R2 K21 ["mockUseAssetIdSetting"]
  LOADB R2 1
  LOADN R3 12
  CALL R1 2 1
  SETTABLEKS R1 R0 K5 ["animationClipsJumpSetting"]
  GETUPVAL R2 0
  GETTABLEKS R1 R2 K21 ["mockUseAssetIdSetting"]
  LOADB R2 1
  LOADN R3 12
  CALL R1 2 1
  SETTABLEKS R1 R0 K6 ["animationClipsIdleSetting"]
  GETUPVAL R2 0
  GETTABLEKS R1 R2 K21 ["mockUseAssetIdSetting"]
  LOADB R2 1
  LOADN R3 12
  CALL R1 2 1
  SETTABLEKS R1 R0 K7 ["animationClipsIdleAlt1Setting"]
  GETUPVAL R2 0
  GETTABLEKS R1 R2 K21 ["mockUseAssetIdSetting"]
  LOADB R2 1
  LOADN R3 12
  CALL R1 2 1
  SETTABLEKS R1 R0 K8 ["animationClipsIdleAlt2Setting"]
  GETUPVAL R2 0
  GETTABLEKS R1 R2 K21 ["mockUseAssetIdSetting"]
  LOADB R2 1
  LOADN R3 12
  CALL R1 2 1
  SETTABLEKS R1 R0 K9 ["animationClipsSwimSetting"]
  GETUPVAL R2 0
  GETTABLEKS R1 R2 K21 ["mockUseAssetIdSetting"]
  LOADB R2 1
  LOADN R3 12
  CALL R1 2 1
  SETTABLEKS R1 R0 K10 ["animationClipsSwimIdleSetting"]
  GETUPVAL R2 0
  GETTABLEKS R1 R2 K21 ["mockUseAssetIdSetting"]
  LOADB R2 1
  LOADN R3 12
  CALL R1 2 1
  SETTABLEKS R1 R0 K11 ["animationClipsClimbSetting"]
  RETURN R0 1

MAIN:
  PREPVARARGS 0
  GETIMPORT R0 K1 [script]
  LOADK R2 K2 ["AvatarSettings"]
  NAMECALL R0 R0 K3 ["FindFirstAncestor"]
  CALL R0 2 1
  GETIMPORT R1 K5 [require]
  GETTABLEKS R4 R0 K6 ["Src"]
  GETTABLEKS R3 R4 K7 ["Util"]
  GETTABLEKS R2 R3 K8 ["AvatarSettingsProviderTypes"]
  CALL R1 1 1
  GET


={en:["Increase"],pt:["Aumentar"]}},200:e=>{e.exports={en:["January"],pt:["Janeiro"]}},6608:e=>{e.exports={en:["July"],pt:["Julho"]}},61487:e=>{e.exports={en:["June"],pt:["Junho"]}},37997:e=>{e.exports={en:["October"],pt:["Outubro"]}},55450:e=>{e.exports={en:["Offset"],pt:["Desvio"]}},19295:e=>{e.exports={en:["Ok"],pt:["Ok"]}},19573:e=>{e.exports={en:["Monday"],pt:["Segunda"]}},43154:e=>{e.exports={en:["Months"],pt:["Meses"]}},37117:e=>{e.exports={en:["More"],pt:["Mais"]}},25734:e=>{e.exports={en:["May"],pt:["Мaio"]}},93878:e=>{e.exports={en:["March"],pt:["Março"]}},53182:e=>{e.exports={en:["No exchanges match your criteria"],pt:["Nenhuma exchange corresponde ao seu critério"]}},76822:e=>{e.exports={en:["No symbols match your criteria"],pt:["Nenhum símbolo compatível com seu critério"]}},4607:e=>{e.exports={en:["November"],pt:["Novembro"]}},69102:e=>{e.exports={en:["Next year"],pt:["Próximo ano"]}},17538:e=>{e.exports={en:["Next years"],pt:["Próximos anos"]}},92790:e=>{e.exports={en:["Next month"],pt:["Próximo mês"]}},
71300:e=>{e.exports={en:["Number format is invalid."],pt:["O formato numérico é inválido."]}},28628:e=>{e.exports={en:["Sources"],pt:["Fontes"]}},30348:e=>{e.exports={en:["Saturday"],pt:["Sábado"]}},10679:e=>{e.exports={en:['Set the "{inputInline}" time and price for "{studyShortDescription}"'],pt:['Definir o preço e o tempo de "{inputInline}" para "{studyShortDescription}"']}},59451:e=>{e.exports={en:['Set the "{inputTitle}" time for "{studyShortDescription}"'],pt:['Definir o tempo de "{inputTitle}" para "{studyShortDescription}"']}},94238:e=>{e.exports={en:['Set the "{inputTitle}" price for "{studyShortDescription}"'],pt:['Definir o preço de "{inputTitle}" para "{studyShortDescription}"']}},92229:e=>{e.exports={en:['Set the time and price for "{studyShortDescription}"'],pt:['Definir o tempo e preço para "{studyShortDescription}"']}},60935:e=>{e.exports={en:['Set the time for "{studyShortDescription}"'],pt:['Definir o tempo para "{studyShortDescription}"']}},24404:e=>{e.exports={en:['Set the price for "{studyShortDescription}"'],pt:['Definir o preço para "{studyShortDescription}"']}},8573:e=>{e.exports={en:["Search"],pt:["Pesquisar"]}},57640:e=>{e.exports={en:["Select source"],pt:["Selecionar fonte"]}},32179:e=>{e.exports={en:["September"],pt:["Setembro"]}},31331:e=>{e.exports={en:["Specified value is more than the instrument maximum of {max}."],pt:["O valor especificado é maior que o instrumento máximo de {max}."]}},24216:e=>{e.exports={en:["Specified value is l


现更名为Cline）一个月，笔者将从功能特性、使用场景到优缺点进行全面解析，助您找到最适合的开发伴侣。

![AI编程工具对比](https://bbtdd.com/wp-content/uploads/img/7467847949192.webp)

## 一、Cursor：极速智能的VSCode进化版

### 1.1 无缝迁移的开发环境
这款基于VSCode分叉的智能IDE实现了零成本迁移，完整兼容现有：
- 插件生态（ESLint/Prettier等）
- 个性化配置方案
- 自定义快捷键绑定

### 1.2 突破性AI加速引擎
在代码补全响应速度上取得显著突破：
1. 相较Copilot提速约10倍
2. 实时预测编码意图
3. 上下文感知更精准

项目级智能索引功能革新重构体验：
- 自动追踪文件依赖关系
- 动态更新模块间调用图谱
- 支持多文件协同编辑

👉 [野卡 | 一分钟注册，轻松订阅海外线上服务](https://bbtdd.com/yeka)

## 二、Cursor的限制与适配场景

### 2.1 功能分级的商业策略
| 免费版                | 专业版               |
|-----------------------|---------------------|
| 基础代码补全          | 多文件协作编辑       |
| 项目级索引（基础版）  | 高级重构工具套件     |

### 2.2 优劣势分析
**优势场景**：
- 快速迭代功能模块
- 日常代码规范化
- 语法纠错与补全

**局限领域**：
- 复杂构建流程调试
- 系统级日志分析
- 持续集成环境对接

## 三、Claude-Dev：深度集成的全能选手

### 3.1 突破边界的开发辅助
![终端交互演示](https://bbtdd.com/wp-content/uploads/img/1173458583688.webp)
- **智能终端对接**：实时解析构建日志
- **主动式调试**：
  1. 自动识别项目结构（Node/React/Python）
  2. 错误链路智能诊断
  3. 修复方案沙箱验证

- **视觉化前端调试**：
  - Puppeteer自动化测试
  - CSS差异对比引擎
  - UI迭代优化建议

### 3.2 开源社区的潜力股
- 开发者自主接入LLM接口（需配置API密钥）
- 活跃的社区开发路线图
- 持续集成的CI/CD工具链

## 四、工具选型决策指南

### 4.1 场景化选择矩阵
| 评估维度       | Cursor优势项          | Claude-Dev优势项       |
|----------------|-----------------------|-----------------------|
| 响应速度       | ⭐⭐⭐⭐⭐           | ⭐⭐                   |
| 环境整合深度   | ⭐⭐                   | ⭐⭐⭐⭐⭐            |
| 学习曲线       | ⭐⭐⭐


/**
   * Start a casting session without a source.
   *
   * @remarks
   *
 - The Chromecast framework must be {@link GlobalChromecast.initialize | initialized} before starting a session.
   */
  startSession(): PromiseLike<void>;
  /**
   * Stop the active casting session.
   */
  endSession(): void;
}

/**
 * Represents a configuration for server-side ad insertion with the Google DAI pre-integration.
 *
 * @remarks
 *
 - Available since v2.30.0.
 *
 * @public
 */
export declare interface GoogleDAIConfiguration
  extends ServerSideAdInsertionConfiguration {
  /**
   * The type of the requested stream.
   */
  readonly availabilityType?: DAIAvailabilityType;
  /**
   * The identifier for the SSAI pre-integration.
   */
  integration: GoogleDAISSAIIntegrationID;
  /**
   * The authorization token for the stream request.
   *
   * @remarks
   *
 - If present, this token is used instead of the API key for stricter content authorization.
   *
 - The publisher can control individual content streams authorizations based on this token.
   */
  authToken?: string;
  /**
   * The API key for the stream request.
   *
   * @remarks
   *
 - This key is used to verify applications that are attempting to access the content.
   *
 - This key is configured through the Google Ad Manager UI.
   */
  apiKey: string;
  /**
   * The ad tag parameters added to stream request.
   *
   * @remarks
   *
 - Each entry contains the parameter name with associated value.
   *
   * Valid parameters:
   *
 - {@link https://support.google.com/admanager/answer/7320899 | Supply targeting parameters to your stream}
   *
 - {@link https://support.google.com/admanager/answer/7320898 | Override stream variant parameters}
   */
  adTagParameters?: Record<string, string>;
  /**
   * The identifier for a stream activity monitor session.
   */
  streamActivityMonitorID?: string;
}

/**
 * Represents a configuration for server-side ad insertion with the Google DAI pre-integration for a Live media stream.
 *
 * @remarks
 *
 - Available since v2.30.0.
 *
 * @public
 */
export declare interface GoogleDAILiveConfiguration
  extends GoogleDAIConfiguration {
  /**
   * The type of the requested stream.
   */
  readonly availabilityType: "live";
  /**
   * The identifier for the video content source for live streams.
   *
   * @remarks
   *
 - This property is required for live streams.
   *
 - The asset key can be found in the Google Ad Manager UI.
   */
  assetKey: string;
}

/**
 * The identifier of the Google DAI integration.
 *
 * @public
 */
export declare type GoogleDAISSAIIntegrationID = "google-dai";

/**
 * Represents a media resource with a Google DAI server-side ad insertion request.
 *
 * @public
 */
export declare interface GoogleDAITypedSource extends TypedSource {
  /**
   * The content type (MIME type) of the media resource, represented by a value from the following list:
   *
 - `'application/dash+xml'`: The media resource is an MPEG-DASH stream.
   *
 - `'application/x-mpegURL'` or `'application/vnd.apple.mpegurl'`: The media resource is an HLS stream.
   */
  type: string;
  ssai: GoogleDAIVodConfiguration | GoogleDAILiveConfiguration;
}

/**
 * Represents a configuration for server-side ad insertion with the Google DAI pre-integration for a VOD media stream.
 *
 * @remarks
 *
 - Available since v2.30.0.
 *
 * @pub


jUnXh1J5mMdu5crC2K2uQy26KXi",
          "symbol": "waWBTC",
          "name": "Aave Interest bearing WBTC (Wormhole)",
          "decimals": 8,
          "logoURI": "https://cloudflare-ipfs.com/ipfs/QmaznB5PRhMC696u8yZuzN6Uwrnp7Zmfa5CydVUMvLJc9i/aWBTC.svg",
          "tags": [
            "wrapped",
            "wormhole"
          ],
          "extensions": {
            "address": "0xFC4B8ED459e00e5400be803A9BB3954234FD50e3",
            "bridgeContract": "https://etherscan.io/address/0xf92cD566Ea4864356C5491c177A430C222d7e678",
            "assetContract": "https://etherscan.io/address/0xFC4B8ED459e00e5400be803A9BB3954234FD50e3"
          }
        },
        {
          "chainId": 101,
          "address": "F2WgoHLwV4pfxN4WrUs2q6KkmFCsNorGYQ82oaPNUFLP",
          "symbol": "waBUSD",
          "name": "Aave Interest bearing Binance USD (Wormhole)",
          "decimals": 9,
          "logoURI": "https://cloudflare-ipfs.com/ipfs/QmaznB5PRhMC696u8yZuzN6Uwrnp7Zmfa5CydVUMvLJc9i/aBUSD.svg",
          "tags": [
            "wrapped",
            "wormhole"
          ],
          "extensions": {
            "address": "0x6Ee0f7BB50a54AB5253dA0667B0Dc2ee526C30a8",
            "bridgeContract": "https://etherscan.io/address/0xf92cD566Ea4864356C5491c177A430C222d7e678",
            "assetContract": "https://etherscan.io/address/0x6Ee0f7BB50a54AB5253dA0667B0Dc2ee526C30a8"
          }
        },
        {
          "chainId": 101,
          "address": "3rNUQJgvfZ5eFsZvCkvdYcbd9ZzS6YmtwQsoUTFKmVd4",
          "symbol": "waENJ",
          "name": "Aave Interest bearing ENJ (Wormhole)",
          "decimals": 9,
          "logoURI": "https://cloudflare-ipfs.com/ipfs/QmaznB5PRhMC696u8yZuzN6Uwrnp7Zmfa5CydVUMvLJc9i/aENJ.svg",
          "tags": [
            "wrapped",
            "wormhole"
          ],
          "extensions": {
            "address": "0x712DB54daA836B53Ef1EcBb9c6ba3b9Efb073F40",
            "bridgeContract": "https://etherscan.io/address/0xf92cD566Ea4864356C5491c177A430C222d7e678",
            "assetContract": "https://etherscan.io/address/0x712DB54daA836B53Ef1EcBb9c6ba3b9Efb073F40"
          }
        },
        {
          "chainId": 101,
          "address": "BHh8nyDwdUG4uyyQYNqGXGLHPyb83R6Y2fqJrNVKtTsT",
          "symbol": "waREN",
          "name": "Aave Interest bearing REN (Wormhole)",
          "decimals": 9,
          "logoURI": "https://cloudflare-ipfs.com/ipfs/QmUgE3UECZxZcCAiqd3V9otfFWLi5fxR8uHd9


Err(Error::ApiError("list_active_containers".into()).into());
    }
    let count = ret as usize;
    let names = unsafe { std::slice::from_raw_parts_mut(names_ptr, count) };
    let cret = unsafe { std::slice::from_raw_parts_mut(cret_ptr, count) };

    let mut result = Vec::with_capacity(count);
    for (name, cret) in names[..].iter().zip(cret[..].iter()) {
        if *name != null_mut() && *cret != null_mut() {
            result.push(Container::from_raw_parts(*name, *cret));
        }
    }
    Ok(result)
}

pub fn list_defined_containers(lxcpath: Path) -> LxcResult<Vec<Container>> {
    let mut names_ptr: *mut *mut i8 = null_mut();
    let mut cret_ptr: *mut *mut lxc_sys2::lxc_container = null_mut();

    let ret = unsafe {
        lxc_sys2::list_defined_containers(lxcpath.get_cstr_pointer(), &mut names_ptr, &mut cret_ptr)
    };
    if ret == -1 {
        return Err(Error::ApiError("list_defined_containers".into()).into());
    }
    let count = ret as usize;
    let names = unsafe { std::slice::from_raw_parts_mut(names_ptr, count) };
    let cret = unsafe { std::slice::from_raw_parts_mut(cret_ptr, count) };

    let mut result = Vec::with_capacity(count);
    for (name, cret) in names[..].iter().zip(cret[..].iter()) {
        if *name != null_mut() && *cret != null_mut() {
            result.push(Container::from_raw_parts(*name, *cret));
        }
    }
    Ok(result)
}
<reponame>wyfcyx/rustsbi-k210<filename>rustsbi-k210/src/peripheral.rs
use rustsbi::println;
use k210_hal::{clock::Clocks, fpioa, pac, prelude::*, clint::msip};
use riscv::register::{mhartid, mip};

pub fn init_peripheral() {
    let p = pac::Peripherals::take().unwrap();

    let mut sysctl = p.SYSCTL.constrain();
    let fpioa = p.FPIOA.split(&mut sysctl.apb0);
    let clocks = Clocks::new();
    let _uarths_tx = fpioa.io5.into_function(fpioa::UARTHS_TX);
    let _uarths_rx = fpioa.io4.into_function(fpioa::UARTHS_RX);
    // Configure UART
    let serial = p.UARTHS.configure(115_200.bps(), &clocks);
    let (tx, rx) = serial.split();

    rustsbi::legacy_stdio::init_legacy_stdio_embedded_hal_fuse(tx, rx);
    rustsbi::init_timer(Timer);
    rustsbi::init_reset(Reset);
    rustsbi::init_ipi(Ipi);
}

struct Ipi;

impl rustsbi::Ipi for Ipi {
    fn max_hart_id(&self) -> usize {
        1
    }
    fn send_ipi_many(&mut self, hart_mask: rustsbi::HartMask) -> rustsbi::SbiRet {
        for i in 0..=1 {
            if hart_mask.has_bit(i) {
                msip::set_ipi(i);
                msip::clear_ipi(i);
            }
        }
        rustsbi::SbiRet::ok(0)
    }
}

struct Timer;

impl rustsbi::Timer for Timer {
    fn set_timer(&mut self, stime_value: u64) {
        // This function must clear the


/user/user_credentials.dart';
import 'package:flutter_template/network/user_api_service.dart';
import 'package:flutter_template/user/unauthorized_user_exception.dart';
import 'package:flutter_template/user/user_event_hook.dart';
import 'package:flutter_template/user/user_manager.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:http/http.dart' as http;
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:single_item_storage/cached_storage.dart';
import 'package:single_item_storage/memory_storage.dart';
import 'package:single_item_storage/observed_storage.dart';

import 'test_user_manager.dart';
import 'user_manager_test.mocks.dart';

final String validToken = 'token-1';
final RefreshToken validRefreshToken = RefreshToken('refreshToken-1', 1);
final Credentials validCredentials = Credentials('token-1', validRefreshToken);
final UserCredentials validUserCredentials =
    UserCredentials(User(id: 'username', email: 'email'), validCredentials);

final UserCredentials validUserCredentialsSecond =
    UserCredentials(User(id: 'username2', email: 'email2'), validCredentials);

bool Function(UserCredentials?) userCredentialsToBool() {
  return (userCredentials) {
    return userCredentials?.credentials != null ? true : false;
  };
}

/// Tests for [UserManager]
@GenerateMocks([UserApiService, UserEventHook])
void main() {
  late UserManager userManager;
  late UserApiService apiService;
  late ObservedStorage<UserCredentials> storage;
  late MockUserEventHook<UserCredentials> userEventHook;

  setUp(() async {
    apiService = MockUserApiService();
    storage = ObservedStorage<UserCredentials>(CachedStorage(MemoryStorage()));
    userEventHook = MockUserEventHook();
    userManager = TestUserManager(
      apiService,
      storage,
      userEventHooks: [userEventHook],
    );

    when(apiService.getUserProfile(authHeader: 'Bearer $validToken'))
        .thenAnswer((_) async => Future.value(validUserCredentials.user));

    await userManager.init();
  });

  tearDown(() async {
    await userManager.teardown();
  });

  test('IsLoggedIn', () async {
    bool isLoggedIn = await userManager.isLoggedIn();

    expect(isLoggedIn, isFalse);
  });

  test('Login Success', () async {
    when(apiService.login("username", "password"))
        .thenAnswer((_) => Future.value(validCredentials));

    expect(userManager.updatesSticky, emitsInOrder([null, validUserCredentials]));

    UserCredentials actualLoggedInUser =
        await userManager.login("username", "password");

    expect(actualLoggedInUser, equals(validUserCredentials));
    expect(await storage.get(), equals(validUserCredentials));
    expect(await userManager.isLoggedIn(), isTrue);
    expect(await userManager.getLoggedInUser(), equals(validUserCredentials));

    verify(userEventHook.onUserAuthorized(validUserCredentials, true)).called(1);
    verify(userEventHook.onUserUpdatesProvided(any)).called(1);
  });

  test('Double login', () async {
    when(apiService.login("username", "pass"))
        .thenAnswer((_) => Future.value(validCredentials));

    expect(userManager.updatesSticky, emitsInOrder([null, validUserCredentials]));

    await userManager.login("username", "pass");
    UserCredentials actualLoggedInUser =
        await userManager.login("username", "pass");

    expect(actualLoggedInUser, equals(


wn, ok := obj.(cache.DeletedFinalStateUnknown); ok && unknown.Obj != nil {
		obj = unknown.Obj
	}
	objKey, err := cache.DeletionHandlingMetaNamespaceKeyFunc(obj)
	if err != nil {
		ctrl.logger.Errorf("Failed to get key from object: %v", err)
		return "", err
	}
	ctrl.logger.Debugf("getKey: key %s", objKey)
	return objKey, nil
}

// Run starts the controller.
func (ctrl *backupDriverController) Run(
	ctx context.Context, workers int) {
	defer ctrl.claimQueue.ShutDown()
	defer ctrl.backupRepositoryClaimQueue.ShutDown()
	defer ctrl.snapshotQueue.ShutDown()
	defer ctrl.cloneFromSnapshotQueue.ShutDown()
	defer ctrl.deleteSnapshotQueue.ShutDown()
	defer ctrl.uploadQueue.ShutDown()
	defer ctrl.svcSnapshotQueue.ShutDown()
	defer ctrl.secretQueue.ShutDown()

	ctrl.logger.Infof("Starting backup driver controller")
	defer ctrl.logger.Infof("Shutting down backup driver controller")

	stopCh := ctx.Done()

	ctrl.logger.Infof("Waiting for caches to sync")

	if !cache.WaitForCacheSync(stopCh, ctrl.cacheSyncs...) {
		ctrl.logger.Errorf("Cannot sync caches")
		return
	}
	ctrl.logger.Infof("Caches are synced")

	for i := 0; i < workers; i++ {
		//go wait.Until(ctrl.pvcWorker, 0, stopCh)
		//go wait.Until(ctrl.pvWorker, 0, stopCh)
		go wait.Until(ctrl.snapshotWorker, 0, stopCh)
		go wait.Until(ctrl.cloneFromSnapshotWorker, 0, stopCh)
		go wait.Until(ctrl.backupRepositoryClaimWorker, 0, stopCh)
		go wait.Until(ctrl.deleteSnapshotWorker, 0, stopCh)
		go wait.Until(ctrl.uploadWorker, 0, stopCh)

		if ctrl.svcKubeConfig != nil {
			go wait.Until(ctrl.svcSnapshotWorker, 0, stopCh)
		} else {
			go wait.Until(ctrl.secretWorker, 0, stopCh)
		}
	}

	<-stopCh
}

func (ctrl *backupDriverController) secretWorker() {
	ctrl.logger.Debug("secretWorker: Enter secretWorker")

	key, quit := ctrl.secretQueue.Get()
	if quit {
		return
	}
	defer ctrl.secretQueue.Done(key)

	if err := ctrl.syncSecretByKey(key.(string)); err != nil {
		ctrl.secretQueue.AddRateLimited(key)
	} else {
		ctrl.secretQueue.Forget(key)
	}
}

func (ctrl *backupDriverController) syncSecretByKey(key string) error {
	ctrl.logger.Debugf("syncSecretByKey: Started Secret processing %s", key)
	namespace, name, err := cache.SplitMetaNamespaceKey(key)
	if err != nil {
		ctrl.logger.Errorf("Split meta namespace key of secret %s failed: %v", key, err)
		return err
	}
	// Retrieve the latest Secret.
	params := make(map[string]interface{})
	err = utils.RetrieveVcConfigSecret(params, nil, ctrl.logger)
	if err != nil {
		ctrl.logger.Errorf("Failed to retrieve the latest vc config secret")
		return err
	}
	ctrl.logger.Debugf("Successfully retrieved latest vSphere VC credentials.")
	err = ctrl.snapManager.ReloadSnapshotManagerIvdPetmConfig(params)
	if err != nil {
		ctrl.logger.Errorf("Secret %s/%s Reload failed, err: %v", namespace, name, err)
		return err
	}
	ctrl.logger.Debugf("Successfully processed updates in vc configuration.")
	return nil
}

func (ctrl *backupDriverController) enqueueSecret(obj interface{}) {
	// Beware of "xxx deleted" events
	if unknown, ok := obj.(cache.DeletedFinalStateUnknown); ok && unknown.Obj != nil {
		obj = unknown.Obj
	}
	if secretItem, ok := obj.(*corev1.Secret); ok {


    }
            }

            this.lastLen = formatted.length;

            this.elem.val(formatted);
            this.ctrl.$setViewValue(formatted);

            if (this.document.activeElement === elem) {
                elem.selectionStart = elem.selectionEnd = caretPosition;
            }

            return parsed;
        }

        protected validator() {
            if (typeof this.ctrl.$viewValue === 'undefined' || this.ctrl.$viewValue === '') {
                // No validation for an undefined model value
                return true;
            }

            if (!this.mask) {
                return true;
            } else {
                return this.ctrl.$viewValue.length === this.mask.length;
            }
        }
    }

    module.directive('nzSimpleInputMask', ['$document', SimpleInputMask.Directive]);

}
export class DateUtil {
    /** 获取当天的起始时间 */
    public static TodayStartTime(): Date {
        let time = new Date()
        time.setHours(0)
        time.setMinutes(0)
        time.setSeconds(0)

        return time
    }

    /** 获取当天的结束时间 */
    public static TodayEndTime(): Date {
        let time = new Date()
        time.setHours(23)
        time.setMinutes(59)
        time.setSeconds(59)

        return time
    }
}import { createSlice, PayloadAction } from "@reduxjs/toolkit";
type Noise = { id: number; picked: boolean; volume: number };
type FooterState = {
  noiseList: Record<string, Noise>;
  musicVolume: number;
};
const initialState: FooterState = {
  noiseList: {
    rain: {
      id: 1,
      picked: false,
      volume: 50,
    },
    wave: {
      id: 2,
      picked: false,
      volume: 50,
    },
    campfire: {
      id: 3,
      picked: false,
      volume: 50,
    },
    drive: {
      id: 4,
      picked: false,
      volume: 50,
    },

    night: {
      id: 5,
      picked: false,
      volume: 50,
    },
  },
  musicVolume: 50,
};
export type NoiseVolume = {
  name: string;
  volume: number;
};
const footerSlice = createSlice({
  name: "musicSearch",
  initialState,
  reducers: {
    turnOnNoise(state, { payload }: PayloadAction<string>) {
      state.noiseList[payload].picked = true;
    },
    turnOffNoise(state, { payload }: PayloadAction<string>) {
      state.noiseList[payload].picked = false;
    },
    turnOffAllNoise(state) {
      for (const key in state.noiseList) {
        state.noiseList[key].picked = false;
        state.noiseList[key].volume = 50;
      }
    },
    setVolume(state, { payload }: PayloadAction<NoiseVolume>) {
      const { name, volume } = payload;
      state.noiseList[name].volume = volume;
    },
    setMusicVolume(state, { payload }: PayloadAction<number>) {
      state.musicVolume = payload;
    },
  },
});
export const {
  turnOnNoise,
  turnOffNoise,
  setVolume,
  setMusicVolume,
  turnOffAllNoise,
} = footerSlice.actions;
export default footerSlice.reducer;
export interface GPSCoordinates {
  latitude: number;
  longitude: number;
}

export interface Customer extends GPSCoordinates {
  name: string;
  user_id: number;
}
export interface RawCustomer {
  name: string;
  user_id: number;
  latitude: string;
  longitude: string;
}

export interface RawCustomerMap {
  [userId: number]: RawCustomer;
}
// number

let num: number = 2;

let binary: number = 0b10001;

let nan: number = NaN;

// string

let myName: string = 'syj';

// boolean

let createdByNewBoolean: boolean = new Boolean(1);
// 'boolean' is a primitive, but 'Boolean' is a wrapper object. Prefer using 'boolean' when possible.

let createdByNewBoolean1: Boolean = new Boolean(1);

let createdByNewBoolean2: boolean = Boolean(1);

let isTrue: boolean = false;


=t}}const Yu=Q_,Vu=H_,Ku=Symbol("nomatch"),qu=function(e){const t=Object.create(null),r=Object.create(null),n=[];let a=!0;const A="Could not find the language '{}', did you forget to load/include a language module?",i={disableAutodetect:!0,name:"Plain text",contains:[]};let o={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:q_};function s(e){return o.noHighlightRe.test(e)}function l(e,t,r){let n="",a="";"object"==typeof t?(n=e,r=t.ignoreIllegals,a=t.language):(Mu("10.7.0","highlight(lang, code, ...args) has been deprecated."),Mu("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),a=e,n=t),void 0===r&&(r=!0);const A={code:n,language:a};S("before:highlight",A);const i=A.result?A.result:c(A.language,A.code,r);return i.code=A.code,S("after:highlight",i),i}function c(e,r,n,i){const s=Object.create(null);function l(){if(!y.keywords)return void B.addText(I);let e=0;y.keywordPatternRe.lastIndex=0;let t=y.keywordPatternRe.exec(I),r="";for(;t;){r+=I.substring(e,t.index);const a=b.case_insensitive?t[0].toLowerCase():t[0],A=(n=a,y.keywords[n]);if(A){const[e,n]=A;if(B.addText(r),r="",s[a]=(s[a]||0)+1,s[a]<=7&&(R+=n),e.startsWith("_"))r+=t[0];else{const r=b.classNameAliases[e]||e;u(t[0],r)}}else r+=t[0];e=y.keywordPatternRe.lastIndex,t=y.keywordPatternRe.exec(I)}var n;r+=I.substring(e),B.addText(r)}function _(){null!=y.subLanguage?function(){if(""===I)return;let e=null;if("string"==typeof y.subLanguage){if(!t[y.subLanguage])return void B.addText(I);e=c(y.subLanguage,I,!0,w[y.subLanguage]),w[y.subLanguage]=e._top}else e=d(I,y.subLanguage.length?y.subLanguage:null);y.relevance>0&&(R+=e.relevance),B.__addSublanguage(e._emitter,e.language)}():l(),I=""}function u(e,t){""!==e&&(B.startScope(t),B.addText(e),B.endScope())}function p(e,t){let r=1;const n=t.length-1;for(;r<=n;){if(!e._emit[r]){r++;continue}const n=b.classNameAliases[e[r]]||e[r],a=t[r];n?u(a,n):(I=a,l(),I=""),r++}}function m(e,t){return e.scope&&"string"==typeof e.scope&&B.openNode(b.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(u(I,b.classNameAliases[e


ra.s	.l1
.kill:	move.l	table_var_addr(a6),a0
	bsr	clr_table_end
	move.l	table_var_addr(a6),before_ctrll_addr(a6)
	move.l	table_la_addr(a6),d0
	move.l	d0,current_la_addr(a6)
	move.l	d0,before_ctrll_la_addr(a6)
	bsr	create_var_tree
	bsr	redraw_all_windows
.no_kill:	st	no_eval_flag(a6)
	suba.l	a0,a0
	lea	ask_var_file_text,a2
	_JSR	get_expression
	bmi.s	.end
	bsr	load_variables
.end:	rts
;  #] Load_all_vars:
;  #[ Load_prg_vars:[Ctl_Alt_V]
load_prg_vars:
	IFNE	AMIGA
	jmp	_load_prg_vars
	ENDC
	IFNE	ATARIST
.again:	suba.l	a0,a0
	lea	load_prg_vars_text,a2
	st	no_eval_flag(a6)
	_JSR	get_expression
	bmi.s	.end
	beq.s	.good
.flash:	_JSR	flash
	bra.s	.again
.good:	lea	load_prg_vars_sscanform,a1
	bsr	sscanf
	bmi.s	.flash
	beq.s	.flash
	tst.w	(a0)+
	bmi.s	.flash

	;recopier le nom de fichier dans exec_name_buf
	lea	exec_name_buf(a6),a1
	bsr	strcpy
	lea	(a0,d0.w),a0
	btst	#0,d0
	beq.s	.no_add
	tst.b	(a0)+
.no_add:	tst.w	(a0)+
	bmi.s	.flash
	move.l	(a0)+,a0
	_JSR	_load_prg_vars
.end:	rts
	ENDC	;d'ATARIST
;  #] Load_prg_vars:
	IFNE	debug
;  #[ Monkey_test:[Ins]
monkey_test:
	lea	line_buffer_size(a6),a0
	move.w	(a0),-(sp)
	move.w	#20,(a0)
.l1:
	suba.l	a0,a0
	lea	monkeytest_text,a2
	_JSR	get_expression
;	bge.s	.l1
	move.w	(sp)+,line_buffer_size(a6)
	rts
;  #] Monkey_test:
	ENDC	;de debug
	IFNE	sourcedebug
;  #[ Begin_of_source:[Ctl_Home]
begin_of_source:
	tst.w	source_type(a6)
	beq.s	.end
	bsr	get_noaddr_curwind
;	add.w	d0,a0
	cmp.w	#SRCWIND_TYPE,d1
	beq.s	.src
	cmp.w	#VARWIND_TYPE,d1
	beq.s	.var
	cmp.w	#INSWIND_TYPE,d1
	beq.s	.ins
.end:
	rts
.src:
	lea	src_wind_buf(a6),a0
	mulu	#_SRCWIND_SIZEOF,d2
	add.w	d2,a0
	move.l	source_ptr(a6),a2
	cmp.l	(a0),a2
	be


      _register1(target.toJSAnyShallow, value.toJSAnyShallow);
      }
  }

  @JS('unregister')
  external JSVoid _unregister(JSAny token);
  void unregister(Object token) => _unregister(token.toJSAnyShallow);
}

/// Whether the current browser supports `FinalizationRegistry`.
bool browserSupportsFinalizationRegistry =
    _finalizationRegistryConstructor != null;
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:web_unicode/web_unicode.dart';

import 'unicode_range.dart';

export 'package:web_unicode/web_unicode.dart' show LineCharProperty;

UnicodePropertyLookup<LineCharProperty> get lineLookup => ensureLineLookupInitialized();

/// Initializes [lineLookup], if it's not already initialized.
///
/// Use this function to trigger the initialization before [lineLookup] is
/// actually used. For example, triggering it before the first application
/// frame is rendered will reduce jank by moving the initialization out of
/// the frame.
UnicodePropertyLookup<LineCharProperty> ensureLineLookupInitialized() {
  return _lineLookup ??=
    UnicodePropertyLookup<LineCharProperty>.fromPackedData(
      packedLineBreakProperties,
      singleLineBreakRangesCount,
      LineCharProperty.values,
      defaultLineCharProperty,
    );
}

UnicodePropertyLookup<LineCharProperty>? _lineLookup;
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:ui/ui.dart' as ui;

import '../dom.dart';
import '../embedder.dart';
import '../html/bitmap_canvas.dart';
import '../profiler.dart';
import 'layout_fragmenter.dart';
import 'layout_service.dart';
import 'paint_service.dart';
import 'paragraph.dart';
import 'word_breaker.dart';

final String placeholderChar = String.fromCharCode(0xFFFC);

/// A paragraph made up of a flat list of text spans and placeholders.
///
/// [CanvasParagraph] doesn't use a DOM element to represent the structure of
/// its spans and styles. Instead it uses a flat list of [ParagraphSpan]
/// objects.
class CanvasParagraph implements ui.Paragraph {
  /// This class is created by the engine, and should not be instantiated
  /// or extended directly.
  ///
  /// To create a [CanvasParagraph] object, use a [CanvasParagraphBuilder].
  CanvasParagraph(
    this.spans, {
    required this.paragraphStyle,
    required this.plainText,
    required this.canDrawOnCanvas,
  }) : assert(spans.isNotEmpty);

  /// The flat list of spans that make up this paragraph.
  final List<ParagraphSpan> spans;

  /// General styling information for this paragraph.
  final EngineParagraphStyle paragraphStyle;

  /// The full textual content of the paragraph.
  late String plainText;

  /// Whether this paragraph can be drawn on a bitmap canvas.
  ///
  /// Some text features cannot be rendered into a 2D canvas and must use HTML,
  /// such as font features and text decorations.
  final bool canDrawOnCanvas;

  @override
  double get width => _layoutService.width;

  @override
  double get height => _layoutService.height;

  @override
  double get longestLine => _layoutService.longestLine?.width ?? 0.0;

  @override
  double get minIntrinsicWidth => _layoutService.minIntrinsicWidth;

  @override
  double get maxIntrinsicWidth => _layoutService.maxIntrinsicWidth;

  @override


------------------------------*/
.page-content .wp-smiley,
.entry-content .wp-smiley,
.comment-content .wp-smiley {
	border: none;
	margin-bottom: 0;
	margin-top: 0;
	padding: 0;
}

/* Make sure embeds and iframes fit their containers. */
embed,
iframe,
object {
	max-width: 100%;
}

/* Video Animations */

@-webkit-keyframes waves {
    0% {
        -webkit-transform: scale(0.2, 0.2);
        transform: scale(0.2, 0.2);
        opacity: 0;
        -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
    }
    50% {
        opacity: 0.9;
        -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
    }
    100% {
        -webkit-transform: scale(0.9, 0.9);
        transform: scale(0.9, 0.9);
        opacity: 0;
        -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
    }
}
@keyframes waves {
    0% {
        -webkit-transform: scale(0.2, 0.2);
        transform: scale(0.2, 0.2);
        opacity: 0;
        -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
    }
    50% {
        opacity: 0.9;
        -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
    }
    100% {
        -webkit-transform: scale(0.9, 0.9);
        transform: scale(0.9, 0.9);
        opacity: 0;
        -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
    }
}

@-webkit-keyframes lineanim {
 50% {
  -webkit-transform:scaleY(1);
  transform:scaleY(1);
  -webkit-transform-origin:top left;
  transform-origin:top left
 }
 50.1% {
  -webkit-transform-origin:bottom left;
  transform-origin:bottom left
 }
 100% {
  -webkit-transform:scaleY(0);
  transform:scaleY(0);
  -webkit-transform-origin:bottom left;
  transform-origin:bottom left
 }
}
@keyframes lineanim {
 50% {
  -webkit-transform:scaleY(1);
  transform:scaleY(1);
  -webkit-transform-origin:top left;
  transform-origin:top left
 }
 50.1% {
  -webkit-transform-origin:bottom left;
  transform-origin:bottom left
 }
 100% {
  -webkit-transform:scaleY(0);
  transform:scaleY(0);
  -webkit-transform-origin:bottom left;
  transform-origin:bottom left
 }
}

/* The navbar is fixed at >= 980px wide, so add padding to the body to prevent
content running up underneath it. */

h1 {
  font-weight: 300;
}

h2, h3 {
  font-weight: 300;
}

.resource-description, .response-info {
  margin-bottom: 2em;
}

.version:before {
  content: "v";
  opacity: 0.6;
  padding-right: 0.25em;
}

.version {
  font-size: 70%;
}

.format-option {
  font-family: Menlo, Consolas, "Andale Mono", "Lucida Console", monospace;
}

.button-form {
  float: right;
  margin-right: 1em;
}

td.nested {
  padding: 0 !important;
}

td.nested > table {
  margin: 0;
}

form select, form input:not([type=checkbox]), form textarea {
  width: 90%;
}

form select[multiple] {
  height: 150px;
}

/* To allow tooltips to work on disabled elements */
.disabled-tooltip-shield {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
}

.errorlist {
  margin-top: 0.5em;
}

pre {
  overflow: auto;
  word-wrap: normal;
  white-space: pre;
  font-size: 12px;
}


No':requestNo
        }
    );
    return res.data['success'];
  }
  static Future<List> getbindBankcardList({extract}) async {
    await setAuthInfo();
    var res = await suClient.get(
      API.bindBankcardList,
        queryParameters: {
          'extract': extract,
        }
    );
    return res.data['data'];
  }
  static Future<Map> bindBankConfirm(code, bizSn,orderId) async {
    await setAuthInfo();
    var res = await suClient.post(
        API.bindBankConfirm,
        data: {
          'code': code,
          'bizSn': bizSn,
          'orderId': orderId,
        }
    );
    return res.data;
  }
  static Future<Map> getBankInfo(bankNo) async {
    await setAuthInfo();
    var res = await suClient.get(
        API.bankInfo,
        queryParameters: {
          'bankNo': bankNo,
        }
    );
    return res.data??{};
  }
  static Future<String> getBankLogo(bankNo) async {
    var res = await defaultClient.get(
      "https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo="+bankNo + "&cardBinCheck=true"
    );
    Map bankInfo = res.data as Map;
    return "https://apimg.alipay.com/combo.png?d=cashier&t=" + bankInfo['bank'] + "_s";
    // var ress = await defaultClient.get(
    //     "https://apimg.alipay.com/combo.png?d=cashier&t=" + bankInfo['bank'] + "_s"
    // );
    // return ress.data;
  }

  static Future supportBank() async {
    await  setAuthInfo();
    var res = await suClient.get(
        API.supportBank,
    );
    return res.data['data']??[];
  }

  static Future<Map> cashbindBankcard({cardNo,phone,id}) async {
    await setAuthInfo();
    var res = await suClient.post(
        API.cashbindBankcard,
        data: {
          'bankId' : id,
          'bankNo': cardNo,
          'phone':phone
        },options: new Options(receiveTimeout: Duration(milliseconds: 8000))
    );
    return res.data??{};
  }

  static Future<bool> cashbindBankcardConfirm(code, authSn ,requestNo) async {
    await setAuthInfo();
    var res = await suClient.post(
        API.cashbindBankcardConfirm,
        data: {
          'code': code,
          'authSn': authSn,
          'requestNo':requestNo
        }
    );
    return res.data['success'];
  }

  static Future<Map> getLifeCity(longitude,latitude) async {
    await setAuthInfo();
    var res = await suClient.get(
        API.getLifeCity,
        queryParameters: {
          'longitude': longitude,
          'latitude': latitude,
        }
    );
    return res.data??{};
  }

  static Future<Map> getLifeCategory() async {
    await setAuthInfo();
    var res = await suClient.get(
        API.getLifeCategory,
    );
    return res.data??{};
  }

  static Future<Map> getLifeCityList() async {
    await setAuthInfo();
    var res = await suClient.get(
      API.getLifeCityList,
    );
    return res.data??{};
  }

  static Future<Map> getLifeGoodsList(page,{categoryId,cityCode,longitude,latitude,keyword}) async {
    await setAuthInfo();
    var res = await suClient.get(
      API.getL


   /// <summary>
        /// Initializes a new instance of the <see cref="ChosenInlineResultEventArgs"/> class.
        /// </summary>
        /// <param name="chosenInlineResult">The chosen inline result.</param>
        internal ChosenInlineResultEventArgs(ChosenInlineResult chosenInlineResult)
        {
            ChosenInlineResult = chosenInlineResult;
        }

        /// <summary>
        /// Performs an implicit conversion from <see cref="UpdateEventArgs"/> to <see cref="ChosenInlineResultEventArgs"/>.
        /// </summary>
        /// <param name="e">The <see cref="UpdateEventArgs"/> instance containing the event data.</param>
        /// <returns>
        /// The result of the conversion.
        /// </returns>
        public static implicit operator ChosenInlineResultEventArgs(UpdateEventArgs e) => new ChosenInlineResultEventArgs(e.Update);
    }
}


build/binutils build/gcc
  cd build/binutils
  ../../binutils-2.9.1/configure i386-sco-sysv4
  gmake  # takes a long time
  gmake install # this creates /usr/local/i386-sco-sysv4/...
  mkdir /usr/local/i486-pc-sysv5/bin
  cd /usr/local/i486-pc-sysv5/bin
  for a in /usr/local/i386-sco-sysv4/bin/*; do ln -s $a .; done
  #links all the newly installed utilities

  cd /usr/local/newgnu/build/gcc
  ../../gcc-2.95.2/configure --with-gnu-as --with-gnu-ld
  gmake bootstrap # takes a long time
  gmake install
  mkdir /usr/local/i586-UnixWare7.1.0-sysv5/bin
  for a in /usr/local/i386-sco-sysv4/bin/*; do ln -s $a .; done

       Once done, ACE and TAO will successfully build and link.

LynxOS

      ACE builds and runs properly on LynxOS 4.0 for Intel
      and PowerPC targets. LynxOS 2.x and 3.x are no longer supported.

      If you run out of memory on LynxOS, these might help:

Increase the limits in /etc/starttab,
          then reboot system.  We use these limits:

# Data, stack, and core file limits (in Kbytes)
80000
16000
102400

Enable or expand virtual memory, with something like:

# mkcontig /swap 320
# prio 17 vmstart /swap

          See the mkcontig and vmstart
          man pages, and /bin/rc.

      Please see the comments in the
      ACE
      platform_lynxos.GNU file for information on, and an
      example of, tailoring for your particular platform.

      NOTE: if you want to use IP multicast on LynxOS, be sure to add
      this line to your /net/rc.network, and reboot:

        /bin/route add "224.0.0.0" "$my_name"

VxWorks

      David Levine has
      ported ACE to VxWorks 5.2/5.3/5.3.1/5.4 with the GreenHills
      1.8.8/1.8.9, g++ and diab compilers that are distributed with
      VxWorks/Tornado. It is not possible to use VxWorks 5.4
      and earlier with ACE anymore because the compilers delivered with
      5.4 and earlier don't support the C++ features ACE needs.

      At this moment Remedy IT is upgrading
      and stabilizing ACE/TAO support for Tornado 2.2/VxWorks 5.5.1.
      Since the existing support for previous VxWorks version has been unsupported
      and broken for some time and most (potential) users seem to have upgraded to
      VxWorks 5.5.1 no backporting effort is done. See also here.

      Tornado 2.2/VxWorks 5.5.1 support IP multicast.  That is not enabled
      by default in ACE for VxWorks, because it depends on your
      kernel configuration.  To enable it, add
      #define ACE_HAS_IP_MULTICAST to your
      ace/config.h.

      NOTE: In order for the ACE Broadcast and Multicast tests to work the VxWorks kernel
      should receive the packages it sends out locally. By default this is not supported.
      To enable this behaviour you need to include


tName) === false) {
            localStorage[eventName] = '{}';
          }
          var temp = JSON.parse(localStorage[eventName]);
          var elemId;
          Object.keys(temp).forEach(function(key) {
            if (temp[key] == true) {
              elemId = $('#' + key).find('.bookmark').addClass('starred');
            }
          });
        }
        initPage();
      });</script><!DOCTYPE html><link rel="preload" as="script" href="./js/jquery.min.js"><link rel="preload" as="script" href="./js/bootstrap.min.js"><link rel="preload" as="script" href="./js/tracks.min.js"><link rel="preload" as="style" href="./css/schedule.css"><link rel="preload" as="style" href="./css/font-awesome.min.css"><link rel="preload" as="style" href="./css/bootstrap.min.css"><link rel="preload" as="font" href="https://fonts.googleapis.com/css?family=Open+Sans:400,600,300" crossorigin><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="OpenTechSummit Schedule"><meta name="author" content=""><title>OpenTechSummit</title><link rel="shortcut icon" href="" type="image/x-icon"><link href="https://fonts.googleapis.com/css?family=Open+Sans:400,600,300" rel="stylesheet"><link rel="stylesheet" href="./css/font-awesome.min.css"><link rel="stylesheet" href="./css/bootstrap.min.css"><link rel="stylesheet" href="./css/schedule.css">Skip to content

OpenTechSummit

<button class="navbar-toggle" type="button" data-toggle="dropdown"> </button>

<button class="navbar-toggle pull-right">Speakers</button> <button class="navbar-toggle" type="button" data-toggle="dropdown">Schedule </button>

 Schedule

 Tracks

<i class="fa fa


.l a5,a1			; end of table?
	bne.s .write2
	lea trk_y+2,a1			; reset pointer
.write2	move.l a1,tracky+8
	add.w d1,a0			; add to screen offset
	move.l a0,unplot_e2		; save this screen
	move.l bot2,a1
	add.w d1,a1
	move.l a1,unplot_e2b
	lea save_e2,a6
xxx	set 0
yyy	set 0
	rept 6
	movem.l xxx(a0),d0-3
	movem.l xxx+160(a0),d4-7
	movem.l d0-7,yyy(a6)
	movem.l xxx(a1),d0-3
	movem.l xxx+160(a1),d4-7
	movem.l d0-7,yyy+192(a6)
xxx	set xxx+320
yyy	set yyy+32
	endr
	jsr (a2)			; call sprite routine
	move.l a1,a0
	jsr (a2)

bEebris	move.l trackx+4,a1		; get sprite x-point
	move.w (a1)+,d0
	cmp.l a4,a1			; end of table?
	bne.s .write
	lea trk_x+2,a1			; reset pointer
.write	move.l a1,trackx+4
	add d0,d0			; mult d0 by 8
	add d0,d0			; for double long access
	add d0,d0
	move.l 0(a3,d0),a2		; pointer into sprite table
	add.l #beeb_e,a2
	move.l (a2),a2			; address of sprite routine
	move.l bot1,a0		; work screen base
	move.l 4(a3,d0),d1		; horizontal offset
	move.l tracky+4,a1		; get sprite y-point
	add.w (a1)+,d1
	cmp.l a5,a1			; end of table?
	bne.s .write2
	lea trk_y+2,a1			; reset pointer
.write2	move.l a1,tracky+4
	add.w d1,a0			; add to screen offset
	move.l a0,unplot_e1		; save this screen
	move.l bot2,a1
	add.w d1,a1
	move.l a1,unplot_e1b
	lea save_e1,a6
xxx	set 0
yyy	set 0
	rept 6
	movem.l xxx(a0),d0-3
	movem.l xxx+160(a0),d4-7
	movem.l d0-7,yyy(a6)
	movem.l xxx(a1),d0-3
	movem.l xxx+160(a1),d4-7
	movem.l d0-7,yyy+192(a6)
xxx	set xxx+320
yyy	set yyy+32
	endr
	jsr (a2)			; call sprite routine
	move.l a1,a0
	jsr (a2)

Beebris	move.l trackx,a1		; get sprite x-point
	move.w (a1)+,d0
	cmp.l a4,a1			; end of table?
	bne.s .write
	lea trk_x+2,a1			; reset pointer
.write	move.l a1,trackx
	add d0,d0			; mult d0 by 8
	add d0,d0			; for double long access
	add d0,d0
	move.l 0(a3,d0),a2		; pointer into sprite table
	add.l #beeb_b,a2
	move.l (a2),a2			; address of spri


const BASE_FONT_SIZE_MD = '20px'

/**
 * Convert a "beat" to a CSS size unit. Used to establish a
 * [vertical rhythm](https://zellwk.com/blog/why-vertical-rhythms/).
 * @param {number} beats Number of beats
 */
export function beat (beats) {
  return `${beats * 1.52}rem`
}

/**
 * Computes the absolute font size for
 * [typographic scale](http://spencermortensen.com/articles/typographic-scale/).
 *
 * We use [7 tone equal temperament](https://en.wikipedia.org/wiki/Equal_temperament#5_and_7_tone_temperaments_in_ethnomusicology)
 * which is the [tuning of Thai traditional instruments](https://en.wikipedia.org/wiki/Ranat_ek#Tuning).
 *
 * @param {number} n The font size, where
 *
 *   - `-14` = 0.25x normal font size.
 *   - `-7` = 0.5x normal font size.
 *   - `0` = normal font size.
 *   - `7` = 2x normal font size.
 *   - `14` = 4x normal font size.
 */
export function fontSize (n) {
  return `${(2 ** (n / 7)).toFixed(3)}rem`
}

/**
 * Tracking (letter-spacing).
 */
export const Tracking = {
  tight: '-0.05em',
  normal: '0',
  wide: '0.05em',
  extraWide: '0.1em',
}

/**
 * The layout component. Should be used on each page.
 */
export class Layout extends React.Component {
  render () {
    return <TypographicContext>{this.props.children}</TypographicContext>
  }
}

/**
 * Establishes a typographic context by:
 *
 * - resetting font size
 * - resetting line height
 * - setting appropriate margins for direct children
 */
export const TypographicContext = styled.div({
  fontSize: '1rem',
  '> p, > blockquote, > ul, > ol, > dl, > table, > pre': {
    marginTop: beat(1),
    marginBottom: 0,
    '&:first-child': {
      marginTop: 0,
    },
  },
})

function injectGlobalStyles () {
  function fontFace (src, family, weight) {
    return `@font-face {
      font-family: "${family}";
      font-weight: ${weight};
      src: url(${src}) format('woff2');
    }`
  }

  injectGlobal`
    ${fontFace(require('./vendor/fonts/Metropolis-Light.woff2'), 'Metropolis', 300)}
    ${fontFace(require('./vendor/fonts/Metropolis-Regular.woff2'), 'Metropolis', 400)}
    ${fontFace(require('./vendor/fonts/Metropolis-Medium.woff2'), 'Metropolis', 500)}
    ${fontFace(require('./vendor/fonts/Metropolis-SemiBold.woff2'), 'Metropolis', 600)}
    ${fontFace(require('./vendor/fonts/Metropolis-Bold.woff2'), 'Metropolis', 700)}
    ${fontFace(require('./vendor/fonts/NotoSans-Light-Latin.woff2'), 'Noto Sans', 300)}
    ${fontFace(require('./vendor/fonts/NotoSans-SemiBold-Latin.woff2'), 'Noto Sans', 600)}
    ${fontFace(require('./vendor/fonts/NotoSansThaiUI-Light.woff2'), 'Noto Sans Thai UI', 300)}
    ${fontFace(require('./vendor/fonts/NotoSansThaiUI-SemiBold.woff2'), 'Noto Sans Thai UI', 600)}
  `

  injectGlobal({
    'html, body': {
      fontFamily: Fonts.body,
      fontWeight: 300,


ayerbuf);
  fg->bayerbuf = NULL;
  fg->bayerbuf_size = 0;
  free(fg);
  return NULL;
 }
 for (i = 0; i < (fg->buffers_num); i++)
 {
  fg->buffers[i].buffer.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
  fg->buffers[i].buffer.memory = V4L2_MEMORY_MMAP;
  fg->buffers[i].buffer.index = i;
  if (ioctl(fg->dev_fd, VIDIOC_QUERYBUF, &(fg->buffers[i].buffer)) == -1)
  {
   fprintf(stderr, "ioctl error (VIDIOC_QUERYBUF)\n");
   close(fg->dev_fd); fg->dev_fd = -1;
   free(fg->image);
   fg->image = NULL;
   if (fg->bayerbuf) free(fg->bayerbuf);
   fg->bayerbuf = NULL;
   fg->bayerbuf_size = 0;
   free(fg);
   return NULL;
  }
 }
 for (i = 0; i < (fg->buffers_num); i++)
 {
  fg->buffers[i].video_map = mmap(NULL, fg->buffers[i].buffer.length, PROT_READ|PROT_WRITE, MAP_SHARED, fg->dev_fd, fg->buffers[i].buffer.m.offset);
  if (fg->buffers[i].video_map == MAP_FAILED)
  {
   fprintf(stderr, "cannot mmap()\n");
   fg->buffers[i].video_map = NULL;
   for (i = 0; i < REQUEST_BUFFERS; i++)
   {
    if (fg->buffers[i].video_map)
    {
     munmap(fg->buffers[i].video_map, fg->buffers[i].buffer.length);
     fg->buffers[i].video_map = NULL;
    }
   }
   close(fg->dev_fd); fg->dev_fd = -1;
   free(fg->image);
   fg->image = NULL;
   if (fg->bayerbuf) free(fg->bayerbuf);
   fg->bayerbuf = NULL;
   fg->bayerbuf_size = 0;
   free(fg);
   return NULL;
  }
 }
 return fg;
}

void close_fg(void * fg)
{
 int i;

 if (FG(fg)->grabbing) stop_grab(fg);
 for (i = 0; i < REQUEST_BUFFERS; i++)
 {
  if (FG(fg)->buffers[i].video_map)
  {
   munmap(FG(fg)->buffers[i].video_map, FG(fg)->buffers[i].buffer.length);
   FG(fg)->buffers[i].video_map = NULL;
  }
 }
 if (FG(fg)->image) free(FG(fg)->image);
 FG(fg)->image = NULL;
 if (FG(fg)->bayerbuf) free(FG(fg)->bayerbuf);
 FG(fg)->bayerbuf = NULL;
 FG(fg)->bayerbuf_size = 0;
 close(FG(fg)->dev_fd); FG(fg)->dev_fd = -1;
 free(fg);
}


80,51});
    param0.add(new int[]{-99,-99,-90,-90,-85,-85,-79,-77,-72,-71,-67,-66,-61,-39,-39,-35,-35,-23,-20,-18,-16,-13,-2,1,5,6,10,24,27,32,33,38,48,67,70,76,82,88});
    param0.add(new int[]{0,0,0,1,0,1,0,1,1,1,0,0,0,1,0,0,0,0,1,1,0,0,0,1,0,1,1,0,0,0,1,1,0,1,0,0,1,1,1,1,0,0,0,1,0});
    param0.add(new int[]{2,22,32,34,43,66,70,74,94,94});
    param0.add(new int[]{-99,-28,76,-50,41,-85,-47,72,-92,-26,-54,-31,14,47,66,23});
    param0.add(new int[]{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1});
    param0.add(new int[]{19,31,26,42,41,23,47,13,89,66,66,16,73,28,77,35,41,77,31,85,32,54,98,72,59});
    List<Integer> param1 = new ArrayList<>();
    param1.add(29);
    param1.add(38);
    param1.add(4);
    param1.add(30);
    param1.add(34);
    param1.add(33);
    param1.add(6);
    param1.add(10);
    param1.add(42);
    param1.add(20);
    List<int [ ]> filled_function_param0 = new ArrayList<>();
    filled_function_param0.add(new int[]{1,1,2,3,9,10,14,22,26,28,29,29,30,32,32,32,34,37,39,40,42,42,42,43,45,47,49,52,53,54,56,58,59,68,71,73,76,81,81,83,84,91,94});
    filled_function_param0.add(new int[]{50,46,6,-57,67,34,-52,26,-93,97,-84,29,15,-63,65,25,-19,92,-38,-28,89,25,61,-34,-70,-80,88,-18,7,52,32,-63,32,-23,-11,46,-12,94,76,-67,-42});
    filled_function_param0.add(new int[]{0,0,0,0,0,0,1,1,1});
    filled_function_param0.add(new int[]{15,99,57,69,22,64,41,87,71,56,23,25,91,6,34,63,9,60,49,97,51,60,70,37,31,98,41,62,93,58,14,36,36,79,8,26,36,48,85,28,68,62,80,86,76,80,51});
    filled_function_param0.add(new int[]{-99,-99,-90,-90,-85,-85,-79,-77,-72,-71,-67,-66,-61,-39,-39,-35,-35,-23,-20,-18,-16,-13,-2,1,5,6,10,24,27,32,33,38,48,67,70,76,82,88});
    filled_function_param0.add(new int[]{0,0,0,1,0,1,0,1,1,1,0,0,0,1,0,0,0,0,1,1,0,0,0,1,0,1,1,0,0,0,1,1,0,1,0,0,1,1,1,1,0,0,0,1,0});
    filled_function_param0.add(new int[]{2,22,32,34,43,66,70,74,94,94});
    filled_function_param0.add


 infinity
	bsetb	#inf_bit,FPSR_CC(%a6)
	bras	set_sign
SGL_RZ:
	leal	SGL_PLRG,%a1	|answer is +/- large number
	bras	set_sign
SGL_RM:
	tstb	LOCAL_SGN(%a0)	|if negative overflow
	beqs	s_rm_pos
s_rm_neg:
	leal	EXT_PINF,%a1	|answer is negative infinity
	orl	#neginf_mask,USER_FPSR(%a6)
	bras	end_ovfr
s_rm_pos:
	leal	SGL_PLRG,%a1	|answer is large positive number
	bras	end_ovfr
SGL_RP:
	tstb	LOCAL_SGN(%a0)	|if negative overflow
	beqs	s_rp_pos
s_rp_neg:
	leal	SGL_PLRG,%a1	|answer is large negative number
	bsetb	#neg_bit,FPSR_CC(%a6)
	bras	end_ovfr
s_rp_pos:
	leal	EXT_PINF,%a1	|answer is positive infinity
	bsetb	#inf_bit,FPSR_CC(%a6)
	bras	end_ovfr

set_sign:
	tstb	LOCAL_SGN(%a0)	|if negative overflow
	beqs	end_ovfr
neg_sign:
	bsetb	#neg_bit,FPSR_CC(%a6)

end_ovfr:
	movew	LOCAL_EX(%a1),LOCAL_EX(%a0) |do not overwrite sign
	movel	LOCAL_HI(%a1),LOCAL_HI(%a0)
	movel	LOCAL_LO(%a1),LOCAL_LO(%a0)
	rts

|
|	ERROR
|
error:
	rts
|
|	get_fline --- get f-line opcode of interrupted instruction
|
|	Returns opcode in the low word of d0.
|
get_fline:
	movel	USER_FPIAR(%a6),%a0	|opcode address
	movel	#0,-(%a7)	|reserve a word on the stack
	leal	2(%a7),%a1	|point to low word of temporary
	movel	#2,%d0		|count
	bsrl	mem_read
	movel	(%a7)+,%d0
	rts
|
|	g_rndpr --- put rounding precision in d0{1:0}
|
|	valid return codes are:
|		00 - extended
|		01 - single
|		10 - double
|
| begin
| get rounding precision (cmdreg3b{6:5})
| begin
|  case	opclass = 011 (move out)
|	get destination format - this is the also the rounding precision
|
|  case	opclass = 0x0
|	if E3
|	    *case RndPr(from cmdreg3b{6:5} = 11  then RND_PREC = DBL
|	    *case RndPr(from cmdreg3b{6:5} = 10  then RND_PREC = SGL
|	     case RndPr(from cmdreg3b{6:5} = 00 | 01
|		use precision from FPCR{7:6}
|			case 00 then RND_PREC = EXT
|			case 01 then RND_PREC = SGL
|			case 10 then RND_PREC = DBL
|	else E1
|	     use precision in FPCR{7:6}
|	     case 00 then RND_PREC = EXT
|	     case 01 then RND_PREC = SGL
|	     case 10 then RND_PREC = DBL
| end
|
g_rndpr:
	bsr	g_opcls		|get opclass in d0{2:0}


r12d, %ecx
        vpsrld	$7, %ymm5, %ymm6
        vpslld	$25, %ymm5, %ymm7
        # rnd_0: 3 - 4
        rorl	$5, %edx
        xorl	%r14d, %ecx
        xorl	%r12d, %edx
        addl	%ecx, %r15d
        rorl	$6, %edx
        xorl	%r8d, %eax
        addl	%edx, %r15d
        movl	%r8d, %ecx
        vpsrld	$18, %ymm5, %ymm8
        vpslld	$14, %ymm5, %ymm9
        # rnd_0: 5 - 6
        andl	%eax, %ebx
        rorl	$9, %ecx
        xorl	%r8d, %ecx
        xorl	%r9d, %ebx
        rorl	$11, %ecx
        addl	%r15d, %r11d
        xorl	%r8d, %ecx
        addl	%ebx, %r15d
        vpor	%ymm6, %ymm7, %ymm6
        vpor	%ymm8, %ymm9, %ymm8
        # rnd_0: 7 - 7
        rorl	$2, %ecx
        movl	%r11d, %edx
        addl	%ecx, %r15d
        # rnd_1: 0 - 1
        rorl	$14, %edx
        movl	%r8d, %ebx
        movl	%r12d, %ecx
        addl	4(%rsp), %r14d
        xorl	%r13d, %ecx
        vpsrld	$3, %ymm5, %ymm9
        vpxor	%ymm6, %ymm8, %ymm6
        # rnd_1: 2 - 3
        xorl	%r11d, %edx
        andl	%r11d, %ecx
        rorl	$5, %edx
        xorl	%r13d, %ecx
        xorl	%r11d, %edx
        addl	%ecx, %r14d
        vpxor	%ymm6, %ymm9, %ymm5
        vpshufd	$0xfa, %ymm3, %ymm6
        # rnd_1: 4 - 5
        rorl	$6, %edx
        xorl	%r15d, %ebx
        addl	%edx, %r14d
        movl	%r15d, %ecx
        andl	%ebx, %eax
        rorl	$9, %ecx
        xorl	%r15d, %ecx
        xorl	%r8d, %eax
        vpsrld	$10, %ymm6, %ymm8
        vpsrlq	$19, %ymm6, %ymm7
        # rnd_1: 6 - 7
        rorl	$11, %ecx
        addl	%r14d, %r10d
        xorl	%r15d, %ecx
        addl	%eax, %r14d
        rorl	$2, %ecx
        movl	%r10d, %edx
        addl	%ecx, %r14d
        # rnd_0: 0 - 0
        rorl	$14, %edx
        vpsrlq	$0x11, %ymm6, %ymm6
        vpaddd	%ymm0, %ymm4, %ymm4
        # rnd_0: 1 - 3
        movl	%r15d, %eax
        movl	%r11d, %ecx
        addl	8(%rsp), %r13d
        xorl	%r12d, %ecx


using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Text;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using Shokofin.API;
using Shokofin.Extensions;

namespace Shokofin.ExternalIds;

public class ShokoExternalUrlHandler(ShokoIdLookup lookup) : IExternalUrlProvider {

    #region IExternalUrlProvider Implementation

    private readonly Queue<string> _nextNames = new();

    private readonly object _lock = new();

    string IExternalUrlProvider.Name => _nextNames.TryDequeue(out var name) ? name : "Shoko";

    /// <inheritdoc/>
    IEnumerable<string> IExternalUrlProvider.GetExternalUrls(BaseItem item)
    {
        if (!lookup.IsEnabledForItem(item))
            yield break;

        var list = GetExternalUrls(item);
        lock (_lock) {
            _nextNames.Clear();
            foreach (var (name, url1) in list) {
                _nextNames.Enqueue(name);
                yield return url1;
            }
        }
    }

    #endregion

    #region Url Helpers

    private static IReadOnlyCollection<(string, string)> GetExternalUrls(BaseItem item)
        => (item, item.GetProviderId(ProviderNames.Shoko)) switch {
            (_, string deflatedUrls) => [..InflateInfoUrls(deflatedUrls).Distinct()],

            (BoxSet boxSet, _) => [..GetCollectionUrls(boxSet)],
            (Person person, _) => [..GetPersonUrls(person)],

            _ => [],
        };

    private static IEnumerable<(string Name, string Url)> GetCollectionUrls(BoxSet boxSet) {
        var config = Plugin.Instance.Configuration;
        var url = config.WebUrl;

        if (boxSet.Path.TryGetAttributeValue(ProviderNames.ShokoCollectionForGroup, out var collectionId)) {
            yield return ($"{ProviderNames.ShokoGroup} (g{collectionId})", $"{url}/collection/group/{collectionId}");
        }
        if (boxSet.Path.TryGetAttributeValue(ProviderNames.ShokoCollectionForSeries, out var seasonId)) {
            if (seasonId[0] is not IdPrefix.TmdbMovie and not IdPrefix.TmdbMovieCollection and not IdPrefix.TmdbShow)
                yield return ($"{ProviderNames.ShokoSeries} (s{seasonId})", $"{url}/collection/series/{seasonId}");
        }
    }

    private static IEnumerable<(string Name, string Url)> GetPersonUrls(Person person) {
        if (person.TryGetProviderId(ProviderNames.Anidb, out var creatorId)) {
            yield return ($"{ProviderNames.Anidb} (c{creatorId})", $"{ProviderUrls.Anidb}/creator/{creatorId}");
        }
    }

    #endregion

    #region Inflate / Deflate

    private static byte[] Deflate(byte[] data)
    {
        using var ms = new MemoryStream();
        using (var ds = new DeflateStream(ms, CompressionLevel.SmallestSize, true))
            ds.Write(data, 0, data.Length);
        return ms.ToArray();
    }

    private static byte[] Inflate(byte[] compressed)
    {
        using var input = new MemoryStream(compressed);
        using var ds = new DeflateStream(input, CompressionMode.Decompress);
        using var output = new MemoryStream();
        ds.CopyTo(output);
        return output.ToArray();
    }

    private static string DeflateInfoUrls(IEnumerable<(string ProviderName, string Extras, string UrlPathname)> urls)
        => Convert.ToBase64String(Deflate(Encoding.UTF8.GetBytes(string.Join('\n', urls.Sel


et the cache valid support indices
        imCentered = im
        templateCentered = template
        if self.center or self.normalize:
            imCentered = im - self._computeRectangleSum(
                cache.cumsum(-1).cumsum(-2), ii, jj, *padding
            ) / (
                template.size(-2) * template.size(-1)
            )  # Center the image using integral image
            templateCentered = template - template.mean(
                dim=(-2, -1), keepdim=True
            )  # Center the template using its mean

        if not self.normalize:
            return self.crossCorrelation(
                imCentered, templateCentered, *padding
            )  # Compute the cross-correlation
        else:
            cache[:, :, 1:, 1:] = 0.0  # Reset cache values
            cache[:, :, iiSlice, jjSlice] = imCentered.to(dtype=self.output_dtype).pow(
                2
            )  # Insert image.pow(2) in cache

            energySqr = (
                self._computeRectangleSum(cache.cumsum(-1).cumsum(-2), ii, jj, *padding)
                .clamp(min=1e-8)
                .sqrt()
            )  # Compute energy using integral image of image.pow(2)

            normTemplate = templateCentered.norm(p=2, dim=(-2, -1), keepdim=True)
            numerator = self.crossCorrelation(
                imCentered / energySqr,
                templateCentered / normTemplate.clamp(min=1e-4),
                *padding,
            )
            if self.tempFactor is not None:
                return numerator / self.tempFactor
            return numerator


; Copyright (C) 2014-2022 Joonas Javanainen <joonas.javanainen@gmail.com>
;
; Permission is hereby granted, free of charge, to any person obtaining a copy
; of this software and associated documentation files (the "Software"), to deal
; in the Software without restriction, including without limitation the rights
; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
; copies of the Software, and to permit persons to whom the Software is
; furnished to do so, subject to the following conditions:
;
; The above copyright notice and this permission notice shall be included in
; all copies or substantial portions of the Software.
;
; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
; SOFTWARE.

; Tests the value and relative phase of DIV after boot
; Bootrom duration on real SGB/SGB2 depends on the header bytes, including the
; global checksum, which in turn depends on every byte in the ROM.
; This tests uses a different checksum bytes than the other one to expose
; hard-coded boot ROM dura


ou three times and then you kick me three times and so on back and forth until someone gives up."

John quickly thought about the proposed contest and decided that he could easily take the old codger. He agreed to abide by the local custom.

The old farmer slowly climbed down from the tractor and walked up to the lawyer. His first kick planted the toe of his steel-capped work boot into John's groin and dropped him to his knees. His second kick to the midriff sent John's last meal gushing from his mouth. John was on all fours when the farmer's third kick to his rear end sent him face-first into a fresh cow pie.

John summoned every bit of his will and somehow managed to get to his feet.

Wiping his face with the arm of his silk suit jacket, he said, "Okay, you old coot. Now it's my turn."

The old farmer smiled and said, "Naw, I give up. You can have the duck."

John Hawkins |
06:00 PM

| Comments
(0)

A Response To "10 Reasons To Fire George W. Bush"

Daniel Drezner saw fit to link my 40 Reasons To Vote For George Bush Or Against John Kerry article on his fine blog, which I certainly appreciate.

Drezner also linked to a piece called 10 Reasons To Fire George W. Bush by Jesse Walker at Reason. Since Walker's column has been getting a lot of play, I thought it might be worthwhile to give a brief response to the points that Walker came up with...

1) The war in Iraq: In my opinion, we were way, way, overdue to knock Saddam out of power. During the Bush 41 presidency, we should have helped the Iraqi people overthrow Saddam after they rose up against him in the aftermath of the Gulf War. Then in 1993, after he  tried to assassinate Bush 41, we again should have invaded. Then in 1998, after the inspectors had to leave, once more, Clinton should have rolled in there.

After all of that, in this post 9/11 world, knocking out Saddam was an absolute necessity. Winning the war on terror requires that we get rogue nations out of the business of supporting terrorist groups with global reach. Saddam was the low hanging fruit and because we plucked him, we MAY be able to deal with Iran, Syria, and North Korea WITHOUT having to use force. Furthermore, a democratic Iraq has the potential to help transform the region and take the starch out of radical Islam. I don't care how you slice it, it was time for Saddam to go and we're better off with him out of commission.

2) Abu Ghraib: I'm sorry, but Abu Ghraib is a big sack of nothing. I think this has been the most overblown story of the century so far & despite the spin, I think it has very little to do with the Bush administration. In other words, I think the idea of holding the President responsible because a few sadistic grunts got out of hand is just silly.

3) Indefinite detentions: My sympathy for non-Americans who


rite('{:<25}  {:<7}  {:<12}  '.format(node_name, mac.vlan, mac.port))
            sys.stdout.flush()
            match = mac
            break

    if (match == None):
        return (None, None)

    port = node.shorten_port_name(mac.port)
    neighbors = gnatlas.get_neighbors(node)

    match = None
    for n in neighbors:
        if (n.local_port == port):
            sys.stdout.write('{:<15}  {:<25}'.format(n.remote_ip, n.remote_name))
            sys.stdout.flush()
            match = n
            break

    print()
    if (match == None):
        # MAC is on this node
        return (node, mac.port)

    # found MAC on the same port as a neighbor - trace that node
    return trace_node(match.remote_ip, macaddr, depth+1)


eObject(response.body.string())
        response.close()
        val data = result.getJSONArray("data")
        val updateInfoList = JSON.parseArray(data.toString(), UpdateInfo::class.java)
        return updateInfoList.first()
    }

    fun download(
        context: Context,
        updateInfo: UpdateInfo,
        path: String,
        onRequest: (Boolean) -> Unit
    ) {
        val task = DownloadTask(context, updateInfo)
        task.download(downloadUrl, path, onRequest)
    }
}package top.sacz.timtool.hook

import android.app.Application
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.IXposedHookZygoteInit
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
import top.sacz.timtool.hook.common.CommonMethod

/**
 * 模块入口
 */
private val TIM_PACKAGE = HookEnv.TIM_PACKAGE
private val QQ_PACKAGE = HookEnv.QQ_PACKAGE
private const val TAG = "[Tim助手]"

class InjectHook : IXposedHookLoadPackage, IXposedHookZygoteInit {
    val hookSteps = HookSteps()

    /**
     * 标准注入入口
     */
    override fun handleLoadPackage(lpparam: LoadPackageParam) {
        if ((lpparam.packageName == TIM_PACKAGE || lpparam.packageName == QQ_PACKAGE) && lpparam.isFirstApplication) {
            // Init hook
            hookSteps.initHandleLoadPackage(lpparam)
            initHook(lpparam)
        }
    }

    /**
     * 模块加载路径
     */
    override fun initZygote(startupParam: IXposedHookZygoteInit.StartupParam) {
        hookSteps.initZygote(startupParam)
    }

    /**
     * hook app context onCreate 方法 可以过掉大部分加固
     */
    private fun initHook(loadPackageParam: LoadPackageParam) {
        val onCreateContextMethod = CommonMethod.getContextCreateMethod(loadPackageParam)
        XposedBridge.hookMethod(onCreateContextMethod, object : XC_MethodHook() {
            override fun afterHookedMethod(param: MethodHookParam) {
                val application = param.thisObject as Application
                //init env
                hookSteps.initContext(application)
                hookSteps.initHooks()
            }
        })
    }

}package top.sacz.timtool.ui.dialog

import com.kongzue.dialogx.dialogs.MessageDialog
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import top.sacz.timtool.R
import top.sacz.timtool.hook.util.ToastTool
import top.sacz.timtool.net.HttpClient
import top.sacz.timtool.net.entity.QSResult
import top.sacz.timtool.net.entity.UpdateInfo
import top.sacz.timtool.util.TimeUtils
import top.sacz.xphelper.util.ActivityTools

/**
 * 展示更新Dialog
 */
class UpdateLogDialog {

    fun show() {
        val dialog = MessageDialog.build()
            .setTitle(R.string.view_update_log)
            .setMessage(R.string.loading)
            .setOkButton(R.string.ok)
            .show()
        asyncGetUpdateLog(dialog)
    }

    fun updateDialog(dialog: MessageDialog, updateInfoList: List<UpdateInfo>) {
        val builder = StringBuilder()
        for (updateInfo in updateInfoList) {
            builder.append("v").append(updateInfo.versionName).append(" - ")
                .append(TimeUtils.formatTime(updateInfo.time)).append("\n")
            builder.append(updateInfo.updateLog).append("\n---------------\n")
        }

        ActivityTools.runOnUiThread {
            dialog.setMessage(builder.toString())
        }


tive"] = "Ramener 20 larmes d’Arthas au sergent-major Germaine dans la Garde militaire de Forgefer.";
		};
		[8541] = {
		   ["name"] = "Des silex à aiguiser pour la Garde";
		   ["objective"] = "Apporter 10 Silex à aiguiser denses, 10 Silex à aiguiser solides et 10 Silex à aiguiser lourds à Vish Kozus, capitaine de la garde du Fort cénarien en Silithus. Vous devez aussi apporter le Briefing logistique III pour terminer cette quête.";
		};
		[8573] = {
		   ["name"] = "Equipement de guerre de champion";
		   ["objective"] = "Ramener 15 Badges cénariens de combat, 20 Badges cénariens de logistique, 20 Badges cénariens de tactique et 1 Marque de Cénarius à Vargus, au Fort cénarien en Silithus. Vous devrez aussi être $gExalté:Exaltée; par le Cercle cénarien pour terminer cette quête.";
		};
		[8605] = {
		   ["name"] = "La Horde a besoin de plus de bandages en laine !";
		};
		[8637] = {
		   ["name"] = "Les bottes du dispensateur de mort";
		   ["objective"] = "Rapporter des Manchettes de domination qiraji, 2 Idoles de la lutte, 5 Scarabées de cristal et 5 Scarabées d'os à Kandrostrasz, à Ahn'Qiraj. Pour terminer cette quête, il faut aussi que la Progéniture de Nozdormu soit au moins Neutre à votre égard.";
		};
		[8669] = {
		   ["name"] = "Le protège-épaules de la genèse";
		   ["objective"] = "Rapporter des Manchettes de domination qiraji, 2 Idoles de la lutte, 5 Scarabées d'or et 5 Scarabées d'os à Andorgos, à Ahn'Qiraj. Pour terminer cette quête, il faut aussi que la Progéniture de Nozdormu soit au moins Neutre à votre égard.";
		};
		[8701] = {
		   ["name"] = "L'anneau des ombres voilées";
		   ["objective"] = "Apporter 1 Anneau de cérémonie qiraji, 2 Idoles d’onyx, 5 Scarabées de pierre et 5 Scarabées de cristal à l’imploratrice céleste Yessendra, en Silithus. Vous devrez aussi être $gHonoré:Honorée; par le Cercle cénarien pour terminer cette quête.";
		};
		[8733] = {
		   ["name"] = "Eranikus, le tyran du Rêve";
		   ["objective"] = "Rendez-vous sur Teldrassil et trouvez l’agent de Malfurion à l’extérieur des remparts de Darnassus.";
		};
		[8765] = {
		   ["name"] = "Changer de voie - adieu à l'Invocateur";
		};
		[9025] = {
		   ["name"] = "La découverte de Morgan";
		   ["objective"] = "Retourner voir Aristan Mottar, à côté de la banque, dans le Quartier commerçant de Hurlevent.";
		};
		[8829] = {
		   ["name"] = "L'ultime ruse";
		   ["objective"] = "Apporter une Peau des ombres, 3 Coutures d’abomination effilochées et 1 Robe de sectateur du crépuscule à Aurel Feuilledor au Fort cénarien en Silithus. Pour terminer cette quête, vous devez aussi apporter le Briefing logistique XI.";
		};
		[8861] = {


onfig_list()
            # transceiver_obj.show_port_to_i2c_mapping()

            # Initial the transceiver_obj
            transceiver_obj.initial_transceiver_port_mapping()
            # transceiver_obj.show_transceiver_port_mapping()

            initalNotOK = False
        except Exception, e:
            log_message("Exception. The warning is {0}".format(str(e)) )
        time.sleep(5)

    # Improve the power mode for QSFP ports
    transceiver_obj.set_power_mode_for_QSFP()

    while 1 :
        try:
            if bcm_obj.get_platform() == INV_SEQUOIA_PLATFORM:
                bcm_obj.parsing_port_list()
            for index in transceiver_obj.get_port_to_i2c_mapping().keys():
                info = transceiver_obj.get_eeprom_dict_info(index)
                value = transceiver_obj.get_eeprom_partNum_from_parser_eeprom_dict(info)
                if transceiver_obj.get_transceiver_port_mapping().has_key(index) is not False and transceiver_obj.get_transceiver_port_mapping()[index]["pn"] <> value:
                    transceiver_obj.get_transceiver_port_mapping()[index]["pn"] = value
                    transceiver_obj.set_transceiver_type(index,value)
                    transceiver_obj.set_tx_disable(index)
                    #transceiver_obj.show_transceiver_port_mapping()
            # transceiver_obj.show_transceiver_port_mapping()
        except Exception, e:
            log_message("Exception. The warning is {0}".format(str(e)) )
        time.sleep(1)

    syslog.closelog()
    del transceiver_obj
    del bcm_obj

if __name__ == "__main__":
    main()


));
        this.resize = new UIIcon(Icons.FULLSCREEN, (b) ->
        {
            Pixels pixels = this.getPixels();
            UIResizeTextureOverlayPanel overlayPanel = new UIResizeTextureOverlayPanel(pixels.width, pixels.height, (size) ->
            {
                boolean editing = this.isEditing();
                Pixels newPixels = Pixels.fromSize(
                    MathUtils.clamp(size.x, 1, 4096),
                    MathUtils.clamp(size.y, 1, 4096)
                );

                newPixels.draw(pixels, 0, 0, newPixels.width, newPixels.height);
                pixels.delete();

                this.fillPixels(newPixels);
                this.setDirty(false);
                this.setEditing(editing);
            });

            UIOverlay.addOverlay(this.getContext(), overlayPanel);
        });
        this.resize.tooltip(UIKeys.TEXTURES_RESIZE);
        this.extract = new UIIcon(Icons.UPLOAD, (b) ->
        {
            UIOverlay.addOverlay(this.getContext(), new UITextureExtractOverlayPanel(this.getTexture(), this.getPixels()), 200, 231);
        });
        this.extract.tooltip(UIKeys.TEXTURES_EXTRACT_FRAMES_TITLE);

        this.toolbar.add(this.resize, this.extract, this.save);
    }

    public UITextureEditor saveCallback(Consumer<Link> saveCallback)
    {
        this.saveCallback = saveCallback;

        return this;
    }

    public Link getTexture()
    {
        return this.texture;
    }

    public boolean isDirty()
    {
        return this.dirty;
    }

    public void dirty()
    {
        this.setDirty(true);
    }

    public void setDirty(boolean dirty)
    {
        this.dirty = dirty;
    }

    @Override
    protected void wasChanged()
    {
        this.dirty();
    }

    public void fillColor(Vector2i pixel, Color color, boolean colorReplace)
    {
        PixelsUndo pixelsUndo = new PixelsUndo();
        Pixels pixels = this.getPixels();
        Color target = pixels.getColor(pixel.x, pixel.y);

        if (target == null)
        {
            return;
        }

        target = target.copy();

        if (colorReplace)
        {
            for (int x = 0; x < pixels.width; x++)
            {
                for (int y = 0; y < pixels.height; y++)
                {
                    Color current = pixels.getColor(x, y);

                    if (current.getARGBColor() == target.getARGBColor())
                    {
                        pixelsUndo.setColor(pixels, x, y, color);
                    }
                }
            }
        }
        else
        {
            this.floodFill(new HashSet<>(), pixelsUndo, pixels, pixel.x, pixel.y, target.getARGBColor(), color.getARGBColor());
        }

        this.undoManager.pushUndo(pixelsUndo);
        this.updateTexture();
    }

    private void floodFill(Set<Vector2i> set, PixelsUndo undo, Pixels pixels, int x, int y, int targetColor, int replacementColor)
    {
        if (x < 0 || y < 0 || x >= pixels.width || y >= pixels.height)
        {
            return;
        }

        int current = pixels.getColor(x, y).getARGBColor();

        if (current != targetColor)
        {
            return;
        }

        Vector2i v = new Vector2i


        munmap(addr, 8192).unwrap();
    }
}

#[test]
fn test_msync() {
    use rustix::mm::{mmap_anonymous, msync, munmap, MapFlags, MsyncFlags, ProtFlags};
    use std::ptr::null_mut;

    unsafe {
        let addr = mmap_anonymous(null_mut(), 8192, ProtFlags::READ, MapFlags::PRIVATE).unwrap();

        msync(addr, 8192, MsyncFlags::SYNC).unwrap();
        msync(addr, 8192, MsyncFlags::ASYNC).unwrap();

        munmap(addr, 8192).unwrap();
    }
}
<reponame>MEM-Group/Rust-Semantics<filename>rustsem-ocaml/rust_tests/function/t1.rs<gh_stars>0

fn print_number(x:i32) {
   println!("x is: {}", x);
}

fn main(){

   let x = 66;
   print_number(x);

}// Copyright 2020 <NAME>
//
// 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.

//! This module contains unsigned integers encoded by 384 bits.

mod constants;

pub use constants::{
    BE_U32_0, BE_U32_1, BE_U32_2, BE_U32_HALF_MAX, BE_U32_HALF_MAX_T242, BE_U32_MAX, BE_U8_0, BE_U8_1, BE_U8_2,
    BE_U8_MAX, LE_U32_0, LE_U32_1, LE_U32_2, LE_U32_HALF_MAX, LE_U32_HALF_MAX_T242, LE_U32_MAX, LE_U32_MAX_T242,
    LE_U32_NEG_HALF_MAX_T242, LE_U32_ONLY_T243_OCCUPIED, LE_U8_0, LE_U8_1, LE_U8_2, LE_U8_MAX,
};

use crate::ternary::bigint::{
    binary_representation::{BinaryRepresentation, U32Repr, U8Repr},
    endianness::{BigEndian, LittleEndian},
    error::Error,
    overflowing_add::OverflowingAdd,
    split_integer::SplitInteger,
    t243, I384, T242, T243,
};

use bee_ternary::Utrit;

use byteorder::{self, ByteOrder};

use std::{
    cmp::Ordering,
    convert::TryFrom,
    fmt,
    marker::PhantomData,
    ops::{Deref, DerefMut},
};

/// A big integer encoding an unsigned integer with 384 bits.
///
/// `T` is usually taken as a `[u32; 12]` or `[u8; 48]`.
///
/// `E` refers to the endianness of the digits in `T`. This means that in the case of `[u32; 12]`, if `E == BigEndian`,
/// that the `u32` at position i=0 is considered the most significant digit. The endianness `E` here makes no statement
/// about the endianness of each single digit within itself (this is then dependent on the endianness of the platform
/// this code is run on).
///
/// For `E == LittleEndian` the digit at the last position is considered to be the most significant.
#[derive(Clone, Copy)]
pub struct U384<E, T> {
    pub(crate) inner: T,
    _phantom: PhantomData<E>,
}

impl<E, T> Deref for U384<E, T> {


n = 10
v = 1
cont = 0
while cont <= n:
  print(cont)
  cont = cont + 1
print(f'Olha o {cont}')


(IS_BSD)) && \
     (BUILDFLAG(USE_VAAPI) || BUILDFLAG(USE_V4L2_CODEC))
 auto RunStableVideoDecoderFactoryProcessService(
     mojo::PendingReceiver<
@@ -351,7 +351,7 @@ auto RunStableVideoDecoderFactoryProcessService(
 #endif  // (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)) &&
         // (BUILDFLAG(USE_VAAPI) || BUILDFLAG(USE_V4L2_CODEC))

-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
 auto RunVideoEncodeAcceleratorProviderFactory(
     mojo::PendingReceiver<media::mojom::VideoEncodeAcceleratorProviderFactory>
         receiver) {
@@ -415,13 +415,13 @@ void RegisterMainThreadServices(mojo::ServiceFactory&
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH) && (BUILDFLAG(USE_VAAPI) ||
         // BUILDFLAG(USE_V4L2_CODEC))

-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)) && \
+#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD)) && \
     (BUILDFLAG(USE_VAAPI) || BUILDFLAG(USE_V4L2_CODEC))
   services.Add(RunStableVideoDecoderFactoryProcessService);
 #endif  // (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)) &&
         // (BUILDFLAG(USE_VAAPI) || BUILDFLAG(USE_V4L2_CODEC))

-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
   services.Add(RunVideoEncodeAcceleratorProviderFactory);
 #endif  // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)

--- chrome/browser/download/download_item_model.cc.orig	2023-10-19 19:58:04 UTC
+++ chrome/browser/download/download_item_model.cc
@@ -769,7 +769,7 @@ bool DownloadItemModel::IsCommandChecked(
              download_crx_util::IsExtensionDownload(*download_);
     case DownloadCommands::ALWAYS_OPEN_TYPE:
 #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
-    BUILDFLAG(IS_MAC)
+    BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
       if (download_commands->CanOpenPdfInSystemViewer()) {
         DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(profile());
         return prefs->ShouldOpenPdfInSystemReader();
@@ -815,7 +815,7 @@ void DownloadItemModel::ExecuteCommand(DownloadCommand
       base::UmaHistogramBoolean("Download.SetAlwaysOpenTo", !is_checked);
       DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(profile());
 #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
-    BUILDFLAG(IS_MAC)
+    BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
       if (download_commands->CanOpenPdfInSystemViewer()) {
         prefs->SetShouldOpenPdfInSystemReader(!is_checked);
         SetShouldPreferOpeningInBrowser(is_checked);
@@ -1200,7 +1200,7 @@ void DownloadItemModel::DetermineAndSetShouldPre


byte(test), &cfg)
	assert.NotNil(t, err)
	require.Contains(t, err.Error(), "failed to parse OTLP receiver config: otlp")
}

func TestUnmarshalYAMLEmptyOTLPProtocols(t *testing.T) {
	test := `
receivers:
  otlp:
    protocols:`
	cfg := InstanceConfig{}
	err := yaml.Unmarshal([]byte(test), &cfg)
	assert.NotNil(t, err)
	require.Contains(t, err.Error(), "otlp receiver requires a \"protocols\" field which must be a YAML map: otlp")
}

// sortService is a helper function to lexicographically sort all
// the possibly unsorted elements of a given cfg.Service
func sortService(cfg *otelcol.Config) {
	sort.Slice(cfg.Service.Extensions, func(i, j int) bool { return cfg.Service.Extensions[i].String() > cfg.Service.Extensions[j].String() })

	for _, pipeline := range cfg.Service.Pipelines {
		sort.Slice(pipeline.Exporters, func(i, j int) bool { return pipeline.Exporters[i].String() > pipeline.Exporters[j].String() })
		sort.Slice(pipeline.Receivers, func(i, j int) bool { return pipeline.Receivers[i].String() > pipeline.Receivers[j].String() })
		sort.Slice(pipeline.Processors, func(i, j int) bool { return pipeline.Processors[i].String() > pipeline.Processors[j].String() })
	}
}
package servicegraphprocessor

import (
	"context"
	"errors"
	"fmt"
	"time"

	"github.com/go-kit/log"
	"github.com/go-kit/log/level"
	util "github.com/grafana/agent/internal/util/log"
	"go.opentelemetry.io/collector/component"
	"go.opentelemetry.io/collector/consumer"
	"go.opentelemetry.io/collector/pdata/ptrace"
	otelprocessor "go.opentelemetry.io/collector/processor"
	semconv "go.opentelemetry.io/collector/semconv/v1.6.1"
	"go.opentelemetry.io/otel/attribute"
	"go.opentelemetry.io/otel/metric"
	sdkmetric "go.opentelemetry.io/otel/sdk/metric"
	"google.golang.org/grpc/codes"
)

const (
	serviceGraphRequestTotal_name           = "service_graph_request"
	serviceGraphRequestFailedTotal_name     = "service_graph_request_failed"
	serviceGraphRequestServerHistogram_name = "service_graph_request_server_seconds"
	serviceGraphRequestClientHistogram_name = "service_graph_request_client_seconds"
	serviceGraphUnpairedSpansTotal_name     = "service_graph_unpaired_spans"
	serviceGraphDroppedSpansTotal_name      = "service_graph_dropped_spans"
)

type tooManySpansError struct {
	droppedSpans int
}

func (t tooManySpansError) Error() string {
	return fmt.Sprintf("dropped %d spans", t.droppedSpans)
}

// edge is an edge between two nodes in the graph
type edge struct {
	key string

	serverService, clientService string
	serverLatency, clientLatency time.Duration

	// If either the client or the server spans have status code error,
	// the edge will be considered as failed.
	failed bool

	// expiration is the time at which the edge expires, expressed as Unix time
	expiration int64
}

func newEdge(key string, ttl time.Duration) *edge {
	return &edge{
		key: key,

		expiration: time.Now().Add(ttl).Unix(),
	}
}

// isCompleted returns true if the corresponding client and server
// pair spans have been processed for the given edge
func (e *edge) isCompleted() bool {
	return len(e.clientS


transporte Y comercios. Subte D - estación pueyrredón Y subte H – sobre pueyrredón. - A media cuadra de plaza monseñor miguel de andrea. - 2 cuadras de avenida pueyrredón. - 4 cuadras de avenida santa fe. - 5 cuadras del hospital de niños. - 7 cuadras del hospital alemán. las medidas, expensas Y antigÜedad son aproximadas, se verifican con documentación. Denise morozowski propiedades cucicba 8525

Publicado hace 17 días

<button aria-label="Favorito" class="sc-1b3blmr-0 blZEzl" data-qa="CARD_FAV" font-size="16px" font-weight="500"><svg color="currentColor" fill="currentColor" font-size="25px" height="1em" stroke="currentColor" stroke-width="0" viewbox="0 0 16 14" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M8 13.7c-.1 0-.3 0-.4-.1l-5.8-6a4.05 4.05 0 010-5.9C3.4.1 6.1.1 7.7 1.7l.3.4.4-.4c1.6-1.6 4.3-1.6 5.9 0 1.6 1.6 1.6 4.3 0 5.9l-5.9 5.9c-.1.1-.3.2-.4.2zM4.7 1.5c-.8 0-1.6.3-2.2.9-1.2 1.2-1.2 3.2 0 4.5L8 12.4l5.5-5.5c.6-.6.9-1.4.9-2.2 0-.8-.3-1.7-.9-2.3-1.2-1.2-3.2-1.2-4.5 0l-.6.7c-.2.2-.5.2-.7 0l-.8-.7c-.6-.6-1.4-.9-2.2-.9z" fill="#000"></path></svg></button> <button class="sc-1b3blmr-0 gmgQdy sc-zxup93-0 iwAqhP" font-size="16px" font-weight="500"><svg color="currentColor" fill="currentColor" font-size="22px" height="1em" stroke="none" viewbox="0 0 16 16" width="1em" xmlns


string = programs.iter().collect::<String>();

        if i == 0 {
            println!("First: {}", string);
        }

        let s = seen.get(&string);
        if s.is_some() {
            i = 1000000000 - (1000000000 - i) % (i - s.unwrap());
        }
        seen.insert(string, i);
        i += 1;
    }

    println!("Second: {}", programs.iter().collect::<String>());
}
<filename>src/libpcp/propagators/all_equal.rs
// Copyright 2018 <NAME> (IRCAM)

// 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.

use kernel::*;
use trilean::SKleene;
use model::*;
use logic::*;
use propagators::cmp::x_eq_y::*;
use propagation::events::*;
use propagation::*;
use gcollections::*;
use concept::*;

#[derive(Debug)]
pub struct AllEqual<VStore>
{
  conj: Conjunction<VStore>,
  vars: Vec<Var<VStore>>
}

impl<VStore> NotFormula<VStore> for AllEqual<VStore> where
 VStore: Collection + 'static
{
  fn not(&self) -> Formula<VStore> {
    self.conj.not()
  }
}

impl<VStore, Domain, Bound> AllEqual<VStore> where
  VStore: VStoreConcept<Item=Domain> + 'static,
  Domain: IntDomain<Item=Bound> + 'static,
  Bound: IntBound + 'static,
{
  /// Precondition: `vars.len() > 1`.
  pub fn new(vars: Vec<Var<VStore>>) -> Self {
    assert!(vars.len() > 0,
      "Variable array in `AllEqual` must be non-empty.");
    let mut props = vec![];
    for i in 0..vars.len()-1 {
      let i_eq_j = Box::new(XEqY::new(vars[i].bclone(), vars[i+1].bclone())) as Formula<VStore>;
      props.push(i_eq_j);
    }
    AllEqual {
      conj: Conjunction::new(props),
      vars: vars
    }
  }
}

impl<VStore> Clone for AllEqual<VStore> where
 VStore: Collection
{
  fn clone(&self) -> Self {
    AllEqual {
      conj: self.conj.clone(),
      vars: self.vars.iter().map(|v| v.bclone()).collect()
    }
  }
}

impl<VStore> DisplayStateful<Model> for AllEqual<VStore>
{
  fn display(&self, model: &Model) {
    model.display_global("all_equal", &self.vars);
  }
}

impl<VStore> Subsumption<VStore> for AllEqual<VStore>
{
  fn is_subsumed(&self, vstore: &VStore) -> SKleene {
    self.conj.is_subsumed(vstore)
  }
}

impl<VStore> Propagator<VStore> for AllEqual<VStore>
{
  fn propagate(&mut self, vstore: &mut VStore) -> bool {
    self.conj.propagate(vstore)
  }
}

impl<VStore> PropagatorDependencies<FDEvent> for AllEqual<VStore>
{
  fn dependencies(&self) -> Vec<(usize, FDEvent)> {
    self.vars.iter().flat_map(|v| v


.type == ARM_OP_REG && arm->operands[0].reg == ARM_REG_R3 &&
                            arm->operands[1].type == ARM_OP_IMM && arm->operands[1].imm == 3000 &&
                            ins2[j+1].id == ARM_INS_BL)
                        {
                            usbrxbuf = reader.read_uint32_addr(r1val + rxdisp); // TODO: use dispatch from fine_read_write
                            printf("usbrxbuf: %08X\n", usbrxbuf);
                            hitted = true;
                            break;
                        }
                    }
                    cs_free(ins2, cnt2);
                    if (hitted) {
                        break;
                    }
                }
            }
        }
        cs_free(insn, count);
        // 优先从CMD_READ_EMU_MEM处理函数里面抓R4~R9
        bool userealreg = false;
        uint32_t realregs[9];
        count = cs_disasm(handle, reader.buf_at_addr(cmdfefunc & ~1), 4, (cmdfefunc & ~1), 1, &insn);
        if (insn[0].id == ARM_INS_PUSH) {
            cs_arm* arm = &insn[0].detail->arm;
            if (arm->op_count > savedregs && arm->operands[arm->op_count-1].reg == ARM_REG_LR) {
                uint32_t r456addr = taskstackinit + spd1 - arm->op_count * 4;
                if (read_emu_mem(r456addr, realregs, savedregs * sizeof(uint32_t))) {
                    userealreg = true;
                }
            }
        }
        cs_free(insn, count);
        uint32_t* finalregs = userealreg?realregs:r456val;
        // version, sp, lr, uxbrx, true, cmdReg, R4, R5, R6
        if (rawCmdRegIdx >= 4 && rawCmdRegIdx <= 12) {
            finalregs[rawCmdRegIdx - 4] = cmdcnt + 0xE0;
        }
        if (userealreg == false) {
            bool fatal = false;
            for (size_t i = 0; i < savedregs; i++) {
                if (r456dirty[i]) {
                    if (i != rawCmdRegIdx - 4) {
                        errprintf("R%d val is bad!\n", 4 + i);
                        fatal = true;
                    }
                }
            }
            if (fatal) {
                cs_close(&handle);
                return NULL;
            }
        }
        patcher_config item = {argstack, dispatchlr, usbrxbuf, true, (char)savedregs};
        memcpy(item.regs, finalregs, savedregs * sizeof(uint32_t));
        item.endgap = endgap;
        add_user_config(reader.get_banner(), &item);
    }
    // IAR固件?
    if (count == 4) {
        if (insn[2].id == ARM_INS_LDR && insn[2].detail->arm.operands[1].reg == ARM_REG_PC) {
            startaddr = extract_ldr_pool(&insn[2]);
            startaddr = reader.read_uint32_addr(startaddr);
            printf("__iar_program_start: %08X\n", startaddr);
        } else {
            errprintf("Firmware not build by EWARM\n");
            FREE_AND_EXIT(NULL);
        }
        cs_free(insn, count);
        count = cs_disasm(handle, reader.buf_at_addr((startaddr & ~1) + 8), 4, (startaddr & ~1) + 8, 0,