h mode:
        return call_delegate_cpu(lowered_module, *args)

@executorch_call_delegate.py_functionalize_impl
# pyre-ignore
def call_delegate_functionalize(ctx, lowered_module, *args):
    unwrapped_args = tuple(ctx.unwrap_tensors(arg) for arg in args)
    with ctx.redispatch_to_next():
        res = executorch_call_delegate(lowered_module, *unwrapped_args)
        return ctx.wrap_tensors(res)

# pyre-ignore: Missing parameter annotation [2]: Parameter `obj` must have a type other than `Any`.Pyre
def is_lowered_module(obj: Any) -> bool:
    """
    This function is added to avoid using isinstance(obj,
    LoweredBackendModule) as it will import LoweredBackendModule, which may
    cause a circular import.
    """
    return type(obj).__name__ == LOWERED_BACKEND_MODULE_TYPE

def get_lowered_module_name(
    root: torch.nn.Module,
    # pyre-ignore: Undefined or invalid type [11]: Annotation `LoweredBackendModule` is not defined as a type.
    lowered_module: LOWERED_BACKEND_MODULE_TYPE,  # type: ignore[valid-type]
) -> str:
    """
    Adds the given lowered_module into the given root module and returns the
    name of the module added.
    """
    # Find a qualifying name for the lowered submodule
    qualname = None
    i = 0
    while True:
        qualname = f"lowered_module_{i}"
        if not hasattr(root, qualname):
            break
        i += 1
    assert qualname is not None

    root.add_module(qualname, lowered_module)
    return qualname


                                    |
| 2     | 109.7 | 106.6 | About equal                                   |
| 4     | 109.6 | 99.8  | vLLM holds steady                             |
| 8     | 103.8 | 90.4  | vLLM steadier                                 |
| 16    | 77.0  | 73.0  | Equalizing                                    |
| 32    | 65.3  | 53.6  | MAX slower per request (but higher aggregate) |

**Observation:**

- **vLLM keeps more stable per-request speed at mid-batch.**
- **MAX trades per-request speed for aggregate throughput.**

---

## **3⃣ Per-Request p95 Throughput (p95_req_tok/s)**

| Batch | vLLM  | MAX   | Winner |
| ----- | ----- | ----- | ------ |
| 1     | 117.7 | 132.4 | MAX    |
| 2     | 121.3 | 110.2 | vLLM   |
| 4     | 122.0 | 108.1 | vLLM   |
| 8     | 125.0 | 105.2 | vLLM   |
| 16    | 100.8 | 93.4  | vLLM   |
| 32    | 97.0  | 84.1  | vLLM   |

**Observation:**

- vLLM is more **consistent for individual requests under scale.**
- MAX sacrifices individual latency for throughput.

---

## **4⃣ Time-to-First-Token (mean_TTFT_ms)**

| Batch | vLLM   | MAX    | Winner (lower is better) |
| ----- | ------ | ------ | ------------------------ |
| 1     | 63.3   | 22.3   | **MAX** (faster startup) |
| 2     | 71.0   | 62.8   | Similar                  |
| 4     | 151.9  | 150.2  | Similar                  |
| 8     | 246.9  | 304.8  | vLLM faster here         |
| 16    | 603.7  | 669.7  | vLLM faster here         |
| 32    | 1096.3 | 1252.5 | vLLM faster here         |

**Observation:**

- **MAX excels at low batch TTFT.**
- **vLLM handles high concurrency TTFT better.**

---

## **5⃣ Estimated Queue Delay (est_queue_wait_ms)**

| Batch | vLLM   | MAX    |
| ----- | ------ | ------ |
| 1     | 0.0    | 0.0    |
| 2     | 7.7    | 40.6   |
| 4     | 88.6   | 127.9  |
| 8     | 183.6  | 282.6  |
| 16    | 540.4  | 647.4  |
| 32    | 1033.0 | 1230.3 |

**Observation:**

- **vLLM has lower scheduler/queue delay.**
- **MAX incurs more queuing cost at batch sizes.**

---

# 🔔 **Summary Conclusion:**

| Metric               | Small Batch (1-4)     | Large Batch (8-32)    |
| -------------------- | --------------------- | --------------------- |
| **TTFT**             | **MAX faster**        | vLLM scales better    |
| **TPOT**             | **MAX faster tokens** | vLLM holds steady     |
| **Throughput (agg)** | vLLM better           | **MAX scales higher** |
| **Queue delay**      | vLLM better           | vLLM better           |

---

## 📝 **Answer to Your Question: Who Wins?**

### ✅ **vLLM**

- Better **consistency under scale**
- Lower **queueing delay**
- More stable **per-request speed under higher concurrency**

### ✅ **Modular/MAX**

- **Faster for single requests**
- Slightly better **peak throughput at batch 32**
- Faster **token speeds** in light load

# 🚩 **Practical Recommendation:**

| Use Case                                      | Preferred                               |
| --------------------------------------------- | --------------------------------------- |
| **Low concurrency, latency-critical**         | **MAX** (faster TTFT, tokens)           |
| **High concurrency, stable batch throughput** | **vLLM** (lower queue delays, steadier) |
| **Absolute throughput (batch 32)**            | **MAX** edges out


 host_slc0_tohost_bit7_int_ena(&mut self) -> HOST_SLC0_TOHOST_BIT7_INT_ENA_W {
        HOST_SLC0_TOHOST_BIT7_INT_ENA_W { w: self }
    }
    #[doc = "Bit 8"]
    #[inline(always)]
    pub fn host_slc0_token0_1to0_int_ena(&mut self) -> HOST_SLC0_TOKEN0_1TO0_INT_ENA_W {
        HOST_SLC0_TOKEN0_1TO0_INT_ENA_W { w: self }
    }
    #[doc = "Bit 9"]
    #[inline(always)]
    pub fn host_slc0_token1_1to0_int_ena(&mut self) -> HOST_SLC0_TOKEN1_1TO0_INT_ENA_W {
        HOST_SLC0_TOKEN1_1TO0_INT_ENA_W { w: self }
    }
    #[doc = "Bit 10"]
    #[inline(always)]
    pub fn host_slc0_token0_0to1_int_ena(&mut self) -> HOST_SLC0_TOKEN0_0TO1_INT_ENA_W {
        HOST_SLC0_TOKEN0_0TO1_INT_ENA_W { w: self }
    }
    #[doc = "Bit 11"]
    #[inline(always)]
    pub fn host_slc0_token1_0to1_int_ena(&mut self) -> HOST_SLC0_TOKEN1_0TO1_INT_ENA_W {
        HOST_SLC0_TOKEN1_0TO1_INT_ENA_W { w: self }
    }
    #[doc = "Bit 12"]
    #[inline(always)]
    pub fn host_slc0host_rx_sof_int_ena(&mut self) -> HOST_SLC0HOST_RX_SOF_INT_ENA_W {
        HOST_SLC0HOST_RX_SOF_INT_ENA_W { w: self }
    }
    #[doc = "Bit 13"]
    #[inline(always)]
    pub fn host_slc0host_rx_eof_int_ena(&mut self) -> HOST_SLC0HOST_RX_EOF_INT_ENA_W {
        HOST_SLC0HOST_RX_EOF_INT_ENA_W { w: self }
    }
    #[doc = "Bit 14"]
    #[inline(always)]
    pub fn host_slc0host_rx_start_int_ena(&mut self) -> HOST_SLC0HOST_RX_START_INT_ENA_W {
        HOST_SLC0HOST_RX_START_INT_ENA_W { w: self }
    }
    #[doc = "Bit 15"]
    #[inline(always)]
    pub fn host_slc0host_tx_start_int_ena(&mut self) -> HOST_SLC0HOST_TX_START_INT_ENA_W {
        HOST_SLC0HOST_TX_START_INT_ENA_W { w: self }
    }
    #[doc = "Bit 16"]
    #[inline(always)]
    pub fn host_slc0_rx_udf_int_ena(&mut self) -> HOST_SLC0_RX_UDF_INT_ENA_W {
        HOST_SLC0_RX_UDF_INT_ENA_W { w: self }
    }
    #[doc = "Bit 17"]
    #[inline(always)]
    pub fn host_slc0_tx_ovf_int_ena(&mut self) -> HOST_SLC0_TX_OVF_INT_ENA_W {
        HOST_SLC0_TX_OVF_INT_ENA_W { w: self }
    }
    #[doc = "Bit 18"]
    #[inline(always)]
    pub fn host_slc0_rx_pf_valid_int_ena(&mut self) -> HOST_SLC0_RX_PF_VALID_INT_ENA_W {
        HOST_SLC0_RX_PF_VALID_INT_ENA_W { w: self }
    }
    #[doc = "Bit 19"]
    #[inline(always)]


ter, T>.Finalizer()
    }
}
/*
 *     The Certora Prover
 *     Copyright (C) 2025  Certora Ltd.
 *
 *     This program is free software: you can redistribute it and/or modify
 *     it under the terms of the GNU General Public License as published by
 *     the Free Software Foundation, version 3 of the License.
 *
 *     This program is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 *     You should have received a copy of the GNU General Public License
 *     along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

package move

import analysis.CommandWithRequiredDecls.Companion.mergeMany
import analysis.SimpleCmdsWithDecls
import com.certora.collect.*
import datastructures.stdcollections.*
import evm.MASK_SIZE
import move.MoveModule.SignatureToken
import tac.*
import tac.generation.*
import utils.*
import vc.data.*

/**
    Simplified view of Move types, with all generics resolved.
 */
@Treapable
@KSerializable
sealed class MoveType : HasKSerializable {
    abstract fun toTag(): Tag

    /** Gets a name for this type that can be used as part of a TACSymbol.Var name. */
    abstract fun symNameExt(): String

    @KSerializable
    sealed class Value : MoveType()

    /** A [Value] that is represented as a single slot in a memory location */
    @KSerializable
    sealed class Simple : Value()

    @KSerializable
    sealed class Primitive : Simple() {
        override fun toString() = this::class.simpleName ?: super.toString()
    }

    @KSerializable
    object Bool : Primitive() {
        override fun toTag() = Tag.Bool
        override fun symNameExt() = "bool"
        override fun hashCode() = hashObject(this)
    }

    @KSerializable
    sealed class Bits(val size: Int) : Primitive() {
        override fun toTag() = Tag.Bit256
        override fun symNameExt() = "u$size"
    }

    @KSerializable object U8 : Bits(8) { override fun hashCode() = hashObject(this) }
    @KSerializable object U16 : Bits(16) { override fun hashCode() = hashObject(this) }
    @KSerializable object U32 : Bits(32) { override fun hashCode() = hashObject(this) }
    @KSerializable object U64 : Bits(64) { override fun hashCode() = hashObject(this) }
    @KSerializable object U128 : Bits(128) { override fun hashCode() = hashObject(this) }
    @KSerializable object U256 : Bits(256) { override fun hashCode() = hashObject(this) }
    @KSerializable object Address : Bits(256) { override fun hashCode() = hashObject(this) }
    @KSerializable object Signer : Bits(256) { override fun hashCode() = hashObject(this) }

    @KSerializable
    data class Vector(val elemType: MoveType.Value) : Value() {
        override fun toString() = "vector<$elemType>"
        override fun toTag() = MoveTag.Vec(elemType)
        override fun symNameExt() = "vector!${elemType.symNameExt()}"
    }

    @KSerializable
    data class Struct(
        val name: MoveStructName,
        val typeArguments: List<MoveType.Value>,
        val fields: List<Field>?
    ) : Value() {
        @Treapable
        @KSerializable
        data class Field(val name: String, val type: MoveType.Value)

        override fun toString() = when {
            typeArguments.isEmpty() -> "$name"
            else -> "$name<${typeArguments.joinToString(", ")}>"
        }

        override fun toTag() = MoveTag.Struct(this)

        override


dMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use VuSpecificConditionRecordArray.ProtoReflect.Descriptor instead.
func (*VuSpecificConditionRecordArray) Descriptor() ([]byte, []int) {
	return file_dddparser_proto_rawDescGZIP(), []int{123}
}

func (x *VuSpecificConditionRecordArray) GetRecordType() uint32 {
	if x != nil {
		return x.RecordType
	}
	return 0
}

func (x *VuSpecificConditionRecordArray) GetRecordSize() uint32 {
	if x != nil {
		return x.RecordSize
	}
	return 0
}

func (x *VuSpecificConditionRecordArray) GetNoOfRecords() uint32 {
	if x != nil {
		return x.NoOfRecords
	}
	return 0
}

func (x *VuSpecificConditionRecordArray) GetRecords() []*SpecificConditionRecord {
	if x != nil {
		return x.Records
	}
	return nil
}

type VuBorderCrossingRecordArray struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	RecordType  uint32                    `protobuf:"varint,1,opt,name=record_type,json=recordType,proto3" json:"record_type,omitempty"`      // RecordType byte
	RecordSize  uint32                    `protobuf:"varint,2,opt,name=record_size,json=recordSize,proto3" json:"record_size,omitempty"`      // uint16
	NoOfRecords uint32                    `protobuf:"varint,3,opt,name=no_of_records,json=noOfRecords,proto3" json:"no_of_records,omitempty"` // uint16
	Records     []*VuBorderCrossingRecord `protobuf:"bytes,4,rep,name=records,proto3" json:"records,omitempty"`
}

func (x *VuBorderCrossingRecordArray) Reset() {
	*x = VuBorderCrossingRecordArray{}
	if protoimpl.UnsafeEnabled {
		mi := &file_dddparser_proto_msgTypes[124]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *VuBorderCrossingRecordArray) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*VuBorderCrossingRecordArray) ProtoMessage() {}

func (x *VuBorderCrossingRecordArray) ProtoReflect() protoreflect.Message {
	mi := &file_dddparser_proto_msgTypes[124]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use VuBorderCrossingRecordArray.ProtoReflect.Descriptor instead.
func (*VuBorderCrossingRecordArray) Descriptor() ([]byte, []int) {
	return file_dddparser_proto_rawDescGZIP(), []int{124}
}

func (x *VuBorderCrossingRecordArray) GetRecordType() uint32 {
	if x != nil {
		return x.RecordType
	}
	return 0
}

func (x *VuBorderCrossingRecordArray) GetRecordSize() uint32 {
	if x != nil {
		return x.RecordSize
	}
	return 0
}

func (x *VuBorderCrossingRecordArray) GetNoOfRecords() uint32 {
	if x != nil {
		return x.NoOfRecords
	}
	return 0
}

func (x *VuBorderCrossingRecordArray) GetRecords() []*VuBorderCross


    }
}

