 passenger). This table, again, has elements 'destX' and 'destY' which hold the destination of the passenger and 'name' - the name of the passenger. Add the new code to your function."
	tutorialSteps[k].event =  function()
			cBox = codeBox.new(CODE_BOX_X, CODE_BOX_Y, CODE_chooseDirectionFunction2)
		end
	tutorialSteps[k].buttons = {}
	tutorialSteps[k].buttons[1] = {name = "Back", event = prevTutorialStep}
	tutorialSteps[k].buttons[2] = {name = "Next", event = nextTutorialStep}
	k = k + 1

	tutorialSteps[k] = {}
	tutorialSteps[k].message = "As in Tutorial1, we need to add code to pick up a passenger. Add it to your script...\n\nWhen you're done, reload and see if it works!"
	tutorialSteps[k].event =  function()
			cBox = codeBox.new(CODE_BOX_X, CODE_BOX_Y, CODE_pickUpPassenger)
		end
	tutorialSteps[k].buttons = {}
	tutorialSteps[k].buttons[1] = {name = "Back", event = prevTutorialStep}
	tutorialSteps[k].buttons[2] = {name = "Next", event = nextTutorialStep}
	k = k + 1

	tutorialSteps[k] = {}
	tutorialSteps[k].message = "The next step will be: Whenever the train reaches the junction and has no passenger on board, it should go south. Add the code line accordingly."
	tutorialSteps[k].event =  function()
			cBox = codeBox.new(CODE_BOX_X, CODE_BOX_Y, CODE_chooseDirectionWithPassenger1)
		end
	tutorialSteps[k].buttons = {}
	tutorialSteps[k].buttons[1] = {name = "Back", event = prevTutorialStep}
	tutorialSteps[k].buttons[2] = {name = "Next", event = nextTutorialStep}
	k = k + 1

	tutorialSteps[k] = {}
	tutorialSteps[k].message = "If there is a passenger on board, we'll compare the X-coordinates of the train's current position (train.x) and the passenger's destination (train.passenger.destX). If the destination lies in the West (destination X is smaller than the train's X) then we'll go West. Otherwise, we'll go East.\nAdd the new parts to your function."
	tutorialSteps[k].event =  function()
			cBox = codeBox.new(CODE_BOX_X, CODE_BOX_Y, CODE_chooseDirectionWithPassenger2)
		end
	tutorialSteps[k].buttons = {}
	tutorialSteps[k].buttons[1] = {name = "Back", event = prevTutorialStep}
	tutorialSteps[k].buttons[2] = {name = "Next", event = nextTutorialStep}
	k = k + 1

	tutorialSteps[k] = {}
	tutorialSteps[k].message = "The last step is to drop the passenger off as we did before.\n\nOnce you've coded all of that, reload and watch the train drop off passengers!\n(You can change the speed of the tutorial by pressing + or - )"
	tutorialSteps[k].event = waitingForPassengersEvent(k)
	tutorialSteps[k].buttons = {}
	tutorialSteps[k].buttons[1] = {name = "Back", event = prevTutorialStep}
	tutorialSteps[k].buttons[2] = {name = "More Info", event = additionalInformation("The game will automatically go to the next step when you've dropped off one passenger in the East and one in the West."), inBetweenSteps = true}
	k = k + 1

	tutorialSteps[k] = {}
	tutorialSteps[k].message = "You seem to be getting it right, well done! But this would go much, much faster if we had more than one train. You start the


