_INPUT_FULL;

    if (m_VideoFrameQueue.Add(0, pData, 0, 0))
    {
        err = AMF_OK;
    }

    return err;
}

//-------------------------------------------------------------------------------------------------
AMF_RESULT  AMFZCamLiveStreamImpl::AMFOutputZCamLiveStreamImpl::GetAudioData(AMFData** ppData)
{
    AMF_RETURN_IF_FALSE(m_pHost != NULL, AMF_UNEXPECTED, L"QueryOutput() - Host not Initialized");
    AMF_RESULT  err = AMF_REPEAT;

    AMF_AUDIO_FORMAT sampleFormat = AMFAF_FLTP;
    amf_int32 samples = 1024;
    amf_int32 sampleRate = 44100;
    amf_int32 channels = 2;
    amf_int64 audioLength = 10000000LL * samples / sampleRate;
    //audio
    amf_int64 timestamp = amf_high_precision_clock();
    if(m_audioTimeStamp == -1LL)
    {
        m_audioTimeStamp = timestamp;
    }
    timestamp -= m_audioTimeStamp;

    if (timestamp  > m_ptsLast - audioLength / 3 )
    {
        AMFAudioBufferPtr pAudioBuffer;
        err = m_pHost->m_pContext->AllocAudioBuffer(AMF_MEMORY_HOST, sampleFormat, samples, sampleRate, channels, &pAudioBuffer);
        if (AMF_OK == err && pAudioBuffer)
        {
            pAudioBuffer->SetPts(m_ptsLast);
            pAudioBuffer->SetDuration(audioLength);
            m_ptsLast += audioLength;
            *ppData = pAudioBuffer.Detach();
            err = AMF_OK;
        }
    }
    else
    {
        err = AMF_REPEAT;
    }

    return err;
}
// AMFZCamLiveStreamImpl
//-------------------------------------------------------------------------------------------------
AMFZCamLiveStreamImpl::AMFZCamLiveStreamImpl(AMFContext* pContext) :
    m_pContext(pContext),
    m_frameCount(0),
    m_bForceEof(false),
    m_bTerminated(true),
    m_ZCamPollingThread(this),
    m_streamCount(4),
    m_streamActive(-1),
    m_videoMode(CAMLIVE_MODE_ZCAM_2K7P30),
    m_audioMode(CAM_AUDIO_MODE_SILENT)
{
    m_OutputStreams.clear();
    AMFPrimitivePropertyInfoMapBegin
        AMFPropertyInfoInt64(ZCAMLIVE_STREAMCOUNT, ZCAMLIVE_STREAMCOUNT, m_streamCount, 0, 32, false),
        AMFPropertyInfoSize(ZCAMLIVE_VIDEO_FRAMESIZE, ZCAMLIVE_VIDEO_FRAMESIZE, AMFConstructSize(2704, 1520), AMFConstructSize(720, 480), AMFConstructSize(7680, 7680), false),
        AMFPropertyInfoDouble(ZCAMLIVE_VIDEO_FRAMERATE, ZCAMLIVE_VIDEO_FRAMERATE, 30.0, 0., 100000., false),
        AMFPropertyInfoInt64(ZCAMLIVE_VIDEO_BIT_RATE, ZCAMLIVE_VIDEO_BIT_RATE, 30000000, 0, 300000000, false),
        AMFPropertyInfoInt64(ZCAMLIVE_STREAM_FRAMECOUNT, ZCAMLIVE_STREAM_FRAMECOUNT, 0, 0, LLONG_MAX, true),
        AMFPropertyInfoInt64(ZCAMLIVE_STREAM_ACTIVE_CAMERA, ZCAMLIVE_STREAM_ACTIVE_CAMERA, -1, -1, 256, true),
        AMFPropertyInfoInt64(ZCAMLIVE_STREAM_FRAMECOUNT, ZCAMLIVE_STREAM_FRAMECOUNT, 0, 0, LLONG_MAX, true),
        AMFPropertyInfoWString(ZCAMLIVE_CODEC_ID, ZCAMLIVE_C


c(addStatusAsync23.asyncId);
//
//   await Future.delayed(Duration(seconds: 2));
//
//   pipeline.completeAsync(addStatusAsync1.asyncId);
//
//   await Future.delayed(Duration(seconds: 10));
// }import 'dart:io';
import 'package:dotenv/dotenv.dart';
import 'package:lite_agent_core_dart/lite_agent_core.dart';
import 'package:lite_agent_core_dart/lite_agent_service.dart';
import 'package:opentool_dart/opentool_dart.dart';
import '../custom_driver/mock_driver.dart';
import '../listener.dart';

/// [IMPORTANT] Prepare:
/// 1. Some OpenSpec json file, according to `/example/json/open*/*.json`, which is callable.
/// 2. Run your tool server, which is described in json file.
/// 3. Add LLM baseUrl and apiKey to `.env` file
String prompt = "Add text `Hello world`.";

AgentService agentService = AgentService();

Future<void> main() async {
  CapabilityDto capabilityDto = CapabilityDto(
      llmConfig: _buildLLMConfig(),
      systemPrompt: _buildSystemPrompt(),
      openSpecList: await _buildOpenSpecList()
  );

  print("[CapabilityDto] " + capabilityDto.toJson().toString());

  List<ToolDriver> customToolDriverList = await _buildCustomToolDriverList();

  SessionDto sessionDto = await agentService.initSession(
    capabilityDto,
    listen,
    /// If needed, add customToolDriverList here, for preset tools
    customToolDriverList: customToolDriverList
  );

  print("[SessionDto] " + sessionDto.toJson().toString());

  String taskId = uniqueId();
  UserTaskDto userTaskDto = UserTaskDto(taskId: taskId, contentList: [ContentDto(type: ContentType.TEXT, message: prompt)]);
  await agentService.startSession(sessionDto.sessionId, userTaskDto);

  print("[prompt] " + prompt);

  await sleep(10);

  SessionTaskDto sessionTaskDto = SessionTaskDto(sessionId: sessionDto.sessionId);
  await agentService.stopSession(sessionTaskDto);
  print("[stopSession] ");

  await sleep(5);

  await agentService.clearSession(sessionDto.sessionId);
  print("[clearSession] ");
}

Future<void> sleep(int seconds) async {
  for (int i = seconds; i > 0; i--) {
    print(i);
    await Future.delayed(Duration(seconds: 1));
  }
}

LLMConfigDto _buildLLMConfig() {
  DotEnv env = DotEnv();
  env.load(['example/.env']);

  return LLMConfigDto(
    baseUrl: env["baseUrl"]!,
    apiKey: env["apiKey"]!,
    model: "gpt-4o-mini",
  );
}

/// Use Prompt engineering to design SystemPrompt
/// https://platform.openai.com/docs/guides/prompt-engineering
String _buildSystemPrompt() {
  return 'You are a tools caller, who can call storage API.';
}

Future<List<OpenSpecDto>> _buildOpenSpecList() async {
  String folder = "${Directory.current.path}${Platform.pathSeparator}example${Platform.pathSeparator}json${Platform.pathSeparator}openrpc";
  List<String> fileNameList = [
    "json-rpc-book.json"

    /// you can add more tool spec json file.
    // "json-rpc-food.json"
  ];

  List<OpenSpecDto> openSpecList = [];
  for (String fileName in fileNameList) {
    File file = File("$folder${Platform.pathSeparator}$fileName");
    String jsonString = await file.readAsString();

    OpenSpecDto openSpec


ThreadedDummyConnection con = ThreadedDummyConnection.newInstance();
        PubSubManager mgr = new PubSubManager(con, DUMMY_PUBSUB_SERVICE);

        mgr.deleteNode("foo@bar.org");

        PubSub pubSubDeleteRequest = con.getSentPacket();
        assertEquals("http://jabber.org/protocol/pubsub#owner", pubSubDeleteRequest.getChildElementNamespace());
        assertEquals("pubsub", pubSubDeleteRequest.getChildElementName());
    }
}
/*
 *
 * Copyright 2018 Paul Schaub.
 *
 * 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 org.jivesoftware.smackx.mood;

import static org.jivesoftware.smack.test.util.XmlAssertUtil.assertXmlSimilar;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;

import org.jivesoftware.smack.test.util.SmackTestSuite;
import org.jivesoftware.smack.test.util.TestUtils;
import org.jivesoftware.smack.xml.XmlPullParser;
import org.jivesoftware.smack.xml.XmlPullParserException;

import org.jivesoftware.smackx.mood.element.MoodElement;
import org.jivesoftware.smackx.mood.provider.MoodProvider;

import org.junit.jupiter.api.Test;

public class MoodElementTest extends SmackTestSuite {

    @Test
    public void toXmlTest() throws Exception {
        String xml =
                "<mood xmlns='http://jabber.org/protocol/mood'>" +
                "<happy/>" +
                "<text>Yay, the mood spec has been approved!</text>" +
                "</mood>";
        MoodElement moodElement = new MoodElement(new MoodElement.MoodSubjectElement(Mood.happy, null), "Yay, the mood spec has been approved!");

        assertXmlSimilar(xml, moodElement.toXML().toString());
        assertFalse(moodElement.hasConcretisation());
        assertEquals(Mood.happy, moodElement.getMood());

        XmlPullParser parser = TestUtils.getParser(xml);
        MoodElement parsed = MoodProvider.INSTANCE.parse(parser);
        assertEquals(xml, parsed.toXML().toString());
    }

    @Test
    public void illegalArgumentsTest() {
        assertThrows(IllegalArgumentException.class, () -> {
            new MoodElement(null, "Text alone is not allowed.");
        });
    }

    @Test
    public void emptyMoodTest() throws Exception {
        MoodElement empty = new MoodElement(null, null);
        assertNull(empty.getText());
        assertNull(empty.getMood());
        assertNull(empty.getMoodConcretisation());
        assertFalse(empty.hasText());
        assertFalse(empty.hasConcretisation());

        String xml = "<mood xmlns='http://jabber.org/protocol/mood'/>";
        XmlPullParser parser = TestUtils.getParser(xml);
        MoodElement emptyParsed = MoodProvider.INSTANCE.parse(parser);
        assertEquals(empty.toXML().toString(), emptyParsed.toXML().toString());
    }

    @Test
    public void unknownMoodValueExceptionTest() throws Exception {
        String xml =
                "<mood xmlns='http://jabber.org/protocol/mood'>" +


[len(exceptions)-2].Cause = newException.ID

			exception.Cause = newException.ID
			exception = newException
			// lineIdx is set to the next File line so ready to process it.
			line = lines[lineIdx]
			continue
		}
		lineIdx--
		if lineIdx < 0 {
			break
		}
		line = lines[lineIdx]
	}

	return exceptions
}

func fillJavaScriptStacktrace(stacktrace string, exceptions []awsxray.Exception) []awsxray.Exception {
	r := textproto.NewReader(bufio.NewReader(strings.NewReader(stacktrace)))

	// Skip first line containing top level message
	exception := &exceptions[0]
	_, err := r.ReadLine()
	if err != nil {
		return exceptions
	}
	var line string
	line, err = r.ReadLine()
	if err != nil {
		return exceptions
	}

	exception.Stack = nil
	for {
		if strings.HasPrefix(line, "    at ") {
			parenIdx := strings.IndexByte(line, '(')
			label := ""
			path := ""
			lineIdx := 0
			if parenIdx >= 0 && line[len(line)-1] == ')' {
				label = line[7:parenIdx]
				path = line[parenIdx+1 : len(line)-1]
			} else if parenIdx < 0 {
				label = ""
				path = line[7:]
			}

			colonFirstIdx := strings.IndexByte(path, ':')
			colonSecondIdx := indexOf(path, ':', colonFirstIdx)

			if colonFirstIdx >= 0 && colonSecondIdx >= 0 && colonFirstIdx != colonSecondIdx {
				lineStr := path[colonFirstIdx+1 : colonSecondIdx]
				path = path[0:colonFirstIdx]
				lineIdx, _ = strconv.Atoi(lineStr)
			} else if colonFirstIdx < 0 && strings.Contains(path, "native") {
				path = "native"
			}

			// only append the exception if at least one of the values is not default
			if path != "" || label != "" || lineIdx != 0 {
				stack := awsxray.StackFrame{
					Path:  aws.String(path),
					Label: aws.String(label),
					Line:  aws.Int(lineIdx),
				}
				exception.Stack = append(exception.Stack, stack)
			}
		}
		line, err = r.ReadLine()
		if err != nil {
			break
		}
	}
	return exceptions
}

func fillDotnetStacktrace(stacktrace string, exceptions []awsxray.Exception) []awsxray.Exception {
	r := textproto.NewReader(bufio.NewReader(strings.NewReader(stacktrace)))

	// Skip first line containing top level message
	exception := &exceptions[0]
	_, err := r.ReadLine()
	if err != nil {
		return exceptions
	}
	var line string
	line, err = r.ReadLine()
	if err != nil {
		return exceptions
	}

	exception.Stack = nil
	for {
		line = strings.TrimSpace(line)
		if strings.HasPrefix(line, "at ") {
			index := strings.Index(line, " in ")
			if index >= 0 {
				parts := strings.Split(line, " in ")

				label := parts[0][len("at "):]
				path := parts[1]
				lineNumber := 0

				colonIdx := strings.LastIndexByte(parts[1], ':')
				if colonIdx >= 0 {
					lineStr := path[colonIdx+1:]

					if strings.HasPrefix(lineStr, "line") {
						lineStr = lineStr[5:]
					}
					path = path[0:colonIdx]
					lineNumber, _ = strconv.Atoi(lineStr)
				}

				stack := awsxray.StackFrame{
					Path:  aws.String(path),
					Label: aws.String(label),
					Line:  aws.Int(lineNumber),
				}

				exception.Stack = append(exception.Stack, stack)
			} else {
				idx := strings.LastIndexByte(line, ')')
				if idx >= 0 {
					label := line[len("at ") : idx+1]
					path :=


/ load src[x]    (save)
    vmovn.u32 d22, q13
    vmovn.u32 d23, q14
    sub     r12, r12, r2
    sub     r12, r12, #4
    vld1.16 {q5, q6}, [r12]             // load src[x-src_stride-2]
    vmovn.u32 d20, q5
    vmovn.u32 d21, q6

    vmin.u16 q12, q10, q11
    vceq.u16 q13, q12, q10
    vceq.u16 q14, q12, q11
    vsub.s16 q10, q14, q13              // leftsign

    add     r12, r12, r2, lsl #1
    add     r12, r12, #8
    vld1.16 {q5, q6}, [r12]             // load src[x+src_stride+2]
    vmovn.u32 d24, q5
    vmovn.u32 d25, q6

    vmin.u16 q13, q11, q12
    vceq.u16 q14, q13, q11
    vceq.u16 q13, q13, q12
    vsub.s16 q12, q14, q13              // rightsign

    vadd.s16 q10, q12, q10              // edgetype

    vadd.s16 q10, q10, q1               // generate look-up indexs
    vmovn.u16 d20, q10
    vtbl.8  d24, {d0} , d20             // get offset

    vaddw.s8 q10, q11, d24

    vmax.s16 q10, q10, q2
    vmin.s16 q10, q10, q3               // results

    add     r12, r1, r9                 // dst+x
    cmp     r9, r10
    bge     maskmove_eo_135_chroma_rn
    vld1.64 {q4, q5}, [r12]
    vmovl.u16 q11, d20
    vmovl.u16 q12, d21
    vbif    q11, q4, q7
    vbif    q12, q5, q7
    vst1.16 {q11, q12}, [r12]

    add     r9, #32
    b       loop_x_eo_135_chroma_rn
maskmove_eo_135_chroma_rn:
    sub     r6, r7, r10
    add     r6, r5, r6, lsl #3          // offset = 16*rownum
    vld1.32 {q15}, [r6]                 // load mask_rn
    vld1.64 {q4, q5}, [r12]
    vmovl.s16 q8, d30
    vmovl.s16 q9, d31
    vmovl.u16 q11, d20
    vmovl.u16 q12, d21
    vand    q8, q7
    vand    q9, q7
    vbif    q11, q4, q8
    vbif    q12, q5, q9
    vst1.64 {q11, q12}, [r12]
loop_x_eo_135_chroma_end_rn:
    sub     sp, sp, #136                // reserve stack point
    vpop    {q4-q7}
    ldmia   sp!, {r4-r12, pc}

/***********************************************************************************************************************************
 *  void uavs3d_sao_eo_45_armv7(pel_t* src, pel_t* dst, int src_stride, int dst_stride, int* offset, char_t* mask, int mb_height, int bit_depth
 *  int start_x_r0, int end_x_r0, int start_x_r, int end_x_r, int start_x_rn, int end_x_rn)
 *


 {
    return input.replaceAll('{${variable}}', value);
  }
}

typedef VariableResolver = String Function(String variable);

String format(String input,
    {List<String>? args,
    Map<String, String>? replace,
    VariableStyle? style,
    VariableResolver? resolver}) {
  style ??= VariableStyle.DEFAULT;

  if (Zone.current['console.format.variable_style'] != null) {
    style = Zone.current['console.format.variable_style'];
  }

  var out = input;
  var allKeys = style!.findVariables(input);

  for (var id in allKeys) {
    if (args != null) {
      try {
        var index = int.parse(id);
        if (index < 0 || index > args.length - 1) {
          throw RangeError.range(index, 0, args.length - 1);
        }
        out = style.replace(out, '${index}', args[index]);
        continue;
        // ignore: empty_catches
      } on FormatException {}
    }

    if (replace != null && replace.containsKey(id)) {
      out = style.replace(out, id, replace[id]!);
      continue;
    }

    if (id.startsWith('@') || id.startsWith('color.')) {
      var color = id.startsWith('@') ? id.substring(1) : id.substring(6);
      if (color.isEmpty) {
        throw Exception('color directive requires an argument');
      }

      if (_COLORS.containsKey(color)) {
        out = style.replace(out, '${id}', _COLORS[color].toString());
        continue;
      }

      if (color == 'normal' || color == 'end') {
        out = style.replace(out, id, '${Console.ANSI_ESCAPE}0m');
        continue;
      }
    }

    if (id.startsWith('env.')) {
      var envVariable = id.substring(4);
      if (envVariable.isEmpty) {
        throw Exception('Unknown Key: ${id}');
      }
      var value = Platform.environment[envVariable];
      value ??= '';
      out = style.replace(out, id, value);
      continue;
    }

    if (id.startsWith('platform.')) {
      var variable = id.substring(9);

      if (variable.isEmpty) {
        throw Exception('Unknown Key: ${id}');
      }

      var value = _resolvePlatformVariable(variable);

      out = style.replace(out, id, value);
      continue;
    }

    if (resolver != null) {
      var value = resolver(id);
      out = style.replace(out, id, value);
    } else {
      throw Exception('Unknown Key: ${id}');
    }
  }

  return out;
}

String _resolvePlatformVariable(String name) {
  switch (name) {
    case 'hostname':
      return Platform.localHostname;
    case 'executable':
      return Platform.executable;
    case 'os':
      return Platform.operatingSystem;
    case 'version':
      return Platform.version;
    case 'script':
      return Platform.script.toString();
    default:
      throw Exception('Unsupported Platform Variable: ${name}');
  }
}
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:leancloud_storage/leancloud.dart';
import 'package:learn_flutter/leancloud_config.dart';
import 'package:learn_flutter/model/counter.dart';
import 'package:learn_flutter/model/global.dart';
import 'package:learn_flutter/pages/general_settings/general_settings.dart';
import 'package:learn_flutter/pages/home/index.dart';
import 'package:learn_flutter/pages/item_info/index.dart';
import 'package:learn_flutter/pag


 = self.abs();

    let big = xa.cmp_ge(f64x2::splat(0.625));

    let x1 = big.blend(f64x2::splat(1.0) - xa, xa * xa);

    let x2 = x1 * x1;
    let x3 = x2 * x1;
    let x4 = x2 * x2;
    let x5 = x4 * x1;

    let dobig = big.any();
    let dosmall = !big.all();

    let mut rx = f64x2::default();
    let mut sx = f64x2::default();
    let mut px = f64x2::default();
    let mut qx = f64x2::default();

    if dobig {
      rx = x3.mul_add(R3asin, x2 * R2asin) + x4.mul_add(R4asin, x1.mul_add(R1asin, R0asin));
      sx = x3.mul_add(S3asin, x4) + x2.mul_add(S2asin, x1.mul_add(S1asin, S0asin));
    }
    if dosmall {
      px = x3.mul_add(P3asin, P0asin) +  x4.mul_add(P4asin, x1 * P1asin) + x5.mul_add(P5asin, x2 * P2asin);
      qx = x4.mul_add(Q4asin, x5) + x3.mul_add(Q3asin, x1*Q1asin) + x2.mul_add(Q2asin, Q0asin);
    };

    let vx = big.blend(rx, px);
    let wx = big.blend(sx, qx);

    let y1 = vx / wx * x1;

    let mut z1 = f64x2::default();
    let mut z2 = f64x2::default();
    if dobig {
      let xb = (x1 + x1).sqrt();
      z1 = xb.mul_add(y1, xb);
    }

    if dosmall {
      z2 = xa.mul_add(y1, xa);
    }

    // asin
    let z3 = f64x2::FRAC_PI_2 - z1;
    let asin = big.blend(z3, z2);
    let asin = asin.flip_signs(self);

    asin
  }

  #[inline]
  #[must_use]
  #[allow(non_upper_case_globals)]
  pub fn sin_cos(self) -> (Self, Self) {
    // Based on the Agner Fog "vector class library":
    // https://github.com/vectorclass/version2/blob/master/vectormath_trig.h

    const_f64_as_f64x2!(P0sin, -1.66666666666666307295E-1);
    const_f64_as_f64x2!(P1sin, 8.33333333332211858878E-3);
    const_f64_as_f64x2!(P2sin, -1.98412698295895385996E-4);
    const_f64_as_f64x2!(P3sin, 2.75573136213857245213E-6);
    const_f64_as_f64x2!(P4sin, -2.50507477628578072866E-8);
    const_f64_as_f64x2!(P5sin, 1.58962301576546568060E-10);

    const_f64_as_f64x2!(P0cos, 4.16666666666665929218E-2);
    const_f64_as_f64x2!(P1cos, -1.3888


rface(
					glyph.bitmap_format,
					math.ceil(w1),
					math.ceil(h1))
				local cr = sr1:context()
				cr:translate(x_offset, y_offset)
				cr:scale(w1 / w, h1 / h)
				cr:source(sr0)
				cr:paint()
				cr:rgb(0, 0, 0) --release source
				cr:free()
				sr0:free()
				glyph.surface = sr1
			end
		end

		glyph.paint = glyph.bitmap_format == 'g8'
			and self.paint_g8_glyph
			or self.paint_bgra8_glyph

		local free_bitmap = glyph.free
		function glyph:free()
			free_bitmap(self)
			self.surface:free()
		end

	end

	zone()
	return glyph
end

cairo_rs.color = '#888' --safe default not knowing the bg color
cairo_rs.opacity = 1
cairo_rs.operator = 'over'

function cairo_rs:setcontext(cr, text_run)
	local r, g, b, a = self.rgba(text_run.color or self.color)
	a = a * (text_run.opacity or self.opacity)
	cr:rgba(r, g, b, a)
	cr:operator(text_run.operator or self.operator)
end

--NOTE: clip_left and clip_right are relative to bitmap's left edge.
function cairo_rs:paint_glyph(cr, glyph, x, y, clip_left, clip_right)
	local paint = glyph.paint
	if not paint then return end
	if clip_left or clip_right then
		cr:save()
		cr:new_path()
		local x1 = x + (clip_left or 0)
		local x2 = x + glyph.bitmap.width + (clip_right or 0)
		cr:rectangle(x1, y, x2 - x1, glyph.bitmap.rows)
		cr:clip()
		paint(self, cr, glyph, x, y)
		cr:restore()
	else
		paint(self, cr, glyph, x, y)
	end
end

function cairo_rs:paint_g8_glyph(cr, glyph, x, y)
	cr:mask(glyph.surface, x, y)
end

function cairo_rs:paint_bgra8_glyph(cr, glyph, x, y)
	cr:source(glyph.surface, x, y)
	cr:paint()
	cr:rgb(0, 0, 0) --clear source
end

return cairo_rs


// -Gameplay:
//   -Armor/shield system (reduces incoming damage)
//   -Armor/shield swapping
// -Content:
//   -More rooms
//   -More enemys
//   -More items
//   -More story/choices
//   -Rules of the game explained to player (more in-depth 'help' function)
//
//////////////////////////////////////////////

/*

Architecture

  Single State Object
    Class in order to manage getting and setting

  GameLoop
    Clear Screen -> Perform Action on State -> Show Result

*/

// State
const gameState = new GameState()

// Input
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  prompt: '\n--> ',
})

