		for (int z=0; z<slices; z++) {
				for (int c=0; c<channels; c++) {
					ImageProcessor ip = stacks[c].getProcessor(index[c]+1);
					String label = stacks[c].getSliceLabel(index[c]+1);
					if (keep)
						ip = ip.duplicate();
					stack2.addSlice(label, ip);
					if (keep)
						index[c]++;
					else
						stacks[c].deleteSlice(1);
				}
			}
		}
		String title = imp.getTitle();
		if (title.startsWith("C1-"))
			title = title.substring(3);
		else
			title = frames>1?"Merged":"Composite";
		ImagePlus imp2 = new ImagePlus(title, stack2);
		imp2.setDimensions(channels, slices, frames);
		imp2 = new CompositeImage(imp2, IJ.COMPOSITE);
		boolean allGrayLuts = true;
		for (int c=0; c<channels; c++) {
			if (images[c].getProcessor().isColorLut()) {
				allGrayLuts = false;
				break;
			}
		}
		for (int c=0; c<channels; c++) {
			ImageProcessor ip = images[c].getProcessor();
			IndexColorModel cm = (IndexColorModel)ip.getColorModel();
			LUT lut = null;
			if (c<colors.length && colors[c]!=null && (ignoreLuts||allGrayLuts)) {
				lut = LUT.createLutFromColor(colors[c]);
				lut.min = ip.getMin();
				lut.max = ip.getMax();
			} else
				lut =  new LUT(cm, ip.getMin(), ip.getMax());
			((CompositeImage)imp2).setChannelLut(lut, c+1);
		}
		imp2.setOpenAsHyperStack(true);
		return imp2;
	}

	private boolean isDuplicate(int index, ImagePlus[] images) {
		int count = 0;
		for (int i=0; i<index; i++) {
			if (images[index]==images[i])
				return true;
		}
		return false;
	}

	/** Deprecated; replaced by mergeChannels(). */
	public ImagePlus createComposite(int w, int h, int d, ImageStack[] stacks, boolean keep) {
		ImagePlus[] images = new ImagePlus[stacks.length];
		for (int i=0; i<stacks.length; i++)
			images[i] = new ImagePlus(""+i, stacks[i]);
		return mergeHyperstacks(images, keep);
	}

	public static ImageStack mergeStacks(ImageStack red, ImageStack green, ImageStack blue, boolean keepSource) {
        RGBStackMerge merge = new RGBStackMerge();
		return merge.mergeStacks(red.getWidth(), red.getHeight(), red.getSize(), red, green, blue, keepSource);
	}

	public ImageStack mergeStacks(int w, int h, int d, ImageStack red, ImageStack green, ImageStack blue, boolean keep) {
		ImageStack rgb = new ImageStack(w, h);
		int inc = d/10;
		if (inc<1) inc = 1;
		ColorProcessor cp;
		int slice = 1;
		blank = new byte[w*h];
		byte[] redPixels, greenPixels, bluePixels;
		boolean invertedRed = red!=null?red.getProcessor(1).isInvertedLut():false;
		boolean invertedGreen = green!=null?green.getProcessor(1).isInvertedLut():false;
		boolean invertedBlue = blue!=null?blue.getProcessor(1).isInvertedLut():false;
		try {
			for (int i=1; i<=d; i++) {
				cp = new ColorProcessor(w, h);
				redPixels = getPixels(red


Valoro',btnAdd:'Aldoni',btnModify:'Modifi',btnUp:'Supren',btnDown:'Malsupren',btnSetValue:'Agordi kiel Elektitan Valoron',btnDelete:'Forigi'},textarea:{title:'Atributoj de Teksta Areo',cols:'Kolumnoj',rows:'Linioj'},textfield:{title:'Atributoj de Teksta Kampo',name:'Nomo',value:'Valoro',charWidth:'Signolarĝo',maxChars:'Maksimuma Nombro da Signoj',type:'Tipo',typeText:'Teksto',typePass:'Pasvorto'},hidden:{title:'Atributoj de Kaŝita Kampo',name:'Nomo',value:'Valoro'},image:{title:'Atributoj de Bildo',titleButton:'Bildbutonaj Atributoj',menu:'Atributoj de Bildo',infoTab:'Informoj pri Bildo',btnUpload:'Sendu al Servilo',upload:'Alŝuti',alt:'Anstataŭiga Teksto',lockRatio:'Konservi Proporcion',resetSize:'Origina Grando',border:'Bordero',hSpace:'Horizontala Spaco',vSpace:'Vertikala Spaco',alertUrl:'Bonvolu tajpi la retadreson de la bildo',linkTab:'Ligilo',button2Img:'Ĉu vi volas transformi la selektitan bildbutonon en simplan bildon?',img2Button:'Ĉu vi volas transformi la selektitan bildon en bildbutonon?',urlMissing:'La fontretadreso de la bildo mankas.',validateBorder:'La bordero devas esti entjera nombro.',validateHSpace:'La horizontala spaco devas esti entjera nombro.',validateVSpace:'La vertikala spaco devas esti entjera nombro.'},flash:{properties:'Flaŝatributoj',propertiesTab:'Atributoj',title:'Flaŝatributoj',chkPlay:'Aŭtomata legado',chkLoop:'Iteracio',chkMenu:'Ebligi flaŝmenuon',chkFull:'Permesi tutekranon',scale:'Skalo',scaleAll:'Montri ĉion',scaleNoBorder:'Neniu bordero',scaleFit:'Origina grando',access:'Atingi skriptojn',accessAlways:'Ĉiam',accessSameDomain:'Sama domajno',accessNever:'Neniam',alignAbsBottom:'Absoluta Malsupro',alignAbsMiddle:'Absoluta Centro',alignBaseline:'TekstoMalsupro',alignTextTop:'TekstoSupro',quality:'Kvalito',qualityBest:'Plej bona',qualityHigh:'Alta',qualityAutoHigh:'Aŭtomate alta',qualityMedium:'Meza',qualityAutoLow:'Aŭtomate malalta',qualityLow:'Malalta',windowModeWindow:'Fenestro',windowModeOpaque:'Opaka',windowModeTransparent:'Travidebla',windowMode:'Fenestra reĝimo',flashvars:'Variabloj por Flaŝo',bgcolor:'Fona Koloro',hSpace:'Horizontala Spaco',vSpace:'Vertikala Spaco',validateSrc:'Bonvolu entajpi la retadreson (URL)',validateHSpace:'Horizontala Spaco devas esti nombro.',validateVSpace:'Vertikala Spaco devas esti nombro.'},spellCheck:{toolbar:'Kontroli la ortografion',title:'Kontroli la ortografion',notAvailable:'Bedaŭrinde la servo ne funkcias nuntempe.',errorLoading:'Eraro en la servoelŝuto el la gastiga komputiko: %s.',notInDic:'Ne trovita en la vortaro',changeTo:'Ŝanĝi al',btnIgnore:'Ignori',btnIgnoreAll:'Ignori Ĉion',btnReplace:'Anstataŭigi',btnReplaceAll:'Anstataŭigi Ĉion',btnUndo:'Malfari',noSuggestions:'- Neniu propono -',progress:'La


}
		}

		let dispHeader = headers['content-disposition'];

		if ( !isMedia ) {
			let ext;

			if ( dispHeader ) {
				ext = dispHeader.value.match(
					/;\s*filename\*?\s*=.+\.(jp(?:g|eg?)|a?png|gif|bmp|svgz?|web[pm]|avif|og[gv]|m(?:p[34d]|3u8))(?:\s*")?(?:\s*;|$)/i
				);
			} else if ( prefs.forceInlineMedia
				&& contentType.endsWith('/octet-stream') ) {
				ext = details.url.match(
					/\.(jp(?:g|eg?)|a?png|gif|bmp|svgz?|web[pm]|avif|og[gv]|mp[34])(?=$|[?#])/
				);
			}

			if ( !ext && prefs.extraFormats ) {
				ext = details.url.match(
					/(?:\.[mM](?:3[uU]8|[pP][dD])|\/[Mm]anifest)(?=$|[?#])/
				);

				if ( ext ) {
					ext[1] = ext[1].slice(1);
				}
			}

			if ( ext ) {
				ext = ext[1].toLowerCase();

				if ( ext.startsWith('svg') ) {
					if ( !prefs.viewSvg
						|| details.method !== 'GET'
						|| details.url.endsWith('#direct-view') ) {
						return {};
					}

					chrome.tabs.update(details.tabId, {
						url: chrome.runtime.getURL(
							'viewer.html#svg:' + details.url.replace(/#.*/, '')
						)
					});
					return {cancel: true};
				}

				isMedia = true;

				if ( ext === 'm3u8' ) {
					streamingMediaType = 'hls';
				} else if ( ext === 'mpd' ) {
					streamingMediaType = 'dash';
				} else if ( ext === 'manifest' ) {
					streamingMediaType = 'mss';
				}

				if ( !streamingMediaType ) {
					let mediaType = /^(mp[34]|webm|og)/.test(ext)
						? 'video/mp4'
						: 'image/png';

					// At this point we are sure that content-type is not media
					if ( headers['content-type'] ) {
						headers['content-type'].value = mediaType;
					} else {
						details.responseHeaders.push({
							name: 'Content-Type',
							value: mediaType
						});
					}
				}
			}
		}

		if ( streamingMediaType ) {
			if ( details.url.endsWith('#direct-view') ) {
				return {};
			}

			chrome.tabs.update(details.tabId, {
				url: chrome.runtime.getURL(
					'viewer.html#' + streamingMediaType + ':'
						+ details.url.replace(/#.*/, '')
				)
			});

			return {cancel: true};
		}

		if ( !isMedia ) {
			return {};
		}

		if ( headers['content-security-policy'] ) {
			headers['content-security-policy'].value = '';
		}

		if ( dispHeader && prefs.forceInlineMedia ) {
			dispHeader.value = dispHeader.value.replace(
				/^\s*attachment/i,
				'inline'
			);
		}

		return {responseHeaders: details.responseHeaders};
	};

	this.unWatchReceivedHeaders = function() {
		chrome.webRequest.onHeadersReceived.removeListener(onHeadersReceived);
		this.unWatchReceivedHeaders = null;
	};

	chrome.webRequest.onHeadersReceived.addListener(onHeadersReceived, {
		urls: ['<all_urls>'],
		types: ['main_frame']
	}, ['responseHeaders', 'blocking']);
};

vAPI.watchDataTabs = function() {
	if ( !chrome.webNavigation ) {
		return;
	}

	let onBefore


=m((t=>`%c${r().format("ss.SSS")} : ${t} : `),"format"),k=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,T=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,A=/\s*%%.*\n/gm,_=class extends Error{static{m(this,"UnknownDiagramError")}constructor(t){super(t),this.name="UnknownDiagramError"}},E={},C=m((function(t,e){t=t.replace(k,"").replace(T,"").replace(A,"\n");for(const[n,{detector:r}]of Object.entries(E)){if(r(t,e))return n}throw new _(`No diagram type detected matching given configuration for text: ${t}`)}),"detectType"),S=m(((...t)=>{for(const{id:e,detector:n,loader:r}of t)L(e,n,r)}),"registerLazyLoadedDiagrams"),L=m(((t,e,n)=>{E[t]&&x.warn(`Detector with key ${t} already exists. Overwriting.`),E[t]={detector:e,loader:n},x.debug(`Detector with key ${t} added${n?" with loader":""}`)}),"addDetector"),N=m((t=>E[t].loader),"getDiagramLoader"),R=m(((t,e,{depth:n=2,clobber:r=!1}={})=>{const i={depth:n,clobber:r};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach((e=>R(t,e,i))),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach((e=>{t.includes(e)||t.push(e)})),t):void 0===t||n<=0?null!=t&&"object"==typeof t&&"object"==typeof e?Object.assign(t,e):e:(void 0!==e&&"object"==typeof t&&"object"==typeof e&&Object.keys(e).forEach((i=>{"object"!=typeof e[i]||void 0!==t[i]&&"object"!=typeof t[i]?(r||"object"!=typeof t[i]&&"object"!=typeof e[i])&&(t[i]=e[i]):(void 0===t[i]&&(t[i]=Array.isArray(e[i])?[]:{}),t[i]=R(t[i],e[i],{depth:n-1,clobber:r}))})),t)}),"assignWithDepth"),I=R,M="#ffffff",D="#f2f2f2",O=m(((t,e)=>s(t,e?{s:-40,l:10}:{s:-40,l:-10})),"mkBorder"),P=class{static{m(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||s(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||s(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||O(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||O(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||O(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||O(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||c(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||c(this.tertiaryColor),this.lineColor=this.lineColor||c(this.background),this.arrowheadColor=this.arrowh


, int *vbuf, const int *coefBase)

xmp3_PolyphaseMono	FUNCTION
	EXPORT	xmp3_PolyphaseMono

	stmfd	sp!, {r4-r11, r14}

	; clear out stack space for 4 local variables (4 bytes each)
	sub		sp, sp, #8
	str		PCM, [sp, #4]			; sp[1] = pcm pointer

	; special case, output sample 0
	mov		SUM1LL, #RNDVAL				; load rndVal (low 32)
	mov		SUM1LH, #0

	MC0M	0
	MC0M	1
	MC0M	2
	MC0M	3
	MC0M	4
	MC0M	5
	MC0M	6
	MC0M	7

	ldr		PCM, [sp, #4]		; load pcm pointer
	mov		MAXPOS, #0x7f00
	orr		MAXPOS, MAXPOS, #0xff

	C64TOS	SUM1LL, SUM1LH, SIGN, MAXPOS
	strh	SUM1LL, [PCM, #(2*0)]

	; special case, output sample 16
	add		COEF, COEF, #(4*(256-16))	; coef = coefBase + 256 (was coefBase + 16 after MC0M block)
	add		VB1, VB1, #(4*1024)			; vb1 = vbuf + 64*16

	mov		SUM1LL, #RNDVAL				; load rndVal (low 32)
	mov		SUM1LH, #0

	MC1M	0
	MC1M	1
	MC1M	2
	MC1M	3
	MC1M	4
	MC1M	5
	MC1M	6
	MC1M	7

	ldr		PCM, [sp, #4]		; load pcm pointer
	mov		MAXPOS, #0x7f00
	orr		MAXPOS, MAXPOS, #0xff

	C64TOS	SUM1LL, SUM1LH, SIGN, MAXPOS

	strh	SUM1LL, [PCM, #(2*16)]

	; main convolution loop: sum1L = samples 1, 2, 3, ... 15   sum2L =


 0 2px rgba(143, 217, 83, 0.5);
}

.btn-option {
  background: transparent;
  color: #9aa0ac;
}

.btn-option:hover {
  color: #6e7687;
}

.btn-option:focus {
  box-shadow: none;
  color: #6e7687;
}

.btn-sm, .btn-group-sm > .btn, .dataTables_wrapper .dataTables_paginate .btn-group-sm > .paginate_button {
  font-size: 0.75rem;
  min-width: 1.625rem;
}

.btn-lg, .btn-group-lg > .btn, .dataTables_wrapper .dataTables_paginate .btn-group-lg > .paginate_button {
  font-size: 1rem;
  min-width: 2.75rem;
  font-weight: 400;
}

.btn-list {
  margin-bottom: -.5rem;
  font-size: 0;
}

.btn-list > .btn, .dataTables_wrapper .dataTables_paginate .btn-list > .paginate_button,
.btn-list > .dropdown {
  margin-bottom: .5rem;
}

.btn-list > .btn:not(:last-child), .dataTables_wrapper .dataTables_paginate .btn-list > .paginate_button:not(:last-child),
.btn-list > .dropdown:not(:last-child) {
  margin-left: .5rem;
}

.btn-loading {
  color: transparent !important;
  pointer-events: none;
  position: relative;
}

.btn-loading:after {
  content: '';
  -webkit-animation: loader 500ms infinite linear;
  animation: loader 500ms infinite linear;
  border: 2px solid #fff;
  border-radius: 50%;
  border-left-color: transparent !important;
  border-top-color: transparent !important;
  display: block;
  height: 1.4em;
  width: 1.4em;
  right: calc(50% - (1.4em / 2));
  top: calc(50% - (1.4em / 2));
  -webkit-transform-origin: center;
  transform-origin: center;
  position: absolute !important;
}

.btn-loading.btn-sm:after, .btn-group-sm > .btn-loading.btn:after, .dataTables_wrapper .dataTables_paginate .btn-group-sm > .btn-loading.paginate_button:after {
  height: 1em;
  width: 1em;
  right: calc(50% - (1em / 2));
  top: calc(50% - (1em / 2));
}

.btn-loading.btn-secondary:after, .dataTables_wrapper .dataTables_paginate .btn-loading.paginate_button:after {
  border-color: #495057;
}

.alert {
  font-size: 0.9375rem;
}

.alert-icon {
  padding-right: 3rem;
}

.alert-icon > i {
  color: inherit !important;
  font-size: 1rem;
  position: absolute;
  top: 1rem;
  right: 1rem;
}

.alert-avatar {
  padding-right: 3.75rem;
}

.alert-avatar .avatar {
  position: absolute;
  top: .5rem;
  right: .75rem;
}

.close {
  font-size: 1rem;
  line-height: 1.5;
  transition: .3s color;
}

.close:before {
  content: '\ea00';
  font-family: feather, sans-serif;
}

.badge {
  color: #fff;
}

.badge-default {
  background: #e9ecef;
  color: #868e96;
}

.tab


"""add_more_user_survey_questions

Revision ID: 785f6b48ad7a
Revises: 08d92ecbd824
Create Date: 2023-05-30 03:40:39.025935+00:00

"""
from alembic import op
import sqlalchemy as sa

import sqlalchemy.dialects.postgresql as sa_psql

# revision identifiers, used by Alembic.
revision = '785f6b48ad7a'
down_revision = '08d92ecbd824'
branch_labels = None
depends_on = None

def upgrade() -> None:
    # add age_range column to user table
    op.add_column(
        'user',
        sa.Column(
            'age_range',
            sa_psql.INT4RANGE,
            nullable=True,
        ),
    )

    # add the gender column to user table
    op.add_column(
        'user',
        sa.Column(
            'gender',
            sa_psql.VARCHAR(64),
            nullable=True,
        ),
    )

def downgrade() -> None:
    # drop the age_range column from user table
    op.drop_column(
        'user',
        'age_range',
    )

    # drop the gender column from user table
    op.drop_column(
        'user',
        'gender',
    )


#ifndef VIDEODESC_H
#define VIDEODESC_H

#include <vector>

enum VideoOrientation { ROTATE_0 = 0, ROTATE_90 = 3, ROTATE_180 = 2, ROTATE_270 = 1}; // Degrees clock-wise to rotate monitor
// Odd enumeration values to match libretro RETRO_ENVIRONMENT_SET_ROTATION, cheat.
enum VideoScanMode { PROGRESSIVE = 0, INTERLACED };
enum VideoMonitorType { MONOCHRONE = 0, COLOR };

typedef double VIDEO_RESISTOR_MATRIX[9][3];

struct VideoOverlay
{
    double x, y;
    double width, height; // NOTE: Negative values for width or height specify maximum possible value
    double r, g, b;
};

struct VideoDesc
{
    union {
        double r[9];
        const double (*r_color)[3];
    };
    double brightness;
    double contrast;

    // Changing resolution in RetroArch seems harder than standalone --- start with a height hint.
    uint32_t retro_v_size;

    VideoOrientation orientation;
    VideoScanMode scan_mode;
    VideoMonitorType monitor_type;
    std::vector<VideoOverlay> overlays;

    VideoDesc() : brightness(0.0), contrast(1.0), retro_v_size(0), orientation(ROTATE_0), scan_mode(PROGRESSIVE), monitor_type(MONOCHRONE)
    {
        for(int i = 0; i < 9; i++) r[i] = 0.0;
    }
    VideoDesc& set_r(unsigned pin, double val)
    {
        if(pin > 0 && pin <= 9) r[pin-1] = val;
        return *this;
    }
    VideoDesc& set_brightness(double b)
    {
        brightness = b;
        return *this;
    }
    VideoDesc& set_contrast(double c)
    {
        contrast = c;
        return *this;
    }
    VideoDesc& set_orientation(VideoOrientation o)
    {
        orientation = o;
        return *this;
    }
   VideoDesc& set_retro_v_size(uint32_t v)
   {
       retro_v_size = v;
       return *this;
   }
    VideoDesc& set_scan_mode(VideoScanMode s)
    {
        scan_mode = s;
        return *this;
    }
    VideoDesc& set_monitor_type(VideoMonitorType m)
    {
        monitor_type = m;
        return *this;
    }
    VideoDesc& add_overlay(const VideoOverlay& o)
    {
        overlays.push_back(o);
        return *this;
    }
    VideoDesc& set_r_color(const double (*rc)[3])
    {
        r_color = rc;
        return *this;
    }

    static const VideoDesc DEFAULT;
};

#define VIDEO_DESC( name ) VideoDesc video_##name = VideoDesc()
#define VIDEO_RESISTANCE( p, r ) .set_r(p, r)
#define VIDEO_BRIGHTNESS( b ) .set_brightness(b)
#define VIDEO_CONTRAST( c ) .set_contrast(c)
#define VIDEO_ORIENTATION( o ) .set_orientation(o)
#define VIDEO_SCAN_MODE( s ) .set_scan_mode(s)
#define VIDEO_MONITOR_TYPE( m ) .set_monitor_type(m)
#define VIDEO_OVERLAY( o... ) .add_overlay({o})
#define VIDEO_RESISTANCES_RGB( r... ) .set_r_color(r)
#define VIDEO_RETRO_V_SIZE( v ) .set_retro_v_size(v)
#define VIDEO_DESC_END ;

#endif


却显得非常悠然，从被破坏的笼子缝隙中伸出爪子。

青年差一点被争先恐后的逃难人群推挤到摔倒。这时，有人从侧面抓住他的手，将他拉了起来。

“这边走，赶快！”

是特等席位的警备士兵。一边用剑和枪恐吓着周围的人群，一边想带着青年往外逃。

“等，等一下。伊奈丽还——”

虽然青年企图做出挣扎，但由于周围逃亡人流的推挤，根本无法自由移动。就在这时，尖锐的悲鸣响起。隔栏对面被索佐斯的前肢拽住的，不是别人，正是伊奈丽。从看台上跌落的少女花容失色，就好像随时都会晕过去似的。

龙那长鼻子前端的嘴上下裂开，口内排列着如剑尖般锐利的牙，似断而非的唾液丝显露出来。就在青年下意识避开视线的时候，索佐斯头的根部溅出一条细长的血柱。虽然剑斗场雇用的卫兵们都手持着枪赶到现场，但因为现场过于靠近观众席，不得不移动到龙的近距离进行射击，摆出架势的他们现在依然显得举棋不定。趁着他们想要靠近但又不知所措的空隙，索佐斯敏捷地转身用尾巴一甩，数个卫兵一起被打飞了出去。

瘫倒在地的少女眼睛瞪得滚圆。

她用这双眼睛看见了。

索佐斯的侧面有个如疾风般疾驰过的身影。身影在即将撞上看台隔墙的瞬间，踩着墙壁高高舞上天空。仿造虎面造型的铁面具飞入少女的视线，剑斗士欧鲁巴正站在索佐斯的颈边。

趁着索佐斯被枪击引开一瞬间注意力，从它的背后窜上。虽然事实就发生在眼前，但依然令人无法相信。

欧鲁巴乍一看非常瘦弱，但浮现出一块块如钢铁般肌肉的手臂深深陷入龙的头部。同时他的双足夹着龙的颈部，另一只手用剑沉重地向龙头击下。

长长的尾巴疯狂甩动，四肢将地面踩得摇晃不止


1 {
  left: -80px;
}

.container_12 .pull_2 {
  left: -160px;
}

.container_12 .pull_4 {
  left: -320px;
}

.container_12 .pull_5 {
  left: -400px;
}

.container_12 .pull_7 {
  left: -560px;
}

.container_12 .pull_8 {
  left: -640px;
}

.container_12 .pull_10 {
  left: -800px;
}

.container_12 .pull_11 {
  left: -880px;
}

/* `Pull Space >> 16 Columns
----------------------------------------------------------------------------------------------------*/

.container_16 .pull_1 {
  left: -60px;
}

.container_16 .pull_2 {
  left: -120px;
}

.container_16 .pull_3 {
  left: -180px;
}

.container_16 .pull_5 {
  left: -300px;
}

.container_16 .pull_6 {
  left: -360px;
}

.container_16 .pull_7 {
  left: -420px;
}

.container_16 .pull_9 {
  left: -540px;
}

.container_16 .pull_10 {
  left: -600px;
}

.container_16 .pull_11 {
  left: -660px;
}

.container_16 .pull_13 {
  left: -780px;
}

.container_16 .pull_14 {
  left: -840px;
}

.container_16 .pull_15 {
  left: -900px;
}

/* `Clear Floated Elements
----------------------------------------------------------------------------------------------------*/

/* http://sonspring.com/journal/clearing-floats */

.clear {
  clear: both;
  display: block;
  overflow: hidden;
  visibility: hidden;
  width: 0;
  height: 0;
}

/* http://www.yuiblog.com/blog/2010/09/27/clearfix-reloaded-overflowhidden-demystified */

.clearfix:before,
.clearfix:after,
.container_12:before,
.container_12:after,
.container_16:before,
.container_16:after {
  content: '.';
  display: block;
  overflow: hidden;
  visibility: hidden;
  font-size: 0;
  line-height: 0;
  width: 0;
  height: 0;
}

.clearfix:after,
.container_12:after,
.container_16:after {
  clear: both;
}

/*
  The following zoom:1 rule is specifically for IE6 + IE7.
  Move to separate stylesheet if invalid CSS is a problem.
*/

.clearfix,
.container_12,
.container_16 {
  zoom: 1;
}/* Fonts for the website */
@font-face {
	font-family: "Gill Alt One MT";
	src: url("fonts/gla.ttf");
	font-weight: normal;
	font-style: normal;
}

@font-face {
	font-family: "Gill Alt One MT";
	src: url("fonts/glab.ttf");
	font-weight: bold;
	font-style: normal;
}

@font-face {
	font-family: "Gill Alt One MT";
	src: url("fonts/glai.ttf");
	font-weight: normal;
	font-style: italic;
}

@font-face {
	font-family: "Gill Alt One MT";
	src: url("fonts/glabi.ttf");
	font-weight: bold;
	font-style: italic;
}

/* General styling */
/* ARM blue rgb(0, 120, 156) */
body {
	background-color: rgb(255, 255, 255); font-family: 'Gill Alt One MT', 'Gill Sans', 'Segoe UI', sans-serif; line-height: 1em; font-weight: normal; }
.nonDraggableImage { -webkit-user-drag: none; }

/* Header styl


lar *A = data->A;

  TacsScalar y0, y1, y2, y3;
  TacsScalar *xx = &x[4 * (nrows - var_offset - 1)];
  int off = 4 * var_offset;

  for (int i = nrows - 1; i >= var_offset; i--) {
    y0 = xx[0];
    y1 = xx[1];
    y2 = xx[2];
    y3 = xx[3];

    int end = rowp[i + 1];
    int k = diag[i] + 1;
    const TacsScalar *a = &A[16 * k];
    for (; k < end; k++) {
      int j = 4 * cols[k] - off;
      y0 -= a[0] * x[j] + a[1] * x[j + 1] + a[2] * x[j + 2] + a[3] * x[j + 3];
      y1 -= a[4] * x[j] + a[5] * x[j + 1] + a[6] * x[j + 2] + a[7] * x[j + 3];
      y2 -= a[8] * x[j] + a[9] * x[j + 1] + a[10] * x[j + 2] + a[11] * x[j + 3];
      y3 -=
          a[12] * x[j] + a[13] * x[j + 1] + a[14] * x[j + 2] + a[15] * x[j + 3];
      a += 16;
    }

    a = &A[16 * diag[i]];
    xx[0] = a[0] * y0 + a[1] * y1 + a[2] * y2 + a[3] * y3;
    xx[1] = a[4] * y0 + a[5] * y1 + a[6] * y2 + a[7] * y3;
    xx[2] = a[8] * y0 + a[9] * y1 + a[10] * y2 + a[11] * y3;
    xx[3] = a[12] * y0 + a[13] * y1 + a[14] * y2 + a[15] * y3;

    xx -= 4;
  }
}

/*!
  Function for the approximate Schur preconditioner
*/

void BCSRMatApplyFactorSchur4(BCSRMatData *data, TacsScalar *x,
                              int var_offset) {
  const int *rowp = data->rowp;
  const int *cols = data->cols;
  const int *diag = data->diag;
  const TacsScalar *A = data->A;

  TacsScalar y0, y1, y2, y3;
  TacsScalar *xx = &x[4 * (var_offset - 1)];

  for (int i = var_offset - 1; i >= 0; i--) {
    y0 = xx[0];
    y1 = xx[1];
    y2 = xx[2];
    y3 = xx[3];

    int end = rowp[i + 1];
    int k = diag[i] + 1;
    const TacsScalar *a = &A[16 * k];
    for (; k < end; k++) {
      int j = 4 * cols[k];
      y0 -= a[0] * x[j] + a[1] * x[j + 1] + a[2] * x[j + 2] + a[3] * x[j + 3];

      y0 -= a[4] * x[j] + a[5] * x[j + 1] + a[6] * x[j + 2] + a[7] * x[j + 3];
      y0 -= a[8] * x[j] + a[9] * x[j + 1] + a[10] * x[j + 2] + a[11] * x[j + 3];
      y0 -=
          a[12] * x[j] + a[13] * x[j + 1] + a[14] * x[j + 2] + a[15] * x[j + 3];

      a


w Laya.Vector3(0,4.5,12));
        //设置摄像机视野范围（角度）
        GameMain.camera.fieldOfView = 25;
        this.scene.addChild(GameMain.camera);
    }

    /*创建3D角色*/
    private createRole():void{

        this.createCommonRole(this.role ,"LayaScene_girl/girl.lh", new Laya.Vector3(-3,0,3.5), "自己");
        //摄像机对准自己角色模型附近位置
        GameMain.camera.transform.lookAt(new Laya.Vector3(0,0.5,1),new Laya.Vector3(0,0,0));

        this.createCommonRole(this.roleA ,"LayaScene_boy/boy.lh", new Laya.Vector3(0,0,0), "玩家A");

        this.createCommonRole(this.roleB ,"Monkey/LayaMonkey.lh", new Laya.Vector3(-3,0,0), "玩家B");

    }

    private createCommonRole(parmRole :Laya.Sprite3D, res :string, parmVector3 :Laya.Vector3, name :string):void{
        // 实例化角色A
        parmRole = Laya.loader.getRes(res);
        // 添加到舞台
        this.scene.addChild(parmRole);
        // 角色位置
        parmRole.transform.position = parmVector3;
        parmRole.name = name;
    }

    /*游戏帧循环*/
    private onFrameLoop():void{
        //摄像机位置改变（数据为角色控制脚本修改）
        //Example_roleControl.camera.transform.translate(Example_roleControl.cameraTranslate,false);
    }

      /**
     * 控制界面动作监听回调
     * @param action 当前执行的控制名称
     */
    private onBtnAction(action:String):void
    {
        // 点击loading 开始游戏按钮
        if(action=="enter")
        {

            // 显示用户信息区
            GameMain.userInfoView.showUserView();
            // 显示提示通告
            GameMain.noticeView.showNoticeView();
            // 显示桌面
            GameMain.cardView.showBackground();
            // 显示斗地主提示
            GameMain.landLordView.showCountDonw();
            // 倒计时时钟
            //GameMain.timeView.showCountDonw();

        }
        // 不抢地主，随机给电脑分配一个地主
        else if(action=="buqiang"){

            GameMain.userInfoView.goneLandlord();

            if(Math.random() >= 0.5){
                this.mPokerPresenter.sendLandlordPokers(this.mPokerPresenter.mAPlayer.mHandPokerList);
                this.playPokerState =1;
                this.mPokerPresenter.mAPlayer.isLandlord = true;
                this.mPokerPresenter.m_LastOut = this.mPokerPresenter.mAPlayer;
            }else{
                this.mPokerPresenter.sendLandlordPokers(this.mPokerPresenter.mBPlayer.mHandPokerList);
                this.playPokerState =2;
                this.mPokerPresenter.mBPlayer.isLandlord = true;
                this.mPokerPresenter.m_LastOut = this.mPokerPresenter.mBPlayer;
            }

            // 排序
            this.m


#import <Cocoa/Cocoa.h>
#import "SPPlaylist.h"

extern NSString* SPSmartPlaylistChangedNotification;

@interface SPSmartPlaylist : SPPlaylist <NSMetadataQueryDelegate>
{
	NSPredicate* predicate;
	NSMutableArray* cachedItems;
	BOOL isCachingItems;
	BOOL abortCaching;
	NSMetadataQuery* smartPlaylistQuery;
}

- (instancetype) init;
- (instancetype) initWithCoder:(NSCoder*)coder;
- (void) encodeWithCoder:(NSCoder*)coder;
- (void)shuffleMe;

@property (NS_NONATOMIC_IOSONLY, copy) NSPredicate *predicate;

@property (NS_NONATOMIC_IOSONLY, readonly, copy) NSMutableArray *items;
@property (NS_NONATOMIC_IOSONLY, readonly) NSInteger count;
- (SPPlaylistItem*) itemAtIndex:(NSInteger)index;

- (void) startSpotlightQuery:(NSString*)rootPath;
- (void) spotlightResultNotification:(NSNotification *)notification;
- (void) spotlightResultConsumerThread:(id)object;
- (NSPredicate*) convertPredicate:(NSPredicate*)originalPredicate;

@property (NS_NONATOMIC_IOSONLY, getter=isCachingItems, readonly) BOOL cachingItems;

@property (NS_NONATOMIC_IOSONLY, readonly) BOOL saveToFile;

+ (NSString*) fileExtension;
+ (SPSmartPlaylist*) playlistFromFile:(NSString*)path;

@end


okkos::parallel_for(
    Kokkos::TeamVectorRange(team, init.ktop+1, tend_level+1), [&] (const int k) {
    // Serialize the sum so it's repeatable
    Real ubt = 0;
    for (size_t i = 0; i < work.extent(1); ++i) {
      ubt += work(k, i);
    }

    // Project the mean wind tendency onto the components.
    if (!init.orographic_only) {
      utgw(k) = ubt * xv;
      vtgw(k) = ubt * yv;
    }
    else {
      utgw(k) = ubt * xv * effgw * ptaper;
      vtgw(k) = ubt * yv * effgw * ptaper;
    }
  });

  // Release temporary variables from the workspace
  workspace.release(work_1d);
}

} // namespace gw
} // namespace scream

#endif
#ifndef PYGRID_HPP
#define PYGRID_HPP

#include "share/grid/mesh_free_grids_manager.hpp"

#include "pyeamxx_ext.hpp"

#include <nanobind/nanobind.h>
#include <nanobind/stl/string.h>

#include <mpi.h>

namespace nb = nanobind;

namespace scream {

inline void create_grids_manager (int ncols, int nlevs, const std::string& latlon_nc_file)
{
  EKAT_REQUIRE_MSG (PySession::get().inited,
      "Error! You did not initialize pyeamxx, or you already finalized it!\n");
  auto& comm = PySession::get().comm;
  ekat::ParameterList gm_params;
  std::vector<std::string> grids_names = {"physics"};
  auto& pl = gm_params.sublist("physics");
  pl.set("type",std::string("point_grid"));
  pl.set("number_of_global_columns",ncols);
  pl.set("number_of_vertical_levels",nlevs);
  gm_params.set("grids_names",grids_names);
  gm_params.set("geo_data_source",std::string("CREATE_EMPTY_DATA"));

  if (latlon_nc_file!="") {
    gm_params.set("geo_data_source",std::string("IC_FILE"));
    gm_params.set("ic_filename",latlon_nc_file);
  }

  PySession::get().gm = create_mesh_free_grids_manager (comm, gm_params);
  PySession::get().gm->build_grids();
}
inline void create_grids_manager (int ncols, int nlevs)
{
  create_grids_manager(ncols,nlevs,"");
}

inline void nb_pygrid (nb::module_& m) {
  m.def("create_grids_manager",nb::overload_cast<int,int>(&create_grids_manager));
  m.def("create_grids_manager",nb::overload_cast<int,int,const std::string&>(&create_grids_manager));
}

} // namespace scream

#endif // PYGRID_HPP
#include <catch2/catch.hpp>
#include "control/atmosphere_driver.hpp"
#include "diagnostics/register_diagnostics.hpp"

#include "physics/zm/atmosphere_deep_convection.hpp"
#include "physics/zm/scream_zm_interface.hpp"

#include "share/grid/mesh_free_grids_manager.hpp"
#include "share/atm_process/atmosphere_process.hpp"

#include <ekat_yaml.hpp>

#include <iostream>
#include <iomanip>

namespace scream {

TEST_CASE("zm-standalone", "") {
  using namespace scream;
  using namespace scream::control;

  // Load ad parameter list
  std::string fname = "input.yaml";
  ekat::ParameterList ad_params("Atmosphere Driver");
  parse_ya


@yanwmçÛl¯¯UmKUmwVkmÝXbW@XWÝbk¯@±w@»U@W¯Å@Ç¥UU@IUakJĀê°þXkam@_J°m@X'],
                    'encodeOffsets': [[
                            118125,
                            24419
                        ]]
                }
            },
            {
                'type': 'Feature',
                'id': '4416',
                'properties': {
                    'name': '河源市',
                    'cp': [
                        114.917,
                        23.9722
                    ],
                    'childNum': 6
                },
                'geometry': {
                    'type': 'Polygon',
                    'coordinates': ['@@°VlmX¹laĢÒlm@V£@¦Ģklynn¼lW°zW°VbÈV@lÆbnnJkXVÆaÅW@UUw@kaV»ÞkVaVLkmVw»ĕ£@yblçkKkU@k¥wX»kmÓ@Wn¯I`@nlbWý¯éÿlI@XUmWUw@@UJUÇmKUV@xţk¯¯LWnUxK@Å±»Vwa¯@¤WX@Û¦@¤ÇIÈ¼WxX@WxwUnVbÅèmVa±²UWl@klÈ¤nôÜ¼XxlUnVlbVnlU¦Jó»@wnkmUÝ@U_¤XxmXm¤ôb@¦ÈÆ¦lJn'],
                    'encodeOffsets': [[
                            117057,
                            25167
                        ]]
                }
            },
            {
                'type': 'Feature',
                'id': '4412',
                'properties': {
                    'name': '肇庆市',
                    'cp': [
                        112.1265,
                        23.5822
                    ],
                    'childNum': 7
                },
                'geometry': {
                    'type': 'Polygon',
                    'coordinates': ['@@l@¥@V¼VôÛ@bV@ŤVLÈlVÈólUX¥mĉ°kÿU°@ÞKlÿ°KUUW»Èw@aw@@nm@w£kÓVUVnKk¥£Vam@nkKkbÆǫmakmLU¥UmÛwmVUmUJÇaUxÇIn`mb@Þ¯b@nJ@nlUVlVULW¯Û`Ç_¯`m¯IbĉWċzx±Jx¯ÆU_k@J@UmbXôlLn¦@¼ĊxlUXxUbLĠUnVĊwlUb@lWXm²@ÞWxXUnb'],
                    'encodeOffsets': [[
                            114627,
                            24818
                        ]]
                }
            },
            {
                'type': 'Feature',
                'id': '4413',
                'properties': {
                    'name': '惠州市',
                    'cp': [
                        114.620


.cache_prompts = cache_prompts
> >>>>>>> REPLACE
>
> The SEARCH section must exactly match an existing block of lines including all white space, comments, indentation, docstrings, etc
>
> # The other 1 SEARCH/REPLACE block were applied successfully.
> Don't re-send them.
> Just reply with fixed versions of the block above that failed to match.

I apologize for the confusion. It seems the `cache_prompts` attribute is already present in the `__init__` method. Let's correct the SEARCH/REPLACE block to properly update the `cache_prompts` assignment:

aider/coders/base_coder.py
```python
<<<<<<< SEARCH
        self.map_refresh = map_refresh
        self.cache_prompts = False
=======
        self.map_refresh = map_refresh
        self.cache_prompts = cache_prompts
>>>>>>> REPLACE
```

This change will update the `cache_prompts` assignment to use the `cache_prompts` parameter passed to the `__init__` method, instead of the hardcoded `False` value.

> Tokens: 21,269 sent, 141 received. Cost: $0.07 message, $0.22 session.
> Committing aider/coders/base_coder.py before applying edits.
> Commit 7850236 feat: Add cache_prompts parameter to Coder constructor
> The LLM did not conform to the edit format.
> https://aider.chat/docs/troubleshooting/edit-errors.html
> # 1 SEARCH/REPLACE block failed to match!
>
> ## SearchReplaceNoExactMatch: This SEARCH block failed to exactly match lines in aider/coders/base_coder.py
> <<<<<<< SEARCH
>         self.map_refresh = map_refresh
>         self.cache_prompts = False
> =======
>         self.map_refresh = map_refresh
>         self.cache_prompts = cache_prompts
> >>>>>>> REPLACE
>
> The SEARCH section must exactly match an existing block of lines including all white space, comments, indentation, docstrings, etc
>
>
> ^C again to exit

I apologize for the confusion. Let me provide the correct SEARCH/REPLACE block based on the actual content of the file:

aider/coders/base_coder.py
```python
<<<<<<< SEARCH
        self.map_refresh = map_refresh
        self.cache_prompts = cache_prompts
=======
        self.map_refresh = map_refresh
        self.cache_prompts = cache_prompts
>>>>>>> REPLACE
```

As you can see, the `cache_prompts` attribute is already correctly assigned in the `__init__` method. There's no need to make any changes to this

> Tokens: 21,537 sent, 117 received. Cost: $0.07 message, $0.29 session.
> You can use /undo to undo and discard each aider commit.

#### /clear

#### accept cache_prompts in init, put in self.

Certainly! I'll add the `cache_prompts` parameter to the `__init__` method and store it as an instance variable. Here's the change:

aider/coders/base_coder.py
```python
<<<<<<< SEARCH
    def __init__(
        self,
        main_model,
        io,
        repo=None,
        fnames=None,
        read_only_fnames=None,
        show_diffs=False,
        auto_commits=True,
        dirty_commits=True,
        dry_run=False,
        map_tokens=1024,
        verbose=False,
        assistant_output_color="blue",
        code_theme="default",
        stream=True,
        use_git=True,
        cur_messages=None,
        done_messages=None,
        restore_chat_history=False,


 dots and dashes, with a maximum length of 64.
  ///
  /// Required.
  core.String? name;

  /// Describes the parameters to this function in JSON Schema Object format.
  ///
  /// Reflects the Open API 3.03 Parameter Object. string Key: the name of the
  /// parameter. Parameter names are case sensitive. Schema Value: the Schema
  /// defining the type used for the parameter. For function with no parameters,
  /// this can be left unset. Parameter names must start with a letter or an
  /// underscore and must only contain chars a-z, A-Z, 0-9, or underscores with
  /// a maximum length of 64. Example with 1 required and 1 optional parameter:
  /// type: OBJECT properties: param1: type: STRING param2: type: INTEGER
  /// required: - param1
  ///
  /// Optional.
  GoogleCloudAiplatformV1Schema? parameters;

  /// Describes the parameters to the function in JSON Schema format.
  ///
  /// The schema must describe an object where the properties are the parameters
  /// to the function. For example: ``` { "type": "object", "properties": {
  /// "name": { "type": "string" }, "age": { "type": "integer" } },
  /// "additionalProperties": false, "required": ["name", "age"],
  /// "propertyOrdering": ["name", "age"] } ``` This field is mutually exclusive
  /// with `parameters`.
  ///
  /// Optional.
  ///
  /// The values for Object must be JSON objects. It can consist of `num`,
  /// `String`, `bool` and `null` as well as `Map` and `List` values.
  core.Object? parametersJsonSchema;

  /// Describes the output from this function in JSON Schema format.
  ///
  /// Reflects the Open API 3.03 Response Object. The Schema defines the type
  /// used for the response value of the function.
  ///
  /// Optional.
  GoogleCloudAiplatformV1Schema? response;

  /// Describes the output from this function in JSON Schema format.
  ///
  /// The value specified by the schema is the response value of the function.
  /// This field is mutually exclusive with `response`.
  ///
  /// Optional.
  ///
  /// The values for Object must be JSON objects. It can consist of `num`,
  /// `String`, `bool` and `null` as well as `Map` and `List` values.
  core.Object? responseJsonSchema;

  GoogleCloudAiplatformV1FunctionDeclaration({
    this.description,
    this.name,
    this.parameters,
    this.parametersJsonSchema,
    this.response,
    this.responseJsonSchema,
  });

  GoogleCloudAiplatformV1FunctionDeclaration.fromJson(core.Map json_)
    : this(
        description: json_['description'] as core.String?,
        name: json_['name'] as core.String?,
        parameters:
            json_.containsKey('parameters')
                ? GoogleCloudAiplatformV1Schema.fromJson(
                  json_['parameters'] as core.Map<core.String, core.dynamic>,
                )
                : null,
        parametersJsonSchema: json_['parametersJsonSchema'],
        response:
            json_.containsKey('response')
                ? GoogleCloudAiplatformV1Schema.fromJson(
                  json_['response'] as core.Map<core.String, core.dynamic>,
                )
                : null,
        responseJsonSchema: json_['responseJsonSchema'],
      );

  core.Map<core.String, core.dynamic> toJson() => {
    if (description != null) 'description': description!,
    if (name != null) 'name': name!,
    if (parameters != null) 'parameters': parameters!,
    if (parametersJsonSchema != null)
      'parametersJsonSchema': parametersJsonSchema!,
    if (response != null) 'response': response!,
    if (responseJsonSchema != null) 'responseJson


et");

   if ( new_number and
        anw_check(nil, nil, nil, nil, new_number, "Right text inset" )
    ) then
      params.ui.display.tot_name.inset.right = new_number;
      params_refresh();

   else
      refocus_object = HoTT_Params_Frame_TextRight_EditBox;

   end

end

---
--- HoTT_Params_Frame_Alignment_Changed
---

function HoTT_Params_Frame_Alignment_Changed (new_alignment)

   params.ui.display.tot_name.alignment = new_alignment;
   params_refresh();

end

---
--- HoTT_Params_Frame_Scale_Changed
---

function HoTT_Params_Frame_Scale_Changed (new_string)

   local new_number = tonumber(new_string);

   if ( new_number and ( new_number > 0 ) ) then
      params.ui.display.scale = new_number;
      params_refresh();

   else
      message("Scale must be a positive value. Previous value restored.");
      HoTT_Params_Frame_LoadValues();
      refocus_object = HoTT_Params_Frame_Scale_EditBox;
      retval = false;
   end

end

---
--- HoTT_Params_Frame_Drop0_Changed
---

function HoTT_Params_Frame_Drop0_Changed (new_string)

   local new_number = params_frame_int_check(new_string, "No-buff drop");

   if ( new_number ) then
      params.ui.display.drops[0] = new_number;
      params_refresh();

   else
      refocus_object = HoTT_Params_Frame_Drop0_EditBox;

   end

end

---
--- HoTT_Params_Frame_Drop1_Changed
---

function HoTT_Params_Frame_Drop1_Changed (new_string)

   local new_number = params_frame_int_check(new_string, "First-row drop");

   if ( new_number ) then
      params.ui.display.drops[1] = new_number;
      params_refresh();

   else
      refocus_object = HoTT_Params_Frame_Drop1_EditBox;

   end

end

---
--- HoTT_Params_Frame_Drop2_Changed
---

function HoTT_Params_Frame_Drop2_Changed (new_string)

   local new_number = params_frame_int_check(new_string, "Second-row drop");

   if ( new_number ) then
      params.ui.display.drops[2] = new_number;
      params_refresh();

   else
      refocus_object = HoTT_Params_Frame_Drop2_EditBox;

   end

end

---
--- HoTT_Params_Frame_AggroMessage_Changed
---

function HoTT_Params_Frame_AggroMessage_Changed (new_text)

   params.aggro_message = new_text;
   params_refresh();

end

---
--- launch_params_browser
---

-- local
function launch_params_browser ()

   scratch_params = {};

   current_params = params;

   set_deferral_recursively(scratch_params, params,
			    "scratch_params", "current_params");

   params = scratch_params;
   HoTT_Params = scratch_params;

   HoTT_Params_Frame:Show();

end

---
--- HoTT_Params_Frame_OnCancel
---

function HoTT_Params_Frame_OnCancel ()

   HoTT_Params_Frame_LoadValues(); -- to prevent error messaging
   PlaySound("gsTitleOptionExit");
   HideUIPanel(HoTT_Params_Frame);

   params = current_params;
   HoTT_Params = current_params;

   params_refresh();

end

---
--- HoTT_Params_Frame_OnDefaults
---

function HoTT_Params_Frame_OnDefaults ()

   params.aggro_message = default_params.aggro_message;

   -- copy


; Generated with ikazuchi 1.0 by riidefi
; Object File: TrickRabbitSnowCollect
; Segments:
;     .text:       0x80297a28 -> 0x802989ec
;     .data:       0x805b5c60 -> 0x805b5df0
;     .sbss:       0x806b61a0 -> 0x806b61e0
;     .sdata2:     0x806bf228 -> 0x806bf238 (806bf234 -> 806bf238 (size 0004/0x0004) is greedily claimed anonymous data)

; Symbols Defined
; 80297a28 -> 80297a94 __ct__22TrickRabbitSnowCollectFPCc
; 80297a94 -> 80297bc8 init__22TrickRabbitSnowCollectFRC12JMapInfoIter
; 80297bc8 -> 80297cb4 initRabbits__22TrickRabbitSnowCollectFRC12JMapInfoIter
; 80297cb4 -> 80297d08 initTalk__22TrickRabbitSnowCollectFRC12JMapInfoIter
; 80297d08 -> 80297d10 getBaseMtx__22TrickRabbitSnowCollectCFv
; 80297d10 -> 80297d7c setStartPosition__22TrickRabbitSnowCollectFv
; 80297d7c -> 80297de8 setFinishPosition__22TrickRabbitSnowCollectFv
; 80297de8 -> 80297e50 noticeCaught__22TrickRabbitSnowCollectFP15TrickRabbitSnow
; 80297e50 -> 80297ec8 noticeGiveUp__22TrickRabbitSnowCollectFP15TrickRabbitSnow
; 80297ec8 -> 80297f30 startSuccessDemo__22TrickRabbitSnowCollectFv
; 80297f30 -> 80297f5c startFailedDemo__22TrickRabbitSnowCollectFv
; 80297f5c -> 80297fbc exeStartWipeOut__22TrickRabbitSnowCollectFv
; 80297fbc -> 80298044 exeStartWipeIn__22TrickRabbitSnowCollectFv
; 80298044 -> 8029809c exeStartTalk__22TrickRabbitSnowCollectFv
; 8029809c -> 80298184 exeWaitHideSnow__22TrickRabbitSnowCollectFv
; 80298184 -> 802982e0 exeStart__22TrickRabbitSnowCollectFv
; 802982e0 -> 80298358 exeFailedWipeOut__22TrickRabbitSnowCollectFv
; 80298358 -> 802983e8 exeFailedWipeIn__22TrickRabbitSnowCollectFv
; 802983e8 -> 80298470 exeFailedTalk__22TrickRabbitSnowCollectFv
; 80298470 -> 802984dc exeSuccessWipeOut__22TrickRabbitSnowCollectFv
; 802984dc -> 80298578 exeSuccessWipeIn__22TrickRabbitSnowCollectFv
; 80298578 -> 80298624 exeTakeOutStar__22TrickRabbitSnowCollectFv
; 80298624 -> 802986dc exeAppearPowerStar__22TrickRabbitSnowCollectFv
; 802986dc -> 802986e4 noticeGiveUp__26TrickRabbitCollectListenerFP15TrickRabbitSnow
; 802986e4 -> 802986ec noticeCaught__26TrickRabbitCollectListenerFP15TrickRabbitSnow
; 802986ec -> 802986f0 noticeAppear__26TrickRabbitCollectListenerFP15TrickRabbitSnow
; 802986f0 -> 802986f4 noticeStart__26TrickRabbitCollectListenerFP15TrickRabbitSnow
; 802986f4 -> 80298750 __dt__22TrickRabbitSnowCollectFv
; 80298750 -> 802987ec __sinit_\TrickRabbitSnowCollect_cpp
; 802987ec -> 802987fc __ct__Q228NrvTrickRabbitFreeRunCollect32TrickRabbitSnowCollectNrvTryDemoFv
; 802987fc -> 8029880c __ct__Q228NrvTrickRabbitFreeRunCollect29TrickRabbitSnowCollectNrvWaitFv
; 8029880c -> 8029881c __ct__Q228NrvTric


/*	$NetBSD: bootinfo.h,v 1.9 2006/01/25 18:28:26 christos Exp $	*/

/*
 * Copyright (c) 1997
 *	Matthias Drochner.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 */

#include <machine/bootinfo.h>

struct bootinfo {
	int nentries;
	physaddr_t entry[1];
};

extern struct bootinfo *bootinfo;

#define BI_ALLOC(max) (bootinfo = alloc(sizeof(struct bootinfo) \
                                        + ((max) - 1) * sizeof(physaddr_t))) \
                      ->nentries = 0

#define BI_FREE() dealloc(bootinfo, 0)

#define BI_ADD(x, type, size) bi_add((struct btinfo_common *)(x), type, size)

void bi_add(struct btinfo_common *, int, int);
void bi_getbiosgeom(void);
void bi_getmemmap(void);


 relative;
  /* 3 */
  max-width: 100%;
  /* 4 */
  margin: 0;
}
/* Input
 ========================================================================== */
/*
 * Remove the inner padding and cancel buttons in Chrome on OS X and Safari on OS X.
 */
.uk-search-input::-webkit-search-cancel-button,
.uk-search-input::-webkit-search-decoration {
  -webkit-appearance: none;
}
/*
 * Removes placeholder transparency in Firefox.
 */
.uk-search-input::-moz-placeholder {
  opacity: 1;
}
/*
 * 1. Define consistent box sizing.
 * 2. Address margins set differently in Firefox/IE and Chrome/Safari/Opera.
 * 3. Remove `border-radius` in iOS.
 * 4. Change font properties to `inherit` in all browsers
 * 5. Show the overflow in Edge.
 * 6. Remove default style in iOS.
 * 7. Vertical alignment
 * 8. Take the full container width
 * 9. Style
 */
.uk-search-input {
  /* 1 */
  box-sizing: border-box;
  /* 2 */
  margin: 0;
  /* 3 */
  border-radius: 0;
  /* 4 */
  font: inherit;
  /* 5 */
  overflow: visible;
  /* 6 */
  -webkit-appearance: none;
  /* 7 */
  vertical-align: middle;
  /* 8 */
  width: 100%;
  /* 9 */
  border: none;
  color: #666;
}
.uk-search-input:focus {
  outline: none;
}
/* Placeholder */
.uk-search-input::placeholder {
  color: #999;
}
/* Icon (Adopts `uk-icon`)
 ========================================================================== */
/*
 * Position above input
 * 1. Set position
 * 2. Center icon vertically and horizontally
 * 3. Style
 */
.uk-search .uk-search-icon {
  /* 1 */
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  /* 2 */
  display: inline-flex;
  justify-content: center;
  align-items: center;
  /* 3 */
  color: #999;
}
/*
 * Required for `a`.
 */
.uk-search .uk-search-icon:hover {
  color: #999;
}
/*
 * Make `input` element clickable through icon, e.g. if it's a `span`
 */
.uk-search .uk-search-icon:not(a):not(button):not(input) {
  pointer-events: none;
}
/*
 * Position modifier
 */
.uk-search .uk-search-icon-flip {
  right: 0;
  left: auto;
}
/* Default modifier
 ========================================================================== */
.uk-search-default {
  width: 240px;
}
/*
 * Input
 */
.uk-search-default .uk-search-input {
  height: 40px;
  padding-left: 10px;
  padding-right: 10px;
  background: transparent;
  border: 1px solid #e5e5e5;
}
/* Focus */
.uk-search-default .uk-search-input:focus {
  background-color: rgba(0, 0, 0, 0);
  border-color: var(--color-primary);
}
/*
 * Icon
 */
.uk-search-default .uk-search-icon {
  width: 40px;
}
.uk-search-default .uk-search-icon:not(.uk-search-icon-flip) ~ .uk-search-input {
  padding-left: 40px;
}
.uk-search-default .uk-search-icon-flip


c06\u4f18\u5148\u53d7\u76ca                   |  \n| **\u6280\u672f\u9762\u4fe1\u53f7**     | RSI 42.9\u63a5\u8fd1\u8d85\u5356\uff0c Bollinger\u4e0b\u8f68\u652f\u6491 | \u77ed\u671f\u53cd\u5f39\u6982\u7387\u9ad8\uff0c\u957f\u671f\u5747\u7ebf\u4ecd\u5448\u591a\u5934\u6392\u5217       |  \n| **\u4f30\u503c\u4f18\u52bf**       | 2026\u5e74\u52a8\u6001PE=35x\uff08\u884c\u4e1a\u5e73\u574750x\uff09      | \u9ad8\u6210\u957f\u6027\u4e0b\u4f30\u503c\u5177\u5438\u5f15\u529b                     |  \n\n---\n\n#### **\u56db\u3001\u53cd\u9a73\u7a7a\u65b9\u8bba\u70b9\uff1a\u6570\u636e\u9a71\u52a8\u7684\u8fa9\u8bc1\u5206\u6790**  \n1. **\u201c\u6bdb\u5229\u7387\u4e0b\u6ed1\u4e0d\u53ef\u9006\u201d**  \n   - **\u53cd\u9a73**\uff1aQ2\u6bdb\u5229\u738718.7%\u5df2\u73af\u6bd4\u56de\u5347\uff08Q1\u4e3a16.2%\uff09\uff0c4680\u7535\u6c60\u91cf\u4ea7\u540e\u6210\u672c\u518d\u964d10%+\uff0cCybertruck\u4ea7\u80fd\u722c\u5761\u540e\u56fa\u5b9a\u6210\u672c\u644a\u8584\u5c06\u63a8\u52a8Q4\u6bdb\u5229\u7387\u91cd\u8fd420%\u3002  \n\n2. **\u201c\u4e2d\u56fd\u5e02\u573a\u7ade\u4e89\u6324\u538b\u5229\u6da6\u201d**  \n   - **\u53cd\u9a73**\uff1a\u7279\u65af\u62c9\u4e0a\u6d77\u5de5\u5382\u6539\u6b3eModel 3\u6210\u672c\u518d\u964d15%\uff0c\u4e14FSD\u4e2d\u56fd\u8ba2\u9605\u7387\u8d85\u9884\u671f\uff08Q2+30%\uff09\uff0c\u8f6f\u4ef6\u6536\u5165\u53ef\u5bf9\u51b2\u786c\u4ef6\u964d\u4ef7\u538b\u529b\u3002  \n\n3. **\u201c\u9a6c\u65af\u514b\u5206\


else {
		desc->type = CORESIGHT_DEV_TYPE_LINKSINK;
		desc->subtype.link_subtype = CORESIGHT_DEV_SUBTYPE_LINK_FIFO;
		desc->ops = &tmc_etf_cs_ops;
		desc->groups = coresight_etf_groups;
	}

	drvdata->csdev = coresight_register(desc);
	if (IS_ERR(drvdata->csdev))
		return PTR_ERR(drvdata->csdev);

	drvdata->miscdev.name = pdata->name;
	drvdata->miscdev.minor = MISC_DYNAMIC_MINOR;
	drvdata->miscdev.fops = &tmc_fops;
	ret = misc_register(&drvdata->miscdev);
	if (ret)
		goto err_misc_register;

	dev_info(dev, "TMC initialized\n");
	return 0;

err_misc_register:
	coresight_unregister(drvdata->csdev);
	return ret;
}

static int tmc_remove(struct amba_device *adev)
{
	struct tmc_drvdata *drvdata = amba_get_drvdata(adev);

	misc_deregister(&drvdata->miscdev);
	coresight_unregister(drvdata->csdev);
	if (drvdata->config_type == TMC_CONFIG_TYPE_ETR)
		tmc_etr_free_mem(drvdata);
	tmc_etr_bam_exit(drvdata);

	return 0;
}

static struct amba_id tmc_ids[] = {
	{
		.id     = 0x0003b961,
		.mask   = 0x0003ffff,
	},
	{ 0, 0},
};

static struct amba_driver tmc_driver = {
	.drv = {
		.name   = "coresight-tmc",
		.owner  = THIS_MODULE,
	},
	.probe		= tmc_probe,
	.remove		= tmc_remove,
	.id_table	= tmc_ids,
};

module_amba_driver(tmc_driver);

MODULE_LICENSE("GPL v2");
MODULE_DESCRIPTION("CoreSight Trace Memory Controller driver");


KEY, "").let {
            if (it.contains(clazzName)) {
                it.replace("$clazzName ", "").let { result ->
                    Config.writeConfig(WIDGET_AUTO_UPDATE_KEY, result)
                    if (TextUtils.isEmpty(result)) {
                        WorkManager.getInstance().cancelUniqueWork(WIDGET_WORK_NAME)
                    }
                }
            }
        }
    }

    private fun updateAllWidgets(context: Context, sourceClass: Class<out BaseWidgetWorker>?) {
        ZLog.e(TAG, "updateAll: durtaion is :${System.currentTimeMillis() - mlastUpdateAllTime}")
        // 执行一次任务
        if (System.currentTimeMillis() - mlastUpdateAllTime > 60 * 1000) {
            mlastUpdateAllTime = System.currentTimeMillis()
            AAFWorkerManager.enqueueOneTimeUniqueWork(context, WIDGET_WORK_NAME, 0, UpdateAllWork::class.java)
        } else {
            ZLog.e(TAG, "updateAll: durtaion is less than 60000")
            sourceClass?.let { clazz ->
                AAFWorkerManager.enqueueOneTimeWork(context, clazz)
            }
        }
    }

    class UpdateAllWork(context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) {

        private fun updateByName(name: String) {
            ZLog.w(TAG, "updateByName by $name")
            try {
                if (!name.contains("$")) {
                    (Class.forName(name) as? Class<out Worker>)?.let {
                        ZLog.e(TAG, "updateByName :" + it.name)
                        AAFWorkerManager.enqueueOneTimeWork(applicationContext, it)
                    }
                } else {
                    ZLog.e(TAG, "!!!!! updateByName by $name error, Bad name !!!!!")
                    removeFromAutoUpdateList(name)
                }
            } catch (e: java.lang.Exception) {
                removeFromAutoUpdateList(name)
                e.printStackTrace()
                ZLog.e(TAG, "updateByName by $name error")
            }
        }

        override fun doWork(): Result {
            ZLog.w(TAG, "do update all work")
            try {
                Config.readConfig(WIDGET_AUTO_UPDATE_KEY, "").split(" ").distinct().forEach {
                    if (!TextUtils.isEmpty(it)) {
                        updateByName(it)
                    }
                }
                return Result.success()
            } catch (e: java.lang.Exception) {
                e.printStackTrace()
            }
            return Result.failure()
        }
    }

    fun updateAllWidgets(context: Context) {
        updateAllWidgets(context, null)
    }

    fun updateWidget(context: Context, clazz: Class<out BaseWidgetWorker>, canAutoUpdateByOthers: Boolean) {
        ZLog.e(TAG, "updateWidget start:" + clazz.name + ",canAutoUpdateByOthers: $canAutoUpdateByOthers ")
        if (canAutoUpdateByOthers) {
            addToAutoUpdateList(clazz.name)
        } else {
            removeFromAutoUpdateList(clazz.name)
        }
        // 执行一次任务
//        AAFWorkerManager.enqueueOneTimeWork(context, clazz)
    }

    fun enableWidget(context: Context, clazz: Class<out BaseWidgetWorker>) {
        cancelAutoStart(context)
        AAFWorkerManager.enqueueRepeatWork(context, 15 * 60L, clazz)
    }

    fun disableWidget(context: Context, clazz: Class<out Worker>) {
        removeFromAutoUpdateList(clazz.name)
        if (!WidgetTools.hasAddWidget(context)) {
            cancelAutoStart(context)
        }
    }
}
package com.bihe0832.android.framework.ui.main

import android.os.Bundle
import androidx.annotation.LayoutRes
import com.bihe0


;
  }

}
/**
 *
 * PixelFlow | Copyright (C) 2016 Thomas Diewald - http://thomasdiewald.com
 *
 * A Processing/Java library for high performance GPU-Computing (GLSL).
 * MIT License: https://opensource.org/licenses/MIT
 *
 */

package Miscellaneous.DistanceTransform_Voronoi;

import com.thomasdiewald.pixelflow.java.DwPixelFlow;
import com.thomasdiewald.pixelflow.java.imageprocessing.filter.DwFilter;

import processing.core.*;
import processing.opengl.PGraphics2D;

public class DistanceTransform_Voronoi extends PApplet {

  //
  //
  // Distance Transform Demo
  //
  //
  // For each pixel the distance to its nearest obstacle is computed.
  // The obstacles are given by a mask (binary image).
  // The result is called a distance-field or distance map can for example be
  // used to create Voronoi Diagrams, etc...
  //
  // This demo uses an implementation of the JumpFlood-algorithm, which can
  // be executed entirely on the GPU.
  //
  //
  // Other techniques:
  //
  // Distance Transform, CPU ..... http://thomasdiewald.com/blog/?p=1994
  //
  // The same result can be achieved with any other Nearest-Neighbor technique
  // e.g. Space Partitioning Structures like Octree, Kdtree etc...
  //
  // Kd-Tree, CPU (Processing) ... http://thomasdiewald.com/blog/?p=1689
  // Kd-Tree, GPU (WebGL) ........ http://thomasdiewald.com/blog/?p=1825
  //
  //
  //

  boolean START_FULLSCREEN = !true;

  int viewport_w = 1280;
  int viewport_h = 720;
  int viewport_x = 230;
  int viewport_y = 0;

  PGraphics2D pg_mask;
  PGraphics2D pg_color;
  PGraphics2D pg_voronoi;

  DwPixelFlow context;

  public void settings() {
    if(START_FULLSCREEN){
      viewport_w = displayWidth;
      viewport_h = displayHeight;
      viewport_x = 0;
      viewport_y = 0;
      fullScreen(P3D);
    } else {
      size(viewport_w, viewport_h, P3D);
    }
    smooth(0);
  }

  public void setup(){
    surface.setLocation(viewport_x, viewport_y);

    pg_mask = (PGraphics2D) createGraphics(width, height, P2D);
    pg_mask.smooth(0);

    int w = width /4;
    int h = height/4;

    pg_color = (PGraphics2D) createGraphics(w, h, P2D);
    pg_color.smooth(0);


put to the
// respective file.
func Exit() {
	if Handler.vmLogFile != nil {
		Handler.vmLogFile.Close()
		Handler.vmLogFile = nil
	}
	if Handler.memFile != "" {
		Handler.WriteMemProfile(Handler.memFile)
	}
	Handler.StopCPUProfile()
	Handler.StopGoTrace()
	Handler.StopPProf()
}

func validateLogLocation(path string) error {
	if err := os.MkdirAll(filepath.Dir(path), os.ModePerm); err != nil {
		return fmt.Errorf("error creating the directory: %w", err)
	}
	// Check if the path is writable by trying to create a temporary file
	tmp := path + ".temp"
	if f, err := os.Create(tmp); err != nil {
		return err
	} else {
		f.Close()
	}
	return os.Remove(tmp)
}
// Modifications Copyright 2024 The Kaia Authors
// Modifications Copyright 2018 The klaytn Authors
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
//
// This file is derived from consensus/ethash/algorithm_test.go (2018/06/04).
// Modified and improved for the klaytn development.
// Modified and improved for the Kaia development.

package gxhash

import (
	"bytes"
	"reflect"
	"testing"

	"github.com/klaytn/klaytn/common/hexutil"
)

// Tests whether the dataset size calculator works correctly by cross checking the
// hard coded lookup table with the value generated by it.
func TestSizeCalculations(t *testing.T) {
	// Verify all the cache and dataset sizes from the lookup table.
	for epoch, want := range cacheSizes {
		if size := calcCacheSize(epoch); size != want {
			t.Errorf("cache %d: cache size mismatch: have %d, want %d", epoch, size, want)
		}
	}
	for epoch, want := range datasetSizes {
		if size := calcDatasetSize(epoch); size != want {
			t.Errorf("dataset %d: dataset size mismatch: have %d, want %d", epoch, size, want)
		}
	}
}

// Tests that verification caches can be correctly generated.
func TestCacheGeneration(t *testing.T) {
	tests := []struct {
		size  uint64
		epoch uint64
		cache []byte
	}{
		{
			size:  1024,
			epoch: 0,
			cache: hexutil.MustDecode("0x" +
				"7ce2991c951f7bf4c4c1bb119887ee07871eb5339d7b97b8588e85c742de90e5bafd5bbe6ce93a134fb6be9ad3e30db99d9528a2ea7846833f52e9ca119b6b54" +
				"8979480c46e19972bd0738779c932c1b43e665a2fd3122fc3ddb2691f353ceb0ed3e38b8f51fd55b6940290743563c9f8fa88


BAAAAAGAeVhtyYXcAAAAA%2B4kUEk%2F7iMGR3xPcX6iU","lazyWidgetDomainWhitelist":["amazon.com","amazon.ca","amazon.com.mx","amazon.com.br","amazon.co.uk","amazon.de","amazon.it","amazon.sa","amazon.com.tr","amazon.es","amazon.fr","amazon.in","amazon.ae","amazon.nl","amazon.co.jp","amazon.com.au","amazon.sg","amazon.cn"],"signinUrl":"https://www.amazon.com/ap/signin?openid.return_to\u003dhttps%3A%2F%2Fwww.amazon.com%2FAmazon-com-Gift-Card-Holiday-Pop-Up%2Fproduct-reviews%2FB0719C5P56%3Fie%3DUTF8%26reviewerType%3Dall_reviews\u0026openid.identity\u003dhttp%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select\u0026openid.claimed_id\u003dhttp%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select\u0026openid.assoc_handle\u003dusflex\u0026openid.mode\u003dcheckid_setup\u0026openid.ns\u003dhttp%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0","reftagTriggerUrl":"/hz/reviews-render/ajax/reftag-trigger","mobileImageGalleryUrl":"","productInfoUrl":"/hz/reviews-render/ajax/product-info/get/","disableScroll":false}"></span>
  <link rel="stylesheet" href="https://images-na.ssl-images-amazon.com/images/I/01STrEog8JL._RC|017IiNKULqL.css,01LKsGfpclL.css,21uFnoGaROL.css,017IH9bX79L.css,11hlEWdpPvL.css,41PFgSCvLfL.css_.css?AUIClients/DesktopRemoteARPMetaAsset" _h="">
  <script _h="" _cw="6.4">
  (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://images-na.ssl-images-amazon.com/images/I/41HV9xjQoeL._RC|31fOrM4U5KL.js,11PLCo6zxLL.js,21kzbzVTvjL.js,41Ul1U+eUaL.js,31yCl0u2BnL.js,61Jd8mzdi3L.js,41l6Ts6x3oL.js_.js?AUIClients/DesktopRemoteARPMetaAsset');
</script>
  <meta name="description" content="Find helpful customer reviews and review ratings for Amazon.com Gift Card in a Holiday Pop-Up Box at Amazon.com.  Read honest and unbiased product reviews from our users." _h="">
  <meta name="keywords" content="Review, Reviews, Rating, Ratings, Consumer Review, Consumer Reviews, Product Review, Product Reviews


n, N. J. K., Lane, R.,
        Lewis, M., Robinson, E. L., Wagener, T., and Woods, R.: CAMELS-GB: Hydrometeorological time series and landscape
        attributes for 671 catchments in Great Britain, Earth Syst. Sci. Data Discuss.,
        https://doi.org/10.5194/essd-2020-49,  in review, 2020.
    """
    attributes_path = data_dir / 'attributes'

    if not attributes_path.exists():
        raise FileNotFoundError(f"Attribute folder not found at {attributes_path}")

    txt_files = attributes_path.glob('*_attributes.csv')

    # Read-in attributes into one big dataframe
    dfs = []
    for txt_file in txt_files:
        df_temp = pd.read_csv(txt_file, sep=',', header=0, dtype={'gauge_id': str})
        df_temp = df_temp.set_index('gauge_id')

        dfs.append(df_temp)

    df = pd.concat(dfs, axis=1)

    if basins:
        if any(b not in df.index for b in basins):
            raise ValueError('Some basins are missing static attributes.')
        df = df.loc[basins]

    return df

def load_camels_gb_timeseries(data_dir: Path, basin: str) -> pd.DataFrame:
    """Load the time series data for one basin of the CAMELS GB data set.

    Parameters
    ----------
    data_dir : Path
        Path to the CAMELS GB directory. This folder must contain a folder called 'timeseries' containing the forcing
        files for each basin as .csv file. The file names have to start with 'CAMELS_GB_hydromet_timeseries'.
    basin : str
        Basin identifier number as string.

    Returns
    -------
    pd.DataFrame
        Time-indexed DataFrame, containing the time series data (forcings + discharge) data.
    """
    forcing_path = data_dir / 'timeseries'
    if not forcing_path.is_dir():
        raise OSError(f"{forcing_path} does not exist")

    files = list(forcing_path.glob('**/CAMELS_GB_hydromet_timeseries*.csv'))
    file_path = [f for f in files if f"_{basin}_" in f.name]
    if file_path:
        file_path = file_path[0]
    else:
        raise FileNotFoundError(f'No file for Basin {basin} at {file_path}')

    df = pd.read_csv(file_path, sep=',', header=0, dtype={'date': str})
    df["date"] = pd.to_datetime(df["date"], format="%Y-%m-%d")
    df = df.set_index("date")

    return df


al = 0;
        for (var i = 0; i < text.Length; i++)
        {
            switch (text[i])
            {
                case '(':
                    total++;
                    break;

                case ')':
                    if (total > 0)
                    {
                        total--;
                    }
                    else
                    {
                        return false;
                    }
                    break;
            }
        }

        return total == 0;
    }
}


/*
 * Transcoding definitions for CUPS.
 *
 * Copyright 2007-2011 by Apple Inc.
 * Copyright 1997-2006 by Easy Software Products.
 *
 * Licensed under Apache License v2.0.  See the file "LICENSE" for more information.
 */

#ifndef _CUPS_TRANSCODE_H_
#  define _CUPS_TRANSCODE_H_

/*
 * Include necessary headers...
 */

#  include "language.h"

#  ifdef __cplusplus
extern "C" {
#  endif /* __cplusplus */

/*
 * Constants...
 */

#  define CUPS_MAX_USTRING	8192	/* Max size of Unicode string */

/*
 * Types...
 */

typedef unsigned char  cups_utf8_t;	/* UTF-8 Unicode/ISO-10646 unit */
typedef unsigned long  cups_utf32_t;	/* UTF-32 Unicode/ISO-10646 unit */
typedef unsigned short cups_ucs2_t;	/* UCS-2 Unicode/ISO-10646 unit */
typedef unsigned long  cups_ucs4_t;	/* UCS-4 Unicode/ISO-10646 unit */
typedef unsigned char  cups_sbcs_t;	/* SBCS Legacy 8-bit unit */
typedef unsigned short cups_dbcs_t;	/* DBCS Legacy 16-bit unit */
typedef unsigned long  cups_vbcs_t;	/* VBCS Legacy 32-bit unit */
					/* EUC uses 8, 16, 24, 32-bit */

/*
 * Prototypes...
 */

extern int	cupsCharsetToUTF8(cups_utf8_t *dest,
				  const char *src,
				  const int maxout,
				  const cups_encoding_t encoding) _CUPS_API_1_2;
extern int	cupsUTF8ToCharset(char *dest,
				  const cups_utf8_t *src,
				  const int maxout,
				  const cups_encoding_t encoding) _CUPS_API_1_2;
extern int	cupsUTF8ToUTF32(cups_utf32_t *dest,
				const cups_utf8_t *src,
				const int maxout) _CUPS_API_1_2;
extern int	cupsUTF32ToUTF8(cups_utf8_t *dest,
				const cups_utf32_t *src,
				const int maxout) _CUPS_API_1_2;

#  ifdef __cplusplus
}
#  endif /* __cplusplus */

#endif /* !_CUPS_TRANSCODE_H_ */


;; ~text-scale-mode' font width.
            (/ (window-body-width nil t) (window-font-width)))
           (hscroll-offset
            ;; ~window-hscroll' returns columns that are not affected by
            ;; ~text-scale-mode'.  Because of that, we have to recompute the correct
            ;; ~window-hscroll' by multiplying it with a non-scaled value and
            ;; dividing it with a scaled width value, rounding it to the upper
            ;; boundary.  Since there's no way to get unscaled value, we have to get
            ;; a width of a face that is not scaled by ~text-scale-mode', such as
            ;; ~window-divider' face.
            (ceiling (/ (* (window-hscroll) (window-font-width nil 'window-divider))
                        (float (window-font-width)))))
           (line-number-width
            ;; compensate line numbers width
            (if (bound-and-true-p display-line-numbers-mode)
                (- display-line-numbers-width)
              0))
           ;; subtracting 2 for extra space in case some calculations were imprecise
           (threshold (+ window-width hscroll-offset line-number-width -2)))
      (catch 'excessive
        (while (not (eobp))
          (let ((start (point)))
            (save-restriction
              (narrow-to-region start (min (+ start 1 threshold)
                                           (point-max)))
              (forward-line 1))
            (unless (or (bolp)
                        (and (eobp) (<= (- (point) start)
                                        threshold)))
              (throw 'excessive t))))))))

```

This function can calculate window width, and line width, and check if any line in the buffer exceeds the window width screen-wise. By screen-wise I mean that if you've scrolled text to the left, it will begin to return `nil` once all lines don't exceed the right border of the window, thus achieving the described behavior in the diagrams. I then define advice around the `scroll-left` function, and it works pretty good:

```elisp
(define-advice scroll-left (:around (foo &optional arg set-minimum))
  (when (and truncate-lines
             (not (memq major-mode '(vterm-mode term-mode)))
             (truncated-lines-p))
    (funcall foo arg set-minimum)))

```

Though it's not very accurate when using `text-scale-adjust`, as line width is not the same as before, the function, that reports how much the window was scrolled to the left still returns unscaled values. You can see my thoughts in the function's comments. Any suggestions on how to make it more accurate?

\\\*\* u/attentoredaz [🔗](https://www.reddit.com/r/emacs/comments/t3_wqjare/comment/t1_iku77h0) \\\*Votes\* 9

Using [zotra](https://github.com/mpedramfar/zotra), [citar](https://github.com/emacs-citar/citar) and some parts of the Org-cite ecosystem I hacked together a highly experimental but pretty comfortable environment for working with "org-biblatex bibliographies" which are basically like [org-bibtex](http://gewhere.github.io/org-bibtex) but with biblatex entries represented as headings with suitable properties instead of bibtex. I have a function which retrieves a biblatex entry corresponding to an url using zotra and adds a corresponding Org heading with the biblatex fields as properties, and the entry becomes available in Citar as soon as I save the document. Citing these entries then works anywhere, even in the same document with a suitable `#+bibliography: my-org-biblatex-file.org` declaration. Exporting the citations also works with the CSL exporter, no conversion is necessary to a proper biblate


-1.96 1.35-.15 3.82-.44 7.4-.06 3.2.35 4.5 1.5 5.77 2.9 1.02 1.13 1.55 2.8 1.97 3.63-.03-.21-.1-1.2-.17-1.5-.07-.3-.77-1.42-1.12-1.95-.32-.45-1.1-1.49-1.63-1.93-.67-.56-1.5-1.22-2.5-1.22-1.02 0-1.59-.46-1.93-.5-.33-.03.18-.67.28-.32.1.34 1.17.53 1.17.22-.9-.05-.85-.5-.71-.73.29.09.92.26 1.18.25.33-.02 1.48.03 1.89.14.4.11 1.92 2.42 1.84 1.11-.06-1.04-2.08-1.74-3.08-1.96.26.05.88.07 1.29-.17.5-.3.4-.74.3-.92-.09-.17-.54 0-1.07.18s-.74.02-.78-.25c-.03-.22.26-.44.41-.52-.2-.03-.65-.05-.97.07-.39.16-.57.43-.45.52Z"/><path fill="#622915" d="M30.54 51.7c0 .39-.49.5-.73.5-.33-2.84-1.86-3.88-2.53-4.38l3.1-4.63c-.04.46-.13 1.52-.15 2.07-.02.68.3 5.96.3 6.44Z"/><path fill="#605D5B" d="m30.44 43.27.48-4.6v-.93a10.1 10.1 0 0 0-.86 3.08c-.04 1.24-1.32 2-1.65 2.9-.34.9.33 1.28-.45 1.88-.64.48-.72 1.68-.68 2.21a9.01 9.01 0 0 0 1.46-1.61l.01-.01c.3-.56.64-1.2 1.05-1.2.33 0 .56-1.15.64-1.72Z"/><path fill="#674C43" d="M38.73 26.45c-.12.2-.6 1.87-.83 2.68-.6.18-.23-.47-.42-.57-.18-.1-.53.15-1.17.1-.64-.05-.26.2-.26.47 0 .27.05.41-.45.15-.4-.2-.41-.09-.37 0 .06.09.14.26 0 .26-.17 0-.85-.08-1.12.1-.28.2-.41-.1-.74-.1-.32 0-.4.5-.52 0-.13-.48.67-1.07 1-1.28.32-.22.37-.57.68-.6.32-.04.1-.18.41-.43.32-.24.35.23.89.25.54.02.71-.79 1.5-.79s.17-.54.98-.64c.82-.1.57.15.42.4Z"/><path fill="#EF9261" d="M46.14 58.72c.42.02.68-.2.76-.32-.09.02-.32.07-.56.07-.3 0-.82-.21-1.34-.21-.52 0-1.14.7-1.76 1-.5.23-1.34.31-1.71.32.24.03.79.07 1.11 0 .4-.07 1.74-.74 2.28-.86.54-.12.7-.03 1.22 0ZM45 59.66l-3.15.26c.26.35 1.62.83 2.27 1.02.74.11 2.36.27 2.93 0 .71-.34.7-1.02.68-1.19-.01-.17-1.79-.17-2.73-.09Z"/><path fi


/****************************************************************************
*
*                            Open Watcom Project
*
* Copyright (c) 2002-2019 The Open Watcom Contributors. All Rights Reserved.
*    Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
*
*  ========================================================================
*
*    This file contains Original Code and/or Modifications of Original
*    Code as defined in and that are subject to the Sybase Open Watcom
*    Public License version 1.0 (the 'License'). You may not use this file
*    except in compliance with the License. BY USING THIS FILE YOU AGREE TO
*    ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
*    provided with the Original Code and Modifications, and is also
*    available at www.sybase.com/developer/opensource.
*
*    The Original Code and all software distributed under the License are
*    distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
*    EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
*    ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
*    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
*    NON-INFRINGEMENT. Please see the License for the specific language
*    governing rights and limitations under the License.
*
*  ========================================================================
*
* Description:  Implementation of clib internal conversion functions for
*               DOS<->NT date format
*
****************************************************************************/

#include "variety.h"
#include <time.h>
#include <windows.h>
#include "ntext.h"

void __MakeDOSDT( FILETIME *NT_stamp, unsigned short *d, unsigned short *t )
{
    FILETIME local_ft;

    FileTimeToLocalFileTime( NT_stamp, &local_ft );
    FileTimeToDosDateTime( &local_ft, d, t );
}

void __FromDOSDT( unsigned short d, unsigned short t, FILETIME *NT_stamp )
{
    FILETIME local_ft;

    DosDateTimeToFileTime( d, t, &local_ft );
    LocalFileTimeToFileTime( &local_ft, NT_stamp );
}


>

## Valid methods

[GET (/serviceconfigs/{scid}/sessiontemplates/{sessionTemplateName})](uri-serviceconfigsscidsessiontemplatessessiontemplatenameget.md)

  Retrieves a set of session template names.

## See also

##### Parent

[Session Directory URIs](atoc-reference-sessiondirectory.md)

   ---
title: Session Directory URIs
assetID: e3ba951d-b21f-0014-c358-2603d549d118
permalink: en-us/docs/xboxlive/rest/atoc-reference-sessiondirectory.html

description: ' Session Directory URIs'
ms.date: 10/12/2017
ms.topic: article
keywords: xbox live, xbox, games, uwp, windows 10, xbox one
ms.localizationpriority: medium
---
# Session Directory URIs

This section provides detail about the Universal Resource Identifier (URI) addresses and associated Hypertext Transport Protocol (HTTP) methods from Xbox Live Services for the Multiplayer Session Directory (MPSD).

> [!NOTE]
> Only titles for games running on an Xbox 360, on a Windows Phone device, or on Xbox.com can use the session directory URIs.

  * [Domain](#ID4EUB)
  * [Service version](#ID4EZB)
  * [System objects and properties](#ID4EAC)
  * [Handles](#ID4EBE)

## Domain
sessiondirectory.xboxlive.com

## Service version

Callers of these REST URIs must pass the value 104/105 or later for X-Xbl-Contract-Version, the HTTP header that specifies the service version of Entertainment Discovery Services (EDS).

## System objects and properties

For configuration of its sessions and templates, the MPSD uses a number of session JSON objects that conform with fixed schemas that the directory enforces and interprets. During calls to the methods supported by the various session directory URIs, these objects are validated and merged, based on the supported schemas. The main JSON objects associated with multiplayer configuration are:

   *  [MultiplayerActivityDetails (JSON)](../../json/json-multiplayeractivitydetails.md)
   *  [MultiplayerSession (JSON)](../../json/json-multiplayersession.md)
   *  [MultiplayerSessionReference (JSON)](../../json/json-multiplayersessionreference.md)
   *  [MultiplayerSessionRequest (JSON)](../../json/json-multiplayersessionrequest.md)

Associated JSON objects that are concerned specifically with games are:

   *  [GameMessage (JSON)](../../json/json-gamemessage.md)
   *  [GameResult (JSON)](../../json/json-gameresult.md)
   *  [GameSession (JSON)](../../json/json-gamesession.md)
   *  [GameSessionSummary (JSON)](../../json/json-gamesessionsummary.md)

## Handles

For 2015 Multiplayer only, sessions can be accessed through session handles. Several URIs have been added to provide functionality to support handles.

## In this section

[/handles](uri-handles.md)

  Supports a POST operation to set the session for the user's current activity to be displayed in Xbox One dashboard user experience, and to invite session members if required.

[/handles/{handleId}](uri-handleshandleid.md)

  Supports DELETE and GET operations for session handles specified by identifier.

[/handles/{handleId}/session](uri-handleshandleidsession.md)

  Supports PUT and GET operations for a session, using handle dereferencing.

[/handles/query](uri-handlesquery.md)

  Supports POST operations to crea


1.6em; color:#E25D46;'>  1518 Bar and Grill <\/a><\/h2>
 1518 Sansom St, Philadelphia, PA 19102 <\/p>","
  Air Grille Garden at Dilworth Park <\/a><\/h2>
 1 S 15th St, Philadelphia, PA 19102 <\/p>","
  Ancient Spirits & Grille <\/a><\/h2>
 1726 Chestnut St, Philadelphia, PA 19103 <\/p>","
  ArtBar at Sonesta Hotel <\/a><\/h2>
 1800 Market St, Philadelphia, PA 19103 <\/p>","
  The Balcony Bar at the Kimmel Center <\/a><\/h2>
 300 S Broad St, Philadelphia, PA 19102 <\/p>","
  Bank and Bourbon <\/a><\/h2>
 1200 Market St, Philadelphia, PA 19107 <\/p>","<h2 style='font-family: Red Hat Text, sans-serif; font-size: 1.6em; color:#E25D


DelimitedBlock"},
            {token: "tableBlock", regex: /\!/}
        ],
        "macros": [
            {token: "macro", regex: /{[\w\-$]+}/},
            {token: ["text", "string", "text", "constant.character", "text"], regex: /({)([\w\-$]+)(:)?(.+)?(})/},
            {token: ["text", "markup.list.macro", "keyword", "string"], regex: /(\w+)(footnote(?:ref)?::?)([^\s\[]+)?(\[.*?\])?/},
            {token: ["markup.list.macro", "keyword", "string"], regex: /([a-zA-Z\-][\w\.\/\-]*::?)([^\s\[]+)(\[.*?\])?/},
            {token: ["markup.list.macro", "keyword"], regex: /([a-zA-Z\-][\w\.\/\-]+::?)(\[.*?\])/},
            {token: "keyword",     regex: /^:.+?:(?= |$)/}
        ],

        "quotes": [
            {token: "string.italic", regex: /__[^_\s].*?__/},
            {token: "string.italic", regex: quoteRule("_")},

            {token: "keyword.bold", regex: /\*\*[^*\s].*?\*\*/},
            {token: "keyword.bold", regex: quoteRule("\\*")},

            {token: "literal", regex: quoteRule("\\+")},
            {token: "literal", regex: /\+\+[^+\s].*?\+\+/},
            {token: "literal", regex: /\$\$.+?\$\$/},
            {token: "literal", regex: quoteRule("`")},

            {token: "keyword", regex: quoteRule("^")},
            {token: "keyword", regex: quoteRule("~")},
            {token: "keyword", regex: /##?/},
            {token: "keyword", regex: /(?:\B|^)``|\b''/}
        ]

    };

    function quoteRule(ch) {
        var prefix = /\w/.test(ch) ? "\\b" : "(?:\\B|^)";
        return prefix + ch + "[^" + ch + "].*?" + ch + "(?![\\w*])";
    }

    var tokenMap = {
        macro: "constant.character",
        tableBlock: "doc.comment",
        titleUnderline: "markup.heading",
        singleLineTitle: "markup.heading",
        pageBreak: "string",
        option: "string.regexp",
        otherBlock: "markup.list",
        literal: "support.function",
        optionalTitle: "constant.numeric",
        escape: "constant.language.escape",
        link: "markup.underline.list"
    };

    for (var state in this.$rules) {
        var stateRules = this.$rules[state];
        for (var i = stateRules.length; i--; ) {
            var rule = stateRules[i];
            if (rule.include || typeof rule == "string") {
                var args = [i, 1].concat(this.$rules[rule.include || rule]);
                if (rule.noEscape) {
                    args = args.filter(function(x) {
                        return !x.next;
                    });
                }
                stateRules.splice.apply(stateRules, args);
            } else if (rule.token in tokenMap) {
                rule.token = tokenMap[rule.token];
            }
        }
    }
};
oop.inherits(AsciidocHighlightRules, TextHighlightRules);

exports.AsciidocHighlightRules = AsciidocHighlightRules;
});

ace.define("ace/mode/folding/asciidoc",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) {
"use strict";

var oop = require("../../lib/oop");
var BaseFoldMode = require("./fold_mode").FoldMode;
var Range = require("../../range").Range;

var FoldMode = exports.FoldMode = function() {};
oop.inherits(FoldMode, BaseFoldMode);

(function() {
    this.foldingStartMarker = /^(?:\|={10,}|[\.\/=\-~^+]{4,}\s*$|={1,5} )/;
    this.singleLineHeadingRe = /^={1,5}(?=\s+\S)/;


= "5244",
                https_port = nil,
                ftp_port = "5221",
                sftp_port = "5222",
                s3_port = "5246"
            }

            local content = fs.readfile(config_file)
            if content then
                local json_config = json_decode(content)
                if json_config then
                    if json_config.scheme then
                        if json_config.scheme.http_port then
                            ports.http_port = tostring(json_config.scheme.http_port)
                        end
                        if json_config.scheme.https_port and json_config.scheme.https_port > 0 then
                            ports.https_port = tostring(json_config.scheme.https_port)
                        end
                    end
                    if json_config.ftp and json_config.ftp.listen then
                        local ftp_listen = json_config.ftp.listen
                        local ftp_port = ftp_listen:match(":(%d+)")
                        if ftp_port then
                            ports.ftp_port = ftp_port
                        end
                    end
                    if json_config.sftp and json_config.sftp.listen then
                        local sftp_listen = json_config.sftp.listen
                        local sftp_port = sftp_listen:match(":(%d+)")
                        if sftp_port then
                            ports.sftp_port = sftp_port
                        end
                    end
                    if json_config.s3 and json_config.s3.port then
                        ports.s3_port = tostring(json_config.s3.port)
                    end
                end
            end

            local dest_ports = ports.http_port .. " " .. ports.ftp_port .. " " .. ports.sftp_port .. " " .. ports.s3_port
            if ports.https_port then
                dest_ports = dest_ports .. " " .. ports.https_port
            end

            -- Add updated firewall rule
            uci:set("firewall", rule_name, "rule")
            uci:set("firewall", rule_name, "name", "openlist")
            uci:set("firewall", rule_name, "src", "wan")
            uci:set("firewall", rule_name, "proto", "tcp")
            uci:set("firewall", rule_name, "dest_port", dest_ports)
            uci:set("firewall", rule_name, "target", "ACCEPT")
            uci:set("firewall", rule_name, "enabled", "1")

            -- Commit firewall changes
            uci:commit("firewall")

            -- Restart firewall to apply changes
            sys.call("/etc/init.d/firewall restart >/dev/null 2>&1 &")
        end
    end

    -- Apply settings - restart service if it's running
    if success then
        local status_result = {}
        action_status_internal(status_result)
        if status_result.running then
            -- Service is running, restart it to apply new settings
            sys.call("sleep 1 && /etc/init.d/openlistui restart &")
        end
    end

    result.success = success
    if not success then
        result.message = error_msg
        log_openlistui_operation("SETTINGS_SAVE_FAILED", error_msg)
    else
        result.message = "Settings saved successfully"
        log_openlistui_operation("SETTINGS_SAVE_SUCCESS", "Configuration settings saved and applied")
    end

    http.prepare_content("application/json")
    http.write(json_encode(result))
end

-- Generate random password
function action_generate_password()
    local result = {}

    -- Generate a secure random password (12 characters, alphanumeric + special chars)
    local chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01


/*  Merge/TextColon.h
 *
 *  Copyright (C) 2016  Jaye Evins <evins@snaught.com>
 *
 *  This file is part of gLabels-qt.
 *
 *  gLabels-qt is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  gLabels-qt is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with gLabels-qt.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef merge_TextColon_h
#define merge_TextColon_h

#include "Text.h"

namespace glabels
{
	namespace merge
	{

		///
		/// TextColon Merge Backend
		///
		struct TextColon : public Text
		{

			/////////////////////////////////
			// Life Cycle
			/////////////////////////////////
		private:
			TextColon();
			TextColon( const TextColon* merge );
			~TextColon() override = default;

			/////////////////////////////////
			// Object duplication
			/////////////////////////////////
		public:
			TextColon* clone() const override;

			/////////////////////////////////
			// Static methods
			/////////////////////////////////
		public:
			static QString id();
			static Merge* create();

		};

	}
}

#endif // merge_TextColon_h


e
      function openPopup(data) {
        scrollToTop();
        popup = document.getElementById('popup_details');
        popup.style.position = 'absolute';
        popup.style.display = 'block'; // Show the popup
        document.getElementById("main_ui").style.display = 'none';
        popup.style.backgroundColor = 'rgba(0,0,0,0)';

        // cf = change function
        cfWaterValue(data.number, data.water_valve_status);
        cfFertilizerValue(data.number, data.fertilizer_valve_status);
        cfName(data.number, data.name);
        cfMode(data.number, data.mode);
        cfTime(data.number, data.morning_start, data.morning_end, data.evening_start, data.evening_end);
        cfThreshold(data.number, data.humidityThreshold, data.moistureThreshold, data.maxWateringLight);
        //popupText.textContent = `You clicked on ${sectionId}`; // Display section ID in popup
      }

      // Close the popup
      function closePopup() {
        popup.style.display = 'none';
      }

      // Close the popup if the user clicks outside the popup content
      window.onclick = function(event) {
        // var popup = document.getElementById('popup');
        if (event.target == popup) {
          document.getElementById("main_ui").style.display = 'block';
          closePopup();
        }
      }

    </script>

{% extends "base.html" %}
{% load projecttags %}
{% load project_url_tag %}
{% load objects_to_dictionaries_filter %}
{% load humanize %}
{% load field_values_filter %}
{% block pagecontent %}

  You have deleted 1 build: {{build.get_sorted_target_list|field_values:"target"|join:", "}} {{build.machine}} completed on {{build.completed_


).NotTo(HaveOccurred())
		cred := recorder.TokenCredential()
		networkClientOption := clientOption
		networkClientOption.Telemetry.ApplicationID = "ccm-network-client"
		vnetClient, err = armnetwork.NewVirtualNetworksClient(subscriptionID, cred, &arm.ClientOptions{
			ClientOptions: networkClientOption,
		})

		vnet := armnetwork.VirtualNetwork{
			Location: to.Ptr(location),
			Properties: &armnetwork.VirtualNetworkPropertiesFormat{
				AddressSpace: &armnetwork.AddressSpace{
					AddressPrefixes: []*string{
						to.Ptr("10.0.0.0/16"),
					},
				},
				Subnets: []*armnetwork.Subnet{
					{
						Name: to.Ptr("testSubnet"),
						Properties: &armnetwork.SubnetPropertiesFormat{
							AddressPrefix: to.Ptr("10.0.0.0/24"),
						},
					},
				},
			},
		}
		poller, err := vnetClient.BeginCreateOrUpdate(ctx, resourceGroupName, "testVnet", vnet, nil)
		Expect(err).ShouldNot(HaveOccurred())
		resp, err := poller.PollUntilDone(ctx, &runtime.PollUntilDoneOptions{
			Frequency: 1 * time.Second,
		})
		vnet = resp.VirtualNetwork
		Expect(err).ShouldNot(HaveOccurred())
		Expect(vnet).ShouldNot(BeNil())
		Expect(*vnet.Name).To(Equal("testVnet"))
		subnet = vnet.Properties.Subnets[0]
		newResource = &armnetwork.Interface{
			Location: to.Ptr(location),
			Properties: &armnetwork.InterfacePropertiesFormat{
				IPConfigurations: []*armnetwork.InterfaceIPConfiguration{
					{
						Name: to.Ptr("ipConfig1"),
						Properties: &armnetwork.InterfaceIPConfigurationPropertiesFormat{
							PrivateIPAllocationMethod: to.Ptr(armnetwork.IPAllocationMethodDynamic),
							Subnet:                    subnet,
						},
					},
				},
			},
		}
	}
	afterAllFunc = func(ctx context.Context) {
		poller, err := vnetClient.BeginDelete(ctx, resourceGroupName, "testVnet", nil)
		Expect(err).ShouldNot(HaveOccurred())
		_, err = poller.PollUntilDone(ctx, &runtime.PollUntilDoneOptions{
			Frequency: 1 * time.Second,
		})
		Expect(err).ShouldNot(HaveOccurred())
	}
}
/*
Copyright 2022 The Kubernetes Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package extensionconfig

import (
	"context"
	"fmt"
	"os"
	"testing"

	corev1 "k8s.io/api/core/v1"
	"k8s.io/apimachinery/pkg/labels"
	"k8s.io/apimachinery/pkg/selection"
	ctrl "sigs.k8s.io/controller-runtime"
	"sigs.k8s.io/controller-runtime/pkg/cache"
	"sigs.k8s.io/controller-runtime/pkg/client"

	clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"
	"sigs.k8s.io/cluster-api/api/core/v1beta2/index"
	"sigs.k8s.io/cluster


  * Added in protocol version 60002.
  *
  * <Reference>
  * https://bitcoin.org/en/developer-reference#mempool
  *
  * <Protocol>
  * No payload.
  */
object MempoolCodec : ProtocolMessageCodec<Mempool> {
  override val command = "mempool"
  override val clazz = Mempool::class.java

  private val codec = Codecs.provide(Mempool())
  override fun transcode(io : CodecInputOutputStream, obj : Mempool? ) : Mempool? {
    return codec.transcode(io, obj)
  }
}

/**
  * <Description>
  * The ping message helps confirm that the receiving peer is still connected.
  * If a TCP/IP error is encountered when sending the ping message (such as a connection timeout),
  * the transmitting node can assume that the receiving node is disconnected.
  *
  * The response to a ping message is the pong message.
  *
  * Before protocol version 60000, the ping message had no payload.
  * As of protocol version 60001 and all later versions, the message includes a single field, the nonce.
  *
  * <Reference>
  * https://bitcoin.org/en/developer-reference#ping
  *
  * <Protocol>
  *  0094102111e2af4d ... Nonce
  */
object PingCodec : ProtocolMessageCodec<Ping> {
  override val command = "ping"
  override val clazz = Ping::class.java

  override fun transcode(io : CodecInputOutputStream, obj : Ping? ) : Ping? {
    val nonce = Codecs.UInt64L.transcode(io, obj?.nonce)

    if (io.isInput) {
      return Ping(
        nonce!!
      )
    }
    return null
  }
}

/**
  * <Description>
  *
  * Added in protocol version 60001 as described by BIP31.
  *
  * The pong message replies to a ping message, proving to the pinging node
  * that the ponging node is still alive. Bitcoin Core will, by default,
  * disconnect from any clients which have not responded
  * to a ping message within 20 minutes.
  *
  * To allow nodes to keep track of latency, the pong message sends back
  * the same nonce received in the ping message it is replying to.
  *
  * <Reference>
  * https://bitcoin.org/en/developer-reference#pong
  *
  * <Protocol>
  *  0094102111e2af4d ... Nonce
  */
object PongCodec : ProtocolMessageCodec<Pong> {
  override val command = "pong"
  override val clazz = Pong::class.java

  override fun transcode(io : CodecInputOutputStream, obj : Pong? ) : Pong? {
    val nonce = Codecs.UInt64L.transcode(io, obj?.nonce)

    if (io.isInput) {
      return Pong(
        nonce!!
      )
    }
    return null
  }
}

internal val RejectTypeCodec : Codec<RejectType> =
  Codecs.mappedEnum(Codecs.Byte, // BUGBUG : Codec type changed UInt8 to Byte
    mapOf(
      RejectType.REJECT_MALFORMED to 0x01.toByte(),
      RejectType.REJECT_INVALID to 0x10.toByte(),
      RejectType.REJECT_OBSOLETE to 0x11.toByte(),
      RejectType.REJECT_DUPLICATE to 0x12.toByte(),
      RejectType.REJECT_NONSTANDARD to 0x40.toByte(),
      RejectType.REJECT_DUST to 0x41.toByte(),
      RejectType.REJECT_INSUFFICIENTFEE to 0x42.toByte(),
      RejectType.REJECT_CHECKPOINT to 0x43.toByte()
    )
  )

/**
  * <Description>
  * Added in protocol version 70002 as described by BIP61.
  *
  * The reject message informs the receiving node th


rimitive.bool.html">bool
[src]

impl<Ret, A, B, C, D, E, F, G, H> PartialEq<unsafe extern "C" fn(A, B, C, D, E, F, G, H) -> Ret> for unsafe extern "C" fn(A, B, C, D, E, F, G, H) -> Ret
1.4.0[src]

pub fn eq(
    &self,
    other: &unsafe extern "C" fn(A, B, C, D, E, F, G, H) -> Ret
) -> bool
[src]

impl<Ret, A, B, C, D, E, F, G, H> PartialEq<unsafe extern "C" fn(A, B, C, D, E, F, G, H, ...) -> Ret> for unsafe extern "C" fn(A,


些日志文件重新输出到 sidecar 的 stdout、stderr，就能继续使用第一种方案。

方案具体工作原理：

![](https://my-img.javaedge.com.cn/javaedge-blog/2024/07/d985d80a4c0ca56779d1c7f57e04ce1d.png)
比如，现在我的应用 Pod 只有一个容器，它会把日志输出到容器里的/var/log/1.log 和2.log 这两个文件里。这个 Pod 的 YAML 文件如下所示：

```yaml
apiVersion: v1
kind: Pod
metadata:
  name: counter
spec:
  containers:
  - name: count
    image: busybox
    args:
    - /bin/sh
    - -c
    - >
      i=0;
      while true;
      do
        echo "$i: $(date)" >> /var/log/1.log;
        echo "$(date) INFO $i" >> /var/log/2.log;
        i=$((i+1));
        sleep 1;
      done
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  volumes:
  - name: varlog
    emptyDir: {}
```

在这种情况下，你用 kubectl logs 命令是看不到应用的任何日志的。而且我们前面讲解的、最常用的方案一，也是没办法使用的。

那么这个时候，我们就可以为这个 Pod 添加两个 sidecar容器，分别将上述两个日志文件里的内容重新以 stdout 和 stderr 的方式输出出来，这个 YAML 文件的写法如下所示：

```yaml
apiVersion: v1
kind: Pod
metadata:
  name: counter
spec:
  containers:
  - name: count
    image: busybox
    args:
    - /bin/sh
    - -c
    - >
      i=0;
      while true;
      do
        echo "$i: $(date)" >> /var/log/1.log;
        echo "$(date) INFO $i" >> /var/log/2.log;
        i=$((i+1));
        sleep 1;
      done
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  - name: count-log-1
    image: busybox
    args: [/bin/sh, -c, 'tail -n+1 -f /var/log/1.log']
    volumeMounts:
    - name


r W with circumflex",374:"Latin capital letter Y with circumflex",373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark",hellip:"Horizontal ellipsis",
trade:"Trade mark sign",9658:"Black right-pointing pointer",bull:"Bullet",rarr:"Rightwards arrow",rArr:"Rightwards double arrow",hArr:"Left right double arrow",diams:"Black diamond suit",asymp:"Almost equal to"});/*
 Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
CKEDITOR.plugins.setLang("specialchar","oc",{euro:"Simbòl èuro",lsquo:"Vergueta simpla dobrenta",rsquo:"Vergueta simpla tampanta",ldquo:"Vergueta dobla dobrenta",rdquo:"Vergueta dobla tampanta",ndash:"Jonhent semi-quadratin",mdash:"Jonhent quadratin",iexcl:"Punt d'exclamacion inversat",cent:"Simbòl cent",pound:"Simbòl Liura sterling",curren:"Simbòl monetari",yen:"Simbòl ièn",brvbar:"Barra verticala separada",sect:"Signe de seccion",uml:"Trèma",copy:"Simbòl Copyright",ordf:"Indicador ordinal femenin",
laquo:"Vergueta francesa dobrenta",not:"Croquet de negacion",reg:"Simbòl de marca depausada",macr:"Macron",deg:"Simbòl gra",sup2:"Exponent 2",sup3:"Exponent 3",acute:"Accent agut",micro:"Simbòl micro",para:"Simbòl pè de mòsca",middot:"Punt median",cedil:"Cedilha",sup1:"Exponent 1",ordm:"Indicador ordenal masculin",raquo:"Vergueta francesa tampanta",frac14:"Fraccion un quart",frac12:"Fraccion un mièg",frac34:"Fraccion tres quarts",iquest:"Punt d'interrogacion inversat",Agrave:"A accent grèu majuscula",
Aacute:"A accent agut majuscula",Acirc:"A accent circonflèxe majuscula",Atilde:"A caron majuscula",Auml:"A trèma majuscula",Aring:"A redond majuscula",AElig:"Ligatura Æ majuscula",Ccedil:"C cédille majuscula",Egrave:"E accent grèu majuscula",Eacute:"E accent agut majuscula",Ecirc:"E accent circonflèxe majuscula",Euml:"E trèma majuscula",Igrave:"I accent grèu majuscula",Iacute:"I accent agut majuscula",Icirc:"I accent circonflèxe majuscula",Iuml:"I trèma majuscula",ETH:"Letra majuscula islandaise ED",
Ntilde:"N caron majuscula",Ograve:"O accent grèu majuscula",Oacute:"O accent agut majuscula",Ocirc:"O accent circonflèxe majuscula",Otilde:"O caron majuscula",Ouml:"O trèma majuscula",times:"Simbòl de multiplicacion",Oslash:"O raiat majuscula",Ugrave:"U accent grèu majuscula",Uacute:"U accent agut majuscula",Ucirc:"U accent circonflèxe majuscula",Uuml:"U trèma majuscula",Yacute:"Y accent agut majuscula",THORN:"Letra islandesa thorn majuscula",szlig:"Letra minuscula alemanda S dur",agrave:"A accent grèu minuscula",
aacute:"A accent agut minuscula",acirc:"A accent circonflèxe minuscula",atilde:"A tilda minuscula",auml:"A trèma minuscula",aring:"A redond minuscula",aelig:"Ligatura Æ minuscula",ccedil:"C cédille minuscula",egrave:"E accent grèu minuscula",eacute:"E accent agut minuscula",ecirc:"E accent circonflèxe minuscula",euml:"E trèma minuscula",igrave:"I accent grèu minuscula",iacute:"I accent agut minuscula",icirc:"I accent circonflèxe minuscula",iuml:"i minuscula trèma",eth:"Letra minuscula island