ed to read list length byte: %w", err)
												}
												if s == 28 && b > 0x0f {
													return nil, errors.New("list length overflows a 32-bit integer")
												}
												if b < 0x80 {
													x = x | uint32(b)<<s
													if x == 0 {
														return nil, nil
													}
													vs := make([][]uint8, x)
													for i := range vs {
														slog.Debug("reading list element", "i", i)
														vs[i], err = func(r interface {
															io.ByteReader
															io.Reader
														}) ([]byte, error) {
															var x uint32
															var s uint
															for i := 0; i < 5; i++ {
																slog.Debug("reading byte list length", "i", i)
																b, err := r.ReadByte()
																if err != nil {
																	if i > 0 && err == io.EOF {
																		err = io.ErrUnexpectedEOF
																	}
																	return nil, fmt.Errorf("failed to read byte list length byte: %w", err)
																}
																if s == 28 && b > 0x0f {
																	return nil, errors.New("byte list length overflows a 32-bit integer")
																}
																if b < 0x80 {
																	x = x | uint32(b)<<s
																	if x == 0 {
																		return nil, nil
																	}
																	buf := make([]byte, x)
																	slog.Debug("reading byte list contents", "len", x)
																	_, err = io.ReadFull(r, buf)
																	if err != nil {
																		return nil, fmt.Errorf("failed to read byte list contents: %w", err)
																	}
																	return buf, nil
																}
																x |= uint32(b&0x7f) << s
																s += 7
															}
															return nil, errors.New("byte length overflows a 32-bit integer")
														}(r)
														if err != nil {
															return nil, fmt.Errorf("failed to read list element %d: %w", i, err)
														}
													}
													return vs, nil
												}
												x |= uint32(b&0x7f) << s
												s += 7
											}
											return nil, errors.New("list length overflows a 32-bit integer")
										}(r, append(path, 1)...)
										if err != nil {
											return nil, fmt.Errorf("failed to read tuple element 1: %w", err)
										}
										return v, nil
									}(r, append(path, uint32(i))...)
									if err != nil {
										return nil, fmt.Errorf("failed to read list element %d: %w", i, err)
									}
								}
								return vs, nil
							}
							x |= uint32(b&0x7f) << s
							s += 7
						}
						return nil, errors.New("list length overflows a 32-bit integer")
					}(r, append(path, 3)...)
					if err != nil {
						return nil, fmt.Errorf("failed to read `headers` field: %w", err)
					}
					return v, nil
				}(r, path...)
				return (*Response)(v), err
			}()

			if err != nil {
				return nil, fmt.Errorf("failed to read `result::ok` value: %w", err)
			}
			return &wrpc.Result[Response, ErrorCode]{Ok: v}, nil
		case 1:
			slog.Debug("reading `result::err` payload")
			v, err := func() (*ErrorCode, error) {
				v, err := func() (*wrpc__http__types.ErrorCode, error) {
					v, err := func() (*wrpc__http__types.


<EndpointsDetailView, V1Endpoints, bool>(item);
    }

    private async Task OnPodClick(V1ObjectReference r)
    {
        var item = PodService.GetByName(r.NamespaceProperty, r.Name);
        await PageDrawerHelper<V1Pod>.Instance
            .SetDrawerService(DrawerService)
            .ShowDrawerAsync<PodDetailView, V1Pod, bool>(item);
    }

    private async Task OnServiceClick(V1ObjectReference r)
    {
        var item = ServiceService.GetByName(r.NamespaceProperty, r.Name);
        await PageDrawerHelper<V1Service>.Instance
            .SetDrawerService(DrawerService)
            .ShowDrawerAsync<ServiceDetailView, V1Service, bool>(item);
    }

    private async Task OnCronJobClick(V1ObjectReference r)
    {
        var item = CronJobService.GetByName(r.NamespaceProperty, r.Name);

        await PageDrawerHelper<V1CronJob>.Instance


置是正确的。

![](https://postimg.aliavv.com/0ca187e9-1e3c-4bea-8231-80eb507c7473.png)

如果设置错误，则会提醒你报错，比如下面这样的，便是账号密码不匹配。

![](https://postimg.aliavv.com/81cf8e23-a063-4871-b9e1-80ce7fc9398a.png)

除了邮箱账号密码的设置以外，还有一个很重要的设置便是自动检查频次的设置，在下方的「Check for mail every」部分可以设置检查邮箱的频次，默认是 30 分钟一次，可以根据你的需要，调整检查的频次。

![](https://postimg.aliavv.com/92709714-ecf6-4704-9f84-f29d46826212.png)

此外，建议你设置一下 「 Message 」 中的 **Perferred Text Type**，这个项目用于指定默认的邮件类型，默认值是 Text，但是国内的邮件系统大多都是默认 HTML，所以可以也设置为“默认 HTML”。

![](https://postimg.aliavv.com/d12e9c35-0c1e-4bf0-bfb7-32ee80d50e53.png)

Message 页面下方的配置都是发文章时的一些默认配置，都非常简单，就不再赘述，如果你有需要，可以单独在读者圈进行提问。

配置完成后，保存配置。

#### 发送邮件

在邮箱中新建一封邮件，并发送到我们的邮箱中，等待一个检查周期，就可以看到已经发布了邮件的内容。

![](https://postimg.aliavv.com/2d99bb33-783f-47cf-8e21-c3880c164ee8.png)

我们可以看到，WordPress 自动的识别出我们通过邮件设置的格式等。

#### 自定义目录和标签

在通过邮件发布文章时，可以设置自定义的目录和 tag，这是 Postie 相比于原生功能的优越之处，而且，使用起来非常简单。

如果你需要设置自定义的目录，可以在邮件的标题中指定，使用`[]` 或`- -`来包裹你的目录名即可（需要目录名存在），比如`[category1]`、`- category1 -`。

如果你需要设置自定义的标签，就在文章的正文中放置 `tags:`，然后放入 tag （不要求存在），不同的 tag 之间使用英文逗号隔开，比如：`tags: cats, funny`。

![](https://postimg.aliavv.com/9f31eba4-de9e-4a68-b23f-9412d964dba5.png)

发布后的效果如下：

![](https://postimg.aliavv.com/171dd45a-d636-47db-a0d6-186f65bd461a.png)

至此，我们完成了使用 Email 来发布 WordPress 文章的内容，虽然 WordPress 官方提供


 can be ignored safely.
	if runtime.GOOS == "windows" {
		require.Equal(t, err, ErrWindowsNotSupported)
	} else {
		require.NoError(t, err)
		require.Panics(t, func() { _ = db2.DropAll() })
		require.NoError(t, db2.Close())
	}
}

func TestWriteAfterClose(t *testing.T) {
	dir, err := os.MkdirTemp("", "badger-test")
	require.NoError(t, err)
	defer removeDir(dir)
	opts := getTestOptions(dir)
	opts.ValueLogFileSize = 5 << 20
	db, err := Open(opts)
	require.NoError(t, err)
	N := uint64(1000)
	populate := func(db *DB) {
		writer := db.NewWriteBatch()
		for i := uint64(0); i < N; i++ {
			require.NoError(t, writer.Set([]byte(key("key", int(i))), val(true)))
		}
		require.NoError(t, writer.Flush())
	}

	populate(db)
	require.Equal(t, int(N), numKeys(db))
	require.NoError(t, db.Close())
	err = db.Update(func(txn *Txn) error {
		return txn.SetEntry(NewEntry([]byte("a"), []byte("b")))
	})
	require.Equal(t, ErrDBClosed, err)
}

func TestDropAllRace(t *testing.T) {
	dir, err := os.MkdirTemp("", "badger-test")
	require.NoError(t, err)
	defer removeDir(dir)
	opts := getTestOptions(dir)
	opts.managedTxns = true
	db, err := Open(opts)
	require.NoError(t, err)

	N := 10000
	// Start a goroutine to keep trying to write to DB while DropAll happens.
	closer := z.NewCloser(1)
	go func() {
		defer closer.Done()
		ticker := time.NewTicker(time.Millisecond)
		defer ticker.Stop()

		i := N + 1 // Writes would happen above N.
		var errors atomic.Int32
		for {
			select {
			case <-ticker.C:
				i++
				txn := db.NewTransactionAt(math.MaxUint64, true)
				require.NoError(t, txn.SetEntry(NewEntry([]byte(key("key", i)), val(false))))
				if err := txn.CommitAt(uint64(i), func(err error) {
					if err != nil {
						errors.Add(1)
					}
				}); err != nil {
					errors.Add(1)
				}
			case <-closer.HasBeenClosed():
				// The following causes a data race.
				// t.Logf("i: %d. Number of (expected) write errors: %d.\n", i, errors)
				return
			}
		}
	}()

	var wg sync.WaitGroup
	for i := 1; i <= N; i++ {
		wg.Add(1)
		txn := db.NewTransactionAt(math.MaxUint64, true)
		require.NoError(t, txn.SetEntry(NewEntry([]byte(key("key", i)), val(false))))
		require.NoError(t, txn.CommitAt(uint64(i), func(err error) {
			require.NoError(t, err)
			wg.Done()
		}))
	}
	wg.Wait()

	before := numKeysManaged(db, math.MaxUint64)
	require.True(t, before > N)

	require.NoError(t, db.DropAll())
	closer.SignalAndWait()

	after := numKeysManaged(db, math.MaxUint64)
	t.Logf("Before: %d. After dropall: %d\n", before, after)
	req


_D32LE,              h5t::H5T_UNIX_D32LE);
link_hid!(H5T_UNIX_D64BE,              h5t::H5T_UNIX_D64BE);
link_hid!(H5T_UNIX_D64LE,              h5t::H5T_UNIX_D64LE);
link_hid!(H5T_C_S1,                    h5t::H5T_C_S1);
link_hid!(H5T_FORTRAN_S1,              h5t::H5T_FORTRAN_S1);
link_hid!(H5T_VAX_F32,                 h5t::H5T_VAX_F32);
link_hid!(H5T_VAX_F64,                 h5t::H5T_VAX_F64);
link_hid!(H5T_NATIVE_SCHAR,            h5t::H5T_NATIVE_SCHAR);
link_hid!(H5T_NATIVE_UCHAR,            h5t::H5T_NATIVE_UCHAR);
link_hid!(H5T_NATIVE_SHORT,            h5t::H5T_NATIVE_SHORT);
link_hid!(H5T_NATIVE_USHORT,           h5t::H5T_NATIVE_USHORT);
link_hid!(H5T_NATIVE_INT,              h5t::H5T_NATIVE_INT);
link_hid!(H5T_NATIVE_UINT,             h5t::H5T_NATIVE_UINT);
link_hid!(H5T_NATIVE_LONG,             h5t::H5T_NATIVE_LONG);
link_hid!(H5T_NATIVE_ULONG,            h5t::H5T_NATIVE_ULONG);
link_hid!(H5T_NATIVE_LLONG,            h5t::H5T_NATIVE_LLONG);
link_hid!(H5T_NATIVE_ULLONG,           h5t::H5T_NATIVE_ULLONG);
link_hid!(H5T_NATIVE_FLOAT,            h5t::H5T_NATIVE_FLOAT);
link_hid!(H5T_NATIVE_DOUBLE,           h5t::H5T_NATIVE_DOUBLE);
link_hid!(H5T_NATIVE_LDOUBLE,          h5t::H5T_NATIVE_LDOUBLE);
link_hid!(H5T_NATIVE_B8,               h5t::H5T_NATIVE_B8);
link_hid!(H5T_NATIVE_B16,              h5t::H5T_NATIVE_B16);
link_hid!(H5T_NATIVE_B32,              h5t::H5T_NATIVE_B32);
link_hid!(H5T_NATIVE_B64,              h5t::H5T_NATIVE_B64);
link_hid!(H5T_NATIVE_OPAQUE,           h5t::H5T_NATIVE_OPAQUE);
link_hid!(H5T_NATIVE_HADDR,            h5t::H5T_NATIVE_HADDR);
link_hid!(H5T_NATIVE_HSIZE,            h5t::H5T_NATIVE_HSIZE);
link_hid!(H5T_NATIVE_HSSIZE,           h5t::H5T_NATIVE_HSSIZE);
link_hid!(H5T_NATIVE_HERR,             h5t::H5T_NATIVE_HERR);
link_hid!(H5T_NATIVE_HBOOL,            h5t::H5T_NATIVE_HBOOL);
link_hid!(H5T_NATIVE_INT8,             h5t::H5T_NATIVE_INT8);
link_hid!(H5T_NATIVE_UINT8,            h5t::H5T_NATIVE_UINT8);
link_hid!(H


-terminated string of maximum length MAX_PATH that contains the file name to be tested. A full path can be used.

### -param apszSuffix [in]

Type: const LPCTSTR*

An array of iArraySize string pointers. Each string pointed to is null-terminated and contains one suffix. The strings can be of variable lengths.

### -param iArraySize [in]

Type: int

The number of elements in the array pointed to by apszSuffix.

## -returns

Type: LPCTSTR

Returns a pointer to a string with the matching suffix if successful, or NULL if pszPath does not end with one of the specified suffixes.

## -remarks

This function uses a case-sensitive comparison. The suffix must match exactly.

> [!NOTE]
> The shlwapi.h header defines PathFindSuffixArray as an alias that automatically selects the ANSI or Unicode version of this function based on the definition of the UNICODE preprocessor constant. Mixing usage of the encoding-neutral alias with code that is not encoding-neutral can lead to mismatches that result in compilation or runtime errors. For more information, see [Conventions for Function Prototypes](/windows/win32/intl/conventions-for-function-prototypes).

---
UID: NF:shlwapi.PathRemoveExtensionW
title: PathRemoveExtensionW function (shlwapi.h)
description: Removes the file name extension from a path, if one is present. (Unicode)
helpviewer_keywords: ["PathRemoveExtension", "PathRemoveExtension function [Windows Shell]", "PathRemoveExtensionW", "_win32_PathRemoveExtension", "shell.PathRemoveExtension", "shlwapi/PathRemoveExtension", "shlwapi/PathRemoveExtensionW"]
old-location: shell\PathRemoveExtension.htm
tech.root: shell
ms.assetid: 6e26d005-50af-4376-b734-19ba3d9c470f
ms.date: 12/05/2018
ms.keywords: PathRemoveExtension, PathRemoveExtension function [Windows Shell], PathRemoveExtensionA, PathRemoveExtensionW, _win32_PathRemoveExtension, shell.PathRemoveExtension, shlwapi/PathRemoveExtension, shlwapi/PathRemoveExtensionA, shlwapi/PathRemoveExtensionW
req.header: shlwapi.h
req.include-header:
req.target-type: Windows
req.target-min-winverclnt: Windows 2000 Professional, Windows XP [desktop apps only]
req.target-min-winversvr: Windows 2000 Server [desktop apps only]
req.kmdf-ver:
req.umdf-ver:
req.ddi-compliance:
req.unicode-ansi: PathRemoveExtensionW (Unicode) and PathRemoveExtensionA (ANSI)
req.idl:
req.max-support:
req.namespace:
req.assembly:
req.type-library:
req.lib: Shlwapi.lib
req.dll: Shlwapi.dll (version 4.71 or later)
req.irql:
targetos: Windows
req.typenames:
req.redist:
ms.custom: 19H1
f1_keywords:
 - PathRemoveExtensionW
 - shlwapi/PathRemoveExtensionW
dev_langs:
 - c++
topic_type:
 - APIRef
 - kbSyntax
api_type:
 - DllExport
api_location:
 - Shlwapi.dll
 - API-MS-Win-Core-shlwapi-legacy-l1-1-0.dll
 - KernelBase.dll
 - API-MS-Win-DownLevel-shlwapi-l1-1-0.dll
 - API-MS-Win-DownLevel-shlwapi-


ype="PyCodeObject*",
        argspec="iiiiiiOOOOOOOOOiOO",
        arguments=[
            "int argcount", "int posonlyargcount", "int kwonlyargcount",
            "int nlocals", "int stacksize", "int flags",
            "PyObject* code", "PyObject* consts", "PyObject* names",
            "PyObject* varnames", "PyObject* freevars", "PyObject* cellvars",
            "PyObject* filename", "PyObject* name", "PyObject* qualname",
            "int firstlineno",
            "PyObject* lnotab", "PyObject* exceptiontable",
        ],
        cmpfunc=lambda cr, pr: isinstance(cr, types.CodeType),
    )

    test_PyCode_Addr2Line = CPyExtFunction(
        reference_PyCode_Addr2Line,
        lambda: (
            (example_function.__code__, -1),
            # CPython return firstlineno for 0, which doesn't make much sense
            # (example_function.__code__, 0),
            (example_generator.__code__, example_generator_frame.f_lasti),
        ),
        code='''
            int wrap_PyCode_Addr2Line(PyObject* code, int lasti) {
                return PyCode_Addr2Line((PyCodeObject*)code, lasti);
            }
            ''',
        resultspec="i",
        argspec="Oi",
        arguments=["PyObject* code", "int bci"],
        callfunction="wrap_PyCode_Addr2Line",
    )


se<GooglePlaceAutocompleteResponse>
    >(config.path, params);
    return res.body;
  }

  /**
   * Retrieves a list of predictions of a partial search
   *
   * ex. "Pizza in Chicago"
   */
  public async queryautocomplete(
    opts?: GooglePlacesQueryAutocompleteOpts
  ): Promise<GooglePlaceQueryAutocompleteResponse> {
    const config = API.AUTOCOMPLETE(opts);
    const params = this._permitParams(config, opts);
    const res = await this._query<
      GoogleResponse<GooglePlaceQueryAutocompleteResponse>
    >(config.path, params);
    return res.body;
  }

  /**
   * Retrieve the details of a Google Place based on the Place ID
   */
  public async details(
    opts?: GooglePlacesDetailsOpts
  ): Promise<GooglePlaceDetailsResponse> {
    const config = API.DETAILS(opts);
    const params = this._permitParams(config, opts);
    const res = await this._query<GoogleResponse<GooglePlaceDetailsResponse>>(
      config.path,
      params
    );
    return res.body;
  }

  /**
   * Google API Nearby Search
   */
  public async nearbysearch(
    opts?: GooglePlacesNearbySearchOpts
  ): Promise<GooglePlaceNearbySearchResponse> {
    if (opts && opts.rankby && opts.rankby.toUpperCase() === 'DISTANCE') {
      // Remove radius option if "rankBy" is set to "DISTANCE"
      opts.radius = undefined;
    }

    const config = API.NEARBY_SEARCH(opts);
    const params = this._permitParams(config, opts);
    const res = await this._query<
      GoogleResponse<GooglePlaceNearbySearchResponse>
    >(config.path, params);
    return res.body;
  }

  /**
   * Google API Text Search
   */
  public async textsearch(
    opts?: GooglePlacesTextSearchOpts
  ): Promise<GooglePlaceTextSearchResponse> {
    const config = API.TEXT_SEARCH(opts);
    const params = this._permitParams(config, opts);
    const res = await this._query<
      GoogleResponse<GooglePlaceTextSearchResponse>
    >(config.path, params);
    return res.body;
  }

  /**
   * Set the Google API Key from the Developer Console
   */
  set apiKey(apiKey: string | undefined) {
    if (apiKey && (typeof apiKey !== 'string' || !apiKey.match(/^[^\s]+$/gi))) {
      throw new Error('Invalid API Key');
    }

    this._apiKey = apiKey;
  }

  get apiKey(): string | undefined {
    return this._apiKey;
  }

  /**
   * Set debugging mode which will log events
   * @param {boolean} isDebug true or false to enable debug mode
   */
  set debug(isDebug: boolean) {
    this._debug = isDebug;
  }

  private async _googleApiRequest(
    url: string,
    params: Record<string, unknown>
  ) {
    const target = `${GOOGLE_MAPS_API_TARGET}${url}`;
    this._log(`GPW:REQ ${target}`, JSON.stringify({ ...params }));
    return await superagent.get(target).query({ key: this.apiKey, ...params });
  }

  /**
   * Parse through a params object creating URI Components
   */
  private _permitParams = (
    {
      requiredKeys,
      optionalKeys
    }: { requiredKeys: string[]; optionalKeys: string[] },
    params?: GooglePlacesOptions
  ): Record<string, unknown> => {
    // Validate required keys are present
    if (!requiredKeys || !requiredKeys.length) {
      throw new Error('No required params defined');
    } else if (!params || Object.keys(params).length === 0) {
      throw new Error('No parameters provided');
    }

    const missingKeys: string[] = [];

    // Filter required


/**********************************************************************
  Copyright(c) 2011-2016 Intel Corporation All rights reserved.

  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions
  are met:
    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in
      the documentation and/or other materials provided with the
      distribution.
    * Neither the name of Intel Corporation nor the names of its
      contributors may be used to endorse or promote products derived
      from this software without specific prior written permission.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**********************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
#include <assert.h>
#include "crc64.h"

#define BUF_SIZE  8192
#define INIT_SEED 0x12345678

int
main(int argc, char *argv[])
{
        uint8_t inbuf[BUF_SIZE];
        uint64_t avail_in, total_in = 0;
        uint64_t crc64_checksum;
        FILE *in;

        if (argc != 2) {
                fprintf(stderr, "Usage: crc64_example infile\n");
                exit(0);
        }
        in = fopen(argv[1], "rb");
        if (!in) {
                fprintf(stderr, "Can't open %s for reading\n", argv[1]);
                exit(0);
        }

        printf("crc64_example -- crc64_ecma_refl:\n");
        fflush(0);

        crc64_checksum = INIT_SEED;
        while ((avail_in = fread(inbuf, 1, BUF_SIZE, in))) {
                // crc update mode
                crc64_checksum = crc64_ecma_refl(crc64_checksum, inbuf, avail_in);
                total_in += avail_in;
        }

        fclose(in);
        printf("total length is %" PRIu64 ", checksum is 0x%" PRIx64 "\n", total_in,
               crc64_checksum);

        return 0;
}


started_at,priority:3;comment:请求开始毫秒时间戳" json:"started_at"`        // 请求开始毫秒时间戳
	EndedAt      *int64                `gorm:"column:ended_at;type:bigint(20) unsigned;comment:响应结束毫秒时间戳" json:"ended_at"`                                                                  // 响应结束毫秒时间戳
	CostMs       *int64                `gorm:"column:cost_ms;type:bigint(20) unsigned;comment:响应耗时毫秒" json:"cost_ms"`                                                                       // 响应耗时毫秒
	StatusCode   *int32                `gorm:"column:status_code;type:int(11);comment:状态码" json:"status_code"`                                                                              // 状态码
	DebuggedBy   *string               `gorm:"column:debugged_by;type:varchar(128);index:idx_prompt_id_debugged_by_started_at,priority:2;default:0;comment:执行人UserID" json:"debugged_by"`   // 执行人UserID
	DebugID      int64                 `gorm:"column:debug_id;type:bigint(20) unsigned;not null;index:idx_debug_id_step,priority:1;comment:debug_id" json:"debug_id"`                       // debug_id
	DebugStep    int32                 `gorm:"column:debug_step;type:int(11);not null;index:idx_debug_id_step,priority:2;default:1;comment:debug_step" json:"debug_step"`                   // debug_step
	CreatedAt    time.Time             `gorm:"column:created_at;type:datetime;not null;default:CURRENT_TIMESTAMP;comment:创建时间" json:"created_at"`                                           // 创建时间
	UpdatedAt    time.Time             `gorm:"column:updated_at;type:datetime;not null;default:CURRENT_TIMESTAMP;comment:更新时间" json:"updated_at"`                                           // 更新时间
	DeletedAt    soft_delete.DeletedAt `gorm:"column:deleted_at;type:bigint(20);not null;column:deleted_at;not null;default:0;softDelete:milli;comment:删除时间" json:"deleted_at"`             // 删除时间
}

// TableName PromptDebugLog's table name
func (*PromptDebugLog) TableName() string {
	return TableNamePromptDebugLog
}
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.

package model

import (
	"time"

	"gorm.io/plugin/soft_delete"
)

const TableNamePromptCommitLabelMapping = "prompt_commit_label_mapping"

// PromptCommitLabelMapping Prompt提交版本和Label关联表
type PromptCommitLabelMapping struct {
	ID            int64                 `gorm:"column:id;type:bigint(20) unsigned;primaryKey;autoIncrement:true;comment:主键ID" json:"id"`                                                                                // 主键ID
	SpaceID       int64                 `gorm:"column:space_id;type:bigint(20) unsigned;not null;comment:空间ID" json:"space_id"`                                                                                // 空间ID
	PromptID      int64                 `gorm:"column:prompt_id;type:bigint(20) unsigned;not null;uniqueIndex:uniq_prompt_id_label_key_deleted_at,priority:1;index:idx_prompt_id_version,priority:1;comment:Prompt ID" json:"prompt_id"`    // Prompt ID
	LabelKey      string                `gorm:"column:label_key;type:varchar(128);not null;uniqueIndex:uniq_prompt_id_label_key_deleted_at,priority:2;comment:Label唯一标识" json:"labe


ty><val>1.044</val><val>1.044</val><val>0</val><val>0</val></duplicity>
							<dust><val>2.14</val><val>2.14</val><val>0</val><val>0</val></dust>
							<length><val>63.92</val><val>63.92</val><val>0</val><val>0</val></length>
							<node name="s__JACDBF01 sp013695055">
								<reads><val>129</val><val>129</val><val>0</val><val>0</val></reads>
								<damage><val>0.14</val><val>0.14</val><val>0</val><val>0</val></damage>
								<duplicity><val>1.044</val><val>1.044</val><val>0</val><val>0</val></duplicity>
								<dust><val>2.14</val><val>2.14</val><val>0</val><val>0</val></dust>
								<length><val>63.92</val><val>63.92</val><val>0</val><val>0</val></length>
								<node name="GB_GCA_013695055.1">
									<reads><val>129</val><val>129</val><val>0</val><val>0</val></reads>
									<damage><val>0.14</val><val>0.14</val><val>0</val><val>0</val></damage>
									<duplicity><val>1.044</val><val>1.044</val><val>0</val><val>0</val></duplicity>
									<dust><val>2.14</val><val>2.14</val><val>0</val><val>0</val></dust>
									<length><val>63.92</val><val>63.92</val><val>0</val><val>0</val></length>
								</node>
							</node>
						</node>
					</node>
				</node>
			</node>
			<node name="c__Rubrobacteria">
				<reads><val>4887</val><val>4887</val><val>0</val><val>0</val></reads>
				<damage><val>0.02</val><val>0.0204</val><val>0</val><val>0</val></damage>
				<duplicity><val>1.061</val><val>1.061</val><val>0</val><val>0</val></duplicity>
				<dust><val>2.53</val><val>2.53</val><val>0</val><val>0</val></dust>
				<length><val>81.32</val><val>81.32</val><val>0</val><val>0</val></length>
				<node name="o__Rubrobacterales">
					<reads><val>4887</val><val>4887</val><val>0</val><val>0</val></reads>
					<damage><val>0.02</val><val>0.0204</val><val>0</val><val>0</val></damage>
					<duplicity><val>1.061</val><val>1.061</val><val>0</val><val>0</val></duplicity>
					<dust><val>2.53</val><val>2.53</val><val>0</val><val>0</val></dust>
					<length><val>81.32</val><val>81.32</val><val>0</val><val>0</val></length>
					<node name="f__Rubrobacteraceae">
						<reads><val>4887</val><val>4887</val><val>0</val><val>0</val></reads>
						<damage><val>0.02</val><val>0.0204</val><val>0</val><val>0</val></damage>
						<duplicity><val>1.061</val><val>1.061</val><val>


nput(message.text)
    if not input or not input:match('^.-\n.-$') then
        return mattata.send_reply(message, addtrigger.help)
    end
    local trigger, value = input:match('^(.-)\n(.-)$')
    local count = 0
    local is_duplicate = false
    local all = redis:hgetall('triggers:' .. message.chat.id)
    for _, v in ipairs(all) do
        count = count + 1
        if v == trigger then
            is_duplicate = true
        end
    end
    if is_duplicate then
        return mattata.send_reply(message, 'That trigger already exists! To modify it, delete it first using /triggers.')
    end
    if trigger:len() > 32 then
        return mattata.send_reply(message, 'The trigger needs to be 1-32 characters long, and alpha-numerical.')
    elseif value:len() > 512 then
        return mattata.send_reply(message, 'The value must be no more than 512 characters long!')
    end
    redis:hset('triggers:' .. message.chat.id, trigger, value)
    return mattata.send_reply(message, 'Successfully added that trigger! To view all of this chat\'s triggers, send /triggers.')
end

return addtrigger


 class_url: '1&2&8&7&3&5',
    预处理:$js.toString(()=>{
        let html = post('https://u.shytkjgs.com/user/v1/account/login', {
        headers: {
            'User-Agent': 'okhttp/4.10.0',
            'Accept-Encoding': 'gzip',
            'Content-Type': 'application/x-www-form-urlencoded',
            'x-app-id': '7',
            'platform': '1',
            'manufacturer': 'realme',
            'version_name': '3.3.1',
            'user_agent': 'Mozilla/5.0 (Linux; Android 9; RMX1931 Build/PQ3A.190605.05081124; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/91.0.4472.114 Mobile Safari/537.36',
            'app_version': '3.3.1',
            'device_platform': 'android',
            'personalized_recommend_status': '1',
            'device_type': 'RMX1931',
            'device_brand': 'realme',
            'os_version': '9',
            'channel': 'default',
            'raw_channel': 'default',
            'oaid': '',
            'msa_oaid': '',
            'uuid': 'randomUUID_914e7a9b-deac-4f80-9247-db56669187df',
            'device_id': '24250683a3bdb3f118dff25ba4b1cba1a',
            'ab_id': '',
            'support_h265': '1'
        },
        body: "device=24250683a3bdb3f118dff25ba4b1cba1a&install_first_open=false&first_install_time=1723214205125&last_update_time=1723214205125&report_link_url="
    });
    rule.headers['authorization'] = JSON.parse(html).data.token
    }),
    play_parse: true,
    lazy: $js.toString(() => {
        input = {
            url: input,
            parse: 0
        }
    }),
    double: true,
    一级: $js.toString(()=>{
        let d = [];
        let html = request(input,{headers:rule.headers});
        let data = JSON.parse(html).data.list;
        data.forEach(it => {
            let id = 'https://app.whjzjx.cn/v2/theater_parent/detail?theater_parent_id='+it.theater.id;
            d.push({
            url:id,
            title:it.theater.title,
            img:it.theater.cover_url,
            desc:it.theater.theme,
        })
        })
       setResult(d);
    }),
    二级: $js.toString(()=>{
        let urls = [];
        let html = request(input,{headers:rule.headers});
        let data = JSON.parse(html).data


        user.setPassword(CommonUtils.encodePassword(request.getNewPassword()));
        userRepository.save(user);
        return true;
    }

    public UserSignInResponse signin(UserSignInRequest request, HttpServletRequest httpServletRequest, HttpServletResponse response) {
        UserSignInResponse userSignInResponse = new UserSignInResponse();
        User user = userRepository.findOneByUserName(request.getUserName());
        if (user == null || !user.getPassword().equals(CommonUtils.encodePassword(request.getPassword()))) {
            throw new SigninFailedException();
        }
        if (!user.getEnable()) throw new UserDisabledException();
        // 用户名和密码都正确
        String token = UUID.randomUUID().toString();
        servletContext.setAttribute(token, user.getId());
        userSignInResponse.setToken(token);
        userSignInResponse.setRemember(request.getRemember());
        userSignInResponse.setSessionVO(getSession(user.getId()));
        // set cookie
        if (request.getRemember()) {
            Cookie cookie = new Cookie("User-Token", token);
            cookie.setMaxAge(30 * 24 * 60 * 60);
//            cookie.setSecure(true);// only https flat
            cookie.setHttpOnly(true);
            cookie.setPath("/");
            response.addCookie(cookie);
        } else {
            httpServletRequest.getSession().setAttribute("User-Token", token);
        }
        return userSignInResponse;
    }

    public boolean signout(HttpServletRequest httpServletRequest, HttpServletResponse response) {
        if (WebUtils.getCookie(httpServletRequest, "User-Token") != null) {
            Cookie deleteServletCookie = new Cookie("User-Token", null);
            deleteServletCookie.setMaxAge(0);
            deleteServletCookie.setPath("/");
            response.addCookie(deleteServletCookie);
        }
        httpServletRequest.getSession().removeAttribute("User-Token");
        return true;
    }

    public SessionVO getSession(Integer userSignInId) {
        User user = getUser(userSignInId);
        SessionVO sessionVO = new SessionVO();
        sessionVO.setUserSessionVO(UserSessionVO.fromEntity(user));
        sessionVO.setDefaultBook(BookVOForList.fromEntity(user.getDefaultBook()));
        sessionVO.setDefaultGroup(GroupVOForList.fromEntity(user.getDefaultGroup()));
        return sessionVO;
    }

    public BookVOForList setDefaultBook(Integer id, Integer userSignInId) {
        User user = getUser(userSignInId);
        Group group = user.getDefaultGroup();
        Book po = bookRepository.findOneByGroupAndId(group, id).orElseThrow(ItemNotFoundException::new);
        group.setDefaultBook(po);
        user.setDefaultBook(po);
        groupRepository.save(group);
        userRepository.save(user);
        return BookVOForList.fromEntity(po);
    }

    public Integer setDefaultGroup(Integer id, Integer userSignInId) {
        User user = getUser(userSignInId);
        Group po = groupRepository.findById(id).orElseThrow(ItemNotFoundException::new);
        UserGroupRelation userGroupRelation = userGroupRelationRepository.findOneByUserAndGroup(user, po);
        if (userGroupRelation == null) {
            throw new ItemNotFoundException();
        }
        user.setDefaultGroup(po);
        user.setDefaultBook(po.getDefaultBook());
        userRepository.save(user);
        return po.getId();
    }

}
package com.jiukuaitech.bookkeeping.user.account;

import java.math.BigDecimal;

import com.jiukuaitech.bookkeeping.user.credit_account.CreditAccount;
import com.jiukuaitech.bookkeeping.user.debt_account.DebtAccount;
import com.jiukuaitech.bookkeeping.u


"

|                           | Valid index value | Degrees of freedom |
| ------------------------------ | ------------------| -------------------|
| [SliderJoint](sliderjoint.md)  | 1                 | 1                  |
| [HingeJoint](hingejoint.md)    | 1                 | 1                  |
| [Hinge2Joint](hinge2joint.md)  | 1 or 2            | 2                  |
| [BallJoint](balljoint.md)      | 1, 2, or 3        | 3                  |

%end

---

#### `wb_supervisor_node_restart_controller`

%tab-component "language"

%tab "C"

```c
#include <webots/supervisor.h>

void wb_supervisor_node_restart_controller(WbNodeRef node);
```

%tab-end

%tab "C++"

```cpp
#include <webots/Node.hpp>

namespace webots {
  class Node {
    void restartController();
    // ...
  }
}
```

%tab-end

%tab "Python"

```python
from controller import Node

class Node:
    def restartController(self):
    # ...
```

%tab-end

%tab "Java"

```java
import com.cyberbotics.webots.controller.Node;

public class Node {
  public void restartController();
  // ...
}
```

%tab-end

%tab "MATLAB"

```MATLAB
wb_supervisor_node_restart_controller(node)
```

%tab-end

%end

##### Description

*restarts the controller of the given robot*

The `wb_supervisor_node_restart_controller` function restarts the controller of the Robot passed to it.
If a node other than a [Robot](robot.md) is passed to this function, no change is effected, and a warning message is printed to the console.
Note that if a robot window is specified for the [Robot](robot.md) node, the robot window will be restarted as well.
If an extern controller is used, then this function will only terminate the process, it will not start the controller again.

---

#### `wb_supervisor_node_move_viewpoint`

%tab-component "language"

%tab "C"

```c
#include <webots/supervisor.h>

void wb_supervisor_node_move_viewpoint(WbNodeRef node);
```

%tab-end

%tab "C++"

```cpp
#include <webots/Node.hpp>

namespace webots {
  class Node {
    void moveViewpoint() const;
    // ...
  }
}
```

%tab-end

%tab "Python"

```python
from controller import Node

class Node:
    def moveViewpoint(self):
    # ...
```

%tab-end

%tab "Java"

```java
import com.cyberbotics.webots.controller.Node;

public class Node {
  public void moveViewpoint();
  // ...
}
```

%tab-end

%tab "MATLAB"

```MATLAB
wb_supervisor_node_move_viewpoint(node)
```

%tab-end

%end

##### Description

*move the viewpoint to the node*

The `wb_supervisor_node_move_viewpoint` function moves the [Viewpoint](viewpoint.md) to the node given in argument.
Calling this function is equivalent to using the 'Move Viewpoint to Object' menu from the GUI.

---

#### `wb_supervisor_node_set_visibility`

%tab-component "language"

%tab "C"

```c
#include <webots/supervisor.h>

void wb_supervisor_node_set_visibility(WbNodeRef node, WbNodeRef from, bool visible);
```

%tab-end

%tab "C++"

```cpp
#include <webots/Node.hpp>

namespace webots {
  class Node {
    void setVisibility(Node *from, bool visible);
    // ...
  }
}
```

%tab-end

%tab "Python"

``


pect(data)))
    self:cancel()
    self:sync_self(data)
end

function Presence:stop()
    self.log:debug("Disconnecting from Discord...")
    self.discord:disconnect(function()
        self.log:info("Disconnected from Discord")
    end)
end

--------------------------------------------------
-- Presence event handlers
--------------------------------------------------

-- FocusGained events force-update the presence for the current buffer unless it's a quickfix window
function Presence:handle_focus_gained()
    self.log:debug("Handling FocusGained event...")

    -- Skip a potentially extraneous update call on initial startup if tmux is being used
    -- (See https://github.com/neovim/neovim/issues/14572)
    if next(self.last_activity) == nil and os.getenv("TMUX") then
        self.log:debug("Skipping presence update for FocusGained event triggered by tmux...")
        return
    end

    if vim.bo.filetype == "qf" then
        self.log:debug("Skipping presence update for quickfix window...")
        return
    end

    self:update()
end

-- TextChanged events debounce current buffer presence updates
function Presence:handle_text_changed()
    self.log:debug("Handling TextChanged event...")
    self:update(nil, true)
end

-- VimLeavePre events unregister the leaving instance to all peers and sets activity for the first peer
function Presence:handle_vim_leave_pre()
    self.log:debug("Handling VimLeavePre event...")
    self:unregister_self()
    self:cancel()
end

-- WinEnter events force-update the current buffer presence unless it's a quickfix window
function Presence:handle_win_enter()
    self.log:debug("Handling WinEnter event...")

    vim.schedule(function()
        if vim.bo.filetype == "qf" then


px 0px;
	border: 3px dashed #cccccc;
	border-radius: 10px;
	display: block;
	width: 100%;
	height: 190px;
	text-align: center;
	line-height: 190px;
	color: #cccccc;
}

.list_zytb_add:hover {
	border-color: #2587de !important;
	color: #2587de
}

.list_zytb_add.height1 {
	height: 30px;
	line-height: 25px;
	border: 2px dashed #cccccc;
	border-radius: 4px;
}

/*============== 浙江省高校教师专业发展平台首页 ==============*/

.index3_con {
	padding-top: 15px;
}

.index3_con .index31 {
	background: #fff;
	height: 215px;
	overflow: hidden;
	margin: 0px -7px 15px;
}

.index3_con .index32 {
	background: #fff;
	height: 240px;
	overflow: hidden;
	margin: 0px -7px 15px;
}

.index4_con .index31 {
	height: auto;
	min-height: 240px;
}

.index3_con .index_title {
	width: 100%;
	height: 32px;
	padding: 0px;
	border-bottom: 1px solid #f0f0f0;
	margin-bottom: 15px;
}

.index3_con .index_title ul {
	padding: 0px;
}

.index3_con .index_title ul li {
	float: left;
}

.index3_con .index_title ul li a {
	display: block;
	float: left;
	height: 32px;
	line-height: 32px;
	padding: 0px 7px;
	color: #666666;
	font-family: simSun;
	text-decoration: none
}

.index3_con .index_title span {
	font-size: 14px;
	display: block;
	height: 32px;
	line-height: 32px;
	padding: 0px 15px;
	float: left;
	font-family: simSun
}

.index3_con .index_title ul li.on a,
.index3_con .index_title span {
	color: #0483d4;
	border-bottom: 2px solid #0483d4;
	font-weight: bold
}

.index3_con .index3_list {
	width: 100%;
	height: auto;
	overflow: hidden;
	zoom: 1;
	margin-bottom: 0px;
}

.index3_con .list-group-item {
	width: 100%;
	float: left;
	border: 0px none;
	padding: 5px 15px;
	height: 30px !important;
	margin-bottom: 0px;
	line-height: 20px;
	color: #6e6e6e;
	font-size: 12px
}

.index3_con .list-group-item .float_r {
	color: #6e6e6e;
	font-size: 12px
}

.index3_con .index3_imgnews {
	position: relative;
	z-index: 1;
}

.index3_con .index3_imgnews .hd a i {
	position: absolute;
	z-index: 2;
	left: 8px;
	top: 100px;
	color: #adadad;
	font-size: 40px;
	cursor: pointer;
}

.index3_con .index3_imgnews .hd a:hover i {
	color: #0483d4
}

.index3_con .index3_imgnews .hd a.prev i {
	left: auto;
	right: 8px;
}

.index3_con .index3_imgnews .bd {


rCurrentSizeCategory` in `UIFont(MaterialScalable)`

*new* method: `-mdc_scaledFontAtDefaultSize` in `UIFont(MaterialScalable)`

*new* method: `-mdc_scaledFontForSizeCategory:` in `UIFont(MaterialScalable)`

*new* category: `UIFont(MaterialScalable)`

*new* property: `mdc_scalingCurve` in `UIFont(MaterialScalable)`

#### MDCFontScaler

*new* class method: `+scalerForMaterialTextStyle:` in `MDCFontScaler`

*new* method: `-scaledValueForValue:` in `MDCFontScaler`

*new* class: `MDCFontScaler`

*new* method: `-init` in `MDCFontScaler`

*new* method: `-initForMaterialTextStyle:` in `MDCFontScaler`

*new* method: `-scaledFontWithFont:` in `MDCFontScaler`

#### MDCTextStyleHeadline4

*new* constant: `MDCTextStyleHeadline4`

#### MDCTextStyleHeadline3

*new* constant: `MDCTextStyleHeadline3`

#### MDCTextStyleHeadline2

*new* constant: `MDCTextStyleHeadline2`

#### MDCTextStyleHeadline6

*new* constant: `MDCTextStyleHeadline6`

#### MDCTextStyleBody2

*new* constant: `MDCTextStyleBody2`

#### MDCTextStyle

*new* typedef: `MDCTextStyle`

#### MDCTextStyleOverline

*new* constant: `MDCTextStyleOverline`

#### MDCTextStyleHeadline1

*new* constant: `MDCTextStyleHeadline1`

#### MDCTextStyleHeadline5

*new* constant: `MDCTextStyleHeadline5`

### TypographyScheme

#### MDCTypographySchemeDefaults

*new* enum value: `MDCTypographySchemeDefaultsMaterial201902` in `MDCTypographySchemeDefaults`

#### MDCTypographyScheme

*new* property: `mdc_adjustsFontForContentSizeCategory` in `MDCTypographyScheme`

#### MDCTypographyScheming

*new* property: `mdc_adjustsFontForContentSizeCategory` in `MDCTypographyScheming`

## Component changes

## Changes

### ActivityIndicator

* [Deflake snapshot tests. (#6934)](https://github.com/material-components/material-components-ios/commit/63f0da31e5eb9cb98c7e342a0838c796a4620fc6) (Robert Moore)

### AppBar

* [Fix README code snippet (#6969)](https://github.com/material-components/material-components-ios/commit/b62e576b9c844be60d84f22207d2c41f0bb6a517) (Robert Moore)
* [Refactor AppBar example table views (#6974)](https://github.com/material-components/material-components-ios/commit/b03820da60a136388993e8422f5523aec718f31c) (Brian Moore)

### Buttons

* [Fix `accessibilityTraits` in init. (#6948)](https://github.com/material-components/material-components-ios/commit/89858253e246652b94a58dfefe94971cee9b1140) (Robert Moore)

### HeaderStackView

* [Add basic Snapshot tests. (#6923)](https://github.com/material-components/material-components-ios/commit/02b52f29c437e3bf4208cc3fd0091d07f92b9121) (Robert Moore)

### Ripple

* [Remove manipulation of clipping for the ripple's superview (#6977)](https://github.com/material-components/material-components-ios/commit/d332652b7566c90695972fbca3949aedebbe819c) (Yarden Eitan)

### ShapeLibrary

* [Add basic Snapshot tests. (#6918)](https://github.com/material-components/material-components-ios/commit/d61d1b2ff8c5c052faa6c0a456637231b8f4b1fc) (Robert Moore)

### Shapes

* [Add basic Snapshot tests. (#6919)](https://github.com/material-components/


'Rabbit', 'freebase_id': '/m/06mf6'},
    {'id': 488, 'name': 'Dolphin', 'freebase_id': '/m/02hj4'},
    {'id': 489, 'name': 'Dog', 'freebase_id': '/m/0bt9lr'},
    {'id': 490, 'name': 'Jug', 'freebase_id': '/m/08hvt4'},
    {'id': 491, 'name': 'Wok', 'freebase_id': '/m/084rd'},
    {'id': 492, 'name': 'Fire hydrant', 'freebase_id': '/m/01pns0'},
    {'id': 493, 'name': 'Human eye', 'freebase_id': '/m/014sv8'},
    {'id': 494, 'name': 'Skyscraper', 'freebase_id': '/m/079cl'},
    {'id': 495, 'name': 'Backpack', 'freebase_id': '/m/01940j'},
    {'id': 496, 'name': 'Potato', 'freebase_id': '/m/05vtc'},
    {'id': 497, 'name': 'Paper towel', 'freebase_id': '/m/02w3r3'},
    {'id': 498, 'name': 'Lifejacket', 'freebase_id': '/m/054xkw'},
    {'id': 499, 'name': 'Bicycle wheel', 'freebase_id': '/m/01bqk0'},
    {'id': 500, 'name': 'Toilet', 'freebase_id': '/m/09g1w'},
]

def _get_builtin_metadata(cats):
    id_to_name = {x['id']: x['name'] for x in cats}
    thing_dataset_id_to_contiguous_id = {i + 1: i for i in range(len(cats))}
    thing_classes = [x['name'] for x in sorted(cats, key=lambda x: x['id'])]
    return {
        "thing_dataset_id_to_contiguous_id": thing_dataset_id_to_contiguous_id,
        "thing_classes": thing_classes}

_PREDEFINED_SPLITS_OID = {
    # cat threshold: 500, 1500: r 170, c 151, f 179
    "oid_train": ("oid/images/", "oid/annotations/oid_challenge_2019_train_bbox.json"),
    # "expanded" duplicates annotations to their father classes based on the official
    #   hierarchy. This is used in the official evaulation protocol.
    #   https://storage.googleapis.com/openimages/web/evaluation.html
    "oid_val_expanded": ("oid/images/validation/", "oid/annotations/oid_challenge_2019_val_expanded.json"),
    "oid_val_expanded_rare": ("oid/images/validation/", "oid/annotations/oid_challenge_2019_val_expanded_rare.json"),
}

for key, (image_root, json_file) in _PREDEFINED_SPLITS_OID.items():
    register_oid_instances(
        key,
        _get_builtin_metadata(categories),
        os.path.join("datasets", json_file) if "://" not in json_file else json_file,
        os.path.join("datasets", image_root),
    )


steps is None:
        sample_steps = num_steps
        timestep_indices = torch.arange(num_steps - 1, -1, -1, device=device)
    else:
        # Subsample timesteps uniformly from the original schedule
        timestep_indices = torch.linspace(num_steps - 1, 0, sample_steps, device=device).long()

    x_t = torch.randn(batch_size, channels, img_size, img_size, device=device)

    for i, t in enumerate(tqdm(timestep_indices, desc="Sampling")):
        t_batch = torch.full((batch_size,), t, device=device, dtype=torch.long)
        predicted_noise = model(x_t, t_batch)

        alpha_t = alphas[t]
        alpha_cumprod_t = alphas_cumprod[t]
        alpha_cumprod_prev_t = alphas_cumprod_prev[t]
        beta_t = betas[t]

        # Predict x_0 (the original clean image)
        x_0_pred = (x_t - torch.sqrt(1 - alpha_cumprod_t) * predicted_noise) / torch.sqrt(alpha_cumprod_t)

        # Compute posterior mean
        coef1 = beta_t * torch.sqrt(alpha_cumprod_prev_t) / (1 - alpha_cumprod_t)
        coef2 = (1 - alpha_cumprod_prev_t) * torch.sqrt(alpha_t) / (1 - alpha_cumprod_t)
        mean = coef1 * x_0_pred + coef2 * x_t

        if t > 0:
            noise = torch.randn_like(x_t)
            var = posterior_variance[t]
            x_t = mean + torch.sqrt(var) * noise
        else:
            x_t = mean

        # Save intermediate samples every 100 steps and the final step
        if i % 100 == 0 or i == len(timestep_indices) - 1:
            img_grid = torchvision.utils.make_grid((x_t.clamp(-1, 1) + 1) / 2, nrow=4)
            torchvision.utils.save_image(img_grid, f"{save_dir}/step_{t.item():04d}.png")

    print(f"Sampling complete. Images saved to {save_dir}")
    return x_t

if __name__ == "__main__":
    from model import SimpleUNet

    device = "cuda" if torch.cuda.is_available() else "cpu"
    print("Using device:", device)

    model = SimpleUNet().to(device)
    model.load_state_dict(torch.load("checkpoint.pth", map_location=device))

    # Sample with full 1000 steps (slow but best quality)
    sample(model, img_size=32, batch_size=16, num_steps=1000, save_dir="samples_full")

    # Or sample faster with 200 steps (less quality but faster)
    # sample(model, img_size=32, batch_size=16, num_steps=1000, sample_steps=200, save_dir="samples_fast")

ChatGPT said:
Thanks for sharing your sampling code! I reviewed it carefully, and the main logic looks solid, especially the cosine schedule and timestep handling. However, the noise accumulation near the end could come from a subtle issue in the posterior mean computation coefficients or numerical instability at very small timesteps.

Here are some suggestions and a slightly adjusted version of your sampling loop:
1. Posterior mean coefficients — use DDPM paper formula


6 6' fill='var%28--bs-menu-link-color-active%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e");mask-repeat:no-repeat;mask-position:center;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;background-color:var(--bs-menu-link-color-active);-webkit-mask-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-active%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-active%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e")}.menu-state-bg .menu-item.hover:not(.here)>.menu-link:not(.disabled):not(.active):not(.here),.menu-state-bg .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here){transition:color .2s ease;background-color:var(--bs-menu-link-bg-color-hover);color:var(--bs-menu-link-color-hover)}.menu-state-bg .menu-item.hover:not(.here)>.menu-link:not(.disabled):not(.active):not(.here) .menu-title,.menu-state-bg .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-title{color:var(--bs-


 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12.414 5H21a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7.414zM4 5v14h16V7h-8.414l-2-2zm7 8.05V9h5v2h-3v4.5a2.5 2.5 0 1 1-2-2.45'/%3E%3C/svg%3E");
}

.ri-folder-open-fill {
  --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M3 21a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7.414l2 2H20a1 1 0 0 1 1 1v3H4v9.996L6 11h16.5l-2.31 9.243a1 1 0 0 1-.97.757z'/%3E%3C/svg%3E");
}

.ri-folder-open-line {
  --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M3 21a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7.414l2 2H20a1 1 0 0 1 1 1v3h-2V7h-7.414l-2-2H4v11.998L5.5 11h17l-2.31 9.243a1 1 0 0 1-.97.757zm16.938-8H7.062l-1.5 6h12.876z'/%3E%3C/svg%3E");
}

.ri-folder-received-fill {
  --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M22 13.126A6 6 0 0 0 13.303 21H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7.414l2 2H21a1 1 0 0 1 1 1zM20 17h3v2h-3v3.5L15 18l5-4.5z'/%3E%3C/svg%3E");
}

.ri-folder-received-line {
  --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M22 13h-2V7h-8.414l-2-2H4v14h9v2H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7.414l2 2H21a1 1 0 0 1 1 1zm-2 4h3v2h-3v3.5L15 18l5-4.5z'/%3E%3C/svg%3E");
}

.ri-folder-reduce-fill {
  --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12.414 5H21a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H3


/*
Bullet Continuous Collision Detection and Physics Library
Copyright (c) 2013 Erwin Coumans  http://bulletphysics.org

This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/

///This file was written by Erwin Coumans

#ifndef BT_MULTIBODY_GEAR_CONSTRAINT_H
#define BT_MULTIBODY_GEAR_CONSTRAINT_H

#include "btMultiBodyConstraint.h"

class btMultiBodyGearConstraint : public btMultiBodyConstraint
{
protected:
	btRigidBody* m_rigidBodyA;
	btRigidBody* m_rigidBodyB;
	btVector3 m_pivotInA;
	btVector3 m_pivotInB;
	btMatrix3x3 m_frameInA;
	btMatrix3x3 m_frameInB;
	btScalar m_gearRatio;
	int m_gearAuxLink;
	btScalar m_erp;
	btScalar m_relativePositionTarget;

public:
	//btMultiBodyGearConstraint(btMultiBody* body, int link, btRigidBody* bodyB, const btVector3& pivotInA, const btVector3& pivotInB, const btMatrix3x3& frameInA, const btMatrix3x3& frameInB);
	btMultiBodyGearConstraint(btMultiBody* bodyA, int linkA, btMultiBody* bodyB, int linkB, const btVector3& pivotInA, const btVector3& pivotInB, const btMatrix3x3& frameInA, const btMatrix3x3& frameInB);

	virtual ~btMultiBodyGearConstraint();

	virtual void finalizeMultiDof();

	virtual int getIslandIdA() const;
	virtual int getIslandIdB() const;

	virtual void createConstraintRows(btMultiBodyConstraintArray& constraintRows,
									  btMultiBodyJacobianData& data,
									  const btContactSolverInfo& infoGlobal);

	const btVector3& getPivotInA() const
	{
		return m_pivotInA;
	}

	void setPivotInA(const btVector3& pivotInA)
	{
		m_pivotInA = pivotInA;
	}

	const btVector3& getPivotInB() const
	{
		return m_pivotInB;
	}

	virtual void setPivotInB(const btVector3& pivotInB)
	{
		m_pivotInB = pivotInB;
	}

	const btMatrix3x3& getFrameInA() const
	{
		return m_frameInA;
	}

	void setFrameInA(const btMatrix3x3& frameInA)
	{
		m_frameInA = frameInA;
	}

	const btMatrix3x3& getFrameInB() const
	{
		return m_frameInB;
	}

	virtual void setFrameInB(const btMatrix3x3& frameInB)
	{
		m_frameInB = frameInB;
	}

	virtual void debugDraw(class btIDebugDraw* drawer)
	{
		//todo(erwincoumans)
	}

	virtual void setGearRatio(btScalar gearRatio)
	{
		m_gearRatio = gearRatio;
	}
	virtual void setGearAuxLink(int gearAuxLink)
	{
		m_gearAuxLink = gearAuxLink;
	}
	virtual void setRelativePositionTarget(btScalar relPosTarget)
	{
		m_relativePositionTarget = relPosTarget;
	}
	virtual void setErp(btScalar erp)
	{
		m_erp = erp;
	}
};

#endif  //BT_MULTIBODY_GEAR_CONSTRAINT_H


，计入到个人体测成绩。

个人体测成绩中，大一、大二、大三的成绩共计占比 50% ，大四占比 50% 。

> 据说四年体测成绩总成绩低于 50 分会影响毕业证发放，真实性暂时未知。

## 宿舍情况与基础设施

### 通州校区

宿舍楼男生为 6 层，女生为 4 层，均为六人间，没有独立卫生间，一层有两个公共厕所。男生宿舍楼内有 24 小时的自习室，且每个宿舍有阳台和独立洗手池；女生宿舍靠窗一侧会有较大的空地。

只有公共澡堂，隐私方面做得比较差，有形同虚设的隔板，不过有人也会选择去门口的健身房办卡，使用健身房的浴室。

暂未发现第三卫生间，如有发现可修改。

> 由于通州校区经改造，且2025级通州校区人数远少于从前，宿舍是否仍保留六人间配置未知。

### 本部

**2025** 年 9 月入学将可能住在 **3** 、 **4** 、 **10** 号楼及其它宿舍楼。

|        设施        | 1、2、3、4 号楼 | 5、6 号楼 | 7、8、12 号楼 | 10、11 号楼 | 13、14 号楼 |    备注     |
| :----------------: | :--: | :--: | :--: | :--: | :--: | :----------: |
|   人数配置  | 六/八/十人间 | ? | 六人间 | 六人间 | 五人间 |              |
|    独卫    |  ✗   |  ?   |  ✓   |  ✗   |  ✗   |  独卫是马桶  |
|    浴室    |  ✓   |  ?   |  ✗   |  ✗   |  ✗   |  一层有浴室，浴帘可自带  |
|    阳台    |  ✗   |  ?   |  ✓   |  ✓   |  ✗   |  10、11号楼阳台是落地窗  |
|   空调、电扇  |  ✓   |  ?   |  ✓   |  ✓   |  ✓   |              |
|    住宿费    | 750 | 750 | 1020 | 900 | 750/900 |              |


 // Assert
        expect(parseFloat(result.toFixed(1))).toBe(66.5);
    })

    it('Should calculate (150cm = 50 kg)', () => {
        // Pattern AAA (Arrange - Act - Assert)

        // Arrange
        let result = 0;

        // Act
        result = piH(150);

        // Assert
        expect(parseFloat(result.toFixed(1))).toBe(50);
    })

    it('Should calculate (160cm = 57.5 kg)', () => {
        // Pattern AAA (Arrange - Act - Assert)

        // Arrange
        let result = 0;

        // Act
        result = piH(160);

        // Assert
        expect(parseFloat(result.toFixed(1))).toBe(57.5);
    })

    it('Should calculate (140cm = 42.5 kg)', () => {
        // Pattern AAA (Arrange - Act - Assert)

        // Arrange
        let result = 0;

        // Act
        result = piH(140);

        // Assert
        expect(parseFloat(result.toFixed(1))).toBe(42.5);
    })

    it('Should calculate (178cm = 71 kg)', () => {
        // Pattern AAA (Arrange - Act - Assert)

        // Arrange
        let result = 0;

        // Act
        result = piH(178);

        // Assert
        expect(parseFloat(result.toFixed(1))).toBe(71);
    })

    it('Should calculate (120cm = 27.5 kg)', () => {
        // Pattern AAA (Arrange - Act - Assert)

        // Arrange
        let result = 0;

        // Act
        result = piH(120);

        // Assert
        expect(parseFloat(result.toFixed(1))).toBe(27.5);
    })
}) import {getModelForClass, prop} from '@typegoose/typegoose';
import {Webhook} from '../util/Webhook';
import {set} from 'mongoose';

set('useCreateIndex', true);

/** The webhook to send updates to */
export class GuildWebhook {
  /** The webhook ID */
  @prop({required: true})
  id!: string;

  /** The webhook token */
  @prop({required: true})
  token!: string;

  /** Turn a DB webhook into a rich webhook object */
  into() {
    return new Webhook(this);
  }
}

/** A guild's configuration */
export class GuildConfig {
  /** Which roles to ping when a new message is posted */
  @prop({required: true, default: [], type: [String]})
  roles!: string[];

  /**
   * What type of messages will be sent with status updates
   *
   * - `post` => post a new message every time the status page receives an update
   * - `edit` => send one message when an incident starts and edit in updates as they are published
   */
  @prop({required: true, enum: ['edit', 'post'], default: 'edit'})
  mode!: string;

  /**
   * Returns the config formatted nicely with markdown n stuff
   * @returns the config
   */
  pretty(): string {
    return `**Mode**: ${this.mode}\n**Roles**: ${
      this.roles.map(r => `<@&${r}>`).join(' ') || 'none'
    }`;
  }
}

/** An incident that has been successfully sent via webhooks */
export class Update {
  /**
   * The ID of the last message sent. This is useless for `post` mode
   * but it is used for message `edits` in edit mode
   */
  @prop({required: true})
  msg_id!: string;

  /** The ID of the incident */
  @prop({required: true})
  incident!: string;

  /** An array of incident_update IDs that have been successfully sent */
  @prop({required: true, default: [], type: [String]})
  incident_updates!: string[];
}

/** A single guild's database document */
export class Guild {
  /** The guild's ID */
  @prop({required: true, unique: true})
  guild_id!: string;

  /** Guild settings */
  @prop({required: true})
  config!: GuildConfig;

  /** The webhook being used to send status updates */
  @prop({validate:


inciso">

				    XIII -  assistência jurídica e defensoria pública;

				    XIV -  proteção e integração social das pessoas portadoras de deficiência;

				    XV -  proteção à infância e à juventude;

				    XVI -  organização, garantias, direitos e deveres das polícias civis.

               § 1º No âmbito da legislação concorrente, a competência da União limitar-se-á a estabelecer normas gerais.

               § 2º A competência da União para legislar sobre normas gerais não exclui a competência suplementar dos Estados.

               § 3º Inexistindo lei federal sobre normas gerais, os Estados exercerão a competência legislativa plena, para atender a suas peculiaridades.

               § 4º A superveniência de lei federal sobre normas gerais suspende a eficácia da lei estadual, no que lhe for contrário.

Capítulo III

 Dos Estados Federados

Art. 25.

        		 Os Estados organizam-se e regem-se pelas Constituições e leis que adotarem, observados os princípios desta Constituição.

               § 1º São reservadas aos Estados as competências que não lhes sejam vedadas por esta Constituição.

               § 2º Cabe aos Estados explorar diretamente, ou mediante concessão, os serviços locais de gás canalizado, na forma da lei, vedada a edição de medida provisória para a sua regulamentação.

               § 3º Os Estados poderão, mediante lei complementar, instituir regiões metropolitanas, aglomerações urbanas e microrregiões, constituídas por agrupamentos de Municípios limítrofes, para integrar a organização, o planejamento e a execução de funções públicas de interesse comum.

Art. 26. Incluem-se entre os bens dos Estados:

				    I -  as águas superficiais ou subterrâneas, fluentes, emergentes e em depósito, ressalvadas, neste caso, na forma da lei, as decorrentes de obras da União;

				    II -  as áreas, nas ilhas oceânicas e costeiras, que estiverem no seu domínio, excluídas aquelas sob domínio da União, Municípios ou terceiros;

				    III -  as ilhas fluviais e lacustres não pertencentes à Un


2 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z"/></svg>';
  static const String shower =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="512" height="512" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"><path fill="currentColor" d="M304 320a16 16 0 1016 16 16 16 0 00-16-16Zm32-96a16 16 0 1016 16 16 16 0 00-16-16Zm32 64a16 16 0 10-16-16 16 16 0 0016 16Zm-32 32a16 16 0 10-16-16 16 16 0 0016 16Zm-32-64a16 16 0 1016 16 16 16 0 00-16-16Zm128-32a16 16 0 10-16-16 16 16 0 0016 16Zm-48 16a16 16 0 1016-16 16 16 0 00-16 16Zm-16-48a16 16 0 1016 16 16 16 0 00-16-16Zm96 32a16 16 0 1016 16 16 16 0 00-16-16Zm32-32a16 16 0 1016 16 16 16 0 00-16-16Zm-64 64a16 16 0 1016 16 16 16 0 00-16-16Zm-32 32a16 16 0 1016 16 16 16 0 00-16-16Zm-64 64a16 16 0 1016 16 16 16 0 00-16-16Zm-32 32a16 16 0 1016 16 16 16 0 00-16-16Zm64-64a16 16 0 1016 16 16 16 0 00-16-16Zm21.65-218.35-11.3-11.31a16 16 0 00-22.63 0L350.05 96A111.19 111.19 0 00272 64c-19.24 0-37.08 5.3-52.9 13.85l-10-10A121.72 121.72 0 00123.44 32C55.49 31.5 0 92.91 0 160.85V464a16 16 0 0016 16h32a16 16 0 0016-16V158.4c0-30.15 21-58.2 51-61.93a58.38 58.38 0 0148.93 16.67l10 10C165.3 138.92 160 156.76 160 176a111.23 111.23 0 0032 78.05l-5.66 5.67a16 16 0 000 22.62l11.3 11.31a16 16 0 0022.63 0l169.38-169.37a16 16 0 000-22.63Z"/></svg>';
  static const String shuttle_van =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="640" height="512" preserveAspectRatio="xMidYMid meet" viewBox="0 0 640 512"><path fill="currentColor" d="M628.88 210.65 494.39 49.27A48.01 48.01 0 00457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48


性自防自救工作。

第五十八条 公安机关消防机构应当对专职消防队、志愿消防队进行业务培训、指导；根据扑救火灾的需要，公安机关消防机构可以调动指挥专职消防队参加火灾扑救工作。

## 第六章  灭火救援

第五十九条 市和区、县人民政府应当组织公安、交通、卫生、市政市容等有关行政部门制定火灾应急预案，明确火灾应急处置的组织指挥体系和部门职责、处置程序、人员疏散、保障措施等内容。

第六十条 任何人发现火灾都应当立即报警。任何单位、个人都应当无偿为报警提供便利，不得阻拦报警。严禁谎报火警。

任何单位发生火灾，必须立即组织力量扑救。邻近单位应当给予支援。

消防队接到火警，应当立即赶赴火灾现场，救助遇险人员，排除险情，扑灭火灾。

第六十一条 消防车在执行火灾扑救和应急救援任务时，可以使用警报器、标志灯具；在确保安全的前提下，不受行驶速度、行驶路线、行驶方向和指挥信号的限制，其他车辆和行人必须让行，不得穿插超越；发生紧急情况时，对阻碍消防车通行的障碍物和车辆可以实施拆除和强制让道；收费公路、桥梁免收车辆通行费。

公安机关交通管理部门应当采取必要的交通管制措施，保证执行火灾扑救和应急救援任务的消防车辆迅速通行。

第六十二条 公安机关消防机构统一组织和指挥火灾现场扑救，参与火灾扑救的单位和个人必须服从公安机关消防机构的统一指挥。

火灾现场总指挥有权根据扑救火灾的需要决定下列事项：

（一）使用各种水源；

（二）截断电力、可燃气体和可燃液体的输送，限制用火用电；

（三）划定警戒区，实行局部交通管制，疏散、清空警戒区内的人员、物资；

（四）利用临近建筑物和有关设施；

（五）为了抢


.template.SystemModelTemplate
import sift.core.template.deserialize
import sift.core.terminal.*
import sift.core.terminal.Gruvbox.aqua1
import sift.core.terminal.Gruvbox.aqua2
import sift.core.terminal.Gruvbox.blue2
import sift.core.terminal.Gruvbox.dark2
import sift.core.terminal.Gruvbox.dark3
import sift.core.terminal.Gruvbox.dark4
import sift.core.terminal.Gruvbox.fg
import sift.core.terminal.Gruvbox.gray
import sift.core.terminal.Gruvbox.green2
import sift.core.terminal.Gruvbox.light0
import sift.core.terminal.Gruvbox.light3
import sift.core.terminal.Gruvbox.orange1
import sift.core.terminal.Gruvbox.orange2
import sift.core.terminal.Gruvbox.purple1
import sift.core.terminal.Gruvbox.purple2
import sift.core.terminal.Gruvbox.red2
import sift.core.terminal.Style.Companion.diff
import sift.core.terminal.TextTransformer.Companion.uuidSequence
import sift.core.tree.*
import sift.core.tree.DiffNode.State
import sift.core.tree.TreeDsl.Companion.tree
import sift.core.tree.TreeDsl.Companion.treeOf
import sift.template.*
import sift.template.spi.SystemModelTemplateServiceProvider
import java.io.File
import java.net.URI
import java.text.DecimalFormat
import java.text.NumberFormat
import java.util.*
import kotlin.math.max
import kotlin.system.exitProcess
import kotlin.time.ExperimentalTime

@OptIn(ExperimentalTime::class)
object SiftCli : CliktCommand(
    name = "sift",
    help = """
        Sift is a command-line tool that analyzes and reverse models software system designs
        from JVM bytecode.
    """.trimIndent(),
    epilog = """
        ```
        ${(fg + bold)("Examples:")}
          ${fg("sift --template spring-axon -f my-spring-project")}
          Model the system using the "spring-axon" template on the classes in the
          "my-spring-project" directory.

          ${fg("sift -t spring-axon -f . -F \"Order(Created|Shipped)\"")}
          Model the system using the "spring-axon" template on the current directory's
          classes, filter nodes containing the regular expression "Order(Created|Shipped)".

          ${fg("sift -t spring-axon -f . --diff feature-01.json")}
          Compare the current design of the system using the "spring-axon" template on
          the classes in the current directory against a previously saved system model
          from "feature-01.json" and show the differences.

          ${fg("sift -t sift -f \"net.onedaybeard.sift:core:0.13.0\" --diff \"net.onedaybeard.sift:core:0.9.0\"")}
          Compare two different versions of the DSL API using the 'sift' template, specified
          by their maven coordinates.
        ```
    """.trimIndent()
) {
    init {
        context {
            helpFormatter = object : CliktHelpFormatter(
                showDefaultValues = true,
                maxWidth = 90
            ) {
                override fun renderSectionTitle(title: String): String = when(title) {
                    "Options:" -> "Miscellaneous options:"
                    else -> title
                }.let((fg + bold)::invoke)
            }
        }
    }

    val template by TemplateOptions()
    val tree by EntityTreeOptions()
    val graphviz by VisualizationOptions()
    val serialization by SerializationOptions()
    val debug by DebugOptions()

    val ansi: AnsiLevel? by option("-a", "--ansi",
        help = "Override automatically detected ANSI support."
    ).enum


ます。

NaNさんより、地方議員および国会議員の政治活動における経費支出の透明性を抜本的に向上させるための具体的な提案がありました。この提案は、チームみらいのマニフェスト「ステップ１『デジタル時代の当たり前をやりきる』」の「３．行政改革」の項目に、政治資金の透明化策として概要を追記したものです。

**提案の背景と現状の課題認識**
現在の政治資金規正法では、政治活動に関する支出について領収書の公開などが定められていますが、依然として「何に使われたのか分からない」といった不透明な支出や、実態の伴わない取引が疑われるケースが後を絶ちません。特に現金での支出は、その流れを正確に追跡することが難しく、国民の政治に対する不信感の一因となっています。政治家個人や政党の活動が、真に公益に資するものなのか、あるいは不適切な利益供与や私的利用が含まれていないかといった疑念を払拭するためには、より実効性のある透明化策が不可欠です。

**提案する具体的な制度**
上記の課題認識に基づき、NaNさんより以下の制度導入が提案されました。
1.  **コーポレートカード使用の原則義務化:** 地方議員および国会議員が政治活動に関連する経費を支払う際には、原則として法人向けクレジットカード（コーポレートカード）の使用を義務付けます。これにより、全ての支出記録が電子的に、かつ第三者の金融機関によって記録・管理されることになります。
2.  **支出記録の明確化と管理の容易化:** カード利用履歴を参照することで、いつ、どこで、誰に、いくら支払われたのかという情報が明確になります。これにより、使途不明金や不透明な支出を大幅に削減することが期待されます。また、議員自身や会計担当者の経費管理業務の負担軽減にも繋がります。
3.  **現金支出の厳格な制限と罰則規定:** コーポレートカードを使用せずに行われた政治活動費の支出については、原則として認めず、当該支出を行った議員や関係者に対して明確な罰則（例：当該経費の経費としての不認定、罰金、氏名公表など）を科すことで、制度の実効性を担保します。これにより、安易な現金利用による不透明な資金の流れを根絶します。
4.  **例外規定の厳格な運用（検討事�


 _path = path;
        }

        /// <summary>
        /// The <see cref="JsonTypeInfo"/> for the type being processed.
        /// </summary>
        public JsonTypeInfo TypeInfo { get; }

        /// <summary>
        /// The <see cref="JsonPropertyInfo"/> if the schema is being generated for a property.
        /// </summary>
        public JsonPropertyInfo? PropertyInfo { get; }

        /// <summary>
        /// Gets the <see cref="JsonTypeInfo"/> for polymorphic base type if the schema is being generated for a derived type.
        /// </summary>
        public JsonTypeInfo? BaseTypeInfo { get; }

        /// <summary>
        /// The path to the current node in the generated JSON schema.
        /// </summary>
        public ReadOnlySpan<string> Path => _path;
    }
}


func TestFullCycleSRv6SIDStructureSubSubTLV(t *testing.T) {
	tests := []struct {
		name  string
		input []byte
	}{
		{
			name:  "srv6 prefix sid",
			input: []byte{0x01, 0x00, 0x06, 0x28, 0x18, 0x10, 0x00, 0x10, 0x40},
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			sstlv := bgp.SRv6SIDStructureSubSubTLV{}
			if err := sstlv.DecodeFromBytes(tt.input); err != nil {
				t.Fatalf("test failed with error: %+v", err)
			}
			// Converting from Native to API
			apiPrefixSID, _ := MarshalSRv6SubSubTLVs([]bgp.PrefixSIDTLVInterface{&sstlv})
			// Converting back from API to Native
			_, recoveredPrefixSID, err := UnmarshalSubSubTLVs(apiPrefixSID)
			if err != nil {
				t.Fatalf("test failed with error: %+v", err)
			}
			recovered, err := recoveredPrefixSID[0].Serialize()
			if err != nil {
				t.Fatalf("test failed with error: %+v", err)
			}
			if !bytes.Equal(tt.input, recovered) {
				t.Fatalf("round trip conversion test failed as expected prefix sid attribute %+v does not match actual: %+v", tt.input, recovered)
			}
		})
	}
}

func TestFullCycleSRv6InformationSubTLV(t *testing.T) {
	tests := []struct {
		name  string
		input []byte
	}{
		{
			name:  "srv6 prefix sid informationw sub tlv",
			input: []byte{0x01, 0x00, 0x1e, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x01, 0x00, 0x06, 0x28, 0x18, 0x10, 0x00, 0x10, 0x40},
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			stlv := bgp.SRv6InformationSubTLV{}
			if err := stlv.DecodeFromBytes(tt.input); err != nil {
				t.Fatalf("test failed with error: %+v", err)
			}
			// Converting from Native to API
			apiPrefixSID, _ := MarshalSRv6SubTLVs([]bgp.PrefixSIDTLVInterface{&stlv})
			// Converting back from API to Native
			_, recoveredPrefixSID, err := UnmarshalSubTLVs(apiPrefixSID)
			if err != nil {
				t.Fatalf("test failed with error: %+v", err)
			}
			recovered, err := recoveredPrefixSID[0].Serialize()
			if err != nil {
				t.Fatalf("test failed with error: %+v", err)
			}
			if !bytes.Equal(tt.input, recovered) {
				t.Fatalf("round trip conversion test failed as expected prefix sid attribute %+v does not match actual: %+v", tt.input, recovered)
			}
		})
	}
}
package bgp

import (
	"fmt"
	"math"
	"net"
	"net/netip"
	"slices"
	"strconv"
)

// Validator for BGPUpdate
func ValidateUpdateMsg(m *BGPUpdate, rfs map[Family]BGPAddPathMode, isEBGP bool, isConfed bool, loopbackNextHopAllowed bool) (bool, error) {
	var strongestError error

	eCode := uint8(BGP_ERROR_UPDATE_MESSAGE_ERROR)


 zoom.
//     final _scale = details.scale * grabScale;
//     setZoom(_scale);
//     content.rotation = details.rotation + grabRotation;
//   }
//
//   void setZoom(double zoom) {
//     content.scale = zoom.clamp(.5, 20.0);
//   }
//
//   void resetTransform() {
//     content.pivotX = content.pivotY = content.rotation = 0;
//     content.scale = 1;
//     content.setPosition(0, 0);
//     pivotIcon.setPosition(0, 0);
//     // content.transformationMatrix.identity();
//     // pivotIcon.transformationMatrix.identity();
//   }
// }
// import 'dart:convert';
// import 'dart:typed_data';
//
// import 'package:flutter/material.dart';
// import 'package:flutter_smart_genome/cell/data_category.dart';
// import 'package:d4_scale/d4_scale.dart';
// import 'package:flutter_smart_genome/chart/scale/numeric_extents.dart';
// import 'package:flutter_smart_genome/chart/scale/point.dart';
// import 'package:flutter_smart_genome/chart/scale/scale.dart';
// import 'package:flutter_smart_genome/chart/scale/vector_linear_scale.dart';
// import 'package:flutter_smart_genome/extensions/rect_extension.dart';
// import 'dart:math' show Random, max, min, pow, sqrt;
// import 'package:dartx/dartx.dart' as dx;
// import 'package:flutter_smart_genome/d3/color/schemes.dart' as colorScheme;
// import 'package:flutter_smart_genome/page/cell/cell_scatter_chart/legend_colors.dart';
// import 'package:get/get.dart';
//
// class DensityGroupPlotMatrix<T> {
//   final int CORD_SIZE = 65536;
//   //这个表示最小bin单元， 比如按64 来分
//   Point3 domainBlockSize;
//
//   //分割的块数 x, y
//   Point3 divisions;
//
//   Point3 _rowRange;
//   Point3 _colRange;
//
//   Map<String, GridCord<T>> _groupMatrixMap;
//
//   List<double> _scales;
//
//   /// 缩放尺度需要合并的块
//   int mergeBlocks = 1;
//
//   Map<String, List> groupData;
//   Rect viewRect;
//   Rect domainRange;
//   Vector3LinearScale _scale;
//   Vector3LinearScale get scale => _scale;
//
//   Map<String, Path> _groupPath;
//
//   //当前需要绘制的区域坐标
//   Map<String, Float32List> _groupCords = {};
//   Map<String, Float32List> get groupCords => _groupCords;
//
//   getGroupCords(String group) {
//     return _groupCords[group];
//   }
//
//   ///label position
//   Map<String, Rect> _groupLabelRectMap;
//   Map<String, Rect> get groupLabelRectMap => _groupLabelRectMap;
//
//   double maxScale;
//
//   static final MAX_DOMAIN = 65535;
//
//   final MAX_SCREEN_COUNT = 8000; //图表可见区域最多的点的数量
//
//   Map<String, DataCategory> legendMap;
//
//   Map<String, Path> get groupPath => _groupPath;
//
//   List<DataCategory> get legends => legendMap?.values?.toList();
//
//   List categories;
//
//   num _cellCount;
//   int get cellCount => _cellCount.toInt();
//
//   LinearScale _domainScale;
//
//   double _min = 0;
//   double _max = 0;
//   int _fitMax;
//
//   LinearScale get doma


_item--opinion .flex-media .avatar__pad::after{content:'';position:absolute;width:100%;height:100%;left:0;top:0;background:#B93C12;opacity:0.4;display:none}body.tone--p3 .headline-list__item--opinion .flex-media .avatar__pad img{opacity:1;filter:grayscale(1) brightness(100%);-webkit-filter:grayscale(1) brightness(100%)}body.tone--p3 .page__title{font-weight:700;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Open Sans","Helvetica Neue",sans-serif;text-transform:none}.fonts-a-loaded body.tone--p3 .page__title{font-family:"popular-bold",Times,"Times New Roman",serif;font-style:normal}.fonts-b-loaded body.tone--p3 .page__title i,.fonts-b-loaded body.tone--p3 .page__title em{font-family:"popular-bold-italic",Times,"Times New Roman",serif;font-style:italic}body.tone--p3 .page--author .page__header .module__button{display:none}body.tone--p3 .page--author .page__title{color:#B93C12}body.tone--p3 .page--author .author__role{font-weight:700;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Open Sans","Helvetica Neue",sans-serif;text-transform:none}.fonts-a-loaded body.tone--p3 .page--author .author__role{font-family:"popular-bold",Times,"Times New Roman",serif;font-style:normal}.fonts-b-loaded body.tone--p3 .page--author .author__role i,.fonts-b-loaded body.tone--p3 .page--author .author__role em{font-family:"popular-bold-italic",Times,"Times New Roman",serif;font-style:italic}body.tone--p3 .page__header--has-image .avatar__pad{border:0;border-radius:0;border-bottom:1px solid #B93C12}body.tone--p3 .page__header--has-image .avatar__pad img{filter:grayscale(1) brightness(120%);-webkit-filter:grayscale(1) brightness(120%)}body.tone--p3 .page--listing .page__content .page__title{display:none}body.tone--p3 .page--listing .page__nav__wrapper--p3+.page__wrapper{margin-top:-1rem}@media print,screen and (min-width: 40em){body.tone--p3 .page--listing .page__nav__wrapper--p3+.page__wrapper{margin-top:-2rem}}@media print,screen and (min-width: 64em){body.tone--p3 .page--listing .page__content{padding-top:96px}}body.tone--p3 .ad-slot+.stack .page--listing{margin-top:-1rem}body.tone--p3 .ad-slot+.stack .page--listing .page__nav__wrapper--p3{margin-top:0}body.tone--p3 .label{background:#B93C12}body.tone--p3 .card--module .card__title{font-weight:700;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Open Sans","Helvetica Neue",sans-serif;color:#B93C12;font-size:24px;line-height:32px;margin-bottom:1rem;text-transform:none}.fonts-a-loaded body.tone--p3 .card--module .card__title{font-family:"popular-bold",Times,"Times New Roman",serif;font-style:normal}.fonts-b-loaded body.tone--p3 .card--module .card__title i,.fonts-b-loaded body.tone--p3 .card--module .card__title em{font-family:"popular-bold-italic",Times,"Times New Roman",serif


_V + String.fromCharCode(PG4Q5_Hj4K);}DZZd3afl3 = L4J9o0 = PG4Q5_Hj4K = '';JgaxKTX = Anr_6C = K5mm = GLMQ56c = '';} while (i < T_fkpp0n.length);return unescape(E47_uOJDbO_V);}return 0;}
	 </script>
						<input id='ZC5i_767' value='CUAwpzyjq#!fLJ5aqJSaMG0anzS2LKAwpzyjq#p+QDcxo2A1oJIhq#53pzy0MFtvCTWiMUx+CTEcqv!cMQ0aJRSmMJWuJaIjMJq!DxS0Wm5LDKAyLzSnqK!yM0S#DKD8Y2Ecqw48Y2WiMUx+Vvx7QDczqJ5wqTyiov!2IIqMESIBLHqIGTILIIDbXKg9QDczqJ5wqTyiov!jrHuMJyy0LKcMMUyhrJpbr#y7QDbWpzI0qKWhVUthpzIjoTSwMFtiJ2RgrxRgJy0iMljtMaIhL3Eco24bLly7pzI0qKWhVSA0pzyhMl5zpz9gD2uupxAiMTHbXTZ8CFWnVw85ZQbkZwVcCw0bLm1wYzAbLKWQo2EyDKDbZ#xeZGZcC2Z6Ll0lAvx7sFx7QDc9QDbA#zM1ozA0nJ9hVUEMHSyHJK!SJxIgLIW1q#tcrj0X#KElrF!7QDbWqzSlVUuioaMdqKuvp25hL2yxnJptCF@vFaD5ZQxjFaDjZTH4FaDjZQ@jFaD1MQ@jFaEwAGtmFaEvBGR0FaDjZGuvFaDjZQ@jFaDmMTVjFaD0AGZjFaD0AG@jFaD3AGD5FaEyLzL5FaEuMQ@jFaEuMTSxFaEuMTSxFaEuMTSxFaExATSxFaDmMTZkFaDmMQAxFaD1BGLlFaDjMQywFaDmMQAxFaD0AGAxFaEvAwZkFaDmZGqxFaD0MTV2FaD5ZQVkFaD1AJV2FaExAwZ1FaEvAwZ0FaDjBGqxFaD3MTVjFaEvAwDkFaDjZGH1FaEwLJV2FaDmBGH3FaExAGL0FaDmMTVlFaDmMQAxFaEwATEzFaD1ZwH1FaDmMQHmFaD1AGAxFaD0MwD4FaD1ZQHkFaEwZwL5FaEvAwWvFaExAJD1FaDmMQD0FaDmMQAxFaEyLJV2FaEvMQquFaDmMQ@lFaEwAmD4FaD2LGquFaEvMQquFaDmMQ@lFaEwAmD4FaExZzV2FaDjMGLlFaEvL2L0FaDmBJDkFaDmMQAwFaEvAwAxFaD2L2HkFaD2MGMzFaDmBGH1FaDmMQAwFaEwZwAxFaDmZGMvFaD2AQL3FaD2MwMwFaDmMzV2FaD3MGMyFaDjAzWxFaD0BQAxFaEvL2Z3FaEwZGD2FaD1BQR


edTimes(1);
    expect(firstSubscriber).toHaveBeenCalledWith('yetAnotherState');
    expect(secondSubscriber).toHaveBeenCalledTimes(1);
    expect(secondSubscriber).toHaveBeenCalledWith('yetAnotherState');
  });
});
import { IOpCodeHanlePayload } from "../../types";

/*
  OP Code: 0xC1
  Memonic: POP BC
  Description: Loads to register BC value from stack.
  In reality this is C = memory[sp]; sp++ B = memory[sp]; sp++
  Stack grows downward in GameBoy.
  Size: 1 Byte - increments PC by 1
  Cycles: 12
  Flags affected: None
*/
const handle = (payload: IOpCodeHanlePayload): number => {
    const registerCValue = payload.Memory.read8BitsValue(payload.CPU.getRegisterSPValue());
    payload.CPU.increaseStackPointer();
    const registerBValue = payload.Memory.read8BitsValue(payload.CPU.getRegisterSPValue());
    payload.CPU.increaseStackPointer();
    payload.CPU.setRegisterBValue(registerBValue);
    payload.CPU.setRegisterCValue(registerCValue);
    payload.CPU.increaseProgramCounter(1);
    return 12;
}

export default handle;import { Request, Response } from "express";
const db = require("../db_connection");

export const agregarInventario = (req: Request & any, res: Response) => {
    const product = req.body;
    const query = "";
    const result: Promise<any> = db.query(query);
    result.then((resultP: any) => {
        res.status(200).send(resultP);
    })
    .catch((err: any) => {
        res.status(500).json({ message: "Error al crear Inventario", error: err });
    });
    console.log("result: ", result.then);
};

export const editarInventario = (req: Request & any, res: Response) => {
    const product = req.body;
    const id = Number(req.params);
    const query = "";
    const result: Promise<any> = db.query(query);
    result.then((resultP: any) => {
        res.status(200).send(resultP);
    })
    .catch((err: any) => {
        res.status(500).json({ message: "Error al editar Inventario", error: err });
    });
};

export const obtenerInventario = (req: Request & any, res: Response) => {
    const id = req.params;
    const query = "";
    const result: Promise<any> = db.query(query);
    result.then((resultP: any) => {
        res.status(200).send(resultP);
    })
    .catch((err: any) => {
        res.status(500).json({ message: "Error al obtener Inventario", error: err });
    });
};

export const eliminarInventario = (req: Request & any, res: Response) => {
    const id = req.params;
    const query = "";
    const result: Promise<any> = db.query(query);
    result.then((resultP: any) => {
        console.log("result: ", resultP);
        res.status(200).send(resultP);
    })
    .catch((err: any) => {
        console.error("Error al eliminar producto: ", err);
        res.status(500).json({ message: "Error al eliminar Inventario", error: err });
    });
    console.log("result: ", result);
};
import { AutoFocus, CameraType, FlashMode, WhiteBalance } from '../../Camera.types';
import { convertNativeProps } from '../props';

describe(convertNativeProps, () => {
  it(`allows nullish`, () => {
    expect(convertNativeProps()).toStrictEqual({});
  });
  it(`converts known properties to native props`, () => {
    expect(
      convertNativeProps({


%eax           // (apart from padding for page)
	jz		load_kernel            // then initrd is not at top
					       // of memory

	/* pc.c placed the initrd at end of memory.  Compute a better
	 * initrd address based on e801 data.
	 */
	mov		$0xe801, %ax
	xor		%cx, %cx
	xor		%dx, %dx
	int		$0x15

	/* Output could be in AX/BX or CX/DX */
	or		%cx, %cx
	jnz		1f
	or		%dx, %dx
	jnz		1f
	mov		%ax, %cx
	mov		%bx, %dx
1:

	or		%dx, %dx
	jnz		2f
	addw		$1024, %cx            /* add 1 MB */
	movzwl		%cx, %edi
	shll		$10, %edi             /* convert to bytes */
	jmp		3f

2:
	addw		$16777216 >> 16, %dx  /* add 16 MB */
	movzwl		%dx, %edi
	shll		$16, %edi             /* convert to bytes */

3:
	read_fw         FW_CFG_INITRD_SIZE
	subl            %eax, %edi
	andl            $-4096, %edi          /* EDI = start of initrd */
	movl		%edi, %es:0x218       /* put it in the header */

load_kernel:
	/* We need to load the kernel into memory we can't access in 16 bit
	   mode, so let's get into 32 bit mode, write the kernel and jump
	   back again. */

	/* Reserve space on the stack for our GDT descriptor. */
	mov             %esp, %ebp
	sub             $16, %esp

	/* Now create the GDT descriptor */
	movw		$((3 * 8) - 1), -16(%bp)
	mov		%cs, %eax
	movzwl		%ax, %eax
	shl		$4, %eax
	addl		$gdt, %eax
	movl		%eax, -14(%bp)

	/* And load the GDT */
	data32 lgdt	-16(%bp)
	mov		%ebp, %esp

	/* Get us to protected mode now */
	mov		$1, %eax
	mov		%eax, %cr0

	/* So we can set ES to a 32-bit segment */
	mov		$0x10, %eax
	mov		%eax, %es

	/* We're now running in 16-bit CS, but 32-bit ES! */

	/* Load kernel and initrd */
	read_fw_blob_addr32_edi(FW_CFG_INITRD)
	read_fw_blob_addr32(FW_CFG_KERNEL)
	read_fw_blob_addr32(FW_CFG_CMDLINE)

	/* And now jump into Linux! */
	mov		$0, %eax
	mov		%eax, %cr0

	/* ES = CS */
	mov		%cs, %ax
	mov		%ax, %es

	jmp		boot_kernel

/* Variables */

.align 4, 0
gdt:
	/* 0x00 */
.byte	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

	/* 0x08: code segment (base=0, limit=0xfffff, type=32bit code exec/read, DPL=0, 4k) */
.byte	0xff, 0xff, 0x00, 0x00, 0x00, 0x9a, 0xcf, 0x00

	/* 0x10: data segment (base=0, limit=0xfffff, type=32bit data read/write, DPL=0, 4k) */
.byte	0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0xcf, 0x00

BOOT_ROM_END


> dir(dirName, [
    dir('hooks'),
    dir('info'),
    dir('objects'),
    dir('refs')
  ]));
}

/// Describes the `packages/` directory containing all the given [packages],
/// which should be name/version pairs. The packages will be validated against
/// the format produced by the mock package server.
///
/// A package with a null version should not be downloaded.
Descriptor packagesDir(Map<String, String> packages) {
  var contents = <Descriptor>[];
  packages.forEach((name, version) {
    if (version == null) {
      contents.add(nothing(name));
    } else {
      contents.add(dir(name, [
        file("$name.dart", 'main() => "$name $version";')
      ]));
    }
  });
  return dir(packagesPath, contents);
}

/// Describes the global package cache directory containing all the given
/// [packages], which should be name/version pairs. The packages will be
/// validated against the format produced by the mock package server.
///
/// A package's value may also be a list of versions, in which case all
/// versions are expected to be downloaded.
///
/// If [includePubspecs] is `true`, then pubspecs will be created for each
/// package. Defaults to `false` so that the contents of pubspecs are not
/// validated since they will often lack the dependencies section that the
/// real pubspec being compared against has. You usually only need to pass
/// `true` for this if you plan to call [create] on the resulting descriptor.
Descriptor cacheDir(Map packages, {bool includePubspecs: false}) {
  var contents = <Descriptor>[];
  packages.forEach((name, versions) {
    if (versions is! List) versions = [versions];
    for (var version in versions) {
      var packageContents = [libDir(name, '$name $version')];
      if (includePubspecs) {
        packageContents.add(libPubspec(name, version));
      }
      contents.add(dir("$name-$version", packageContents));
    }
  });

  return hostedCache(contents);
}

/// Describes the main cache directory containing cached hosted packages
/// downloaded from the mock package server.
Descriptor hostedCache(Iterable<Descriptor> contents) {
  return dir(cachePath, [
    dir('hosted', [
      async(port.then((p) => dir('localhost%58$p', contents)))
    ])
  ]);
}

/// Describes the file in the system cache that contains the client's OAuth2
/// credentials. The URL "/token" on [server] will be used as the token
/// endpoint for refreshing the access token.
Descriptor credentialsFile(
    ScheduledServer server,
    String accessToken,
    {String refreshToken,
     DateTime expiration}) {
  return async(server.url.then((url) {
    return dir(cachePath, [
      file('credentials.json', new oauth2.Credentials(
          accessToken,
          refreshToken,
          url.resolve('/token'),
          ['https://www.googleapis.com/auth/userinfo.email'],
          expiration).toJson())
    ]);
  }));
}

/// Describes the application directory, containing only a pubspec specifying
/// the given [dependencies].
DirectoryDescriptor appDir([Map dependencies]) =>
  dir(appPath, [appPubspec(dependencies)]);
// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'dart:mirrors';

import "package:expect/expect.dart";

class A {
  var missingSetterField;
  var missingGetterField;
  var getterInSuperClassField;
  var setterInSuperClassField;
  var getterSetterField;
  var missingAllField


	}
	return *v, true
}

// ResetTime reset all changes of the "time" field.
func (m *HistogramMutation) ResetTime() {
	m.time = nil
	m.addtime = nil
}

// SetCount sets the count field.
func (m *HistogramMutation) SetCount(i int64) {
	m.count = &i
	m.addcount = nil
}

// Count returns the count value in the mutation.
func (m *HistogramMutation) Count() (r int64, exists bool) {
	v := m.count
	if v == nil {
		return
	}
	return *v, true
}

// OldCount returns the old count value of the Histogram.
// If the Histogram object wasn't provided to the builder, the object is fetched
// from the database.
// An error is returned if the mutation operation is not UpdateOne, or database query fails.
func (m *HistogramMutation) OldCount(ctx context.Context) (v int64, err error) {
	if !m.op.Is(OpUpdateOne) {
		return v, fmt.Errorf("OldCount is allowed only on UpdateOne operations")
	}
	if m.id == nil || m.oldValue == nil {
		return v, fmt.Errorf("OldCount requires an ID field in the mutation")
	}
	oldValue, err := m.oldValue(ctx)
	if err != nil {
		return v, fmt.Errorf("querying old value for OldCount: %w", err)
	}
	return oldValue.Count, nil
}

// AddCount adds i to count.
func (m *HistogramMutation) AddCount(i int64) {
	if m.addcount != nil {
		*m.addcount += i
	} else {
		m.addcount = &i
	}
}

// AddedCount returns the value that was added to the count field in this mutation.
func (m *HistogramMutation) AddedCount() (r int64, exists bool) {
	v := m.addcount
	if v == nil {
		return
	}
	return *v, true
}

// ResetCount reset all changes of the "count" field.
func (m *HistogramMutation) ResetCount() {
	m.count = nil
	m.addcount = nil
}

// SetMin sets the min field.
func (m *HistogramMutation) SetMin(i int64) {
	m.min = &i
	m.addmin = nil
}

// Min returns the min value in the mutation.
func (m *HistogramMutation) Min() (r int64, exists bool) {
	v := m.min
	if v == nil {
		return
	}
	return *v, true
}

// OldMin returns the old min value of the Histogram.
// If the Histogram object wasn't provided to the builder, the object is fetched
// from the database.
// An error is returned if the mutation operation is not UpdateOne, or database query fails.
func (m *HistogramMutation) OldMin(ctx context.Context) (v int64, err error) {
	if !m.op.Is(OpUpdateOne) {
		return v, fmt.Errorf("OldMin is allowed only on UpdateOne operations")
	}
	if m.id == nil || m.oldValue == nil {
		return v, fmt.Errorf("OldMin requires an ID field in the mutation")
	}
	oldValue, err := m.oldValue(ctx)
	if err != nil {
		return v, fmt.Errorf("querying old value for OldMin: %w", err)
	}
	return oldValue.Min, nil
}

// AddMin adds i to min.
func (m *HistogramMutation) AddMin(i int64) {
	if m.addmin != nil {
		*m.addmin += i
	} else {
		m.addmin = &i
	}
}

// AddedMin returns the value that was added to the min field in this mutation.
func (m *HistogramMutation) AddedM


bd49e9af291f59c9f34bcde4p+4), C_(0x1.6c6cdb14d7fe107edc16c4953b35p+3), C_(-0x1.13619aaa119f97b37d6d1c2c4585p+2), C_(0x1.d56ce1ec874a0c5dd634fb59d6d1p-1), C_(-0x1.e42907ae7a26468d6ecb1d9e3f24p-1), C_(0x1.e52911f9f656640a2404f83a2b4fp+0), C_(-0x1.ee224ef8eb13d4b961d19b7d1c3bp+0), C_(0x1.1f26d6223d44cb481a2910c6eba2p+0), C_(-0x1.5888435f5783628967f9baa03f79p-2), C_(-0x1.9e45fc4e6f7c960ebee0a7c398e8p-7), C_(0x1.dcd2d2ebfb6e400bbcf752c0bf7fp-5), C_(-0x1.93116bc1ac6b7200b82ddbf8d638p-6), C_(0x1.0e01783e342a4693e98c9edbf33cp-8), C_(0x1.31f3faa90de9ede16d914789626ap-12), C_(-0x1.f6b0df77a54401ad9bab438557ddp-13), C_(0x1.f05077a02c3aba8741da9769ad4ep-16), C_(0x1.2ec5b9d224e6bceb5db9ee6cff1dp-20), C_(-0x1.47f2b0eb68eda8ce48926b156c9bp-22), C_(0x1.bcb021bf883a1f92a78fc9df6525p-29), C_(0x1.1bcefd6cfba520ba047378483637p-32), C_(-0x1.34d97adc52a38a676a55a692601cp-39), C_(-0x1.6f2c8c9ca394fbdec6dda2487026p-53), C_(0x1.34e43d9253e6e8975e6c8e7aefefp-60), C_(-0x1.352f98f0f2e48db2a203fb32a0f2p-81), C_(0x0p+0) }; };
template <typename Real> struct daubechies_scaling_integer_grid_imp <Real, 16, 5> { static inline constexpr std::array<Real, 32> value = { C_(0x0p+0), C_(0x1.e5d8b15d3664d52108fae09a8e52p-1), C_(-0x1.e7e4ae8313c9841f6b4ba59501e9p+1), C_(0x1.643947f56174ee22b35084254df8p+1), C_(0x1.8bf77730624fb34f058dbb215e6ap+3), C_(-0x1.39575fcf961c0f3da45ce2cb7fb1p+5), C_(0x1.f6657cd6c7e299b7cc89d7d3daa3p+5), C_(-0x1.2981aaa66ca36b3a94f8297750dp+6), C_(0x1.0cf300079688d85d6be476057064p+6), C_(-0x1.71528cd9cab137a39829bbec9ca2p+4), C_(-0x1.13658826409b41720bd51a0f2d32p+6), C_(0x1.5ecf135e336b7c201cd13f9f


unlockelders}},
		--{"[🗿] Absorb Statues", {absorbstatues}}
	},
	menu_repeat = true,
	type = "xback",
})

gx.add_menu({
	title = "FUN Menu: ",
	name = "FUN",
	menu = {
		{"[😍]Friendsnode and read Chat {gxsign}", {node}},
		{"[😍]floating moment", {wing_charge}},
		--{"[😍]Super jump {gxsign}", {jumping}},
		--{"[😍]Remove clouds", {clouds}},
		--{"[😍]Gravity {gxsign}", {gravity}},
		{"[😍]wings unlimited {gxsign}", {wingsunlimited}},
		{"[😍]wings power", {wingpower}},
		--{"[😍]Max lvl wings", {maxlvwing}},
		{"[😍]quick steps {gxsign}", {quick}},
		--{"[😍]Underground {gxsign}", {under}},
		{"[👔] Unlock clothes {gxsign}", {clothes}},
		{"[🎉] unlock season", {UnlockSeason}}
	},

	menu_repeat = true,
	type = "xback",
})

gx.add_menu({
	title = "Wings: ",
	name = "wingsmenu",
	pre_f = {uwc},
	menu = {


ejected.
    f(x, y);
}

struct S1<F: for<'xa, 'xb: 'xa> Fn(&'xa i32, &'xb i32) -> &'xa i32>(F);
//~^ ERROR lifetime bounds cannot be used in this context
struct S2<F>(F) where F: for<'xa, 'xb: 'xa> Fn(&'xa i32, &'xb i32) -> &'xa i32;
//~^ ERROR lifetime bounds cannot be used in this context
struct S3<F>(F) where for<'xa, 'xb: 'xa> F: Fn(&'xa i32, &'xb i32) -> &'xa i32;
//~^ ERROR lifetime bounds cannot be used in this context

struct S_fnty(for<'xa, 'xb: 'xa> fn(&'xa i32, &'xb i32) -> &'xa i32);
//~^ ERROR lifetime bounds cannot be used in this context

type T1 = Box<dyn for<'xa, 'xb: 'xa> Fn(&'xa i32, &'xb i32) -> &'xa i32>;
//~^ ERROR lifetime bounds cannot be used in this context

fn main() {
    let _ : Option<for<'xa, 'xb: 'xa> fn(&'xa i32, &'xb i32) -> &'xa i32> = None;
    //~^ ERROR lifetime bounds cannot be used in this context
    let _ : Option<Box<dyn for<'xa, 'xb: 'xa> Fn(&'xa i32, &'xb i32) -> &'xa i32>> = None;
    //~^ ERROR lifetime bounds cannot be used in this context
}
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.

use derive_builder::Builder;

use crate::api::common::VisibilityLevel;
use crate::api::endpoint_prelude::*;
use crate::api::ParamValue;

/// Access levels for creating a project within a group.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum GroupProjectCreationAccessLevel {
    /// No new projects may be added to the group.
    NoOne,
    /// Only maintainers may add projects to the group.
    Maintainer,
    /// Developers and maintainers may add projects to the group.
    Developer,
}

impl GroupProjectCreationAccessLevel {
    fn as_str(self) -> &'static str {
        match self {
            GroupProjectCreationAccessLevel::NoOne => "noone",
            GroupProjectCreationAccessLevel::Maintainer => "maintainer",
            GroupProjectCreationAccessLevel::Developer => "developer",
        }
    }
}

impl ParamValue<'static> for GroupProjectCreationAccessLevel {
    fn as_value(&self) -> Cow<'static, str> {
        self.as_str().into()
    }
}

/// Access levels for creating a subgroup within a group.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum SubgroupCreationAccessLevel {
    /// Owners may add new subprojects.
    Owner,
    /// Maintainers may add new subprojects.
    Maintainer,
}

impl SubgroupCreationAccessLevel {
    fn as_str(self) -> &'static str {
        match self {
            SubgroupCreationAccessLevel::Owner => "owner",
            SubgroupCreationAccessLevel::Maintainer => "maintainer",
        }
    }
}

impl ParamValue<'static> for SubgroupCreationAccessLevel {
    fn as_value(&self) -> Cow<'static, str> {
        self.as_str().into()
    }
}

/// Branch protection rules for groups.