_alpha-3
var validISO31661Alpha3CountriesCodes = new Set(['AFG', 'ALA', 'ALB', 'DZA', 'ASM', 'AND', 'AGO', 'AIA', 'ATA', 'ATG', 'ARG', 'ARM', 'ABW', 'AUS', 'AUT', 'AZE', 'BHS', 'BHR', 'BGD', 'BRB', 'BLR', 'BEL', 'BLZ', 'BEN', 'BMU', 'BTN', 'BOL', 'BES', 'BIH', 'BWA', 'BVT', 'BRA', 'IOT', 'BRN', 'BGR', 'BFA', 'BDI', 'KHM', 'CMR', 'CAN', 'CPV', 'CYM', 'CAF', 'TCD', 'CHL', 'CHN', 'CXR', 'CCK', 'COL', 'COM', 'COG', 'COD', 'COK', 'CRI', 'CIV', 'HRV', 'CUB', 'CUW', 'CYP', 'CZE', 'DNK', 'DJI', 'DMA', 'DOM', 'ECU', 'EGY', 'SLV', 'GNQ', 'ERI', 'EST', 'ETH', 'FLK', 'FRO', 'FJI', 'FIN', 'FRA', 'GUF', 'PYF', 'ATF', 'GAB', 'GMB', 'GEO', 'DEU', 'GHA', 'GIB', 'GRC', 'GRL', 'GRD', 'GLP', 'GUM', 'GTM', 'GGY', 'GIN', 'GNB', 'GUY', 'HTI', 'HMD', 'VAT', 'HND', 'HKG', 'HUN', 'ISL', 'IND', 'IDN', 'IRN', 'IRQ', 'IRL', 'IMN', 'ISR', 'ITA', 'JAM', 'JPN', 'JEY', 'JOR', 'KAZ', 'KEN', 'KIR', 'PRK', 'KOR', 'KWT', 'KGZ', 'LAO', 'LVA', 'LBN', 'LSO', 'LBR', 'LBY', 'LIE', 'LTU', 'LUX', 'MAC', 'MKD', 'MDG', 'MWI', 'MYS', 'MDV', 'MLI', 'MLT', 'MHL', 'MTQ', 'MRT', 'MUS', 'MYT', 'MEX', 'FSM', 'MDA', 'MCO', 'MNG', 'MNE', 'MSR', 'MAR', 'MOZ', 'MMR', 'NAM', 'NRU', 'NPL', 'NLD', 'NCL', 'NZL', 'NIC', 'NER', 'NGA', 'NIU', 'NFK', 'MNP', 'NOR', 'OMN', 'PAK', 'PLW', 'PSE', 'PAN', 'PNG', 'PRY', 'PER', 'PHL', 'PCN', 'POL', 'PRT', 'PRI', 'QAT', 'REU', 'ROU', 'RUS', 'RWA', 'BLM', 'SHN', 'KNA', 'LCA', 'MAF', 'SPM', 'VCT', 'WSM', 'SMR', 'STP', 'SAU', 'SEN', 'SRB', 'SYC', 'SLE', 'SGP', 'SXM', 'SVK', 'SVN', 'SLB', 'SOM', 'ZAF', 'SGS', 'SSD', 'ESP', 'LKA', 'SDN', 'SUR', 'SJM', 'SWZ', 'SWE', 'CHE', 'SYR', 'TWN', 'TJK', 'TZA', 'THA', 'TLS', 'TGO', 'TKL', 'TON', 'TTO', 'TUN', 'TUR', 'TKM', 'TCA', 'TUV', 'UGA', 'UKR', 'ARE', 'GBR', 'USA', 'UMI', 'URY', 'UZB', 'VUT', 'VEN', 'VNM', 'VGB', 'VIR', 'WLF', 'ESH', 'YEM', 'ZMB', 'ZWE']);
function isISO31661Alpha3(str) {
  assertString(str);
  return validISO31661Alpha3CountriesCodes.has(str.toUpperCase());
}

// from https://en.wikipedia.org/wiki/ISO_3166-1_numeric
var validISO31661NumericCountriesCodes = new Set(['004', '008', '010', '012', '016', '020', '024', '028


#----------------------------------------------------------------------
def xor(a, b):

    a, b = a.zfill(4), b.zfill(4)

    result = ""
    for i in range(4):  # Loop over each bit
        # XOR each bit and add to the result string
        result += str(int(a[i]) ^ int(b[i]))
    return result

#----------------------------------------------------------------------
def mod_helper(x,y,z):
    #x^y mod z
    if(y==1):
        return (x%z)
    return (((x%z) * mod_helper(x,y-1,z)) % z)

#----------------------------------------------------------------------
def split_m(m,count):
    a=1
    b=''
    c=[]
    for i in range(len(m)):
        if ((a<count) and (i < len(m)-1)):
            a+=1
            b+=m[i]
        else:
            a=1
            b+=m[i]
            c.append(b)
            b=''
    return c

#----------------------------------------------------------------------
#given condition
p=499
q=547
a=-57
b=52
x0=159201
# binary of M = {NETSEC}
m = '010011100100010101010100010100110100010101000011'
m_split = split_m(m,4)
t = len(m_split)

n = p * q

#----------------------------------------------------------------------
#encrypt
x = []
x.append(x0)

c = []

for i in range(t):
    xi = (x[i] **2) % n
    x.append(xi)
    pi = bin(xi & 15)[2:].zfill(4)
    ci = xor(m_split[i],pi)
    c.append(ci)
xt1 = (x[len(x)-1] **2) % n

send = (c,xt1)
print(send)

#----------------------------------------------------------------------
#decrypt
c = send[0]
xt1 = send[1]

d1 = (int((p+1)/4)**(t+1)) % (p-1)
d2 = (int((q+1)/4)**(t+1)) % (q-1)
u = mod_helper(xt1,d1,p)
v = mod_helper(xt1,d2,q)
x0 = ((v*a*p) + (u*b*q)) % n

x = []
x.append(x0)

m_n = []

for i in range(t):
    xi = (x[i] **2) % n
    x.append(xi)
    pi = bin(xi & 15)[2:].zfill(4)
    mi = xor(pi,c[i])
    m_n.append(mi)

print(m_split)
print(m_n)


tem.supply.iter().map(|e| Vec::<String>::from(e.clone())).collect(),
            borrow: item.borrow.iter().map(|e| Vec::<String>::from(e.clone())).collect(),
        }
    }
}

#[derive(Serialize, Deserialize, Clone, Copy, Debug, Hash, Eq, PartialEq)]
pub enum DataType {
    MINUTE,
    HOUR,
    DAY,
    WEEK,
}

impl FromStr for DataType {
    type Err = String;

    fn from_str(s: &str) -> Result<Self, Self::Err> {
        match s {
            "MINUTE"| "minute" => Ok(DataType::MINUTE),
            "HOUR"| "hour" => Ok(DataType::HOUR),
            "DAY" | "day" => Ok(DataType::DAY),
            "WEEK" | "week" => Ok(DataType::WEEK),
            _ => Err(format!("'{}' is not a valid value for DataType", s)),
        }
    }
}

impl fmt::Display for DataType {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "{:?}", self)
    }
}
use crate::{test, Formatter};
use std::collections::HashMap;

#[test]
fn test_function_hex() {
    let formatter = Formatter::new();
    // tests with functions
    {
        let test_metadata = test::MetadataProvider::new(HashMap::new());
        let do_test = |input, expected| {
            let expression = formatter
                .parser()
                .parse(&format!("$hex({})", input))
                .unwrap();
            let s = expression.apply(&test_metadata);
            assert_eq!(expected, s.to_string().as_str());
        };
        do_test("0", "0");
        do_test("1", "1");
        do_test("2", "2");
        do_test("9", "9");
        do_test("10", "A");
        do_test("11", "B");
        do_test("12", "C");
        do_test("13", "D");
        do_test("14", "E");
        do_test("15", "F");
        do_test("16", "10");
        do_test("20", "14");
        do_test("30", "1E");
        do_test("BONJOUR", "");
        do_test("hello this is just a test", "");
        do_test("1E", "");
        do_test("EE", "");
        let do_test2 = |input, padding, expected| {
            let expression = formatter
                .parser()
                .parse(&format!("$hex({}, {})", input, padding))
                .unwrap();
            let s = expression.apply(&test_metadata);
            assert_eq!(expected, s.to_string().as_str());
        };
        do_test2("20", 0, "14");
        do_test2("20", 1, "14");
        do_test2("20", 2, "14");
        do_test2("20", 3, "014");
        do_test2("20", 4, "0014");
        do_test2("20", 5, "00014");
        do_test2("13", 1, "D");
        do_test2("13", 3, "00D");
    }
}
<reponame>kkiyama117/denops-rust-example<filename>utils/denops-builder/src/main.rs
use std::{env, path::PathBuf, process::Command};

fn main() {
    // use getopts::Options;
    // let args: Vec<String> = env::args().collect();
    // let output_dir = matches.opt_str("o").unwrap();
    let path = env::current_dir().unwrap();
    let out_file = "index";
    denops_build(&path, &out_file);
}

