ub fn checked_add_duration(&self, other: &Duration) -> Option<Instant> {
        Some(Instant(self.0.checked_add(*other)?))
    }

    pub fn checked_sub_duration(&self, other: &Duration) -> Option<Instant> {
        Some(Instant(self.0.checked_sub(*other)?))
    }
}

impl SystemTime {
    pub fn now() -> SystemTime {
        SystemTime(usercalls::insecure_time())
    }

    pub fn sub_time(&self, other: &SystemTime)
                    -> Result<Duration, Duration> {
        self.0.checked_sub(other.0).ok_or_else(|| other.0 - self.0)
    }

    pub fn checked_add_duration(&self, other: &Duration) -> Option<SystemTime> {
        Some(SystemTime(self.0.checked_add(*other)?))
    }

    pub fn checked_sub_duration(&self, other: &Duration) -> Option<SystemTime> {
        Some(SystemTime(self.0.checked_sub(*other)?))
    }
}
use tonic::Request;

use crate::v1alpha2::impl_struct::k8s_v1alpha2;
use k8s_v1alpha2::{ AttachRequest,AttachResponse };

pub fn attach(request:Request<AttachRequest>) -> AttachResponse {

        println!("Got a request: {:?}", request);
        let reply = AttachResponse {
            url:"attach url".to_string(),
        };
        return reply;
}extern crate bytecodec;
extern crate flv_codec;
#[macro_use]
extern crate trackable;

use bytecodec::io::{IoDecodeExt, ReadBuf};
use bytecodec::Decode;
use flv_codec::{FileDecoder, Tag};
use trackable::error::MainError;

fn main() -> Result<(), MainError> {
    let stdin = std::io::stdin();
    let mut input = stdin.lock();
    let mut buf = ReadBuf::new(vec![0; 1024]);
    let mut decoder = FileDecoder::new();
    let mut is_header_shown = false;

    while !buf.stream_state().is_eos() {
        track!(buf.fill(&mut input))?;
        track!(decoder.decode_from_read_buf(&mut buf))?;
        if let Some(h) = decoder.header() {
            if !is_header_shown {
                println!("[header]");
                println!("has_audio = {}", h.has_audio);
                println!("has_video = {}", h.has_video);
                println!("");
                is_header_shown = true;
            }
        }
        if decoder.is_idle() {
            let tag = track!(decoder.finish_decoding())?;
            println!("[[tags]]");
            println!("type = {:?}", tag_type(&tag));
            println!("timestamp = {}", tag.timestamp().value());
            println!("stream_id = {}", tag.stream_id().value());
            println!("");
        }
    }

    Ok(())
}

fn tag_type(tag: &Tag) -> &'static str {
    match tag {
        Tag::Audio(_) => "audio",
        Tag::Video(_) => "video",
        Tag::ScriptData(_) => "script_data",
    }
}
<filename>tests/header_reads.rs<gh_stars>1-10

// TODO enable when reading is fully implemented

// #![warn(unused_variables, unused_must_use)]

// extern crate ravro;

// use ravro::reader::{AvroReader, BlockReader};
// use ravro::types::Schema;
// use ravro::writer::AvroWriter;
// use std::collections::BTreeMap;

// #[test]
// fn test_header_read() {
//     let mut writer = AvroWriter::from_schema("tests/schemas/mapmap_schema.avsc").unwrap();
//     let mut map = BTreeMap::new();
//     let mut inner_map = BTreeMap::new();


(.MAIN.T1_hwint_711), 16, 16)) -> intp(1, 0, 33)
	.word 0xbc952198  ! 5366: ORcc_I	orcc 	%r20, 0x0198, %r30
	.word 0xf8b44b60  ! 5367: STHA_R	stha	%r28, [%r17 + %r0] 0x5b
T1_hwint_712:
!$EV trig_pc_d(1,expr(@VA(.MAIN.T1_hwint_712), 16, 16)) -> intp(1, 0, 33)
T1_hwint_713:
!$EV trig_pc_d(1,expr(@VA(.MAIN.T1_hwint_713), 16, 16)) -> intp(1, 0, 29)
	.word 0xbd7d8400  ! 5370: MOVR_R	movre	%r22, %r0, %r30
	.word 0xb73c3001  ! 5373: SRAX_I	srax	%r16, 0x0001, %r27
	.word 0xfbb50b00  ! 5374: STQFA_R	-	%f29, [%r0, %r20]
T1_irf_ce_442:
!$EV error(1,expr(@VA(.MAIN.T1_irf_ce_442), 16, 16),1,IRF,ce,55,34, x,x,x, x,x,x)
	.word 0xb9352001  ! 5376: SRL_I	srl 	%r20, 0x0001, %r28
T1_hwint_714:
!$EV trig_pc_d(1,expr(@VA(.MAIN.T1_hwint_714), 16, 16)) -> intp(1, 0, 25)
T1_irf_ce_443:
!$EV error(1,expr(@VA(.MAIN.T1_irf_ce_443), 16, 16),1,IRF,ce,2,66, x,x,x, x,x,x)
	.word 0xb7643801  ! 5378: MOVcc_I	<illegal instruction>
T1_irf_ce_444:
!$EV error(1,expr(@VA(.MAIN.T1_irf_ce_444), 16, 16),1,IRF,ce,41,71, x,x,x, x,x,x)
	.word 0xf80c60cf  ! 5379: LDUB_I	ldub	[%r17 + 0x00cf], %r28
T1_irf_ce_445:
!$EV error(1,expr(@VA(.MAIN.T1_irf_ce_445), 16, 16),1,IRF,ce,31,15, x,x,x, x,x,x)
	.word 0xb3643801  ! 5380: MOVcc_I	<illegal instruction>
	lda	[%r17 + %g0] 0xf0, %f2
	.word 0xb935a001  ! 5381: SRL_I	srl 	%r22, 0x0001, %r28
T1_hwint_715:
!$EV trig_pc_d(1,expr(@VA(.MAIN.T1_hwint_715), 16, 16)) -> intp(1, 0, 3f)
T1_irf_ce_446:
!$EV error(1,expr(@VA(.MAIN.T1_irf_ce_446), 16, 16),1,IRF,ce,35,67, x,x,x, x,x,x)
	.word 0xb13d0000  ! 5385: SRA_R	sra 	%r20, %r0, %r24
	.word 0xf9bd60f0  ! 5385: STDFA_I	stda	%f28, [0x00f0, %r21]
	.word 0xf794cce0  ! 5386: LDQFA_R


                    "type": "category",
                    "name": "doujinshi",
                    "url": "/category/doujinshi/",
                    "count": 308230
                },
                {
                    "id": 35762,
                    "type": "tag",
                    "name": "sole female",
                    "url": "/tag/sole-female/",
                    "count": 106435
                },
                {
                    "id": 51399,
                    "type": "tag",
                    "name": "crotch tattoo",
                    "url": "/tag/crotch-tattoo/",
                    "count": 3299
                },
                {
                    "id": 52157,
                    "type": "character",
                    "name": "kosaka shizuru",
                    "url": "/character/kosaka-shizuru/",
                    "count": 16
                },
                {
                    "id": 85295,
                    "type": "tag",
                    "name": "twintails",
                    "url": "/tag/twintails/",
                    "count": 18428
                },
                {
                    "id": 94917,
                    "type": "group",
                    "name": "ikemen teikoku",
                    "url": "/group/ikemen-teikoku/",
                    "count": 30
                },
                {
                    "id": 105833,
                    "type": "tag",
                    "name": "gloves",
                    "url": "/tag/gloves/",
                    "count": 7485
                },
                {
                    "id": 123538,
                    "type": "character",
                    "name": "tatsurou akiyama",
                    "url": "/character/tatsurou-akiyama/",
                    "count": 8
                }
            ],
            "num_pages": 44,
            "num_favorites": 0
        },
        {
            "id": 422761,
            "media_id": "2342907",
            "title": {
                "english": "[Ikemen Teikoku (Remu)] Shizuru-san ga Tatsurou-kun o Netoru Hanashi (Taimanin Yukikaze) [Digital]",
                "japanese": "[イケメン帝国 (れむ)] 静流さんが達郎君を寝取る話 (対魔忍ユキカゼ) [DL版]",
                "pretty": "Shizurukun o Netoru Hanashi"
            },
            "images": {
                "pages": [
                    {
                        "t": "j",
                        "w": 1280,
                        "h": 1780
                    },
                    {
                        "t": "j",
                        "w": 1280,
                        "h": 1780
                    },
                    {
                        "t": "j",
                        "w": 1280,
                        "h": 1780
                    },
                    {
                        "t": "j",
                        "w": 1280,
                        "h": 1780
                    },
                    {
                        "t": "j",
                        "w": 1280,
                        "h": 1780
                    },
                    {
                        "t": "j",
                        "w": 1280,
                        "h": 1780
                    },
                    {
                        "t": "j",
                        "w": 1280,
                        "h": 1780
                    },
                    {
                        "t": "j",
                        "w": 1280,
                        "h": 1780
                    },
                    {
                        "t": "j",
                        "w": 1280,
                        "h": 1780
                    },
                    {
                        "t": "j",
                        "w": 1280,
                        "h": 1780
                    },
                    {
                        "t": "j",
                        "w": 1280,
                        "h": 1780
                    },
                    {
                        "t": "j",
                        "w": 1280,
                        "h": 1780
                    },
                    {
                        "t": "j",
                        "w": 1280,
                        "h": 1780
                    },
                    {
                        "t": "j",
                        "w": 1280,
                        "h": 1780
                    },
                    {
                        "t": "j",
                        "w": 1280,


6]:=active_height[6]+shrink(q);
//!   if (shrink_order(q)<>normal)and(shrink(q)<>0) then
//!     begin@t@>@;@/
//!     print_err("Infinite glue shrinkage found in box being split");@/
//! @.Infinite glue shrinkage...@>
//!     help4("The box you are \vsplitting contains some infinitely")@/
//!       ("shrinkable glue, e.g., `\vss' or `\vskip 0pt minus 1fil'.")@/
//!       ("Such glue doesn't belong there; but you can safely proceed,")@/
//!       ("since the offensive shrinkability has been made finite.");
//!     error; r:=new_spec(q); shrink_order(r):=normal; delete_glue_ref(q);
//!     glue_ptr(p):=r; q:=r;
//!     end;
//!   end;
//! cur_height:=cur_height+prev_dp+width(q); prev_dp:=0
//!
//! @ Now we are ready to consider |vsplit| itself. Most of
//! its work is accomplished by the two subroutines that we have just considered.
//!
//! Given the number of a vlist box |n|, and given a desired page height |h|,
//! the |vsplit| function finds the best initial segment of the vlist and
//! returns a box for a page of height~|h|. The remainder of the vlist, if
//! any, replaces the original box, after removing glue and penalties and
//! adjusting for |split_top_skip|. Mark nodes in the split-off box are used to
//! set the values of |split_first_mark| and |split_bot_mark|; we use the
//! fact that |split_first_mark=null| if and only if |split_bot_mark=null|.
//!
//! The original box becomes ``void'' if and only if it has been entirely
//! extracted.  The extracted box is ``void'' if and only if the original
//! box was void (or if it was, erroneously, an hlist box).
//!
//! @p function vsplit(@!n:eight_bits; @!h:scaled):pointer;
//!   {extracts a page of height |h| from box |n|}
//! label exit,done;
//! var v:pointer; {the box to be split}
//! p:pointer; {runs through the vlist}
//! q:pointer; {points to where the break occurs}
//! begin v:=box(n);
//! if split_first_mark<>null then
//!   begin delete_token_ref(split_first_mark); split_first_mark:=null;
//!   delete_token_ref(split_bot_mark); split_bot_mark:=null;
//!   end;
//! @<Dispense with trivial cases of void or bad boxes@>;
//! q:=vert_break(list_ptr(v),h,split_max_depth);
//! @<Look at all the marks in nodes before the break, and set the final
//!   link to |null| at the break@>;
//! q:=prune_page_top(q); p:=list_ptr(v); free_node(v,box_node_size);
//! if q=null then box(n):=null {the |eq_level| of the box stays the same}
//! else box(n):=vpack(q,natural);
//! vsplit:=vpackage(p,h,exactly,split_max_depth);
//! exit: end;
//!
//! @ @<Dispense with trivial cases of void or bad boxes@>=
//! if v=null then
//!   begin vsplit:=null; return;
//!   end;
//! if type(v)<>vlist_node then
//!   begin print_err(""); print_esc("vsplit"); print(" needs a ");
//!   print_esc("vbox");
//! @:vsplit_}{\.{\\vsplit needs a \\vbox}@>
//!   help2("The box you are trying to split is an \hbox.")@/
//!   ("I can't split such a box, so I'll leave it alone.");
//!   error; vsplit:=null; return;
//!   end
//!
//! @ It's po


alScore',sumaTotalScorep)
    bigFive.forEach((factor:number)=>{
        console.log(people['nombre usuario'],' sumaTotalScore opinion propia',sumaTotalScorep)
        ypScore.push(people["opinion propia"][factor])
        ypScore.push(people["opinion otros"][factor])
    }) // verificar por que la opinion propia no es igual a la suma de la zona abierta con la zona oculta, verificar si las sumas o lo promedios alteran estos datos
    puntajeZonas.push({y:ypScore,title:"opinion propia"})
    let ypScoreOtros:number[] = [];

    bigFive.forEach((factor:number)=>{
        console.log(people['nombre usuario'],' sumaTotalScore opinion otros',sumaTotalScorep)
        ypScoreOtros.push(people["opinion otros"][factor])
    }) // verificar por que la opinion propia no es igual a la suma de la zona abierta con la zona oculta, verificar si las sumas o lo promedios alteran estos datos
    puntajeZonas.push({y:ypScoreOtros,title:"opinion otros"})
    graficar.graficarTorta(bigFive,puntajeZonasPorcentajes,{id:index+'p',title:people['nombre usuario']})
    graficar.graficarBarras(bigFive,puntajeZonas,{id:index+'b',title:people['nombre usuario']})

})
import TDate from './TDate'
import { Crop } from './Crop'

export enum OperationType {
	PLOWING = 0,        // Вспашка
	BOWLING = 1,        // Боронование
	FERTILIZATION = 2,  // Внесение удобрений
	WATERING = 3,       // Полив
	RIGGING = 4,        // Прикатывание
	HARVESTING = 5      // Сбор урожая
}

export enum Assessment {
	EXCELLENT = 0,      // Отлично
	SATISFACTORILY = 1,	// Удовлетворительно
	BADLY = 2           // Плохо
}

export class Operation {
	id?: string | null;             // ID Операции
	type: OperationType;            // Тип операции
	date: TDate;                    // Дата проведения операции
	area: number;                   // Площадь проведения операции (Га)
	comment?: string | null;        // Комментарий
	assessment?: Assessment | null; // Оценка качества проведенной операции
	crop?: Crop | null; 			// Культура

	constructor(args: Operation) {
		const {
			id = null,
			type,
			date,
			area,
			comment = null,
			assessment = null,
			crop = null
		} = args;
		this.id = id;
		this.type = type;
		this.date = new TDate(date);
		this.area = area;
		this.comment = comment;
		this.assessment = assessment;
		this.crop = crop;
	}
}
import { Component, OnInit } from '@angular/core';
import { FormControl, FormGroup, Validators } from '@angular/forms';

function nombreErroneoValidator(control: FormControl) {
    let nombre = control.value;
    if (nombre  === "MANOLO" || nombre === "PEPE"){
        return {
           nombreErroneo: {
             mensaje: "ESTE NOMBRE NO VALE"
           }
        }
    }
    return null;
}

@Component({
  selector: 'formularioAvanzado',
  templateUrl: './formularioAvanzado.component.html'


je	1f
	movq	4464(%rax), %r11
	jmp	*%r11
1:
	pushq	%rdi
	pushq	%rsi
	pushq	%rdx
	pushq	%rcx
	pushq	%r8
	pushq	%r9
	pushq	%rbp
	call	_glapi_get_dispatch
	popq	%rbp
	popq	%r9
	popq	%r8
	popq	%rcx
	popq	%rdx
	popq	%rsi
	popq	%rdi
	movq	4464(%rax), %r11
	jmp	*%r11
#endif /* defined(GLX_USE_TLS) */
	.size	GL_PREFIX(CompressedTexSubImage2DARB), .-GL_PREFIX(CompressedTexSubImage2DARB)

	.p2align	4,,15
	.globl	GL_PREFIX(CompressedTexSubImage1DARB)
	.type	GL_PREFIX(CompressedTexSubImage1DARB), @function
GL_PREFIX(CompressedTexSubImage1DARB):
#if defined(GLX_USE_TLS)
	call	_x86_64_get_dispatch@PLT
	movq	4472(%rax), %r11
	jmp	*%r11
#elif defined(PTHREADS)
	pushq	%rdi
	pushq	%rsi
	pushq	%rdx
	pushq	%rcx
	pushq	%r8
	pushq	%r9
	pushq	%rbp
	call	_x86_64_get_dispatch@PLT
	popq	%rbp
	popq	%r9
	popq	%r8
	popq	%rcx
	popq	%rdx
	popq	%rsi
	popq	%rdi
	movq	4472(%rax), %r11
	jmp	*%r11
#else
	movq	_glapi_Dispatch(%rip), %rax
	testq	%rax, %rax
	je	1f
	movq	4472(%rax), %r11
	jmp	*%r11
1:
	pushq	%rdi
	pushq	%rsi
	pushq	%rdx
	pushq	%rcx
	pushq	%r8
	pushq	%r9
	pushq	%rbp
	call	_glapi_get_dispatch
	popq	%rbp
	popq	%r9
	popq	%r8
	popq	%rcx
	popq	%rdx
	popq	%rsi
	popq	%rdi
	movq	4472(%rax), %r11
	jmp	*%r11
#endif /* defined(GLX_USE_TLS) */
	.size	GL_PREFIX(CompressedTexSubImage1DARB), .-GL_PREFIX(CompressedTexSubImage1DARB)

	.p2align	4,,15
	.globl	GL_PREFIX(GetCompressedTexImageARB)
	.type	GL_PREFIX(GetCompressedTexImageARB), @function
GL_PREFIX(GetCompressedTexImageARB):
#if defined(GLX_USE_TLS)
	call	_x86_64_get_dispatch@PLT
	movq	4480(%rax), %r11
	jmp	*%r11
#elif defined(PTHREADS)
	pushq	%rdi
	pushq	%rsi
	pushq	%rdx
	call	_x86_64_get_dispatch@PLT
	popq	%rdx
	popq	%rsi
	popq	%rdi
	movq	4480(%rax), %r11
	jmp	*%r11
#else
	movq	_glapi_Dispatch(%rip), %rax
	testq	%rax, %rax
	je	1f
	movq	44


', () => {
      const bo = new BitwiseOptions([
        {name: 'first', size: 25, type: 'uint'},
        {name: 'second', size: 25, type: 'uint'},
        {name: 'third', size: 25, type: 'uint'},
      ]);
      bo.set('first', BigInt(11105611)); // 0101010010111010101001011
      bo.set('second', BigInt(33367063)); // 1111111010010010000010111
      bo.set('third', BigInt(20587679)); // 1001110100010010010011111
      expect(bo.toNumber()).toBe(BigInt('23179666987818704008523'));
    });

    it('returns correct bigint string', () => {
      const bo = new BitwiseOptions([
        {name: 'first', size: 129, type: 'uint'},
      ]);
      bo.read(BigInt('481966290129121909553755495609654715551'));
      expect(bo.toString()).toBe('481966290129121909553755495609654715551');
    });
  });

  describe('signed integers', () => {
    let bo: BitwiseOptions;

    beforeEach(() => {
      bo = new BitwiseOptions([
        {name: 'first', size: 4, type: 'sint'},
      ])
    });

    it('sets signed multi-bit ints', () => {
      bo.set('first', BigInt(-3));
      expect(bo.get('first')).toBe(BigInt(-3)); // 1011
      expect(bo.toString()).toBe('11');
      bo.set('first', BigInt(3));
      expect(bo.get('first')).toBe(BigInt(3)); // 0011
      expect(bo.toString()).toBe('3');
    });

    it('reads multi-bit signed ints', () => {
      bo.read(BigInt(15)); // 1111
      expect(bo.get('first')).toBe(BigInt(-7));
      bo.read(BigInt(7)); // 0111
      expect(bo.get('first')).toBe(BigInt(7));
      bo.read(BigInt(0)); // 0111
      expect(bo.get('first')).toBe(BigInt(0));
    });

    it('throws on a single bit signed', () => {
      expect(() => {
        new BitwiseOptions([
          {name: 'wrong', size: 1, type: 'sint'}
        ]);
      }).toThrowError(ERROR_REGEX);
    });

    it('calculates max value correctly', () => {
      expect(() => {
        bo.set('first', BigInt(-8));
      }).toThrowError(ERROR_REGEX);
      expect(() => {
        bo.set('first', BigInt(8));
      }).toThrowError(ERROR_REGEX);
    });
  });

  describe('API typing and exceptions', () => {
    it('requires all option parameters', () => {
      expect(() => {
        // @ts-expect-error
        new BitwiseOptions([{}]);
      }).toThrowError(ERROR_REGEX);
      expect(() => {
        // @ts-expect-error
        new BitwiseOptions([{name: 'default'}]);
      }).toThrowError(ERROR_REGEX);
      expect(() => {
        // @ts-expect-error
        new BitwiseOptions([{name: 'default', size: 2}]);
      }).toThrowError(ERROR_REGEX);
      expect(() => {
        // @ts-expect-error
        new BitwiseOptions([{name: 'default', type: 'uint'}]);
      }).toThrowError(ERROR_REGEX);
    });
  });
});
import * as React from "react";
import { ValidationErrors, Validator, ValidationCallback, ValidationState } from "pojo-validator";
import { ValidateCallback } from './ValidateCallback';