// Gameplay
UserInterface.clearScreen()
UserInterface.gameStart()

rl.prompt()
rl.on('line', line => {
  line = line.trim()
  const words = line.split(' ')
  const args = words.slice(1)

  UserInterface.clearScreen()
  Actions.dispatch(gameState, words[0], args)
  UserInterface.turn(gameState)

  rl.prompt()
}).on('close', () => {
  process.exit(0)
})
// Type definitions for @react-keycloak/ssr
// Project: https://github.com/react-keycloak/react-keycloak
// Definitions by: Mattia Panzeri <https://github.com/panz3r>
// TypeScript Version: 3.4

import {
  IReactKeycloakContextProps,
  KeycloakTokens,
  ProviderProps as KeycloakProviderProps,
} from '@react-keycloak/core'
import { KeycloakConfig, KeycloakInstance } from 'keycloak-js'
import { Component, ComponentType } from 'react'

export {
  KeycloakEvent,
  KeycloakEventHandler,
  KeycloakLoadingCheck,
  KeycloakTokens,
  KeycloakTokensHandler,
} from '@react-keycloak/core'

/**
 * Omit utility type polyfill for TypeScript 2.8+
 */
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>

/**
 * TokenPersistor
 */
export interface TokenPersistor {
  /**
   * Invoked to store current/updated Keycloak tokens.
   *
   * @param {KeycloakTokens} tokens The current Keycloak tokens set.
   */
  setTokens: (tokens: KeycloakTokens) => void

  /**
   * Invoked to retrieve Keycloak tokens to use.
   *
   * @returns {KeycloakTokens} Keycloak tokens set to be used.
   */
  getTokens: () => KeycloakTokens

  /**
   * Invoked when stored Keycloak tokens should be removed.
   */
  resetTokens: () => void
}

/**
 * SSRKeycloakProviderProps
 */
export type SSRKeycloakProviderProps = Omit<
  KeycloakProviderProps,
  'keycloak'
> & {
  /**
   * The KeycloakJS config to setup a Keycloak instance with.
   */
  keycloakConfig: KeycloakConfig

  /**
   * The token Persistor
   */
  persistor: TokenPersistor
}

/**
 * Makes the Keycloak instance available to the withKeycloak() and useKeycloak() calls in the component hierarchy below.
 */
export class SSRKeycloakProvider extends Component<SSRKeycloakProviderProps> {}

/**
 * Props injected by withKeycloak HOC
 */
export type ReactKeycloakInjectedProps = {
  /**
   * The single Keycloak instance of your application.
   */
  keycloak: KeycloakInstance

  /**
   * Boolean indicating whenever the Keycloak instance has been initialized by KeycloakProvider
   */
  keycloakInitialized: boolean

  /**
   * Boolean indicating whenever the component is been rendered server-side or client-side
   */
  isServer: boolean
}


</GetFeatureInfo>' +
'      <DescribeLayer>' +
'        <Format>application/vnd.ogc.wms_xml</Format>' +
'        <DCPType>' +
'          <HTTP>' +
'            <Get>' +
'              <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://demo.opengeo.org/geoserver/wms?SERVICE=WMS&"/>' +
'            </Get>' +
'          </HTTP>' +
'        </DCPType>' +
'      </DescribeLayer>' +
'      <GetLegendGraphic>' +
'        <Format>image/png</Format>' +
'        <Format>image/jpeg</Format>' +
'        <Format>image/gif</Format>' +
'        <DCPType>' +
'          <HTTP>' +
'            <Get>' +
'              <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://demo.opengeo.org/geoserver/wms?SERVICE=WMS&"/>' +
'            </Get>' +
'          </HTTP>' +
'        </DCPType>' +
'      </GetLegendGraphic>' +
'    </Request>' +
'    <Exception>' +
'      <Format>application/vnd.ogc.se_xml</Format>' +
'    </Exception>' +
'    <UserDefinedSymbolization SupportSLD="1" UserLayer="1" UserStyle="1" RemoteWFS="1"/>' +
'    <Layer>' +
'      <Title>GeoServer Web Map Service</Title>' +
'      <Abstract>A compliant implementation of WMS 1.1.1 plus most of the SLD 1.0 extension (dynamic styling). Can also generate PDF, SVG, KML, GeoRSS</Abstract>' +
'      <!--All supported EPSG projections:-->' +
'      <SRS>EPSG:WGS84(DD)</SRS>' +
'      <SRS>EPSG:2000</SRS>' +
'      <SRS>EPSG:2001</SRS>' +
'      <SRS>EPSG:2002</SRS>' +
'      <SRS>EPSG:2003</SRS>' +
'      <SRS>EPSG:2004</SRS>' +
'      <SRS>EPSG:2005</SRS>' +
'      <SRS>EPSG:2006</SRS>' +
'      <SRS>EPSG:2007</SRS>' +
'      <SRS>EPSG:2008</SRS>' +
'      <SRS>EPSG:2009</SRS>' +
'      <SRS>EPSG:2010</SRS>' +
'      <SRS>EPSG:2011</SRS>' +
'      <SRS>EPSG:2012</SRS>' +
'      <SRS>EPSG:2013</SRS>' +
'      <SRS>EPSG:2014</SRS>' +
'      <SRS>EPSG:2015</SRS>' +
'      <SRS>EPSG:2016</SRS>' +
'      <SRS>EPSG:2017</SRS>' +
'      <SRS>EPSG:2018</SRS>'


	end