fn denops_build(base_dir: &PathBuf, out_file: &str) {
    let result =
        Command::new("wasm-pack")
            .args(&["build", "--target", "web",


dat[j].agi;
		WFIFOB(fd,offset+(i*106)+100) = (char_dat[j].vit > 255)? 255:char_dat[j].vit;
		WFIFOB(fd,offset+(i*106)+101) = (char_dat[j].int_ > 255)? 255:char_dat[j].int_;
		WFIFOB(fd,offset+(i*106)+102) = (char_dat[j].dex > 255)? 255:char_dat[j].dex;
		WFIFOB(fd,offset+(i*106)+103) = (char_dat[j].luk > 255)? 255:char_dat[j].luk;
		WFIFOB(fd,offset+(i*106)+104) = char_dat[j].char_num;
	}

	WFIFOSET(fd,WFIFOW(fd,2));
	return 0;
}

int set_account_reg2(int acc,int num,struct global_reg *reg)
{
	int i,c;
	for(i=0,c=0;i<char_num;i++){
		if(char_dat[i].account_id==acc){
			memcpy(char_dat[i].account_reg2,reg,sizeof(char_dat[i].account_reg2));
			char_dat[i].account_reg2_num=num;
			c++;
		}
	}
	return c;
}

// (char폜Ɏgp)
int char_divorce(struct mmo_charstatus *cs){
	if(cs == NULL)
		return 0;

	if(cs->partner_id > 0){
		int i,j;
		for(i=0;i<char_num;i++){
			if(char_dat[i].char_id == cs->partner_id && char_dat[i].partner_id == cs->char_id){
				cs->partner_id=0;
				char_dat[i].partner_id=0;
				for(j=0;j<MAX_INVENTORY;j++){
					if(char_dat[i].inventory[j].nameid == WEDDING_RING_M || char_dat[i].inventory[j].nameid == WEDDING_RING_F){
						memset(&char_dat[i].inventory[j],0,sizeof(char_dat[i].inventory[0]));
					}
				}
				return 0;
			}
		}
	}
	return 0;
}

// L폜ɔf[^폜
static int char_delete(struct mmo_charstatus *cs,const char *mail)
{
	int j;
	char buf[64];

	nullpo_retr(-1,cs);

	printf("char_delete: %s\n",cs->name);
	// LڑĂ邩Ȃ̂mapɐؒfv
	WBUFW(buf,0)=0x2b19;
	WBUFL(buf,2)=cs->account_id;
	mapif_sendall(buf,6);

	// ybg폜
	if(cs->pet_id)
		inter_pet_delete(cs->pet_id);
	for(j=0;j<MAX_INVENTORY;j++)
		if(cs->inventory[j].card[0] == (short)0xff00)
			inter_pet_delete(*((long *)(&cs->inventory[j].card[2])));
	for(j=0;j<MAX_CART;j++)
		if(cs->cart[j].card[0] == (short)0xff00)
			inter_pet_delete(*((long *)(&cs->cart[j].card[2])));
	// MhE
	if(cs->guild_id)
		inter_guild_leave(cs->guild_id,cs->account_id,cs->char_id);
	// p[eB[E
	if(cs->party_id)
		inter_party_leave(cs->party_id,cs->account_id);
	//
	if(cs->partner_id){
		// mapɒʒm
		WBUFW(buf,0)=0x2b12;
		WBUFL(buf,2)=cs->char_id;
		WBUFL(buf,6)=cs->partner_id;
		mapif_sendall(buf,10);
		//
		char_divorce(cs);
	}

	return 0;
}

// authfifo̔r
int cmp_authfifo(int i,int account_id,int login_id1,int login_id2,int ip)
{
	if(	auth_fifo[i].account_id==account_id &&
		auth_fifo[i].login_id1==login_id1 )
		return 1;
#ifdef CMP_AUTHFIFO_LOGIN2
//	printf("cmp_authfifo: id2 check %d %x %x = %08x %08x %08x\n",i,auth_fifo[i].login_id2,login_id2,
//		auth_fifo[i].account_id,auth_fifo[i].login_id1,auth_fifo[i].login_id2);
	if( auth_fifo[i].login_id2==login_id2 && login_id2>0)
		return 1;
#endif
#ifdef CMP_AUTHFIFO_IP
//	printf("cmp_authfifo: ip check %d %x %x = %08x %08x %08x\n",i,auth_fifo[i].ip,ip,
//		auth_fifo[i].account_id,auth_fifo[i].login_id1,auth_fifo[i].login_id2);
	if(auth_fifo[i].ip==ip && ip!=0 && ip!=-1)
		return 1;
#endif
	return 0;
}

// \Pbg̃fXgN^
int parse_login_disconnect(int fd) {
	if(fd==login_fd)
		login_fd=-1;
	return 0;
}

int parse_tologin(int fd)
{
	int i,fdc;
	struct char_session_data *sd;

	printf("parse_tologin : %d %d %d\n",fd,RFIFOREST(fd),RFIFOW(fd,0));
	sd=session[fd]->session_data;
	while(RFIFOREST(fd)>=2){
		switch(RFIFOW(fd,0)){
		case 0x2711:
			if(RFIFOREST(fd)<3)
				return 0;
			if(RFIFOB(fd,2)){
				printf("connect login server error : %d\n",RFIFOB(fd,2));
				exit(1);
			}
			RFIFOSKIP(fd,3);
			break;
		case 0x2713:
			if(RFIFOREST(fd)<15)
				return 0;
			for(i=0;i<fd_max;i++){
				if(session[i] && (sd=session[i]->session_data)){
					if(sd->account_id==RFIFOL(fd,2))
						break;
				}
			}
			fdc=i;
			if(fdc==fd_max){
				RFIFOSKIP(fd,15);
				break;
			}
			printf("parse_tologin 2713 : %d\n",RFIFOB(fd,6));
			if(RFIFOB(fd,6)!=0){
				WFIFOW(fdc,0)=0x6c;
				WFIFOB(fdc,2)=0x42;
				WFIFOSET(fdc,3);
				RFIFOSKIP(fd,15);
				break;
			}
			sd->account_id=RFIFOL(fd,7);
			sd->login_id1=RFIFOL(fd,11);

			if(char_maintenance && isGM(sd->account_id)==0){
				close(fd);
				session[fd]->eof=1;
				return 0;
			}
			if(max_connect_user > 0) {
				if(count_users() < max_connect_user  || isGM(sd->account_id)>0)
					mmo_char_send006b(fdc,sd);
				else {
					WFIFOW(fdc,0)=0x6c;
					WFIFOW(fdc,2)=0;
					WFIFOSET(fdc,3);
				}
			}
			else
				mmo_char_send006b(fdc,sd);

			RFIFOSKIP(fd,15);
			break;

		case 0x2721: 	// gm reply
			{
				int oldacc,newacc;
				unsigned char buf[64];
				if(RFIFOREST(fd)<10)
					return 0;
				oldacc=RFI


 Long id;
    @DatabaseField(uniqueIndexName="priority_target", columnName = RedmineConnection.CONNECTION_ID)
    private Integer connection_id;
    @DatabaseField(uniqueIndexName="priority_target")
    private int priority_id;
    @DatabaseField
    private String name;
    @DatabaseField
    private boolean is_default;
    @DatabaseField
    private Date created;
    @DatabaseField
    private Date modified;

    @Override
    public String toString(){
    	return name;
    }

    /**
	 * @param id セットする id
	 */
	public void setId(Long id) {
		this.id = id;
	}
	/**
	 * @return id
	 */
	public Long getId() {
		return id;
	}
	////////////////////////////////////////////////////////
	/**
	 * @param name セットする 名称
	 */
	public void setName(String name) {
		this.name = name;
	}
	/**
	 * @return name 名称
	 */
	public String getName() {
		return name;
	}

	@Override
	public void setRedmineConnection(RedmineConnection connection) {
		this.setConnectionId(connection.getId());
	}
	/**
	 * @param created セットする created
	 */
	public void setCreated(Date created) {
		this.created = created;
	}
	/**
	 * @return created
	 */
	public Date getCreated() {
		return created;
	}
	/**
	 * @param modified セットする modified
	 */
	public void setModified(Date modified) {
		this.modified = modified;
	}
	/**
	 * @return modified
	 */
	public Date getModified() {
		return modified;
	}

	/**
	 * @param status_id セットする status_id
	 */
	public void setPriorityId(int priority_id) {
		this.priority_id = priority_id;
	}

	/**
	 * @return status_id
	 */
	public int getPriorityId() {
		return priority_id;
	}

	@Override
	public void setConnectionId(Integer connection_id) {
		this.connection_id = connection_id;
	}
	@Override
	public Integer getConnectionId() {
		return connection_id;
	}

	@Override
	public void setRemoteId(Long id) {
		setPriorityId((id==null)? null : id.intValue());
	}

	@Override
	public Long getRemoteId() {
		return (long)getPriorityId();
	}

	/**
	 * @return is_default
	 */
	public boolean isDefault() {
		return is_default;
	}

	/**
	 * @param is_default セットする is_default
	 */
	public void setDefault(boolean is_default) {
		this.is_default = is_default;
	}

}
package jp.redmine.redmineclient.entity;

import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;

import java.util.Date;

@DatabaseTable
public class RedmineWatcher
		implements IConnectionRecord
		,IUserRecord
{
	public final static String ID = "id";
	public final static String CONNECTION = RedmineConnection.CONNECTION_ID;
	public final static String ISSUE_ID = "issue_id";
	public final static String USER_ID = "user_id";

	@DatabaseField(generatedId = true)
	private Long id;
	@DatabaseField(uniqueIndexName="watcher_target",columnName = RedmineConnection.CONNECTION_ID)
	private Integer connection_id;
	@DatabaseField(uniqueIndexName="watcher_target")
	private Integer issue_id;
    @DatabaseField(uniqueIndexName="watcher_target",
			foreign = true,foreignColumnName="id", columnName= "user_id", foreignAutoRefresh = true)
	private RedmineUser user;
	@DatabaseField
	private Date created;
	@DatabaseField
	private Date modified;

	public void setId(Long


ibutor and main CPU interface (s->cpuiomem[0]) */
    gic_init_irqs_and_mmio(s, gic_set_irq, gic_ops);

    /* Extra core-specific regions for the CPU interfaces. This is
     * necessary for "franken-GIC" implementations, for example on
     * Exynos 4.
     * NB that the memory region size of 0x100 applies for the 11MPCore
     * and also cores following the GIC v1 spec (ie A9).
     * GIC v2 defines a larger memory region (0x1000) so this will need
     * to be extended when we implement A15.
     */
    for (i = 0; i < s->num_cpu; i++) {
        s->backref[i] = s;
        memory_region_init_io(&s->cpuiomem[i+1], OBJECT(s), &gic_cpu_ops,
                              &s->backref[i], "gic_cpu", 0x100);
        sysbus_init_mmio(sbd, &s->cpuiomem[i+1]);
    }
}

static void arm_gic_class_init(ObjectClass *klass, void *data)
{
    DeviceClass *dc = DEVICE_CLASS(klass);
    ARMGICClass *agc = ARM_GIC_CLASS(klass);

    agc->parent_realize = dc->realize;
    dc->realize = arm_gic_realize;
}

static const TypeInfo arm_gic_info = {
    .name = TYPE_ARM_GIC,
    .parent = TYPE_ARM_GIC_COMMON,
    .instance_size = sizeof(GICState),
    .class_init = arm_gic_class_init,
    .class_size = sizeof(ARMGICClass),
};

static void arm_gic_register_types(void)
{
    type_register_static(&arm_gic_info);
}

type_init(arm_gic_register_types)


 v2
// CHECK: [0xf0,0x04,0x8c,0x7c]

v_cmp_ge_f32 vcc, -4.0, v2
// CHECK: [0xf7,0x04,0x8c,0x7c]

v_cmp_ge_f32 vcc, 0xaf123456, v2
// CHECK: [0xff,0x04,0x8c,0x7c,0x56,0x34,0x12,0xaf]

v_cmp_ge_f32 vcc, 0x3f717273, v2
// CHECK: [0xff,0x04,0x8c,0x7c,0x73,0x72,0x71,0x3f]

v_cmp_ge_f32 vcc, v1, v255
// CHECK: [0x01,0xff,0x8d,0x7c]

v_cmp_ge_f32_e64 s[10:11], v1, v2
// CHECK: [0x0a,0x00,0x46,0xd0,0x01,0x05,0x02,0x00]

v_cmp_ge_f32_e64 s[12:13], v1, v2
// CHECK: [0x0c,0x00,0x46,0xd0,0x01,0x05,0x02,0x00]

v_cmp_ge_f32_e64 s[100:101], v1, v2
// CHECK: [0x64,0x00,0x46,0xd0,0x01,0x05,0x02,0x00]

v_cmp_ge_f32_e64 flat_scratch, v1, v2
// CHECK: [0x66,0x00,0x46,0xd0,0x01,0x05,0x02,0x00]

v_cmp_ge_f32_e64 vcc, v1, v2
// CHECK: [0x6a,0x00,0x46,0xd0,0x01,0x05,0x02,0x00]

v_cmp_ge_f32_e64 s[10:11], v255, v2
// CHECK: [0x0a,0x00,0x46,0xd0,0xff,0x05,0x02,0x00]

v_cmp_ge_f32_e64 s[10:11], s1, v2
// CHECK: [0x0a,0x00,0x46,0xd0,0x01,0x04,0x02,0x00]

v_cmp_ge_f32_e64 s[10:11], s101, v2
// CHECK: [0x0a,0x00,0x46,0xd0,0x65,0x04,0x02,0x00]

v_cmp_ge_f32_e64 s[10:11], flat_scratch_lo, v2
// CHECK: [0x0a,0x00,0x46,0xd0,0x66,0x04,0x02,0x00]

v_cmp_ge_f32_e64 s[10:11], flat_scratch_hi, v2
// CHECK: [0x0a,0x00,0x46,0xd0,0x67,0x04,0x02,0x00]

v_cmp_ge_f32_e64 s[10:11], vcc_lo, v2
// CHECK: [0x0a,0x00,0x46,0xd0,0x6a,0x04,0x02,0x00]

v_cmp_ge_f32_e64 s[10:11], vcc_hi, v2
// CHECK: [0x0a,0x00,0x46,0xd0,0x6b,0x04,0x02,0x00]

v_cmp_ge_f32_e64 s[10:11],


curseforge.com/minecraft/mc-mods/thaumic-wonders" target="_blank">Thaumic Wonders

>>> 综合系

英文名（CurseForge）	中文名（MCMOD）	相关链接	备注

Botania	植物魔法	MCBBS	vazkii 力作

> Garden of Glass	水晶花园	MCBBS	植膜的空岛模式

> Botania Tweaks

> ExtraBotany	额外植物学	MCBBS

> Whoops			手残党福音

> <a href="https://www.curseforge.com/minecr


, 'phecode', 'Measure'])

look_at = corr_chg
corr = look_at.reset_index()
corr = corr.melt(id_vars=['groupid', 'phecode', 'group','type'])
tt = [ii.startswith('-logp_') for ii in corr['variable']]
corr_log = corr[tt]
corr_log = corr_log.rename(columns={'value':'-logp_Pattern'})
tt = [ii.startswith('p_') for ii in corr['variable']]
corr_log['p_Pattern'] = corr[tt]['value'].values
tt = [ii.startswith('r_') for ii in corr['variable']]
corr_log['r_Pattern'] = corr[tt]['value'].values
corr_log['Pattern'] =  corr_log['variable'].map(lambda x: x.split('-logp_')[1])
corr_log = corr_log.set_index(['groupid', 'phecode']).sort_index()
corr_log['id'] =  corr_log.index.get_level_values(1).map(lambda x: x.split('-')[-1].split('_')[0])
corr_log['i'] = np.arange(corr_log.shape[0])
corr_log_chg = corr_log.copy()
corr_log_chg['Measure'] = "LBAC"
corr_log_chg = corr_log_chg.reset_index().set_index(['groupid', 'phecode', 'Measure'])

# Another attempt at FDR correction
# This time with harshest Bon, applied across both LBAC and MBAC associations
n_look = 33
thresBon = 0.05/(corr_amt.shape[0]*2*n_look) # 33 Patterns; 2 measures per
new_FDR = MeDiWAS.findFDR(pd.concat([corr_log_chg, corr_log_amt]), 'Pattern', thresBon)

n_corrections = 174 * 33 * 2
FDR_list = []
for lbl in labels[0:33]:
    FDR_list.append(MeDiWAS.findFDR(corr_chg, lbl, 0.05/n_corrections))
FDR_list_chg = np.asarray(FDR_list)

FDR_list = []
for lbl in labels[0:33]:
    FDR_list.append(MeDiWAS.findFDR(corr_amt, lbl, 0.05/n_corrections))
FDR_list_amt = np.asarray(FDR_list)

plot = MeDiWAS.miami_plot(corr_log_chg, corr_log_amt, 'Pattern', label=None, thres=None, n_t = n_corrections,
                          lbls=['Asymmetry Change', 'Amount of Asymmetry Change'],
                          thresFDRs = [FDR_list_chg.max(), FDR_list_amt.max()])
# plt.savefig(os.path.join(VIS_FOLDER, "MEDI_Miami_Change_Top.pdf"))

plot = MeDiWAS.miami_plot(corr_log_amt, corr_log_chg, 'Pattern', label=None, thres=None, n_t = n_corrections,
                          lbls=['Amount of Asymmetry Change', 'Asymmetry Change'],
                          thresFDRs = [FDR_list_amt.max(), FDR_list_chg.max()])

# plt.savefig(os.path.join(VIS_FOLDER, "MEDI_Miami_Abs_Top.pdf"))

# Aside
# Derm 4 is super strongly associated with pattern change.
# What is its phewas?
ICD_DDR_small['DERM-4_PCA']

import processing.manhattan_plot_util as man_plot

ukbb_y, y_desc_dict, y_cat_dict = man_plot.load_phenom(BASE_FOLDER = 'data/processed/')

disease_phewas = man_plot.phenom_correlat(ICD_DDR_small['DERM-4_PCA'].reset_index(), ukbb_y, y_desc_dict, y_cat_dict)

# We want to drop everything in mental health
cat_name = man_plot.cat_name(disease_phewas, y_cat_dict)

man_plot.manhattan_plot(disease_phewas, 'DERM-4_PCA', cat_name)

ppl_phecodes, ppl_xcldphe, phecodes_idx, groupid = MeDiWAS.load_ICD()
derm_mediwas = MeDiWAS.ICD_correlat(ICD_DDR_small['DERM-4_PCA'].reset_index(), ppl_phecodes, ppl_xcldphe, phecodes_idx)
MeDiWAS.manhattan_plot(derm_mediwas, 'DERM-4_PCA')
MeDiWAS.hits(derm_mediwas, 'DERM-4_PCA', sort=True)


_gradient = "units/payday2_cash/safes/ait/pattern_gradient/gradient_ait_024_a_df"
				}
			},
			wpn_fps_upg_ass_m4_lower_reciever_core = {
				[Idstring("mtr_lower"):key()] = {
					pattern = "units/payday2_cash/safes/ait/pattern/ait_pattern_024_k_df",
					pattern_gradient = "units/payday2_cash/safes/ait/pattern_gradient/gradient_ait_024_g_df",
					base_gradient = "units/payday2_cash/safes/ait/base_gradient/base_ait_024_a_df"
				}
			},
			wpn_fps_snp_tti_s_vltor = {
				[Idstring("tti_stock"):key()] = {}
			},
			wpn_fps_m16_fg_railed = {
				[Idstring("railed"):key()] = {
					pattern = "units/payday2_cash/safes/ait/pattern/ait_pattern_024_i_df",
					pattern_gradient = "units/payday2_cash/safes/ait/pattern_gradient/gradient_ait_024_d_df"
				}
			},
			wpn_fps_upg_o_eotech_xps = {
				[Idstring("eotech"):key()] = {
					pattern = "units/payday2_cash/safes/ait/pattern/ait_pattern_024_df",
					pattern_gradient = "units/payday2_cash/safes/ait/pattern_gradient/gradient_ait_024_a_df"
				}
			},
			wpn_fps_m16_fg_standard = {
				[Idstring("standard"):key()] = {
					pattern = "units/payday2_cash/safes/ait/pattern/ait_pattern_024_n_df",
					pattern_gradient = "units/payday2_cash/safes/ait/pattern_gradient/gradient_ait_024_b_df"
				}
			},
			wpn_fps_amcar_bolt_standard = {
				[Idstring("m4_upper_reciever_edge"):key()] = {
					pattern = "units/payday2_cash/safes/ait/pattern/ait_pattern_024_i_df",
					pattern_gradient = "units/payday2_cash/safes/ait/pattern_gradient/gradient_ait_024_d_df",
					pattern_pos = Vector3(0.597663, 0.00620119, 0),
					pattern_tweak = Vector3(1, 0.001, 1)
				},
				[Idstring("mtr_balios"):key()] = {
					pattern = "units/payday2_cash/safes/ait/pattern/ait_pattern_024_i_df",
					pattern_gradient = "units/payday2_cash/safes/ait/pattern_gradient/gradient_ait_024_d_df",
					pattern_pos = Vector3(0, 0, 0)
				},
				[Idstring("mtr_upper"):key()] = {
					pattern = "units/payday2_cash/safes/ait/pattern/ait_pattern_024_i_df",
					pattern_gradient = "units/payday2_cash/safes/ait/pattern_gradient/gradient_ait_024_d_df"
				},
				[Idstring("round"):key()] = {
					pattern = "units/payday2_cash/safes/ait/pattern/ait_pattern_024_i_df",
					pattern_gradient = "units/payday2_cash/safes/ait/pattern_gradient/gradient_ait_024_d_df",
					pattern_pos = Vector3(0.247234, 0.216075, 0)
				}
			},
			wpn_fps_upg_o_cmore = {


 values: _width_, _height_ and _depth_.
  ///   - Etc. etc.
  pub fn size(&self) -> D::Size {
    self.size
  }
}

/// Whether mipmaps should be generated.
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
pub enum GenMipmaps {
  /// Mipmaps should be generated.
  ///
  /// Mipmaps are generated when creating textures but also when uploading texels, clearing, etc.
  Yes,
  /// Never generate mipmaps.
  No
}

pub(crate) fn opengl_target(l: Layering, d: Dim) -> GLenum {
  match l {
    Layering::Flat => match d {
      Dim::Dim1 => gl::TEXTURE_1D,
      Dim::Dim2 => gl::TEXTURE_2D,
      Dim::Dim3 => gl::TEXTURE_3D,
      Dim::Cubemap => gl::TEXTURE_CUBE_MAP,
    },
    Layering::Layered => match d {
      Dim::Dim1 => gl::TEXTURE_1D_ARRAY,
      Dim::Dim2 => gl::TEXTURE_2D_ARRAY,
      Dim::Dim3 => unimplemented!("3D textures array not supported"),
      Dim::Cubemap => gl::TEXTURE_CUBE_MAP_ARRAY,
    },
  }
}

pub(crate) unsafe fn create_texture<L, D>(
  target: GLenum,
  size: D::Size,
  mipmaps: usize,
  pf: PixelFormat,
  sampler: Sampler,
) -> Result<(), TextureError>
where L: Layerable,
      D: Dimensionable {
  set_texture_levels(target, mipmaps);
  apply_sampler_to_texture(target, sampler);
  create_texture_storage::<L, D>(size, mipmaps, pf)
}

fn create_texture_storage<L, D>(size: D::Size, mipmaps: usize, pf: PixelFormat) -> Result<(), TextureError>
where L: Layerable,
      D: Dimensionable {
  match opengl_pixel_format(pf) {
    Some(glf) => {
      let (format, iformat, encoding) = glf;

      match (L::layering(), D::dim()) {
        // 1D texture
        (Layering::Flat, Dim::Dim1) => {
          create_texture_1d_storage(format, iformat, encoding, D::width(size), mipmaps);
          Ok(())
        }

        // 2D texture
        (Layering::Flat, Dim::Dim2) => {
          create_texture_2d_storage(
            format,
            iformat,
            encoding,
            D::width(size),
            D::height(size),
            mipmaps,
          );
          Ok(())
        }

        // 3D texture
        (Layering::Flat, Dim::Dim3) => {
          create_texture_3d_storage(
            format,
            iformat,
            encoding,
            D::width(size),
            D::height(size),
            D::depth(size),
            mipmaps,
          );
          Ok(())
        }

        // cubemap
        (Layering::Flat, Dim::Cubemap) => {
          create_cubemap_storage(format, iformat, encoding, D::width(size), mipmaps);
          Ok(())
        }

        _ => {
          #[cfg(feature = "std")]
          {
            Err(TextureError::TextureStorageCreationFailed(format!(
              "unsupported texture OpenGL pixel format: {:?}",
              glf
            )))
          }

          #[cfg(not(feature = "std"))]
          {
            let mut reason = String::new();
            let _ = write!(&mut r


:HhasParam,
    hhas_pos::HhasSpan,
    hhas_type::HhasTypeInfo,
    hhbc_id::{class, method},
    typed_value::TypedValue,
    FCallArgs, FCallArgsFlags, Label, Local, LocalRange, SpecialClsRef, Visibility,
};
use hhbc_string_utils::reified;
use instruction_sequence::{instr, InstrSeq};
use naming_special_names_rust::{members, user_attributes as ua};
use options::HhvmFlags;
use oxidized::{ast as T, pos::Pos};

/// Precomputed information required for generation of memoized methods
pub struct MemoizeInfo<'arena> {
    /// True if the enclosing class is a trait
    is_trait: bool,
    /// Enclosing class ID
    class_id: class::ClassType<'arena>,
}

fn is_memoize(method: &T::Method_) -> bool {
    method
        .user_attributes
        .iter()
        .any(|a| ua::is_memoized(&a.name.1))
}

fn is_memoize_lsb(method: &T::Method_) -> bool {
    method
        .user_attributes
        .iter()
        .any(|a| ua::MEMOIZE_LSB == a.name.1 || ua::POLICY_SHARDED_MEMOIZE_LSB == a.name.1)
}

pub fn make_info<'arena>(
    class: &T::Class_,
    class_id: class::ClassType<'arena>,
    methods: &[T::Method_],
) -> Result<MemoizeInfo<'arena>> {
    for m in methods.iter() {
        // check methods
        if is_memoize(m) {
            emit_memoize_helpers::check_memoize_possible(&m.name.0, &m.params[..], true)?;
            let pos = &m.name.0;
            if class.kind.is_cinterface() {
                return Err(Error::fatal_runtime(
                    pos,
                    "<<__Memoize>> cannot be used in interfaces",
                ));
            } else if m.abstract_ {
                return Err(Error::fatal_parse(
                    pos,
                    format!(
                        "Abstract method {}::{} cannot be memoized",
                        class_id.unsafe_as_str(),
                        &m.name.1,
                    ),
                ));
            };
        };
    }

    let is_trait = class.kind.is_ctrait();
    Ok(MemoizeInfo { is_trait, class_id })
}

pub fn emit_wrapper_methods<'a, 'arena, 'decl>(
    emitter: &mut Emitter<'arena, 'decl>,
    env: &mut Env<'a, 'arena>,
    info: &MemoizeInfo<'arena>,
    class: &'a T::Class_,
    methods: &'a [T::Method_],
) -> Result<Vec<HhasMethod<'arena>>> {
    // Wrapper methods may not have iterators
    emitter.iterator_mut().reset();

    let mut hhas_methods = vec![];
    for m in methods.iter() {
        if is_memoize(m) {
            env.scope
                .push_item(ScopeItem::Method(ast_scope::Method::new_ref(m)));
            hhas_methods.push(make_memoize_wrapper_method(emitter, env, info, class, m)?);
        };
    }
    Ok(hhas_methods)
}

// This is cut-and-paste from emit_method, with special casing for wrappers
fn make_memoize_wrapper_method<'a, 'arena, 'decl>(
    emitter: &mut Emitter<'arena, 'decl>,
    env: &mut Env<'a, 'arena>,
    info: &


5FD}.AXFormTable tbody tr.yellow td,.AXFormTable tbody tr.yellow th{background-color:#FEFEE9}.AXFormTable tbody tr td.gray{background-color:#F5F5F5}.AXFormTable tbody tr td.red{background-color:#FFE8E8}.AXFormTable tbody tr td.green{background-color:#F7FDEA}.AXFormTable tbody tr td.blue{background-color:#EAF5FD}.AXFormTable tbody tr td.yellow{background-color:#FEFEE9}@media (max-width:767px){.AXInputLabel{position:relative;display:inline-block;vertical-align:top}.AXInputLabel SPAN{display:block;line-height:24px;font-size:12px;color:#444;padding:0 3px}.AXInputLabel.fullWidth{display:block;padding-right:8px}.AXInputLabel.fullWidth SPAN{display:block}.AXInputLabel.fullWidth input[type=password],.AXInputLabel.fullWidth input[type=text]{width:100%;box-size:border-box}.AXNotification{width:280px;border:1px solid #c5c5c5;background:#ebebeb;padding:10px;margin:10px 0;box-shadow:0 0 3px #b2b2b2;font-size:12px;color:#525252;-moz-opacity:.8;opacity:.8;filter:alpha(opacity=80);-webkit-border-radius:4px 5px 5px;-moz-border-radius:4px 5px 5px;border-radius:4px 5px 5px}.AXNotification.Warning .AXNotificationIcon{width:42px;height:42px;background:url(images/dx-noti-warning.png) no-repeat center center!important}.AXNotification.Warning .AXNotificationBody B{color:#bf601b}.AXNotification.Caution .AXNotificationIcon{width:42px;height:42px;background:url(images/dx-noti-caution.png) no-repeat center center!important}.AXNotification.Caution .AXNotificationBody B{color:#7e302c}.AXNotification .AXNotificationHead{font-weight:700;color:#717b85;text-shadow:0 1px #fff;padding:5px 15px;height:20px;line-height:20px;background:#fff url(images/dx-dialog-title.png) repeat-x;text-align:center}.AXNotification .AXNotificationTable{width:100%;border:0 none!important;background:#ebebeb}.AXNotification .AXNotificationTable td,.AXNotification .AXNotificationTable th{border:0 none!important;background:#ebebeb}.AXNotification .AXNotificationIcon{width:42px;height:42px;background:url(images/dx-noti-complete.png) no-repeat center 5px!important}.AXNotification .AXNotificationBody{font-size:12px;color:#525252;padding-right:5px;line-height:1.6em}.AXNotification .AXNotificationBody B{color:#477e47}.AXNotification .AXNotificationButton{width:45px}.AXNotification .AXNotificationButtons{padding:10px 0;text-align:center;background:#ebebeb}.AXNotificationTray{position:fixed;right:0;top:0;z-index:5001;width:310px}.AXNotificationTrayDialog{position:fixed;left:0;top:50px;width:100%;z-index:5001}.AXNotificationTrayDialog .AXNotification{width:280px;border:1px solid #444;background:#ebebeb;padding:0;margin:0 auto;box-shadow:0 0 3px #888;font-size:12px;color:#525252;overflow:hidden;-moz-opacity:1;opacity:1;filter:alpha(opacity=100);-webkit-border-radius:4px 5px 5px;-moz-border-radius:4px 5px 5px;border-radius:4px 5px 5px}.AXNotificationTrayDialog .AXNotification .AXNotificationCT{padding:10px}}.none{display:none}.util-border-radius-none{-webkit-border-radius:none;-moz-border-radius:none;border-radius:none}.util-text-ellipsis{white-space:nowrap;


(bitField0_ & 0x00000001) != 0)) {
      output.writeMessage(3, getCreateTime());
    }
    if (((bitField0_ & 0x00000002) != 0)) {
      output.writeMessage(4, getUpdateTime());
    }
    com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(
        output, internalGetLabels(), LabelsDefaultEntryHolder.defaultEntry, 5);
    if (((bitField0_ & 0x00000004) != 0)) {
      output.writeMessage(6, getCapacityConfig());
    }
    if (platformConfigCase_ == 7) {
      output.writeMessage(7, (com.google.cloud.managedkafka.v1.ConnectGcpConfig) platformConfig_);
    }
    if (state_
        != com.google.cloud.managedkafka.v1.ConnectCluster.State.STATE_UNSPECIFIED.getNumber()) {
      output.writeEnum(8, state_);
    }
    com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(
        output, internalGetConfig(), ConfigDefaultEntryHolder.defaultEntry, 9);
    getUnknownFields().writeTo(output);
  }

  @java.lang.Override
  public int getSerializedSize() {
    int size = memoizedSize;
    if (size != -1) return size;

    size = 0;
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(kafkaCluster_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, kafkaCluster_);
    }
    if (((bitField0_ & 0x00000001) != 0)) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getCreateTime());
    }
    if (((bitField0_ & 0x00000002) != 0)) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getUpdateTime());
    }
    for (java.util.Map.Entry<java.lang.String, java.lang.String> entry :
        internalGetLabels().getMap().entrySet()) {
      com.google.protobuf.MapEntry<java.lang.String, java.lang.String> labels__ =
          LabelsDefaultEntryHolder.defaultEntry
              .newBuilderForType()
              .setKey(entry.getKey())
              .setValue(entry.getValue())
              .build();
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, labels__);
    }
    if (((bitField0_ & 0x00000004) != 0)) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getCapacityConfig());
    }
    if (platformConfigCase_ == 7) {
      size +=
          com.google.protobuf.CodedOutputStream.computeMessageSize(
              7, (com.google.cloud.managedkafka.v1.ConnectGcpConfig) platformConfig_);
    }
    if (state_
        != com.google.cloud.managedkafka.v1.ConnectCluster.State.STATE_UNSPECIFIED.getNumber()) {
      size += com.google.protobuf.CodedOutputStream.computeEnumSize(8, state_);
    }
    for (java.util.Map.Entry<java.lang.String, java.lang.String> entry :
        internalGetConfig().getMap().entrySet()) {
      com.google.protobuf.MapEntry<java.lang.String, java.lang.String> config__ =
          ConfigDefaultEntryHolder.defaultEntry
              .newBuilderForType()
              .setKey(entry.getKey())
              .setValue(entry.getValue())
              .build();
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, config__);
    }
    size += getUnknownFields().getSerial


  }

    fun addTodo(map: MutableMap<String, Any>): LiveData<Any> {
        launchUI {
            val res = repository.addTodo(map)
            addTodo.value = res.data
        }
        return addTodo
    }

    fun updateTodo(id: Int, map: MutableMap<String, Any>): LiveData<Any> {
        launchUI {
            val res = repository.updateTodo(id, map)
            updateTodo.value = res.data
        }
        return updateTodo
    }
}package com.jzh.mvvm.httpUtils.interceptor