/**
 * Hook that provides a validate method and


=-1
					}
				},
				text="{0}% reduced Fire Trap Burning Damage"
			}
		},
		stats={
			[1]="fire_trap_burning_damage_+%"
		}
	},
	[3846]={
		[1]={
			[1]={
				[1]={
					k="reminderstring",
					v="ReminderTextIgnite"
				},
				limit={
					[1]={
						[1]=100,
						[2]="#"
					}
				},
				text="Fireball Always Ignites"
			},
			[2]={
				[1]={
					k="reminderstring",
					v="ReminderTextIgnite"
				},
				limit={
					[1]={
						[1]=1,
						[2]=99
					}
				},
				text="Fireball has {0:+d}% chance to Ignite"
			}
		},
		stats={
			[1]="fireball_ignite_chance_%"
		}
	},
	[3847]={
		[1]={
			[1]={
				[1]={
					k="reminderstring",
					v="ReminderTextFreeze"
				},
				limit={
					[1]={
						[1]=100,
						[2]="#"
					}
				},
				text="Glacial Hammer Always Freezes"
			},
			[2]={
				[1]={
					k="reminderstring",
					v="ReminderTextFreeze"
				},
				limit={
					[1]={
						[1]=1,
						[2]=99
					}
				},
				text="Glacial Hammer has {0:+d}% chance to Freeze"
			}
		},
		stats={
			[1]="glacial_hammer_freeze_chance_%"
		}
	},
	[3848]={
		[1]={
			[1]={
				[1]={
					k="reminderstring",
					v="ReminderTextFreeze"
				},
				limit={
					[1]={
						[1]=100,
						[2]="#"
					}
				},
				text="Ice Nova Always Freezes"
			},
			[2]={
				[1]={
					k="reminderstring",
					v="ReminderTextFreeze"
				},
				limit={
					[1]={
						[1]=1,
						[2]=99
					}
				},
				text="Ice Nova has {0:+d}% chance to Freeze"
			}
		},
		stats={
			[1]="ice_nova_freeze_chance_%"
		}
	},
	[3849]={
		[1]={
			[1]={
				limit={
					[1]={
						[1]=1,
						[2]="#"
					}
				},
				text="{0}% increased Attack Speed per Reave stack"
			},
			[2]={
				[1]={
					k="negate",
					v=1
				},
				limit={
					[1]={
						[1]="#",
						[2]=-1
					}
				},
				text="{0}% reduced Attack Speed per Reave stack"
			}
		},
		stats={
			[1]="reave_attack_speed_per_reave_stack_+%"
		}
	},
	[3850]={
		[1]={
			[1]={
				limit={
					[1]={
						[1]=1,
						[2]="#"
					}
				},
				text="{0}% increased Spectral Throw Projectile Deceleration"
			},
			[2]={
				[1]={
					k="negate",
					v=1
				},
				limit={
					[1]={
						[1]="#",
						[2]=-1
					}
				},
				text="{0}% reduced Spectral Throw Projectile Deceleration"
			}
		},
		stats={


.sshShell(command[0], command[1], command[2], Integer.parseInt(command[3]), command[4]);
				}else{
					LogUtil.APP.warn("TOMCATв쳣Ϣ");
					result = "TOMCATв쳣Ϣ";
				}
			}else{
				result = "Status:true"+" ǰûҵҪTOMCAT";
				LogUtil.APP.info("ǰûָҪTOMCAT");
			}
		}catch(Throwable e){
			LogUtil.APP.error("TOMCATг쳣",e);
			result = "TOMCATг쳣";
			return result;
		}
		return result;

	}

}
package luckyclient.utils.config;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.Properties;

import luckyclient.utils.LogUtil;
import luckyclient.utils.proxy.PropertiesProxy;

/**
 * ʼAppiumò
 * @author seagull
 *
 */
public class AppiumConfig {
	private static final Properties SYS_CONFIG = new Properties();
	private static final String SYS_CONFIG_FILE = "/appium_config.properties";
	private static PropertiesProxy proxy=new PropertiesProxy();
	static{
		try {
		    InputStream in = new BufferedInputStream(AppiumConfig.class.getResourceAsStream(SYS_CONFIG_FILE));
			SYS_CONFIG.load(new InputStreamReader(in, StandardCharsets.UTF_8));
			proxy.setWapper(SYS_CONFIG);
		} catch (IOException e) {
			LogUtil.APP.error("ȡƶappium_config.propertiesļ쳣飡", e);
		}
	}
	private AppiumConfig(){}
	public static Properties getConfiguration(){
		return proxy;
	}
}
package com.example.gsyvideoplayer;

import android.content.DialogInterface;
import android.content.res.Configuration;
import android.os.Bundle;
import androidx.core.widget.NestedScrollView;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;

import com.bumptech.glide.Glide;
import com.example.gsyvideoplayer.video.LandLayoutVideo;
import com.example.gsyvideoplayer.view.CustomInputDialog;
import com.shuyu.gsyvideoplayer.GSYVideoManager;
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder;
import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack;
import com.shuyu.gsyvideoplayer.video.base.GSYVideoPlayer;
import com.shuyu.gsyvideoplayer.listener.LockClickListener;
import com.shuyu.gsyvideoplayer.utils.OrientationUtils;

import butterknife.BindView;
import butterknife.ButterKnife;

public class InputUrlDetailActivity extends AppCompatActivity {

    @BindView(R.id.post_detail_nested_scroll)
    NestedScrollView postDetailNestedScroll;

    //推荐使用StandardGSYVideoPlayer，功能一致
    //CustomGSYVideoPlayer部分功能处于试验阶段
    @BindView(R.id.detail_player)
    LandLayoutVideo detailPlayer;

    @BindView(R.id.activity_detail_player)
    RelativeLayout activityDetailPlayer;

    @BindView(R.id.inputUrl)
    Button inputUrl;

    private boolean isPlay;
    private boolean isPause;
    private boolean cache;
    private String url;

    private OrientationUtils orientationUtils;