end

function lib:GeneratePluginList()
	local list = ''
	for _, plugin in pairs(lib.plugins) do
		if plugin.name ~= MAJOR then
			local color = (plugin.old and E:RGBToHex(1, 0, 0)) or E:RGBToHex(0, 1, 0)
			list = list .. (plugin.title or plugin.name)
			if plugin.author then list = list .. ' ' .. INFO_BY .. ' ' .. plugin.author end
			list = list .. color .. (plugin.isLib and ' ' .. LIBRARY or ' - ' .. INFO_VERSION .. ' ' .. plugin.version)
			if plugin.old then list = list .. ' (' .. INFO_NEW .. plugin.newversion .. ')' end
			list = list .. '|r\n'
		end
	end
	return list
end

function lib:ClearSendMessageWait()
	lib.SendMessageWaiting = nil
end

function lib:SendPluginVersionCheck(message)
	if (not message) or strmatch(message, '^%s-$') then
		lib.ClearSendMessageWait()
		return
	end

	local ChatType
	if IsInRaid() then
		ChatType = (not IsInRaid(LE_PARTY_CATEGORY_HOME) and IsInRaid(LE_PARTY_CATEGORY_INSTANCE)) and 'INSTANCE_CHAT' or 'RAID'
	elseif IsInGroup() then
		ChatType = (not IsInGroup(LE_PARTY_CATEGORY_HOME) and IsInGroup(LE_PARTY_CATEGORY_INSTANCE)) and 'INSTANCE_CHAT' or 'PARTY'
	elseif IsInGuild() then
		ChatType = 'GUILD'
	end

	if not ChatType then
		lib.ClearSendMessageWait()
		return
	end

	local delay, maxChar, msgLength = 0, 250, strlen(message)
	if msgLength > maxChar then
		local splitMessage
		for _ = 1, ceil(msgLength / maxChar) do
			splitMessage = strmatch(strsub(message, 1, maxChar), '.+;')
			if splitMessage then -- incase the string is over 250 but doesnt contain `;`
				message = gsub(message, '^' .. E:EscapeString(splitMessage), '')
				E:Delay(delay, C_ChatInfo_SendAddonMessage, lib.prefix, splitMessage, ChatType)
				delay = delay + 1
			end
		end

		E:Delay(delay, lib.ClearSendMessageWait)
	else
		C_ChatInfo_SendAddonMessage(lib.prefix, message, ChatType)
		lib.ClearSendMessageWait()
	end
end

function lib.Initialized()
	if not lib.inits then return end

	for _, initTbl in ipairs(lib.inits) do
		initTbl[2](initTbl[1])
	end

	wipe(lib.inits)
end

function lib:HookInitialize(tbl, func)
	if not (tbl and func) then return end

	if type(func) == 'string' then
		func = tbl[func]
	end

	if not self.inits then
		self.inits = {}

		CheckElvUI()

		hooksecurefunc(E, 'Initialize', self.Initialized)
	end

	tinsert(lib.inits, { tbl, func })
end

lib.VCFrame = CreateFrame('Frame')
lib.VCFrame:SetScript('OnEvent', lib.VersionCheck)

lib.CFFrame = CreateFrame('Frame')
lib.CFFrame:SetScript('OnEvent', lib.OptionsLoaded)


_Reserved_0x2d)
#endif
.align 32
#else
	NORMAL_TRAP(0x2d);
#endif

T0_Reserved_0x2e:
#ifdef H_T0_Reserved_0x2e
#ifdef SUN_H_T0_Reserved_0x2e
	 SUN_H_T0_Reserved_0x2e
#else
        CUSTOM_TRAP(H_T0_Reserved_0x2e)
#endif
.align 32
#else
	NORMAL_TRAP(0x2e);
#endif

T0_Reserved_0x2f:
#ifdef H_T0_Reserved_0x2f
#ifdef SUN_H_T0_Reserved_0x2f
	 SUN_H_T0_Reserved_0x2f
#else
        CUSTOM_TRAP(H_T0_Reserved_0x2f)
#endif
.align 32
#else
	NORMAL_TRAP(0x2f);
#endif

T0_Data_Access_Exception_0x30:
#ifdef H_T0_Data_Access_Exception_0x30
#ifdef SUN_H_T0_Data_Access_Exception_0x30
	 SUN_H_T0_Data_Access_Exception_0x30
#else

#	ifdef My_T0_Data_Access_Exception_0x30
		My_T0_Data_Access_Exception_0x30
#	else
	        CUSTOM_TRAP(H_T0_Data_Access_Exception_0x30)
#	endif
#endif
.align 32
#else
	NORMAL_TRAP(0x30);
#endif

T0_Reserved_0x31:
#ifdef H_T0_Reserved_0x31
#ifdef SUN_H_T0_Reserved_0x31
	 SUN_H_T0_Reserved_0x31
#else
        CUSTOM_TRAP(H_T0_Reserved_0x31)
#endif
.align 32
#else
	NORMAL_TRAP(0x31);
#endif

T0_Data_Access_Error_0x32:
#ifdef H_T0_Data_access_error_0x32
#ifdef SUN_H_T0_Data_access_error_0x32
	 SUN_H_T0_Data_access_error_0x32
#else
        CUSTOM_TRAP(H_T0_Data_access_error_0x32)
#endif
.align 32
#else
#ifdef ENABLE_DTLB_ERROR_TRAP
	mov 8, %g3; stxa %g0, [%g3] 0x60; retry; nop; nop; nop; nop; nop;
#else
	NORMAL_TRAP(0x32);
#endif
#endif

T0_Reserved_0x33:
#ifdef H_T0_Reserved_0x33
#ifdef SUN_H_T0_Reserved_0x33
	 SUN_H_T0_Reserved_0x33
#else
        CUSTOM_TRAP(H_T0_Reserved_0x33)
#endif
.align 32
#else
	NORMAL_TRAP(0x33);
#endif

T0_Mem_Address_Not_Aligned_0x34:
#ifdef H_T0_Mem_Address_Not_Aligned_0x34
#ifdef SUN_H_T0_Mem_Address_Not_Aligned_0x34
	 SUN_H_T0_Mem_Address_Not_Aligned_0x34
#else
#	ifdef My_T0_Mem_Address_Not_Aligned_0x34
		My_T0_Mem_Address_Not_Aligned_0x34
#	else
		CUSTOM_TRAP(H_T0_Mem_Address_Not_Aligned_0x34)
#	endif


import ast
from file1 import SomeClass
def fungen():
    ast.alias()
    SomeClass()
    yield None


�，展现了生活化的一面。
*   在“生路”中，她初次尝试深潜，但因不适应海流而行动不便，需要西昆妲的帮助。
*   在“生路”中，她向西昆妲提到自己曾经在船上听过海嗣弹奏破碎的歌（可能指斯图提斐拉号上的大副加西亚）。
## 角色点评
艾丽妮的旅程是一段关于信仰、成长与自我救赎的篇章。她曾是伊比利亚审判庭体制下最虔诚、最恪守教条的学生，将律法与经卷视为全部，甚至将牺牲视为赞美。然而，残酷的现实——盐风城的麻木、愚人号的悲剧、老师的牺牲以及海嗣展现出的“文明”姿态——无情地击碎了她单纯的信仰。可贵的是，艾丽妮并未因此沉沦或逃避，而是选择直面真相，在痛苦中反思老师的教诲，最终找到了真正属于自己的战斗意义：不拘泥于僵化的身份，而是以自己的所见所闻所想来作出判断和行动，寻求与不同势力合作，为伊比利亚，乃至更大的世界对抗共同的威胁。

来到罗德岛后，艾丽妮展现了惊人的适应能力和开放心态。她努力学习、融入集体，同时不忘初心，将守卫伊比利亚的责任融入新的使命中。她与深海猎人、罗德岛干员的互动，特别是与深靛、劳伦缇娜等人的交流，不仅弥合了她心中对阿戈尔人的隔阂，也让她的形象变得更加丰满和人性化。她不再仅仅是冷峻的审判官，也是会因推荐尝试蛋糕、会期待舞会、会关心朋友的年轻女孩。即使面对不理解的阿戈尔文明和自身经验的不足，她依然保持着学习和探索的热情。

艾丽妮的故事是明日方舟世界观下多文明合作对抗共同危机的缩影。她从“伊比利亚中心主义”的狭隘视角中走出，看到了更广阔的世界和更多元的力量。尽管她背负着沉重的过去和未来的不确定性，但她眼中闪烁的希望之光和坚定的意志，正是她名字所象征的“和平”与“曙光”的写照。她是伊比利亚的灯火，也是罗德岛前行道路上的一束光。她的故事证明，真正的信仰不是教条，而是基于亲身经历和独立思考所形成的坚定信念。# 董阿伯
页面版本:v1.0

| :warning:


ne;
}

.loading-container.active{
    display:flex;
    flex-direction: column;

}
.loading-container p{
    margin-top: 0.75rem;
    text-transform: uppercase;
}

/* weather info conatiner */

.user-info-container{
    display: none;
}
.user-info-conatiner p{
    font-size:1.5rem;
    font-weight:200;
}
.user-info-container img{
width:90px;
height: 90px;
}

.parameter-container{
    display: none;
    width:90%;
    display: flex;
    gap: 10px 20px;
    justify-content: center;
    align-items: center;
    margin-top: 2rem;
}

.user-info-container.active{
    display: flex;
}

.name{
  display:flex;
  align-items: center;
  gap: 0 0.5rem;
  margin-bottom:1rem;
}

.name p{
    font-size:2rem;

}
.name img{
    width: 30px;
    height:30px;
}

.parameter{

    width:30%;
    max-width:200px;
    background-color: rgba(219, 226, 239, 0.5);;
    border-radius: 5px;
    padding:1rem;
    display: flex;
    flex-direction: column;
    gap:5px 0;
    /* justify-content: space-between; */
    align-items: center;
}

.parameter img{
    width:50px;
    height:50px;
}

.parameter p:first-of-type{
    font-size: 1.15rem;
    font-weight:600;
    text-transform: uppercase;
}

.parameter p:last-of-type{
    font-size: 1rem;
    font-weight: 200;
}

.form-container{
    display: none;
    width:90%;
    max-width:550px;
    margin:0 auto;
    justify-content: center;
    align-items: center;
    gap: 0 10px;
    margin-bottom: 3rem;
}

.form-container.active{
    display: flex;
}

.form-container input{
    all:unset;
    width: calc(100% - 80px);
    height:40px;
    padding: 0 20px;
    background-color:rgba(219, 226, 239, 0.5);
    border-radius: 10px;
}

.form-container input::placeholder{
    color: rgba(255, 255, 255, 0.7);
}

.form-container input:focus{
    outline: 3px solid rgba(255, 255, 255, 0.7);
}

.form-container .btn {
    padding:unset;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 100%;
    margin-bottom:1px;
}

.tab-container{
    width:90%;
    margin-top:4rem;
    max-width:550px;
    margin: 0 auto;
    display:flex;
    justify-content: space-between;

}

.form-container.active{
    display: flex;

}body{
    background-color: #edf7f9;!important;
    font-family: Arial, 黑体, Tahoma;
}
.nav_library{
    width: 100%;
    height: 80px;
    background-color: #155070;
    padding-left: 50px;
    padding-right: 50px;
    display: -webkit-box;
    display: -webkit-flex;
    display: flex;
    -webkit-box-pack: justify;
    -webkit-justify-content: space-between;
    justify-content: space-between;
    -webkit-box-align: center;
    -webkit-align-items: center;
    align-items: center;
    box-sizing


())
	if err != nil {
		return nil, fmt.Errorf("error parsing Snowflake DSN: %v", err)
	}

	// Set additional connection parameters
	cfg.Authenticator = gosnowflake.AuthTypeSnowflake // Default password auth
	cfg.Application = "redb-anchor"

	// Create connection
	db, err := sql.Open("snowflake", connString.String())
	if err != nil {
		return nil, fmt.Errorf("error connecting to Snowflake: %v", err)
	}

	// Set connection pool parameters
	db.SetMaxOpenConns(10)
	db.SetMaxIdleConns(5)
	db.SetConnMaxLifetime(time.Hour)

	// Test the connection
	if err := db.Ping(); err != nil {
		db.Close()
		return nil, fmt.Errorf("error pinging Snowflake database: %v", err)
	}

	return &dbclient.InstanceClient{
		DB:           db,
		InstanceType: "snowflake",
		InstanceID:   config.InstanceID,
		Config:       config,
		IsConnected:  1,
	}, nil
}

// DiscoverDetails fetches the details of a Snowflake database
func DiscoverDetails(db interface{}) (map[string]interface{}, error) {
	sqlDB, ok := db.(*sql.DB)
	if !ok {
		return nil, fmt.Errorf("invalid database connection")
	}

	details := make(map[string]interface{})
	details["databaseType"] = "snowflake"

	// Get server version
	var version string
	err := sqlDB.QueryRow("SELECT CURRENT_VERSION()").Scan(&version)
	if err != nil {
		return nil, fmt.Errorf("error fetching version: %v", err)
	}
	details["version"] = version

	// Get account information
	var account, region string
	err = sqlDB.QueryRow("SELECT CURRENT_ACCOUNT(), CURRENT_REGION()").Scan(&account, &region)
	if err != nil {
		return nil, fmt.Errorf("error fetching account information: %v", err)
	}
	details["account"] = account
	details["region"] = region

	// Get current role
	var role string
	err = sqlDB.QueryRow("SELECT CURRENT_ROLE()").Scan(&role)
	if err != nil {
		return nil, fmt.Errorf("error fetching current role: %v", err)
	}
	details["role"] = role

	// Get current warehouse
	var warehouse string
	err = sqlDB.QueryRow("SELECT CURRENT_WAREHOUSE()").Scan(&warehouse)
	if err != nil {
		return nil, fmt.Errorf("error fetching current warehouse: %v", err)
	}
	details["warehouse"] = warehouse

	// Get database size (approximate)
	var size int64
	err = sqlDB.QueryRow(`
		SELECT SUM(BYTES)
		FROM TABLE(INFORMATION_SCHEMA.TABLE_STORAGE_METRICS(
			SCHEMA_NAME => CURRENT_SCHEMA(),
			TABLE_NAME => NULL
		))
	`).Scan(&size)
	if err != nil {
		// If we can't get the size, just set it to 0 and continue
		size = 0
	}
	details["databaseSize"] = size

	// Get unique identifier (account + database name)
	var dbName string
	err = sqlDB.QueryRow("SELECT CURRENT_DATABASE()").Scan(&dbName)
	if err != nil {
		return nil, fmt.Errorf("error fetching database name: %v", err)
	}
	details["uniqueIdentifier"] = fmt.Sprintf("%s.%s", account, dbName)

	// Get edition
	var edition string
	err = sqlDB.QueryRow("SELECT SYSTEM$WHITELIST()").Scan(&edition)
	if err != nil {
		// If we can't determine the edition, default to "standard"
		edition = "standard"
	} else if strings.Contains(strings.ToLower(edition), "enterprise") {
		edition = "enterpri


.0 / 3.0 ) - vH ) * 6.0 );
	else
		ret = v1;

	return ret;
}