inline fun Logger.debugLazy(lazyMessage: () -> String) {
    if (isDebugEnabled) {
        debug(lazyMessage())
    }
}

inline fun Logger.debugLazy(t: Throwable, lazyMessage: () -> String) {
    if (isDebugEnabled) {
        debug(lazyMessage() as String?, t)
    }
}

inline fun Logger.infoLazy(lazyMessage: () -> String) {
    info(lazyMessage())
}

inline fun Logger.infoLazy(t: Throwable, lazyMessage: () -> String) {
    info(lazyMessage(), t)
}

inline fun Logger.warnLazy(lazyMessage: () -> String) {
    warn(lazyMessage())
}

inline fun Logger.warnLazy(t: Throwable, lazyMessage: () -> String) {
    warn(lazyMessage(), t)
}

inline fun Logger.errorLazy(lazyMessage: () -> String) {
    error(lazyMessage())
}

inline fun Logger.errorLazy(t: Throwable, lazyMessage: () -> String) {
    error(lazyMessage(), t)
}
/*
 * Copyright 2017-2020 Aljoscha Grebe
 *
 * 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
 *
 *   https://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 com.almightyalpaca.jetbrains.plugins.discord.plugin.rpc

import com.almightyalpaca.jetbrains.plugins.discord.icons.source.Asset
import com.almightyalpaca.jetbrains.plugins.discord.plugin.utils.*
import java.awt.image.BufferedImage
import java.net.URL
import java.time.OffsetDateTime
import javax.imageio.ImageIO

class RichPresence(
    val appId: Long?,
    state: String? = null,
    details: String? = null,
    var startTimestamp: OffsetDateTime? = null,
    var endTimestamp: OffsetDateTime? = null,
    var largeImage: Image? = null,
    var smallImage: Image? = null,
    partyId: String? = null,
    var partySize: Int = 0,
    var partyMax: Int = 0,
    matchSecret: String? = null,
    joinSecret: String? = null,
    spectateSecret: String? = null,
    var instance: Boolean = false
) {
    constructor(appId: Long?, initializer: RichPresence.() -> Unit) : this(appId) {
        if (appId != null) {
            initializer()
        }
    }

    var state by limitingLength(state, 2..128, true)
    var details by limitingLength(details, 2..128, true)
    var partyId by verifyingLength(partyId, 0..128)
    var matchSecret by verifyingLength(matchSecret, 0..128)
    var joinSecret by verifyingLength(joinSecret, 0..128)
    var spectateSecret by verifyingLength(spectateSecret, 0..128)

    override fun equals(other: Any?): Boolean {
        if (this === other) return true
        if (other !is RichPresence) return false

        if (appId != other.appId) return false
        if (startTimestamp != other.startTimestamp) return false
        if (endTimestamp != other.endTimestamp) return false
        if (largeImage != other.largeImage) return false
        if (smallImage != other.smallImage) return false
        if (partySize != other.partySize) return false
        if (partyMax != other.partyMax) return false
        if (instance != other.instance) return false

        return true
    }

    override fun hashCode(): Int {
        var result = appId?.hashCode() ?: 0
        result = 31 * result + (startTimestamp


sible. We know the operation had writes (we're looking at one now) and so
			// this operation has either materialized or is covered by a later one that did,
			// and so we must have a timestamp here.
			// The only exception is when all writes were rolled back by a savepoint
			// rollback. In that case, we still need a writeTS to ensure reads within the txn
			// can see those writes; the execTimestamp serves that purpose.
			if writeTS.IsEmpty() {
				writeTS = execTimestamp
			}

			_, isLastWrite := lastWritesByIdx[idx]
			if !isLastWrite && o.Timestamp.IsSet() {
				failure = `committed txn overwritten key had write`
				break
			}

			// Make this write visible (at writeTS, regardless of whether it's the
			// last write or not, since that's the snapshot at which our operation
			// wrote).
			if len(o.EndKey) == 0 {
				if err := batch.Set(storage.EncodeMVCCKey(storage.MVCCKey{Key: o.Key, Timestamp: writeTS}), o.Value.RawBytes, nil); err != nil {
					panic(err)
				}
			} else {
				key := storage.EngineKey{Key: o.Key}.Encode()
				endKey := storage.EngineKey{Key: o.EndKey}.Encode()
				suffix := mvccencoding.EncodeMVCCTimestampSuffix(writeTS)
				if err := batch.RangeKeySet(key, endKey, suffix, o.Value.RawBytes, nil); err != nil {
					panic(err)
				}
			}
		case *observedRead:
			if o.AlwaysValid {
				o.ValidTimes = disjointTimeSpans{{Start: hlc.MinTimestamp, End: hlc.MaxTimestamp}}
			} else {
				o.ValidTimes = validReadTimes(batch, o.Key, o.Value.RawBytes, o.SkipLocked /* missingKeyValid */)
			}
		case *observedScan:
			// All kvs should be within scan boundary.
			for _, kv := range o.KVs {
				if !o.Span.ContainsKey(kv.Key) {
					opCode := "scan"
					if o.IsDeleteRange {
						opCode = "delete range"
					}
					failure = fmt.Sprintf(`key %s outside %s bounds`, kv.Key, opCode)
					break
				}
			}
			// All kvs should be in order.
			orderedKVs := sort.Interface(roachpb.KeyValueByKey(o.KVs))
			if o.Reverse {
				orderedKVs = sort.Reverse(orderedKVs)
			}
			if !sort.IsSorted(orderedKVs) {
				failure = `scan result not ordered correctly`
			}
			o.Valid = validScanTime(batch, o.Span, o.KVs, o.SkipLocked /* missingKeysValid */)
		case *observedSavepoint:
			switch o.Type {
			case create:
				// Clone the existing batch by creating a new batch and applying the
				// existing batch state to it.
				newBatch := v.kvs.kvs.NewIndexedBatch()
				_ = newBatch.Apply(batch, nil)
				if _, ok := spIDToBatch[o.ID]; ok {
					panic(errors.AssertionFailedf("validating a savepoint create op: ID %d already exists", o.ID))
				}
				spIDToBatch[o.ID] = newBatch
			case release:
				// Savepoint releases don't affect the validation.
			case rollback:
				if _, ok := spIDToBatch[o.ID]; !ok {
					panic(errors.AssertionFailedf("validating a savepoint rollback op: ID %d does not exist", o.ID))
				}
				// The new batch to use for validation.
				batch = spIDToBatch[o.ID]
			}
		default:
			panic(errors.AssertionFailedf(`unknown observedOp: %T %s`, observation, observation))
		}
	}

	// Close all batches in spIDToBatch.
	for _, spBatch := range spIDToBatch {
		_ = spBatch.Close()
	}

	validPossibilities := disjointTimeSpans{{Start: hlc.MinTimestamp, End: hlc.MaxTimestamp


到三月间所印行书籍，约占全部新出书籍中的一半。此外还有很多专事零售的书铺、书摊，其发行力量可能几倍于新华书店。但对这些出版和发行力量，国营书店均未认真予以联系、领导和组织。有些地区且有排挤私营书店，拒绝与之合作的现象。

   为了解决上述两大问题，必须首先克服党内出版发行工作干部的下列倾向：

   甲、有的同志在实际工作中缺乏认真为读者的需要与便利打算的群众观点，因此，对于出什么书，卖什么书，怎样推销，如何定价等项重大问题，都未深刻研究，而只是按照老一套的规矩办理，或者从单纯经济观点着想。

   乙、有的同志轻视发行工作，认为这只是做生意，只有自己编印书刊才是有意义的工作。实则把一切有用书刊发行到群众中去是在国家的、人民的和党的生活中一日不可缺少的重大而复杂的工作，必须用极大的政治责任心和努力才能做好。

   丙、有的同志认为出版事业可以迅速全部国有化，私营的无存在必要，故亦无必要加以扶持。但出版事业的全部国有化，也和其他工商业一样，是相当长久时期以后的事，现在私营出版业既尚有相当大的力量，有很多熟练的职工以及与作家和读者的传统联系，我们就一定要采取积极地领导他们进步的方针。排挤打击固然错误，消极旁观也是放弃领导的表现。

   丁、有的同志对出版物和出版发行人才抱着狭隘的宗派主义观点，对于马列主义以外的读物或非党员的撰述疑虑备至，对于有出版发行经验的旧人员不愿合作。实则为了丰富人民的文化生活所需要的读物种类是十分广泛的，在今天的历史阶段，对待出版工作的政治尺度也应比较宽大，有经验有工作能力的旧人员是可贵的，应该团结争取，向他们学习业务，帮助他们进步。

   中央人民政府出版总署为了改进全国的出版事业，调整公私关系，现已决定逐步实行下列


8) ?: UTF8
                // try to keep to a single line and use a subshell to preserve any line breaks
                curlCmd += " --data $'" + buffer.readString(charset).replace("\n", "\n") + "'"
            }

            curlCmd += (if (compressed) " --compressed " else " ") + "\"${request.url}\""

            return curlCmd
        }
    }
}/**
 * Copyright (c) LinkedIn Corporation. All rights reserved. Licensed under the BSD-2 Clause license.
 * See LICENSE in the project root for license information.
 */
package com.linkedin.dex.spec

import java.nio.ByteBuffer
import java.nio.ByteOrder