    private GSYVideoOptionBuilder gsyVideoOptionBuilder;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_input_url_detail);
        ButterKnife.bind(this);

        url = "https://res.exexm.com/cw_145225549855002";

        //增加封面
        ImageView imageView = new ImageView(this);
        imageView.setScaleType(ImageV


l_sat": "Sat",
  "lbl_thu": "Thu",
  "lbl_tue": "Tue",
  "lbl_wed": "Wed",
  "msg_lorem_ipsum_dolor":
      "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam... ",

  // Booking barber Screen
  "lbl": "-",
  "lbl_01_00": "\$01.00",
  "lbl_60_00": "\$60.00",
  "lbl_61_00": "\$61.00",
  "lbl_61_002": "\$ 61.00",
  "lbl_admin_fee": "Admin Fee",
  "lbl_appointment": "Appointment",
  "lbl_chest_pain": "Chest pain",
  "lbl_consultation": "Consultation",
  "lbl_date": "Date",
  "lbl_reason": "Reason",
  "msg_aditional_discount": "Aditional Discount",
  "msg_wednesday_jun_23": "Wednesday, Jun 23, 2021 | 10:00 AM",

  // Chat with barber Screen
  "lbl_10_min_ago": "10 min ago",
  "lbl_5_min_ago": "5 min ago",
  "lbl_online": "Online",
  "lbl_send": "Send",
  "msg_consultion_start": "Consultion Start",
  "msg_i_don_t_have_any": "I don,t have any fever, but headchace is painful",
  "msg_i_have_suffering":
      "I have suffering from headache and cold for 3 days, I took 2 tablets of dolo, but still pain",
  "msg_ok_do_you_have": "Ok, Do you have fever? is the\nheadchace severe",
  "msg_type_message": "Type message ...",
  "msg_you_can_consult": "You can consult your problem to the barber",

  // Schedule Screen
  "lbl_10_30_am": "10:30 AM",
  "lbl_26_06_2022": "26/06/2022",
  "lbl_28_06_2022": "28/06/2022",
  "lbl_2_00_pm": "2:00 PM",
  "lbl_cancel": "Cancel",
  "lbl_confirmed": "Confirmed",
  "lbl_psikeater": "Psikeater",
  "lbl_reschedule": "Reschedule",

  // Schedule_Tab Container Screen
  "lbl_canceled": "Canceled", "lbl_completed": "Completed",
  "lbl_schedule": "Schedule", "lbl_upcoming": "Upcoming",

  // Message History Screen
  "lbl_08_57": "08:57",
  "lbl_09_04": "09:04",
  "lbl_10_24": "10.24",
  "msg_do_you_have_fever": "Do you have fever?",
  "msg_i_don_t_have_any2": "I don,t have any fever, but headchace...",

  // Message History_Tab Container Screen
  "lbl_all": "All", "lbl_group": "Group", "lbl_message": "Message",
  "lbl_private": "Private",

  // Articles Screen
  "lbl_5_min_read": "5 min read",
  "lbl_5min_read2": "5min read",
  "lbl_6_min_read": "6 min read",
  "lbl_8_min_read": "8 min read",
  "lbl_articles": "Articles",
  "lbl_diet": "Diet",
  "lbl_fitness": "Fitness",
  "lbl_jun_10_2021": "Jun 10, 2021",
  "lbl_jun_10_20212": "Jun 10, 2021 ",


econdary>.panel-header{border-color:#3bb4f2;background-color:#3bb4f2;color:#fff}.panel-success{border-color:#5eb95e}.panel-success>.panel-header{border-color:#5eb95e;background-color:#5eb95e;color:#fff}.panel-warning{border-color:#f37b1d}.panel-warning>.panel-header{border-color:#f37b1d;background-color:#f37b1d;color:#fff}.panel-danger{border-color:#dd514c}.panel-danger>.panel-header{border-color:#dd514c;background-color:#dd514c;color:#fff}.docs-example{position:relative;*position:static;*padding-top:19px;margin:15px 0;padding:39px 19px 14px;background-color:#fff;border:1px solid #ddd;border-radius:4px}.docs-example:after{content:"Example";position:absolute;top:-1px;left:-1px;*position:static;padding:3px 7px;font-size:12px;font-weight:bold;background-color:#f5f5f5;border:1px solid #ddd;color:#9da0a4;border-radius:4px 0 4px 0}.marquee{height:22px;overflow:hidden;line-height:22px}.rollpic .prev,.rollpic .next{display:block;height:38px;width:38px;cursor:pointer;float:left;background:url(../images/unslider-arrow2.png) no-repeat 0 0;margin-top:70px}.rollpic .prev{background-position:0 0;margin-right:5px}.rollpic .prev:hover{background-position:0 -38px}.rollpic .next{background-position:0 -76px;margin-left:5px}.rollpic .next:hover{background-position:0 -114px}.rollpicshow{float:left;border:solid 1px #ddd}.rollpicshow li{padding:10px}.searchBar{z-index:100;width:460px;height:33px;background:url(../images/search.gif) no-repeat 0 -48px;position:relative}.form-search{margin-bottom:0}.searchTxt{float:left;width:350px;height:23px;line-height:23px;font-size:14px;color:#9a9a9a;margin-left:33px;margin-top:5px;border:0;background-color:#fff}.searchTxt.focus{color:#333}.searchBtn{float:right;display:block;border:0;width:73px;height:33px;cursor:pointer;text-indent:-9999px;background:url(../images/search.gif) no-repeat right -81px}.searchBtn:hover{background-position:right -114px}.ac_results{position:absolute;width:386px;height:auto;border:solid 1px #890800;background-color:#fff;top:32px;left:0;display:none}.ac_results ul{width:100%;list-style-position:outside;list-style:none;padding:0;margin:0}.ac_results li p{float:left;margin:0;padding:0;overflow:hidden}.ac_results li p tt{color:#666}.ac_results li span{margin:0;padding:0;display:inline;float:right;color:#f93;width:90px;text-align:right;overflow:hidden}.ac_results ul li{padding-left:5px;padding-right:5px;display:block;height:22px;line-height:22px;cursor:pointer;color:#000;font:宋体;font-size:12px}.ac_results ul li.hover{background-color:#fef8ec;color:#000}.ac_loading{background:#fff url(../images/loading_s.gif) right center no-repeat}.AD{text-align:center}.dual{top:260px;position:absolute;width:102px;overflow:hidden;display:none;z-index:100}.dual_l{left:6px}.dual_r{right:6px}.dual_con{border:#CCC solid 1px;width:100px;height:300px;


地址后，由数据链路层构建一个数据帧，目的地址是IP层传过来的MAC地址，源地址则是本机的MAC地址；还要附加上一些控制信息，依据以太网的介质访问规则，将它们传送出去。

主机B收到这个数据帧后，先检查它的目的MAC地址，并和本机的MAC地址对比，如符合，则接收，否则就丢弃。接收后检查该数据帧，将IP数据包从帧中提取出来，交给本机的IP层。同样，IP层检查后，将有用的信息提取后交给ICMP协议。

主机B会构建一个 ICMP 应答包，应答数据包的类型字段为 0，顺序号为接收到的请求数据包中的顺序号，然后再发送出去给主机A。

在规定的时候间内，源主机如果没有接到 ICMP 的应答包，则说明目标主机不可达；如果接收到了 ICMP 应答包，则说明目标主机可达。此时，源主机会检查，用当前时刻减去该数据包最初从源主机上发出的时刻，就是 ICMP 数据包的时间延迟。

当然这只是最简单的，同一个局域网里面的情况。如果跨网段的话，还会涉及网关的转发、路由器的转发等等。但是对于ICMP的头来讲，是没什么影响的。会影响的是根据目标IP地址，选择路由的下一跳，还有每经过一个路由器到达一个新的局域网，需要换MAC头里面的MAC地址。这个过程后面几节会详细描述，这里暂时不多说。

如果在自己的可控范围之内，当遇到网络不通的问题的时候，除了直接ping目标的IP地址之外，还应该有一个清晰的网络拓扑图。并且从理论上来讲，应该要清楚地知道一个网络包从源地址到目标地址都需要经过哪些设备，然后逐个ping中间的这些设备或者机器。如果可能的话，在这些关键点，通过tcpdump -i eth0 icmp，查看包有没有到达某个点，回复的包到达了哪个点，可以更加容易推断出错的位置。

经常会遇到一个问题，如果不在我们的控制范围内，很多中间设备都是禁止ping的，但是ping不通不代表网络不通。这个时候就要使用telnet，通过其他协议来测试网络是否通，这个就不在本篇的讲述范围了。

说了这么多，你应该可以看出ping这个程序是使用了ICMP里面的ECHO REQUEST和ECHO REPLY类型的。

## Traceroute：差错报


import json
import colorama
from src.processing_module.services.AIService import AIService
from utils import AudioService
from interfaces import IService
from colorama import Fore, Style
from paths import path_resolver

colorama.init()

class Excecutor:
    def __init__(self,
                 prediction_threshold: float = 0.8):
        """
        Инициализация голосового ассистента

        Args:
            prediction_threshold (float): Порог уверенности для классификации
        """
        self.current_state = 'NORMAL'

        self.current_model_id = None
        self.current_model_name = None
        self.current_model_key = None
        self.current_model_provider = None

        self.prediction_threshold = prediction_threshold

        self.services: dict[str, IService] = {
            'audio': AudioService().getInstance(),
            "ai_service": AIService().getInstance(),
        }

        self.get_current_model_data_from_json()

    def set_socket_client(self, socket_client):
        ai_service = self.services["ai_service"]
        if hasattr(ai_service, 'set_socket_client'):
            ai_service.set_socket_client(socket_client)  # type: ignore

    def get_current_model_data_from_json(self, model_id = None):
        with open(f"{path_resolver['global_path']}/settings.json", 'r') as f:
            data = json.load(f)
            if model_id:
                self.current_model_id = model_id
            else:
                self.current_model_id = data.get("current.ai.model.id", None)

            if (not self.current_model_id):
                return

            data = data.get("current.ai.api", {})
            model = data.get(self.current_model_id, None)
            if model:
                self.current_model_name = model.get("name")
                self.current_model_key = model.get("value")
                self.current_model_provider = model.get("provider")
                self.services["ai_service"].set_client_data(self.current_model_key, self.current_model_name, self.current_model_provider) # type: ignore

    def run(self, msg):
        text = msg['payload']['text']
        dialog_id = msg['payload'].get('dialog_id')
        data = self.services["ai_service"].execute(text, dialog_id) # type: ignore

        yield data


ue
func (mgr *Manager) SetQueueClient(cli queue.Client) {
	var err error
	mgr.SysAPI, err = client.New(cli, nil)
	if err != nil {
		panic("SetQueueClient client.New err:" + err.Error())
	}
	mgr.Client = cli

	p2pCfg := mgr.ChainCfg.GetModuleConfig().P2P
	subCfg := mgr.ChainCfg.GetSubConfig().P2P

	for _, p2pTy := range p2pCfg.Types {

		newP2P := LoadP2PCreate(p2pTy)(mgr, subCfg[p2pTy])
		newP2P.StartP2P()
		mgr.p2ps = append(mgr.p2ps, newP2P)
	}

	go mgr.handleSysEvent()
	//go mgr.handleP2PSub()
}
// Copyright Fuzamei Corp. 2018 All Rights Reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package client_test

import (
	"bytes"

	"github.com/33cn/chain33/queue"
	"github.com/33cn/chain33/types"
)

type mockBlockChain struct {
}

func (m *mockBlockChain) SetQueueClient(q queue.Queue) {
	go func() {
		blockchainKey := "blockchain"
		client := q.Client()
		client.Sub(blockchainKey)
		for msg := range client.Recv() {
			switch msg.Ty {
			case types.EventGetBlocks:
				if req, ok := msg.GetData().(*types.ReqBlocks); ok {
					if req.Start == 1 {
						msg.Reply(client.NewMessage(blockchainKey, types.EventBlocks, &types.Transaction{}))
					} else {
						msg.Reply(client.NewMessage(blockchainKey, types.EventBlocks, &types.BlockDetails{}))
					}
				} else {
					msg.ReplyErr("Do not support", types.ErrInvalidParam)
				}
			case types.EventGetTransactionByAddr:
				if req, ok := msg.GetData().(*types.ReqAddr); ok {
					if req.Flag == 1 {
						msg.Reply(client.NewMessage(blockchainKey, types.EventBlocks, &types.Transaction{}))
					} else {
						msg.Reply(client.NewMessage(blockchainKey, types.EventReplyTxInfo, &types.ReplyTxInfos{}))
					}
				} else {
					msg.ReplyErr("Do not support", types.ErrInvalidParam)
				}
			case types.EventQueryTx:
				if req, ok := msg.GetData().(*types.ReqHash); ok {
					if bytes.Equal(req.Hash, []byte("case1")) {
						msg.Reply(client.NewMessage(blockchainKey, types.EventTransactionDetail, &types.Transaction{}))
					} else {
						msg.Reply(client.NewMessage(blockchainKey, types.EventTransactionDetail, &types.TransactionDetail{}))
					}
				} else {
					msg.ReplyErr("Do not support", types.ErrInvalidParam)
				}
			case types.EventGetTransactionByHash:
				if req, ok := msg.GetData().(*types.ReqHashes); ok {
					if len(req.GetHashes()) > 0 && bytes.Equal(req.Hashes[0], []byte("case1")) {
						msg.Reply(client.NewMessage(blockchainKey, types.EventTransactionDetails, &types.Transaction{}))
					} else {
						msg.Reply(client.NewMessage(blockchainKey, types.EventTransactionDetails, &types.TransactionDetails{}))
					}
				} else


IFIER and/or %G_GUINT32_FORMAT.
///
/// The notation to express a Unicode code point in running text is
/// as a hexadecimal number with four to six digits and uppercase
/// letters, prefixed by the string "U+". Leading zeros are omitted,
/// unless the code point would have fewer than four hexadecimal digits.
/// For example, "U+0041 LATIN CAPITAL LETTER A". To print a code point
/// in the U+-notation, use the format string "U+\%04"G_GINT32_FORMAT"X".
/// To scan, use the format string "U+\%06"G_GINT32_FORMAT"X".
///
/// |[
/// gunichar c;
/// sscanf ("U+0041", "U+%06"G_GINT32_FORMAT"X", &c)
/// g_print ("Read U+%04"G_GINT32_FORMAT"X", c);
/// ]|
typedef gunichar = guint32;

final class _GBytes extends ffi.Opaque {}

typedef GBytes = _GBytes;
typedef GQuark = guint32;

final class _GError extends ffi.Struct {
  @GQuark()
  external int domain;

  @gint()
  external int code;

  external ffi.Pointer<gchar> message;
}

/// GError:
/// @domain: error domain, e.g. %G_FILE_ERROR
/// @code: error code, e.g. %G_FILE_ERROR_NOENT
/// @message: human-readable informative error message
///
/// The `GError` structure contains information about
/// an error that has occurred.
typedef GError = _GError;
typedef PangoFontFamily_autoptr = ffi.Pointer<PangoFontFamily>;
typedef GList = _GList;

final class _GList extends ffi.Struct {
  external gpointer data;

  external ffi.Pointer<GList> next;

  external ffi.Pointer<GList> prev;
}

typedef GList1 = _GList;
typedef PangoFontFamily_listautoptr = ffi.Pointer<GList1>;
typedef PangoFontFamily_slistautoptr = ffi.Pointer<GSList1>;

/// GQueue:
/// @head: a pointer to the first element of the queue
/// @tail: a pointer to the last element of the queue
/// @length: the number of elements in the queue
///
/// Contains the public fields of a
/// [Queue][glib-Double-ended-Queues].
final class _GQueue extends ffi.Struct {
  external ffi.Pointer<GList1> head;

  external ffi.Pointer<GList1> tail;

  @guint()
  external int length;
}

typedef GQueue = _GQueue;
typedef PangoFontFamily_queueautoptr = ffi.Pointer<GQueue>;
typedef PangoFontFace_autoptr = ffi.Pointer<PangoFontFace>;
typedef PangoFontFace_listautoptr = ffi.Pointer<GList1>;
typedef PangoFontFace_slistautoptr = ffi.Pointer<GSList1>;
typedef PangoFontFace_queueautoptr = ffi.Pointer<GQueue>;
typedef PangoFont_autoptr = ffi.Pointer<PangoFont>;
typedef PangoFont_listautoptr = ffi.Pointer<GList1>;
typedef PangoFont_slistautoptr = ffi.Pointer<GSList1>;
typedef PangoFont_queueautoptr = ffi.Pointer<GQueue>;
typedef PangoFontDescription_autoptr = ffi.Pointer<PangoFontDescription>;
typedef PangoFontDescription_listautoptr = ffi.Pointer<GList1>;
typedef PangoFontDescription_slistautoptr = ffi.Pointer<GSList1>;
typedef PangoFontDescription_queueautoptr = ffi.Pointer<GQueue>;

final class _PangoContextClass extends ffi.Opaque {}

typedef PangoContextClass = _PangoContextClass;

/// PangoFontset:
///
/// A `PangoFontset` represent


ダッシュ強射　威力増加
　－迷わず生きた人霊　高レベルで怨霊増加　判定強化
　－通りすがりの人霊　高レベルで判定拡大　相殺強度増加
　－浮かばれない地縛霊　強弱で勢い調整　レベルアップで射出数増加　怨霊が一定時間で強制消滅　相殺強度低下　グレイズで消滅
　－死出の風　高レベルで判定拡大　強に踏み込み性能追加　最終フレームでガード可能だった問題修正　復帰不能短縮
　－死神の大鎌　空中対応　高レベルで鎌が複数に　発生速度加速
　－脱魂の儀　高レベル強版で自分の居た位置周囲に幽霊を設置する
　－無間の道　レベルアップで持続増加　フィールドの設置限界が一つに　スペルキャンセル対応
　－お迎え体験版　クラッシュ属性　ホールド中に逆射撃ボタンで解除　ホールド中にスペルキャンセル対応　判定内側に強化　打撃のスペルキャンセルタイミング加速
　－寂しがり屋の緊縛霊　スペルキャンセル対応
　－河の流れのように　ヒットベクトルが変化　空中で拾いやすく
　－八重霧の渡し　霊魂増加　霊力磨耗属性追加
　－余命幾許も無し　コスト増加　発生加速　無敵削除
　－不惜身命、可惜身命　発生速度遅延　無敵技化
　－無間の狭間　効果時間延長
　－死者選別の鎌　発生加速

・衣玖
　－カードゲージ増加の適用されていない必殺が修正されました
　－大ジャンプ出始めにカウンター判定適用
　－空中回避結界前方のループバグ修正
　－前ダッシュ　ぶつかり判定高度低下
　－前打　踏み込み増加　判定強化　硬直短縮　ホールド短縮
　－前下打　硬直短縮　ホールド短縮
　－下前打　ホールド短縮　出始めに被カウンター適用
　－空上打　追加
　－空前打　復帰不能短縮
　－コンビネーション二段目　被カウンターが最後まで適用されていた問題修正


: jobs.ActionOutput.VarsEntry
	(*service.Query)(nil),                 // 64: service.Query
	(*idm.User)(nil),                      // 65: idm.User
	(*idm.PolicyCondition)(nil),           // 66: idm.PolicyCondition
	(chat.RoomType)(0),                    // 67: chat.RoomType
	(*anypb.Any)(nil),                     // 68: google.protobuf.Any
	(*service.ResourcePolicy)(nil),        // 69: service.ResourcePolicy
	(*tree.Node)(nil),                     // 70: tree.Node
	(*idm.Role)(nil),                      // 71: idm.Role
	(*idm.Workspace)(nil),                 // 72: idm.Workspace
	(*idm.ACL)(nil),                       // 73: idm.ACL
	(*activity.Object)(nil),               // 74: activity.Object
	(*object.DataSource)(nil),             // 75: object.DataSource
}
var file_cells_jobs_proto_depIdxs = []int32{
	64,  // 0: jobs.NodesSelector.Query:type_name -> service.Query
	5,   // 1: jobs.NodesSelector.Range:type_name -> jobs.SelectorRange
	0,   // 2: jobs.IdmSelector.Type:type_name -> jobs.IdmSelectorType
	64,  // 3: jobs.IdmSelector.Query:type_name -> service.Query
	5,   // 4: jobs.IdmSelector.Range:type_name -> jobs.SelectorRange
	65,  // 5: jobs.UsersSelector.Users:type_name -> idm.User
	64,  // 6: jobs.UsersSelector.Query:type_name -> service.Query
	1,   // 7: jobs.DataSourceSelector.Type:type_name -> jobs.DataSourceSelectorType
	64,  // 8: jobs.DataSourceSelector.Query:type_name -> service.Query
	64,  // 9: jobs.TriggerFilter.Query:type_name -> service.Query
	64,  // 10: jobs.ActionOutputFilter.Query:type_name -> service.Query
	2,   // 11: jobs.ContextMetaFilter.Type:type_name -> jobs.ContextMetaFilterType
	64,  // 12: jobs.ContextMetaFilter.Query:type_name -> service.Query
	66,  // 13: jobs.ContextMetaSingleQuery.Condition:type_name -> idm.PolicyCondition
	64,  // 14: jobs.DataSelector.Query:type_name -> service.Query
	64,  // 15: jobs.ChatEventFilter.Query:type_name -> service.Query
	67,  // 16: jobs.ChatEventFilterQuery.RoomType:type_name -> chat.RoomType
	6,   // 17: jobs.GenericFilter.NodeSelector:type_name -> jobs.NodesSelector
	7,   // 18: jobs.GenericFilter.IdmSelector:type_name -> jobs.IdmSelector
	9,   // 19: jobs.GenericFilter.DataSourceSelector:type_name -> jobs.DataSourceSelector
	13,  // 20: jobs.GenericFilter.ContextMetaFilter:type_name -> jobs.ContextMetaFilter
	15,  // 21: jobs.GenericFilter.DataSelector:type_name -> jobs.DataSelector
	6,   // 22: jobs.Action.NodesSelector:type_name -> jobs.NodesSelector
	6,   // 23: jobs.Action.NodesFilter:type_name -> jobs.NodesSelector
	8,   // 24: jobs.Action.UsersSelector:type_name -> jobs.UsersSelector
	8,   // 25: jobs.Action.UsersFilter:type_name -> jobs.UsersSelector
	7,   // 26: jobs.Action.IdmSelector:type_name -> jobs.IdmSelector
	7,   // 27: jobs.Action.IdmFilter:type_name -> jobs.IdmSelector
	9,   // 28: jobs.Action.DataSourceSelector:type_name -> jobs.DataSourceSelector
	9,   // 29: jobs.Action.DataSourceFilter:type_name -> jobs.DataSourceSelector
	12,


.DESKTOP_LABELS_HIDE,
        titleId = R.string.title__desktop_hide_icon_labels,
        defaultValue = false,
        onChange = { reloadGrid() }
    )

    val desktopLabelScale = FloatPref(
        dataStore = dataStore,
        key = PrefKey.DESKTOP_LABELS_SCALE,
        titleId = R.string.title_desktop_text_size,
        defaultValue = 1f,
        maxValue = 2f,
        minValue = 0.5f,
        steps = 150,
        specialOutputs = { "${(it * 100).roundToInt()}%" },
        onChange = { reloadGrid() }
    )

    // TODO fix this
    val desktopAllowFullWidthWidgets = BooleanPref(
        dataStore = dataStore,
        key = PrefKey.DESKTOP_WIDGETS_FULL_WIDTH,
        titleId = R.string.title_desktop_full_width_widgets,
        summaryId = R.string.summary_full_width_widgets,
        defaultValue = false,
    )

    // TODO fix this
    var desktopWidgetCornerRadius = FloatPref(
        dataStore = dataStore,
        key = PrefKey.DESKTOP_WIDGETS_CORNER_RADIUS,
        titleId = R.string.title_desktop_widget_corner_radius,
        defaultValue = 16f,
        maxValue = 24f,
        minValue = 1f,
        steps = 22,
        specialOutputs = { "${it.roundToInt()}dp" },
    )

    var desktopPopup = StringMultiSelectionPref(
        dataStore = dataStore,
        key = PrefKey.DESKTOP_POPUP_OPTIONS,
        titleId = R.string.title_desktop_icon_popup_menu,
        defaultValue = setOf(PREFS_DESKTOP_POPUP_EDIT),
        entries = desktopPopupOptions,
        withIcons = true,
    )

    val desktopPopupEdit: Boolean
        get() = desktopPopup.getValue().contains(PREFS_DESKTOP_POPUP_EDIT)
    val desktopPopupRemove: Boolean
        get() = desktopPopup.getValue().contains(PREFS_DESKTOP_POPUP_REMOVE)
    val desktopPopupUninstall: Boolean
        get() = desktopPopup.getValue().contains(PREFS_DESKTOP_POPUP_UNINSTALL)

    private var desktopGridSizeDelegate = ResettableLazy {
        GridSize2D(
            titleId = R.string.title__desktop_grid_size,
            numColumnsPref = desktopGridColumns,
            numRowsPref = desktopGridRows,
            columnsKey = "numColumns",
            rowsKey = "numRows",
            targetObject = LauncherAppState.getIDP(context),
            onChangeListener = { reloadGrid() }
        )
    }

    val desktopGridSize by desktopGridSizeDelegate
    val desktopGridColumns = IdpIntPref(
        dataStore = dataStore,
        key = PrefKey.DESKTOP_GRID_COLUMNS,
        titleId = R.string.title__drawer_columns,
        selectDefaultValue = { numColumns },
        defaultValue = 4,
        minValue = 2f,
        maxValue = 16f,
        steps = 13,
        onChange = { reloadGrid() },
    )

    val desktopGridRows = IdpIntPref(
        dataStore = dataStore,
        key = PrefKey.DESKTOP_GRID_ROWS,
        titleId = R.string.title__drawer_rows,
        selectDefaultValue = { numRows },
        defaultValue = 5,
        minValue = 2f,
        maxValue = 16f,
        steps = 13,
        onChange = { reloadGrid() },
    )

    var desktopFolderCornerRadius = FloatPref(
        dataStore = dataStore,
        key = PrefKey.DESKTOP_FOLDER_CORNER_RADIUS,
        titleId = R.string.folder_radius,
        defaultValue = -1f,
        maxValue = 24f,
        minValue = -1f,
        steps = 24,
        specialOutput


,l=0):\n  \'\'\n\n  \n  w=max(2,w)\n  l=max(1,l)\n  s=self.formatmonthname(theyear,themonth,7 *(w+1)-1)\n  s=s.rstrip()\n  s +=\'\\n\'*l\n  s +=self.formatweekheader(w).rstrip()\n  s +=\'\\n\'*l\n  for week in self.monthdays2calendar(theyear,themonth):\n   s +=self.formatweek(week,w).rstrip()\n   s +=\'\\n\'*l\n  return s\n  \n def formatyear(self,theyear,w=2,l=1,c=6,m=3):\n  \'\'\n\n  \n  w=max(2,w)\n  l=max(1,l)\n  c=max(2,c)\n  colwidth=(w+1)*7 -1\n  v=[]\n  a=v.append\n  a(repr(theyear).center(colwidth *m+c *(m -1)).rstrip())\n  a(\'\\n\'*l)\n  header=self.formatweekheader(w)\n  for(i,row)in enumerate(self.yeardays2calendar(theyear,m)):\n  \n   months=range(m *i+1,min(m *(i+1)+1,13))\n   a(\'\\n\'*l)\n   names=(self.formatmonthname(theyear,k,colwidth,False)\n   for k in months)\n   a(formatstring(names,colwidth,c).rstrip())\n   a(\'\\n\'*l)\n   headers=(header for k in months)\n   a(formatstring(headers,colwidth,c).rstrip())\n   a(\'\\n\'*l)\n   \n   height=max(len(cal)for cal in row)\n   for j in range(height):\n    weeks=[]\n    for cal in row:\n     if j >=len(cal):\n      weeks.append(\'\')\n     else:\n      weeks.append(self.formatweek(cal[j],w))\n    a(formatstring(weeks,colwidth,c).rstrip())\n    a(\'\\n\'*l)\n  return \'\'.join(v)\n  \n def pryear(self,theyear,w=0,l=0,c=6,m=3):\n  \'\'\n  print(self.formatyear(theyear,w,l,c,m),end=\'\')\n  \n  \nclass HTMLCalendar(Calendar):\n \'\'\n\n \n \n \n cssclasses=["mon","tue","wed","thu","fri","sat","sun"]\n \n \n cssclasses_weekday_head=cssclasses\n \n \n cssclass_noday="noday"\n \n \n cssclass_month_head="month"\n \n \n cssclass_month="month"\n \n \n cssclass_year_head="year"\n \n \n cssclass_year="year"\n \n def formatday(self,day,weekday):\n  \'\'\n\n  \n  if day ==0:\n  \n   return \' 	\'%self.cssclass_noday\n  else:\n   return \'%d	\'%(self.cssclasses[weekday],day)\n   \n def formatweek(self,theweek):\n  \'\'\n\n  \n  s=\'\'.join(self.formatday(d,wd)for(d,wd)in theweek)\n  return \'
%s
\'%s\n  \n def formatweekday(self,day):\n  \'\'\n\n  \n  return \'%s	\'%(\n  self.cssclasses_weekday_head[day],day_abbr[day])\n  \n def formatweekheader(self):\n  \'\'\n


erbose, "v", false, "Run tests with verbose output")
	flag.BoolVar(&verbose, "verbose", false, "Run tests with verbose output")
	flag.BoolVar(&coverage, "c", false, "Generate test coverage reports")
	flag.BoolVar(&coverage, "coverage", false, "Generate test coverage reports")

	// Custom usage message
	flag.Usage = func() {
		fmt.Printf("Usage: %s [OPTIONS] [EXAMPLE_ID]\n", os.Args[0])
		fmt.Println("Run tests for Go by Examples")
		fmt.Println("")
		fmt.Println("Options:")
		flag.PrintDefaults()
		fmt.Println("")
		fmt.Println("Examples:")
		fmt.Printf("  %s                Run all tests\n", os.Args[0])
		fmt.Printf("  %s 01-hello-world Run tests for the hello-world example\n", os.Args[0])
		fmt.Printf("  %s -c 24-cli      Run tests for the CLI example with coverage\n", os.Args[0])
		os.Exit(1)
	}

	// Find project root
	var err error
	projectRoot, err = os.Getwd()
	if err != nil {
		logError("Failed to get current directory: %v", err)
		os.Exit(1)
	}

	// Set coverage directory
	coverageDir = filepath.Join(projectRoot, "coverage")
}

// log prints a timestamped message to the console
func log(format string, args ...interface{}) {
	timestamp := time.Now().Format("2006-01-02 15:04:05")
	message := fmt.Sprintf(format, args...)
	fmt.Printf("[%s] %s\n", timestamp, message)
}

// logError prints an error message in red
func logError(format string, args ...interface{}) {
	log(colorRed+format+colorReset, args...)
}

// logSuccess prints a success message in green
func logSuccess(format string, args ...interface{}) {
	log(colorGreen+format+colorReset, args...)
}

// logWarning prints a warning message in yellow
func logWarning(format string, args ...interface{}) {
	log(colorYellow+format+colorReset, args...)
}

// logInfo prints an info message in blue
func logInfo(format string, args ...interface{}) {
	log(colorBlue+format+colorReset, args...)
}

// checkGoVersion verifies Go is installed
func checkGoVersion() {
	cmd := exec.Command("go", "version")
	output, err := cmd.Output()
	if err != nil {
		logError("Error: Go is not installed or not in the PATH")
		os.Exit(1)
	}
	logInfo("Using Go version: %s", strings.TrimSpace(string(output)))
}

// prepareCoverage creates the directory for coverage reports
func prepareCoverage() {
	if coverage {
		err := os.MkdirAll(coverageDir, 0755)
		if err != nil {
			logError("Failed to create coverage directory: %v", err)
			os.Exit(1)
		}
		logInfo("Coverage reports will be saved to: %s", coverageDir)
	}
}

// runExampleTests runs tests for a specific example
func runExampleTests(exampleID string) (bool, error) {
	dir := filepath.Join("examples", exampleID)

	// Skip if directory doesn't exist
	if _, err := os.Stat(filepath.Join(projectRoot, dir)); os.IsNotExist(err) {
		logError("Error: Directory %s does not exist", dir)
		return false, err
	}

	// Skip if main.go doesn't exist
	mainFile := filepath.Join(projectRoot, dir, "main.go")
	if _, err := os


return}},Mie=async r=>{let{testConfiguration:e}=r,{testConfigurationLabel:t}=r;if(!e)return;let n=Ut.join("node_modules","@vscode","test-cli","out","bin.mjs"),i=await Pa(e,async c=>{let u=Ut.join(c,n);return await go(AP.promises,u)?c:void 0});if(!i)throw new Error(Sv.t("Cannot find `{0}` installed in {1}","@vscode/test-cli",Ut.dirname(e)));let o=await(0,PW.default)(process.execPath,[Ut.join(i,n),"--config",e,"--list-configuration"],{env:{...process.env,ELECTRON_RUN_AS_NODE:"1"}}),s=JSON.parse(o.stdout);if(s.length===1)return s[0];if(s.length&&!t&&(t=await CW.window.showQuickPick(s.map((c,u)=>c.config.label||String(u)),{title:Sv.t("Select test configuration to run")}),!t))throw new Kr("cancelled");let a=s.find((c,u)=>c.config.label===t||String(u)===t);if(!a)throw new Error(Sv.t("Cannot find test configuration with label `{0}`, got: {1}",String(t),s.map((c,u)=>c.config.label||u).join(", ")));return a};var Pv=g(ie()),PP=g(M()),Ap=g(require("path")),Hh=g(require("vscode"));var vp=g(ie()),$W=g(require("fs")),Ev=g(require("path")),We=g(require("vscode"));var TW=require("vscode"),_P=async r=>{try{return await TW.commands.executeCommand("npm.packageManager",r?.uri)}catch{return"npm"}},DW=async(r,e)=>`${await _P(e)} run ${r}`;async function kW(r){let e=await EP(r?[r]:void 0);if(!e)return;let t=async a=>{let c=We.workspace.getWorkspaceFolder(We.Uri.file(a.directory));qh(We.commands,"extension.js-debug.createDebuggerTerminal",await DW(a.name,c),c,{cwd:a.directory})};if(e.length===1)return t(e[0]);let n=e.some(a=>a.directory!==e[0].directory),i=We.window.createQuickPick(),o,s=[];for(let a of e)a.directory!==o&&n&&(s.push({label:Ev.basename(a.directory),kind:We.QuickPickItemKind.Separator}),o=a.directory),s.push({script:a,label:a.name,description:a.command});i.items=s,i.onDidAccept(async()=>{t(i.selectedItems[0].script),i.dispose()}),i.show()}var SP=(r,e)=>r.score>e.score?r:e;async function EP(r,e=!1){let t=r??We.workspace.workspaceFolders??[];if(!t||t.length===0){e||We.window.showErrorMessage(vp.t("You need to open a workspace folder to debug npm scripts."));return}let n=(await Promise.all(t.map(s=>We.workspace.findFiles(new We.RelativePattern(s,"**/package.json"),"**/{node_modules,.vscode-test}/**")))).flat();if(n.length===0){e||We.window.showErrorMessage(vp.t("No package.json files found in your workspace."));return}let i=[],o={path:n[0].fsPath,score:0};for(let{fsPath:s}of new Set(n)){o=SP(o,{path:s,score:1});let a;try{a=JSON.parse(await iH(


�部是长双精度类型，我们使用 **cmplxl()** 函数来生成复数，为了得到实部和虚部，我们使用 **creall()** 、 **cimagl()** 函数。

**示例 2:** 我们也可以使用宏 **I** 创建复数对象。

```
// C program to create a complex
// number using macro I

#include <complex.h>
#include <stdio.h>

int main(void)
{
    double complex
        z
        = 3.2 + 4.1 * I;

    // Creates complex number
    // with 3.2 and 4.1 as
    // real and imaginary parts
    printf(
        "z = %.1f% + .1fi\n",
        creal(z), cimag(z));
}
```

**Output:**

```
z = 3.2+4.1i

```

**与< complex.h >**
关联的函数 **< complex.h >** 头文件还提供了一些内置函数来处理复数。这里的“arg”代表复数对象。

| 功能 | 描述 |
| --- | --- |
| float cabsf(float complex arg)
双 cabs(双 complex arg)
长双 cabsl(长双 complex arg) | 它返回复杂参数的绝对值 |
| float complex cacos SF(float complex arg)
双复合 CaCO(双复合 arg)
长双复合 cacosl(长双复合 arg) | 它返回复变元的复弧余弦值 |
| float complex cacoshf(float complex arg)
双复合 cacosh(双复合 arg)
长双复合 cacoshl(长双复合 arg) | 它返回复变元的复弧双曲余弦值 |
| 浮动货物(浮动复合 arg)
双货物(双复合 arg)
长双货物(长双复合 arg) | 它返回复变元的相位角(以弧度为单位)。 |
| float complex casinf(float complex arg)
双复形 casin(双复形 arg)
长双复形 casinl(长双复形 arg) | 它返回复变元的复反正弦值 |
| float complex casinf(float complex arg)
双复形 casin(双复形 arg)
长双复形 casinl(长双复形 arg) | 它返回复变元的复弧双曲正弦值 |
| 浮动复合物 catanf(浮动复合物 arg)
双复合物 catan(双复合物 arg)
长双复合物 catanl(长双复合物 arg) | 它返回复变元的复反正切值 |
| float complex catanhf(float complex arg)
双复形 catan(双复形 arg)
长双复形 catanl(长双复形 arg) | 它返回复变元的复弧双曲正切值 |
| float complex ccosf(float complex arg)
双复形 ccos(双复形 arg)
长双复形 ccosl(长双复形 arg) | 它返回复变元的复余弦值 |
| float complex cexpf(float complex arg)
双复形 cexp(双复形 arg)
长双复形 cexpl(长双复形 arg) | 它返回复数值 e arg ，其中 e 是自然对数基数 |
| float crealf(float complex arg)
double creal(double complex arg)
long double creall(long double complex arg) | 它返回复杂参数的真实部分 |
| float cimagf(float complex arg)


 = _computeHeight(node.child1);
    int height2 = _computeHeight(node.child2);
    return 1 + Math.max(height1, height2);
  }

  /**
   * Validate this tree. For testing.
   */
  void validate() {
    _validateStructure(_root);
    _validateMetrics(_root);

    int freeCount = 0;
    DynamicTreeNode freeNode =
        _freeList != NULL_NODE ? _nodes[_freeList] : null;
    while (freeNode != null) {
      assert(0 <= freeNode.id && freeNode.id < _nodeCapacity);
      assert(freeNode == _nodes[freeNode.id]);
      freeNode = freeNode.parent;
      ++freeCount;
    }

    assert(getHeight() == computeHeight());

    assert(_nodeCount + freeCount == _nodeCapacity);
  }

  int getHeight() {
    if (_root == null) {
      return 0;
    }
    return _root.height;
  }

  int getMaxBalance() {
    int maxBalance = 0;
    for (int i = 0; i < _nodeCapacity; ++i) {
      final DynamicTreeNode node = _nodes[i];
      if (node.height <= 1) {
        continue;
      }

      assert((node.child1 == null) == false);

      DynamicTreeNode child1 = node.child1;
      DynamicTreeNode child2 = node.child2;
      int balance = (child2.height - child1.height).abs();
      maxBalance = Math.max(maxBalance, balance);
    }

    return maxBalance;
  }

  double getAreaRatio() {
    if (_root == null) {
      return 0.0;
    }

    final DynamicTreeNode root = _root;
    double rootArea = root.aabb.getPerimeter();

    double totalArea = 0.0;
    for (int i = 0; i < _nodeCapacity; ++i) {
      final DynamicTreeNode node = _nodes[i];
      if (node.height < 0) {
        // Free node in pool
        continue;
      }

      totalArea += node.aabb.getPerimeter();
    }

    return totalArea / rootArea;
  }

  /**
   * Build an optimal tree. Very expensive. For testing.
   */
  void rebuildBottomUp() {
    List<int> nodes = BufferUtils.allocClearIntList(_nodeCount);
    int count = 0;

    // Build array of leaves. Free the rest.
    for (int i = 0; i < _nodeCapacity; ++i) {
      if (_nodes[i].height < 0) {
        // free node in pool
        continue;
      }

      DynamicTreeNode node = _nodes[i];
      if (node.child1 == null) {
        node.parent = null;
        nodes[count] = i;
        ++count;
      } else {
        _freeNode(node);
      }
    }

    AABB b = new AABB();
    while (count > 1) {
      double minCost = double.MAX_FINITE;
      int iMin = -1, jMin = -1;
      for (int i = 0; i < count; ++i) {
        AABB aabbi = _nodes[nodes[i]].aabb;

        for (int j = i + 1; j < count; ++j) {
          AABB aabbj = _nodes[nodes[j]].aabb;
          b.combine2(aabbi, aabbj);
          double cost = b.getPerimeter();
          if (cost < minCost) {
            iMin = i;
            jMin = j;
            minCost = cost;
          }
        }
      }

      int index1 = nodes[iMin];
      int index2 = nodes[jMin];
      DynamicTreeNode child1 = _nodes[index1];
      DynamicTreeNode child2 = _nodes[index2];

      DynamicTreeNode parent = _allocateNode();
      parent.child1 = child1;
      parent.child2 = child2;
      parent.height


eCountryCode15 )( this.ObjectAddress, nLicenseIndex ) ) );
		}

		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeSetOfflineModeB( IntPtr thisptr, [MarshalAs(UnmanagedType.I1)] bool bOffline );
		public bool SetOfflineMode( bool bOffline )
		{
			return this.GetFunction<NativeSetOfflineModeB>( this.Functions.SetOfflineMode16 )( this.ObjectAddress, bOffline );
		}

	};
}


更新版本，建议受影响用户升级至最新版本：

**sudo >= 1.9.17p1**

## 安全建议

**立即升级**
 升级到最新安全版本**网络隔离**
 限制不必要的网络访问**监控告警**
 加强系统监控和日志审计**定期检查**
 定期进行安全检查和漏洞扫描

> **原文链接**: https://mp.weixin.qq.com/s?__biz=Mzg4MDU0NTQ4Mw==&mid=2247532377&idx=2&sn=8675b7e1c0b2211c3c1b5d4a22d28fa9

#  数十亿手机可被监听，eSIM漏洞牵动全球通信生态
 内生安全联盟   2025-07-16 12:06

![](https://mmbiz.qpic.cn/mmbiz_gif/jRRfTC292pVv89tczkSozULbH4SN4iadBWLfHDiabmT1kfJhLAGmibdNDw0BSicTRias1D3X2aia89QgZInR0TrFmqicQ/640?wx_fmt=gif&from=appmsg "")

过去几年，全球手机用户正加速告别传统 SIM 卡，拥抱新一代**eSIM（嵌入式用户身份模块）技术**
。这种无法物理插拔的芯片，被认为更加安全、便利，广泛应用于智能手机、平板、可穿戴设备乃至车联网终端中。然而，一项最新研究却揭示：这一看似“安全”的通信核心，正隐藏着一场悄无声息的安全危机。

Security Explorations 公司创始人 Adam Gowdiak 近期披露，**全球数十亿 eSIM 卡中使用的关键组件 Java Card 存在严重安全漏洞**
，攻击者不仅可在物理接触设备后提取关键凭据，甚至能够远程 OTA（空中下载）方式在 eSIM 芯片中植入恶意代码，实现**监听、SIM 克隆、通信劫持**
等多种攻击手段。这并非边缘技术问题，而是与全球移动通信根基相关的系统性安全漏洞。

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

****
**01**

**漏洞源头：六年前被忽视的安全缺陷**

事件核心在于 Oracle Java Card 虚拟机中的**“类型混淆”漏洞**
。Java Card 是 Oracle 专为资源受限设备打造的 Java 应用执行平台，广泛集成于 eSIM 芯片、银行


file(_FILE_WITH_ROUTES_AND_MODEL,).unwrap();
        let model = find_model(&parsed_file,);

        let result = get_view_function("", "not_found", &model.unwrap(),);

        let should_have = NOT_FOUND;

        assert_eq!(result, should_have);
    }
}
/*
Copyright 2021 BlackRock, Inc.

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 crate::quadratics::utils;
use std::f64;
use std::fmt;

/// This structure represents a bounded quadratic function f(x) = `a`x^2 + `b`x + `c` for x in `domain`.
///
/// Note: Do not construct these directly. Use `BoundedQuadratic::new` so that you don't try
/// to construct invalid functions.
#[derive(Debug, Copy, Clone)]
pub struct BoundedQuadratic {
    pub lower: f64,
    pub upper: f64,
    pub a: f64,
    pub b: f64,
    pub c: f64,
}

impl BoundedQuadratic {
    /// Constructs a new `BoundedQuadratic` from an interval and coefficients.
    ///
    /// # Panics
    /// * If `a`, `b`, `c` are not all finite
    ///
    /// # Example
    /// ```
    /// use lcso::quadratics::bq::BoundedQuadratic;
    /// // The function below corresponds to f(x) = x^2 + x + 1 for x in [-1, 1]
    /// let quad = BoundedQuadratic::new(-1., 1., 1., 1., 1.);
    /// ```
    pub fn new(lower: f64, upper: f64, a: f64, b: f64, c: f64) -> BoundedQuadratic {
        assert!(
            a.is_finite() && b.is_finite() && c.is_finite(),
            "Quadratic, linear, and constant coefficients must be finite."
        );
        BoundedQuadratic {
            lower,
            upper,
            a,
            b,
            c,
        }
    }

    /// Constructs a new `BoundedQuadratic` whose domain is (-inf, inf).
    pub fn new_extended(a: f64, b: f64, c: f64) -> BoundedQuadratic {
        BoundedQuadratic::new(f64::NEG_INFINITY, f64::INFINITY, a, b, c)
    }

    /// Constructs a new line from an interval and coefficients.
    ///
    /// # Panics
    /// * If `slope` and `intercept` are not both finite.
    ///
    /// # Example
    /// ```
    /// use lcso::quadratics::bq::BoundedQuadratic;
    /// // The function below corresponds to the line given by f(x) = x + 1 for x in [-1, 1]
    /// let line = BoundedQuadratic::new_line(-1., 1., 1., 1.);
    /// ```
    pub fn new_line(lower: f64, upper: f64, slope: f64, intercept: f64) -> BoundedQuadratic {
        assert!(slope.is_finite() && intercept.is_finite());
        BoundedQuadratic::new(lower, upper, 0., slope, intercept)
    }

    /// Constructs a new line from two points.
    ///
    /// # Panics
    /// * If the two points have approximately identical x-values.
    ///
    /// # Example
    /// ```
    /// // The function below corresponds to the line given by f(x) = x for x in (-inf, inf)
    /// use lcso::quadratics::bq


        gc();

        treeIteration();
        logger.log('id_' + (demicm.curTreeNodeId + demicm.SPEC_OFFSET) + ' = null;', 'grind', 1);
        idS[demicm.curTreeNodeId] = null;
        logger.log('id_' + (demicm.twId + demicm.SPEC_OFFSET) + ' = null;', 'grind', 1);
        idS[demicm.twId] = null;
        logger.log('gc();', 'grind', 1);
        gc();

        alterRange();
        logger.log('id_' + (demicm.rangeId + demicm.SPEC_OFFSET) + '.detach();', 'grind', 1);
        idS[demicm.rangeId].detach();
        logger.log('id_' + (demicm.rangeId + demicm.SPEC_OFFSET) + ' = null;', 'grind', 1);
        idS[demicm.rangeId] = null;
        logger.log('gc();', 'grind', 1);
        gc();

        alterSelection();
        logger.log('id_' + (demicm.selId + demicm.SPEC_OFFSET) + ' = null;', 'grind', 1);
        idS[demicm.selId] = null;
        logger.log('gc();', 'grind', 1);
        gc();
    } catch (e) {
        logger.log('// Error: reuseGroup: ' + e.message, 'grind', 1);
    }
}

function objMan(type) {
    if (demicm.IS_DEBUG) {
        logger.log('[+] objMan(' + type + ')', 'grind', 1);
    }

    var rObjId = randObjId(type);
    if (rObjId == 'none') {
        return;
    }

    propfMan([rObjId], demicm.MAX_REC_DEPTH, demicm.MAX_RET_REC_DEPTH, 'prop', type);
    propfMan([rObjId], demicm.MAX_REC_DEPTH, demicm.MAX_RET_REC_DEPTH, 'func', type);
}

/************************************* prelude *************************************/
function preludeFirst() {
    setEnv();

    constructDOMTree();

    addTextNode();

    if (demicm.IS_FUZZ_SPEC) {
        constructSpec();
    }

    if (demicm.IS_FUZZ_GROUP) {
        constructGroup();
    }

    if (demicm.IS_FUZZ_MULTI) {
        constructMulti();
    }
}

function preludeSecond() {
    if (!demicm.IS_IE) {
        if (percent(demicm.WORKER_PER)) {
            appendWorker();
        }
        if (percent(demicm.SHARED_WORKER_PER)) {
            appendSharedWorker();
        }
    }

    setEvtHandler();

    addCSS();

    setPropSty();
}

function setPropSty() {
    if (demicm.IS_DEBUG) {
        logger.log('[+] setProp()', 'grind', 1);
    }

    try {
        for (var j = 0; j < demicm.PROP_STY_INI_NUM; j++) {
            for (var i = 0; i < id.length; i++) {
                if (id[i]) {
                    propfMan([i], 1, 0, 'prop', 'node');
                    styleMan(i);
                }
            }
        }
    } catch (e) {
        logger.log('// Error: setPropStyle: ' + e.message, 'grind', 1);
    }
}

function setEnv() {
    // Set HTML property
    if (percent(demicm.ENV_PER)) {
        logger.log('document.documentElement.contentEditable = "true";', 'grind', 1);
        document.documentElement.contentEditable = 'true';
        logger.log('document.body.contentEditable = "true";', 'grind', 1);
        document.body.contentEditable = 'true';
        logger.log


.append("id", getId())
            .append("version", getVersion())
            .append("createTime", getCreateTime())
            .append("editor", getEditor())
            .append("creater", getCreater())
            .append("editTime", getEditTime())
            .append("status", getStatus())
            .append("remark", getRemark())
            .append("accountCheckBatchNo", getAccountCheckBatchNo())
            .append("billDate", getBillDate())
            .append("bankType", getBankType())
            .append("orderTime", getOrderTime())
            .append("merchantName", getMerchantName())
            .append("merchantNo", getMerchantNo())
            .append("orderNo", getOrderNo())
            .append("tradeTime", getTradeTime())
            .append("trxNo", getTrxNo())
            .append("orderAmount", getOrderAmount())
            .append("refundAmount", getRefundAmount())
            .append("tradeStatus", getTradeStatus())
            .append("fee", getFee())
            .append("bankTradeTime", getBankTradeTime())
            .append("bankOrderNo", getBankOrderNo())
            .append("bankTrxNo", getBankTrxNo())
            .append("bankTradeStatus", getBankTradeStatus())
            .append("bankAmount", getBankAmount())
            .append("bankRefundAmount", getBankRefundAmount())
            .append("bankFee", getBankFee())
            .append("errType", getErrType())
            .append("handleStatus", getHandleStatus())
            .append("handleValue", getHandleValue())
            .append("handleRemark", getHandleRemark())
            .append("operatorName", getOperatorName())
            .append("operatorAccountNo", getOperatorAccountNo())
            .toString();
    }
}
package com.yiran.system.mapper;

import java.util.List;
import com.yiran.system.domain.SysUser;

/**
 * 用户表 数据层
 *
 * @author yiran
 */
public interface SysUserMapper
{
    /**
     * 根据条件分页查询用户对象
     *
     * @param sysUser 用户信息
     * @return 用户信息集合信息
     */
    public List<SysUser> selectUserList(SysUser sysUser);

    /**
     * 通过用户名查询用户
     *
     * @param userName 用户名
     * @return 用户对象信息
     */
    public SysUser selectUserByLoginName(String userName);

    /**
     * 通过手机号码查询用户
     *
     * @param phoneNumber 手机号码
     * @return 用户对象信息
     */
    public SysUser selectUserByPhoneNumber(String phoneNumber);

    /**
     * 通过邮箱查询用户
     *
     * @param email 邮箱
     * @return 用户对象信息
     */
    public SysUser selectUserByEmail(String email);

    /**
     * 通过用户ID查询用户
     *
     * @param userId 用户ID
     * @return 用户对象信息
     */
    public SysUser selectUserById(Long userId)


n this period starts in a year.
  /// [fromYear]: The first year in which this recurrence is valid
  /// [toYear]: The last year in which this recurrence is valid
  ZoneRecurrence(this.name, this.savings, this.yearOffset, this.fromYear, this.toYear)
      : _minLocalInstant = fromYear == Platform.int32MinValue ? LocalInstant.beforeMinValue : yearOffset.getOccurrenceForYear(fromYear),
        _maxLocalInstant = toYear == Platform.int32MaxValue ? LocalInstant.afterMaxValue : yearOffset.getOccurrenceForYear(toYear) {
    Preconditions.checkNotNull(name, 'name');
    Preconditions.checkNotNull(yearOffset, 'yearOffset');

    // todo: magic numbers
    Preconditions.checkArgument(fromYear == Platform.int32MinValue || (fromYear >= -9998 && fromYear <= 9999), 'fromYear',
        'fromYear must be in the range [-9998, 9999] or Int32.MinValue');
    Preconditions.checkArgument(toYear == Platform.int32MaxValue || (toYear >= -9998 && toYear <= 9999), 'toYear',
        'toYear must be in the range [-9998, 9999] or Int32.MaxValue');
  }

  /// Returns a new recurrence which has the same values as this, but a different name.
  ZoneRecurrence withName(String name) =>
      ZoneRecurrence(name, savings, yearOffset, fromYear, toYear);

  /// Returns a new recurrence with the same values as this, but just for a single year.
  ZoneRecurrence forSingleYear(int year) {
    return ZoneRecurrence(name, savings, yearOffset, year, year);
  }

  // #region IEquatable<ZoneRecurrence> Members
  /// Indicates whether the current object is equal to another object of the same type.
  ///
  /// [other]: An object to compare with this object.
  ///
  /// true if the current object is equal to the [other] parameter;
  /// otherwise, false.
  bool equals(ZoneRecurrence other) {
    if (identical(this, other)) {
      return true;
    }
    return savings == other.savings && fromYear == other.fromYear && toYear == other.toYear && name == other.name && yearOffset.equals(other.yearOffset);
  }

  @override
  bool operator==(Object other) => other is ZoneRecurrence && equals(other);

  /// Returns the first transition which occurs strictly after the given instant.
  ///
  /// If the given instant is before the starting year, the year of the given instant is
  /// adjusted to the beginning of the starting year. The first transition after the
  /// adjusted instant is determined. If the next adjustment is after the ending year, this
  /// method returns null; otherwise the next transition is returned.
  ///
  /// [instant]: The [Instant] lower bound for the next transition.
  /// [standardOffset]: The [Offset] standard offset.
  /// [previousSavings]: The [Offset] savings adjustment at the given Instant.
  /// The next transition, or null if there is no next transition. The transition may be
  /// infinite, i.e. after the end of representable time.
  Transition? next(Instant instant, Offset standardOffset, Offset previousSavings) {
    Offset ruleOffset = yearOffset.getRuleOffset(standardOffset, previousSavings);
    Offset newOffset = standardOffset + savings;

    LocalInstant safeLocal = IInstant.safePlus(instant, ruleOffset);
    int targetYear;
    if (safeLocal < _minLocalInstant) {
      // Asked for a transition after some point before the first transition: crop to first year (so we get the first transition)
      targetYear = fromYear;
    }


if(): string {
        return keyUtils.checkEncode(
            Buffer.concat([
                new Buffer([0x80]),
                this.toBuffer()
            ]),
            'sha256x2'
        )
    }

    public_key?: PublicKey

    toPublic(): ecurve.Point {
        if (this.public_key) {
            return this.public_key
        }
        const Q = secp256k1.G.multiply(this.d)
        return this.public_key = PublicKey.fromPoint(Q)
    }

    toBuffer() {
        return this.d.toBuffer(32)
    }

    getSharedSecret(public_key: IData): Buffer {
        let KB = new PublicKey(public_key).toUncompressed().toBuffer()
        let KBP = Point.fromAffine(
            secp256k1,
            BigInteger.fromBuffer(KB.slice(1, 33)), // x
            BigInteger.fromBuffer(KB.slice(33, 65)) // y
        )
        let r = this.toBuffer()
        let P = KBP.multiply(BigInteger.fromBuffer(r))
        let S = P.affineX.toBuffer({size: 32})
        // SHA512 used in ECIES
        return sha512(S)
    }

    getChildKey(name: string): PrivateKey {
        // console.error('WARNING: getChildKey untested against eosd'); // no eosd impl yet
        const index = createHash('sha256').update(this.toBuffer()).update(name).digest()
        return new PrivateKey(index)
    }

    toHex() {
        return this.toBuffer().toString('hex')
    }

}

/**
 @typedef {string} wif - https://en.bitcoin.it/wiki/Wallet_import_format
 @typedef {string} pubkey - EOSKey..
 @typedef {ecurve.Point} Point
 */

/**
 @param {BigInteger} d
 */

/** @private */
function parseKey(privateStr: string) {
    assert.equal(typeof privateStr, 'string', 'privateStr')
    const match = privateStr.match(/^PVT_([A-Za-z0-9]+)_([A-Za-z0-9]+)$/)

    if (match === null) {
        // legacy WIF - checksum includes the version
        const versionKey = keyUtils.checkDecode(privateStr, 'sha256x2')
        const version = versionKey.readUInt8(0)
        assert.equal(0x80, version, `Expected version ${0x80}, instead got ${version}`)
        const privateKey = PrivateKey.fromBuffer(versionKey.slice(1))
        const keyType = 'K1'
        const format = 'WIF'
        return {privateKey, format, keyType}
    }

    assert(match.length === 3, 'Expecting private key like: PVT_K1_base58privateKey..')
    const [, keyType, keyString] = match
    assert.equal(keyType, 'K1', 'K1 private key expected')
    const privateKey = PrivateKey.fromBuffer(keyUtils.checkDecode(keyString, keyType))
    return {privateKey, format: 'PVT', keyType}
}

function selfCheck() {
    const pvt = new PrivateKey(sha256(''))

    const pvtError = 'key comparison test failed on a known private key'
    assert.equal(pvt.toWif(), '5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss', pvtError)
    assert.equal(pvt.toString(), '5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss', pvtError)
    // assert.equal(pvt.toString(), 'PVT_K1_2jH3nnhxhR3zPUcsKaWWZC9ZmZAnKm3GAnFD1xynGJE1Znuvjd', pvtError)

    const pub = pvt.toPublic()
    const pubError = 'pubkey string comparison test failed on a known public key'
    assert.equal(pub.toString(), 'EOS859gxfnXyUriMgUeThh1fWv3oqcpLFyHa3TfFYC4PK2HqhToVM', pubError)
    // assert.equal(pub.toString(), 'PUB_K1


 key);

  @override
  MyAppState createState() => MyAppState();
}

class MyAppState extends State<MyApp> {
  static int _nextMediaId = 0;
  late AudioPlayer _player;
  static final _playlist = [
    // Remove this audio source from the Windows and Linux version because it's not supported yet
    if (kIsWeb ||
        ![TargetPlatform.windows, TargetPlatform.linux]
            .contains(defaultTargetPlatform))
      ClippingAudioSource(
        start: const Duration(seconds: 60),
        end: const Duration(seconds: 90),
        child: AudioSource.uri(Uri.parse(
            "https://s3.amazonaws.com/scifri-episodes/scifri20181123-episode.mp3")),
        tag: MediaItem(
          id: '${_nextMediaId++}',
          album: "Science Friday",
          title: "A Salute To Head-Scratching Science (30 seconds)",
          artUri: Uri.parse(
              "https://media.wnyc.org/i/1400/1400/l/80/1/ScienceFriday_WNYCStudios_1400.jpg"),
        ),
      ),
    AudioSource.uri(
      Uri.parse(
          "https://s3.amazonaws.com/scifri-episodes/scifri20181123-episode.mp3"),
      tag: MediaItem(
        id: '${_nextMediaId++}',
        album: "Science Friday",
        title: "A Salute To Head-Scratching Science",
        artUri: Uri.parse(
            "https://media.wnyc.org/i/1400/1400/l/80/1/ScienceFriday_WNYCStudios_1400.jpg"),
      ),
    ),
    AudioSource.uri(
      Uri.parse("https://s3.amazonaws.com/scifri-segments/scifri201711241.mp3"),
      tag: MediaItem(
        id: '${_nextMediaId++}',
        album: "Science Friday",
        title: "From Cat Rheology To Operatic Incompetence",
        artUri: Uri.parse(
            "https://media.wnyc.org/i/1400/1400/l/80/1/ScienceFriday_WNYCStudios_1400.jpg"),
      ),
    ),
    AudioSource.uri(
      Uri.parse("asset:///audio/nature.mp3"),
      tag: MediaItem(
        id: '${_nextMediaId++}',
        album: "Public Domain",
        title: "Nature Sounds",
        artUri: Uri.parse(
            "https://media.wnyc.org/i/1400/1400/l/80/1/ScienceFriday_WNYCStudios_1400.jpg"),
      ),
    ),
  ];
  int _addedCount = 0;
  final _scaffoldMessengerKey = GlobalKey<ScaffoldMessengerState>();

  @override
  void initState() {
    super.initState();
    _player = AudioPlayer(maxSkipsOnError: 3);
    SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
      statusBarColor: Colors.black,
    ));
    _init();
  }

  Future<void> _init() async {
    final session = await AudioSession.instance;
    await session.configure(const AudioSessionConfiguration.speech());
    // Listen to errors during playback.
    _player.errorStream.listen((e) {
      print('A stream error occurred: $e');
    });
    try {
      // Preloading audio is not currently supported on Linux.
      await _player.setAudioSources(_playlist,
          preload: kIsWeb || defaultTargetPlatform != TargetPlatform.linux);
    } on PlayerException catch (e) {
      // Catch load errors: 404, invalid url...
      print("Error loading playlist: $e");
    }
    // Show a snackbar whenever reaching the end of an item in the playlist.
    _player.positionDiscontinuityStream.listen((discontinuity) {
      if (discontinuity.reason == PositionDiscontinuityReason.autoAdvance) {
        _showItemFinished(discontinuity.previousEvent.currentIndex);
      }
    });
    _player.processingStateStream.listen((state) {
      if (state == ProcessingState.completed) {
        _showItemFinished(_player.currentIndex);
      }
    });
  }

  void _showItemFinished(int? index) {
    if (index == null) return;
    final sequence = _player.sequence;
    if (index >= sequence.length) return;
    final source = sequence[index];
    final metadata = source.tag as MediaItem;
    _scaffoldMessengerKey.currentState?.showSnackBar(SnackBar(
      content: Text('Finished playing ${metadata.title}'),
      duration: const Dura


2.Bucket.CustomPlacementConfig
	65,  // 57: google.storage.v2.Bucket.autoclass:type_name -> google.storage.v2.Bucket.Autoclass
	49,  // 58: google.storage.v2.BucketAccessControl.project_team:type_name -> google.storage.v2.ProjectTeam
	74,  // 59: google.storage.v2.HmacKeyMetadata.create_time:type_name -> google.protobuf.Timestamp
	74,  // 60: google.storage.v2.HmacKeyMetadata.update_time:type_name -> google.protobuf.Timestamp
	71,  // 61: google.storage.v2.Notification.custom_attributes:type_name -> google.storage.v2.Notification.CustomAttributesEntry
	47,  // 62: google.storage.v2.Object.acl:type_name -> google.storage.v2.ObjectAccessControl
	74,  // 63: google.storage.v2.Object.delete_time:type_name -> google.protobuf.Timestamp
	74,  // 64: google.storage.v2.Object.create_time:type_name -> google.protobuf.Timestamp
	42,  // 65: google.storage.v2.Object.checksums:type_name -> google.storage.v2.ObjectChecksums
	74,  // 66: google.storage.v2.Object.update_time:type_name -> google.protobuf.Timestamp
	74,  // 67: google.storage.v2.Object.update_storage_class_time:type_name -> google.protobuf.Timestamp
	74,  // 68: google.storage.v2.Object.retention_expire_time:type_name -> google.protobuf.Timestamp
	72,  // 69: google.storage.v2.Object.metadata:type_name -> google.storage.v2.Object.MetadataEntry
	51,  // 70: google.storage.v2.Object.owner:type_name -> google.storage.v2.Owner
	45,  // 71: google.storage.v2.Object.customer_encryption:type_name -> google.storage.v2.CustomerEncryption
	74,  // 72: google.storage.v2.Object.custom_time:type_name -> google.protobuf.Timestamp
	49,  // 73: google.storage.v2.ObjectAccessControl.project_team:type_name -> google.storage.v2.ProjectTeam
	46,  // 74: google.storage.v2.ListObjectsResponse.objects:type_name -> google.storage.v2.Object
	54,  // 75: google.storage.v2.ComposeObjectRequest.SourceObject.object_preconditions:type_name -> google.storage.v2.ComposeObjectRequest.SourceObject.ObjectPreconditions
	67,  // 76: google.storage.v2.Bucket.IamConfig.uniform_bucket_level_access:type_name -> google.storage.v2.Bucket.IamConfig.UniformBucketLevelAccess
	68,  // 77: google.storage.v2.Bucket.Lifecycle.rule:type_name -> google.storage.v2.Bucket.Lifecycle.Rule
	74,  // 78: google.storage.v2.Bucket.RetentionPolicy.effective_time:type_name -> google.protobuf.Timestamp
	74,  // 79: google.storage.v2.Bucket.Autoclass.toggle_time:type_name -> google.protobuf.Timestamp
	74,  // 80: google.storage.v2.Bucket.IamConfig.UniformBucketLevelAccess.lock_time:type_name -> google.protobuf.Timestamp
	69,  // 81: google.storage.v2.Bucket.Lifecycle.Rule.action:type_name -> google.storage.v2.Bucket.Lifecycle.Rule.Action
	70,  // 82: google.storage.v2.Bucket.Lifecycle.Rule.condition:type_name -> google.storage.v2.Bucket.Lifecycle.Rule.Condition
	75,  // 83: google.storage.v2.Bucket.Lifecycle.Rule.Condition.created_before:type_name -> google.type.Date
	75,  // 84: google.storage.v2.Bucket.Lifecycle.Rule.Condition.custom_time_be


# -*- coding:utf-8 -*-
# 作者：KKKC

import pandas as pd

def Get_CorrList():
    data = pd.read_csv('G:/ML/Train-min-max.csv')
    X = data.iloc[:,0:-1]
    columns = X.columns.values.tolist() # 得到标题
    max_p = []
    for i in range(len(columns)):
        print('---.',columns[i])
        a = dict()
        for k in range(len(columns)):
            str = columns[i]+'&'+columns[k]
            if i!=k:
                p = X[columns[i]].corr(X[columns[k]]) # 计算与其他列之间的相关性，不计算对角线
                a[str] = p
        max_key = max(a,key=a.get) # 得出相关性最大的key
        value = a[max_key] # 最大的值
        if value > 0.9: # 限定条件
            print(max_key)
            print(value)
            strlist = max_key.split('&')
            # print(strlist)
            max_p.append(strlist) # 得到所有相关性高于0.9的组合
    # a = []
    # for i in max_p:
    #     for j in i:
    #         a.append(j)
    #
    # print(a)
    print(max_p)
    return max_p # 返回相关性列表


		case info&types.IsComplex != 0:
			r, _ := constant.Float64Val(constant.Real(value))
			i, _ := constant.Float64Val(constant.Imag(value))
			output = strconv.FormatFloat(r, 'g', -1, 64) + "i" + strconv.FormatFloat(i, 'g', -1, 64)
		}
		return map[string]interface{}{
			"id":    "BasicLit",
			"kind":  int32(kind),
			"info":  int32(info),
			"value": output,
			"basic": false,
			"type":  parseType(pkg.checker.TypeOf(expr), map[string]bool{}, pkg),
		}
	} else {
		return basicLitFallback(expr, pkg)
	}
}