import com.jzh.mvvm.constant.HttpConstant
import com.jzh.mvvm.utils.MyMMKV.Companion.mmkv
import okhttp3.Interceptor
import okhttp3.Response

/**
 * 头部拦截器
 * Created by jzh on 2020-12-23.
 */
class HeaderInterceptor : Interceptor {

    override fun intercept(chain: Interceptor.Chain): Response {

        val request = chain.request()
        val builder = request.newBuilder()

        builder.addHeader("Content-type", "application/json; charset=utf-8")
        // .header("token", token)
//         .method(request.method, request.body)

        val domain = request.url.host
        val url = request.url.toString()
        //需要添加cookie的接口加上cookie
        if (domain.isNotEmpty() && (url.contains(HttpConstant.COLLECTIONS_WEBSITE)
                    || url.contains(HttpConstant.UNCOLLECTIONS_WEBSITE)
                    || url.contains(HttpConstant.ARTICLE_WEBSITE)
                    || url.contains(HttpConstant.TODO_WEBSITE)
                    || url.contains(HttpConstant.COIN_WEBSITE))
        ) {
            val spDomain = mmkv.decodeString(domain) ?: ""
            val cookie: String = if (spDomain.isNotEmpty()) spDomain else ""
            if (cookie.isNotEmpty()) {
                // 将 Cookie 添加到请求头
                builder.addHeader(HttpConstant.COOKIE_NAME, cookie)
            }
        }
        return chain.proceed(builder.build())
    }
}package org.jzvd.jzvideo