sealed class EncodedValue {
    data class EncodedByte(val value: Byte): EncodedValue()
    data class EncodedShort(val value: Short): EncodedValue()
    data class EncodedChar(val value: Char): EncodedValue()
    data class EncodedInt(val value: Int): EncodedValue()
    data class EncodedLong(val value: Long): EncodedValue()
    data class EncodedFloat(val value: Float): EncodedValue()
    data class EncodedDouble(val value: Double): EncodedValue()
    // Value is an index into the string table
    data class EncodedString(val value: Int): EncodedValue()
    data class EncodedType(val value: Int): EncodedValue()
    data class EncodedField(val value: Int): EncodedValue()
    data class EncodedMethod(val value: Int): EncodedValue()
    data class EncodedEnum(val value: Int): EncodedValue()
    data class EncodedArrayValue(val value: EncodedArray): EncodedValue()
    data class EncodedAnnotationValue(val value: EncodedAnnotation): EncodedValue()
    object EncodedNull: EncodedValue()
    data class EncodedBoolean(val value: Boolean): EncodedValue()
    companion object {
        val VALUE_BYTE: Byte = 0x00
        val VALUE_SHORT: Byte = 0x02
        val VALUE_CHAR: Byte = 0x03
        val VALUE_INT: Byte = 0x04
        val VALUE_LONG: Byte = 0x06
        val VALUE_FLOAT: Byte = 0x10
        val VALUE_DOUBLE: Byte = 0x11
        val VALUE_STRING: Byte = 0x17
        val VALUE_TYPE: Byte = 0x18
        val VALUE_FIELD: Byte = 0x19
        val VALUE_METHOD: Byte = 0x1a
        val VALUE_ENUM: Byte = 0x1b
        val VALUE_ARRAY: Byte = 0x1c
        val VALUE_ANNOTATION: Byte = 0x1d
        val VALUE_NULL: Byte = 0x1e
        val VALUE_BOOLEAN: Byte = 0x1f

        fun create(byteBuffer: ByteBuffer): EncodedValue {
            val argAndType = byteBuffer.get().toUnsigned8BitInt()

            // first three bits are the optional valueArg
            val valueArg = (argAndType ushr 5).toByte()
            // last five bits are the valueType
            val valueType = (argAndType and 0x1F).toByte()

            when (valueType) {
                VALUE_BYTE -> return EncodedByte(byteBuffer.get())
                VALUE_SHORT -> return EncodedShort(getPaddedBuffer(byteBuffer, sizeOf(valueArg), 2).short)
                VALUE_CHAR -> return EncodedChar(getPaddedBuffer(byteBuffer, sizeOf(valueArg), 2).char)
                VALUE_INT -> return EncodedInt(getPaddedBuffer(byteBuffer, sizeOf(valueArg), 4).int)
                VALUE_LONG -> return EncodedLong(getPaddedBuffer(byteBuffer, sizeOf(valueArg), 8).long)
                VALUE_FLOAT -> return EncodedFloat(getPaddedBufferToTheRight(byteBuffer, sizeOf(valueArg), 4).float)
                VALUE_DOUBLE -> return EncodedDouble(getPaddedBufferToTheRight(byteBuffer, sizeOf(valueArg), 8).double)
                VALUE_STRING -> return EncodedString(getPaddedBuffer(byteBuffer, sizeOf(valueArg), 4).int)
                VALUE_TYPE -> return EncodedType(getPaddedBuffer(byteBuffer, sizeOf(valueArg), 4).int)
                VALUE_FIELD -> return EncodedField(getPaddedB


  962
        |s* σ  963    t* τ  964    u* υ  965    f* φ  966    x* χ  967    q* ψ  968
        |w* ω  969    j* ϊ  970    v* ϋ  971    o% ό  972    u% ύ  973    w% ώ  974
        |'G Ϙ  984    ,G ϙ  985    T3 Ϛ  986    t3 ϛ  987    M3 Ϝ  988    m3 ϝ  989
        |K3 Ϟ  990    k3 ϟ  991    P3 Ϡ  992    p3 ϡ  993    '% ϴ  1012   j3 ϵ  1013
        |IO Ё  1025   D% Ђ  1026   G% Ѓ  1027   IE Є  1028   DS Ѕ  1029   II І  1030
        |YI Ї  1031   J% Ј  1032   LJ Љ  1033   NJ Њ  1034   Ts Ћ  1035   KJ Ќ  1036
        |V% Ў  1038   DZ Џ  1039   A= А  1040   B= Б  1041   V= В  1042   G= Г  1043
        |D= Д  1044   E= Е  1045   Z% Ж  1046   Z= З  1047   I= И  1048   J= Й  1049
        |K= К  1050   L= Л  1051   M= М  1052   N= Н  1053   O= О  1054   P= П  1055
        |R= Р  1056   S= С  1057   T= Т  1058   U= У  1059   F= Ф  1060   H= Х  1061
        |C= Ц  1062   C% Ч  1063   S% Ш  1064   Sc Щ  1065   =" Ъ  1066   Y= Ы  1067
        |%" Ь  1068   JE Э  1069   JU Ю  1070   JA Я  1071   a= а  1072   b= б  1073
        |v= в  1074   g= г  1075   d= д  1076   e= е  1077   z% ж  1078   z= з  1079
        |i= и  1080   j= й  1081   k= к  1082   l= л  1083   m= м  1084   n= н  1085
        |o= о  1086   p= п  1087   r= р  1088   s= с  1089   t= т  1090   u= у  1091
        |f= ф  1092   h= х  1093   c= ц  1094   c% ч  1095   s% ш  1096   sc щ  1097
        |=' ъ  1098   y= ы  1099   %' ь  1100   je э  1101   ju ю  1102   ja я  1103
        |io ё  1105   d% ђ  1106   g% ѓ  1107   ie є  1108   ds ѕ  1109   ii і  1110
        |yi ї  1111   j% ј  1112   lj љ  1113   nj њ  1114   ts ћ  1115   kj ќ  1116
        |v% ў  1118   dz


  border-radius: 4px;
}

/* Glow effects */
.glow {
  box-shadow: 0 0 20px rgba(124, 58, 237, 0.3);
}

.glow-hover:hover {
  box-shadow: 0 0 30px rgba(124, 58, 237, 0.5);
}

/* Animated background */
.animated-bg {
  background: linear-gradient(-45deg, #667eea, #764ba2, #f093fb, #f5576c);
  background-size: 400% 400%;
  animation: gradientShift 15s ease infinite;
}

@keyframes gradientShift {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

/* Floating animation */
@keyframes float {
  0%, 100% { transform: translateY(0px); }
  50% { transform: translateY(-20px); }
}

.float {
  animation: float 6s ease-in-out infinite;
}

/* Pulse animation */
@keyframes pulse-custom {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.7; }
}

.pulse-custom {
  animation: pulse-custom 2s ease-in-out infinite;
}
:root {
  --rosewater: #f2d5cf;
  --rosewater-rgb: 242 213 207;
  --rosewater-hsl: 10.286 57.377% 88.039%;
  --flamingo: #eebebe;
  --flamingo-rgb: 238 190 190;
  --flamingo-hsl: 0.000 58.537% 83.922%;
  --pink: #f4b8e4;
  --pink-rgb: 244 184 228;
  --pink-hsl: 316.000 73.171% 83.922%;
  --mauve: #ca9ee6;
  --mauve-rgb: 202 158 230;
  --mauve-hsl: 276.667 59.016% 76.078%;
  --red: #e78284;
  --red-rgb: 231 130 132;
  --red-hsl: 358.812 67.785% 70.784%;
  --maroon: #ea999c;
  --maroon-rgb: 234 153 156;
  --maroon-hsl: 357.778 65.854% 75.882%;
  --peach: #ef9f76;
  --peach-rgb: 239 159 118;
  --peach-hsl: 20.331 79.085% 70.000%;
  --yellow: #e5c890;
  --yellow-rgb: 229 200 144;
  --yellow-hsl: 39.529 62.044% 73.137%;
  --green: #a6d189;
  --green-rgb: 166 209 137;
  --green-hsl: 95.833 43.902% 67.843%;
  --teal: #81c8be;
  --teal-rgb: 129 200 190;
  --teal-hsl: 171.549 39.227% 64.510%;
  --sky: #99d1db;
  --sky-rgb: 153 209 219;
  --sky-hsl: 189.091 47.826% 72.941%;
  --sapphire: #85c1dc;
  --sapphire-rgb: 133 193 220;
  --sapphire-hsl: 198.621 55.414% 69.216%;
  --blue: #8caaee;
  --blue-rgb: 140 170 238;
  --blue-hsl: 221.633 74.242% 74.118%;
  --lavender: #babbf1;
  --lavender-rgb: 186 187 241;
  --lavender-hsl: 238.909 66.265% 83.725%;
  --text: #c6d0f5;
  --text-rgb: 198 208 245;
  --text-hsl: 227.234 70.149% 86.863%;
  --subtext1: #b5bfe2;
  --subtext1-


.25.25 0 00-.25-.25h-.5zm0 2a.25.25 0 00-.25.25v.5c0 .138.112.25.25.25h.5a.25.25 0 00.25-.25v-.5a.25.25 0 00-.25-.25h-.5zm-3-2a.25.25 0 00-.25.25v.5c0 .138.112.25.25.25h1.5a.25.25 0 00.25-.25v-.5a.25.25 0 00-.25-.25h-1.5zm.75 2.25v.5c0 .138.112.25.25.25h.5a.25.25 0 00.25-.25v-.5a.25.25 0 00-.25-.25h-.5a.25.25 0 00-.25.25zM11.25 6a.25.25 0 00-.25.25v.5c0 .138.112.25.25.25h.5a.25.25 0 00.25-.25v-.5a.25.25 0 00-.25-.25h-.5zM9 6.25v.5c0 .138.112.25.25.25h.5a.25.25 0 00.25-.25v-.5A.25.25 0 009.75 6h-.5a.25.25 0 00-.25.25zM7.25 6a.25.25 0 00-.25.25v.5c0 .138.112.25.25.25h.5A.25.25 0 008 6.75v-.5A.25.25 0 007.75 6h-.5zM5 6.25v.5c0 .138.112.25.25.25h.5A.25.25 0 006 6.75v-.5A.25.25 0 005.75 6h-.5a.25.25 0 00-.25.25zM2.25 6a.25.25 0 00-.25.25v.5c0 .138.112.25.25.25h1.5A.25.25 0 004 6.75v-.5A.25.25 0 003.75 6h-1.5zM2 10.25v.5c0 .138.112.25.25.25h.5a.25.25 0 00.25-.25v-.5a.25.25 0 00-.25-.25h-.5a.25.25 0 00-.25.25zM4.25 10a.25.25 0 00-.25.25v.5c0 .138.112.25.25.25h5.5a.25.25 0 00.25-.25v-.5a.25.25 0 00-.25-.25h-5.5z"/></svg>';
  static const String ladder =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"><path fill="currentColor" d="M4.5 1a.5.5 0 01.5.5V2h6v-.5a.5.5 0 011 0v14a.5.5 0 01-1 0V15H5v.5a.5.5 0 01-1 0v-14a.5.5 0 01.5-.5zM5 14h6v-2H5v2zm0-3h6V9H5v2zm0-3h6V6H5v2zm0-3h6V3H5v2z"/></svg>';
  static const String lamp =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"><g fill="currentColor"><path fill-rule="evenodd" d="M5.04.303A.5.5 0 015.5 0h5c.2 0 .38.12.46.303l3 7a.5.5 0 01-.363.687h-.002c-.15.03-.3.056-.45.081a32.731 32.731 0 01-4.645.425V13.5a.5.5 0 11-1 0V8.495a32.753 32.75


mp.Position.y = y
	comp.Position.z = r2:snapZToGround(x, y)

	comp.Hours = hours
	comp.Minutes = minutes
	comp.Cyclic = cyclic

	return comp
end

-- TODO to up
-- Register an RtNpcGrp to a specific instnaceId
r2.Translator.registerManager = function(context, comp)
	local rtNpcGrp = r2.newComponent("RtNpcGrp")
	table.insert(context.RtAct.NpcGrps, rtNpcGrp)
	context.RtGroups[tostring(comp.InstanceId)] = rtNpcGrp
	rtNpcGrp.Name = rtNpcGrp.Id
end

feature.preTranslatFeature = function(context)
	--debugInfo("Pre")
	--feature.doLogic(context)
	local instance = r2:getInstanceFromId(context.Feature.InstanceId);
	r2.Translator.registerManager(context, context.Feature)

end

feature.Translator = function(context)
	local rtNpcGrp = r2.Translator.getRtGroup(context, context.Feature.InstanceId)

	local aiState = r2.newComponent("RtAiState")
	aiState.AiActivity = "normal"
	table.insert(context.RtAct.AiStates, aiState)
	table.insert(aiState.Children, rtNpcGrp.Id)

	context.Feature:translate(context)

end
-- from ihm
feature.create = function()

	if not r2:checkAiQuota() then return end

	local function paramsOk(resultTable)

		r2.requestNewAction(i18n.get("uiR2EDNewTimeTriggerFeatureAction"))

		local x = tonumber(  resultTable["X"] )
		local y = tonumber( resultTable["Y"] )
		local minutes = tonumber( resultTable["Minutes"] )
		local hours = tonumber( resultTable["Hours"] )
		local cyclic  = tonumber( resultTable["Cyclic"] )

		if not x or not y or not minutes or not hours or hours <0 or hours >=24 or minutes <0 or minutes > 59
		then
			debugInfo("Can't create Component")
			return
		end

		local component = feature.createComponent( x, y, hours, cyclic)
		r2.requestInsertNode(r2:getCurrentAct().InstanceId, "Features", -1, "", component)
		component.Minutes = minutes
		component.Hours = hours

	end

	local function paramsCancel()
		debugInfo("Cancel form for 'TimeTrigger' creation")
	end
	local function posOk(x, y, z)
		debugInfo(string.format("Validate creation of 'TimeTrigger' at pos (%d, %d, %d)", x, y, z))
		r2:doForm("TimeTriggerForm", {X=x, Y=y}, paramsOk, paramsCancel)
	end
	local function posCancel()
		debugInfo("Cancel choice 'TimeTrigger' position")
	end
	r2:choosePos("object_component_time_trigger.creature", posOk, posCancel, "createFeatureTimeTrigger")
end

function feature.registerForms()
	r2.Forms.TimeTriggerForm =
	{
		Caption = "uiR2EdTimeTriggerParameters",
		Prop =
		{
			-- following field are tmp for property sheet building testing
 			{Name="Hours", Type="Number", Category="uiR2EDRollout_TimeTrigger",  Min="0", Max="23", Default="0"},
			{Name="Minutes", Type="Number", Category="uiR2EDRollout_TimeTrigger",  Min="0", Max="59", Default="0"},
--			{Name="Secondes", Type="Number", Category="uiR2EDRollout_TimeTrigger",  Min="0", Max="59", Default="0"},
			{Name="Cyclic", Type="Number", Category="uiR2EDRollout_TimeTrigger",  WidgetStyle="Boolean", Min="0", Max="1",


': 1, '5': 4, '10': 'value'},
  ],
  '7': const {'7': true},
};

@$core.Deprecated('Use testAllTypesProto3Descriptor instead')
const TestAllTypesProto3_MapSint32Sint32Entry$json = const {
  '1': 'MapSint32Sint32Entry',
  '2': const [
    const {'1': 'key', '3': 1, '4': 1, '5': 17, '10': 'key'},
    const {'1': 'value', '3': 2, '4': 1, '5': 17, '10': 'value'},
  ],
  '7': const {'7': true},
};

@$core.Deprecated('Use testAllTypesProto3Descriptor instead')
const TestAllTypesProto3_MapSint64Sint64Entry$json = const {
  '1': 'MapSint64Sint64Entry',
  '2': const [
    const {'1': 'key', '3': 1, '4': 1, '5': 18, '10': 'key'},
    const {'1': 'value', '3': 2, '4': 1, '5': 18, '10': 'value'},
  ],
  '7': const {'7': true},
};

@$core.Deprecated('Use testAllTypesProto3Descriptor instead')
const TestAllTypesProto3_MapFixed32Fixed32Entry$json = const {
  '1': 'MapFixed32Fixed32Entry',
  '2': const [
    const {'1': 'key', '3': 1, '4': 1, '5': 7, '10': 'key'},
    const {'1': 'value', '3': 2, '4': 1, '5': 7, '10': 'value'},
  ],
  '7': const {'7': true},
};

@$core.Deprecated('Use testAllTypesProto3Descriptor instead')
const TestAllTypesProto3_MapFixed64Fixed64Entry$json = const {
  '1': 'MapFixed64Fixed64Entry',
  '2': const [
    const {'1': 'key', '3': 1, '4': 1, '5': 6, '10': 'key'},
    const {'1': 'value', '3': 2, '4': 1, '5': 6, '10': 'value'},
  ],
  '7': const {'7': true},
};

@$core.Deprecated('Use testAllTypesProto3Descriptor instead')
const TestAllTypesProto3_MapSfixed32Sfixed32Entry$json = const {
  '1': 'MapSfixed32Sfixed32Entry',
  '2': const [
    const {'1': 'key', '3': 1, '4': 1, '5': 15, '10': 'key'},
    const {'1': 'value', '3': 2, '4': 1, '5': 15, '10': 'value'},
  ],
  '7': const {'7': true},
};

@$core.Deprecated('Use testAllTypesProto3Descriptor instead')
const TestAllTypesProto3_MapSfixed64Sfixed64Entry$json = const {
  '1': 'MapSfixed64Sfixed64Entry',
  '2': const [
    const {'1': 'key', '3': 1, '4': 1, '5': 16, '10': 'key'},
    const {'1': 'value', '3': 2, '4': 1, '5': 16, '10': 'value'},
  ],
  '7': const {'7': true},
};

@$core.Deprecated('Use testAllTypesProto3Descriptor instead')
const TestAllTypesProto3_MapInt32FloatEntry$json = const {
  '1': 'MapInt32FloatEntry',
  '2': const [
    const {'1': 'key', '3': 1, '4': 1, '5': 5, '10': 'key'},
    const {'1': 'value', '3': 2, '4': 1, '5': 2, '10': 'value'},
  ],
  '7': const {'7': true},
};

@$core.Deprecated('Use testAllTypesProto3Descriptor instead')
const TestAllTypesProto3_MapInt32DoubleEntry$json = const {
  '1': 'MapInt32DoubleEntry


using GraphQL.Types;

namespace GraphQL.Tests.Bugs;

public class AbstractInputTests : QueryTestBase<AbstractInputSchema>
{
    [Fact]
    public void throws_literals()
    {
        Should.Throw<InvalidOperationException>(() => Schema.Initialize())
            .Message.ShouldBe("No public constructors found on CLR type 'MyInputClassBase'.");
    }
}

public class AbstractInputSchema : Schema
{
    public AbstractInputSchema()
    {
        Query = new DummyType();
        Mutation = new AbstractInputMutation();
    }
}

pu


.m_pointChannel[i];
		bufferOut[j + 0] = m_points.m_vertex[index].m_x;
		bufferOut[j + 1] = m_points.m_vertex[index].m_y;
		bufferOut[j + 2] = m_points.m_vertex[index].m_z;
	}
}

void dgMeshEffect::GetVertexChannel(dgInt32 strideInByte, dgFloat32* const bufferOut) const
{
	dgInt32 stride = strideInByte / sizeof (dgFloat32);
	for (dgInt32 i = 0; i < m_attrib.m_pointChannel.m_count; i++) {
		const dgInt32 j = i * stride;
		const dgInt32 index = m_attrib.m_pointChannel[i];
		const dgBigVector& p = m_points.m_vertex[index];
		bufferOut[j + 0] = dgFloat32(p.m_x);
		bufferOut[j + 1] = dgFloat32(p.m_y);
		bufferOut[j + 2] = dgFloat32(p.m_z);
	}
}

/*
void dgMeshEffect::GetWeightBlendChannel(dgInt32 strideInByte, dgFloat32* const bufferOut) const
{
	dgInt8* const buffer = (dgInt8*)bufferOut;
	for (dgInt32 i = 0; i < m_attrib.m_pointChannel.m_count; i++) {
		const dgInt32 j = i * strideInByte;
		dgFloat32* const ptr = (dgFloat32*)&buffer[j];

		const dgInt32 index = m_attrib.m_pointChannel[i];
		const dgFloat32* const p = &m_points.m_weights[index].m_weightBlends[0];
		ptr[0] = dgFloat32(p[0]);
		ptr[1] = dgFloat32(p[1]);
		ptr[2] = dgFloat32(p[2]);
		ptr[3] = dgFloat32(p[3]);
	}
}

void dgMeshEffect::GetWeightIndexChannel(dgInt32 strideInByte, dgInt32* const bufferOut) const
{
	dgInt8* const buffer = (dgInt8*)bufferOut;
	for (dgInt32 i = 0; i < m_attrib.m_pointChannel.m_count; i++) {
		const dgInt32 j = i * strideInByte;
		dgInt32* const ptr = (dgInt32*)&buffer[j];
		const dgInt32 index = m_attrib.m_pointChannel[i];
		const dgInt32* const p = &m_points.m_weights[index].m_controlIndex[0];
		ptr[0] = p[0];
		ptr[1] = p[1];
		ptr[2] = p[2];
		ptr[3] = p[3];
	}
}
*/

void dgMeshEffect::GetNormalChannel(dgInt32 strideInByte, dgFloat32* const bufferOut) const
{
	dgInt32 stride = strideInByte / sizeof (dgFloat32);
	for (dgInt32 i = 0; i < m_attrib.m_normalChannel.m_count; i++) {
		const dgInt32 j = i * stride;
		bufferOut[j + 0] = dgFloat32(m_attrib.m_normalChannel[i].m_x);
		bufferOut[j + 1] = dgFloat32(m_attrib.m_normalChannel[i].m_y);
		bufferOut[j + 2] = dgFloat32(m_attrib.m_normalChannel[i].m_z);
	}
}

void dgMeshEffect::GetBinormalChannel(dgInt32 strideInByte, dgFloat32* const bufferOut) const
{
	dgInt32 stride = strideInByte / sizeof (dgFloat32);
	for (dgInt32 i = 0; i < m_attrib.m_binormalChannel.m_count; i++) {
		const dgInt32 j = i * stride;
		bufferOut[j + 0] = dgFloat32(m_attrib.m_binormalChannel[i].m_x);


es.com/academic/docs/writing-markdown-latex/).

# config

[![CRAN
status](https://www.r-pkg.org/badges/version/config)](https://CRAN.R-project.org/package=config)
[![CRAN RStudio mirror
downloads](https://cranlogs.r-pkg.org/badges/miniCRAN)](https://www.r-pkg.org/pkg/miniCRAN)
[![R-CMD-check](https://github.com/rstudio/config/workflows/R-CMD-check/badge.svg)](https://github.com/rstudio/config/actions)
[![Codecov test
coverage](https://codecov.io/gh/rstudio/config/branch/main/graph/badge.svg)](https://app.codecov.io/gh/rstudio/config?branch=main)

The `config` package makes it easy to manage environment specific
configuration values. For example, you might want to use distinct values
for development, testing, and production environments.

## Installation

You can install the `config` package from CRAN by using:

``` r
install.packages("config")
```

## Usage

To use `config`, create a file `config.yml` with default as well as
other arbitrary configurations. For example:

config.yml

``` yaml
default:
  trials: 5
  dataset: "data-sampled.csv"

production:
  trials: 30
  dataset: "data.csv"
```

To read configuration values you call the `config::get` function, which
returns a list containing all of the values for the currently active
configuration:

R

``` r
config <- config::get()
config$trials
#> [1] 5
config$dataset
#> [1] "data-sampled.csv"
```

You can also read a single value from the configuration as follows:

R

``` r
config::get("trials")
#> [1] 5
config::get("dataset")
#> [1] "data-sampled.csv"
```

The `config::get()` function takes an optional `config` argument which
determines which configuration to read values from (the “default”
configuration is used if none is specified).

## Vignettes

See the package vignettes at <https://rstudio.github.io/config/> for
more examples and instructions for advanced usage, including:

- Inheritance and R expressions
- Using `config` on Posit Connect

## Do not attach the package using `library(config)`

We strongly recommend you use `config::get()` rather than attaching the
package using `library(config)`.

In fact, we strongly recommend you never use `library(config)`.

The underlying reason is that the `get()` and `merge()` functions in
`{config}` will mask these functions with the same names in base R.

# distill for R Markdown

[![CRAN
status](https://www.r-pkg.org/badges/version/distill)](https://


f);
    return m_valueRef->index;
}

VertexRefObject *ChildUVMorphRefObject::targetVertex() const
{
    Q_ASSERT(m_parentMorphRef);
    Q_ASSERT(m_valueRef);
    return m_parentMorphRef->parentModel()->resolveVertexRef(m_valueRef->vertex);
}

void ChildUVMorphRefObject::setTargetVertex(VertexRefObject *value)
{
    Q_ASSERT(m_parentMorphRef);
    Q_ASSERT(m_valueRef);
    if (targetVertex() != value) {
        m_valueRef->vertex = value->data();
        m_parentMorphRef->setDirty(true);
        emit targetVertexChanged();
    }
}

QVector4D ChildUVMorphRefObject::position() const
{
    Q_ASSERT(m_valueRef);
    return Util::fromVector4(m_valueRef->position);
}

void ChildUVMorphRefObject::setPosition(const QVector4D &value)
{
    Q_ASSERT(m_valueRef);
    if (position() != value) {
        m_valueRef->position = Util::toVector4(value);
        m_parentMorphRef->setDirty(true);
        emit positionChanged();
    }
}

ChildMaterialMorphRefObject::ChildMaterialMorphRefObject(MorphRefObject *parentMorphRef, IMorph::Material *valueRef)
    : m_parentMorphRef(parentMorphRef),
      m_valueRef(valueRef)
{
    Q_ASSERT(m_parentMorphRef);
    Q_ASSERT(m_valueRef);
}

ChildMaterialMorphRefObject::~ChildMaterialMorphRefObject()
{
    m_parentMorphRef = 0;
    m_valueRef = 0;
}

QJsonValue ChildMaterialMorphRefObject::toJson() const
{
    QJsonObject v;
    v.insert("ambient", Util::toJson(ambient()));
    v.insert("diffuse", Util::toJson(diffuse()));
    v.insert("specualr", Util::toJson(specular()));
    v.insert("edgeColor", Util::toJson(edgeColor()));
    v.insert("mainTextureCoefficient", Util::toJson(mainTextureCoefficient()));
    v.insert("sphereTextureCoefficient", Util::toJson(sphereTextureCoefficient()));
    v.insert("toonTextureCoefficient", Util::toJson(toonTextureCoefficient()));
    v.insert("shininess", shininess());
    v.insert("edgeSize", edgeSize());
    v.insert("operation", operation());
    QJsonArray a;
    foreach (MaterialRefObject *item, parentMaterials()) {
        QJsonObject i;
        i.insert("uuid", item->uuid().toString());
        i.insert("name", item->name());
        a.append(i);
    }
    v.insert("parentMaterials", a);
    return v;
}

MorphRefObject *ChildMaterialMorphRefObject::parentMorph() const
{
    return m_parentMorphRef;
}

QList<MaterialRefObject *> ChildMaterialMorphRefObject::parentMaterials() const
{
    Q_ASSERT(m_parentMorphRef);
    Q_ASSERT(m_valueRef);
    QList<MaterialRefObject *> parentMaterials;
    if (const Array<IMaterial *> *materialRefs = m_valueRef->materials) {
        const int nmaterials = materialRefs->count();
        ModelProxy *parentModel = m_parentMorphRef->parentModel();
        for (int i = 0; i < nmaterials; i++) {
            const IMaterial *materialRef = materialRefs->at(i);
            MaterialRefObject *parentMaterial = parentModel->resolveMaterialRef(materialRef);
            Q_ASSERT(parentMaterial);
            parentMaterials.append(parentMaterial);
        }


spec.ActiveEntity != null)
                {
                    if (spec.ActiveEntity is Agent agent)
                        agent.TriggerEntityActionEvent(EntitySelectorActionEventType.OnClusterEnemiesCleared);
                    alive |= spec.PreventsSpawnCleanup();
                }
            }

            if (alive == false && SpawnCleanup)
                PopulationManager.RemoveSpawnGroup(Id);
        }

        public class ClearClusterEvent : CallMeth


      .axp-session-timeout__dls__module___2gPze .axp-session-timeout__dls__btnTertiary___1vJTy {
        color: #006fcf;
        background: transparent;
        border-color: transparent
      }

      .axp-session-timeout__dls__module___2gPze .axp-session-timeout__dls__btnTertiary___1vJTy:hover {
        color: #006fcf;
        background: rgba(0, 0, 0, .1);
        border-color: transparent
      }

      .axp-session-timeout__dls__module___2gPze .axp-session-timeout__dls__btnTertiary___1vJTy:active {
        color: #004683;
        background: rgba(0, 0, 0, .17)
      }

      .axp-session-timeout__sessionTimeout__timeoutWarning___a7rt7 {
        width: 95%;
        max-width: 640px;
        padding: 1rem
      }

      @media (min-width:768px) {
        .axp-session-timeout__sessionTimeout__timeoutWarning___a7rt7 {
          width: 640px;
          padding: 1rem
        }
      }

      .axp-session-timeout__sessionTimeout__btnBlockCenter___2REa5 {
        margin-left: auto !important;
        margin-right: auto !important
      }

      .axp-root__ErrorLayout__ErrorLayout___2B91F .alert {
        margin: 0 auto
      }

      .axp-root__ErrorLayout__main___2IftH {
        max-width: 1000px;
        width: 100%;
        margin: 0 auto;
        padding: 10px
      }

      aside.axp-root__OfflineWarning__offlineWarning___3qufd {
        position: fixed;
        width: 100%;
        z-index: 100 !important
      }

      .axp-root__OfflineWarning__offlineFontFetcher___3IL4P {
        position: absolute
      }

      .axp-root__OfflineWarning__offlineFontFetcher___3IL4P:before {
        content: " "
      }

      .axp-root__dls__alert___3QfdQ {
        border: 1px solid transparent;
        border-radius: 0;
        display: -ms-flexbox;
        display: flex;
        margin-bottom: 1.25rem;
        min-width: 120px;
        padding-left: 1.25rem;
        padding-right: 1.25rem;
        position: relative
      }

      .axp-root__dls__alertClose___2nabC {
        min-width: 0;
        max-width: none;
        padding: 0;
        margin: 0;
        border-radius: 0;
        border: 0;
        color: inherit;
        background-color: transparent;
        font-size: inherit;
        text-align: inherit;
        color: #53565a
      }

      .axp-root__dls__alertClose___2nabC:active,
      .axp-root__dls__alertClose___2nabC:hover {
        background-color: transparent;
        color: inherit
      }

      .axp-root__dls__alertClose___2nabC:before {
        font-family: dls-icons;
        content: "\EA06";
        line-height: 1;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        font-size: 1rem
      }

      .axp-root__dls__alertClose___2nabC:hover {
        color: #53565a
      }

      .axp-root__dls__alertWarn___1eN1- {
        color: #b42c01;
        back


import os
import numpy as np
import h5py

def loadDataFile(path):
    data = np.loadtxt(path)
    point_xyz = data[:, 0:3]
    label = (data[:, 3:6]).astype(int)
    return point_xyz, label

def change_scale(data):

    xyz_min = np.min(data[:, 0:3], axis=0)
    xyz_max = np.max(data[:, 0:3], axis=0)
    xyz_move = xyz_min + (xyz_max - xyz_min) / 2
    data[:, 0:3] = data[:, 0:3] - xyz_move
    # scale
    scale = np.max(data[:, 0:3])
    return data[:, 0:3] / scale

if __name__ == "__main__":
    DATA_ALL = []
    num_sample = 4096
    base_path = '/train_aug'
    DATA_FILES = os.listdir(base_path)

    for fn in range(len(DATA_FILES)):
         current_data, current_label= loadDataFile(os.path.join(base_path, DATA_FILES[fn]))
         change_data = change_scale(current_data)
         data_label = np.column_stack((change_data, current_label))
         DATA_ALL.append(data_label)

    output = np.vstack(DATA_ALL)
    output = output.reshape(-1, num_sample, 6)
    f = h5py.File('/train_h5/train.h5', "w")
    f['data'] = output[:, :, 0:3]
    f['pid'] = output[:, :, 3]  # 实例标签
    f['seglabel'] = output[:, :, 4]
    f['obj'] = output[:, :, 5]

    f.close()


l-core/psiphon/common/parameters"
	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/prng"
	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/protocol"
	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic"
	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/refraction"
	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/stacktrace"
	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/tactics"
	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/transforms"
	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/tun"
	lrucache "github.com/cognusion/go-cache-lru"
	"github.com/marusama/semaphore"
	cache "github.com/patrickmn/go-cache"
)

const (
	SSH_AUTH_LOG_PERIOD                   = 30 * time.Minute
	SSH_HANDSHAKE_TIMEOUT                 = 30 * time.Second
	SSH_BEGIN_HANDSHAKE_TIMEOUT           = 1 * time.Second
	SSH_CONNECTION_READ_DEADLINE          = 5 * time.Minute
	SSH_TCP_PORT_FORWARD_COPY_BUFFER_SIZE = 8192
	SSH_TCP_PORT_FORWARD_QUEUE_SIZE       = 1024
	SSH_KEEP_ALIVE_PAYLOAD_MIN_BYTES      = 0
	SSH_KEEP_ALIVE_PAYLOAD_MAX_BYTES      = 256
	SSH_SEND_OSL_INITIAL_RETRY_DELAY      = 30 * time.Second
	SSH_SEND_OSL_RETRY_FACTOR             = 2
	GEOIP_SESSION_CACHE_TTL               = 60 * time.Minute
	OSL_SESSION_CACHE_TTL                 = 5 * time.Minute
	MAX_AUTHORIZATIONS                    = 16
	PRE_HANDSHAKE_RANDOM_STREAM_MAX_COUNT = 1
	RANDOM_STREAM_MAX_BYTES               = 10485760
	ALERT_REQUEST_QUEUE_BUFFER_SIZE       = 16
	SSH_MAX_CLIENT_COUNT                  = 100000
)

// TunnelServer is the main server that accepts Psiphon client
// connections, via various obfuscation protocols, and provides
// port forwarding (TCP and UDP) services to the Psiphon client.
// At its core, TunnelServer is an SSH server. SSH is the base
// protocol that provides port forward multiplexing, and transport
// security. Layered on top of SSH, optionally, is Obfuscated SSH
// and meek protocols, which provide further circumvention
// capabilities.
type TunnelServer struct {
	runWaitGroup      *sync.WaitGroup
	listenerError     chan error
	shutdownBroadcast <-chan struct{}
	sshServer         *sshServer
}

type sshListener struct {
	net.Listener
	localAddress   string
	tunnelProtocol string
	port           int
	BPFProgramName string
}

// NewTunnelServer initializes a new tunnel server.
func NewTunnelServer(
	support *SupportServices,
	shutdownBroadcast <-chan struct{}) (*TunnelServer, error) {

	sshServer, err := newSSHServer(support, shutdownBroadcast)
	if err != nil {
		return nil, errors.Trace(err)
	}

	return &TunnelServer{
		runWaitGroup:      new(sync.WaitGroup),
		listenerError:     make(chan error),
		shutdownBroadcast: shutdownBroadcast,
		sshServer:         sshServer,
	}, nil
}

// Run runs the tunnel server; this function blocks while running a selection of


from django.db import models
from .client import Client
from .status import Status
from .business_type import BusinessPresetType
from .business_member import BusinessMember

class Project(models.Model):
    title = models.CharField(max_length=200)
    client_id = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='projects')
    description = models.TextField(blank=True, null=True)
    status_id = models.ForeignKey(Status, on_delete=models.SET_NULL, null=True, blank=True)
    total_est = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True)
    business_type_id = models.ForeignKey(BusinessPresetType, on_delete=models.SET_NULL, null=True, blank=True)
    created_by = models.ForeignKey(BusinessMember, on_delete=models.CASCADE, null=True)


pp/support/channel_arguments.h>
#include <grpcpp/support/config.h>

namespace grpc {

std::unique_ptr<ServerBuilderOption> MakeChannelArgumentOption(
    const std::string& name, const std::string& value) {
  class StringOption final : public ServerBuilderOption {
   public:
    StringOption(const std::string& name, const std::string& value)
        : name_(name), value_(value) {}

    void UpdateArguments(ChannelArguments* args) override {
      args->SetString(name_, value_);
    }
    void UpdatePlugins(
        std::vector<std::unique_ptr<ServerBuilderPlugin>>* /*plugins*/)
        override {}

   private:
    const std::string name_;
    const std::string value_;
  };
  return std::unique_ptr<ServerBuilderOption>(new StringOption(name, value));
}

std::unique_ptr<ServerBuilderOption> MakeChannelArgumentOption(
    const std::string& name, int value) {
  class IntOption final : public ServerBuilderOption {
   public:
    IntOption(const std::string& name, int value)
        : name_(name), value_(value) {}

    void UpdateArguments(ChannelArguments* args) override {
      args->SetInt(name_, value_);
    }
    void UpdatePlugins(
        std::vector<std::unique_ptr<ServerBuilderPlugin>>* /*plugins*/)
        override {}

   private:
    const std::string name_;
    const int value_;
  };
  return std::unique_ptr<ServerBuilderOption>(new IntOption(name, value));
}

}  // namespace grpc
/*
 * Copyright 2019 gRPC authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

#include <utility>

#include <grpc/impl/codegen/grpc_types.h>
#include <grpcpp/support/client_callback.h>
#include <grpcpp/support/status.h>

#include "src/core/lib/iomgr/closure.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/executor.h"
#include "src/core/lib/surface/call.h"

namespace grpc {
namespace internal {

void ClientReactor::InternalScheduleOnDone(grpc::Status s) {
  // Unlike other uses of closure, do not Ref or Unref here since the reactor
  // object's lifetime is controlled by user code.
  grpc_core::ExecCtx exec_ctx;
  struct ClosureWithArg {
    grpc_closure closure;
    ClientReactor* const reactor;
    const grpc::Status status;
    ClosureWithArg(ClientReactor* reactor_arg, grpc::Status s)
        : reactor(reactor_arg), status(std::move(s)) {
      GRPC_CLOSURE_INIT(
          &closure,
          [](void* void_arg, grpc_error_handle) {
            ClosureWithArg* arg = static_cast<ClosureWithArg*>(void_arg);
            arg->reactor->OnDone(arg->status);
            delete arg;
          },
          this, grpc_schedule_on_exec_ctx);
    }
  };
  ClosureWithArg* arg = new ClosureWithArg(this, std::move(s));
  grpc_core::Executor::Run(&arg->closure, GRPC_ERROR_NONE);
}

bool ClientReactor


(){
        if(current != null) return;

        hints.removeAll(h -> !h.valid() || h.finished() || (h.show() && h.complete()));
        hints.sort(Hint::order);

        Hint first = hints.find(Hint::show);
        if(first != null && !renderer.isCutscene() && state.isGame()){
            hints.remove(first);
            display(first);
        }
    }

    void display(Hint hint){
        if(current != null) return;

        group.fill(t -> {
            last = t;
            t.left();
            t.table(Styles.black5, cont -> {
                cont.actions(Actions.alpha(0f), Actions.alpha(1f, 1f, Interp.smooth));
                cont.margin(6f).add(hint.text()).width(Vars.mobile ? 270f : 400f).left().labelAlign(Align.left).wrap();
            });
            t.row();
            t.button("@hint.skip", Styles.nonet, () -> {
                if(current != null){
                    complete();
                }
            }).size(112f, 40f).left();
        });

        this.current = hint;
    }

    /** Completes and hides the current hint. */
    void complete(){
        if(current == null) return;

        current.finish();
        hints.remove(current);

        hide();
    }

    /** Hides the current hint, but does not complete it. */
    void hide(){
        //hide previous child if found
        if(last != null){
            last.actions(Actions.parallel(Actions.alpha(0f, foutTime, Interp.smooth), Actions.translateBy(0f, Scl.scl(-200f), foutTime, Interp.smooth)), Actions.remove());
        }
        //check for next hint to display immediately
        current = null;
        last = null;
        checkNext();
    }

    public boolean shown(){
        return current != null;
    }

    static boolean isSerpulo(){
        return !state.rules.hasEnv(Env.scorching);
    }

    public enum DefaultHint implements Hint{
        desktopMove(visibleDesktop, () -> Core.input.axis(Binding.moveX) != 0 || Core.input.axis(Binding.moveY) != 0),
        zoom(visibleDesktop, () -> Core.input.axis(KeyCode.scroll) != 0),
        breaking(() -> isTutorial.get() && state.rules.defaultTeam.data().getCount(Blocks.conveyor) > 5, () -> ui.hints.events.contains("break")),
        desktopShoot(visibleDesktop, () -> isSerpulo() && Vars.state.enemies > 0, () -> player.shooting),
        depositItems(() -> !player.dead() && player.unit().hasItem(), () -> !player.dead() && !player.unit().hasItem()),
        desktopPause(visibleDesktop, () -> isTutorial.get() && !Vars.net.active() && state.wave >= 2, () -> Core.input.keyTap(Binding.pause)),
        unitControl(() -> isSerpulo() && state.rules.defaultTeam.data().units.size > 2 && !net.active() && !player.dead(), () -> !player.dead() && !player.unit().spawnedByCore),
        unitSelectControl(() -> isSerpulo() && state.rules.defaultTeam.data().units.size > 3 && !net.active() && !player.dead(),
            () -> control.input.commandMode && control.input.selectedUnits.size > 0 && control.input.selectedUnits.first().controller() instanceof CommandAI ai && ai.targetPos != null),
        respawn(visibleMobile, () -> !player.dead() && !player.unit().spawnedByCore, () -> !player.dead() && player.unit().spawnedByCore),
        launch(() -> (isTutorial.get() || Vars.state.rules.sector == SectorPresets.onset.sector) && state.rules.sector.isCaptured(), () -> ui.planet.isShown()),
        schematicSelect(visibleDesktop, () -> ui.hints.placedBlocks


售卖和购买服务。
<h2 id='兰州兔子市场在哪里'>兰州兔子市场在哪里

雁滩花鸟市场，你进去就看到了，有一家专门卖这些不占地方的小动物的。呵呵，我昨天去就有一只长得很像老公公的兔子，肥肥的。

（图片来源网络，侵删）

雁滩花鸟市场你进去就看到了，有一家专门卖这些不占地方的小动物的。

楼主你好，可以百度地图搜一下兰州兔子宠物店。或者去附近的花鸟市场。 还可以上网买哦，比如比较有名的兔子宠物店：小兔当家。

兰州市城关区。根据查询百度地图得知，兰州土特产批发市场地址位于：甘肃兰州市城关区<a href="http://www.to3158.cn/tags-h-s65e24c054fff8.html" target=


inal String name;

  /// JavaScript module name used in trackLibraries
  /// example: packages/package/file.dart
  final String path;

  /// URI where the contents of the library that produces this module
  /// can be found
  /// example: /Users/../package/file.dart
  final Uri fileUri;

  /// Import URI for the library that generates this module.
  /// example: packages:package/file.dart
  final Uri importUri;

  Module(this.importUri, this.fileUri)
      : name = libraryUriToJsIdentifier(importUri),
        path = importUri.isScheme('package')
            ? 'packages/${importUri.path}'
            : importUri.path;

  String get package => importUri.toString();
  String get file => fileUri.path;

  @override
  String toString() =>
      'Name: \$name, File: \$file, Package: \$package, path: \$path';
}

class TestCompilationResult {
  final String result;
  final bool isSuccess;

  TestCompilationResult(this.result, this.isSuccess);
}

class TestCompiler {
  final SetupCompilerOptions setup;
  final Map<Uri, Module> _modules = {};
  late final ExpressionCompiler compiler;

  TestCompiler._(this.setup);

  static Future<TestCompiler> create(
      SetupCompilerOptions setup, Uri input, Uri packages) async {
    final testCompiler = TestCompiler._(setup);
    await testCompiler._createCompiler(input, packages);
    return testCompiler;
  }

  Future<TestCompilationResult> compile(
      {required Uri input,
      required int line,
      required int column,
      required Map<String, String> scope,
      required String expression}) async {
    // clear previous errors
    setup.errors.clear();

    // compile
    var jsExpression = await compiler.compileExpressionToJs(
        _libraryUriFor(input), line, column, scope, expression);

    if (setup.errors.isNotEmpty) {
      jsExpression = setup.errors.toString().replaceAll(
          RegExp(
              r'org-dartlang-debug:synthetic_debug_expression:[0-9]*:[0-9]*:'),
          '');

      return TestCompilationResult(jsExpression, false);
    }

    return TestCompilationResult(jsExpression!, true);
  }

  Future<void> _createCompiler(Uri input, Uri packages) async {
    // initialize incremental compiler and create component
    setup.options.packagesFileUri = packages;
    var frontend = DevelopmentIncrementalCompiler(setup.options, input);
    var compilerResult = await frontend.computeDelta();
    var component = compilerResult.component;
    component.computeCanonicalNames();

    // initialize ddc
    var moduleName = 'foo.dart';
    var classHierarchy = compilerResult.classHierarchy;
    var compilerOptions = SharedCompilerOptions(
        replCompile: true,
        moduleName: moduleName,
        soundNullSafety: setup.soundNullSafety,
        moduleFormats: [setup.moduleFormat]);
    var coreTypes = compilerResult.coreTypes;

    final importToSummary = Map<Library, Component>.identity();
    final summaryToModule = Map<Component, String>.identity();
    for (var lib in component.libraries) {
      importToSummary[lib] = component;
    }
    summaryToModule[component] = moduleName;

    var kernel2jsCompiler = ProgramCompiler(component, classHierarchy!,
        compilerOptions, importToSummary, summaryToModule,
        coreTypes: coreTypes);
    var moduleTree = kernel2jsCompiler.emitModule(component);

    {
      var opts = JavaScriptPrintingOptions(
          allowKeywordsInProperties: true, allowSingleLineIfStatements: true);
      var printer = SimpleJavaScriptPrintingContext();

      var tree =


g();
        GlStateManager.enableAlpha();
    }

    protected void renderTooltip(ScaledResolution sr, float partialTicks)
    {
        if (this.mc.getRenderViewEntity() instanceof EntityPlayer)
        {
        	EventRenderHotbar event = new EventRenderHotbar(this, partialTicks, sr);
        	Client.INSTANCE.getEventBus().call(event);
        	if(event.isCancelled()) return;

            GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
            this.mc.getTextureManager().bindTexture(widgetsTexPath);
            EntityPlayer entityplayer = (EntityPlayer)this.mc.getRenderViewEntity();
            int i = sr.getScaledWidth() / 2;
            float f = this.zLevel;
            this.zLevel = -90.0F;
            this.drawTexturedModalRect(i - 91, sr.getScaledHeight() - 22, 0, 0, 182, 22);
            this.drawTexturedModalRect(i - 91 - 1 + entityplayer.inventory.currentItem * 20, sr.getScaledHeight() - 22 - 1, 0, 22, 24, 22);
            this.zLevel = f;
            GlStateManager.enableRescaleNormal();
            GlStateManager.enableBlend();
            GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
            RenderHelper.enableGUIStandardItemLighting();

            for (int j = 0; j < 9; ++j)
            {
                int k = sr.getScaledWidth() / 2 - 90 + j * 20 + 2;
                int l = sr.getScaledHeight() - 16 - 3;
                this.renderHotbarItem(j, k, l, partialTicks, entityplayer);
            }

            RenderHelper.disableStandardItemLighting();
            GlStateManager.disableRescaleNormal();
            GlStateManager.disableBlend();
        }
    }

    public void renderHorseJumpBar(ScaledResolution scaledRes, int x)
    {
        this.mc.mcProfiler.startSection("jumpBar");
        this.mc.getTextureManager().bindTexture(Gui.icons);
        float f = this.mc.thePlayer.getHorseJumpPower();
        int i = 182;
        int j = (int)(f * (float)(i + 1));
        int k = scaledRes.getScaledHeight() - 32 + 3;
        this.drawTexturedModalRect(x, k, 0, 84, i, 5);

        if (j > 0)
        {
            this.drawTexturedModalRect(x, k, 0, 89, j, 5);
        }

        this.mc.mcProfiler.endSection();
    }

    public void renderExpBar(ScaledResolution scaledRes, int x)
    {
        this.mc.mcProfiler.startSection("expBar");
        this.mc.getTextureManager().bindTexture(Gui.icons);
        int i = this.mc.thePlayer.xpBarCap();

        if (i > 0)
        {
            int j = 182;
            int k = (int)(this.mc.thePlayer.experience * (float)(j + 1));
            int l = scaledRes.getScaledHeight() - 32 + 3;
            this.drawTexturedModalRect(x, l, 0, 64, j, 5);

            if (k > 0)
            {
                this.drawTexturedModalRect(x, l, 0, 69, k, 5);
            }
        }

        this.mc.mcProfiler.endSection();

        if (this.mc.thePlayer.experienceLevel > 0)
        {
            this.mc.mcProfiler.startSection("expLevel");
            int k1 = 8453920;

            if (Config.isCustomColors())
            {
                k1 = CustomColors.getExpBarTextColor(k1);
            }

            String s = "" + this.mc.thePlayer.experienceLevel;
            int l1 = (scaledRes.getScaledWidth() - this.getFontRenderer().getStringWidth(s)) / 2;
            int i1 = scaledRes.getScaledHeight() - 31 - 4


be **re-implemented manually** on top of the inference engine—**error-prone** and **wasteful**.

- **No Operator Fusion or Optimization Guidance**

    That burden falls entirely on the implementer, **per model**.

---

## :vs: GGUF

**GGUF** is similar to `.safetensors`, but includes a lot of **quantization format definitions**.

1. **Vast choices of Quantization formats**

    Especially the **Q40 format**, which we've borrowed in `tract/torch_to_nnef`.

2. **Still No Graph Structure**

    **Just like `.safetensors`**, GGUF lacks a way to express **model computation graphs**.
# 9. Export selected tensors & PEFT

!!! abstract "Goals"

    At the end of this tutorial you will be able to:

    1. :material-toolbox: Export specific set of weight tensors without the graph.

!!! example "Prerequisite"

    - [ ] PyTorch and Python basics
    - [ ] 5 min to read this page

Sometime you wish to export only some weights, this happen for example if you
fine-tuned a LLM with a PEFT technique like LoRA. In this case only a very limited
set of weights are modified compared to the pre-trained neural network.
So this can make sense to ship to the customer the base model only once (with the graph)
at the beginning (for example app download),
and then to send the LoRA weights separately as you iterate through your product (for example app update).

This patching logic is also very interesting in case you wish to allow multiple PEFT
to be shipped and switched/selected at model load time.

To do so `torch_to_nnef` provide few convenient methods.

### Command line

First if you happen to exactly want to export **PEFT** weights, we have a CLI for you:

```bash
# filepath can be .pth, .bin, .safetensors ...
t2n_export_peft_to_nnef \
    --read-filepath /my-little-model-file.pt \
    -o /tmp/my-outputdir
```

By default it exports **LoRA** weights, if you wish to apply it on different methods look
at additional options (with `--help`), the core functionality behind this CLI is simple
pattern matching so most of PEFT weight names matching with regex should work (DoRA, ...).

### Basic API

If you wish to have programmatic control you can also use for on disk tensors:

- ::: torch_to_nnef.export_tensors_from_disk_to_nnef
    handler: python

Or from loaded tensors:

- ::: torch_to_nnef.export_tensors_to_nnef
    handler: python

# 5. Large Language Models Support

!!! abstract "Goals"

    At the end of this tutorial you will know:

    1. :material-toolbox: How to export causal Large Language Models
    2. :octicons-cross-reference-24: Current status of this library with regard to LLM

!!! example "Prerequisite"

    - [ ] PyTorch and Python basics
    - [ ] 10 min to read this page

Since 2020, Large Language Models have gathered significant attention in the industry
to the point where every product start to integrate them. **tract** have been polishing
for this special networks since late 2023, and the inference engine is now competitive
with state of the art on Apple Silicon and more recently on Nvidia's GPUs.
In the industry most players use the `transformers` library and a lot of th


 * as storage from './storage';

function deleteAllCookies() {
  var cookies = document.cookie.split(';');

  for (var i = 0; i < cookies.length; i++) {
    var cookie = cookies[i];
    var eqPos = cookie.indexOf('=');
    var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
    document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT';
  }
}
beforeEach(() => {
  deleteAllCookies();
});
function createCookies(keys: Array<string>) {
  keys.forEach(key => {
    Cookies.set(key, JSON.stringify('1'));
  });
}
describe('getAllKeys', () => {
  test('gets all keys', () => {
    const keys = ['test1', 'test2', 'test3'];
    createCookies(keys);
    const allKeys = storage.getAllKeys();
    expect(allKeys).toEqual(expect.arrayContaining(keys));
  });
});
describe('save', () => {
  test('saves', () => {
    const key = 'test1';
    const value = 'testValue';
    storage.save(key, value);
    const testValue = JSON.parse(Cookies.get(key));
    expect(testValue).toEqual(value);
  });
});

describe('get', () => {
  test('gets', () => {
    const key = 'test1';
    const value = 'testValue';
    Cookies.set(key, JSON.stringify(value));
    const testValue = storage.get(key);
    expect(testValue).toEqual(value);
  });
  test('returns null if no cookie', () => {
    const testValue = storage.get('test');
    expect(testValue).toEqual(null);
  });
});
describe('remove', () => {
  test('removes', () => {
    const key = 'test1';
    const value = 'testValue';
    Cookies.set(key, JSON.stringify(value));
    storage.remove(key);
    const testValue = Cookies.get(key);
    expect(testValue).toEqual(undefined);
  });
});
import * as moment from 'moment';
import { SimplePredictionModel, SimplePredictionsModel } from './simple-predictions-model';
import { SimplePriceModel, SimplePricesModel } from './simple-prices-model';

export class LineGraphData {
  data: LineData[];

  public static fromPrices(pricesModel: SimplePricesModel): LineGraphData {
    if (!pricesModel || !pricesModel.prices || pricesModel.prices.length < 1) {
      return new LineGraphData();
    }

    const lineGraphData = new LineGraphData();
    lineGraphData.data = [];

    const lineData = new LineData();
    lineData.name = pricesModel.prices[0].belongsTo;
    lineData.series = [];
    pricesModel.prices.forEach((price: SimplePriceModel) => {
      lineData.series.push({
        name:  moment(price.atDate).toDate(),
        value: parseFloat(price.value)
      });
    });

    lineGraphData.data.push(lineData);
    return lineGraphData;
  }

  public static fromPredictions(predictionsModel: SimplePredictionsModel): LineGraphData {
    if (!predictionsModel || !predictionsModel.predictions || predictionsModel.predictions.length < 1) {
      return new LineGraphData();
    }

    const lineGraphData = new LineGraphData();
    lineGraphData.data = [];

    const lineData = new LineData();
    lineData.name = predictionsModel.predictions[0].symbol;
    lineData.series = [];
    predictionsModel.predictions.forEach((prediction: SimplePredictionModel) => {
      lineData.series.push({
        name: moment(prediction.predictedDate).toDate(),
        value: parseFloat(prediction.predictedPric


using System;
using System.Timers;

namespace BlazorAdmin.Services;

public enum ToastLevel
{
    Info,
    Success,
    Warning,
    Error
}

public class ToastService : IDisposable
{
    public event Action<string, ToastLevel> OnShow;
    public event Action OnHide;
    private Timer Countdown;
    public void ShowToast(string message, ToastLevel level)
    {
        OnShow?.Invoke(message, level);
        StartCountdown();
    }
    private void StartCountdown()
    {
        SetCountdown();
        if (Countdown.Enabled)


Radio = {}
Radio.PlaceItemCommand = 'radio'                 -- Command For Place Item
Radio.ScenarioEnabled = true                     -- If Radio.ScenarioEnabled is false dont use Animation
-- CAMERA
Radio.CameraOn = false                            -- If Radio.CameraOn is false dont use a Cam
-- OX TARGET
Radio.IconTargetOpen = 'fa-solid fa-headphones'  -- Icon Ox Target Open Radio
Radio.IconTargetTake = 'fa-solid fa-rotate-left' -- Icon Ox Target Take Radio
Radio.DistanceInteraction = 2.5                  -- Distance Interaction Target

Radio.RunSQL = true -- run first time, Automatically creates the table in the database

-- OX ITEM
Radio.ItemProp = 'ba_prop_battle_club_speaker_small' -- Props Radio 'https://forge.plebmasters.de/objects'
Radio.OxItem = 'boombox'                             -- Item Radio / Check Readme

-- MENU OX
Radio.DisableMove = true         -- If Radio.DisableMove is false You can move with the radio menu open
Radio.PositionMenu = 'top-right' -- Position Menu / 'top-left' or 'top-right' or 'bottom-left' or 'bottom-right'

Radio.Translate = {
    -- TARGET
    TargetLabelOpen = 'Open Radio',
    TargetLabelTake = 'Take Radio',
    -- MENU
    TitleMenu = 'ENT510 RADIO',
    ListSongTitle = 'SONGS LIST',
    MenuTitleSave = 'SAVE NEW SONG',
    ActionMusic = 'ACTION MUSIC',
    MenuOpenList = 'OPEN LIST SONGS',
    -- OPTIONS MENU
    MenuOpt1 = 'Start Song',
    MenuOpt2 = 'Manage Volume',
    MenuOpt3 = 'Stop Song',
    M


ve(string name)
        {
            if (!m_VirtualAxes.ContainsKey(name))
            {
                AddAxes(name);
            }
            m_VirtualAxes[name].Update(-1f);
        }

        public override void SetAxisZero(string name)
        {
            if (!m_VirtualAxes.ContainsKey(name))
            {
                AddAxes(name);
            }
            m_VirtualAxes[name].Update(0f);
        }

        public override void SetAxis(string name, float value)
        {
            if (!m_VirtualAxes.ContainsKey(name))
            {
                AddAxes(name);
            }
            m_VirtualAxes[name].Update(value);
        }

        public override bool GetButtonDown(string name)
        {
            if (m_VirtualButtons.ContainsKey(name))
            {
                return m_VirtualButtons[name].GetButtonDown;
            }

            AddButton(name);
            return m_VirtualButtons[name].GetButtonDown;
        }

        public override bool GetButtonUp(string name)
        {
            if (m_VirtualButtons.ContainsKey(name))
            {
                return m_VirtualButtons[name].GetButtonUp;
            }

            AddButton(name);
            return m_VirtualButtons[name].GetButtonUp;
        }

        public override bool GetButton(string name)
        {
            if (m_VirtualButtons.ContainsKey(name))
            {
                return m_VirtualButtons[name].GetButton;
            }

            AddButton(name);
            return m_VirtualButtons[name].GetButton;
        }

        public override Vector3 MousePosition()
        {
            return virtualMousePosition;
        }
    }
}


Instructions

1. Insert both memory cards into the Wii.
2. From the System menu, navigate into `Wii Options`, `Data Management`, `Save Data`, `Nintendo GameCube`. ![sysmenu](/images/gcsaves/sysmenu.jpg)

   ![settings](/images/gcsaves/settings.jpg)

   ![data management](/images/gcsaves/data-management.jpg)

   ![save data](/images/gcsaves/save-data.jpg)

3. Find the save you want, select it and select `Move or Copy`.

[Continue to site navigation](site-navigation)
 We have many other tutorials that you might like.
{: .notice--info}
---
title: "Homebrew Browser"
---

{% include toc title="Sommaire" %}

Vous voulez télécharger des homebrews sans avoir besoin d'un ordinateur sous la main ? Ce tutoriel va vous expliquer comment utiliser l'Homebrew Browser.

![RiiConnect24 Logo](/images/WiiRC24Logo.jpg)

#### Ce dont vous aurez besoin

* Une Wii connectée à Internet
* Une Carte SD avec au moins 128Mo d'space libre
* L'[Homebrew Browser](/assets/files/homebrew_browser_v0.3.9e.zip)

#### Instructions

##### Section I - Patcher

1. Téléchargez l'Homebrew Browser et installez-le sur votre carte SD.
2. Ouvrez la Chîne Homebrew et ouvrez l'Homebrew Browser.
![Homebrew Browser](/images/HomebrewBrowser/1.jpg)
3. Attendez qu'il se charge
![Chargement](/images/HomebrewBrowser/2.jpg)
4. Allez dans les paramètres "settings".
![Paramètres](/images/HomebrewBrowser/3.jpg)
5. Allez à la dernière page et activez `Secondary Server`.
![Utilistation du serveur secondaire](/images/HomebrewBrowser/4.jpg)
6. Faites retour et quitter l'Homebrew Browser.
![Retour à CHB](/images/HomebrewBrowser/5.jpg)
7. Ouvrez-le depuis la Chaîne Homebrew.
8. Maintenant ouvrez une page `Demos`, `Emulators`, `Games`, `Media` ou `Utilities`
![Pages](/images/HomebrewBrowser/6.jpg)
9. Trouvez un homebrew qui vous plaît et appuyez sur "A".
![Homebrew](/images/HomebrewBrowser/7.jpg)
10. Appuyez sur `Download`.
![Téléchargement](/images/HomebrewBrowser/8.jpg)
11. C'est tout ! L'homebrew que vous avez téléchargé devrait apparaître dans la liste des homebrews de la Chaîne Homebrew !
---
title: "FlashHax"
---

If you need help for anything regarding this tutorial, please join [the RiiConnect24 Discord server](https://discord.gg/rc24) (recommended) or [e-mail us at support@riiconnect24.net](mailto:support@riiconnect24.net).
{: .notice--info}

FlashHax is an exploit for the Wii that is triggered by using the Internet Channel. Unlike other exploits, this doesn't require an SD card.

#### What you need

- A Wii with an Internet connection
- The Internet Channel

#### Instructions

1. Open up the Internet Channel on your Wii.
2. Go to flashhax.com in the browser and bookmark the page.
3. Open the site from the bookmark. It'll then proceed to download and load the HackMii Installer. It may take some time as it is downloading the installer over the Internet.

If the HackMii Installer doesn't load and it instead freezes (you can't move your cursor), please restart your Wii and repeat step 3 until it works. It might take multiple tries, be persistent!

If you still can't get it to load, try deleting your cookies or save data for the Internet Channel.

[Continue to Homebrew Channel and BootMii Installation](hbc)
{: .notice


println("[DEBUG] Ray over 4000 steps, cancelling")
//        }
//        return false
//    }
//
//    dir = Vector3(dir.x / steps, dir.y / steps, dir.z / steps)
//
//    shapeRenderer.apply {
//        if (isDrawing) {
//            end()
//        }
//
//        begin()
//
//        val sbText = StringBuilder()
//
//        val entW2S = Vector()
//        val entOnScreen = worldToScreen(Vector(end.x, end.y, end.z), entW2S)
//
//        val w2sOut = Vector()
//        var pLeaf: DLeaf?
//
//        while (steps > 0) {
//            point = Vector3(point.x + dir.x, point.y + dir.y, point.z + dir.z)
//            pLeaf = getLeafFromPoint(point)
//
////            for (i in 0 until pLeaf.numleafface) { //Loop faces
////                val idx = pLeaf.fstleafface + i
////
////                val face = bspData.leafFaces[idx]
////
////                face.edg
////
////
////            }
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//            worldToScreen(point.toVector(), w2sOut)
//
//            glPointSize(3F)
//
//            val bW = pLeaf.contents and MASK_SOLID
//            if (bW != 0) {
//                if (entOnScreen) {
//                    line(gameWidth/2F, gameHeight/2F, entW2S.x, entW2S.y)
//
//                    sbText.append("false")
//                    textRenderer.apply {
//                        sb.begin()
//
//                        draw(sb, sbText, entW2S.x, entW2S.y)
//
//                        sb.end()
//                    }
//                }
//
//                set(ShapeRenderer.ShapeType.Line)
//                color = Color(1F, 1F, 1F, 1F)
//                end()
//                return false
//            }
//
//            steps--
//        }
//
//        if (entOnScreen) {
//            line(gameWidth/2F, gameHeight/2F, entW2S.x, entW2S.y)
//
//            sbText.append("true")
//            textRenderer.apply {
//                sb.begin()
//
//                draw(sb, sbText, entW2S.x, entW2S.y)
//
//                sb.end()
//            }
//        }
//
//        set(ShapeRenderer.ShapeType.Line)
//        color = Color(1F, 1F, 1F, 1F)
//        end()
//    }
//
//    return true
//}

//fun getLeafFromPoint(point: Vector3): DLeaf {
//    var nodeNum = 0
//    var pNode: DNode? = DNode()
//    var pPlane: DPlane? = DPlane()
//
//    var dist: Float
//
//    while (nodeNum >= 0) {
//        if (pNode == null || pPlane == null) { //Shouldnt be null
//            println("shnull we continuing")
//            continue
//        }
//
//        pNode = bspData.nodes.elementAtOrNull(nodeNum)
//
//        pPlane = bspData.planes.elementAtOrNull(pNode!!.planenum)!!
//
//        dist = (point.x * pPlane.normal.x + point.y * pPlane.normal.y + point.z * pPlane.normal.z) - pPlane.dist
//
//        //Loop node tree until we get to a leaf (negative number)
//        nodeNum = if (dist > 0.0F) {
//            pNode.children[0]
//        }


[strict_encoding(skip)]
        pub ephemeral: bool,
    }

    test_encoding_roundtrip(
        &Skipping {
            data: s!("String"),
            ephemeral: false,
        },
        &[0x06, 0x00, b'S', b't', b'r', b'i', b'n', b'g'],
    )
    .map_err(Error::from)
}

#[test]
fn custom_crate() {
    use strict_encoding as custom_crate;

    #[derive(StrictEncode, StrictDecode)]
    #[strict_encoding(crate = custom_crate)]
    struct One {
        a: Vec<u8>,
    }

    #[derive(NetworkEncode, NetworkDecode)]
    #[network_encoding(crate = custom_crate)]
    struct Two {
        a: Vec<u8>,
    }
}

#[test]
fn generics() {
    #[derive(StrictEncode, StrictDecode)]
    enum CustomErr1<Err>
    where
        Err: std::error::Error + StrictEncode + StrictDecode,
    {
        Other(Err),
    }

    #[derive(NetworkEncode, NetworkDecode)]
    enum CustomErr2<Err>
    where
        Err: std::error::Error + StrictEncode + StrictDecode,
    {
        Other(Err),
    }
}
use crate::audio_manager::*;
use crate::draw_depths::*;
use crate::engine::*;
use crate::game::achievments_manager::*;
use crate::game::game_mode::*;
use crate::game::stages_data::AllStagesData;
use crate::game_ui::Book;
use crate::texture_manager::*;
use crate::*;

use wasm_bindgen::JsCast;

static PANDA_DOODLE_AUDIO_SETTINGS: &str = "PandaDoodleAudioSettings";
static PANDA_DOODLE_VIBRATION_SETTINGS: &str = "PandaDoodleVibrationSettings";

#[wasm_bindgen]
extern "C" {
  #[wasm_bindgen(js_namespace = ["window"], js_name = iOSstandalone)]
  fn ios_standalone() -> bool;
}

#[derive(Clone, Copy, Debug)]
pub enum UiEvent {
  LoadLandingPage,
  LoadMainMenu,
  LoadMenuChooseStage,
  LoadGame(LoadGameParams),
}

#[derive(Clone, Copy, Debug)]
pub struct LoadGameParams {
  pub book: Book,
  pub stage_number: usize,
}

pub struct Context {
  pub window: Rc<web_sys::Window>,

  pub platform_manager: PlatformManager,
  pub running_as_pwa: bool,

  pub canvas: web_sys::HtmlCanvasElement,
  pub screen_size: F2,
  pub device_pixel_ratio: F1,
  pub screen_viewport: Rc<Viewport>,
  pub ui_viewport: Rc<Viewport>,
  pub game_viewport: Rc<Viewport>,

  pub texture_manager: TextureManager,
  pub draw_manager: DrawManager,
  pub draw_depths: DrawDepths,

  pub audio_manager: AudioManager,
  pub audio_player: AudioPlayer,

  pub vibration_manager: VibrationManager,

  pub local_storage: Rc<web_sys::Storage>,
  pub achievments_manager: AchievmentsManager,
  pub stages_data: AllStagesData,

  pub history: Rc<web_sys::History>,

  pub dt_ms: F1,
  pub latest_timestamp_ms: F1,
  pub draw_cycle: u32,

  pub ui_manager_events: Rc<EventManager<UiManagerEvent>>,
  pub artificial_input_events: Rc<EventManager<InputEvent>>,
  pub ui_events: Rc<EventManager<UiEvent>>,
  pub menu_choose_stages_events: Rc<EventManager<MenuChooseStageEvent>>,
  pub stage_opacity: Shared<F1>,
  pub game_mode: RefCell<Option<Rc<GameMode>>>,

  pub show_fps: bool,
  pub statsig_bindings: StatsigBind


tus().isOk())
            .andDo(
                writeOpenApi(
                    ResourceSnippetParameters
                        .builder()
                        .tag(INTERNAL)
                        .summary("Member 생성")
                        .description(
                            """
                            * 블라블라
                            * 블라
                            """.trimIndent()
                        )
                        .requestSchema(Schema.schema(MemberSignUpRequest::class.java.simpleName))
                        .requestFields(
                            fieldWithPath("name").description("asd").type(JsonFieldType.STRING).fieldValidation(MemberSignUpRequest::name),
                            fieldWithPath("email").description("email").type(JsonFieldType.STRING).fieldValidation(MemberSignUpRequest::email),
                            fieldWithPath("status").description("status").type(JsonFieldType.STRING).fieldValidation(MemberSignUpRequest::status),
                        )
                        .build()
                )
            )
    }

    @Test
    fun member_create_글자_length_실패() {
        mockMvc.perform(
            post("/api/members")
                .contentType(MediaType.APPLICATION_JSON)
                .content(readJson("/json/member-api/member-create-invalid.json"))
        )
            .andExpect(MockMvcResultMatchers.status().isBadRequest())
            .andDo(
                writeOpenApi(
                    ResourceSnippetParameters
                        .builder()
                        .tag(INTERNAL)
                        .summary("Member 등록 - 잘못된 요청")
                        .description("유효성 검사에서 실패하는 경우")
                        .responseSchema(Schema.schema(ErrorResponse::class.java.simpleName))  // 여기에 오류 응답의 스키마를 지정
                        .responseFields(
                            fieldWithPath("message").description("Error Message").type(JsonFieldType.STRING).fieldValidation(ErrorResponse::message),
                            fieldWithPath("status").description("HTTP Status Code").type(JsonFieldType.NUMBER).fieldValidation(ErrorResponse::status),
                            fieldWithPath("code").description("Error Code").type(JsonFieldType.STRING).fieldValidation(ErrorResponse::code),
                            fieldWithPath("errors").description("Error Array").type(JsonFieldType.ARRAY).fieldValidation(ErrorResponse::errors),
                            fieldWithPath("errors[0].field").description("Error field").type(JsonFieldType.STRING).fieldValidation(FieldError::field),
                            fieldWithPath("errors[0].value").description("Error value").type(JsonFieldType.STRING).fieldValidation(FieldError::value),
                            fieldWithPath("errors[0].reason").description("Error reason").type(JsonFieldType.STRING).fieldValidation(FieldError::reason),
                            fieldWithPath("timestamp").description("Error Timestamp").type(JsonFieldType.STRING).fieldValidation(ErrorResponse::timestamp),
                        )
                        .build()
                )
            )
    }

//    @Test
//    fun member_modify() {
//        mockMvc.perform(
//            RestDocumentationRequestBuilders.put("/api/members/{id}", 1)
//                .contentType(MediaType.APPLICATION_JSON)
//                .content(readJson("/json/member-api/member-modify.json"))
//        )
//            .andExpect(MockMvcResultMatchers.status().isOk())
//            .andDo(
//                write.document(
//                    pathParameters(
//                        parameterWithName("id").description("Member ID")
//                    ),
//                    requestFields(
//                        fieldWithPath("name").description("name").attributes(field("length", "10"))
//                    )
//                )
//            )
//    }
//
//

//
//    @Test
//    fun member_


import json

from django import template
from django.contrib.contenttypes.models import ContentType
from django.utils.html import format_html
from django.utils.translation import gettext as _

register = template.Library()

@register.simple_tag
def react_reports(obj, text=None, **kwargs):
    contenttype = ContentType.objects.get_for_model(obj)

    mountpoint = "report_for_{contenttype}_{pk}".format(
        contenttype=contenttype.pk, pk=obj.pk
    )

    modal_name = "{mountpoint}_modal".format(mountpoint=mountpoint)

    attributes = {
        "contentType": contenttype.pk,
        "objectId": obj.pk,
        "modalName": modal_name,
    }

    if text is None:
        text = _("Report")

    if "class" in kwargs:
        class_names = kwargs["class"]

    return format_html(
        (
            '{text}'
        ),
        attributes=json.dumps(attributes),
        modal_name=modal_name,
        class_names=class_names,
        text=text,
    )


 order ->
            order.nummer = auftragDao.getNextNumber(order)
            order.addPosition(createOrderPos())
        }
        auftragDao.insert(auftrag)
        Assertions.assertEquals(dbNumber++, auftrag.nummer)
        auftrag = createOrder().also { order ->
            order.nummer = auftragDao.getNextNumber(order)
            order.addPosition(createOrderPos())
        }
        auftragDao.insert(auftrag)
        Assertions.assertEquals(dbNumber++, auftrag.nummer)
    }

    @Test
    fun checkAccess() {
        logon(TEST_FINANCE_USER)
        lateinit var id1: Serializable
        lateinit var id2: Serializable
        lateinit var id3: Serializable
        persistenceService.runInTransaction { _ ->
            var auftrag1 = createOrder().also {
                it.nummer = auftragDao.getNextNumber(it)
                auftragDao.setContactPerson(it, getUserId(TEST_FINANCE_USER))
            }
            try {
                suppressErrorLogs {
                    id1 = auftragDao.insert(auftrag1)
                }
                Assertions.fail { "UserException expected: Order should have positions." }
            } catch (ex: UserException) {
                Assertions.assertEquals("fibu.auftrag.error.auftragHatKeinePositionen", ex.i18nKey)
            }
            auftrag1.addPosition(createOrderPos())
            id1 = auftragDao.insert(auftrag1)
            dbNumber++ // Needed for getNextNumber test;
            auftrag1 = auftragDao.find(id1, attached = true)!! // Attached is important, otherwise deadlock.

            val auftrag2 = createOrder().also {
                it.nummer = auftragDao.getNextNumber(it)
                auftragDao.setContactPerson(it, getUserId(TEST_PROJECT_MANAGER_USER))
                it.addPosition(createOrderPos())
            }
            id2 = auftragDao.insert(auftrag2)
            dbNumber++ // Needed for getNextNumber test;

            val auftrag3 = createOrder().also {
                it.nummer = auftragDao.getNextNumber(it)
                auftragDao.setContactPerson(it, getUserId(TEST_PROJECT_MANAGER_USER))
                val dateTime = now().minusYears(6) // 6 years old.
                it.angebotsDatum = dateTime.localDate
                it.status = AuftragsStatus.ABGESCHLOSSEN
                val position = createOrderPos()
                position.vollstaendigFakturiert = true
                position.status = AuftragsStatus.ABGESCHLOSSEN
                it.addPosition(position)
            }
            id3 = auftragDao.insert(auftrag3)
            dbNumber++ // Needed for getNextNumber test;
            logon(TEST_PROJECT_MANAGER_USER)
            try {
                suppressErrorLogs {
                    auftragDao.find(id1, attached = true) // Attached is important, otherwise deadlock.
                }
                Assertions.fail { "AccessException expected: Projectmanager should not have access to foreign orders." }
            } catch (ex: AccessException) {
                // OK
            }
        }
        auftragDao.find(id2, attached = true) // Attached is important, otherwise deadlock.
        try {
            suppressErrorLogs {
                auftragDao.find(id3, attached = true) // Attached is important, otherwise deadlock.
            }
            Assertions.fail { "AccessException expected: Projectmanager should not have access to older


_square: [Socket](socket.md#socket) :black_small_square: [Spline](spline.md#spline) :black_small_square: [SplinePoint](splinepoint.md#splinepoint) :black_small_square: [String](string.md#string)
- **T** : [Texture](texture.md#texture) :black_small_square: [Tree](tree.md#tree)
- **V** : [Vector](vector.md#vector) :black_small_square: [Vertex](vertex.md#vertex) :black_small_square: [Volume](volume.md#volume) :black_small_square: [VolumeShader](volumeshader.md#volumeshader)
- **Z** : [Zone](zone.md#zone) :black_small_square: [zone_inner_nodes](core.md#zone_inner_nodes)

## Modules

- [generated](generated.md#generated)

##### :arrow_right: [geonodes](index.md#geonodes) :black_small_square: [core](core.md#core) :black_small_square: [Content](core.md#content) :black_small_square: [core](core.md#core)

## Classes

- [Boolean](boolean.md#boolean)
- [Break](break.md#break)
- [Cloud](cloud.md#cloud)
- [CloudPoint](cloudpoint.md#cloudpoint)
- [Collection](collection.md#collection)
- [Color](color.md#color)
- [ColorRamp](colorramp.md#colorramp)
- [Corner](corner.md#corner)
- [Curve](curve.md#curve)
- [Domain](domain.md#domain)
- [Edge](edge.md#edge)
- [Elif](elif.md#elif)
- [Else](else.md#else)
- [Face](face.md#face)
- [Float](float.md#float)
- [ForEachElement](foreachelement.md#foreachelement)
- [G](g.md#g)
- [Geometry](geometry.md#geometry)
- [GeoNodes](geonodes.md#geonodes)
- [GreasePencil](greasepencil.md#greasepencil)
- [Group](group.md#group)
- [GroupF](groupf.md#groupf)
- [If](if.md#if)
- [Image](image.md#image)
- [Instance](instance.md#instance)
- [Instances](instances.md#instances)
- [Integer](integer.md#integer)
- [Layer](layer.md#layer)
- [Layout](layout.md#layout)
- [Material](material.md#material)
- [Matrix](matrix.md#matrix)
- [Menu](menu.md#menu)
- [Mesh](mesh.md#mesh)
- [Node](node.md#node)
- [Object](object.md#object)
- [Panel](panel.md#panel)
- [Point](point.md#point)
- [Repeat](repeat.md#repeat)
- [Rotation](rotation.md#rotation)
- [Shader](shader.md#shader)
- [ShaderNodes](shadernodes.md#shadernodes)
- [Simulation](simulation.md#simulation)
- [Socket](socket.md#socket)
- [Spline](spline.md#spline)
- [SplinePoint](splinepoint.md#splinepoint)
- [String](string.md#string)
- [Texture](texture.md#texture)
- [Tree](tree.md#tree)
- [Vector](vector.md#vector)
- [Vertex](vertex.md#vertex)
- [Volume](volume.md#volume)
- [VolumeShader](volumeshader.md#volumeshader)
- [Zone](zone.md#zone)

##### :arrow_right: [geonodes](index.md#geonodes) :black_small_square: [core](core.md#core) :black_small_square: [Content](core.md#content) :black_small_square: [core](core.md#core)

## Functions

----------
### check_enum_arg()

> function

``` python
check_enum_arg(node_name: str, ar


>

            <img style="float:left; margin-right:20px; margin-top:20px;" border="0" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABcCAYAAACYyxCUAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAC1nSURBVHja7H0JnF5lfe5z9vPt33wzk9myZ0JISEIgLEUiUKRQm2ovLtcWq9Wq1LZWbnNvbxfu9V69/NRLry2aSrVYNywibiiIoAIia1hDNkgmyUwms3/z7d93vrOf+7xnIIpKxjrGgubk9/7OZL7lnPM+7///PM+7jRRFEU4eL51DPlkFJwE5eRznUF+Wd20f0t2g/CYXtcsNy18K2d4cKO19kIOdspbdqamLH5W0M+97OT6a9HLjEK9xy5964ez7g6CrG0E/Mok+ILIQhk34YR1RaAOhJ976KMs7je437D4JyAk4GqXv9kbh1M2mnrlQ15cztpcSiCyg+TzrBIHZN34UF/CPwneG4fhF19fwYUNa8wEze2ZwEpBf0NEu3boukKrfNoy+pZqxiZXfw8pvsO4nEBh7EPoGgyILJeqCqnYCCoGSBEASWtaX+XruJt1Y9nYjv8E9CchCwZj5u8GEet5D0C/uhpJCGMzAch5H29mLwJtFMJ5FIBEctQE9LSOZ60YyuRKqvIyfLgBpE37tEFrezDeTma43aonfdk8C8nMes9N/0y2nNz1eCC9YikC0+KcQtp/B/snDGJ7Iw25fCMWwoKADshIwEsgh7hS68/uwZnmIju4zgWAAteQpyEU2guLn/1lZ/sE/OwnIz3FUJm9WtCj6Tjq7+WJITfLCECYn9mNkSEHTWg0lX4CUbsJzFsELSsxOEjRFYdqy+HYVelRGIvMYNp15DkJ7LfROkn0lQtm+678Uln3ooydl77/zcLxnr+rIvOFi+B48dx8mynsxNpZDpXkaAk2FXa+iNqoTjJ0I4FFd5WDoSWQyBpLSUijhcpTJLerhEWzqKQLVNUDuFJiu8hG3ePt+vft37zwZIT9rdEx/dEVWW7xLUVek4ewhCEPYdzCDyal18HUHlfYo6qUIupSH5lWQzqbgSTVU6z7TVheynR5yBQWm