// parse the pos of a fileset, and turn it into an integer
func parsePos(pos token.Pos, fset *token.FileSet) int {
	fpos := fset.PositionFor(pos, true)
	return fpos.Offset
}

// parse the location of a pos of fileset and turn it into a string with the line number
func parseLocation(pos token.Pos, fset *token.FileSet) string {
	fpos := fset.PositionFor(pos, true)
	return fpos.Filename + "#L" + strconv.Itoa(fpos.Line)
}

// an alternative fall back parser for basic lit to turn the data into valid json data
func basicLitFallback(expr *ast.BasicLit, pkg *PackageData) map[string]interface{} {
	output := ""
	switch expr.Kind {
	case token.INT:
		i, err := strconv.ParseInt(expr.Value, 0, 64)
		if err != nil {
			j, err2 := strconv.ParseUint(expr.Value, 0, 64)
			if err2 != nil {
				k, err3 := strconv.ParseFloat(expr.Value, 64)
				if err3 != nil {
					log.Fatal("parse uint/int 64 and float64 error: " + err3.Error())
				} else {
					output = fmt.Sprintf("%f", k) // decimal format
				}
			} else {
				output = fmt.Sprint(j)
			}
		} else {
			output = fmt.Sprint(i)
		}
	case token.FLOAT:
		i, err := strconv.ParseFloat(expr.Value, 64)
		panicIfError(err)
		output = fmt.Sprint(i)
		if output == "+Inf" || output == "-Inf" {
			output = "0.0"
		}
	case token.IMAG:
		i, err := strconv.ParseComplex(expr.Value, 128)
		panicIfError(err)
		output = fmt.Sprint(real(i)) + "i" + fmt.Sprint(imag(i))
	}
	return map[string]interface{}{
		"id":    "BasicLit",
		"kind":  int32(expr.Kind),
		"token": expr.Kind.String(),
		"value": output,
		"basic": true,
		"type":  parseType(pkg.checker.TypeOf(expr), map[string]bool{}, pkg),
	}
}