// Chrome浏览器和饺子demo(android.MediaPlayer)相同时间相同网络环境播放，速度相差很远，为什么。
// ijk好像略快，但没有电脑的chrome快。红米手机的自带浏览器可以完整观看视频无需中途加载。

val cn = "http://8.136.101.204"
val us = "http://videos.jzvd.org"

var server_name: String = cn

val ldjVideos = arrayOf(
    "$server_name/v/ldj/01-ldj.mp4",
    "$server_name/v/ldj/02-ldj.mp4",
    "$server_name/v/ldj/03-ldj.mp4",
    "$server_name/v/ldj/04-ldj.mp4",
    "$server_name/v/ldj/05-ldj.mp4",
    "$server_name/v/ldj/06-ldj.mp4",
    "$server_name/v/ldj/07-ldj.mp4",
    "$server_name/v/ldj/08-ldj.mp4",
    "$server_name/v/ldj/09-ldj.mp4",
    "$server_name/v/ldj/10-ldj.mp4",
    "$server_name/v/ldj/11-ldj.mp4",
    "$server_name/v/ldj/12-ldj.mp4",
    "$server_name/v/ldj/13-ldj.mp4",
    "$server_name/v/ldj/14-ldj.mp4",
    "$server_name/v/ldj/15-ldj.mp4",
    "$server_name/v/ldj/16-ldj.mp4",
    "$server_name/v/ldj/17-ldj.mp4",
    "$server_name/v/ldj/18-ldj.mp4",
    "$server_name/v/ldj/19-ldj.mp4",
    "$server_name/v/ldj/20-ldj.mp4",
    "$server_name/v/ldj/21-ldj.mp4",
    "$server_name/v/ldj/22-ldj.mp4",
    "


 center;
}

u-dropdown {
	flex: 1;
}
/* #endif */
/* end-微信小程序编译后页面有组件名的元素，特别处理--end */

/* #ifdef MP-QQ || MP-TOUTIAO */
// 需要做这一切额外的兼容，都是因为TX的无能
u-icon {
	line-height: 0;
}
/* #endif */

/* start--头条小程序编译后页面有组件名的元素，特别处理--start */
// 由于头条小程序不支持直接组件名形式写样式，目前只能在写组件的时候给组件加上对应的类名
/* #ifdef MP-TOUTIAO */
.u-td, .u-th, .u-tr {
	flex: 1;
	align-self: stretch;
}

.u-row, .u-col {
	flex: 1;
	align-self: stretch;
}

// 避免小程序线条组件因为父组件display: flex;而失效
.u-line {
	flex: 1;
}

.u-dropdown {
	flex: 1;
}
/* #endif */
/* end-头条小程序编译后页面有组件名的元素，特别处理--end */