P_COLOR vec3 shift_hue( in P_COLOR vec3 input_color,
						in P_COLOR float hue_shift_in_degrees )
{
	// IMPORTANT: This hue-shifting function ISN'T exactly
	// the same as the one in kernel_filter_hue_gl.lua.

	P_COLOR float Cmax, Cmin;

	P_COLOR float D;

	P_COLOR float H, S, L;
	P_COLOR float R, G, B;

	R = input_color.r;
	G = input_color.g;
	B = input_color.b;

	// convert to HSL

	Cmax = max (R, max (G, B));
	Cmin = min (R, min (G, B));

	// calculate lightness
	L = (Cmax + Cmin) / 2.0;

	if (Cmax == Cmin) // it's grey
	{
		H = 0.0; // it's actually undefined
		S = 0.0;
	}
	else
	{
		D = Cmax - Cmin; // we know D != 0 so we cas safely divide by it

		// calculate Saturation
		if (L < 0.5)
		{
			S = D / (Cmax + Cmin);
		}
		else
		{
			S = D / (2.0 - (Cmax + Cmin));
		}

		// calculate Hue
		if (R == Cmax)
		{
			H = (G - B) / D;
		}
		else
		{
			if (G == Cmax)
			{
				H = 2.0 + (B - R) /D;
			}
			else
			{
				H = 4.0 + (R - G) / D;
			}
		}

		H = H / 6.0;
	}

	// modify H/S/L values
	// "-" : To change the direction of the shift to match what users expect.
	P_COLOR float hue_shift_in_radians = radians( hue_shift_in_degrees );
	H += hue_shift_in_radians;

	#if 0 // For testing ONLY.

		S = 1.0;
		L = 0.8;

	#endif

	if (H < 0.0)
	{
		H = H + 1.0;
	}

	// clamp H,S and L to [0..1]
	H = clamp(H, 0.0, 1.0);
	S = clamp(S, 0.0, 1.0);
	L = clamp(L, 0.0, 1.0);

	// convert back to RGB

	P_COLOR float var_2, var_1;

	if (S == 0.0)
	{
		R = L;
		G = L;
		B = L;
	}
	else
	{
		if ( L < 0.5 )
		{
			var_2 = L * ( 1.0 + S );
		}
		else
		{
			var_2 = ( L + S ) - ( S * L );
		}

		var_1 = 2.0 * L - var_2;

		R = Hue_2_RGB( var_1, var_2, H + ( 1.0 / 3.0 ) );
		G = Hue_2_RGB( var_1, var_2, H );
		B = Hue_2_RGB( var_1, var_2, H - ( 1.0 / 3.0 ) );
	}

	return vec3(R,G,B);
}