// get the id of an any obj
func getId(obj interface{}) string {
	if obj == nil {
		return ""
	}
	return reflect.TypeOf(obj).Elem().Name()
}

// parse the list of *ast.Fields into valid json data
func parseFieldList(list []*ast.Field, pkg *PackageData) map[string]interface{} {
	data := make([]map[string]interface{}, len(list))
	for i, field := range list {
		data[i] = parseField(field, pkg)
	}
	return map[string]interface{}{
		"id":   "FieldList",
		"list": data,
	}
}

// parse a field into valid json data
func parseField(field *ast.Field, pkg *PackageData) map[string]interface{} {
	names := make([]map[string]interface{}, len(field.Names))
	for i, name := range field.Names {
		names[i] = map[string]interface{}{
			"id":   "Ident",
			"name":


End: true,
        relevance: 0
      }
    ])
  };
};module.exports = function(hljs) {
  var ELIXIR_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9_]*(\\!|\\?)?';
  var ELIXIR_METHOD_RE = '[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?';
  var ELIXIR_KEYWORDS =
    'and false then defined module in return redo retry end for true self when ' +
    'next until do begin unless nil break not case cond alias while ensure or ' +
    'include use alias fn quote';
  var SUBST = {
    className: 'subst',
    begin: '#\\{', end: '}',
    lexemes: ELIXIR_IDENT_RE,
    keywords: ELIXIR_KEYWORDS
  };
  var STRING = {
    className: 'string',
    contains: [hljs.BACKSLASH_ESCAPE, SUBST],
    variants: [
      {
        begin: /'/, end: /'/
      },
      {
        begin: /"/, end: /"/
      }
    ]
  };
  var FUNCTION = {
    className: 'function',
    beginKeywords: 'def defp defmacro', end: /\B\b/, // the mode is ended by the title
    contains: [
      hljs.inherit(hljs.TITLE_MODE, {
        begin: ELIXIR_IDENT_RE,
        endsParent: true
      })
    ]
  };
  var CLASS = hljs.inherit(FUNCTION, {
    className: 'class',
    beginKeywords: 'defmodule defrecord', end: /\bdo\b|$|;/
  });
  var ELIXIR_DEFAULT_CONTAINS = [
    STRING,
    hljs.HASH_COMMENT_MODE,
    CLASS,
    FUNCTION,
    {
      className: 'symbol',
      begin: ':',
      contains: [STRING, {begin: ELIXIR_METHOD_RE}],
      relevance: 0
    },
    {
      className: 'symbol',
      begin: ELIXIR_IDENT_RE + ':',
      relevance: 0
    },
    {
      className: 'number',
      begin: '(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b',
      relevance: 0
    },
    {
      className: 'variable',
      begin: '(\\$\\W)|((\\$|\\@\\@?)(\\w+))'
    },
    {
      begin: '->'
    },
    { // regexp container
      begin: '(' + hljs.RE_STARTERS_RE + ')\\s*',
      contains: [
        hljs.HASH_COMMENT_MODE,
        {
          className: 'regexp',
          illegal: '\\n',
          contains: [hljs.BACKSLASH_ESCAPE, SUBST],
          variants: [
            {
              begin: '/', end: '/[a-z]*'
            },
            {
              begin: '%r\\[', end: '\\][a-z]*'
            }
          ]
        }
      ],
      relevance: 0
    }
  ];
  SUBST.contains = ELIXIR_DEFAULT_CONTAINS;

  return {
    lexemes: ELIXIR_IDENT_RE,
    keywords: ELIXIR_KEYWORDS,
    contains: ELIXIR_DEFAULT_CONTAINS
  };
};module.exports = function(hljs) {
  var BACKTICK_ESCAPE = {
    begin: /`[\s\S]/
  };

  return {
    case_insensitive: true,
    keywords: {
      keyword: 'Break Continue Else Gosub If Loop Return While',
      literal: 'A|0 true false NOT AND OR',
      built_in: 'ComSpec Clipboard ClipboardAll ErrorLevel',
    },
    contains: [
      {
        className: 'built_in',
        begin: 'A_[a-zA-Z0-9]+'
      },
      BACKTICK_ESCAPE,
      hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [BACKTICK_ESCAPE]}),
      hljs.COMMENT(';', '$', {relevance: 0}),
      {
        className: 'number',
        begin: hljs.NUMBER_RE,
        relevance: 0
      },
      {
        className: 'variable', // FIXME
        begin: '%', end: '%',
        illegal: '\\n',
        contains: [BACKTICK_ESCAPE]
      },
      {
        className: 'symbo


remainingTables).map((table) => tables.get(table))
    );
  }

  toDot(): string {
    return `
      ${this.groups.map((group) => group.toDot()).join("\n")}
      ${this.ungrouped.toDot()}
    `;
  }
}

const refLabels = {
  ">": ["*", "1"],
  "<": ["1", "*"],
  "-": ["1", "1"],
};

class RefRenderer {
  private ref: Ref;
  private fromRef: string;
  private toRef: string;
  private fromTable: TableRenderer;
  private toTable: TableRenderer;

  constructor(ref: Ref, tables: TableRendererMap) {
    this.ref =
      ref.cardinality !== "<"
        ? ref
        : {
            fromTable: ref.toTable,
            fromColumns: ref.toColumns,
            toTable: ref.fromTable,
            toColumns: ref.fromColumns,
            cardinality: ref.cardinality,
          };

    this.fromTable = tables.get(ref.fromTable);
    this.toTable = tables.get(ref.toTable);

    this.fromRef = this.findRef(this.fromTable, ref.fromColumns);
    this.toRef = this.findRef(this.toTable, ref.toColumns);
  }

  private findRef(table: TableRenderer, columns: string[]): string {
    if (columns.length === 1) {
      return table.ref(columns[0]);
    } else {
      return table.refAll(columns);
    }
  }

  toDot(): string {
    const [tailLabel, headLabel] = refLabels[this.ref.cardinality];
    return `${this.fromTable.selfRef()} -> ${this.toTable.selfRef()} [style=invis, weight=100, color=red]
    ${this.fromRef}:e -> ${
      this.toRef
    }:w [penwidth=3, color="#29235c", headlabel="${headLabel}", taillabel="${tailLabel}", arrowhead="normal", arrowtail="none"]`;
  }
}

class EnumRenderer {
  private enumType: Enum;

  constructor(enumType: Enum) {
    this.enumType = enumType;
  }

  selfRef(): string {
    return `"${this.enumType.name}":f0`;
  }

  toDot(): string {
    return `"${this.enumType.name}" [id=${
      this.enumType.name
    };label=<

       ${
      this.enumType.name
    }

    ${this.enumType.values
      .map((value, i) => this.valueDot(value.name, i))
      .join("\n")}

>];`;
  }

  private valueDot(name: string, i: number): string {
    return `<TR><TD PORT="f${i}" BGCOLOR="#e7e2dd"><font color="#1d71b8"><i>    ${name}    </i></font></TD></TR>`;
  }
}

class EnumsRenderer {
  private renderers: Map<string, EnumRenderer> = new Map();

  constructor(enums: Enum[]) {
    enums.forEach((enumType) =>
      this.renderers.set(enumType.name, new EnumRenderer(enumType))
    );
  }

  get(name: string): EnumRenderer | undefined {
    return this.renderers.get(name);
  }

  toDot(): string {
    return Array.from(this.renderers.values())
      .map((renderer) => renderer.toDot())
      .join("\n");
  }
}

class EnumDefinitionRenderer {
  private columnRef: string;
  private enumRef: string;

  constructor(columnRef: string, enumRef: string) {
    this.columnRef = columnRef;
    this.enumRef = enumRef;


-imagecheck-figure:before{transition:none}}.form-imagecheck-input:checked~.form-imagecheck-figure:before{background-color:var(--tblr-primary);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e");background-repeat:repeat;background-position:center;background-size:1.25rem;border-color:var(--tblr-border-color-translucent)}.form-imagecheck-input[type=radio]~.form-imagecheck-figure:before{border-radius:50%}.form-imagecheck-input[type=radio]:checked~.form-imagecheck-figure:before{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-imagecheck-image{max-width:100%;display:block;opacity:.64;transition:opacity .3s}@media (prefers-reduced-motion:reduce){.form-imagecheck-image{transition:none}}.form-imagecheck-image:first-child{border-top-right-radius:2px;border-top-left-radius:2px}.form-imagecheck-image:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.form-imagecheck-input:checked~.form-imagecheck-figure .form-imagecheck-image,.form-imagecheck-input:focus~.form-imagecheck-figure .form-imagecheck-image,.form-imagecheck:hover .form-imagecheck-image{opacity:1}.form-imagecheck-caption{padding:.25rem;font-size:.765625rem;color:var(--tblr-secondary);text-align:center;transition:color .3s}@media (prefers-reduced-motion:reduce){.form-imagecheck-caption{transition:none}}.form-imagecheck-input:checked~.form-imagecheck-figure .form-imagecheck-caption,.form-imagecheck-input:focus~.form-imagecheck-figure .form-imagecheck-caption,.form-imagecheck:hover .form-imagecheck-caption{color:var(--tblr-body-color)}.form-selectgroup{display:inline-flex;margin:0 0 -.5rem -.5rem;flex-wrap:wrap}.form-selectgroup .form-selectgroup-item{margin:0 0 .5rem .5rem}.form-selectgroup-vertical{flex-direction:column}.form-selectgroup-item{display:block;position:relative}.form-selectgroup-input{position:absolute;top:0;right:0;z-index:-1;opacity:0}.form-selectgroup-label{position:relative;display:block;min-width:calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2));margin:0;padding:.5625rem .75rem;font-size:.875rem;line-height:1.4285714286;color:var(--tblr-secondary);background:var(--tblr-bg-forms);text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:3px;box-shadow:var(--tblr-box-shadow-input);transition:border-color .3s,background .3s,color .


not have anything for Memory (and
// does not handle DAGs), I have to match the Memory input myself.  If the
// Tree root is a Store, I require all Loads to have the identical memory.
Node *Matcher::Label_Root( const Node *n, State *svec, Node *control, const Node *mem){
  // Since Label_Root is a recursive function, its possible that we might run
  // out of stack space.  See bugs 6272980 & 6227033 for more info.
  LabelRootDepth++;
  if (LabelRootDepth > MaxLabelRootDepth) {
    C->record_method_not_compilable_all_tiers("Out of stack space, increase MaxLabelRootDepth");
    return NULL;
  }
  uint care = 0;                // Edges matcher cares about
  uint cnt = n->req();
  uint i = 0;

  // Examine children for memory state
  // Can only subsume a child into your match-tree if that child's memory state
  // is not modified along the path to another input.
  // It is unsafe even if the other inputs are separate roots.
  Node *input_mem = NULL;
  for( i = 1; i < cnt; i++ ) {
    if( !n->match_edge(i) ) continue;
    Node *m = n->in(i);         // Get ith input
    assert( m, "expect non-null children" );
    if( m->is_Load() ) {
      if( input_mem == NULL ) {
        input_mem = m->in(MemNode::Memory);
      } else if( input_mem != m->in(MemNode::Memory) ) {
        input_mem = NodeSentinel;
      }
    }
  }

  for( i = 1; i < cnt; i++ ){// For my children
    if( !n->match_edge(i) ) continue;
    Node *m = n->in(i);         // Get ith input
    // Allocate states out of a private arena
    State *s = new (&_states_arena) State;
    svec->_kids[care++] = s;
    assert( care <= 2, "binary only for now" );

    // Recursively label the State tree.
    s->_kids[0] = NULL;
    s->_kids[1] = NULL;
    s->_leaf = m;

    // Check for leaves of the State Tree; things that cannot be a part of
    // the current tree.  If it finds any, that value is matched as a
    // register operand.  If not, then the normal matching is used.
    if( match_into_reg(n, m, control, i, is_shared(m)) ||
        //
        // Stop recursion if this is LoadNode and the root of this tree is a
        // StoreNode and the load & store have different memories.
        ((mem!=(Node*)1) && m->is_Load() && m->in(MemNode::Memory) != mem) ||
        // Can NOT include the match of a subtree when its memory state
        // is used by any of the other subtrees
        (input_mem == NodeSentinel) ) {
#ifndef PRODUCT
      // Print when we exclude matching due to different memory states at input-loads
      if( PrintOpto && (Verbose && WizardMode) && (input_mem == NodeSentinel)
        && !((mem!=(Node*)1) && m->is_Load() && m->in(MemNode::Memory) != mem) ) {
        tty->print_cr("invalid input_mem");
      }
#endif
      // Switch to a register-only opcode; this value must be in a register
      // and cannot be subsumed as part of a larger instruction.
      s->DFA( m->ideal_reg(), m );

    } else {
      // If match tree has no control and we do, adopt it for entire tree
      if( control == NULL && m->in(0) != NULL && m->req() > 1 )
        control = m->in(0);         // Pick up control
      // Else match as a normal part of the match tree.
      control = Label_Root(m,s,control,mem);
      if (C->failing()) return NULL;
    }
  }

  // Call DFA to match this node, and return
  svec->DFA( n->


://my.opera.com/ODIN/blog/2011/12/06/hello-opera-11-60" title="Opera Developer News - Hello Opera 11.60!" target="_blank">http://my.opera.com/ODIN/blog/2011/12/06/hello-opera-11-60

Opera 11.60リリース

アーティクル

『Mobile Performance Manifesto | David Calhoun’s Developer Blog』
http://davidbcalhoun.com/2011/mobile-performance-manifesto

モバイル端末のパフォーマンス最適化について
 navigator.connection(Androidのみ)を使って3Gかwifiなのかを判定したり、Base64で画像の埋め込みやキャッシュマニフェスト、CSSでのGPU使用についてやHTTPパイプラインなどかなり幅広く解説している

Backbone.js の資料をざっとリストアップ - tatsuo.sakuraiの日記
http://d.hatena.ne.jp/t2os/20111209/1323416436

Backbone.jsについてのまとめ

『Oscar Godson - JavaScriptologist』
http://oscargodson.com/#%21/article/55075016

Writing Eloquent JavaScript Without CoffeeScript
 JavaScriptの書き方についての記事。

『Kyosuke hamalog (Sass と LESS 以外の選択肢 Stylus)』
http://kyosuke.tumblr.com/post/14003234226/stylus

Stylusの紹介

Introducing ECMAScript 5.1 - Dev.Opera
<a href="http://