.u-datetime-picker[data-v-33a0737a]{position:relative;z-index:999}.u-picker-view[data-v-33a0737a]{height:100%;box-sizing:border-box}.u-picker-header[data-v-33a0737a]{width:100%;height:2.8125rem;padding:0 1.25rem;display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;font-size:.9375rem;background:#fff;position:relative}.u-picker-header[data-v-33a0737a]:after{content:"";position:absolute;border-bottom:.03125rem solid #eaeef1;transform:scaleY(.5);bottom:0;right:0;left:0}.u-picker__title[data-v-33a0737a]{color:#666}.u-picker-body[data-v-33a0737a]{width:100%;height:15.625rem;overflow:hidden;background-color:#fff}.u-column-item[data-v-33a0737a]{display:flex;align-items:center;justify-content:center;font-size:1rem;color:#333;padding:0 .25rem}.u-text[data-v-33a0737a]{font-size:.75rem;padding-left:.25rem}.u-btn-picker[data-v-33a0737a]{padding:.5rem;box-sizing:border-box;text-align:center;text-decoration:none}.u-opacity[data-v-33a0737a]{opacity:.5}.u-btn-picker--primary[data-v-33a0737a]{color:#4173ff}.u-btn-picker--tips[data-v-33a0737a]{color:#999}.header[data-v-68c024d4]{width:100%}.header uni-image[data-v-68c024d4]{width:3.75rem;height:3.75rem;border-radius:50%}.item[data-v-68c024d4]{margin-top:.0625rem;padding:.9375rem;background-color:#fff}.item .label[data-v-68c024d4]{width:4.6875rem}.item .content[data-v-68c024d4]{flex:1;width:80%}
@font-face{font-family:uicon-iconfont;src:url(//at.alicdn.com/t/font_1529455_k4s6di1d1.eot?t=1596960292384);src:url(//at.alicdn.com/t/font_1529455_k4s6di1d1.eot?t=1596960292384#iefix) format("embedded-opentype"),url(data:application/x-font-woff2;


p>
	 * This method provides an iterator that returns Calendar objects. The days are
	 * progressed using {@link Calendar#add(int, int)}.
	 *

	 *
	 * @param focus      the date to work with, not null
	 * @param rangeStyle the style constant to use. Must be one of
	 *                   {@link DateUtils#RANGE_MONTH_SUNDAY},
	 *                   {@link DateUtils#RANGE_MONTH_MONDAY},
	 *                   {@link DateUtils#RANGE_WEEK_SUNDAY},
	 *                   {@link DateUtils#RANGE_WEEK_MONDAY},
	 *                   {@link DateUtils#RANGE_WEEK_RELATIVE},
	 *                   {@link DateUtils#RANGE_WEEK_CENTER}
	 * @return the date iterator, not null
	 * @throws IllegalArgumentException if the date is {@code null}
	 * @throws IllegalArgumentException if the rangeStyle is invalid
	 */
	public static Iterator<Calendar> iterator(final Calendar focus, final int rangeStyle) {
		if (focus == null) {
			throw nullDateIllegalArgumentException();
		}
		Calendar start = null;
		Calendar end = null;
		int startCutoff = Calendar.SUNDAY;
		int endCutoff = Calendar.SATURDAY;
		switch (rangeStyle) {
		case RANGE_MONTH_SUNDAY:
		case RANGE_MONTH_MONDAY:
			// Set start to the first of the month
			start = truncate(focus, Calendar.MONTH);
			// Set end to the last of the month
			end = (Calendar) start.clone();
			end.add(Calendar.MONTH, 1);
			end.add(Calendar.DATE, -1);
			// Loop start back to the previous sunday or monday
			if (rangeStyle == RANGE_MONTH_MONDAY) {
				startCutoff = Calendar.MONDAY;
				endCutoff = Calendar.SUNDAY;
			}
			break;
		case RANGE_WEEK_SUNDAY:
		case RANGE_WEEK_MONDAY:
		case RANGE_WEEK_RELATIVE:
		case RANGE_WEEK_CENTER:
			// Set start and end to the current date
			start = truncate(focus, Calendar.DATE);
			end = truncate(focus, Calendar.DATE);
			switch (rangeStyle) {
			case RANGE_WEEK_SUNDAY:
				// already set by default
				break;
			case RANGE_WEEK_MONDAY:
				startCutoff = Calendar.MONDAY;
				endCutoff = Calendar.SUNDAY;
				break;
			case RANGE_WEEK_RELATIVE:
				startCutoff = focus.get(Calendar.DAY_OF_WEEK);
				endCutoff = startCutoff - 1;
				break;
			case RANGE_WEEK_CENTER:
				startCutoff = focus.get(Calendar.DAY_OF_WEEK) - 3;
				endCutoff = focus.get(Calendar.DAY_OF_WEEK) + 3;
				break;
			default:
				break;
			}
			break;
		default:
			throw new IllegalArgumentException("The range style " + rangeStyle + " is not valid.");
		}
		if (startCutoff < Calendar.SUNDAY) {
			startCutoff += 7;
		}
		if (startCutoff > Calendar.SATURDAY) {
			startCutoff -= 7;
		}
		if (endCutoff < Calendar.SUNDAY) {
			endCutoff += 7;
		}
		if (endCutoff > Calendar.SATURDAY) {
			endCutoff -= 7;
		}
		while (start.get(Calendar.DAY_OF_WEEK) != startCutoff) {
			start.add(Calendar.DATE, -1);
		}
		while (end.get(Calendar.DAY_OF_WEEK) != endCutoff) {
			end.add(Calendar.DATE, 1);
		}
		return new DateIterator(start, end);
	}

	/**
	 *

	 * Constructs an {@code Iterator} over each day in a date range defined by a
	 * focus date and range style.
	 *

	 *
	 *

	 * For instance, passing Thursday, July 4, 2002 and a {@code RANGE_MONTH_SUNDAY}
	 * will return an {@code Iterator} that starts with Sunday, June 30, 2002 and
	 * ends with Saturday, August 3, 2002, returning a Calendar instance for each
	 * intermediate day.
	 *

	 *
	 * @param focus      the date


name,
.token.namespace,
.token.deleted {
	color: #e2777a;
}

.token.function-name {
	color: #6196cc;
}

.token.boolean,
.token.number,
.token.function {
	color: #f08d49;
}

.token.property,
.token.class-name,
.token.constant,
.token.symbol {
	color: #f8c555;
}

.token.selector,
.token.important,
.token.atrule,
.token.keyword,
.token.builtin {
	color: #cc99cd;
}

.token.string,
.token.char,
.token.attr-value,
.token.regex,
.token.variable {
	color: #7ec699;
}

.token.operator,
.token.entity,
.token.url {
	color: #67cdcc;
}

.token.important,
.token.bold {
	font-weight: bold;
}
.token.italic {
	font-style: italic;
}

.token.entity {
	cursor: help;
}

.token.inserted {
	color: green;
}
:root {
  --scroll: 0 !important;
}

  .main-rootlist-rootlistDividerGradient {
    background: unset;
  }

  .x-searchInput-searchInputSearchIcon,
  .x-searchInput-searchInputClearButton {
    color: var(--spice-text) !important;
  }

  .main-home-homeHeader,
  .x-entityHeader-overlay,
  .x-actionBarBackground-background,
  .main-actionBarBackground-background,
  .main-entityHeader-overlay,
  .main-entityHeader-backgroundColor {
    background-color: unset !important;
    background-image: unset !important;
  }

  .main-playButton-PlayButton.main-playButton-primary {
    color: white;
  }

  .connect-device-list {
    margin: 0px -5px;
  }

  /* Remove Topbar background colour */
  .main-topBar-background {
    background-color: black !important;
  }
  .main-topBar-overlay {
    background-color: var(--spice-main);
  }

  .main-entityHeader-shadow,
  .main-contextMenu-menu,
  .connect-device-list-container {
    box-shadow: 0 4px 20px #21212130;
  }

  .main-trackList-playingIcon {
    filter: grayscale(1);
  }

  span.artist-artistVerifiedBadge-badge svg:nth-child(1) {
    fill: black;
  }

  /** Hightlight selected playlist */
  .main-rootlist-rootlistItemLink.main-rootlist-rootlistItemLinkActive {
    background: var(--spice-button) !important;
    border-radius: 4px;
    padding: 0 10px;
    margin: 0 5px 0 -10px;
  }

  .main-navBar-navBarLinkActive {
    background: var(--spice-button);
  }

  .main-contextMenu-menu {
    background-color: var(--spice-button);
  }

  .main-contextMenu-menuHeading,
  .main-contextMenu-menuItemButton,
  .main-contextMenu-menuItemButton:not(.main-contextMenu-disabled):focus,
  .main-contextMenu-menuItemButton:not(.main-contextMenu-disabled):hover {
    color: var(--spice


"""
Texture Replacement
+++++++++++++++++++

Example of how to replace a texture in game with an external image.
``createTexture()`` and ``removeTexture()`` are to be called from a
module Python Controller.
"""
from bge import logic
from bge import texture

def createTexture(cont):
    """Create a new Dynamic Texture"""
    obj = cont.owner

    # get the reference pointer (ID) of the internal texture
    ID = texture.materialID(obj, 'IMoriginal.png')

    # create a texture object
    object_texture = texture.Texture(obj, ID)

    # create a new source with an external image
    url = logic.expandPath("//newtexture.jpg")
    new_source = texture.ImageFFmpeg(url)

    # the texture has to be stored in a permanent Python object
    logic.texture = object_texture

    # update/replace the texture
    logic.texture.source = new_source
    logic.texture.refresh(False)

def removeTexture(cont):
    """Delete the Dynamic Texture, reversing back the final to its original state."""
    try:
        del logic.texture
    except:
        pass


2')
        .attr('stroke', 'black')
        .style('stroke-width', 2)
        .on('click', function(d: any) {
          return that.click(d);
        });
    });
  }

  // Toggle children on click.
  click(d: any) {
    console.log(this);
    console.log(d);
    if (d.children) {
      d._children = d.children;
      d.children = null;
    } else {
      d.children = d._children;
      d._children = null;
    }
    this.updateGraph(d);
  }

  collapse(d: any) {
    if (d.children) {
      d._children = d.children;
      d._children.forEach(function(line) {
        this.collapse(line);
      });
      d.children = null;
    }
  }

  updateGraph(d) {
    console.log('test' + d);

  }
}
import { Card } from '../../../interfaces'
import Set from '../Lost Thunder'

const card: Card = {
	name: {
		en: "Suicune",
		fr: "Suicune",
		es: "Suicune",
		it: "Suicune",
		pt: "Suicune",
		de: "Suicune"
	},
	illustrator: "Anesaki Dynamic",
	rarity: "Rare",
	category: "Pokemon",

	set: Set,
	dexId: [
		245,
	],
	hp: 110,
	types: [
		"Water",
	],

	stage: "Basic",

	abilities: [
		{
			type: "Ability",
			name: {
				en: "Frozen Flow",
				fr: "Flot Gelé",
				es: "Flujo Congelado",
				it: "Flusso Artico",
				pt: "Fluxo Congelado",
				de: "Starrer Strom"
			},
			effect: {
				en: "Once during your turn (before your attack), if this Pokémon is your Active Pokémon, you may have your opponent switch their Active Pokémon with 1 of their Benched Pokémon.",
				fr: "Une seule fois pendant votre tour (avant votre attaque), si ce Pokémon est votre Pokémon Actif, vous pouvez demander à votre adversaire d’échanger son Pokémon Actif avec l’un de ses Pokémon de Banc.",
				es: "Una vez durante tu turno (antes de tu ataque), si este Pokémon es tu Pokémon Activo, puedes hacer que tu rival cambie su Pokémon Activo por 1 de sus Pokémon en Banca.",
				it: "Una sola volta durante il tuo turno, prima di attaccare, se questo Pokémon è il tuo Pokémon attivo, puoi far scambiare al tuo avversario il suo Pokémon attivo con uno della sua panchina.",
				pt: "Uma vez durante a sua vez de jogar (antes de atacar), se este Pokémon for o seu Pokémon Ativo, você poderá fazer com que o seu oponente troque o próprio Pokémon Ativo por 1 dos Pokémon no Banco dele(a).",
				de: "Einmal während deines Zuges (bevor du angreifst), wenn dieses Pokémon dein Aktives Pokémon ist, kannst du deinen Gegner dazu veranlassen, sein Aktives Pokémon gegen 1 Pokémon auf seiner Bank auszutauschen."
			},
		},
	],
	attacks: [
		{
			cost: [
				"Water",
				"Colorless",
				"Colorless",
			],
			name: {
				en: "Aurora Gain",
				fr: "Puissance Boréale",
				es: "Ganar Aurora",
				it: "Prendiaurora",
				pt: "Aurora",
				de: "Aurora-Verstärkung"
			},
			effect: {
				en: "Heal 30 damage from this Pokémon.",
				fr: "Soignez 30 dégâts à ce Pokémon.",
				es: "Cura 30 puntos de daño a este Pokémon.",
				it: "Cura questo Pokémon da 30 danni.",
				pt: "Cure 30 pontos de dano deste


    "220871": "吉林白城经济开发区",
    "220881": "洮南市",
    "220882": "大安市"
  },
  "222400": {
    "222401": "延吉市",
    "222402": "图们市",
    "222403": "敦化市",
    "222404": "珲春市",
    "222405": "龙井市",
    "222406": "和龙市",
    "222424": "汪清县",
    "222426": "安图县"
  },
  "230000": {
    "230100": "哈尔滨市",
    "230200": "齐齐哈尔市",
    "230300": "鸡西市",
    "230400": "鹤岗市",
    "230500": "双鸭山市",
    "230600": "大庆市",
    "230700": "伊春市",
    "230800": "佳木斯市",
    "230900": "七台河市",
    "231000": "牡丹江市",
    "231100": "黑河市",
    "231200": "绥化市",
    "232700": "大兴安岭地区"
  },
  "230100": {
    "230101": "市辖区",
    "230102": "道里区",
    "230103": "南岗区",
    "230104": "道外区",
    "230108": "平房区",
    "230109": "松北区",
    "230110": "香坊区",
    "230111": "呼兰区",
    "230112": "阿城区",
    "230113": "双城区",
    "230123": "依兰县",
    "230124": "方正县",
    "230125": "宾县",
    "230126": "巴彦县",
    "230127": "木兰县",
    "230128": "通河县",
    "230129": "延寿县",
    "230183": "尚志市",
    "230184": "五常市"
  },
  "230200": {
    "230201": "市辖区",
    "230202": "龙沙区",
    "230203": "建华区",
    "230204": "铁锋区",
    "230205": "昂昂溪区",
    "230206": "富拉尔基区",
    "230207": "碾子山区",
    "230208": "梅里斯达斡尔族区",
    "230221": "龙江县",
    "230223": "依安县",
    "230224": "泰来县",
    "230225": "甘南县",
    "230227": "富裕县",
    "230229": "克山县",
    "230230": "克东县",
    "230231": "拜泉县",
    "230281": "讷河市"
  },
  "230300": {
    "230301": "市辖区",
    "230302": "鸡冠区",
    "230303": "恒山区",
    "230304": "滴道区",
    "230305": "梨树区",
    "230306": "城子河


 math.min(minValueX, x);
      maxValueX = math.max(maxValueX, x);
      minValueY = math.min(minValueY, y);
      maxValueY = math.max(maxValueY, y);
    }
    final double distance = thickness / 2.0;
    final double paintSpread = _getPaintSpread(paint);
    _paintBounds.growLTRB(
      minValueX - distance - paintSpread,
      minValueY - distance - paintSpread,
      maxValueX + distance + paintSpread,
      maxValueY + distance + paintSpread,
      command,
    );
  }

  int _saveCount = 1;
  int get saveCount => _saveCount;

  /// Prints the commands recorded by this canvas to the console.
  void debugDumpCommands() {
    print('${'/' * 40} CANVAS COMMANDS ${'/' * 40}');
    _commands.forEach(print);
    print('${'/' * 37} END OF CANVAS COMMANDS ${'/' * 36}');
  }
}

abstract class PaintCommand {
  const PaintCommand();

  void apply(EngineCanvas canvas);
}

/// A [PaintCommand] that affect pixels on the screen (unlike, for example, the
/// [SaveCommand]).
abstract class DrawCommand extends PaintCommand {
  /// Whether the command is completely clipped out of the picture.
  bool isClippedOut = false;

  /// The left bound of the graphic produced by this command in picture-global
  /// coordinates.
  double leftBound = double.negativeInfinity;

  /// The top bound of the graphic produced by this command in picture-global
  /// coordinates.
  double topBound = double.negativeInfinity;

  /// The right bound of the graphic produced by this command in picture-global
  /// coordinates.
  double rightBound = double.infinity;

  /// The bottom bound of the graphic produced by this command in
  /// picture-global coordinates.
  double bottomBound = double.infinity;

  /// Whether this command intersects with the [clipRect].
  bool isInvisible(ui.Rect clipRect) {
    if (isClippedOut) {
      return true;
    }

    // Check top and bottom first because vertical scrolling is more common
    // than horizontal scrolling.
    return bottomBound < clipRect.top ||
        topBound > clipRect.bottom ||
        rightBound < clipRect.left ||
        leftBound > clipRect.right;
  }
}

class PaintSave extends PaintCommand {
  const PaintSave();

  @override
  void apply(EngineCanvas canvas) {
    canvas.save();
  }

  @override
  String toString() {
    String result = super.toString();
    assert(() {
      result = 'save()';
      return true;
    }());
    return result;
  }
}

class PaintRestore extends PaintCommand {
  const PaintRestore();

  @override
  void apply(EngineCanvas canvas) {
    canvas.restore();
  }

  @override
  String toString() {
    String result = super.toString();
    assert(() {
      result = 'restore()';
      return true;
    }());
    return result;
  }
}

class PaintTranslate extends PaintCommand {
  PaintTranslate(this.dx, this.dy);

  final double dx;
  final double dy;

  @override
  void apply(EngineCanvas canvas) {
    canvas.translate(dx, dy);
  }

  @override
  String toString() {
    String result = super.toString();
    assert(() {
      result = 'translate($dx, $dy)';
      return true;
    }());
    return result;
  }
}

class PaintScale extends PaintCommand {
  PaintScale(this.sx, this.sy);

  final double sx;
  final double sy;

  @override
  void apply(EngineCanvas canvas) {
    canvas.scale(sx, sy);
  }

  @override
  String toString() {
    String result = super.toString();
    assert(() {
      result = 'scale($sx


, keys: string[])
    {
        for (let k of keys) {
            if (k in obj) {
                let v = obj[k];
                if (v != null && v.length > 0) {
                    return v;
                }
            }
        }
        return null;
    }
}

export type DefaultObject = {[key:string]: string};
import {Component} from '@angular/core';

@Component({
  selector: 'component-two',
  template: `

Guarded Component Two

Try navigating away (back to component one). It will be blocked unless "Can deactivate" checkbox is checked.

      Can deactivate:
      <input #candeactivate type="checkbox" (change)="checkboxChanged(candeactivate.checked)" />

    `
})
export default class ComponentTwo {
  constructor() {}
checked: boolean =false;
  canDeactivate() {
    return this.checked;
  }

  checkboxChanged(checked:boolean) {
    this.checked = checked;
  }
}import { NotesState } from './notes.state';
import * as notesActions from './notes.actions';

const initialState: NotesState = {
    subjects: [{}],
    codiUPC: ''
};

export function notesReducer(notesState = initialState, action: notesActions.actions) {
    switch (action.type) {
        case notesActions.SET_SUBJECT_LIST:
            const {subjects} = action.payload;
            return {...notesState, subjects};
        case notesActions.SET_CODI_UPC:
            const {codiUPC} = action.payload;
            return {...notesState, codiUPC};
        default:
            return notesState;

    }
}import { Consumer } from 'mediasoup/lib/Consumer';
import { Producer } from 'mediasoup/lib/Producer';
import { MediaKind, RtpCapabilities, RtpParameters } from 'mediasoup/lib/RtpParameters';
import { DtlsParameters, WebRtcTransport } from 'mediasoup/lib/WebRtcTransport';

export default class Peer {
  private readonly id: string;
  private readonly name: string;
  private transports: Map<string, WebRtcTransport>;
  private producers: Map<string, Producer>;
  private consumers: Map<string, Consumer>;

  constructor(socketId: string, name: string) {
    this.id = socketId;
    this.name = name;
    this.transports = new Map<string, WebRtcTransport>();
    this.consumers = new Map<string, Consumer>();
    this.producers = new Map<string, Producer>();
  }

  public addTransport(transport: WebRtcTransport): void {
    this.transports.set(transport.id, transport);
  }

  public async connectTransport(transportId: string, dtlsParameters: DtlsParameters): Promise<void> {
    if (!transportId) return;
    const transport = this.transports.get(transportId);
    if (transport) {
      await transport.connect({
        dtlsParameters,
      });
    }
  }

  public async createProducer(producerTransportId: string, rtpParameters: RtpParameters, kind: MediaKind): Promise<Producer | null> {
    const transport = this.transports.get(producerTransportId);
    if (!transport) return null;

    const producer: Producer = await transport.produce({
      kind,
      rtpParameters,
    });

    this.producers.set(producer.id, producer);

    producer.on('transportclose', () => {
      console.log(`---producer transport close--- name: ${this.name} consumerId: ${producer.id}`);
      producer.close();
      this.producers.delete(producer.id);
    });

    return producer;
  }

  public getProducers(): Map<string, Producer> {
    return this.p


impl<A: Proposition, B: Proposition, P: Proof<And<A, B>>> Proof<B> for PhantomData<P> {
    fn prove() -> Self { PhantomData }
}

// 蕴含消除规则 (modus ponens)
impl<A: Proposition, B: Proposition, P1: Proof<A>, P2: Proof<Implies<A, B>>> Proof<B>
    for (P1, P2) {
    fn prove() -> Self {
        (P1::prove(), P2::prove())
    }
}
```

### 7.2 计算过程与态射映射

下面的代码演示了如何使用Rust表达范畴论中的概念，并将其应用于计算过程：

```rust
// 使用Rust特性系统表达范畴论概念

// 定义态射概念
trait Morphism<A, B> {
    fn apply(&self, a: A) -> B;
}

// 定义恒等态射
struct Identity<A>(PhantomData<A>);

impl<A: Clone> Morphism<A, A> for Identity<A> {
    fn apply(&self, a: A) -> A {
        a
    }
}

// 定义态射组合
struct Compose<F, G, A, B, C> {
    f: F, // F: A -> B
    g: G, // G: B -> C
    _phantom: PhantomData<(A, B, C)>,
}

impl<A, B, C, F: Morphism<A, B>, G: Morphism<B, C>> Morphism<A, C>
    for Compose<F, G, A, B, C> {
    fn apply(&self, a: A) -> C {
        self.g.apply(self.f.apply(a))
    }
}

// 函子定义
trait Functor<F> {
    type Source;
    type Target;

    fn map<A, B, M: Morphism<A, B>>(
        &self,
        morphism: M
    ) -> impl Morphism<Self::Source, Self::Target>;
}

// 单子（Monad）定义
trait Monad<M> {
    fn unit<A>(a: A) -> M;
    fn bind<A, B, F: Fn(A) -> M>(m: M, f: F) -> M;
}

// 状态单子示例
struct State<S, A>(Box<dyn Fn(S) -> (A, S)>);

impl<S: Clone, A> State<S, A> {
    fn run(&self, s: S) -> (A, S) {
        (self.0)(s)
    }
}

impl<S: Clone + 'static> Monad<State<S, ()>> for State<S, ()> {
    fn unit<A: 'static>(a: A) -> State<S, A> {
        State(Box::new(move |s| (a.clone(), s)))
    }

    fn bind<A: 'static, B: 'static, F: Fn(A) -> State<S, B> + 'static>(
        m: State<S, A>,
        f: F
    ) -> State<S, B> {
        State(Box::new(move |s| {
            let (a, s1) = m.run(s);
            f(a).run(s1)
        }))
    }
}
```

### 7.3 认知建模与推理引擎

下面的代码实现了一个简单的认知架构，结合了形式逻辑与概率推理：

```rust
// 简化的认知架构实现
use std::collections::HashMap;

// 知识表征
enum Concept {
    Symbolic(String),
    Numeric(f64),
    Composite(Vec<Concept>),
    Relation(Box<Concept>, String, Box<Concept>),
}

// 信念状态
struct BeliefState {
    beliefs: HashMap<String, (Concept, f64)>, // 概念及其确信度
    inference_rules: Vec<InferenceRule>,
}

// 推理规则
struct InferenceRule {
    premises: Vec<String>,
    conclusion: String,
    confidence_function: Box<dyn Fn(Vec<f64>) -> f64>,
}

impl BeliefState {
    // 添加或更新信念
    fn update_belief(&mut self, name: &str, concept: Concept, confidence: f64) {
        sel


 trace back up the tree to find the first common
 * sibling group these two nodes have
 * And it will adjust the spacing between these two siblings so that the two
 * nodes no longer overlap.
 * This is nasty to calculate with , and takes a while with the current
 * algorithm I am using to do this.<p>
 *
 *
 * @author Malcolm Ware (mfw4@cs.waikato.ac.nz)
 * @version $Revision: 1.4 $
 */
public class PlaceNode2 implements NodePlace {
  /** The space each row will take up. */
  private double m_yRatio;

  /** An array that lists the groups and information about them. */
  private Group[] m_groups;

  /** An array that lists the levels and information about them. */
  private Level[] m_levels;

  /** The Number of groups the tree has */
  private int m_groupNum;

  /** The number of levels the group tree has */
  private int m_levelNum;

  /**
   * The Funtion to call to have the nodes arranged.
   *
   * @param r The top node of the tree to arrange.
   */
  public void place(Node r) {
    //note i might write count groups into the node class as well as
    //it may be useful too;

    m_groupNum = Node.getGCount(r,0); //i could swap over to the node class
    //group count,but this works os i'm not gonna
    m_groups = new Group[m_groupNum];

    for (int noa = 0;noa < m_groupNum;noa++) {
      m_groups[noa] = new Group();
      m_groups[noa].m_gap = 3;
      m_groups[noa].m_start = -1;
    }

    groupBuild(r);
    m_levelNum = Node.getHeight(r,0);
    m_yRatio = 1 / (double)(m_levelNum + 1);

    m_levels = new Level[m_levelNum];

    for (int noa = 0;noa < m_levelNum;noa++) {
      m_levels[noa] = new Level();
    }
    r.setTop(m_yRatio);
    yPlacer();
    r.setCenter(0);
    xPlacer(0);

    //ok now i just have to untangle then scale down
    //note instead of starting with coords between 1 and 0 i will
    //use ints then scale them down
    //i will scale them down either by all relative to the largest
    //line or by each line individually

    untangle2();

    scaleByMax();
    //scaleByInd();
  }

  /*
  private void thinner()
  {
    //what this function does is it retains the symmetry of the
     // parent node about the children but the children are no longer evenly
      //spaced this stops children from being pushed too far to the sides
      //,note this algorithm may need the method altered as it may
     // require heavy optimisation to go at any decent speed

    Node r,s;
    Edge e;
    double parent_x;
    for (int noa = group_num - 1;noa >= 0;noa--)
      {
	Vector shifts = new Vector(20,10);
	shifts.addElement(0);
	int g_num = 0;//this is the offset from groups.m_start to get the right 1
	r = groups[noa].m_p;
	parent_x = r.getCenter();
	for (int nob = 1;(e = r.getChild(nob)) != null;nob++)
	  {
	    double margin;
	    s = e.getTarget();
	    margin = s_getCenter - r.getChild(nob - 1).getTarget().getCenter-1
	             - shift.elementAt(nob-1);
	    if (ma


simple_list = [1, 2, 3, 4]
simple_list.extend([5, 6, 7])
print(simple_list)
del simple_list[0]
del simple_list[0]
print(simple_list)

d = {"name": "Max"}
print(d.items())

for k, v in d.items():
    print(k, v)
del d["name"]
print(d)

t = (1, 2, 3)
print(t.index(1))
# del(t[0]) this not work tuples are immutable

s = {"Max", "Anna", "Max"}
# del(s['Max']) this now work for sets
print(s)


 struct EXTI {
    _marker: PhantomData<*const ()>,
}
unsafe impl Send for EXTI {}
impl EXTI {
    #[doc = r" Returns a pointer to the register block"]
    pub fn ptr() -> *const exti::RegisterBlock {
        1073808384 as *const _
    }
}
impl Deref for EXTI {
    type Target = exti::RegisterBlock;
    fn deref(&self) -> &exti::RegisterBlock {
        unsafe { &*EXTI::ptr() }
    }
}
#[doc = "External interrupt/event controller"]
pub mod exti;
#[doc = "Voltage reference buffer"]
pub struct VREF {
    _marker: PhantomData<*const ()>,
}
unsafe impl Send for VREF {}
impl VREF {
    #[doc = r" Returns a pointer to the register block"]
    pub fn ptr() -> *const vref::RegisterBlock {
        1073807408 as *const _
    }
}
impl Deref for VREF {
    type Target = vref::RegisterBlock;
    fn deref(&self) -> &vref::RegisterBlock {
        unsafe { &*VREF::ptr() }
    }
}
#[doc = "Voltage reference buffer"]
pub mod vref;
#[doc = "Controller area network"]
pub struct CAN {
    _marker: PhantomData<*const ()>,
}
unsafe impl Send for CAN {}
impl CAN {
    #[doc = r" Returns a pointer to the register block"]
    pub fn ptr() -> *const can::RegisterBlock {
        1073767424 as *const _
    }
}
impl Deref for CAN {
    type Target = can::RegisterBlock;
    fn deref(&self) -> &can::RegisterBlock {
        unsafe { &*CAN::ptr() }
    }
}
#[doc = "Controller area network"]
pub mod can;
#[doc = "Real-time clock"]
pub struct RTC {
    _marker: PhantomData<*const ()>,
}
unsafe impl Send for RTC {}
impl RTC {
    #[doc = r" Returns a pointer to the register block"]
    pub fn ptr() -> *const rtc::RegisterBlock {
        1073752064 as *const _
    }
}
impl Deref for RTC {
    type Target = rtc::RegisterBlock;
    fn deref(&self) -> &rtc::RegisterBlock {
        unsafe { &*RTC::ptr() }
    }
}
#[doc = "Real-time clock"]
pub mod rtc;
#[doc = "USB on the go full speed"]
pub struct OTG_FS_GLOBAL {
    _marker: PhantomData<*const ()>,
}
unsafe impl Send for OTG_FS_GLOBAL {}
impl OTG_FS_GLOBAL {
    #[doc = r" Returns a pointer to the register block"]
    pub fn ptr() -> *const otg_fs_global::RegisterBlock {
        1342177280 as *const _
    }
}
impl Deref for OTG_FS_GLOBAL {
    type Target = otg_fs_global::RegisterBlock;
    fn deref(&self) -> &otg_fs_global::RegisterBlock {
        unsafe { &*OTG_FS_GLOBAL::ptr() }
    }
}
#[doc = "USB on the go full speed"]
pub mod otg_fs_global;
#[doc = "USB on the go full speed"]
pub struct OTG_FS_HOST {
    _marker: PhantomData<*const ()>,
}
unsafe impl Send for OTG_FS_HOST {}
impl OTG_FS_HOST {
    #[doc = r" Returns a pointer to the register block"]
    pub fn ptr() -> *const otg_fs_host::RegisterBlock {
        1342178304 as *const _
    }


ocks = 2;

	/// Choose if references should be added to SUBs
	public addReferencesToSubroutines = true;

	/// Choose if references should be added to LBLs
	public addReferencesToAbsoluteLabels = true;

	/// Choose if references should be added to RST labels
	public addReferencesToRstLabels = true;

	/// Choose if references should be added to DATA labels
	public addReferencesToDataLabels = true;

	/// Choose to add the opcode bytes also, e.g. "CB 01" for "RLC C"
	public addOpcodeBytes = true;

	/// Label prefixes
	public labelSubPrefix = "SUB";
	public labelLblPrefix = "LBL";
	public labelRstPrefix = "RST";
	public labelDataLblPrefix = "DATA";
	public labelSelfModifyingPrefix = "SELF_MOD";	// I guess this is not used anymore if DATA_LBL priority is below CODE_LBLs
	public labelLocalLabelPrefix = "_l";
	public labelLoopPrefix = "_loop";

	public labelIntrptPrefix = "INTRPT";

	/// If set the disassemble will automatically add address 0 or the SNA address to the labels.
	public automaticAddresses = true;

	/// Column areas. e.g. area for the bytes shown before each command
	public clmnsAddress = 5;		///< size for the address at the beginning of each line. If 0 no address is shown.
	public clmnsBytes = 4 * 3 + 1;	///< 4* length of hex-byte
	public clmnsOpcodeFirstPart = 4 + 1;	///< First part of the opcodes, e.g. "LD" in "LD A,7"
	public clmsnOpcodeTotal = 5 + 6 + 1;		///< Total length of the opcodes. After this an optional comment may start.

	// Dot format options for the node. E.g. "${label}\n${address}\nCC=${CC}\nSize=${size}\ninstr=${instructions}\n"
	public dotFormatString = "rankdir=TB;";	// Graph direction

	// Dot format options for the node. E.g. "${label}\n${address}\nCC=${CC}\nSize=${size}\ninstr=${instructions}\n"
	public nodeFormatString = "${label}\\n0x${address}\\nSize=${size}\\n";

	/// RST addresses that shouldn't be followed on a disassembly.
	/// Note: It can happen that code around ORG 0000h has to be disassembled.
	/// But at the same time the ESXDOS RST 8 is used for file handling.
	/// This is a hardwired RST. It does not exist in ROM.
	/// RST addresses that appear in this list will not be followed/disassembled.
	public rstDontFollowAddresses = new Array<number>();

	/// An array that either contains label names or addresses,
	/// but both as string. If defined only the labels inside this
	/// list are used for the dot graphics.
	public graphLabels = new Array<string | number>();

	/// The disassembled lines.
	protected disassembledLines: Array<string>;

	// The SNA start address.
	protected snaStartAddress = -1;

	/// Used to prohibit that empty lines are written more than once.
	protected emptyLinesWritten = false;

	/// For debugging:
	protected DBG_COLLECT_LABELS = false;	//true;

	/// Add decimal conversion to addresses (at beginning of line)
	protected DBG_ADD_DEC_ADDRESS = false; //true;

	// Warnings

	/// true = disable warning when trying to disassemble unassigned memory.
	/// will be set to true automatically if SNA has been selected.
	protected no_warning_disassemble_unassigned_memory = false;

	// For DeZog. Used to turn off any comments in the disassembled text.
	public disableCommentsInDisassembly = false;

	/**
	 * Initializes the Opcode formatting.
	 */
	constructor() {
		super();
		this.initLabels();
		Opcode.setConvertToLabelHandler(value => {
			let valueName;
			let label;
			let offsString = '';
			if (this.labels)
				label = this.labels.get(value);
			if (!label) {
				// Check for offset label
				const offs = this.offsetLabels.get(value);
				if (offs) {
					label = this


6.5 1.4.6 1.7H225c-4.6-13.9-11.4-27.7-11.4-34.1 0-2.2.3-5.1 1.1-8.2-8.8 10.8-14 15.9-14 25 0 7.5 10.4 28.3 10.4 33.3 0 1.7-.5 3.3-1.4 4.9-9.6-12.7-15.5-20.7-18.8-20.7h-12l-11.2-28c-3.8-9.6-5.7-16-5.7-18.8 0-3.8.5-7.7 1.7-12.2-1 1.3-3.7 4.7-5.5 7.1-.8-2.1-3.1-7.7-4.6-11.5-2.1 2.5-7.5 9.1-11.2 13.6.9 2.3 3.3 8.1 4.9 12.2-2.5 3.3-9.1 11.8-13.6 17.7-4 5.3-5.8 13.3-2.7 21.8 2.5 6.7 2 7.9-1.7 14.1H191c5.5 0 14.3 14 15.5 22 13.2-16 15.4-19.6 16.8-21.6h107c3.9 0 7.2-1.9 9.9-5.8zm20.1-26.6V181.7c-9 12.5-15.9 18.6-20.7 18.6 7.1 14.4 10.7 23.9 10.7 28.3v66.3c0 17.5 8.6 20.4 24 20.4 8.1 0 12.5-.8 13.7-2.7-4.3-1.6-7.6-2.5-9.9-3.3-8.1-3.2-17.8-7.4-17.8-26z"],vaadin:[448,512,[],"f408","M224.5 140.7c1.5-17.6 4.9-52.7 49.8-52.7h98.6c20.7 0 32.1-7.8 32.1-21.6V54.1c0-12.2 9.3-22.1 21.5-22.1S448 41.9 448 54.1v36.5c0 42.9-21.5 62-66.8 62H280.7c-30.1 0-33 14.7-33 27.1 0 1.3-.1 2.5-.2 3.7-.7 12.3-10.9 22.2-23.4 22.2s-22.7-9.8-23.4-22.2c-.1-1.2-.2-2.4-.2-3.7 0-12.3-3-27.1-33-27.1H66.8c-45.3 0-66.8-19.1-66.8-62V54.1C0 41.9 9.4 32 21.6 32s21.5 9.9 21.5 22.1v12.3C43.1 80.2 54.5 88 75.2 88h98.6c44.8 0 48.3 35.1 49.8 52.7h.9zM224 456c11.5 0 21.4-7 25.7-16.3 1.1-1.8 97.1-169.6 98.2-171.4 11.9-19.6-3.2-44.3-27.2-44.3-13.9 0-23.3 6.4-29.8 20.3L224 362l-66.9-117.7c-6.4-13.9-15.9-20.3-29.8-20.3-24 0-39.1 24.6-27.2 44.3 1.1 1.9 97.1 169.6 98.2 171.4 4.3 9.


  "verse_number": 152,
    "content":
        "অবশ্য যারা গোবৎসকে উপাস্য বানিয়ে নিয়েছে, তাদের উপর তাদের পরওয়ারদেগারের পক্ষ থেকে পার্থিব এ জীবনেই গযব ও লাঞ্জনা এসে পড়বে। এমনি আমি অপবাদ আরোপকারীদেরকে শাস্তি দিয়ে থাকি।"
  },
  {
    "surah_number": 7,
    "verse_number": 153,
    "content":
        "আর যারা মন্দ কাজ করে, তারপরে তওবা করে নেয় এবং ঈমান নিয়ে আসে, তবে নিশ্চয়ই তোমার পরওয়ারদেগার তওবার পর অবশ্য ক্ষমাকারী, করুণাময়।"
  },
  {
    "surah_number": 7,
    "verse_number": 154,
    "content":
        "তারপর যখন মূসার রাগ পড়ে গেল, তখন তিনি তখতীগুলো তুলে নিলেন। আর যা কিছু তাতে লেখা ছিল, তা ছিল সে সমস্ত লোকের জন্য হেদায়েত ও রহমত যারা নিজেদের পরওয়ারদেগারকে ভয় করে।"
  },
  {
    "surah_number": 7,
    "verse_number": 155,
    "content":
        "আর মূসা বেছে নিলেন নিজের সম্প্রদায় থেকে সত্তর জন লোক আমার প্রতিশ্রুত সময়ের জন্য। তারপর যখন তাদেরকে ভূমিকম্প পাকড়াও করল, তখন বললেন, হে আমার পরওয়ারদে�


 macro expands to one more than its argument.

Usage

			BOOST_PP_INC(x)

Arguments

x

				The value to be incremented.
				Valid values range from 0 to BOOST_PP_LIMIT_MAG.

Remarks

			If x is BOOST_PP_LIMIT_MAG, the result is saturated to BOOST_PP_LIMIT_MAG.

See Also

BOOST_PP_DEC

BOOST_PP_LIMIT_MAG

Requirements

			Header:  <boost/preprocessor/arithmetic/inc.hpp>

Sample Code

#include <boost/preprocessor/arithmetic/inc.hpp>

BOOST_PP_INC(BOOST_PP_INC(6)) // expands to 8
BOOST_PP_INC(4) // expands to 5

		 Copyright Housemarque Oy 2002

 Copyright Paul Mensonides 2002

Distributed under the Boost Software License, Version 1.0. (See
		accompanying file LICENSE_1_0.txt or
		copy at www.boost.org/LICENSE_1_0.txt)

	<title>motivation.html</title>
	<link rel="stylesheet" type="text/css" href="../styles.css">

Motivation

	The C++ function and template parameter lists are special syntactic constructs, and it is impossible to directly
	manipulate or generate them using C++ constructs.
	This leads to unnecessary code repetition.

	Consider the implementation of the is_function<> metafunction is Boost.
	The implementation uses an overloaded is_function_tester() function that is used for testing if a type is convertible
	to a pointer to a function.
	Because of the special treatment of parameter lists, it is not possible to directly match a function with an arbitrary parameter list.
	Instead, the is_function_tester() must be overloaded for every distinct number of parameters that is to be supported.
	For example:

template<class R>
yes_type is_function_tester(R (*)());

template<class R, class A0>
yes_type is_function_tester(R (*)(A0));

template<class R, class A0, class A1>
yes_type is_function_tester(R (*)(A0, A1));

template<class R, class A0, class A1, class A2>
yes_type is_function_tester(R (*)(A0, A1, A2));

// ...

	The need for this kind of repetition occurs particularly frequently while implementing generic components or metaprogramming facilities,
	bu


ml.setWidth(width);
        },

        /**
         * Returns the measured width of the specified text
         * @param {String} text The text to measure
         * @return {Number} width The width in pixels
         */
        getWidth : function(text){
            ml.dom.style.width = 'auto';
            return this.getSize(text).width;
        },

        /**
         * Returns the measured height of the specified text.  For multiline text, be sure to call
         * {@link #setFixedWidth} if necessary.
         * @param {String} text The text to measure
         * @return {Number} height The height in pixels
         */
        getHeight : function(text){
            return this.getSize(text).height;
        }
    };

    instance.bind(bindTo);

    return instance;
};

Ext.Element.addMethods({
    /**
     * Returns the width in pixels of the passed text, or the width of the text in this Element.
     * @param {String} text The text to measure. Defaults to the innerHTML of the element.
     * @param {Number} min (Optional) The minumum value to return.
     * @param {Number} max (Optional) The maximum value to return.
     * @return {Number} The text width in pixels.
     * @member Ext.Element getTextWidth
     */
    getTextWidth : function(text, min, max){
        return (Ext.util.TextMetrics.measure(this.dom, Ext.value(text, this.dom.innerHTML, true)).width).constrain(min || 0, max || 1000000);
    }
});
/**
 * @class Ext.util.Cookies
 * Utility class for managing and interacting with cookies.
 * @singleton
 */
Ext.util.Cookies = {
    /**
     * Create a cookie with the specified name and value. Additional settings
     * for the cookie may be optionally specified (for example: expiration,
     * access restriction, SSL).
     * @param {Object} name
     * @param {Object} value
     * @param {Object} expires (Optional) Specify an expiration date the
     * cookie is to persist until.  Note that the specified Date object will
     * be converted to Greenwich Mean Time (GMT).
     * @param {String} path (Optional) Setting a path on the cookie restricts
     * access to pages that match that path. Defaults to all pages (<tt>'/'</tt>).
     * @param {String} domain (Optional) Setting a domain restricts access to
     * pages on a given domain (typically used to allow cookie access across
     * subdomains). For example, "extjs.com" will create a cookie that can be
     * accessed from any subdomain of extjs.com, including www.extjs.com,
     * support.extjs.com, etc.
     * @param {Boolean} secure (Optional) Specify true to indicate that the cookie
     * should only be accessible via SSL on a page using the HTTPS protocol.
     * Defaults to <tt>false</tt>. Note that this will only work if the page
     * calling this code uses the HTTPS protocol, otherwise the cookie will be
     * created with default options.
     */
    set : function(name, value){
        var argv = arguments;
        var argc = arguments.length;
        var expires = (argc > 2) ? argv[2] : null;
        var path = (argc > 3) ? argv[3] : '/';
        var domain = (argc > 4) ? argv[4] : null;
        var secure = (argc > 5) ? argv[5] : false;
        document.cookie = name + "=" + escape(value) + ((expires === null) ? "" : ("; expires=" + expires.toGMTString())) + ((path === null) ? "" : ("; path=" + path)) + ((domain === null) ? "" : ("; domain=" + domain)) + ((secure === true) ? "; secure" : "");
    },

    /**
     * Retrieves cookies that are accessible by the current page. If a cookie
     * does not exist, get() returns <tt>nu


ByeQmXUxtywsimEAMEbZ4Av4ZPBg+mFjWj7XfRBgvswoyg0cW4Slo8Uq36h0dfnzdfBcWQ+g3AG2JBLa+TVMQOvwV1o+U/BsWfej3AW2BkY/lFVvoLVa3iuToSMul+CZPt0jcAeCnXpmSlQFfkudHH6txzwgbRN4ZuebKy8I7aS+5Of7dLc6HiB8HUhPqeXEpbpMAVTRERuxVwybAS+e2ajFkx+RNwDfooODJfZ7z1fe0m8dNW+ZnI55ehNxgfFXF6z266ht8TPCSKDgpYs4eXlRgn+sRRNc4shxPSSnMOktY72SgxRBhSOB8LRYxt4va69I2yS/JJ6UP8QwNlGX37uvlCQoaCNOCdwG/hG4TcTx8Ya86LHbGmuskYd/Ae3l6sVHxQeqAAAAAElFTkSuQmCC");
    --hfm-bc: var(--pink9);

    --lpcol: rgb(192, 59, 192);
    --lb-bg: rgb(247, 217, 248);
    --lpgif: url("https://github.com/Emrie-Candera/Bubble-Space-Theme/blob/main/theme%20image/cute%20pupper.gif?raw=true");

}

/* @ COTTON CANDY PINK E: Plugins*/
.theme-light.cc-pink {
    --adico: rgb(107, 12, 86);
    --adshad: rgba(228, 173, 230, 0.795);

    --fico: rgb(136, 22, 88);
    --subfico: rgb(192, 51, 173);

    --calcol: var(--pink2);
    --calshad: 1px 0px 15px 1px rgb(235, 135, 222);
    --calbor: rgb(235, 135, 235) solid 2px;
    --calbg: white;

    --dpline: var(--pink4);
    --dpdot: var(--pink5);
    --dptitle: var(--pink5);
    --dpnow: var(--pink8);
    --dphov: var(--pink12);
    --dpshad: 0px 0px 52px -18px rgba(102, 18, 91, 0.75);

    --dp1: #ebc5e0;
    --dp2: #f1bfe3;
    --dp3: #F8CAEC;
    --dp4: #F6BFE8;
    --dp5: #F5B3E4;
    --dp6: #F4A8E1;
    --dp7: #F39CDD;
    --dp8: #F191D9;
    --dp9: #F095D6;
    --dp10: #d374bb;

    --checkcol2: rgb(233, 139, 236);
    --chbg: rgb(241, 217, 243);

    --ss-1: blue;
    --ss-2: pink;
    --ss-3: purple;

    --msbg: var(--pink13);
}

/* ~~~~~~~~~~~~~~~~~~ BCP B: MINT GREEN  ~~~~~~~~~~~~~~~~~~ */
/* @ MINT GREEN A: GENERAL COLORS */
.theme-light.mint-green {
    --background-primary: var(--green1);
    --background-secondary: rgb(204, 243, 220);;
    --background-secondary-alt: var(--green1);
    --background-modifier-border: var(--green3);

    --text-accent: var(--green8);
    --text-accent-hover: var(--gre


// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System;
using System.Threading;
using Xunit;

public class Beta
{
	[Fact]
	public static int TestEntryPoint()
	{
    		int rValue = 100;
		Console.WriteLine("Setup an Infinite Wait with negative value other than -1");
    		Console.WriteLine("This can't be done on WaitAny and WaitAll");
		WaitHandle Waiter;
		Waiter = (WaitHandle) new AutoResetEvent(false);

		try{
			Waiter.WaitOne(-2);
			C


to testdata/0001.zip
download: s3://sensor3/rev1/0004.zip to testdata/0004.zip
download: s3://sensor3/rev1/0003.zip to testdata/0003.zip
download: s3://sensor3/rev1/0002.zip to testdata/0002.zip
```

!!! note
    次回にこのコマンドラインを実行した際、バケットに入っているデータが更新されていても、サイズが全く同じ場合は再取得の対象となりません。その場合、--exact-timestamps オプションをつけることで対象とすることができますが、ABCI環境の場合はこのオプションを指定すると、すべてのオブジェクトが再取得の対象となります。

### オブジェクトの削除

オブジェクトの削除は `aws s3 rm <S3Uri> [parameters]` で行います。

実行例
```
[username@es1 ~]$ aws --endpoint-url https://s3.abci.ai s3 rm s3://mybucket/readme.txt
delete: s3://mybucket/readme.txt
```

--recursive パラメータを使うことで、指定のプレフィックス以下のオブジェクトを削除できます。
```
[username@es1 ~]$ aws --endpoint-url https://s3.abci.ai s3 ls s3://mybucket --recursive
2019-07-30 20:46:53         32 a.txt
2019-07-30 20:46:53         32 b.txt
2019-07-31 14:51:50        512 xml/c.xml
2019-07-31 14:51:54        512 xml/d.xml
[username@es1 ~]$ aws --endpoint-url https://s3.abci.ai s3 rm s3://mybucket/xml --recursive
delete: s3://mybucket/xml/c.xml
delete: s3://mybucket/xml/d.xml
[username@es1 ~]$ aws --endpoint-url https://s3.abci.ai s3 ls s3://mybucket --recursive
2019-07-30 20:46:53         32 a.txt
2019-07-30 20:46:53         32 b.txt
```

### バケットの削除

dataset-c0541 バケットを削除する例です。
```
[username@es1 ~]$ aws --endpoint-url https://s3.abci.ai s3 rb s3://dataset-c0541
remove_bucket: dataset-c0541
```

空でないバケットを削除しようとするとエラーが返されますが、中身も全部消してしまって良ければ --force をつけると中身を消した上でバケットを削除してくれます。
```
[username@es1 ~]$ aws --endpoint-url https://s3.abci.ai rb s3://dataset-c0542 --force
delete: s3://dataset-c0542/0001.jpg
delete: s3://dataset-c0542/0002.jpg
delete: s3://dataset-c0542/0003.jpg
delete: s3://dataset-c0542/0004.jpg
remove_bucket: dataset-c0542
```

### オブジェクトの所有者の確認

オブジェクトの所有者は、`s3api get-object-acl`コマンドで確認することができます。以下の例のようにオブジェクトを格納するバケットを BUCKET、オブジェクトの名前を OBJECT として、Owner で示される ABCIGROUP がオブジェクトを所有していることがわかります。
```
[username@es1 ~]$ aws --endpoint-url https


this.spriteSheet = new SpriteSheet(this.getSpriteSheetSettings());
		}

		return this.spriteSheet;
	}

	static getSpriteSheetSettings() {
		const gridSize = new Coord({ x: 4, y: 2 });
		const spriteSettings = [];
		for (let i = 0; i < gridSize.x * gridSize.y; ++i) {
			spriteSettings.push({
				name: i.toString(),
				sheetPosition: new Coord({
					x: i % gridSize.x,
					y: Math.floor(i / gridSize.x),
				}),
				sheetSize: new Coord({ x: 1, y: 1 }),
			});
		}

		return {
			imageFileName: "slates.jpg",
			gridSize,
			spriteSettings,
		};
	}

	getWidth() {
		return this.context.canvas.width / window.devicePixelRatio;
	}

	getHeight() {
		return this.context.canvas.height / window.devicePixelRatio;
	}

	loadSprites() {
		// TODO: This is really ugly.
		return Promise.all([
			PieceSprite.getSpriteSheet().loadImage(),
			UnlockingEffect.getSpriteSheet().loadImage(),
			AvatarOwl.getSpriteSheet().loadImage(),
			AvatarAztecJade.getSpriteSheet().loadImage(),
			AvatarMonolith.getSpriteSheet().loadImage(),
			App.getSpriteSheet().loadImage(),
		]);
	}

	async startGame() {
		// Set up input.

		// I need to listen to keyup as well, so I can ignore repeated
		// keydown events from holding the key.
		window.addEventListener(
			"keyup",
			_event => {
				this.keydownEventInProgress = undefined;
			},
			false,
		);

		window.addEventListener(
			"keydown",
			event => {
				if (this.keydownEventInProgress !== event.keyCode) {
					this.gameMode.onKeyDown(event.keyCode);
				}

				this.keydownEventInProgress = event.keyCode;
			},
			false,
		);

		// Set up the server connection.
		// var socket = io.connect("//"); // The root at the same domain and protocol.
		// socket.on("opponent broadcast", function (data) {

		// 	console.log(data);

		// 	if (data.opponentID != this.board.ID) {

		// 		this.opponentBoards[data.opponentID][data.action]();
		// 	}
		// });

		await this.loadSprites();

		// Set up the renderer.
		await this.startRenderLoop();
	}

	async startRenderLoop() {
		const requestAnimFrame = () =>
			new Promise<number>(resolve => {
				(window.requestAnimationFrame ||
					(window as any).webkitRequestAnimationFrame ||
					(window as any).mozRequestAnimationFrame ||
					(window as any).oRequestAnimationFrame ||
					(window as any).msRequestAnimationFrame ||
					(callback => {
						window.setTimeout(callback, 1000 / 60, new Date().getTime());
					}))(resolve);
			});

		// Start the loop.
		for (;;) {
			const currentTime = await requestAnimFrame();

			// Calculate delta time. Cap it to make debugging easier.
			const deltaTime = Math.min(currentTime - this.lastRenderTime, 100);
			this.lastRenderTime = currentTime;

			const done = this.gameMode.frameCoroutine.next(deltaTime).done;
			this.render();

			// Restart the game after game over.
			if (done) {
				// TODO
				// console.log("Game Over");
			}
		}
	}

	render() {
		// Draw the board background.
		this.context.fillStyle = "rgba(0, 0, 0, 1


B<Ainv<Finv<dynamic>, dynamic>>> target3 = fsource3;

  B<AcovBound> source4;
  var fsource4 = toF(source4);
  F<B<AcovBound<FcovBound<num>, num>>> target4 = fsource4;

  B<AconBound> source5;
  var fsource5 = toF(source5);
  F<B<AconBound<FconBound<Null>, num>>> target5 = fsource5;

  B<AinvBound> source6;
  var fsource6 = toF(source6);
  F<B<AinvBound<FinvBound<num>, num>>> target6 = fsource6;

  B<AcovCyclicBound> source7;
  var fsource7 = toF(source7);
  F<B<AcovCyclicBound<FcovCyclicBound<A<dynamic>>, A<dynamic>>>> target7 =
      fsource7;

  B<AconCyclicBound> source8;
  var fsource8 = toF(source8);
  F<B<AconCyclicBound<FconCyclicBound<Null>, A<dynamic>>>> target8 = fsource8;

  B<AinvCyclicBound> source9; //# 03: compile-time error
  // var fsource9 = toF(source9);
  // F<B<AinvCyclicBound<FinvCyclicBound<A<dynamic>>, A<dynamic>>>> target9 =
  //    fsource9;

  B<AcovCyclicCoBound> source10;
  var fsource10 = toF(source10);
  F<B<AcovCyclicCoBound<FcovCyclicCoBound<Function(Null)>, Function(Null)>>>
      target10 = fsource10;

  B<AconCyclicCoBound> source11;
  var fsource11 = toF(source11);
  F<B<AconCyclicCoBound<FconCyclicCoBound<Null>, Function(Null)>>> target11 =
      fsource11;

  B<AinvCyclicCoBound> source12; //# 04: compile-time error
  // var fsource12 = toF(source12);
  // F<B<AinvCyclicCoBound<FinvCyclicCoBound<Function(Null)>, Function(Null)>>>
  //     target12 = fsource12;
}

main() {
  testTypeAliasAsTypeArgument();
  testNested();
}
// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// @dart=2.9

/*@testedFeatures=checks*/
library test;

void expectTypeError(void callback()) {
  try {
    callback();
    throw 'Expected TypeError, did not occur';
  } on TypeError {}
}

void expect(Object value, Object expected) {
  if (value != expected) {
    throw 'Expected $expected, got $value';
  }
}

class C<T> {
  C(this.plusResult);
  final num Function(T) plusResult;
  num Function(T) operator +(int i) => plusResult;
}

class D {
  D(this.getValue);
  final C<num> getValue;
  C<num> get value => getValue;
  int Function(int) setValue;
  void set value(int Function(int) value) {
    setValue = value;
  }
}

int numToInt(num n) => 1;

num numToNum(num n) => 2;

void main() {
  // d.value += 1 desugars to:
  //   d.value = (c.operator+(1) as (num)->num) as (int)->int
  // So it should be ok for c.operator+(1) to return this type:
  //   (num)->int
  // But not this one:
  //   (num)->num
  D d = new D(new C(numToInt));
  d.value /*@checkReturn=(num*) ->* num**/ += 1;
  expect(d.setValue(0), 1);
  d = new D(new


.96,
					0
				}
			}
		},
		smoke = {
			{
				50,
				{
					{
						"smoke",
						{
							-0.39,
							2.2,
							0
						}
					}
				}
			}
		}
	},
	[202081] = {
		ship_group = 20208,
		name = "이중생활?",
		bg_sp = "",
		group_index = 1,
		illustrator2 = -1,
		desc = "…에이전트의 신분을 들켜버렸나요. 어쩔 수 없군요. 주인님은 여기서 죽어주셔야겠습니다…ㅡㅡ당연히 농담이에요. 그저 취미일 뿐이랍니다.",
		bullet_skin_secondary = "",
		bullet_skin_main = "",
		painting = "xiefeierde_2",
		air_bullet_skin = "",
		shop_type_id = 0,
		hand_id = 13,
		bgm = "",
		lip_smoothing = 0,
		l2d_animations = "",
		bg = "",
		skin_type = 0,
		id = 202081,
		voice_actor_2 = -1,
		air_torpedo_skin = "",
		prefab = "xiefeierde_2",
		l2d_se = "",
		aircraft_skin = "",
		main_UI_FX = "",
		shop_id = 70142,
		voice_actor = 88,
		air_bomb_skin = "",
		illustrator = 20,
		rarity_bg = "",
		l2d_para_range = "",
		lip_sync_gain = 0,
		show_skin = "stand",
		l2d_voice_calibrate = "",
		tag = {},
		live2d_offset = {
			0,
			0,
			0
		},
		fx_container = {
			{
				0,
				1.99185,
				1.15
			},
			{
				0,
				0,
				0
			},
			{
				0,
				0.75,
				-1.299
			},
			{
				0,
				0,
				0
			}
		},
		bound_bone = {
			cannon = {
				{
					0.85,
					1.26,
					0
				}
			},
			vicegun = {
				{
					0.73,
					1.29,
					0
				}
			},
			torpedo = {
				{
					0.21,
					0.11,
					0
				}
			},
			antiaircraft = {
				{
					0.84,
					1.3,
					0
				}
			}
		},
		smoke = {
			{
				50,
				{
					{
						"smoke",
						{
							-0.39,
							2.2,
							0
						}
					}
				}
			}
		}
	},
	[202082] = {
		ship_group = 20208,
		name = "잠깐의 휴식",
		bg_sp = "1102",
		group_index = 2,
		illustrator2 = -1,
		desc = "이것이 사쿠라 엠파이어의 축제… 굉장히 떠들썩하군요. 사람이 이렇게 많으니 끝난 뒤 뒷정리도 큰일이겠습니다. …이렇게 말은 했지만 저도 축제를 즐기고 있습니다. 무슨 문제라도? ",
		bullet_skin_secondary = "",
		bullet_skin_main = "",
		painting = "xiefeierde_3",
		air_bullet_skin


dle;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.LinkedList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private Toolbar mToolbar;
    private SmartisanRefreshableLayout mSmartisanRefreshableLayout;
    private ListView mListView;

    private int mRefreshCount =0;

    private LinkedList<String> mStringList;
    private ViewHolderAdapter mViewHolderAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mToolbar = (Toolbar) findViewById(R.id.toolBar);
        mToolbar.setTitle("");
        setSupportActionBar(mToolbar);

        mSmartisanRefreshableLayout = (SmartisanRefreshableLayout) findViewById(R.id.refreshable_view);
        mSmartisanRefreshableLayout.setOnRefreshListener(new SmartisanRefreshableLayout.PullToRefreshListener() {
            @Override
            public void onRefresh() {
                try {
                    Thread.sleep(1500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onRefreshFinished() {
                mSmartisanRefreshableLayout.finishRefreshing();
                mViewHolderAdapter.addToListHead((mRefreshCount++)+" 喜欢的话，可以在github上赏我一颗star");
            }
        });

        mStringList = new LinkedList<>();
        mStringList.add("“锤子下拉”，东半球最优雅的下拉控件");
        mStringList.add("https://github.com/hougr/SmartisanPull");
        mStringList.add("模仿“锤子阅读”的下拉效果");
        mStringList.add("仅供学习交流，请勿用于商业用途。");
        mStringList.add("----------分隔线----------");
        mStringList.add("下面是我做的过程中觉得有意思的地方：");
        mStringList.add("（下面把“可刷新”的最小距离叫刷新距离）");
        mStringList.add("1、下拉时先把item0上面的分隔线滚动出来，");
        mStringList.add("   该分隔线在下拉过程中一直显示，");
        mStringList.add("   直到header完全消失，它才重新藏起来");
        mStringList.add("2、到达刷新距离前，提示语逐渐清晰");
        mStringList.add("3、到达刷新距离时，两圆弧刚好各转半圈，");
        mStringList.add("   两圆弧间的两个缺口处于同一水平线");
        mStringList.add("4、刷新距离以下，摩擦系数越来越大");
        mStringList.add("5、如果手指向上返回，动画逐渐回到原始状态");
        mStringList.add("6、两圆弧的旋转始终是平滑的，只有速度变化");
        mStringList.add("7、最后，两圆弧逐渐过渡成线段，消失在两端");
        mStringList.add("喜欢的话，可以在github上赏我一颗star");

        mListView = (ListView) findViewById(R.id.list_view);
        mViewHolderAdapter = new ViewHolderAdapter(getApplicationContext(),mStringList);
        mListView.setAdapter(mViewHolderAdapter);
    }

    private class ViewHolderAdapter extends BaseAdapter {
        public List<String> mItemStringList;
        public


_initial(allow_classical, create_all_qubits, xcirc);
  PredicatePtrMap no_precons;
  PredicateClassGuarantees g_postcons;

  // GateSetPredicate not preserved because X gates (or their specified
  // equivalents) may be introduced, and if allow_classical then classical
  // gates may also be introduced.
  g_postcons[typeid(GateSetPredicate)] = Guarantee::Clear;

  PostConditions postcon = {{}, g_postcons, Guarantee::Preserve};
  nlohmann::json j;
  j["name"] = "SimplifyInitial";
  j["allow_classical"] = (allow_classical == Transforms::AllowClassical::Yes);
  j["create_all_qubits"] =
      (create_all_qubits == Transforms::CreateAllQubits::Yes);
  if (xcirc) j["x_circuit"] = *xcirc;
  return std::make_shared<StandardPass>(no_precons, t, postcon, j);
}

PassPtr gen_contextual_pass(
    Transforms::AllowClassical allow_classical,
    std::shared_ptr<const Circuit> xcirc) {
  std::vector<PassPtr> seq = {
      RemoveDiscarded(), SimplifyMeasured(),
      gen_simplify_initial(
          allow_classical, Transforms::CreateAllQubits::No, xcirc),
      RemoveRedundancies()};
  return std::make_shared<SequencePass>(seq);
}

PassPtr PauliSquash(Transforms::PauliSynthStrat strat, CXConfigType cx_config) {
  std::vector<PassPtr> seq = {
      gen_synthesise_pauli_graph(strat, cx_config), FullPeepholeOptimise()};
  return std::make_shared<SequencePass>(seq);
}

PassPtr RoundAngles(unsigned n, bool only_zeros) {
  Transform t = Transforms::round_angles(n, only_zeros);
  PredicatePtrMap precons;
  PostConditions postcons = {{}, {}, Guarantee::Preserve};
  nlohmann::json j;
  j["name"] = "RoundAngles";
  j["n"] = n;
  j["only_zeros"] = only_zeros;
  return std::make_shared<StandardPass>(precons, t, postcons, j);
}

PassPtr CustomPass(
    std::function<Circuit(const Circuit&)> transform,
    const std::string& label) {
  Transform t{[transform](Circuit& circ) {
    Circuit circ_out = transform(circ);
    bool success = circ_out != circ;
    circ = circ_out;
    return success;
  }};

  PredicatePtrMap precons;
  PostConditions postcons;
  nlohmann::json j;
  j["name"] = "CustomPass";
  j["label"] = label;
  return std::make_shared<StandardPass>(precons, t, postcons, j);
}

PassPtr CustomPassMap(
    std::function<
        std::pair<Circuit, std::pair<unit_map_t, unit_map_t>>(const Circuit&)>
        transform,
    const std::string& label) {
  Transform t{[=](Circuit& circ, std::shared_ptr<unit_bimaps_t> maps) {
    // run transformation
    std::pair<Circuit, std::pair<unit_map_t, unit_map_t>>


mplementado de forma diferente em cada tipo de quarto
- Permite tratar todos os quartos de forma uniforme, mas com comportamentos específicos

### 4.3. **Encapsulamento**
- Atributos privados com métodos públicos para acesso controlado
- Validações internas nas classes para manter consistência dos dados

### 4.4. **Abstração**
- Interface clara entre as classes principais
- Métodos abstratos definem contratos que devem ser implementados

---

## 5. Tratamento de Exceções

### 5.1. Exceções Customizadas
- **`QuartoIndisponivelException`:** Tentativa de reservar quarto já ocupado
- **`DataInvalidaException`:** Datas de check-in/check-out inválidas
- **`CapacidadeExcedidaException`:** Número de hóspedes excede capacidade do quarto
- **`ReservaVencidaException`:** Tentativa de check-in em reserva expirada

### 5.2. Validações Importantes
- Verificar disponibilidade do quarto no período solicitado
- Validar se datas estão em ordem cronológica correta
- Confirmar que capacidade do quarto não foi excedida
- Validar dados obrigatórios do hóspede

---

## 6. Funcionalidades do Sistema

### 6.1. Gestão de Quartos
- Cadastrar quartos de diferentes tipos e categorias
- Controlar status e disponibilidade em tempo real
- Definir preços e promoções por tipo de quarto
- Acompanhar ocupação e manutenção

### 6.2. Sistema de Reservas
- Buscar quartos disponíveis por período e capacidade
- Criar reservas com validação de datas e disponibilidade
- Processar check-in e check-out com controle de horários
- Cancelar reservas e liberar quartos

### 6.3. Gestão de Hóspedes
- Cadastrar hóspedes com dados completos
- Manter histórico de reservas por hóspede
- Controlar hóspedes ativos no hotel
- Oferecer serviços personalizados

### 6.4. Serviços Adicionais
- Oferecer serviços extras (spa, transporte, alimentação)
- Calcular custos adicionais por categoria
- Integrar serviços ao valor total da estadia

### 6.5. Relatórios Gerenciais
- Calcular receita e taxa de ocupação por período
- Identificar quartos e serviços mais populares
- Analisar performance operacional
- Controlar pagamentos e inadimplência

---

## 7. Exemplo de Implementação

```typescript
// Exemplo de uso do sistema
const hotel = new Hotel("Hotel Paraíso", "Rua das Flores, 123");

// Cadastrar quartos
const quartoSimples = new QuartoSimples("101", 1, 2, 150, ["TV", "Wi-Fi", "Ar-condicionado"]);
const suite = new Suite("501", 5, 4, 400, ["TV 55'", "Wi-Fi", "Ar-condicionado", "Minibar"], true, true);

hotel.adicionarQuarto(quartoSimples);
hotel.adicionarQuarto(suite);

// Cadastrar hóspede
const hospede = new Hospede("H001", "João Silva", "12345678901", "joao@email.com", "11999999999", new Date("1990-05-15"));

// Buscar quartos disponíveis


l.tv_nsec = ns;
      itval.it_value.tv_sec     = sec;
      itval.it_value.tv_nsec    = ns;
      ret                       = timerfd_settime(timer_fd, 0, &itval, NULL);
      if (ret < 0) {
        perror("timerfd_settime");
      }
    } else {
      perror("timerfd_create");
    }
    return ret;
  }

  void wait_period()
  {
    unsigned long long missed;
    int                ret;

    /* Wait for the next timer event. If we have missed any the
        number is written to "missed" */
    ret = read(timer_fd, &missed, sizeof(missed));
    if (ret == -1) {
      perror("read timer");
      return;
    }

    /* "missed" should always be >= 1, but just to be sure, check it is not 0 anyway */
    if (missed > 0) {
      wakeups_missed += (missed - 1);
    }
  }
};

} // namespace srsran

#endif // __cplusplus

#endif // SRSRAN_THREADS_H