P_COLOR vec4 FragmentKernel( P_UV vec2 texCoord )
{
#if FRAGMENT_SHADER_SUPPORTS_HIGHP
	P_UV float aspectRatio = v_UserData.z;

	// Current fragment position in texture-space.
	// aspectRatio = ( object.width / object.height )
	P_UV vec2 position = vec2( ( v_UserData.x * aspect


ObjectBase other)
    : this._(other.ref.pointer, retain: true, release: true);

  /// Constructs a [NSSecureCoding] that wraps the given raw object pointer.
  NSSecureCoding.castFromPointer(
    ffi.Pointer<objc.ObjCObject> other, {
    bool retain = false,
    bool release = false,
  }) : this._(other, retain: retain, release: release);

  /// Returns whether [obj] is an instance of [NSSecureCoding].
  static bool conformsTo(objc.ObjCObjectBase obj) {
    return _objc_msgSend_e3qsqz(
      obj.ref.pointer,
      _sel_conformsToProtocol_,
      _protocol_NSSecureCoding,
    );
  }

  /// Returns the [objc.Protocol] object for this protocol.
  static objc.Protocol get $protocol =>
      objc.Protocol.castFromPointer(_protocol_NSSecureCoding.cast());

  /// Builds an object that implements the NSSecureCoding protocol. To implement
  /// multiple protocols, use [addToBuilder] or [objc.ObjCProtocolBuilder] directly.
  ///
  /// If `$keepIsolateAlive` is true, this protocol will keep this isolate
  /// alive until it is garbage collected by both Dart and ObjC.
  static NSSecureCoding implement({
    required void Function(NSCoder) encodeWithCoder_,
    required Dartinstancetype? Function(NSCoder) initWithCoder_,
    bool $keepIsolateAlive = true,
  }) {
    final builder = objc.ObjCProtocolBuilder(debugName: 'NSSecureCoding');
    NSSecureCoding.encodeWithCoder_.implement(builder, encodeWithCoder_);
    NSSecureCoding.initWithCoder_.implement(builder, initWithCoder_);
    builder.addProtocol($protocol);
    return NSSecureCoding.castFrom(
      builder.build(keepIsolateAlive: $keepIsolateAlive),
    );
  }

  /// Adds the implementation of the NSSecureCoding protocol to an existing
  /// [objc.ObjCProtocolBuilder].
  ///
  /// Note: You cannot call this method after you have called `builder.build`.
  static void addToBuilder(
    objc.ObjCProtocolBuilder builder, {
    required void Function(NSCoder) encodeWithCoder_,
    required Dartinstancetype? Function(NSCoder) initWithCoder_,
    bool $keepIsolateAlive = true,
  }) {
    NSSecureCoding.encodeWithCoder_.implement(builder, encodeWithCoder_);
    NSSecureCoding.initWithCoder_.implement(builder, initWithCoder_);
    builder.addProtocol($protocol);
  }

  /// Builds an object that implements the NSSecureCoding protocol. To implement
  /// multiple protocols, use [addToBuilder] or [objc.ObjCProtocolBuilder] directly. All
  /// methods that can be implemented as listeners will be.
  ///
  /// If `$keepIsolateAlive` is true, this protocol will keep this isolate
  /// alive until it is garbage collected by both Dart and ObjC.
  static NSSecureCoding implementAsListener({
    required void Function(NSCoder) encodeWithCoder_,
    required Dartinstancetype? Function(NSCoder) initWithCoder_,
    bool $keepIsolateAlive = true,
  }) {
    final builder = objc.ObjCProtocolBuilder(debugName: 'NSSecureCoding');
    NSSecureCoding.encodeWithCoder_.implementAsListener(
      builder,
      encodeWithCoder_,
    );
    NSSecureCoding.initWithCoder_.implement(


;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5);left:30px;z-index:2}.cell[data-v-2cb1ea51]:first-child:before{display:none}.follow .follow-info[data-v-2cb1ea51]{padding:5px 10px;background-color:#f5f7fa;color:#999;height:40px;line-height:40px;border-radius:28px;font-size:12px;margin-right:10px}.crm-type[data-v-2cb1ea51]{color:#6394e5;font-size:14px}.log-items[data-v-e4044332]{min-height:400px;position:relative}.load[data-v-e4044332]{color:#999;font-size:13px;margin:0 auto 15px;text-align:center}.load .el-button[data-v-e4044332],.load .el-button[data-v-e4044332]:focus{color:#ccc;cursor:auto}.sections[data-v-a197ad6e]{font-size:14px}.sections .download[data-v-a197ad6e]{cursor:pointer;color:#3e84e9}.content[data-v-a197ad6e]{padding:10px 10px 10px 30px}.content .el-select[data-v-a197ad6e],.content .user-cell[data-v-a197ad6e]{width:300px}.content-tips[data-v-a197ad6e]{font-size:12px;color:#a9a9a9;line-height:15px}#importInputFile[data-v-a197ad6e]{display:none}.file-select .el-input[data-v-a197ad6e]{width:300px}.file-select button[data-v-a197ad6e]{margin-left:20px}.el-dialog__wrapper[data-v-a197ad6e] .el-icon-loading{font-size:30px}.el-dialog__wrapper[data-v-a197ad6e] .el-loading-text{font-size:18px;margin-top:10px}.c-container[data-v-6dd71341]{height:60px;position:relative;z-index:100}.c-container .title[data-v-6dd71341]{float:left;padding:0 20px;font-size:18px;line-height:60px}.c-container .sc-container[data-v-6dd71341]{width:300px;margin:-18px 0 0 -150px;position:absolute;left:50%;top:50%}.c-container .right-container[data-v-6dd71341]{float:right;margin:12px 20px 0 0;position:relative}.c-container .right-container .right-item[data-v-6dd71341]{float:left;margin-right:10px;padding:8px 10px;font-size:13px;border-radius:2px}.c-container .right-container .right-more-item[data-v-6dd71341]{cursor:pointer;border:1px solid #dcdfe6;background-color:#fff;font-size:13px;color:#777;padding:0 12px;border-radius:2px;height:31px}[data-v-3b


/**
 * @file fpp_channel.h
 * fpp_channel is not defined yet
 */
#ifndef __FPP_CHANNEL_H__
#define __FPP_CHANNEL_H__

/**
 * fpp_channel_check_sync_status is not documented yet.
 */
void fpp_channel_check_sync_status(void);

/**
 * fpp_channel_get_aft_status is not documented yet.
 */
void fpp_channel_get_aft_status(void);

/**
 * fpp_channel_get_analog_min_step is not documented yet.
 */
void fpp_channel_get_analog_min_step(void);

/**
 * fpp_channel_init is not documented yet.
 */
void fpp_channel_init(void);

/**
 * fpp_channel_set_If is not documented yet.
 */
void fpp_channel_set_If(void);

/**
 * fpp_channel_start_audio_auto_detection is not documented yet.
 */
void fpp_channel_start_audio_auto_detection(void);

/**
 * fpp_channel_stop_audio_auto_detection is not documented yet.
 */
void fpp_channel_stop_audio_auto_detection(void);

/**
 * fpp_channel_tune_analog is not documented yet.
 */
void fpp_channel_tune_analog(void);

/**
 * fpp_channel_tune_start is not documented yet.
 */
void fpp_channel_tune_start(void);

/**
 * fpp_channel_whether_secam_ll is not documented yet.
 */
void fpp_channel_whether_secam_ll(void);

#endif /* __FPP_CHANNEL_H__ */


/* Generated by CIL v. 1.7.0 */
/* print_CIL_Input is false */

struct _IO_FILE;
struct timeval;
extern float strtof(char const   *str , char const   *endptr ) ;
extern void signal(int sig , void *func ) ;
typedef struct _IO_FILE FILE;
extern int atoi(char const   *s ) ;
extern double strtod(char const   *str , char const   *endptr ) ;
extern int fclose(void *stream ) ;
extern void *fopen(char const   *filename , char const   *mode ) ;
extern void abort() ;
extern void exit(int status ) ;
extern int raise(int sig ) ;
extern int fprintf(struct _IO_FILE *stream , char const   *format  , ...) ;
extern int strcmp(char const   *a , char const   *b ) ;
extern int rand() ;
extern unsigned long strtoul(char const   *str , char const   *endptr , int base ) ;
void RandomFunc(unsigned char input[1] , unsigned char output[1] ) ;
extern int strncmp(char const   *s1 , char const   *s2 , unsigned long maxlen ) ;
extern int gettimeofday(struct timeval *tv , void *tz  , ...) ;
extern int printf(char const   *format  , ...) ;
int main(int argc , char *argv[] ) ;
void megaInit(void) ;
extern unsigned long strlen(char const   *s ) ;
extern long strtol(char const   *str , char const   *endptr , int base ) ;
extern unsigned long strnlen(char const   *s , unsigned long maxlen ) ;
extern void *memcpy(void *s1 , void const   *s2 , unsigned long size ) ;
struct timeval {
   long tv_sec ;
   long tv_usec ;
};
extern void *malloc(unsigned long size ) ;
extern int scanf(char const   *format  , ...) ;
void megaInit(void)
{

  {

}
}
void RandomFunc(unsigned char input[1] , unsigned char output[1] )
{
  unsigned char state[1] ;

  {
  state[0UL] = (input[0UL] & 914778474UL) << (unsigned char)7;
  if ((state[0UL] >> (unsigned char)1) & (unsigned char)1) {
    if ((state[0UL] >> (unsigned char)1) & (unsigned char)1) {
      if ((state[0UL] >> (unsigned char)4) & (unsigned char)1) {
        state[0UL] <<= ((state[0UL] >> (unsigned char)1) & (unsigned char)7) | 1UL;
      } else {
        state[0UL] >>= (state[0UL] & (unsigned char)7) | 1UL;
      }
    } else
    if ((state[0UL] >> (unsigned char)2) & (unsigned char)1) {
      state[0UL] >>= (state[0UL] & (unsigned char)7) | 1UL;
    } else {
      state[0UL] >>= (state[0UL] & (unsigned char)7) | 1UL;
    }
  } else {
    state[0UL] <<= ((state[0UL] >> (unsigned char)2) & (unsigned char)7) | 1UL;
  }
  output[0UL] = (state[0UL] | 447621010UL) | (unsigned char)130;
}
}
int main(int argc , char *argv[] )
{
  unsigned char input[1] ;
  unsigned char output[1] ;
  int randomFuns_i5 ;
  unsigned char randomFuns_value6 ;
  int randomFuns_main_i7 ;

  {
  megaInit();
  if (argc != 2) {
    printf("Call this program with %i arguments\n", 1);
    exit(-1);
  } else {

  }
  randomFuns_i5 = 0;
  while (randomFuns_i5 < 1) {
    randomFuns_value6 = (unsigned char )strtoul(argv[randomFuns_i5 + 1], 0, 10);
    input[randomFuns_i5] = randomFuns_value6;
    randomFuns_i5 ++;
  }
  RandomFunc(input, output);
  if (output[0] == 146) {
    printf("You win!\n");
  } else {

  }
  randomFuns_main_i7 = 0;
  while (randomFuns_main_i7 < 1) {
    printf("%u\n", output[randomFuns_main_i7]);
    randomFuns_main_i7 ++;
  }
}
}


oElement();
	if (!Pulse_SCP)
		return -1;

	// Get the attribute
	int val;
	int result = Pulse_SCP->QueryIntAttribute(SPP_CHECKED, &val);
	if (TIXML_SUCCESS != result)
		return -1;
	else
		return val;
}

// Get the state of Monitor_CH
// Return:
//   1: Monitor
//   0: Don't Monitor
//  -1: No data
int CSppConfig::MonitorChannels()
{
	lock_guard<recursive_mutex> lock(m_mx_General);

	// Get handle of the root
	TiXmlElement* root = m_doc.FirstChildElement( SPP_ROOT);
	if (!root)
		return  -1;
	TiXmlHandle RootHandle( root );

	// If Section 'General' does not exist - No data
	TiXmlElement* General = RootHandle.FirstChild( SPP_GENERAL ).ToElement();
	if (!General)
		return -1;

	// Get  Monitor_CH
	TiXmlElement* Monitor_Ch = RootHandle.FirstChild( SPP_GENERAL ).FirstChild(SPP_MONCHNL).ToElement();
	if (!Monitor_Ch)
		return -1;

	// Get the attribute
	int val;
	int result = Monitor_Ch->QueryIntAttribute(SPP_CHECKED, &val);
	if (TIXML_SUCCESS != result)
		return -1;
	else
		return val;
}

// Set the state of "Hide Unique SPP Message" to 1/0
// Return true on success
bool CSppConfig::HideUnqMsg(bool Hide)
{
	lock_guard<recursive_mutex> lock(m_mx_General);

	// Get handle of the root
	TiXmlElement* root = m_doc.FirstChildElement(SPP_ROOT);
	if (!root)
		return  false;
	TiXmlHandle RootHandle(root);

	// If Section 'General' does not exist - create it
	TiXmlElement* General = RootHandle.FirstChild(SPP_GENERAL).ToElement();
	if (!General)
	{
		General = new TiXmlElement(SPP_GENERAL);
		root->LinkEndChild(General);
	};

	// Get or Create Hide status
	TiXmlElement* HideUnqMsg = RootHandle.FirstChild(SPP_GENERAL).FirstChild(SPP_UNQMSG).ToElement();
	if (!HideUnqMsg)
	{
		//  "Hide Unique Message" does not exist - create one
		HideUnqMsg = new TiXmlElement(SPP_UNQMSG);
		General->LinkEndChild(HideUnqMsg);
	};

	// Set attribute SPP_CHECKED to Hide status
	if (Hide)
		HideUnqMsg->SetAttribute(SPP_CHECKED, "1");
	else
		HideUnqMsg->SetAttribute(SPP_CHECKED, "0");

	Save();

	return true;
}
// Set the state of Pulse_SCP to 1/0
// Return true on success
bool CSppConfig::PulseScope(bool Monitor)
{
	lock_guard<recursive_mutex> lock(m_mx_General);

	// Get handle of the root
	TiXmlElement* root = m_doc.FirstChildElement(SPP_ROOT);
	if (!root)
		return  false;
	TiXmlHandle RootHandle(root);

	// If Section 'General' does not exist - create it
	TiXmlElement* General = RootHandle.FirstChild(SPP_GENERAL).ToElement();
	if (!General)
	{
		General = new TiXmlElement(SPP_GENERAL);
		root->LinkEndChild(General);
	};

	// Get or Create  Pulse_SCP
	TiXmlElement* HideUnqMsg = RootHandle.FirstChild(SPP_GENERAL).FirstChild(SPP_PLSSCP).ToElement();
	if (!HideUnqMsg)
	{
		//  Pulse


 - track.value(idx-1) );
	const float reqdh = mCast( float, dhtop + (fraction * (dhbase-dhtop)) );
	idah = IdxAble::getUpperIdx( dah_, dtsize, reqdh );
    }

    return idah >= dtsize ? dtsize-1 : idah;
}

bool Well::D2TModel::getOldVelocityBoundsForDah( float dh, const Track& track,
						 Interval<double>& depths,
						 Interval<float>& times ) const
{
    const int dtsize = size();
    const int idah = getVelocityIdx( dh, track );
    if ( idah <= 0 )
	return false;

    depths.start_ = track.getPos( dah_[idah-1] ).z_;
    times.start_ = t_[idah-1];
    depths.stop_ = mUdf(double);
    times.stop_ = mUdf(float);

    for ( int idx=idah; idx<dtsize; idx++ )
    {
        const double curz = track.getPos( dah_[idx] ).z_;
	const float curtwt = t_[idx];
        if ( curz > depths.start_ && curtwt > times.start_ )
	{
            depths.stop_ = curz;
            times.stop_ = curtwt;
	    break;
	}
    }

    if ( mIsUdf(times.stop_) ) // found nothing good below, search above
    {
        depths.stop_ = depths.start_;
        times.stop_ = times.start_;
        depths.start_ = mUdf(double);
        times.start_ = mUdf(float);
	for ( int idx=idah-2; idx>=0; idx-- )
	{
            const double curz = track.getPos( dah_[idx] ).z_;
	    const float curtwt = t_[idx];
            if ( curz < depths.stop_ && curtwt < times.stop_ )
	    {
                depths.start_ = curz;
                times.start_ = curtwt;
		break;
	    }
	}
        if ( mIsUdf(times.start_) )
	    return false; // could not get a single good velocity
    }

    return true;
}

bool Well::D2TModel::getOldVelocityBoundsForTwt( float twt, const Track& track,
						 Interval<double>& depths,
						 Interval<float>& times ) const
{
    const int dtsize = size();
    const int idah = getVelocityIdx( twt, track, false );
    if ( idah <= 0 )
	return false;

    depths.start_ = track.getPos( dah_[idah-1] ).z_;
    times.start_ = t_[idah-1];
    depths.stop_ = mUdf(double);
    times.stop_ = mUdf(float);

    for ( int idx=idah; idx<dtsize; idx++ )
    {
        const double curz = track.getPos( dah_[idx] ).z_;
	const float curtwt = t_[idx];
        if ( curz > depths.start_ && curtwt > times.start_ )
	{
            depths.stop_ = curz;
            times.stop_ = curtwt;
	    break;
	}
    }

    if ( mIsUdf(times.stop_) ) // found nothing good below, search above
    {
        depths.stop_ = depths.start_;
        times.stop_ = times.start_;
        depths.start_ = mUdf(double);
        times.start_ = mUdf(float);
	for ( int idx=idah-2; idx>=0; idx-- )
	{
            const double curz = track.getPos( dah_[idx] ).z_;
	    const float curtwt = t_[idx];
            if ( curz < depths.stop_ && curtwt < times.stop_ )


 / Javascript we don’t (yet) have the luxury to run a full blown physics simulation. So in Oz we had to find a way to create the effect of wind, without actually simulating it.

We embedded the information of “wind sensitivity” for each object in the 3D model itself. Each vertex of the 3D model had a ”Wind Attribute” that specified how much that vertex was supposed to be affected by wind. So, this specified wind sensitivity of 3D Objects. Then we needed to create the wind itself.

We did this by generating an image containing [Perlin Noise](http://en.wikipedia.org/wiki/Perlin_noise). This image is intended to cover a certain “area of wind”. So, a good way to think about it, is to imagine a picture of cloud like noise being laid over a certain rectangular area of the 3D scene. Each pixel, gray level value, of this image specifies how strong the wind is in a certain moment in the 3D area “surrounding it”.

In order to produce the wind effect the image is moved, in time, at constant speed, in a specific direction; the direction of the wind. And to make sure the “windy area” doesn’t affect everything in the scene we wrap the wind image around the edges, confined to the area of effect.

### A Simple 3D Wind Tutorial

Let’s now create the effect of wind in a simple 3D scene in Three.js.

We’re going to create wind in a simple ”procedural grass field”.

Let’s first create the scene. We’re going to have a simple, textured flat terrain. And then each bit of grass, is simply going to be represented with an upside-down 3D cone.

<figure>
{% Img src="image/T4FyVKpzu4WKF1kBNvXepbi08t52/Bm0om5KAvCT6wisAS58L.jpg", alt="Grass-filled terrain", width="800", height="469" %}
<figcaption>Grass-filled terrain</figcaption>
</figure>

Here is how to create this simple scene in [Three.js](http://mrdoob.github.com/three.js/) using [CoffeeScript](http://coffeescript.org/).

First of all we’re going to setup Three.js, and hook it up with Camera, Mouse controller, and Some Light, of sorts:

```js
constructor: ->

   @clock =  new THREE.Clock()

   @container = document.createElement( 'div' );
   document.body.appendChild( @container );

   @renderer = new THREE.WebGLRenderer();
   @renderer.setSize( window.innerWidth, window.innerHeight );
   @renderer.setClearColorHex( 0x808080, 1 )
   @container.appendChild(@renderer.domElement);

   @camera = new THREE.PerspectiveCamera( 50, window.innerWidth / window.innerHeight, 1, 5000 );
   @camera.position.x = 5;
   @camera.position.y = 10;
   @camera.position.z = 40;

   @controls = new THREE.OrbitControls( @camera, @renderer.domElement );
   @controls.enabled = true

   @scene = new THREE.Scene();
   @scene.add( new THREE.AmbientLight 0xFFFFFF )

   directional = new THREE.DirectionalLight 0xFFFFFF
   directional.position.set( 10,10,10)
   @scene.add( directional )

   # Demo data
   @grassTex = THREE.ImageUtils.loadTexture("textures/grass.png");
   @initGrass()
   @initTerrain()

   # Stats
   @stats = new Stats();
   @stats.domElement.style.position = 'absolute';
   @stats.domElement.style.top = '0px';
   @container.appendChild( @stats.domElement );
   window.addEventListener( 'resize', @onWindowResize, false );
   @animate()
```

The __initGrass__, and __initTerrain__ function calls populate the scene with grass and terrain respectively:

```js
initGrass:->
   mat = new THREE.MeshPhongMaterial( { map: @grassTex } )
   NUM = 15
   for i in [0..NUM] by 1
       for j in [0..NUM] by 1
           x = ((i/NUM) - 0.5) * 50 + THREE.Math.randFloat(-1,1)
           y = ((j/NUM) - 0.5) * 50 + THREE.Math.randFloat(-1,1)
           @scene.add( @instanceGrass( x, 2.5, y, 5.0, mat ) )

instanceGrass:(x,y,z,height,mat)->
   geometry = new THREE.CylinderGeometry


,whiteSpace:"pre-wrap",color:"inherit",fontSize:"13px",lineHeight:"19px",code:{color:"inherit",fontSize:"inherit"}},"& code":{whiteSpace:"pre"},"& code, & tt":{border:"none"}}})),Link$1=function(e){var t=e.href,r=e.children,n=_objectWithoutProperties$p(e,["href","children"]),o=/^\//.test(t),a=/^#.*/.test(t),i=o?"?path=".concat(t):t,u=a?"_self":"_top";return J$7.createElement("a",_extends$m({href:i,target:u},n),r)};Link$1.displayName="Link";var A$2$1=Du$3(Link$1)(withReset,(function(e){return{fontSize:"inherit",lineHeight:"24px",color:e.theme.color.secondary,textDecoration:"none","&.absent":{color:"#cc0000"},"&.anchor":{display:"block",paddingLeft:30,marginLeft:-30,cursor:"pointer",position:"absolute",top:0,left:0,bottom:0}}})),HR=Du$3.hr((function(e){var t=e.theme;return{border:"0 none",borderTop:"1px solid ".concat(t.appBorderColor),height:4,padding:0}})),DL=Du$3.dl(withReset,Object.assign({},withMargin,{padding:0,"& dt":{fontSize:"14px",fontWeight:"bold",fontStyle:"italic",padding:0,margin:"16px 0 4px"},"& dt:first-of-type":{padding:0},"& dt > :first-of-type":{marginTop:0},"& dt > :last-child":{marginBottom:0},"& dd":{margin:"0 0 16px",padding:"0 15px"},"& dd > :first-of-type":{marginTop:0},"& dd > :last-child":{marginBottom:0}})),Blockquote=Du$3.blockquote(withReset,withMargin,(function(e){var t=e.theme;return{borderLeft:"4px solid ".concat(t.color.medium),padding:"0 15px",color:t.color.dark,"& > :first-of-type":{marginTop:0},"& > :last-child":{marginBottom:0}}})),Table$1=Du$3.table(withReset,withMargin,(function(e){var t=e.theme;return{fontSize:t.typography.size.s2,lineHeight:"24px",padding:0,borderCollapse:"collapse","& tr":{borderTop:"1px solid ".concat(t.appBorderColor),backgroundColor:t.appContentBg,margin:0,padding:0},"& tr:nth-of-type(2n)":{backgroundColor:"dark"===t.base?t.color.darker:t.color.lighter},"& tr th":{fontWeight:"bold",color:t.color.defaultText,border:"1px solid ".concat(t.appBorderColor),margin:0,padding:"6px 13px"},"& tr td":{border:"1px solid ".concat(t.appBorderColor),color:t.color.defaultText,margin:0,padding:"6px 13px"},"& tr th :first-of-type, & tr td :first-of-type":{marginTop:0},"& tr th :last-child, & tr td :last-child":{marginBottom:0}}})),Img=Du$3.img({maxWidth:"100%"}),Div=Du$3.div(withReset),Span=Du$3.span(withReset,(function(e){var t=e.theme;return{"&.frame":{display:"block",overflow:"hidden","& > span":{border:"1px solid ".concat(t.color.medium),display:"block",float:"left",overflow:"hidden",margin:"13px 0 0",padding:7,width:"auto"},"& span img":{display:"block",float:"left"},"& span span":{clear:"both",color:t.color.darkest,display:"block",padding


Z13, Z27, Z26, Z29, Z30, Z31, Z13, Z24, Z25)
	REDUCE1Q(Z24, Z13, Z26)
	VPBROADCASTD 56(CX), Z29
	ADD(Z14, Z29, Z24, Z30, Z14)
	MUL_4W(Z14, Z14, Z27, Z28, Z30, Z29, Z31, Z24, Z25)
	REDUCE1Q(Z24, Z31, Z27)
	MUL_4W(Z31, Z31, Z28, Z30, Z29, Z27, Z26, Z24, Z25)
	MUL_4W(Z14, Z26, Z28, Z30, Z29, Z27, Z14, Z24, Z25)
	MUL_4W(Z14, Z31, Z28, Z30, Z29, Z27, Z14, Z24, Z25)
	REDUCE1Q(Z24, Z14, Z28)
	VPBROADCASTD 60(CX), Z30
	ADD(Z15, Z30, Z24, Z29, Z15)
	MUL_4W(Z15, Z15, Z31, Z26, Z29, Z30, Z27, Z24, Z25)
	REDUCE1Q(Z24, Z27, Z31)
	MUL_4W(Z27, Z27, Z26, Z29, Z30, Z31, Z28, Z24, Z25)
	MUL_4W(Z15, Z28, Z26, Z29, Z30, Z31, Z15, Z24, Z25)
	MUL_4W(Z15, Z27, Z26, Z29, Z30, Z31, Z15, Z24, Z25)
	REDUCE1Q(Z24, Z15, Z26)
	VPBROADCASTD 64(CX), Z29
	ADD(Z16, Z29, Z24, Z30, Z16)
	MUL_4W(Z16, Z16, Z27, Z28, Z30, Z29, Z31, Z24, Z25)
	REDUCE1Q(Z24, Z31, Z27)
	MUL_4W(Z31, Z31, Z28, Z30, Z29, Z27, Z26, Z24, Z25)
	MUL_4W(Z16, Z26, Z28, Z30, Z29, Z27, Z16, Z24, Z25)
	MUL_4W(Z16, Z31, Z28, Z30, Z29, Z27, Z16, Z24, Z25)
	REDUCE1Q(Z24, Z16, Z28)
	VPBROADCASTD 68(CX), Z30
	ADD(Z17, Z30, Z24, Z29, Z17)
	MUL_4W(Z17, Z17, Z31, Z26, Z29, Z30, Z27, Z24, Z25)
	REDUCE1Q(Z24, Z27, Z31)
	MUL_4W(Z27, Z27, Z26, Z29, Z30, Z31, Z28, Z24, Z25)
	MUL_4W(Z17, Z28, Z26, Z29, Z30, Z31, Z17, Z24, Z25)
	MUL_4W(Z17, Z27, Z26, Z29, Z30, Z31, Z17, Z24, Z25)
	REDUCE1Q(Z24, Z17, Z26)
	VPBROADCASTD 72(CX), Z29
	ADD(Z18, Z29, Z24, Z30, Z18)
	MUL_4W(Z18, Z18, Z27, Z28, Z30, Z29, Z31, Z24, Z25)
	REDUCE1Q(Z24, Z31, Z27)
	MUL_4W(Z31, Z31, Z28, Z30, Z29, Z27, Z26, Z24, Z25)
	M


getByUUID(uuid)
            when (existing) {
                null -> {
                    val id = createOp?.let { it(item) }  ?: this.create(item)
                    Tries.of(id.toLong() > 0L, item)
                }
                else -> {
                    Tries.success(item)
                }
            }
        } catch (ex:Exception) {
            Tries.unexpected(ex)
        }
    }
}
package kiit.data.features

import kiit.common.data.Value
import kiit.query.Op
import kiit.query.Select
import kiit.query.Update

/**
 * Support patching of records by conditions
 */
interface Patchable<TId, T> : Inspectable<TId, T> where TId : Comparable<TId>, T:Any {

    /**
     * patches the items with the field and value supplied
     */
    fun patchByField(field: String, value: Any?): Int = patchByQuery(patch().set(Value(columnName(field), meta.pkey.type, value)))

    /**
     * patches the items with old and new value
     */
    fun patchByValue(field: String, oldValue: Any?, newValue:Any?): Int = patchByQuery(patch().set(field, newValue).where(field, Op.Eq, oldValue))

    /**
     * Patch 1 item by its id using the updates provided
     */
    fun patchById(id: TId, updates: List<Value>): Int = patchByQuery(patch().set(updates).where(meta.pkey.name, Op.Eq, id))

    /**
     * Patches using a query builder
     * patch { set("active", 2).where("id" 3) }
     */
    fun patch(builder: Update.() -> Unit): Int {
        val s = patch()
        builder(s)
        return patchByQuery(s)
    }

    /**
     * Patch using the query builder
     */
    fun patchByQuery(builder: Update): Int
}
package kiit.data.sql.vendors

import kiit.common.data.DataType
import kiit.common.newline
import kiit.data.sql.Dialect
import kiit.meta.models.Model
import kiit.utils.naming.Namer

interface DDLBuilder {
    val namer:Namer?
    val dialect:Dialect
    fun create(model: Model): String
    fun delete(model: Model): String
    fun clear(model: Model) : String
    fun createIndexes(model: Model): List<String>
}

/**
 * 1. CREATE INDEX idx_lastname ON message (status);
 * 2. ALTER TABLE message DROP INDEX idx_status;
 * 3. ALTER TABLE message ADD UNIQUE (uuid);
 */
open class SqlDDLBuilder(override val dialect: Dialect,
                         override val namer: Namer?) : DDLBuilder {
    private val defaultID = "id"
    private val types = dialect.types

    /**
     * Builds the create table DDL for this model
     */
    override fun create(model: Model): String
    {
        val buff = StringBuilder()

        // 1. build the "CREATE <tablename>
        val tableName = dialect.encode(model.schema, model.table)
        buff.append("create table if not exists $tableName ( $newline")

        // 2. build the primary key column
        val idCol = model.idField?.storedName ?: defaultID
        buff.append(createPrimaryKey(idCol))

        // 3. Now build all the columns
        // Get only fields ( excluding primary key )
        // Build sql for the data fields.
        val dataFieldSql = createColumns(null, model, true)
        buff.append(dataFieldSql)

        // 4. finish the construction and get the sql.
        buff.append(" );")
        val sql = buff.toString()
        return sql
    }

    override fun delete(model: Model): String {
        val tableName = dialect.encode(model.schema,


   local ButtonsContainer = New("Frame", {
            Size = UDim2.new(1,0,0,38),
            BackgroundTransparency = 1,
            AutomaticSize = "Y",
            Parent = Paragraph.UIElements.Container
        }, {
            New("UIListLayout", {
                Padding = UDim.new(0,10),
                FillDirection = "Vertical",
            })
        })

        for _,Button in next, ElementConfig.Buttons do
            local ButtonFrame = CreateButton(Button.Title, Button.Icon, Button.Callback, "White", ButtonsContainer, nil, nil, ElementConfig.Window.NewElements and 12 or 10)
            ButtonFrame.Size = UDim2.new(1,0,0,38)
            --ButtonFrame.AutomaticSize = "X"
        end
    end

    return ParagraphModule.__type, ParagraphModule

end

return Element


/*
 * $XConsortium: hftUtils.h /main/3 1995/12/05 15:44:17 matt $
 *
 * Copyright IBM Corporation 1987,1988,1989,1990,1991
 *
 * All Rights Reserved
 *
 * License to use, copy, modify, and distribute this software and its
 * documentation for any purpose and without fee is hereby granted,
 * provided that the above copyright notice appear in all copies and that
 * both that copyright notice and this permission notice appear in
 * supporting documentation, and that the name of IBM not be
 * used in advertising or publicity pertaining to distribution of the
 * software without specific, written prior permission.
 *
 * IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
 * ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS, AND
 * NONINFRINGEMENT OF THIRD PARTY RIGHTS, IN NO EVENT SHALL
 * IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
 * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
 * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 * SOFTWARE.
 *
*/
#ifndef _IBM_LFT

#ifndef HFTUTILS_H
#define HFTUTILS_H

	/*
	 * void		hftSetLEDS(unsigned which,unsigned how)
	 * void		hftSetLocatorThresholds(unsigned horz,unsigned vert)
	 * void		hftSetTableDeadZone(unsigned horz,unsigned vert)
	 * void		hftSetLPFK(unsigned keys,unsigned flags)
	 * void		hftSetDialGranularity(unsigned dials,unsigned *settings)
	 * void 	hftSound(unsigned duration,unsigned frequency)
	 * void 	hftSetTypematicDelay(unsigned delay)
	 * void 	hftSetTypematicRate(unsigned rate)
	 * void 	hftSetKeyClick(unsigned on)
	 * void 	hftSetLocatorSampleRate(unsigned rate)
	 * void 	hftSetVolume(unsigned vol)
	 * int 		hftQueryDeviceIds(hftDeviceID **ppDevices)
	 * unsigned	hftQueryDefaultDisplay()
	 * int 		hftHasAnAttached(unsigned devId,char *pName)
	 * int	        hftFindAScreen()
	 */

/***====================================================================***/

#define	HFT_MAXDEVICES	8

#define HF_INT(f)	( (unsigned int)((f)[0]<<24|(f)[1]<<16 | \
					 (f)[2]<<8 |(f)[3]) )

typedef struct hftdid  {
	unsigned	hftDevID;
	unsigned	hftDevClass;
} hftDeviceID;

#define	HFT_DEVID_MASK		0xffff0000
#define	HFT_DEVBUSTED_MASK	0x0000ff00
#define	HFT_DEVNUM_MASK		0x000000ff

#define	HFT_ILLEGAL_KEYBOARD	-1

#define	HFT_ILLEGAL_ID	0x00000000

#define	HFT_SKYWAY_ID	0x04210000
#define	HFT_SKYMONO_ID	0x04220000
#define	HFT_SABINE_ID	0x04250000
#define	HFT_GEMINI_ID	0x04270000
#define	HFT_PEDER_ID	0x04290000

#define	HFT_APA8_ID	0x04020000
#define	HFT_EGA_ID	0x04040000
#define	HFT_APA16_ID	0x04050000
#define	HFT_APA8C_ID	0x04060000
#define HFT_MEGAPEL_ID	0x04080000

#define	HFT_VGA_8503_ID		0x04110000
#define	HFT_VGA_8512_ID		0x04120000
#define	HFT_VGA_8513_ID		0x04130000
#define	HFT_VGA_8514_ID		0x04140000
#define	HFT_VGA_8507_ID		0x04150000
#define	HFT_VGA_8604_ID		0x04160000

#define	HFT_8514A_8503_ID	0x04180000
#define	HFT_8514A_8512_ID	0x04190000
#define	HFT_8514A_8513_ID	0x041A0000
#define	HFT_8514A_8514_ID	0x041B0000
#define	HFT_8514A_8507_ID	0x041C0000
#define	HFT_8514A_8604_ID	0x041D0000

/***====================================================================***/

extern	void		 hftSetLEDS();
extern	void		 hftSetLocatorThresholds();
extern	void		 hftSetTableDeadZone();
extern	void		 hftSetLPFK();
extern	void		 hftSetDialGranularity();
extern	void		 hftSound();
extern	void		 hftSetTypematicDelay();
extern	void		 hftSetTypematicRate();
extern	void		 hftSetKeyClick();
extern	void		 hftSetLocatorSampleRate();
extern	void		 hftSetVolume();
extern	int		 hftQueryDeviceIDs();
extern	unsigned	 hftQueryDefaultDisplay();
extern	int		 hftHasAnAttached();
extern	int		 hftFindAScreen();
extern	void		 hftQueryHardwareConfig();

#endif /* HFTUTILS_H */

#endif /* !_IBM_LFT */


        );
        await tester.pumpAndSettle();
        expect(find.byKey(const Key('e4-whitepawn')), findsOneWidget);
        expect(find.byKey(const Key('e2-whitepawn')), findsNothing);
        expect(find.byKey(const Key('e2-lastMove')), findsOneWidget);
        expect(find.byKey(const Key('e4-lastMove')), findsOneWidget);

        verifyInOrder([
          () => onTouchedSquare.call(Square.e2),
          () => onTouchedSquare.call(Square.e2),
        ]);
        verifyNoMoreInteractions(onTouchedSquare);
      }
    });

    testWidgets(
      'Square is always deselected after drag if piece shift method is drag',
      (WidgetTester tester) async {
        await tester.pumpWidget(
          const _TestApp(
            initialPlayerSide: PlayerSide.both,
            settings: ChessboardSettings(
              pieceShiftMethod: PieceShiftMethod.drag,
            ),
          ),
        );
        await tester.tap(find.byKey(const Key('e2-whitepawn')));
        await tester.pump();

        // simluate a drag that leaves the piece on the same square
        await tester.dragFrom(
          squareOffset(tester, Square.e2),
          const Offset(0, -(squareSize / 2)),
        );
        await tester.pumpAndSettle();
        expect(find.byKey(const Key('e2-selected')), findsNothing);
      },
    );

    testWidgets('castling by selecting king then rook is possible', (
      WidgetTester tester,
    ) async {
      await tester.pumpWidget(
        const _TestApp(
          initialFen:
              'r1bqk1nr/pppp1ppp/2n5/2b1p3/2B1P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 4 4',
          initialPlayerSide: PlayerSide.both,
        ),
      );
      await tester.tap(find.byKey(const Key('e1-whiteking')));
      await tester.pump();
      await tester.tap(find.byKey(const Key('h1-whiterook')));
      await tester.pump();

      // wait for the animations to finish
      await tester.pumpAndSettle();

      expect(find.byKey(const Key('e1-whiteking')), findsNothing);
      expect(find.byKey(const Key('h1-whiterook')), findsNothing);
      expect(find.byKey(const Key('g1-whiteking')), findsOneWidget);
      expect(find.byKey(const Key('f1-whiterook')), findsOneWidget);
      expect(find.byKey(const Key('e1-lastMove')), findsOneWidget);
      expect(find.byKey(const Key('h1-lastMove')), findsOneWidget);
    });

    testWidgets('dragging off target', (WidgetTester tester) async {
      for (final settings in [
        const ChessboardSettings(),
        const ChessboardSettings(
          border: BoardBorder(width: 16.0, color: Color(0xFF000000)),
        ),
      ]) {
        await tester.pumpWidget(
          _TestApp(
            initialPlayerSide: PlayerSide.both,
            settings: settings,
            key: ValueKey(settings.hashCode),
          ),
        );

        final e2 = squareOffset(tester, Square.e2);
        await tester.dragFrom(e2, const Offset(0, -(squareSize * 4)));
        await tester.pumpAndSettle();
        expect(find.byKey(const Key('e2-whitepawn')), findsOneWidget);
        expect(find.byKey(const Key('e2-selected')), findsNothing);
        expect(find.byType(ValidMoveHighlight), findsNothing);
      }
    });

    testWidgets('dragging off board', (WidgetTester tester) async {
      for (final settings in [


  setmetatable(cls, {
      __index = cls.super
    })
  else
    setmetatable(cls, {
      __index = function(_, key)
        local supers = cls.__supers
        for i = 1, #supers do
          local super = supers[i]
          if super[key] then
            return super[key]
          end
        end
      end
    })
  end
  if not cls.ctor then
    function cls.ctor()
    end
  end

  function cls.new(...)
    local instance
    if cls.__create then
      instance = cls.__create(...)
    else
      instance = {}
    end
    setmetatableindex(instance, cls)
    instance.class = cls
    instance:ctor(...)
    return instance
  end

  function cls.create(_, ...)
    return cls.new(...)
  end

  return cls
end

local setmetatableindex_

function setmetatableindex_(t, index)
  if type(t) == "userdata" then
    local peer = tolua.getpeer(t)
    if not peer then
      peer = {}
      tolua.setpeer(t, peer)
    end
    setmetatableindex_(peer, index)
  else
    local mt = getmetatable(t)
    mt = mt or {}
    if not mt.__index then
      mt.__index = index
      setmetatable(t, mt)
    elseif mt.__index ~= index then
      setmetatableindex_(mt, index)
    end
  end
end

setmetatableindex = setmetatableindex_


0 [d-float],$0x0
   5fd5f:	00          	halt
   5fd60:	6d 00 00    	cvtwd $0x0,$0x0 [d-float]
   5fd63:	00          	halt
   5fd64:	1c 00       	bvc 5fd66 <op+0xf0a>
   5fd66:	00          	halt
   5fd67:	00          	halt
   5fd68:	fc          	xfc
   5fd69:	ff ff       	.word 0xffff
   5fd6b:	ff 6d       	.word 0xff6d
   5fd6d:	00          	halt
   5fd6e:	00          	halt
   5fd6f:	00          	halt
   5fd70:	6b 00 00    	cvtrdl $0x0 [d-float],$0x0
   5fd73:	00          	halt
   5fd74:	1c 00       	bvc 5fd76 <op+0xf1a>
   5fd76:	00          	halt
   5fd77:	00          	halt
   5fd78:	f8 ff ff ff 	ashp *71fd7d <_end+0x6b0355>,$0x0,$0x0,(r11),$0x0,$0x0
   5fd7c:	6b 00 00 00
   5fd80:	6b 00 00
   5fd83:	00          	halt
   5fd84:	6b 00 00    	cvtrdl $0x0 [d-float],$0x0
   5fd87:	00          	halt
   5fd88:	08 00 00 00 	cvtps $0x0,$0x0,$0x0,(fp)
   5fd8c:	6d
   5fd8d:	00          	halt
   5fd8e:	00          	halt
   5fd8f:	00          	halt
   5fd90:	69 00 00    	cvtdw $0x0 [d-float],$0x0
   5fd93:	00          	halt
   5fd94:	1c 00       	bvc 5fd96 <op+0xf3a>
   5fd96:	00          	halt
   5fd97:	00          	halt
   5fd98:	00          	halt
   5fd99:	00          	halt
   5fd9a:	00          	halt
   5fd9b:	00          	halt
   5fd9c:	6b 00 00    	cvtrdl $0x0 [d-float],$0x0
   5fd9f:	00          	halt
   5fda0:	6b 00 00    	cvtrdl $0x0 [d-float],$0x0
   5fda3:	00          	halt
   5fda4:	6b 00 00    	cvtrdl $0x0 [d-float],$0x0
   5fda7:	00          	halt
   5fda8:	04          	ret
   5fda9:	00          	halt
   5fdaa:	00          	halt
   5fdab:	00          	halt
   5fdac:	6d 00 00    	cvtwd $0x0,$0x0 [d-float]
   5fdaf:	00          	halt
   5fdb0:	6b 00 00    	cvtrdl $0x0 [d-float],$0x0
   5fdb3:	00          	halt
   5fdb4:	1b 00       	blequ 5fdb6 <op+0xf5a>
   5fdb6:	00          	halt
   5fdb7:	00          	halt
   5fdb8:	10 00       	bsbb 5fdba <op+0xf5e>
   5fdba:	00          	halt
   5fdbb:	00          	halt
   5fdbc:	69 00 00


n", vim.log.levels.INFO, { title = "Conceal", id = "neovim_conceallevel", icon = "" })
end, { desc = "Options | Toggle Conceal", silent = true })

map("n", "<leader>ow", function()
  vim.wo.wrap = not vim.wo.wrap
  vim.notify(vim.wo.wrap and "Enabled" or "Disabled", vim.log.levels.INFO, { title = "Wrap", id = "neovim_wrap", icon = "󰖶" })
end, { desc = "Options | Toggle Wrap", silent = true })

-- Navigation
map({ "n", "v" }, "<C-j>", "<C-w>j", { desc = "General | Go to upper window", silent = true })
map({ "n", "v" }, "<C-k>", "<C-w>k", { desc = "General | Go to lower window", silent = true })
map({ "n", "v" }, "<C-h>", "<C-w>h", { desc = "General | Go to left window", silent = true })
map({ "n", "v" }, "<C-l>", "<C-w>l", { desc = "General | Go to right window", silent = true })

for i = 1, 9, 1 do
  map("n", string.format("<M-%s>", i), function()
    api.nvim_set_current_buf(t.bufs[i])
  end, { desc = string.format("General | Go to Buff %s", i), silent = true })
end
map("n", "<M-0>", function()
  api.nvim_set_current_buf(t.bufs[10])
end, { desc = "General | Go to Buff 10", silent = true })

-- map("n", "<leader>w", function()
--   if vim.bo.buftype == "terminal" then
--     cmd("Bdelete!")
--     cmd("silent! close")
--   elseif #api.nvim_list_wins() > 1 then
--     cmd("silent! close")
--   end
-- end, { desc = "General | Safe Close Window", silent = true })

map("n", "<C-Up>", "<cmd>resize +2<CR>", { desc = "General | Add size at the top", silent = true })
map("n", "<C-Down>", "<cmd>resize -2<CR>", { desc = "General | Add size at the bottom", silent = true })
map("n", "<C-Right>", "<cmd>vertical resize +2<CR>", { desc = "General | Add size at the left", silent = true })
map("n", "<C-Left>", "<cmd>vertical resize -2<CR>", { desc = "General | Add size at the right", silent = true })

-- map("n", "<Left>", "<cmd>tabprevious<CR>", { desc = "General | Go to previous tab", silent = true })
-- map("n", "<Right>", "<cmd>tabnext<CR>", { desc = "General | Go to next tab", silent = true })
-- map("n", "<Up>", "<cmd>tabnew<CR>", { desc = "General | New tab", silent = true })
-- map("n", "<Down>", "<cmd>tabclose<CR>", { desc = "General | Close tab", silent = true })

-- map("v", "p", '"_dP', { desc = "General | Better Paste", silent = true })
map("v", "<", "<gv", { desc = "General | Indent backward", silent = true })
map("v", ">", ">gv", { desc = "General | Indent forward", silent = true })

-- Terminal
map("t", "<C-x>", "<C-\\><C-N>", { desc = "Terminal | Escape Terminal Mode", silent = true })

-- Plugins
map("n", "<leader>pc", "<cmd>Lazy clean<cr>", { desc = "Plugin | Clean", silent = false })
map("n", "<leader>pC", "<cmd>Lazy check<cr>", { desc = "Plugin | Check


.end-0 {
  inset-inline-end: 0px;
}

.left-0 {
  left: 0px;
}

.right-0 {
  right: 0px;
}

.right-3 {
  right: 0.75rem;
}

.top-0 {
  top: 0px;
}

.top-3 {
  top: 0.75rem;
}

.z-0 {
  z-index: 0;
}

.z-10 {
  z-index: 10;
}

.mx-1 {
  margin-left: 0.25rem;
  margin-right: 0.25rem;
}

.mx-2 {
  margin-left: 0.5rem;
  margin-right: 0.5rem;
}

.mx-3 {
  margin-left: 0.75rem;
  margin-right: 0.75rem;
}

.mx-auto {
  margin-left: auto;
  margin-right: auto;
}

.my-10 {
  margin-top: 2.5rem;
  margin-bottom: 2.5rem;
}

.mb-2 {
  margin-bottom: 0.5rem;
}

.mb-3 {
  margin-bottom: 0.75rem;
}

.mb-4 {
  margin-bottom: 1rem;
}

.me-2 {
  margin-inline-end: 0.5rem;
}

.ml-1 {
  margin-left: 0.25rem;
}

.ml-7 {
  margin-left: 1.75rem;
}

.mt-10 {
  margin-top: 2.5rem;
}

.mt-2 {
  margin-top: 0.5rem;
}

.mt-3 {
  margin-top: 0.75rem;
}

.mt-5 {
  margin-top: 1.25rem;
}

.block {
  display: block;
}

.flex {
  display: flex;
}

.inline-flex {
  display: inline-flex;
}

.table {
  display: table;
}

.grid {
  display: grid;
}

.h-16 {
  height: 4rem;
}

.h-4 {
  height: 1rem;
}

.h-5 {
  height: 1.25rem;
}

.h-6 {
  height: 1.5rem;
}

.h-\[30vh\] {
  height: 30vh;
}

.h-fit {
  height: -moz-fit-content;
  height: fit-content;
}

.h-full {
  height: 100%;
}

.h-\[20vh\] {
  height: 20vh;
}

.h-\[10vh\] {
  height: 10vh;
}

.h-\[15vh\] {
  height: 15vh;
}

.max-h-32 {
  max-height: 8rem;
}

.max-h-\[130\%\] {
  max-height: 130%;
}

.max-h-\[200\%\] {
  max-height: 200%;
}

.max-h-\[25vh\] {
  max-height: 25vh;
}

.max-h-\[30vh\] {
  max-height: 30vh;
}

.max-h-\[65\%\] {
  max-height: 65%;
}

.max-h-\[80\%\] {
  max-height: 80%;
}

.min-h-screen {
  min-height: 100vh;
}

.w-1\/2 {
  width: 50%;
}

.w-10 {
  width: 2.5rem;
}

.w-4 {
  width: 1rem;
}

.w-5 {
  width: 1.25rem;
}

.w-\[125px\] {
  width: 125px;
}

.w-\[150\%\] {
  width: 150%;
}

.w-\[36px\] {
  width: 36px;
}

.w-fit {
  width: -moz-fit-content;
  width: fit-content;
}

.w-full {
  width: 100%;
}

.min-w-\[750px\] {
  min-width:


"Töter der Sonnenklingen",nil},
[25369] = {"Verteidiger der Sonnenklingen",nil},
[25370] = {"Abendpriester der Sonnenklingen",nil},
[25371] = {"Morgenpriester der Sonnenklingen",nil},
[25372] = {"Späher der Sonnenklingen",nil},
[25373] = {"Seelenbinder der Schattenschwerter",nil},
[25483] = {"Manabestie der Schattenschwerter",nil},
[25484] = {"Assassine der Schattenschwerter",nil},
[25485] = {"Todesbringer der Schattenschwerter",nil},
[25486] = {"Bezwinger der Schattenschwerter",nil},
[25491] = {"Bossflüsterer",nil},
[25499] = {"PattyMacks Dummy",nil},
[25500] = {"PattyMacks Flying Dummy",nil},
[25502] = {"Schildkugel",nil},
[25506] = {"Lebensformer der Schattenschwerter",nil},
[25507] = {"Beschützer der Sonnenklingen",nil},
[25508] = {"Wächter der Schattenschwerter",nil},
[25509] = {"Priesterin der Qual",nil},
[25518] = {"Feuerkreisel",nil},
[25537] = {"Craig's Test Human",nil},
[25538] = {"(PH) Shattered Sun Badge Vendor",nil},
[25539] = {"(PH) Shattered Sun Raid Loot Conversion",nil},
[25540] = {"(PH) Shattered Sun Raid Loot",nil},
[25580] = {"Der alte Barlo","Meister des Angelns"},
[25588] = {"Hand des Betrügers",nil},
[25591] = {"Schmerzbringer",nil},
[25592] = {"Verdammnisfeuerzerstörer",nil},
[25593] = {"Wächter der Apokalypse",nil},
[25595] = {"Chaosbetrachter",nil},
[25597] = {"Infernomagier",nil},
[25598] = {"Unstetes Teufelsfeuerscheusal",nil},
[25599] = {"Desasterhund",nil},
[25603] = {"Teufelsfeuerportal",nil},
[25608] = {"Kil'jaeden",nil},
[25632] = {"Verteidiger Moorba",nil},
[25633] = {"Arkanist Evandor","Reagenzienbedarf"},
[25634] = {"Schmiedin Vedral","Reparaturen"},
[25638] = {"Hauptmann Selana",nil},
[25639] = {"Anachoret Elbadon",nil},
[25640] = {"Kugelziel",nil},
[25644] = {"Neophytin Narama",nil},
[25653] = {"Energie des blauen Drachenschwarms",nil},
[25661] = {"Soldat der Zerschmetterten Sonne",nil},
[25662] = {"Bogenschütze der Zerschmetterten Sonne",nil},
[25663] = {"Magier der Zerschmetterten Sonne",nil},
[25695] = {"Roter Drache",nil},
[25697] = {"Luma Himmelsmutter",nil},
[25703] = {"Brutallus' Todeswolke",nil},
[25706] = {"Flämmling",nil},
[25708] = {"Finstere Spiegelung",nil},
[25710] = {"Numa Wolkenschwester",nil},
[25731] = {"Uralter Geisterwolf der Grimmtotem",nil},
[25735] = {"Ziel von Armageddon",nil},
[25740] = {"Ahune","Der Frostfürst"},
[25741] = {"M'uru",nil},
[25744] = {"Finsteres Scheusal",nil},
[25754


#endif
*/
#endif
float diffuseBRDF_Burley(float NdotL,float NdotV,float VdotH,float roughness) {float diffuseFresnelNV=pow5(saturateEps(1.0-NdotL));float diffuseFresnelNL=pow5(saturateEps(1.0-NdotV));float diffuseFresnel90=0.5+2.0*VdotH*VdotH*roughness;float fresnel =
(1.0+(diffuseFresnel90-1.0)*diffuseFresnelNL) *
(1.0+(diffuseFresnel90-1.0)*diffuseFresnelNV);return fresnel/PI;}
#ifdef SS_TRANSLUCENCY
vec3 transmittanceBRDF_Burley(const vec3 tintColor,const vec3 diffusionDistance,float thickness) {vec3 S=1./maxEps(diffusionDistance);vec3 temp=exp((-0.333333333*thickness)*S);return tintColor.rgb*0.25*(temp*temp*temp+3.0*temp);}
float computeWrappedDiffuseNdotL(float NdotL,float w) {float t=1.0+w;float invt2=1.0/square(t);return saturate((NdotL+w)*invt2);}
#endif
`;W.IncludesShadersStore[fM]=_M;const pM="hdrFilteringFunctions",mM=`#ifdef NUM_SAMPLES
#if NUM_SAMPLES>0
#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
float radicalInverse_VdC(uint bits)
{bits=(bits<<16u) | (bits>>16u);bits=((bits & 0x55555555u)<<1u) | ((bits & 0xAAAAAAAAu)>>1u);bits=((bits & 0x33333333u)<<2u) | ((bits & 0xCCCCCCCCu)>>2u);bits=((bits & 0x0F0F0F0Fu)<<4u) | ((bits & 0xF0F0F0F0u)>>4u);bits=((bits & 0x00FF00FFu)<<8u) | ((bits & 0xFF00FF00u)>>8u);return float(bits)*2.3283064365386963e-10; }
vec2 hammersley(uint i,uint N)
{return vec2(float(i)/float(N),radicalInverse_VdC(i));}
#else
float vanDerCorpus(int n,int base)
{float invBase=1.0/float(base);float denom =1.0;float result =0.0;for(int i=0; i<32; ++i)
{if(n>0)
{denom =mod(float(n),2.0);result+=denom*invBase;invBase=invBase/2.0;n =int(float(n)/2.0);}}
return result;}
vec2 hammersley(int i,int N)
{return vec2(float(i)/float(N),vanDerCorpus(i,2));}
#endif
float log4(float x) {return log2(x)/2.;}
const float NUM_SAMPLES_FLOAT=float(NUM_SAMPLES);const float NUM_SAMPLES_FLOAT_INVERSED=1./NUM_SAMPLES_FLOAT;const float K=4.;
#define inline
vec3 irradiance(samplerCube inputTexture,vec3 inputN,vec2 filteringInfo)
{vec3 n=normalize(inputN);vec3 result=vec3(0.0);vec3 tangent=abs(n.z)<0.999 ? vec3(0.,0.,1.) : vec3(1.,0.,0.);tangent=normalize(cross(tangent,n));vec3 bitangent=cross(n,tangent);mat3 tbn=mat3(tangent,bitangent,n);float maxLevel=filteringInfo.y;float dim0=filteringInfo.x;float omegaP=(4.*PI)/(6.*dim0*dim0);
#if defined(WEBGL2) || defi


// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

/// Description of the exception behaviour of native code.
class NativeThrowBehavior {
  static const NativeThrowBehavior NEVER = NativeThrowBehavior._(0);
  static const NativeThrowBehavior MAY = NativeThrowBehavior._(1);

  /// Throws only if first argument is null.
  static const NativeThrowBehavior NULL_NSM = NativeThrowBehavior._(2);

  /// Throws if first argument is null, then may throw.
  static const NativeThrowBehavior NULL_NSM_THEN_MAY = NativeThrowBehavior._(3);

  final int _bits;
  const NativeThrowBehavior._(this._bits);

  bool get canThrow => this != NEVER;

  /// Does this behavior always throw a noSuchMethod check on a null first
  /// argument before any side effect or other exception?
  bool get isNullNSMGuard => this == NULL_NSM || this == NULL_NSM_THEN_MAY;

  /// Does this behavior always act as a null noSuchMethod check, and has no
  /// other throwing behavior?
  bool get isOnlyNullNSMGuard => this == NULL_NSM;

  /// Returns the behavior if we assume the first argument is not null.
  NativeThrowBehavior get onNonNull {
    if (this == NULL_NSM) return NEVER;
    if (this == NULL_NSM_THEN_MAY) return MAY;
    return this;
  }

  @override
  String toString() {
    if (this == NEVER) return 'never';
    if (this == MAY) return 'may';
    if (this == NULL_NSM) return 'null(1)';
    if (this == NULL_NSM_THEN_MAY) return 'null(1)+may';
    return 'NativeThrowBehavior($_bits)';
  }

  /// Canonical list of marker values.
  ///
  /// Added to make [NativeThrowBehavior] enum-like.
  static const List<NativeThrowBehavior> values = [
    NEVER,
    MAY,
    NULL_NSM,
    NULL_NSM_THEN_MAY,
  ];

  /// Index to this marker within [values].
  ///
  /// Added to make [NativeThrowBehavior] enum-like.
  int get index => values.indexOf(this);

  /// Deserializer helper.
  static NativeThrowBehavior bitsToValue(int bits) {
    switch (bits) {
      case 0:
        return NEVER;
      case 1:
        return MAY;
      case 2:
        return NULL_NSM;
      case 3:
        return NULL_NSM_THEN_MAY;
      default:
        throw StateError('Unknown serialized NativeThrowBehavior: $bits');
    }
  }

  int valueToBits() => _bits;

  /// Sequence operator.
  NativeThrowBehavior then(NativeThrowBehavior second) {
    if (this == NEVER) return second;
    if (this == MAY) return MAY;
    if (this == NULL_NSM_THEN_MAY) return NULL_NSM_THEN_MAY;
    assert(this == NULL_NSM);
    if (second == NEVER) return this;
    return NULL_NSM_THEN_MAY;
  }

  /// Choice operator.
  NativeThrowBehavior or(NativeThrowBehavior other) {
    if (this == other) return this;
    return MAY;
  }
}
// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

library dart2js.diagnostics.invariant;

import 'spannable.dart';

/// Flag that can be used in assertions to assert that a code path is only
/// executed as part of development.
///
/// This flag is automatically set to true if helper methods like, [debugPrint],
/// [debugWrapPrint], [trace], and [reportHere] are called.
bool DEBUG_MODE = false;

/// Assert that [DEBUG_MODE] is `true` and


-toolbar,.press-this #wp-content-wrap div.mce-toolbar-grp{padding-left:3px}.press-this .howto{margin-top:2px;margin-bottom:3px;font-size:12px;font-style:italic;display:block}.press-this #wp-content-editor-container{clear:none}.press-this #poststuff .inside{margin-top:18px}.press-this .category-tabs{margin-bottom:3px}.press-this #poststuff{margin:0 8px;padding:0}.press-this #photo-add-url-div input[type=text]{width:220px}#poststuff #editor-toolbar{height:30px}.posting{margin-left:212px;position:relative}.press-this .inner-sidebar{width:200px}.press-this .inner-sidebar .sleeve{padding-top:5px}.press-this #submitdiv p{margin:0;padding:6px}.press-this #submitdiv #publishing-actions{border-bottom:1px solid #dfdfdf}.press-this #publish{float:left}.press-this #poststuff h2,.press-this #poststuff h3{font-size:14px;line-height:1}.press-this #categorydiv h3,.press-this #tagsdiv-post_tag h3{cursor:pointer}.press-this #submitdiv h3{cursor:default}h3.tb{font-weight:600;font-size:12px;margin-right:5px}.press-this .postbox,.press-this .stuffbox{margin-bottom:10px;min-width:0}.press-this #submitdiv:hover .handlediv{background:0 0}.tbtitle{font-size:1.7em;outline:0;padding:3px 4px;border:1px solid #dfdfdf}.press-this .actions{float:left;margin:-19px 0 0}.press-this #extra-fields .actions{margin:-32px 0 0 -7px}.press-this .actions li{float:right;list-style:none;margin-left:10px}#extra-fields .button{margin-left:5px}#photo_saving{margin:0 8px 8px;vertical-align:middle}#img_container_container{overflow:auto}#extra-fields{margin-top:10px;position:relative}#extra-fields h2{margin:12px}#waiting{margin-top:10px;overflow:hidden}#waiting span{float:left;margin:0 5px 0 0}#waiting .spinner{display:block}#extra-fields .postbox{margin-bottom:5px}#extra-fields .titlewrap{padding:0;overflow:auto;height:120px}#img_container a{float:right;overflow:hidden}#img_container a,#img_container img{width:68px;height:68px}#img_container img{border:0;background-color:#f4f4f4;cursor:pointer}#img_container a,#img_container a:link,#img_container a:visited{border:1px solid #ccc;display:block;position:relative}#img_container a:active,#img_container a:hover{border-color:#000;z-index:1000;border-width:1px}#embed-code{width:100%;height:98px}.press-this .categorydiv div.tabs-panel{height:100px}.press-this .tagsdiv .newtag{width:120px}.press-this #content{margin:5px 0;padding:0 5px;border:0 none;height:340px;font-family:Consolas,Monaco,monospace;font-size:13px;line-height:19px;background:0 0}.press-this #publishing-actions .spinner{display:inline;vertical-align:middle}@media screen and (max-width:782px){.press-this ul.category-tabs li.tabs{padding:3px 5px 5px}.press-this a.wp-switch-editor{font:13px/19px "Open Sans",sans-ser


        i++;
        if (i != rounds[k]) {
          CTR_DoSix(aesenc, xmm_key_tmp0);
        } else {
          CTR_DoSix(aesenclast, xmm_key_tmp0);
        }
        i++;
      }

      // get next PARALLEL_FACTOR blocks into xmm_result registers
      __ movdqu(xmm_from0, Address(from, pos, Address::times_1, 0 * AESBlockSize));
      __ movdqu(xmm_from1, Address(from, pos, Address::times_1, 1 * AESBlockSize));
      __ movdqu(xmm_from2, Address(from, pos, Address::times_1, 2 * AESBlockSize));
      __ movdqu(xmm_from3, Address(from, pos, Address::times_1, 3 * AESBlockSize));
      __ movdqu(xmm_from4, Address(from, pos, Address::times_1, 4 * AESBlockSize));
      __ movdqu(xmm_from5, Address(from, pos, Address::times_1, 5 * AESBlockSize));

      __ pxor(xmm_result0, xmm_from0);
      __ pxor(xmm_result1, xmm_from1);
      __ pxor(xmm_result2, xmm_from2);
      __ pxor(xmm_result3, xmm_from3);
      __ pxor(xmm_result4, xmm_from4);
      __ pxor(xmm_result5, xmm_from5);

      // store 6 results into the next 64 bytes of output
      __ movdqu(Address(to, pos, Address::times_1, 0 * AESBlockSize), xmm_result0);
      __ movdqu(Address(to, pos, Address::times_1, 1 * AESBlockSize), xmm_result1);
      __ movdqu(Address(to, pos, Address::times_1, 2 * AESBlockSize), xmm_result2);
      __ movdqu(Address(to, pos, Address::times_1, 3 * AESBlockSize), xmm_result3);
      __ movdqu(Address(to, pos, Address::times_1, 4 * AESBlockSize), xmm_result4);
      __ movdqu(Address(to, pos, Address::times_1, 5 * AESBlockSize), xmm_result5);

      __ addptr(pos, PARALLEL_FACTOR * AESBlockSize); // increase the length of crypt text
      __ subptr(len_reg, PARALLEL_FACTOR * AESBlockSize); // decrease the remaining length
      __ jmp(L_multiBlock_loopTop[k]);

      // singleBlock starts here
      __ align(OptoLoopAlignment);
      __ BIND(L_singleBlockLoopTop[k]);
      __ cmpptr(len_reg, 0);
      __ jcc(Assembler::lessEqual, L_exit);
      load_key(xmm_key_tmp0, key, 0x00, xmm_key_shuf_mask);
      __ movdqa(xmm_result0, xmm_curr_counter);
      inc_counter(rbx, xmm_curr_counter, 0x01, L__incCounter_single[k]);
      __ pshufb(xmm_result0, xmm_counter_shuf_mask);
      __ pxor(xmm_result0, xmm_key_tmp0);
      for (int i = 1; i < rounds[k]; i++) {
        load_key(xmm_key_tmp0, key, (0x10 * i), xmm_key_shuf_mask);
        __ aesenc(xmm_result0, xmm_key_tmp0);
      }
      load_key(xmm_key_tmp0, key, (rounds[k] * 0x10), xmm_key_shuf_mask);
      __ aesenclast(xmm_result0, xmm_key_tmp0);
      __ cmpptr(len_reg, AESBlockSize);
      __ jcc(Assembler::less, L_process


00; op2val:-0x55555556; immval:0x100; align:0
TEST_BRANCH_OP(blt, x2, x10, x11, 0x800000, -0x55555556, 0x100, 3f, x1, 180,0)

inst_67:
// rs1_val == 16,
// opcode: blt, op1:x10; op2:x11; op1val:0x10; op2val:0x1000000; immval:0xa; align:0
TEST_BRANCH_OP(blt, x2, x10, x11, 0x10, 0x1000000, 0xa, 1b, x1, 184,0)

inst_68:
// rs1_val == 64,
// opcode: blt, op1:x10; op2:x11; op1val:0x40; op2val:0x20000; immval:0xa; align:0
TEST_BRANCH_OP(blt, x2, x10, x11, 0x40, 0x20000, 0xa, 1b, x1, 188,0)

inst_69:
// rs1_val == 1024,
// opcode: blt, op1:x10; op2:x11; op1val:0x400; op2val:-0x8000001; immval:0x200; align:0
TEST_BRANCH_OP(blt, x2, x10, x11, 0x400, -0x8000001, 0x200, 3f, x1, 192,0)

inst_70:
// rs1_val == 2048,
// opcode: blt, op1:x10; op2:x11; op1val:0x800; op2val:0x400; immval:0x0; align:0
TEST_BRANCH_OP(blt, x2, x10, x11, 0x800, 0x400, 0x0, 1b, x1, 196,0)

inst_71:
// rs1_val == 32768,
// opcode: blt, op1:x10; op2:x11; op1val:0x8000; op2val:0x100000; immval:0x4; align:0
TEST_BRANCH_OP(blt, x2, x10, x11, 0x8000, 0x100000, 0x4, 1b, x1, 200,0)

inst_72:
// rs1_val == 65536,
// opcode: blt, op1:x10; op2:x11; op1val:0x10000; op2val:-0x401; immval:0x400; align:0
TEST_BRANCH_OP(blt, x2, x10, x11, 0x10000, -0x401, 0x400, 3f, x1, 204,0)

inst_73:
// rs1_val == 131072,
// opcode: blt, op1:x10; op2:x11; op1val:0x20000; op2val:-0x4001; immval:0x100; align:0
TEST_BRANCH_OP(blt, x2, x10, x11, 0x20000, -0x4001, 0x100, 3f, x1, 208,0)

inst_74:
// rs1_val == 33554432,
// opcode: blt, op1:x10; op2:x11; op1val:0x2000000; op2val:0x800000; immval:0x0; align:0
TEST_BRANCH_OP(blt, x2, x10, x11, 0x2000000, 0x800000, 0x0, 1b, x1, 212,0)

inst_75:
// rs1_val == 67108864,
// opcode: blt, op1:x10; op2:x11; op1val:0x4000000; op2val:0x5; immval:0x10; align:0
TEST_BRAN


ly Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
  { "203abb713c00b0884206dcc656caa48f", "Imagic", "O3207", "Moonsweeper (1983) (Imagic)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "" },
  { "203b1efc6101d4b9d83bb6cc1c71f67f", "Starsoft", "", "Teller-Jonglieren! (AKA Tanzende Teller) (Starsoft) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "", "" },
  { "205070b6a0d454961dd9196a8e81d877", "", "", "Hangman Monkey Biglist2 (Hangman Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
  { "205f4e080db97d3641a780c8c40261ef", "Mattel", "MT7045", "Bump 'N' Jump (1983) (Mattel) [b1]", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
  { "2091af29b4e7b86914d79d9aaa4cbd20", "CBS Electronics", "", "Donkey Kong Junior (CBS Electronics) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
  { "20dca534b997bf607d658e77fbb3c0ee", "Mythicon", "MA-1002", "Fire Fly (1983) (Mythicon) [!]", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
  { "20edcc3aa6c189259fa7e2f044a99c49", "Spectravision", "SA-201", "Gangster Alley (1982) (Spectravision)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
  { "211774f4c5739042618be8ff67351177", "Atari", "CX2684", "Galaxian (1983) (Atari) [!]", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
  { "211f76dff0b7dad3f6fcac9d938ee61a", "", "", "Custer's Viagra (JSK) (Custer's Revenge Hack) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "32", "", "", "", "" },
  { "211fbbdbbca1102dc5b43dc8157c09b3", "Apollo", "AP 2009", "Final Approach (1982) (Apollo)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
  { "2124cf92978c46684b6c39ccc2e33713", "Bitcorp", "", "Sea Monster (Bitcorp) (PAL) [p1][!]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
  { "21299c8c3ac1d54f8289d88702a738fd", "K-Tel Vision", "", "Spider Maze (K-Tel Vision)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "25", "220", "", "", "" },
  { "212d0b200ed8b45d8795ad899734d7d7", "Coca Cola", "", "Pepsi Invaders (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
  { "213e5e82ecb42af237cfed8612c128ac", "Sancho", "", "Forest (Sancho) (PAL) [!]", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "256", "YES", "", "" },
  { "2179dfd7edee76efafe698c1bc763735", "", "", "Yellow Submarine (Cody Pittman